glibconfig.h.win32.in revision 7a19b4cae931b70b47fc865972c8e6c04c157b02
1/* glibconfig.h.win32 */ 2/* Handcrafted for Microsoft C and gcc -mno-cygwin ("mingw32"). */ 3 4#ifndef __G_LIBCONFIG_H__ 5#define __G_LIBCONFIG_H__ 6 7#include <gmacros.h> 8 9#ifdef _MSC_VER 10/* Make MSVC more pedantic, this is a recommended pragma list 11 * from _Win32_Programming_ by Rector and Newcomer. 12 */ 13#pragma warning(error:4002) 14#pragma warning(error:4003) 15#pragma warning(1:4010) 16#pragma warning(error:4013) 17#pragma warning(1:4016) 18#pragma warning(error:4020) 19#pragma warning(error:4021) 20#pragma warning(error:4027) 21#pragma warning(error:4029) 22#pragma warning(error:4033) 23#pragma warning(error:4035) 24#pragma warning(error:4045) 25#pragma warning(error:4047) 26#pragma warning(error:4049) 27#pragma warning(error:4053) 28#pragma warning(error:4071) 29#pragma warning(disable:4101) 30#pragma warning(error:4150) 31 32#pragma warning(disable:4244) /* No possible loss of data warnings */ 33#pragma warning(disable:4305) /* No truncation from int to char warnings */ 34#endif /* _MSC_VER */ 35 36#include <limits.h> 37#include <float.h> 38 39#define G_MINFLOAT FLT_MIN 40#define G_MAXFLOAT FLT_MAX 41#define G_MINDOUBLE DBL_MIN 42#define G_MAXDOUBLE DBL_MAX 43#define G_MINSHORT SHRT_MIN 44#define G_MAXSHORT SHRT_MAX 45#define G_MAXUSHORT USHRT_MAX 46#define G_MININT INT_MIN 47#define G_MAXINT INT_MAX 48#define G_MAXUINT UINT_MAX 49#define G_MINLONG LONG_MIN 50#define G_MAXLONG LONG_MAX 51#define G_MAXULONG ULONG_MAX 52 53G_BEGIN_DECLS 54 55typedef signed char gint8; 56typedef unsigned char guint8; 57typedef signed short gint16; 58typedef unsigned short guint16; 59#define G_GINT16_FORMAT "hi" 60#define G_GUINT16_FORMAT "hu" 61typedef signed int gint32; 62typedef unsigned int guint32; 63#define G_GINT32_FORMAT "i" 64#define G_GUINT32_FORMAT "u" 65 66#define G_HAVE_GINT64 1 67 68/* These are compiler specific */ 69#ifdef _MSC_VER 70typedef __int64 gint64; 71typedef unsigned __int64 guint64; 72#define G_GINT64_CONSTANT(val) (val##i64) 73#elif __GNUC__ 74typedef long long gint64; 75typedef unsigned long long guint64; 76#define G_GINT64_CONSTANT(val) (val##LL) 77#endif 78 79/* These depend on the C library. Using this file means the we 80 * use the (bundled) Microsoft msvcrt.dll. 81 */ 82#define G_GINT64_FORMAT "I64i" 83#define G_GUINT64_FORMAT "I64u" 84 85typedef gint32 gssize; 86typedef guint32 gsize; 87 88#define GPOINTER_TO_INT(p) ((gint)(p)) 89#define GPOINTER_TO_UINT(p) ((guint)(p)) 90 91#define GINT_TO_POINTER(i) ((gpointer)(i)) 92#define GUINT_TO_POINTER(u) ((gpointer)(u)) 93 94#define g_ATEXIT(proc) (atexit (proc)) 95 96#define g_memmove(d,s,n) G_STMT_START { memmove ((d), (s), (n)); } G_STMT_END 97 98#define GLIB_MAJOR_VERSION @GLIB_MAJOR_VERSION@ 99#define GLIB_MINOR_VERSION @GLIB_MINOR_VERSION@ 100#define GLIB_MICRO_VERSION @GLIB_MICRO_VERSION@ 101 102#define G_OS_WIN32 103 104#ifdef __cplusplus 105#define G_HAVE_INLINE 1 106#else /* !__cplusplus */ 107#define G_HAVE___INLINE 1 108#endif 109 110#define G_THREADS_ENABLED 111/* 112 * The following program can be used to determine the magic values below: 113 * #include <stdio.h> 114 * #include <pthread.h> 115 * main(int argc, char **argv) 116 * { 117 * int i; 118 * pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER; 119 * printf ("sizeof (pthread_mutex_t) = %d\n", sizeof (pthread_mutex_t)); 120 * printf ("sizeof (pthread_t) = %d\n", sizeof (pthread_t)); 121 * printf ("PTHREAD_MUTEX_INITIALIZER = "); 122 * for (i = 0; i < sizeof (pthread_mutex_t); i++) 123 * printf ("%u, ", ((unsigned char *) &m)[i]); 124 * printf ("\n"); 125 * exit(0); 126 * } 127 */ 128 129#define G_THREADS_IMPL_POSIX 130typedef struct _GStaticMutex GStaticMutex; 131struct _GStaticMutex 132{ 133 struct _GMutex *runtime_mutex; 134 union { 135 /* The size of the pad array should be sizeof (pthread_mutex_t) */ 136 /* This value corresponds to the 1999-05-30 version of pthreads-win32 */ 137 char pad[4]; 138 double dummy_double; 139 void *dummy_pointer; 140 long dummy_long; 141 } aligned_pad_u; 142}; 143/* This should be NULL followed by the bytes in PTHREAD_MUTEX_INITIALIZER */ 144#define G_STATIC_MUTEX_INIT { NULL, { { 255, 255, 255, 255 } } } 145#define g_static_mutex_get_mutex(mutex) \ 146 (g_thread_use_default_impl ? ((GMutex*) &((mutex)->aligned_pad_u)) : \ 147 g_static_mutex_get_mutex_impl (&((mutex)->runtime_mutex))) 148/* This represents a system thread as used by the implementation. An 149 * alien implementaion, as loaded by g_thread_init can only count on 150 * "sizeof (gpointer)" bytes to store their info. We however need more 151 * for some of our native implementations. */ 152typedef union _GSystemThread GSystemThread; 153union _GSystemThread 154{ 155 /* The size of the data array should be sizeof (pthread_t) */ 156 /* This value corresponds to the 1999-05-30 version of pthreads-win32 */ 157 char data[4]; 158 double dummy_double; 159 void *dummy_pointer; 160 long dummy_long; 161}; 162 163#define GINT16_TO_LE(val) ((gint16) (val)) 164#define GUINT16_TO_LE(val) ((guint16) (val)) 165#define GINT16_TO_BE(val) ((gint16) GUINT16_SWAP_LE_BE (val)) 166#define GUINT16_TO_BE(val) (GUINT16_SWAP_LE_BE (val)) 167 168#define GINT32_TO_LE(val) ((gint32) (val)) 169#define GUINT32_TO_LE(val) ((guint32) (val)) 170#define GINT32_TO_BE(val) ((gint32) GUINT32_SWAP_LE_BE (val)) 171#define GUINT32_TO_BE(val) (GUINT32_SWAP_LE_BE (val)) 172 173#define GINT64_TO_LE(val) ((gint64) (val)) 174#define GUINT64_TO_LE(val) ((guint64) (val)) 175#define GINT64_TO_BE(val) ((gint64) GUINT64_SWAP_LE_BE (val)) 176#define GUINT64_TO_BE(val) (GUINT64_SWAP_LE_BE (val)) 177 178#define GLONG_TO_LE(val) ((glong) GINT32_TO_LE (val)) 179#define GULONG_TO_LE(val) ((gulong) GUINT32_TO_LE (val)) 180#define GLONG_TO_BE(val) ((glong) GINT32_TO_BE (val)) 181#define GULONG_TO_BE(val) ((gulong) GUINT32_TO_BE (val)) 182 183#define GINT_TO_LE(val) ((gint) GINT32_TO_LE (val)) 184#define GUINT_TO_LE(val) ((guint) GUINT32_TO_LE (val)) 185#define GINT_TO_BE(val) ((gint) GINT32_TO_BE (val)) 186#define GUINT_TO_BE(val) ((guint) GUINT32_TO_BE (val)) 187#define G_BYTE_ORDER G_LITTLE_ENDIAN 188 189#define GLIB_SYSDEF_POLLIN = 1 190#define GLIB_SYSDEF_POLLOUT = 4 191#define GLIB_SYSDEF_POLLPRI = 2 192#define GLIB_SYSDEF_POLLERR = 8 193#define GLIB_SYSDEF_POLLHUP = 16 194#define GLIB_SYSDEF_POLLNVAL = 32 195 196#define G_MODULE_SUFFIX "dll" 197 198G_END_DECLS 199 200#endif /* __G_LIBCONFIG_H__ */ 201