]> git.saurik.com Git - cycript.git/blobdiff - ObjectiveC/Library.mm
Rename Instance::Transient to Instance::Permament.
[cycript.git] / ObjectiveC / Library.mm
index dce14d7d6d8dd8cb7d6e70b4048240b7ecd97b81..24ff4ce2bb06699d82ee37411afab53bf6d6e4e3 100644 (file)
@@ -413,7 +413,7 @@ JSObjectRef Instance::Make(JSContextRef context, id object, Flags flags) {
 }
 
 Instance::~Instance() {
-    if ((flags_ & Transient) == 0)
+    if ((flags_ & Permanent) == 0)
         [GetValue() release];
 }
 
@@ -429,11 +429,11 @@ struct Message_privateData :
     }
 };
 
-JSObjectRef CYMakeInstance(JSContextRef context, id object, bool transient) {
+JSObjectRef CYMakeInstance(JSContextRef context, id object, bool permanent) {
     Instance::Flags flags;
 
-    if (transient)
-        flags = Instance::Transient;
+    if (permanent)
+        flags = Instance::Permanent;
     else {
         flags = Instance::None;
         object = [object retain];
@@ -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 {
@@ -2845,8 +2840,8 @@ void CYObjectiveC_Initialize() { /*XXX*/ JSContextRef context(NULL); CYPoolTry {
 
     CYPool &pool(CYGetGlobalPool());
 
-    Object_type = new(pool) Type_privateData("@");
-    Selector_type = new(pool) Type_privateData(":");
+    Object_type = new(pool) Type_privateData(sig::object_P);
+    Selector_type = new(pool) Type_privateData(sig::selector_P);
 
     NSArray_ = objc_getClass("NSArray");
     NSBlock_ = objc_getClass("NSBlock");