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

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

#if defined(CRYPTO_MSG_NEWALG) || (defined(HAVE_DECL_CRYPTO_MSG_NEWALG) && HAVE_DECL_CRYPTO_MSG_NEWALG)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((CRYPTO_MSG_NEWALG) == (0x10), "CRYPTO_MSG_NEWALG != 0x10");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define CRYPTO_MSG_NEWALG 0x10
#endif
#if defined(CRYPTO_MSG_DELALG) || (defined(HAVE_DECL_CRYPTO_MSG_DELALG) && HAVE_DECL_CRYPTO_MSG_DELALG)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((CRYPTO_MSG_DELALG) == (0x11), "CRYPTO_MSG_DELALG != 0x11");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define CRYPTO_MSG_DELALG 0x11
#endif
#if defined(CRYPTO_MSG_UPDATEALG) || (defined(HAVE_DECL_CRYPTO_MSG_UPDATEALG) && HAVE_DECL_CRYPTO_MSG_UPDATEALG)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((CRYPTO_MSG_UPDATEALG) == (0x12), "CRYPTO_MSG_UPDATEALG != 0x12");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define CRYPTO_MSG_UPDATEALG 0x12
#endif
#if defined(CRYPTO_MSG_GETALG) || (defined(HAVE_DECL_CRYPTO_MSG_GETALG) && HAVE_DECL_CRYPTO_MSG_GETALG)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((CRYPTO_MSG_GETALG) == (0x13), "CRYPTO_MSG_GETALG != 0x13");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define CRYPTO_MSG_GETALG 0x13
#endif
#if defined(CRYPTO_MSG_DELRNG) || (defined(HAVE_DECL_CRYPTO_MSG_DELRNG) && HAVE_DECL_CRYPTO_MSG_DELRNG)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((CRYPTO_MSG_DELRNG) == (0x14), "CRYPTO_MSG_DELRNG != 0x14");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define CRYPTO_MSG_DELRNG 0x14
#endif

#ifndef XLAT_MACROS_ONLY

# ifdef IN_MPERS

#  error static const struct xlat nl_crypto_types in mpers mode

# else

static
const struct xlat nl_crypto_types[] = {
 XLAT(CRYPTO_MSG_NEWALG),
 XLAT(CRYPTO_MSG_DELALG),
 XLAT(CRYPTO_MSG_UPDATEALG),
 XLAT(CRYPTO_MSG_GETALG),
 XLAT(CRYPTO_MSG_DELRNG),
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
