// 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&); | |
}; | |
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&); | |
}; | |
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 |