Reviewed by Eric.
[WebKit-https.git] / JavaScriptGlue / JavaScriptGlue.h
1 #ifndef JAVASCRIPTGLUE_H
2 #define JAVASCRIPTGLUE_H
3
4 /*
5     JavaScriptGlue.h
6 */
7
8 #ifndef __CORESERVICES__
9 #include <CoreServices/CoreServices.h>
10 #endif
11
12 #ifdef __cplusplus
13 extern "C" {
14 #endif
15
16 /* typedefs/structs */
17 typedef enum {
18     kJSFlagNone = 0,
19     kJSFlagDebug = 1 << 0,
20     kJSFlagConvertAssociativeArray = 1 << 1 /* associative arrays will be converted to dictionaries */
21 } JSFlags;
22
23 typedef struct OpaqueJSTypeRef *JSTypeRef;
24 typedef JSTypeRef JSObjectRef;
25 typedef JSTypeRef JSRunRef;
26 typedef CFTypeID JSTypeID;
27
28 typedef void (*JSObjectDisposeProcPtr)(void *data);
29 typedef CFArrayRef (*JSObjectCopyPropertyNamesProcPtr)(void *data);
30 typedef JSObjectRef (*JSObjectCopyPropertyProcPtr)(void *data, CFStringRef propertyName);
31 typedef void (*JSObjectSetPropertyProcPtr)(void *data, CFStringRef propertyName, JSObjectRef jsValue);
32 typedef JSObjectRef (*JSObjectCallFunctionProcPtr)(void *data, JSObjectRef thisObj, CFArrayRef args);
33 typedef CFTypeRef (*JSObjectCopyCFValueProcPtr)(void *data);
34 typedef UInt8 (*JSObjectEqualProcPtr)(void *data1, void *data2);
35
36 struct JSObjectCallBacks {
37     JSObjectDisposeProcPtr dispose;
38     JSObjectEqualProcPtr equal;
39     JSObjectCopyCFValueProcPtr copyCFValue;
40     JSObjectCopyPropertyProcPtr copyProperty;
41     JSObjectSetPropertyProcPtr setProperty;
42     JSObjectCallFunctionProcPtr callFunction;
43     JSObjectCopyPropertyNamesProcPtr copyPropertyNames;
44 };
45 typedef struct JSObjectCallBacks JSObjectCallBacks, *JSObjectCallBacksPtr;
46
47 void JSSetCFNull(CFTypeRef nullRef);
48 CFTypeRef JSGetCFNull(void);
49
50 JSTypeRef JSRetain(JSTypeRef ref);
51 void JSRelease(JSTypeRef ref);
52 JSTypeID JSGetTypeID(JSTypeRef ref);
53 CFIndex JSGetRetainCount(JSTypeRef ref);
54 CFStringRef JSCopyDescription(JSTypeRef ref);
55 UInt8 JSEqual(JSTypeRef ref1, JSTypeRef ref2);
56
57 JSObjectRef JSObjectCreate(void *data, JSObjectCallBacksPtr callBacks);
58 JSObjectRef JSObjectCreateWithCFType(CFTypeRef inRef);
59 CFTypeRef JSObjectCopyCFValue(JSObjectRef ref);
60 void *JSObjectGetData(JSObjectRef ref);
61
62 CFArrayRef JSObjectCopyPropertyNames(JSObjectRef ref);
63 JSObjectRef JSObjectCopyProperty(JSObjectRef ref, CFStringRef propertyName);
64 void JSObjectSetProperty(JSObjectRef ref, CFStringRef propertyName, JSObjectRef value);
65 JSObjectRef JSObjectCallFunction(JSObjectRef ref, JSObjectRef thisObj, CFArrayRef args);
66
67 JSRunRef JSRunCreate(CFStringRef jsSource, JSFlags inFlags);
68 CFStringRef JSRunCopySource(JSRunRef ref);
69 JSObjectRef JSRunCopyGlobalObject(JSRunRef ref);
70 JSObjectRef JSRunEvaluate(JSRunRef ref);
71 bool JSRunCheckSyntax(JSRunRef ref);
72
73 void JSCollect(void);
74
75 void JSTypeGetCFArrayCallBacks(CFArrayCallBacks *outCallBacks);
76
77 CFMutableArrayRef JSCreateCFArrayFromJSArray(CFArrayRef array);
78 CFMutableArrayRef JSCreateJSArrayFromCFArray(CFArrayRef array);
79
80 void JSLockInterpreter(void);
81 void JSUnlockInterpreter(void);
82
83 #ifdef __cplusplus
84 }
85 #endif
86
87 #endif