Chromium Code Reviews| 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 { | |
| 169 return !!(m_uNodeFlags & XFA_NodeFlag_BindFormItems); | |
|
Lei Zhang
2016/06/20 17:24:06
Why can't this just call HasFlag() ?
dsinclair
2016/06/20 17:28:40
Done.
| |
| 170 } | |
| 171 bool HasRemovedChildren() const { | |
| 172 return HasFlag(XFA_NodeFlag_HasRemovedChildren); | |
| 173 } | |
| 174 bool NeedsInitApp() const { return HasFlag(XFA_NodeFlag_NeedsInitApp); } | |
| 175 | |
| 149 FX_BOOL IsAttributeInXML(); | 176 FX_BOOL IsAttributeInXML(); |
| 150 bool IsFormContainer() const { | 177 bool IsFormContainer() const { |
| 151 return m_ePacket == XFA_XDPPACKET_Form && IsContainerNode(); | 178 return m_ePacket == XFA_XDPPACKET_Form && IsContainerNode(); |
| 152 } | 179 } |
| 153 void SetXMLMappingNode(CFDE_XMLNode* pXMLNode) { m_pXMLNode = pXMLNode; } | 180 void SetXMLMappingNode(CFDE_XMLNode* pXMLNode) { m_pXMLNode = pXMLNode; } |
| 154 CFDE_XMLNode* GetXMLMappingNode() const { return m_pXMLNode; } | 181 CFDE_XMLNode* GetXMLMappingNode() const { return m_pXMLNode; } |
| 155 CFDE_XMLNode* CreateXMLMappingNode(); | 182 CFDE_XMLNode* CreateXMLMappingNode(); |
| 156 FX_BOOL IsNeedSavingXMLNode(); | 183 FX_BOOL IsNeedSavingXMLNode(); |
| 157 uint32_t GetNameHash() const { return m_dwNameHash; } | 184 uint32_t GetNameHash() const { return m_dwNameHash; } |
| 158 bool IsUnnamed() const { return m_dwNameHash == 0; } | 185 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); | 298 FX_BOOL bCreateProperty = TRUE); |
| 272 int32_t CountChildren(XFA_ELEMENT eElement, FX_BOOL bOnlyChild = FALSE); | 299 int32_t CountChildren(XFA_ELEMENT eElement, FX_BOOL bOnlyChild = FALSE); |
| 273 CXFA_Node* GetChild(int32_t index, | 300 CXFA_Node* GetChild(int32_t index, |
| 274 XFA_ELEMENT eElement, | 301 XFA_ELEMENT eElement, |
| 275 FX_BOOL bOnlyChild = FALSE); | 302 FX_BOOL bOnlyChild = FALSE); |
| 276 int32_t InsertChild(int32_t index, CXFA_Node* pNode); | 303 int32_t InsertChild(int32_t index, CXFA_Node* pNode); |
| 277 FX_BOOL InsertChild(CXFA_Node* pNode, CXFA_Node* pBeforeNode = NULL); | 304 FX_BOOL InsertChild(CXFA_Node* pNode, CXFA_Node* pBeforeNode = NULL); |
| 278 FX_BOOL RemoveChild(CXFA_Node* pNode, bool bNotify = true); | 305 FX_BOOL RemoveChild(CXFA_Node* pNode, bool bNotify = true); |
| 279 CXFA_Node* Clone(FX_BOOL bRecursive); | 306 CXFA_Node* Clone(FX_BOOL bRecursive); |
| 280 CXFA_Node* GetNodeItem(XFA_NODEITEM eItem) const; | 307 CXFA_Node* GetNodeItem(XFA_NODEITEM eItem) const; |
| 281 CXFA_Node* GetNodeItem(XFA_NODEITEM eItem, XFA_OBJECTTYPE eType) const; | 308 CXFA_Node* GetNodeItem(XFA_NODEITEM eItem, XFA_ObjectType eType) const; |
| 282 int32_t GetNodeList(CXFA_NodeArray& nodes, | 309 int32_t GetNodeList(CXFA_NodeArray& nodes, |
| 283 uint32_t dwTypeFilter = XFA_NODEFILTER_Children | | 310 uint32_t dwTypeFilter = XFA_NODEFILTER_Children | |
| 284 XFA_NODEFILTER_Properties, | 311 XFA_NODEFILTER_Properties, |
| 285 XFA_ELEMENT eElementFilter = XFA_ELEMENT_UNKNOWN, | 312 XFA_ELEMENT eElementFilter = XFA_ELEMENT_UNKNOWN, |
| 286 int32_t iLevel = 1); | 313 int32_t iLevel = 1); |
| 287 CXFA_Node* CreateSamePacketNode(XFA_ELEMENT eElement, | 314 CXFA_Node* CreateSamePacketNode(XFA_ELEMENT eElement, |
| 288 uint32_t dwFlags = XFA_NODEFLAG_Initialized); | 315 uint32_t dwFlags = XFA_NodeFlag_Initialized); |
| 289 CXFA_Node* CloneTemplateToForm(FX_BOOL bRecursive); | 316 CXFA_Node* CloneTemplateToForm(FX_BOOL bRecursive); |
| 290 CXFA_Node* GetTemplateNode() const; | 317 CXFA_Node* GetTemplateNode() const; |
| 291 void SetTemplateNode(CXFA_Node* pTemplateNode); | 318 void SetTemplateNode(CXFA_Node* pTemplateNode); |
| 292 CXFA_Node* GetDataDescriptionNode(); | 319 CXFA_Node* GetDataDescriptionNode(); |
| 293 void SetDataDescriptionNode(CXFA_Node* pDataDescriptionNode); | 320 void SetDataDescriptionNode(CXFA_Node* pDataDescriptionNode); |
| 294 CXFA_Node* GetBindData(); | 321 CXFA_Node* GetBindData(); |
| 295 int32_t GetBindItems(CXFA_NodeArray& formItems); | 322 int32_t GetBindItems(CXFA_NodeArray& formItems); |
| 296 int32_t AddBindItem(CXFA_Node* pFormNode); | 323 int32_t AddBindItem(CXFA_Node* pFormNode); |
| 297 int32_t RemoveBindItem(CXFA_Node* pFormNode); | 324 int32_t RemoveBindItem(CXFA_Node* pFormNode); |
| 298 FX_BOOL HasBindItem(); | 325 FX_BOOL HasBindItem(); |
| (...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 589 FX_BOOL bSetting, | 616 FX_BOOL bSetting, |
| 590 XFA_ATTRIBUTE eAttribute); | 617 XFA_ATTRIBUTE eAttribute); |
| 591 void Script_Encrypt_Format(CFXJSE_Value* pValue, | 618 void Script_Encrypt_Format(CFXJSE_Value* pValue, |
| 592 FX_BOOL bSetting, | 619 FX_BOOL bSetting, |
| 593 XFA_ATTRIBUTE eAttribute); | 620 XFA_ATTRIBUTE eAttribute); |
| 594 void Script_Script_Stateless(CFXJSE_Value* pValue, | 621 void Script_Script_Stateless(CFXJSE_Value* pValue, |
| 595 FX_BOOL bSetting, | 622 FX_BOOL bSetting, |
| 596 XFA_ATTRIBUTE eAttribute); | 623 XFA_ATTRIBUTE eAttribute); |
| 597 | 624 |
| 598 protected: | 625 protected: |
| 626 friend class CXFA_Document; | |
| 627 | |
| 599 CXFA_Node(CXFA_Document* pDoc, uint16_t ePacket, XFA_ELEMENT eElement); | 628 CXFA_Node(CXFA_Document* pDoc, uint16_t ePacket, XFA_ELEMENT eElement); |
| 600 ~CXFA_Node() override; | 629 ~CXFA_Node() override; |
| 601 friend class CXFA_Document; | 630 |
| 631 bool HasFlag(XFA_NodeFlag dwFlag) const; | |
| 602 CXFA_Node* Deprecated_GetPrevSibling(); | 632 CXFA_Node* Deprecated_GetPrevSibling(); |
| 603 FX_BOOL SetValue(XFA_ATTRIBUTE eAttr, | 633 FX_BOOL SetValue(XFA_ATTRIBUTE eAttr, |
| 604 XFA_ATTRIBUTETYPE eType, | 634 XFA_ATTRIBUTETYPE eType, |
| 605 void* pValue, | 635 void* pValue, |
| 606 bool bNotify); | 636 bool bNotify); |
| 607 FX_BOOL GetValue(XFA_ATTRIBUTE eAttr, | 637 FX_BOOL GetValue(XFA_ATTRIBUTE eAttr, |
| 608 XFA_ATTRIBUTETYPE eType, | 638 XFA_ATTRIBUTETYPE eType, |
| 609 FX_BOOL bUseDefault, | 639 FX_BOOL bUseDefault, |
| 610 void*& pValue); | 640 void*& pValue); |
| 611 void OnRemoved(bool bNotify); | 641 void OnRemoved(bool bNotify); |
| (...skipping 30 matching lines...) Expand all Loading... | |
| 642 void* pKey, | 672 void* pKey, |
| 643 FX_BOOL bRecursive = FALSE); | 673 FX_BOOL bRecursive = FALSE); |
| 644 | 674 |
| 645 CXFA_Node* m_pNext; | 675 CXFA_Node* m_pNext; |
| 646 CXFA_Node* m_pChild; | 676 CXFA_Node* m_pChild; |
| 647 CXFA_Node* m_pLastChild; | 677 CXFA_Node* m_pLastChild; |
| 648 CXFA_Node* m_pParent; | 678 CXFA_Node* m_pParent; |
| 649 CFDE_XMLNode* m_pXMLNode; | 679 CFDE_XMLNode* m_pXMLNode; |
| 650 XFA_ELEMENT m_eNodeClass; | 680 XFA_ELEMENT m_eNodeClass; |
| 651 uint16_t m_ePacket; | 681 uint16_t m_ePacket; |
| 682 uint16_t m_uNodeFlags; | |
| 652 uint32_t m_dwNameHash; | 683 uint32_t m_dwNameHash; |
| 653 CXFA_Node* m_pAuxNode; | 684 CXFA_Node* m_pAuxNode; |
| 654 XFA_MAPMODULEDATA* m_pMapModuleData; | 685 XFA_MAPMODULEDATA* m_pMapModuleData; |
| 655 }; | 686 }; |
| 656 | 687 |
| 657 class CXFA_OrdinaryObject : public CXFA_Object { | 688 class CXFA_OrdinaryObject : public CXFA_Object { |
| 658 public: | 689 public: |
| 659 CXFA_OrdinaryObject(CXFA_Document* pDocument, XFA_ELEMENT eElement); | 690 CXFA_OrdinaryObject(CXFA_Document* pDocument, XFA_ELEMENT eElement); |
| 660 ~CXFA_OrdinaryObject() override; | 691 ~CXFA_OrdinaryObject() override; |
| 661 | 692 |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 734 CXFA_Node* Item(int32_t iIndex) override; | 765 CXFA_Node* Item(int32_t iIndex) override; |
| 735 | 766 |
| 736 protected: | 767 protected: |
| 737 CXFA_Node* m_pAttachNode; | 768 CXFA_Node* m_pAttachNode; |
| 738 }; | 769 }; |
| 739 class CXFA_TraverseStrategy_XFAContainerNode { | 770 class CXFA_TraverseStrategy_XFAContainerNode { |
| 740 public: | 771 public: |
| 741 static CXFA_Node* GetFirstChild(CXFA_Node* pTemplateNode, | 772 static CXFA_Node* GetFirstChild(CXFA_Node* pTemplateNode, |
| 742 void* pUserData = NULL) { | 773 void* pUserData = NULL) { |
| 743 return pTemplateNode->GetNodeItem(XFA_NODEITEM_FirstChild, | 774 return pTemplateNode->GetNodeItem(XFA_NODEITEM_FirstChild, |
| 744 XFA_OBJECTTYPE_ContainerNode); | 775 XFA_ObjectType::ContainerNode); |
| 745 } | 776 } |
| 746 static CXFA_Node* GetNextSibling(CXFA_Node* pTemplateNode, | 777 static CXFA_Node* GetNextSibling(CXFA_Node* pTemplateNode, |
| 747 void* pUserData = NULL) { | 778 void* pUserData = NULL) { |
| 748 return pTemplateNode->GetNodeItem(XFA_NODEITEM_NextSibling, | 779 return pTemplateNode->GetNodeItem(XFA_NODEITEM_NextSibling, |
| 749 XFA_OBJECTTYPE_ContainerNode); | 780 XFA_ObjectType::ContainerNode); |
| 750 } | 781 } |
| 751 static CXFA_Node* GetParent(CXFA_Node* pTemplateNode, | 782 static CXFA_Node* GetParent(CXFA_Node* pTemplateNode, |
| 752 void* pUserData = NULL) { | 783 void* pUserData = NULL) { |
| 753 return pTemplateNode->GetNodeItem(XFA_NODEITEM_Parent, | 784 return pTemplateNode->GetNodeItem(XFA_NODEITEM_Parent, |
| 754 XFA_OBJECTTYPE_ContainerNode); | 785 XFA_ObjectType::ContainerNode); |
| 755 } | 786 } |
| 756 }; | 787 }; |
| 757 typedef CXFA_NodeIteratorTemplate<CXFA_Node, | 788 typedef CXFA_NodeIteratorTemplate<CXFA_Node, |
| 758 CXFA_TraverseStrategy_XFAContainerNode> | 789 CXFA_TraverseStrategy_XFAContainerNode> |
| 759 CXFA_ContainerIterator; | 790 CXFA_ContainerIterator; |
| 760 class CXFA_TraverseStrategy_XFANode { | 791 class CXFA_TraverseStrategy_XFANode { |
| 761 public: | 792 public: |
| 762 static inline CXFA_Node* GetFirstChild(CXFA_Node* pTemplateNode) { | 793 static inline CXFA_Node* GetFirstChild(CXFA_Node* pTemplateNode) { |
| 763 return pTemplateNode->GetNodeItem(XFA_NODEITEM_FirstChild); | 794 return pTemplateNode->GetNodeItem(XFA_NODEITEM_FirstChild); |
| 764 } | 795 } |
| (...skipping 30 matching lines...) Expand all Loading... | |
| 795 | 826 |
| 796 inline CXFA_Node* ToNode(CXFA_Object* pObj) { | 827 inline CXFA_Node* ToNode(CXFA_Object* pObj) { |
| 797 return pObj ? pObj->AsNode() : nullptr; | 828 return pObj ? pObj->AsNode() : nullptr; |
| 798 } | 829 } |
| 799 | 830 |
| 800 inline const CXFA_Node* ToNode(const CXFA_Object* pObj) { | 831 inline const CXFA_Node* ToNode(const CXFA_Object* pObj) { |
| 801 return pObj ? pObj->AsNode() : nullptr; | 832 return pObj ? pObj->AsNode() : nullptr; |
| 802 } | 833 } |
| 803 | 834 |
| 804 #endif // XFA_FXFA_PARSER_XFA_OBJECT_H_ | 835 #endif // XFA_FXFA_PARSER_XFA_OBJECT_H_ |
| OLD | NEW |