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> |
| (...skipping 29 matching lines...) Expand all Loading... | |
| 40 XFA_NodeFlag_BindFormItems = 1 << 3, | 40 XFA_NodeFlag_BindFormItems = 1 << 3, |
| 41 XFA_NodeFlag_UserInteractive = 1 << 4, | 41 XFA_NodeFlag_UserInteractive = 1 << 4, |
| 42 XFA_NodeFlag_SkipDataBinding = 1 << 5, | 42 XFA_NodeFlag_SkipDataBinding = 1 << 5, |
| 43 XFA_NodeFlag_OwnXMLNode = 1 << 6, | 43 XFA_NodeFlag_OwnXMLNode = 1 << 6, |
| 44 XFA_NodeFlag_UnusedNode = 1 << 7, | 44 XFA_NodeFlag_UnusedNode = 1 << 7, |
| 45 XFA_NodeFlag_LayoutGeneratedNode = 1 << 8 | 45 XFA_NodeFlag_LayoutGeneratedNode = 1 << 8 |
| 46 }; | 46 }; |
| 47 | 47 |
| 48 class CXFA_Object : public CFXJSE_HostObject { | 48 class CXFA_Object : public CFXJSE_HostObject { |
| 49 public: | 49 public: |
| 50 CXFA_Object(CXFA_Document* pDocument, XFA_ObjectType type); | 50 CXFA_Object(CXFA_Document* pDocument, |
| 51 XFA_ObjectType objectType, | |
| 52 XFA_Element elementType); | |
| 51 ~CXFA_Object() override; | 53 ~CXFA_Object() override; |
| 52 | 54 |
| 53 CXFA_Document* GetDocument() const { return m_pDocument; } | 55 CXFA_Document* GetDocument() const { return m_pDocument; } |
| 54 XFA_ObjectType GetObjectType() const { return m_objectType; } | 56 XFA_ObjectType GetObjectType() const { return m_objectType; } |
| 55 | 57 |
| 56 bool IsNode() const { | 58 bool IsNode() const { |
| 57 return m_objectType == XFA_ObjectType::Node || | 59 return m_objectType == XFA_ObjectType::Node || |
| 58 m_objectType == XFA_ObjectType::NodeC || | 60 m_objectType == XFA_ObjectType::NodeC || |
| 59 m_objectType == XFA_ObjectType::NodeV || | 61 m_objectType == XFA_ObjectType::NodeV || |
| 60 m_objectType == XFA_ObjectType::ModelNode || | 62 m_objectType == XFA_ObjectType::ModelNode || |
| (...skipping 22 matching lines...) Expand all Loading... | |
| 83 } | 85 } |
| 84 | 86 |
| 85 CXFA_Node* AsNode(); | 87 CXFA_Node* AsNode(); |
| 86 CXFA_OrdinaryObject* AsOrdinaryObject(); | 88 CXFA_OrdinaryObject* AsOrdinaryObject(); |
| 87 CXFA_NodeList* AsNodeList(); | 89 CXFA_NodeList* AsNodeList(); |
| 88 | 90 |
| 89 const CXFA_Node* AsNode() const; | 91 const CXFA_Node* AsNode() const; |
| 90 const CXFA_OrdinaryObject* AsOrdinaryObject() const; | 92 const CXFA_OrdinaryObject* AsOrdinaryObject() const; |
| 91 const CXFA_NodeList* AsNodeList() const; | 93 const CXFA_NodeList* AsNodeList() const; |
| 92 | 94 |
| 93 XFA_Element GetClassID() const; | 95 XFA_Element GetElementType() const; |
| 94 void GetClassName(CFX_WideStringC& wsName) const; | 96 void GetClassName(CFX_WideStringC& wsName) const; |
| 95 uint32_t GetClassHashCode() const; | 97 uint32_t GetClassHashCode() const; |
| 96 void Script_ObjectClass_ClassName(CFXJSE_Value* pValue, | 98 void Script_ObjectClass_ClassName(CFXJSE_Value* pValue, |
| 97 FX_BOOL bSetting, | 99 FX_BOOL bSetting, |
| 98 XFA_ATTRIBUTE eAttribute); | 100 XFA_ATTRIBUTE eAttribute); |
| 99 void ThrowException(int32_t iStringID, ...); | 101 void ThrowException(int32_t iStringID, ...); |
| 100 | 102 |
| 101 protected: | 103 protected: |
| 102 CXFA_Document* const m_pDocument; | 104 CXFA_Document* const m_pDocument; |
| 103 XFA_ObjectType m_objectType; | 105 XFA_ObjectType m_objectType; |
| 106 XFA_Element m_elementType; | |
|
Lei Zhang
2016/06/23 05:04:20
const?
| |
| 104 }; | 107 }; |
| 105 using CXFA_ObjArray = CFX_ArrayTemplate<CXFA_Object*>; | 108 using CXFA_ObjArray = CFX_ArrayTemplate<CXFA_Object*>; |
| 106 | 109 |
| 107 #define XFA_NODEFILTER_Children 0x01 | 110 #define XFA_NODEFILTER_Children 0x01 |
| 108 #define XFA_NODEFILTER_Properties 0x02 | 111 #define XFA_NODEFILTER_Properties 0x02 |
| 109 #define XFA_NODEFILTER_OneOfProperty 0x04 | 112 #define XFA_NODEFILTER_OneOfProperty 0x04 |
| 110 #define XFA_CLONEFLAG_Content 0x01 | 113 #define XFA_CLONEFLAG_Content 0x01 |
| 111 enum XFA_NODEITEM { | 114 enum XFA_NODEITEM { |
| 112 XFA_NODEITEM_Parent, | 115 XFA_NODEITEM_Parent, |
| 113 XFA_NODEITEM_FirstChild, | 116 XFA_NODEITEM_FirstChild, |
| (...skipping 29 matching lines...) Expand all Loading... | |
| 143 CFX_MapPtrToPtr m_ValueMap; | 146 CFX_MapPtrToPtr m_ValueMap; |
| 144 CFX_MapPtrTemplate<void*, XFA_MAPDATABLOCK*> m_BufferMap; | 147 CFX_MapPtrTemplate<void*, XFA_MAPDATABLOCK*> m_BufferMap; |
| 145 }; | 148 }; |
| 146 | 149 |
| 147 #define XFA_CalcRefCount (void*)(uintptr_t) FXBSTR_ID('X', 'F', 'A', 'R') | 150 #define XFA_CalcRefCount (void*)(uintptr_t) FXBSTR_ID('X', 'F', 'A', 'R') |
| 148 #define XFA_CalcData (void*)(uintptr_t) FXBSTR_ID('X', 'F', 'A', 'C') | 151 #define XFA_CalcData (void*)(uintptr_t) FXBSTR_ID('X', 'F', 'A', 'C') |
| 149 #define XFA_LAYOUTITEMKEY (void*)(uintptr_t) FXBSTR_ID('L', 'Y', 'I', 'M') | 152 #define XFA_LAYOUTITEMKEY (void*)(uintptr_t) FXBSTR_ID('L', 'Y', 'I', 'M') |
| 150 | 153 |
| 151 class CXFA_Node : public CXFA_Object { | 154 class CXFA_Node : public CXFA_Object { |
| 152 public: | 155 public: |
| 153 XFA_Element GetClassID() const { return m_eNodeClass; } | |
| 154 uint32_t GetPacketID() const { return m_ePacket; } | 156 uint32_t GetPacketID() const { return m_ePacket; } |
| 155 | 157 |
| 156 void SetFlag(uint32_t dwFlag, bool bNotify); | 158 void SetFlag(uint32_t dwFlag, bool bNotify); |
| 157 void ClearFlag(uint32_t dwFlag); | 159 void ClearFlag(uint32_t dwFlag); |
| 158 | 160 |
| 159 bool IsInitialized() const { return HasFlag(XFA_NodeFlag_Initialized); } | 161 bool IsInitialized() const { return HasFlag(XFA_NodeFlag_Initialized); } |
| 160 bool IsOwnXMLNode() const { return HasFlag(XFA_NodeFlag_OwnXMLNode); } | 162 bool IsOwnXMLNode() const { return HasFlag(XFA_NodeFlag_OwnXMLNode); } |
| 161 bool IsUserInteractive() const { | 163 bool IsUserInteractive() const { |
| 162 return HasFlag(XFA_NodeFlag_UserInteractive); | 164 return HasFlag(XFA_NodeFlag_UserInteractive); |
| 163 } | 165 } |
| (...skipping 504 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 668 void MoveBufferMapData(CXFA_Node* pSrcModule, | 670 void MoveBufferMapData(CXFA_Node* pSrcModule, |
| 669 CXFA_Node* pDstModule, | 671 CXFA_Node* pDstModule, |
| 670 void* pKey, | 672 void* pKey, |
| 671 FX_BOOL bRecursive = FALSE); | 673 FX_BOOL bRecursive = FALSE); |
| 672 | 674 |
| 673 CXFA_Node* m_pNext; | 675 CXFA_Node* m_pNext; |
| 674 CXFA_Node* m_pChild; | 676 CXFA_Node* m_pChild; |
| 675 CXFA_Node* m_pLastChild; | 677 CXFA_Node* m_pLastChild; |
| 676 CXFA_Node* m_pParent; | 678 CXFA_Node* m_pParent; |
| 677 CFDE_XMLNode* m_pXMLNode; | 679 CFDE_XMLNode* m_pXMLNode; |
| 678 XFA_Element m_eNodeClass; | |
| 679 uint16_t m_ePacket; | 680 uint16_t m_ePacket; |
| 680 uint16_t m_uNodeFlags; | 681 uint16_t m_uNodeFlags; |
| 681 uint32_t m_dwNameHash; | 682 uint32_t m_dwNameHash; |
| 682 CXFA_Node* m_pAuxNode; | 683 CXFA_Node* m_pAuxNode; |
| 683 XFA_MAPMODULEDATA* m_pMapModuleData; | 684 XFA_MAPMODULEDATA* m_pMapModuleData; |
| 684 }; | 685 }; |
| 685 | 686 |
| 686 class CXFA_OrdinaryObject : public CXFA_Object { | 687 class CXFA_OrdinaryObject : public CXFA_Object { |
| 687 public: | 688 public: |
| 688 CXFA_OrdinaryObject(CXFA_Document* pDocument, XFA_Element eElement); | 689 CXFA_OrdinaryObject(CXFA_Document* pDocument, XFA_Element eElement); |
| 689 ~CXFA_OrdinaryObject() override; | 690 ~CXFA_OrdinaryObject() override; |
| 690 | |
| 691 XFA_Element GetClassID() const; | |
| 692 | |
| 693 protected: | |
| 694 XFA_Element m_eNodeClass; | |
| 695 }; | 691 }; |
| 696 | 692 |
| 697 class CXFA_ThisProxy : public CXFA_Object { | 693 class CXFA_ThisProxy : public CXFA_Object { |
| 698 public: | 694 public: |
| 699 CXFA_ThisProxy(CXFA_Node* pThisNode, CXFA_Node* pScriptNode); | 695 CXFA_ThisProxy(CXFA_Node* pThisNode, CXFA_Node* pScriptNode); |
| 700 ~CXFA_ThisProxy() override; | 696 ~CXFA_ThisProxy() override; |
| 701 | 697 |
| 702 CXFA_Node* GetThisNode() const; | 698 CXFA_Node* GetThisNode() const; |
| 703 CXFA_Node* GetScriptNode() const; | 699 CXFA_Node* GetScriptNode() const; |
| 704 | 700 |
| 705 private: | 701 private: |
| 706 CXFA_Node* m_pThisNode; | 702 CXFA_Node* m_pThisNode; |
| 707 CXFA_Node* m_pScriptNode; | 703 CXFA_Node* m_pScriptNode; |
| 708 }; | 704 }; |
| 709 | 705 |
| 710 class CXFA_NodeList : public CXFA_Object { | 706 class CXFA_NodeList : public CXFA_Object { |
| 711 public: | 707 public: |
| 712 explicit CXFA_NodeList(CXFA_Document* pDocument); | 708 explicit CXFA_NodeList(CXFA_Document* pDocument); |
| 713 ~CXFA_NodeList() override; | 709 ~CXFA_NodeList() override; |
| 714 | 710 |
| 715 XFA_Element GetClassID() const; | |
| 716 CXFA_Node* NamedItem(const CFX_WideStringC& wsName); | 711 CXFA_Node* NamedItem(const CFX_WideStringC& wsName); |
| 717 virtual int32_t GetLength() = 0; | 712 virtual int32_t GetLength() = 0; |
| 718 virtual FX_BOOL Append(CXFA_Node* pNode) = 0; | 713 virtual FX_BOOL Append(CXFA_Node* pNode) = 0; |
| 719 virtual FX_BOOL Insert(CXFA_Node* pNewNode, CXFA_Node* pBeforeNode) = 0; | 714 virtual FX_BOOL Insert(CXFA_Node* pNewNode, CXFA_Node* pBeforeNode) = 0; |
| 720 virtual FX_BOOL Remove(CXFA_Node* pNode) = 0; | 715 virtual FX_BOOL Remove(CXFA_Node* pNode) = 0; |
| 721 virtual CXFA_Node* Item(int32_t iIndex) = 0; | 716 virtual CXFA_Node* Item(int32_t iIndex) = 0; |
| 722 | 717 |
| 723 void Script_ListClass_Append(CFXJSE_Arguments* pArguments); | 718 void Script_ListClass_Append(CFXJSE_Arguments* pArguments); |
| 724 void Script_ListClass_Insert(CFXJSE_Arguments* pArguments); | 719 void Script_ListClass_Insert(CFXJSE_Arguments* pArguments); |
| 725 void Script_ListClass_Remove(CFXJSE_Arguments* pArguments); | 720 void Script_ListClass_Remove(CFXJSE_Arguments* pArguments); |
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 822 | 817 |
| 823 inline CXFA_Node* ToNode(CXFA_Object* pObj) { | 818 inline CXFA_Node* ToNode(CXFA_Object* pObj) { |
| 824 return pObj ? pObj->AsNode() : nullptr; | 819 return pObj ? pObj->AsNode() : nullptr; |
| 825 } | 820 } |
| 826 | 821 |
| 827 inline const CXFA_Node* ToNode(const CXFA_Object* pObj) { | 822 inline const CXFA_Node* ToNode(const CXFA_Object* pObj) { |
| 828 return pObj ? pObj->AsNode() : nullptr; | 823 return pObj ? pObj->AsNode() : nullptr; |
| 829 } | 824 } |
| 830 | 825 |
| 831 #endif // XFA_FXFA_PARSER_XFA_OBJECT_H_ | 826 #endif // XFA_FXFA_PARSER_XFA_OBJECT_H_ |
| OLD | NEW |