#ifndef GLIB_H #define GLIB_H #include #if defined(_WIN32) #include #endif typedef char gchar; typedef unsigned int guint; typedef unsigned short gushort; typedef void* gpointer; typedef unsigned long gsize; typedef const void *gconstpointer; typedef int gint; typedef gint gboolean; typedef struct _GSource {int dummy;} GSource; typedef struct GPollFD { #if defined(_WIN32) SOCKET fd; #else gint fd; #endif gushort events; gushort revents; } GPollFD; typedef struct _GArray { gchar *data; guint len; } GArray; gpointer g_malloc (gsize n_bytes); gpointer g_malloc0 (gsize n_bytes); gpointer g_realloc (gpointer mem, gsize n_bytes); void g_free (gpointer mem); gchar *g_strdup (const gchar *str); typedef enum { /* Flags */ G_LOG_FLAG_RECURSION = 1 << 0, G_LOG_FLAG_FATAL = 1 << 1, /* Levels */ G_LOG_LEVEL_ERROR = 1 << 2, G_LOG_LEVEL_CRITICAL = 1 << 3, G_LOG_LEVEL_WARNING = 1 << 4, G_LOG_LEVEL_MESSAGE = 1 << 5, G_LOG_LEVEL_INFO = 1 << 6, G_LOG_LEVEL_DEBUG = 1 << 7, G_LOG_LEVEL_MASK = ~(G_LOG_FLAG_RECURSION | G_LOG_FLAG_FATAL) } GLogLevelFlags; #define GLIB_SYSDEF_POLLIN =1 #define GLIB_SYSDEF_POLLOUT =4 #define GLIB_SYSDEF_POLLPRI =2 #define GLIB_SYSDEF_POLLHUP =16 #define GLIB_SYSDEF_POLLERR =8 #define GLIB_SYSDEF_POLLNVAL =32 typedef enum { G_IO_IN GLIB_SYSDEF_POLLIN, /* There is data to read. */ G_IO_OUT GLIB_SYSDEF_POLLOUT, /* Data can be written (without blocking). */ G_IO_PRI GLIB_SYSDEF_POLLPRI, /* There is urgent data to read. */ G_IO_ERR GLIB_SYSDEF_POLLERR, /* Error condition. */ G_IO_HUP GLIB_SYSDEF_POLLHUP, /* Hung up (the connection has been broken, usually for pipes and sockets). */ G_IO_NVAL GLIB_SYSDEF_POLLNVAL /* Invalid request. The file descriptor is not open. */ } GIOCondition; void g_log (const gchar *log_domain, GLogLevelFlags log_level, const gchar *format, ...); #if !defined(G_LOG_DOMAIN) #define G_LOG_DOMAIN ((gchar *)NULL) #endif #define g_warning(...) g_log (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, __VA_ARGS__) #define g_new(struct_type, n_structs) g_malloc (sizeof(struct_type) * n_structs) #define g_array_append_val(array, data) g_array_append_vals (array, &data, 1) #define g_array_new(zero_terminated, clear, element_size) g_array_sized_new(zero_terminated, clear, element_size, 0) GArray * g_array_sized_new (gboolean zero_terminated, gboolean clear, guint element_size, guint reserved_size); gchar * g_array_free (GArray *array, gboolean free_segment); #define g_array_index(array, type, index) (((type *)(void *)((array)->data)))[index] GArray * g_array_set_size (GArray *array, guint length); GArray * g_array_append_vals (GArray *array, gconstpointer data, guint len); guint g_array_get_element_size (GArray *array); #endif