summaryrefslogtreecommitdiff
path: root/core/fxcrt/xml/cfx_xmlnode.h
diff options
context:
space:
mode:
authordsinclair <dsinclair@chromium.org>2018-04-23 18:35:17 +0000
committerChromium commit bot <commit-bot@chromium.org>2018-04-23 18:35:17 +0000
commitbb47f9a442b5ea2196f18cb2df3cedd34b81b9ad (patch)
tree447c0360d9f2f2555c1c2d19e6f8d7e007e58503 /core/fxcrt/xml/cfx_xmlnode.h
parent857231a0723c0bf74ea6c13f1c3ce56548e23303 (diff)
downloadpdfium-bb47f9a442b5ea2196f18cb2df3cedd34b81b9ad.tar.xz
Revert "Change CFX_XML Save to take a write stream"
This reverts commit 9a3a7709103a872037dcea1f3cf0b7785a3da191. Reason for revert: Gerrit did not do what I expected.... Original change's description: > Change CFX_XML Save to take a write stream > > This CL changes CFX_XML to use an IFX_SeekableWriteStream instead of the more > generic IFX_SeekableStream. > > Change-Id: I6e4def380c43eca755d91ad5cb6146c2dfdaee10 > Reviewed-on: https://pdfium-review.googlesource.com/30877 > Commit-Queue: dsinclair <dsinclair@chromium.org> > Reviewed-by: Tom Sepez <tsepez@chromium.org> TBR=tsepez@chromium.org,dsinclair@chromium.org,hnakashima@chromium.org Change-Id: I137e53bf93285b88ade6832dedefca66e3b61e13 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://pdfium-review.googlesource.com/31211 Reviewed-by: dsinclair <dsinclair@chromium.org> Commit-Queue: dsinclair <dsinclair@chromium.org>
Diffstat (limited to 'core/fxcrt/xml/cfx_xmlnode.h')
-rw-r--r--core/fxcrt/xml/cfx_xmlnode.h24
1 files changed, 9 insertions, 15 deletions
diff --git a/core/fxcrt/xml/cfx_xmlnode.h b/core/fxcrt/xml/cfx_xmlnode.h
index cbf89adb5e..288095403c 100644
--- a/core/fxcrt/xml/cfx_xmlnode.h
+++ b/core/fxcrt/xml/cfx_xmlnode.h
@@ -8,7 +8,6 @@
#define CORE_FXCRT_XML_CFX_XMLNODE_H_
#include <memory>
-#include <vector>
#include "core/fxcrt/fx_stream.h"
#include "core/fxcrt/retain_ptr.h"
@@ -23,39 +22,34 @@ enum FX_XMLNODETYPE {
class CFX_XMLNode {
public:
- using const_iterator =
- std::vector<std::unique_ptr<CFX_XMLNode>>::const_iterator;
-
CFX_XMLNode();
virtual ~CFX_XMLNode();
virtual FX_XMLNODETYPE GetType() const = 0;
virtual std::unique_ptr<CFX_XMLNode> Clone() = 0;
- virtual void Save(const RetainPtr<IFX_SeekableWriteStream>& pXMLStream) = 0;
+ virtual void Save(const RetainPtr<IFX_SeekableStream>& pXMLStream) = 0;
CFX_XMLNode* GetRoot();
CFX_XMLNode* GetParent() const { return parent_.Get(); }
- CFX_XMLNode* GetNextSibling() const { return next_sibling_; }
- bool HasChildren() const { return !children_.empty(); }
- const_iterator begin() const { return children_.begin(); }
- const_iterator end() const { return children_.end(); }
+ CFX_XMLNode* GetFirstChild() const { return first_child_.get(); }
+ CFX_XMLNode* GetNextSibling() const { return next_sibling_.get(); }
void AppendChild(std::unique_ptr<CFX_XMLNode> pNode);
void InsertChildNode(std::unique_ptr<CFX_XMLNode> pNode, int32_t index);
void RemoveChildNode(CFX_XMLNode* pNode);
void DeleteChildren();
- // Note |root| must not have any children.
- void MoveChildrenTo(CFX_XMLNode* root);
protected:
WideString EncodeEntities(const WideString& value);
private:
+ // A node owns its first child and it owns its next sibling. The rest
+ // are unowned pointers.
UnownedPtr<CFX_XMLNode> parent_;
- // The next_sibling is owned by the vector. We don't use an UnownedPtr
- // because we don't know the destruction order of the vector.
- CFX_XMLNode* next_sibling_;
- std::vector<std::unique_ptr<CFX_XMLNode>> children_;
+ UnownedPtr<CFX_XMLNode> last_child_;
+ UnownedPtr<CFX_XMLNode> prev_sibling_;
+ std::unique_ptr<CFX_XMLNode> first_child_;
+ std::unique_ptr<CFX_XMLNode> next_sibling_;
};
#endif // CORE_FXCRT_XML_CFX_XMLNODE_H_