#ifndef __LIBSEL4_MACROS_H
#define __LIBSEL4_MACROS_H
#include <autoconf.h>
#define SEL4_FORCE_LONG_ENUM(type) \
_enum_pad_ ## type = (1ULL << ((sizeof(long)*8) - 1)) - 1
#ifndef CONST
#define CONST __attribute__((__const__))
#endif
#ifndef PURE
#define PURE __attribute__((__pure__))
#endif
#define SEL4_OFFSETOF(type, member) __builtin_offsetof(type, member)
#define SEL4_PACKED __attribute__((packed))
#ifdef CONFIG_LIB_SEL4_INLINE_INVOCATIONS
#define LIBSEL4_INLINE static inline
#define LIBSEL4_INLINE_FUNC static inline
#elif CONFIG_LIB_SEL4_PUBLIC_SYMBOLS
#define LIBSEL4_INLINE __attribute__((unused)) __attribute__((weak))
#define LIBSEL4_INLINE_FUNC __attribute__((unused)) __attribute__((weak))
#else
#define LIBSEL4_INLINE __attribute__((noinline)) __attribute__((unused)) __attribute__((weak))
#define LIBSEL4_INLINE_FUNC static inline
#endif
#define SEL4_DEPRECATED(x) __attribute__((deprecated(x)))
#define SEL4_DEPRECATE_MACRO(x) _Pragma("deprecated") x
#endif