From 303f9a3afc4a86147213d4ac57894480485090a2 Mon Sep 17 00:00:00 2001 From: Dan Sinclair Date: Wed, 2 May 2018 18:08:46 +0000 Subject: [xml] Simplify the CFX_XMLParser parse methods This CL moves the switch from CFX_XMLParse::Parse into CFX_XMLParser::DoSyntaxParse. This means all the work to build the tree is now done in one place instead of spread between the two methods. Change-Id: Ie9c6cd67795c3fcbd3e305187a06cd727d386a7c Reviewed-on: https://pdfium-review.googlesource.com/31950 Reviewed-by: Henrique Nakashima Commit-Queue: dsinclair --- core/fxcrt/xml/cfx_xmlparser.h | 27 +++------------------------ 1 file changed, 3 insertions(+), 24 deletions(-) (limited to 'core/fxcrt/xml/cfx_xmlparser.h') diff --git a/core/fxcrt/xml/cfx_xmlparser.h b/core/fxcrt/xml/cfx_xmlparser.h index db8239bd98..aa5ad5761c 100644 --- a/core/fxcrt/xml/cfx_xmlparser.h +++ b/core/fxcrt/xml/cfx_xmlparser.h @@ -20,24 +20,6 @@ class CFX_XMLElement; class CFX_XMLNode; class IFX_SeekableReadStream; -enum class FX_XmlSyntaxResult { - None, - InstructionOpen, - InstructionClose, - ElementOpen, - ElementBreak, - ElementClose, - TargetName, - TagName, - AttriName, - AttriValue, - Text, - CData, - TargetData, - Error, - EndOfString -}; - class CFX_XMLParser { public: static bool IsXMLNameChar(wchar_t ch, bool bFirstChar); @@ -47,10 +29,6 @@ class CFX_XMLParser { std::unique_ptr Parse(); - protected: - FX_XmlSyntaxResult DoSyntaxParse(); - WideString GetTextData(); - private: enum class FDE_XmlSyntaxState { Text, @@ -71,15 +49,16 @@ class CFX_XMLParser { TargetData }; + bool DoSyntaxParse(CFX_XMLDocument* doc); + WideString GetTextData(); void ProcessTextChar(wchar_t ch); - bool GetStatus() const; + void ProcessTargetData(); CFX_XMLNode* current_node_ = nullptr; WideString current_attribute_name_; RetainPtr m_pStream; FX_FILESIZE m_Start = 0; // Start position in m_Buffer FX_FILESIZE m_End = 0; // End position in m_Buffer - FX_XmlSyntaxResult m_syntaxParserResult = FX_XmlSyntaxResult::None; FDE_XmlSyntaxState m_syntaxParserState = FDE_XmlSyntaxState::Text; std::stack m_XMLNodeTypeStack; std::stack m_SkipStack; -- cgit v1.2.3