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

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

#if defined(QIF_BLIMITS) || (defined(HAVE_DECL_QIF_BLIMITS) && HAVE_DECL_QIF_BLIMITS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((QIF_BLIMITS) == ((1 << 0)), "QIF_BLIMITS != (1 << 0)");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define QIF_BLIMITS (1 << 0)
#endif
#if defined(QIF_SPACE) || (defined(HAVE_DECL_QIF_SPACE) && HAVE_DECL_QIF_SPACE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((QIF_SPACE) == ((1 << 1)), "QIF_SPACE != (1 << 1)");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define QIF_SPACE (1 << 1)
#endif
#if defined(QIF_ILIMITS) || (defined(HAVE_DECL_QIF_ILIMITS) && HAVE_DECL_QIF_ILIMITS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((QIF_ILIMITS) == ((1 << 2)), "QIF_ILIMITS != (1 << 2)");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define QIF_ILIMITS (1 << 2)
#endif
#if defined(QIF_INODES) || (defined(HAVE_DECL_QIF_INODES) && HAVE_DECL_QIF_INODES)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((QIF_INODES) == ((1 << 3)), "QIF_INODES != (1 << 3)");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define QIF_INODES (1 << 3)
#endif
#if defined(QIF_BTIME) || (defined(HAVE_DECL_QIF_BTIME) && HAVE_DECL_QIF_BTIME)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((QIF_BTIME) == ((1 << 4)), "QIF_BTIME != (1 << 4)");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define QIF_BTIME (1 << 4)
#endif
#if defined(QIF_ITIME) || (defined(HAVE_DECL_QIF_ITIME) && HAVE_DECL_QIF_ITIME)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((QIF_ITIME) == ((1 << 5)), "QIF_ITIME != (1 << 5)");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define QIF_ITIME (1 << 5)
#endif

#ifndef XLAT_MACROS_ONLY

# ifdef IN_MPERS

#  error static const struct xlat if_dqblk_valid in mpers mode

# else

static
const struct xlat if_dqblk_valid[] = {
 XLAT(QIF_BLIMITS),
 XLAT(QIF_SPACE),
 XLAT(QIF_ILIMITS),
 XLAT(QIF_INODES),
 XLAT(QIF_BTIME),
 XLAT(QIF_ITIME),
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
