selector:self->selector];
}
+/* key/value archiving */
+
+- (id)initWithKeyValueUnarchiver:(EOKeyValueUnarchiver *)_unarchiver {
+ if ((self = [super init]) != nil) {
+ NSString *s;
+
+ self->key = [[_unarchiver decodeObjectForKey:@"key"] copy];
+
+ if ((s = [_unarchiver decodeObjectForKey:@"selector"]) != nil)
+ self->selector = NSSelectorFromString(s);
+ else if ((s = [_unarchiver decodeObjectForKey:@"selectorName"]) != nil) {
+ if (![s hasSuffix:@":"]) s = [s stringByAppendingString:@":"];
+ self->selector = NSSelectorFromString(s);
+ }
+ }
+ return self;
+}
+- (void)encodeWithKeyValueArchiver:(EOKeyValueArchiver *)_archiver {
+ [_archiver encodeObject:[self key] forKey:@"key"];
+ [_archiver encodeObject:NSStringFromSelector([self selector])
+ forKey:@"selectorName"];
+}
+
/* description */
- (NSString *)description {
return [NSString stringWithFormat:
- @"<0x%08X[%@]: key=%@ selector=%@>",
+ @"<0x%p[%@]: key=%@ selector=%@>",
self, NSStringFromClass([self class]),
[self key], NSStringFromSelector([self selector])];
}
key = [context->orderings[i] key];
sel = [context->orderings[i] selector];
- v1 = [o1 valueForKey:key];
- v2 = [o2 valueForKey:key];
+ v1 = [o1 valueForKeyPath:key];
+ v2 = [o2 valueForKeyPath:key];
if (v1 == v2)
result = NSOrderedSame;
else if ((ccmp = (void *)[v1 methodForSelector:sel]))
result = ccmp(v1, sel, v2);
else
- result = (int)[v1 performSelector:sel withObject:v2];
+ result = (unsigned long)[v1 performSelector:sel withObject:v2];
if (result != NSOrderedSame)
return result;