- int n = [self getIntegerResource:name];
- if (n == 0) return NO;
- else if (n == 1) return YES;
- else {
- NSAssert2(0, @"%s = %d but should have been 0 or 1", name, n);
+ NSObject *o = [self getObjectResource:name];
+ if (! o) {
+ return NO;
+ } else if ([o isKindOfClass:[NSNumber class]]) {
+ double n = [(NSNumber *) o doubleValue];
+ if (n == 0) return NO;
+ else if (n == 1) return YES;
+ else goto FAIL;
+ } else if ([o isKindOfClass:[NSString class]]) {
+ NSString *s = (NSString *) o;
+ if ([s isEqualToString:@"true"] ||
+ [s isEqualToString:@"yes"] ||
+ [s isEqualToString:@"1"])
+ return YES;
+ else if ([s isEqualToString:@"false"] ||
+ [s isEqualToString:@"no"] ||
+ [s isEqualToString:@"0"] ||
+ [s isEqualToString:@""])
+ return NO;
+ else
+ goto FAIL;
+ } else {
+ FAIL:
+ NSAssert2(0, @"%s = \"%@\" but should have been a boolean", name, o);