//-----------------------------------------------------------------------------+ // Copyright (C), 1998-2007, Beijing Tangent Software Co. Ltd. // = FileName : TWArchive.h // = Version : ver2.0 // = Author : xlc // = CreateDate : 2002-09-09 // = Description: 类的声明 // = Maintainers: // //-----------------------------------------------------------------------------+ #ifndef _TWARCHIVE_H_ #define _TWARCHIVE_H_ //数据流 class GEOAPI TWArchive { public: TWArchive(); virtual ~TWArchive(); //清空并初始化为初始状态 virtual void Clear(); //移动游标 virtual void MoveTo(long i); //当前游标处读取数据,不移动游标 virtual void Read(void *p, long size) = 0; //当前游标处写入数据,自动增长数据长度!不移动游标 virtual void Write(void *p, long size) = 0; long GetLength()const; long GetCur()const; bool IsOut()const; //移动游标 void MoveToFirst(); void MoveToLast(); void MoveOut(); void MoveToNext(long step = 1); void MoveToPre(long step = 1); //当前游标位置读取,不移动游标 void Read(char &val); void Read(bool &val); void Read(short &val); void Read(int &val); void Read(long &val); void Read(float &val); void Read(double &val); void Read(long double &val); //当前游标位置写,不移动游标 void Write(char val); void Write(bool val); void Write(short val); void Write(int val); void Write(long val); void Write(float val); void Write(double val); void Write(long double val); //末尾添加并后移游标 void Append(void *p,long size); TWArchive& operator << (char val); TWArchive& operator << (bool val); TWArchive& operator << (short val); TWArchive& operator << (int val); TWArchive& operator << (long val); TWArchive& operator << (float val); TWArchive& operator << (double val); TWArchive& operator << (long double val); //当前游标位置读数据并后移游标 TWArchive& operator >> (char &val); TWArchive& operator >> (bool &val); TWArchive& operator >> (short &val); TWArchive& operator >> (int &val); TWArchive& operator >> (long &val); TWArchive& operator >> (float &val); TWArchive& operator >> (double &val); TWArchive& operator >> (long double &val); bool operator > (const TWArchive &ar)const; bool operator < (const TWArchive &ar)const; protected: //字节数 long m_iLength; //游标,始终>=0! long m_iCur; }; #endif