diff --git a/extra/javascriptcore/core-foundation/authors.txt b/extra/javascriptcore/core-foundation/authors.txt new file mode 100644 index 0000000000..7c1b2f2279 --- /dev/null +++ b/extra/javascriptcore/core-foundation/authors.txt @@ -0,0 +1 @@ +Doug Coleman diff --git a/extra/javascriptcore/core-foundation/core-foundation.factor b/extra/javascriptcore/core-foundation/core-foundation.factor new file mode 100644 index 0000000000..9dfc93b101 --- /dev/null +++ b/extra/javascriptcore/core-foundation/core-foundation.factor @@ -0,0 +1,11 @@ +! Copyright (C) 2010 Doug Coleman. +! See http://factorcode.org/license.txt for BSD license. +USING: alien.syntax core-foundation core-foundation.strings +javascriptcore.ffi ; +IN: javascriptcore.core-foundation + +FUNCTION: JSStringRef JSStringCreateWithCFString ( CFStringRef string ) ; + +FUNCTION: CFStringRef JSStringCopyCFString ( CFAllocatorRef alloc, JSStringRef string ) ; + + diff --git a/extra/javascriptcore/ffi/authors.txt b/extra/javascriptcore/ffi/authors.txt new file mode 100644 index 0000000000..7c1b2f2279 --- /dev/null +++ b/extra/javascriptcore/ffi/authors.txt @@ -0,0 +1 @@ +Doug Coleman diff --git a/extra/javascriptcore/ffi/ffi.factor b/extra/javascriptcore/ffi/ffi.factor new file mode 100644 index 0000000000..b0458d3cf6 --- /dev/null +++ b/extra/javascriptcore/ffi/ffi.factor @@ -0,0 +1,256 @@ +! Copyright (C) 2010 Doug Coleman. +! See http://factorcode.org/license.txt for BSD license. +USING: alien.c-types alien.syntax classes.struct ; +IN: javascriptcore.ffi + +TYPEDEF: void* JSContextGroupRef +TYPEDEF: void* JSContextRef +TYPEDEF: void* JSGlobalContextRef +TYPEDEF: void* JSStringRef +TYPEDEF: void* JSClassRef +TYPEDEF: void* JSPropertyNameArrayRef +TYPEDEF: void* JSPropertyNameAccumulatorRef +TYPEDEF: void* JSValueRef +TYPEDEF: void* JSObjectRef +TYPEDEF: void* JSObjectInitializeCallback +TYPEDEF: void* JSObjectFinalizeCallback +TYPEDEF: void* JSObjectHasPropertyCallback +TYPEDEF: void* JSObjectGetPropertyCallback +TYPEDEF: void* JSObjectSetPropertyCallback +TYPEDEF: void* JSObjectDeletePropertyCallback +TYPEDEF: void* JSObjectGetPropertyNamesCallback +TYPEDEF: void* JSObjectCallAsFunctionCallback +TYPEDEF: void* JSObjectCallAsConstructorCallback +TYPEDEF: void* JSObjectHasInstanceCallback +TYPEDEF: void* JSObjectConvertToTypeCallback +TYPEDEF: uint unsigned + +C-ENUM: JSPropertyAttributes + { kJSPropertyAttributeNone 0 } + { kJSPropertyAttributeReadOnly 2 } + { kJSPropertyAttributeDontEnum 4 } + { kJSPropertyAttributeDontDelete 8 } ; + +C-ENUM: JSClassAttributes + { kJSClassAttributeNone 0 } + { kJSClassAttributeNoAutomaticPrototype 2 } ; + +C-ENUM: JSType + kJSTypeUndefined, + kJSTypeNull, + kJSTypeBoolean, + kJSTypeNumber, + kJSTypeString, + kJSTypeObject ; + +STRUCT: JSStaticValue + { name c-string } + { getProperty JSObjectGetPropertyCallback } + { setProperty JSObjectSetPropertyCallback } + { attributes JSPropertyAttributes } ; + +STRUCT: JSStaticFunction + { name c-string } + { callAsFunction JSObjectCallAsFunctionCallback } ; + +STRUCT: JSClassDefinition + { version int } + { attributes JSClassAttributes } + { className c-string } + { parentClass JSClassRef } + { staticValues JSStaticValue* } + { staticFunctions JSStaticFunction* } + { initialize JSObjectInitializeCallback } + { finalize JSObjectFinalizeCallback } + { hasProperty JSObjectHasPropertyCallback } + { getProperty JSObjectGetPropertyCallback } + { setProperty JSObjectSetPropertyCallback } + { deleteProperty JSObjectDeletePropertyCallback } + { getPropertyNames JSObjectGetPropertyNamesCallback } + { callAsFunction JSObjectCallAsFunctionCallback } + { callAsConstructor JSObjectCallAsConstructorCallback } + { hasInstance JSObjectHasInstanceCallback } + { convertToType JSObjectConvertToTypeCallback } ; + +ALIAS: kJSClassDefinitionEmpty JSClassDefinition + +FUNCTION: JSValueRef JSEvaluateScript ( + JSContextRef ctx, + JSStringRef script, + JSObjectRef thisObject, + JSStringRef sourceURL, + int startingLineNumber, + JSValueRef* exception ) ; + +FUNCTION: bool JSCheckScriptSyntax ( + JSContextRef ctx, + JSStringRef script, + JSStringRef sourceURL, + int startingLineNumber, + JSValueRef* exception ) ; + +FUNCTION: void JSGarbageCollect + ( JSContextRef ctx ) ; + +FUNCTION: JSContextGroupRef JSContextGroupCreate + ( ) ; + +FUNCTION: JSContextGroupRef JSContextGroupRetain + ( JSContextGroupRef group ) ; + +FUNCTION: void JSContextGroupRelease + ( JSContextGroupRef group ) ; + +FUNCTION: JSGlobalContextRef JSGlobalContextCreate + ( JSClassRef globalObjectClass ) ; + +FUNCTION: JSGlobalContextRef JSGlobalContextCreateInGroup ( + JSContextGroupRef group, + JSClassRef globalObjectClass ) ; + +FUNCTION: JSGlobalContextRef JSGlobalContextRetain + ( JSGlobalContextRef ctx ) ; + +FUNCTION: void JSGlobalContextRelease + ( JSGlobalContextRef ctx ) ; + +FUNCTION: JSObjectRef JSContextGetGlobalObject + ( JSContextRef ctx ) ; + +FUNCTION: JSContextGroupRef JSContextGetGroup + ( JSContextRef ctx ) ; + +FUNCTION: JSClassRef JSClassCreate + ( JSClassDefinition* definition ) ; + +FUNCTION: JSClassRef JSClassRetain + ( JSClassRef jsClass ) ; + +FUNCTION: void JSClassRelease + ( JSClassRef jsClass ) ; + +FUNCTION: JSObjectRef JSObjectMake + ( JSContextRef ctx, + JSClassRef jsClass, void* data ) ; + +FUNCTION: JSObjectRef JSObjectMakeFunctionWithCallback ( JSContextRef ctx, JSStringRef name, JSObjectCallAsFunctionCallback callAsFunction ) ; + +FUNCTION: JSObjectRef JSObjectMakeConstructor ( JSContextRef ctx, JSClassRef jsClass, JSObjectCallAsConstructorCallback callAsConstructor ) ; + +FUNCTION: JSObjectRef JSObjectMakeArray ( JSContextRef ctx, size_t argumentCount, JSValueRef arguments[], JSValueRef* exception ) ; + +FUNCTION: JSObjectRef JSObjectMakeDate ( JSContextRef ctx, size_t argumentCount, JSValueRef arguments[], JSValueRef* exception ) ; + +FUNCTION: JSObjectRef JSObjectMakeError ( JSContextRef ctx, size_t argumentCount, JSValueRef arguments[], JSValueRef* exception ) ; + +FUNCTION: JSObjectRef JSObjectMakeRegExp ( JSContextRef ctx, size_t argumentCount, JSValueRef arguments[], JSValueRef* exception ) ; + +FUNCTION: JSObjectRef JSObjectMakeFunction ( JSContextRef ctx, JSStringRef name, unsigned parameterCount, JSStringRef parameterNames[], JSStringRef body, JSStringRef sourceURL, int startingLineNumber, JSValueRef* exception ) ; + +FUNCTION: JSValueRef JSObjectGetPrototype ( JSContextRef ctx, JSObjectRef object ) ; + +FUNCTION: void JSObjectSetPrototype ( JSContextRef ctx, JSObjectRef object, JSValueRef value ) ; + +FUNCTION: bool JSObjectHasProperty ( JSContextRef ctx, JSObjectRef object, JSStringRef propertyName ) ; + +FUNCTION: JSValueRef JSObjectGetProperty ( JSContextRef ctx, JSObjectRef object, JSStringRef propertyName, JSValueRef* exception ) ; + +FUNCTION: void JSObjectSetProperty ( JSContextRef ctx, JSObjectRef object, JSStringRef propertyName, JSValueRef value, JSPropertyAttributes attributes, JSValueRef* exception ) ; + +FUNCTION: bool JSObjectDeleteProperty ( JSContextRef ctx, JSObjectRef object, JSStringRef propertyName, JSValueRef* exception ) ; + +FUNCTION: JSValueRef JSObjectGetPropertyAtIndex ( JSContextRef ctx, JSObjectRef object, unsigned propertyIndex, JSValueRef* exception ) ; + +FUNCTION: void JSObjectSetPropertyAtIndex ( JSContextRef ctx, JSObjectRef object, unsigned propertyIndex, JSValueRef value, JSValueRef* exception ) ; + +FUNCTION: void* JSObjectGetPrivate ( JSObjectRef object ) ; + +FUNCTION: bool JSObjectSetPrivate ( JSObjectRef object, void* data ) ; + +FUNCTION: bool JSObjectIsFunction ( JSContextRef ctx, JSObjectRef object ) ; + +FUNCTION: JSValueRef JSObjectCallAsFunction ( JSContextRef ctx, JSObjectRef object, JSObjectRef thisObject, size_t argumentCount, JSValueRef arguments[], JSValueRef* exception ) ; + +FUNCTION: bool JSObjectIsConstructor ( JSContextRef ctx, JSObjectRef object ) ; + +FUNCTION: JSObjectRef JSObjectCallAsConstructor ( JSContextRef ctx, JSObjectRef object, size_t argumentCount, JSValueRef arguments[], JSValueRef* exception ) ; + +FUNCTION: JSPropertyNameArrayRef JSObjectCopyPropertyNames ( JSContextRef ctx, JSObjectRef object ) ; + +FUNCTION: JSPropertyNameArrayRef JSPropertyNameArrayRetain ( JSPropertyNameArrayRef array ) ; + +FUNCTION: void JSPropertyNameArrayRelease ( JSPropertyNameArrayRef array ) ; + +FUNCTION: size_t JSPropertyNameArrayGetCount ( JSPropertyNameArrayRef array ) ; + +FUNCTION: JSStringRef JSPropertyNameArrayGetNameAtIndex ( JSPropertyNameArrayRef array, size_t index ) ; + +FUNCTION: void JSPropertyNameAccumulatorAddName ( JSPropertyNameAccumulatorRef accumulator, JSStringRef propertyName ) ; + +! char[utf16n] for strings +TYPEDEF: ushort JSChar + +FUNCTION: JSStringRef JSStringCreateWithCharacters ( JSChar* chars, size_t numChars ) ; + +FUNCTION: JSStringRef JSStringCreateWithUTF8CString ( char* string ) ; + +FUNCTION: JSStringRef JSStringRetain ( JSStringRef string ) ; + +FUNCTION: void JSStringRelease ( JSStringRef string ) ; + +FUNCTION: size_t JSStringGetLength ( JSStringRef string ) ; + +FUNCTION: JSChar* JSStringGetCharactersPtr ( JSStringRef string ) ; + +FUNCTION: size_t JSStringGetMaximumUTF8CStringSize ( JSStringRef string ) ; + +FUNCTION: size_t JSStringGetUTF8CString ( JSStringRef string, char* buffer, size_t bufferSize ) ; + +FUNCTION: bool JSStringIsEqual ( JSStringRef a, JSStringRef b ) ; + +FUNCTION: bool JSStringIsEqualToUTF8CString ( JSStringRef a, char* b ) ; + +FUNCTION: JSType JSValueGetType ( JSContextRef ctx, JSValueRef value ) ; + +FUNCTION: bool JSValueIsUndefined ( JSContextRef ctx, JSValueRef value ) ; + +FUNCTION: bool JSValueIsNull ( JSContextRef ctx, JSValueRef value ) ; + +FUNCTION: bool JSValueIsBoolean ( JSContextRef ctx, JSValueRef value ) ; + +FUNCTION: bool JSValueIsNumber ( JSContextRef ctx, JSValueRef value ) ; + +FUNCTION: bool JSValueIsString ( JSContextRef ctx, JSValueRef value ) ; + +FUNCTION: bool JSValueIsObject ( JSContextRef ctx, JSValueRef value ) ; + +FUNCTION: bool JSValueIsObjectOfClass ( JSContextRef ctx, JSValueRef value, JSClassRef jsClass ) ; + +FUNCTION: bool JSValueIsEqual ( JSContextRef ctx, JSValueRef a, JSValueRef b, JSValueRef* exception ) ; + +FUNCTION: bool JSValueIsStrictEqual ( JSContextRef ctx, JSValueRef a, JSValueRef b ) ; + +FUNCTION: bool JSValueIsInstanceOfConstructor ( JSContextRef ctx, JSValueRef value, JSObjectRef constructor, JSValueRef* exception ) ; + +FUNCTION: JSValueRef JSValueMakeUndefined ( JSContextRef ctx ) ; + +FUNCTION: JSValueRef JSValueMakeNull ( JSContextRef ctx ) ; + +FUNCTION: JSValueRef JSValueMakeBoolean ( JSContextRef ctx, bool boolean ) ; + +FUNCTION: JSValueRef JSValueMakeNumber ( JSContextRef ctx, double number ) ; + +FUNCTION: JSValueRef JSValueMakeString ( JSContextRef ctx, JSStringRef string ) ; + +FUNCTION: bool JSValueToBoolean ( JSContextRef ctx, JSValueRef value ) ; + +FUNCTION: double JSValueToNumber ( JSContextRef ctx, JSValueRef value, JSValueRef* exception ) ; + +FUNCTION: JSStringRef JSValueToStringCopy ( JSContextRef ctx, JSValueRef value, JSValueRef* exception ) ; + +FUNCTION: JSObjectRef JSValueToObject ( JSContextRef ctx, JSValueRef value, JSValueRef* exception ) ; + +FUNCTION: void JSValueProtect ( JSContextRef ctx, JSValueRef value ) ; + +FUNCTION: void JSValueUnprotect ( JSContextRef ctx, JSValueRef value ) ; +