diff options
Diffstat (limited to 'core/fxcrt/xml/cfx_xmlnode.h')
-rw-r--r-- | core/fxcrt/xml/cfx_xmlnode.h | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/core/fxcrt/xml/cfx_xmlnode.h b/core/fxcrt/xml/cfx_xmlnode.h new file mode 100644 index 0000000000..7cbc2b6642 --- /dev/null +++ b/core/fxcrt/xml/cfx_xmlnode.h @@ -0,0 +1,75 @@ +// Copyright 2017 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FXCRT_XML_CFX_XMLNODE_H_ +#define CORE_FXCRT_XML_CFX_XMLNODE_H_ + +#include <memory> + +#include "core/fxcrt/cfx_retain_ptr.h" +#include "core/fxcrt/cfx_seekablestreamproxy.h" + +enum FX_XMLNODETYPE { + FX_XMLNODE_Unknown = 0, + FX_XMLNODE_Instruction, + FX_XMLNODE_Element, + FX_XMLNODE_Text, + FX_XMLNODE_CharData, +}; + +struct FX_XMLNODE { + int32_t iNodeNum; + FX_XMLNODETYPE eNodeType; +}; + +class CFX_XMLNode { + public: + enum NodeItem { + Root = 0, + Parent, + FirstSibling, + PriorSibling, + NextSibling, + LastSibling, + FirstNeighbor, + PriorNeighbor, + NextNeighbor, + LastNeighbor, + FirstChild, + LastChild + }; + + CFX_XMLNode(); + virtual ~CFX_XMLNode(); + + virtual FX_XMLNODETYPE GetType() const; + virtual std::unique_ptr<CFX_XMLNode> Clone(); + + int32_t CountChildNodes() const; + CFX_XMLNode* GetChildNode(int32_t index) const; + int32_t GetChildNodeIndex(CFX_XMLNode* pNode) const; + int32_t InsertChildNode(CFX_XMLNode* pNode, int32_t index = -1); + void RemoveChildNode(CFX_XMLNode* pNode); + void DeleteChildren(); + + CFX_XMLNode* GetPath(const wchar_t* pPath, + int32_t iLength = -1, + bool bQualifiedName = true) const; + + int32_t GetNodeLevel() const; + CFX_XMLNode* GetNodeItem(CFX_XMLNode::NodeItem eItem) const; + bool InsertNodeItem(CFX_XMLNode::NodeItem eItem, CFX_XMLNode* pNode); + CFX_XMLNode* RemoveNodeItem(CFX_XMLNode::NodeItem eItem); + + void SaveXMLNode(const CFX_RetainPtr<CFX_SeekableStreamProxy>& pXMLStream); + + CFX_XMLNode* m_pParent; + CFX_XMLNode* m_pChild; + CFX_XMLNode* m_pPrior; + CFX_XMLNode* m_pNext; +}; + +#endif // CORE_FXCRT_XML_CFX_XMLNODE_H_ |