| 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_SIMPLEEXPRESSION_H_ | 7 #ifndef XFA_FXFA_FM2JS_XFA_SIMPLEEXPRESSION_H_ |
| 8 #define XFA_FXFA_FM2JS_XFA_SIMPLEEXPRESSION_H_ | 8 #define XFA_FXFA_FM2JS_XFA_SIMPLEEXPRESSION_H_ |
| 9 | 9 |
| 10 #include <memory> | 10 #include <memory> |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 104 void ToJavaScript(CFX_WideTextBuf& javascript) override; | 104 void ToJavaScript(CFX_WideTextBuf& javascript) override; |
| 105 | 105 |
| 106 private: | 106 private: |
| 107 CFX_WideStringC m_wsIdentifier; | 107 CFX_WideStringC m_wsIdentifier; |
| 108 }; | 108 }; |
| 109 | 109 |
| 110 class CXFA_FMUnaryExpression : public CXFA_FMSimpleExpression { | 110 class CXFA_FMUnaryExpression : public CXFA_FMSimpleExpression { |
| 111 public: | 111 public: |
| 112 CXFA_FMUnaryExpression(uint32_t line, | 112 CXFA_FMUnaryExpression(uint32_t line, |
| 113 XFA_FM_TOKEN op, | 113 XFA_FM_TOKEN op, |
| 114 CXFA_FMSimpleExpression* pExp); | 114 std::unique_ptr<CXFA_FMSimpleExpression> pExp); |
| 115 ~CXFA_FMUnaryExpression() override; | 115 ~CXFA_FMUnaryExpression() override; |
| 116 | 116 |
| 117 void ToJavaScript(CFX_WideTextBuf& javascript) override; | 117 void ToJavaScript(CFX_WideTextBuf& javascript) override; |
| 118 | 118 |
| 119 protected: | 119 protected: |
| 120 std::unique_ptr<CXFA_FMSimpleExpression> m_pExp; | 120 std::unique_ptr<CXFA_FMSimpleExpression> m_pExp; |
| 121 }; | 121 }; |
| 122 | 122 |
| 123 class CXFA_FMBinExpression : public CXFA_FMSimpleExpression { | 123 class CXFA_FMBinExpression : public CXFA_FMSimpleExpression { |
| 124 public: | 124 public: |
| 125 CXFA_FMBinExpression(uint32_t line, | 125 CXFA_FMBinExpression(uint32_t line, |
| 126 XFA_FM_TOKEN op, | 126 XFA_FM_TOKEN op, |
| 127 CXFA_FMSimpleExpression* pExp1, | 127 std::unique_ptr<CXFA_FMSimpleExpression> pExp1, |
| 128 CXFA_FMSimpleExpression* pExp2); | 128 std::unique_ptr<CXFA_FMSimpleExpression> pExp2); |
| 129 ~CXFA_FMBinExpression() override; | 129 ~CXFA_FMBinExpression() override; |
| 130 | 130 |
| 131 void ToJavaScript(CFX_WideTextBuf& javascript) override; | 131 void ToJavaScript(CFX_WideTextBuf& javascript) override; |
| 132 | 132 |
| 133 protected: | 133 protected: |
| 134 std::unique_ptr<CXFA_FMSimpleExpression> m_pExp1; | 134 std::unique_ptr<CXFA_FMSimpleExpression> m_pExp1; |
| 135 std::unique_ptr<CXFA_FMSimpleExpression> m_pExp2; | 135 std::unique_ptr<CXFA_FMSimpleExpression> m_pExp2; |
| 136 }; | 136 }; |
| 137 | 137 |
| 138 class CXFA_FMAssignExpression : public CXFA_FMBinExpression { | 138 class CXFA_FMAssignExpression : public CXFA_FMBinExpression { |
| 139 public: | 139 public: |
| 140 CXFA_FMAssignExpression(uint32_t line, | 140 CXFA_FMAssignExpression(uint32_t line, |
| 141 XFA_FM_TOKEN op, | 141 XFA_FM_TOKEN op, |
| 142 CXFA_FMSimpleExpression* pExp1, | 142 std::unique_ptr<CXFA_FMSimpleExpression> pExp1, |
| 143 CXFA_FMSimpleExpression* pExp2); | 143 std::unique_ptr<CXFA_FMSimpleExpression> pExp2); |
| 144 ~CXFA_FMAssignExpression() override {} | 144 ~CXFA_FMAssignExpression() override {} |
| 145 void ToJavaScript(CFX_WideTextBuf& javascript) override; | 145 void ToJavaScript(CFX_WideTextBuf& javascript) override; |
| 146 void ToImpliedReturnJS(CFX_WideTextBuf& javascript) override; | 146 void ToImpliedReturnJS(CFX_WideTextBuf& javascript) override; |
| 147 }; | 147 }; |
| 148 | 148 |
| 149 class CXFA_FMLogicalOrExpression : public CXFA_FMBinExpression { | 149 class CXFA_FMLogicalOrExpression : public CXFA_FMBinExpression { |
| 150 public: | 150 public: |
| 151 CXFA_FMLogicalOrExpression(uint32_t line, | 151 CXFA_FMLogicalOrExpression(uint32_t line, |
| 152 XFA_FM_TOKEN op, | 152 XFA_FM_TOKEN op, |
| 153 CXFA_FMSimpleExpression* pExp1, | 153 std::unique_ptr<CXFA_FMSimpleExpression> pExp1, |
| 154 CXFA_FMSimpleExpression* pExp2); | 154 std::unique_ptr<CXFA_FMSimpleExpression> pExp2); |
| 155 ~CXFA_FMLogicalOrExpression() override {} | 155 ~CXFA_FMLogicalOrExpression() override {} |
| 156 void ToJavaScript(CFX_WideTextBuf& javascript) override; | 156 void ToJavaScript(CFX_WideTextBuf& javascript) override; |
| 157 }; | 157 }; |
| 158 | 158 |
| 159 class CXFA_FMLogicalAndExpression : public CXFA_FMBinExpression { | 159 class CXFA_FMLogicalAndExpression : public CXFA_FMBinExpression { |
| 160 public: | 160 public: |
| 161 CXFA_FMLogicalAndExpression(uint32_t line, | 161 CXFA_FMLogicalAndExpression(uint32_t line, |
| 162 XFA_FM_TOKEN op, | 162 XFA_FM_TOKEN op, |
| 163 CXFA_FMSimpleExpression* pExp1, | 163 std::unique_ptr<CXFA_FMSimpleExpression> pExp1, |
| 164 CXFA_FMSimpleExpression* pExp2); | 164 std::unique_ptr<CXFA_FMSimpleExpression> pExp2); |
| 165 ~CXFA_FMLogicalAndExpression() override {} | 165 ~CXFA_FMLogicalAndExpression() override {} |
| 166 void ToJavaScript(CFX_WideTextBuf& javascript) override; | 166 void ToJavaScript(CFX_WideTextBuf& javascript) override; |
| 167 }; | 167 }; |
| 168 | 168 |
| 169 class CXFA_FMEqualityExpression : public CXFA_FMBinExpression { | 169 class CXFA_FMEqualityExpression : public CXFA_FMBinExpression { |
| 170 public: | 170 public: |
| 171 CXFA_FMEqualityExpression(uint32_t line, | 171 CXFA_FMEqualityExpression(uint32_t line, |
| 172 XFA_FM_TOKEN op, | 172 XFA_FM_TOKEN op, |
| 173 CXFA_FMSimpleExpression* pExp1, | 173 std::unique_ptr<CXFA_FMSimpleExpression> pExp1, |
| 174 CXFA_FMSimpleExpression* pExp2); | 174 std::unique_ptr<CXFA_FMSimpleExpression> pExp2); |
| 175 ~CXFA_FMEqualityExpression() override {} | 175 ~CXFA_FMEqualityExpression() override {} |
| 176 void ToJavaScript(CFX_WideTextBuf& javascript) override; | 176 void ToJavaScript(CFX_WideTextBuf& javascript) override; |
| 177 }; | 177 }; |
| 178 | 178 |
| 179 class CXFA_FMRelationalExpression : public CXFA_FMBinExpression { | 179 class CXFA_FMRelationalExpression : public CXFA_FMBinExpression { |
| 180 public: | 180 public: |
| 181 CXFA_FMRelationalExpression(uint32_t line, | 181 CXFA_FMRelationalExpression(uint32_t line, |
| 182 XFA_FM_TOKEN op, | 182 XFA_FM_TOKEN op, |
| 183 CXFA_FMSimpleExpression* pExp1, | 183 std::unique_ptr<CXFA_FMSimpleExpression> pExp1, |
| 184 CXFA_FMSimpleExpression* pExp2); | 184 std::unique_ptr<CXFA_FMSimpleExpression> pExp2); |
| 185 ~CXFA_FMRelationalExpression() override {} | 185 ~CXFA_FMRelationalExpression() override {} |
| 186 void ToJavaScript(CFX_WideTextBuf& javascript) override; | 186 void ToJavaScript(CFX_WideTextBuf& javascript) override; |
| 187 }; | 187 }; |
| 188 | 188 |
| 189 class CXFA_FMAdditiveExpression : public CXFA_FMBinExpression { | 189 class CXFA_FMAdditiveExpression : public CXFA_FMBinExpression { |
| 190 public: | 190 public: |
| 191 CXFA_FMAdditiveExpression(uint32_t line, | 191 CXFA_FMAdditiveExpression(uint32_t line, |
| 192 XFA_FM_TOKEN op, | 192 XFA_FM_TOKEN op, |
| 193 CXFA_FMSimpleExpression* pExp1, | 193 std::unique_ptr<CXFA_FMSimpleExpression> pExp1, |
| 194 CXFA_FMSimpleExpression* pExp2); | 194 std::unique_ptr<CXFA_FMSimpleExpression> pExp2); |
| 195 ~CXFA_FMAdditiveExpression() override {} | 195 ~CXFA_FMAdditiveExpression() override {} |
| 196 void ToJavaScript(CFX_WideTextBuf& javascript) override; | 196 void ToJavaScript(CFX_WideTextBuf& javascript) override; |
| 197 }; | 197 }; |
| 198 | 198 |
| 199 class CXFA_FMMultiplicativeExpression : public CXFA_FMBinExpression { | 199 class CXFA_FMMultiplicativeExpression : public CXFA_FMBinExpression { |
| 200 public: | 200 public: |
| 201 CXFA_FMMultiplicativeExpression(uint32_t line, | 201 CXFA_FMMultiplicativeExpression( |
| 202 XFA_FM_TOKEN op, | 202 uint32_t line, |
| 203 CXFA_FMSimpleExpression* pExp1, | 203 XFA_FM_TOKEN op, |
| 204 CXFA_FMSimpleExpression* pExp2); | 204 std::unique_ptr<CXFA_FMSimpleExpression> pExp1, |
| 205 std::unique_ptr<CXFA_FMSimpleExpression> pExp2); |
| 205 ~CXFA_FMMultiplicativeExpression() override {} | 206 ~CXFA_FMMultiplicativeExpression() override {} |
| 206 void ToJavaScript(CFX_WideTextBuf& javascript) override; | 207 void ToJavaScript(CFX_WideTextBuf& javascript) override; |
| 207 }; | 208 }; |
| 208 | 209 |
| 209 class CXFA_FMPosExpression : public CXFA_FMUnaryExpression { | 210 class CXFA_FMPosExpression : public CXFA_FMUnaryExpression { |
| 210 public: | 211 public: |
| 211 CXFA_FMPosExpression(uint32_t line, CXFA_FMSimpleExpression* pExp); | 212 CXFA_FMPosExpression(uint32_t line, |
| 213 std::unique_ptr<CXFA_FMSimpleExpression> pExp); |
| 212 ~CXFA_FMPosExpression() override {} | 214 ~CXFA_FMPosExpression() override {} |
| 213 void ToJavaScript(CFX_WideTextBuf& javascript) override; | 215 void ToJavaScript(CFX_WideTextBuf& javascript) override; |
| 214 }; | 216 }; |
| 215 | 217 |
| 216 class CXFA_FMNegExpression : public CXFA_FMUnaryExpression { | 218 class CXFA_FMNegExpression : public CXFA_FMUnaryExpression { |
| 217 public: | 219 public: |
| 218 CXFA_FMNegExpression(uint32_t line, CXFA_FMSimpleExpression* pExp); | 220 CXFA_FMNegExpression(uint32_t line, |
| 221 std::unique_ptr<CXFA_FMSimpleExpression> pExp); |
| 219 ~CXFA_FMNegExpression() override {} | 222 ~CXFA_FMNegExpression() override {} |
| 220 void ToJavaScript(CFX_WideTextBuf& javascript) override; | 223 void ToJavaScript(CFX_WideTextBuf& javascript) override; |
| 221 }; | 224 }; |
| 222 | 225 |
| 223 class CXFA_FMNotExpression : public CXFA_FMUnaryExpression { | 226 class CXFA_FMNotExpression : public CXFA_FMUnaryExpression { |
| 224 public: | 227 public: |
| 225 CXFA_FMNotExpression(uint32_t line, CXFA_FMSimpleExpression* pExp); | 228 CXFA_FMNotExpression(uint32_t line, |
| 229 std::unique_ptr<CXFA_FMSimpleExpression> pExp); |
| 226 ~CXFA_FMNotExpression() override {} | 230 ~CXFA_FMNotExpression() override {} |
| 227 void ToJavaScript(CFX_WideTextBuf& javascript) override; | 231 void ToJavaScript(CFX_WideTextBuf& javascript) override; |
| 228 }; | 232 }; |
| 229 | 233 |
| 230 class CXFA_FMCallExpression : public CXFA_FMUnaryExpression { | 234 class CXFA_FMCallExpression : public CXFA_FMUnaryExpression { |
| 231 public: | 235 public: |
| 232 CXFA_FMCallExpression( | 236 CXFA_FMCallExpression( |
| 233 uint32_t line, | 237 uint32_t line, |
| 234 CXFA_FMSimpleExpression* pExp, | 238 std::unique_ptr<CXFA_FMSimpleExpression> pExp, |
| 235 std::vector<std::unique_ptr<CXFA_FMSimpleExpression>>&& pArguments, | 239 std::vector<std::unique_ptr<CXFA_FMSimpleExpression>>&& pArguments, |
| 236 bool bIsSomMethod); | 240 bool bIsSomMethod); |
| 237 ~CXFA_FMCallExpression() override; | 241 ~CXFA_FMCallExpression() override; |
| 238 | 242 |
| 239 bool IsBuildInFunc(CFX_WideTextBuf* funcName); | 243 bool IsBuildInFunc(CFX_WideTextBuf* funcName); |
| 240 uint32_t IsMethodWithObjParam(const CFX_WideStringC& methodName); | 244 uint32_t IsMethodWithObjParam(const CFX_WideStringC& methodName); |
| 241 void ToJavaScript(CFX_WideTextBuf& javascript) override; | 245 void ToJavaScript(CFX_WideTextBuf& javascript) override; |
| 242 | 246 |
| 243 private: | 247 private: |
| 244 bool m_bIsSomMethod; | 248 bool m_bIsSomMethod; |
| 245 std::vector<std::unique_ptr<CXFA_FMSimpleExpression>> m_Arguments; | 249 std::vector<std::unique_ptr<CXFA_FMSimpleExpression>> m_Arguments; |
| 246 }; | 250 }; |
| 247 | 251 |
| 248 class CXFA_FMDotAccessorExpression : public CXFA_FMBinExpression { | 252 class CXFA_FMDotAccessorExpression : public CXFA_FMBinExpression { |
| 249 public: | 253 public: |
| 250 CXFA_FMDotAccessorExpression(uint32_t line, | 254 CXFA_FMDotAccessorExpression( |
| 251 CXFA_FMSimpleExpression* pAccessor, | 255 uint32_t line, |
| 252 XFA_FM_TOKEN op, | 256 std::unique_ptr<CXFA_FMSimpleExpression> pAccessor, |
| 253 CFX_WideStringC wsIdentifier, | 257 XFA_FM_TOKEN op, |
| 254 CXFA_FMSimpleExpression* pIndexExp); | 258 CFX_WideStringC wsIdentifier, |
| 259 std::unique_ptr<CXFA_FMSimpleExpression> pIndexExp); |
| 255 ~CXFA_FMDotAccessorExpression() override; | 260 ~CXFA_FMDotAccessorExpression() override; |
| 256 void ToJavaScript(CFX_WideTextBuf& javascript) override; | 261 void ToJavaScript(CFX_WideTextBuf& javascript) override; |
| 257 | 262 |
| 258 private: | 263 private: |
| 259 CFX_WideStringC m_wsIdentifier; | 264 CFX_WideStringC m_wsIdentifier; |
| 260 }; | 265 }; |
| 261 | 266 |
| 262 class CXFA_FMIndexExpression : public CXFA_FMUnaryExpression { | 267 class CXFA_FMIndexExpression : public CXFA_FMUnaryExpression { |
| 263 public: | 268 public: |
| 264 CXFA_FMIndexExpression(uint32_t line, | 269 CXFA_FMIndexExpression(uint32_t line, |
| 265 XFA_FM_AccessorIndex accessorIndex, | 270 XFA_FM_AccessorIndex accessorIndex, |
| 266 CXFA_FMSimpleExpression* pIndexExp, | 271 std::unique_ptr<CXFA_FMSimpleExpression> pIndexExp, |
| 267 bool bIsStarIndex); | 272 bool bIsStarIndex); |
| 268 ~CXFA_FMIndexExpression() override {} | 273 ~CXFA_FMIndexExpression() override {} |
| 269 void ToJavaScript(CFX_WideTextBuf& javascript) override; | 274 void ToJavaScript(CFX_WideTextBuf& javascript) override; |
| 270 | 275 |
| 271 private: | 276 private: |
| 272 XFA_FM_AccessorIndex m_accessorIndex; | 277 XFA_FM_AccessorIndex m_accessorIndex; |
| 273 bool m_bIsStarIndex; | 278 bool m_bIsStarIndex; |
| 274 }; | 279 }; |
| 275 | 280 |
| 276 class CXFA_FMDotDotAccessorExpression : public CXFA_FMBinExpression { | 281 class CXFA_FMDotDotAccessorExpression : public CXFA_FMBinExpression { |
| 277 public: | 282 public: |
| 278 CXFA_FMDotDotAccessorExpression(uint32_t line, | 283 CXFA_FMDotDotAccessorExpression( |
| 279 CXFA_FMSimpleExpression* pAccessor, | 284 uint32_t line, |
| 280 XFA_FM_TOKEN op, | 285 std::unique_ptr<CXFA_FMSimpleExpression> pAccessor, |
| 281 CFX_WideStringC wsIdentifier, | 286 XFA_FM_TOKEN op, |
| 282 CXFA_FMSimpleExpression* pIndexExp); | 287 CFX_WideStringC wsIdentifier, |
| 288 std::unique_ptr<CXFA_FMSimpleExpression> pIndexExp); |
| 283 ~CXFA_FMDotDotAccessorExpression() override; | 289 ~CXFA_FMDotDotAccessorExpression() override; |
| 284 | 290 |
| 285 void ToJavaScript(CFX_WideTextBuf& javascript) override; | 291 void ToJavaScript(CFX_WideTextBuf& javascript) override; |
| 286 | 292 |
| 287 private: | 293 private: |
| 288 CFX_WideStringC m_wsIdentifier; | 294 CFX_WideStringC m_wsIdentifier; |
| 289 }; | 295 }; |
| 290 | 296 |
| 291 class CXFA_FMMethodCallExpression : public CXFA_FMBinExpression { | 297 class CXFA_FMMethodCallExpression : public CXFA_FMBinExpression { |
| 292 public: | 298 public: |
| 293 CXFA_FMMethodCallExpression(uint32_t line, | 299 CXFA_FMMethodCallExpression( |
| 294 CXFA_FMSimpleExpression* pAccessorExp1, | 300 uint32_t line, |
| 295 CXFA_FMSimpleExpression* pCallExp); | 301 std::unique_ptr<CXFA_FMSimpleExpression> pAccessorExp1, |
| 302 std::unique_ptr<CXFA_FMSimpleExpression> pCallExp); |
| 296 ~CXFA_FMMethodCallExpression() override {} | 303 ~CXFA_FMMethodCallExpression() override {} |
| 297 void ToJavaScript(CFX_WideTextBuf& javascript) override; | 304 void ToJavaScript(CFX_WideTextBuf& javascript) override; |
| 298 }; | 305 }; |
| 299 | 306 |
| 300 #endif // XFA_FXFA_FM2JS_XFA_SIMPLEEXPRESSION_H_ | 307 #endif // XFA_FXFA_FM2JS_XFA_SIMPLEEXPRESSION_H_ |
| OLD | NEW |