1 
2 @protocol foo;
3 @protocol foo2
4 @end
5 @class itf;
6 
7 // Expressions
8 typedef typeof(@"foo" "bar") objc_string;
9 typedef typeof(@encode(int)) objc_encode;
10 typedef typeof(@protocol(foo2)) objc_protocol;
11 typedef typeof(@selector(noArgs)) objc_selector_noArgs;
12 typedef typeof(@selector(oneArg:)) objc_selector_oneArg;
13 typedef typeof(@selector(foo:bar:)) objc_selector_twoArg;
14 
15 
16 // Types.
17 typedef typeof(id<foo>) objc_id_protocol_ty;
18 
19 typedef typeof(itf*) objc_interface_ty;
20 typedef typeof(itf<foo>*) objc_qual_interface_ty;
21 
22 @interface PP
property(assign)23 @property (assign) id prop;
24 @end
25 
26 static inline id getPseudoObject(PP *p) {
27     return p.prop;
28 }
29