summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog16
-rw-r--r--configure.in31
2 files changed, 42 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index a418b0718..a341f2732 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,19 @@
+2008-07-28 Tor Lillqvist <tml@novell.com>
+
+ * configure.in: Output to glibconfig.h typedefs for gintptr as the
+ signed integer type that can hold a pointer, and guintptr as the
+ corresponding unsigned type. These types are portable equivalents
+ to intptr_t and uintptr_t which are not available in all
+ compilers.
+
+ For all current platforms, they will presumably end up as the same
+ types as gssize and gsize, but in theory size_t can be smaller
+ than intptr_t. Also, the intended use case for gintptr and
+ guintptr is different from that of gssize and gsize. As the name
+ indicates, gintptr is for when one wants an integer type that can
+ hold a pointer, and gsize is for when one wants an integer type
+ that can hold the value of the sizeof operator.
+
2008-07-28 Matthias Clasen <mclasen@redhat.com>
Bug 544465 – gmarkup makes it hard to use pre-rolled parsers
diff --git a/configure.in b/configure.in
index ac998ab04..0646eb8e2 100644
--- a/configure.in
+++ b/configure.in
@@ -2763,6 +2763,9 @@ _______EOF
#define GINT_TO_POINTER(i) ((gpointer) ${glib_gpi_cast} (i))
#define GUINT_TO_POINTER(u) ((gpointer) ${glib_gpui_cast} (u))
+
+typedef signed $glib_intptr_type_define gintptr;
+typedef unsigned $glib_intptr_type_define guintptr;
_______EOF
else
echo '#error SIZEOF_VOID_P unknown - This should never happen' >>$outfile
@@ -3122,12 +3125,30 @@ esac
gintbits=`expr $ac_cv_sizeof_int \* 8`
glongbits=`expr $ac_cv_sizeof_long \* 8`
-
case $ac_cv_sizeof_void_p in
-$ac_cv_sizeof_int) glib_gpi_cast='' glib_gpui_cast='' ;;
-$ac_cv_sizeof_long) glib_gpi_cast='(glong)' glib_gpui_cast='(gulong)' ;;
-$ac_cv_sizeof_long_long)glib_gpi_cast='(gint64)' glib_gpui_cast='(guint64)' ;;
-*) glib_unknown_void_p=yes ;;
+$ac_cv_sizeof_int)
+ glib_intptr_type_define=int
+ glib_gpi_cast=''
+ glib_gpui_cast=''
+ ;;
+$ac_cv_sizeof_long)
+ glib_intptr_type_define=long
+ glib_gpi_cast='(glong)'
+ glib_gpui_cast='(gulong)'
+ ;;
+$ac_cv_sizeof_long_long)
+ glib_intptr_type_define='long long'
+ glib_gpi_cast='(gint64)'
+ glib_gpui_cast='(guint64)'
+ ;;
+$ac_cv_sizeof___int64)
+ glib_intptr_type_define=__int64
+ glib_gpi_cast='(gint64)'
+ glib_gpui_cast='(guint64)'
+ ;;
+*)
+ glib_unknown_void_p=yes
+ ;;
esac