#ifndef NEOVIM_FUNC_ATTR_H #define NEOVIM_FUNC_ATTR_H // gcc and clang expose their version as follows: // // gcc 4.7.2: // __GNUC__ = 4 // __GNUC_MINOR__ = 7 // __GNUC_PATCHLEVEL = 2 // // clang 3.4 (claims compat with gcc 4.2.1): // __GNUC__ = 4 // __GNUC_MINOR__ = 2 // __GNUC_PATCHLEVEL = 1 // __clang__ = 1 // __clang_major__ = 3 // __clang_minor__ = 4 // // To view the default defines of these compilers, you can perform: // // $ gcc -E -dM - = 40900 #define FUNC_ATTR_NONNULL_RET __attribute__((returns_nonnull)) #endif #endif #endif // define function attributes that haven't been defined for this specific // compiler. #ifndef FUNC_ATTR_MALLOC #define FUNC_ATTR_MALLOC #endif #ifndef FUNC_ATTR_ALLOC_SIZE #define FUNC_ATTR_ALLOC_SIZE(x) #endif #ifndef FUNC_ATTR_ALLOC_SIZE_PROD #define FUNC_ATTR_ALLOC_SIZE_PROD(x,y) #endif #ifndef FUNC_ATTR_ALLOC_ALIGN #define FUNC_ATTR_ALLOC_ALIGN(x) #endif #ifndef FUNC_ATTR_PURE #define FUNC_ATTR_PURE #endif #ifndef FUNC_ATTR_CONST #define FUNC_ATTR_CONST #endif #ifndef FUNC_ATTR_WARN_UNUSED_RESULT #define FUNC_ATTR_WARN_UNUSED_RESULT #endif #ifndef FUNC_ATTR_ALWAYS_INLINE #define FUNC_ATTR_ALWAYS_INLINE #endif #ifndef FUNC_ATTR_NONNULL_ALL #define FUNC_ATTR_NONNULL_ALL #endif #ifndef FUNC_ATTR_NONNULL_ARG #define FUNC_ATTR_NONNULL_ARG(...) #endif #ifndef FUNC_ATTR_NONNULL_RET #define FUNC_ATTR_NONNULL_RET #endif #endif // NEOVIM_FUNC_ATTR_H