#ifdef EINA_SENTINEL
# undef EINA_SENTINEL
#endif
+#ifdef EINA_FALLTHROUGH
+# undef EINA_FALLTHROUGH
+#endif
#ifdef EINA_PREFETCH
# undef EINA_PREFETCH
#endif
# define EINA_UNLIKELY(exp) __builtin_expect((exp), 0)
# define EINA_LIKELY(exp) __builtin_expect((exp), 1)
# define EINA_SENTINEL __attribute__((__sentinel__))
+# define EINA_FALLTHROUGH __attribute__ ((fallthrough));
# ifndef __clang__
# define EINA_PREFETCH(arg) (arg ? __builtin_prefetch(arg) : (void) arg)
# define EINA_PREFETCH_WRITE(arg) (arg ? __builtin_prefetch(arg, 1) : (void) arg)
# define EINA_UNLIKELY(exp) exp
# define EINA_LIKELY(exp) exp
# define EINA_SENTINEL
+# define EINA_FALLTHROUGH
# define EINA_PREFETCH(arg) ((void) (arg))
# define EINA_PREFETCH_WRITE(arg) ((void) (arg))
# define EINA_PREFETCH_NOCACHE(arg) ((void) (arg))
# define EINA_UNLIKELY(exp) exp
# define EINA_LIKELY(exp) exp
# define EINA_SENTINEL
+# define EINA_FALLTHROUGH
# define EINA_PREFETCH(arg) ((void) (arg))
# define EINA_PREFETCH_WRITE(arg) ((void) (arg))
# define EINA_PREFETCH_NOCACHE(arg) ((void) (arg))
# define EINA_UNLIKELY(exp) exp
# define EINA_LIKELY(exp) exp
# define EINA_SENTINEL
+# define EINA_FALLTHROUGH
# define EINA_PREFETCH(arg) ((void) (arg))
# define EINA_PREFETCH_WRITE(arg) ((void) (arg))
# define EINA_PREFETCH_NOCACHE(arg) ((void) (arg))
# define EINA_SENTINEL
/**
+ * @def EINA_FALLTHROUGH
+ * @brief Attribute from gcc to prevent warning and indicate that we expect
+ * to actually go to the next switch statement
+ * @since 1.20
+ */
+# define EINA_FALLTHROUGH
+
+/**
* @def EINA_PREFETCH
* @brief Hints that the pointer @parg needs to be pre-fetched into cache
* This hints to the compiler to probably issue a prefetch command for the