📄 objrecord_h.h
字号:
//---------------------------------------------------------------------------
//-------- OBJrecord_H.h ----------------------------------------------------
//---------------------------------------------------------------------------
#ifndef OBJrecord_H.h // 防止被重复引用
#define OBJrecord_H.h
//---------------------------------------------------------------------------
#include "Jstring_H.h"
#include "JsGlobal_H.h"
#include "JdatBlock_H.h"
//---------------------------------------------------------------------------
// 一个OBJrecord记录的结构体。
//---------------------------------------------------------------------------
class OBJrecord : public JObject
{ private:
int8u REC_TYP; // 记录类型号
int8u CHK_SUM; // 校验和(未取反加一)
int16u REC_LEN; // 记录长度 - 1 (即未包括校验和)
int8u* dapt; // 数据块首址
int16u size; // 内存块大小
public:
OBJrecord(int8u recTyp) { Init(recTyp); } // constructor
~OBJrecord() { delete[] dapt; } // destructor
// ------ public functions ----------
bool AddByte(int8u byte);
bool AddWord(int16u word);
bool AddLong(int32u lword);
bool AddJstr(const Jstring& Jstr);
bool AddJdat(const JdatBlock& Jdat);
void Init(int8u recTyp);
void ReNew(int8u recTyp) { delete[] dapt; Init(recTyp); }
int8u GetTYP()const { return REC_TYP; }
int16u GetLEN()const { return REC_LEN+1; }
int8u GetCHK()const;
operator const char*()const { return dapt; }
// int8u operator[](int16u x) { return dapt[x]; }
// ---------------------
void show()const;
}; // end OBJrecord
//---------------------------------------------------------------------------
const int16u MaxObjRecLength = 32000;
//---------------------------------------------------------------------------
#define TryNew(var,typ) var = new typ;
#define TryNewChar(var,len) TryNew(var,char[len])
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
inline void OBJrecord::Init(int8u recTyp)
{ REC_LEN = 0;
REC_TYP = recTyp;
CHK_SUM = recTyp;
size = 512; // 初始化OBJ记录大小。
TryNewChar(dapt,size);
} // end Init
//---------------------------------------------------------------------------
inline int8u OBJrecord::GetCHK()const
{ pool_16 t;
t.pot16 = REC_LEN + 1;
return - (CHK_SUM + t.lowbyte + t.highbyte);
} // end GetCHK
//---------------------------------------------------------------------------
#undef TryNew(var,typ)
#undef TryNewChar(var,len)
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
#endif
//---------------------------------------------------------------------------
// Written by JamesyFront. ZLGmcu Dev.Co.Ltd. 2002.
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -