return JSObjectMake(context, Message_, internal);
}
-static IMP CYMakeMessage(JSContextRef context, JSValueRef value, const char *type) {
+static IMP CYMakeMessage(JSContextRef context, JSValueRef value, const char *encoding) {
JSObjectRef function(CYCastJSObject(context, value));
- Closure_privateData *internal(CYMakeFunctor_(context, function, type, &MessageClosure_));
+ CYPool pool;
+ sig::Signature signature;
+ sig::Parse(pool, &signature, encoding, &Structor_);
+ Closure_privateData *internal(CYMakeFunctor_(context, function, signature, &MessageClosure_));
// XXX: see notes in Library.cpp about needing to leak
return reinterpret_cast<IMP>(internal->GetValue());
}
else
method = NULL;
- if (const char *type = CYPoolTypeEncoding(pool, context, sel, method))
- return CYCastJSValue(context, CYJSString(type));
+ const char *encoding(CYPoolTypeEncoding(pool, context, sel, method));
+ if (encoding == NULL)
+ return CYJSNull(context);
- return CYJSNull(context);
+ sig::Signature signature;
+ sig::Parse(pool, &signature, encoding, &Structor_);
+ return CYMakeType(context, &signature);
} CYCatch(NULL) }
static JSStaticValue Selector_staticValues[2] = {
JSObjectRef box(JSObjectMakeFunctionWithCallback(context, CYJSString("box"), &Instance_box_callAsFunction));
CYSetProperty(context, Instance, CYJSString("box"), box);
-#if defined(__APPLE__) && defined(__arm__) && 0
- CYSetProperty(context, all, CYJSString("objc_registerClassPair"), &objc_registerClassPair_, kJSPropertyAttributeDontEnum);
-#endif
-
#ifdef __APPLE__
CYSetProperty(context, all, CYJSString("choose"), &choose, kJSPropertyAttributeDontEnum);
#endif