1 // Copyright 2014 PDFium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6 7 #ifndef _XFA_NODEHELPER_H_ 8 #define _XFA_NODEHELPER_H_ 9 class CXFA_ScriptContext; 10 enum XFA_LOGIC_TYPE { 11 XFA_LOGIC_NoTransparent, 12 XFA_LOGIC_Transparent, 13 }; 14 class CXFA_NodeHelper { 15 public: 16 CXFA_NodeHelper(void); 17 ~CXFA_NodeHelper(void); 18 CXFA_Node* XFA_ResolveNodes_GetOneChild(CXFA_Node* parent, 19 const FX_WCHAR* pwsName, 20 FX_BOOL bIsClassName = FALSE); 21 CXFA_Node* XFA_ResolveNodes_GetParent( 22 CXFA_Node* pNode, 23 XFA_LOGIC_TYPE eLogicType = XFA_LOGIC_NoTransparent); 24 25 int32_t XFA_NodeAcc_TraverseSiblings(CXFA_Node* parent, 26 FX_DWORD dNameHash, 27 CXFA_NodeArray* pSiblings, 28 XFA_LOGIC_TYPE eLogicType, 29 FX_BOOL bIsClassName = FALSE, 30 FX_BOOL bIsFindProperty = TRUE); 31 int32_t XFA_NodeAcc_TraverseAnySiblings(CXFA_Node* parent, 32 FX_DWORD dNameHash, 33 CXFA_NodeArray* pSiblings, 34 FX_BOOL bIsClassName = FALSE); 35 int32_t XFA_CountSiblings(CXFA_Node* pNode, 36 XFA_LOGIC_TYPE eLogicType, 37 CXFA_NodeArray* pSiblings, 38 FX_BOOL bIsClassName = FALSE); 39 int32_t XFA_GetIndex(CXFA_Node* pNode, 40 XFA_LOGIC_TYPE eLogicType = XFA_LOGIC_NoTransparent, 41 FX_BOOL bIsProperty = FALSE, 42 FX_BOOL bIsClassIndex = FALSE); 43 void XFA_GetNameExpression( 44 CXFA_Node* refNode, 45 CFX_WideString& wsName, 46 FX_BOOL bIsAllPath, 47 XFA_LOGIC_TYPE eLogicType = XFA_LOGIC_NoTransparent); 48 FX_BOOL XFA_NodeIsTransparent(CXFA_Node* refNode); 49 FX_BOOL XFA_ResolveNodes_CreateNode(CFX_WideString wsName, 50 CFX_WideString wsCondition, 51 FX_BOOL bLastNode, 52 CXFA_ScriptContext* pScriptContext); 53 FX_BOOL XFA_CreateNode_ForCondition(CFX_WideString& wsCondition); 54 void XFA_SetCreateNodeType(CXFA_Node* refNode); 55 FX_BOOL XFA_NodeIsProperty(CXFA_Node* refNode); 56 57 public: 58 XFA_ELEMENT m_eLastCreateType; 59 CXFA_Node* m_pCreateParent; 60 int32_t m_iCreateCount; 61 XFA_RESOVENODE_RSTYPE m_iCreateFlag; 62 int32_t m_iCurAllStart; 63 CXFA_Node* m_pAllStartParent; 64 }; 65 #endif 66