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