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 #include "xfa/fxfa/fm2js/xfa_simpleexpression.h" | 7 #include "xfa/fxfa/fm2js/xfa_simpleexpression.h" |
8 | 8 |
9 #include <utility> | 9 #include <utility> |
10 | 10 |
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
202 } else if (tempStr == FX_WSTRC(L"$layout")) { | 202 } else if (tempStr == FX_WSTRC(L"$layout")) { |
203 tempStr = FX_WSTRC(L"xfa.layout"); | 203 tempStr = FX_WSTRC(L"xfa.layout"); |
204 } else if (tempStr == FX_WSTRC(L"$template")) { | 204 } else if (tempStr == FX_WSTRC(L"$template")) { |
205 tempStr = FX_WSTRC(L"xfa.template"); | 205 tempStr = FX_WSTRC(L"xfa.template"); |
206 } else if (tempStr[0] == L'!') { | 206 } else if (tempStr[0] == L'!') { |
207 tempStr = EXCLAMATION_IN_IDENTIFIER + tempStr.Mid(1); | 207 tempStr = EXCLAMATION_IN_IDENTIFIER + tempStr.Mid(1); |
208 } | 208 } |
209 javascript << tempStr; | 209 javascript << tempStr; |
210 } | 210 } |
211 | 211 |
212 CXFA_FMUnaryExpression::CXFA_FMUnaryExpression(uint32_t line, | 212 CXFA_FMUnaryExpression::CXFA_FMUnaryExpression( |
213 XFA_FM_TOKEN op, | 213 uint32_t line, |
214 CXFA_FMSimpleExpression* pExp) | 214 XFA_FM_TOKEN op, |
215 : CXFA_FMSimpleExpression(line, op), m_pExp(pExp) {} | 215 std::unique_ptr<CXFA_FMSimpleExpression> pExp) |
| 216 : CXFA_FMSimpleExpression(line, op), m_pExp(std::move(pExp)) {} |
216 | 217 |
217 CXFA_FMUnaryExpression::~CXFA_FMUnaryExpression() {} | 218 CXFA_FMUnaryExpression::~CXFA_FMUnaryExpression() {} |
218 | 219 |
219 void CXFA_FMUnaryExpression::ToJavaScript(CFX_WideTextBuf& javascript) {} | 220 void CXFA_FMUnaryExpression::ToJavaScript(CFX_WideTextBuf& javascript) {} |
220 | 221 |
221 CXFA_FMBinExpression::CXFA_FMBinExpression(uint32_t line, | 222 CXFA_FMBinExpression::CXFA_FMBinExpression( |
222 XFA_FM_TOKEN op, | 223 uint32_t line, |
223 CXFA_FMSimpleExpression* pExp1, | 224 XFA_FM_TOKEN op, |
224 CXFA_FMSimpleExpression* pExp2) | 225 std::unique_ptr<CXFA_FMSimpleExpression> pExp1, |
225 : CXFA_FMSimpleExpression(line, op), m_pExp1(pExp1), m_pExp2(pExp2) {} | 226 std::unique_ptr<CXFA_FMSimpleExpression> pExp2) |
| 227 : CXFA_FMSimpleExpression(line, op), |
| 228 m_pExp1(std::move(pExp1)), |
| 229 m_pExp2(std::move(pExp2)) {} |
226 | 230 |
227 CXFA_FMBinExpression::~CXFA_FMBinExpression() {} | 231 CXFA_FMBinExpression::~CXFA_FMBinExpression() {} |
228 | 232 |
229 void CXFA_FMBinExpression::ToJavaScript(CFX_WideTextBuf& javascript) {} | 233 void CXFA_FMBinExpression::ToJavaScript(CFX_WideTextBuf& javascript) {} |
230 | 234 |
231 CXFA_FMAssignExpression::CXFA_FMAssignExpression(uint32_t line, | 235 CXFA_FMAssignExpression::CXFA_FMAssignExpression( |
232 XFA_FM_TOKEN op, | 236 uint32_t line, |
233 CXFA_FMSimpleExpression* pExp1, | 237 XFA_FM_TOKEN op, |
234 CXFA_FMSimpleExpression* pExp2) | 238 std::unique_ptr<CXFA_FMSimpleExpression> pExp1, |
235 : CXFA_FMBinExpression(line, op, pExp1, pExp2) {} | 239 std::unique_ptr<CXFA_FMSimpleExpression> pExp2) |
| 240 : CXFA_FMBinExpression(line, op, std::move(pExp1), std::move(pExp2)) {} |
236 | 241 |
237 void CXFA_FMAssignExpression::ToJavaScript(CFX_WideTextBuf& javascript) { | 242 void CXFA_FMAssignExpression::ToJavaScript(CFX_WideTextBuf& javascript) { |
238 javascript << FX_WSTRC(L"if ("); | 243 javascript << FX_WSTRC(L"if ("); |
239 javascript << gs_lpStrExpFuncName[ISFMOBJECT]; | 244 javascript << gs_lpStrExpFuncName[ISFMOBJECT]; |
240 javascript << FX_WSTRC(L"("); | 245 javascript << FX_WSTRC(L"("); |
241 m_pExp1->ToJavaScript(javascript); | 246 m_pExp1->ToJavaScript(javascript); |
242 javascript << FX_WSTRC(L"))\n{\n"); | 247 javascript << FX_WSTRC(L"))\n{\n"); |
243 javascript << gs_lpStrExpFuncName[ASSIGN]; | 248 javascript << gs_lpStrExpFuncName[ASSIGN]; |
244 javascript << FX_WSTRC(L"("); | 249 javascript << FX_WSTRC(L"("); |
245 m_pExp1->ToJavaScript(javascript); | 250 m_pExp1->ToJavaScript(javascript); |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
290 m_pExp1->ToJavaScript(javascript); | 295 m_pExp1->ToJavaScript(javascript); |
291 javascript << FX_WSTRC(L", "); | 296 javascript << FX_WSTRC(L", "); |
292 m_pExp2->ToJavaScript(javascript); | 297 m_pExp2->ToJavaScript(javascript); |
293 javascript << FX_WSTRC(L");\n}\n"); | 298 javascript << FX_WSTRC(L");\n}\n"); |
294 } | 299 } |
295 } | 300 } |
296 | 301 |
297 CXFA_FMLogicalOrExpression::CXFA_FMLogicalOrExpression( | 302 CXFA_FMLogicalOrExpression::CXFA_FMLogicalOrExpression( |
298 uint32_t line, | 303 uint32_t line, |
299 XFA_FM_TOKEN op, | 304 XFA_FM_TOKEN op, |
300 CXFA_FMSimpleExpression* pExp1, | 305 std::unique_ptr<CXFA_FMSimpleExpression> pExp1, |
301 CXFA_FMSimpleExpression* pExp2) | 306 std::unique_ptr<CXFA_FMSimpleExpression> pExp2) |
302 : CXFA_FMBinExpression(line, op, pExp1, pExp2) {} | 307 : CXFA_FMBinExpression(line, op, std::move(pExp1), std::move(pExp2)) {} |
303 | 308 |
304 void CXFA_FMLogicalOrExpression::ToJavaScript(CFX_WideTextBuf& javascript) { | 309 void CXFA_FMLogicalOrExpression::ToJavaScript(CFX_WideTextBuf& javascript) { |
305 javascript << gs_lpStrExpFuncName[LOGICALOR]; | 310 javascript << gs_lpStrExpFuncName[LOGICALOR]; |
306 javascript << FX_WSTRC(L"("); | 311 javascript << FX_WSTRC(L"("); |
307 m_pExp1->ToJavaScript(javascript); | 312 m_pExp1->ToJavaScript(javascript); |
308 javascript << FX_WSTRC(L", "); | 313 javascript << FX_WSTRC(L", "); |
309 m_pExp2->ToJavaScript(javascript); | 314 m_pExp2->ToJavaScript(javascript); |
310 javascript << FX_WSTRC(L")"); | 315 javascript << FX_WSTRC(L")"); |
311 } | 316 } |
312 | 317 |
313 CXFA_FMLogicalAndExpression::CXFA_FMLogicalAndExpression( | 318 CXFA_FMLogicalAndExpression::CXFA_FMLogicalAndExpression( |
314 uint32_t line, | 319 uint32_t line, |
315 XFA_FM_TOKEN op, | 320 XFA_FM_TOKEN op, |
316 CXFA_FMSimpleExpression* pExp1, | 321 std::unique_ptr<CXFA_FMSimpleExpression> pExp1, |
317 CXFA_FMSimpleExpression* pExp2) | 322 std::unique_ptr<CXFA_FMSimpleExpression> pExp2) |
318 : CXFA_FMBinExpression(line, op, pExp1, pExp2) {} | 323 : CXFA_FMBinExpression(line, op, std::move(pExp1), std::move(pExp2)) {} |
319 | 324 |
320 void CXFA_FMLogicalAndExpression::ToJavaScript(CFX_WideTextBuf& javascript) { | 325 void CXFA_FMLogicalAndExpression::ToJavaScript(CFX_WideTextBuf& javascript) { |
321 javascript << gs_lpStrExpFuncName[LOGICALAND]; | 326 javascript << gs_lpStrExpFuncName[LOGICALAND]; |
322 javascript << FX_WSTRC(L"("); | 327 javascript << FX_WSTRC(L"("); |
323 m_pExp1->ToJavaScript(javascript); | 328 m_pExp1->ToJavaScript(javascript); |
324 javascript << FX_WSTRC(L", "); | 329 javascript << FX_WSTRC(L", "); |
325 m_pExp2->ToJavaScript(javascript); | 330 m_pExp2->ToJavaScript(javascript); |
326 javascript << FX_WSTRC(L")"); | 331 javascript << FX_WSTRC(L")"); |
327 } | 332 } |
328 | 333 |
329 CXFA_FMEqualityExpression::CXFA_FMEqualityExpression( | 334 CXFA_FMEqualityExpression::CXFA_FMEqualityExpression( |
330 uint32_t line, | 335 uint32_t line, |
331 XFA_FM_TOKEN op, | 336 XFA_FM_TOKEN op, |
332 CXFA_FMSimpleExpression* pExp1, | 337 std::unique_ptr<CXFA_FMSimpleExpression> pExp1, |
333 CXFA_FMSimpleExpression* pExp2) | 338 std::unique_ptr<CXFA_FMSimpleExpression> pExp2) |
334 : CXFA_FMBinExpression(line, op, pExp1, pExp2) {} | 339 : CXFA_FMBinExpression(line, op, std::move(pExp1), std::move(pExp2)) {} |
335 | 340 |
336 void CXFA_FMEqualityExpression::ToJavaScript(CFX_WideTextBuf& javascript) { | 341 void CXFA_FMEqualityExpression::ToJavaScript(CFX_WideTextBuf& javascript) { |
337 switch (m_op) { | 342 switch (m_op) { |
338 case TOKeq: | 343 case TOKeq: |
339 case TOKkseq: | 344 case TOKkseq: |
340 javascript << gs_lpStrExpFuncName[EQUALITY]; | 345 javascript << gs_lpStrExpFuncName[EQUALITY]; |
341 break; | 346 break; |
342 case TOKne: | 347 case TOKne: |
343 case TOKksne: | 348 case TOKksne: |
344 javascript << gs_lpStrExpFuncName[NOTEQUALITY]; | 349 javascript << gs_lpStrExpFuncName[NOTEQUALITY]; |
345 break; | 350 break; |
346 default: | 351 default: |
347 ASSERT(false); | 352 ASSERT(false); |
348 break; | 353 break; |
349 } | 354 } |
350 javascript << FX_WSTRC(L"("); | 355 javascript << FX_WSTRC(L"("); |
351 m_pExp1->ToJavaScript(javascript); | 356 m_pExp1->ToJavaScript(javascript); |
352 javascript << FX_WSTRC(L", "); | 357 javascript << FX_WSTRC(L", "); |
353 m_pExp2->ToJavaScript(javascript); | 358 m_pExp2->ToJavaScript(javascript); |
354 javascript << FX_WSTRC(L")"); | 359 javascript << FX_WSTRC(L")"); |
355 } | 360 } |
356 | 361 |
357 CXFA_FMRelationalExpression::CXFA_FMRelationalExpression( | 362 CXFA_FMRelationalExpression::CXFA_FMRelationalExpression( |
358 uint32_t line, | 363 uint32_t line, |
359 XFA_FM_TOKEN op, | 364 XFA_FM_TOKEN op, |
360 CXFA_FMSimpleExpression* pExp1, | 365 std::unique_ptr<CXFA_FMSimpleExpression> pExp1, |
361 CXFA_FMSimpleExpression* pExp2) | 366 std::unique_ptr<CXFA_FMSimpleExpression> pExp2) |
362 : CXFA_FMBinExpression(line, op, pExp1, pExp2) {} | 367 : CXFA_FMBinExpression(line, op, std::move(pExp1), std::move(pExp2)) {} |
363 | 368 |
364 void CXFA_FMRelationalExpression::ToJavaScript(CFX_WideTextBuf& javascript) { | 369 void CXFA_FMRelationalExpression::ToJavaScript(CFX_WideTextBuf& javascript) { |
365 switch (m_op) { | 370 switch (m_op) { |
366 case TOKlt: | 371 case TOKlt: |
367 case TOKkslt: | 372 case TOKkslt: |
368 javascript << gs_lpStrExpFuncName[LESS]; | 373 javascript << gs_lpStrExpFuncName[LESS]; |
369 break; | 374 break; |
370 case TOKgt: | 375 case TOKgt: |
371 case TOKksgt: | 376 case TOKksgt: |
372 javascript << gs_lpStrExpFuncName[GREATER]; | 377 javascript << gs_lpStrExpFuncName[GREATER]; |
(...skipping 13 matching lines...) Expand all Loading... |
386 javascript << FX_WSTRC(L"("); | 391 javascript << FX_WSTRC(L"("); |
387 m_pExp1->ToJavaScript(javascript); | 392 m_pExp1->ToJavaScript(javascript); |
388 javascript << FX_WSTRC(L", "); | 393 javascript << FX_WSTRC(L", "); |
389 m_pExp2->ToJavaScript(javascript); | 394 m_pExp2->ToJavaScript(javascript); |
390 javascript << FX_WSTRC(L")"); | 395 javascript << FX_WSTRC(L")"); |
391 } | 396 } |
392 | 397 |
393 CXFA_FMAdditiveExpression::CXFA_FMAdditiveExpression( | 398 CXFA_FMAdditiveExpression::CXFA_FMAdditiveExpression( |
394 uint32_t line, | 399 uint32_t line, |
395 XFA_FM_TOKEN op, | 400 XFA_FM_TOKEN op, |
396 CXFA_FMSimpleExpression* pExp1, | 401 std::unique_ptr<CXFA_FMSimpleExpression> pExp1, |
397 CXFA_FMSimpleExpression* pExp2) | 402 std::unique_ptr<CXFA_FMSimpleExpression> pExp2) |
398 : CXFA_FMBinExpression(line, op, pExp1, pExp2) {} | 403 : CXFA_FMBinExpression(line, op, std::move(pExp1), std::move(pExp2)) {} |
399 | 404 |
400 void CXFA_FMAdditiveExpression::ToJavaScript(CFX_WideTextBuf& javascript) { | 405 void CXFA_FMAdditiveExpression::ToJavaScript(CFX_WideTextBuf& javascript) { |
401 switch (m_op) { | 406 switch (m_op) { |
402 case TOKplus: | 407 case TOKplus: |
403 javascript << gs_lpStrExpFuncName[PLUS]; | 408 javascript << gs_lpStrExpFuncName[PLUS]; |
404 break; | 409 break; |
405 case TOKminus: | 410 case TOKminus: |
406 javascript << gs_lpStrExpFuncName[MINUS]; | 411 javascript << gs_lpStrExpFuncName[MINUS]; |
407 break; | 412 break; |
408 default: | 413 default: |
409 ASSERT(false); | 414 ASSERT(false); |
410 break; | 415 break; |
411 } | 416 } |
412 javascript << FX_WSTRC(L"("); | 417 javascript << FX_WSTRC(L"("); |
413 m_pExp1->ToJavaScript(javascript); | 418 m_pExp1->ToJavaScript(javascript); |
414 javascript << FX_WSTRC(L", "); | 419 javascript << FX_WSTRC(L", "); |
415 m_pExp2->ToJavaScript(javascript); | 420 m_pExp2->ToJavaScript(javascript); |
416 javascript << FX_WSTRC(L")"); | 421 javascript << FX_WSTRC(L")"); |
417 } | 422 } |
418 | 423 |
419 CXFA_FMMultiplicativeExpression::CXFA_FMMultiplicativeExpression( | 424 CXFA_FMMultiplicativeExpression::CXFA_FMMultiplicativeExpression( |
420 uint32_t line, | 425 uint32_t line, |
421 XFA_FM_TOKEN op, | 426 XFA_FM_TOKEN op, |
422 CXFA_FMSimpleExpression* pExp1, | 427 std::unique_ptr<CXFA_FMSimpleExpression> pExp1, |
423 CXFA_FMSimpleExpression* pExp2) | 428 std::unique_ptr<CXFA_FMSimpleExpression> pExp2) |
424 : CXFA_FMBinExpression(line, op, pExp1, pExp2) {} | 429 : CXFA_FMBinExpression(line, op, std::move(pExp1), std::move(pExp2)) {} |
425 | 430 |
426 void CXFA_FMMultiplicativeExpression::ToJavaScript( | 431 void CXFA_FMMultiplicativeExpression::ToJavaScript( |
427 CFX_WideTextBuf& javascript) { | 432 CFX_WideTextBuf& javascript) { |
428 switch (m_op) { | 433 switch (m_op) { |
429 case TOKmul: | 434 case TOKmul: |
430 javascript << gs_lpStrExpFuncName[MULTIPLE]; | 435 javascript << gs_lpStrExpFuncName[MULTIPLE]; |
431 break; | 436 break; |
432 case TOKdiv: | 437 case TOKdiv: |
433 javascript << gs_lpStrExpFuncName[DIVIDE]; | 438 javascript << gs_lpStrExpFuncName[DIVIDE]; |
434 break; | 439 break; |
435 default: | 440 default: |
436 ASSERT(false); | 441 ASSERT(false); |
437 break; | 442 break; |
438 } | 443 } |
439 javascript << FX_WSTRC(L"("); | 444 javascript << FX_WSTRC(L"("); |
440 m_pExp1->ToJavaScript(javascript); | 445 m_pExp1->ToJavaScript(javascript); |
441 javascript << FX_WSTRC(L", "); | 446 javascript << FX_WSTRC(L", "); |
442 m_pExp2->ToJavaScript(javascript); | 447 m_pExp2->ToJavaScript(javascript); |
443 javascript << FX_WSTRC(L")"); | 448 javascript << FX_WSTRC(L")"); |
444 } | 449 } |
445 | 450 |
446 CXFA_FMPosExpression::CXFA_FMPosExpression(uint32_t line, | 451 CXFA_FMPosExpression::CXFA_FMPosExpression( |
447 CXFA_FMSimpleExpression* pExp) | 452 uint32_t line, |
448 : CXFA_FMUnaryExpression(line, TOKplus, pExp) {} | 453 std::unique_ptr<CXFA_FMSimpleExpression> pExp) |
| 454 : CXFA_FMUnaryExpression(line, TOKplus, std::move(pExp)) {} |
449 | 455 |
450 void CXFA_FMPosExpression::ToJavaScript(CFX_WideTextBuf& javascript) { | 456 void CXFA_FMPosExpression::ToJavaScript(CFX_WideTextBuf& javascript) { |
451 javascript << gs_lpStrExpFuncName[POSITIVE]; | 457 javascript << gs_lpStrExpFuncName[POSITIVE]; |
452 javascript << FX_WSTRC(L"("); | 458 javascript << FX_WSTRC(L"("); |
453 m_pExp->ToJavaScript(javascript); | 459 m_pExp->ToJavaScript(javascript); |
454 javascript << FX_WSTRC(L")"); | 460 javascript << FX_WSTRC(L")"); |
455 } | 461 } |
456 | 462 |
457 CXFA_FMNegExpression::CXFA_FMNegExpression(uint32_t line, | 463 CXFA_FMNegExpression::CXFA_FMNegExpression( |
458 CXFA_FMSimpleExpression* pExp) | 464 uint32_t line, |
459 : CXFA_FMUnaryExpression(line, TOKminus, pExp) {} | 465 std::unique_ptr<CXFA_FMSimpleExpression> pExp) |
| 466 : CXFA_FMUnaryExpression(line, TOKminus, std::move(pExp)) {} |
460 | 467 |
461 void CXFA_FMNegExpression::ToJavaScript(CFX_WideTextBuf& javascript) { | 468 void CXFA_FMNegExpression::ToJavaScript(CFX_WideTextBuf& javascript) { |
462 javascript << gs_lpStrExpFuncName[NEGATIVE]; | 469 javascript << gs_lpStrExpFuncName[NEGATIVE]; |
463 javascript << FX_WSTRC(L"("); | 470 javascript << FX_WSTRC(L"("); |
464 m_pExp->ToJavaScript(javascript); | 471 m_pExp->ToJavaScript(javascript); |
465 javascript << FX_WSTRC(L")"); | 472 javascript << FX_WSTRC(L")"); |
466 } | 473 } |
467 | 474 |
468 CXFA_FMNotExpression::CXFA_FMNotExpression(uint32_t line, | 475 CXFA_FMNotExpression::CXFA_FMNotExpression( |
469 CXFA_FMSimpleExpression* pExp) | 476 uint32_t line, |
470 : CXFA_FMUnaryExpression(line, TOKksnot, pExp) {} | 477 std::unique_ptr<CXFA_FMSimpleExpression> pExp) |
| 478 : CXFA_FMUnaryExpression(line, TOKksnot, std::move(pExp)) {} |
471 | 479 |
472 void CXFA_FMNotExpression::ToJavaScript(CFX_WideTextBuf& javascript) { | 480 void CXFA_FMNotExpression::ToJavaScript(CFX_WideTextBuf& javascript) { |
473 javascript << gs_lpStrExpFuncName[NOT]; | 481 javascript << gs_lpStrExpFuncName[NOT]; |
474 javascript << FX_WSTRC(L"("); | 482 javascript << FX_WSTRC(L"("); |
475 m_pExp->ToJavaScript(javascript); | 483 m_pExp->ToJavaScript(javascript); |
476 javascript << FX_WSTRC(L")"); | 484 javascript << FX_WSTRC(L")"); |
477 } | 485 } |
478 | 486 |
479 CXFA_FMCallExpression::CXFA_FMCallExpression( | 487 CXFA_FMCallExpression::CXFA_FMCallExpression( |
480 uint32_t line, | 488 uint32_t line, |
481 CXFA_FMSimpleExpression* pExp, | 489 std::unique_ptr<CXFA_FMSimpleExpression> pExp, |
482 std::vector<std::unique_ptr<CXFA_FMSimpleExpression>>&& pArguments, | 490 std::vector<std::unique_ptr<CXFA_FMSimpleExpression>>&& pArguments, |
483 bool bIsSomMethod) | 491 bool bIsSomMethod) |
484 : CXFA_FMUnaryExpression(line, TOKcall, pExp), | 492 : CXFA_FMUnaryExpression(line, TOKcall, std::move(pExp)), |
485 m_bIsSomMethod(bIsSomMethod), | 493 m_bIsSomMethod(bIsSomMethod), |
486 m_Arguments(std::move(pArguments)) {} | 494 m_Arguments(std::move(pArguments)) {} |
487 | 495 |
488 CXFA_FMCallExpression::~CXFA_FMCallExpression() {} | 496 CXFA_FMCallExpression::~CXFA_FMCallExpression() {} |
489 | 497 |
490 bool CXFA_FMCallExpression::IsBuildInFunc(CFX_WideTextBuf* funcName) { | 498 bool CXFA_FMCallExpression::IsBuildInFunc(CFX_WideTextBuf* funcName) { |
491 uint32_t uHash = FX_HashCode_GetW(funcName->AsStringC(), true); | 499 uint32_t uHash = FX_HashCode_GetW(funcName->AsStringC(), true); |
492 const XFA_FMBuildInFunc* pEnd = g_BuildInFuncs + FX_ArraySize(g_BuildInFuncs); | 500 const XFA_FMBuildInFunc* pEnd = g_BuildInFuncs + FX_ArraySize(g_BuildInFuncs); |
493 const XFA_FMBuildInFunc* pFunc = | 501 const XFA_FMBuildInFunc* pFunc = |
494 std::lower_bound(g_BuildInFuncs, pEnd, uHash, | 502 std::lower_bound(g_BuildInFuncs, pEnd, uHash, |
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
604 } | 612 } |
605 javascript << L")"; | 613 javascript << L")"; |
606 if (isEvalFunc) { | 614 if (isEvalFunc) { |
607 javascript << L")"; | 615 javascript << L")"; |
608 } | 616 } |
609 } | 617 } |
610 } | 618 } |
611 | 619 |
612 CXFA_FMDotAccessorExpression::CXFA_FMDotAccessorExpression( | 620 CXFA_FMDotAccessorExpression::CXFA_FMDotAccessorExpression( |
613 uint32_t line, | 621 uint32_t line, |
614 CXFA_FMSimpleExpression* pAccessor, | 622 std::unique_ptr<CXFA_FMSimpleExpression> pAccessor, |
615 XFA_FM_TOKEN op, | 623 XFA_FM_TOKEN op, |
616 CFX_WideStringC wsIdentifier, | 624 CFX_WideStringC wsIdentifier, |
617 CXFA_FMSimpleExpression* pIndexExp) | 625 std::unique_ptr<CXFA_FMSimpleExpression> pIndexExp) |
618 : CXFA_FMBinExpression(line, op, pAccessor, pIndexExp), | 626 : CXFA_FMBinExpression(line, |
| 627 op, |
| 628 std::move(pAccessor), |
| 629 std::move(pIndexExp)), |
619 m_wsIdentifier(wsIdentifier) {} | 630 m_wsIdentifier(wsIdentifier) {} |
620 | 631 |
621 CXFA_FMDotAccessorExpression::~CXFA_FMDotAccessorExpression() {} | 632 CXFA_FMDotAccessorExpression::~CXFA_FMDotAccessorExpression() {} |
622 | 633 |
623 void CXFA_FMDotAccessorExpression::ToJavaScript(CFX_WideTextBuf& javascript) { | 634 void CXFA_FMDotAccessorExpression::ToJavaScript(CFX_WideTextBuf& javascript) { |
624 javascript << gs_lpStrExpFuncName[DOT]; | 635 javascript << gs_lpStrExpFuncName[DOT]; |
625 javascript << FX_WSTRC(L"("); | 636 javascript << FX_WSTRC(L"("); |
626 if (m_pExp1) { | 637 if (m_pExp1) { |
627 m_pExp1->ToJavaScript(javascript); | 638 m_pExp1->ToJavaScript(javascript); |
628 } else { | 639 } else { |
(...skipping 18 matching lines...) Expand all Loading... |
647 javascript << m_wsIdentifier; | 658 javascript << m_wsIdentifier; |
648 javascript << FX_WSTRC(L"\", "); | 659 javascript << FX_WSTRC(L"\", "); |
649 } | 660 } |
650 m_pExp2->ToJavaScript(javascript); | 661 m_pExp2->ToJavaScript(javascript); |
651 javascript << FX_WSTRC(L")"); | 662 javascript << FX_WSTRC(L")"); |
652 } | 663 } |
653 | 664 |
654 CXFA_FMIndexExpression::CXFA_FMIndexExpression( | 665 CXFA_FMIndexExpression::CXFA_FMIndexExpression( |
655 uint32_t line, | 666 uint32_t line, |
656 XFA_FM_AccessorIndex accessorIndex, | 667 XFA_FM_AccessorIndex accessorIndex, |
657 CXFA_FMSimpleExpression* pIndexExp, | 668 std::unique_ptr<CXFA_FMSimpleExpression> pIndexExp, |
658 bool bIsStarIndex) | 669 bool bIsStarIndex) |
659 : CXFA_FMUnaryExpression(line, TOKlbracket, pIndexExp), | 670 : CXFA_FMUnaryExpression(line, TOKlbracket, std::move(pIndexExp)), |
660 m_accessorIndex(accessorIndex), | 671 m_accessorIndex(accessorIndex), |
661 m_bIsStarIndex(bIsStarIndex) {} | 672 m_bIsStarIndex(bIsStarIndex) {} |
662 | 673 |
663 void CXFA_FMIndexExpression::ToJavaScript(CFX_WideTextBuf& javascript) { | 674 void CXFA_FMIndexExpression::ToJavaScript(CFX_WideTextBuf& javascript) { |
664 switch (m_accessorIndex) { | 675 switch (m_accessorIndex) { |
665 case ACCESSOR_NO_INDEX: | 676 case ACCESSOR_NO_INDEX: |
666 javascript << FX_WSTRC(L"0"); | 677 javascript << FX_WSTRC(L"0"); |
667 break; | 678 break; |
668 case ACCESSOR_NO_RELATIVEINDEX: | 679 case ACCESSOR_NO_RELATIVEINDEX: |
669 javascript << FX_WSTRC(L"1"); | 680 javascript << FX_WSTRC(L"1"); |
(...skipping 12 matching lines...) Expand all Loading... |
682 if (m_pExp) { | 693 if (m_pExp) { |
683 m_pExp->ToJavaScript(javascript); | 694 m_pExp->ToJavaScript(javascript); |
684 } else { | 695 } else { |
685 javascript << FX_WSTRC(L"0"); | 696 javascript << FX_WSTRC(L"0"); |
686 } | 697 } |
687 } | 698 } |
688 } | 699 } |
689 | 700 |
690 CXFA_FMDotDotAccessorExpression::CXFA_FMDotDotAccessorExpression( | 701 CXFA_FMDotDotAccessorExpression::CXFA_FMDotDotAccessorExpression( |
691 uint32_t line, | 702 uint32_t line, |
692 CXFA_FMSimpleExpression* pAccessor, | 703 std::unique_ptr<CXFA_FMSimpleExpression> pAccessor, |
693 XFA_FM_TOKEN op, | 704 XFA_FM_TOKEN op, |
694 CFX_WideStringC wsIdentifier, | 705 CFX_WideStringC wsIdentifier, |
695 CXFA_FMSimpleExpression* pIndexExp) | 706 std::unique_ptr<CXFA_FMSimpleExpression> pIndexExp) |
696 : CXFA_FMBinExpression(line, op, pAccessor, pIndexExp), | 707 : CXFA_FMBinExpression(line, |
| 708 op, |
| 709 std::move(pAccessor), |
| 710 std::move(pIndexExp)), |
697 m_wsIdentifier(wsIdentifier) {} | 711 m_wsIdentifier(wsIdentifier) {} |
698 | 712 |
699 CXFA_FMDotDotAccessorExpression::~CXFA_FMDotDotAccessorExpression() {} | 713 CXFA_FMDotDotAccessorExpression::~CXFA_FMDotDotAccessorExpression() {} |
700 | 714 |
701 void CXFA_FMDotDotAccessorExpression::ToJavaScript( | 715 void CXFA_FMDotDotAccessorExpression::ToJavaScript( |
702 CFX_WideTextBuf& javascript) { | 716 CFX_WideTextBuf& javascript) { |
703 javascript << gs_lpStrExpFuncName[DOTDOT]; | 717 javascript << gs_lpStrExpFuncName[DOTDOT]; |
704 javascript << FX_WSTRC(L"("); | 718 javascript << FX_WSTRC(L"("); |
705 m_pExp1->ToJavaScript(javascript); | 719 m_pExp1->ToJavaScript(javascript); |
706 javascript << FX_WSTRC(L", "); | 720 javascript << FX_WSTRC(L", "); |
707 javascript << FX_WSTRC(L"\""); | 721 javascript << FX_WSTRC(L"\""); |
708 if (m_pExp1 && m_pExp1->GetOperatorToken() == TOKidentifier) { | 722 if (m_pExp1 && m_pExp1->GetOperatorToken() == TOKidentifier) { |
709 m_pExp1->ToJavaScript(javascript); | 723 m_pExp1->ToJavaScript(javascript); |
710 } | 724 } |
711 javascript << FX_WSTRC(L"\", "); | 725 javascript << FX_WSTRC(L"\", "); |
712 javascript << FX_WSTRC(L"\""); | 726 javascript << FX_WSTRC(L"\""); |
713 javascript << m_wsIdentifier; | 727 javascript << m_wsIdentifier; |
714 javascript << FX_WSTRC(L"\", "); | 728 javascript << FX_WSTRC(L"\", "); |
715 m_pExp2->ToJavaScript(javascript); | 729 m_pExp2->ToJavaScript(javascript); |
716 javascript << FX_WSTRC(L")"); | 730 javascript << FX_WSTRC(L")"); |
717 } | 731 } |
718 | 732 |
719 CXFA_FMMethodCallExpression::CXFA_FMMethodCallExpression( | 733 CXFA_FMMethodCallExpression::CXFA_FMMethodCallExpression( |
720 uint32_t line, | 734 uint32_t line, |
721 CXFA_FMSimpleExpression* pAccessorExp1, | 735 std::unique_ptr<CXFA_FMSimpleExpression> pAccessorExp1, |
722 CXFA_FMSimpleExpression* pCallExp) | 736 std::unique_ptr<CXFA_FMSimpleExpression> pCallExp) |
723 : CXFA_FMBinExpression(line, TOKdot, pAccessorExp1, pCallExp) {} | 737 : CXFA_FMBinExpression(line, |
| 738 TOKdot, |
| 739 std::move(pAccessorExp1), |
| 740 std::move(pCallExp)) {} |
724 | 741 |
725 void CXFA_FMMethodCallExpression::ToJavaScript(CFX_WideTextBuf& javascript) { | 742 void CXFA_FMMethodCallExpression::ToJavaScript(CFX_WideTextBuf& javascript) { |
726 javascript << FX_WSTRC(L"(\nfunction ()\n{\n"); | 743 javascript << FX_WSTRC(L"(\nfunction ()\n{\n"); |
727 javascript << FX_WSTRC(L"var method_return_value = null;\n"); | 744 javascript << FX_WSTRC(L"var method_return_value = null;\n"); |
728 javascript << FX_WSTRC(L"var accessor_object = "); | 745 javascript << FX_WSTRC(L"var accessor_object = "); |
729 m_pExp1->ToJavaScript(javascript); | 746 m_pExp1->ToJavaScript(javascript); |
730 javascript << FX_WSTRC(L";\n"); | 747 javascript << FX_WSTRC(L";\n"); |
731 javascript << FX_WSTRC(L"if ("); | 748 javascript << FX_WSTRC(L"if ("); |
732 javascript << gs_lpStrExpFuncName[ISFMARRAY]; | 749 javascript << gs_lpStrExpFuncName[ISFMARRAY]; |
733 javascript << FX_WSTRC(L"(accessor_object))\n{\n"); | 750 javascript << FX_WSTRC(L"(accessor_object))\n{\n"); |
734 javascript << FX_WSTRC( | 751 javascript << FX_WSTRC( |
735 L"for(var index = accessor_object.length - 1; index > 1; index--)\n{\n"); | 752 L"for(var index = accessor_object.length - 1; index > 1; index--)\n{\n"); |
736 javascript << FX_WSTRC(L"method_return_value = accessor_object[index]."); | 753 javascript << FX_WSTRC(L"method_return_value = accessor_object[index]."); |
737 m_pExp2->ToJavaScript(javascript); | 754 m_pExp2->ToJavaScript(javascript); |
738 javascript << FX_WSTRC(L";\n}\n}\n"); | 755 javascript << FX_WSTRC(L";\n}\n}\n"); |
739 javascript << FX_WSTRC(L"else\n{\nmethod_return_value = accessor_object."); | 756 javascript << FX_WSTRC(L"else\n{\nmethod_return_value = accessor_object."); |
740 m_pExp2->ToJavaScript(javascript); | 757 m_pExp2->ToJavaScript(javascript); |
741 javascript << FX_WSTRC(L";\n}\n"); | 758 javascript << FX_WSTRC(L";\n}\n"); |
742 javascript << FX_WSTRC(L"return method_return_value;\n"); | 759 javascript << FX_WSTRC(L"return method_return_value;\n"); |
743 javascript << FX_WSTRC(L"}\n).call(this)"); | 760 javascript << FX_WSTRC(L"}\n).call(this)"); |
744 } | 761 } |
OLD | NEW |