Files
envi-code/SourceCode/Code2026/tg_shs/inc/subgeo/TWArchive.h
T

106 lines
2.4 KiB
C++
Raw Normal View History

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