/* Generated by ./xlat/gen.sh from ./xlat/key_perms.in; do not edit. */

#include "gcc_compat.h"
#include "static_assert.h"

#if defined(KEY_POS_VIEW) || (defined(HAVE_DECL_KEY_POS_VIEW) && HAVE_DECL_KEY_POS_VIEW)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KEY_POS_VIEW) == (0x01000000), "KEY_POS_VIEW != 0x01000000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KEY_POS_VIEW 0x01000000
#endif
#if defined(KEY_POS_READ) || (defined(HAVE_DECL_KEY_POS_READ) && HAVE_DECL_KEY_POS_READ)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KEY_POS_READ) == (0x02000000), "KEY_POS_READ != 0x02000000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KEY_POS_READ 0x02000000
#endif
#if defined(KEY_POS_WRITE) || (defined(HAVE_DECL_KEY_POS_WRITE) && HAVE_DECL_KEY_POS_WRITE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KEY_POS_WRITE) == (0x04000000), "KEY_POS_WRITE != 0x04000000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KEY_POS_WRITE 0x04000000
#endif
#if defined(KEY_POS_SEARCH) || (defined(HAVE_DECL_KEY_POS_SEARCH) && HAVE_DECL_KEY_POS_SEARCH)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KEY_POS_SEARCH) == (0x08000000), "KEY_POS_SEARCH != 0x08000000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KEY_POS_SEARCH 0x08000000
#endif
#if defined(KEY_POS_LINK) || (defined(HAVE_DECL_KEY_POS_LINK) && HAVE_DECL_KEY_POS_LINK)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KEY_POS_LINK) == (0x10000000), "KEY_POS_LINK != 0x10000000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KEY_POS_LINK 0x10000000
#endif
#if defined(KEY_POS_SETATTR) || (defined(HAVE_DECL_KEY_POS_SETATTR) && HAVE_DECL_KEY_POS_SETATTR)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KEY_POS_SETATTR) == (0x20000000), "KEY_POS_SETATTR != 0x20000000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KEY_POS_SETATTR 0x20000000
#endif
#if defined(KEY_POS_ALL) || (defined(HAVE_DECL_KEY_POS_ALL) && HAVE_DECL_KEY_POS_ALL)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KEY_POS_ALL) == (0x3f000000), "KEY_POS_ALL != 0x3f000000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KEY_POS_ALL 0x3f000000
#endif
#if defined(KEY_USR_VIEW) || (defined(HAVE_DECL_KEY_USR_VIEW) && HAVE_DECL_KEY_USR_VIEW)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KEY_USR_VIEW) == (0x00010000), "KEY_USR_VIEW != 0x00010000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KEY_USR_VIEW 0x00010000
#endif
#if defined(KEY_USR_READ) || (defined(HAVE_DECL_KEY_USR_READ) && HAVE_DECL_KEY_USR_READ)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KEY_USR_READ) == (0x00020000), "KEY_USR_READ != 0x00020000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KEY_USR_READ 0x00020000
#endif
#if defined(KEY_USR_WRITE) || (defined(HAVE_DECL_KEY_USR_WRITE) && HAVE_DECL_KEY_USR_WRITE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KEY_USR_WRITE) == (0x00040000), "KEY_USR_WRITE != 0x00040000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KEY_USR_WRITE 0x00040000
#endif
#if defined(KEY_USR_SEARCH) || (defined(HAVE_DECL_KEY_USR_SEARCH) && HAVE_DECL_KEY_USR_SEARCH)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KEY_USR_SEARCH) == (0x00080000), "KEY_USR_SEARCH != 0x00080000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KEY_USR_SEARCH 0x00080000
#endif
#if defined(KEY_USR_LINK) || (defined(HAVE_DECL_KEY_USR_LINK) && HAVE_DECL_KEY_USR_LINK)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KEY_USR_LINK) == (0x00100000), "KEY_USR_LINK != 0x00100000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KEY_USR_LINK 0x00100000
#endif
#if defined(KEY_USR_SETATTR) || (defined(HAVE_DECL_KEY_USR_SETATTR) && HAVE_DECL_KEY_USR_SETATTR)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KEY_USR_SETATTR) == (0x00200000), "KEY_USR_SETATTR != 0x00200000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KEY_USR_SETATTR 0x00200000
#endif
#if defined(KEY_USR_ALL) || (defined(HAVE_DECL_KEY_USR_ALL) && HAVE_DECL_KEY_USR_ALL)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KEY_USR_ALL) == (0x003f0000), "KEY_USR_ALL != 0x003f0000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KEY_USR_ALL 0x003f0000
#endif
#if defined(KEY_GRP_VIEW) || (defined(HAVE_DECL_KEY_GRP_VIEW) && HAVE_DECL_KEY_GRP_VIEW)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KEY_GRP_VIEW) == (0x00000100), "KEY_GRP_VIEW != 0x00000100");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KEY_GRP_VIEW 0x00000100
#endif
#if defined(KEY_GRP_READ) || (defined(HAVE_DECL_KEY_GRP_READ) && HAVE_DECL_KEY_GRP_READ)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KEY_GRP_READ) == (0x00000200), "KEY_GRP_READ != 0x00000200");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KEY_GRP_READ 0x00000200
#endif
#if defined(KEY_GRP_WRITE) || (defined(HAVE_DECL_KEY_GRP_WRITE) && HAVE_DECL_KEY_GRP_WRITE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KEY_GRP_WRITE) == (0x00000400), "KEY_GRP_WRITE != 0x00000400");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KEY_GRP_WRITE 0x00000400
#endif
#if defined(KEY_GRP_SEARCH) || (defined(HAVE_DECL_KEY_GRP_SEARCH) && HAVE_DECL_KEY_GRP_SEARCH)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KEY_GRP_SEARCH) == (0x00000800), "KEY_GRP_SEARCH != 0x00000800");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KEY_GRP_SEARCH 0x00000800
#endif
#if defined(KEY_GRP_LINK) || (defined(HAVE_DECL_KEY_GRP_LINK) && HAVE_DECL_KEY_GRP_LINK)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KEY_GRP_LINK) == (0x00001000), "KEY_GRP_LINK != 0x00001000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KEY_GRP_LINK 0x00001000
#endif
#if defined(KEY_GRP_SETATTR) || (defined(HAVE_DECL_KEY_GRP_SETATTR) && HAVE_DECL_KEY_GRP_SETATTR)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KEY_GRP_SETATTR) == (0x00002000), "KEY_GRP_SETATTR != 0x00002000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KEY_GRP_SETATTR 0x00002000
#endif
#if defined(KEY_GRP_ALL) || (defined(HAVE_DECL_KEY_GRP_ALL) && HAVE_DECL_KEY_GRP_ALL)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KEY_GRP_ALL) == (0x00003f00), "KEY_GRP_ALL != 0x00003f00");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KEY_GRP_ALL 0x00003f00
#endif
#if defined(KEY_OTH_VIEW) || (defined(HAVE_DECL_KEY_OTH_VIEW) && HAVE_DECL_KEY_OTH_VIEW)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KEY_OTH_VIEW) == (0x00000001), "KEY_OTH_VIEW != 0x00000001");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KEY_OTH_VIEW 0x00000001
#endif
#if defined(KEY_OTH_READ) || (defined(HAVE_DECL_KEY_OTH_READ) && HAVE_DECL_KEY_OTH_READ)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KEY_OTH_READ) == (0x00000002), "KEY_OTH_READ != 0x00000002");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KEY_OTH_READ 0x00000002
#endif
#if defined(KEY_OTH_WRITE) || (defined(HAVE_DECL_KEY_OTH_WRITE) && HAVE_DECL_KEY_OTH_WRITE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KEY_OTH_WRITE) == (0x00000004), "KEY_OTH_WRITE != 0x00000004");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KEY_OTH_WRITE 0x00000004
#endif
#if defined(KEY_OTH_SEARCH) || (defined(HAVE_DECL_KEY_OTH_SEARCH) && HAVE_DECL_KEY_OTH_SEARCH)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KEY_OTH_SEARCH) == (0x00000008), "KEY_OTH_SEARCH != 0x00000008");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KEY_OTH_SEARCH 0x00000008
#endif
#if defined(KEY_OTH_LINK) || (defined(HAVE_DECL_KEY_OTH_LINK) && HAVE_DECL_KEY_OTH_LINK)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KEY_OTH_LINK) == (0x00000010), "KEY_OTH_LINK != 0x00000010");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KEY_OTH_LINK 0x00000010
#endif
#if defined(KEY_OTH_SETATTR) || (defined(HAVE_DECL_KEY_OTH_SETATTR) && HAVE_DECL_KEY_OTH_SETATTR)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KEY_OTH_SETATTR) == (0x00000020), "KEY_OTH_SETATTR != 0x00000020");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KEY_OTH_SETATTR 0x00000020
#endif
#if defined(KEY_OTH_ALL) || (defined(HAVE_DECL_KEY_OTH_ALL) && HAVE_DECL_KEY_OTH_ALL)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KEY_OTH_ALL) == (0x0000003f), "KEY_OTH_ALL != 0x0000003f");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KEY_OTH_ALL 0x0000003f
#endif

#ifndef XLAT_MACROS_ONLY

# ifdef IN_MPERS

#  error static const struct xlat key_perms in mpers mode

# else

static
const struct xlat key_perms[] = {
 XLAT(KEY_POS_VIEW),
 XLAT(KEY_POS_READ),
 XLAT(KEY_POS_WRITE),
 XLAT(KEY_POS_SEARCH),
 XLAT(KEY_POS_LINK),
 XLAT(KEY_POS_SETATTR),
 XLAT(KEY_POS_ALL),
 XLAT(KEY_USR_VIEW),
 XLAT(KEY_USR_READ),
 XLAT(KEY_USR_WRITE),
 XLAT(KEY_USR_SEARCH),
 XLAT(KEY_USR_LINK),
 XLAT(KEY_USR_SETATTR),
 XLAT(KEY_USR_ALL),
 XLAT(KEY_GRP_VIEW),
 XLAT(KEY_GRP_READ),
 XLAT(KEY_GRP_WRITE),
 XLAT(KEY_GRP_SEARCH),
 XLAT(KEY_GRP_LINK),
 XLAT(KEY_GRP_SETATTR),
 XLAT(KEY_GRP_ALL),
 XLAT(KEY_OTH_VIEW),
 XLAT(KEY_OTH_READ),
 XLAT(KEY_OTH_WRITE),
 XLAT(KEY_OTH_SEARCH),
 XLAT(KEY_OTH_LINK),
 XLAT(KEY_OTH_SETATTR),
 XLAT(KEY_OTH_ALL),
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
