| 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_expression.h" | 7 #include "xfa/fxfa/fm2js/xfa_expression.h" |
| 8 | 8 |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 96 javascript << RUNTIMEFUNCTIONRETURNVALUE; | 96 javascript << RUNTIMEFUNCTIONRETURNVALUE; |
| 97 } | 97 } |
| 98 javascript << FX_WSTRC(L";\n}\n"); | 98 javascript << FX_WSTRC(L";\n}\n"); |
| 99 if (m_isGlobal) { | 99 if (m_isGlobal) { |
| 100 javascript << FX_WSTRC(L").call(this);\n"); | 100 javascript << FX_WSTRC(L").call(this);\n"); |
| 101 } | 101 } |
| 102 } | 102 } |
| 103 | 103 |
| 104 void CXFA_FMFunctionDefinition::ToImpliedReturnJS(CFX_WideTextBuf&) {} | 104 void CXFA_FMFunctionDefinition::ToImpliedReturnJS(CFX_WideTextBuf&) {} |
| 105 | 105 |
| 106 CXFA_FMVarExpression::CXFA_FMVarExpression(uint32_t line, | 106 CXFA_FMVarExpression::CXFA_FMVarExpression( |
| 107 const CFX_WideStringC& wsName, | 107 uint32_t line, |
| 108 CXFA_FMExpression* pInit) | 108 const CFX_WideStringC& wsName, |
| 109 std::unique_ptr<CXFA_FMExpression> pInit) |
| 109 : CXFA_FMExpression(line, XFA_FM_EXPTYPE_VAR), | 110 : CXFA_FMExpression(line, XFA_FM_EXPTYPE_VAR), |
| 110 m_wsName(wsName), | 111 m_wsName(wsName), |
| 111 m_pInit(pInit) {} | 112 m_pInit(std::move(pInit)) {} |
| 112 | 113 |
| 113 CXFA_FMVarExpression::~CXFA_FMVarExpression() {} | 114 CXFA_FMVarExpression::~CXFA_FMVarExpression() {} |
| 114 | 115 |
| 115 void CXFA_FMVarExpression::ToJavaScript(CFX_WideTextBuf& javascript) { | 116 void CXFA_FMVarExpression::ToJavaScript(CFX_WideTextBuf& javascript) { |
| 116 javascript << FX_WSTRC(L"var "); | 117 javascript << FX_WSTRC(L"var "); |
| 117 CFX_WideString tempName(m_wsName); | 118 CFX_WideString tempName(m_wsName); |
| 118 if (m_wsName.GetAt(0) == L'!') { | 119 if (m_wsName.GetAt(0) == L'!') { |
| 119 tempName = EXCLAMATION_IN_IDENTIFIER + m_wsName.Mid(1); | 120 tempName = EXCLAMATION_IN_IDENTIFIER + m_wsName.Mid(1); |
| 120 } | 121 } |
| 121 javascript << tempName; | 122 javascript << tempName; |
| (...skipping 29 matching lines...) Expand all Loading... |
| 151 javascript << FX_WSTRC(L");\n"); | 152 javascript << FX_WSTRC(L");\n"); |
| 152 } else { | 153 } else { |
| 153 javascript << FX_WSTRC(L"\"\";\n"); | 154 javascript << FX_WSTRC(L"\"\";\n"); |
| 154 } | 155 } |
| 155 javascript << RUNTIMEFUNCTIONRETURNVALUE; | 156 javascript << RUNTIMEFUNCTIONRETURNVALUE; |
| 156 javascript << FX_WSTRC(L" = "); | 157 javascript << FX_WSTRC(L" = "); |
| 157 javascript << tempName; | 158 javascript << tempName; |
| 158 javascript << FX_WSTRC(L";\n"); | 159 javascript << FX_WSTRC(L";\n"); |
| 159 } | 160 } |
| 160 | 161 |
| 161 CXFA_FMExpExpression::CXFA_FMExpExpression(uint32_t line, | 162 CXFA_FMExpExpression::CXFA_FMExpExpression( |
| 162 CXFA_FMSimpleExpression* pExpression) | 163 uint32_t line, |
| 163 : CXFA_FMExpression(line, XFA_FM_EXPTYPE_EXP), m_pExpression(pExpression) {} | 164 std::unique_ptr<CXFA_FMSimpleExpression> pExpression) |
| 165 : CXFA_FMExpression(line, XFA_FM_EXPTYPE_EXP), |
| 166 m_pExpression(std::move(pExpression)) {} |
| 164 | 167 |
| 165 CXFA_FMExpExpression::~CXFA_FMExpExpression() {} | 168 CXFA_FMExpExpression::~CXFA_FMExpExpression() {} |
| 166 | 169 |
| 167 void CXFA_FMExpExpression::ToJavaScript(CFX_WideTextBuf& javascript) { | 170 void CXFA_FMExpExpression::ToJavaScript(CFX_WideTextBuf& javascript) { |
| 168 if (m_pExpression->GetOperatorToken() == TOKassign) { | 171 if (m_pExpression->GetOperatorToken() == TOKassign) { |
| 169 m_pExpression->ToJavaScript(javascript); | 172 m_pExpression->ToJavaScript(javascript); |
| 170 } else { | 173 } else { |
| 171 m_pExpression->ToJavaScript(javascript); | 174 m_pExpression->ToJavaScript(javascript); |
| 172 javascript << FX_WSTRC(L";\n"); | 175 javascript << FX_WSTRC(L";\n"); |
| 173 } | 176 } |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 216 javascript << FX_WSTRC(L"{\n"); | 219 javascript << FX_WSTRC(L"{\n"); |
| 217 for (const auto& expr : m_ExpressionList) { | 220 for (const auto& expr : m_ExpressionList) { |
| 218 if (expr == m_ExpressionList.back()) | 221 if (expr == m_ExpressionList.back()) |
| 219 expr->ToImpliedReturnJS(javascript); | 222 expr->ToImpliedReturnJS(javascript); |
| 220 else | 223 else |
| 221 expr->ToJavaScript(javascript); | 224 expr->ToJavaScript(javascript); |
| 222 } | 225 } |
| 223 javascript << FX_WSTRC(L"}\n"); | 226 javascript << FX_WSTRC(L"}\n"); |
| 224 } | 227 } |
| 225 | 228 |
| 226 CXFA_FMDoExpression::CXFA_FMDoExpression(uint32_t line, | 229 CXFA_FMDoExpression::CXFA_FMDoExpression( |
| 227 CXFA_FMExpression* pList) | 230 uint32_t line, |
| 228 : CXFA_FMExpression(line), m_pList(pList) {} | 231 std::unique_ptr<CXFA_FMExpression> pList) |
| 232 : CXFA_FMExpression(line), m_pList(std::move(pList)) {} |
| 229 | 233 |
| 230 CXFA_FMDoExpression::~CXFA_FMDoExpression() {} | 234 CXFA_FMDoExpression::~CXFA_FMDoExpression() {} |
| 231 | 235 |
| 232 void CXFA_FMDoExpression::ToJavaScript(CFX_WideTextBuf& javascript) { | 236 void CXFA_FMDoExpression::ToJavaScript(CFX_WideTextBuf& javascript) { |
| 233 m_pList->ToJavaScript(javascript); | 237 m_pList->ToJavaScript(javascript); |
| 234 } | 238 } |
| 235 | 239 |
| 236 void CXFA_FMDoExpression::ToImpliedReturnJS(CFX_WideTextBuf& javascript) { | 240 void CXFA_FMDoExpression::ToImpliedReturnJS(CFX_WideTextBuf& javascript) { |
| 237 m_pList->ToImpliedReturnJS(javascript); | 241 m_pList->ToImpliedReturnJS(javascript); |
| 238 } | 242 } |
| 239 | 243 |
| 240 CXFA_FMIfExpression::CXFA_FMIfExpression(uint32_t line, | 244 CXFA_FMIfExpression::CXFA_FMIfExpression( |
| 241 CXFA_FMSimpleExpression* pExpression, | 245 uint32_t line, |
| 242 CXFA_FMExpression* pIfExpression, | 246 std::unique_ptr<CXFA_FMSimpleExpression> pExpression, |
| 243 CXFA_FMExpression* pElseExpression) | 247 std::unique_ptr<CXFA_FMExpression> pIfExpression, |
| 248 std::unique_ptr<CXFA_FMExpression> pElseExpression) |
| 244 : CXFA_FMExpression(line, XFA_FM_EXPTYPE_IF), | 249 : CXFA_FMExpression(line, XFA_FM_EXPTYPE_IF), |
| 245 m_pExpression(pExpression), | 250 m_pExpression(std::move(pExpression)), |
| 246 m_pIfExpression(pIfExpression), | 251 m_pIfExpression(std::move(pIfExpression)), |
| 247 m_pElseExpression(pElseExpression) {} | 252 m_pElseExpression(std::move(pElseExpression)) {} |
| 248 | 253 |
| 249 CXFA_FMIfExpression::~CXFA_FMIfExpression() {} | 254 CXFA_FMIfExpression::~CXFA_FMIfExpression() {} |
| 250 | 255 |
| 251 void CXFA_FMIfExpression::ToJavaScript(CFX_WideTextBuf& javascript) { | 256 void CXFA_FMIfExpression::ToJavaScript(CFX_WideTextBuf& javascript) { |
| 252 javascript << FX_WSTRC(L"if ("); | 257 javascript << FX_WSTRC(L"if ("); |
| 253 if (m_pExpression) { | 258 if (m_pExpression) { |
| 254 javascript << XFA_FM_EXPTypeToString(GETFMVALUE); | 259 javascript << XFA_FM_EXPTypeToString(GETFMVALUE); |
| 255 javascript << FX_WSTRC(L"("); | 260 javascript << FX_WSTRC(L"("); |
| 256 m_pExpression->ToJavaScript(javascript); | 261 m_pExpression->ToJavaScript(javascript); |
| 257 javascript << FX_WSTRC(L")"); | 262 javascript << FX_WSTRC(L")"); |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 301 } | 306 } |
| 302 | 307 |
| 303 CXFA_FMLoopExpression::~CXFA_FMLoopExpression() {} | 308 CXFA_FMLoopExpression::~CXFA_FMLoopExpression() {} |
| 304 | 309 |
| 305 void CXFA_FMLoopExpression::ToJavaScript(CFX_WideTextBuf& javascript) {} | 310 void CXFA_FMLoopExpression::ToJavaScript(CFX_WideTextBuf& javascript) {} |
| 306 | 311 |
| 307 void CXFA_FMLoopExpression::ToImpliedReturnJS(CFX_WideTextBuf&) {} | 312 void CXFA_FMLoopExpression::ToImpliedReturnJS(CFX_WideTextBuf&) {} |
| 308 | 313 |
| 309 CXFA_FMWhileExpression::CXFA_FMWhileExpression( | 314 CXFA_FMWhileExpression::CXFA_FMWhileExpression( |
| 310 uint32_t line, | 315 uint32_t line, |
| 311 CXFA_FMSimpleExpression* pCondition, | 316 std::unique_ptr<CXFA_FMSimpleExpression> pCondition, |
| 312 CXFA_FMExpression* pExpression) | 317 std::unique_ptr<CXFA_FMExpression> pExpression) |
| 313 : CXFA_FMLoopExpression(line), | 318 : CXFA_FMLoopExpression(line), |
| 314 m_pCondition(pCondition), | 319 m_pCondition(std::move(pCondition)), |
| 315 m_pExpression(pExpression) {} | 320 m_pExpression(std::move(pExpression)) {} |
| 316 | 321 |
| 317 CXFA_FMWhileExpression::~CXFA_FMWhileExpression() {} | 322 CXFA_FMWhileExpression::~CXFA_FMWhileExpression() {} |
| 318 | 323 |
| 319 void CXFA_FMWhileExpression::ToJavaScript(CFX_WideTextBuf& javascript) { | 324 void CXFA_FMWhileExpression::ToJavaScript(CFX_WideTextBuf& javascript) { |
| 320 javascript << FX_WSTRC(L"while ("); | 325 javascript << FX_WSTRC(L"while ("); |
| 321 m_pCondition->ToJavaScript(javascript); | 326 m_pCondition->ToJavaScript(javascript); |
| 322 javascript << FX_WSTRC(L")\n"); | 327 javascript << FX_WSTRC(L")\n"); |
| 323 m_pExpression->ToJavaScript(javascript); | 328 m_pExpression->ToJavaScript(javascript); |
| 324 } | 329 } |
| 325 | 330 |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 359 javascript << FX_WSTRC(L" = 0;\n"); | 364 javascript << FX_WSTRC(L" = 0;\n"); |
| 360 javascript << FX_WSTRC(L"continue;\n"); | 365 javascript << FX_WSTRC(L"continue;\n"); |
| 361 } | 366 } |
| 362 | 367 |
| 363 void CXFA_FMContinueExpression::ToImpliedReturnJS(CFX_WideTextBuf& javascript) { | 368 void CXFA_FMContinueExpression::ToImpliedReturnJS(CFX_WideTextBuf& javascript) { |
| 364 javascript << RUNTIMEFUNCTIONRETURNVALUE; | 369 javascript << RUNTIMEFUNCTIONRETURNVALUE; |
| 365 javascript << FX_WSTRC(L" = 0;\n"); | 370 javascript << FX_WSTRC(L" = 0;\n"); |
| 366 javascript << FX_WSTRC(L"continue;\n"); | 371 javascript << FX_WSTRC(L"continue;\n"); |
| 367 } | 372 } |
| 368 | 373 |
| 369 CXFA_FMForExpression::CXFA_FMForExpression(uint32_t line, | 374 CXFA_FMForExpression::CXFA_FMForExpression( |
| 370 const CFX_WideStringC& wsVariant, | 375 uint32_t line, |
| 371 CXFA_FMSimpleExpression* pAssignment, | 376 const CFX_WideStringC& wsVariant, |
| 372 CXFA_FMSimpleExpression* pAccessor, | 377 std::unique_ptr<CXFA_FMSimpleExpression> pAssignment, |
| 373 int32_t iDirection, | 378 std::unique_ptr<CXFA_FMSimpleExpression> pAccessor, |
| 374 CXFA_FMSimpleExpression* pStep, | 379 int32_t iDirection, |
| 375 CXFA_FMExpression* pList) | 380 std::unique_ptr<CXFA_FMSimpleExpression> pStep, |
| 381 std::unique_ptr<CXFA_FMExpression> pList) |
| 376 : CXFA_FMLoopExpression(line), | 382 : CXFA_FMLoopExpression(line), |
| 377 m_wsVariant(wsVariant), | 383 m_wsVariant(wsVariant), |
| 378 m_pAssignment(pAssignment), | 384 m_pAssignment(std::move(pAssignment)), |
| 379 m_pAccessor(pAccessor), | 385 m_pAccessor(std::move(pAccessor)), |
| 380 m_iDirection(iDirection), | 386 m_iDirection(iDirection), |
| 381 m_pStep(pStep), | 387 m_pStep(std::move(pStep)), |
| 382 m_pList(pList) {} | 388 m_pList(std::move(pList)) {} |
| 383 | 389 |
| 384 CXFA_FMForExpression::~CXFA_FMForExpression() {} | 390 CXFA_FMForExpression::~CXFA_FMForExpression() {} |
| 385 | 391 |
| 386 void CXFA_FMForExpression::ToJavaScript(CFX_WideTextBuf& javascript) { | 392 void CXFA_FMForExpression::ToJavaScript(CFX_WideTextBuf& javascript) { |
| 387 javascript << FX_WSTRC(L"{\nvar "); | 393 javascript << FX_WSTRC(L"{\nvar "); |
| 388 CFX_WideString tempVariant; | 394 CFX_WideString tempVariant; |
| 389 if (m_wsVariant.GetAt(0) == L'!') { | 395 if (m_wsVariant.GetAt(0) == L'!') { |
| 390 tempVariant = EXCLAMATION_IN_IDENTIFIER + m_wsVariant.Mid(1); | 396 tempVariant = EXCLAMATION_IN_IDENTIFIER + m_wsVariant.Mid(1); |
| 391 javascript << tempVariant; | 397 javascript << tempVariant; |
| 392 } else { | 398 } else { |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 480 } | 486 } |
| 481 javascript << FX_WSTRC(L")\n"); | 487 javascript << FX_WSTRC(L")\n"); |
| 482 m_pList->ToImpliedReturnJS(javascript); | 488 m_pList->ToImpliedReturnJS(javascript); |
| 483 javascript << FX_WSTRC(L"}\n"); | 489 javascript << FX_WSTRC(L"}\n"); |
| 484 } | 490 } |
| 485 | 491 |
| 486 CXFA_FMForeachExpression::CXFA_FMForeachExpression( | 492 CXFA_FMForeachExpression::CXFA_FMForeachExpression( |
| 487 uint32_t line, | 493 uint32_t line, |
| 488 const CFX_WideStringC& wsIdentifier, | 494 const CFX_WideStringC& wsIdentifier, |
| 489 std::vector<std::unique_ptr<CXFA_FMSimpleExpression>>&& pAccessors, | 495 std::vector<std::unique_ptr<CXFA_FMSimpleExpression>>&& pAccessors, |
| 490 CXFA_FMExpression* pList) | 496 std::unique_ptr<CXFA_FMExpression> pList) |
| 491 : CXFA_FMLoopExpression(line), | 497 : CXFA_FMLoopExpression(line), |
| 492 m_wsIdentifier(wsIdentifier), | 498 m_wsIdentifier(wsIdentifier), |
| 493 m_pAccessors(std::move(pAccessors)), | 499 m_pAccessors(std::move(pAccessors)), |
| 494 m_pList(pList) {} | 500 m_pList(std::move(pList)) {} |
| 495 | 501 |
| 496 CXFA_FMForeachExpression::~CXFA_FMForeachExpression() {} | 502 CXFA_FMForeachExpression::~CXFA_FMForeachExpression() {} |
| 497 | 503 |
| 498 void CXFA_FMForeachExpression::ToJavaScript(CFX_WideTextBuf& javascript) { | 504 void CXFA_FMForeachExpression::ToJavaScript(CFX_WideTextBuf& javascript) { |
| 499 javascript << FX_WSTRC(L"{\n"); | 505 javascript << FX_WSTRC(L"{\n"); |
| 500 javascript << FX_WSTRC(L"var "); | 506 javascript << FX_WSTRC(L"var "); |
| 501 if (m_wsIdentifier.GetAt(0) == L'!') { | 507 if (m_wsIdentifier.GetAt(0) == L'!') { |
| 502 CFX_WideString tempIdentifier = | 508 CFX_WideString tempIdentifier = |
| 503 EXCLAMATION_IN_IDENTIFIER + m_wsIdentifier.Mid(1); | 509 EXCLAMATION_IN_IDENTIFIER + m_wsIdentifier.Mid(1); |
| 504 javascript << tempIdentifier; | 510 javascript << tempIdentifier; |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 584 } | 590 } |
| 585 javascript << FX_WSTRC(L" = "); | 591 javascript << FX_WSTRC(L" = "); |
| 586 javascript << RUNTIMEBLOCKTEMPARRAY; | 592 javascript << RUNTIMEBLOCKTEMPARRAY; |
| 587 javascript << FX_WSTRC(L"["); | 593 javascript << FX_WSTRC(L"["); |
| 588 javascript << RUNTIMEBLOCKTEMPARRAYINDEX; | 594 javascript << RUNTIMEBLOCKTEMPARRAYINDEX; |
| 589 javascript << FX_WSTRC(L"++];\n"); | 595 javascript << FX_WSTRC(L"++];\n"); |
| 590 m_pList->ToImpliedReturnJS(javascript); | 596 m_pList->ToImpliedReturnJS(javascript); |
| 591 javascript << FX_WSTRC(L"}\n"); | 597 javascript << FX_WSTRC(L"}\n"); |
| 592 javascript << FX_WSTRC(L"}\n"); | 598 javascript << FX_WSTRC(L"}\n"); |
| 593 } | 599 } |
| OLD | NEW |