Home | History | Annotate | Download | only in parser
      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_RESOLVEPROCESSOR_H_
      8 #define _XFA_RESOLVEPROCESSOR_H_
      9 class CXFA_NodeHelper;
     10 class CXFA_ScriptContext;
     11 class CXFA_ResolveNodesData {
     12  public:
     13   CXFA_ResolveNodesData(CXFA_ScriptContext* pSC = NULL)
     14       : m_pSC(pSC),
     15         m_CurNode(NULL),
     16         m_wsName(),
     17         m_uHashName(0),
     18         m_wsCondition(),
     19         m_nLevel(0),
     20         m_Nodes(),
     21         m_dwStyles(XFA_RESOLVENODE_Children),
     22         m_pScriptAttribute(NULL),
     23         m_dwFlag(XFA_RESOVENODE_RSTYPE_Nodes) {}
     24   ~CXFA_ResolveNodesData() { m_Nodes.RemoveAll(); }
     25   CXFA_ScriptContext* m_pSC;
     26   CXFA_Object* m_CurNode;
     27   CFX_WideString m_wsName;
     28   uint32_t m_uHashName;
     29   CFX_WideString m_wsCondition;
     30   int32_t m_nLevel;
     31   CXFA_ObjArray m_Nodes;
     32   FX_DWORD m_dwStyles;
     33   XFA_LPCSCRIPTATTRIBUTEINFO m_pScriptAttribute;
     34   XFA_RESOVENODE_RSTYPE m_dwFlag;
     35 };
     36 class CXFA_ResolveProcessor {
     37  public:
     38   CXFA_ResolveProcessor(void);
     39   ~CXFA_ResolveProcessor(void);
     40   int32_t XFA_ResolveNodes(CXFA_ResolveNodesData& rnd);
     41   int32_t XFA_ResolveNodes_AnyChild(CXFA_ResolveNodesData& rnd);
     42   int32_t XFA_ResolveNodes_Dollar(CXFA_ResolveNodesData& rnd);
     43   int32_t XFA_ResolveNodes_Excalmatory(CXFA_ResolveNodesData& rnd);
     44   int32_t XFA_ResolveNodes_NumberSign(CXFA_ResolveNodesData& rnd);
     45   int32_t XFA_ResolveNodes_Asterisk(CXFA_ResolveNodesData& rnd);
     46   int32_t XFA_ResolveNodes_Normal(CXFA_ResolveNodesData& rnd);
     47   int32_t XFA_ResolveNodes_ForAttributeRs(CXFA_Object* curNode,
     48                                           CXFA_ResolveNodesData& rnd,
     49                                           const CFX_WideStringC& strAttr);
     50   void XFA_ResolveNode_ConditionArray(int32_t iCurIndex,
     51                                       CFX_WideString wsCondition,
     52                                       int32_t iFoundCount,
     53                                       CXFA_ResolveNodesData& rnd);
     54   void XFA_ResolveNode_DoPredicateFilter(int32_t iCurIndex,
     55                                          CFX_WideString wsCondition,
     56                                          int32_t iFoundCount,
     57                                          CXFA_ResolveNodesData& rnd);
     58   int32_t XFA_ResolveNodes_GetFilter(const CFX_WideStringC& wsExpression,
     59                                      int32_t nStart,
     60                                      CXFA_ResolveNodesData& rnd);
     61   void XFA_ResolveNode_FilterCondition(CXFA_ResolveNodesData& rnd,
     62                                        CFX_WideString wsCondition);
     63   int32_t XFA_ResolveNodes_PopStack(CFX_Int32Array& stack);
     64   void XFA_ResolveNodes_SetStylesForChild(FX_DWORD dwParentStyles,
     65                                           CXFA_ResolveNodesData& rnd);
     66   int32_t XFA_ResolveNode_SetResultCreateNode(XFA_RESOLVENODE_RS& resolveNodeRS,
     67                                               CFX_WideString& wsLastCondition);
     68   void XFA_ResolveNode_SetIndexDataBind(CFX_WideString& wsNextCondition,
     69                                         int32_t& iIndex,
     70                                         int32_t iCount);
     71   CXFA_NodeHelper* GetNodeHelper() { return m_pNodeHelper; }
     72 
     73  private:
     74   CXFA_NodeHelper* m_pNodeHelper;
     75 
     76  public:
     77   int32_t m_iCurStart;
     78 };
     79 #endif
     80