OLD | NEW |
| (Empty) |
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_FXFA_PARSER_XFA_SCRIPT_RESOLVEPROCESSOR_H_ | |
8 #define XFA_FXFA_PARSER_XFA_SCRIPT_RESOLVEPROCESSOR_H_ | |
9 | |
10 #include "xfa/fxfa/parser/xfa_object.h" | |
11 #include "xfa/fxfa/parser/xfa_script.h" | |
12 | |
13 class CXFA_NodeHelper; | |
14 class CXFA_ScriptContext; | |
15 | |
16 class CXFA_ResolveNodesData { | |
17 public: | |
18 CXFA_ResolveNodesData(CXFA_ScriptContext* pSC = nullptr); | |
19 ~CXFA_ResolveNodesData(); | |
20 | |
21 CXFA_ScriptContext* m_pSC; | |
22 CXFA_Object* m_CurNode; | |
23 CFX_WideString m_wsName; | |
24 XFA_HashCode m_uHashName; | |
25 CFX_WideString m_wsCondition; | |
26 int32_t m_nLevel; | |
27 CXFA_ObjArray m_Nodes; | |
28 uint32_t m_dwStyles; | |
29 const XFA_SCRIPTATTRIBUTEINFO* m_pScriptAttribute; | |
30 XFA_RESOVENODE_RSTYPE m_dwFlag; | |
31 }; | |
32 | |
33 class CXFA_ResolveProcessor { | |
34 public: | |
35 CXFA_ResolveProcessor(); | |
36 ~CXFA_ResolveProcessor(); | |
37 | |
38 int32_t Resolve(CXFA_ResolveNodesData& rnd); | |
39 int32_t GetFilter(const CFX_WideStringC& wsExpression, | |
40 int32_t nStart, | |
41 CXFA_ResolveNodesData& rnd); | |
42 int32_t SetResultCreateNode(XFA_RESOLVENODE_RS& resolveNodeRS, | |
43 CFX_WideString& wsLastCondition); | |
44 void SetIndexDataBind(CFX_WideString& wsNextCondition, | |
45 int32_t& iIndex, | |
46 int32_t iCount); | |
47 void SetCurStart(int32_t start) { m_iCurStart = start; } | |
48 | |
49 CXFA_NodeHelper* GetNodeHelper() { return m_pNodeHelper; } | |
50 | |
51 private: | |
52 int32_t ResolveForAttributeRs(CXFA_Object* curNode, | |
53 CXFA_ResolveNodesData& rnd, | |
54 const CFX_WideStringC& strAttr); | |
55 int32_t ResolveAnyChild(CXFA_ResolveNodesData& rnd); | |
56 int32_t ResolveDollar(CXFA_ResolveNodesData& rnd); | |
57 int32_t ResolveExcalmatory(CXFA_ResolveNodesData& rnd); | |
58 int32_t ResolveNumberSign(CXFA_ResolveNodesData& rnd); | |
59 int32_t ResolveAsterisk(CXFA_ResolveNodesData& rnd); | |
60 int32_t ResolveNormal(CXFA_ResolveNodesData& rnd); | |
61 int32_t ResolvePopStack(CFX_Int32Array& stack); | |
62 void SetStylesForChild(uint32_t dwParentStyles, CXFA_ResolveNodesData& rnd); | |
63 | |
64 void ConditionArray(int32_t iCurIndex, | |
65 CFX_WideString wsCondition, | |
66 int32_t iFoundCount, | |
67 CXFA_ResolveNodesData& rnd); | |
68 void DoPredicateFilter(int32_t iCurIndex, | |
69 CFX_WideString wsCondition, | |
70 int32_t iFoundCount, | |
71 CXFA_ResolveNodesData& rnd); | |
72 void FilterCondition(CXFA_ResolveNodesData& rnd, CFX_WideString wsCondition); | |
73 | |
74 int32_t m_iCurStart; | |
75 CXFA_NodeHelper* m_pNodeHelper; | |
76 }; | |
77 | |
78 #endif // XFA_FXFA_PARSER_XFA_SCRIPT_RESOLVEPROCESSOR_H_ | |
OLD | NEW |