| 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 #ifndef XFA_FXFA_PARSER_XFA_OBJECT_H_ | 7 #ifndef XFA_FXFA_PARSER_XFA_OBJECT_H_ |
| 8 #define XFA_FXFA_PARSER_XFA_OBJECT_H_ | 8 #define XFA_FXFA_PARSER_XFA_OBJECT_H_ |
| 9 | 9 |
| 10 #include <unordered_set> | 10 #include <unordered_set> |
| 11 | 11 |
| 12 #include "fxjse/include/cfxjse_arguments.h" | 12 #include "fxjse/include/cfxjse_arguments.h" |
| 13 #include "xfa/fde/xml/fde_xml.h" | 13 #include "xfa/fde/xml/fde_xml.h" |
| 14 #include "xfa/fxfa/parser/xfa_utils.h" | 14 #include "xfa/fxfa/parser/xfa_utils.h" |
| 15 | 15 |
| 16 class CXFA_Document; | 16 class CXFA_Document; |
| 17 class CXFA_Node; | 17 class CXFA_Node; |
| 18 class CXFA_NodeList; | 18 class CXFA_NodeList; |
| 19 class CXFA_OrdinaryObject; | 19 class CXFA_OrdinaryObject; |
| 20 | 20 |
| 21 enum XFA_OBJECTTYPE { | 21 enum class XFA_ObjectType { |
| 22 XFA_OBJECTTYPE_OrdinaryObject = 0x0, | 22 OrdinaryObject, |
| 23 XFA_OBJECTTYPE_OrdinaryList = 0x1, | 23 OrdinaryList, |
| 24 XFA_OBJECTTYPE_NodeList = 0x2, | 24 NodeList, |
| 25 XFA_OBJECTTYPE_Node = 0x4, | 25 Node, |
| 26 XFA_OBJECTTYPE_NodeC = 0x5, | 26 NodeC, |
| 27 XFA_OBJECTTYPE_NodeV = 0x6, | 27 NodeV, |
| 28 XFA_OBJECTTYPE_ModelNode = 0x8, | 28 ModelNode, |
| 29 XFA_OBJECTTYPE_TextNode = 0x9, | 29 TextNode, |
| 30 XFA_OBJECTTYPE_ContainerNode = 0xA, | 30 ContainerNode, |
| 31 XFA_OBJECTTYPE_ContentNode = 0xB, | 31 ContentNode, |
| 32 XFA_OBJECTTYPE_VariablesThis = 0xC, | 32 VariablesThis |
| 33 XFA_OBJECTTYPEMASK = 0xF, | 33 }; |
| 34 XFA_NODEFLAG_Initialized = 0x00020, | 34 |
| 35 XFA_NODEFLAG_HasRemoved = 0x00200, | 35 enum XFA_NodeFlag { |
| 36 XFA_NODEFLAG_NeedsInitApp = 0x00400, | 36 XFA_NodeFlag_None = 0, |
| 37 XFA_NODEFLAG_BindFormItems = 0x00800, | 37 XFA_NodeFlag_Initialized = 1 << 0, |
| 38 XFA_NODEFLAG_UserInteractive = 0x01000, | 38 XFA_NodeFlag_HasRemovedChildren = 1 << 1, |
| 39 XFA_NODEFLAG_SkipDataBinding = 0x02000, | 39 XFA_NodeFlag_NeedsInitApp = 1 << 2, |
| 40 XFA_NODEFLAG_OwnXMLNode = 0x04000, | 40 XFA_NodeFlag_BindFormItems = 1 << 3, |
| 41 XFA_NODEFLAG_UnusedNode = 0x08000, | 41 XFA_NodeFlag_UserInteractive = 1 << 4, |
| 42 XFA_NODEFLAG_LayoutGeneratedNode = 0x10000, | 42 XFA_NodeFlag_SkipDataBinding = 1 << 5, |
| 43 XFA_NodeFlag_OwnXMLNode = 1 << 6, |
| 44 XFA_NodeFlag_UnusedNode = 1 << 7, |
| 45 XFA_NodeFlag_LayoutGeneratedNode = 1 << 8 |
| 43 }; | 46 }; |
| 44 | 47 |
| 45 class CXFA_Object : public CFXJSE_HostObject { | 48 class CXFA_Object : public CFXJSE_HostObject { |
| 46 public: | 49 public: |
| 47 CXFA_Object(CXFA_Document* pDocument, uint32_t uFlags); | 50 CXFA_Object(CXFA_Document* pDocument, XFA_ObjectType type); |
| 48 ~CXFA_Object() override; | 51 ~CXFA_Object() override; |
| 49 | 52 |
| 50 CXFA_Document* GetDocument() const { return m_pDocument; } | 53 CXFA_Document* GetDocument() const { return m_pDocument; } |
| 51 uint32_t GetFlag() const { return m_uFlags; } | 54 XFA_ObjectType GetObjectType() const { return m_objectType; } |
| 52 XFA_OBJECTTYPE GetObjectType() const { | |
| 53 return (XFA_OBJECTTYPE)(m_uFlags & XFA_OBJECTTYPEMASK); | |
| 54 } | |
| 55 | 55 |
| 56 bool IsNode() const { | 56 bool IsNode() const { |
| 57 return (m_uFlags & XFA_OBJECTTYPEMASK) >= XFA_OBJECTTYPE_Node; | 57 return m_objectType == XFA_ObjectType::Node || |
| 58 m_objectType == XFA_ObjectType::NodeC || |
| 59 m_objectType == XFA_ObjectType::NodeV || |
| 60 m_objectType == XFA_ObjectType::ModelNode || |
| 61 m_objectType == XFA_ObjectType::TextNode || |
| 62 m_objectType == XFA_ObjectType::ContainerNode || |
| 63 m_objectType == XFA_ObjectType::ContentNode || |
| 64 m_objectType == XFA_ObjectType::VariablesThis; |
| 58 } | 65 } |
| 59 bool IsOrdinaryObject() const { | 66 bool IsOrdinaryObject() const { |
| 60 return (m_uFlags & XFA_OBJECTTYPEMASK) == XFA_OBJECTTYPE_OrdinaryObject; | 67 return m_objectType == XFA_ObjectType::OrdinaryObject; |
| 61 } | 68 } |
| 62 bool IsNodeList() const { | 69 bool IsNodeList() const { return m_objectType == XFA_ObjectType::NodeList; } |
| 63 return (m_uFlags & XFA_OBJECTTYPEMASK) == XFA_OBJECTTYPE_NodeList; | |
| 64 } | |
| 65 bool IsOrdinaryList() const { | 70 bool IsOrdinaryList() const { |
| 66 return (m_uFlags & XFA_OBJECTTYPEMASK) == XFA_OBJECTTYPE_OrdinaryList; | 71 return m_objectType == XFA_ObjectType::OrdinaryList; |
| 67 } | 72 } |
| 68 bool IsContentNode() const { | 73 bool IsContentNode() const { |
| 69 return (m_uFlags & XFA_OBJECTTYPEMASK) == XFA_OBJECTTYPE_ContentNode; | 74 return m_objectType == XFA_ObjectType::ContentNode; |
| 70 } | 75 } |
| 71 bool IsContainerNode() const { | 76 bool IsContainerNode() const { |
| 72 return (m_uFlags & XFA_OBJECTTYPEMASK) == XFA_OBJECTTYPE_ContainerNode; | 77 return m_objectType == XFA_ObjectType::ContainerNode; |
| 78 } |
| 79 bool IsModelNode() const { return m_objectType == XFA_ObjectType::ModelNode; } |
| 80 bool IsNodeV() const { return m_objectType == XFA_ObjectType::NodeV; } |
| 81 bool IsVariablesThis() const { |
| 82 return m_objectType == XFA_ObjectType::VariablesThis; |
| 73 } | 83 } |
| 74 | 84 |
| 75 CXFA_Node* AsNode(); | 85 CXFA_Node* AsNode(); |
| 76 CXFA_OrdinaryObject* AsOrdinaryObject(); | 86 CXFA_OrdinaryObject* AsOrdinaryObject(); |
| 77 CXFA_NodeList* AsNodeList(); | 87 CXFA_NodeList* AsNodeList(); |
| 78 | 88 |
| 79 const CXFA_Node* AsNode() const; | 89 const CXFA_Node* AsNode() const; |
| 80 const CXFA_OrdinaryObject* AsOrdinaryObject() const; | 90 const CXFA_OrdinaryObject* AsOrdinaryObject() const; |
| 81 const CXFA_NodeList* AsNodeList() const; | 91 const CXFA_NodeList* AsNodeList() const; |
| 82 | 92 |
| 83 XFA_ELEMENT GetClassID() const; | 93 XFA_ELEMENT GetClassID() const; |
| 84 void GetClassName(CFX_WideStringC& wsName) const; | 94 void GetClassName(CFX_WideStringC& wsName) const; |
| 85 uint32_t GetClassHashCode() const; | 95 uint32_t GetClassHashCode() const; |
| 86 void Script_ObjectClass_ClassName(CFXJSE_Value* pValue, | 96 void Script_ObjectClass_ClassName(CFXJSE_Value* pValue, |
| 87 FX_BOOL bSetting, | 97 FX_BOOL bSetting, |
| 88 XFA_ATTRIBUTE eAttribute); | 98 XFA_ATTRIBUTE eAttribute); |
| 89 void ThrowException(int32_t iStringID, ...); | 99 void ThrowException(int32_t iStringID, ...); |
| 90 | 100 |
| 91 protected: | 101 protected: |
| 92 CXFA_Document* const m_pDocument; | 102 CXFA_Document* const m_pDocument; |
| 93 uint32_t m_uFlags; | 103 XFA_ObjectType m_objectType; |
| 94 }; | 104 }; |
| 95 using CXFA_ObjArray = CFX_ArrayTemplate<CXFA_Object*>; | 105 using CXFA_ObjArray = CFX_ArrayTemplate<CXFA_Object*>; |
| 96 | 106 |
| 97 #define XFA_NODEFILTER_Children 0x01 | 107 #define XFA_NODEFILTER_Children 0x01 |
| 98 #define XFA_NODEFILTER_Properties 0x02 | 108 #define XFA_NODEFILTER_Properties 0x02 |
| 99 #define XFA_NODEFILTER_OneOfProperty 0x04 | 109 #define XFA_NODEFILTER_OneOfProperty 0x04 |
| 100 #define XFA_CLONEFLAG_Content 0x01 | 110 #define XFA_CLONEFLAG_Content 0x01 |
| 101 enum XFA_NODEITEM { | 111 enum XFA_NODEITEM { |
| 102 XFA_NODEITEM_Parent, | 112 XFA_NODEITEM_Parent, |
| 103 XFA_NODEITEM_FirstChild, | 113 XFA_NODEITEM_FirstChild, |
| (...skipping 29 matching lines...) Expand all Loading... |
| 133 CFX_MapPtrToPtr m_ValueMap; | 143 CFX_MapPtrToPtr m_ValueMap; |
| 134 CFX_MapPtrTemplate<void*, XFA_MAPDATABLOCK*> m_BufferMap; | 144 CFX_MapPtrTemplate<void*, XFA_MAPDATABLOCK*> m_BufferMap; |
| 135 }; | 145 }; |
| 136 | 146 |
| 137 #define XFA_CalcRefCount (void*)(uintptr_t) FXBSTR_ID('X', 'F', 'A', 'R') | 147 #define XFA_CalcRefCount (void*)(uintptr_t) FXBSTR_ID('X', 'F', 'A', 'R') |
| 138 #define XFA_CalcData (void*)(uintptr_t) FXBSTR_ID('X', 'F', 'A', 'C') | 148 #define XFA_CalcData (void*)(uintptr_t) FXBSTR_ID('X', 'F', 'A', 'C') |
| 139 #define XFA_LAYOUTITEMKEY (void*)(uintptr_t) FXBSTR_ID('L', 'Y', 'I', 'M') | 149 #define XFA_LAYOUTITEMKEY (void*)(uintptr_t) FXBSTR_ID('L', 'Y', 'I', 'M') |
| 140 | 150 |
| 141 class CXFA_Node : public CXFA_Object { | 151 class CXFA_Node : public CXFA_Object { |
| 142 public: | 152 public: |
| 143 XFA_ELEMENT GetClassID() const { return (XFA_ELEMENT)m_eNodeClass; } | 153 XFA_ELEMENT GetClassID() const { return m_eNodeClass; } |
| 144 uint32_t GetPacketID() const { return m_ePacket; } | 154 uint32_t GetPacketID() const { return m_ePacket; } |
| 145 FX_BOOL HasFlag(uint32_t dwFlag) const; | 155 |
| 146 void SetFlag(uint32_t dwFlag, bool bNotify); | 156 void SetFlag(uint32_t dwFlag, bool bNotify); |
| 147 void ClearFlag(uint32_t dwFlag); | 157 void ClearFlag(uint32_t dwFlag); |
| 148 | 158 |
| 159 bool IsInitialized() const { return HasFlag(XFA_NodeFlag_Initialized); } |
| 160 bool IsOwnXMLNode() const { return HasFlag(XFA_NodeFlag_OwnXMLNode); } |
| 161 bool IsUserInteractive() const { |
| 162 return HasFlag(XFA_NodeFlag_UserInteractive); |
| 163 } |
| 164 bool IsUnusedNode() const { return HasFlag(XFA_NodeFlag_UnusedNode); } |
| 165 bool IsLayoutGeneratedNode() const { |
| 166 return HasFlag(XFA_NodeFlag_LayoutGeneratedNode); |
| 167 } |
| 168 bool BindsFormItems() const { return HasFlag(XFA_NodeFlag_BindFormItems); } |
| 169 bool HasRemovedChildren() const { |
| 170 return HasFlag(XFA_NodeFlag_HasRemovedChildren); |
| 171 } |
| 172 bool NeedsInitApp() const { return HasFlag(XFA_NodeFlag_NeedsInitApp); } |
| 173 |
| 149 FX_BOOL IsAttributeInXML(); | 174 FX_BOOL IsAttributeInXML(); |
| 150 bool IsFormContainer() const { | 175 bool IsFormContainer() const { |
| 151 return m_ePacket == XFA_XDPPACKET_Form && IsContainerNode(); | 176 return m_ePacket == XFA_XDPPACKET_Form && IsContainerNode(); |
| 152 } | 177 } |
| 153 void SetXMLMappingNode(CFDE_XMLNode* pXMLNode) { m_pXMLNode = pXMLNode; } | 178 void SetXMLMappingNode(CFDE_XMLNode* pXMLNode) { m_pXMLNode = pXMLNode; } |
| 154 CFDE_XMLNode* GetXMLMappingNode() const { return m_pXMLNode; } | 179 CFDE_XMLNode* GetXMLMappingNode() const { return m_pXMLNode; } |
| 155 CFDE_XMLNode* CreateXMLMappingNode(); | 180 CFDE_XMLNode* CreateXMLMappingNode(); |
| 156 FX_BOOL IsNeedSavingXMLNode(); | 181 FX_BOOL IsNeedSavingXMLNode(); |
| 157 uint32_t GetNameHash() const { return m_dwNameHash; } | 182 uint32_t GetNameHash() const { return m_dwNameHash; } |
| 158 bool IsUnnamed() const { return m_dwNameHash == 0; } | 183 bool IsUnnamed() const { return m_dwNameHash == 0; } |
| (...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 271 FX_BOOL bCreateProperty = TRUE); | 296 FX_BOOL bCreateProperty = TRUE); |
| 272 int32_t CountChildren(XFA_ELEMENT eElement, FX_BOOL bOnlyChild = FALSE); | 297 int32_t CountChildren(XFA_ELEMENT eElement, FX_BOOL bOnlyChild = FALSE); |
| 273 CXFA_Node* GetChild(int32_t index, | 298 CXFA_Node* GetChild(int32_t index, |
| 274 XFA_ELEMENT eElement, | 299 XFA_ELEMENT eElement, |
| 275 FX_BOOL bOnlyChild = FALSE); | 300 FX_BOOL bOnlyChild = FALSE); |
| 276 int32_t InsertChild(int32_t index, CXFA_Node* pNode); | 301 int32_t InsertChild(int32_t index, CXFA_Node* pNode); |
| 277 FX_BOOL InsertChild(CXFA_Node* pNode, CXFA_Node* pBeforeNode = NULL); | 302 FX_BOOL InsertChild(CXFA_Node* pNode, CXFA_Node* pBeforeNode = NULL); |
| 278 FX_BOOL RemoveChild(CXFA_Node* pNode, bool bNotify = true); | 303 FX_BOOL RemoveChild(CXFA_Node* pNode, bool bNotify = true); |
| 279 CXFA_Node* Clone(FX_BOOL bRecursive); | 304 CXFA_Node* Clone(FX_BOOL bRecursive); |
| 280 CXFA_Node* GetNodeItem(XFA_NODEITEM eItem) const; | 305 CXFA_Node* GetNodeItem(XFA_NODEITEM eItem) const; |
| 281 CXFA_Node* GetNodeItem(XFA_NODEITEM eItem, XFA_OBJECTTYPE eType) const; | 306 CXFA_Node* GetNodeItem(XFA_NODEITEM eItem, XFA_ObjectType eType) const; |
| 282 int32_t GetNodeList(CXFA_NodeArray& nodes, | 307 int32_t GetNodeList(CXFA_NodeArray& nodes, |
| 283 uint32_t dwTypeFilter = XFA_NODEFILTER_Children | | 308 uint32_t dwTypeFilter = XFA_NODEFILTER_Children | |
| 284 XFA_NODEFILTER_Properties, | 309 XFA_NODEFILTER_Properties, |
| 285 XFA_ELEMENT eElementFilter = XFA_ELEMENT_UNKNOWN, | 310 XFA_ELEMENT eElementFilter = XFA_ELEMENT_UNKNOWN, |
| 286 int32_t iLevel = 1); | 311 int32_t iLevel = 1); |
| 287 CXFA_Node* CreateSamePacketNode(XFA_ELEMENT eElement, | 312 CXFA_Node* CreateSamePacketNode(XFA_ELEMENT eElement, |
| 288 uint32_t dwFlags = XFA_NODEFLAG_Initialized); | 313 uint32_t dwFlags = XFA_NodeFlag_Initialized); |
| 289 CXFA_Node* CloneTemplateToForm(FX_BOOL bRecursive); | 314 CXFA_Node* CloneTemplateToForm(FX_BOOL bRecursive); |
| 290 CXFA_Node* GetTemplateNode() const; | 315 CXFA_Node* GetTemplateNode() const; |
| 291 void SetTemplateNode(CXFA_Node* pTemplateNode); | 316 void SetTemplateNode(CXFA_Node* pTemplateNode); |
| 292 CXFA_Node* GetDataDescriptionNode(); | 317 CXFA_Node* GetDataDescriptionNode(); |
| 293 void SetDataDescriptionNode(CXFA_Node* pDataDescriptionNode); | 318 void SetDataDescriptionNode(CXFA_Node* pDataDescriptionNode); |
| 294 CXFA_Node* GetBindData(); | 319 CXFA_Node* GetBindData(); |
| 295 int32_t GetBindItems(CXFA_NodeArray& formItems); | 320 int32_t GetBindItems(CXFA_NodeArray& formItems); |
| 296 int32_t AddBindItem(CXFA_Node* pFormNode); | 321 int32_t AddBindItem(CXFA_Node* pFormNode); |
| 297 int32_t RemoveBindItem(CXFA_Node* pFormNode); | 322 int32_t RemoveBindItem(CXFA_Node* pFormNode); |
| 298 FX_BOOL HasBindItem(); | 323 FX_BOOL HasBindItem(); |
| (...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 589 FX_BOOL bSetting, | 614 FX_BOOL bSetting, |
| 590 XFA_ATTRIBUTE eAttribute); | 615 XFA_ATTRIBUTE eAttribute); |
| 591 void Script_Encrypt_Format(CFXJSE_Value* pValue, | 616 void Script_Encrypt_Format(CFXJSE_Value* pValue, |
| 592 FX_BOOL bSetting, | 617 FX_BOOL bSetting, |
| 593 XFA_ATTRIBUTE eAttribute); | 618 XFA_ATTRIBUTE eAttribute); |
| 594 void Script_Script_Stateless(CFXJSE_Value* pValue, | 619 void Script_Script_Stateless(CFXJSE_Value* pValue, |
| 595 FX_BOOL bSetting, | 620 FX_BOOL bSetting, |
| 596 XFA_ATTRIBUTE eAttribute); | 621 XFA_ATTRIBUTE eAttribute); |
| 597 | 622 |
| 598 protected: | 623 protected: |
| 624 friend class CXFA_Document; |
| 625 |
| 599 CXFA_Node(CXFA_Document* pDoc, uint16_t ePacket, XFA_ELEMENT eElement); | 626 CXFA_Node(CXFA_Document* pDoc, uint16_t ePacket, XFA_ELEMENT eElement); |
| 600 ~CXFA_Node() override; | 627 ~CXFA_Node() override; |
| 601 friend class CXFA_Document; | 628 |
| 629 bool HasFlag(XFA_NodeFlag dwFlag) const; |
| 602 CXFA_Node* Deprecated_GetPrevSibling(); | 630 CXFA_Node* Deprecated_GetPrevSibling(); |
| 603 FX_BOOL SetValue(XFA_ATTRIBUTE eAttr, | 631 FX_BOOL SetValue(XFA_ATTRIBUTE eAttr, |
| 604 XFA_ATTRIBUTETYPE eType, | 632 XFA_ATTRIBUTETYPE eType, |
| 605 void* pValue, | 633 void* pValue, |
| 606 bool bNotify); | 634 bool bNotify); |
| 607 FX_BOOL GetValue(XFA_ATTRIBUTE eAttr, | 635 FX_BOOL GetValue(XFA_ATTRIBUTE eAttr, |
| 608 XFA_ATTRIBUTETYPE eType, | 636 XFA_ATTRIBUTETYPE eType, |
| 609 FX_BOOL bUseDefault, | 637 FX_BOOL bUseDefault, |
| 610 void*& pValue); | 638 void*& pValue); |
| 611 void OnRemoved(bool bNotify); | 639 void OnRemoved(bool bNotify); |
| (...skipping 30 matching lines...) Expand all Loading... |
| 642 void* pKey, | 670 void* pKey, |
| 643 FX_BOOL bRecursive = FALSE); | 671 FX_BOOL bRecursive = FALSE); |
| 644 | 672 |
| 645 CXFA_Node* m_pNext; | 673 CXFA_Node* m_pNext; |
| 646 CXFA_Node* m_pChild; | 674 CXFA_Node* m_pChild; |
| 647 CXFA_Node* m_pLastChild; | 675 CXFA_Node* m_pLastChild; |
| 648 CXFA_Node* m_pParent; | 676 CXFA_Node* m_pParent; |
| 649 CFDE_XMLNode* m_pXMLNode; | 677 CFDE_XMLNode* m_pXMLNode; |
| 650 XFA_ELEMENT m_eNodeClass; | 678 XFA_ELEMENT m_eNodeClass; |
| 651 uint16_t m_ePacket; | 679 uint16_t m_ePacket; |
| 680 uint16_t m_uNodeFlags; |
| 652 uint32_t m_dwNameHash; | 681 uint32_t m_dwNameHash; |
| 653 CXFA_Node* m_pAuxNode; | 682 CXFA_Node* m_pAuxNode; |
| 654 XFA_MAPMODULEDATA* m_pMapModuleData; | 683 XFA_MAPMODULEDATA* m_pMapModuleData; |
| 655 }; | 684 }; |
| 656 | 685 |
| 657 class CXFA_OrdinaryObject : public CXFA_Object { | 686 class CXFA_OrdinaryObject : public CXFA_Object { |
| 658 public: | 687 public: |
| 659 CXFA_OrdinaryObject(CXFA_Document* pDocument, XFA_ELEMENT eElement); | 688 CXFA_OrdinaryObject(CXFA_Document* pDocument, XFA_ELEMENT eElement); |
| 660 ~CXFA_OrdinaryObject() override; | 689 ~CXFA_OrdinaryObject() override; |
| 661 | 690 |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 734 CXFA_Node* Item(int32_t iIndex) override; | 763 CXFA_Node* Item(int32_t iIndex) override; |
| 735 | 764 |
| 736 protected: | 765 protected: |
| 737 CXFA_Node* m_pAttachNode; | 766 CXFA_Node* m_pAttachNode; |
| 738 }; | 767 }; |
| 739 class CXFA_TraverseStrategy_XFAContainerNode { | 768 class CXFA_TraverseStrategy_XFAContainerNode { |
| 740 public: | 769 public: |
| 741 static CXFA_Node* GetFirstChild(CXFA_Node* pTemplateNode, | 770 static CXFA_Node* GetFirstChild(CXFA_Node* pTemplateNode, |
| 742 void* pUserData = NULL) { | 771 void* pUserData = NULL) { |
| 743 return pTemplateNode->GetNodeItem(XFA_NODEITEM_FirstChild, | 772 return pTemplateNode->GetNodeItem(XFA_NODEITEM_FirstChild, |
| 744 XFA_OBJECTTYPE_ContainerNode); | 773 XFA_ObjectType::ContainerNode); |
| 745 } | 774 } |
| 746 static CXFA_Node* GetNextSibling(CXFA_Node* pTemplateNode, | 775 static CXFA_Node* GetNextSibling(CXFA_Node* pTemplateNode, |
| 747 void* pUserData = NULL) { | 776 void* pUserData = NULL) { |
| 748 return pTemplateNode->GetNodeItem(XFA_NODEITEM_NextSibling, | 777 return pTemplateNode->GetNodeItem(XFA_NODEITEM_NextSibling, |
| 749 XFA_OBJECTTYPE_ContainerNode); | 778 XFA_ObjectType::ContainerNode); |
| 750 } | 779 } |
| 751 static CXFA_Node* GetParent(CXFA_Node* pTemplateNode, | 780 static CXFA_Node* GetParent(CXFA_Node* pTemplateNode, |
| 752 void* pUserData = NULL) { | 781 void* pUserData = NULL) { |
| 753 return pTemplateNode->GetNodeItem(XFA_NODEITEM_Parent, | 782 return pTemplateNode->GetNodeItem(XFA_NODEITEM_Parent, |
| 754 XFA_OBJECTTYPE_ContainerNode); | 783 XFA_ObjectType::ContainerNode); |
| 755 } | 784 } |
| 756 }; | 785 }; |
| 757 typedef CXFA_NodeIteratorTemplate<CXFA_Node, | 786 typedef CXFA_NodeIteratorTemplate<CXFA_Node, |
| 758 CXFA_TraverseStrategy_XFAContainerNode> | 787 CXFA_TraverseStrategy_XFAContainerNode> |
| 759 CXFA_ContainerIterator; | 788 CXFA_ContainerIterator; |
| 760 class CXFA_TraverseStrategy_XFANode { | 789 class CXFA_TraverseStrategy_XFANode { |
| 761 public: | 790 public: |
| 762 static inline CXFA_Node* GetFirstChild(CXFA_Node* pTemplateNode) { | 791 static inline CXFA_Node* GetFirstChild(CXFA_Node* pTemplateNode) { |
| 763 return pTemplateNode->GetNodeItem(XFA_NODEITEM_FirstChild); | 792 return pTemplateNode->GetNodeItem(XFA_NODEITEM_FirstChild); |
| 764 } | 793 } |
| (...skipping 30 matching lines...) Expand all Loading... |
| 795 | 824 |
| 796 inline CXFA_Node* ToNode(CXFA_Object* pObj) { | 825 inline CXFA_Node* ToNode(CXFA_Object* pObj) { |
| 797 return pObj ? pObj->AsNode() : nullptr; | 826 return pObj ? pObj->AsNode() : nullptr; |
| 798 } | 827 } |
| 799 | 828 |
| 800 inline const CXFA_Node* ToNode(const CXFA_Object* pObj) { | 829 inline const CXFA_Node* ToNode(const CXFA_Object* pObj) { |
| 801 return pObj ? pObj->AsNode() : nullptr; | 830 return pObj ? pObj->AsNode() : nullptr; |
| 802 } | 831 } |
| 803 | 832 |
| 804 #endif // XFA_FXFA_PARSER_XFA_OBJECT_H_ | 833 #endif // XFA_FXFA_PARSER_XFA_OBJECT_H_ |
| OLD | NEW |