diff options
author | Dan Sinclair <dsinclair@chromium.org> | 2018-02-13 21:44:33 +0000 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2018-02-13 21:44:33 +0000 |
commit | fa3765cce4da4c3923e525f0462afd794360d221 (patch) | |
tree | 2a246bc47d7584edf5d8dd2c124f6c21c26cd5c8 /core/fxcrt/xml | |
parent | 9c112f92d4c2046d5a4f8538f4d18b74a87649d4 (diff) | |
download | pdfium-fa3765cce4da4c3923e525f0462afd794360d221.tar.xz |
Cleanup CFX_XMLNode pointers
This CL cleans up hte CFX_XMLNode pointers. Each pointer has been
renamed to make the usage clearer, the NodeItems method has been removed
in favour of distinct accessors and the node pointers have been made
private.
Change-Id: I5459a77a0ae93b08741a0cd59266ef9c81ddad75
Reviewed-on: https://pdfium-review.googlesource.com/26550
Commit-Queue: dsinclair <dsinclair@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Diffstat (limited to 'core/fxcrt/xml')
-rw-r--r-- | core/fxcrt/xml/cfx_xmlelement.cpp | 10 | ||||
-rw-r--r-- | core/fxcrt/xml/cfx_xmlnode.cpp | 104 | ||||
-rw-r--r-- | core/fxcrt/xml/cfx_xmlnode.h | 23 |
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_ |