summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--xfa/src/fxfa/src/fm2js/xfa_expression.cpp213
-rw-r--r--xfa/src/fxfa/src/fm2js/xfa_expression.h115
-rw-r--r--xfa/src/fxfa/src/fm2js/xfa_simpleexpression.cpp100
-rw-r--r--xfa/src/fxfa/src/fm2js/xfa_simpleexpression.h10
4 files changed, 211 insertions, 227 deletions
diff --git a/xfa/src/fxfa/src/fm2js/xfa_expression.cpp b/xfa/src/fxfa/src/fm2js/xfa_expression.cpp
index 6f135c8645..93b604df7e 100644
--- a/xfa/src/fxfa/src/fm2js/xfa_expression.cpp
+++ b/xfa/src/fxfa/src/fm2js/xfa_expression.cpp
@@ -8,19 +8,28 @@
#include "core/include/fxcrt/fx_basic.h"
-static CFX_WideStringC RUNTIMEBLOCKTEMPARRAY =
+namespace {
+
+const CFX_WideStringC RUNTIMEBLOCKTEMPARRAY =
FX_WSTRC(L"foxit_xfa_formcalc_runtime_block_temp_array");
-static CFX_WideStringC RUNTIMEBLOCKTEMPARRAYINDEX =
+
+const CFX_WideStringC RUNTIMEBLOCKTEMPARRAYINDEX =
FX_WSTRC(L"foxit_xfa_formcalc_runtime_block_temp_array_index");
+} // namespace
+
CXFA_FMExpression::CXFA_FMExpression(FX_DWORD line)
: m_type(XFA_FM_EXPTYPE_UNKNOWN), m_line(line) {
}
+
CXFA_FMExpression::CXFA_FMExpression(FX_DWORD line, XFA_FM_EXPTYPE type)
: m_type(type), m_line(line) {
}
+
void CXFA_FMExpression::ToJavaScript(CFX_WideTextBuf& javascript) {}
+
void CXFA_FMExpression::ToImpliedReturnJS(CFX_WideTextBuf& javascript) {}
+
CXFA_FMFunctionDefinition::CXFA_FMFunctionDefinition(
FX_DWORD line,
FX_BOOL isGlobal,
@@ -33,26 +42,21 @@ CXFA_FMFunctionDefinition::CXFA_FMFunctionDefinition(
m_pExpressions(pExpressions),
m_isGlobal(isGlobal) {
}
+
CXFA_FMFunctionDefinition::~CXFA_FMFunctionDefinition() {
if (m_pArguments) {
m_pArguments->RemoveAll();
delete m_pArguments;
- m_pArguments = 0;
}
if (m_pExpressions) {
- int32_t expc = m_pExpressions->GetSize();
- int32_t index = 0;
- CXFA_FMExpression* e = 0;
- while (index < expc) {
- e = (CXFA_FMExpression*)m_pExpressions->GetAt(index);
- delete e;
- index++;
+ for (int i = 0; i < m_pExpressions->GetSize(); ++i) {
+ delete reinterpret_cast<CXFA_FMExpression*>(m_pExpressions->GetAt(i));
}
m_pExpressions->RemoveAll();
delete m_pExpressions;
- m_pExpressions = 0;
}
}
+
void CXFA_FMFunctionDefinition::ToJavaScript(CFX_WideTextBuf& javascript) {
if (m_isGlobal && (!m_pExpressions || m_pExpressions->GetSize() == 0)) {
javascript << FX_WSTRC(L"// comments only");
@@ -70,11 +74,9 @@ void CXFA_FMFunctionDefinition::ToJavaScript(CFX_WideTextBuf& javascript) {
}
javascript << FX_WSTRC(L"(");
if (m_pArguments != 0) {
- int32_t argc = m_pArguments->GetSize();
- int32_t index = 0;
CFX_WideStringC identifier = 0;
- while (index < argc) {
- identifier = m_pArguments->GetAt(index);
+ for (int i = 0; i < m_pArguments->GetSize(); ++i) {
+ identifier = m_pArguments->GetAt(i);
if (identifier.GetAt(0) == L'!') {
CFX_WideString tempIdentifier =
EXCLAMATION_IN_IDENTIFIER + identifier.Mid(1);
@@ -82,10 +84,9 @@ void CXFA_FMFunctionDefinition::ToJavaScript(CFX_WideTextBuf& javascript) {
} else {
javascript << identifier;
}
- if (index + 1 < argc) {
+ if (i + 1 < m_pArguments->GetSize()) {
javascript << FX_WSTRC(L", ");
}
- index++;
}
}
javascript << FX_WSTRC(L")\n{\n");
@@ -93,17 +94,14 @@ void CXFA_FMFunctionDefinition::ToJavaScript(CFX_WideTextBuf& javascript) {
javascript << RUNTIMEFUNCTIONRETURNVALUE;
javascript << FX_WSTRC(L" = null;\n");
if (m_pExpressions) {
- int32_t expc = m_pExpressions->GetSize();
- int32_t index = 0;
- CXFA_FMExpression* e = 0;
- while (index < expc) {
- e = (CXFA_FMExpression*)m_pExpressions->GetAt(index);
- if (index + 1 < expc) {
+ for (int i = 0; i < m_pExpressions->GetSize(); ++i) {
+ CXFA_FMExpression* e =
+ reinterpret_cast<CXFA_FMExpression*>(m_pExpressions->GetAt(i));
+ if (i + 1 < m_pExpressions->GetSize()) {
e->ToJavaScript(javascript);
} else {
e->ToImpliedReturnJS(javascript);
}
- index++;
}
}
javascript << FX_WSTRC(L"return ");
@@ -120,19 +118,16 @@ void CXFA_FMFunctionDefinition::ToJavaScript(CFX_WideTextBuf& javascript) {
javascript << FX_WSTRC(L").call(this);\n");
}
}
+
void CXFA_FMFunctionDefinition::ToImpliedReturnJS(CFX_WideTextBuf&) {}
+
CXFA_FMVarExpression::CXFA_FMVarExpression(FX_DWORD line,
const CFX_WideStringC& wsName,
CXFA_FMExpression* pInit)
: CXFA_FMExpression(line, XFA_FM_EXPTYPE_VAR),
m_wsName(wsName),
m_pInit(pInit) {}
-CXFA_FMVarExpression::~CXFA_FMVarExpression() {
- if (m_pInit) {
- delete m_pInit;
- m_pInit = 0;
- }
-}
+
void CXFA_FMVarExpression::ToJavaScript(CFX_WideTextBuf& javascript) {
javascript << FX_WSTRC(L"var ");
CFX_WideString tempName = m_wsName;
@@ -153,6 +148,7 @@ void CXFA_FMVarExpression::ToJavaScript(CFX_WideTextBuf& javascript) {
javascript << FX_WSTRC(L"\"\";\n");
}
}
+
void CXFA_FMVarExpression::ToImpliedReturnJS(CFX_WideTextBuf& javascript) {
javascript << FX_WSTRC(L"var ");
CFX_WideString tempName = m_wsName;
@@ -177,15 +173,11 @@ void CXFA_FMVarExpression::ToImpliedReturnJS(CFX_WideTextBuf& javascript) {
javascript << tempName;
javascript << FX_WSTRC(L";\n");
}
+
CXFA_FMExpExpression::CXFA_FMExpExpression(FX_DWORD line,
CXFA_FMSimpleExpression* pExpression)
: CXFA_FMExpression(line, XFA_FM_EXPTYPE_EXP), m_pExpression(pExpression) {}
-CXFA_FMExpExpression::~CXFA_FMExpExpression() {
- if (m_pExpression) {
- delete m_pExpression;
- m_pExpression = 0;
- }
-}
+
void CXFA_FMExpExpression::ToJavaScript(CFX_WideTextBuf& javascript) {
if (m_pExpression->GetOperatorToken() == TOKassign) {
m_pExpression->ToJavaScript(javascript);
@@ -194,6 +186,7 @@ void CXFA_FMExpExpression::ToJavaScript(CFX_WideTextBuf& javascript) {
javascript << FX_WSTRC(L";\n");
}
}
+
void CXFA_FMExpExpression::ToImpliedReturnJS(CFX_WideTextBuf& javascript) {
if (m_pExpression->GetOperatorToken() == TOKassign) {
m_pExpression->ToImpliedReturnJS(javascript);
@@ -217,72 +210,62 @@ void CXFA_FMExpExpression::ToImpliedReturnJS(CFX_WideTextBuf& javascript) {
}
}
}
+
CXFA_FMBlockExpression::CXFA_FMBlockExpression(FX_DWORD line,
CFX_PtrArray* pExpressionList)
: CXFA_FMExpression(line, XFA_FM_EXPTYPE_BLOCK),
m_pExpressionList(pExpressionList) {}
+
CXFA_FMBlockExpression::~CXFA_FMBlockExpression() {
if (m_pExpressionList) {
- int32_t expc = m_pExpressionList->GetSize();
- int32_t index = 0;
- CXFA_FMExpression* e = 0;
- while (index < expc) {
- e = (CXFA_FMExpression*)m_pExpressionList->GetAt(index);
- delete e;
- index++;
+ for (int i = 0; i < m_pExpressionList->GetSize(); ++i) {
+ delete reinterpret_cast<CXFA_FMExpression*>(m_pExpressionList->GetAt(i));
}
m_pExpressionList->RemoveAll();
delete m_pExpressionList;
- m_pExpressionList = 0;
}
}
+
void CXFA_FMBlockExpression::ToJavaScript(CFX_WideTextBuf& javascript) {
javascript << FX_WSTRC(L"{\n");
if (m_pExpressionList) {
- int32_t expc = m_pExpressionList->GetSize();
- int32_t index = 0;
- CXFA_FMExpression* e = 0;
- while (index < expc) {
- e = (CXFA_FMExpression*)m_pExpressionList->GetAt(index);
+ for (int i = 0; i < m_pExpressionList->GetSize(); ++i) {
+ CXFA_FMExpression* e =
+ reinterpret_cast<CXFA_FMExpression*>(m_pExpressionList->GetAt(i));
e->ToJavaScript(javascript);
- index++;
}
}
javascript << FX_WSTRC(L"}\n");
}
+
void CXFA_FMBlockExpression::ToImpliedReturnJS(CFX_WideTextBuf& javascript) {
javascript << FX_WSTRC(L"{\n");
if (m_pExpressionList) {
- int32_t expc = m_pExpressionList->GetSize();
- int32_t index = 0;
- CXFA_FMExpression* e = 0;
- while (index < expc) {
- e = (CXFA_FMExpression*)m_pExpressionList->GetAt(index);
- if (index + 1 == expc) {
+ for (int i = 0; i < m_pExpressionList->GetSize(); ++i) {
+ CXFA_FMExpression* e =
+ reinterpret_cast<CXFA_FMExpression*>(m_pExpressionList->GetAt(i));
+ if (i + 1 == m_pExpressionList->GetSize()) {
e->ToImpliedReturnJS(javascript);
} else {
e->ToJavaScript(javascript);
}
- index++;
}
}
javascript << FX_WSTRC(L"}\n");
}
+
CXFA_FMDoExpression::CXFA_FMDoExpression(FX_DWORD line,
CXFA_FMExpression* pList)
: CXFA_FMExpression(line), m_pList(pList) {}
-CXFA_FMDoExpression::~CXFA_FMDoExpression() {
- if (m_pList) {
- delete m_pList;
- m_pList = 0;
- }
-}
+
void CXFA_FMDoExpression::ToJavaScript(CFX_WideTextBuf& javascript) {
m_pList->ToJavaScript(javascript);
}
+
void CXFA_FMDoExpression::ToImpliedReturnJS(CFX_WideTextBuf& javascript) {
m_pList->ToImpliedReturnJS(javascript);
}
+
CXFA_FMIfExpression::CXFA_FMIfExpression(FX_DWORD line,
CXFA_FMSimpleExpression* pExpression,
CXFA_FMExpression* pIfExpression,
@@ -291,20 +274,7 @@ CXFA_FMIfExpression::CXFA_FMIfExpression(FX_DWORD line,
m_pExpression(pExpression),
m_pIfExpression(pIfExpression),
m_pElseExpression(pElseExpression) {}
-CXFA_FMIfExpression::~CXFA_FMIfExpression() {
- if (m_pExpression) {
- delete m_pExpression;
- m_pExpression = 0;
- }
- if (m_pIfExpression) {
- delete m_pIfExpression;
- m_pIfExpression = 0;
- }
- if (m_pElseExpression) {
- delete m_pElseExpression;
- m_pElseExpression = 0;
- }
-}
+
void CXFA_FMIfExpression::ToJavaScript(CFX_WideTextBuf& javascript) {
javascript << FX_WSTRC(L"if (");
if (m_pExpression) {
@@ -329,6 +299,7 @@ void CXFA_FMIfExpression::ToJavaScript(CFX_WideTextBuf& javascript) {
}
}
}
+
void CXFA_FMIfExpression::ToImpliedReturnJS(CFX_WideTextBuf& javascript) {
javascript << RUNTIMEFUNCTIONRETURNVALUE;
javascript << FX_WSTRC(L" = 0;\n");
@@ -355,9 +326,13 @@ void CXFA_FMIfExpression::ToImpliedReturnJS(CFX_WideTextBuf& javascript) {
}
}
}
+
CXFA_FMLoopExpression::~CXFA_FMLoopExpression() {}
+
void CXFA_FMLoopExpression::ToJavaScript(CFX_WideTextBuf& javascript) {}
+
void CXFA_FMLoopExpression::ToImpliedReturnJS(CFX_WideTextBuf&) {}
+
CXFA_FMWhileExpression::CXFA_FMWhileExpression(
FX_DWORD line,
CXFA_FMSimpleExpression* pCondition,
@@ -365,22 +340,14 @@ CXFA_FMWhileExpression::CXFA_FMWhileExpression(
: CXFA_FMLoopExpression(line),
m_pCondition(pCondition),
m_pExpression(pExpression) {}
-CXFA_FMWhileExpression::~CXFA_FMWhileExpression() {
- if (m_pCondition) {
- delete m_pCondition;
- m_pCondition = 0;
- }
- if (m_pExpression) {
- delete m_pExpression;
- m_pExpression = 0;
- }
-}
+
void CXFA_FMWhileExpression::ToJavaScript(CFX_WideTextBuf& javascript) {
javascript << FX_WSTRC(L"while (");
m_pCondition->ToJavaScript(javascript);
javascript << FX_WSTRC(L")\n");
m_pExpression->ToJavaScript(javascript);
}
+
void CXFA_FMWhileExpression::ToImpliedReturnJS(CFX_WideTextBuf& javascript) {
javascript << RUNTIMEFUNCTIONRETURNVALUE;
javascript << FX_WSTRC(L" = 0;\n");
@@ -389,34 +356,43 @@ void CXFA_FMWhileExpression::ToImpliedReturnJS(CFX_WideTextBuf& javascript) {
javascript << FX_WSTRC(L")\n");
m_pExpression->ToImpliedReturnJS(javascript);
}
+
CXFA_FMBreakExpression::CXFA_FMBreakExpression(FX_DWORD line)
: CXFA_FMExpression(line, XFA_FM_EXPTYPE_BREAK) {
}
+
CXFA_FMBreakExpression::~CXFA_FMBreakExpression() {}
+
void CXFA_FMBreakExpression::ToJavaScript(CFX_WideTextBuf& javascript) {
javascript << RUNTIMEFUNCTIONRETURNVALUE;
javascript << FX_WSTRC(L" = 0;\n");
javascript << FX_WSTRC(L"break;\n");
}
+
void CXFA_FMBreakExpression::ToImpliedReturnJS(CFX_WideTextBuf& javascript) {
javascript << RUNTIMEFUNCTIONRETURNVALUE;
javascript << FX_WSTRC(L" = 0;\n");
javascript << FX_WSTRC(L"break;\n");
}
+
CXFA_FMContinueExpression::CXFA_FMContinueExpression(FX_DWORD line)
: CXFA_FMExpression(line, XFA_FM_EXPTYPE_CONTINUE) {
}
+
CXFA_FMContinueExpression::~CXFA_FMContinueExpression() {}
+
void CXFA_FMContinueExpression::ToJavaScript(CFX_WideTextBuf& javascript) {
javascript << RUNTIMEFUNCTIONRETURNVALUE;
javascript << FX_WSTRC(L" = 0;\n");
javascript << FX_WSTRC(L"continue;\n");
}
+
void CXFA_FMContinueExpression::ToImpliedReturnJS(CFX_WideTextBuf& javascript) {
javascript << RUNTIMEFUNCTIONRETURNVALUE;
javascript << FX_WSTRC(L" = 0;\n");
javascript << FX_WSTRC(L"continue;\n");
}
+
CXFA_FMForExpression::CXFA_FMForExpression(FX_DWORD line,
const CFX_WideStringC& wsVariant,
CXFA_FMSimpleExpression* pAssignment,
@@ -431,24 +407,7 @@ CXFA_FMForExpression::CXFA_FMForExpression(FX_DWORD line,
m_iDirection(iDirection),
m_pStep(pStep),
m_pList(pList) {}
-CXFA_FMForExpression::~CXFA_FMForExpression() {
- if (m_pAssignment) {
- delete m_pAssignment;
- m_pAssignment = 0;
- }
- if (m_pAccessor) {
- delete m_pAccessor;
- m_pAccessor = 0;
- }
- if (m_pStep) {
- delete m_pStep;
- m_pStep = 0;
- }
- if (m_pList) {
- delete m_pList;
- m_pList = 0;
- }
-}
+
void CXFA_FMForExpression::ToJavaScript(CFX_WideTextBuf& javascript) {
javascript << FX_WSTRC(L"{\nvar ");
CFX_WideString tempVariant;
@@ -497,6 +456,7 @@ void CXFA_FMForExpression::ToJavaScript(CFX_WideTextBuf& javascript) {
m_pList->ToJavaScript(javascript);
javascript << FX_WSTRC(L"}\n");
}
+
void CXFA_FMForExpression::ToImpliedReturnJS(CFX_WideTextBuf& javascript) {
javascript << RUNTIMEFUNCTIONRETURNVALUE;
javascript << FX_WSTRC(L" = 0;\n");
@@ -547,6 +507,7 @@ void CXFA_FMForExpression::ToImpliedReturnJS(CFX_WideTextBuf& javascript) {
m_pList->ToImpliedReturnJS(javascript);
javascript << FX_WSTRC(L"}\n");
}
+
CXFA_FMForeachExpression::CXFA_FMForeachExpression(
FX_DWORD line,
const CFX_WideStringC& wsIdentifier,
@@ -556,25 +517,17 @@ CXFA_FMForeachExpression::CXFA_FMForeachExpression(
m_wsIdentifier(wsIdentifier),
m_pAccessors(pAccessors),
m_pList(pList) {}
+
CXFA_FMForeachExpression::~CXFA_FMForeachExpression() {
- if (m_pList) {
- delete m_pList;
- m_pList = 0;
- }
if (m_pAccessors) {
- int32_t size = m_pAccessors->GetSize();
- int32_t index = 0;
- CXFA_FMSimpleExpression* e = 0;
- while (index < size) {
- e = (CXFA_FMSimpleExpression*)m_pAccessors->GetAt(index);
- delete e;
- index++;
+ for (int i = 0; i < m_pAccessors->GetSize(); ++i) {
+ delete reinterpret_cast<CXFA_FMSimpleExpression*>(m_pAccessors->GetAt(i));
}
m_pAccessors->RemoveAll();
delete m_pAccessors;
- m_pAccessors = 0;
}
}
+
void CXFA_FMForeachExpression::ToJavaScript(CFX_WideTextBuf& javascript) {
javascript << FX_WSTRC(L"{\n");
javascript << FX_WSTRC(L"var ");
@@ -591,18 +544,15 @@ void CXFA_FMForeachExpression::ToJavaScript(CFX_WideTextBuf& javascript) {
javascript << FX_WSTRC(L" = ");
javascript << XFA_FM_EXPTypeToString(CONCATFMOBJECT);
javascript << FX_WSTRC(L"(");
- int32_t iSize = m_pAccessors->GetSize();
- int32_t index = 0;
- CXFA_FMSimpleExpression* s = 0;
- while (index < iSize) {
- s = (CXFA_FMSimpleExpression*)m_pAccessors->GetAt(index);
+
+ for (int i = 0; i < m_pAccessors->GetSize(); ++i) {
+ CXFA_FMSimpleExpression* s =
+ reinterpret_cast<CXFA_FMSimpleExpression*>(m_pAccessors->GetAt(i));
s->ToJavaScript(javascript);
- if (index + 1 < iSize) {
+ if (i + 1 < m_pAccessors->GetSize()) {
javascript << FX_WSTRC(L", ");
}
- index++;
}
- s = 0;
javascript << FX_WSTRC(L");\n");
javascript << FX_WSTRC(L"var ");
javascript << RUNTIMEBLOCKTEMPARRAYINDEX;
@@ -628,6 +578,7 @@ void CXFA_FMForeachExpression::ToJavaScript(CFX_WideTextBuf& javascript) {
javascript << FX_WSTRC(L"}\n");
javascript << FX_WSTRC(L"}\n");
}
+
void CXFA_FMForeachExpression::ToImpliedReturnJS(CFX_WideTextBuf& javascript) {
javascript << RUNTIMEFUNCTIONRETURNVALUE;
javascript << FX_WSTRC(L" = 0;\n");
@@ -646,18 +597,14 @@ void CXFA_FMForeachExpression::ToImpliedReturnJS(CFX_WideTextBuf& javascript) {
javascript << FX_WSTRC(L" = ");
javascript << XFA_FM_EXPTypeToString(CONCATFMOBJECT);
javascript << FX_WSTRC(L"(");
- int32_t iSize = m_pAccessors->GetSize();
- int32_t index = 0;
- CXFA_FMSimpleExpression* s = 0;
- while (index < iSize) {
- s = (CXFA_FMSimpleExpression*)m_pAccessors->GetAt(index);
+ for (int i = 0; i < m_pAccessors->GetSize(); ++i) {
+ CXFA_FMSimpleExpression* s =
+ reinterpret_cast<CXFA_FMSimpleExpression*>(m_pAccessors->GetAt(i));
s->ToJavaScript(javascript);
- if (index + 1 < iSize) {
+ if (i + 1 < m_pAccessors->GetSize()) {
javascript << FX_WSTRC(L", ");
}
- index++;
}
- s = 0;
javascript << FX_WSTRC(L");\n");
javascript << FX_WSTRC(L"var ");
javascript << RUNTIMEBLOCKTEMPARRAYINDEX;
diff --git a/xfa/src/fxfa/src/fm2js/xfa_expression.h b/xfa/src/fxfa/src/fm2js/xfa_expression.h
index 2d2da0cb89..8fe251271b 100644
--- a/xfa/src/fxfa/src/fm2js/xfa_expression.h
+++ b/xfa/src/fxfa/src/fm2js/xfa_expression.h
@@ -7,6 +7,8 @@
#ifndef XFA_SRC_FXFA_SRC_FM2JS_XFA_EXPRESSION_H_
#define XFA_SRC_FXFA_SRC_FM2JS_XFA_EXPRESSION_H_
+#include <memory>
+
#include "xfa/src/fxfa/src/fm2js/xfa_simpleexpression.h"
enum XFA_FM_EXPTYPE {
@@ -19,9 +21,10 @@ enum XFA_FM_EXPTYPE {
XFA_FM_EXPTYPE_BREAK,
XFA_FM_EXPTYPE_CONTINUE,
};
+
class CXFA_FMExpression {
public:
- CXFA_FMExpression(FX_DWORD line);
+ explicit CXFA_FMExpression(FX_DWORD line);
CXFA_FMExpression(FX_DWORD line, XFA_FM_EXPTYPE type);
virtual ~CXFA_FMExpression() {}
virtual void ToJavaScript(CFX_WideTextBuf& javascript);
@@ -33,6 +36,7 @@ class CXFA_FMExpression {
XFA_FM_EXPTYPE m_type;
FX_DWORD m_line;
};
+
class CXFA_FMFunctionDefinition : public CXFA_FMExpression {
public:
CXFA_FMFunctionDefinition(FX_DWORD line,
@@ -40,9 +44,9 @@ class CXFA_FMFunctionDefinition : public CXFA_FMExpression {
const CFX_WideStringC& wsName,
CFX_WideStringCArray* pArguments,
CFX_PtrArray* pExpressions);
- virtual ~CXFA_FMFunctionDefinition();
- virtual void ToJavaScript(CFX_WideTextBuf& javascript);
- virtual void ToImpliedReturnJS(CFX_WideTextBuf&);
+ ~CXFA_FMFunctionDefinition() override;
+ void ToJavaScript(CFX_WideTextBuf& javascript) override;
+ void ToImpliedReturnJS(CFX_WideTextBuf&) override;
private:
CFX_WideStringC m_wsName;
@@ -50,98 +54,103 @@ class CXFA_FMFunctionDefinition : public CXFA_FMExpression {
CFX_PtrArray* m_pExpressions;
FX_BOOL m_isGlobal;
};
+
class CXFA_FMVarExpression : public CXFA_FMExpression {
public:
CXFA_FMVarExpression(FX_DWORD line,
const CFX_WideStringC& wsName,
CXFA_FMExpression* pInit);
- virtual ~CXFA_FMVarExpression();
- virtual void ToJavaScript(CFX_WideTextBuf& javascript);
- virtual void ToImpliedReturnJS(CFX_WideTextBuf&);
+ void ToJavaScript(CFX_WideTextBuf& javascript) override;
+ void ToImpliedReturnJS(CFX_WideTextBuf&) override;
private:
CFX_WideStringC m_wsName;
- CXFA_FMExpression* m_pInit;
+ std::unique_ptr<CXFA_FMExpression> m_pInit;
};
+
class CXFA_FMExpExpression : public CXFA_FMExpression {
public:
CXFA_FMExpExpression(FX_DWORD line, CXFA_FMSimpleExpression* pExpression);
- virtual ~CXFA_FMExpExpression();
- virtual void ToJavaScript(CFX_WideTextBuf& javascript);
- virtual void ToImpliedReturnJS(CFX_WideTextBuf&);
+ void ToJavaScript(CFX_WideTextBuf& javascript) override;
+ void ToImpliedReturnJS(CFX_WideTextBuf&) override;
private:
- CXFA_FMSimpleExpression* m_pExpression;
+ std::unique_ptr<CXFA_FMSimpleExpression> m_pExpression;
};
+
class CXFA_FMBlockExpression : public CXFA_FMExpression {
public:
CXFA_FMBlockExpression(FX_DWORD line, CFX_PtrArray* pExpressionList);
- virtual ~CXFA_FMBlockExpression();
- virtual void ToJavaScript(CFX_WideTextBuf& javascript);
- virtual void ToImpliedReturnJS(CFX_WideTextBuf&);
+ ~CXFA_FMBlockExpression() override;
+ void ToJavaScript(CFX_WideTextBuf& javascript) override;
+ void ToImpliedReturnJS(CFX_WideTextBuf&) override;
private:
CFX_PtrArray* m_pExpressionList;
};
+
class CXFA_FMDoExpression : public CXFA_FMExpression {
public:
CXFA_FMDoExpression(FX_DWORD line, CXFA_FMExpression* pList);
- virtual ~CXFA_FMDoExpression();
- virtual void ToJavaScript(CFX_WideTextBuf& javascript);
- virtual void ToImpliedReturnJS(CFX_WideTextBuf&);
+ void ToJavaScript(CFX_WideTextBuf& javascript) override;
+ void ToImpliedReturnJS(CFX_WideTextBuf&) override;
private:
- CXFA_FMExpression* m_pList;
+ std::unique_ptr<CXFA_FMExpression> m_pList;
};
+
class CXFA_FMIfExpression : public CXFA_FMExpression {
public:
CXFA_FMIfExpression(FX_DWORD line,
CXFA_FMSimpleExpression* pExpression,
CXFA_FMExpression* pIfExpression,
CXFA_FMExpression* pElseExpression);
- virtual ~CXFA_FMIfExpression();
- virtual void ToJavaScript(CFX_WideTextBuf& javascript);
- virtual void ToImpliedReturnJS(CFX_WideTextBuf&);
+ void ToJavaScript(CFX_WideTextBuf& javascript) override;
+ void ToImpliedReturnJS(CFX_WideTextBuf&) override;
private:
- CXFA_FMSimpleExpression* m_pExpression;
- CXFA_FMExpression* m_pIfExpression;
- CXFA_FMExpression* m_pElseExpression;
+ std::unique_ptr<CXFA_FMSimpleExpression> m_pExpression;
+ std::unique_ptr<CXFA_FMExpression> m_pIfExpression;
+ std::unique_ptr<CXFA_FMExpression> m_pElseExpression;
};
+
class CXFA_FMLoopExpression : public CXFA_FMExpression {
public:
- CXFA_FMLoopExpression(FX_DWORD line) : CXFA_FMExpression(line) {}
- virtual ~CXFA_FMLoopExpression();
- virtual void ToJavaScript(CFX_WideTextBuf& javascript);
- virtual void ToImpliedReturnJS(CFX_WideTextBuf&);
+ explicit CXFA_FMLoopExpression(FX_DWORD line) : CXFA_FMExpression(line) {}
+ ~CXFA_FMLoopExpression() override;
+ void ToJavaScript(CFX_WideTextBuf& javascript) override;
+ void ToImpliedReturnJS(CFX_WideTextBuf&) override;
};
+
class CXFA_FMWhileExpression : public CXFA_FMLoopExpression {
public:
CXFA_FMWhileExpression(FX_DWORD line,
CXFA_FMSimpleExpression* pCodition,
CXFA_FMExpression* pExpression);
- virtual ~CXFA_FMWhileExpression();
- virtual void ToJavaScript(CFX_WideTextBuf& javascript);
- virtual void ToImpliedReturnJS(CFX_WideTextBuf&);
+ void ToJavaScript(CFX_WideTextBuf& javascript) override;
+ void ToImpliedReturnJS(CFX_WideTextBuf&) override;
private:
- CXFA_FMSimpleExpression* m_pCondition;
- CXFA_FMExpression* m_pExpression;
+ std::unique_ptr<CXFA_FMSimpleExpression> m_pCondition;
+ std::unique_ptr<CXFA_FMExpression> m_pExpression;
};
+
class CXFA_FMBreakExpression : public CXFA_FMExpression {
public:
- CXFA_FMBreakExpression(FX_DWORD line);
- virtual ~CXFA_FMBreakExpression();
- virtual void ToJavaScript(CFX_WideTextBuf& javascript);
- virtual void ToImpliedReturnJS(CFX_WideTextBuf&);
+ explicit CXFA_FMBreakExpression(FX_DWORD line);
+ ~CXFA_FMBreakExpression() override;
+ void ToJavaScript(CFX_WideTextBuf& javascript) override;
+ void ToImpliedReturnJS(CFX_WideTextBuf&) override;
};
+
class CXFA_FMContinueExpression : public CXFA_FMExpression {
public:
- CXFA_FMContinueExpression(FX_DWORD line);
- virtual ~CXFA_FMContinueExpression();
- virtual void ToJavaScript(CFX_WideTextBuf& javascript);
- virtual void ToImpliedReturnJS(CFX_WideTextBuf&);
+ explicit CXFA_FMContinueExpression(FX_DWORD line);
+ ~CXFA_FMContinueExpression() override;
+ void ToJavaScript(CFX_WideTextBuf& javascript) override;
+ void ToImpliedReturnJS(CFX_WideTextBuf&) override;
};
+
class CXFA_FMForExpression : public CXFA_FMLoopExpression {
public:
CXFA_FMForExpression(FX_DWORD line,
@@ -151,32 +160,32 @@ class CXFA_FMForExpression : public CXFA_FMLoopExpression {
int32_t iDirection,
CXFA_FMSimpleExpression* pStep,
CXFA_FMExpression* pList);
- virtual ~CXFA_FMForExpression();
- virtual void ToJavaScript(CFX_WideTextBuf& javascript);
- virtual void ToImpliedReturnJS(CFX_WideTextBuf&);
+ void ToJavaScript(CFX_WideTextBuf& javascript) override;
+ void ToImpliedReturnJS(CFX_WideTextBuf&) override;
private:
CFX_WideStringC m_wsVariant;
- CXFA_FMSimpleExpression* m_pAssignment;
- CXFA_FMSimpleExpression* m_pAccessor;
+ std::unique_ptr<CXFA_FMSimpleExpression> m_pAssignment;
+ std::unique_ptr<CXFA_FMSimpleExpression> m_pAccessor;
int32_t m_iDirection;
- CXFA_FMSimpleExpression* m_pStep;
- CXFA_FMExpression* m_pList;
+ std::unique_ptr<CXFA_FMSimpleExpression> m_pStep;
+ std::unique_ptr<CXFA_FMExpression> m_pList;
};
+
class CXFA_FMForeachExpression : public CXFA_FMLoopExpression {
public:
CXFA_FMForeachExpression(FX_DWORD line,
const CFX_WideStringC& wsIdentifier,
CFX_PtrArray* pAccessors,
CXFA_FMExpression* pList);
- virtual ~CXFA_FMForeachExpression();
- virtual void ToJavaScript(CFX_WideTextBuf& javascript);
- virtual void ToImpliedReturnJS(CFX_WideTextBuf&);
+ ~CXFA_FMForeachExpression() override;
+ void ToJavaScript(CFX_WideTextBuf& javascript) override;
+ void ToImpliedReturnJS(CFX_WideTextBuf&) override;
private:
CFX_WideStringC m_wsIdentifier;
CFX_PtrArray* m_pAccessors;
- CXFA_FMExpression* m_pList;
+ std::unique_ptr<CXFA_FMExpression> m_pList;
};
#endif // XFA_SRC_FXFA_SRC_FM2JS_XFA_EXPRESSION_H_
diff --git a/xfa/src/fxfa/src/fm2js/xfa_simpleexpression.cpp b/xfa/src/fxfa/src/fm2js/xfa_simpleexpression.cpp
index a8f6ad135d..f849f791ee 100644
--- a/xfa/src/fxfa/src/fm2js/xfa_simpleexpression.cpp
+++ b/xfa/src/fxfa/src/fm2js/xfa_simpleexpression.cpp
@@ -116,25 +116,34 @@ CFX_WideStringC XFA_FM_EXPTypeToString(
CXFA_FMSimpleExpression::CXFA_FMSimpleExpression(FX_DWORD line, XFA_FM_TOKEN op)
: m_line(line), m_op(op) {}
+
void CXFA_FMSimpleExpression::ToJavaScript(CFX_WideTextBuf& javascript) {}
+
void CXFA_FMSimpleExpression::ToImpliedReturnJS(CFX_WideTextBuf& javascript) {}
+
XFA_FM_TOKEN CXFA_FMSimpleExpression::GetOperatorToken() const {
return m_op;
}
+
CXFA_FMNullExpression::CXFA_FMNullExpression(FX_DWORD line)
: CXFA_FMSimpleExpression(line, TOKnull) {}
+
void CXFA_FMNullExpression::ToJavaScript(CFX_WideTextBuf& javascript) {
javascript << FX_WSTRC(L"null");
}
+
CXFA_FMNumberExpression::CXFA_FMNumberExpression(FX_DWORD line,
CFX_WideStringC wsNumber)
: CXFA_FMSimpleExpression(line, TOKnumber), m_wsNumber(wsNumber) {}
+
void CXFA_FMNumberExpression::ToJavaScript(CFX_WideTextBuf& javascript) {
javascript << m_wsNumber;
}
+
CXFA_FMStringExpression::CXFA_FMStringExpression(FX_DWORD line,
CFX_WideStringC wsString)
: CXFA_FMSimpleExpression(line, TOKstring), m_wsString(wsString) {}
+
void CXFA_FMStringExpression::ToJavaScript(CFX_WideTextBuf& javascript) {
CFX_WideString tempStr = m_wsString;
if (tempStr.GetLength() > 2) {
@@ -160,11 +169,13 @@ void CXFA_FMStringExpression::ToJavaScript(CFX_WideTextBuf& javascript) {
javascript << tempStr;
}
}
+
CXFA_FMIdentifierExpressionn::CXFA_FMIdentifierExpressionn(
FX_DWORD line,
CFX_WideStringC wsIdentifier)
: CXFA_FMSimpleExpression(line, TOKidentifier),
m_wsIdentifier(wsIdentifier) {}
+
void CXFA_FMIdentifierExpressionn::ToJavaScript(CFX_WideTextBuf& javascript) {
CFX_WideString tempStr = m_wsIdentifier;
if (tempStr.Equal(FX_WSTRC(L"$"))) {
@@ -193,25 +204,23 @@ CXFA_FMUnaryExpression::CXFA_FMUnaryExpression(FX_DWORD line,
XFA_FM_TOKEN op,
CXFA_FMSimpleExpression* pExp)
: CXFA_FMSimpleExpression(line, op), m_pExp(pExp) {}
-CXFA_FMUnaryExpression::~CXFA_FMUnaryExpression() {
- delete m_pExp;
-}
+
void CXFA_FMUnaryExpression::ToJavaScript(CFX_WideTextBuf& javascript) {}
+
CXFA_FMBinExpression::CXFA_FMBinExpression(FX_DWORD line,
XFA_FM_TOKEN op,
CXFA_FMSimpleExpression* pExp1,
CXFA_FMSimpleExpression* pExp2)
: CXFA_FMSimpleExpression(line, op), m_pExp1(pExp1), m_pExp2(pExp2) {}
-CXFA_FMBinExpression::~CXFA_FMBinExpression() {
- delete m_pExp1;
- delete m_pExp2;
-}
+
void CXFA_FMBinExpression::ToJavaScript(CFX_WideTextBuf& javascript) {}
+
CXFA_FMAssignExpression::CXFA_FMAssignExpression(FX_DWORD line,
XFA_FM_TOKEN op,
CXFA_FMSimpleExpression* pExp1,
CXFA_FMSimpleExpression* pExp2)
: CXFA_FMBinExpression(line, op, pExp1, pExp2) {}
+
void CXFA_FMAssignExpression::ToJavaScript(CFX_WideTextBuf& javascript) {
javascript << FX_WSTRC(L"if (");
javascript << gs_lpStrExpFuncName[ISFMOBJECT];
@@ -239,6 +248,7 @@ void CXFA_FMAssignExpression::ToJavaScript(CFX_WideTextBuf& javascript) {
javascript << FX_WSTRC(L");\n}\n");
}
}
+
void CXFA_FMAssignExpression::ToImpliedReturnJS(CFX_WideTextBuf& javascript) {
javascript << FX_WSTRC(L"if (");
javascript << gs_lpStrExpFuncName[ISFMOBJECT];
@@ -270,12 +280,14 @@ void CXFA_FMAssignExpression::ToImpliedReturnJS(CFX_WideTextBuf& javascript) {
javascript << FX_WSTRC(L");\n}\n");
}
}
+
CXFA_FMLogicalOrExpression::CXFA_FMLogicalOrExpression(
FX_DWORD line,
XFA_FM_TOKEN op,
CXFA_FMSimpleExpression* pExp1,
CXFA_FMSimpleExpression* pExp2)
: CXFA_FMBinExpression(line, op, pExp1, pExp2) {}
+
void CXFA_FMLogicalOrExpression::ToJavaScript(CFX_WideTextBuf& javascript) {
javascript << gs_lpStrExpFuncName[LOGICALOR];
javascript << FX_WSTRC(L"(");
@@ -284,12 +296,14 @@ void CXFA_FMLogicalOrExpression::ToJavaScript(CFX_WideTextBuf& javascript) {
m_pExp2->ToJavaScript(javascript);
javascript << FX_WSTRC(L")");
}
+
CXFA_FMLogicalAndExpression::CXFA_FMLogicalAndExpression(
FX_DWORD line,
XFA_FM_TOKEN op,
CXFA_FMSimpleExpression* pExp1,
CXFA_FMSimpleExpression* pExp2)
: CXFA_FMBinExpression(line, op, pExp1, pExp2) {}
+
void CXFA_FMLogicalAndExpression::ToJavaScript(CFX_WideTextBuf& javascript) {
javascript << gs_lpStrExpFuncName[LOGICALAND];
javascript << FX_WSTRC(L"(");
@@ -298,12 +312,14 @@ void CXFA_FMLogicalAndExpression::ToJavaScript(CFX_WideTextBuf& javascript) {
m_pExp2->ToJavaScript(javascript);
javascript << FX_WSTRC(L")");
}
+
CXFA_FMEqualityExpression::CXFA_FMEqualityExpression(
FX_DWORD line,
XFA_FM_TOKEN op,
CXFA_FMSimpleExpression* pExp1,
CXFA_FMSimpleExpression* pExp2)
: CXFA_FMBinExpression(line, op, pExp1, pExp2) {}
+
void CXFA_FMEqualityExpression::ToJavaScript(CFX_WideTextBuf& javascript) {
switch (m_op) {
case TOKeq:
@@ -324,12 +340,14 @@ void CXFA_FMEqualityExpression::ToJavaScript(CFX_WideTextBuf& javascript) {
m_pExp2->ToJavaScript(javascript);
javascript << FX_WSTRC(L")");
}
+
CXFA_FMRelationalExpression::CXFA_FMRelationalExpression(
FX_DWORD line,
XFA_FM_TOKEN op,
CXFA_FMSimpleExpression* pExp1,
CXFA_FMSimpleExpression* pExp2)
: CXFA_FMBinExpression(line, op, pExp1, pExp2) {}
+
void CXFA_FMRelationalExpression::ToJavaScript(CFX_WideTextBuf& javascript) {
switch (m_op) {
case TOKlt:
@@ -358,12 +376,14 @@ void CXFA_FMRelationalExpression::ToJavaScript(CFX_WideTextBuf& javascript) {
m_pExp2->ToJavaScript(javascript);
javascript << FX_WSTRC(L")");
}
+
CXFA_FMAdditiveExpression::CXFA_FMAdditiveExpression(
FX_DWORD line,
XFA_FM_TOKEN op,
CXFA_FMSimpleExpression* pExp1,
CXFA_FMSimpleExpression* pExp2)
: CXFA_FMBinExpression(line, op, pExp1, pExp2) {}
+
void CXFA_FMAdditiveExpression::ToJavaScript(CFX_WideTextBuf& javascript) {
switch (m_op) {
case TOKplus:
@@ -382,12 +402,14 @@ void CXFA_FMAdditiveExpression::ToJavaScript(CFX_WideTextBuf& javascript) {
m_pExp2->ToJavaScript(javascript);
javascript << FX_WSTRC(L")");
}
+
CXFA_FMMultiplicativeExpression::CXFA_FMMultiplicativeExpression(
FX_DWORD line,
XFA_FM_TOKEN op,
CXFA_FMSimpleExpression* pExp1,
CXFA_FMSimpleExpression* pExp2)
: CXFA_FMBinExpression(line, op, pExp1, pExp2) {}
+
void CXFA_FMMultiplicativeExpression::ToJavaScript(
CFX_WideTextBuf& javascript) {
switch (m_op) {
@@ -407,33 +429,40 @@ void CXFA_FMMultiplicativeExpression::ToJavaScript(
m_pExp2->ToJavaScript(javascript);
javascript << FX_WSTRC(L")");
}
+
CXFA_FMPosExpression::CXFA_FMPosExpression(FX_DWORD line,
CXFA_FMSimpleExpression* pExp)
: CXFA_FMUnaryExpression(line, TOKplus, pExp) {}
+
void CXFA_FMPosExpression::ToJavaScript(CFX_WideTextBuf& javascript) {
javascript << gs_lpStrExpFuncName[POSITIVE];
javascript << FX_WSTRC(L"(");
m_pExp->ToJavaScript(javascript);
javascript << FX_WSTRC(L")");
}
+
CXFA_FMNegExpression::CXFA_FMNegExpression(FX_DWORD line,
CXFA_FMSimpleExpression* pExp)
: CXFA_FMUnaryExpression(line, TOKminus, pExp) {}
+
void CXFA_FMNegExpression::ToJavaScript(CFX_WideTextBuf& javascript) {
javascript << gs_lpStrExpFuncName[NEGATIVE];
javascript << FX_WSTRC(L"(");
m_pExp->ToJavaScript(javascript);
javascript << FX_WSTRC(L")");
}
+
CXFA_FMNotExpression::CXFA_FMNotExpression(FX_DWORD line,
CXFA_FMSimpleExpression* pExp)
: CXFA_FMUnaryExpression(line, TOKksnot, pExp) {}
+
void CXFA_FMNotExpression::ToJavaScript(CFX_WideTextBuf& javascript) {
javascript << gs_lpStrExpFuncName[NOT];
javascript << FX_WSTRC(L"(");
m_pExp->ToJavaScript(javascript);
javascript << FX_WSTRC(L")");
}
+
CXFA_FMCallExpression::CXFA_FMCallExpression(FX_DWORD line,
CXFA_FMSimpleExpression* pExp,
CFX_PtrArray* pArguments,
@@ -442,19 +471,14 @@ CXFA_FMCallExpression::CXFA_FMCallExpression(FX_DWORD line,
m_bIsSomMethod(bIsSomMethod),
m_pArguments(pArguments) {
}
+
CXFA_FMCallExpression::~CXFA_FMCallExpression() {
if (m_pArguments) {
- int32_t argc = m_pArguments->GetSize();
- int32_t index = 0;
- CXFA_FMSimpleExpression* e = 0;
- while (index < argc) {
- e = (CXFA_FMSimpleExpression*)m_pArguments->GetAt(index);
- delete e;
- index++;
+ for (int i = 0; i < m_pArguments->GetSize(); ++i) {
+ delete reinterpret_cast<CXFA_FMSimpleExpression*>(m_pArguments->GetAt(i));
}
m_pArguments->RemoveAll();
delete m_pArguments;
- m_pArguments = 0;
}
}
@@ -498,6 +522,7 @@ FX_DWORD CXFA_FMCallExpression::IsMethodWithObjParam(
} while (iStart <= iEnd);
return parameters;
}
+
void CXFA_FMCallExpression::ToJavaScript(CFX_WideTextBuf& javascript) {
CFX_WideTextBuf funcName;
m_pExp->ToJavaScript(funcName);
@@ -505,38 +530,36 @@ void CXFA_FMCallExpression::ToJavaScript(CFX_WideTextBuf& javascript) {
javascript << funcName;
javascript << FX_WSTRC(L"(");
if (m_pArguments) {
- int32_t argc = m_pArguments->GetSize();
- int32_t index = 0;
FX_DWORD methodPara = IsMethodWithObjParam(funcName.GetWideString());
if (methodPara > 0) {
- CXFA_FMSimpleExpression* e = 0;
- while (index < argc) {
- if ((methodPara & (0x01 << index)) > 0) {
+ for (int i = 0; i < m_pArguments->GetSize(); ++i) {
+ if ((methodPara & (0x01 << i)) > 0) {
javascript << gs_lpStrExpFuncName[GETFMJSOBJ];
} else {
javascript << gs_lpStrExpFuncName[GETFMVALUE];
}
javascript << FX_WSTRC(L"(");
- e = (CXFA_FMSimpleExpression*)m_pArguments->GetAt(index);
+ CXFA_FMSimpleExpression* e =
+ reinterpret_cast<CXFA_FMSimpleExpression*>(
+ m_pArguments->GetAt(i));
e->ToJavaScript(javascript);
javascript << FX_WSTRC(L")");
- if (index + 1 < argc) {
+ if (i + 1 < m_pArguments->GetSize()) {
javascript << FX_WSTRC(L", ");
}
- index++;
}
} else {
- CXFA_FMSimpleExpression* e = 0;
- while (index < argc) {
+ for (int i = 0; i < m_pArguments->GetSize(); ++i) {
javascript << gs_lpStrExpFuncName[GETFMVALUE];
javascript << FX_WSTRC(L"(");
- e = (CXFA_FMSimpleExpression*)m_pArguments->GetAt(index);
+ CXFA_FMSimpleExpression* e =
+ reinterpret_cast<CXFA_FMSimpleExpression*>(
+ m_pArguments->GetAt(i));
e->ToJavaScript(javascript);
javascript << FX_WSTRC(L")");
- if (index + 1 < argc) {
+ if (i + 1 < m_pArguments->GetSize()) {
javascript << FX_WSTRC(L", ");
}
- index++;
}
}
}
@@ -566,7 +589,7 @@ void CXFA_FMCallExpression::ToJavaScript(CFX_WideTextBuf& javascript) {
javascript << FX_WSTRC(L"\n(\nfunction ()\n{\ntry\n{\n");
if (m_pArguments && m_pArguments->GetSize() > 0) {
CXFA_FMSimpleExpression* e =
- (CXFA_FMSimpleExpression*)m_pArguments->GetAt(0);
+ reinterpret_cast<CXFA_FMSimpleExpression*>(m_pArguments->GetAt(0));
javascript << FX_WSTRC(L"return ");
e->ToJavaScript(javascript);
javascript << FX_WSTRC(L";\n}\n");
@@ -576,16 +599,13 @@ void CXFA_FMCallExpression::ToJavaScript(CFX_WideTextBuf& javascript) {
javascript << FX_WSTRC(
L"catch(accessExceptions)\n{\nreturn 0;\n}\n}\n).call(this)\n");
} else if (m_pArguments) {
- int32_t argc = m_pArguments->GetSize();
- int32_t index = 0;
- CXFA_FMSimpleExpression* e = 0;
- while (index < argc) {
- e = (CXFA_FMSimpleExpression*)m_pArguments->GetAt(index);
+ for (int i = 0; i < m_pArguments->GetSize(); ++i) {
+ CXFA_FMSimpleExpression* e =
+ reinterpret_cast<CXFA_FMSimpleExpression*>(m_pArguments->GetAt(i));
e->ToJavaScript(javascript);
- if (index + 1 < argc) {
+ if (i + 1 < m_pArguments->GetSize()) {
javascript << FX_WSTRC(L", ");
}
- index++;
}
}
javascript << FX_WSTRC(L")");
@@ -594,6 +614,7 @@ void CXFA_FMCallExpression::ToJavaScript(CFX_WideTextBuf& javascript) {
}
}
}
+
CXFA_FMDotAccessorExpression::CXFA_FMDotAccessorExpression(
FX_DWORD line,
CXFA_FMSimpleExpression* pAccessor,
@@ -602,6 +623,7 @@ CXFA_FMDotAccessorExpression::CXFA_FMDotAccessorExpression(
CXFA_FMSimpleExpression* pIndexExp)
: CXFA_FMBinExpression(line, op, pAccessor, pIndexExp),
m_wsIdentifier(wsIdentifier) {}
+
void CXFA_FMDotAccessorExpression::ToJavaScript(CFX_WideTextBuf& javascript) {
javascript << gs_lpStrExpFuncName[DOT];
javascript << FX_WSTRC(L"(");
@@ -632,6 +654,7 @@ void CXFA_FMDotAccessorExpression::ToJavaScript(CFX_WideTextBuf& javascript) {
m_pExp2->ToJavaScript(javascript);
javascript << FX_WSTRC(L")");
}
+
CXFA_FMIndexExpression::CXFA_FMIndexExpression(
FX_DWORD line,
XFA_FM_AccessorIndex accessorIndex,
@@ -640,6 +663,7 @@ CXFA_FMIndexExpression::CXFA_FMIndexExpression(
: CXFA_FMUnaryExpression(line, TOKlbracket, pIndexExp),
m_accessorIndex(accessorIndex),
m_bIsStarIndex(bIsStarIndex) {}
+
void CXFA_FMIndexExpression::ToJavaScript(CFX_WideTextBuf& javascript) {
switch (m_accessorIndex) {
case ACCESSOR_NO_INDEX:
@@ -666,6 +690,7 @@ void CXFA_FMIndexExpression::ToJavaScript(CFX_WideTextBuf& javascript) {
}
}
}
+
CXFA_FMDotDotAccessorExpression::CXFA_FMDotDotAccessorExpression(
FX_DWORD line,
CXFA_FMSimpleExpression* pAccessor,
@@ -674,6 +699,7 @@ CXFA_FMDotDotAccessorExpression::CXFA_FMDotDotAccessorExpression(
CXFA_FMSimpleExpression* pIndexExp)
: CXFA_FMBinExpression(line, op, pAccessor, pIndexExp),
m_wsIdentifier(wsIdentifier) {}
+
void CXFA_FMDotDotAccessorExpression::ToJavaScript(
CFX_WideTextBuf& javascript) {
javascript << gs_lpStrExpFuncName[DOTDOT];
@@ -691,11 +717,13 @@ void CXFA_FMDotDotAccessorExpression::ToJavaScript(
m_pExp2->ToJavaScript(javascript);
javascript << FX_WSTRC(L")");
}
+
CXFA_FMMethodCallExpression::CXFA_FMMethodCallExpression(
FX_DWORD line,
CXFA_FMSimpleExpression* pAccessorExp1,
CXFA_FMSimpleExpression* pCallExp)
: CXFA_FMBinExpression(line, TOKdot, pAccessorExp1, pCallExp) {}
+
void CXFA_FMMethodCallExpression::ToJavaScript(CFX_WideTextBuf& javascript) {
javascript << FX_WSTRC(L"(\nfunction ()\n{\n");
javascript << FX_WSTRC(L"var method_return_value = null;\n");
diff --git a/xfa/src/fxfa/src/fm2js/xfa_simpleexpression.h b/xfa/src/fxfa/src/fm2js/xfa_simpleexpression.h
index bc84ab784d..df27a630b8 100644
--- a/xfa/src/fxfa/src/fm2js/xfa_simpleexpression.h
+++ b/xfa/src/fxfa/src/fm2js/xfa_simpleexpression.h
@@ -7,6 +7,8 @@
#ifndef XFA_SRC_FXFA_SRC_FM2JS_XFA_SIMPLEEXPRESSION_H_
#define XFA_SRC_FXFA_SRC_FM2JS_XFA_SIMPLEEXPRESSION_H_
+#include <memory>
+
#include "core/include/fxcrt/fx_basic.h"
#include "xfa/src/fxfa/src/fm2js/xfa_lexer.h"
@@ -109,11 +111,10 @@ class CXFA_FMUnaryExpression : public CXFA_FMSimpleExpression {
CXFA_FMUnaryExpression(FX_DWORD line,
XFA_FM_TOKEN op,
CXFA_FMSimpleExpression* pExp);
- ~CXFA_FMUnaryExpression() override;
void ToJavaScript(CFX_WideTextBuf& javascript) override;
protected:
- CXFA_FMSimpleExpression* m_pExp;
+ std::unique_ptr<CXFA_FMSimpleExpression> m_pExp;
};
class CXFA_FMBinExpression : public CXFA_FMSimpleExpression {
@@ -122,12 +123,11 @@ class CXFA_FMBinExpression : public CXFA_FMSimpleExpression {
XFA_FM_TOKEN op,
CXFA_FMSimpleExpression* pExp1,
CXFA_FMSimpleExpression* pExp2);
- ~CXFA_FMBinExpression() override;
void ToJavaScript(CFX_WideTextBuf& javascript) override;
protected:
- CXFA_FMSimpleExpression* m_pExp1;
- CXFA_FMSimpleExpression* m_pExp2;
+ std::unique_ptr<CXFA_FMSimpleExpression> m_pExp1;
+ std::unique_ptr<CXFA_FMSimpleExpression> m_pExp2;
};
class CXFA_FMAssignExpression : public CXFA_FMBinExpression {