12d18419a7c8f9a2975d4ed74a202de6467308ad1Anna Zaks
22d18419a7c8f9a2975d4ed74a202de6467308ad1Anna Zaks// Define a public header for the ObjC methods that are "visible" externally
32d18419a7c8f9a2975d4ed74a202de6467308ad1Anna Zaks// and, thus, could be sub-classed. We should explore the path on which these
42d18419a7c8f9a2975d4ed74a202de6467308ad1Anna Zaks// are sub-classed with unknown class by not inlining them.
52d18419a7c8f9a2975d4ed74a202de6467308ad1Anna Zaks
62d18419a7c8f9a2975d4ed74a202de6467308ad1Anna Zakstypedef signed char BOOL;
72d18419a7c8f9a2975d4ed74a202de6467308ad1Anna Zakstypedef struct objc_class *Class;
82d18419a7c8f9a2975d4ed74a202de6467308ad1Anna Zakstypedef struct objc_object {
92d18419a7c8f9a2975d4ed74a202de6467308ad1Anna Zaks    Class isa;
102d18419a7c8f9a2975d4ed74a202de6467308ad1Anna Zaks} *id;
112d18419a7c8f9a2975d4ed74a202de6467308ad1Anna Zaks@protocol NSObject  - (BOOL)isEqual:(id)object; @end
122d18419a7c8f9a2975d4ed74a202de6467308ad1Anna Zaks@interface NSObject <NSObject> {}
132d18419a7c8f9a2975d4ed74a202de6467308ad1Anna Zaks+(id)alloc;
1454918ba02ba900c0e0bb4fd3d749b6b1ac4e50a9Anna Zaks+(id)new;
152d18419a7c8f9a2975d4ed74a202de6467308ad1Anna Zaks-(id)init;
162d18419a7c8f9a2975d4ed74a202de6467308ad1Anna Zaks-(id)autorelease;
172d18419a7c8f9a2975d4ed74a202de6467308ad1Anna Zaks-(id)copy;
182d18419a7c8f9a2975d4ed74a202de6467308ad1Anna Zaks- (Class)class;
192d18419a7c8f9a2975d4ed74a202de6467308ad1Anna Zaks-(id)retain;
202d18419a7c8f9a2975d4ed74a202de6467308ad1Anna Zaks@end
213f558af01643787d209a133215b0abec81b5fe30Anna Zaks
225498e3a01be0446f38c102278847566176f6507fAnna Zaks@interface PublicClass : NSObject {
235498e3a01be0446f38c102278847566176f6507fAnna Zaks  int value3;
245498e3a01be0446f38c102278847566176f6507fAnna Zaks}
253f558af01643787d209a133215b0abec81b5fe30Anna Zaks- (int)getZeroPublic;
265498e3a01be0446f38c102278847566176f6507fAnna Zaks
275498e3a01be0446f38c102278847566176f6507fAnna Zaks- (int) value2;
285498e3a01be0446f38c102278847566176f6507fAnna Zaks
295498e3a01be0446f38c102278847566176f6507fAnna Zaks@property (readonly) int value1;
305498e3a01be0446f38c102278847566176f6507fAnna Zaks
315498e3a01be0446f38c102278847566176f6507fAnna Zaks@property int value3;
325498e3a01be0446f38c102278847566176f6507fAnna Zaks- (int)value3;
335498e3a01be0446f38c102278847566176f6507fAnna Zaks- (void)setValue3:(int)newValue;
343f558af01643787d209a133215b0abec81b5fe30Anna Zaks@end
353f558af01643787d209a133215b0abec81b5fe30Anna Zaks
363f558af01643787d209a133215b0abec81b5fe30Anna Zaks@interface PublicSubClass : PublicClass
373f558af01643787d209a133215b0abec81b5fe30Anna Zaks@end
3854918ba02ba900c0e0bb4fd3d749b6b1ac4e50a9Anna Zaks
3954918ba02ba900c0e0bb4fd3d749b6b1ac4e50a9Anna Zaks@interface PublicParent : NSObject
4054918ba02ba900c0e0bb4fd3d749b6b1ac4e50a9Anna Zaks- (int)getZeroOverridden;
4154918ba02ba900c0e0bb4fd3d749b6b1ac4e50a9Anna Zaks@end
4254918ba02ba900c0e0bb4fd3d749b6b1ac4e50a9Anna Zaks
4354918ba02ba900c0e0bb4fd3d749b6b1ac4e50a9Anna Zaks@interface PublicSubClass2 : PublicParent
4454918ba02ba900c0e0bb4fd3d749b6b1ac4e50a9Anna Zaks- (int) getZeroOverridden;
4554918ba02ba900c0e0bb4fd3d749b6b1ac4e50a9Anna Zaks@end
4654918ba02ba900c0e0bb4fd3d749b6b1ac4e50a9Anna Zaks
47