| Index: core/include/fxcrt/fx_xml.h
|
| diff --git a/core/include/fxcrt/fx_xml.h b/core/include/fxcrt/fx_xml.h
|
| index eaf872c1643db5be0e22c2b27ea875f34324e9a9..e1255c1f30f65dad88b74ceeb30798debb74e917 100644
|
| --- a/core/include/fxcrt/fx_xml.h
|
| +++ b/core/include/fxcrt/fx_xml.h
|
| @@ -7,7 +7,9 @@
|
| #ifndef CORE_INCLUDE_FXCRT_FX_XML_H_
|
| #define CORE_INCLUDE_FXCRT_FX_XML_H_
|
|
|
| -#include "fx_basic.h"
|
| +#include <vector>
|
| +
|
| +#include "core/include/fxcrt/fx_basic.h"
|
|
|
| class CXML_AttrItem {
|
| public:
|
| @@ -15,6 +17,7 @@ class CXML_AttrItem {
|
| CFX_ByteString m_AttrName;
|
| CFX_WideString m_Value;
|
| };
|
| +
|
| class CXML_AttrMap {
|
| public:
|
| CXML_AttrMap() { m_pMap = NULL; }
|
| @@ -30,6 +33,7 @@ class CXML_AttrMap {
|
| CXML_AttrItem& GetAt(int index) const;
|
| CFX_ObjectArray<CXML_AttrItem>* m_pMap;
|
| };
|
| +
|
| class CXML_Content {
|
| public:
|
| CXML_Content() : m_bCDATA(FALSE), m_Content() {}
|
| @@ -40,8 +44,11 @@ class CXML_Content {
|
| FX_BOOL m_bCDATA;
|
| CFX_WideString m_Content;
|
| };
|
| +
|
| class CXML_Element {
|
| public:
|
| + enum ChildType { Invalid, Element, Content };
|
| +
|
| static CXML_Element* Parse(const void* pBuffer,
|
| size_t size,
|
| FX_BOOL bSaveSpaceChars = FALSE,
|
| @@ -52,31 +59,23 @@ class CXML_Element {
|
| static CXML_Element* Parse(IFX_BufferRead* pBuffer,
|
| FX_BOOL bSaveSpaceChars = FALSE,
|
| FX_FILESIZE* pParsedSize = NULL);
|
| +
|
| CXML_Element(const CFX_ByteStringC& qSpace, const CFX_ByteStringC& tagName);
|
| CXML_Element(const CFX_ByteStringC& qTagName);
|
| CXML_Element();
|
| -
|
| ~CXML_Element();
|
|
|
| void Empty();
|
| -
|
| CFX_ByteString GetTagName(FX_BOOL bQualified = FALSE) const;
|
| -
|
| CFX_ByteString GetNamespace(FX_BOOL bQualified = FALSE) const;
|
| -
|
| CFX_ByteString GetNamespaceURI(const CFX_ByteStringC& qName) const;
|
| -
|
| CXML_Element* GetParent() const { return m_pParent; }
|
| -
|
| FX_DWORD CountAttrs() const { return m_AttrMap.GetSize(); }
|
| -
|
| void GetAttrByIndex(int index,
|
| CFX_ByteString& space,
|
| CFX_ByteString& name,
|
| CFX_WideString& value) const;
|
| -
|
| FX_BOOL HasAttr(const CFX_ByteStringC& qName) const;
|
| -
|
| FX_BOOL GetAttrValue(const CFX_ByteStringC& name,
|
| CFX_WideString& attribute) const;
|
| CFX_WideString GetAttrValue(const CFX_ByteStringC& name) const {
|
| @@ -129,16 +128,10 @@ class CXML_Element {
|
| return attr;
|
| }
|
|
|
| - FX_DWORD CountChildren() const;
|
| -
|
| - enum ChildType { Invalid, Element, Content };
|
| -
|
| + FX_DWORD CountChildren() const { return m_Children.size(); }
|
| ChildType GetChildType(FX_DWORD index) const;
|
| -
|
| CFX_WideString GetContent(FX_DWORD index) const;
|
| -
|
| CXML_Element* GetElement(FX_DWORD index) const;
|
| -
|
| CXML_Element* GetElement(const CFX_ByteStringC& space,
|
| const CFX_ByteStringC& tag) const {
|
| return GetElement(space, tag, 0);
|
| @@ -146,29 +139,28 @@ class CXML_Element {
|
|
|
| FX_DWORD CountElements(const CFX_ByteStringC& space,
|
| const CFX_ByteStringC& tag) const;
|
| -
|
| CXML_Element* GetElement(const CFX_ByteStringC& space,
|
| const CFX_ByteStringC& tag,
|
| int index) const;
|
|
|
| FX_DWORD FindElement(CXML_Element* pChild) const;
|
| -
|
| void SetTag(const CFX_ByteStringC& qSpace, const CFX_ByteStringC& tagname);
|
| -
|
| void SetTag(const CFX_ByteStringC& qTagName);
|
| -
|
| void RemoveChildren();
|
| -
|
| void RemoveChild(FX_DWORD index);
|
|
|
| protected:
|
| + struct ChildRecord {
|
| + ChildType type;
|
| + void* child; // CXML_Element and CXML_Content lack a common ancestor.
|
| + };
|
| +
|
| CXML_Element* m_pParent;
|
| CFX_ByteString m_QSpaceName;
|
| CFX_ByteString m_TagName;
|
| -
|
| CXML_AttrMap m_AttrMap;
|
| + std::vector<ChildRecord> m_Children;
|
|
|
| - CFX_PtrArray m_Children;
|
| friend class CXML_Parser;
|
| friend class CXML_Composer;
|
| };
|
|
|