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

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

#ifdef __mips__
#if defined(SOCK_DGRAM) || (defined(HAVE_DECL_SOCK_DGRAM) && HAVE_DECL_SOCK_DGRAM)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SOCK_DGRAM) == (1), "SOCK_DGRAM != 1");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SOCK_DGRAM 1
#endif
#if defined(SOCK_STREAM) || (defined(HAVE_DECL_SOCK_STREAM) && HAVE_DECL_SOCK_STREAM)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SOCK_STREAM) == (2), "SOCK_STREAM != 2");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SOCK_STREAM 2
#endif
#else
#if defined(SOCK_STREAM) || (defined(HAVE_DECL_SOCK_STREAM) && HAVE_DECL_SOCK_STREAM)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SOCK_STREAM) == (1), "SOCK_STREAM != 1");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SOCK_STREAM 1
#endif
#if defined(SOCK_DGRAM) || (defined(HAVE_DECL_SOCK_DGRAM) && HAVE_DECL_SOCK_DGRAM)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SOCK_DGRAM) == (2), "SOCK_DGRAM != 2");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SOCK_DGRAM 2
#endif
#endif
#if defined(SOCK_RAW) || (defined(HAVE_DECL_SOCK_RAW) && HAVE_DECL_SOCK_RAW)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SOCK_RAW) == (3), "SOCK_RAW != 3");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SOCK_RAW 3
#endif
#if defined(SOCK_RDM) || (defined(HAVE_DECL_SOCK_RDM) && HAVE_DECL_SOCK_RDM)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SOCK_RDM) == (4), "SOCK_RDM != 4");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SOCK_RDM 4
#endif
#if defined(SOCK_SEQPACKET) || (defined(HAVE_DECL_SOCK_SEQPACKET) && HAVE_DECL_SOCK_SEQPACKET)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SOCK_SEQPACKET) == (5), "SOCK_SEQPACKET != 5");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SOCK_SEQPACKET 5
#endif
#if defined(SOCK_DCCP) || (defined(HAVE_DECL_SOCK_DCCP) && HAVE_DECL_SOCK_DCCP)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SOCK_DCCP) == (6), "SOCK_DCCP != 6");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SOCK_DCCP 6
#endif
#if defined(SOCK_PACKET) || (defined(HAVE_DECL_SOCK_PACKET) && HAVE_DECL_SOCK_PACKET)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SOCK_PACKET) == (10), "SOCK_PACKET != 10");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SOCK_PACKET 10
#endif

#ifndef XLAT_MACROS_ONLY

# ifndef IN_MPERS

const struct xlat socktypes[] = {
#ifdef __mips__
 XLAT(SOCK_DGRAM),
 XLAT(SOCK_STREAM),
#else
 XLAT(SOCK_STREAM),
 XLAT(SOCK_DGRAM),
#endif
 XLAT(SOCK_RAW),
 XLAT(SOCK_RDM),
 XLAT(SOCK_SEQPACKET),
 XLAT(SOCK_DCCP),
 XLAT(SOCK_PACKET),
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
