/* glibconfig.h
 *
 * This is a generated file.  Please modify 'glibconfig.h.in'
 */

#ifndef __GLIBCONFIG_H__
#define __GLIBCONFIG_H__

#include <glib/gmacros.h>

#include <limits.h>
#include <float.h>
#mesondefine GLIB_HAVE_ALLOCA_H

/* Specifies that GLib's g_print*() functions wrap the
 * system printf functions.  This is useful to know, for example,
 * when using glibc's register_printf_function().
 */
#mesondefine GLIB_USING_SYSTEM_PRINTF

#mesondefine GLIB_STATIC_COMPILATION
#mesondefine GOBJECT_STATIC_COMPILATION

G_BEGIN_DECLS

#define G_MINFLOAT	FLT_MIN
#define G_MAXFLOAT	FLT_MAX
#define G_MINDOUBLE	DBL_MIN
#define G_MAXDOUBLE	DBL_MAX
#define G_MINSHORT	SHRT_MIN
#define G_MAXSHORT	SHRT_MAX
#define G_MAXUSHORT	USHRT_MAX
#define G_MININT	INT_MIN
#define G_MAXINT	INT_MAX
#define G_MAXUINT	UINT_MAX
#define G_MINLONG	LONG_MIN
#define G_MAXLONG	LONG_MAX
#define G_MAXULONG	ULONG_MAX

typedef signed char gint8;
typedef unsigned char guint8;

typedef signed @gint16@ gint16;
typedef unsigned @gint16@ guint16;

#define G_GINT16_MODIFIER @gint16_modifier@
#define G_GINT16_FORMAT @gint16_format@
#define G_GUINT16_FORMAT @guint16_format@


typedef signed @gint32@ gint32;
typedef unsigned @gint32@ guint32;

#define G_GINT32_MODIFIER @gint32_modifier@
#define G_GINT32_FORMAT @gint32_format@
#define G_GUINT32_FORMAT @guint32_format@


#define G_HAVE_GINT64 1          /* deprecated, always true */

@glib_extension@typedef signed @gint64@ gint64;
@glib_extension@typedef unsigned @gint64@ guint64;

#define G_GINT64_CONSTANT(val)	@gint64_constant@
#define G_GUINT64_CONSTANT(val)	@guint64_constant@

#define G_GINT64_MODIFIER @gint64_modifier@
#define G_GINT64_FORMAT @gint64_format@
#define G_GUINT64_FORMAT @guint64_format@


#define GLIB_SIZEOF_VOID_P @glib_void_p@
#define GLIB_SIZEOF_LONG   @glib_long@
#define GLIB_SIZEOF_SIZE_T @glib_size_t@
#define GLIB_SIZEOF_SSIZE_T @glib_ssize_t@

typedef signed @glib_size_type_define@ gssize;
typedef unsigned @glib_size_type_define@ gsize;
#define G_GSIZE_MODIFIER @gsize_modifier@
#define G_GSSIZE_MODIFIER @gssize_modifier@
#define G_GSIZE_FORMAT @gsize_format@
#define G_GSSIZE_FORMAT @gssize_format@

#define G_MAXSIZE	G_MAXU@glib_msize_type@
#define G_MINSSIZE	G_MIN@glib_msize_type@
#define G_MAXSSIZE	G_MAX@glib_msize_type@

typedef gint64 goffset;
#define G_MINOFFSET	G_MININT64
#define G_MAXOFFSET	G_MAXINT64

#define G_GOFFSET_MODIFIER      G_GINT64_MODIFIER
#define G_GOFFSET_FORMAT        G_GINT64_FORMAT
#define G_GOFFSET_CONSTANT(val) G_GINT64_CONSTANT(val)

#define G_POLLFD_FORMAT @g_pollfd_format@

#define GPOINTER_TO_INT(p)	((gint)  @glib_gpi_cast@ (p))
#define GPOINTER_TO_UINT(p)	((guint) @glib_gpui_cast@ (p))

#define GINT_TO_POINTER(i)	((gpointer) @glib_gpi_cast@ (i))
#define GUINT_TO_POINTER(u)	((gpointer) @glib_gpui_cast@ (u))

typedef signed @glib_intptr_type_define@ gintptr;
typedef unsigned @glib_intptr_type_define@ guintptr;

#define G_GINTPTR_MODIFIER      @gintptr_modifier@
#define G_GINTPTR_FORMAT        @gintptr_format@
#define G_GUINTPTR_FORMAT       @guintptr_format@

#define GLIB_MAJOR_VERSION @GLIB_MAJOR_VERSION@
#define GLIB_MINOR_VERSION @GLIB_MINOR_VERSION@
#define GLIB_MICRO_VERSION @GLIB_MICRO_VERSION@

@glib_os@

@glib_vacopy@

@g_have_iso_c_varargs@
@g_have_iso_cxx_varargs@

/* gcc-2.95.x supports both gnu style and ISO varargs, but if -ansi
 * is passed ISO vararg support is turned off, and there is no work
 * around to turn it on, so we unconditionally turn it off.
 */
#if __GNUC__ == 2 && __GNUC_MINOR__ == 95
#  undef G_HAVE_ISO_VARARGS
#endif

#mesondefine G_HAVE_GROWING_STACK
#mesondefine G_HAVE_GNUC_VISIBILITY

#ifndef _MSC_VER
# define G_HAVE_GNUC_VARARGS 1
#endif

#if defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590)
#define G_GNUC_INTERNAL __attribute__((visibility("hidden")))
#elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550)
#define G_GNUC_INTERNAL __hidden
#elif defined (__GNUC__) && defined (G_HAVE_GNUC_VISIBILITY)
#define G_GNUC_INTERNAL __attribute__((visibility("hidden")))
#else
#define G_GNUC_INTERNAL
#endif

#define G_THREADS_ENABLED
#define G_THREADS_IMPL_@g_threads_impl_def@

#mesondefine G_ATOMIC_OP_MEMORY_BARRIER_NEEDED
#mesondefine G_ATOMIC_LOCK_FREE

#define GINT16_TO_@g_bs_native@(val)	((gint16) (val))
#define GUINT16_TO_@g_bs_native@(val)	((guint16) (val))
#define GINT16_TO_@g_bs_alien@(val)	((gint16) GUINT16_SWAP_LE_BE (val))
#define GUINT16_TO_@g_bs_alien@(val)	(GUINT16_SWAP_LE_BE (val))

#define GINT32_TO_@g_bs_native@(val)	((gint32) (val))
#define GUINT32_TO_@g_bs_native@(val)	((guint32) (val))
#define GINT32_TO_@g_bs_alien@(val)	((gint32) GUINT32_SWAP_LE_BE (val))
#define GUINT32_TO_@g_bs_alien@(val)	(GUINT32_SWAP_LE_BE (val))

#define GINT64_TO_@g_bs_native@(val)	((gint64) (val))
#define GUINT64_TO_@g_bs_native@(val)	((guint64) (val))
#define GINT64_TO_@g_bs_alien@(val)	((gint64) GUINT64_SWAP_LE_BE (val))
#define GUINT64_TO_@g_bs_alien@(val)	(GUINT64_SWAP_LE_BE (val))

#define GLONG_TO_LE(val)	((glong) GINT@glongbits@_TO_LE (val))
#define GULONG_TO_LE(val)	((gulong) GUINT@glongbits@_TO_LE (val))
#define GLONG_TO_BE(val)	((glong) GINT@glongbits@_TO_BE (val))
#define GULONG_TO_BE(val)	((gulong) GUINT@glongbits@_TO_BE (val))
#define GINT_TO_LE(val)		((gint) GINT@gintbits@_TO_LE (val))
#define GUINT_TO_LE(val)	((guint) GUINT@gintbits@_TO_LE (val))
#define GINT_TO_BE(val)		((gint) GINT@gintbits@_TO_BE (val))
#define GUINT_TO_BE(val)	((guint) GUINT@gintbits@_TO_BE (val))
#define GSIZE_TO_LE(val)	((gsize) GUINT@gsizebits@_TO_LE (val))
#define GSSIZE_TO_LE(val)	((gssize) GINT@gsizebits@_TO_LE (val))
#define GSIZE_TO_BE(val)	((gsize) GUINT@gsizebits@_TO_BE (val))
#define GSSIZE_TO_BE(val)	((gssize) GINT@gsizebits@_TO_BE (val))
#define G_BYTE_ORDER @g_byte_order@

#define GLIB_SYSDEF_POLLIN =@g_pollin@
#define GLIB_SYSDEF_POLLOUT =@g_pollout@
#define GLIB_SYSDEF_POLLPRI =@g_pollpri@
#define GLIB_SYSDEF_POLLHUP =@g_pollhup@
#define GLIB_SYSDEF_POLLERR =@g_pollerr@
#define GLIB_SYSDEF_POLLNVAL =@g_pollnval@

#define G_MODULE_SUFFIX "@g_module_suffix@"

typedef @g_pid_type@ GPid;
#define G_PID_FORMAT @g_pid_format@

#define GLIB_SYSDEF_AF_UNIX @g_af_unix@
#define GLIB_SYSDEF_AF_INET @g_af_inet@
#define GLIB_SYSDEF_AF_INET6 @g_af_inet6@

#define GLIB_SYSDEF_MSG_OOB @g_msg_oob@
#define GLIB_SYSDEF_MSG_PEEK @g_msg_peek@
#define GLIB_SYSDEF_MSG_DONTROUTE @g_msg_dontroute@

#define G_DIR_SEPARATOR '@g_dir_separator@'
#define G_DIR_SEPARATOR_S "@g_dir_separator@"
#define G_SEARCHPATH_SEPARATOR '@g_searchpath_separator@'
#define G_SEARCHPATH_SEPARATOR_S "@g_searchpath_separator@"

G_END_DECLS

#endif /* __GLIBCONFIG_H__ */
