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

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

#if defined(SYNC_FILE_RANGE_WAIT_BEFORE) || (defined(HAVE_DECL_SYNC_FILE_RANGE_WAIT_BEFORE) && HAVE_DECL_SYNC_FILE_RANGE_WAIT_BEFORE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SYNC_FILE_RANGE_WAIT_BEFORE) == (1), "SYNC_FILE_RANGE_WAIT_BEFORE != 1");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SYNC_FILE_RANGE_WAIT_BEFORE 1
#endif
#if defined(SYNC_FILE_RANGE_WRITE) || (defined(HAVE_DECL_SYNC_FILE_RANGE_WRITE) && HAVE_DECL_SYNC_FILE_RANGE_WRITE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SYNC_FILE_RANGE_WRITE) == (2), "SYNC_FILE_RANGE_WRITE != 2");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SYNC_FILE_RANGE_WRITE 2
#endif
#if defined(SYNC_FILE_RANGE_WAIT_AFTER) || (defined(HAVE_DECL_SYNC_FILE_RANGE_WAIT_AFTER) && HAVE_DECL_SYNC_FILE_RANGE_WAIT_AFTER)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SYNC_FILE_RANGE_WAIT_AFTER) == (4), "SYNC_FILE_RANGE_WAIT_AFTER != 4");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SYNC_FILE_RANGE_WAIT_AFTER 4
#endif

#ifndef XLAT_MACROS_ONLY

# ifdef IN_MPERS

#  error static const struct xlat sync_file_range_flags in mpers mode

# else

static
const struct xlat sync_file_range_flags[] = {
 XLAT(SYNC_FILE_RANGE_WAIT_BEFORE),
 XLAT(SYNC_FILE_RANGE_WRITE),
 XLAT(SYNC_FILE_RANGE_WAIT_AFTER),
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
