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

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

#if defined(AT_STATX_SYNC_AS_STAT) || (defined(HAVE_DECL_AT_STATX_SYNC_AS_STAT) && HAVE_DECL_AT_STATX_SYNC_AS_STAT)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((AT_STATX_SYNC_AS_STAT) == (0x0000), "AT_STATX_SYNC_AS_STAT != 0x0000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define AT_STATX_SYNC_AS_STAT 0x0000
#endif
#if defined(AT_STATX_FORCE_SYNC) || (defined(HAVE_DECL_AT_STATX_FORCE_SYNC) && HAVE_DECL_AT_STATX_FORCE_SYNC)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((AT_STATX_FORCE_SYNC) == (0x2000), "AT_STATX_FORCE_SYNC != 0x2000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define AT_STATX_FORCE_SYNC 0x2000
#endif
#if defined(AT_STATX_DONT_SYNC) || (defined(HAVE_DECL_AT_STATX_DONT_SYNC) && HAVE_DECL_AT_STATX_DONT_SYNC)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((AT_STATX_DONT_SYNC) == (0x4000), "AT_STATX_DONT_SYNC != 0x4000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define AT_STATX_DONT_SYNC 0x4000
#endif
#if defined(AT_STATX_SYNC_TYPE) || (defined(HAVE_DECL_AT_STATX_SYNC_TYPE) && HAVE_DECL_AT_STATX_SYNC_TYPE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((AT_STATX_SYNC_TYPE) == (0x6000), "AT_STATX_SYNC_TYPE != 0x6000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define AT_STATX_SYNC_TYPE 0x6000
#endif

#ifndef XLAT_MACROS_ONLY

# ifdef IN_MPERS

#  error static const struct xlat at_statx_sync_types in mpers mode

# else

static
const struct xlat at_statx_sync_types[] = {
 XLAT(AT_STATX_SYNC_AS_STAT),
 XLAT(AT_STATX_FORCE_SYNC),
 XLAT(AT_STATX_DONT_SYNC),

 XLAT(AT_STATX_SYNC_TYPE),
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
