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