diff options
Diffstat (limited to 'core')
-rw-r--r-- | core/fxcrt/xml/cfx_xmldocument.cpp | 7 | ||||
-rw-r--r-- | core/fxcrt/xml/cfx_xmldocument.h | 6 |
2 files changed, 13 insertions, 0 deletions
diff --git a/core/fxcrt/xml/cfx_xmldocument.cpp b/core/fxcrt/xml/cfx_xmldocument.cpp index f6e55551ed..5ce4aed694 100644 --- a/core/fxcrt/xml/cfx_xmldocument.cpp +++ b/core/fxcrt/xml/cfx_xmldocument.cpp @@ -12,3 +12,10 @@ CFX_XMLDocument::CFX_XMLDocument() { } CFX_XMLDocument::~CFX_XMLDocument() = default; + +void CFX_XMLDocument::AppendNodesFrom(CFX_XMLDocument* other) { + nodes_.reserve(nodes_.size() + other->nodes_.size()); + nodes_.insert(nodes_.end(), std::make_move_iterator(other->nodes_.begin()), + std::make_move_iterator(other->nodes_.end())); + other->nodes_.clear(); +} diff --git a/core/fxcrt/xml/cfx_xmldocument.h b/core/fxcrt/xml/cfx_xmldocument.h index a568f8390f..7d6f02b48d 100644 --- a/core/fxcrt/xml/cfx_xmldocument.h +++ b/core/fxcrt/xml/cfx_xmldocument.h @@ -29,6 +29,12 @@ class CFX_XMLDocument { return static_cast<T*>(nodes_.back().get()); } + // Transfers ownership of entries in |nodes_| from |other| to |this|. + // This is used in CJX_Node::loadXML to transfer ownership of the newly + // created nodes to the top-level XML doc for the PDF, after parsing an XML + // blob. + void AppendNodesFrom(CFX_XMLDocument* other); + private: std::vector<std::unique_ptr<CFX_XMLNode>> nodes_; UnownedPtr<CFX_XMLElement> root_; |