summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-07-12 13:17:29 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-07-12 13:17:29 +0000
commitf94f8f351eb1088a2c5571ef5563ec6503fa1b44 (patch)
tree81711099d206cb1f05728e1f1243ef626b2f0765 /include
parent2c0a3f226a048570e76b27d997d3fd5342af5a59 (diff)
* configure.in (sizeof ptrdiff_t): check for size of ptrdiff_t.
* include/ruby/ruby.h (PRI?PTRDIFF, PRI?SIZE): printf conversion specifiers for ptrdiff_t and size_t/ssize_t. * insns.def (leave), marshal.c (long_toobig), transcode.c (str_transcode), vm_dump.c (control_frame_dump, stack_dump_each), (debug_print_register, debug_print_pre): t and z length modifiers are C99. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18038 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'include')
-rw-r--r--include/ruby/ruby.h49
1 files changed, 36 insertions, 13 deletions
diff --git a/include/ruby/ruby.h b/include/ruby/ruby.h
index 89c7f602ed..67c22af9ad 100644
--- a/include/ruby/ruby.h
+++ b/include/ruby/ruby.h
@@ -87,28 +87,51 @@ typedef unsigned long VALUE;
typedef unsigned long ID;
# define SIGNED_VALUE long
# define SIZEOF_VALUE SIZEOF_LONG
-# define PRIdVALUE "ld"
-# define PRIiVALUE "li"
-# define PRIoVALUE "lo"
-# define PRIuVALUE "lu"
-# define PRIxVALUE "lx"
-# define PRIXVALUE "lX"
+# define PRI_VALUE_PREFIX "l"
#elif SIZEOF_LONG_LONG == SIZEOF_VOIDP
typedef unsigned LONG_LONG VALUE;
typedef unsigned LONG_LONG ID;
# define SIGNED_VALUE LONG_LONG
# define LONG_LONG_VALUE 1
# define SIZEOF_VALUE SIZEOF_LONG_LONG
-# define PRIdVALUE "lld"
-# define PRIiVALUE "lli"
-# define PRIoVALUE "llo"
-# define PRIuVALUE "llu"
-# define PRIxVALUE "llx"
-# define PRIXVALUE "llX"
+# define PRI_VALUE_PREFIX "ll"
#else
# error ---->> ruby requires sizeof(void*) == sizeof(long) to be compiled. <<----
#endif
-
+#define PRIdVALUE PRI_VALUE_PREFIX"d"
+#define PRIiVALUE PRI_VALUE_PREFIX"i"
+#define PRIoVALUE PRI_VALUE_PREFIX"o"
+#define PRIuVALUE PRI_VALUE_PREFIX"u"
+#define PRIxVALUE PRI_VALUE_PREFIX"x"
+#define PRIXVALUE PRI_VALUE_PREFIX"X"
+
+#if SIZEOF_PTRDIFF_T == SIZEOF_INT
+# define PRI_PTDIFF_PREFIX
+#elif SIZEOF_PTRDIFF_T == SIZEOF_LONG
+# define PRI_PTDIFF_PREFIX "l"
+#elif SIZEOF_PTRDIFF_T == SIZEOF_LONG
+# define PRI_PTDIFF_PREFIX "ll"
+#endif
+#define PRIdPTRDIFF PRI_PTRDIFF_PREFIX"d"
+#define PRIiPTRDIFF PRI_PTRDIFF_PREFIX"i"
+#define PRIoPTRDIFF PRI_PTRDIFF_PREFIX"o"
+#define PRIuPTRDIFF PRI_PTRDIFF_PREFIX"u"
+#define PRIxPTRDIFF PRI_PTRDIFF_PREFIX"x"
+#define PRIXPTRDIFF PRI_PTRDIFF_PREFIX"X"
+
+#if SIZEOF_SIZE_T == SIZEOF_INT
+# define PRI_PTDIFF_PREFIX
+#elif SIZEOF_SIZE_T == SIZEOF_LONG
+# define PRI_PTDIFF_PREFIX "l"
+#elif SIZEOF_SIZE_T == SIZEOF_LONG
+# define PRI_PTDIFF_PREFIX "ll"
+#endif
+#define PRIdSIZE PRI_SIZE_PREFIX"d"
+#define PRIiSIZE PRI_SIZE_PREFIX"i"
+#define PRIoSIZE PRI_SIZE_PREFIX"o"
+#define PRIuSIZE PRI_SIZE_PREFIX"u"
+#define PRIxSIZE PRI_SIZE_PREFIX"x"
+#define PRIXSIZE PRI_SIZE_PREFIX"X"
#ifdef __STDC__
# include <limits.h>