diff options
Diffstat (limited to 'core/fxcrt')
-rw-r--r-- | core/fxcrt/xml/cxml_element.h | 14 | ||||
-rw-r--r-- | core/fxcrt/xml/cxml_parser.cpp | 7 |
2 files changed, 14 insertions, 7 deletions
diff --git a/core/fxcrt/xml/cxml_element.h b/core/fxcrt/xml/cxml_element.h index 40ebe385b7..a851a86f1c 100644 --- a/core/fxcrt/xml/cxml_element.h +++ b/core/fxcrt/xml/cxml_element.h @@ -8,6 +8,7 @@ #define CORE_FXCRT_XML_CXML_ELEMENT_H_ #include <memory> +#include <utility> #include <vector> #include "core/fxcrt/xml/cxml_attrmap.h" @@ -87,6 +88,10 @@ class CXML_Element : public CXML_Object { return attr; } + void AppendChild(std::unique_ptr<CXML_Object> child) { + m_Children.push_back(std::move(child)); + } + uint32_t CountChildren() const { return m_Children.size(); } uint32_t CountElements(const ByteStringView& space, const ByteStringView& tag) const; @@ -98,10 +103,13 @@ class CXML_Element : public CXML_Object { void SetTag(const ByteStringView& qTagName); void RemoveChild(uint32_t index); - private: - friend class CXML_Parser; - friend class CXML_Composer; + void SetAttribute(const ByteString& space, + const ByteString& name, + const WideString& value) { + m_AttrMap.SetAt(space, name, value); + } + private: UnownedPtr<const CXML_Element> const m_pParent; ByteString m_QSpaceName; ByteString m_TagName; diff --git a/core/fxcrt/xml/cxml_parser.cpp b/core/fxcrt/xml/cxml_parser.cpp index adf83c7148..062b5bec07 100644 --- a/core/fxcrt/xml/cxml_parser.cpp +++ b/core/fxcrt/xml/cxml_parser.cpp @@ -424,7 +424,7 @@ std::unique_ptr<CXML_Element> CXML_Parser::ParseElementInternal( WideString attr_value; GetAttrValue(attr_value); - pElement->m_AttrMap.SetAt(attr_space, attr_name, attr_value); + pElement->SetAttribute(attr_space, attr_name, attr_value); } m_nOffset = m_nBufferOffset + static_cast<FX_FILESIZE>(m_dwIndex); if (m_dwIndex < m_dwBufferSize || IsEOF()) @@ -498,7 +498,7 @@ std::unique_ptr<CXML_Element> CXML_Parser::ParseElementInternal( if (!pSubElement) break; - pElement->m_Children.push_back(std::move(pSubElement)); + pElement->AppendChild(std::move(pSubElement)); SkipWhiteSpaces(); } break; @@ -541,6 +541,5 @@ void CXML_Parser::InsertContentSegment(bool bCDATA, if (content.IsEmpty()) return; - pElement->m_Children.push_back( - pdfium::MakeUnique<CXML_Content>(bCDATA, content)); + pElement->AppendChild(pdfium::MakeUnique<CXML_Content>(bCDATA, content)); } |