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 |