Merge XFA to PDFium master at 4dc95e7 on 10/28/2014
[pdfium.git] / xfa / src / fxfa / src / fm2js / xfa_program.cpp
1 // Copyright 2014 PDFium Authors. All rights reserved.\r
2 // Use of this source code is governed by a BSD-style license that can be\r
3 // found in the LICENSE file.\r
4 \r
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com\r
6 \r
7 #include "xfa_fm2js.h"\r
8 CXFA_FMProgram::CXFA_FMProgram()\r
9     : m_globalFunction(0)\r
10 {\r
11 }\r
12 CXFA_FMProgram::~CXFA_FMProgram()\r
13 {\r
14     if (m_globalFunction != 0) {\r
15         delete m_globalFunction;\r
16         m_globalFunction = 0;\r
17     }\r
18 }\r
19 FX_INT32 CXFA_FMProgram::Init(FX_WSTR wsFormcalc)\r
20 {\r
21     return m_parse.Init(wsFormcalc, &m_pErrorInfo);\r
22 }\r
23 FX_INT32 CXFA_FMProgram::ParseProgram()\r
24 {\r
25     CFX_PtrArray * expressions = 0;\r
26     m_parse.NextToken();\r
27     if (!m_pErrorInfo.message.IsEmpty()) {\r
28         return -1;\r
29     }\r
30     expressions = m_parse.ParseTopExpression();\r
31     if (!m_pErrorInfo.message.IsEmpty()) {\r
32         CXFA_FMExpression *e = 0;\r
33         for (FX_INT32 u = 0; u < expressions->GetSize(); ++u) {\r
34             e = (CXFA_FMExpression *)expressions->GetAt(u);\r
35             if (e) {\r
36                 delete e;\r
37             }\r
38         }\r
39         delete expressions;\r
40         return -1;\r
41     }\r
42     m_globalFunction = FX_NEW CXFA_FMFunctionDefinition(1, 1, FX_WSTRC(L""), 0, expressions);\r
43     return 0;\r
44 }\r
45 FX_INT32 CXFA_FMProgram::TranslateProgram(CFX_WideTextBuf &wsJavaScript)\r
46 {\r
47     m_globalFunction->ToJavaScript(wsJavaScript);\r
48     wsJavaScript.AppendChar(0);\r
49     return 0;\r
50 }\r