summaryrefslogtreecommitdiff
path: root/xfa
diff options
context:
space:
mode:
Diffstat (limited to 'xfa')
-rw-r--r--xfa/fde/xml/cfx_saxreader.cpp (renamed from xfa/fgas/xml/fgas_sax.cpp)219
-rw-r--r--xfa/fde/xml/cfx_saxreader.h (renamed from xfa/fgas/xml/fgas_sax.h)105
-rw-r--r--xfa/fxfa/app/xfa_checksum.cpp29
-rw-r--r--xfa/fxfa/include/xfa_checksum.h12
4 files changed, 188 insertions, 177 deletions
diff --git a/xfa/fgas/xml/fgas_sax.cpp b/xfa/fde/xml/cfx_saxreader.cpp
index 1128e1184f..ec22c73541 100644
--- a/xfa/fgas/xml/fgas_sax.cpp
+++ b/xfa/fde/xml/cfx_saxreader.cpp
@@ -4,30 +4,74 @@
// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-#include "xfa/fgas/xml/fgas_sax.h"
+#include "xfa/fde/xml/cfx_saxreader.h"
#include <algorithm>
#include "xfa/fxfa/include/xfa_checksum.h"
+enum class CFX_SaxMode {
+ Text = 0,
+ NodeStart,
+ DeclOrComment,
+ DeclNode,
+ Comment,
+ CommentContent,
+ TagName,
+ TagAttributeName,
+ TagAttributeEqual,
+ TagAttributeValue,
+ TagMaybeClose,
+ TagClose,
+ TagEnd,
+ TargetData,
+ MAX
+};
+
+class CFX_SAXCommentContext {
+ public:
+ CFX_SAXCommentContext() : m_iHeaderCount(0), m_iTailCount(0) {}
+ int32_t m_iHeaderCount;
+ int32_t m_iTailCount;
+};
+
namespace {
const uint32_t kSaxFileBufSize = 32768;
+typedef void (CFX_SAXReader::*FX_SAXReader_LPFParse)();
+static const FX_SAXReader_LPFParse
+ g_FX_SAXReader_LPFParse[static_cast<int>(CFX_SaxMode::MAX)] = {
+ &CFX_SAXReader::ParseText,
+ &CFX_SAXReader::ParseNodeStart,
+ &CFX_SAXReader::ParseDeclOrComment,
+ &CFX_SAXReader::ParseDeclNode,
+ &CFX_SAXReader::ParseComment,
+ &CFX_SAXReader::ParseCommentContent,
+ &CFX_SAXReader::ParseTagName,
+ &CFX_SAXReader::ParseTagAttributeName,
+ &CFX_SAXReader::ParseTagAttributeEqual,
+ &CFX_SAXReader::ParseTagAttributeValue,
+ &CFX_SAXReader::ParseMaybeClose,
+ &CFX_SAXReader::ParseTagClose,
+ &CFX_SAXReader::ParseTagEnd,
+ &CFX_SAXReader::ParseTargetData,
+};
+
} // namespace
CFX_SAXFile::CFX_SAXFile()
- : m_pFile(NULL),
+ : m_pFile(nullptr),
m_dwStart(0),
m_dwEnd(0),
m_dwCur(0),
- m_pBuf(NULL),
+ m_pBuf(nullptr),
m_dwBufSize(0),
m_dwBufIndex(0) {}
FX_BOOL CFX_SAXFile::StartFile(IFX_FileRead* pFile,
uint32_t dwStart,
uint32_t dwLen) {
- ASSERT(m_pFile == NULL && pFile != NULL);
+ ASSERT(!m_pFile && pFile);
uint32_t dwSize = pFile->GetSize();
if (dwStart >= dwSize) {
return FALSE;
@@ -51,7 +95,7 @@ FX_BOOL CFX_SAXFile::StartFile(IFX_FileRead* pFile,
return TRUE;
}
FX_BOOL CFX_SAXFile::ReadNextBlock() {
- ASSERT(m_pFile != NULL);
+ ASSERT(m_pFile);
uint32_t dwSize = m_dwEnd - m_dwCur;
if (dwSize == 0) {
return FALSE;
@@ -66,9 +110,9 @@ FX_BOOL CFX_SAXFile::ReadNextBlock() {
void CFX_SAXFile::Reset() {
if (m_pBuf) {
FX_Free(m_pBuf);
- m_pBuf = NULL;
+ m_pBuf = nullptr;
}
- m_pFile = NULL;
+ m_pFile = nullptr;
}
CFX_SAXReader::CFX_SAXReader()
: m_File(),
@@ -88,11 +132,11 @@ CFX_SAXReader::~CFX_SAXReader() {
Reset();
if (m_pszData) {
FX_Free(m_pszData);
- m_pszData = NULL;
+ m_pszData = nullptr;
}
if (m_pszName) {
FX_Free(m_pszName);
- m_pszName = NULL;
+ m_pszName = nullptr;
}
}
void CFX_SAXReader::Reset() {
@@ -103,8 +147,8 @@ void CFX_SAXReader::Reset() {
delete pItem;
pItem = pNext;
}
- m_pRoot = NULL;
- m_pCurItem = NULL;
+ m_pRoot = nullptr;
+ m_pCurItem = nullptr;
m_dwItemID = 0;
m_SkipStack.RemoveAll();
m_SkipChar = 0;
@@ -114,7 +158,7 @@ void CFX_SAXReader::Reset() {
m_iDataPos = 0;
if (m_pCommentContext) {
delete m_pCommentContext;
- m_pCommentContext = NULL;
+ m_pCommentContext = nullptr;
}
}
inline void CFX_SAXReader::Push() {
@@ -130,7 +174,7 @@ inline void CFX_SAXReader::Pop() {
return;
}
CFX_SAXItem* pPrev = m_pCurItem->m_pPrev;
- pPrev->m_pNext = NULL;
+ pPrev->m_pNext = nullptr;
delete m_pCurItem;
m_pCurItem = pPrev;
}
@@ -165,7 +209,7 @@ void CFX_SAXReader::ReallocNameBuffer() {
m_pszName = (uint8_t*)FX_Realloc(uint8_t, m_pszName, m_iNameSize);
}
inline FX_BOOL CFX_SAXReader::SkipSpace(uint8_t ch) {
- return (m_dwParseMode & FX_SAXPARSEMODE_NotSkipSpace) == 0 && ch < 0x21;
+ return (m_dwParseMode & CFX_SaxParseMode_NotSkipSpace) == 0 && ch < 0x21;
}
int32_t CFX_SAXReader::StartParse(IFX_FileRead* pFile,
uint32_t dwStart,
@@ -177,8 +221,8 @@ int32_t CFX_SAXReader::StartParse(IFX_FileRead* pFile,
return -1;
}
m_iState = 0;
- m_eMode = FX_SAXMODE_Text;
- m_ePrevMode = FX_SAXMODE_Text;
+ m_eMode = CFX_SaxMode::Text;
+ m_ePrevMode = CFX_SaxMode::Text;
m_bCharData = FALSE;
m_dwDataOffset = 0;
m_pRoot = m_pCurItem = new CFX_SAXItem;
@@ -186,23 +230,7 @@ int32_t CFX_SAXReader::StartParse(IFX_FileRead* pFile,
m_dwParseMode = dwParseMode;
return 0;
}
-typedef void (CFX_SAXReader::*FX_SAXReader_LPFParse)();
-static const FX_SAXReader_LPFParse g_FX_SAXReader_LPFParse[FX_SAXMODE_MAX] = {
- &CFX_SAXReader::ParseText,
- &CFX_SAXReader::ParseNodeStart,
- &CFX_SAXReader::ParseDeclOrComment,
- &CFX_SAXReader::ParseDeclNode,
- &CFX_SAXReader::ParseComment,
- &CFX_SAXReader::ParseCommentContent,
- &CFX_SAXReader::ParseTagName,
- &CFX_SAXReader::ParseTagAttributeName,
- &CFX_SAXReader::ParseTagAttributeEqual,
- &CFX_SAXReader::ParseTagAttributeValue,
- &CFX_SAXReader::ParseMaybeClose,
- &CFX_SAXReader::ParseTagClose,
- &CFX_SAXReader::ParseTagEnd,
- &CFX_SAXReader::ParseTargetData,
-};
+
int32_t CFX_SAXReader::ContinueParse(IFX_Pause* pPause) {
if (m_iState < 0 || m_iState > 99) {
return m_iState;
@@ -213,7 +241,7 @@ int32_t CFX_SAXReader::ContinueParse(IFX_Pause* pPause) {
const uint8_t* pBuf = m_File.m_pBuf;
while (index < size) {
m_CurByte = pBuf[index];
- (this->*g_FX_SAXReader_LPFParse[m_eMode])();
+ (this->*g_FX_SAXReader_LPFParse[static_cast<int>(m_eMode)])();
index++;
}
m_File.m_dwCur += index;
@@ -243,7 +271,7 @@ void CFX_SAXReader::ParseChar(uint8_t ch) {
int32_t iLen = csEntity.GetLength();
if (iLen > 0) {
if (csEntity[0] == '#') {
- if ((m_dwParseMode & FX_SAXPARSEMODE_NotConvert_sharp) == 0) {
+ if ((m_dwParseMode & CFX_SaxParseMode_NotConvert_sharp) == 0) {
ch = 0;
uint8_t w;
if (iLen > 1 && csEntity[1] == 'x') {
@@ -274,23 +302,23 @@ void CFX_SAXReader::ParseChar(uint8_t ch) {
}
} else {
if (csEntity.Compare("amp") == 0) {
- if ((m_dwParseMode & FX_SAXPARSEMODE_NotConvert_amp) == 0) {
+ if ((m_dwParseMode & CFX_SaxParseMode_NotConvert_amp) == 0) {
m_pszData[m_iEntityStart++] = '&';
}
} else if (csEntity.Compare("lt") == 0) {
- if ((m_dwParseMode & FX_SAXPARSEMODE_NotConvert_lt) == 0) {
+ if ((m_dwParseMode & CFX_SaxParseMode_NotConvert_lt) == 0) {
m_pszData[m_iEntityStart++] = '<';
}
} else if (csEntity.Compare("gt") == 0) {
- if ((m_dwParseMode & FX_SAXPARSEMODE_NotConvert_gt) == 0) {
+ if ((m_dwParseMode & CFX_SaxParseMode_NotConvert_gt) == 0) {
m_pszData[m_iEntityStart++] = '>';
}
} else if (csEntity.Compare("apos") == 0) {
- if ((m_dwParseMode & FX_SAXPARSEMODE_NotConvert_apos) == 0) {
+ if ((m_dwParseMode & CFX_SaxParseMode_NotConvert_apos) == 0) {
m_pszData[m_iEntityStart++] = '\'';
}
} else if (csEntity.Compare("quot") == 0) {
- if ((m_dwParseMode & FX_SAXPARSEMODE_NotConvert_quot) == 0) {
+ if ((m_dwParseMode & CFX_SaxParseMode_NotConvert_quot) == 0) {
m_pszData[m_iEntityStart++] = '\"';
}
}
@@ -321,7 +349,7 @@ void CFX_SAXReader::ParseText() {
}
Push();
m_dwNodePos = m_File.m_dwCur + m_File.m_dwBufIndex;
- m_eMode = FX_SAXMODE_NodeStart;
+ m_eMode = CFX_SaxMode::NodeStart;
return;
}
if (m_iDataPos < 1 && SkipSpace(m_CurByte)) {
@@ -331,41 +359,41 @@ void CFX_SAXReader::ParseText() {
}
void CFX_SAXReader::ParseNodeStart() {
if (m_CurByte == '?') {
- m_pCurItem->m_eNode = FX_SAXNODE_Instruction;
- m_eMode = FX_SAXMODE_TagName;
+ m_pCurItem->m_eNode = CFX_SAXItem::Type::Instruction;
+ m_eMode = CFX_SaxMode::TagName;
return;
}
if (m_CurByte == '!') {
- m_eMode = FX_SAXMODE_DeclOrComment;
+ m_eMode = CFX_SaxMode::DeclOrComment;
return;
}
if (m_CurByte == '/') {
- m_eMode = FX_SAXMODE_TagEnd;
+ m_eMode = CFX_SaxMode::TagEnd;
return;
}
if (m_CurByte == '>') {
Pop();
- m_eMode = FX_SAXMODE_Text;
+ m_eMode = CFX_SaxMode::Text;
return;
}
if (m_CurByte > 0x20) {
m_dwDataOffset = m_File.m_dwBufIndex;
- m_pCurItem->m_eNode = FX_SAXNODE_Tag;
- m_eMode = FX_SAXMODE_TagName;
+ m_pCurItem->m_eNode = CFX_SAXItem::Type::Tag;
+ m_eMode = CFX_SaxMode::TagName;
AppendData(m_CurByte);
}
}
void CFX_SAXReader::ParseDeclOrComment() {
if (m_CurByte == '-') {
- m_eMode = FX_SAXMODE_Comment;
- m_pCurItem->m_eNode = FX_SAXNODE_Comment;
- if (m_pCommentContext == NULL) {
+ m_eMode = CFX_SaxMode::Comment;
+ m_pCurItem->m_eNode = CFX_SAXItem::Type::Comment;
+ if (!m_pCommentContext)
m_pCommentContext = new CFX_SAXCommentContext;
- }
+
m_pCommentContext->m_iHeaderCount = 1;
m_pCommentContext->m_iTailCount = 0;
} else {
- m_eMode = FX_SAXMODE_DeclNode;
+ m_eMode = CFX_SaxMode::DeclNode;
m_dwDataOffset = m_File.m_dwBufIndex;
m_SkipChar = '>';
m_SkipStack.Add('>');
@@ -375,7 +403,7 @@ void CFX_SAXReader::ParseDeclOrComment() {
void CFX_SAXReader::ParseComment() {
m_pCommentContext->m_iHeaderCount = 2;
m_dwNodePos = m_File.m_dwCur + m_File.m_dwBufIndex;
- m_eMode = FX_SAXMODE_CommentContent;
+ m_eMode = CFX_SaxMode::CommentContent;
}
void CFX_SAXReader::ParseCommentContent() {
if (m_CurByte == '-') {
@@ -387,7 +415,7 @@ void CFX_SAXReader::ParseCommentContent() {
NotifyTargetData();
}
Pop();
- m_eMode = FX_SAXMODE_Text;
+ m_eMode = CFX_SaxMode::Text;
} else {
while (m_pCommentContext->m_iTailCount > 0) {
AppendData('-');
@@ -408,15 +436,15 @@ void CFX_SAXReader::ParseTagName() {
NotifyEnter();
}
if (m_CurByte < 0x21) {
- m_eMode = FX_SAXMODE_TagAttributeName;
+ m_eMode = CFX_SaxMode::TagAttributeName;
} else if (m_CurByte == '/' || m_CurByte == '?') {
m_ePrevMode = m_eMode;
- m_eMode = FX_SAXMODE_TagMaybeClose;
+ m_eMode = CFX_SaxMode::TagMaybeClose;
} else {
if (m_pHandler) {
NotifyBreak();
}
- m_eMode = FX_SAXMODE_Text;
+ m_eMode = CFX_SaxMode::Text;
}
} else {
AppendData(m_CurByte);
@@ -430,19 +458,19 @@ void CFX_SAXReader::ParseTagAttributeName() {
m_iNameLength = m_iDataPos;
m_iDataPos = 0;
m_SkipChar = 0;
- m_eMode = m_CurByte == '=' ? FX_SAXMODE_TagAttributeValue
- : FX_SAXMODE_TagAttributeEqual;
+ m_eMode = m_CurByte == '=' ? CFX_SaxMode::TagAttributeValue
+ : CFX_SaxMode::TagAttributeEqual;
return;
}
if (m_CurByte == '/' || m_CurByte == '>' || m_CurByte == '?') {
if (m_CurByte == '/' || m_CurByte == '?') {
m_ePrevMode = m_eMode;
- m_eMode = FX_SAXMODE_TagMaybeClose;
+ m_eMode = CFX_SaxMode::TagMaybeClose;
} else {
if (m_pHandler) {
NotifyBreak();
}
- m_eMode = FX_SAXMODE_Text;
+ m_eMode = CFX_SaxMode::Text;
}
return;
}
@@ -454,12 +482,12 @@ void CFX_SAXReader::ParseTagAttributeName() {
void CFX_SAXReader::ParseTagAttributeEqual() {
if (m_CurByte == '=') {
m_SkipChar = 0;
- m_eMode = FX_SAXMODE_TagAttributeValue;
+ m_eMode = CFX_SaxMode::TagAttributeValue;
return;
- } else if (m_pCurItem->m_eNode == FX_SAXNODE_Instruction) {
+ } else if (m_pCurItem->m_eNode == CFX_SAXItem::Type::Instruction) {
m_iDataPos = m_iNameLength;
AppendName(0x20);
- m_eMode = FX_SAXMODE_TargetData;
+ m_eMode = CFX_SaxMode::TargetData;
ParseTargetData();
}
}
@@ -474,7 +502,7 @@ void CFX_SAXReader::ParseTagAttributeValue() {
}
}
m_SkipChar = 0;
- m_eMode = FX_SAXMODE_TagAttributeName;
+ m_eMode = CFX_SaxMode::TagAttributeName;
return;
}
ParseChar(m_CurByte);
@@ -491,7 +519,7 @@ void CFX_SAXReader::ParseTagAttributeValue() {
}
void CFX_SAXReader::ParseMaybeClose() {
if (m_CurByte == '>') {
- if (m_pCurItem->m_eNode == FX_SAXNODE_Instruction) {
+ if (m_pCurItem->m_eNode == CFX_SAXItem::Type::Instruction) {
m_iNameLength = m_iDataPos;
m_iDataPos = 0;
if (m_pHandler) {
@@ -499,21 +527,21 @@ void CFX_SAXReader::ParseMaybeClose() {
}
}
ParseTagClose();
- m_eMode = FX_SAXMODE_Text;
- } else if (m_ePrevMode == FX_SAXMODE_TagName) {
+ m_eMode = CFX_SaxMode::Text;
+ } else if (m_ePrevMode == CFX_SaxMode::TagName) {
AppendData('/');
- m_eMode = FX_SAXMODE_TagName;
- m_ePrevMode = FX_SAXMODE_Text;
+ m_eMode = CFX_SaxMode::TagName;
+ m_ePrevMode = CFX_SaxMode::Text;
ParseTagName();
- } else if (m_ePrevMode == FX_SAXMODE_TagAttributeName) {
+ } else if (m_ePrevMode == CFX_SaxMode::TagAttributeName) {
AppendName('/');
- m_eMode = FX_SAXMODE_TagAttributeName;
- m_ePrevMode = FX_SAXMODE_Text;
+ m_eMode = CFX_SaxMode::TagAttributeName;
+ m_ePrevMode = CFX_SaxMode::Text;
ParseTagAttributeName();
- } else if (m_ePrevMode == FX_SAXMODE_TargetData) {
+ } else if (m_ePrevMode == CFX_SaxMode::TargetData) {
AppendName('?');
- m_eMode = FX_SAXMODE_TargetData;
- m_ePrevMode = FX_SAXMODE_Text;
+ m_eMode = CFX_SaxMode::TargetData;
+ m_ePrevMode = CFX_SaxMode::Text;
ParseTargetData();
}
}
@@ -537,7 +565,7 @@ void CFX_SAXReader::ParseTagEnd() {
NotifyEnd();
}
Pop();
- m_eMode = FX_SAXMODE_Text;
+ m_eMode = CFX_SaxMode::Text;
} else {
ParseChar(m_CurByte);
}
@@ -545,7 +573,7 @@ void CFX_SAXReader::ParseTagEnd() {
void CFX_SAXReader::ParseTargetData() {
if (m_CurByte == '?') {
m_ePrevMode = m_eMode;
- m_eMode = FX_SAXMODE_TagMaybeClose;
+ m_eMode = CFX_SaxMode::TagMaybeClose;
} else {
AppendName(m_CurByte);
}
@@ -608,7 +636,7 @@ void CFX_SAXReader::SkipNode() {
} else {
Pop();
}
- m_eMode = FX_SAXMODE_Text;
+ m_eMode = CFX_SaxMode::Text;
}
}
break;
@@ -619,16 +647,17 @@ void CFX_SAXReader::SkipNode() {
}
void CFX_SAXReader::NotifyData() {
- if (m_pCurItem->m_eNode == FX_SAXNODE_Tag)
- m_pHandler->OnTagData(m_pCurItem->m_pNode,
- m_bCharData ? FX_SAXNODE_CharData : FX_SAXNODE_Text,
- CFX_ByteStringC(m_pszData, m_iDataLength),
- m_File.m_dwCur + m_dwDataOffset);
+ if (m_pCurItem->m_eNode == CFX_SAXItem::Type::Tag)
+ m_pHandler->OnTagData(
+ m_pCurItem->m_pNode,
+ m_bCharData ? CFX_SAXItem::Type::CharData : CFX_SAXItem::Type::Text,
+ CFX_ByteStringC(m_pszData, m_iDataLength),
+ m_File.m_dwCur + m_dwDataOffset);
}
void CFX_SAXReader::NotifyEnter() {
- if (m_pCurItem->m_eNode == FX_SAXNODE_Tag ||
- m_pCurItem->m_eNode == FX_SAXNODE_Instruction) {
+ if (m_pCurItem->m_eNode == CFX_SAXItem::Type::Tag ||
+ m_pCurItem->m_eNode == CFX_SAXItem::Type::Instruction) {
m_pCurItem->m_pNode =
m_pHandler->OnTagEnter(CFX_ByteStringC(m_pszData, m_iDataLength),
m_pCurItem->m_eNode, m_dwNodePos);
@@ -636,8 +665,8 @@ void CFX_SAXReader::NotifyEnter() {
}
void CFX_SAXReader::NotifyAttribute() {
- if (m_pCurItem->m_eNode == FX_SAXNODE_Tag ||
- m_pCurItem->m_eNode == FX_SAXNODE_Instruction) {
+ if (m_pCurItem->m_eNode == CFX_SAXItem::Type::Tag ||
+ m_pCurItem->m_eNode == CFX_SAXItem::Type::Instruction) {
m_pHandler->OnTagAttribute(m_pCurItem->m_pNode,
CFX_ByteStringC(m_pszName, m_iNameLength),
CFX_ByteStringC(m_pszData, m_iDataLength));
@@ -645,19 +674,19 @@ void CFX_SAXReader::NotifyAttribute() {
}
void CFX_SAXReader::NotifyBreak() {
- if (m_pCurItem->m_eNode == FX_SAXNODE_Tag)
+ if (m_pCurItem->m_eNode == CFX_SAXItem::Type::Tag)
m_pHandler->OnTagBreak(m_pCurItem->m_pNode);
}
void CFX_SAXReader::NotifyClose() {
- if (m_pCurItem->m_eNode == FX_SAXNODE_Tag ||
- m_pCurItem->m_eNode == FX_SAXNODE_Instruction) {
+ if (m_pCurItem->m_eNode == CFX_SAXItem::Type::Tag ||
+ m_pCurItem->m_eNode == CFX_SAXItem::Type::Instruction) {
m_pHandler->OnTagClose(m_pCurItem->m_pNode, m_dwNodePos);
}
}
void CFX_SAXReader::NotifyEnd() {
- if (m_pCurItem->m_eNode != FX_SAXNODE_Tag)
+ if (m_pCurItem->m_eNode != CFX_SAXItem::Type::Tag)
return;
m_pHandler->OnTagEnd(m_pCurItem->m_pNode,
@@ -665,11 +694,11 @@ void CFX_SAXReader::NotifyEnd() {
}
void CFX_SAXReader::NotifyTargetData() {
- if (m_pCurItem->m_eNode == FX_SAXNODE_Instruction) {
+ if (m_pCurItem->m_eNode == CFX_SAXItem::Type::Instruction) {
m_pHandler->OnTargetData(m_pCurItem->m_pNode, m_pCurItem->m_eNode,
CFX_ByteStringC(m_pszName, m_iNameLength),
m_dwNodePos);
- } else if (m_pCurItem->m_eNode == FX_SAXNODE_Comment) {
+ } else if (m_pCurItem->m_eNode == CFX_SAXItem::Type::Comment) {
m_pHandler->OnTargetData(m_pCurItem->m_pNode, m_pCurItem->m_eNode,
CFX_ByteStringC(m_pszData, m_iDataLength),
m_dwNodePos);
diff --git a/xfa/fgas/xml/fgas_sax.h b/xfa/fde/xml/cfx_saxreader.h
index 92440c3b59..18aa039ccc 100644
--- a/xfa/fgas/xml/fgas_sax.h
+++ b/xfa/fde/xml/cfx_saxreader.h
@@ -4,49 +4,39 @@
// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-#ifndef XFA_FGAS_XML_FGAS_SAX_H_
-#define XFA_FGAS_XML_FGAS_SAX_H_
+#ifndef XFA_FDE_XML_CFX_SAXREADER_H_
+#define XFA_FDE_XML_CFX_SAXREADER_H_
#include "core/fxcrt/include/fx_basic.h"
-#define FX_SAXPARSEMODE_NotConvert_amp 0x0001
-#define FX_SAXPARSEMODE_NotConvert_lt 0x0002
-#define FX_SAXPARSEMODE_NotConvert_gt 0x0004
-#define FX_SAXPARSEMODE_NotConvert_apos 0x0008
-#define FX_SAXPARSEMODE_NotConvert_quot 0x0010
-#define FX_SAXPARSEMODE_NotConvert_sharp 0x0020
-#define FX_SAXPARSEMODE_NotSkipSpace 0x0100
+class CFX_SAXItem {
+ public:
+ enum class Type {
+ Unknown = 0,
+ Instruction,
+ Declaration,
+ Comment,
+ Tag,
+ Text,
+ CharData,
+ };
-enum FX_SAXNODE {
- FX_SAXNODE_Unknown = 0,
- FX_SAXNODE_Instruction,
- FX_SAXNODE_Declaration,
- FX_SAXNODE_Comment,
- FX_SAXNODE_Tag,
- FX_SAXNODE_Text,
- FX_SAXNODE_CharData,
-};
+ CFX_SAXItem()
+ : m_pNode(nullptr),
+ m_eNode(Type::Unknown),
+ m_dwID(0),
+ m_bSkip(FALSE),
+ m_pPrev(nullptr),
+ m_pNext(nullptr) {}
-enum FX_SAXMODE {
- FX_SAXMODE_Text = 0,
- FX_SAXMODE_NodeStart,
- FX_SAXMODE_DeclOrComment,
- FX_SAXMODE_DeclNode,
- FX_SAXMODE_Comment,
- FX_SAXMODE_CommentContent,
- FX_SAXMODE_TagName,
- FX_SAXMODE_TagAttributeName,
- FX_SAXMODE_TagAttributeEqual,
- FX_SAXMODE_TagAttributeValue,
- FX_SAXMODE_TagMaybeClose,
- FX_SAXMODE_TagClose,
- FX_SAXMODE_TagEnd,
- FX_SAXMODE_TargetData,
- FX_SAXMODE_MAX,
+ void* m_pNode;
+ Type m_eNode;
+ uint32_t m_dwID;
+ FX_BOOL m_bSkip;
+ CFX_SAXItem* m_pPrev;
+ CFX_SAXItem* m_pNext;
};
-class CXFA_SAXReaderHandler;
-
class CFX_SAXFile {
public:
CFX_SAXFile();
@@ -62,30 +52,21 @@ class CFX_SAXFile {
uint32_t m_dwBufIndex;
};
-class CFX_SAXItem {
- public:
- CFX_SAXItem()
- : m_pNode(NULL),
- m_eNode(FX_SAXNODE_Unknown),
- m_dwID(0),
- m_bSkip(FALSE),
- m_pPrev(NULL),
- m_pNext(NULL) {}
- void* m_pNode;
- FX_SAXNODE m_eNode;
- uint32_t m_dwID;
- FX_BOOL m_bSkip;
- CFX_SAXItem* m_pPrev;
- CFX_SAXItem* m_pNext;
-};
+class CFX_SAXCommentContext;
+enum class CFX_SaxMode;
-class CFX_SAXCommentContext {
- public:
- CFX_SAXCommentContext() : m_iHeaderCount(0), m_iTailCount(0) {}
- int32_t m_iHeaderCount;
- int32_t m_iTailCount;
+enum CFX_SaxParseMode {
+ CFX_SaxParseMode_NotConvert_amp = 1 << 0,
+ CFX_SaxParseMode_NotConvert_lt = 1 << 1,
+ CFX_SaxParseMode_NotConvert_gt = 1 << 2,
+ CFX_SaxParseMode_NotConvert_apos = 1 << 3,
+ CFX_SaxParseMode_NotConvert_quot = 1 << 4,
+ CFX_SaxParseMode_NotConvert_sharp = 1 << 5,
+ CFX_SaxParseMode_NotSkipSpace = 1 << 6
};
+class CXFA_SAXReaderHandler;
+
class CFX_SAXReader {
public:
CFX_SAXReader();
@@ -95,7 +76,7 @@ class CFX_SAXReader {
uint32_t dwStart = 0,
uint32_t dwLen = -1,
uint32_t dwParseMode = 0);
- int32_t ContinueParse(IFX_Pause* pPause = NULL);
+ int32_t ContinueParse(IFX_Pause* pPause = nullptr);
void SkipCurrentNode();
void SetHandler(CXFA_SAXReaderHandler* pHandler);
void AppendData(uint8_t ch);
@@ -116,7 +97,7 @@ class CFX_SAXReader {
void ParseTagEnd();
void ParseTargetData();
- protected:
+ private:
void Reset();
void Push();
void Pop();
@@ -139,8 +120,8 @@ class CFX_SAXReader {
CFX_SAXItem* m_pRoot;
CFX_SAXItem* m_pCurItem;
uint32_t m_dwItemID;
- FX_SAXMODE m_eMode;
- FX_SAXMODE m_ePrevMode;
+ CFX_SaxMode m_eMode;
+ CFX_SaxMode m_ePrevMode;
FX_BOOL m_bCharData;
uint8_t m_CurByte;
uint32_t m_dwDataOffset;
@@ -159,4 +140,4 @@ class CFX_SAXReader {
CFX_SAXCommentContext* m_pCommentContext;
};
-#endif // XFA_FGAS_XML_FGAS_SAX_H_
+#endif // XFA_FDE_XML_CFX_SAXREADER_H_
diff --git a/xfa/fxfa/app/xfa_checksum.cpp b/xfa/fxfa/app/xfa_checksum.cpp
index b5d9fdeb7d..b279dc9596 100644
--- a/xfa/fxfa/app/xfa_checksum.cpp
+++ b/xfa/fxfa/app/xfa_checksum.cpp
@@ -97,16 +97,17 @@ CXFA_SAXReaderHandler::CXFA_SAXReaderHandler(CXFA_ChecksumContext* pContext)
}
CXFA_SAXReaderHandler::~CXFA_SAXReaderHandler() {}
void* CXFA_SAXReaderHandler::OnTagEnter(const CFX_ByteStringC& bsTagName,
- FX_SAXNODE eType,
+ CFX_SAXItem::Type eType,
uint32_t dwStartPos) {
UpdateChecksum(TRUE);
- if (eType != FX_SAXNODE_Tag && eType != FX_SAXNODE_Instruction) {
+ if (eType != CFX_SAXItem::Type::Tag &&
+ eType != CFX_SAXItem::Type::Instruction) {
return NULL;
}
m_SAXContext.m_eNode = eType;
CFX_ByteTextBuf& textBuf = m_SAXContext.m_TextBuf;
textBuf << "<";
- if (eType == FX_SAXNODE_Instruction) {
+ if (eType == CFX_SAXItem::Type::Instruction) {
textBuf << "?";
}
textBuf << bsTagName;
@@ -131,18 +132,18 @@ void CXFA_SAXReaderHandler::OnTagBreak(void* pTag) {
UpdateChecksum(FALSE);
}
void CXFA_SAXReaderHandler::OnTagData(void* pTag,
- FX_SAXNODE eType,
+ CFX_SAXItem::Type eType,
const CFX_ByteStringC& bsData,
uint32_t dwStartPos) {
if (pTag == NULL) {
return;
}
CFX_ByteTextBuf& textBuf = ((CXFA_SAXContext*)pTag)->m_TextBuf;
- if (eType == FX_SAXNODE_CharData) {
+ if (eType == CFX_SAXItem::Type::CharData) {
textBuf << "<![CDATA[";
}
textBuf << bsData;
- if (eType == FX_SAXNODE_CharData) {
+ if (eType == CFX_SAXItem::Type::CharData) {
textBuf << "]]>";
}
}
@@ -152,9 +153,9 @@ void CXFA_SAXReaderHandler::OnTagClose(void* pTag, uint32_t dwEndPos) {
}
CXFA_SAXContext* pSAXContext = (CXFA_SAXContext*)pTag;
CFX_ByteTextBuf& textBuf = pSAXContext->m_TextBuf;
- if (pSAXContext->m_eNode == FX_SAXNODE_Instruction) {
+ if (pSAXContext->m_eNode == CFX_SAXItem::Type::Instruction) {
textBuf << "?>";
- } else if (pSAXContext->m_eNode == FX_SAXNODE_Tag) {
+ } else if (pSAXContext->m_eNode == CFX_SAXItem::Type::Tag) {
textBuf << "></" << pSAXContext->m_bsTagName.AsStringC() << ">";
}
UpdateChecksum(FALSE);
@@ -170,13 +171,13 @@ void CXFA_SAXReaderHandler::OnTagEnd(void* pTag,
UpdateChecksum(FALSE);
}
void CXFA_SAXReaderHandler::OnTargetData(void* pTag,
- FX_SAXNODE eType,
+ CFX_SAXItem::Type eType,
const CFX_ByteStringC& bsData,
uint32_t dwStartPos) {
- if (pTag == NULL && eType != FX_SAXNODE_Comment) {
+ if (pTag == NULL && eType != CFX_SAXItem::Type::Comment) {
return;
}
- if (eType == FX_SAXNODE_Comment) {
+ if (eType == CFX_SAXItem::Type::Comment) {
CFX_ByteTextBuf& textBuf = m_SAXContext.m_TextBuf;
textBuf << "<!--" << bsData << "-->";
UpdateChecksum(FALSE);
@@ -234,9 +235,9 @@ FX_BOOL CXFA_ChecksumContext::UpdateChecksum(IFX_FileRead* pSrcFile,
m_pSAXReader->SetHandler(&handler);
if (m_pSAXReader->StartParse(
pSrcFile, (uint32_t)offset, (uint32_t)size,
- FX_SAXPARSEMODE_NotSkipSpace | FX_SAXPARSEMODE_NotConvert_amp |
- FX_SAXPARSEMODE_NotConvert_lt | FX_SAXPARSEMODE_NotConvert_gt |
- FX_SAXPARSEMODE_NotConvert_sharp) < 0) {
+ CFX_SaxParseMode_NotSkipSpace | CFX_SaxParseMode_NotConvert_amp |
+ CFX_SaxParseMode_NotConvert_lt | CFX_SaxParseMode_NotConvert_gt |
+ CFX_SaxParseMode_NotConvert_sharp) < 0) {
return FALSE;
}
return m_pSAXReader->ContinueParse(NULL) > 99;
diff --git a/xfa/fxfa/include/xfa_checksum.h b/xfa/fxfa/include/xfa_checksum.h
index f6b13e7cb7..a5e5592cec 100644
--- a/xfa/fxfa/include/xfa_checksum.h
+++ b/xfa/fxfa/include/xfa_checksum.h
@@ -7,7 +7,7 @@
#ifndef XFA_FXFA_INCLUDE_XFA_CHECKSUM_H_
#define XFA_FXFA_INCLUDE_XFA_CHECKSUM_H_
-#include "xfa/fgas/xml/fgas_sax.h"
+#include "xfa/fde/xml/cfx_saxreader.h"
#include "xfa/fxfa/include/fxfa.h"
class CXFA_SAXReaderHandler;
@@ -15,11 +15,11 @@ class CXFA_ChecksumContext;
class CXFA_SAXContext {
public:
- CXFA_SAXContext() : m_eNode(FX_SAXNODE_Unknown) {}
+ CXFA_SAXContext() : m_eNode(CFX_SAXItem::Type::Unknown) {}
CFX_ByteTextBuf m_TextBuf;
CFX_ByteString m_bsTagName;
- FX_SAXNODE m_eNode;
+ CFX_SAXItem::Type m_eNode;
};
class CXFA_SAXReaderHandler {
@@ -28,14 +28,14 @@ class CXFA_SAXReaderHandler {
~CXFA_SAXReaderHandler();
void* OnTagEnter(const CFX_ByteStringC& bsTagName,
- FX_SAXNODE eType,
+ CFX_SAXItem::Type eType,
uint32_t dwStartPos);
void OnTagAttribute(void* pTag,
const CFX_ByteStringC& bsAttri,
const CFX_ByteStringC& bsValue);
void OnTagBreak(void* pTag);
void OnTagData(void* pTag,
- FX_SAXNODE eType,
+ CFX_SAXItem::Type eType,
const CFX_ByteStringC& bsData,
uint32_t dwStartPos);
void OnTagClose(void* pTag, uint32_t dwEndPos);
@@ -44,7 +44,7 @@ class CXFA_SAXReaderHandler {
uint32_t dwEndPos);
void OnTargetData(void* pTag,
- FX_SAXNODE eType,
+ CFX_SAXItem::Type eType,
const CFX_ByteStringC& bsData,
uint32_t dwStartPos);