Commits

Ronald Oussoren  committed f47e6c0

test updates

  • Participants
  • Parent commits 96e066c

Comments (0)

Files changed (20)

File pyobjc-core/Lib/objc/_lazyimport.py

                 else:
                     magic = False
 
-                #try:
                 return objc._loadConstant(name, tp, magic)
-                #except Exception as exc:
-                #    print "LOAD %r %r %r -> raise %s"%(name, tp, magic, exc)
-                #    raise
 
         if self.__enummap:
             m = re.search(r"\$%s@([^$]*)\$"%(name,), self.__enummap)

File pyobjc-core/Modules/objc/corefoundation.m

 PyObjC_TryCreateCFProxy(NSObject* value)
 {
     PyObject *rval = NULL;
+
     if (gTypeid2class != NULL) {
         PyObject* cfid;
         PyTypeObject* tp;
     return rval;
 }
 
+#ifdef PyObjC_ENABLE_CFTYPE_CATEGORY
 /* Implementation for: -(PyObject*)__pyobjc_PythonObject__ on NSCFType. We cannot
  * define a category on that type because the class definition isn't public.
  */
-#if 0
 static PyObject*
 pyobjc_PythonObject(NSObject* self, SEL _sel __attribute__((__unused__)))
 {
 }
 
 static const char* gNames[] = {
+    "__NSCFType",
     "NSCFType",
-    "__NSCFType",
     NULL,
 };
 
 int
 PyObjCCFType_Setup(void)
 {
-#if 0
+#ifdef PyObjC_ENABLE_CFTYPE_CATEGORY
     static char encodingBuf[128];
 #endif
     Class cls;
         return -1;
     }
 
-#if 0
+#ifdef PyObjC_ENABLE_CFTYPE_CATEGORY
     snprintf(encodingBuf, sizeof(encodingBuf), "%s%c%c", @encode(PyObject*), _C_ID, _C_SEL);
 #endif
 
         cls = objc_lookUpClass(*cur);
         if (cls == Nil) continue;
 
-#if 0
+#ifdef PyObjC_ENABLE_CFTYPE_CATEGORY
         /* Add a __pyobjc_PythonObject__ method to NSCFType. Can't use a
          * category because the type isn't public.
          */
                 return -1;
             }
         }
-#if 1
+#ifndef PyObjC_ENABLE_CFTYPE_CATEGORY
         break;
 #endif
     }
         return -1;
     }
 
-
-
     return 0;
 }
 

File pyobjc-core/Modules/objc/module.m

         v = pythonify_c_value(type, buf);
     }
 
-    if (v == NULL) {
-        return NULL;
-    }
     return v;
 }
 

File pyobjc-core/Modules/objc/objc-class.h

 extern PyObject* PyObjCClass_TryResolveSelector(PyObject* base, PyObject* name, SEL sel);
 extern PyObject* PyObjCMetaClass_TryResolveSelector(PyObject* base, PyObject* name, SEL sel);
 
+static inline int PyObjCClass_IsCFWrapper(PyTypeObject* tp)
+{
+	return ((PyObjCClassObject*)tp)->isCFWrapper;
+}
+
+
 #endif /* PyObjC_OBJC_CLASS_H */

File pyobjc-core/Modules/objc/objc-object.m

 
         descr = NULL;
 
-        if (tp != Py_TYPE(obj)) {
+        if (tp != Py_TYPE(obj) && !PyObjCClass_IsCFWrapper(Py_TYPE(obj))) {
             /* Workaround for KVO implementation feature */
             PyObject* dict;
             PyTypeObject* tmp;

File pyobjc-core/Modules/objc/objc_support.m

         if (rval == NULL && PyErr_Occurred()) {
             return NULL;
         }
-        PyObjC_RegisterPythonProxy(self, rval);
     }
 
     if (rval == NULL) {
         if (rval == NULL) {
             return NULL;
         }
+    }
+
+    if (rval != NULL) {
         PyObjC_RegisterPythonProxy(self, rval);
     }
 

File pyobjc-core/Modules/objc/opaque-pointer.m

         goto error_cleanup;
     }
 
-    w = PyText_FromString(typestr);
+    w = PyBytes_FromString(typestr);
     if (w ==  NULL) {
         goto error_cleanup;
     }

File pyobjc-core/Modules/objc/pyobjc.h

 # endif
 #endif
 
+/* When this is defined the bridge adds a category to NSCFType (and known variants)
+ * to help with the conversion to Python.
+ *
+ * This shouldn't be necessary anymore because the category on NSObject is sufficient,
+ * but it is left here just in case someone decides that CFType's can be bridged to
+ * a new root Objective-C class.
+ */
+#define PyObjC_ENABLE_CFTYPE_CATEGORY 1
+
 /* PyObjC_ERROR_ABORT: If defined an internal error will result in an abort() */
 #define    PyObjC_ERROR_ABORT 1
 

File pyobjc-core/Modules/objc/test/methres1.m

 void initmethres1(void);
 
 void __attribute__((__visibility__("default")))
