59 #ifdef HAVE_LONG_DOUBLE
60 typedef long double gldouble;
62 typedef double gldouble;
88 #define G_E 2.7182818284590452354E0
89 #define G_LN2 6.9314718055994530942E-1
90 #define G_LN10 2.3025850929940456840E0
91 #define G_PI 3.14159265358979323846E0
92 #define G_PI_2 1.57079632679489661923E0
93 #define G_PI_4 0.78539816339744830962E0
94 #define G_SQRT2 1.4142135623730950488E0
101 #define G_LITTLE_ENDIAN 1234
102 #define G_BIG_ENDIAN 4321
103 #define G_PDP_ENDIAN 3412
108 #define GUINT16_SWAP_LE_BE_CONSTANT(val) ((guint16) ( \
109 (((guint16) (val) & (guint16) 0x00ffU) << 8) | \
110 (((guint16) (val) & (guint16) 0xff00U) >> 8)))
111 #define GUINT32_SWAP_LE_BE_CONSTANT(val) ((guint32) ( \
112 (((guint32) (val) & (guint32) 0x000000ffU) << 24) | \
113 (((guint32) (val) & (guint32) 0x0000ff00U) << 8) | \
114 (((guint32) (val) & (guint32) 0x00ff0000U) >> 8) | \
115 (((guint32) (val) & (guint32) 0xff000000U) >> 24)))
119 #if defined (__i386__) && defined (__GNUC__) && __GNUC__ >= 2
120 # define GUINT16_SWAP_LE_BE_X86(val) \
122 ({ register guint16 __v; \
123 if (__builtin_constant_p (val)) \
124 __v = GUINT16_SWAP_LE_BE_CONSTANT (val); \
126 __asm__ __const__ ("rorw $8, %w0" \
128 : "0" ((guint16) (val))); \
130 # define GUINT16_SWAP_LE_BE(val) (GUINT16_SWAP_LE_BE_X86 (val))
131 # if !defined(__i486__) && !defined(__i586__) \
132 && !defined(__pentium__) && !defined(__i686__) && !defined(__pentiumpro__)
133 # define GUINT32_SWAP_LE_BE_X86(val) \
135 ({ register guint32 __v; \
136 if (__builtin_constant_p (val)) \
137 __v = GUINT32_SWAP_LE_BE_CONSTANT (val); \
139 __asm__ __const__ ("rorw $8, %w0\n\t" \
143 : "0" ((guint32) (val))); \
146 # define GUINT32_SWAP_LE_BE_X86(val) \
148 ({ register guint32 __v; \
149 if (__builtin_constant_p (val)) \
150 __v = GUINT32_SWAP_LE_BE_CONSTANT (val); \
152 __asm__ __const__ ("bswap %0" \
154 : "0" ((guint32) (val))); \
157 # define GUINT32_SWAP_LE_BE(val) (GUINT32_SWAP_LE_BE_X86 (val))
159 # define GUINT16_SWAP_LE_BE(val) (GUINT16_SWAP_LE_BE_CONSTANT (val))
160 # define GUINT32_SWAP_LE_BE(val) (GUINT32_SWAP_LE_BE_CONSTANT (val))
164 # define GUINT64_SWAP_LE_BE_CONSTANT(val) ((guint64) ( \
165 (((guint64) (val) & \
166 (guint64) G_GINT64_CONSTANT(0x00000000000000ffU)) << 56) | \
167 (((guint64) (val) & \
168 (guint64) G_GINT64_CONSTANT(0x000000000000ff00U)) << 40) | \
169 (((guint64) (val) & \
170 (guint64) G_GINT64_CONSTANT(0x0000000000ff0000U)) << 24) | \
171 (((guint64) (val) & \
172 (guint64) G_GINT64_CONSTANT(0x00000000ff000000U)) << 8) | \
173 (((guint64) (val) & \
174 (guint64) G_GINT64_CONSTANT(0x000000ff00000000U)) >> 8) | \
175 (((guint64) (val) & \
176 (guint64) G_GINT64_CONSTANT(0x0000ff0000000000U)) >> 24) | \
177 (((guint64) (val) & \
178 (guint64) G_GINT64_CONSTANT(0x00ff000000000000U)) >> 40) | \
179 (((guint64) (val) & \
180 (guint64) G_GINT64_CONSTANT(0xff00000000000000U)) >> 56)))
181 # if defined (__i386__) && defined (__GNUC__) && __GNUC__ >= 2
182 # define GUINT64_SWAP_LE_BE_X86(val) \
184 ({ union { guint64 __ll; \
185 guint32 __l[2]; } __r; \
186 if (__builtin_constant_p (val)) \
187 __r.__ll = GUINT64_SWAP_LE_BE_CONSTANT (val); \
190 union { guint64 __ll; \
191 guint32 __l[2]; } __w; \
192 __w.__ll = ((guint64) val); \
193 __r.__l[0] = GUINT32_SWAP_LE_BE (__w.__l[1]); \
194 __r.__l[1] = GUINT32_SWAP_LE_BE (__w.__l[0]); \
197 # define GUINT64_SWAP_LE_BE(val) (GUINT64_SWAP_LE_BE_X86 (val))
199 # define GUINT64_SWAP_LE_BE(val) (GUINT64_SWAP_LE_BE_CONSTANT(val))
203 #define GUINT16_SWAP_LE_PDP(val) ((guint16) (val))
204 #define GUINT16_SWAP_BE_PDP(val) (GUINT16_SWAP_LE_BE (val))
205 #define GUINT32_SWAP_LE_PDP(val) ((guint32) ( \
206 (((guint32) (val) & (guint32) 0x0000ffffU) << 16) | \
207 (((guint32) (val) & (guint32) 0xffff0000U) >> 16)))
208 #define GUINT32_SWAP_BE_PDP(val) ((guint32) ( \
209 (((guint32) (val) & (guint32) 0x00ff00ffU) << 8) | \
210 (((guint32) (val) & (guint32) 0xff00ff00U) >> 8)))
215 #define GINT16_FROM_LE(val) (GINT16_TO_LE (val))
216 #define GUINT16_FROM_LE(val) (GUINT16_TO_LE (val))
217 #define GINT16_FROM_BE(val) (GINT16_TO_BE (val))
218 #define GUINT16_FROM_BE(val) (GUINT16_TO_BE (val))
219 #define GINT32_FROM_LE(val) (GINT32_TO_LE (val))
220 #define GUINT32_FROM_LE(val) (GUINT32_TO_LE (val))
221 #define GINT32_FROM_BE(val) (GINT32_TO_BE (val))
222 #define GUINT32_FROM_BE(val) (GUINT32_TO_BE (val))
225 #define GINT64_FROM_LE(val) (GINT64_TO_LE (val))
226 #define GUINT64_FROM_LE(val) (GUINT64_TO_LE (val))
227 #define GINT64_FROM_BE(val) (GINT64_TO_BE (val))
228 #define GUINT64_FROM_BE(val) (GUINT64_TO_BE (val))
231 #define GLONG_FROM_LE(val) (GLONG_TO_LE (val))
232 #define GULONG_FROM_LE(val) (GULONG_TO_LE (val))
233 #define GLONG_FROM_BE(val) (GLONG_TO_BE (val))
234 #define GULONG_FROM_BE(val) (GULONG_TO_BE (val))
236 #define GINT_FROM_LE(val) (GINT_TO_LE (val))
237 #define GUINT_FROM_LE(val) (GUINT_TO_LE (val))
238 #define GINT_FROM_BE(val) (GINT_TO_BE (val))
239 #define GUINT_FROM_BE(val) (GUINT_TO_BE (val))
244 #define g_ntohl(val) (GUINT32_FROM_BE (val))
245 #define g_ntohs(val) (GUINT16_FROM_BE (val))
246 #define g_htonl(val) (GUINT32_TO_BE (val))
247 #define g_htons(val) (GUINT16_TO_BE (val))
268 #define G_IEEE754_FLOAT_BIAS (127)
269 #define G_IEEE754_DOUBLE_BIAS (1023)
271 #define G_LOG_2_BASE_10 (0.30102999566398119521)
272 #if G_BYTE_ORDER == G_LITTLE_ENDIAN
292 #elif G_BYTE_ORDER == G_BIG_ENDIAN
313 #error unknown ENDIAN type
330 # ifdef G_PLATFORM_WIN32
331 # ifdef GLIB_STATIC_COMPILATION
332 # define GLIB_VAR extern
334 # ifdef GLIB_COMPILATION
336 # define GLIB_VAR __declspec(dllexport)
338 # define GLIB_VAR extern
341 # define GLIB_VAR extern __declspec(dllimport)
345 # define GLIB_VAR extern
const void * gconstpointer
void(* GFreeFunc)(gpointer data)
struct _GDoubleIEEE754::@75 mpn
void(* GDestroyNotify)(gpointer data)
G_BEGIN_DECLS typedef char gchar
void(* GFunc)(gpointer data, gpointer user_data)
void(* GHFunc)(gpointer key, gpointer value, gpointer user_data)
gint(* GCompareFunc)(gconstpointer a, gconstpointer b)
guint(* GHashFunc)(gconstpointer key)
struct _GFloatIEEE754::@74 mpn
const void * gconstpointer
gboolean(* GEqualFunc)(gconstpointer a, gconstpointer b)
typedef void((*Func_t)())
gint(* GCompareDataFunc)(gconstpointer a, gconstpointer b, gpointer user_data)