| 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 |