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

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

#if defined(MSC_SERIAL) || (defined(HAVE_DECL_MSC_SERIAL) && HAVE_DECL_MSC_SERIAL)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((MSC_SERIAL) == (0x00), "MSC_SERIAL != 0x00");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define MSC_SERIAL 0x00
#endif
#if defined(MSC_PULSELED) || (defined(HAVE_DECL_MSC_PULSELED) && HAVE_DECL_MSC_PULSELED)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((MSC_PULSELED) == (0x01), "MSC_PULSELED != 0x01");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define MSC_PULSELED 0x01
#endif
#if defined(MSC_GESTURE) || (defined(HAVE_DECL_MSC_GESTURE) && HAVE_DECL_MSC_GESTURE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((MSC_GESTURE) == (0x02), "MSC_GESTURE != 0x02");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define MSC_GESTURE 0x02
#endif
#if defined(MSC_RAW) || (defined(HAVE_DECL_MSC_RAW) && HAVE_DECL_MSC_RAW)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((MSC_RAW) == (0x03), "MSC_RAW != 0x03");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define MSC_RAW 0x03
#endif
#if defined(MSC_SCAN) || (defined(HAVE_DECL_MSC_SCAN) && HAVE_DECL_MSC_SCAN)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((MSC_SCAN) == (0x04), "MSC_SCAN != 0x04");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define MSC_SCAN 0x04
#endif
#if defined(MSC_TIMESTAMP) || (defined(HAVE_DECL_MSC_TIMESTAMP) && HAVE_DECL_MSC_TIMESTAMP)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((MSC_TIMESTAMP) == (0x05), "MSC_TIMESTAMP != 0x05");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define MSC_TIMESTAMP 0x05
#endif

#ifndef XLAT_MACROS_ONLY

# ifdef IN_MPERS

#  error static const struct xlat evdev_misc in mpers mode

# else

static
const struct xlat evdev_misc[] = {
 [MSC_SERIAL] = XLAT(MSC_SERIAL),
 [MSC_PULSELED] = XLAT(MSC_PULSELED),
 [MSC_GESTURE] = XLAT(MSC_GESTURE),
 [MSC_RAW] = XLAT(MSC_RAW),
 [MSC_SCAN] = XLAT(MSC_SCAN),
 [MSC_TIMESTAMP] = XLAT(MSC_TIMESTAMP),
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
