| OLD | NEW |
| 1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
| 6 | 6 |
| 7 #ifndef XFA_FXFA_FM2JS_XFA_EXPRESSION_H_ | 7 #ifndef XFA_FXFA_FM2JS_XFA_EXPRESSION_H_ |
| 8 #define XFA_FXFA_FM2JS_XFA_EXPRESSION_H_ | 8 #define XFA_FXFA_FM2JS_XFA_EXPRESSION_H_ |
| 9 | 9 |
| 10 #include <memory> | 10 #include <memory> |
| 11 | 11 |
| 12 #include "xfa/fxfa/fm2js/xfa_simpleexpression.h" | 12 #include "xfa/fxfa/fm2js/xfa_simpleexpression.h" |
| 13 | 13 |
| 14 enum XFA_FM_EXPTYPE { | 14 enum XFA_FM_EXPTYPE { |
| 15 XFA_FM_EXPTYPE_UNKNOWN, | 15 XFA_FM_EXPTYPE_UNKNOWN, |
| 16 XFA_FM_EXPTYPE_FUNC, | 16 XFA_FM_EXPTYPE_FUNC, |
| 17 XFA_FM_EXPTYPE_VAR, | 17 XFA_FM_EXPTYPE_VAR, |
| 18 XFA_FM_EXPTYPE_EXP, | 18 XFA_FM_EXPTYPE_EXP, |
| 19 XFA_FM_EXPTYPE_BLOCK, | 19 XFA_FM_EXPTYPE_BLOCK, |
| 20 XFA_FM_EXPTYPE_IF, | 20 XFA_FM_EXPTYPE_IF, |
| 21 XFA_FM_EXPTYPE_BREAK, | 21 XFA_FM_EXPTYPE_BREAK, |
| 22 XFA_FM_EXPTYPE_CONTINUE, | 22 XFA_FM_EXPTYPE_CONTINUE, |
| 23 }; | 23 }; |
| 24 | 24 |
| 25 class CXFA_FMExpression { | 25 class CXFA_FMExpression { |
| 26 public: | 26 public: |
| 27 explicit CXFA_FMExpression(FX_DWORD line); | 27 explicit CXFA_FMExpression(uint32_t line); |
| 28 CXFA_FMExpression(FX_DWORD line, XFA_FM_EXPTYPE type); | 28 CXFA_FMExpression(uint32_t line, XFA_FM_EXPTYPE type); |
| 29 virtual ~CXFA_FMExpression() {} | 29 virtual ~CXFA_FMExpression() {} |
| 30 virtual void ToJavaScript(CFX_WideTextBuf& javascript); | 30 virtual void ToJavaScript(CFX_WideTextBuf& javascript); |
| 31 virtual void ToImpliedReturnJS(CFX_WideTextBuf&); | 31 virtual void ToImpliedReturnJS(CFX_WideTextBuf&); |
| 32 FX_DWORD GetLine() { return m_line; } | 32 uint32_t GetLine() { return m_line; } |
| 33 XFA_FM_EXPTYPE GetExpType() const { return m_type; } | 33 XFA_FM_EXPTYPE GetExpType() const { return m_type; } |
| 34 | 34 |
| 35 protected: | 35 protected: |
| 36 XFA_FM_EXPTYPE m_type; | 36 XFA_FM_EXPTYPE m_type; |
| 37 FX_DWORD m_line; | 37 uint32_t m_line; |
| 38 }; | 38 }; |
| 39 | 39 |
| 40 class CXFA_FMFunctionDefinition : public CXFA_FMExpression { | 40 class CXFA_FMFunctionDefinition : public CXFA_FMExpression { |
| 41 public: | 41 public: |
| 42 CXFA_FMFunctionDefinition(FX_DWORD line, | 42 CXFA_FMFunctionDefinition(uint32_t line, |
| 43 FX_BOOL isGlobal, | 43 FX_BOOL isGlobal, |
| 44 const CFX_WideStringC& wsName, | 44 const CFX_WideStringC& wsName, |
| 45 CFX_WideStringCArray* pArguments, | 45 CFX_WideStringCArray* pArguments, |
| 46 CFX_PtrArray* pExpressions); | 46 CFX_PtrArray* pExpressions); |
| 47 ~CXFA_FMFunctionDefinition() override; | 47 ~CXFA_FMFunctionDefinition() override; |
| 48 void ToJavaScript(CFX_WideTextBuf& javascript) override; | 48 void ToJavaScript(CFX_WideTextBuf& javascript) override; |
| 49 void ToImpliedReturnJS(CFX_WideTextBuf&) override; | 49 void ToImpliedReturnJS(CFX_WideTextBuf&) override; |
| 50 | 50 |
| 51 private: | 51 private: |
| 52 CFX_WideStringC m_wsName; | 52 CFX_WideStringC m_wsName; |
| 53 CFX_WideStringCArray* m_pArguments; | 53 CFX_WideStringCArray* m_pArguments; |
| 54 CFX_PtrArray* m_pExpressions; | 54 CFX_PtrArray* m_pExpressions; |
| 55 FX_BOOL m_isGlobal; | 55 FX_BOOL m_isGlobal; |
| 56 }; | 56 }; |
| 57 | 57 |
| 58 class CXFA_FMVarExpression : public CXFA_FMExpression { | 58 class CXFA_FMVarExpression : public CXFA_FMExpression { |
| 59 public: | 59 public: |
| 60 CXFA_FMVarExpression(FX_DWORD line, | 60 CXFA_FMVarExpression(uint32_t line, |
| 61 const CFX_WideStringC& wsName, | 61 const CFX_WideStringC& wsName, |
| 62 CXFA_FMExpression* pInit); | 62 CXFA_FMExpression* pInit); |
| 63 void ToJavaScript(CFX_WideTextBuf& javascript) override; | 63 void ToJavaScript(CFX_WideTextBuf& javascript) override; |
| 64 void ToImpliedReturnJS(CFX_WideTextBuf&) override; | 64 void ToImpliedReturnJS(CFX_WideTextBuf&) override; |
| 65 | 65 |
| 66 private: | 66 private: |
| 67 CFX_WideStringC m_wsName; | 67 CFX_WideStringC m_wsName; |
| 68 std::unique_ptr<CXFA_FMExpression> m_pInit; | 68 std::unique_ptr<CXFA_FMExpression> m_pInit; |
| 69 }; | 69 }; |
| 70 | 70 |
| 71 class CXFA_FMExpExpression : public CXFA_FMExpression { | 71 class CXFA_FMExpExpression : public CXFA_FMExpression { |
| 72 public: | 72 public: |
| 73 CXFA_FMExpExpression(FX_DWORD line, CXFA_FMSimpleExpression* pExpression); | 73 CXFA_FMExpExpression(uint32_t line, CXFA_FMSimpleExpression* pExpression); |
| 74 void ToJavaScript(CFX_WideTextBuf& javascript) override; | 74 void ToJavaScript(CFX_WideTextBuf& javascript) override; |
| 75 void ToImpliedReturnJS(CFX_WideTextBuf&) override; | 75 void ToImpliedReturnJS(CFX_WideTextBuf&) override; |
| 76 | 76 |
| 77 private: | 77 private: |
| 78 std::unique_ptr<CXFA_FMSimpleExpression> m_pExpression; | 78 std::unique_ptr<CXFA_FMSimpleExpression> m_pExpression; |
| 79 }; | 79 }; |
| 80 | 80 |
| 81 class CXFA_FMBlockExpression : public CXFA_FMExpression { | 81 class CXFA_FMBlockExpression : public CXFA_FMExpression { |
| 82 public: | 82 public: |
| 83 CXFA_FMBlockExpression(FX_DWORD line, CFX_PtrArray* pExpressionList); | 83 CXFA_FMBlockExpression(uint32_t line, CFX_PtrArray* pExpressionList); |
| 84 ~CXFA_FMBlockExpression() override; | 84 ~CXFA_FMBlockExpression() override; |
| 85 void ToJavaScript(CFX_WideTextBuf& javascript) override; | 85 void ToJavaScript(CFX_WideTextBuf& javascript) override; |
| 86 void ToImpliedReturnJS(CFX_WideTextBuf&) override; | 86 void ToImpliedReturnJS(CFX_WideTextBuf&) override; |
| 87 | 87 |
| 88 private: | 88 private: |
| 89 CFX_PtrArray* m_pExpressionList; | 89 CFX_PtrArray* m_pExpressionList; |
| 90 }; | 90 }; |
| 91 | 91 |
| 92 class CXFA_FMDoExpression : public CXFA_FMExpression { | 92 class CXFA_FMDoExpression : public CXFA_FMExpression { |
| 93 public: | 93 public: |
| 94 CXFA_FMDoExpression(FX_DWORD line, CXFA_FMExpression* pList); | 94 CXFA_FMDoExpression(uint32_t line, CXFA_FMExpression* pList); |
| 95 void ToJavaScript(CFX_WideTextBuf& javascript) override; | 95 void ToJavaScript(CFX_WideTextBuf& javascript) override; |
| 96 void ToImpliedReturnJS(CFX_WideTextBuf&) override; | 96 void ToImpliedReturnJS(CFX_WideTextBuf&) override; |
| 97 | 97 |
| 98 private: | 98 private: |
| 99 std::unique_ptr<CXFA_FMExpression> m_pList; | 99 std::unique_ptr<CXFA_FMExpression> m_pList; |
| 100 }; | 100 }; |
| 101 | 101 |
| 102 class CXFA_FMIfExpression : public CXFA_FMExpression { | 102 class CXFA_FMIfExpression : public CXFA_FMExpression { |
| 103 public: | 103 public: |
| 104 CXFA_FMIfExpression(FX_DWORD line, | 104 CXFA_FMIfExpression(uint32_t line, |
| 105 CXFA_FMSimpleExpression* pExpression, | 105 CXFA_FMSimpleExpression* pExpression, |
| 106 CXFA_FMExpression* pIfExpression, | 106 CXFA_FMExpression* pIfExpression, |
| 107 CXFA_FMExpression* pElseExpression); | 107 CXFA_FMExpression* pElseExpression); |
| 108 void ToJavaScript(CFX_WideTextBuf& javascript) override; | 108 void ToJavaScript(CFX_WideTextBuf& javascript) override; |
| 109 void ToImpliedReturnJS(CFX_WideTextBuf&) override; | 109 void ToImpliedReturnJS(CFX_WideTextBuf&) override; |
| 110 | 110 |
| 111 private: | 111 private: |
| 112 std::unique_ptr<CXFA_FMSimpleExpression> m_pExpression; | 112 std::unique_ptr<CXFA_FMSimpleExpression> m_pExpression; |
| 113 std::unique_ptr<CXFA_FMExpression> m_pIfExpression; | 113 std::unique_ptr<CXFA_FMExpression> m_pIfExpression; |
| 114 std::unique_ptr<CXFA_FMExpression> m_pElseExpression; | 114 std::unique_ptr<CXFA_FMExpression> m_pElseExpression; |
| 115 }; | 115 }; |
| 116 | 116 |
| 117 class CXFA_FMLoopExpression : public CXFA_FMExpression { | 117 class CXFA_FMLoopExpression : public CXFA_FMExpression { |
| 118 public: | 118 public: |
| 119 explicit CXFA_FMLoopExpression(FX_DWORD line) : CXFA_FMExpression(line) {} | 119 explicit CXFA_FMLoopExpression(uint32_t line) : CXFA_FMExpression(line) {} |
| 120 ~CXFA_FMLoopExpression() override; | 120 ~CXFA_FMLoopExpression() override; |
| 121 void ToJavaScript(CFX_WideTextBuf& javascript) override; | 121 void ToJavaScript(CFX_WideTextBuf& javascript) override; |
| 122 void ToImpliedReturnJS(CFX_WideTextBuf&) override; | 122 void ToImpliedReturnJS(CFX_WideTextBuf&) override; |
| 123 }; | 123 }; |
| 124 | 124 |
| 125 class CXFA_FMWhileExpression : public CXFA_FMLoopExpression { | 125 class CXFA_FMWhileExpression : public CXFA_FMLoopExpression { |
| 126 public: | 126 public: |
| 127 CXFA_FMWhileExpression(FX_DWORD line, | 127 CXFA_FMWhileExpression(uint32_t line, |
| 128 CXFA_FMSimpleExpression* pCodition, | 128 CXFA_FMSimpleExpression* pCodition, |
| 129 CXFA_FMExpression* pExpression); | 129 CXFA_FMExpression* pExpression); |
| 130 void ToJavaScript(CFX_WideTextBuf& javascript) override; | 130 void ToJavaScript(CFX_WideTextBuf& javascript) override; |
| 131 void ToImpliedReturnJS(CFX_WideTextBuf&) override; | 131 void ToImpliedReturnJS(CFX_WideTextBuf&) override; |
| 132 | 132 |
| 133 private: | 133 private: |
| 134 std::unique_ptr<CXFA_FMSimpleExpression> m_pCondition; | 134 std::unique_ptr<CXFA_FMSimpleExpression> m_pCondition; |
| 135 std::unique_ptr<CXFA_FMExpression> m_pExpression; | 135 std::unique_ptr<CXFA_FMExpression> m_pExpression; |
| 136 }; | 136 }; |
| 137 | 137 |
| 138 class CXFA_FMBreakExpression : public CXFA_FMExpression { | 138 class CXFA_FMBreakExpression : public CXFA_FMExpression { |
| 139 public: | 139 public: |
| 140 explicit CXFA_FMBreakExpression(FX_DWORD line); | 140 explicit CXFA_FMBreakExpression(uint32_t line); |
| 141 ~CXFA_FMBreakExpression() override; | 141 ~CXFA_FMBreakExpression() override; |
| 142 void ToJavaScript(CFX_WideTextBuf& javascript) override; | 142 void ToJavaScript(CFX_WideTextBuf& javascript) override; |
| 143 void ToImpliedReturnJS(CFX_WideTextBuf&) override; | 143 void ToImpliedReturnJS(CFX_WideTextBuf&) override; |
| 144 }; | 144 }; |
| 145 | 145 |
| 146 class CXFA_FMContinueExpression : public CXFA_FMExpression { | 146 class CXFA_FMContinueExpression : public CXFA_FMExpression { |
| 147 public: | 147 public: |
| 148 explicit CXFA_FMContinueExpression(FX_DWORD line); | 148 explicit CXFA_FMContinueExpression(uint32_t line); |
| 149 ~CXFA_FMContinueExpression() override; | 149 ~CXFA_FMContinueExpression() override; |
| 150 void ToJavaScript(CFX_WideTextBuf& javascript) override; | 150 void ToJavaScript(CFX_WideTextBuf& javascript) override; |
| 151 void ToImpliedReturnJS(CFX_WideTextBuf&) override; | 151 void ToImpliedReturnJS(CFX_WideTextBuf&) override; |
| 152 }; | 152 }; |
| 153 | 153 |
| 154 class CXFA_FMForExpression : public CXFA_FMLoopExpression { | 154 class CXFA_FMForExpression : public CXFA_FMLoopExpression { |
| 155 public: | 155 public: |
| 156 CXFA_FMForExpression(FX_DWORD line, | 156 CXFA_FMForExpression(uint32_t line, |
| 157 const CFX_WideStringC& wsVariant, | 157 const CFX_WideStringC& wsVariant, |
| 158 CXFA_FMSimpleExpression* pAssignment, | 158 CXFA_FMSimpleExpression* pAssignment, |
| 159 CXFA_FMSimpleExpression* pAccessor, | 159 CXFA_FMSimpleExpression* pAccessor, |
| 160 int32_t iDirection, | 160 int32_t iDirection, |
| 161 CXFA_FMSimpleExpression* pStep, | 161 CXFA_FMSimpleExpression* pStep, |
| 162 CXFA_FMExpression* pList); | 162 CXFA_FMExpression* pList); |
| 163 void ToJavaScript(CFX_WideTextBuf& javascript) override; | 163 void ToJavaScript(CFX_WideTextBuf& javascript) override; |
| 164 void ToImpliedReturnJS(CFX_WideTextBuf&) override; | 164 void ToImpliedReturnJS(CFX_WideTextBuf&) override; |
| 165 | 165 |
| 166 private: | 166 private: |
| 167 CFX_WideStringC m_wsVariant; | 167 CFX_WideStringC m_wsVariant; |
| 168 std::unique_ptr<CXFA_FMSimpleExpression> m_pAssignment; | 168 std::unique_ptr<CXFA_FMSimpleExpression> m_pAssignment; |
| 169 std::unique_ptr<CXFA_FMSimpleExpression> m_pAccessor; | 169 std::unique_ptr<CXFA_FMSimpleExpression> m_pAccessor; |
| 170 int32_t m_iDirection; | 170 int32_t m_iDirection; |
| 171 std::unique_ptr<CXFA_FMSimpleExpression> m_pStep; | 171 std::unique_ptr<CXFA_FMSimpleExpression> m_pStep; |
| 172 std::unique_ptr<CXFA_FMExpression> m_pList; | 172 std::unique_ptr<CXFA_FMExpression> m_pList; |
| 173 }; | 173 }; |
| 174 | 174 |
| 175 class CXFA_FMForeachExpression : public CXFA_FMLoopExpression { | 175 class CXFA_FMForeachExpression : public CXFA_FMLoopExpression { |
| 176 public: | 176 public: |
| 177 CXFA_FMForeachExpression(FX_DWORD line, | 177 CXFA_FMForeachExpression(uint32_t line, |
| 178 const CFX_WideStringC& wsIdentifier, | 178 const CFX_WideStringC& wsIdentifier, |
| 179 CFX_PtrArray* pAccessors, | 179 CFX_PtrArray* pAccessors, |
| 180 CXFA_FMExpression* pList); | 180 CXFA_FMExpression* pList); |
| 181 ~CXFA_FMForeachExpression() override; | 181 ~CXFA_FMForeachExpression() override; |
| 182 void ToJavaScript(CFX_WideTextBuf& javascript) override; | 182 void ToJavaScript(CFX_WideTextBuf& javascript) override; |
| 183 void ToImpliedReturnJS(CFX_WideTextBuf&) override; | 183 void ToImpliedReturnJS(CFX_WideTextBuf&) override; |
| 184 | 184 |
| 185 private: | 185 private: |
| 186 CFX_WideStringC m_wsIdentifier; | 186 CFX_WideStringC m_wsIdentifier; |
| 187 CFX_PtrArray* m_pAccessors; | 187 CFX_PtrArray* m_pAccessors; |
| 188 std::unique_ptr<CXFA_FMExpression> m_pList; | 188 std::unique_ptr<CXFA_FMExpression> m_pList; |
| 189 }; | 189 }; |
| 190 | 190 |
| 191 #endif // XFA_FXFA_FM2JS_XFA_EXPRESSION_H_ | 191 #endif // XFA_FXFA_FM2JS_XFA_EXPRESSION_H_ |
| OLD | NEW |