Home | History | Annotate | Download | only in fxjs
      1 // Copyright 2014 PDFium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
      6 
      7 #ifndef FXJS_FXJSE_H_
      8 #define FXJS_FXJSE_H_
      9 
     10 #include "core/fxcrt/fx_string.h"
     11 #include "core/fxcrt/fx_system.h"
     12 #include "v8/include/v8.h"
     13 
     14 class CFXJSE_Arguments;
     15 class CFXJSE_Value;
     16 
     17 // C++ object which can be wrapped by CFXJSE_value.
     18 class CFXJSE_HostObject {
     19  public:
     20   virtual ~CFXJSE_HostObject() {}
     21 };
     22 
     23 typedef void (*FXJSE_FuncCallback)(CFXJSE_Value* pThis,
     24                                    const CFX_ByteStringC& szFuncName,
     25                                    CFXJSE_Arguments& args);
     26 typedef void (*FXJSE_PropAccessor)(CFXJSE_Value* pObject,
     27                                    const CFX_ByteStringC& szPropName,
     28                                    CFXJSE_Value* pValue);
     29 typedef int32_t (*FXJSE_PropTypeGetter)(CFXJSE_Value* pObject,
     30                                         const CFX_ByteStringC& szPropName,
     31                                         bool bQueryIn);
     32 typedef bool (*FXJSE_PropDeleter)(CFXJSE_Value* pObject,
     33                                   const CFX_ByteStringC& szPropName);
     34 
     35 enum FXJSE_ClassPropTypes {
     36   FXJSE_ClassPropType_None,
     37   FXJSE_ClassPropType_Property,
     38   FXJSE_ClassPropType_Method
     39 };
     40 
     41 struct FXJSE_FUNCTION_DESCRIPTOR {
     42   const FX_CHAR* name;
     43   FXJSE_FuncCallback callbackProc;
     44 };
     45 
     46 struct FXJSE_PROPERTY_DESCRIPTOR {
     47   const FX_CHAR* name;
     48   FXJSE_PropAccessor getProc;
     49   FXJSE_PropAccessor setProc;
     50 };
     51 
     52 struct FXJSE_CLASS_DESCRIPTOR {
     53   const FX_CHAR* name;
     54   FXJSE_FuncCallback constructor;
     55   const FXJSE_PROPERTY_DESCRIPTOR* properties;
     56   const FXJSE_FUNCTION_DESCRIPTOR* methods;
     57   int32_t propNum;
     58   int32_t methNum;
     59   FXJSE_PropTypeGetter dynPropTypeGetter;
     60   FXJSE_PropAccessor dynPropGetter;
     61   FXJSE_PropAccessor dynPropSetter;
     62   FXJSE_PropDeleter dynPropDeleter;
     63   FXJSE_FuncCallback dynMethodCall;
     64 };
     65 
     66 void FXJSE_Initialize();
     67 void FXJSE_Finalize();
     68 
     69 v8::Isolate* FXJSE_Runtime_Create_Own();
     70 void FXJSE_Runtime_Release(v8::Isolate* pIsolate);
     71 
     72 void FXJSE_ThrowMessage(const CFX_ByteStringC& utf8Message);
     73 
     74 #endif  // FXJS_FXJSE_H_
     75