163282aefSAnna Zaks 263282aefSAnna Zaks // Define a public header for the ObjC methods that are "visible" externally 363282aefSAnna Zaks // and, thus, could be sub-classed. We should explore the path on which these 463282aefSAnna Zaks // are sub-classed with unknown class by not inlining them. 563282aefSAnna Zaks 663282aefSAnna Zaks typedef signed char BOOL; 763282aefSAnna Zaks typedef struct objc_class *Class; 863282aefSAnna Zaks typedef struct objc_object { 963282aefSAnna Zaks Class isa; 1063282aefSAnna Zaks } *id; 1163282aefSAnna Zaks @protocol NSObject - (BOOL)isEqual:(id)object; @end 1263282aefSAnna Zaks @interface NSObject <NSObject> {} 1363282aefSAnna Zaks +(id)alloc; 1475f49a9cSAnna Zaks +(id)new; 1563282aefSAnna Zaks -(id)init; 1663282aefSAnna Zaks -(id)autorelease; 1763282aefSAnna Zaks -(id)copy; 1863282aefSAnna Zaks - (Class)class; 1963282aefSAnna Zaks -(id)retain; 2063282aefSAnna Zaks @end 21920af014SAnna Zaks 22*d4e65373SAnna Zaks @interface PublicClass : NSObject { 23*d4e65373SAnna Zaks int value3; 24*d4e65373SAnna Zaks } 25920af014SAnna Zaks - (int)getZeroPublic; 26*d4e65373SAnna Zaks 27*d4e65373SAnna Zaks - (int) value2; 28*d4e65373SAnna Zaks 29*d4e65373SAnna Zaks @property (readonly) int value1; 30*d4e65373SAnna Zaks 31*d4e65373SAnna Zaks @property int value3; 32*d4e65373SAnna Zaks - (int)value3; 33*d4e65373SAnna Zaks - (void)setValue3:(int)newValue; 34920af014SAnna Zaks @end 35920af014SAnna Zaks 36920af014SAnna Zaks @interface PublicSubClass : PublicClass 37920af014SAnna Zaks @end 3875f49a9cSAnna Zaks 3975f49a9cSAnna Zaks @interface PublicParent : NSObject 4075f49a9cSAnna Zaks - (int)getZeroOverridden; 4175f49a9cSAnna Zaks @end 4275f49a9cSAnna Zaks 4375f49a9cSAnna Zaks @interface PublicSubClass2 : PublicParent 4475f49a9cSAnna Zaks - (int) getZeroOverridden; 4575f49a9cSAnna Zaks @end 4675f49a9cSAnna Zaks 47