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

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

#if defined(KEY_REQKEY_DEFL_NO_CHANGE) || (defined(HAVE_DECL_KEY_REQKEY_DEFL_NO_CHANGE) && HAVE_DECL_KEY_REQKEY_DEFL_NO_CHANGE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KEY_REQKEY_DEFL_NO_CHANGE) == (-1), "KEY_REQKEY_DEFL_NO_CHANGE != -1");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KEY_REQKEY_DEFL_NO_CHANGE -1
#endif
#if defined(KEY_REQKEY_DEFL_DEFAULT) || (defined(HAVE_DECL_KEY_REQKEY_DEFL_DEFAULT) && HAVE_DECL_KEY_REQKEY_DEFL_DEFAULT)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KEY_REQKEY_DEFL_DEFAULT) == (0), "KEY_REQKEY_DEFL_DEFAULT != 0");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KEY_REQKEY_DEFL_DEFAULT 0
#endif
#if defined(KEY_REQKEY_DEFL_THREAD_KEYRING) || (defined(HAVE_DECL_KEY_REQKEY_DEFL_THREAD_KEYRING) && HAVE_DECL_KEY_REQKEY_DEFL_THREAD_KEYRING)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KEY_REQKEY_DEFL_THREAD_KEYRING) == (1), "KEY_REQKEY_DEFL_THREAD_KEYRING != 1");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KEY_REQKEY_DEFL_THREAD_KEYRING 1
#endif
#if defined(KEY_REQKEY_DEFL_PROCESS_KEYRING) || (defined(HAVE_DECL_KEY_REQKEY_DEFL_PROCESS_KEYRING) && HAVE_DECL_KEY_REQKEY_DEFL_PROCESS_KEYRING)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KEY_REQKEY_DEFL_PROCESS_KEYRING) == (2), "KEY_REQKEY_DEFL_PROCESS_KEYRING != 2");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KEY_REQKEY_DEFL_PROCESS_KEYRING 2
#endif
#if defined(KEY_REQKEY_DEFL_SESSION_KEYRING) || (defined(HAVE_DECL_KEY_REQKEY_DEFL_SESSION_KEYRING) && HAVE_DECL_KEY_REQKEY_DEFL_SESSION_KEYRING)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KEY_REQKEY_DEFL_SESSION_KEYRING) == (3), "KEY_REQKEY_DEFL_SESSION_KEYRING != 3");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KEY_REQKEY_DEFL_SESSION_KEYRING 3
#endif
#if defined(KEY_REQKEY_DEFL_USER_KEYRING) || (defined(HAVE_DECL_KEY_REQKEY_DEFL_USER_KEYRING) && HAVE_DECL_KEY_REQKEY_DEFL_USER_KEYRING)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KEY_REQKEY_DEFL_USER_KEYRING) == (4), "KEY_REQKEY_DEFL_USER_KEYRING != 4");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KEY_REQKEY_DEFL_USER_KEYRING 4
#endif
#if defined(KEY_REQKEY_DEFL_USER_SESSION_KEYRING) || (defined(HAVE_DECL_KEY_REQKEY_DEFL_USER_SESSION_KEYRING) && HAVE_DECL_KEY_REQKEY_DEFL_USER_SESSION_KEYRING)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KEY_REQKEY_DEFL_USER_SESSION_KEYRING) == (5), "KEY_REQKEY_DEFL_USER_SESSION_KEYRING != 5");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KEY_REQKEY_DEFL_USER_SESSION_KEYRING 5
#endif
#if defined(KEY_REQKEY_DEFL_GROUP_KEYRING) || (defined(HAVE_DECL_KEY_REQKEY_DEFL_GROUP_KEYRING) && HAVE_DECL_KEY_REQKEY_DEFL_GROUP_KEYRING)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KEY_REQKEY_DEFL_GROUP_KEYRING) == (6), "KEY_REQKEY_DEFL_GROUP_KEYRING != 6");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KEY_REQKEY_DEFL_GROUP_KEYRING 6
#endif
#if defined(KEY_REQKEY_DEFL_REQUESTOR_KEYRING) || (defined(HAVE_DECL_KEY_REQKEY_DEFL_REQUESTOR_KEYRING) && HAVE_DECL_KEY_REQKEY_DEFL_REQUESTOR_KEYRING)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((KEY_REQKEY_DEFL_REQUESTOR_KEYRING) == (7), "KEY_REQKEY_DEFL_REQUESTOR_KEYRING != 7");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define KEY_REQKEY_DEFL_REQUESTOR_KEYRING 7
#endif

#ifndef XLAT_MACROS_ONLY

# ifdef IN_MPERS

#  error static const struct xlat key_reqkeys in mpers mode

# else

static
const struct xlat key_reqkeys[] = {
 XLAT_TYPE(int, KEY_REQKEY_DEFL_NO_CHANGE),
 XLAT_TYPE(int, KEY_REQKEY_DEFL_DEFAULT),
 XLAT_TYPE(int, KEY_REQKEY_DEFL_THREAD_KEYRING),
 XLAT_TYPE(int, KEY_REQKEY_DEFL_PROCESS_KEYRING),
 XLAT_TYPE(int, KEY_REQKEY_DEFL_SESSION_KEYRING),
 XLAT_TYPE(int, KEY_REQKEY_DEFL_USER_KEYRING),
 XLAT_TYPE(int, KEY_REQKEY_DEFL_USER_SESSION_KEYRING),
 XLAT_TYPE(int, KEY_REQKEY_DEFL_GROUP_KEYRING),
 XLAT_TYPE(int, KEY_REQKEY_DEFL_REQUESTOR_KEYRING),
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