-initinitialize(void)
+initmethres1(void)
 #endif
 {
     PyObject* m;

File pyobjc-core/Modules/objc/test/methres2.m

 void initmethres2(void);
 
 void __attribute__((__visibility__("default")))
-initinitialize(void)
+initmethres2(void)
 #endif
 {
     PyObject* m;

File pyobjc-core/NEWS.txt

 
    The 3.0 branch is currently highly experimental, don't uses this version!
 
+* The *__typestr__* attribute of opaque pointer types is now a byte string,
+  in previous versions this was an instance of :class:`str` (this only affects
+  Python 3 support)
+
+* The JavaScriptCore bindings (in pyobjc-framework-WebKit) are now more usable
+  because types like "JSValueRef" are now exposed to Python (they were missing
+  due to incomplete metadata).
+
 * Exclude a number of keys from the metadata dictionary when they have the
   default value (in the result from the *__metadata__()* method on methods
   and functions)

File pyobjc-framework-WebKit/Lib/JavaScriptCore/_metadata.py

 # This file is generated by objective.metadata
 #
-# Last update: Wed May 22 16:12:49 2013
+# Last update: Wed May 22 22:12:10 2013
 
 import objc, sys
 
 constants = '''$kJSClassDefinitionEmpty@{_JSClassDefinition=iI^c^{OpaqueJSClass=}^{_JSStaticValue=^c^?^?I}^{_JSStaticFunction=^c^?I}^?^?^?^?^?^?^?^?^?^?^?}$'''
 enums = '''$WEBKIT_VERSION_1_0@256$WEBKIT_VERSION_1_1@272$WEBKIT_VERSION_1_2@288$WEBKIT_VERSION_1_3@304$WEBKIT_VERSION_2_0@512$WEBKIT_VERSION_3_0@768$WEBKIT_VERSION_3_1@784$WEBKIT_VERSION_4_0@1024$WEBKIT_VERSION_LATEST@39321$kJSClassAttributeNoAutomaticPrototype@2$kJSClassAttributeNone@0$kJSPropertyAttributeDontDelete@8$kJSPropertyAttributeDontEnum@4$kJSPropertyAttributeNone@0$kJSPropertyAttributeReadOnly@2$kJSTypeBoolean@2$kJSTypeNull@1$kJSTypeNumber@3$kJSTypeObject@5$kJSTypeString@4$kJSTypeUndefined@0$'''
 misc.update({})
-functions={'JSValueMakeNumber': (b'^{OpaqueJSValue=}^{OpaqueJSContext=}d',), 'JSValueGetType': (b'i^{OpaqueJSContext=}^{OpaqueJSValue=}',), 'JSClassRetain': (b'^{OpaqueJSClass=}^{OpaqueJSClass=}',), 'JSValueCreateJSONString': (b'^{OpaqueJSString=}^{OpaqueJSContext=}^{OpaqueJSValue=}I^^{OpaqueJSValue=}', '', {'retval': {'already_cfretained': True}}), 'JSValueToObject': (b'^{OpaqueJSValue=}^{OpaqueJSContext=}^{OpaqueJSValue=}^^{OpaqueJSValue=}',), 'JSObjectMakeFunctionWithCallback': (b'^{OpaqueJSValue=}^{OpaqueJSContext=}^{OpaqueJSString=}^?', '', {'arguments': {2: {'callable': {'retval': {'type': b'^{OpaqueJSValue=}'}, 'arguments': {0: {'type': b'^{OpaqueJSContext=}'}, 1: {'type': b'^{OpaqueJSValue=}'}, 2: {'type': b'^{OpaqueJSValue=}'}, 3: {'type': b'l'}, 4: {'type': b'^^{OpaqueJSValue=}'}, 5: {'type': b'^^{OpaqueJSValue=}'}}}}}}), 'JSValueToBoolean': (b'B^{OpaqueJSContext=}^{OpaqueJSValue=}',), 'JSValueIsObject': (b'B^{OpaqueJSContext=}^{OpaqueJSValue=}',), 'JSPropertyNameArrayRetain': (b'^{OpaqueJSPropertyNameArray=}^{OpaqueJSPropertyNameArray=}',), 'JSValueIsString': (b'B^{OpaqueJSContext=}^{OpaqueJSValue=}',), 'JSStringGetUTF8CString': (sel32or64(b'l^{OpaqueJSString=}^tl', b'q^{OpaqueJSString=}^tq'), '', {'arguments': {1: {'c_array_length_in_result': True, 'type_modifier': 'o', 'c_array_length_in_arg': 2}}}), 'JSStringCreateWithCFString': (b'^{OpaqueJSString=}^{__CFString=}', '', {'retval': {'already_cfretained': True}}), 'JSObjectCopyPropertyNames': (b'^{OpaqueJSPropertyNameArray=}^{OpaqueJSContext=}^{OpaqueJSValue=}', '', {'retval': {'already_cfretained': True}}), 'JSContextGetGlobalObject': (b'^{OpaqueJSValue=}^{OpaqueJSContext=}',), 'JSGlobalContextCreate': (b'^{OpaqueJSContext=}^{OpaqueJSClass=}', '', {'retval': {'already_cfretained': True}}), 'JSStringCopyCFString': (b'^{__CFString=}^{__CFAllocator=}^{OpaqueJSString=}', '', {'retval': {'already_cfretained': True}}), 'JSObjectGetPrivate': (b'^v^{OpaqueJSValue=}',), 'JSObjectSetProperty': (b'v^{OpaqueJSContext=}^{OpaqueJSValue=}^{OpaqueJSString=}^{OpaqueJSValue=}I^^{OpaqueJSValue=}',), 'JSValueIsEqual': (b'B^{OpaqueJSContext=}^{OpaqueJSValue=}^{OpaqueJSValue=}^^{OpaqueJSValue=}',), 'JSObjectIsFunction': (b'B^{OpaqueJSContext=}^{OpaqueJSValue=}',), 'JSValueIsBoolean': (b'B^{OpaqueJSContext=}^{OpaqueJSValue=}',), 'JSValueIsUndefined': (b'B^{OpaqueJSContext=}^{OpaqueJSValue=}',), 'JSValueProtect': (b'v^{OpaqueJSContext=}^{OpaqueJSValue=}',), 'JSValueIsObjectOfClass': (b'B^{OpaqueJSContext=}^{OpaqueJSValue=}^{OpaqueJSClass=}',), 'JSObjectGetPrototype': (b'^{OpaqueJSValue=}^{OpaqueJSContext=}^{OpaqueJSValue=}',), 'JSStringCreateWithUTF8CString': (b'^{OpaqueJSString=}^t', '', {'retval': {'already_cfretained': True}, 'arguments': {0: {'c_array_delimited_by_null': True, 'type_modifier': 'n'}}}), 'JSObjectMakeArray': (sel32or64(b'^{OpaqueJSValue=}^{OpaqueJSContext=}l^^{OpaqueJSValue=}^^{OpaqueJSValue=}', b'^{OpaqueJSValue=}^{OpaqueJSContext=}q^^{OpaqueJSValue=}^^{OpaqueJSValue=}'),), 'JSPropertyNameArrayGetNameAtIndex': (sel32or64(b'^{OpaqueJSString=}^{OpaqueJSPropertyNameArray=}l', b'^{OpaqueJSString=}^{OpaqueJSPropertyNameArray=}q'),), 'JSValueMakeNull': (b'^{OpaqueJSValue=}^{OpaqueJSContext=}',), 'JSStringGetMaximumUTF8CStringSize': (sel32or64(b'l^{OpaqueJSString=}', b'q^{OpaqueJSString=}'),), 'JSObjectMakeError': (sel32or64(b'^{OpaqueJSValue=}^{OpaqueJSContext=}l^^{OpaqueJSValue=}^^{OpaqueJSValue=}', b'^{OpaqueJSValue=}^{OpaqueJSContext=}q^^{OpaqueJSValue=}^^{OpaqueJSValue=}'),), 'JSValueMakeBoolean': (b'^{OpaqueJSValue=}^{OpaqueJSContext=}B',), 'JSGlobalContextRelease': (b'v^{OpaqueJSContext=}',), 'JSObjectMakeRegExp': (sel32or64(b'^{OpaqueJSValue=}^{OpaqueJSContext=}l^^{OpaqueJSValue=}^^{OpaqueJSValue=}', b'^{OpaqueJSValue=}^{OpaqueJSContext=}q^^{OpaqueJSValue=}^^{OpaqueJSValue=}'),), 'JSObjectSetPropertyAtIndex': (b'v^{OpaqueJSContext=}^{OpaqueJSValue=}I^{OpaqueJSValue=}^^{OpaqueJSValue=}',), 'JSContextGetGroup': (b'^{OpaqueJSContextGroup=}^{OpaqueJSContext=}',), 'JSContextGroupCreate': (b'^{OpaqueJSContextGroup=}', '', {'retval': {'already_cfretained': True}}), 'JSStringIsEqualToUTF8CString': (b'B^{OpaqueJSString=}^t', '', {'arguments': {1: {'c_array_delimited_by_null': True, 'type_modifier': 'n'}}}), 'JSValueIsInstanceOfConstructor': (b'B^{OpaqueJSContext=}^{OpaqueJSValue=}^{OpaqueJSValue=}^^{OpaqueJSValue=}',), 'JSValueIsNull': (b'B^{OpaqueJSContext=}^{OpaqueJSValue=}',), 'JSStringIsEqual': (b'B^{OpaqueJSString=}^{OpaqueJSString=}',), 'JSObjectCallAsConstructor': (sel32or64(b'^{OpaqueJSValue=}^{OpaqueJSContext=}^{OpaqueJSValue=}l^^{OpaqueJSValue=}^^{OpaqueJSValue=}', b'^{OpaqueJSValue=}^{OpaqueJSContext=}^{OpaqueJSValue=}q^^{OpaqueJSValue=}^^{OpaqueJSValue=}'),), 'JSStringRetain': (b'^{OpaqueJSString=}^{OpaqueJSString=}',), 'JSObjectDeleteProperty': (b'B^{OpaqueJSContext=}^{OpaqueJSValue=}^{OpaqueJSString=}^^{OpaqueJSValue=}',), 'JSObjectMakeConstructor': (b'^{OpaqueJSValue=}^{OpaqueJSContext=}^{OpaqueJSClass=}^?', '', {'arguments': {2: {'callable': {'retval': {'type': b'^{OpaqueJSValue=}'}, 'arguments': {0: {'type': b'^{OpaqueJSContext=}'}, 1: {'type': b'^{OpaqueJSValue=}'}, 2: {'type': b'l'}, 3: {'type': b'^^{OpaqueJSValue=}'}, 4: {'type': b'^^{OpaqueJSValue=}'}}}}}}), 'JSValueMakeString': (b'^{OpaqueJSValue=}^{OpaqueJSContext=}^{OpaqueJSString=}',), 'JSObjectSetPrivate': (b'B^{OpaqueJSValue=}^v',), 'JSObjectMakeFunction': (b'^{OpaqueJSValue=}^{OpaqueJSContext=}^{OpaqueJSString=}I^^{OpaqueJSString=}^{OpaqueJSString=}^{OpaqueJSString=}i^^{OpaqueJSValue=}',), 'JSValueToStringCopy': (b'^{OpaqueJSString=}^{OpaqueJSContext=}^{OpaqueJSValue=}^^{OpaqueJSValue=}', '', {'retval': {'already_cfretained': True}}), 'JSValueMakeFromJSONString': (b'^{OpaqueJSValue=}^{OpaqueJSContext=}^{OpaqueJSString=}',), 'JSValueIsNumber': (b'B^{OpaqueJSContext=}^{OpaqueJSValue=}',), 'JSEvaluateScript': (b'^{OpaqueJSValue=}^{OpaqueJSContext=}^{OpaqueJSString=}^{OpaqueJSValue=}^{OpaqueJSString=}i^^{OpaqueJSValue=}', '', {'arguments': {5: {'type_modifier': 'o'}}}), 'JSObjectGetPropertyAtIndex': (b'^{OpaqueJSValue=}^{OpaqueJSContext=}^{OpaqueJSValue=}I^^{OpaqueJSValue=}',), 'JSStringCreateWithCharacters': (sel32or64(b'^{OpaqueJSString=}^Tl', b'^{OpaqueJSString=}^Tq'), '', {'retval': {'already_cfretained': True}, 'arguments': {0: {'c_array_length_in_arg': 1, 'type_modifier': 'n'}}}), 'JSValueToNumber': (b'd^{OpaqueJSContext=}^{OpaqueJSValue=}^^{OpaqueJSValue=}',), 'JSObjectGetProperty': (b'^{OpaqueJSValue=}^{OpaqueJSContext=}^{OpaqueJSValue=}^{OpaqueJSString=}^^{OpaqueJSValue=}',), 'JSPropertyNameAccumulatorAddName': (b'v^{OpaqueJSPropertyNameAccumulator=}^{OpaqueJSString=}',), 'JSObjectSetPrototype': (b'v^{OpaqueJSContext=}^{OpaqueJSValue=}^{OpaqueJSValue=}',), 'JSContextGroupRelease': (b'v^{OpaqueJSContextGroup=}',), 'JSObjectHasProperty': (b'B^{OpaqueJSContext=}^{OpaqueJSValue=}^{OpaqueJSString=}',), 'JSValueIsStrictEqual': (b'B^{OpaqueJSContext=}^{OpaqueJSValue=}^{OpaqueJSValue=}',), 'JSObjectMake': (b'^{OpaqueJSValue=}^{OpaqueJSContext=}^{OpaqueJSClass=}^v',), 'JSValueMakeUndefined': (b'^{OpaqueJSValue=}^{OpaqueJSContext=}',), 'JSCheckScriptSyntax': (b'B^{OpaqueJSContext=}^{OpaqueJSString=}^{OpaqueJSString=}i^^{OpaqueJSValue=}', '', {'arguments': {4: {'type_modifier': 'o'}}}), 'JSGlobalContextCreateInGroup': (b'^{OpaqueJSContext=}^{OpaqueJSContextGroup=}^{OpaqueJSClass=}', '', {'retval': {'already_cfretained': True}}), 'JSValueUnprotect': (b'v^{OpaqueJSContext=}^{OpaqueJSValue=}',), 'JSObjectIsConstructor': (b'B^{OpaqueJSContext=}^{OpaqueJSValue=}',), 'JSObjectMakeDate': (sel32or64(b'^{OpaqueJSValue=}^{OpaqueJSContext=}l^^{OpaqueJSValue=}^^{OpaqueJSValue=}', b'^{OpaqueJSValue=}^{OpaqueJSContext=}q^^{OpaqueJSValue=}^^{OpaqueJSValue=}'),), 'JSPropertyNameArrayRelease': (b'v^{OpaqueJSPropertyNameArray=}',), 'JSClassRelease': (b'v^{OpaqueJSClass=}',), 'JSObjectCallAsFunction': (sel32or64(b'^{OpaqueJSValue=}^{OpaqueJSContext=}^{OpaqueJSValue=}^{OpaqueJSValue=}l^^{OpaqueJSValue=}^^{OpaqueJSValue=}', b'^{OpaqueJSValue=}^{OpaqueJSContext=}^{OpaqueJSValue=}^{OpaqueJSValue=}q^^{OpaqueJSValue=}^^{OpaqueJSValue=}'),), 'JSContextGroupRetain': (b'^{OpaqueJSContextGroup=}^{OpaqueJSContextGroup=}',), 'JSClassCreate': (b'^{OpaqueJSClass=}^{_JSClassDefinition=iI^c^{OpaqueJSClass=}^{_JSStaticValue=^c^?^?I}^{_JSStaticFunction=^c^?I}^?^?^?^?^?^?^?^?^?^?^?}', '', {'retval': {'already_cfretained': True}}), 'JSPropertyNameArrayGetCount': (sel32or64(b'l^{OpaqueJSPropertyNameArray=}', b'q^{OpaqueJSPropertyNameArray=}'),), 'JSStringGetLength': (sel32or64(b'l^{OpaqueJSString=}', b'q^{OpaqueJSString=}'),), 'JSGarbageCollect': (b'v^{OpaqueJSContext=}',), 'JSStringRelease': (b'v^{OpaqueJSString=}',), 'JSGlobalContextRetain': (b'^{OpaqueJSContext=}^{OpaqueJSContext=}',)}
+functions={'JSValueMakeNumber': (b'^{OpaqueJSValue=}^{OpaqueJSContext=}d',), 'JSValueGetType': (b'i^{OpaqueJSContext=}^{OpaqueJSValue=}',), 'JSClassRetain': (b'^{OpaqueJSClass=}^{OpaqueJSClass=}',), 'JSValueCreateJSONString': (b'^{OpaqueJSString=}^{OpaqueJSContext=}^{OpaqueJSValue=}I^^{OpaqueJSValue=}', '', {'retval': {'already_cfretained': True}}), 'JSValueToObject': (b'^{OpaqueJSValue=}^{OpaqueJSContext=}^{OpaqueJSValue=}^^{OpaqueJSValue=}',), 'JSObjectMakeFunctionWithCallback': (b'^{OpaqueJSValue=}^{OpaqueJSContext=}^{OpaqueJSString=}^?', '', {'arguments': {2: {'callable': {'retval': {'type': b'^{OpaqueJSValue=}'}, 'arguments': {0: {'type': b'^{OpaqueJSContext=}'}, 1: {'type': b'^{OpaqueJSValue=}'}, 2: {'type': b'^{OpaqueJSValue=}'}, 3: {'type': b'l'}, 4: {'type': b'^^{OpaqueJSValue=}', 'type_modifier': 'n', 'c_array_length_in_arg': 3}, 5: {'type': b'^^{OpaqueJSValue=}', 'type_modifier': 'o'}}}}}}), 'JSValueToBoolean': (b'B^{OpaqueJSContext=}^{OpaqueJSValue=}',), 'JSValueIsObject': (b'B^{OpaqueJSContext=}^{OpaqueJSValue=}',), 'JSPropertyNameArrayRetain': (b'^{OpaqueJSPropertyNameArray=}^{OpaqueJSPropertyNameArray=}',), 'JSValueIsString': (b'B^{OpaqueJSContext=}^{OpaqueJSValue=}',), 'JSStringGetUTF8CString': (sel32or64(b'l^{OpaqueJSString=}^tl', b'q^{OpaqueJSString=}^tq'), '', {'arguments': {1: {'c_array_length_in_result': True, 'type_modifier': 'o', 'c_array_length_in_arg': 2}}}), 'JSStringCreateWithCFString': (b'^{OpaqueJSString=}^{__CFString=}', '', {'retval': {'already_cfretained': True}}), 'JSObjectCopyPropertyNames': (b'^{OpaqueJSPropertyNameArray=}^{OpaqueJSContext=}^{OpaqueJSValue=}', '', {'retval': {'already_cfretained': True}}), 'JSContextGetGlobalObject': (b'^{OpaqueJSValue=}^{OpaqueJSContext=}',), 'JSGlobalContextCreate': (b'^{OpaqueJSContext=}^{OpaqueJSClass=}', '', {'retval': {'already_cfretained': True}}), 'JSStringCopyCFString': (b'^{__CFString=}^{__CFAllocator=}^{OpaqueJSString=}', '', {'retval': {'already_cfretained': True}}), 'JSObjectGetPrivate': (b'^v^{OpaqueJSValue=}',), 'JSObjectSetProperty': (b'v^{OpaqueJSContext=}^{OpaqueJSValue=}^{OpaqueJSString=}^{OpaqueJSValue=}I^^{OpaqueJSValue=}', '', {'arguments': {5: {'type_modifier': 'o'}}}), 'JSValueIsEqual': (b'B^{OpaqueJSContext=}^{OpaqueJSValue=}^{OpaqueJSValue=}^^{OpaqueJSValue=}',), 'JSObjectIsFunction': (b'B^{OpaqueJSContext=}^{OpaqueJSValue=}',), 'JSValueIsBoolean': (b'B^{OpaqueJSContext=}^{OpaqueJSValue=}',), 'JSValueIsUndefined': (b'B^{OpaqueJSContext=}^{OpaqueJSValue=}',), 'JSValueProtect': (b'v^{OpaqueJSContext=}^{OpaqueJSValue=}',), 'JSValueIsObjectOfClass': (b'B^{OpaqueJSContext=}^{OpaqueJSValue=}^{OpaqueJSClass=}',), 'JSObjectGetPrototype': (b'^{OpaqueJSValue=}^{OpaqueJSContext=}^{OpaqueJSValue=}',), 'JSStringCreateWithUTF8CString': (b'^{OpaqueJSString=}^t', '', {'retval': {'already_cfretained': True}, 'arguments': {0: {'c_array_delimited_by_null': True, 'type_modifier': 'n'}}}), 'JSObjectMakeArray': (sel32or64(b'^{OpaqueJSValue=}^{OpaqueJSContext=}l^^{OpaqueJSValue=}^^{OpaqueJSValue=}', b'^{OpaqueJSValue=}^{OpaqueJSContext=}q^^{OpaqueJSValue=}^^{OpaqueJSValue=}'), '', {'arguments': {2: {'c_array_length_in_arg': 1, 'type_modifier': 'n'}, 3: {'type_modifier': 'o'}}}), 'JSPropertyNameArrayGetNameAtIndex': (sel32or64(b'^{OpaqueJSString=}^{OpaqueJSPropertyNameArray=}L', b'^{OpaqueJSString=}^{OpaqueJSPropertyNameArray=}Q'),), 'JSValueMakeNull': (b'^{OpaqueJSValue=}^{OpaqueJSContext=}',), 'JSStringGetMaximumUTF8CStringSize': (sel32or64(b'l^{OpaqueJSString=}', b'q^{OpaqueJSString=}'),), 'JSObjectMakeError': (sel32or64(b'^{OpaqueJSValue=}^{OpaqueJSContext=}l^^{OpaqueJSValue=}^^{OpaqueJSValue=}', b'^{OpaqueJSValue=}^{OpaqueJSContext=}q^^{OpaqueJSValue=}^^{OpaqueJSValue=}'), '', {'arguments': {2: {'c_array_length_in_arg': 1, 'type_modifier': 'n'}, 3: {'type_modifier': 'o'}}}), 'JSValueMakeBoolean': (b'^{OpaqueJSValue=}^{OpaqueJSContext=}B',), 'JSGlobalContextRelease': (b'v^{OpaqueJSContext=}',), 'JSObjectMakeRegExp': (sel32or64(b'^{OpaqueJSValue=}^{OpaqueJSContext=}l^^{OpaqueJSValue=}^^{OpaqueJSValue=}', b'^{OpaqueJSValue=}^{OpaqueJSContext=}q^^{OpaqueJSValue=}^^{OpaqueJSValue=}'), '', {'arguments': {2: {'c_array_length_in_arg': 1, 'type_modifier': 'n'}, 3: {'type_modifier': 'o'}}}), 'JSObjectSetPropertyAtIndex': (b'v^{OpaqueJSContext=}^{OpaqueJSValue=}I^{OpaqueJSValue=}^^{OpaqueJSValue=}', '', {'arguments': {4: {'type_modifier': 'o'}}}), 'JSContextGetGroup': (b'^{OpaqueJSContextGroup=}^{OpaqueJSContext=}',), 'JSContextGroupCreate': (b'^{OpaqueJSContextGroup=}', '', {'retval': {'already_cfretained': True}}), 'JSStringIsEqualToUTF8CString': (b'B^{OpaqueJSString=}^t', '', {'arguments': {1: {'c_array_delimited_by_null': True, 'type_modifier': 'n'}}}), 'JSValueIsInstanceOfConstructor': (b'B^{OpaqueJSContext=}^{OpaqueJSValue=}^{OpaqueJSValue=}^^{OpaqueJSValue=}',), 'JSValueIsNull': (b'B^{OpaqueJSContext=}^{OpaqueJSValue=}',), 'JSStringIsEqual': (b'B^{OpaqueJSString=}^{OpaqueJSString=}',), 'JSObjectCallAsConstructor': (sel32or64(b'^{OpaqueJSValue=}^{OpaqueJSContext=}^{OpaqueJSValue=}L^^{OpaqueJSValue=}^^{OpaqueJSValue=}', b'^{OpaqueJSValue=}^{OpaqueJSContext=}^{OpaqueJSValue=}Q^^{OpaqueJSValue=}^^{OpaqueJSValue=}'), '', {'arguments': {3: {'c_array_length_in_arg': 2, 'type_modifier': 'n'}, 4: {'type_modifier': 'o'}}}), 'JSStringRetain': (b'^{OpaqueJSString=}^{OpaqueJSString=}',), 'JSObjectDeleteProperty': (b'B^{OpaqueJSContext=}^{OpaqueJSValue=}^{OpaqueJSString=}^^{OpaqueJSValue=}', '', {'arguments': {3: {'type_modifier': 'o'}}}), 'JSObjectMakeConstructor': (b'^{OpaqueJSValue=}^{OpaqueJSContext=}^{OpaqueJSClass=}^?', '', {'arguments': {2: {'callable': {'retval': {'type': b'^{OpaqueJSValue=}'}, 'arguments': {0: {'type': b'^{OpaqueJSContext=}'}, 1: {'type': b'^{OpaqueJSValue=}'}, 2: {'type': b'l'}, 3: {'type': b'^^{OpaqueJSValue=}', 'type_modifier': 'n', 'c_array_lenght_in_arg': 3}, 4: {'type': b'^^{OpaqueJSValue=}', 'type_modifier': 'o'}}}}}}), 'JSValueMakeString': (b'^{OpaqueJSValue=}^{OpaqueJSContext=}^{OpaqueJSString=}',), 'JSObjectSetPrivate': (b'B^{OpaqueJSValue=}^v',), 'JSObjectMakeFunction': (b'^{OpaqueJSValue=}^{OpaqueJSContext=}^{OpaqueJSString=}I^^{OpaqueJSString=}^{OpaqueJSString=}^{OpaqueJSString=}i^^{OpaqueJSValue=}', '', {'arguments': {3: {'c_array_length_in_arg': 2, 'type_modifier': 'n'}, 7: {'type_modifier': 'o'}}}), 'JSValueToStringCopy': (b'^{OpaqueJSString=}^{OpaqueJSContext=}^{OpaqueJSValue=}^^{OpaqueJSValue=}', '', {'retval': {'already_cfretained': True}}), 'JSValueMakeFromJSONString': (b'^{OpaqueJSValue=}^{OpaqueJSContext=}^{OpaqueJSString=}',), 'JSValueIsNumber': (b'B^{OpaqueJSContext=}^{OpaqueJSValue=}',), 'JSEvaluateScript': (b'^{OpaqueJSValue=}^{OpaqueJSContext=}^{OpaqueJSString=}^{OpaqueJSValue=}^{OpaqueJSString=}i^^{OpaqueJSValue=}', '', {'arguments': {5: {'type_modifier': 'o'}}}), 'JSObjectGetPropertyAtIndex': (b'^{OpaqueJSValue=}^{OpaqueJSContext=}^{OpaqueJSValue=}I^^{OpaqueJSValue=}', '', {'arguments': {3: {'type_modifier': 'o'}}}), 'JSStringCreateWithCharacters': (sel32or64(b'^{OpaqueJSString=}^Tl', b'^{OpaqueJSString=}^Tq'), '', {'retval': {'already_cfretained': True}, 'arguments': {0: {'c_array_length_in_arg': 1, 'type_modifier': 'n'}}}), 'JSValueToNumber': (b'd^{OpaqueJSContext=}^{OpaqueJSValue=}^^{OpaqueJSValue=}',), 'JSObjectGetProperty': (b'^{OpaqueJSValue=}^{OpaqueJSContext=}^{OpaqueJSValue=}^{OpaqueJSString=}^^{OpaqueJSValue=}', '', {'arguments': {3: {'type_modifier': 'o'}}}), 'JSPropertyNameAccumulatorAddName': (b'v^{OpaqueJSPropertyNameAccumulator=}^{OpaqueJSString=}',), 'JSObjectSetPrototype': (b'v^{OpaqueJSContext=}^{OpaqueJSValue=}^{OpaqueJSValue=}',), 'JSContextGroupRelease': (b'v^{OpaqueJSContextGroup=}',), 'JSObjectHasProperty': (b'B^{OpaqueJSContext=}^{OpaqueJSValue=}^{OpaqueJSString=}',), 'JSValueIsStrictEqual': (b'B^{OpaqueJSContext=}^{OpaqueJSValue=}^{OpaqueJSValue=}',), 'JSObjectMake': (b'^{OpaqueJSValue=}^{OpaqueJSContext=}^{OpaqueJSClass=}^v',), 'JSValueMakeUndefined': (b'^{OpaqueJSValue=}^{OpaqueJSContext=}',), 'JSCheckScriptSyntax': (b'B^{OpaqueJSContext=}^{OpaqueJSString=}^{OpaqueJSString=}i^^{OpaqueJSValue=}', '', {'arguments': {4: {'type_modifier': 'o'}}}), 'JSGlobalContextCreateInGroup': (b'^{OpaqueJSContext=}^{OpaqueJSContextGroup=}^{OpaqueJSClass=}', '', {'retval': {'already_cfretained': True}}), 'JSValueUnprotect': (b'v^{OpaqueJSContext=}^{OpaqueJSValue=}',), 'JSObjectIsConstructor': (b'B^{OpaqueJSContext=}^{OpaqueJSValue=}',), 'JSObjectMakeDate': (sel32or64(b'^{OpaqueJSValue=}^{OpaqueJSContext=}l^^{OpaqueJSValue=}^^{OpaqueJSValue=}', b'^{OpaqueJSValue=}^{OpaqueJSContext=}q^^{OpaqueJSValue=}^^{OpaqueJSValue=}'), '', {'arguments': {2: {'c_array_length_in_arg': 1, 'type_modifier': 'n'}, 3: {'type_modifier': 'o'}}}), 'JSPropertyNameArrayRelease': (b'v^{OpaqueJSPropertyNameArray=}',), 'JSClassRelease': (b'v^{OpaqueJSClass=}',), 'JSObjectCallAsFunction': (sel32or64(b'^{OpaqueJSValue=}^{OpaqueJSContext=}^{OpaqueJSValue=}^{OpaqueJSValue=}L^^{OpaqueJSValue=}^^{OpaqueJSValue=}', b'^{OpaqueJSValue=}^{OpaqueJSContext=}^{OpaqueJSValue=}^{OpaqueJSValue=}Q^^{OpaqueJSValue=}^^{OpaqueJSValue=}'), '', {'arguments': {4: {'c_array_length_in_arg': 3, 'type_modifier': 'n'}, 5: {'type_modifier': 'o'}}}), 'JSContextGroupRetain': (b'^{OpaqueJSContextGroup=}^{OpaqueJSContextGroup=}',), 'JSClassCreate': (b'^{OpaqueJSClass=}^{_JSClassDefinition=iI^c^{OpaqueJSClass=}^{_JSStaticValue=^c^?^?I}^{_JSStaticFunction=^c^?I}^?^?^?^?^?^?^?^?^?^?^?}', '', {'retval': {'already_cfretained': True}}), 'JSPropertyNameArrayGetCount': (sel32or64(b'L^{OpaqueJSPropertyNameArray=}', b'Q^{OpaqueJSPropertyNameArray=}'),), 'JSStringGetLength': (sel32or64(b'l^{OpaqueJSString=}', b'q^{OpaqueJSString=}'),), 'JSGarbageCollect': (b'v^{OpaqueJSContext=}',), 'JSStringRelease': (b'v^{OpaqueJSString=}',), 'JSGlobalContextRetain': (b'^{OpaqueJSContext=}^{OpaqueJSContext=}',)}
 aliases = {'JSObjectRef': 'JSValueRef', 'JSGlobalContextRef': 'JSContextRef'}
 misc.update({'JSValueRef': objc.createOpaquePointerType('JSValueRef', b'^{OpaqueJSValue=}'), 'JSStringRef': objc.createOpaquePointerType('JSStringRef', b'^{OpaqueJSString=}'), 'JSContextRef': objc.createOpaquePointerType('JSContextRef', b'^{OpaqueJSContext=}'), 'JSPropertyNameArrayRef': objc.createOpaquePointerType('JSPropertyNameArrayRef', b'^{OpaqueJSPropertyNameArray=}'), 'JSClassRef': objc.createOpaquePointerType('JSClassRef', b'^{OpaqueJSClass=}'), 'JSContextGroupRef': objc.createOpaquePointerType('JSContextGroupRef', b'^{OpaqueJSContextGroup=}'), 'JSPropertyNameAccumulatorRef': objc.createOpaquePointerType('JSPropertyNameAccumulatorRef', b'^{OpaqueJSPropertyNameAccumulator=}')})
 expressions = {}

File pyobjc-framework-WebKit/PyObjCTest/test_jsobjectref.py

 
 import JavaScriptCore
 import objc
+import sys
 
 
 class TestJSObjectRef (TestCase):
         self.assertEqual(JavaScriptCore.kJSClassAttributeNoAutomaticPrototype, 1<<1)
 
     def test_simple_functions(self):
-        self.assertResultHasType(JavaScriptCore.JSClassRetain, JavaScriptCore.JSClassRef)
-        self.assertArgHasType(JavaScriptCore.JSClassRetain, 0, JavaScriptCore.JSClassRef)
+        self.assertResultHasType(JavaScriptCore.JSClassRetain, JavaScriptCore.JSClassRef.__typestr__)
+        self.assertArgHasType(JavaScriptCore.JSClassRetain, 0, JavaScriptCore.JSClassRef.__typestr__)
 
-        self.assertArgHasType(JavaScriptCore.JSClassRelease, 0, JavaScriptCore.JSClassRef)
+        self.assertArgHasType(JavaScriptCore.JSClassRelease, 0, JavaScriptCore.JSClassRef.__typestr__)
 
         self.assertResultHasType(JavaScriptCore.JSObjectMake, JavaScriptCore.JSObjectRef.__typestr__)
         self.assertArgHasType(JavaScriptCore.JSObjectMake, 0, JavaScriptCore.JSContextRef.__typestr__)
         self.assertResultHasType(JavaScriptCore.JSObjectMakeFunction, JavaScriptCore.JSObjectRef.__typestr__)
         self.assertArgHasType(JavaScriptCore.JSObjectMakeFunction, 0, JavaScriptCore.JSContextRef.__typestr__)
         self.assertArgHasType(JavaScriptCore.JSObjectMakeFunction, 1, JavaScriptCore.JSStringRef.__typestr__)
-        self.assertArgHasType(JavaScriptCore.JSObjectMakeFunction, 3, b'n^' + JavaScriptCore.JSValueRef.__typestr__)
+        self.assertArgHasType(JavaScriptCore.JSObjectMakeFunction, 3, b'n^' + JavaScriptCore.JSStringRef.__typestr__)
         self.assertArgSizeInArg(JavaScriptCore.JSObjectMakeFunction, 3, 2)
         self.assertArgHasType(JavaScriptCore.JSObjectMakeFunction, 4, JavaScriptCore.JSStringRef.__typestr__)
         self.assertArgHasType(JavaScriptCore.JSObjectMakeFunction, 5, JavaScriptCore.JSStringRef.__typestr__)
         self.assertArgHasType(JavaScriptCore.JSObjectMakeFunction, 7, b'o^' + JavaScriptCore.JSValueRef.__typestr__)
 
         self.assertResultHasType(JavaScriptCore.JSObjectGetPrototype, JavaScriptCore.JSValueRef.__typestr__)
-        self.assertArgHasType(JavaScriptCore.JSObjectGetPrototype, 0, JavaScriptCore.JSContexRef.__typestr__)
+        self.assertArgHasType(JavaScriptCore.JSObjectGetPrototype, 0, JavaScriptCore.JSContextRef.__typestr__)
         self.assertArgHasType(JavaScriptCore.JSObjectGetPrototype, 1, JavaScriptCore.JSObjectRef.__typestr__)
 
-        self.assertArgHasType(JavaScriptCore.JSObjectSetPrototype, 0, JavaScriptCore.JSContexRef.__typestr__)
+        self.assertArgHasType(JavaScriptCore.JSObjectSetPrototype, 0, JavaScriptCore.JSContextRef.__typestr__)
         self.assertArgHasType(JavaScriptCore.JSObjectSetPrototype, 1, JavaScriptCore.JSObjectRef.__typestr__)
         self.assertArgHasType(JavaScriptCore.JSObjectSetPrototype, 2, JavaScriptCore.JSValueRef.__typestr__)
 
         self.assertResultHasType(JavaScriptCore.JSObjectHasProperty, objc._C_BOOL)
-        self.assertArgHasType(JavaScriptCore.JSObjectHasProperty, 0, JavaScriptCore.JSObjectRef.__typestr__)
-        self.assertArgHasType(JavaScriptCore.JSObjectHasProperty, 1, JavaScriptCore.JSStringRef.__typestr__)
+        self.assertArgHasType(JavaScriptCore.JSObjectHasProperty, 0, JavaScriptCore.JSContextRef.__typestr__)
+        self.assertArgHasType(JavaScriptCore.JSObjectHasProperty, 1, JavaScriptCore.JSObjectRef.__typestr__)
+        self.assertArgHasType(JavaScriptCore.JSObjectHasProperty, 2, JavaScriptCore.JSStringRef.__typestr__)
 
         self.assertResultHasType(JavaScriptCore.JSObjectGetProperty, JavaScriptCore.JSValueRef.__typestr__)
-        self.assertArgHasType(JavaScriptCore.JSObjectGetProperty, 0, JavaScriptCore.JSContexRef.__typestr__)
+        self.assertArgHasType(JavaScriptCore.JSObjectGetProperty, 0, JavaScriptCore.JSContextRef.__typestr__)
         self.assertArgHasType(JavaScriptCore.JSObjectGetProperty, 1, JavaScriptCore.JSObjectRef.__typestr__)
         self.assertArgHasType(JavaScriptCore.JSObjectGetProperty, 2, JavaScriptCore.JSStringRef.__typestr__)
-        self.assertArgHasType(JavaScriptCore.JSObjectGetProperty, 3, b'o^' + JavaScriptCore.JSStringRef.__typestr__)
+        self.assertArgHasType(JavaScriptCore.JSObjectGetProperty, 3, b'o^' + JavaScriptCore.JSObjectRef.__typestr__)
 
-        self.assertResultHasType(JavaScriptCore.JSObjectSetProperty, JavaScriptCore.JSValueRef.__typestr__)
-        self.assertArgHasType(JavaScriptCore.JSObjectSetProperty, 0, JavaScriptCore.JSContexRef.__typestr__)
+        self.assertResultHasType(JavaScriptCore.JSObjectSetProperty, objc._C_VOID)
+        self.assertArgHasType(JavaScriptCore.JSObjectSetProperty, 0, JavaScriptCore.JSContextRef.__typestr__)
         self.assertArgHasType(JavaScriptCore.JSObjectSetProperty, 1, JavaScriptCore.JSObjectRef.__typestr__)
         self.assertArgHasType(JavaScriptCore.JSObjectSetProperty, 2, JavaScriptCore.JSStringRef.__typestr__)
         self.assertArgHasType(JavaScriptCore.JSObjectSetProperty, 3, JavaScriptCore.JSValueRef.__typestr__)
         self.assertArgHasType(JavaScriptCore.JSObjectSetProperty, 4, objc._C_UINT)
-        self.assertArgHasType(JavaScriptCore.JSObjectSetProperty, 5, b'o^' + JavaScriptCore.JSStringRef.__typestr__)
+        self.assertArgHasType(JavaScriptCore.JSObjectSetProperty, 5, b'o^' + JavaScriptCore.JSObjectRef.__typestr__)
 
         self.assertResultHasType(JavaScriptCore.JSObjectDeleteProperty, objc._C_BOOL)
-        self.assertArgHasType(JavaScriptCore.JSObjectDeleteProperty, 0, JavaScriptCore.JSContexRef.__typestr__)
+        self.assertArgHasType(JavaScriptCore.JSObjectDeleteProperty, 0, JavaScriptCore.JSContextRef.__typestr__)
         self.assertArgHasType(JavaScriptCore.JSObjectDeleteProperty, 1, JavaScriptCore.JSObjectRef.__typestr__)
         self.assertArgHasType(JavaScriptCore.JSObjectDeleteProperty, 2, JavaScriptCore.JSStringRef.__typestr__)
-        self.assertArgHasType(JavaScriptCore.JSObjectDeleteProperty, 3, b'o^' + JavaScriptCore.JSStringRef.__typestr__)
+        self.assertArgHasType(JavaScriptCore.JSObjectDeleteProperty, 3, b'o^' + JavaScriptCore.JSObjectRef.__typestr__)
 
-        self.assertResultHasType(JavaScriptCore.JSObjectGetPropertyAtIndex, objc._C_BOOL)
-        self.assertArgHasType(JavaScriptCore.JSObjectGetPropertyAtIndex, 0, JavaScriptCore.JSContexRef.__typestr__)
+        self.assertResultHasType(JavaScriptCore.JSObjectGetPropertyAtIndex, JavaScriptCore.JSValueRef.__typestr__)
+        self.assertArgHasType(JavaScriptCore.JSObjectGetPropertyAtIndex, 0, JavaScriptCore.JSContextRef.__typestr__)
         self.assertArgHasType(JavaScriptCore.JSObjectGetPropertyAtIndex, 1, JavaScriptCore.JSObjectRef.__typestr__)
         self.assertArgHasType(JavaScriptCore.JSObjectGetPropertyAtIndex, 2, objc._C_UINT)
-        self.assertArgHasType(JavaScriptCore.JSObjectGetPropertyAtIndex, 3, b'o^' + JavaScriptCore.JSStringRef.__typestr__)
+        self.assertArgHasType(JavaScriptCore.JSObjectGetPropertyAtIndex, 3, b'o^' + JavaScriptCore.JSObjectRef.__typestr__)
 
-        self.assertResultHasType(JavaScriptCore.JSObjectSetPropertyAtIndex, JavaScriptCore.JSValueRef.__typestr__)
-        self.assertArgHasType(JavaScriptCore.JSObjectSetPropertyAtIndex, 0, JavaScriptCore.JSContexRef.__typestr__)
+        self.assertResultHasType(JavaScriptCore.JSObjectSetPropertyAtIndex, objc._C_VOID)
+        self.assertArgHasType(JavaScriptCore.JSObjectSetPropertyAtIndex, 0, JavaScriptCore.JSContextRef.__typestr__)
         self.assertArgHasType(JavaScriptCore.JSObjectSetPropertyAtIndex, 1, JavaScriptCore.JSObjectRef.__typestr__)
         self.assertArgHasType(JavaScriptCore.JSObjectSetPropertyAtIndex, 2, objc._C_UINT)
         self.assertArgHasType(JavaScriptCore.JSObjectSetPropertyAtIndex, 3, JavaScriptCore.JSValueRef.__typestr__)
-        self.assertArgHasType(JavaScriptCore.JSObjectSetPropertyAtIndex, 4, objc._C_UINT)
-        self.assertArgHasType(JavaScriptCore.JSObjectSetPropertyAtIndex, 5, b'o^' + JavaScriptCore.JSStringRef.__typestr__)
+        self.assertArgHasType(JavaScriptCore.JSObjectSetPropertyAtIndex, 4, b'o^' + JavaScriptCore.JSObjectRef.__typestr__)
 
         self.assertResultHasType(JavaScriptCore.JSObjectGetPrivate, objc._C_PTR + objc._C_VOID)
         self.assertArgHasType(JavaScriptCore.JSObjectGetPrivate, 0, JavaScriptCore.JSObjectRef.__typestr__)
         self.assertArgHasType(JavaScriptCore.JSObjectIsConstructor, 1, JavaScriptCore.JSObjectRef.__typestr__)
 
         self.assertResultHasType(JavaScriptCore.JSObjectCopyPropertyNames, JavaScriptCore.JSPropertyNameArrayRef.__typestr__)
-        self.assertArgHasType(JavaScriptCore.JSObjectCopyPropertyNames, 0, JavaScriptCore.JSContexRef.__typestr__)
+        self.assertArgHasType(JavaScriptCore.JSObjectCopyPropertyNames, 0, JavaScriptCore.JSContextRef.__typestr__)
         self.assertArgHasType(JavaScriptCore.JSObjectCopyPropertyNames, 1, JavaScriptCore.JSObjectRef.__typestr__)
 
         self.assertResultHasType(JavaScriptCore.JSPropertyNameArrayRetain, JavaScriptCore.JSPropertyNameArrayRef.__typestr__)
         self.assertResultHasType(JavaScriptCore.JSPropertyNameArrayGetCount, SIZE_T)
         self.assertArgHasType(JavaScriptCore.JSPropertyNameArrayGetCount, 0, JavaScriptCore.JSPropertyNameArrayRef.__typestr__)
 
-        self.assertResultHasType(JavaScriptCore.JSPropertyNameArrayGetNameAtIndex, objc.JSStringRef.__typestr__)
-        self.assertArgHasType(JavaScriptCore.JSPropertyNameArrayGetNameAtIndex, 0, objc.JSPropertyNameArrayRef.__typestr__)
+        self.assertResultHasType(JavaScriptCore.JSPropertyNameArrayGetNameAtIndex, JavaScriptCore.JSStringRef.__typestr__)
+        self.assertArgHasType(JavaScriptCore.JSPropertyNameArrayGetNameAtIndex, 0, JavaScriptCore.JSPropertyNameArrayRef.__typestr__)
         self.assertArgHasType(JavaScriptCore.JSPropertyNameArrayGetNameAtIndex, 1, SIZE_T)
 
         self.assertArgHasType(JavaScriptCore.JSPropertyNameAccumulatorAddName, 0, JavaScriptCore.JSPropertyNameAccumulatorRef.__typestr__)
         self.assertArgHasType(JavaScriptCore.JSPropertyNameAccumulatorAddName, 1, JavaScriptCore.JSStringRef.__typestr__)
 
         self.assertResultHasType(JavaScriptCore.JSObjectCallAsFunction, JavaScriptCore.JSValueRef.__typestr__)
-        self.assertArgHasType(JavaScriptCore.JSObjectCallAsFunction, 0, JavaScriptCore.JSContexRef.__typestr__)
+        self.assertArgHasType(JavaScriptCore.JSObjectCallAsFunction, 0, JavaScriptCore.JSContextRef.__typestr__)
         self.assertArgHasType(JavaScriptCore.JSObjectCallAsFunction, 1, JavaScriptCore.JSObjectRef.__typestr__)
         self.assertArgHasType(JavaScriptCore.JSObjectCallAsFunction, 2, JavaScriptCore.JSObjectRef.__typestr__)
         self.assertArgHasType(JavaScriptCore.JSObjectCallAsFunction, 3, SIZE_T)
         self.assertArgHasType(JavaScriptCore.JSObjectCallAsFunction, 4, b'n^' + JavaScriptCore.JSValueRef.__typestr__)
         self.assertArgSizeInArg(JavaScriptCore.JSObjectCallAsFunction, 4, 3)
-        self.assertArgHasType(JavaScriptCore.JSObjectCallAsFunction, 5, b'o^' + JavaScriptCore.JSStringRef.__typestr__)
+        self.assertArgHasType(JavaScriptCore.JSObjectCallAsFunction, 5, b'o^' + JavaScriptCore.JSObjectRef.__typestr__)
 
         self.assertResultHasType(JavaScriptCore.JSObjectCallAsConstructor, JavaScriptCore.JSValueRef.__typestr__)
-        self.assertArgHasType(JavaScriptCore.JSObjectCallAsConstructor, 0, JavaScriptCore.JSContexRef.__typestr__)
+        self.assertArgHasType(JavaScriptCore.JSObjectCallAsConstructor, 0, JavaScriptCore.JSContextRef.__typestr__)
         self.assertArgHasType(JavaScriptCore.JSObjectCallAsConstructor, 1, JavaScriptCore.JSObjectRef.__typestr__)
         self.assertArgHasType(JavaScriptCore.JSObjectCallAsConstructor, 2, SIZE_T)
         self.assertArgHasType(JavaScriptCore.JSObjectCallAsConstructor, 3, b'n^' + JavaScriptCore.JSValueRef.__typestr__)
         self.assertArgSizeInArg(JavaScriptCore.JSObjectCallAsConstructor, 3, 2)
-        self.assertArgHasType(JavaScriptCore.JSObjectCallAsConstructor, 4, b'o^' + JavaScriptCore.JSStringRef.__typestr__)
+        self.assertArgHasType(JavaScriptCore.JSObjectCallAsConstructor, 4, b'o^' + JavaScriptCore.JSObjectRef.__typestr__)
 
     def test_functions(self):
         self.fail("Need to think about these wrappers....")
         self.assertArgHasType(JavaScriptCore.JSObjectMakeConstructor, 1, JavaScriptCore.JSClassRef.__typestr__)
         self.assertArgIsFunction(JavaScriptCore.JSObjectMakeConstructor, 2,
                 b'', # FIXME: requires complicated metadata
-                , True)
+                True)
 
         self.assertResultHasType(JavaScriptCore.JSObjectMakeFunctionWithCallback, JavaScriptCore.JSObjectRef.__typestr__)
         self.assertArgHasType(JavaScriptCore.JSObjectMakeFunctionWithCallback, 0, JavaScriptCore.JSContextRef.__typestr__)
         self.assertArgHasType(JavaScriptCore.JSObjectMakeFunctionWithCallback, 1, JavaScriptCore.JSStringRef.__typestr__)
         self.assertArgIsFunction(JavaScriptCore.JSObjectMakeFunctionWithCallback, 2,
                 b'', # FIXME: requires complicated metadata
-                , True)
+                True)
 
 
         # XXX: Creating classes is probably easiest using custom code, I don't think the

