| // 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_EXPRESSION_H | |
| #define _XFA_FM_EXPRESSION_H | |
| enum XFA_FM_EXPTYPE { | |
| XFA_FM_EXPTYPE_UNKNOWN, | |
| XFA_FM_EXPTYPE_FUNC, | |
| XFA_FM_EXPTYPE_VAR, | |
| XFA_FM_EXPTYPE_EXP, | |
| XFA_FM_EXPTYPE_BLOCK, | |
| XFA_FM_EXPTYPE_IF, | |
| XFA_FM_EXPTYPE_BREAK, | |
| XFA_FM_EXPTYPE_CONTINUE, | |
| }; | |
| class CXFA_FMExpression { | |
| public: | |
| CXFA_FMExpression(FX_DWORD line); | |
| CXFA_FMExpression(FX_DWORD line, XFA_FM_EXPTYPE type); | |
| virtual ~CXFA_FMExpression(){}; | |
| virtual void ToJavaScript(CFX_WideTextBuf& javascript); | |
| virtual void ToImpliedReturnJS(CFX_WideTextBuf&); | |
| FX_DWORD GetLine() { return m_line; } | |
| XFA_FM_EXPTYPE GetExpType() const { return m_type; } | |
| protected: | |
| XFA_FM_EXPTYPE m_type; | |
| FX_DWORD m_line; | |
| }; | |
| class CXFA_FMFunctionDefinition : public CXFA_FMExpression { | |
| public: | |
| CXFA_FMFunctionDefinition(FX_DWORD line, | |
| FX_BOOL isGlobal, | |
| const CFX_WideStringC& wsName, | |
| CFX_WideStringCArray* pArguments, | |
| CFX_PtrArray* pExpressions); | |
| virtual ~CXFA_FMFunctionDefinition(); | |
| virtual void ToJavaScript(CFX_WideTextBuf& javascript); | |
| virtual void ToImpliedReturnJS(CFX_WideTextBuf&); | |
| private: | |
| CFX_WideStringC m_wsName; | |
| CFX_WideStringCArray* m_pArguments; | |
| CFX_PtrArray* m_pExpressions; | |
| FX_BOOL m_isGlobal; | |
| }; | |
| class CXFA_FMVarExpression : public CXFA_FMExpression { | |
| public: | |
| CXFA_FMVarExpression(FX_DWORD line, | |
| const CFX_WideStringC& wsName, | |
| CXFA_FMExpression* pInit); | |
| virtual ~CXFA_FMVarExpression(); | |
| virtual void ToJavaScript(CFX_WideTextBuf& javascript); | |
| virtual void ToImpliedReturnJS(CFX_WideTextBuf&); | |
| private: | |
| CFX_WideStringC m_wsName; | |
| CXFA_FMExpression* m_pInit; | |
| }; | |
| class CXFA_FMExpExpression : public CXFA_FMExpression { | |
| public: | |
| CXFA_FMExpExpression(FX_DWORD line, CXFA_FMSimpleExpression* pExpression); | |
| virtual ~CXFA_FMExpExpression(); | |
| virtual void ToJavaScript(CFX_WideTextBuf& javascript); | |
| virtual void ToImpliedReturnJS(CFX_WideTextBuf&); | |
| private: | |
| CXFA_FMSimpleExpression* m_pExpression; | |
| }; | |
| class CXFA_FMBlockExpression : public CXFA_FMExpression { | |
| public: | |
| CXFA_FMBlockExpression(FX_DWORD line, CFX_PtrArray* pExpressionList); | |
| virtual ~CXFA_FMBlockExpression(); | |
| virtual void ToJavaScript(CFX_WideTextBuf& javascript); | |
| virtual void ToImpliedReturnJS(CFX_WideTextBuf&); | |
| private: | |
| CFX_PtrArray* m_pExpressionList; | |
| }; | |
| class CXFA_FMDoExpression : public CXFA_FMExpression { | |
| public: | |
| CXFA_FMDoExpression(FX_DWORD line, CXFA_FMExpression* pList); | |
| virtual ~CXFA_FMDoExpression(); | |
| virtual void ToJavaScript(CFX_WideTextBuf& javascript); | |
| virtual void ToImpliedReturnJS(CFX_WideTextBuf&); | |
| private: | |
| CXFA_FMExpression* m_pList; | |
| }; | |
| class CXFA_FMIfExpression : public CXFA_FMExpression { | |
| public: | |
| CXFA_FMIfExpression(FX_DWORD line, | |
| CXFA_FMSimpleExpression* pExpression, | |
| CXFA_FMExpression* pIfExpression, | |
| CXFA_FMExpression* pElseExpression); | |
| virtual ~CXFA_FMIfExpression(); | |
| virtual void ToJavaScript(CFX_WideTextBuf& javascript); | |
| virtual void ToImpliedReturnJS(CFX_WideTextBuf&); | |
| private: | |
| CXFA_FMSimpleExpression* m_pExpression; | |
| CXFA_FMExpression* m_pIfExpression; | |
| CXFA_FMExpression* m_pElseExpression; | |
| }; | |
| class CXFA_FMLoopExpression : public CXFA_FMExpression { | |
| public: | |
| CXFA_FMLoopExpression(FX_DWORD line) : CXFA_FMExpression(line) {} | |
| virtual ~CXFA_FMLoopExpression(); | |
| virtual void ToJavaScript(CFX_WideTextBuf& javascript); | |
| virtual void ToImpliedReturnJS(CFX_WideTextBuf&); | |
| }; | |
| class CXFA_FMWhileExpression : public CXFA_FMLoopExpression { | |
| public: | |
| CXFA_FMWhileExpression(FX_DWORD line, | |
| CXFA_FMSimpleExpression* pCodition, | |
| CXFA_FMExpression* pExpression); | |
| virtual ~CXFA_FMWhileExpression(); | |
| virtual void ToJavaScript(CFX_WideTextBuf& javascript); | |
| virtual void ToImpliedReturnJS(CFX_WideTextBuf&); | |
| private: | |
| CXFA_FMSimpleExpression* m_pCondition; | |
| CXFA_FMExpression* m_pExpression; | |
| }; | |
| class CXFA_FMBreakExpression : public CXFA_FMExpression { | |
| public: | |
| CXFA_FMBreakExpression(FX_DWORD line); | |
| virtual ~CXFA_FMBreakExpression(); | |
| virtual void ToJavaScript(CFX_WideTextBuf& javascript); | |
| virtual void ToImpliedReturnJS(CFX_WideTextBuf&); | |
| private: | |
| CXFA_FMLoopExpression* m_pExpression; | |
| }; | |
| class CXFA_FMContinueExpression : public CXFA_FMExpression { | |
| public: | |
| CXFA_FMContinueExpression(FX_DWORD line); | |
| virtual ~CXFA_FMContinueExpression(); | |
| virtual void ToJavaScript(CFX_WideTextBuf& javascript); | |
| virtual void ToImpliedReturnJS(CFX_WideTextBuf&); | |
| private: | |
| CXFA_FMLoopExpression* m_pExpression; | |
| }; | |
| class CXFA_FMForExpression : public CXFA_FMLoopExpression { | |
| public: | |
| CXFA_FMForExpression(FX_DWORD line, | |
| const CFX_WideStringC& wsVariant, | |
| CXFA_FMSimpleExpression* pAssignment, | |
| CXFA_FMSimpleExpression* pAccessor, | |
| int32_t iDirection, | |
| CXFA_FMSimpleExpression* pStep, | |
| CXFA_FMExpression* pList); | |
| virtual ~CXFA_FMForExpression(); | |
| virtual void ToJavaScript(CFX_WideTextBuf& javascript); | |
| virtual void ToImpliedReturnJS(CFX_WideTextBuf&); | |
| private: | |
| CFX_WideStringC m_wsVariant; | |
| CXFA_FMSimpleExpression* m_pAssignment; | |
| CXFA_FMSimpleExpression* m_pAccessor; | |
| int32_t m_iDirection; | |
| CXFA_FMSimpleExpression* m_pStep; | |
| CXFA_FMExpression* m_pList; | |
| }; | |
| class CXFA_FMForeachExpression : public CXFA_FMLoopExpression { | |
| public: | |
| CXFA_FMForeachExpression(FX_DWORD line, | |
| const CFX_WideStringC& wsIdentifier, | |
| CFX_PtrArray* pAccessors, | |
| CXFA_FMExpression* pList); | |
| virtual ~CXFA_FMForeachExpression(); | |
| virtual void ToJavaScript(CFX_WideTextBuf& javascript); | |
| virtual void ToImpliedReturnJS(CFX_WideTextBuf&); | |
| private: | |
| CFX_WideStringC m_wsIdentifier; | |
| CFX_PtrArray* m_pAccessors; | |
| CXFA_FMExpression* m_pList; | |
| }; | |
| #endif |