📄 asmf_c.cpp
字号:
//---------------------------------------------------------------------------
//-------- AsmF_C.cpp -------------------------------------------------------
//---------------------------------------------------------------------------
#include "AsmF_H.h"
//---------------------------------------------------------------------------
//----- 构造器 --------------------------------------------------------------
AsmFile::AsmFile(MacroAsmber& msm, const Jstring& filename)
: masm(msm),
CommentEnable(false), runCount(0),
FileLineSum(0),
FilePt(NULL)
{ FileName = filename;
Tail = Head = new AsmLine; // 是一个特殊用途的行, 它记录了出错情况
Open();
} // end constructor
//---------------------------------------------------------------------------
//----- 析构器 --------------------------------------------------------------
AsmFile::~AsmFile()
{ while(Head)
{ register AsmLine* p = Head->next;
delete Head;
Head = p;
} // end while
Close();
} // end destructor
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
void AsmFile::AddErr(int16u lineNo, ERR errNo)
{ Tokenfield* nw = new Tokenfield(NormalERR);
nw->loc[0] = errNo;
nw->loc[1] = lineNo;
register Tokenfield* pt = Head->head;
for( ; pt->next && lineNo >= pt->next->loc[1];
pt = pt->next ); // end for
Head->InsertTknAfter(pt,nw);
++ErrorSum();
} // end AddErr
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
void AsmFile::AddWarn(int16u lineNo, ERR warnNo)
{ Tokenfield* nw = new Tokenfield(WarningKn);
nw->loc[0] = warnNo;
nw->loc[1] = lineNo;
register Tokenfield* pt = Head->head;
for( ; pt->next && lineNo >= pt->next->loc[1];
pt = pt->next ); // end for
Head->InsertTknAfter(pt,nw);
++WarningSum();
} // end AddWarn
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
void AsmFile::ShowFileToken()
{ printf("\n\n===========================\n====Now, show file tokens: ====");
int16u count = 1;
rewind(FilePt);
for( AsmLine* pt = Head->next; pt; ++count )
{ printf("\n\n>>>>>>AsmLine[%d]:", count);
for( ; pt->LineNo < count; pt = pt->next )
{ pt->show(); Waitkey; } // end for
if(!fgets(buff, LineReadBufferSize, FilePt)) { break; }
buff[LineReadBufferSize-1]='\0';
printf("\n>==>%s",buff);
if(pt->LineNo == count)
{ pt->show(); pt = pt->next; } // endif
else
{ printf("\nThis line not exist. "); } // end else
Waitkey;
} // end for
cout<<"\nNow, file tokens all above!\n=========================";
} // end ShowFileToken
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
// end AsmL_C.cpp
//---------------------------------------------------------------------------
// Written by JamesyFront. ZLGmcu Dev.Co.Ltd. 2002.
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -