Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(88)

Side by Side Diff: xfa/src/fxfa/src/parser/xfa_script_resolveprocessor.cpp

Issue 1668003003: Call CXFA_Object::ToNode() rather than C-style casting. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@xfa
Patch Set: Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 PDFium Authors. All rights reserved. 1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 6
7 #include "xfa/src/foxitlib.h" 7 #include "xfa/src/foxitlib.h"
8 #include "xfa/src/fxfa/src/common/xfa_utils.h" 8 #include "xfa/src/fxfa/src/common/xfa_utils.h"
9 #include "xfa/src/fxfa/src/common/xfa_object.h" 9 #include "xfa/src/fxfa/src/common/xfa_object.h"
10 #include "xfa/src/fxfa/src/common/xfa_document.h" 10 #include "xfa/src/fxfa/src/common/xfa_document.h"
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
85 CXFA_ResolveNodesData& rnd) { 85 CXFA_ResolveNodesData& rnd) {
86 CFX_WideString wsName = rnd.m_wsName.Right(rnd.m_wsName.GetLength() - 1); 86 CFX_WideString wsName = rnd.m_wsName.Right(rnd.m_wsName.GetLength() - 1);
87 CFX_WideString wsCondition = rnd.m_wsCondition; 87 CFX_WideString wsCondition = rnd.m_wsCondition;
88 CXFA_Node* findNode = NULL; 88 CXFA_Node* findNode = NULL;
89 CXFA_NodeArray siblings; 89 CXFA_NodeArray siblings;
90 FX_BOOL bClassName = FALSE; 90 FX_BOOL bClassName = FALSE;
91 if (wsName.GetAt(0) == '#') { 91 if (wsName.GetAt(0) == '#') {
92 bClassName = TRUE; 92 bClassName = TRUE;
93 wsName = wsName.Right(wsName.GetLength() - 1); 93 wsName = wsName.Right(wsName.GetLength() - 1);
94 } 94 }
95 findNode = m_pNodeHelper->XFA_ResolveNodes_GetOneChild( 95 findNode = m_pNodeHelper->XFA_ResolveNodes_GetOneChild(ToNode(rnd.m_CurNode),
96 (CXFA_Node*)rnd.m_CurNode, wsName, bClassName); 96 wsName, bClassName);
97 if (findNode == NULL) { 97 if (findNode == NULL) {
98 return 0; 98 return 0;
99 } 99 }
100 if (wsCondition.IsEmpty()) { 100 if (wsCondition.IsEmpty()) {
101 rnd.m_Nodes.Add(findNode); 101 rnd.m_Nodes.Add(findNode);
102 return rnd.m_Nodes.GetSize(); 102 return rnd.m_Nodes.GetSize();
103 } 103 }
104 m_pNodeHelper->XFA_CountSiblings(findNode, XFA_LOGIC_Transparent, 104 m_pNodeHelper->XFA_CountSiblings(findNode, XFA_LOGIC_Transparent,
105 (CXFA_NodeArray*)&rnd.m_Nodes, bClassName); 105 (CXFA_NodeArray*)&rnd.m_Nodes, bClassName);
106 XFA_ResolveNode_FilterCondition(rnd, wsCondition); 106 XFA_ResolveNode_FilterCondition(rnd, wsCondition);
(...skipping 26 matching lines...) Expand all
133 XFA_ResolveNode_FilterCondition(rnd, wsCondition); 133 XFA_ResolveNode_FilterCondition(rnd, wsCondition);
134 } 134 }
135 return rnd.m_Nodes.GetSize(); 135 return rnd.m_Nodes.GetSize();
136 } 136 }
137 int32_t CXFA_ResolveProcessor::XFA_ResolveNodes_Excalmatory( 137 int32_t CXFA_ResolveProcessor::XFA_ResolveNodes_Excalmatory(
138 CXFA_ResolveNodesData& rnd) { 138 CXFA_ResolveNodesData& rnd) {
139 if (rnd.m_nLevel > 0) { 139 if (rnd.m_nLevel > 0) {
140 return 0; 140 return 0;
141 } 141 }
142 CXFA_Node* datasets = 142 CXFA_Node* datasets =
143 (CXFA_Node*)rnd.m_pSC->GetDocument()->GetXFAObject(XFA_HASHCODE_Datasets); 143 ToNode(rnd.m_pSC->GetDocument()->GetXFAObject(XFA_HASHCODE_Datasets));
144 if (datasets == NULL) { 144 if (!datasets) {
145 return 0; 145 return 0;
146 } 146 }
147 CXFA_ResolveNodesData rndFind; 147 CXFA_ResolveNodesData rndFind;
148 rndFind.m_pSC = rnd.m_pSC; 148 rndFind.m_pSC = rnd.m_pSC;
149 rndFind.m_CurNode = datasets; 149 rndFind.m_CurNode = datasets;
150 rndFind.m_wsName = rnd.m_wsName.Right(rnd.m_wsName.GetLength() - 1); 150 rndFind.m_wsName = rnd.m_wsName.Right(rnd.m_wsName.GetLength() - 1);
151 rndFind.m_uHashName = 151 rndFind.m_uHashName =
152 FX_HashCode_String_GetW(rndFind.m_wsName, rndFind.m_wsName.GetLength()); 152 FX_HashCode_String_GetW(rndFind.m_wsName, rndFind.m_wsName.GetLength());
153 rndFind.m_nLevel = rnd.m_nLevel + 1; 153 rndFind.m_nLevel = rnd.m_nLevel + 1;
154 rndFind.m_dwStyles = XFA_RESOLVENODE_Children; 154 rndFind.m_dwStyles = XFA_RESOLVENODE_Children;
155 rndFind.m_wsCondition = rnd.m_wsCondition; 155 rndFind.m_wsCondition = rnd.m_wsCondition;
156 XFA_ResolveNodes(rndFind); 156 XFA_ResolveNodes(rndFind);
157 if (rndFind.m_Nodes.GetSize() > 0) { 157 if (rndFind.m_Nodes.GetSize() > 0) {
158 rnd.m_Nodes.Append(rndFind.m_Nodes); 158 rnd.m_Nodes.Append(rndFind.m_Nodes);
159 rndFind.m_Nodes.RemoveAll(); 159 rndFind.m_Nodes.RemoveAll();
160 } 160 }
161 return rnd.m_Nodes.GetSize(); 161 return rnd.m_Nodes.GetSize();
162 } 162 }
163 int32_t CXFA_ResolveProcessor::XFA_ResolveNodes_NumberSign( 163 int32_t CXFA_ResolveProcessor::XFA_ResolveNodes_NumberSign(
164 CXFA_ResolveNodesData& rnd) { 164 CXFA_ResolveNodesData& rnd) {
165 CFX_WideString wsName = rnd.m_wsName.Right(rnd.m_wsName.GetLength() - 1); 165 CFX_WideString wsName = rnd.m_wsName.Right(rnd.m_wsName.GetLength() - 1);
166 CFX_WideString wsCondition = rnd.m_wsCondition; 166 CFX_WideString wsCondition = rnd.m_wsCondition;
167 CXFA_Node* curNode = (CXFA_Node*)rnd.m_CurNode; 167 CXFA_Node* curNode = ToNode(rnd.m_CurNode);
168 if (XFA_ResolveNodes_ForAttributeRs(curNode, rnd, wsName)) { 168 if (XFA_ResolveNodes_ForAttributeRs(curNode, rnd, wsName)) {
169 return 1; 169 return 1;
170 } 170 }
171 CXFA_ResolveNodesData rndFind; 171 CXFA_ResolveNodesData rndFind;
172 rndFind.m_pSC = rnd.m_pSC; 172 rndFind.m_pSC = rnd.m_pSC;
173 rndFind.m_nLevel = rnd.m_nLevel + 1; 173 rndFind.m_nLevel = rnd.m_nLevel + 1;
174 rndFind.m_dwStyles = rnd.m_dwStyles; 174 rndFind.m_dwStyles = rnd.m_dwStyles;
175 rndFind.m_dwStyles |= XFA_RESOLVENODE_TagName; 175 rndFind.m_dwStyles |= XFA_RESOLVENODE_TagName;
176 rndFind.m_dwStyles &= ~XFA_RESOLVENODE_Attributes; 176 rndFind.m_dwStyles &= ~XFA_RESOLVENODE_Attributes;
177 rndFind.m_wsName = wsName; 177 rndFind.m_wsName = wsName;
(...skipping 27 matching lines...) Expand all
205 return 0; 205 return 0;
206 } 206 }
207 int32_t CXFA_ResolveProcessor::XFA_ResolveNodes_Normal( 207 int32_t CXFA_ResolveProcessor::XFA_ResolveNodes_Normal(
208 CXFA_ResolveNodesData& rnd) { 208 CXFA_ResolveNodesData& rnd) {
209 if (rnd.m_nLevel > 32) { 209 if (rnd.m_nLevel > 32) {
210 return 0; 210 return 0;
211 } 211 }
212 if (!rnd.m_CurNode->IsNode()) { 212 if (!rnd.m_CurNode->IsNode()) {
213 return 0; 213 return 0;
214 } 214 }
215 CXFA_Node* curNode = (CXFA_Node*)rnd.m_CurNode; 215 CXFA_Node* curNode = ToNode(rnd.m_CurNode);
216 CXFA_ObjArray& nodes = rnd.m_Nodes; 216 CXFA_ObjArray& nodes = rnd.m_Nodes;
217 int32_t nNum = nodes.GetSize(); 217 int32_t nNum = nodes.GetSize();
218 FX_DWORD dwStyles = rnd.m_dwStyles; 218 FX_DWORD dwStyles = rnd.m_dwStyles;
219 CFX_WideString& wsName = rnd.m_wsName; 219 CFX_WideString& wsName = rnd.m_wsName;
220 uint32_t uNameHash = rnd.m_uHashName; 220 uint32_t uNameHash = rnd.m_uHashName;
221 CFX_WideString& wsCondition = rnd.m_wsCondition; 221 CFX_WideString& wsCondition = rnd.m_wsCondition;
222 CXFA_ResolveNodesData rndFind; 222 CXFA_ResolveNodesData rndFind;
223 rndFind.m_wsName = rnd.m_wsName; 223 rndFind.m_wsName = rnd.m_wsName;
224 rndFind.m_wsCondition = rnd.m_wsCondition; 224 rndFind.m_wsCondition = rnd.m_wsCondition;
225 rndFind.m_pSC = rnd.m_pSC; 225 rndFind.m_pSC = rnd.m_pSC;
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
301 rndFind.m_wsCondition = wsSaveCondition; 301 rndFind.m_wsCondition = wsSaveCondition;
302 if (rndFind.m_Nodes.GetSize() > 0) { 302 if (rndFind.m_Nodes.GetSize() > 0) {
303 nodes.Append(rndFind.m_Nodes); 303 nodes.Append(rndFind.m_Nodes);
304 rndFind.m_Nodes.RemoveAll(); 304 rndFind.m_Nodes.RemoveAll();
305 } 305 }
306 } 306 }
307 } 307 }
308 if (nodes.GetSize() > nNum) { 308 if (nodes.GetSize() > nNum) {
309 if (!(dwStyles & XFA_RESOLVENODE_ALL)) { 309 if (!(dwStyles & XFA_RESOLVENODE_ALL)) {
310 CXFA_NodeArray upArrayNodes; 310 CXFA_NodeArray upArrayNodes;
311 if (m_pNodeHelper->XFA_NodeIsTransparent((CXFA_Node*)curNode)) { 311 if (m_pNodeHelper->XFA_NodeIsTransparent(ToNode(curNode))) {
312 m_pNodeHelper->XFA_CountSiblings( 312 m_pNodeHelper->XFA_CountSiblings(
313 (CXFA_Node*)nodes[0], XFA_LOGIC_Transparent, &upArrayNodes, 313 ToNode(nodes[0]), XFA_LOGIC_Transparent, &upArrayNodes,
314 !!(dwStyles & XFA_RESOLVENODE_TagName)); 314 !!(dwStyles & XFA_RESOLVENODE_TagName));
315 } 315 }
316 if (upArrayNodes.GetSize() > nodes.GetSize()) { 316 if (upArrayNodes.GetSize() > nodes.GetSize()) {
317 upArrayNodes[0] = (CXFA_Node*)nodes[0]; 317 upArrayNodes[0] = ToNode(nodes[0]);
318 nodes.RemoveAll(); 318 nodes.RemoveAll();
319 nodes.Append((CXFA_ObjArray&)upArrayNodes); 319 nodes.Append((CXFA_ObjArray&)upArrayNodes);
320 upArrayNodes.RemoveAll(); 320 upArrayNodes.RemoveAll();
321 } 321 }
322 } 322 }
323 XFA_ResolveNode_FilterCondition(rnd, wsCondition); 323 XFA_ResolveNode_FilterCondition(rnd, wsCondition);
324 if (nodes.GetSize() > 0) { 324 if (nodes.GetSize() > 0) {
325 return 1; 325 return 1;
326 } 326 }
327 return 0; 327 return 0;
(...skipping 22 matching lines...) Expand all
350 XFA_ResolveNode_FilterCondition(rnd, wsCondition); 350 XFA_ResolveNode_FilterCondition(rnd, wsCondition);
351 if (nodes.GetSize() > 0) { 351 if (nodes.GetSize() > 0) {
352 return 1; 352 return 1;
353 } 353 }
354 return 0; 354 return 0;
355 } 355 }
356 CXFA_Node* pProp = NULL; 356 CXFA_Node* pProp = NULL;
357 if (XFA_ELEMENT_Subform == curNode->GetClassID() && 357 if (XFA_ELEMENT_Subform == curNode->GetClassID() &&
358 XFA_HASHCODE_Occur == uNameHash) { 358 XFA_HASHCODE_Occur == uNameHash) {
359 CXFA_Node* pInstanceManager = 359 CXFA_Node* pInstanceManager =
360 ((CXFA_Node*)curNode)->GetInstanceMgrOfSubform(); 360 curNode->AsNode()->GetInstanceMgrOfSubform();
361 if (pInstanceManager) { 361 if (pInstanceManager) {
362 pProp = pInstanceManager->GetProperty(0, XFA_ELEMENT_Occur, TRUE); 362 pProp = pInstanceManager->GetProperty(0, XFA_ELEMENT_Occur, TRUE);
363 } 363 }
364 } else { 364 } else {
365 XFA_LPCELEMENTINFO pElement = XFA_GetElementByName(wsName); 365 XFA_LPCELEMENTINFO pElement = XFA_GetElementByName(wsName);
366 if (pElement) { 366 if (pElement) {
367 pProp = ((CXFA_Node*)curNode) 367 pProp = curNode->AsNode()->GetProperty(
368 ->GetProperty(0, pElement->eName, 368 0, pElement->eName, pElement->eName != XFA_ELEMENT_PageSet);
369 pElement->eName != XFA_ELEMENT_PageSet);
370 } 369 }
371 } 370 }
372 if (pProp) { 371 if (pProp) {
373 nodes.Add(pProp); 372 nodes.Add(pProp);
374 return nodes.GetSize(); 373 return nodes.GetSize();
375 } 374 }
376 } 375 }
377 CXFA_Node* parentNode = m_pNodeHelper->XFA_ResolveNodes_GetParent( 376 CXFA_Node* parentNode = m_pNodeHelper->XFA_ResolveNodes_GetParent(
378 (CXFA_Node*)curNode, XFA_LOGIC_NoTransparent); 377 curNode->AsNode(), XFA_LOGIC_NoTransparent);
379 uint32_t uCurClassHash = curNode->GetClassHashCode(); 378 uint32_t uCurClassHash = curNode->GetClassHashCode();
380 if (parentNode == NULL) { 379 if (!parentNode) {
381 if (uCurClassHash == uNameHash) { 380 if (uCurClassHash == uNameHash) {
382 nodes.Add((CXFA_Node*)curNode); 381 nodes.Add(curNode->AsNode());
383 XFA_ResolveNode_FilterCondition(rnd, wsCondition); 382 XFA_ResolveNode_FilterCondition(rnd, wsCondition);
384 if (nodes.GetSize() > 0) { 383 if (nodes.GetSize() > 0) {
385 return 1; 384 return 1;
386 } 385 }
387 } 386 }
388 return 0; 387 return 0;
389 } 388 }
390 if (dwStyles & XFA_RESOLVENODE_Siblings) { 389 if (dwStyles & XFA_RESOLVENODE_Siblings) {
391 CXFA_Node* child = parentNode->GetNodeItem(XFA_NODEITEM_FirstChild); 390 CXFA_Node* child = parentNode->GetNodeItem(XFA_NODEITEM_FirstChild);
392 FX_DWORD dwSubStyles = 391 FX_DWORD dwSubStyles =
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
450 nodes.Append(rndFind.m_Nodes); 449 nodes.Append(rndFind.m_Nodes);
451 rndFind.m_Nodes.RemoveAll(); 450 rndFind.m_Nodes.RemoveAll();
452 } 451 }
453 } 452 }
454 child = child->GetNodeItem(XFA_NODEITEM_NextSibling); 453 child = child->GetNodeItem(XFA_NODEITEM_NextSibling);
455 } 454 }
456 if (nodes.GetSize() > nNum) { 455 if (nodes.GetSize() > nNum) {
457 if (m_pNodeHelper->XFA_NodeIsTransparent(parentNode)) { 456 if (m_pNodeHelper->XFA_NodeIsTransparent(parentNode)) {
458 CXFA_NodeArray upArrayNodes; 457 CXFA_NodeArray upArrayNodes;
459 m_pNodeHelper->XFA_CountSiblings( 458 m_pNodeHelper->XFA_CountSiblings(
460 (CXFA_Node*)nodes[0], XFA_LOGIC_Transparent, &upArrayNodes, 459 ToNode(nodes[0]), XFA_LOGIC_Transparent, &upArrayNodes,
461 !!(dwStyles & XFA_RESOLVENODE_TagName)); 460 !!(dwStyles & XFA_RESOLVENODE_TagName));
462 if (upArrayNodes.GetSize() > nodes.GetSize()) { 461 if (upArrayNodes.GetSize() > nodes.GetSize()) {
463 upArrayNodes[0] = (CXFA_Node*)nodes[0]; 462 upArrayNodes[0] = ToNode(nodes[0]);
464 nodes.RemoveAll(); 463 nodes.RemoveAll();
465 nodes.Append((CXFA_ObjArray&)upArrayNodes); 464 nodes.Append((CXFA_ObjArray&)upArrayNodes);
466 upArrayNodes.RemoveAll(); 465 upArrayNodes.RemoveAll();
467 } 466 }
468 } 467 }
469 XFA_ResolveNode_FilterCondition(rnd, wsCondition); 468 XFA_ResolveNode_FilterCondition(rnd, wsCondition);
470 if (nodes.GetSize() > 0) { 469 if (nodes.GetSize() > 0) {
471 return 1; 470 return 1;
472 } 471 }
473 return 0; 472 return 0;
(...skipping 18 matching lines...) Expand all
492 rndFind.m_Nodes.RemoveAll(); 491 rndFind.m_Nodes.RemoveAll();
493 } 492 }
494 if (nodes.GetSize() > nNum) { 493 if (nodes.GetSize() > nNum) {
495 return 1; 494 return 1;
496 } 495 }
497 } 496 }
498 return 0; 497 return 0;
499 } 498 }
500 int32_t CXFA_ResolveProcessor::XFA_ResolveNodes_Asterisk( 499 int32_t CXFA_ResolveProcessor::XFA_ResolveNodes_Asterisk(
501 CXFA_ResolveNodesData& rnd) { 500 CXFA_ResolveNodesData& rnd) {
502 CXFA_Node* curNode = (CXFA_Node*)rnd.m_CurNode; 501 CXFA_Node* curNode = ToNode(rnd.m_CurNode);
503 CXFA_ObjArray& nodes = rnd.m_Nodes; 502 CXFA_ObjArray& nodes = rnd.m_Nodes;
504 CXFA_NodeArray array; 503 CXFA_NodeArray array;
505 curNode->GetNodeList(array, 504 curNode->GetNodeList(array,
506 XFA_NODEFILTER_Children | XFA_NODEFILTER_Properties); 505 XFA_NODEFILTER_Children | XFA_NODEFILTER_Properties);
507 nodes.Append((CXFA_ObjArray&)array); 506 nodes.Append((CXFA_ObjArray&)array);
508 return nodes.GetSize(); 507 return nodes.GetSize();
509 } 508 }
510 int32_t CXFA_ResolveProcessor::XFA_ResolveNodes_PopStack( 509 int32_t CXFA_ResolveProcessor::XFA_ResolveNodes_PopStack(
511 CFX_Int32Array& stack) { 510 CFX_Int32Array& stack) {
512 int32_t nType = -1; 511 int32_t nType = -1;
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
638 } else if (ch == '*') { 637 } else if (ch == '*') {
639 bAll = TRUE; 638 bAll = TRUE;
640 break; 639 break;
641 } else { 640 } else {
642 break; 641 break;
643 } 642 }
644 } 643 }
645 if (bAll) { 644 if (bAll) {
646 if (rnd.m_dwStyles & XFA_RESOLVENODE_CreateNode) { 645 if (rnd.m_dwStyles & XFA_RESOLVENODE_CreateNode) {
647 if (rnd.m_dwStyles & XFA_RESOLVENODE_Bind) { 646 if (rnd.m_dwStyles & XFA_RESOLVENODE_Bind) {
648 m_pNodeHelper->m_pCreateParent = (CXFA_Node*)rnd.m_CurNode; 647 m_pNodeHelper->m_pCreateParent = ToNode(rnd.m_CurNode);
649 m_pNodeHelper->m_iCreateCount = 1; 648 m_pNodeHelper->m_iCreateCount = 1;
650 findNodes.RemoveAll(); 649 findNodes.RemoveAll();
651 m_pNodeHelper->m_iCurAllStart = -1; 650 m_pNodeHelper->m_iCurAllStart = -1;
652 m_pNodeHelper->m_pAllStartParent = NULL; 651 m_pNodeHelper->m_pAllStartParent = NULL;
653 } else { 652 } else {
654 if (m_pNodeHelper->m_iCurAllStart == -1) { 653 if (m_pNodeHelper->m_iCurAllStart == -1) {
655 m_pNodeHelper->m_iCurAllStart = m_iCurStart; 654 m_pNodeHelper->m_iCurAllStart = m_iCurStart;
656 m_pNodeHelper->m_pAllStartParent = (CXFA_Node*)rnd.m_CurNode; 655 m_pNodeHelper->m_pAllStartParent = ToNode(rnd.m_CurNode);
657 } 656 }
658 } 657 }
659 } else if (rnd.m_dwStyles & XFA_RESOLVENODE_BindNew) { 658 } else if (rnd.m_dwStyles & XFA_RESOLVENODE_BindNew) {
660 if (m_pNodeHelper->m_iCurAllStart == -1) { 659 if (m_pNodeHelper->m_iCurAllStart == -1) {
661 m_pNodeHelper->m_iCurAllStart = m_iCurStart; 660 m_pNodeHelper->m_iCurAllStart = m_iCurStart;
662 } 661 }
663 } 662 }
664 return; 663 return;
665 } 664 }
666 if (iFoundCount == 1 && !iLen) { 665 if (iFoundCount == 1 && !iLen) {
667 return; 666 return;
668 } 667 }
669 CFX_WideString wsIndex; 668 CFX_WideString wsIndex;
670 wsIndex = wsCondition.Mid(i, iLen - 1 - i); 669 wsIndex = wsCondition.Mid(i, iLen - 1 - i);
671 int32_t iIndex = wsIndex.GetInteger(); 670 int32_t iIndex = wsIndex.GetInteger();
672 if (bRelative) { 671 if (bRelative) {
673 iIndex += iCurIndex; 672 iIndex += iCurIndex;
674 } 673 }
675 if (iFoundCount <= iIndex || iIndex < 0) { 674 if (iFoundCount <= iIndex || iIndex < 0) {
676 if (rnd.m_dwStyles & XFA_RESOLVENODE_CreateNode) { 675 if (rnd.m_dwStyles & XFA_RESOLVENODE_CreateNode) {
677 m_pNodeHelper->m_pCreateParent = (CXFA_Node*)rnd.m_CurNode; 676 m_pNodeHelper->m_pCreateParent = ToNode(rnd.m_CurNode);
678 m_pNodeHelper->m_iCreateCount = iIndex - iFoundCount + 1; 677 m_pNodeHelper->m_iCreateCount = iIndex - iFoundCount + 1;
679 } 678 }
680 findNodes.RemoveAll(); 679 findNodes.RemoveAll();
681 } else { 680 } else {
682 CXFA_Node* ret = findNodes[iIndex]; 681 CXFA_Node* ret = findNodes[iIndex];
683 findNodes.RemoveAll(); 682 findNodes.RemoveAll();
684 findNodes.Add(ret); 683 findNodes.Add(ret);
685 } 684 }
686 } 685 }
687 void CXFA_ResolveProcessor::XFA_ResolveNode_DoPredicateFilter( 686 void CXFA_ResolveProcessor::XFA_ResolveNode_DoPredicateFilter(
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
742 int32_t iLen = wsCondition.GetLength(); 741 int32_t iLen = wsCondition.GetLength();
743 if (!iLen) { 742 if (!iLen) {
744 if (rnd.m_dwStyles & XFA_RESOLVENODE_ALL) { 743 if (rnd.m_dwStyles & XFA_RESOLVENODE_ALL) {
745 return; 744 return;
746 } 745 }
747 if (iFoundCount == 1) { 746 if (iFoundCount == 1) {
748 return; 747 return;
749 } 748 }
750 if (iFoundCount <= iCurrIndex) { 749 if (iFoundCount <= iCurrIndex) {
751 if (rnd.m_dwStyles & XFA_RESOLVENODE_CreateNode) { 750 if (rnd.m_dwStyles & XFA_RESOLVENODE_CreateNode) {
752 m_pNodeHelper->m_pCreateParent = (CXFA_Node*)rnd.m_CurNode; 751 m_pNodeHelper->m_pCreateParent = ToNode(rnd.m_CurNode);
753 m_pNodeHelper->m_iCreateCount = iCurrIndex - iFoundCount + 1; 752 m_pNodeHelper->m_iCreateCount = iCurrIndex - iFoundCount + 1;
754 } 753 }
755 findNodes.RemoveAll(); 754 findNodes.RemoveAll();
756 return; 755 return;
757 } else { 756 } else {
758 CXFA_Node* ret = findNodes[iCurrIndex]; 757 CXFA_Node* ret = findNodes[iCurrIndex];
759 findNodes.RemoveAll(); 758 findNodes.RemoveAll();
760 findNodes.Add(ret); 759 findNodes.Add(ret);
761 return; 760 return;
762 } 761 }
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
815 if (m_pNodeHelper->XFA_CreateNode_ForCondition(wsNextCondition)) { 814 if (m_pNodeHelper->XFA_CreateNode_ForCondition(wsNextCondition)) {
816 if (m_pNodeHelper->m_eLastCreateType == XFA_ELEMENT_DataGroup) { 815 if (m_pNodeHelper->m_eLastCreateType == XFA_ELEMENT_DataGroup) {
817 iIndex = 0; 816 iIndex = 0;
818 } else { 817 } else {
819 iIndex = iCount - 1; 818 iIndex = iCount - 1;
820 } 819 }
821 } else { 820 } else {
822 iIndex = iCount - 1; 821 iIndex = iCount - 1;
823 } 822 }
824 } 823 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698