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_FM2JS_XFA_EXPRESSION_H_ | 7 #ifndef XFA_FXFA_FM2JS_XFA_EXPRESSION_H_ |
8 #define XFA_FXFA_FM2JS_XFA_EXPRESSION_H_ | 8 #define XFA_FXFA_FM2JS_XFA_EXPRESSION_H_ |
9 | 9 |
10 #include <memory> | 10 #include <memory> |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
56 CFX_WideStringC m_wsName; | 56 CFX_WideStringC m_wsName; |
57 std::unique_ptr<CFX_WideStringCArray> m_pArguments; | 57 std::unique_ptr<CFX_WideStringCArray> m_pArguments; |
58 std::vector<std::unique_ptr<CXFA_FMExpression>> m_pExpressions; | 58 std::vector<std::unique_ptr<CXFA_FMExpression>> m_pExpressions; |
59 bool m_isGlobal; | 59 bool m_isGlobal; |
60 }; | 60 }; |
61 | 61 |
62 class CXFA_FMVarExpression : public CXFA_FMExpression { | 62 class CXFA_FMVarExpression : public CXFA_FMExpression { |
63 public: | 63 public: |
64 CXFA_FMVarExpression(uint32_t line, | 64 CXFA_FMVarExpression(uint32_t line, |
65 const CFX_WideStringC& wsName, | 65 const CFX_WideStringC& wsName, |
66 CXFA_FMExpression* pInit); | 66 std::unique_ptr<CXFA_FMExpression> pInit); |
67 ~CXFA_FMVarExpression() override; | 67 ~CXFA_FMVarExpression() override; |
68 | 68 |
69 void ToJavaScript(CFX_WideTextBuf& javascript) override; | 69 void ToJavaScript(CFX_WideTextBuf& javascript) override; |
70 void ToImpliedReturnJS(CFX_WideTextBuf&) override; | 70 void ToImpliedReturnJS(CFX_WideTextBuf&) override; |
71 | 71 |
72 private: | 72 private: |
73 CFX_WideStringC m_wsName; | 73 CFX_WideStringC m_wsName; |
74 std::unique_ptr<CXFA_FMExpression> m_pInit; | 74 std::unique_ptr<CXFA_FMExpression> m_pInit; |
75 }; | 75 }; |
76 | 76 |
77 class CXFA_FMExpExpression : public CXFA_FMExpression { | 77 class CXFA_FMExpExpression : public CXFA_FMExpression { |
78 public: | 78 public: |
79 CXFA_FMExpExpression(uint32_t line, CXFA_FMSimpleExpression* pExpression); | 79 CXFA_FMExpExpression(uint32_t line, |
| 80 std::unique_ptr<CXFA_FMSimpleExpression> pExpression); |
80 ~CXFA_FMExpExpression() override; | 81 ~CXFA_FMExpExpression() override; |
81 | 82 |
82 void ToJavaScript(CFX_WideTextBuf& javascript) override; | 83 void ToJavaScript(CFX_WideTextBuf& javascript) override; |
83 void ToImpliedReturnJS(CFX_WideTextBuf&) override; | 84 void ToImpliedReturnJS(CFX_WideTextBuf&) override; |
84 | 85 |
85 private: | 86 private: |
86 std::unique_ptr<CXFA_FMSimpleExpression> m_pExpression; | 87 std::unique_ptr<CXFA_FMSimpleExpression> m_pExpression; |
87 }; | 88 }; |
88 | 89 |
89 class CXFA_FMBlockExpression : public CXFA_FMExpression { | 90 class CXFA_FMBlockExpression : public CXFA_FMExpression { |
90 public: | 91 public: |
91 CXFA_FMBlockExpression( | 92 CXFA_FMBlockExpression( |
92 uint32_t line, | 93 uint32_t line, |
93 std::vector<std::unique_ptr<CXFA_FMExpression>>&& pExpressionList); | 94 std::vector<std::unique_ptr<CXFA_FMExpression>>&& pExpressionList); |
94 ~CXFA_FMBlockExpression() override; | 95 ~CXFA_FMBlockExpression() override; |
95 | 96 |
96 void ToJavaScript(CFX_WideTextBuf& javascript) override; | 97 void ToJavaScript(CFX_WideTextBuf& javascript) override; |
97 void ToImpliedReturnJS(CFX_WideTextBuf&) override; | 98 void ToImpliedReturnJS(CFX_WideTextBuf&) override; |
98 | 99 |
99 private: | 100 private: |
100 std::vector<std::unique_ptr<CXFA_FMExpression>> m_ExpressionList; | 101 std::vector<std::unique_ptr<CXFA_FMExpression>> m_ExpressionList; |
101 }; | 102 }; |
102 | 103 |
103 class CXFA_FMDoExpression : public CXFA_FMExpression { | 104 class CXFA_FMDoExpression : public CXFA_FMExpression { |
104 public: | 105 public: |
105 CXFA_FMDoExpression(uint32_t line, CXFA_FMExpression* pList); | 106 CXFA_FMDoExpression(uint32_t line, std::unique_ptr<CXFA_FMExpression> pList); |
106 ~CXFA_FMDoExpression() override; | 107 ~CXFA_FMDoExpression() override; |
107 | 108 |
108 void ToJavaScript(CFX_WideTextBuf& javascript) override; | 109 void ToJavaScript(CFX_WideTextBuf& javascript) override; |
109 void ToImpliedReturnJS(CFX_WideTextBuf&) override; | 110 void ToImpliedReturnJS(CFX_WideTextBuf&) override; |
110 | 111 |
111 private: | 112 private: |
112 std::unique_ptr<CXFA_FMExpression> m_pList; | 113 std::unique_ptr<CXFA_FMExpression> m_pList; |
113 }; | 114 }; |
114 | 115 |
115 class CXFA_FMIfExpression : public CXFA_FMExpression { | 116 class CXFA_FMIfExpression : public CXFA_FMExpression { |
116 public: | 117 public: |
117 CXFA_FMIfExpression(uint32_t line, | 118 CXFA_FMIfExpression(uint32_t line, |
118 CXFA_FMSimpleExpression* pExpression, | 119 std::unique_ptr<CXFA_FMSimpleExpression> pExpression, |
119 CXFA_FMExpression* pIfExpression, | 120 std::unique_ptr<CXFA_FMExpression> pIfExpression, |
120 CXFA_FMExpression* pElseExpression); | 121 std::unique_ptr<CXFA_FMExpression> pElseExpression); |
121 ~CXFA_FMIfExpression() override; | 122 ~CXFA_FMIfExpression() override; |
122 | 123 |
123 void ToJavaScript(CFX_WideTextBuf& javascript) override; | 124 void ToJavaScript(CFX_WideTextBuf& javascript) override; |
124 void ToImpliedReturnJS(CFX_WideTextBuf&) override; | 125 void ToImpliedReturnJS(CFX_WideTextBuf&) override; |
125 | 126 |
126 private: | 127 private: |
127 std::unique_ptr<CXFA_FMSimpleExpression> m_pExpression; | 128 std::unique_ptr<CXFA_FMSimpleExpression> m_pExpression; |
128 std::unique_ptr<CXFA_FMExpression> m_pIfExpression; | 129 std::unique_ptr<CXFA_FMExpression> m_pIfExpression; |
129 std::unique_ptr<CXFA_FMExpression> m_pElseExpression; | 130 std::unique_ptr<CXFA_FMExpression> m_pElseExpression; |
130 }; | 131 }; |
131 | 132 |
132 class CXFA_FMLoopExpression : public CXFA_FMExpression { | 133 class CXFA_FMLoopExpression : public CXFA_FMExpression { |
133 public: | 134 public: |
134 explicit CXFA_FMLoopExpression(uint32_t line) : CXFA_FMExpression(line) {} | 135 explicit CXFA_FMLoopExpression(uint32_t line) : CXFA_FMExpression(line) {} |
135 ~CXFA_FMLoopExpression() override; | 136 ~CXFA_FMLoopExpression() override; |
136 void ToJavaScript(CFX_WideTextBuf& javascript) override; | 137 void ToJavaScript(CFX_WideTextBuf& javascript) override; |
137 void ToImpliedReturnJS(CFX_WideTextBuf&) override; | 138 void ToImpliedReturnJS(CFX_WideTextBuf&) override; |
138 }; | 139 }; |
139 | 140 |
140 class CXFA_FMWhileExpression : public CXFA_FMLoopExpression { | 141 class CXFA_FMWhileExpression : public CXFA_FMLoopExpression { |
141 public: | 142 public: |
142 CXFA_FMWhileExpression(uint32_t line, | 143 CXFA_FMWhileExpression(uint32_t line, |
143 CXFA_FMSimpleExpression* pCodition, | 144 std::unique_ptr<CXFA_FMSimpleExpression> pCodition, |
144 CXFA_FMExpression* pExpression); | 145 std::unique_ptr<CXFA_FMExpression> pExpression); |
145 ~CXFA_FMWhileExpression() override; | 146 ~CXFA_FMWhileExpression() override; |
146 | 147 |
147 void ToJavaScript(CFX_WideTextBuf& javascript) override; | 148 void ToJavaScript(CFX_WideTextBuf& javascript) override; |
148 void ToImpliedReturnJS(CFX_WideTextBuf&) override; | 149 void ToImpliedReturnJS(CFX_WideTextBuf&) override; |
149 | 150 |
150 private: | 151 private: |
151 std::unique_ptr<CXFA_FMSimpleExpression> m_pCondition; | 152 std::unique_ptr<CXFA_FMSimpleExpression> m_pCondition; |
152 std::unique_ptr<CXFA_FMExpression> m_pExpression; | 153 std::unique_ptr<CXFA_FMExpression> m_pExpression; |
153 }; | 154 }; |
154 | 155 |
(...skipping 10 matching lines...) Expand all Loading... |
165 explicit CXFA_FMContinueExpression(uint32_t line); | 166 explicit CXFA_FMContinueExpression(uint32_t line); |
166 ~CXFA_FMContinueExpression() override; | 167 ~CXFA_FMContinueExpression() override; |
167 void ToJavaScript(CFX_WideTextBuf& javascript) override; | 168 void ToJavaScript(CFX_WideTextBuf& javascript) override; |
168 void ToImpliedReturnJS(CFX_WideTextBuf&) override; | 169 void ToImpliedReturnJS(CFX_WideTextBuf&) override; |
169 }; | 170 }; |
170 | 171 |
171 class CXFA_FMForExpression : public CXFA_FMLoopExpression { | 172 class CXFA_FMForExpression : public CXFA_FMLoopExpression { |
172 public: | 173 public: |
173 CXFA_FMForExpression(uint32_t line, | 174 CXFA_FMForExpression(uint32_t line, |
174 const CFX_WideStringC& wsVariant, | 175 const CFX_WideStringC& wsVariant, |
175 CXFA_FMSimpleExpression* pAssignment, | 176 std::unique_ptr<CXFA_FMSimpleExpression> pAssignment, |
176 CXFA_FMSimpleExpression* pAccessor, | 177 std::unique_ptr<CXFA_FMSimpleExpression> pAccessor, |
177 int32_t iDirection, | 178 int32_t iDirection, |
178 CXFA_FMSimpleExpression* pStep, | 179 std::unique_ptr<CXFA_FMSimpleExpression> pStep, |
179 CXFA_FMExpression* pList); | 180 std::unique_ptr<CXFA_FMExpression> pList); |
180 ~CXFA_FMForExpression() override; | 181 ~CXFA_FMForExpression() override; |
181 | 182 |
182 void ToJavaScript(CFX_WideTextBuf& javascript) override; | 183 void ToJavaScript(CFX_WideTextBuf& javascript) override; |
183 void ToImpliedReturnJS(CFX_WideTextBuf&) override; | 184 void ToImpliedReturnJS(CFX_WideTextBuf&) override; |
184 | 185 |
185 private: | 186 private: |
186 CFX_WideStringC m_wsVariant; | 187 CFX_WideStringC m_wsVariant; |
187 std::unique_ptr<CXFA_FMSimpleExpression> m_pAssignment; | 188 std::unique_ptr<CXFA_FMSimpleExpression> m_pAssignment; |
188 std::unique_ptr<CXFA_FMSimpleExpression> m_pAccessor; | 189 std::unique_ptr<CXFA_FMSimpleExpression> m_pAccessor; |
189 int32_t m_iDirection; | 190 int32_t m_iDirection; |
190 std::unique_ptr<CXFA_FMSimpleExpression> m_pStep; | 191 std::unique_ptr<CXFA_FMSimpleExpression> m_pStep; |
191 std::unique_ptr<CXFA_FMExpression> m_pList; | 192 std::unique_ptr<CXFA_FMExpression> m_pList; |
192 }; | 193 }; |
193 | 194 |
194 class CXFA_FMForeachExpression : public CXFA_FMLoopExpression { | 195 class CXFA_FMForeachExpression : public CXFA_FMLoopExpression { |
195 public: | 196 public: |
196 // Takes ownership of |pAccessors|. | 197 // Takes ownership of |pAccessors|. |
197 CXFA_FMForeachExpression( | 198 CXFA_FMForeachExpression( |
198 uint32_t line, | 199 uint32_t line, |
199 const CFX_WideStringC& wsIdentifier, | 200 const CFX_WideStringC& wsIdentifier, |
200 std::vector<std::unique_ptr<CXFA_FMSimpleExpression>>&& pAccessors, | 201 std::vector<std::unique_ptr<CXFA_FMSimpleExpression>>&& pAccessors, |
201 CXFA_FMExpression* pList); | 202 std::unique_ptr<CXFA_FMExpression> pList); |
202 ~CXFA_FMForeachExpression() override; | 203 ~CXFA_FMForeachExpression() override; |
203 | 204 |
204 void ToJavaScript(CFX_WideTextBuf& javascript) override; | 205 void ToJavaScript(CFX_WideTextBuf& javascript) override; |
205 void ToImpliedReturnJS(CFX_WideTextBuf&) override; | 206 void ToImpliedReturnJS(CFX_WideTextBuf&) override; |
206 | 207 |
207 private: | 208 private: |
208 CFX_WideStringC m_wsIdentifier; | 209 CFX_WideStringC m_wsIdentifier; |
209 std::vector<std::unique_ptr<CXFA_FMSimpleExpression>> m_pAccessors; | 210 std::vector<std::unique_ptr<CXFA_FMSimpleExpression>> m_pAccessors; |
210 std::unique_ptr<CXFA_FMExpression> m_pList; | 211 std::unique_ptr<CXFA_FMExpression> m_pList; |
211 }; | 212 }; |
212 | 213 |
213 #endif // XFA_FXFA_FM2JS_XFA_EXPRESSION_H_ | 214 #endif // XFA_FXFA_FM2JS_XFA_EXPRESSION_H_ |
OLD | NEW |