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
00034 class tnstream {
00035 public:
00036 tnstream ( );
00037
00039 enum IOMode { uninitialized, reading, writing, appending };
00040
00045 virtual void writedata ( const void* buf, int size ) = 0 ;
00046
00054 virtual int readdata ( void* buf, int size, bool excpt = true ) = 0 ;
00055
00065 virtual void readpchar( char** pc, int maxlength = 0) ;
00066
00076 virtual void readpnchar( char** pc, int maxlength = 0) ;
00077
00085 virtual bool readTextString ( ASCString& s, bool includeCR = false );
00086
00094 virtual ASCString readString ( bool includeCR = false );
00095
00097 virtual void writepchar( const char* pc) ;
00098
00104 virtual void writeString( const string& pc, bool binary = true ) ;
00105
00107 virtual int readInt ( void );
00108
00110 virtual int readWord ( void );
00111
00113 virtual char readChar ( void );
00114
00115 template<size_t N>
00116 void writeBitset( const std::bitset<N>& bs ) {
00117 writeInt(1);
00118 writeInt(N);
00119 for( int i = 0; i < N;++i)
00120 writeChar( bs.test(i));
00121 }
00122
00123 template<size_t N>
00124 void readBitset( std::bitset<N>& bs ) {
00125 readInt();
00126 int n = readInt();
00127 assert( n == N );
00128 bs.reset();
00129 for( int i = 0; i < N;++i)
00130 if ( readChar() )
00131 bs.set( i );
00132 }
00133
00134
00136 virtual float readFloat ( void );
00137
00139 virtual void writeInt ( int i );
00140 virtual void writeInt ( unsigned int i );
00141 void writeInt ( bool b );
00142
00143 #ifdef SIZE_T_not_identical_to_INT
00145 void writeInt ( size_t i );
00146 #endif
00147
00148
00150 virtual void writeWord ( int w );
00151
00153 virtual void writeChar ( char c );
00154
00156 virtual void writeFloat ( float f );
00157
00159 virtual void writerlepict ( const void* buf );
00160
00162 virtual void writeImage ( const void* buf, bool compress = true );
00163
00164
00171 virtual void readrlepict( void** pnter, bool allocated, int* size);
00172
00174 virtual ASCString getDeviceName();
00175
00178 virtual ASCString getLocation();
00179
00181 virtual ASCString getArchive();
00182
00184 virtual void seek ( int newpos );
00185
00187 virtual int getSize ( void ) { return -1; };
00188
00189 virtual ~tnstream() {};
00190 protected:
00191 ASCString devicename;
00192 };
00193
00194
00195
00196 #endif // basestreaminterface_h_included