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

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

#if defined(PN_PROTO_TRANSPORT) || (defined(HAVE_DECL_PN_PROTO_TRANSPORT) && HAVE_DECL_PN_PROTO_TRANSPORT)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((PN_PROTO_TRANSPORT) == (0), "PN_PROTO_TRANSPORT != 0");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define PN_PROTO_TRANSPORT 0
#endif
#if defined(PN_PROTO_PHONET) || (defined(HAVE_DECL_PN_PROTO_PHONET) && HAVE_DECL_PN_PROTO_PHONET)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((PN_PROTO_PHONET) == (1), "PN_PROTO_PHONET != 1");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define PN_PROTO_PHONET 1
#endif
#if defined(PN_PROTO_PIPE) || (defined(HAVE_DECL_PN_PROTO_PIPE) && HAVE_DECL_PN_PROTO_PIPE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((PN_PROTO_PIPE) == (2), "PN_PROTO_PIPE != 2");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define PN_PROTO_PIPE 2
#endif

#ifndef XLAT_MACROS_ONLY

# ifdef IN_MPERS

#  error static const struct xlat phonet_protocols in mpers mode

# else

static
const struct xlat phonet_protocols[] = {
 [PN_PROTO_TRANSPORT] = XLAT(PN_PROTO_TRANSPORT),
 [PN_PROTO_PHONET] = XLAT(PN_PROTO_PHONET),
 [PN_PROTO_PIPE] = XLAT(PN_PROTO_PIPE),
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
