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

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

#if defined(STATX_ATTR_COMPRESSED) || (defined(HAVE_DECL_STATX_ATTR_COMPRESSED) && HAVE_DECL_STATX_ATTR_COMPRESSED)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((STATX_ATTR_COMPRESSED) == (0x00000004), "STATX_ATTR_COMPRESSED != 0x00000004");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define STATX_ATTR_COMPRESSED 0x00000004
#endif
#if defined(STATX_ATTR_IMMUTABLE) || (defined(HAVE_DECL_STATX_ATTR_IMMUTABLE) && HAVE_DECL_STATX_ATTR_IMMUTABLE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((STATX_ATTR_IMMUTABLE) == (0x00000010), "STATX_ATTR_IMMUTABLE != 0x00000010");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define STATX_ATTR_IMMUTABLE 0x00000010
#endif
#if defined(STATX_ATTR_APPEND) || (defined(HAVE_DECL_STATX_ATTR_APPEND) && HAVE_DECL_STATX_ATTR_APPEND)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((STATX_ATTR_APPEND) == (0x00000020), "STATX_ATTR_APPEND != 0x00000020");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define STATX_ATTR_APPEND 0x00000020
#endif
#if defined(STATX_ATTR_NODUMP) || (defined(HAVE_DECL_STATX_ATTR_NODUMP) && HAVE_DECL_STATX_ATTR_NODUMP)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((STATX_ATTR_NODUMP) == (0x00000040), "STATX_ATTR_NODUMP != 0x00000040");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define STATX_ATTR_NODUMP 0x00000040
#endif
#if defined(STATX_ATTR_ENCRYPTED) || (defined(HAVE_DECL_STATX_ATTR_ENCRYPTED) && HAVE_DECL_STATX_ATTR_ENCRYPTED)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((STATX_ATTR_ENCRYPTED) == (0x00000800), "STATX_ATTR_ENCRYPTED != 0x00000800");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define STATX_ATTR_ENCRYPTED 0x00000800
#endif
#if defined(STATX_ATTR_AUTOMOUNT) || (defined(HAVE_DECL_STATX_ATTR_AUTOMOUNT) && HAVE_DECL_STATX_ATTR_AUTOMOUNT)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((STATX_ATTR_AUTOMOUNT) == (0x00001000), "STATX_ATTR_AUTOMOUNT != 0x00001000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define STATX_ATTR_AUTOMOUNT 0x00001000
#endif

#ifndef XLAT_MACROS_ONLY

# ifdef IN_MPERS

#  error static const struct xlat statx_attrs in mpers mode

# else

static
const struct xlat statx_attrs[] = {
 XLAT(STATX_ATTR_COMPRESSED),
 XLAT(STATX_ATTR_IMMUTABLE),
 XLAT(STATX_ATTR_APPEND),
 XLAT(STATX_ATTR_NODUMP),
 XLAT(STATX_ATTR_ENCRYPTED),
 XLAT(STATX_ATTR_AUTOMOUNT),
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
