]> git.saurik.com Git - cycript.git/commitdiff
Directly create types for Objective-C field types.
authorJay Freeman (saurik) <saurik@saurik.com>
Mon, 13 Oct 2014 11:09:26 +0000 (04:09 -0700)
committerJay Freeman (saurik) <saurik@saurik.com>
Mon, 13 Oct 2014 11:15:55 +0000 (04:15 -0700)
Internal.hpp
JavaScript.hpp
ObjectiveC/Library.mm

index 9bd4012c87fcf602a9b9ea0d12caf8e476851d82..e0f732af6cc9270db0dacd8f60d4347527bf75c0 100644 (file)
@@ -35,7 +35,6 @@
 JSGlobalContextRef CYGetJSContext(JSContextRef context);
 void Structor_(CYPool &pool, sig::Type *&type);
 
-JSObjectRef CYMakeType(JSContextRef context, const char *type);
 JSObjectRef CYMakeType(JSContextRef context, sig::Type *type);
 
 extern JSClassRef Functor_;
index 80599e681aa615cb8ab746a16cc030aa884649f5..9408c78d89e301dd0dc58e092ce0617b6f6d3cb8 100644 (file)
@@ -134,7 +134,6 @@ struct CYRegisterHook {
 
 JSObjectRef CYMakePointer(JSContextRef context, void *pointer, size_t length, sig::Type *type, ffi_type *ffi, JSObjectRef owner);
 
-JSObjectRef CYMakeType(JSContextRef context, const char *encoding);
 JSObjectRef CYMakeType(JSContextRef context, sig::Type *type);
 JSObjectRef CYMakeType(JSContextRef context, sig::Signature *signature);
 
index dce14d7d6d8dd8cb7d6e70b4048240b7ecd97b81..32426a5ae974d7fdf4b495a5c051d3985690d35e 100644 (file)
@@ -2732,16 +2732,11 @@ static JSValueRef Class_callAsFunction_pointerTo(JSContextRef context, JSObjectR
     if (!CYIsClass(value))
         CYThrow("non-Class object cannot be used as Type");
 
-    // XXX: this is a very silly implementation
-
-    std::ostringstream type;
-    type << "@\"";
-    type << class_getName(value);
-    type << "\"";
-
-    CYPoolTry {
-        return CYMakeType(context, type.str().c_str());
-    } CYPoolCatch(NULL)
+    sig::Type type;
+    memset(&type, 0, sizeof(type));
+    type.primitive = sig::object_P;
+    type.name = class_getName(value);
+    return CYMakeType(context, &type);
 } CYCatch(NULL) return /*XXX*/ NULL; }
 
 static JSValueRef Selector_callAsFunction_toString(JSContextRef context, JSObjectRef object, JSObjectRef _this, size_t count, const JSValueRef arguments[], JSValueRef *exception) { CYTry {