| // 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 { |
| uint32_t m_uHash; |
| const FX_WCHAR* m_buildinfunc; |
| }; |
| struct XFA_FMSOMMethod { |
| uint32_t m_uHash; |
| const FX_WCHAR* 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: |
| 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(const CFX_WideStringC& 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 |