summaryrefslogtreecommitdiff
path: root/core/fxcrt/xml
diff options
context:
space:
mode:
Diffstat (limited to 'core/fxcrt/xml')
-rw-r--r--core/fxcrt/xml/cfx_xmlelement.cpp10
-rw-r--r--core/fxcrt/xml/cfx_xmlnode.cpp104
-rw-r--r--core/fxcrt/xml/cfx_xmlnode.h23
3 files changed, 60 insertions, 77 deletions
diff --git a/core/fxcrt/xml/cfx_xmlelement.cpp b/core/fxcrt/xml/cfx_xmlelement.cpp
index bba6fe6187..39233190b1 100644
--- a/core/fxcrt/xml/cfx_xmlelement.cpp
+++ b/core/fxcrt/xml/cfx_xmlelement.cpp
@@ -29,7 +29,7 @@ std::unique_ptr<CFX_XMLNode> CFX_XMLElement::Clone() {
pClone->SetAttributes(GetAttributes());
WideString wsText;
- CFX_XMLNode* pChild = m_pChild;
+ CFX_XMLNode* pChild = GetFirstChild();
while (pChild) {
switch (pChild->GetType()) {
case FX_XMLNODE_Text:
@@ -38,7 +38,7 @@ std::unique_ptr<CFX_XMLNode> CFX_XMLElement::Clone() {
default:
break;
}
- pChild = pChild->m_pNext;
+ pChild = pChild->GetNextSibling();
}
pClone->SetTextData(wsText);
return std::move(pClone);
@@ -71,7 +71,7 @@ WideString CFX_XMLElement::GetNamespaceURI() const {
auto* pElement = static_cast<const CFX_XMLElement*>(pNode);
if (!pElement->HasAttribute(wsAttri)) {
- pNode = pNode->GetNodeItem(CFX_XMLNode::Parent);
+ pNode = pNode->GetParent();
continue;
}
return pElement->GetString(wsAttri);
@@ -81,7 +81,7 @@ WideString CFX_XMLElement::GetNamespaceURI() const {
WideString CFX_XMLElement::GetTextData() const {
CFX_WideTextBuf buffer;
- CFX_XMLNode* pChild = m_pChild;
+ CFX_XMLNode* pChild = GetFirstChild();
while (pChild) {
switch (pChild->GetType()) {
case FX_XMLNODE_Text:
@@ -91,7 +91,7 @@ WideString CFX_XMLElement::GetTextData() const {
default:
break;
}
- pChild = pChild->m_pNext;
+ pChild = pChild->GetNextSibling();
}
return buffer.MakeString();
}
diff --git a/core/fxcrt/xml/cfx_xmlnode.cpp b/core/fxcrt/xml/cfx_xmlnode.cpp
index 19f397deb2..7cc506af9f 100644
--- a/core/fxcrt/xml/cfx_xmlnode.cpp
+++ b/core/fxcrt/xml/cfx_xmlnode.cpp
@@ -15,28 +15,25 @@
#include "core/fxcrt/xml/cfx_xmltext.h"
#include "third_party/base/stl_util.h"
-CFX_XMLNode::CFX_XMLNode()
- : m_pParent(nullptr),
- m_pChild(nullptr),
- m_pPrior(nullptr),
- m_pNext(nullptr) {}
-
-FX_XMLNODETYPE CFX_XMLNode::GetType() const {
- return FX_XMLNODE_Unknown;
-}
+CFX_XMLNode::CFX_XMLNode() = default;
CFX_XMLNode::~CFX_XMLNode() {
DeleteChildren();
}
+FX_XMLNODETYPE CFX_XMLNode::GetType() const {
+ return FX_XMLNODE_Unknown;
+}
+
void CFX_XMLNode::DeleteChildren() {
- CFX_XMLNode* pChild = m_pChild;
+ CFX_XMLNode* pChild = first_child_;
+ first_child_ = nullptr;
+
while (pChild) {
- CFX_XMLNode* pNext = pChild->m_pNext;
+ CFX_XMLNode* pNext = pChild->next_sibling_;
delete pChild;
pChild = pNext;
}
- m_pChild = nullptr;
}
void CFX_XMLNode::AppendChild(CFX_XMLNode* pNode) {
@@ -44,68 +41,57 @@ void CFX_XMLNode::AppendChild(CFX_XMLNode* pNode) {
}
void CFX_XMLNode::InsertChildNode(CFX_XMLNode* pNode, int32_t index) {
- ASSERT(!pNode->m_pParent);
+ ASSERT(!pNode->parent_);
- pNode->m_pParent = this;
- if (!m_pChild) {
- m_pChild = pNode;
- pNode->m_pPrior = nullptr;
- pNode->m_pNext = nullptr;
+ pNode->parent_ = this;
+ if (!first_child_) {
+ first_child_ = pNode;
+ pNode->prev_sibling_ = nullptr;
+ pNode->next_sibling_ = nullptr;
return;
}
if (index == 0) {
- pNode->m_pNext = m_pChild;
- pNode->m_pPrior = nullptr;
- m_pChild->m_pPrior = pNode;
- m_pChild = pNode;
+ pNode->next_sibling_ = first_child_;
+ pNode->prev_sibling_ = nullptr;
+ first_child_->prev_sibling_ = pNode;
+ first_child_ = pNode;
return;
}
int32_t iCount = 0;
- CFX_XMLNode* pFind = m_pChild;
- while (++iCount != index && pFind->m_pNext)
- pFind = pFind->m_pNext;
-
- pNode->m_pPrior = pFind;
- pNode->m_pNext = pFind->m_pNext;
- if (pFind->m_pNext)
- pFind->m_pNext->m_pPrior = pNode;
- pFind->m_pNext = pNode;
+ CFX_XMLNode* pFind = first_child_;
+ while (++iCount != index && pFind->next_sibling_)
+ pFind = pFind->next_sibling_;
+
+ pNode->prev_sibling_ = pFind;
+ pNode->next_sibling_ = pFind->next_sibling_;
+ if (pFind->next_sibling_)
+ pFind->next_sibling_->prev_sibling_ = pNode;
+ pFind->next_sibling_ = pNode;
}
void CFX_XMLNode::RemoveChildNode(CFX_XMLNode* pNode) {
- ASSERT(m_pChild && pNode);
+ ASSERT(first_child_ && pNode);
- if (m_pChild == pNode)
- m_pChild = pNode->m_pNext;
+ if (first_child_ == pNode)
+ first_child_ = pNode->next_sibling_;
else
- pNode->m_pPrior->m_pNext = pNode->m_pNext;
+ pNode->prev_sibling_->next_sibling_ = pNode->next_sibling_;
- if (pNode->m_pNext)
- pNode->m_pNext->m_pPrior = pNode->m_pPrior;
+ if (pNode->next_sibling_)
+ pNode->next_sibling_->prev_sibling_ = pNode->prev_sibling_;
- pNode->m_pParent = nullptr;
- pNode->m_pNext = nullptr;
- pNode->m_pPrior = nullptr;
+ pNode->parent_ = nullptr;
+ pNode->next_sibling_ = nullptr;
+ pNode->prev_sibling_ = nullptr;
}
-CFX_XMLNode* CFX_XMLNode::GetNodeItem(CFX_XMLNode::NodeItem eItem) const {
- switch (eItem) {
- case CFX_XMLNode::Root: {
- CFX_XMLNode* pParent = (CFX_XMLNode*)this;
- while (pParent->m_pParent)
- pParent = pParent->m_pParent;
+CFX_XMLNode* CFX_XMLNode::GetRoot() {
+ CFX_XMLNode* pParent = this;
+ while (pParent->parent_)
+ pParent = pParent->parent_;
- return pParent;
- }
- case CFX_XMLNode::Parent:
- return m_pParent;
- case CFX_XMLNode::NextSibling:
- return m_pNext;
- case CFX_XMLNode::FirstChild:
- return m_pChild;
- }
- return nullptr;
+ return pParent;
}
std::unique_ptr<CFX_XMLNode> CFX_XMLNode::Clone() {
@@ -183,13 +169,13 @@ void CFX_XMLNode::SaveXMLNode(
ws += L"\"";
pXMLStream->WriteString(ws.AsStringView());
}
- if (pNode->m_pChild) {
+ if (pNode->first_child_) {
ws = L"\n>";
pXMLStream->WriteString(ws.AsStringView());
- CFX_XMLNode* pChild = pNode->m_pChild;
+ CFX_XMLNode* pChild = pNode->first_child_;
while (pChild) {
pChild->SaveXMLNode(pXMLStream);
- pChild = pChild->m_pNext;
+ pChild = pChild->next_sibling_;
}
ws = L"</";
ws += static_cast<CFX_XMLElement*>(pNode)->GetName();
diff --git a/core/fxcrt/xml/cfx_xmlnode.h b/core/fxcrt/xml/cfx_xmlnode.h
index dc3152f19a..55c79dcfe0 100644
--- a/core/fxcrt/xml/cfx_xmlnode.h
+++ b/core/fxcrt/xml/cfx_xmlnode.h
@@ -27,32 +27,29 @@ struct FX_XMLNODE {
class CFX_XMLNode {
public:
- enum NodeItem {
- Root = 0,
- Parent,
- NextSibling,
- FirstChild,
- };
-
CFX_XMLNode();
virtual ~CFX_XMLNode();
virtual FX_XMLNODETYPE GetType() const;
virtual std::unique_ptr<CFX_XMLNode> Clone();
+ CFX_XMLNode* GetRoot();
+ CFX_XMLNode* GetParent() const { return parent_; }
+ CFX_XMLNode* GetFirstChild() const { return first_child_; }
+ CFX_XMLNode* GetNextSibling() const { return next_sibling_; }
+
void AppendChild(CFX_XMLNode* pNode);
void InsertChildNode(CFX_XMLNode* pNode, int32_t index);
void RemoveChildNode(CFX_XMLNode* pNode);
void DeleteChildren();
- CFX_XMLNode* GetNodeItem(CFX_XMLNode::NodeItem eItem) const;
-
void SaveXMLNode(const RetainPtr<CFX_SeekableStreamProxy>& pXMLStream);
- CFX_XMLNode* m_pParent;
- CFX_XMLNode* m_pChild;
- CFX_XMLNode* m_pPrior;
- CFX_XMLNode* m_pNext;
+ private:
+ CFX_XMLNode* parent_ = nullptr;
+ CFX_XMLNode* first_child_ = nullptr;
+ CFX_XMLNode* prev_sibling_ = nullptr;
+ CFX_XMLNode* next_sibling_ = nullptr;
};
#endif // CORE_FXCRT_XML_CFX_XMLNODE_H_