Remove CFX_ArrayTemplate from CXFA_Node.
Remove some unused arrays from helper functions while we're
at it.
Change-Id: I7cf9efaeb269df8b9c32b128fc9595682102f0e1
Reviewed-on: https://pdfium-review.googlesource.com/3240
Commit-Queue: Tom Sepez <tsepez@chromium.org>
Reviewed-by: dsinclair <dsinclair@chromium.org>
diff --git a/xfa/fxfa/parser/cxfa_node.cpp b/xfa/fxfa/parser/cxfa_node.cpp
index 509decd..a1074b9 100644
--- a/xfa/fxfa/parser/cxfa_node.cpp
+++ b/xfa/fxfa/parser/cxfa_node.cpp
@@ -81,29 +81,20 @@
return iCount;
}
-void SortNodeArrayByDocumentIdx(const std::unordered_set<CXFA_Node*>& rgNodeSet,
- std::vector<CXFA_Node*>& rgNodeArray,
- CFX_ArrayTemplate<int32_t>& rgIdxArray) {
- int32_t iCount = pdfium::CollectionSize<int32_t>(rgNodeSet);
- rgNodeArray.resize(iCount);
- rgIdxArray.SetSize(iCount);
- if (iCount == 0)
- return;
+std::vector<CXFA_Node*> NodesSortedByDocumentIdx(
+ const std::unordered_set<CXFA_Node*>& rgNodeSet) {
+ if (rgNodeSet.empty())
+ return std::vector<CXFA_Node*>();
- int32_t iIndex = -1;
- int32_t iTotalIndex = -1;
+ std::vector<CXFA_Node*> rgNodeArray;
CXFA_Node* pCommonParent =
(*rgNodeSet.begin())->GetNodeItem(XFA_NODEITEM_Parent);
for (CXFA_Node* pNode = pCommonParent->GetNodeItem(XFA_NODEITEM_FirstChild);
- pNode && iIndex < iCount;
- pNode = pNode->GetNodeItem(XFA_NODEITEM_NextSibling)) {
- iTotalIndex++;
- if (pdfium::ContainsValue(rgNodeSet, pNode)) {
- iIndex++;
- rgNodeArray[iIndex] = pNode;
- rgIdxArray[iIndex] = iTotalIndex;
- }
+ pNode; pNode = pNode->GetNodeItem(XFA_NODEITEM_NextSibling)) {
+ if (pdfium::ContainsValue(rgNodeSet, pNode))
+ rgNodeArray.push_back(pNode);
}
+ return rgNodeArray;
}
using CXFA_NodeSetPair =
@@ -158,26 +149,21 @@
if (!pNodeSetPair)
continue;
if (!pNodeSetPair->first.empty() && !pNodeSetPair->second.empty()) {
- std::vector<CXFA_Node*> rgNodeArray1;
- std::vector<CXFA_Node*> rgNodeArray2;
- CFX_ArrayTemplate<int32_t> rgIdxArray1;
- CFX_ArrayTemplate<int32_t> rgIdxArray2;
- SortNodeArrayByDocumentIdx(pNodeSetPair->first, rgNodeArray1,
- rgIdxArray1);
- SortNodeArrayByDocumentIdx(pNodeSetPair->second, rgNodeArray2,
- rgIdxArray2);
+ std::vector<CXFA_Node*> rgNodeArray1 =
+ NodesSortedByDocumentIdx(pNodeSetPair->first);
+ std::vector<CXFA_Node*> rgNodeArray2 =
+ NodesSortedByDocumentIdx(pNodeSetPair->second);
CXFA_Node* pParentNode = nullptr;
CXFA_Node* pBeforeNode = nullptr;
if (bInsertBefore) {
- pBeforeNode = rgNodeArray2[0];
+ pBeforeNode = rgNodeArray2.front();
pParentNode = pBeforeNode->GetNodeItem(XFA_NODEITEM_Parent);
} else {
- CXFA_Node* pLastNode = rgNodeArray2[rgIdxArray2.GetSize() - 1];
+ CXFA_Node* pLastNode = rgNodeArray2.back();
pParentNode = pLastNode->GetNodeItem(XFA_NODEITEM_Parent);
pBeforeNode = pLastNode->GetNodeItem(XFA_NODEITEM_NextSibling);
}
- for (int32_t iIdx = 0; iIdx < rgIdxArray1.GetSize(); iIdx++) {
- CXFA_Node* pCurNode = rgNodeArray1[iIdx];
+ for (auto* pCurNode : rgNodeArray1) {
pParentNode->RemoveChild(pCurNode);
pParentNode->InsertChild(pCurNode, pBeforeNode);
}