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_SIMPLEEXPRESSION_H_ | 7 #ifndef XFA_FXFA_FM2JS_XFA_SIMPLEEXPRESSION_H_ |
8 #define XFA_FXFA_FM2JS_XFA_SIMPLEEXPRESSION_H_ | 8 #define XFA_FXFA_FM2JS_XFA_SIMPLEEXPRESSION_H_ |
9 | 9 |
10 #include <memory> | 10 #include <memory> |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
104 void ToJavaScript(CFX_WideTextBuf& javascript) override; | 104 void ToJavaScript(CFX_WideTextBuf& javascript) override; |
105 | 105 |
106 private: | 106 private: |
107 CFX_WideStringC m_wsIdentifier; | 107 CFX_WideStringC m_wsIdentifier; |
108 }; | 108 }; |
109 | 109 |
110 class CXFA_FMUnaryExpression : public CXFA_FMSimpleExpression { | 110 class CXFA_FMUnaryExpression : public CXFA_FMSimpleExpression { |
111 public: | 111 public: |
112 CXFA_FMUnaryExpression(uint32_t line, | 112 CXFA_FMUnaryExpression(uint32_t line, |
113 XFA_FM_TOKEN op, | 113 XFA_FM_TOKEN op, |
114 CXFA_FMSimpleExpression* pExp); | 114 std::unique_ptr<CXFA_FMSimpleExpression> pExp); |
115 ~CXFA_FMUnaryExpression() override; | 115 ~CXFA_FMUnaryExpression() override; |
116 | 116 |
117 void ToJavaScript(CFX_WideTextBuf& javascript) override; | 117 void ToJavaScript(CFX_WideTextBuf& javascript) override; |
118 | 118 |
119 protected: | 119 protected: |
120 std::unique_ptr<CXFA_FMSimpleExpression> m_pExp; | 120 std::unique_ptr<CXFA_FMSimpleExpression> m_pExp; |
121 }; | 121 }; |
122 | 122 |
123 class CXFA_FMBinExpression : public CXFA_FMSimpleExpression { | 123 class CXFA_FMBinExpression : public CXFA_FMSimpleExpression { |
124 public: | 124 public: |
125 CXFA_FMBinExpression(uint32_t line, | 125 CXFA_FMBinExpression(uint32_t line, |
126 XFA_FM_TOKEN op, | 126 XFA_FM_TOKEN op, |
127 CXFA_FMSimpleExpression* pExp1, | 127 std::unique_ptr<CXFA_FMSimpleExpression> pExp1, |
128 CXFA_FMSimpleExpression* pExp2); | 128 std::unique_ptr<CXFA_FMSimpleExpression> pExp2); |
129 ~CXFA_FMBinExpression() override; | 129 ~CXFA_FMBinExpression() override; |
130 | 130 |
131 void ToJavaScript(CFX_WideTextBuf& javascript) override; | 131 void ToJavaScript(CFX_WideTextBuf& javascript) override; |
132 | 132 |
133 protected: | 133 protected: |
134 std::unique_ptr<CXFA_FMSimpleExpression> m_pExp1; | 134 std::unique_ptr<CXFA_FMSimpleExpression> m_pExp1; |
135 std::unique_ptr<CXFA_FMSimpleExpression> m_pExp2; | 135 std::unique_ptr<CXFA_FMSimpleExpression> m_pExp2; |
136 }; | 136 }; |
137 | 137 |
138 class CXFA_FMAssignExpression : public CXFA_FMBinExpression { | 138 class CXFA_FMAssignExpression : public CXFA_FMBinExpression { |
139 public: | 139 public: |
140 CXFA_FMAssignExpression(uint32_t line, | 140 CXFA_FMAssignExpression(uint32_t line, |
141 XFA_FM_TOKEN op, | 141 XFA_FM_TOKEN op, |
142 CXFA_FMSimpleExpression* pExp1, | 142 std::unique_ptr<CXFA_FMSimpleExpression> pExp1, |
143 CXFA_FMSimpleExpression* pExp2); | 143 std::unique_ptr<CXFA_FMSimpleExpression> pExp2); |
144 ~CXFA_FMAssignExpression() override {} | 144 ~CXFA_FMAssignExpression() override {} |
145 void ToJavaScript(CFX_WideTextBuf& javascript) override; | 145 void ToJavaScript(CFX_WideTextBuf& javascript) override; |
146 void ToImpliedReturnJS(CFX_WideTextBuf& javascript) override; | 146 void ToImpliedReturnJS(CFX_WideTextBuf& javascript) override; |
147 }; | 147 }; |
148 | 148 |
149 class CXFA_FMLogicalOrExpression : public CXFA_FMBinExpression { | 149 class CXFA_FMLogicalOrExpression : public CXFA_FMBinExpression { |
150 public: | 150 public: |
151 CXFA_FMLogicalOrExpression(uint32_t line, | 151 CXFA_FMLogicalOrExpression(uint32_t line, |
152 XFA_FM_TOKEN op, | 152 XFA_FM_TOKEN op, |
153 CXFA_FMSimpleExpression* pExp1, | 153 std::unique_ptr<CXFA_FMSimpleExpression> pExp1, |
154 CXFA_FMSimpleExpression* pExp2); | 154 std::unique_ptr<CXFA_FMSimpleExpression> pExp2); |
155 ~CXFA_FMLogicalOrExpression() override {} | 155 ~CXFA_FMLogicalOrExpression() override {} |
156 void ToJavaScript(CFX_WideTextBuf& javascript) override; | 156 void ToJavaScript(CFX_WideTextBuf& javascript) override; |
157 }; | 157 }; |
158 | 158 |
159 class CXFA_FMLogicalAndExpression : public CXFA_FMBinExpression { | 159 class CXFA_FMLogicalAndExpression : public CXFA_FMBinExpression { |
160 public: | 160 public: |
161 CXFA_FMLogicalAndExpression(uint32_t line, | 161 CXFA_FMLogicalAndExpression(uint32_t line, |
162 XFA_FM_TOKEN op, | 162 XFA_FM_TOKEN op, |
163 CXFA_FMSimpleExpression* pExp1, | 163 std::unique_ptr<CXFA_FMSimpleExpression> pExp1, |
164 CXFA_FMSimpleExpression* pExp2); | 164 std::unique_ptr<CXFA_FMSimpleExpression> pExp2); |
165 ~CXFA_FMLogicalAndExpression() override {} | 165 ~CXFA_FMLogicalAndExpression() override {} |
166 void ToJavaScript(CFX_WideTextBuf& javascript) override; | 166 void ToJavaScript(CFX_WideTextBuf& javascript) override; |
167 }; | 167 }; |
168 | 168 |
169 class CXFA_FMEqualityExpression : public CXFA_FMBinExpression { | 169 class CXFA_FMEqualityExpression : public CXFA_FMBinExpression { |
170 public: | 170 public: |
171 CXFA_FMEqualityExpression(uint32_t line, | 171 CXFA_FMEqualityExpression(uint32_t line, |
172 XFA_FM_TOKEN op, | 172 XFA_FM_TOKEN op, |
173 CXFA_FMSimpleExpression* pExp1, | 173 std::unique_ptr<CXFA_FMSimpleExpression> pExp1, |
174 CXFA_FMSimpleExpression* pExp2); | 174 std::unique_ptr<CXFA_FMSimpleExpression> pExp2); |
175 ~CXFA_FMEqualityExpression() override {} | 175 ~CXFA_FMEqualityExpression() override {} |
176 void ToJavaScript(CFX_WideTextBuf& javascript) override; | 176 void ToJavaScript(CFX_WideTextBuf& javascript) override; |
177 }; | 177 }; |
178 | 178 |
179 class CXFA_FMRelationalExpression : public CXFA_FMBinExpression { | 179 class CXFA_FMRelationalExpression : public CXFA_FMBinExpression { |
180 public: | 180 public: |
181 CXFA_FMRelationalExpression(uint32_t line, | 181 CXFA_FMRelationalExpression(uint32_t line, |
182 XFA_FM_TOKEN op, | 182 XFA_FM_TOKEN op, |
183 CXFA_FMSimpleExpression* pExp1, | 183 std::unique_ptr<CXFA_FMSimpleExpression> pExp1, |
184 CXFA_FMSimpleExpression* pExp2); | 184 std::unique_ptr<CXFA_FMSimpleExpression> pExp2); |
185 ~CXFA_FMRelationalExpression() override {} | 185 ~CXFA_FMRelationalExpression() override {} |
186 void ToJavaScript(CFX_WideTextBuf& javascript) override; | 186 void ToJavaScript(CFX_WideTextBuf& javascript) override; |
187 }; | 187 }; |
188 | 188 |
189 class CXFA_FMAdditiveExpression : public CXFA_FMBinExpression { | 189 class CXFA_FMAdditiveExpression : public CXFA_FMBinExpression { |
190 public: | 190 public: |
191 CXFA_FMAdditiveExpression(uint32_t line, | 191 CXFA_FMAdditiveExpression(uint32_t line, |
192 XFA_FM_TOKEN op, | 192 XFA_FM_TOKEN op, |
193 CXFA_FMSimpleExpression* pExp1, | 193 std::unique_ptr<CXFA_FMSimpleExpression> pExp1, |
194 CXFA_FMSimpleExpression* pExp2); | 194 std::unique_ptr<CXFA_FMSimpleExpression> pExp2); |
195 ~CXFA_FMAdditiveExpression() override {} | 195 ~CXFA_FMAdditiveExpression() override {} |
196 void ToJavaScript(CFX_WideTextBuf& javascript) override; | 196 void ToJavaScript(CFX_WideTextBuf& javascript) override; |
197 }; | 197 }; |
198 | 198 |
199 class CXFA_FMMultiplicativeExpression : public CXFA_FMBinExpression { | 199 class CXFA_FMMultiplicativeExpression : public CXFA_FMBinExpression { |
200 public: | 200 public: |
201 CXFA_FMMultiplicativeExpression(uint32_t line, | 201 CXFA_FMMultiplicativeExpression( |
202 XFA_FM_TOKEN op, | 202 uint32_t line, |
203 CXFA_FMSimpleExpression* pExp1, | 203 XFA_FM_TOKEN op, |
204 CXFA_FMSimpleExpression* pExp2); | 204 std::unique_ptr<CXFA_FMSimpleExpression> pExp1, |
| 205 std::unique_ptr<CXFA_FMSimpleExpression> pExp2); |
205 ~CXFA_FMMultiplicativeExpression() override {} | 206 ~CXFA_FMMultiplicativeExpression() override {} |
206 void ToJavaScript(CFX_WideTextBuf& javascript) override; | 207 void ToJavaScript(CFX_WideTextBuf& javascript) override; |
207 }; | 208 }; |
208 | 209 |
209 class CXFA_FMPosExpression : public CXFA_FMUnaryExpression { | 210 class CXFA_FMPosExpression : public CXFA_FMUnaryExpression { |
210 public: | 211 public: |
211 CXFA_FMPosExpression(uint32_t line, CXFA_FMSimpleExpression* pExp); | 212 CXFA_FMPosExpression(uint32_t line, |
| 213 std::unique_ptr<CXFA_FMSimpleExpression> pExp); |
212 ~CXFA_FMPosExpression() override {} | 214 ~CXFA_FMPosExpression() override {} |
213 void ToJavaScript(CFX_WideTextBuf& javascript) override; | 215 void ToJavaScript(CFX_WideTextBuf& javascript) override; |
214 }; | 216 }; |
215 | 217 |
216 class CXFA_FMNegExpression : public CXFA_FMUnaryExpression { | 218 class CXFA_FMNegExpression : public CXFA_FMUnaryExpression { |
217 public: | 219 public: |
218 CXFA_FMNegExpression(uint32_t line, CXFA_FMSimpleExpression* pExp); | 220 CXFA_FMNegExpression(uint32_t line, |
| 221 std::unique_ptr<CXFA_FMSimpleExpression> pExp); |
219 ~CXFA_FMNegExpression() override {} | 222 ~CXFA_FMNegExpression() override {} |
220 void ToJavaScript(CFX_WideTextBuf& javascript) override; | 223 void ToJavaScript(CFX_WideTextBuf& javascript) override; |
221 }; | 224 }; |
222 | 225 |
223 class CXFA_FMNotExpression : public CXFA_FMUnaryExpression { | 226 class CXFA_FMNotExpression : public CXFA_FMUnaryExpression { |
224 public: | 227 public: |
225 CXFA_FMNotExpression(uint32_t line, CXFA_FMSimpleExpression* pExp); | 228 CXFA_FMNotExpression(uint32_t line, |
| 229 std::unique_ptr<CXFA_FMSimpleExpression> pExp); |
226 ~CXFA_FMNotExpression() override {} | 230 ~CXFA_FMNotExpression() override {} |
227 void ToJavaScript(CFX_WideTextBuf& javascript) override; | 231 void ToJavaScript(CFX_WideTextBuf& javascript) override; |
228 }; | 232 }; |
229 | 233 |
230 class CXFA_FMCallExpression : public CXFA_FMUnaryExpression { | 234 class CXFA_FMCallExpression : public CXFA_FMUnaryExpression { |
231 public: | 235 public: |
232 CXFA_FMCallExpression( | 236 CXFA_FMCallExpression( |
233 uint32_t line, | 237 uint32_t line, |
234 CXFA_FMSimpleExpression* pExp, | 238 std::unique_ptr<CXFA_FMSimpleExpression> pExp, |
235 std::vector<std::unique_ptr<CXFA_FMSimpleExpression>>&& pArguments, | 239 std::vector<std::unique_ptr<CXFA_FMSimpleExpression>>&& pArguments, |
236 bool bIsSomMethod); | 240 bool bIsSomMethod); |
237 ~CXFA_FMCallExpression() override; | 241 ~CXFA_FMCallExpression() override; |
238 | 242 |
239 bool IsBuildInFunc(CFX_WideTextBuf* funcName); | 243 bool IsBuildInFunc(CFX_WideTextBuf* funcName); |
240 uint32_t IsMethodWithObjParam(const CFX_WideStringC& methodName); | 244 uint32_t IsMethodWithObjParam(const CFX_WideStringC& methodName); |
241 void ToJavaScript(CFX_WideTextBuf& javascript) override; | 245 void ToJavaScript(CFX_WideTextBuf& javascript) override; |
242 | 246 |
243 private: | 247 private: |
244 bool m_bIsSomMethod; | 248 bool m_bIsSomMethod; |
245 std::vector<std::unique_ptr<CXFA_FMSimpleExpression>> m_Arguments; | 249 std::vector<std::unique_ptr<CXFA_FMSimpleExpression>> m_Arguments; |
246 }; | 250 }; |
247 | 251 |
248 class CXFA_FMDotAccessorExpression : public CXFA_FMBinExpression { | 252 class CXFA_FMDotAccessorExpression : public CXFA_FMBinExpression { |
249 public: | 253 public: |
250 CXFA_FMDotAccessorExpression(uint32_t line, | 254 CXFA_FMDotAccessorExpression( |
251 CXFA_FMSimpleExpression* pAccessor, | 255 uint32_t line, |
252 XFA_FM_TOKEN op, | 256 std::unique_ptr<CXFA_FMSimpleExpression> pAccessor, |
253 CFX_WideStringC wsIdentifier, | 257 XFA_FM_TOKEN op, |
254 CXFA_FMSimpleExpression* pIndexExp); | 258 CFX_WideStringC wsIdentifier, |
| 259 std::unique_ptr<CXFA_FMSimpleExpression> pIndexExp); |
255 ~CXFA_FMDotAccessorExpression() override; | 260 ~CXFA_FMDotAccessorExpression() override; |
256 void ToJavaScript(CFX_WideTextBuf& javascript) override; | 261 void ToJavaScript(CFX_WideTextBuf& javascript) override; |
257 | 262 |
258 private: | 263 private: |
259 CFX_WideStringC m_wsIdentifier; | 264 CFX_WideStringC m_wsIdentifier; |
260 }; | 265 }; |
261 | 266 |
262 class CXFA_FMIndexExpression : public CXFA_FMUnaryExpression { | 267 class CXFA_FMIndexExpression : public CXFA_FMUnaryExpression { |
263 public: | 268 public: |
264 CXFA_FMIndexExpression(uint32_t line, | 269 CXFA_FMIndexExpression(uint32_t line, |
265 XFA_FM_AccessorIndex accessorIndex, | 270 XFA_FM_AccessorIndex accessorIndex, |
266 CXFA_FMSimpleExpression* pIndexExp, | 271 std::unique_ptr<CXFA_FMSimpleExpression> pIndexExp, |
267 bool bIsStarIndex); | 272 bool bIsStarIndex); |
268 ~CXFA_FMIndexExpression() override {} | 273 ~CXFA_FMIndexExpression() override {} |
269 void ToJavaScript(CFX_WideTextBuf& javascript) override; | 274 void ToJavaScript(CFX_WideTextBuf& javascript) override; |
270 | 275 |
271 private: | 276 private: |
272 XFA_FM_AccessorIndex m_accessorIndex; | 277 XFA_FM_AccessorIndex m_accessorIndex; |
273 bool m_bIsStarIndex; | 278 bool m_bIsStarIndex; |
274 }; | 279 }; |
275 | 280 |
276 class CXFA_FMDotDotAccessorExpression : public CXFA_FMBinExpression { | 281 class CXFA_FMDotDotAccessorExpression : public CXFA_FMBinExpression { |
277 public: | 282 public: |
278 CXFA_FMDotDotAccessorExpression(uint32_t line, | 283 CXFA_FMDotDotAccessorExpression( |
279 CXFA_FMSimpleExpression* pAccessor, | 284 uint32_t line, |
280 XFA_FM_TOKEN op, | 285 std::unique_ptr<CXFA_FMSimpleExpression> pAccessor, |
281 CFX_WideStringC wsIdentifier, | 286 XFA_FM_TOKEN op, |
282 CXFA_FMSimpleExpression* pIndexExp); | 287 CFX_WideStringC wsIdentifier, |
| 288 std::unique_ptr<CXFA_FMSimpleExpression> pIndexExp); |
283 ~CXFA_FMDotDotAccessorExpression() override; | 289 ~CXFA_FMDotDotAccessorExpression() override; |
284 | 290 |
285 void ToJavaScript(CFX_WideTextBuf& javascript) override; | 291 void ToJavaScript(CFX_WideTextBuf& javascript) override; |
286 | 292 |
287 private: | 293 private: |
288 CFX_WideStringC m_wsIdentifier; | 294 CFX_WideStringC m_wsIdentifier; |
289 }; | 295 }; |
290 | 296 |
291 class CXFA_FMMethodCallExpression : public CXFA_FMBinExpression { | 297 class CXFA_FMMethodCallExpression : public CXFA_FMBinExpression { |
292 public: | 298 public: |
293 CXFA_FMMethodCallExpression(uint32_t line, | 299 CXFA_FMMethodCallExpression( |
294 CXFA_FMSimpleExpression* pAccessorExp1, | 300 uint32_t line, |
295 CXFA_FMSimpleExpression* pCallExp); | 301 std::unique_ptr<CXFA_FMSimpleExpression> pAccessorExp1, |
| 302 std::unique_ptr<CXFA_FMSimpleExpression> pCallExp); |
296 ~CXFA_FMMethodCallExpression() override {} | 303 ~CXFA_FMMethodCallExpression() override {} |
297 void ToJavaScript(CFX_WideTextBuf& javascript) override; | 304 void ToJavaScript(CFX_WideTextBuf& javascript) override; |
298 }; | 305 }; |
299 | 306 |
300 #endif // XFA_FXFA_FM2JS_XFA_SIMPLEEXPRESSION_H_ | 307 #endif // XFA_FXFA_FM2JS_XFA_SIMPLEEXPRESSION_H_ |
OLD | NEW |