Rubber stamped by hyatt.
[WebKit-https.git] / JavaScriptGlue / JavaScriptGlue.h
1 #ifndef __JAVASCRIPTGLUE__
2 #define __JAVASCRIPTGLUE__
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 UInt32 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();
81 void JSUnlockInterpreter();
82
83 #ifdef __cplusplus
84 }
85 #endif
86
87 #endif