Shrink integral hasher specialization implementations
[folly.git] / folly / CppAttributes.h
index 542e271811aa49cc9e92af51a6a80b127fedb7ab..7a13f61517cd1220666f6c5b4c5e551e718e03bd 100644 (file)
 
 #pragma once
 
+#ifndef __has_attribute
+#define FOLLY_HAS_ATTRIBUTE(x) 0
+#else
+#define FOLLY_HAS_ATTRIBUTE(x) __has_attribute(x)
+#endif
+
 #ifndef __has_cpp_attribute
 #define FOLLY_HAS_CPP_ATTRIBUTE(x) 0
 #else
@@ -67,8 +73,8 @@
  */
 #if FOLLY_HAS_CPP_ATTRIBUTE(maybe_unused)
 #define FOLLY_MAYBE_UNUSED [[maybe_unused]]
-#elif FOLLY_HAS_CPP_ATTRIBUTE(gnu::unused)
-#define FOLLY_MAYBE_UNUSED [[gnu::unused]]
+#elif FOLLY_HAS_ATTRIBUTE(__unused__) || __GNUC__
+#define FOLLY_MAYBE_UNUSED __attribute__((__unused__))
 #else
 #define FOLLY_MAYBE_UNUSED
 #endif
@@ -92,6 +98,8 @@
  */
 #if FOLLY_HAS_EXTENSION(nullability)
 #define FOLLY_NULLABLE _Nullable
+#define FOLLY_NONNULL _Nonnull
 #else
 #define FOLLY_NULLABLE
+#define FOLLY_NONNULL
 #endif