File pyobjc-framework-WebKit/metadata/JavaScriptCore.fwinfo

     "args": {
      "0": {},
      "1": {},
-     "3": {},
-     "4": {}
+     "3": { "type_modifier": "n", "c_array_length_in_arg": 2 },
+     "4": { "type_modifier": "o" }
     },
     "retval": {}
    },
      "0": {},
      "1": {},
      "2": {},
-     "4": {},
-     "5": {}
+     "4": { "type_modifier": "n", "c_array_length_in_arg": 3 },
+     "5": { "type_modifier": "o" }
     },
     "retval": {}
    },
      "0": {},
      "1": {},
      "2": {},
-     "3": {}
+     "3": { "type_modifier": "o" }
     }
    },
    "JSObjectGetPrivate": {
      "0": {},
      "1": {},
      "2": {},
-     "3": {}
+     "3": { "type_modifier": "o" }
     },
     "retval": {}
    },
     "args": {
      "0": {},
      "1": {},
-     "3": {}
+     "3": { "type_modifier": "o" }
     },
     "retval": {}
    },
    "JSObjectMakeArray": {
     "args": {
      "0": {},
-     "2": {},
-     "3": {}
+     "2": { "c_array_length_in_arg": 1, "type_modifier": "n"},
+     "3": { "type_modifier": "o" }
     },
     "retval": {}
    },
       "function": {
        "args": [
         {
-         "typestr": [
-          "^{OpaqueJSContext=}",
-          false
-         ]
+         "typestr": "^{OpaqueJSContext=}"
         },
         {
-         "typestr": [
-          "^{OpaqueJSValue=}",
-          false
-         ]
+         "typestr": "^{OpaqueJSValue=}"
         },
         {
-         "typestr": [
-          "l",
-          false
-         ]
+         "typestr": "l"
         },
         {
-         "typestr": [
-          "^^{OpaqueJSValue=}",
-          false
-         ]
+         "typestr": "^^{OpaqueJSValue=}",
+	 "type_modifier": "n",
+	 "c_array_lenght_in_arg": 3
         },
         {
-         "typestr": [
-          "^^{OpaqueJSValue=}",
-          false
-         ]
+         "typestr": "^^{OpaqueJSValue=}",
+	 "type_modifier": "o"
         }
        ],
        "retval": {
-        "typestr": [
-         "^{OpaqueJSValue=}",
-         false
-        ]
+        "typestr": "^{OpaqueJSValue=}"
        }
       }
      }
    "JSObjectMakeDate": {
     "args": {
      "0": {},
-     "2": {},
-     "3": {}
+     "2": { "type_modifier": "n", "c_array_length_in_arg": 1 },
+     "3": { "type_modifier": "o" }
     },
     "retval": {}
    },
    "JSObjectMakeError": {
     "args": {
      "0": {},
-     "2": {},
-     "3": {}
+     "2": { "type_modifier": "n", "c_array_length_in_arg": 1 },
+     "3": { "type_modifier": "o" }
     },
     "retval": {}
    },
     "args": {
      "0": {},
      "1": {},
-     "3": {},
+     "3": { "c_array_length_in_arg": 2, "type_modifier": "n" },
      "4": {},
      "5": {},
-     "7": {}
+     "7": { "type_modifier": "o" }
     },
     "retval": {}
    },
       "function": {
        "args": [
         {
-         "typestr": [
-          "^{OpaqueJSContext=}",
-          false
-         ]
+         "typestr": "^{OpaqueJSContext=}"
         },
         {
-         "typestr": [
-          "^{OpaqueJSValue=}",
-          false
-         ]
+         "typestr": "^{OpaqueJSValue=}"
         },
         {
-         "typestr": [
-          "^{OpaqueJSValue=}",
-          false
-         ]
+         "typestr": "^{OpaqueJSValue=}"
         },
         {
-         "typestr": [
-          "l",
-          false
-         ]
+         "typestr": "l"
         },
         {
-         "typestr": [
-          "^^{OpaqueJSValue=}",
-          false
-         ]
+         "typestr": "^^{OpaqueJSValue=}",
+	 "type_modifier": "n",
+	 "c_array_length_in_arg": 3
         },
         {
-         "typestr": [
-          "^^{OpaqueJSValue=}",
-          false
-         ]
+         "typestr": "^^{OpaqueJSValue=}",
+	 "type_modifier": "o"
         }
        ],
        "retval": {
-        "typestr": [
-         "^{OpaqueJSValue=}",
-         false
-        ]
+        "typestr": "^{OpaqueJSValue=}"
        }
       }
      }
    "JSObjectMakeRegExp": {
     "args": {
      "0": {},
-     "2": {},
-     "3": {}
+     "2": { "type_modifier": "n", "c_array_length_in_arg": 1 },
+     "3": { "type_modifier": "o" }
     },
     "retval": {}
    },
      "1": {},
      "2": {},
      "3": {},
