+ JSObjectMakeArray$ = reinterpret_cast<JSObjectRef (*)(JSContextRef, size_t, const JSValueRef[], JSValueRef *)>(dlsym(RTLD_DEFAULT, "JSObjectMakeArray"));
+
+ JSClassDefinition definition;
+
+ definition = kJSClassDefinitionEmpty;
+ definition.className = "All";
+ definition.getProperty = &All_getProperty;
+ All_ = JSClassCreate(&definition);
+
+ definition = kJSClassDefinitionEmpty;
+ definition.className = "Context";
+ definition.finalize = &CYFinalize;
+ Context_ = JSClassCreate(&definition);
+
+ definition = kJSClassDefinitionEmpty;
+ definition.className = "Functor";
+ definition.staticFunctions = cy::Functor::StaticFunctions;
+ definition.callAsFunction = &Functor_callAsFunction;
+ definition.finalize = &CYFinalize;
+ Functor_ = JSClassCreate(&definition);
+
+ definition = kJSClassDefinitionEmpty;
+ definition.className = "Pointer";
+ definition.staticFunctions = Pointer_staticFunctions;
+ definition.getProperty = &Pointer_getProperty;
+ definition.setProperty = &Pointer_setProperty;
+ definition.finalize = &CYFinalize;
+ Pointer_ = JSClassCreate(&definition);
+
+ definition = kJSClassDefinitionEmpty;
+ definition.className = "Struct";
+ definition.staticFunctions = Struct_staticFunctions;
+ definition.getProperty = &Struct_getProperty;
+ definition.setProperty = &Struct_setProperty;
+ definition.getPropertyNames = &Struct_getPropertyNames;
+ definition.finalize = &CYFinalize;
+ Struct_ = JSClassCreate(&definition);
+
+ definition = kJSClassDefinitionEmpty;
+ definition.className = "Type";
+ definition.staticFunctions = Type_staticFunctions;
+ definition.getProperty = &Type_getProperty;
+ definition.callAsFunction = &Type_callAsFunction;
+ definition.callAsConstructor = &Type_callAsConstructor;
+ definition.finalize = &CYFinalize;
+ Type_privateData::Class_ = JSClassCreate(&definition);
+
+ definition = kJSClassDefinitionEmpty;
+ //definition.getProperty = &Global_getProperty;
+ Global_ = JSClassCreate(&definition);
+
+ Array_s = JSStringCreateWithUTF8CString("Array");
+ cy_s = JSStringCreateWithUTF8CString("$cy");
+ length_s = JSStringCreateWithUTF8CString("length");
+ message_s = JSStringCreateWithUTF8CString("message");
+ name_s = JSStringCreateWithUTF8CString("name");
+ pop_s = JSStringCreateWithUTF8CString("pop");
+ prototype_s = JSStringCreateWithUTF8CString("prototype");
+ push_s = JSStringCreateWithUTF8CString("push");
+ splice_s = JSStringCreateWithUTF8CString("splice");
+ toCYON_s = JSStringCreateWithUTF8CString("toCYON");
+ toJSON_s = JSStringCreateWithUTF8CString("toJSON");
+
+ Result_ = JSStringCreateWithUTF8CString("_");
+
+ if (hooks_ != NULL && hooks_->Initialize != NULL)
+ (*hooks_->Initialize)();