perf: 完善部分逻辑

This commit is contained in:
msojocs 2023-06-26 15:53:08 +08:00
parent 0bd30975f3
commit b1f1178e06
5 changed files with 371 additions and 154 deletions

View File

@ -62,11 +62,22 @@ namespace WXML
{
class Token
{
/*
Token
00 B6 BF 00 80 CC BF 00 01 00 00 00(?) 01 00 00 00(?) // 15
01 00 00 00(pos) 04 00 00 00(size) 00 00 00 00 00 F6 97 00 // 31
38 F0 97 00 00 00 00 00 00 CC FA 00 CC F0 97 00 // 47(40是32字符串的 缓冲区起点)
00 00 BF 00 00 00 00 00 FF FF FF FF 54 F0 97 00 // 63
00 00 00 00 00 3A 53 00 00 00 00 00 78 F0 97 00 // 79
00 00 00 00 00(?) F2 97 00 70 F0 97 00 00 00 00 00
00 00 00 00 62 00 00 40 F8 F1 97 00 7A 15 46 00
*/
private:
/* data */
std::string offset_0; // content
bool offset_28; // hasCache toString
std::string offset_32; // chcheData toString
std::string offset_0 = ""; // content
bool offset_28 = false; // hasCache toString
std::string offset_32 = ""; // chcheData toString
bool offset_84; // hasCache attrContent
std::string offset_88; // chcheData attrContent
public:
@ -324,6 +335,7 @@ namespace WXML
int offset_44;
std::deque<std::shared_ptr<WXML::DOMLib::WXMLDom>> dequeDom; // offset_48 int a1 + 48, _DWORD * a1 + 12
int peekIndex = 0; // offset_100
WXML::DOMLib::Token offset_104;
int offset_128;
std::string filePath;
public:

View File

@ -378,18 +378,23 @@ namespace WXML
{
if (this->offset_4 < this->fileLength)
{
WXML::DOMLib::Token token;
token.offset_8 = this->offset_16;
token.offset_12 = this->offset_20;
token.offset_16 = this->offset_4;
token.offset_20 = this->fileLength - this->offset_4;
this->offset_4 = this->fileLength;
this->offset_20 = this->lineLength;
this->offset_16 = this->lineCount;
if(WXML::DOMLib::Machine::STT[v45] == 3)
token.offset_24 = WXML::DOMLib::Machine::STT[v45];
if(token.offset_24 == 3)
{
WXML::DOMLib::Token token;
a5.push_back(token);
}
else
{
WXML::DOMLib::Token token;
a3.push_back(token);
}
}
@ -433,7 +438,7 @@ namespace WXML
this->fileLength = 0;
this->offset_4 = 0;
this->lineCount = 1;
this->lineLength = 1;
this->lineLength = 0;
this->offset_16 = 1;
this->offset_20 = 1;
this->offset_24 = 1;

View File

@ -184,7 +184,7 @@ namespace WXML
this->peekIndex++;
this->dequeStr.pop_back();
this->dequeDom.pop_back();
auto v47 = this->Peek();
v47 = this->Peek();
if (!v47.IsMatch(">"))
{
throw this->Error("unexpected token", 0);
@ -237,7 +237,9 @@ namespace WXML
WXML::DOMLib::Token Parser::Peek()
{
if (this->peekIndex < tokenList.size())
return tokenList[this->peekIndex];
return this->offset_104;
}
WXML::DOMLib::ParseException Parser::Error(char const*, WXML::DOMLib::Token *)

View File

@ -5,16 +5,6 @@ namespace WXML
{
namespace DOMLib
{
/*
Token
00 B6 BF 00 80 CC BF 00 01 00 00 00(?) 01 00 00 00(?) // 15
01 00 00 00(pos) 04 00 00 00(size) 00 00 00 00 00 F6 97 00 // 31
38 F0 97 00 00 00 00 00 00 CC FA 00 CC F0 97 00 // 47
00 00 BF 00 00 00 00 00 FF FF FF FF 54 F0 97 00 // 63
00 00 00 00 00 3A 53 00 00 00 00 00 78 F0 97 00 // 79
00 00 00 00 00(?) F2 97 00 70 F0 97 00 00 00 00 00
00 00 00 00 62 00 00 40 F8 F1 97 00 7A 15 46 00
*/
Token::Token()
{
}

File diff suppressed because it is too large Load Diff