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

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

#if defined(BLKPG_ADD_PARTITION) || (defined(HAVE_DECL_BLKPG_ADD_PARTITION) && HAVE_DECL_BLKPG_ADD_PARTITION)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((BLKPG_ADD_PARTITION) == (1), "BLKPG_ADD_PARTITION != 1");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define BLKPG_ADD_PARTITION 1
#endif
#if defined(BLKPG_DEL_PARTITION) || (defined(HAVE_DECL_BLKPG_DEL_PARTITION) && HAVE_DECL_BLKPG_DEL_PARTITION)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((BLKPG_DEL_PARTITION) == (2), "BLKPG_DEL_PARTITION != 2");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define BLKPG_DEL_PARTITION 2
#endif
#if defined(BLKPG_RESIZE_PARTITION) || (defined(HAVE_DECL_BLKPG_RESIZE_PARTITION) && HAVE_DECL_BLKPG_RESIZE_PARTITION)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((BLKPG_RESIZE_PARTITION) == (3), "BLKPG_RESIZE_PARTITION != 3");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define BLKPG_RESIZE_PARTITION 3
#endif

#ifndef XLAT_MACROS_ONLY

# ifdef IN_MPERS

extern const struct xlat blkpg_ops[];

# else

#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
static
#  endif
const struct xlat blkpg_ops[] = {
 XLAT(BLKPG_ADD_PARTITION),
 XLAT(BLKPG_DEL_PARTITION),
 XLAT(BLKPG_RESIZE_PARTITION),
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