-     "5": {}
+     "5": { "type_modifier": "o" }
     }
    },
    "JSObjectSetPropertyAtIndex": {
      "0": {},
      "1": {},
      "3": {},
-     "4": {}
+     "4": { "type_modifier": "o" }
     }
    },
    "JSObjectSetPrototype": {

File pyobjc-framework-WebKit/metadata/raw.jc/i386-10.6.fwinfo

 # This file was generated by objective.metadata
 # Last update: Thu Mar  8 11:04:48 2012
 {
- "arch": "i386", 
+ "arch": "i386",
  "definitions": {
   "aliases": {
-   "AVAILABLE_AFTER_WEBKIT_VERSION_4_0": "WEAK_IMPORT_ATTRIBUTE", 
-   "AVAILABLE_AFTER_WEBKIT_VERSION_4_0_BUT_DEPRECATED": "AVAILABLE_AFTER_WEBKIT_VERSION_4_0", 
-   "AVAILABLE_IN_WEBKIT_VERSION_4_0_BUT_DEPRECATED": "DEPRECATED_ATTRIBUTE", 
-   "AVAILABLE_WEBKIT_VERSION_1_0_AND_LATER_BUT_DEPRECATED": "DEPRECATED_ATTRIBUTE", 
-   "AVAILABLE_WEBKIT_VERSION_1_0_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_4_0": "AVAILABLE_WEBKIT_VERSION_1_0_AND_LATER", 
-   "AVAILABLE_WEBKIT_VERSION_1_0_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_1_1": "DEPRECATED_ATTRIBUTE", 
-   "AVAILABLE_WEBKIT_VERSION_1_0_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_1_2": "DEPRECATED_ATTRIBUTE", 
-   "AVAILABLE_WEBKIT_VERSION_1_0_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_1_3": "DEPRECATED_ATTRIBUTE", 
-   "AVAILABLE_WEBKIT_VERSION_1_0_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_2_0": "DEPRECATED_ATTRIBUTE", 
-   "AVAILABLE_WEBKIT_VERSION_1_0_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_3_0": "DEPRECATED_ATTRIBUTE", 
-   "AVAILABLE_WEBKIT_VERSION_1_0_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_3_1": "DEPRECATED_ATTRIBUTE", 
-   "AVAILABLE_WEBKIT_VERSION_1_0_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_4_0": "DEPRECATED_ATTRIBUTE", 
-   "AVAILABLE_WEBKIT_VERSION_1_1_AND_LATER_BUT_DEPRECATED": "DEPRECATED_ATTRIBUTE", 
-   "AVAILABLE_WEBKIT_VERSION_1_1_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_4_0": "AVAILABLE_WEBKIT_VERSION_1_1_AND_LATER", 
-   "AVAILABLE_WEBKIT_VERSION_1_1_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_1_2": "DEPRECATED_ATTRIBUTE", 
-   "AVAILABLE_WEBKIT_VERSION_1_1_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_1_3": "DEPRECATED_ATTRIBUTE", 
-   "AVAILABLE_WEBKIT_VERSION_1_1_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_2_0": "DEPRECATED_ATTRIBUTE", 
-   "AVAILABLE_WEBKIT_VERSION_1_1_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_3_0": "DEPRECATED_ATTRIBUTE", 
-   "AVAILABLE_WEBKIT_VERSION_1_1_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_3_1": "DEPRECATED_ATTRIBUTE", 
-   "AVAILABLE_WEBKIT_VERSION_1_1_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_4_0": "DEPRECATED_ATTRIBUTE", 
-   "AVAILABLE_WEBKIT_VERSION_1_2_AND_LATER_BUT_DEPRECATED": "DEPRECATED_ATTRIBUTE", 
-   "AVAILABLE_WEBKIT_VERSION_1_2_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_4_0": "AVAILABLE_WEBKIT_VERSION_1_2_AND_LATER", 
-   "AVAILABLE_WEBKIT_VERSION_1_2_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_1_3": "DEPRECATED_ATTRIBUTE", 
-   "AVAILABLE_WEBKIT_VERSION_1_2_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_2_0": "DEPRECATED_ATTRIBUTE", 
-   "AVAILABLE_WEBKIT_VERSION_1_2_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_3_0": "DEPRECATED_ATTRIBUTE", 
-   "AVAILABLE_WEBKIT_VERSION_1_2_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_3_1": "DEPRECATED_ATTRIBUTE", 
-   "AVAILABLE_WEBKIT_VERSION_1_2_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_4_0": "DEPRECATED_ATTRIBUTE", 
-   "AVAILABLE_WEBKIT_VERSION_1_3_AND_LATER_BUT_DEPRECATED": "DEPRECATED_ATTRIBUTE", 
-   "AVAILABLE_WEBKIT_VERSION_1_3_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_4_0": "AVAILABLE_WEBKIT_VERSION_1_3_AND_LATER", 
-   "AVAILABLE_WEBKIT_VERSION_1_3_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_2_0": "DEPRECATED_ATTRIBUTE", 
-   "AVAILABLE_WEBKIT_VERSION_1_3_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_3_0": "DEPRECATED_ATTRIBUTE", 
-   "AVAILABLE_WEBKIT_VERSION_1_3_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_3_1": "DEPRECATED_ATTRIBUTE", 
-   "AVAILABLE_WEBKIT_VERSION_1_3_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_4_0": "DEPRECATED_ATTRIBUTE", 
-   "AVAILABLE_WEBKIT_VERSION_2_0_AND_LATER_BUT_DEPRECATED": "DEPRECATED_ATTRIBUTE", 
-   "AVAILABLE_WEBKIT_VERSION_2_0_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_4_0": "AVAILABLE_WEBKIT_VERSION_2_0_AND_LATER", 
-   "AVAILABLE_WEBKIT_VERSION_2_0_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_3_0": "DEPRECATED_ATTRIBUTE", 
-   "AVAILABLE_WEBKIT_VERSION_2_0_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_3_1": "DEPRECATED_ATTRIBUTE", 
-   "AVAILABLE_WEBKIT_VERSION_2_0_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_4_0": "DEPRECATED_ATTRIBUTE", 
-   "AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER_BUT_DEPRECATED": "DEPRECATED_ATTRIBUTE", 
-   "AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_4_0": "AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER", 
-   "AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_3_1": "DEPRECATED_ATTRIBUTE", 
-   "AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_4_0": "DEPRECATED_ATTRIBUTE", 
-   "AVAILABLE_WEBKIT_VERSION_3_1_AND_LATER_BUT_DEPRECATED": "DEPRECATED_ATTRIBUTE", 
-   "AVAILABLE_WEBKIT_VERSION_3_1_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_4_0": "AVAILABLE_WEBKIT_VERSION_3_1_AND_LATER", 
-   "AVAILABLE_WEBKIT_VERSION_3_1_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_4_0": "DEPRECATED_ATTRIBUTE", 
-   "AVAILABLE_WEBKIT_VERSION_4_0_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_4_0": "AVAILABLE_WEBKIT_VERSION_4_0_AND_LATER", 
-   "DEPRECATED_IN_WEBKIT_VERSION_1_0_AND_LATER": "DEPRECATED_ATTRIBUTE", 
-   "DEPRECATED_IN_WEBKIT_VERSION_1_1_AND_LATER": "DEPRECATED_ATTRIBUTE", 
-   "DEPRECATED_IN_WEBKIT_VERSION_1_2_AND_LATER": "DEPRECATED_ATTRIBUTE", 
-   "DEPRECATED_IN_WEBKIT_VERSION_1_3_AND_LATER": "DEPRECATED_ATTRIBUTE", 
-   "DEPRECATED_IN_WEBKIT_VERSION_2_0_AND_LATER": "DEPRECATED_ATTRIBUTE", 
-   "DEPRECATED_IN_WEBKIT_VERSION_3_0_AND_LATER": "DEPRECATED_ATTRIBUTE", 
-   "DEPRECATED_IN_WEBKIT_VERSION_3_1_AND_LATER": "DEPRECATED_ATTRIBUTE", 
-   "DEPRECATED_IN_WEBKIT_VERSION_4_0": "DEPRECATED_ATTRIBUTE", 
-   "WEBKIT_VERSION_MAX_ALLOWED": "WEBKIT_VERSION_LATEST", 
+   "AVAILABLE_AFTER_WEBKIT_VERSION_4_0": "WEAK_IMPORT_ATTRIBUTE",
+   "AVAILABLE_AFTER_WEBKIT_VERSION_4_0_BUT_DEPRECATED": "AVAILABLE_AFTER_WEBKIT_VERSION_4_0",
+   "AVAILABLE_IN_WEBKIT_VERSION_4_0_BUT_DEPRECATED": "DEPRECATED_ATTRIBUTE",
+   "AVAILABLE_WEBKIT_VERSION_1_0_AND_LATER_BUT_DEPRECATED": "DEPRECATED_ATTRIBUTE",
+   "AVAILABLE_WEBKIT_VERSION_1_0_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_4_0": "AVAILABLE_WEBKIT_VERSION_1_0_AND_LATER",
+   "AVAILABLE_WEBKIT_VERSION_1_0_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_1_1": "DEPRECATED_ATTRIBUTE",
+   "AVAILABLE_WEBKIT_VERSION_1_0_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_1_2": "DEPRECATED_ATTRIBUTE",
+   "AVAILABLE_WEBKIT_VERSION_1_0_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_1_3": "DEPRECATED_ATTRIBUTE",
+   "AVAILABLE_WEBKIT_VERSION_1_0_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_2_0": "DEPRECATED_ATTRIBUTE",
+   "AVAILABLE_WEBKIT_VERSION_1_0_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_3_0": "DEPRECATED_ATTRIBUTE",
+   "AVAILABLE_WEBKIT_VERSION_1_0_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_3_1": "DEPRECATED_ATTRIBUTE",
+   "AVAILABLE_WEBKIT_VERSION_1_0_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_4_0": "DEPRECATED_ATTRIBUTE",
+   "AVAILABLE_WEBKIT_VERSION_1_1_AND_LATER_BUT_DEPRECATED": "DEPRECATED_ATTRIBUTE",
+   "AVAILABLE_WEBKIT_VERSION_1_1_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_4_0": "AVAILABLE_WEBKIT_VERSION_1_1_AND_LATER",
+   "AVAILABLE_WEBKIT_VERSION_1_1_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_1_2": "DEPRECATED_ATTRIBUTE",
+   "AVAILABLE_WEBKIT_VERSION_1_1_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_1_3": "DEPRECATED_ATTRIBUTE",
+   "AVAILABLE_WEBKIT_VERSION_1_1_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_2_0": "DEPRECATED_ATTRIBUTE",
+   "AVAILABLE_WEBKIT_VERSION_1_1_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_3_0": "DEPRECATED_ATTRIBUTE",
+   "AVAILABLE_WEBKIT_VERSION_1_1_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_3_1": "DEPRECATED_ATTRIBUTE",
+   "AVAILABLE_WEBKIT_VERSION_1_1_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_4_0": "DEPRECATED_ATTRIBUTE",
+   "AVAILABLE_WEBKIT_VERSION_1_2_AND_LATER_BUT_DEPRECATED": "DEPRECATED_ATTRIBUTE",
+   "AVAILABLE_WEBKIT_VERSION_1_2_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_4_0": "AVAILABLE_WEBKIT_VERSION_1_2_AND_LATER",
+   "AVAILABLE_WEBKIT_VERSION_1_2_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_1_3": "DEPRECATED_ATTRIBUTE",
+   "AVAILABLE_WEBKIT_VERSION_1_2_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_2_0": "DEPRECATED_ATTRIBUTE",
+   "AVAILABLE_WEBKIT_VERSION_1_2_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_3_0": "DEPRECATED_ATTRIBUTE",
+   "AVAILABLE_WEBKIT_VERSION_1_2_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_3_1": "DEPRECATED_ATTRIBUTE",
+   "AVAILABLE_WEBKIT_VERSION_1_2_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_4_0": "DEPRECATED_ATTRIBUTE",
+   "AVAILABLE_WEBKIT_VERSION_1_3_AND_LATER_BUT_DEPRECATED": "DEPRECATED_ATTRIBUTE",
+   "AVAILABLE_WEBKIT_VERSION_1_3_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_4_0": "AVAILABLE_WEBKIT_VERSION_1_3_AND_LATER",
+   "AVAILABLE_WEBKIT_VERSION_1_3_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_2_0": "DEPRECATED_ATTRIBUTE",
+   "AVAILABLE_WEBKIT_VERSION_1_3_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_3_0": "DEPRECATED_ATTRIBUTE",
+   "AVAILABLE_WEBKIT_VERSION_1_3_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_3_1": "DEPRECATED_ATTRIBUTE",
+   "AVAILABLE_WEBKIT_VERSION_1_3_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_4_0": "DEPRECATED_ATTRIBUTE",
+   "AVAILABLE_WEBKIT_VERSION_2_0_AND_LATER_BUT_DEPRECATED": "DEPRECATED_ATTRIBUTE",
+   "AVAILABLE_WEBKIT_VERSION_2_0_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_4_0": "AVAILABLE_WEBKIT_VERSION_2_0_AND_LATER",
+   "AVAILABLE_WEBKIT_VERSION_2_0_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_3_0": "DEPRECATED_ATTRIBUTE",
+   "AVAILABLE_WEBKIT_VERSION_2_0_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_3_1": "DEPRECATED_ATTRIBUTE",
+   "AVAILABLE_WEBKIT_VERSION_2_0_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_4_0": "DEPRECATED_ATTRIBUTE",
+   "AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER_BUT_DEPRECATED": "DEPRECATED_ATTRIBUTE",
+   "AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_4_0": "AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER",
+   "AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_3_1": "DEPRECATED_ATTRIBUTE",
+   "AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_4_0": "DEPRECATED_ATTRIBUTE",
+   "AVAILABLE_WEBKIT_VERSION_3_1_AND_LATER_BUT_DEPRECATED": "DEPRECATED_ATTRIBUTE",
+   "AVAILABLE_WEBKIT_VERSION_3_1_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_4_0": "AVAILABLE_WEBKIT_VERSION_3_1_AND_LATER",
+   "AVAILABLE_WEBKIT_VERSION_3_1_AND_LATER_BUT_DEPRECATED_IN_WEBKIT_VERSION_4_0": "DEPRECATED_ATTRIBUTE",
+   "AVAILABLE_WEBKIT_VERSION_4_0_AND_LATER_BUT_DEPRECATED_AFTER_WEBKIT_VERSION_4_0": "AVAILABLE_WEBKIT_VERSION_4_0_AND_LATER",
+   "DEPRECATED_IN_WEBKIT_VERSION_1_0_AND_LATER": "DEPRECATED_ATTRIBUTE",
+   "DEPRECATED_IN_WEBKIT_VERSION_1_1_AND_LATER": "DEPRECATED_ATTRIBUTE",
+   "DEPRECATED_IN_WEBKIT_VERSION_1_2_AND_LATER": "DEPRECATED_ATTRIBUTE",
+   "DEPRECATED_IN_WEBKIT_VERSION_1_3_AND_LATER": "DEPRECATED_ATTRIBUTE",
+   "DEPRECATED_IN_WEBKIT_VERSION_2_0_AND_LATER": "DEPRECATED_ATTRIBUTE",
+   "DEPRECATED_IN_WEBKIT_VERSION_3_0_AND_LATER": "DEPRECATED_ATTRIBUTE",
+   "DEPRECATED_IN_WEBKIT_VERSION_3_1_AND_LATER": "DEPRECATED_ATTRIBUTE",
+   "DEPRECATED_IN_WEBKIT_VERSION_4_0": "DEPRECATED_ATTRIBUTE",
+   "WEBKIT_VERSION_MAX_ALLOWED": "WEBKIT_VERSION_LATEST",
    "WEBKIT_VERSION_MIN_REQUIRED": "WEBKIT_VERSION_4_0"
-  }, 
-  "called_definitions": {}, 
-  "cftypes": {}, 
-  "classes": {}, 
+  },
+  "called_definitions": {},
+  "cftypes": {},
+  "classes": {},
   "enum": {
-   "WEBKIT_VERSION_1_0": 256, 
-   "WEBKIT_VERSION_1_1": 272, 
-   "WEBKIT_VERSION_1_2": 288, 
-   "WEBKIT_VERSION_1_3": 304, 
-   "WEBKIT_VERSION_2_0": 512, 
-   "WEBKIT_VERSION_3_0": 768, 
-   "WEBKIT_VERSION_3_1": 784, 
-   "WEBKIT_VERSION_4_0": 1024, 
-   "WEBKIT_VERSION_LATEST": 39321, 
-   "kJSClassAttributeNoAutomaticPrototype": 2, 
-   "kJSClassAttributeNone": 0, 
-   "kJSPropertyAttributeDontDelete": 8, 
-   "kJSPropertyAttributeDontEnum": 4, 
-   "kJSPropertyAttributeNone": 0, 
-   "kJSPropertyAttributeReadOnly": 2, 
-   "kJSTypeBoolean": 2, 
-   "kJSTypeNull": 1, 
-   "kJSTypeNumber": 3, 
-   "kJSTypeObject": 5, 
-   "kJSTypeString": 4, 
+   "WEBKIT_VERSION_1_0": 256,
+   "WEBKIT_VERSION_1_1": 272,
+   "WEBKIT_VERSION_1_2": 288,
+   "WEBKIT_VERSION_1_3": 304,
+   "WEBKIT_VERSION_2_0": 512,
+   "WEBKIT_VERSION_3_0": 768,
+   "WEBKIT_VERSION_3_1": 784,
+   "WEBKIT_VERSION_4_0": 1024,
+   "WEBKIT_VERSION_LATEST": 39321,
+   "kJSClassAttributeNoAutomaticPrototype": 2,
+   "kJSClassAttributeNone": 0,
+   "kJSPropertyAttributeDontDelete": 8,
+   "kJSPropertyAttributeDontEnum": 4,
+   "kJSPropertyAttributeNone": 0,
+   "kJSPropertyAttributeReadOnly": 2,
+   "kJSTypeBoolean": 2,
+   "kJSTypeNull": 1,
+   "kJSTypeNumber": 3,
+   "kJSTypeObject": 5,
+   "kJSTypeString": 4,
    "kJSTypeUndefined": 0
-  }, 
-  "expressions": {}, 
+  },
+  "expressions": {},
   "externs": {
    "kJSClassDefinitionEmpty": {
     "typestr": "{_JSClassDefinition=iI^c^{OpaqueJSClass=}^{_JSStaticValue=^c^?^?I}^{_JSStaticFunction=^c^?I}^?^?^?^?^?^?^?^?^?^?^?}"
    }
-  }, 
-  "formal_protocols": {}, 
+  },
+  "formal_protocols": {},
   "func_macros": {
    "WEBKIT_OBJC_METHOD_ANNOTATION": "def WEBKIT_OBJC_METHOD_ANNOTATION(ANNOTATION): return ANNOTATION"
-  }, 
+  },
   "functions": {
    "JSCheckScriptSyntax": {
     "args": [
      {
-      "name": "ctx", 
+      "name": "ctx",
       "typestr": "^{OpaqueJSContext=}"
-     }, 
+     },
      {
-      "name": "script", 
+      "name": "script",
       "typestr": "^{OpaqueJSString=}"
-     }, 
+     },
      {
-      "name": "sourceURL", 
+      "name": "sourceURL",
       "typestr": "^{OpaqueJSString=}"
-     }, 
+     },
      {
-      "name": "startingLineNumber", 
+      "name": "startingLineNumber",
       "typestr": "i"
-     }, 
+     },
      {
-      "name": "exception", 
+      "name": "exception",
       "typestr": "^^{OpaqueJSValue=}"
      }
-    ], 
+    ],
     "retval": {
      "typestr": "B"
     }
-   }, 
+   },
    "JSClassCreate": {
     "args": [
      {
-      "name": "definition", 
+      "name": "definition",
       "typestr": "^{_JSClassDefinition=iI^c^{OpaqueJSClass=}^{_JSStaticValue=^c^?^?I}^{_JSStaticFunction=^c^?I}^?^?^?^?^?^?^?^?^?^?^?}"
      }
-    ], 
+    ],
     "retval": {
-     "already_cfretained": true, 
+     "already_cfretained": true,
      "typestr": "^{OpaqueJSClass=}"
     }
-   }, 
+   },
    "JSClassRelease": {
     "args": [
      {
-      "name": "jsClass", 
+      "name": "jsClass",
       "typestr": "^{OpaqueJSClass=}"
      }
-    ], 
+    ],
     "retval": {
      "typestr": "v"
     }
-   }, 
+   },
    "JSClassRetain": {
     "args": [
      {
-      "name": "jsClass", 
+      "name": "jsClass",
       "typestr": "^{OpaqueJSClass=}"
      }
-    ], 
+    ],
     "retval": {
      "typestr": "^{OpaqueJSClass=}"
     }
-   }, 
+   },
    "JSContextGetGlobalObject": {
     "args": [
      {
-      "name": "ctx", 
+      "name": "ctx",
       "typestr": "^{OpaqueJSContext=}"
      }
-    ], 
+    ],
     "retval": {
      "typestr": "^{OpaqueJSValue=}"
     }
-   }, 
+   },
    "JSContextGetGroup": {
     "args": [
      {
-      "name": "ctx", 
+      "name": "ctx",
       "typestr": "^{OpaqueJSContext=}"
      }
-    ], 
+    ],
     "retval": {
      "typestr": "^{OpaqueJSContextGroup=}"
     }
-   }, 
+   },
    "JSContextGroupCreate": {
-    "args": [], 
+    "args": [],
     "retval": {
-     "already_cfretained": true, 
+     "already_cfretained": true,
      "typestr": "^{OpaqueJSContextGroup=}"
-    }, 
+    },
     "xxx-no-params": true
-   }, 
+   },
    "JSContextGroupRelease": {
     "args": [
      {
-      "name": "group", 
+      "name": "group",
       "typestr": "^{OpaqueJSContextGroup=}"
      }
-    ], 
+    ],
     "retval": {
      "typestr": "v"
     }
-   }, 
+   },
    "JSContextGroupRetain": {
     "args": [
      {
-      "name": "group", 
+      "name": "group",
       "typestr": "^{OpaqueJSContextGroup=}"
      }
-    ], 
+    ],
     "retval": {
      "typestr": "^{OpaqueJSContextGroup=}"
     }
-   }, 
+   },
    "JSEvaluateScript": {
     "args": [
      {
-      "name": "ctx", 
+      "name": "ctx",
       "typestr": "^{OpaqueJSContext=}"
-     }, 
+     },
      {
-      "name": "script", 
+      "name": "script",
       "typestr": "^{OpaqueJSString=}"
-     }, 
+     },
      {
-      "name": "thisObject", 
+      "name": "thisObject",
       "typestr": "^{OpaqueJSValue=}"
-     }, 
+     },
      {
-      "name": "sourceURL", 
+      "name": "sourceURL",
       "typestr": "^{OpaqueJSString=}"
-     }, 
+     },
      {
-      "name": "startingLineNumber", 
+      "name": "startingLineNumber",
       "typestr": "i"
-     }, 
+     },
      {
-      "name": "exception", 
+      "name": "exception",
       "typestr": "^^{OpaqueJSValue=}"
      }
-    ], 
+    ],
     "retval": {
      "typestr": "^{OpaqueJSValue=}"
     }
-   }, 
+   },
    "JSGarbageCollect": {
     "args": [
      {
-      "name": "ctx", 
+      "name": "ctx",
       "typestr": "^{OpaqueJSContext=}"
      }
-    ], 
+    ],
     "retval": {
      "typestr": "v"
     }
-   }, 
+   },
    "JSGlobalContextCreate": {
     "args": [
      {
-      "name": "globalObjectClass", 
+      "name": "globalObjectClass",
       "typestr": "^{OpaqueJSClass=}"
      }
-    ], 
+    ],
     "retval": {
-     "already_cfretained": true, 
+     "already_cfretained": true,
      "typestr": "^{OpaqueJSContext=}"
     }
-   }, 
+   },
    "JSGlobalContextCreateInGroup": {
     "args": [
      {
-      "name": "group", 
+      "name": "group",
       "typestr": "^{OpaqueJSContextGroup=}"
-     }, 
+     },
      {
-      "name": "globalObjectClass", 
+      "name": "globalObjectClass",
       "typestr": "^{OpaqueJSClass=}"
      }
-    ], 
+    ],
     "retval": {
-     "already_cfretained": true, 
+     "already_cfretained": true,
      "typestr": "^{OpaqueJSContext=}"
     }
-   }, 
+   },
    "JSGlobalContextRelease": {
     "args": [
      {
-      "name": "ctx", 
+      "name": "ctx",
       "typestr": "^{OpaqueJSContext=}"
      }
-    ], 
+    ],
     "retval": {
      "typestr": "v"
     }
-   }, 
+   },
    "JSGlobalContextRetain": {
     "args": [
      {
-      "name": "ctx", 
+      "name": "ctx",
       "typestr": "^{OpaqueJSContext=}"
      }
-    ], 
+    ],
     "retval": {
      "typestr": "^{OpaqueJSContext=}"
     }
-   }, 
+   },
    "JSObjectCallAsConstructor": {
     "args": [
      {
-      "name": "ctx", 
+      "name": "ctx",
       "typestr": "^{OpaqueJSContext=}"
-     }, 
+     },
      {
-      "name": "object", 
+      "name": "object",
       "typestr": "^{OpaqueJSValue=}"
-     }, 
+     },
      {
-      "name": "argumentCount", 
-      "typestr": "l"
-     }, 
+      "name": "argumentCount",
+      "typestr": "L"
+     },
      {
-      "name": "arguments", 
+      "name": "arguments",
       "typestr": "^^{OpaqueJSValue=}"
-     }, 
+     },
      {
-      "name": "exception", 
+      "name": "exception",
       "typestr": "^^{OpaqueJSValue=}"
      }
-    ], 
+    ],
     "retval": {
      "typestr": "^{OpaqueJSValue=}"
     }
-   }, 
+   },
    "JSObjectCallAsFunction": {
     "args": [
      {
-      "name": "ctx", 
+      "name": "ctx",
       "typestr": "^{OpaqueJSContext=}"
-     }, 
+     },
      {
-      "name": "object", 
+      "name": "object",
       "typestr": "^{OpaqueJSValue=}"
-     }, 
+     },
      {
-      "name": "thisObject", 
+      "name": "thisObject",
       "typestr": "^{OpaqueJSValue=}"
-     }, 
+     },
      {
-      "name": "argumentCount", 
-      "typestr": "l"
-     }, 
+      "name": "argumentCount",
+      "typestr": "L"
+     },
      {
-      "name": "arguments", 
+      "name": "arguments",
       "typestr": "^^{OpaqueJSValue=}"
-     }, 
+     },
      {
-      "name": "exception", 
+      "name": "exception",
       "typestr": "^^{OpaqueJSValue=}"
      }
-    ], 
+    ],
     "retval": {
      "typestr": "^{OpaqueJSValue=}"
     }
