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