⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gtypes.h

📁 windows平台下开发gtk程序所需要的库和头文件等
💻 H
📖 第 1 页 / 共 2 页
字号:
       (__extension__						\	({ register guint16 __v, __x = ((guint16) (val));	\	   if (__builtin_constant_p (__x))			\	     __v = GUINT16_SWAP_LE_BE_CONSTANT (__x);		\	   else							\	     __asm__ __volatile__ ("shl %0 = %1, 48 ;;"		\				   "mux1 %0 = %0, @rev ;;"	\				    : "=r" (__v)		\				    : "r" (__x));		\	    __v; }))#    define GUINT32_SWAP_LE_BE_IA64(val) \       (__extension__						\	 ({ register guint32 __v, __x = ((guint32) (val));	\	    if (__builtin_constant_p (__x))			\	      __v = GUINT32_SWAP_LE_BE_CONSTANT (__x);		\	    else						\	     __asm__ __volatile__ ("shl %0 = %1, 32 ;;"		\				   "mux1 %0 = %0, @rev ;;"	\				    : "=r" (__v)		\				    : "r" (__x));		\	    __v; }))#    define GUINT64_SWAP_LE_BE_IA64(val) \       (__extension__						\	({ register guint64 __v, __x = ((guint64) (val));	\	   if (__builtin_constant_p (__x))			\	     __v = GUINT64_SWAP_LE_BE_CONSTANT (__x);		\	   else							\	     __asm__ __volatile__ ("mux1 %0 = %1, @rev ;;"	\				   : "=r" (__v)			\				   : "r" (__x));		\	   __v; }))#    define GUINT16_SWAP_LE_BE(val) (GUINT16_SWAP_LE_BE_IA64 (val))#    define GUINT32_SWAP_LE_BE(val) (GUINT32_SWAP_LE_BE_IA64 (val))#    define GUINT64_SWAP_LE_BE(val) (GUINT64_SWAP_LE_BE_IA64 (val))#  elif defined (__x86_64__)#    define GUINT32_SWAP_LE_BE_X86_64(val) \       (__extension__						\	 ({ register guint32 __v, __x = ((guint32) (val));	\	    if (__builtin_constant_p (__x))			\	      __v = GUINT32_SWAP_LE_BE_CONSTANT (__x);		\	    else						\	     __asm__ ("bswapl %0"				\		      : "=r" (__v)				\		      : "0" (__x));				\	    __v; }))#    define GUINT64_SWAP_LE_BE_X86_64(val) \       (__extension__						\	({ register guint64 __v, __x = ((guint64) (val));	\	   if (__builtin_constant_p (__x))			\	     __v = GUINT64_SWAP_LE_BE_CONSTANT (__x);		\	   else							\	     __asm__ ("bswapq %0"				\		      : "=r" (__v)				\		      : "0" (__x));				\	   __v; }))     /* gcc seems to figure out optimal code for this on its own */#    define GUINT16_SWAP_LE_BE(val) (GUINT16_SWAP_LE_BE_CONSTANT (val))#    define GUINT32_SWAP_LE_BE(val) (GUINT32_SWAP_LE_BE_X86_64 (val))#    define GUINT64_SWAP_LE_BE(val) (GUINT64_SWAP_LE_BE_X86_64 (val))#  else /* generic gcc */#    define GUINT16_SWAP_LE_BE(val) (GUINT16_SWAP_LE_BE_CONSTANT (val))#    define GUINT32_SWAP_LE_BE(val) (GUINT32_SWAP_LE_BE_CONSTANT (val))#    define GUINT64_SWAP_LE_BE(val) (GUINT64_SWAP_LE_BE_CONSTANT (val))#  endif#else /* generic */#  define GUINT16_SWAP_LE_BE(val) (GUINT16_SWAP_LE_BE_CONSTANT (val))#  define GUINT32_SWAP_LE_BE(val) (GUINT32_SWAP_LE_BE_CONSTANT (val))#  define GUINT64_SWAP_LE_BE(val) (GUINT64_SWAP_LE_BE_CONSTANT (val))#endif /* generic */#define GUINT16_SWAP_LE_PDP(val)	((guint16) (val))#define GUINT16_SWAP_BE_PDP(val)	(GUINT16_SWAP_LE_BE (val))#define GUINT32_SWAP_LE_PDP(val)	((guint32) ( \    (((guint32) (val) & (guint32) 0x0000ffffU) << 16) | \    (((guint32) (val) & (guint32) 0xffff0000U) >> 16)))#define GUINT32_SWAP_BE_PDP(val)	((guint32) ( \    (((guint32) (val) & (guint32) 0x00ff00ffU) << 8) | \    (((guint32) (val) & (guint32) 0xff00ff00U) >> 8)))/* The G*_TO_?E() macros are defined in glibconfig.h. * The transformation is symmetric, so the FROM just maps to the TO. */#define GINT16_FROM_LE(val)	(GINT16_TO_LE (val))#define GUINT16_FROM_LE(val)	(GUINT16_TO_LE (val))#define GINT16_FROM_BE(val)	(GINT16_TO_BE (val))#define GUINT16_FROM_BE(val)	(GUINT16_TO_BE (val))#define GINT32_FROM_LE(val)	(GINT32_TO_LE (val))#define GUINT32_FROM_LE(val)	(GUINT32_TO_LE (val))#define GINT32_FROM_BE(val)	(GINT32_TO_BE (val))#define GUINT32_FROM_BE(val)	(GUINT32_TO_BE (val))#define GINT64_FROM_LE(val)	(GINT64_TO_LE (val))#define GUINT64_FROM_LE(val)	(GUINT64_TO_LE (val))#define GINT64_FROM_BE(val)	(GINT64_TO_BE (val))#define GUINT64_FROM_BE(val)	(GUINT64_TO_BE (val))#define GLONG_FROM_LE(val)	(GLONG_TO_LE (val))#define GULONG_FROM_LE(val)	(GULONG_TO_LE (val))#define GLONG_FROM_BE(val)	(GLONG_TO_BE (val))#define GULONG_FROM_BE(val)	(GULONG_TO_BE (val))#define GINT_FROM_LE(val)	(GINT_TO_LE (val))#define GUINT_FROM_LE(val)	(GUINT_TO_LE (val))#define GINT_FROM_BE(val)	(GINT_TO_BE (val))#define GUINT_FROM_BE(val)	(GUINT_TO_BE (val))/* Portable versions of host-network order stuff */#define g_ntohl(val) (GUINT32_FROM_BE (val))#define g_ntohs(val) (GUINT16_FROM_BE (val))#define g_htonl(val) (GUINT32_TO_BE (val))#define g_htons(val) (GUINT16_TO_BE (val))/* IEEE Standard 754 Single Precision Storage Format (gfloat): * *        31 30           23 22            0 * +--------+---------------+---------------+ * | s 1bit | e[30:23] 8bit | f[22:0] 23bit | * +--------+---------------+---------------+ * B0------------------->B1------->B2-->B3--> * * IEEE Standard 754 Double Precision Storage Format (gdouble): * *        63 62            52 51            32   31            0 * +--------+----------------+----------------+ +---------------+ * | s 1bit | e[62:52] 11bit | f[51:32] 20bit | | f[31:0] 32bit | * +--------+----------------+----------------+ +---------------+ * B0--------------->B1---------->B2--->B3---->  B4->B5->B6->B7-> *//* subtract from biased_exponent to form base2 exponent (normal numbers) */typedef union  _GDoubleIEEE754	GDoubleIEEE754;typedef union  _GFloatIEEE754	GFloatIEEE754;#define G_IEEE754_FLOAT_BIAS	(127)#define G_IEEE754_DOUBLE_BIAS	(1023)/* multiply with base2 exponent to get base10 exponent (normal numbers) */#define G_LOG_2_BASE_10		(0.30102999566398119521)#if G_BYTE_ORDER == G_LITTLE_ENDIANunion _GFloatIEEE754{  gfloat v_float;  struct {    guint mantissa : 23;    guint biased_exponent : 8;    guint sign : 1;  } mpn;};union _GDoubleIEEE754{  gdouble v_double;  struct {    guint mantissa_low : 32;    guint mantissa_high : 20;    guint biased_exponent : 11;    guint sign : 1;  } mpn;};#elif G_BYTE_ORDER == G_BIG_ENDIANunion _GFloatIEEE754{  gfloat v_float;  struct {    guint sign : 1;    guint biased_exponent : 8;    guint mantissa : 23;  } mpn;};union _GDoubleIEEE754{  gdouble v_double;  struct {    guint sign : 1;    guint biased_exponent : 11;    guint mantissa_high : 20;    guint mantissa_low : 32;  } mpn;};#else /* !G_LITTLE_ENDIAN && !G_BIG_ENDIAN */#error unknown ENDIAN type#endif /* !G_LITTLE_ENDIAN && !G_BIG_ENDIAN */typedef struct _GTimeVal                GTimeVal;struct _GTimeVal{  glong tv_sec;  glong tv_usec;};G_END_DECLS/* We prefix variable declarations so they can * properly get exported in Windows DLLs. */#ifndef GLIB_VAR#  ifdef G_PLATFORM_WIN32#    ifdef GLIB_STATIC_COMPILATION#      define GLIB_VAR extern#    else /* !GLIB_STATIC_COMPILATION */#      ifdef GLIB_COMPILATION#        ifdef DLL_EXPORT#          define GLIB_VAR __declspec(dllexport)#        else /* !DLL_EXPORT */#          define GLIB_VAR extern#        endif /* !DLL_EXPORT */#      else /* !GLIB_COMPILATION */#        define GLIB_VAR extern __declspec(dllimport)#      endif /* !GLIB_COMPILATION */#    endif /* !GLIB_STATIC_COMPILATION */#  else /* !G_PLATFORM_WIN32 */#    define GLIB_VAR extern#  endif /* !G_PLATFORM_WIN32 */#endif /* GLIB_VAR */#endif /* __G_TYPES_H__ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -