summaryrefslogtreecommitdiff
path: root/xfa/fxfa/fm2js/cxfa_fmprogram.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'xfa/fxfa/fm2js/cxfa_fmprogram.cpp')
-rw-r--r--xfa/fxfa/fm2js/cxfa_fmprogram.cpp40
1 files changed, 40 insertions, 0 deletions
diff --git a/xfa/fxfa/fm2js/cxfa_fmprogram.cpp b/xfa/fxfa/fm2js/cxfa_fmprogram.cpp
new file mode 100644
index 0000000000..6e6385dae0
--- /dev/null
+++ b/xfa/fxfa/fm2js/cxfa_fmprogram.cpp
@@ -0,0 +1,40 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "xfa/fxfa/fm2js/cxfa_fmprogram.h"
+
+#include <utility>
+#include <vector>
+
+#include "third_party/base/ptr_util.h"
+
+CXFA_FMProgram::CXFA_FMProgram(const CFX_WideStringC& wsFormcalc)
+ : m_parse(wsFormcalc, &m_pErrorInfo) {}
+
+CXFA_FMProgram::~CXFA_FMProgram() {}
+
+bool CXFA_FMProgram::ParseProgram() {
+ m_parse.NextToken();
+ if (!m_pErrorInfo.message.IsEmpty())
+ return false;
+
+ std::vector<std::unique_ptr<CXFA_FMExpression>> expressions =
+ m_parse.ParseTopExpression();
+ if (!m_pErrorInfo.message.IsEmpty())
+ return false;
+
+ std::vector<CFX_WideStringC> arguments;
+ m_globalFunction = pdfium::MakeUnique<CXFA_FMFunctionDefinition>(
+ 1, true, L"", std::move(arguments), std::move(expressions));
+ return true;
+}
+
+bool CXFA_FMProgram::TranslateProgram(CFX_WideTextBuf& wsJavaScript) {
+ if (!m_globalFunction->ToJavaScript(wsJavaScript))
+ return false;
+ wsJavaScript.AppendChar(0);
+ return true;
+}