OLD | NEW |
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/fxfa/parser/cxfa_resolveprocessor.h" | 7 #include "xfa/fxfa/parser/cxfa_resolveprocessor.h" |
8 | 8 |
9 #include "core/fxcrt/fx_ext.h" | 9 #include "core/fxcrt/fx_ext.h" |
10 #include "xfa/fxfa/parser/cxfa_document.h" | 10 #include "xfa/fxfa/parser/cxfa_document.h" |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
74 if (nRet < 1 && rnd.m_uHashName == XFA_HASHCODE_Xfa) { | 74 if (nRet < 1 && rnd.m_uHashName == XFA_HASHCODE_Xfa) { |
75 rnd.m_Nodes.Add(rnd.m_pSC->GetDocument()->GetRoot()); | 75 rnd.m_Nodes.Add(rnd.m_pSC->GetDocument()->GetRoot()); |
76 } | 76 } |
77 return rnd.m_Nodes.GetSize(); | 77 return rnd.m_Nodes.GetSize(); |
78 } | 78 } |
79 int32_t CXFA_ResolveProcessor::ResolveAnyChild(CXFA_ResolveNodesData& rnd) { | 79 int32_t CXFA_ResolveProcessor::ResolveAnyChild(CXFA_ResolveNodesData& rnd) { |
80 CFX_WideString wsName = rnd.m_wsName; | 80 CFX_WideString wsName = rnd.m_wsName; |
81 CFX_WideString wsCondition = rnd.m_wsCondition; | 81 CFX_WideString wsCondition = rnd.m_wsCondition; |
82 CXFA_Node* findNode = nullptr; | 82 CXFA_Node* findNode = nullptr; |
83 CXFA_NodeArray siblings; | 83 CXFA_NodeArray siblings; |
84 FX_BOOL bClassName = FALSE; | 84 bool bClassName = false; |
85 if (wsName.GetAt(0) == '#') { | 85 if (wsName.GetAt(0) == '#') { |
86 bClassName = TRUE; | 86 bClassName = true; |
87 wsName = wsName.Right(wsName.GetLength() - 1); | 87 wsName = wsName.Right(wsName.GetLength() - 1); |
88 } | 88 } |
89 findNode = m_pNodeHelper->ResolveNodes_GetOneChild( | 89 findNode = m_pNodeHelper->ResolveNodes_GetOneChild( |
90 ToNode(rnd.m_CurNode), wsName.c_str(), bClassName); | 90 ToNode(rnd.m_CurNode), wsName.c_str(), bClassName); |
91 if (!findNode) { | 91 if (!findNode) { |
92 return 0; | 92 return 0; |
93 } | 93 } |
94 if (wsCondition.IsEmpty()) { | 94 if (wsCondition.IsEmpty()) { |
95 rnd.m_Nodes.Add(findNode); | 95 rnd.m_Nodes.Add(findNode); |
96 return rnd.m_Nodes.GetSize(); | 96 return rnd.m_Nodes.GetSize(); |
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
259 } | 259 } |
260 if (nodes.GetSize() > nNum) { | 260 if (nodes.GetSize() > nNum) { |
261 FilterCondition(rnd, wsCondition); | 261 FilterCondition(rnd, wsCondition); |
262 if (nodes.GetSize() > 0) { | 262 if (nodes.GetSize() > 0) { |
263 return 1; | 263 return 1; |
264 } | 264 } |
265 return 0; | 265 return 0; |
266 } | 266 } |
267 } | 267 } |
268 if (dwStyles & XFA_RESOLVENODE_Children) { | 268 if (dwStyles & XFA_RESOLVENODE_Children) { |
269 FX_BOOL bSetFlag = FALSE; | 269 bool bSetFlag = false; |
270 if (pPageSetNode && (dwStyles & XFA_RESOLVENODE_Properties)) { | 270 if (pPageSetNode && (dwStyles & XFA_RESOLVENODE_Properties)) { |
271 children.Add(pPageSetNode); | 271 children.Add(pPageSetNode); |
272 } | 272 } |
273 for (int32_t i = 0; i < children.GetSize(); i++) { | 273 for (int32_t i = 0; i < children.GetSize(); i++) { |
274 CXFA_Node* child = children[i]; | 274 CXFA_Node* child = children[i]; |
275 if (dwStyles & XFA_RESOLVENODE_TagName) { | 275 if (dwStyles & XFA_RESOLVENODE_TagName) { |
276 if (child->GetClassHashCode() == uNameHash) { | 276 if (child->GetClassHashCode() == uNameHash) { |
277 nodes.Add(child); | 277 nodes.Add(child); |
278 } | 278 } |
279 } else if (child->GetNameHash() == uNameHash) { | 279 } else if (child->GetNameHash() == uNameHash) { |
280 nodes.Add(child); | 280 nodes.Add(child); |
281 } | 281 } |
282 if (m_pNodeHelper->NodeIsTransparent(child) && | 282 if (m_pNodeHelper->NodeIsTransparent(child) && |
283 child->GetElementType() != XFA_Element::PageSet) { | 283 child->GetElementType() != XFA_Element::PageSet) { |
284 if (!bSetFlag) { | 284 if (!bSetFlag) { |
285 SetStylesForChild(dwStyles, rndFind); | 285 SetStylesForChild(dwStyles, rndFind); |
286 bSetFlag = TRUE; | 286 bSetFlag = true; |
287 } | 287 } |
288 rndFind.m_CurNode = child; | 288 rndFind.m_CurNode = child; |
289 CFX_WideString wsSaveCondition = rndFind.m_wsCondition; | 289 CFX_WideString wsSaveCondition = rndFind.m_wsCondition; |
290 rndFind.m_wsCondition.clear(); | 290 rndFind.m_wsCondition.clear(); |
291 ResolveNormal(rndFind); | 291 ResolveNormal(rndFind); |
292 rndFind.m_wsCondition = wsSaveCondition; | 292 rndFind.m_wsCondition = wsSaveCondition; |
293 if (rndFind.m_Nodes.GetSize() > 0) { | 293 if (rndFind.m_Nodes.GetSize() > 0) { |
294 nodes.Append(rndFind.m_Nodes); | 294 nodes.Append(rndFind.m_Nodes); |
295 rndFind.m_Nodes.RemoveAll(); | 295 rndFind.m_Nodes.RemoveAll(); |
296 } | 296 } |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
343 return 1; | 343 return 1; |
344 } | 344 } |
345 return 0; | 345 return 0; |
346 } | 346 } |
347 CXFA_Node* pProp = nullptr; | 347 CXFA_Node* pProp = nullptr; |
348 if (XFA_Element::Subform == curNode->GetElementType() && | 348 if (XFA_Element::Subform == curNode->GetElementType() && |
349 XFA_HASHCODE_Occur == uNameHash) { | 349 XFA_HASHCODE_Occur == uNameHash) { |
350 CXFA_Node* pInstanceManager = | 350 CXFA_Node* pInstanceManager = |
351 curNode->AsNode()->GetInstanceMgrOfSubform(); | 351 curNode->AsNode()->GetInstanceMgrOfSubform(); |
352 if (pInstanceManager) { | 352 if (pInstanceManager) { |
353 pProp = pInstanceManager->GetProperty(0, XFA_Element::Occur, TRUE); | 353 pProp = pInstanceManager->GetProperty(0, XFA_Element::Occur, true); |
354 } | 354 } |
355 } else { | 355 } else { |
356 XFA_Element eType = XFA_GetElementTypeForName(wsName.AsStringC()); | 356 XFA_Element eType = XFA_GetElementTypeForName(wsName.AsStringC()); |
357 if (eType != XFA_Element::Unknown) { | 357 if (eType != XFA_Element::Unknown) { |
358 pProp = curNode->AsNode()->GetProperty(0, eType, | 358 pProp = curNode->AsNode()->GetProperty(0, eType, |
359 eType != XFA_Element::PageSet); | 359 eType != XFA_Element::PageSet); |
360 } | 360 } |
361 } | 361 } |
362 if (pProp) { | 362 if (pProp) { |
363 nodes.Add(pProp); | 363 nodes.Add(pProp); |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
410 if (dwStyles & XFA_RESOLVENODE_TagName) { | 410 if (dwStyles & XFA_RESOLVENODE_TagName) { |
411 if (child->GetClassHashCode() == uNameHash) { | 411 if (child->GetClassHashCode() == uNameHash) { |
412 nodes.Add(child); | 412 nodes.Add(child); |
413 } | 413 } |
414 } else if (child->GetNameHash() == uNameHash) { | 414 } else if (child->GetNameHash() == uNameHash) { |
415 nodes.Add(child); | 415 nodes.Add(child); |
416 } | 416 } |
417 const XFA_PROPERTY* pPropert = XFA_GetPropertyOfElement( | 417 const XFA_PROPERTY* pPropert = XFA_GetPropertyOfElement( |
418 parentNode->GetElementType(), child->GetElementType(), | 418 parentNode->GetElementType(), child->GetElementType(), |
419 XFA_XDPPACKET_UNKNOWN); | 419 XFA_XDPPACKET_UNKNOWN); |
420 FX_BOOL bInnerSearch = FALSE; | 420 bool bInnerSearch = false; |
421 if (pPropert) { | 421 if (pPropert) { |
422 if ((child->GetElementType() == XFA_Element::Variables || | 422 if ((child->GetElementType() == XFA_Element::Variables || |
423 child->GetElementType() == XFA_Element::PageSet)) { | 423 child->GetElementType() == XFA_Element::PageSet)) { |
424 bInnerSearch = TRUE; | 424 bInnerSearch = true; |
425 } | 425 } |
426 } else { | 426 } else { |
427 if (m_pNodeHelper->NodeIsTransparent(child)) { | 427 if (m_pNodeHelper->NodeIsTransparent(child)) { |
428 bInnerSearch = TRUE; | 428 bInnerSearch = true; |
429 } | 429 } |
430 } | 430 } |
431 if (bInnerSearch) { | 431 if (bInnerSearch) { |
432 rndFind.m_CurNode = child; | 432 rndFind.m_CurNode = child; |
433 CFX_WideString wsOriginCondition = rndFind.m_wsCondition; | 433 CFX_WideString wsOriginCondition = rndFind.m_wsCondition; |
434 rndFind.m_wsCondition.clear(); | 434 rndFind.m_wsCondition.clear(); |
435 uint32_t dwOriginStyle = rndFind.m_dwStyles; | 435 uint32_t dwOriginStyle = rndFind.m_dwStyles; |
436 rndFind.m_dwStyles = dwOriginStyle | XFA_RESOLVENODE_ALL; | 436 rndFind.m_dwStyles = dwOriginStyle | XFA_RESOLVENODE_ALL; |
437 ResolveNormal(rndFind); | 437 ResolveNormal(rndFind); |
438 rndFind.m_dwStyles = dwOriginStyle; | 438 rndFind.m_dwStyles = dwOriginStyle; |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
517 CFX_WideString& wsName = rnd.m_wsName; | 517 CFX_WideString& wsName = rnd.m_wsName; |
518 CFX_WideString& wsCondition = rnd.m_wsCondition; | 518 CFX_WideString& wsCondition = rnd.m_wsCondition; |
519 FX_WCHAR* pNameBuf = wsName.GetBuffer(iLength - nStart); | 519 FX_WCHAR* pNameBuf = wsName.GetBuffer(iLength - nStart); |
520 FX_WCHAR* pConditionBuf = wsCondition.GetBuffer(iLength - nStart); | 520 FX_WCHAR* pConditionBuf = wsCondition.GetBuffer(iLength - nStart); |
521 int32_t nNameCount = 0; | 521 int32_t nNameCount = 0; |
522 int32_t nConditionCount = 0; | 522 int32_t nConditionCount = 0; |
523 CFX_Int32Array stack; | 523 CFX_Int32Array stack; |
524 int32_t nType = -1; | 524 int32_t nType = -1; |
525 const FX_WCHAR* pSrc = wsExpression.c_str(); | 525 const FX_WCHAR* pSrc = wsExpression.c_str(); |
526 FX_WCHAR wPrev = 0, wCur; | 526 FX_WCHAR wPrev = 0, wCur; |
527 FX_BOOL bIsCondition = FALSE; | 527 bool bIsCondition = false; |
528 while (nStart < iLength) { | 528 while (nStart < iLength) { |
529 wCur = pSrc[nStart++]; | 529 wCur = pSrc[nStart++]; |
530 if (wCur == '.') { | 530 if (wCur == '.') { |
531 if (wPrev == '\\') { | 531 if (wPrev == '\\') { |
532 pNameBuf[nNameCount - 1] = wPrev = '.'; | 532 pNameBuf[nNameCount - 1] = wPrev = '.'; |
533 continue; | 533 continue; |
534 } | 534 } |
535 if (nNameCount == 0) { | 535 if (nNameCount == 0) { |
536 rnd.m_dwStyles |= XFA_RESOLVENODE_AnyChild; | 536 rnd.m_dwStyles |= XFA_RESOLVENODE_AnyChild; |
537 continue; | 537 continue; |
538 } | 538 } |
539 FX_WCHAR wLookahead = nStart < iLength ? pSrc[nStart] : 0; | 539 FX_WCHAR wLookahead = nStart < iLength ? pSrc[nStart] : 0; |
540 if (wLookahead != '[' && wLookahead != '(') { | 540 if (wLookahead != '[' && wLookahead != '(') { |
541 if (nType < 0) { | 541 if (nType < 0) { |
542 break; | 542 break; |
543 } | 543 } |
544 } | 544 } |
545 } | 545 } |
546 if (wCur == '[' || wCur == '(') { | 546 if (wCur == '[' || wCur == '(') { |
547 bIsCondition = TRUE; | 547 bIsCondition = true; |
548 } else if (wCur == '.' && nStart < iLength && | 548 } else if (wCur == '.' && nStart < iLength && |
549 (pSrc[nStart] == '[' || pSrc[nStart] == '(')) { | 549 (pSrc[nStart] == '[' || pSrc[nStart] == '(')) { |
550 bIsCondition = TRUE; | 550 bIsCondition = true; |
551 } | 551 } |
552 if (bIsCondition) { | 552 if (bIsCondition) { |
553 pConditionBuf[nConditionCount++] = wCur; | 553 pConditionBuf[nConditionCount++] = wCur; |
554 } else { | 554 } else { |
555 pNameBuf[nNameCount++] = wCur; | 555 pNameBuf[nNameCount++] = wCur; |
556 } | 556 } |
557 FX_BOOL bRecursive = TRUE; | 557 bool bRecursive = true; |
558 switch (nType) { | 558 switch (nType) { |
559 case 0: | 559 case 0: |
560 if (wCur == ']') { | 560 if (wCur == ']') { |
561 nType = ResolvePopStack(stack); | 561 nType = ResolvePopStack(stack); |
562 bRecursive = FALSE; | 562 bRecursive = false; |
563 } | 563 } |
564 break; | 564 break; |
565 case 1: | 565 case 1: |
566 if (wCur == ')') { | 566 if (wCur == ')') { |
567 nType = ResolvePopStack(stack); | 567 nType = ResolvePopStack(stack); |
568 bRecursive = FALSE; | 568 bRecursive = false; |
569 } | 569 } |
570 break; | 570 break; |
571 case 2: | 571 case 2: |
572 if (wCur == '"') { | 572 if (wCur == '"') { |
573 nType = ResolvePopStack(stack); | 573 nType = ResolvePopStack(stack); |
574 bRecursive = FALSE; | 574 bRecursive = false; |
575 } | 575 } |
576 break; | 576 break; |
577 } | 577 } |
578 if (bRecursive) { | 578 if (bRecursive) { |
579 switch (wCur) { | 579 switch (wCur) { |
580 case '[': | 580 case '[': |
581 stack.Add(nType); | 581 stack.Add(nType); |
582 nType = 0; | 582 nType = 0; |
583 break; | 583 break; |
584 case '(': | 584 case '(': |
(...skipping 20 matching lines...) Expand all Loading... |
605 rnd.m_uHashName = | 605 rnd.m_uHashName = |
606 static_cast<XFA_HashCode>(FX_HashCode_GetW(wsName.AsStringC(), false)); | 606 static_cast<XFA_HashCode>(FX_HashCode_GetW(wsName.AsStringC(), false)); |
607 return nStart; | 607 return nStart; |
608 } | 608 } |
609 void CXFA_ResolveProcessor::ConditionArray(int32_t iCurIndex, | 609 void CXFA_ResolveProcessor::ConditionArray(int32_t iCurIndex, |
610 CFX_WideString wsCondition, | 610 CFX_WideString wsCondition, |
611 int32_t iFoundCount, | 611 int32_t iFoundCount, |
612 CXFA_ResolveNodesData& rnd) { | 612 CXFA_ResolveNodesData& rnd) { |
613 CXFA_NodeArray& findNodes = (CXFA_NodeArray&)rnd.m_Nodes; | 613 CXFA_NodeArray& findNodes = (CXFA_NodeArray&)rnd.m_Nodes; |
614 int32_t iLen = wsCondition.GetLength(); | 614 int32_t iLen = wsCondition.GetLength(); |
615 FX_BOOL bRelative = FALSE; | 615 bool bRelative = false; |
616 FX_BOOL bAll = FALSE; | 616 bool bAll = false; |
617 int32_t i = 1; | 617 int32_t i = 1; |
618 for (; i < iLen; ++i) { | 618 for (; i < iLen; ++i) { |
619 FX_WCHAR ch = wsCondition[i]; | 619 FX_WCHAR ch = wsCondition[i]; |
620 if (ch == ' ') { | 620 if (ch == ' ') { |
621 continue; | 621 continue; |
622 } | 622 } |
623 if (ch == '+' || ch == '-') { | 623 if (ch == '+' || ch == '-') { |
624 bRelative = TRUE; | 624 bRelative = true; |
625 break; | 625 break; |
626 } else if (ch == '*') { | 626 } else if (ch == '*') { |
627 bAll = TRUE; | 627 bAll = true; |
628 break; | 628 break; |
629 } else { | 629 } else { |
630 break; | 630 break; |
631 } | 631 } |
632 } | 632 } |
633 if (bAll) { | 633 if (bAll) { |
634 if (rnd.m_dwStyles & XFA_RESOLVENODE_CreateNode) { | 634 if (rnd.m_dwStyles & XFA_RESOLVENODE_CreateNode) { |
635 if (rnd.m_dwStyles & XFA_RESOLVENODE_Bind) { | 635 if (rnd.m_dwStyles & XFA_RESOLVENODE_Bind) { |
636 m_pNodeHelper->m_pCreateParent = ToNode(rnd.m_CurNode); | 636 m_pNodeHelper->m_pCreateParent = ToNode(rnd.m_CurNode); |
637 m_pNodeHelper->m_iCreateCount = 1; | 637 m_pNodeHelper->m_iCreateCount = 1; |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
687 wsCondition.Right(1) == FX_WSTRC(L")")) { | 687 wsCondition.Right(1) == FX_WSTRC(L")")) { |
688 eLangType = XFA_SCRIPTLANGTYPE_Javascript; | 688 eLangType = XFA_SCRIPTLANGTYPE_Javascript; |
689 } else { | 689 } else { |
690 return; | 690 return; |
691 } | 691 } |
692 | 692 |
693 CXFA_ScriptContext* pContext = rnd.m_pSC; | 693 CXFA_ScriptContext* pContext = rnd.m_pSC; |
694 wsExpression = wsCondition.Mid(2, wsCondition.GetLength() - 3); | 694 wsExpression = wsCondition.Mid(2, wsCondition.GetLength() - 3); |
695 for (int32_t i = iFoundCount - 1; i >= 0; i--) { | 695 for (int32_t i = iFoundCount - 1; i >= 0; i--) { |
696 CXFA_Object* node = findNodes[i]; | 696 CXFA_Object* node = findNodes[i]; |
697 FX_BOOL bRet = FALSE; | 697 bool bRet = false; |
698 std::unique_ptr<CFXJSE_Value> pRetValue( | 698 std::unique_ptr<CFXJSE_Value> pRetValue( |
699 new CFXJSE_Value(rnd.m_pSC->GetRuntime())); | 699 new CFXJSE_Value(rnd.m_pSC->GetRuntime())); |
700 bRet = pContext->RunScript(eLangType, wsExpression.AsStringC(), | 700 bRet = pContext->RunScript(eLangType, wsExpression.AsStringC(), |
701 pRetValue.get(), node); | 701 pRetValue.get(), node); |
702 if (!bRet || !pRetValue->ToBoolean()) | 702 if (!bRet || !pRetValue->ToBoolean()) |
703 findNodes.RemoveAt(i); | 703 findNodes.RemoveAt(i); |
704 } | 704 } |
705 } | 705 } |
706 | 706 |
707 void CXFA_ResolveProcessor::FilterCondition(CXFA_ResolveNodesData& rnd, | 707 void CXFA_ResolveProcessor::FilterCondition(CXFA_ResolveNodesData& rnd, |
708 CFX_WideString wsCondition) { | 708 CFX_WideString wsCondition) { |
709 CXFA_NodeArray& findNodes = (CXFA_NodeArray&)rnd.m_Nodes; | 709 CXFA_NodeArray& findNodes = (CXFA_NodeArray&)rnd.m_Nodes; |
710 int32_t iCurrIndex = 0; | 710 int32_t iCurrIndex = 0; |
711 const CXFA_NodeArray& array = rnd.m_pSC->GetUpObjectArray(); | 711 const CXFA_NodeArray& array = rnd.m_pSC->GetUpObjectArray(); |
712 int32_t iSize = array.GetSize(); | 712 int32_t iSize = array.GetSize(); |
713 if (iSize) { | 713 if (iSize) { |
714 CXFA_Node* curNode = array[iSize - 1]; | 714 CXFA_Node* curNode = array[iSize - 1]; |
715 FX_BOOL bIsProperty = m_pNodeHelper->NodeIsProperty(curNode); | 715 bool bIsProperty = m_pNodeHelper->NodeIsProperty(curNode); |
716 if (curNode->IsUnnamed() || | 716 if (curNode->IsUnnamed() || |
717 (bIsProperty && curNode->GetElementType() != XFA_Element::PageSet)) { | 717 (bIsProperty && curNode->GetElementType() != XFA_Element::PageSet)) { |
718 iCurrIndex = m_pNodeHelper->GetIndex(curNode, XFA_LOGIC_Transparent, | 718 iCurrIndex = m_pNodeHelper->GetIndex(curNode, XFA_LOGIC_Transparent, |
719 bIsProperty, TRUE); | 719 bIsProperty, true); |
720 } else { | 720 } else { |
721 iCurrIndex = m_pNodeHelper->GetIndex(curNode, XFA_LOGIC_Transparent, | 721 iCurrIndex = m_pNodeHelper->GetIndex(curNode, XFA_LOGIC_Transparent, |
722 bIsProperty, FALSE); | 722 bIsProperty, false); |
723 } | 723 } |
724 } | 724 } |
725 int32_t iFoundCount = findNodes.GetSize(); | 725 int32_t iFoundCount = findNodes.GetSize(); |
726 wsCondition.TrimLeft(); | 726 wsCondition.TrimLeft(); |
727 wsCondition.TrimRight(); | 727 wsCondition.TrimRight(); |
728 int32_t iLen = wsCondition.GetLength(); | 728 int32_t iLen = wsCondition.GetLength(); |
729 if (!iLen) { | 729 if (!iLen) { |
730 if (rnd.m_dwStyles & XFA_RESOLVENODE_ALL) { | 730 if (rnd.m_dwStyles & XFA_RESOLVENODE_ALL) { |
731 return; | 731 return; |
732 } | 732 } |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
814 m_wsCondition(), | 814 m_wsCondition(), |
815 m_nLevel(0), | 815 m_nLevel(0), |
816 m_Nodes(), | 816 m_Nodes(), |
817 m_dwStyles(XFA_RESOLVENODE_Children), | 817 m_dwStyles(XFA_RESOLVENODE_Children), |
818 m_pScriptAttribute(nullptr), | 818 m_pScriptAttribute(nullptr), |
819 m_dwFlag(XFA_RESOVENODE_RSTYPE_Nodes) {} | 819 m_dwFlag(XFA_RESOVENODE_RSTYPE_Nodes) {} |
820 | 820 |
821 CXFA_ResolveNodesData::~CXFA_ResolveNodesData() { | 821 CXFA_ResolveNodesData::~CXFA_ResolveNodesData() { |
822 m_Nodes.RemoveAll(); | 822 m_Nodes.RemoveAll(); |
823 } | 823 } |
OLD | NEW |