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 );
}
예제 #2
0
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);
}