summaryrefslogtreecommitdiff
path: root/xfa/fxfa
diff options
context:
space:
mode:
authorTom Sepez <tsepez@chromium.org>2018-07-03 20:49:46 +0000
committerChromium commit bot <commit-bot@chromium.org>2018-07-03 20:49:46 +0000
commit57e594f047f86bfa4d26864e993ce330ad66bfcd (patch)
tree095991c67b21c764e7249ef6263031f4728ed3de /xfa/fxfa
parent82dafa4f1dd607561f6852c50c15b03977389dc2 (diff)
downloadpdfium-57e594f047f86bfa4d26864e993ce330ad66bfcd.tar.xz
Use UnownedPtr<> in cxfa_nodeiteratortemplate.h
Change-Id: I48c20a56ca25a6821bc9b51aa59c037fe2341194 Reviewed-on: https://pdfium-review.googlesource.com/36972 Reviewed-by: dsinclair <dsinclair@chromium.org> Commit-Queue: Tom Sepez <tsepez@chromium.org>
Diffstat (limited to 'xfa/fxfa')
-rw-r--r--xfa/fxfa/parser/cxfa_nodeiteratortemplate.h32
1 files changed, 17 insertions, 15 deletions
diff --git a/xfa/fxfa/parser/cxfa_nodeiteratortemplate.h b/xfa/fxfa/parser/cxfa_nodeiteratortemplate.h
index 214f38e501..10543fdbcf 100644
--- a/xfa/fxfa/parser/cxfa_nodeiteratortemplate.h
+++ b/xfa/fxfa/parser/cxfa_nodeiteratortemplate.h
@@ -7,14 +7,16 @@
#ifndef XFA_FXFA_PARSER_CXFA_NODEITERATORTEMPLATE_H_
#define XFA_FXFA_PARSER_CXFA_NODEITERATORTEMPLATE_H_
+#include "core/fxcrt/unowned_ptr.h"
+
template <class NodeType, class TraverseStrategy>
class CXFA_NodeIteratorTemplate {
public:
explicit CXFA_NodeIteratorTemplate(NodeType* pRoot)
: m_pRoot(pRoot), m_pCurrent(pRoot) {}
- NodeType* GetRoot() const { return m_pRoot; }
- NodeType* GetCurrent() const { return m_pCurrent; }
+ NodeType* GetRoot() const { return m_pRoot.Get(); }
+ NodeType* GetCurrent() const { return m_pCurrent.Get(); }
void Reset() { m_pCurrent = m_pRoot; }
bool SetCurrent(NodeType* pNode) {
@@ -30,18 +32,18 @@ class CXFA_NodeIteratorTemplate {
if (!m_pRoot)
return nullptr;
if (!m_pCurrent) {
- m_pCurrent = LastDescendant(m_pRoot);
- return m_pCurrent;
+ m_pCurrent = LastDescendant(m_pRoot.Get());
+ return m_pCurrent.Get();
}
- NodeType* pSibling = PreviousSiblingWithinSubtree(m_pCurrent);
+ NodeType* pSibling = PreviousSiblingWithinSubtree(m_pCurrent.Get());
if (pSibling) {
m_pCurrent = LastDescendant(pSibling);
- return m_pCurrent;
+ return m_pCurrent.Get();
}
- NodeType* pParent = ParentWithinSubtree(m_pCurrent);
+ NodeType* pParent = ParentWithinSubtree(m_pCurrent.Get());
if (pParent) {
m_pCurrent = pParent;
- return m_pCurrent;
+ return pParent;
}
return nullptr;
}
@@ -49,10 +51,10 @@ class CXFA_NodeIteratorTemplate {
NodeType* MoveToNext() {
if (!m_pRoot || !m_pCurrent)
return nullptr;
- NodeType* pChild = TraverseStrategy::GetFirstChild(m_pCurrent);
+ NodeType* pChild = TraverseStrategy::GetFirstChild(m_pCurrent.Get());
if (pChild) {
m_pCurrent = pChild;
- return m_pCurrent;
+ return pChild;
}
return SkipChildrenAndMoveToNext();
}
@@ -60,17 +62,17 @@ class CXFA_NodeIteratorTemplate {
NodeType* SkipChildrenAndMoveToNext() {
if (!m_pRoot)
return nullptr;
- NodeType* pNode = m_pCurrent;
+ NodeType* pNode = m_pCurrent.Get();
while (pNode) {
NodeType* pSibling = NextSiblingWithinSubtree(pNode);
if (pSibling) {
m_pCurrent = pSibling;
- return m_pCurrent;
+ return pSibling;
}
pNode = ParentWithinSubtree(pNode);
}
m_pCurrent = nullptr;
- return m_pCurrent;
+ return nullptr;
}
private:
@@ -122,8 +124,8 @@ class CXFA_NodeIteratorTemplate {
return pChild ? LastDescendant(pChild) : pNode;
}
- NodeType* m_pRoot;
- NodeType* m_pCurrent;
+ UnownedPtr<NodeType> m_pRoot;
+ UnownedPtr<NodeType> m_pCurrent;
};
#endif // XFA_FXFA_PARSER_CXFA_NODEITERATORTEMPLATE_H_