summaryrefslogtreecommitdiff
path: root/xfa/src/fxfa/src/fm2js/xfa_expression.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'xfa/src/fxfa/src/fm2js/xfa_expression.cpp')
-rw-r--r--xfa/src/fxfa/src/fm2js/xfa_expression.cpp213
1 files changed, 80 insertions, 133 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;