| 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 16 matching lines...) Expand all Loading... |
| 27 : m_type(type), m_line(line) {} | 27 : m_type(type), m_line(line) {} |
| 28 | 28 |
| 29 void CXFA_FMExpression::ToJavaScript(CFX_WideTextBuf& javascript) {} | 29 void CXFA_FMExpression::ToJavaScript(CFX_WideTextBuf& javascript) {} |
| 30 | 30 |
| 31 void CXFA_FMExpression::ToImpliedReturnJS(CFX_WideTextBuf& javascript) {} | 31 void CXFA_FMExpression::ToImpliedReturnJS(CFX_WideTextBuf& javascript) {} |
| 32 | 32 |
| 33 CXFA_FMFunctionDefinition::CXFA_FMFunctionDefinition( | 33 CXFA_FMFunctionDefinition::CXFA_FMFunctionDefinition( |
| 34 uint32_t line, | 34 uint32_t line, |
| 35 bool isGlobal, | 35 bool isGlobal, |
| 36 const CFX_WideStringC& wsName, | 36 const CFX_WideStringC& wsName, |
| 37 std::unique_ptr<CFX_WideStringCArray> pArguments, | 37 std::vector<CFX_WideStringC>&& arguments, |
| 38 std::vector<std::unique_ptr<CXFA_FMExpression>>&& pExpressions) | 38 std::vector<std::unique_ptr<CXFA_FMExpression>>&& expressions) |
| 39 : CXFA_FMExpression(line, XFA_FM_EXPTYPE_FUNC), | 39 : CXFA_FMExpression(line, XFA_FM_EXPTYPE_FUNC), |
| 40 m_wsName(wsName), | 40 m_wsName(wsName), |
| 41 m_pArguments(std::move(pArguments)), | 41 m_pArguments(std::move(arguments)), |
| 42 m_pExpressions(std::move(pExpressions)), | 42 m_pExpressions(std::move(expressions)), |
| 43 m_isGlobal(isGlobal) {} | 43 m_isGlobal(isGlobal) {} |
| 44 | 44 |
| 45 CXFA_FMFunctionDefinition::~CXFA_FMFunctionDefinition() {} | 45 CXFA_FMFunctionDefinition::~CXFA_FMFunctionDefinition() {} |
| 46 | 46 |
| 47 void CXFA_FMFunctionDefinition::ToJavaScript(CFX_WideTextBuf& javascript) { | 47 void CXFA_FMFunctionDefinition::ToJavaScript(CFX_WideTextBuf& javascript) { |
| 48 if (m_isGlobal && m_pExpressions.empty()) { | 48 if (m_isGlobal && m_pExpressions.empty()) { |
| 49 javascript << FX_WSTRC(L"// comments only"); | 49 javascript << FX_WSTRC(L"// comments only"); |
| 50 return; | 50 return; |
| 51 } | 51 } |
| 52 if (m_isGlobal) { | 52 if (m_isGlobal) { |
| 53 javascript << FX_WSTRC(L"(\n"); | 53 javascript << FX_WSTRC(L"(\n"); |
| 54 } | 54 } |
| 55 javascript << FX_WSTRC(L"function "); | 55 javascript << FX_WSTRC(L"function "); |
| 56 if (m_wsName.GetAt(0) == L'!') { | 56 if (m_wsName.GetAt(0) == L'!') { |
| 57 CFX_WideString tempName = EXCLAMATION_IN_IDENTIFIER + m_wsName.Mid(1); | 57 CFX_WideString tempName = EXCLAMATION_IN_IDENTIFIER + m_wsName.Mid(1); |
| 58 javascript << tempName; | 58 javascript << tempName; |
| 59 } else { | 59 } else { |
| 60 javascript << m_wsName; | 60 javascript << m_wsName; |
| 61 } | 61 } |
| 62 javascript << FX_WSTRC(L"("); | 62 javascript << FX_WSTRC(L"("); |
| 63 if (m_pArguments != 0) { | 63 bool bNeedComma = false; |
| 64 CFX_WideStringC identifier = 0; | 64 for (const auto& identifier : m_pArguments) { |
| 65 for (int i = 0; i < m_pArguments->GetSize(); ++i) { | 65 if (bNeedComma) |
| 66 identifier = m_pArguments->GetAt(i); | 66 javascript << FX_WSTRC(L", "); |
| 67 if (identifier.GetAt(0) == L'!') { | 67 if (identifier.GetAt(0) == L'!') { |
| 68 CFX_WideString tempIdentifier = | 68 CFX_WideString tempIdentifier = |
| 69 EXCLAMATION_IN_IDENTIFIER + identifier.Mid(1); | 69 EXCLAMATION_IN_IDENTIFIER + identifier.Mid(1); |
| 70 javascript << tempIdentifier; | 70 javascript << tempIdentifier; |
| 71 } else { | 71 } else { |
| 72 javascript << identifier; | 72 javascript << identifier; |
| 73 } | |
| 74 if (i + 1 < m_pArguments->GetSize()) { | |
| 75 javascript << FX_WSTRC(L", "); | |
| 76 } | |
| 77 } | 73 } |
| 74 bNeedComma = true; |
| 78 } | 75 } |
| 79 javascript << FX_WSTRC(L")\n{\n"); | 76 javascript << FX_WSTRC(L")\n{\n"); |
| 80 javascript << FX_WSTRC(L"var "); | 77 javascript << FX_WSTRC(L"var "); |
| 81 javascript << RUNTIMEFUNCTIONRETURNVALUE; | 78 javascript << RUNTIMEFUNCTIONRETURNVALUE; |
| 82 javascript << FX_WSTRC(L" = null;\n"); | 79 javascript << FX_WSTRC(L" = null;\n"); |
| 83 for (const auto& expr : m_pExpressions) { | 80 for (const auto& expr : m_pExpressions) { |
| 84 if (expr == m_pExpressions.back()) | 81 if (expr == m_pExpressions.back()) |
| 85 expr->ToImpliedReturnJS(javascript); | 82 expr->ToImpliedReturnJS(javascript); |
| 86 else | 83 else |
| 87 expr->ToJavaScript(javascript); | 84 expr->ToJavaScript(javascript); |
| (...skipping 502 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 590 } | 587 } |
| 591 javascript << FX_WSTRC(L" = "); | 588 javascript << FX_WSTRC(L" = "); |
| 592 javascript << RUNTIMEBLOCKTEMPARRAY; | 589 javascript << RUNTIMEBLOCKTEMPARRAY; |
| 593 javascript << FX_WSTRC(L"["); | 590 javascript << FX_WSTRC(L"["); |
| 594 javascript << RUNTIMEBLOCKTEMPARRAYINDEX; | 591 javascript << RUNTIMEBLOCKTEMPARRAYINDEX; |
| 595 javascript << FX_WSTRC(L"++];\n"); | 592 javascript << FX_WSTRC(L"++];\n"); |
| 596 m_pList->ToImpliedReturnJS(javascript); | 593 m_pList->ToImpliedReturnJS(javascript); |
| 597 javascript << FX_WSTRC(L"}\n"); | 594 javascript << FX_WSTRC(L"}\n"); |
| 598 javascript << FX_WSTRC(L"}\n"); | 595 javascript << FX_WSTRC(L"}\n"); |
| 599 } | 596 } |
| OLD | NEW |