1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
|
// 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 _FXJSE_H_
#define _FXJSE_H_
typedef struct FXJSE_HRUNTIME_ {
FX_LPVOID pData;
}* FXJSE_HRUNTIME;
typedef struct FXJSE_HCONTEXT_ {
FX_LPVOID pData;
}* FXJSE_HCONTEXT;
typedef struct FXJSE_HCLASS_ {
FX_LPVOID pData;
}* FXJSE_HCLASS;
typedef struct FXJSE_HVALUE_ {
FX_LPVOID pData;
}* FXJSE_HVALUE;
typedef struct FXJSE_HOBJECT_ : public FXJSE_HVALUE_ {
}* FXJSE_HOBJECT;
typedef double FXJSE_DOUBLE;
void FXJSE_Initialize();
void FXJSE_Finalize();
FXJSE_HRUNTIME FXJSE_Runtime_Create();
void FXJSE_Runtime_Release(FXJSE_HRUNTIME hRuntime);
typedef struct _FXJSE_CLASS FXJSE_CLASS;
FXJSE_HCONTEXT FXJSE_Context_Create (FXJSE_HRUNTIME hRuntime, const FXJSE_CLASS* lpGlobalClass = NULL, FX_LPVOID lpGlobalObject = NULL);
void FXJSE_Context_Release (FXJSE_HCONTEXT hContext);
FXJSE_HVALUE FXJSE_Context_GetGlobalObject(FXJSE_HCONTEXT hContext);
FXJSE_HRUNTIME FXJSE_Context_GetRuntime(FXJSE_HCONTEXT hContext);
enum FXJSE_CompatibleModeFlags {
FXJSE_COMPATIBLEMODEFLAG_CONSTRUCTOREXTRAMETHODS = (1 << 0),
FXJSE_COMPATIBLEMODEFLAGCOUNT = 1,
};
void FXJSE_Context_EnableCompatibleMode(FXJSE_HCONTEXT hContext, FX_DWORD dwCompatibleFlags);
class CFXJSE_Arguments
{
public:
FXJSE_HRUNTIME GetRuntime() const;
FX_INT32 GetLength() const;
FXJSE_HVALUE GetValue(FX_INT32 index) const;
FX_BOOL GetBoolean(FX_INT32 index) const;
FX_INT32 GetInt32(FX_INT32 index) const;
FX_FLOAT GetFloat(FX_INT32 index) const;
CFX_ByteString GetUTF8String(FX_INT32 index) const;
FX_LPVOID GetObject(FX_INT32 index, FXJSE_HCLASS hClass = NULL) const;
FXJSE_HVALUE GetReturnValue();
};
typedef void (*FXJSE_FuncCallback) (FXJSE_HOBJECT hThis, FX_BSTR szFuncName, CFXJSE_Arguments &args);
typedef void (*FXJSE_PropAccessor) (FXJSE_HOBJECT hObject, FX_BSTR szPropName, FXJSE_HVALUE hValue);
typedef FX_INT32(*FXJSE_PropTypeGetter) (FXJSE_HOBJECT hObject, FX_BSTR szPropName, FX_BOOL bQueryIn);
typedef FX_BOOL (*FXJSE_PropDeleter) (FXJSE_HOBJECT hObject, FX_BSTR szPropName);
typedef struct _FXJSE_FUNCTION {
FX_LPCSTR name;
FXJSE_FuncCallback callbackProc;
} FXJSE_FUNCTION;
#define FXJSE_DEF_FUNCTION(functionName, functionCallback) {functionName, functionCallback}
void FXJSE_DefineFunctions(FXJSE_HCONTEXT hContext, const FXJSE_FUNCTION* lpFunctions, int nNum);
typedef struct _FXJSE_PROPERTY {
FX_LPCSTR name;
FXJSE_PropAccessor getProc;
FXJSE_PropAccessor setProc;
} FXJSE_PROPERTY;
enum FXJSE_ClassPropTypes {
FXJSE_ClassPropType_None,
FXJSE_ClassPropType_Property,
FXJSE_ClassPropType_Method
};
typedef struct _FXJSE_CLASS {
FX_LPCSTR name;
FXJSE_FuncCallback constructor;
FXJSE_PROPERTY* properties;
FXJSE_FUNCTION* methods;
FX_INT32 propNum;
FX_INT32 methNum;
FXJSE_PropTypeGetter dynPropTypeGetter;
FXJSE_PropAccessor dynPropGetter;
FXJSE_PropAccessor dynPropSetter;
FXJSE_PropDeleter dynPropDeleter;
FXJSE_FuncCallback dynMethodCall;
} FXJSE_CLASS;
FXJSE_HCLASS FXJSE_DefineClass(FXJSE_HCONTEXT hContext, const FXJSE_CLASS* lpClass);
FXJSE_HCLASS FXJSE_GetClass(FXJSE_HCONTEXT hContext, FX_BSTR szName);
FXJSE_HVALUE FXJSE_Value_Create(FXJSE_HRUNTIME hRuntime);
void FXJSE_Value_Release(FXJSE_HVALUE hValue);
FXJSE_HRUNTIME FXJSE_Value_GetRuntime(FXJSE_HVALUE hValue);
FX_BOOL FXJSE_Value_IsUndefined (FXJSE_HVALUE hValue);
FX_BOOL FXJSE_Value_IsNull (FXJSE_HVALUE hValue);
FX_BOOL FXJSE_Value_IsBoolean (FXJSE_HVALUE hValue);
FX_BOOL FXJSE_Value_IsUTF8String (FXJSE_HVALUE hValue);
FX_BOOL FXJSE_Value_IsNumber (FXJSE_HVALUE hValue);
FX_BOOL FXJSE_Value_IsInteger (FXJSE_HVALUE hValue);
FX_BOOL FXJSE_Value_IsObject (FXJSE_HVALUE hValue);
FX_BOOL FXJSE_Value_IsArray (FXJSE_HVALUE hValue);
FX_BOOL FXJSE_Value_IsFunction (FXJSE_HVALUE hValue);
FX_BOOL FXJSE_Value_IsDate (FXJSE_HVALUE hValue);
FX_BOOL FXJSE_Value_ToBoolean (FXJSE_HVALUE hValue);
FX_FLOAT FXJSE_Value_ToFloat (FXJSE_HVALUE hValue);
FXJSE_DOUBLE FXJSE_Value_ToDouble (FXJSE_HVALUE hValue);
FX_INT32 FXJSE_Value_ToInteger (FXJSE_HVALUE hValue);
void FXJSE_Value_ToUTF8String (FXJSE_HVALUE hValue, CFX_ByteString& szStrOutput);
FX_LPVOID FXJSE_Value_ToObject (FXJSE_HVALUE hValue, FXJSE_HCLASS hClass);
void FXJSE_Value_SetUndefined (FXJSE_HVALUE hValue);
void FXJSE_Value_SetNull (FXJSE_HVALUE hValue);
void FXJSE_Value_SetBoolean (FXJSE_HVALUE hValue, FX_BOOL bBoolean);
void FXJSE_Value_SetUTF8String (FXJSE_HVALUE hValue, FX_BSTR szString);
void FXJSE_Value_SetInteger (FXJSE_HVALUE hValue, FX_INT32 nInteger);
void FXJSE_Value_SetFloat (FXJSE_HVALUE hValue, FX_FLOAT fFloat);
void FXJSE_Value_SetDouble (FXJSE_HVALUE hValue, FXJSE_DOUBLE dDouble);
void FXJSE_Value_SetObject (FXJSE_HVALUE hValue, FX_LPVOID lpObject, FXJSE_HCLASS hClass);
void FXJSE_Value_SetArray (FXJSE_HVALUE hValue, FX_UINT32 uValueCount, FXJSE_HVALUE* rgValues);
void FXJSE_Value_SetDate (FXJSE_HVALUE hValue, FXJSE_DOUBLE dDouble);
void FXJSE_Value_Set (FXJSE_HVALUE hValue, FXJSE_HVALUE hOriginalValue);
FX_BOOL FXJSE_Value_GetObjectProp (FXJSE_HVALUE hValue, FX_BSTR szPropName, FXJSE_HVALUE hPropValue);
FX_BOOL FXJSE_Value_SetObjectProp (FXJSE_HVALUE hValue, FX_BSTR szPropName, FXJSE_HVALUE hPropValue);
FX_BOOL FXJSE_Value_GetObjectPropByIdx (FXJSE_HVALUE hValue, FX_UINT32 uPropIdx, FXJSE_HVALUE hPropValue);
FX_BOOL FXJSE_Value_SetObjectPropByIdx (FXJSE_HVALUE hValue, FX_UINT32 uPropIdx, FXJSE_HVALUE hPropValue);
FX_BOOL FXJSE_Value_DeleteObjectProp (FXJSE_HVALUE hValue, FX_BSTR szPropName);
FX_BOOL FXJSE_Value_ObjectHasOwnProp (FXJSE_HVALUE hValue, FX_BSTR szPropName, FX_BOOL bUseTypeGetter);
FX_BOOL FXJSE_Value_SetObjectOwnProp (FXJSE_HVALUE hValue, FX_BSTR szPropName, FXJSE_HVALUE hPropValue);
FX_BOOL FXJSE_Value_CallFunction (FXJSE_HVALUE hFunction, FXJSE_HVALUE hThis, FXJSE_HVALUE hRetValue, FX_UINT32 nArgCount, FXJSE_HVALUE* lpArgs);
FX_BOOL FXJSE_Value_SetFunctionBind (FXJSE_HVALUE hValue, FXJSE_HVALUE hOldFunction, FXJSE_HVALUE hNewThis);
FX_BOOL FXJSE_ExecuteScript(FXJSE_HCONTEXT hContext, FX_LPCSTR szScript, FXJSE_HVALUE hRetValue, FXJSE_HVALUE hNewThisObject = NULL);
void FXJSE_ThrowMessage(FX_BSTR utf8Name, FX_BSTR utf8Message);
FX_BOOL FXJSE_ReturnValue_GetMessage(FXJSE_HVALUE hRetValue, CFX_ByteString& utf8Name, CFX_ByteString& utf8Message);
FX_BOOL FXJSE_ReturnValue_GetLineInfo(FXJSE_HVALUE hRetValue, FX_INT32& nLine, FX_INT32& nCol);
#endif
|