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

📄 objrecord_c.cpp

📁 MCS51单片机的宏汇编器源程序。有需要的朋友请下载!
💻 CPP
字号:
//---------------------------------------------------------------------------
//-------- OBJrecord_C.cpp --------------------------------------------------
//---------------------------------------------------------------------------

#include "TokenOper_H.h"
#include "OBJrecord_H.h"
#include "JLabelNode_H.h"

//---------------------------------------------------------------------------
#define TryNew(var,typ)       var = new typ;
#define TryNewChar(var,len)   TryNew(var,char[len])
//---------------------------------------------------------------------------
#define StrechMem(x)   if(REC_LEN+(x) > size)                                  \
                        { if(size < 0x8000) { size *=2; }                      \
                          else { if(size!=0xfff0) { size=0xfff0; }             \
                                 else             { return false; }            \
                               }                                               \
                          register int8u* ppt;                                 \
                          TryNewChar(ppt,size)                                 \
                          memcpy(ppt, dapt, REC_LEN);                          \
                          delete[] dapt; dapt = ppt;                           \
                        }
//---------------------------------------------------------------------------

//#pragma warn -8060
//---------------------------------------------------------------------------
bool OBJrecord::AddByte(int8u byte)
{ StrechMem( 1 )   // 宏调用
  dapt[REC_LEN++] = byte;
  CHK_SUM += byte;
  return true;
} // end AddByte
//---------------------------------------------------------------------------

//---------------------------------------------------------------------------
bool OBJrecord::AddWord(int16u word)
{ StrechMem( 2 )   // 宏调用
  pool_16 t;
  t.pot16 = word;
  dapt[REC_LEN++] = t.lowbyte;
  dapt[REC_LEN++] = t.highbyte;
  CHK_SUM += t.lowbyte + t.highbyte;
  return true;
} // end AddWord
//---------------------------------------------------------------------------

//---------------------------------------------------------------------------
bool OBJrecord::AddLong(int32u lword)
{ StrechMem( 4 )   // 宏调用
  pool_32 t;
  t.pot32 = lword;
  for(register int8u i = 0; i < 4; ++i )
   { dapt[REC_LEN++] = t.pot8[i];
     CHK_SUM += t.pot8[i];
   } // end for
  return true;
} // end AddWord
//---------------------------------------------------------------------------

//---------------------------------------------------------------------------
bool OBJrecord::AddJstr(const Jstring& Jstr)
{ register int16u slen = Jstr.getLen();
  if(slen >= 254) { puts("String too long in OBJrecord!"); } // endif
  StrechMem( slen + 1 )   // 宏调用
  dapt[REC_LEN++] = (int8u)slen;
  CHK_SUM += (int8u)slen;

  register const int8u* p = (const char*)Jstr;
  memcpy( dapt + REC_LEN, p, (int8u)slen );
  REC_LEN += (int8u)slen;
  for( ; *p; ++p ) { CHK_SUM += *p; } // end for
  return true;
} // end AddJstr
//---------------------------------------------------------------------------


//---------------------------------------------------------------------------
bool OBJrecord::AddJdat(const JdatBlock& Jdat)
{ register int16u dlen = Jdat.GetLen();
  StrechMem( dlen )   // 宏调用
  register const int8u* p = (const char*)Jdat;
  memcpy( dapt + REC_LEN, p, dlen );
  REC_LEN += dlen;
  for(  ; dlen > 0; --dlen, ++p )
   { CHK_SUM += *p; } // end for
  return true;
} // end AddJdat
//---------------------------------------------------------------------------




//---------------------------------------------------------------------------
void OBJrecord::show()const
{ printf("\nREC_TYP=%2.2XH, REC_LEN=%4.4X, CHK_SUM=%2.2X",
           GetTYP(), GetLEN(), GetCHK() );
  printf("\n Data=[");
  register int16u i;
  for( i = 0; i < REC_LEN; i++ )
   { printf(" %2.2x",dapt[i]); } // endfor
  printf(" ]");
} // end show
//---------------------------------------------------------------------------

//---------------------------------------------------------------------------
#undef TryNew(var,typ)
#undef TryNewChar(var,len)
//---------------------------------------------------------------------------

//---------------------------------------------------------------------------
// end OBJrecord_C.cpp
//---------------------------------------------------------------------------
//               Written by JamesyFront.    ZLGmcu Dev.Co.Ltd.  2002.
//---------------------------------------------------------------------------










⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -