void jsb_set_jsobject_for_proxy(JSObject *jsobj, void* proxy) { CCASSERT( !jsb_get_jsobject_for_proxy(proxy), "Already added. abort"); tHashJSObject *element = (tHashJSObject*) malloc( sizeof( *element ) ); element->proxy = proxy; element->jsObject = jsobj; HASH_ADD_PTR( reverse_hash, proxy, element ); }
jsval c_class_to_jsval( JSContext *cx, void* handle, JSObject* object, JSClass *klass, const char* class_name) { JSObject *jsobj; jsobj = jsb_get_jsobject_for_proxy(handle); if( !jsobj ) { jsobj = JS_NewObject(cx, klass, object, NULL); CCAssert(jsobj, "Invalid object"); jsb_set_c_proxy_for_jsobject(jsobj, handle, JSB_C_FLAG_DO_NOT_CALL_FREE); jsb_set_jsobject_for_proxy(jsobj, handle); } return OBJECT_TO_JSVAL(jsobj); }