]> gitweb.factorcode.org Git - factor.git/blob - unmaintained/javascriptcore/ffi/ffi.factor
377a0d400692c009825f4bb3b27b27da2c71b018
[factor.git] / unmaintained / javascriptcore / ffi / ffi.factor
1 ! Copyright (C) 2010 Doug Coleman.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: alien alien.c-types alien.libraries alien.syntax
4 classes.struct combinators io.encodings.utf16n
5 io.encodings.utf8 kernel system ;
6 IN: javascriptcore.ffi
7
8 <<
9 "javascriptcore" {
10     { [ os macosx? ] [
11         "/System/Library/Frameworks/JavaScriptCore.framework/Versions/Current/JavaScriptCore" cdecl add-library
12     ] }
13     ! { [ os windows? ]  [ "javascriptcore.dll" ] }
14     ! { [ os unix? ]  [ "libsqlite3.so" ] }
15     [ drop ]
16 } cond
17 >>
18
19 LIBRARY: javascriptcore
20
21 TYPEDEF: void* JSContextGroupRef
22 TYPEDEF: void* JSContextRef
23 TYPEDEF: void* JSGlobalContextRef
24 TYPEDEF: void* JSStringRef
25 TYPEDEF: void* JSClassRef
26 TYPEDEF: void* JSPropertyNameArrayRef
27 TYPEDEF: void* JSPropertyNameAccumulatorRef
28 TYPEDEF: void* JSValueRef
29 TYPEDEF: void* JSObjectRef
30 TYPEDEF: void* JSObjectInitializeCallback
31 TYPEDEF: void* JSObjectFinalizeCallback
32 TYPEDEF: void* JSObjectHasPropertyCallback
33 TYPEDEF: void* JSObjectGetPropertyCallback
34 TYPEDEF: void* JSObjectSetPropertyCallback
35 TYPEDEF: void* JSObjectDeletePropertyCallback
36 TYPEDEF: void* JSObjectGetPropertyNamesCallback
37 TYPEDEF: void* JSObjectCallAsFunctionCallback
38 TYPEDEF: void* JSObjectCallAsConstructorCallback
39 TYPEDEF: void* JSObjectHasInstanceCallback
40 TYPEDEF: void* JSObjectConvertToTypeCallback
41 TYPEDEF: uint unsigned
42 TYPEDEF: ushort JSChar
43
44 ENUM: JSPropertyAttributes
45     { kJSPropertyAttributeNone       0 }
46     { kJSPropertyAttributeReadOnly   2 }
47     { kJSPropertyAttributeDontEnum   4 }
48     { kJSPropertyAttributeDontDelete 8 } ;
49
50 ENUM: JSClassAttributes
51     { kJSClassAttributeNone 0 }
52     { kJSClassAttributeNoAutomaticPrototype 2 } ;
53
54 ENUM: JSType
55     kJSTypeUndefined,
56     kJSTypeNull,
57     kJSTypeBoolean,
58     kJSTypeNumber,
59     kJSTypeString,
60     kJSTypeObject ;
61
62 STRUCT: JSStaticValue
63     { name c-string }
64     { getProperty JSObjectGetPropertyCallback }
65     { setProperty JSObjectSetPropertyCallback }
66     { attributes JSPropertyAttributes } ;
67
68 STRUCT: JSStaticFunction
69     { name c-string }
70     { callAsFunction JSObjectCallAsFunctionCallback } ;
71
72 STRUCT: JSClassDefinition
73     { version int }
74     { attributes JSClassAttributes }
75     { className c-string }
76     { parentClass JSClassRef }
77     { staticValues JSStaticValue* }
78     { staticFunctions JSStaticFunction* }
79     { initialize JSObjectInitializeCallback }
80     { finalize JSObjectFinalizeCallback }
81     { hasProperty JSObjectHasPropertyCallback }
82     { getProperty JSObjectGetPropertyCallback }
83     { setProperty JSObjectSetPropertyCallback }
84     { deleteProperty JSObjectDeletePropertyCallback }
85     { getPropertyNames JSObjectGetPropertyNamesCallback }
86     { callAsFunction JSObjectCallAsFunctionCallback }
87     { callAsConstructor JSObjectCallAsConstructorCallback }
88     { hasInstance JSObjectHasInstanceCallback }
89     { convertToType JSObjectConvertToTypeCallback } ;
90
91 ALIAS: kJSClassDefinitionEmpty JSClassDefinition
92
93 FUNCTION: JSValueRef JSEvaluateScript (
94     JSContextRef ctx,
95     JSStringRef script,
96     JSObjectRef thisObject,
97     JSStringRef sourceURL,
98     int startingLineNumber,
99     JSValueRef* exception ) ;
100
101 FUNCTION: bool JSCheckScriptSyntax (
102     JSContextRef ctx,
103     JSStringRef script,
104     JSStringRef sourceURL,
105     int startingLineNumber,
106     JSValueRef* exception ) ;
107
108 FUNCTION: void JSGarbageCollect
109     ( JSContextRef ctx ) ;
110
111 FUNCTION: JSContextGroupRef JSContextGroupCreate
112     ( ) ;
113
114 FUNCTION: JSContextGroupRef JSContextGroupRetain
115     ( JSContextGroupRef group ) ;
116
117 FUNCTION: void JSContextGroupRelease
118     ( JSContextGroupRef group ) ;
119
120 FUNCTION: JSGlobalContextRef JSGlobalContextCreate
121     ( JSClassRef globalObjectClass ) ; 
122
123 FUNCTION: JSGlobalContextRef JSGlobalContextCreateInGroup (
124     JSContextGroupRef group,
125     JSClassRef globalObjectClass ) ;
126
127 FUNCTION: JSGlobalContextRef JSGlobalContextRetain
128     ( JSGlobalContextRef ctx ) ;
129
130 FUNCTION: void JSGlobalContextRelease
131     ( JSGlobalContextRef ctx ) ;
132
133 FUNCTION: JSObjectRef JSContextGetGlobalObject
134     ( JSContextRef ctx ) ;
135
136 FUNCTION: JSContextGroupRef JSContextGetGroup
137     ( JSContextRef ctx ) ;
138
139 FUNCTION: JSClassRef JSClassCreate
140     ( JSClassDefinition* definition ) ;
141
142 FUNCTION: JSClassRef JSClassRetain
143     ( JSClassRef jsClass ) ;
144
145 FUNCTION: void JSClassRelease
146     ( JSClassRef jsClass ) ;
147
148 FUNCTION: JSObjectRef JSObjectMake
149     ( JSContextRef ctx,
150       JSClassRef jsClass, void* data ) ;
151
152 FUNCTION: JSObjectRef JSObjectMakeFunctionWithCallback ( JSContextRef ctx, JSStringRef name, JSObjectCallAsFunctionCallback callAsFunction ) ;
153
154 FUNCTION: JSObjectRef JSObjectMakeConstructor ( JSContextRef ctx, JSClassRef jsClass, JSObjectCallAsConstructorCallback callAsConstructor ) ;
155
156 FUNCTION: JSObjectRef JSObjectMakeArray ( JSContextRef ctx, size_t argumentCount, JSValueRef arguments[], JSValueRef* exception ) ;
157
158 FUNCTION: JSObjectRef JSObjectMakeDate ( JSContextRef ctx, size_t argumentCount, JSValueRef arguments[], JSValueRef* exception ) ;
159
160 FUNCTION: JSObjectRef JSObjectMakeError ( JSContextRef ctx, size_t argumentCount, JSValueRef arguments[], JSValueRef* exception ) ;
161
162 FUNCTION: JSObjectRef JSObjectMakeRegExp ( JSContextRef ctx, size_t argumentCount, JSValueRef arguments[], JSValueRef* exception ) ;
163
164 FUNCTION: JSObjectRef JSObjectMakeFunction ( JSContextRef ctx, JSStringRef name, unsigned parameterCount, JSStringRef parameterNames[], JSStringRef body, JSStringRef sourceURL, int startingLineNumber, JSValueRef* exception ) ;
165
166 FUNCTION: JSValueRef JSObjectGetPrototype ( JSContextRef ctx, JSObjectRef object ) ;
167
168 FUNCTION: void JSObjectSetPrototype ( JSContextRef ctx, JSObjectRef object, JSValueRef value ) ;
169
170 FUNCTION: bool JSObjectHasProperty ( JSContextRef ctx, JSObjectRef object, JSStringRef propertyName ) ;
171
172 FUNCTION: JSValueRef JSObjectGetProperty ( JSContextRef ctx, JSObjectRef object, JSStringRef propertyName, JSValueRef* exception ) ;
173
174 FUNCTION: void JSObjectSetProperty ( JSContextRef ctx, JSObjectRef object, JSStringRef propertyName, JSValueRef value, JSPropertyAttributes attributes, JSValueRef* exception ) ;
175
176 FUNCTION: bool JSObjectDeleteProperty ( JSContextRef ctx, JSObjectRef object, JSStringRef propertyName, JSValueRef* exception ) ;
177
178 FUNCTION: JSValueRef JSObjectGetPropertyAtIndex ( JSContextRef ctx, JSObjectRef object, unsigned propertyIndex, JSValueRef* exception ) ;
179
180 FUNCTION: void JSObjectSetPropertyAtIndex ( JSContextRef ctx, JSObjectRef object, unsigned propertyIndex, JSValueRef value, JSValueRef* exception ) ;
181
182 FUNCTION: void* JSObjectGetPrivate ( JSObjectRef object ) ;
183
184 FUNCTION: bool JSObjectSetPrivate ( JSObjectRef object, void* data ) ;
185
186 FUNCTION: bool JSObjectIsFunction ( JSContextRef ctx, JSObjectRef object ) ;
187
188 FUNCTION: JSValueRef JSObjectCallAsFunction ( JSContextRef ctx, JSObjectRef object, JSObjectRef thisObject, size_t argumentCount, JSValueRef arguments[], JSValueRef* exception ) ;
189
190 FUNCTION: bool JSObjectIsConstructor ( JSContextRef ctx, JSObjectRef object ) ;
191
192 FUNCTION: JSObjectRef JSObjectCallAsConstructor ( JSContextRef ctx, JSObjectRef object, size_t argumentCount, JSValueRef arguments[], JSValueRef* exception ) ;
193
194 FUNCTION: JSPropertyNameArrayRef JSObjectCopyPropertyNames ( JSContextRef ctx, JSObjectRef object ) ;
195
196 FUNCTION: JSPropertyNameArrayRef JSPropertyNameArrayRetain ( JSPropertyNameArrayRef array ) ;
197
198 FUNCTION: void JSPropertyNameArrayRelease ( JSPropertyNameArrayRef array ) ;
199
200 FUNCTION: size_t JSPropertyNameArrayGetCount ( JSPropertyNameArrayRef array ) ;
201
202 FUNCTION: JSStringRef JSPropertyNameArrayGetNameAtIndex ( JSPropertyNameArrayRef array, size_t index ) ;
203
204 FUNCTION: void JSPropertyNameAccumulatorAddName ( JSPropertyNameAccumulatorRef accumulator, JSStringRef propertyName ) ;
205
206 FUNCTION: JSStringRef JSStringCreateWithCharacters ( JSChar* chars, size_t numChars ) ;
207
208 FUNCTION: JSStringRef JSStringCreateWithUTF8CString ( c-string string ) ;
209
210 FUNCTION: JSStringRef JSStringRetain ( JSStringRef string ) ;
211
212 FUNCTION: void JSStringRelease ( JSStringRef string ) ;
213
214 FUNCTION: size_t JSStringGetLength ( JSStringRef string ) ;
215
216 FUNCTION: JSChar* JSStringGetCharactersPtr ( JSStringRef string ) ;
217
218 FUNCTION: size_t JSStringGetMaximumUTF8CStringSize ( JSStringRef string ) ;
219
220 FUNCTION: size_t JSStringGetUTF8CString ( JSStringRef string, char* buffer, size_t bufferSize ) ;
221
222 FUNCTION: bool JSStringIsEqual ( JSStringRef a, JSStringRef b ) ;
223
224 FUNCTION: bool JSStringIsEqualToUTF8CString ( JSStringRef a, char* b ) ;
225
226 FUNCTION: JSType JSValueGetType ( JSContextRef ctx, JSValueRef value ) ;
227
228 FUNCTION: bool JSValueIsUndefined ( JSContextRef ctx, JSValueRef value ) ;
229
230 FUNCTION: bool JSValueIsNull ( JSContextRef ctx, JSValueRef value ) ;
231
232 FUNCTION: bool JSValueIsBoolean ( JSContextRef ctx, JSValueRef value ) ;
233
234 FUNCTION: bool JSValueIsNumber ( JSContextRef ctx, JSValueRef value ) ;
235
236 FUNCTION: bool JSValueIsString ( JSContextRef ctx, JSValueRef value ) ;
237
238 FUNCTION: bool JSValueIsObject ( JSContextRef ctx, JSValueRef value ) ;
239
240 FUNCTION: bool JSValueIsObjectOfClass ( JSContextRef ctx, JSValueRef value, JSClassRef jsClass ) ;
241
242 FUNCTION: bool JSValueIsEqual ( JSContextRef ctx, JSValueRef a, JSValueRef b, JSValueRef* exception ) ;
243
244 FUNCTION: bool JSValueIsStrictEqual ( JSContextRef ctx, JSValueRef a, JSValueRef b ) ;
245
246 FUNCTION: bool JSValueIsInstanceOfConstructor ( JSContextRef ctx, JSValueRef value, JSObjectRef constructor, JSValueRef* exception ) ;
247
248 FUNCTION: JSValueRef JSValueMakeUndefined ( JSContextRef ctx ) ;
249
250 FUNCTION: JSValueRef JSValueMakeNull ( JSContextRef ctx ) ;
251
252 FUNCTION: JSValueRef JSValueMakeBoolean ( JSContextRef ctx, bool boolean ) ;
253
254 FUNCTION: JSValueRef JSValueMakeNumber ( JSContextRef ctx, double number ) ;
255
256 FUNCTION: JSValueRef JSValueMakeString ( JSContextRef ctx, JSStringRef string ) ;
257
258 FUNCTION: bool JSValueToBoolean ( JSContextRef ctx, JSValueRef value ) ;
259
260 FUNCTION: double JSValueToNumber ( JSContextRef ctx, JSValueRef value, JSValueRef* exception ) ;
261
262 FUNCTION: JSStringRef JSValueToStringCopy ( JSContextRef ctx, JSValueRef value, JSValueRef* exception ) ;
263
264 FUNCTION: JSObjectRef JSValueToObject ( JSContextRef ctx, JSValueRef value, JSValueRef* exception ) ;
265
266 FUNCTION: void JSValueProtect ( JSContextRef ctx, JSValueRef value ) ;
267
268 FUNCTION: void JSValueUnprotect ( JSContextRef ctx, JSValueRef value ) ;
269