summaryrefslogtreecommitdiff
path: root/xfa/src/fxfa/src/fm2js/xfa_simpleexpression.h
diff options
context:
space:
mode:
Diffstat (limited to 'xfa/src/fxfa/src/fm2js/xfa_simpleexpression.h')
-rw-r--r--xfa/src/fxfa/src/fm2js/xfa_simpleexpression.h239
1 files changed, 239 insertions, 0 deletions
diff --git a/xfa/src/fxfa/src/fm2js/xfa_simpleexpression.h b/xfa/src/fxfa/src/fm2js/xfa_simpleexpression.h
new file mode 100644
index 0000000000..2a6245d348
--- /dev/null
+++ b/xfa/src/fxfa/src/fm2js/xfa_simpleexpression.h
@@ -0,0 +1,239 @@
+// 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
+
+#ifndef _XFA_FM_SIMPLEEXPRESSION_H
+#define _XFA_FM_SIMPLEEXPRESSION_H
+enum XFA_FM_SimpleExpressionType {
+ ASSIGN,
+ LOGICALOR,
+ LOGICALAND,
+ EQUALITY,
+ NOTEQUALITY,
+ LESS,
+ LESSEQUAL,
+ GREATER,
+ GREATEREQUAL,
+ PLUS,
+ MINUS,
+ MULTIPLE,
+ DIVIDE,
+ POSITIVE,
+ NEGATIVE,
+ NOT,
+ CALL,
+ DOT,
+ DOTDOT,
+ CONCATFMOBJECT,
+ ISFMOBJECT,
+ ISFMARRAY,
+ GETFMVALUE,
+ GETFMJSOBJ,
+ VARFILTER
+};
+CFX_WideStringC XFA_FM_EXPTypeToString(XFA_FM_SimpleExpressionType simpleExpType);
+struct XFA_FMBuildInFunc {
+ FX_UINT32 m_uHash;
+ FX_LPCWSTR m_buildinfunc;
+};
+struct XFA_FMSOMMethod {
+ FX_UINT32 m_uHash;
+ FX_LPCWSTR m_wsSomMethodName;
+ FX_DWORD m_dParameters;
+};
+enum XFA_FM_AccessorIndex {
+ ACCESSOR_NO_INDEX,
+ ACCESSOR_NO_RELATIVEINDEX,
+ ACCESSOR_POSITIVE_INDEX,
+ ACCESSOR_NEGATIVE_INDEX
+};
+class CXFA_FMSimpleExpression : public CFX_Object
+{
+public:
+ CXFA_FMSimpleExpression(FX_DWORD line, XFA_FM_TOKEN op);
+ virtual ~CXFA_FMSimpleExpression() {};
+ virtual void ToJavaScript(CFX_WideTextBuf& javascript);
+ virtual void ToImpliedReturnJS(CFX_WideTextBuf& javascript);
+
+ XFA_FM_TOKEN GetOperatorToken() const;
+protected:
+ FX_DWORD m_line;
+ XFA_FM_TOKEN m_op;
+};
+class CXFA_FMNullExpression : public CXFA_FMSimpleExpression
+{
+public:
+ CXFA_FMNullExpression(FX_DWORD line);
+ virtual ~CXFA_FMNullExpression() {};
+ virtual void ToJavaScript(CFX_WideTextBuf& javascript);
+};
+class CXFA_FMNumberExpression : public CXFA_FMSimpleExpression
+{
+public:
+ CXFA_FMNumberExpression(FX_DWORD line, CFX_WideStringC wsNumber);
+ virtual ~CXFA_FMNumberExpression() {};
+ virtual void ToJavaScript(CFX_WideTextBuf& javascript);
+protected:
+ CFX_WideStringC m_wsNumber;
+};
+class CXFA_FMStringExpression : public CXFA_FMSimpleExpression
+{
+public:
+ CXFA_FMStringExpression(FX_DWORD line, CFX_WideStringC wsString);
+ virtual ~CXFA_FMStringExpression() {};
+ virtual void ToJavaScript(CFX_WideTextBuf& javascript);
+protected:
+ CFX_WideStringC m_wsString;
+};
+class CXFA_FMIdentifierExpressionn : public CXFA_FMSimpleExpression
+{
+public:
+ CXFA_FMIdentifierExpressionn(FX_DWORD line, CFX_WideStringC wsIdentifier);
+ virtual ~CXFA_FMIdentifierExpressionn() {};
+ virtual void ToJavaScript(CFX_WideTextBuf& javascript);
+protected:
+ CFX_WideStringC m_wsIdentifier;
+};
+class CXFA_FMUnaryExpression : public CXFA_FMSimpleExpression
+{
+public:
+ CXFA_FMUnaryExpression(FX_DWORD line, XFA_FM_TOKEN op, CXFA_FMSimpleExpression *pExp);
+ virtual ~CXFA_FMUnaryExpression();
+ virtual void ToJavaScript(CFX_WideTextBuf& javascript);
+protected:
+ CXFA_FMSimpleExpression *m_pExp;
+};
+class CXFA_FMBinExpression : public CXFA_FMSimpleExpression
+{
+public:
+ CXFA_FMBinExpression(FX_DWORD line, XFA_FM_TOKEN op, CXFA_FMSimpleExpression *pExp1, CXFA_FMSimpleExpression *pExp2);
+ virtual ~CXFA_FMBinExpression();
+ virtual void ToJavaScript(CFX_WideTextBuf& javascript);
+protected:
+ CXFA_FMSimpleExpression *m_pExp1;
+ CXFA_FMSimpleExpression *m_pExp2;
+};
+class CXFA_FMAssignExpression : public CXFA_FMBinExpression
+{
+public:
+ CXFA_FMAssignExpression(FX_DWORD line, XFA_FM_TOKEN op, CXFA_FMSimpleExpression *pExp1, CXFA_FMSimpleExpression *pExp2);
+ virtual ~CXFA_FMAssignExpression() {};
+ virtual void ToJavaScript(CFX_WideTextBuf& javascript);
+ virtual void ToImpliedReturnJS(CFX_WideTextBuf& javascript);
+};
+class CXFA_FMLogicalOrExpression : public CXFA_FMBinExpression
+{
+public:
+ CXFA_FMLogicalOrExpression(FX_DWORD line, XFA_FM_TOKEN op, CXFA_FMSimpleExpression *pExp1, CXFA_FMSimpleExpression *pExp2);
+ virtual ~CXFA_FMLogicalOrExpression() {};
+ virtual void ToJavaScript(CFX_WideTextBuf& javascript);
+};
+class CXFA_FMLogicalAndExpression : public CXFA_FMBinExpression
+{
+public:
+ CXFA_FMLogicalAndExpression(FX_DWORD line, XFA_FM_TOKEN op, CXFA_FMSimpleExpression *pExp1, CXFA_FMSimpleExpression *pExp2);
+ virtual ~CXFA_FMLogicalAndExpression() {};
+ virtual void ToJavaScript(CFX_WideTextBuf& javascript);
+};
+class CXFA_FMEqualityExpression : public CXFA_FMBinExpression
+{
+public:
+ CXFA_FMEqualityExpression(FX_DWORD line, XFA_FM_TOKEN op, CXFA_FMSimpleExpression *pExp1, CXFA_FMSimpleExpression *pExp2);
+ virtual ~CXFA_FMEqualityExpression() {};
+ virtual void ToJavaScript(CFX_WideTextBuf& javascript);
+};
+class CXFA_FMRelationalExpression : public CXFA_FMBinExpression
+{
+public:
+ CXFA_FMRelationalExpression(FX_DWORD line, XFA_FM_TOKEN op, CXFA_FMSimpleExpression *pExp1, CXFA_FMSimpleExpression *pExp2);
+ virtual ~CXFA_FMRelationalExpression() {};
+ virtual void ToJavaScript(CFX_WideTextBuf& javascript);
+};
+class CXFA_FMAdditiveExpression : public CXFA_FMBinExpression
+{
+public:
+ CXFA_FMAdditiveExpression(FX_DWORD line, XFA_FM_TOKEN op, CXFA_FMSimpleExpression *pExp1, CXFA_FMSimpleExpression *pExp2);
+ virtual ~CXFA_FMAdditiveExpression() {};
+ virtual void ToJavaScript(CFX_WideTextBuf& javascript);
+};
+class CXFA_FMMultiplicativeExpression : public CXFA_FMBinExpression
+{
+public:
+ CXFA_FMMultiplicativeExpression(FX_DWORD line, XFA_FM_TOKEN op, CXFA_FMSimpleExpression *pExp1, CXFA_FMSimpleExpression *pExp2);
+ virtual ~CXFA_FMMultiplicativeExpression() {};
+ virtual void ToJavaScript(CFX_WideTextBuf& javascript);
+};
+class CXFA_FMPosExpression : public CXFA_FMUnaryExpression
+{
+public:
+ CXFA_FMPosExpression(FX_DWORD line, CXFA_FMSimpleExpression *pExp);
+ virtual ~CXFA_FMPosExpression() {};
+ virtual void ToJavaScript(CFX_WideTextBuf& javascript);
+};
+class CXFA_FMNegExpression : public CXFA_FMUnaryExpression
+{
+public:
+ CXFA_FMNegExpression(FX_DWORD line, CXFA_FMSimpleExpression *pExp);
+ virtual ~CXFA_FMNegExpression() {};
+ virtual void ToJavaScript(CFX_WideTextBuf& javascript);
+};
+class CXFA_FMNotExpression : public CXFA_FMUnaryExpression
+{
+public:
+ CXFA_FMNotExpression(FX_DWORD line, CXFA_FMSimpleExpression *pExp);
+ virtual ~CXFA_FMNotExpression() {};
+ virtual void ToJavaScript(CFX_WideTextBuf& javascript);
+};
+class CXFA_FMCallExpression : public CXFA_FMUnaryExpression
+{
+public:
+ CXFA_FMCallExpression(FX_DWORD line, CXFA_FMSimpleExpression *pExp, CFX_PtrArray *pArguments, FX_BOOL bIsSomMethod);
+ virtual ~CXFA_FMCallExpression();
+ virtual FX_BOOL IsBuildInFunc(CFX_WideTextBuf& funcName);
+ virtual FX_DWORD IsSomMethodWithObjPara(FX_WSTR methodName);
+ virtual void ToJavaScript(CFX_WideTextBuf& javascript);
+private:
+ FX_BOOL m_bIsSomMethod;
+ CFX_PtrArray *m_pArguments;
+};
+class CXFA_FMDotAccessorExpression : public CXFA_FMBinExpression
+{
+public:
+ CXFA_FMDotAccessorExpression(FX_DWORD line, CXFA_FMSimpleExpression *pAccessor, XFA_FM_TOKEN op,
+ CFX_WideStringC wsIdentifier, CXFA_FMSimpleExpression *pIndexExp);
+ virtual ~CXFA_FMDotAccessorExpression() {};
+ virtual void ToJavaScript(CFX_WideTextBuf& javascript);
+protected:
+ CFX_WideStringC m_wsIdentifier;
+};
+class CXFA_FMIndexExpression : public CXFA_FMUnaryExpression
+{
+public:
+ CXFA_FMIndexExpression(FX_DWORD line, XFA_FM_AccessorIndex accessorIndex, CXFA_FMSimpleExpression *pIndexExp, FX_BOOL bIsStarIndex);
+ virtual ~CXFA_FMIndexExpression() {};
+ virtual void ToJavaScript(CFX_WideTextBuf& javascript);
+protected:
+ XFA_FM_AccessorIndex m_accessorIndex;
+ FX_BOOL m_bIsStarIndex;
+};
+class CXFA_FMDotDotAccessorExpression : public CXFA_FMBinExpression
+{
+public:
+ CXFA_FMDotDotAccessorExpression(FX_DWORD line, CXFA_FMSimpleExpression *pAccessor, XFA_FM_TOKEN op,
+ CFX_WideStringC wsIdentifier, CXFA_FMSimpleExpression *pIndexExp);
+ virtual ~CXFA_FMDotDotAccessorExpression() {};
+ virtual void ToJavaScript(CFX_WideTextBuf& javascript);
+protected:
+ CFX_WideStringC m_wsIdentifier;
+};
+class CXFA_FMMethodCallExpression : public CXFA_FMBinExpression
+{
+public:
+ CXFA_FMMethodCallExpression(FX_DWORD line, CXFA_FMSimpleExpression *pAccessorExp1, CXFA_FMSimpleExpression *pCallExp);
+ virtual ~CXFA_FMMethodCallExpression() {};
+ virtual void ToJavaScript(CFX_WideTextBuf& javascript);
+protected:
+};
+#endif