#import <Foundation/Foundation.h>
#import <stdio.h>
@interface Animal : NSObject
{
const char * name;
}
- (void) play;
@end
@implementation Animal
- (void) play {}
@end
@interface Dog : Animal
- (id) init: (const char *) name;
- (void) play;
@end
@implementation Dog
- (id) init: (const char *) value {
self = [super init];
if (self != nil) {
self->name = value;
}
return self;
}
- (void) play {
}
@end
@interface Cat : Animal
{
int sleep;
}
- (id) init: (const char *) name flag: (int) sleep;
- (void) play;
@end
@implementation Cat
- (id) init: (const char *) value flag: (int) flag {
self = [super init];
if (self != nil) {
self->name = value;
self->sleep = flag;
}
return self;
}
- (void) play {
if(sleep == 1) {
}
}
@end
int main(int argc, char *argv[]) {
int i;
id pets[] = {
[[Dog alloc] init:"ぽち"],
[[Cat alloc] init:"たま" flag:1]
};
for(i = 0; i < (sizeof(pets)/sizeof(pets[0])); i++) {
[pets[i] play];
}
for(i = 0; i < (sizeof(pets)/sizeof(pets[0])); i++) {
[pets[i] release];
}
return 0;
}
I2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CiNpbXBvcnQgPHN0ZGlvLmg+CgpAaW50ZXJmYWNlIEFuaW1hbCA6IE5TT2JqZWN0CnsKICAgIGNvbnN0IGNoYXIgKiBuYW1lOwp9Ci0gKHZvaWQpIHBsYXk7CkBlbmQKCkBpbXBsZW1lbnRhdGlvbiBBbmltYWwKLSAodm9pZCkgcGxheSB7fQpAZW5kCgpAaW50ZXJmYWNlIERvZyA6IEFuaW1hbAotIChpZCkgaW5pdDogKGNvbnN0IGNoYXIgKikgbmFtZTsKLSAodm9pZCkgcGxheTsKQGVuZAoKQGltcGxlbWVudGF0aW9uIERvZwotIChpZCkgaW5pdDogKGNvbnN0IGNoYXIgKikgdmFsdWUgewogICAgc2VsZiA9IFtzdXBlciBpbml0XTsKICAgIGlmIChzZWxmICE9IG5pbCkgewogICAgICAgIHNlbGYtPm5hbWUgPSB2YWx1ZTsKICAgIH0KICAgIHJldHVybiBzZWxmOwp9Ci0gKHZvaWQpIHBsYXkgewogICAgcHJpbnRmKCLjgo/jgpPjgo/jgpPvvIElc+OBoOOCiFxuIiwgbmFtZSk7Cn0KQGVuZAoKQGludGVyZmFjZSBDYXQgOiBBbmltYWwKewogICAgaW50IHNsZWVwOwp9Ci0gKGlkKSBpbml0OiAoY29uc3QgY2hhciAqKSBuYW1lICBmbGFnOiAoaW50KSBzbGVlcDsKLSAodm9pZCkgcGxheTsKQGVuZAoKQGltcGxlbWVudGF0aW9uIENhdAotIChpZCkgaW5pdDogKGNvbnN0IGNoYXIgKikgdmFsdWUgZmxhZzogKGludCkgZmxhZyAgewogICAgc2VsZiA9IFtzdXBlciBpbml0XTsKICAgIGlmIChzZWxmICE9IG5pbCkgewogICAgICAgIHNlbGYtPm5hbWUgPSB2YWx1ZTsKICAgICAgICBzZWxmLT5zbGVlcCA9IGZsYWc7CiAgICB9CiAgICByZXR1cm4gc2VsZjsKfQotICh2b2lkKSBwbGF5IHsKICAgIHByaW50Zigi44Gr44KD44GC77yBJXPjgaDjgohcbiIsIG5hbWUpOwogICAgaWYoc2xlZXAgPT0gMSkgewogICAgICAgIHByaW50ZigiLi4u44Gn44KC5a+d44KLXG4iKTsKICAgIH0KfQpAZW5kCgppbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKSB7CiAgICBpbnQgaTsKICAgIGlkIHBldHNbXSA9IHsKICAgICAgICBbW0RvZyBhbGxvY10gaW5pdDoi44G944GhIl0sCiAgICAgICAgW1tDYXQgYWxsb2NdIGluaXQ6IuOBn+OBviIgZmxhZzoxXQogICAgfTsKCiAgICBmb3IoaSA9IDA7IGkgPCAoc2l6ZW9mKHBldHMpL3NpemVvZihwZXRzWzBdKSk7IGkrKykgewogICAgICAgIFtwZXRzW2ldIHBsYXldOwogICAgfQoKICAgIGZvcihpID0gMDsgaSA8IChzaXplb2YocGV0cykvc2l6ZW9mKHBldHNbMF0pKTsgaSsrKSB7CiAgICAgICAgW3BldHNbaV0gcmVsZWFzZV07CiAgICB9CiAgICByZXR1cm4gMDsKfQo=