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