1 2 // Define a public header for the ObjC methods that are "visible" externally 3 // and, thus, could be sub-classed. We should explore the path on which these 4 // are sub-classed with unknown class by not inlining them. 5 6 typedef signed char BOOL; 7 typedef struct objc_class *Class; 8 typedef struct objc_object { 9 Class isa; 10 } *id; 11 @protocol NSObject - (BOOL)isEqual:(id)object; @end 12 @interface NSObject <NSObject> {} 13 +(id)alloc; 14 +(id)new; 15 -(id)init; 16 -(id)autorelease; 17 -(id)copy; 18 - (Class)class; 19 -(id)retain; 20 @end 21 22 @interface PublicClass : NSObject { 23 int value3; 24 } 25 - (int)getZeroPublic; 26 27 - (int) value2; 28 29 @property (readonly) int value1; 30 31 @property int value3; 32 - (int)value3; 33 - (void)setValue3:(int)newValue; 34 @end 35 36 @interface PublicSubClass : PublicClass 37 @end 38 39 @interface PublicParent : NSObject 40 - (int)getZeroOverridden; 41 @end 42 43 @interface PublicSubClass2 : PublicParent 44 - (int) getZeroOverridden; 45 @end 46 47