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

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

#if defined(USRQUOTA) || (defined(HAVE_DECL_USRQUOTA) && HAVE_DECL_USRQUOTA)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((USRQUOTA) == (0), "USRQUOTA != 0");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define USRQUOTA 0
#endif
#if defined(GRPQUOTA) || (defined(HAVE_DECL_GRPQUOTA) && HAVE_DECL_GRPQUOTA)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((GRPQUOTA) == (1), "GRPQUOTA != 1");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define GRPQUOTA 1
#endif
#if defined(PRJQUOTA) || (defined(HAVE_DECL_PRJQUOTA) && HAVE_DECL_PRJQUOTA)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((PRJQUOTA) == (2), "PRJQUOTA != 2");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define PRJQUOTA 2
#endif

#ifndef XLAT_MACROS_ONLY

# ifdef IN_MPERS

#  error static const struct xlat quotatypes in mpers mode

# else

static
const struct xlat quotatypes[] = {
 XLAT(USRQUOTA),
 XLAT(GRPQUOTA),
 XLAT(PRJQUOTA),
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