-   }, 
+   },
    "JSObjectCopyPropertyNames": {
     "args": [
      {
-      "name": "ctx", 
+      "name": "ctx",
       "typestr": "^{OpaqueJSContext=}"
-     }, 
+     },
      {
-      "name": "object", 
+      "name": "object",
       "typestr": "^{OpaqueJSValue=}"
      }
-    ], 
+    ],
     "retval": {
-     "already_cfretained": true, 
+     "already_cfretained": true,
      "typestr": "^{OpaqueJSPropertyNameArray=}"
     }
-   }, 
+   },
    "JSObjectDeleteProperty": {
     "args": [
      {
-      "name": "ctx", 
+      "name": "ctx",
       "typestr": "^{OpaqueJSContext=}"
-     }, 
+     },
      {
-      "name": "object", 
+      "name": "object",
       "typestr": "^{OpaqueJSValue=}"
-     }, 
+     },
      {
-      "name": "propertyName", 
+      "name": "propertyName",
       "typestr": "^{OpaqueJSString=}"
-     }, 
+     },
      {
-      "name": "exception", 
+      "name": "exception",
       "typestr": "^^{OpaqueJSValue=}"
      }
-    ], 
+    ],
     "retval": {
      "typestr": "B"
     }
-   }, 
+   },
    "JSObjectGetPrivate": {
     "args": [
      {
-      "name": "object", 
+      "name": "object",
       "typestr": "^{OpaqueJSValue=}"
      }
-    ], 
+    ],
     "retval": {
      "typestr": "^v"
     }
-   }, 
+   },
    "JSObjectGetProperty": {
     "args": [
      {
-      "name": "ctx", 
+      "name": "ctx",
       "typestr": "^{OpaqueJSContext=}"
-     }, 
+     },
      {
-      "name": "object", 
+      "name": "object",
       "typestr": "^{OpaqueJSValue=}"
-     }, 
+     },
      {
-      "name": "propertyName", 
+      "name": "propertyName",
       "typestr": "^{OpaqueJSString=}"
-     }, 
+     },
      {
-      "name": "exception", 
+      "name": "exception",
       "typestr": "^^{OpaqueJSValue=}"
      }
-    ], 
+    ],
     "retval": {
      "typestr": "^{OpaqueJSValue=}"
     }
-   }, 
+   },
    "JSObjectGetPropertyAtIndex": {
     "args": [
      {
-      "name": "ctx", 
+      "name": "ctx",
       "typestr": "^{OpaqueJSContext=}"
-     }, 
+     },
      {
-      "name": "object", 
+      "name": "object",
       "typestr": "^{OpaqueJSValue=}"
-     }, 
+     },
      {
-      "name": "propertyIndex", 
+      "name": "propertyIndex",
       "typestr": "I"
-     }, 
+     },
      {
-      "name": "exception", 
+      "name": "exception",
       "typestr": "^^{OpaqueJSValue=}"
      }
-    ], 
+    ],
     "retval": {
      "typestr": "^{OpaqueJSValue=}"
     }
-   }, 
+   },
    "JSObjectGetPrototype": {
     "args": [
      {
-      "name": "ctx", 
+      "name": "ctx",
       "typestr": "^{OpaqueJSContext=}"
-     }, 
+     },
      {
-      "name": "object", 
+      "name": "object",
       "typestr": "^{OpaqueJSValue=}"
      }
-    ], 
+    ],
     "retval": {
      "typestr": "^{OpaqueJSValue=}"
     }
-   }, 
+   },
    "JSObjectHasProperty": {
     "args": [
      {
-      "name": "ctx", 
+      "name": "ctx",
       "typestr": "^{OpaqueJSContext=}"
-     }, 
+     },
      {
-      "name": "object", 
+      "name": "object",
       "typestr": "^{OpaqueJSValue=}"
-     }, 
+     },
      {
-      "name": "propertyName", 
+      "name": "propertyName",
       "typestr": "^{OpaqueJSString=}"
      }
-    ], 
+    ],
     "retval": {
      "typestr": "B"
     }
-   }, 
+   },
    "JSObjectIsConstructor": {
     "args": [
      {
-      "name": "ctx", 
+      "name": "ctx",
       "typestr": "^{OpaqueJSContext=}"
-     }, 
+     },
      {
-      "name": "object", 
+      "name": "object",
       "typestr": "^{OpaqueJSValue=}"
      }
-    ], 
+    ],
     "retval": {
      "typestr": "B"
     }
-   }, 
+   },
    "JSObjectIsFunction": {
     "args": [
      {
-      "name": "ctx", 
+      "name": "ctx",
       "typestr": "^{OpaqueJSContext=}"
-     }, 
+     },
      {
-      "name": "object", 
+      "name": "object",
       "typestr": "^{OpaqueJSValue=}"
      }
-    ], 
+    ],
     "retval": {
      "typestr": "B"
     }
-   }, 
+   },
    "JSObjectMake": {
     "args": [
      {
-      "name": "ctx", 
+      "name": "ctx",
       "typestr": "^{OpaqueJSContext=}"
-     }, 
+     },
      {
-      "name": "jsClass", 
+      "name": "jsClass",
       "typestr": "^{OpaqueJSClass=}"
-     }, 
+     },
      {
-      "name": "data", 
+      "name": "data",
       "typestr": "^v"
      }
-    ], 
+    ],
     "retval": {
      "typestr": "^{OpaqueJSValue=}"
     }
-   }, 
+   },
    "JSObjectMakeArray": {
     "args": [
      {
-      "name": "ctx", 
+      "name": "ctx",
       "typestr": "^{OpaqueJSContext=}"
-     }, 
+     },
      {
-      "name": "argumentCount", 
+      "name": "argumentCount",
       "typestr": "l"
-     }, 
+     },
      {
-      "name": "arguments", 
+      "name": "arguments",
       "typestr": "^^{OpaqueJSValue=}"
-     }, 
+     },
      {
-      "name": "exception", 
+      "name": "exception",
       "typestr": "^^{OpaqueJSValue=}"
      }
-    ], 
+    ],
     "retval": {
      "typestr": "^{OpaqueJSValue=}"
     }
-   }, 
+   },
    "JSObjectMakeConstructor": {
     "args": [
      {
-      "name": "ctx", 
+      "name": "ctx",
       "typestr": "^{OpaqueJSContext=}"
-     }, 
+     },
      {
-      "name": "jsClass", 
+      "name": "jsClass",
       "typestr": "^{OpaqueJSClass=}"
-     }, 
+     },
      {
       "function": {
        "args": [
         {
          "typestr": [
-          "^{OpaqueJSContext=}", 
+          "^{OpaqueJSContext=}",
           false
          ]
-        }, 
+        },
         {
          "typestr": [
-          "^{OpaqueJSValue=}", 
+          "^{OpaqueJSValue=}",
           false
          ]
-        }, 
+        },
         {
          "typestr": [
-          "l", 
+          "l",
           false
          ]
-        }, 
+        },
         {
          "typestr": [
-          "^^{OpaqueJSValue=}", 
+          "^^{OpaqueJSValue=}",
           false
          ]
-        }, 
+        },
         {
          "typestr": [
-          "^^{OpaqueJSValue=}", 
+          "^^{OpaqueJSValue=}",
           false
          ]
         }
-       ], 
+       ],
        "retval": {
         "typestr": [
-         "^{OpaqueJSValue=}", 
+         "^{OpaqueJSValue=}",
          false
         ]
        }
-      }, 
-      "name": "callAsConstructor", 
+      },
+      "name": "callAsConstructor",
       "typestr": "^?"
      }
-    ], 
+    ],
     "retval": {
      "typestr": "^{OpaqueJSValue=}"
     }
-   }, 
+   },
    "JSObjectMakeDate": {
     "args": [
      {
-      "name": "ctx", 
+      "name": "ctx",
       "typestr": "^{OpaqueJSContext=}"
-     }, 
+     },
      {
-      "name": "argumentCount", 
+      "name": "argumentCount",
       "typestr": "l"
-     }, 
+     },
      {
-      "name": "arguments", 
+      "name": "arguments",
       "typestr": "^^{OpaqueJSValue=}"
-     }, 
+     },
      {
-      "name": "exception", 
+      "name": "exception",
       "typestr": "^^{OpaqueJSValue=}"
      }
-    ], 
+    ],
     "retval": {
      "typestr": "^{OpaqueJSValue=}"
     }
-   }, 
+   },
    "JSObjectMakeError": {
     "args": [
      {
-      "name": "ctx", 
+      "name": "ctx",
       "typestr": "^{OpaqueJSContext=}"
-     }, 
+     },
      {
-      "name": "argumentCount", 
+      "name": "argumentCount",
       "typestr": "l"
-     }, 
+     },
      {
-      "name": "arguments", 
+      "name": "arguments",
       "typestr": "^^{OpaqueJSValue=}"
-     }, 
+     },
      {
-      "name": "exception", 
+      "name": "exception",
       "typestr": "^^{OpaqueJSValue=}"
      }
-    ], 
+    ],
     "retval": {
      "typestr": "^{OpaqueJSValue=}"
     }
-   }, 
+   },
    "JSObjectMakeFunction": {
     "args": [
      {
-      "name": "ctx", 
+      "name": "ctx",
       "typestr": "^{OpaqueJSContext=}"
-     }, 
+     },
      {
-      "name": "name", 
+      "name": "name",
       "typestr": "^{OpaqueJSString=}"
-     }, 
+     },
      {
-      "name": "parameterCount", 
+      "name": "parameterCount",
       "typestr": "I"
-     }, 
+     },
      {
-      "name": "parameterNames", 
+      "name": "parameterNames",
       "typestr": "^^{OpaqueJSString=}"
-     }, 
+     },
      {
-      "name": "body", 
+      "name": "body",
       "typestr": "^{OpaqueJSString=}"
-     }, 
+     },
      {
-      "name": "sourceURL", 
+      "name": "sourceURL",
       "typestr": "^{OpaqueJSString=}"
-     }, 
+     },
      {
-      "name": "startingLineNumber", 
+      "name": "startingLineNumber",
       "typestr": "i"
-     }, 
+     },
      {
-      "name": "exception", 
+      "name": "exception",
       "typestr": "^^{OpaqueJSValue=}"
      }
-    ], 
+    ],
     "retval": {
      "typestr": "^{OpaqueJSValue=}"
     }
-   }, 
+   },
    "JSObjectMakeFunctionWithCallback": {
     "args": [
      {
-      "name": "ctx", 
+      "name": "ctx",
       "typestr": "^{OpaqueJSContext=}"
-     }, 
+     },
      {
-      "name": "name", 
+      "name": "name",
       "typestr": "^{OpaqueJSString=}"
-     }, 
+     },
      {
       "function": {
        "args": [
         {
          "typestr": [
-          "^{OpaqueJSContext=}", 
+          "^{OpaqueJSContext=}",
           false
          ]
-        }, 
+        },
         {
          "typestr": [
-          "^{OpaqueJSValue=}", 
+          "^{OpaqueJSValue=}",
           false
          ]
-        }, 
+        },
         {
          "typestr": [
-          "^{OpaqueJSValue=}", 
+          "^{OpaqueJSValue=}",
           false
          ]
-        }, 
+        },
         {
          "typestr": [
-          "l", 
+          "l",
           false
          ]
-        }, 
+        },
         {
          "typestr": [
-          "^^{OpaqueJSValue=}", 
+          "^^{OpaqueJSValue=}",
           false
          ]
-        }, 
+        },
         {
          "typestr": [
-          "^^{OpaqueJSValue=}", 
+          "^^{OpaqueJSValue=}",
           false
          ]
         }
-       ], 
+       ],
        "retval": {
         "typestr": [
-         "^{OpaqueJSValue=}", 
+         "^{OpaqueJSValue=}",
          false
         ]
        }
-      }, 
-      "name": "callAsFunction", 
+      },
+      "name": "callAsFunction",
       "typestr": "^?"
      }
-    ], 
+    ],
     "retval": {
      "typestr": "^{OpaqueJSValue=}"
     }
-   }, 
+   },
    "JSObjectMakeRegExp": {
     "args": [
      {
-      "name": "ctx", 
+      "name": "ctx",
       "typestr": "^{OpaqueJSContext=}"
-     }, 
+     },
      {
-      "name": "argumentCount", 
+      "name": "argumentCount",
       "typestr": "l"
-     }, 
+     },
      {
-      "name": "arguments", 
+      "name": "arguments",
       "typestr": "^^{OpaqueJSValue=}"
-     }, 
+     },
      {
-      "name": "exception", 
+      "name": "exception",
       "typestr": "^^{OpaqueJSValue=}"