25 lines
788 B
C
25 lines
788 B
C
/*
|
|
* Macros used to cast between pointers and integers (e.g. when storing an int
|
|
* in ClientData), on 64-bit architectures they avoid gcc warning about "cast
|
|
* to/from pointer from/to integer of different size".
|
|
*/
|
|
|
|
#if !defined(INT2PTR) && !defined(PTR2INT)
|
|
# if defined(HAVE_INTPTR_T) || defined(intptr_t)
|
|
# define INT2PTR(p) ((void *)(intptr_t)(p))
|
|
# define PTR2INT(p) ((int)(intptr_t)(p))
|
|
# else
|
|
# define INT2PTR(p) ((void *)(p))
|
|
# define PTR2INT(p) ((int)(p))
|
|
# endif
|
|
#endif
|
|
#if !defined(UINT2PTR) && !defined(PTR2UINT)
|
|
# if defined(HAVE_UINTPTR_T) || defined(uintptr_t)
|
|
# define UINT2PTR(p) ((void *)(uintptr_t)(p))
|
|
# define PTR2UINT(p) ((unsigned int)(uintptr_t)(p))
|
|
# else
|
|
# define UINT2PTR(p) ((void *)(p))
|
|
# define PTR2UINT(p) ((unsigned int)(p))
|
|
# endif
|
|
#endif
|