Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members | Related Pages

basestreaminterface.h

Go to the documentation of this file.
00001 /***************************************************************************
00002                           basestreaminterface.h  -  description
00003                              -------------------
00004     begin                : Sat Oct 14 2000
00005     copyright            : (C) 2000 by Martin Bickel
00006     email                : bickel@asc-hq.org
00007  ***************************************************************************/
00008 
00015 /***************************************************************************
00016  *                                                                         *
00017  *   This program is free software; you can redistribute it and/or modify  *
00018  *   it under the terms of the GNU General Public License as published by  *
00019  *   the Free Software Foundation; either version 2 of the License, or     *
00020  *   (at your option) any later version.                                   *
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(); // version
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

Generated on Tue Jun 24 01:27:35 2008 for Advanced Strategic Command by  doxygen 1.4.2