summaryrefslogtreecommitdiff
path: root/xfa/fde/xml/fde_xml_imp.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'xfa/fde/xml/fde_xml_imp.cpp')
-rw-r--r--xfa/fde/xml/fde_xml_imp.cpp269
1 files changed, 0 insertions, 269 deletions
diff --git a/xfa/fde/xml/fde_xml_imp.cpp b/xfa/fde/xml/fde_xml_imp.cpp
index 6b7bdaaed3..b71d8b8f4f 100644
--- a/xfa/fde/xml/fde_xml_imp.cpp
+++ b/xfa/fde/xml/fde_xml_imp.cpp
@@ -870,45 +870,7 @@ void CFDE_XMLDoc::ReleaseParser() {
m_pSyntaxParser = nullptr;
}
}
-FX_BOOL CFDE_XMLDoc::LoadXML(IFX_Stream* pXMLStream,
- int32_t iXMLPlaneSize,
- int32_t iTextDataSize,
- FDE_XMLREADERHANDLER* pHandler) {
- if (!pXMLStream)
- return FALSE;
- Reset(TRUE);
- iXMLPlaneSize = iXMLPlaneSize / 1024;
- if (iXMLPlaneSize < 1) {
- iXMLPlaneSize = 1;
- }
- iXMLPlaneSize *= 1024;
- if (iXMLPlaneSize < 4096) {
- iXMLPlaneSize = 4096;
- }
- iTextDataSize = iTextDataSize / 128;
- if (iTextDataSize < 1) {
- iTextDataSize = 1;
- }
- iTextDataSize *= 128;
- if (iTextDataSize < 128) {
- iTextDataSize = 128;
- }
- m_pStream = pXMLStream;
- uint16_t wCodePage = m_pStream->GetCodePage();
- if (wCodePage != FX_CODEPAGE_UTF16LE && wCodePage != FX_CODEPAGE_UTF16BE &&
- wCodePage != FX_CODEPAGE_UTF8) {
- m_pStream->SetCodePage(FX_CODEPAGE_UTF8);
- }
- m_pSyntaxParser = new CFDE_XMLSyntaxParser;
-
- m_pSyntaxParser->Init(m_pStream, iXMLPlaneSize, iTextDataSize);
- if (pHandler)
- m_pXMLParser = new CFDE_XMLSAXParser(pHandler, m_pSyntaxParser);
- else
- m_pXMLParser = new CFDE_XMLDOMParser(m_pRoot, m_pSyntaxParser);
- return TRUE;
-}
FX_BOOL CFDE_XMLDoc::LoadXML(CFDE_XMLParser* pXMLParser) {
if (!pXMLParser)
return FALSE;
@@ -1060,237 +1022,6 @@ void CFDE_XMLDoc::SaveXML(IFX_Stream* pXMLStream, FX_BOOL bSaveBOM) {
pXMLStream->SetLength(iPos);
}
}
-CFDE_XMLDOMParser::CFDE_XMLDOMParser(CFDE_XMLNode* pRoot,
- CFDE_XMLSyntaxParser* pParser)
- : m_pParser(pParser),
- m_pParent(pRoot),
- m_pChild(nullptr),
- m_NodeStack(16),
- m_ws1(),
- m_ws2() {
- m_NodeStack.Push(m_pParent);
-}
-CFDE_XMLDOMParser::~CFDE_XMLDOMParser() {
- m_NodeStack.RemoveAll();
- m_ws1.clear();
- m_ws2.clear();
-}
-
-int32_t CFDE_XMLDOMParser::DoParser(IFX_Pause* pPause) {
- FDE_XmlSyntaxResult syntaxParserResult;
- int32_t iCount = 0;
- while (TRUE) {
- syntaxParserResult = m_pParser->DoSyntaxParse();
- switch (syntaxParserResult) {
- case FDE_XmlSyntaxResult::InstructionOpen:
- break;
- case FDE_XmlSyntaxResult::InstructionClose:
- if (m_pChild->GetType() != FDE_XMLNODE_Instruction) {
- syntaxParserResult = FDE_XmlSyntaxResult::Error;
- break;
- }
- m_pChild = m_pParent;
- break;
- case FDE_XmlSyntaxResult::ElementOpen:
- case FDE_XmlSyntaxResult::ElementBreak:
- break;
- case FDE_XmlSyntaxResult::ElementClose:
- if (m_pChild->GetType() != FDE_XMLNODE_Element) {
- syntaxParserResult = FDE_XmlSyntaxResult::Error;
- break;
- }
- m_pParser->GetTagName(m_ws1);
- ((CFDE_XMLElement*)m_pChild)->GetTagName(m_ws2);
- if (m_ws1.GetLength() > 0 && m_ws1.Compare(m_ws2) != 0) {
- syntaxParserResult = FDE_XmlSyntaxResult::Error;
- break;
- }
- m_NodeStack.Pop();
- if (m_NodeStack.GetSize() < 1) {
- syntaxParserResult = FDE_XmlSyntaxResult::Error;
- break;
- }
- m_pParent = (CFDE_XMLNode*)*m_NodeStack.GetTopElement();
- m_pChild = m_pParent;
- iCount++;
- break;
- case FDE_XmlSyntaxResult::TargetName:
- m_pParser->GetTargetName(m_ws1);
- m_pChild = new CFDE_XMLInstruction(m_ws1);
- m_pParent->InsertChildNode(m_pChild);
- m_ws1.clear();
- break;
- case FDE_XmlSyntaxResult::TagName:
- m_pParser->GetTagName(m_ws1);
- m_pChild = new CFDE_XMLElement(m_ws1);
- m_pParent->InsertChildNode(m_pChild);
- m_NodeStack.Push(m_pChild);
- m_pParent = m_pChild;
- break;
- case FDE_XmlSyntaxResult::AttriName:
- m_pParser->GetAttributeName(m_ws1);
- break;
- case FDE_XmlSyntaxResult::AttriValue:
- if (!m_pChild) {
- syntaxParserResult = FDE_XmlSyntaxResult::Error;
- break;
- }
- m_pParser->GetAttributeName(m_ws2);
- if (m_pChild->GetType() == FDE_XMLNODE_Element) {
- ((CFDE_XMLElement*)m_pChild)->SetString(m_ws1, m_ws2);
- } else if (m_pChild->GetType() == FDE_XMLNODE_Instruction) {
- ((CFDE_XMLInstruction*)m_pChild)->SetString(m_ws1, m_ws2);
- }
- m_ws1.clear();
- break;
- case FDE_XmlSyntaxResult::Text:
- m_pParser->GetTextData(m_ws1);
- m_pChild = new CFDE_XMLText(m_ws1);
- m_pParent->InsertChildNode(m_pChild);
- m_pChild = m_pParent;
- break;
- case FDE_XmlSyntaxResult::CData:
- m_pParser->GetTextData(m_ws1);
- m_pChild = new CFDE_XMLCharData(m_ws1);
- m_pParent->InsertChildNode(m_pChild);
- m_pChild = m_pParent;
- break;
- case FDE_XmlSyntaxResult::TargetData:
- if (!m_pChild || m_pChild->GetType() != FDE_XMLNODE_Instruction) {
- syntaxParserResult = FDE_XmlSyntaxResult::Error;
- break;
- }
- if (!m_ws1.IsEmpty()) {
- ((CFDE_XMLInstruction*)m_pChild)->AppendData(m_ws1);
- }
- m_pParser->GetTargetData(m_ws1);
- ((CFDE_XMLInstruction*)m_pChild)->AppendData(m_ws1);
- m_ws1.clear();
- break;
- default:
- break;
- }
- if (syntaxParserResult == FDE_XmlSyntaxResult::Error ||
- syntaxParserResult == FDE_XmlSyntaxResult::EndOfString) {
- break;
- }
- if (iCount > 500 && pPause && pPause->NeedToPauseNow())
- break;
- }
- return m_pParser->GetStatus();
-}
-
-CFDE_XMLSAXParser::CFDE_XMLSAXParser(FDE_XMLREADERHANDLER* pHandler,
- CFDE_XMLSyntaxParser* pParser)
- : m_pHandler(pHandler),
- m_pParser(pParser),
- m_TagStack(16),
- m_pTagTop(nullptr),
- m_ws1(),
- m_ws2() {}
-CFDE_XMLSAXParser::~CFDE_XMLSAXParser() {
- m_TagStack.RemoveAll();
- m_ws1.clear();
- m_ws2.clear();
-}
-int32_t CFDE_XMLSAXParser::DoParser(IFX_Pause* pPause) {
- FDE_XmlSyntaxResult syntaxParserResult;
- int32_t iCount = 0;
- while (TRUE) {
- syntaxParserResult = m_pParser->DoSyntaxParse();
- switch (syntaxParserResult) {
- case FDE_XmlSyntaxResult::ElementBreak:
- if (!m_pTagTop) {
- syntaxParserResult = FDE_XmlSyntaxResult::Error;
- break;
- }
- if (m_pTagTop->eType == FDE_XMLNODE_Element) {
- m_pHandler->OnTagBreak(m_pHandler, m_pTagTop->wsTagName);
- }
- break;
- case FDE_XmlSyntaxResult::ElementClose:
- if (!m_pTagTop || m_pTagTop->eType != FDE_XMLNODE_Element) {
- syntaxParserResult = FDE_XmlSyntaxResult::Error;
- break;
- }
- m_pParser->GetTagName(m_ws1);
- if (m_ws1.GetLength() > 0 && m_ws1.Compare(m_pTagTop->wsTagName) != 0) {
- syntaxParserResult = FDE_XmlSyntaxResult::Error;
- break;
- } else if (m_ws1.GetLength() == 0) {
- m_pHandler->OnTagBreak(m_pHandler, m_pTagTop->wsTagName);
- }
- m_pHandler->OnTagClose(m_pHandler, m_pTagTop->wsTagName);
- Pop();
- iCount++;
- break;
- case FDE_XmlSyntaxResult::TargetName: {
- m_pParser->GetTargetName(m_ws1);
- CFDE_XMLTAG xmlTag;
- xmlTag.wsTagName = m_ws1;
- xmlTag.eType = FDE_XMLNODE_Instruction;
- Push(xmlTag);
- m_pHandler->OnTagEnter(m_pHandler, FDE_XMLNODE_Instruction,
- m_pTagTop->wsTagName);
- m_ws1.clear();
- } break;
- case FDE_XmlSyntaxResult::TagName: {
- m_pParser->GetTargetName(m_ws1);
- CFDE_XMLTAG xmlTag;
- xmlTag.wsTagName = m_ws1;
- xmlTag.eType = FDE_XMLNODE_Element;
- Push(xmlTag);
- m_pHandler->OnTagEnter(m_pHandler, FDE_XMLNODE_Element,
- m_pTagTop->wsTagName);
- } break;
- case FDE_XmlSyntaxResult::AttriName:
- m_pParser->GetTargetName(m_ws1);
- break;
- case FDE_XmlSyntaxResult::AttriValue:
- m_pParser->GetAttributeName(m_ws2);
- if (!m_pTagTop) {
- syntaxParserResult = FDE_XmlSyntaxResult::Error;
- break;
- }
- if (m_pTagTop->eType == FDE_XMLNODE_Element) {
- m_pHandler->OnAttribute(m_pHandler, m_ws1, m_ws2);
- }
- m_ws1.clear();
- break;
- case FDE_XmlSyntaxResult::CData:
- m_pParser->GetTextData(m_ws1);
- m_pHandler->OnData(m_pHandler, FDE_XMLNODE_CharData, m_ws1);
- break;
- case FDE_XmlSyntaxResult::Text:
- m_pParser->GetTextData(m_ws1);
- m_pHandler->OnData(m_pHandler, FDE_XMLNODE_Text, m_ws1);
- break;
- case FDE_XmlSyntaxResult::TargetData:
- m_pParser->GetTargetData(m_ws1);
- m_pHandler->OnData(m_pHandler, FDE_XMLNODE_Instruction, m_ws1);
- m_ws1.clear();
- break;
- default:
- break;
- }
- if (syntaxParserResult == FDE_XmlSyntaxResult::Error ||
- syntaxParserResult == FDE_XmlSyntaxResult::EndOfString) {
- break;
- }
- if (iCount > 500 && pPause && pPause->NeedToPauseNow())
- break;
- }
- return m_pParser->GetStatus();
-}
-
-inline void CFDE_XMLSAXParser::Push(const CFDE_XMLTAG& xmlTag) {
- m_TagStack.Push(xmlTag);
- m_pTagTop = m_TagStack.GetTopElement();
-}
-inline void CFDE_XMLSAXParser::Pop() {
- m_TagStack.Pop();
- m_pTagTop = m_TagStack.GetTopElement();
-}
CFDE_BlockBuffer::CFDE_BlockBuffer(int32_t iAllocStep)
: m_iDataLength(0),