|  | // Copyright 2017 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 FXJS_XFA_JSE_DEFINE_H_ | 
|  | #define FXJS_XFA_JSE_DEFINE_H_ | 
|  |  | 
|  | #include <vector> | 
|  |  | 
|  | #include "fxjs/cjs_result.h" | 
|  |  | 
|  | class CFX_V8; | 
|  |  | 
|  | #define JSE_METHOD(method_name)                                      \ | 
|  | static CJS_Result method_name##_static(                            \ | 
|  | CJX_Object* node, CFX_V8* runtime,                             \ | 
|  | const std::vector<v8::Local<v8::Value>>& params) {             \ | 
|  | if (!node->DynamicTypeIs(static_type__))                         \ | 
|  | return CJS_Result::Failure(JSMessage::kBadObjectError);        \ | 
|  | return static_cast<Type__*>(node)->method_name(runtime, params); \ | 
|  | }                                                                  \ | 
|  | CJS_Result method_name(CFX_V8* runtime,                            \ | 
|  | const std::vector<v8::Local<v8::Value>>& params) | 
|  |  | 
|  | #define JSE_PROP(prop_name)                                                  \ | 
|  | static void prop_name##_static(v8::Isolate* pIsolate, CJX_Object* node,    \ | 
|  | CFXJSE_Value* value, bool setting,          \ | 
|  | XFA_Attribute attribute) {                  \ | 
|  | if (node->DynamicTypeIs(static_type__))                                  \ | 
|  | static_cast<Type__*>(node)->prop_name(pIsolate, value, setting,        \ | 
|  | attribute);                      \ | 
|  | }                                                                          \ | 
|  | void prop_name(v8::Isolate* pIsolate, CFXJSE_Value* pValue, bool bSetting, \ | 
|  | XFA_Attribute eAttribute) | 
|  |  | 
|  | #endif  // FXJS_XFA_JSE_DEFINE_H_ |