00001
00002
00003
00004
00005
00006
00007
00008
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef basestreaminterface_h_included
00025 #define basestreaminterface_h_included
00026
00027 #include <bitset>
00028 #include "global.h"
00029
00030 #include "ascstring.h"
00031
00032 typedef class tnstream* pnstream;
00033
00036 class tnstream {
00037 public:
00038 tnstream ( );
00039
00041 enum IOMode { uninitialized, reading, writing, appending };
00042
00047 virtual void writedata ( const void* buf, int size ) = 0 ;
00048
00056 virtual int readdata ( void* buf, int size, bool excpt = true ) = 0 ;
00057
00067 virtual void readpchar( char** pc, int maxlength = 0) ;
00068
00078 virtual void readpnchar( char** pc, int maxlength = 0) ;
00079
00087 virtual bool readTextString ( ASCString& s, bool includeCR = false );
00088
00096 virtual ASCString readString ( bool includeCR = false );
00097
00099 virtual void writepchar( const char* pc) ;
00100
00106 virtual void writeString( const string& pc, bool binary = true ) ;
00107
00109 virtual int readInt ( void );
00110
00112 virtual int readWord ( void );
00113
00115 virtual char readChar ( void );
00116
00117 template<size_t N>
00118 void writeBitset( const std::bitset<N>& bs ) {
00119 writeInt(1);
00120 writeInt(N);
00121 for( int i = 0; i < N;++i)
00122 writeChar( bs.test(i));
00123 }
00124
00125 template<size_t N>
00126 void readBitset( std::bitset<N>& bs ) {
00127 readInt();
00128 int n = readInt();
00129 assert( n == N );
00130 bs.reset();
00131 for( int i = 0; i < N;++i)
00132 if ( readChar() )
00133 bs.set( i );
00134 }
00135
00136
00138 virtual float readFloat ( void );
00139
00141 virtual void writeInt ( int i );
00142 virtual void writeInt ( unsigned int i );
00143 void writeInt ( bool b );
00144
00145 #ifdef SIZE_T_not_identical_to_INT
00146
00147 void writeInt ( size_t i );
00148 #endif
00149
00150
00152 virtual void writeWord ( int w );
00153
00155 virtual void writeChar ( char c );
00156
00158 virtual void writeFloat ( float f );
00159
00161 virtual void writerlepict ( const void* buf );
00162
00164 virtual void writeImage ( const void* buf, bool compress = true );
00165
00166
00173 virtual void readrlepict( void** pnter, bool allocated, int* size);
00174
00176 virtual ASCString getDeviceName ( void );
00177
00180 virtual ASCString getLocation ( void );
00181
00183 virtual void seek ( int newpos );
00184
00186 virtual int getSize ( void ) { return -1; };
00187
00188 virtual ~tnstream() {};
00189 protected:
00190 ASCString devicename;
00191 };
00192
00193
00194
00195 #endif // basestreaminterface_h_included