@@ -44,10 +44,26 @@ #endif #ifndef __has_feature # define __has_feature(x) 0 #endif + +#if defined(__clang__) +# define OF_HAVE_PROPERTIES +# define OF_HAVE_OPTIONAL_PROTOCOLS +# define OF_HAVE_FAST_ENUMERATION +#elif defined(__GNUC__) +# if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6) +# define OF_HAVE_PROPERTIES +# define OF_HAVE_OPTIONAL_PROTOCOLS +# define OF_HAVE_FAST_ENUMERATION +# endif +#endif + +#if __has_feature(blocks) +# define OF_HAVE_BLOCKS +#endif #if __has_feature(objc_bool) # undef YES # define YES __objc_yes # undef NO