/* * Ivy League * * Basic I/O * * Copyright 1990-2000 * Laboratoire de Recherche en Informatique (LRI) * Centre d'Etudes de la Navigation Aerienne (CENA) * * by Stephane Chatty * portions of code by Michel Beaudouin-Lafon, * * $Id$ * */ #ifndef IvlIO_H_ #define IvlIO_H_ #ifdef __GNUG__ #pragma interface #endif #include "cplus_bugs.h" #include "ivl/bool.h" #include "ivl/word.h" class IvlString; class IvlIOS { public: IvlIOS (); virtual ~IvlIOS (); virtual void WriteLong (lword) = 0; virtual void WriteShort (sword) = 0; virtual void WriteByte (byte) = 0; virtual void WriteChar (char) = 0; virtual void WriteString (const char*) = 0; virtual void WriteBuf (const byte*, int) = 0; virtual bool ReadLong (lword&) = 0; virtual bool ReadShort (sword&) = 0; virtual bool ReadByte (byte&) = 0; virtual bool ReadChar (char&) = 0; virtual bool ReadBuf (byte*, int) = 0; virtual int ReadString (char*, int = -1) = 0; virtual int ReadString (IvlString&) = 0; inline IvlIOS& operator << (lword l) { WriteLong (l); return *this; } inline IvlIOS& operator << (sword s) { WriteShort (s); return *this; } inline IvlIOS& operator << (byte b) { WriteByte (b); return *this; } inline IvlIOS& operator << (char c) { WriteChar (c); return *this; } inline IvlIOS& operator << (const char* s) { WriteString (s); return *this; } inline IvlIOS& operator >> (lword& l) { ReadLong (l); return *this; } inline IvlIOS& operator >> (sword& s) { ReadShort (s); return *this; } inline IvlIOS& operator >> (byte& b) { ReadByte (b); return *this; } inline IvlIOS& operator >> (char& c) { ReadChar (c); return *this; } inline IvlIOS& operator >> (char* s) { ReadString (s); return *this; } inline IvlIOS& operator >> (IvlString& s) { ReadString (s); return *this; } }; #endif /* IvlIO_H_ */