⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 objrecord_h.h

📁 单片机宏汇编器的源程序。给一些爱好者作为学习编译原理和 C 程序设计的例子.
💻 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 + -