static Class NSCFBoolean_;
static Class NSCFType_;
static Class NSGenericDeallocHandler_;
-static Class NSZombie_;
#else
static Class NSBoolNumber_;
#endif
static Class NSDictionary_;
static Class NSNumber_;
static Class NSString_;
+static Class NSZombie_;
static Class Object_;
static Type_privateData *Object_type;
return [NSString stringWithUTF8String:name];
}
-#ifdef __APPLE__
if (_class == NSZombie_)
return [NSString stringWithFormat:@"<_NSZombie_: %p>", value];
-#endif
SEL sel(@selector(cy$toCYON:inSet:));
}
}
-#ifdef __APPLE__
struct PropertyAttributes {
CYPool pool_;
}
};
-#endif
@interface CYWebUndefined : NSObject {
}
if ([name isEqualToString:@"length"]) {
// XXX: is this not intelligent?
NSNumber *number(reinterpret_cast<NSNumber *>(value));
-#ifdef __APPLE__
NSUInteger size([number unsignedIntegerValue]);
-#else
- NSUInteger size([number unsignedIntValue]);
-#endif
NSUInteger count([self count]);
if (size < count)
[self removeObjectsInRange:NSMakeRange(size, count - size)];
/* }}} */
static bool CYIsClass(id self) {
-#ifdef __APPLE__
return class_isMetaClass(object_getClass(self));
-#else
- return GSObjCIsClass(self);
-#endif
}
Class CYCastClass(CYPool &pool, JSContextRef context, JSValueRef value) {
if (objc_method *method = class_getInstanceMethod(_class, selector)) {
if (!devoid)
return true;
-#if OBJC_API_VERSION >= 2
char type[16];
method_getReturnType(method, type, sizeof(type));
-#else
- const char *type(method_getTypeEncoding(method));
-#endif
if (type[0] != 'v')
return true;
}
const char *string(CYPoolCString(pool, context, name));
-#ifdef __APPLE__
if (class_getProperty(_class, string) != NULL)
return true;
-#endif
if (CYHasImplicitProperties(_class))
if (SEL sel = sel_getUid(string))
const char *string(CYPoolCString(pool, context, name));
Class _class(object_getClass(self));
-#ifdef __APPLE__
if (objc_property_t property = class_getProperty(_class, string)) {
PropertyAttributes attributes(property);
SEL sel(sel_registerName(attributes.Getter()));
return CYSendMessage(pool, context, self, NULL, sel, 0, NULL, false);
}
-#endif
if (CYHasImplicitProperties(_class))
if (SEL sel = sel_getUid(string))
const char *string(CYPoolCString(pool, context, name));
Class _class(object_getClass(self));
-#ifdef __APPLE__
if (objc_property_t property = class_getProperty(_class, string)) {
PropertyAttributes attributes(property);
if (const char *setter = attributes.Setter()) {
return true;
}
}
-#endif
size_t length(strlen(string));
CYPool pool;
Class _class(object_getClass(self));
-#ifdef __APPLE__
{
unsigned int size;
objc_property_t *data(class_copyPropertyList(_class, &size));
JSPropertyNameAccumulatorAddName(names, CYJSString(property_getName(data[i])));
free(data);
}
-#endif
if (CYHasImplicitProperties(_class))
for (Class current(_class); current != nil; current = class_getSuperclass(current)) {
}
}
-#if OBJC_API_VERSION >= 2
+#ifdef __APPLE__
static JSValueRef ObjectiveC_Image_Classes_getProperty(JSContextRef context, JSObjectRef object, JSStringRef property, JSValueRef *exception) { CYTry {
const char *internal(reinterpret_cast<const char *>(JSObjectGetPrivate(object)));
} CYCatch(NULL) }
static void ObjectiveC_Protocols_getPropertyNames(JSContextRef context, JSObjectRef object, JSPropertyNameAccumulatorRef names) {
-#if OBJC_API_VERSION >= 2
unsigned int size;
Protocol **data(objc_copyProtocolList(&size));
for (size_t i(0); i != size; ++i)
JSPropertyNameAccumulatorAddName(names, CYJSString(protocol_getName(data[i])));
free(data);
-#else
- // XXX: fix this!
-#endif
}
static JSValueRef ObjectiveC_Constants_getProperty(JSContextRef context, JSObjectRef object, JSStringRef property, JSValueRef *exception) { CYTry {
);
}
#endif
+#else
+#define CY_NO_STRET
#endif
JSValueRef CYSendMessage(CYPool &pool, JSContextRef context, id self, Class _class, SEL _cmd, size_t count, const JSValueRef arguments[], bool initialize) {
sig::sig_ffi_cif(pool, &sig::ObjectiveC, &signature, &cif);
if (imp == NULL) {
-#ifdef __APPLE__
#ifndef CY_NO_STRET
if (stret(cif.rtype))
imp = class_getMethodImplementation_stret(_class, _cmd);
else
#endif
imp = class_getMethodImplementation(_class, _cmd);
-#else
- objc_super super = {self, _class};
- imp = objc_msg_lookup_super(&super, _cmd);
-#endif
}
void (*function)() = reinterpret_cast<void (*)()>(imp);
NSZombie_ = objc_getClass("_NSZombie_");
#else
NSBoolNumber_ = objc_getClass("NSBoolNumber");
+ NSZombie_ = objc_getClass("NSZombie");
#endif
JSClassDefinition definition;
definition.getPropertyNames = &ObjectiveC_Constants_getPropertyNames;
ObjectiveC_Constants_ = JSClassCreate(&definition);
-#if OBJC_API_VERSION >= 2
+#ifdef __APPLE__
definition = kJSClassDefinitionEmpty;
definition.className = "ObjectiveC::Images";
definition.getProperty = &ObjectiveC_Images_getProperty;
CYSetProperty(context, ObjectiveC, CYJSString("constants"), constants);
CYArrayPush(context, alls, constants);
-#if OBJC_API_VERSION >= 2
+#ifdef __APPLE__
CYSetProperty(context, ObjectiveC, CYJSString("images"), JSObjectMake(context, ObjectiveC_Images_, NULL));
#endif