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