summaryrefslogtreecommitdiff
path: root/include/ruby/ruby.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/ruby/ruby.h')
-rw-r--r--include/ruby/ruby.h25
1 files changed, 15 insertions, 10 deletions
diff --git a/include/ruby/ruby.h b/include/ruby/ruby.h
index 7c76691702..99453325b4 100644
--- a/include/ruby/ruby.h
+++ b/include/ruby/ruby.h
@@ -451,30 +451,35 @@ double rb_num2dbl(VALUE);
VALUE rb_uint2big(VALUE);
VALUE rb_int2big(SIGNED_VALUE);
+
+#if SIZEOF_INT < SIZEOF_VALUE
+# define INT2NUM(v) INT2FIX((int)(v))
+# define UINT2NUM(v) LONG2FIX((unsigned int)(v))
+#else
static inline VALUE
INT2NUM(int v)
{
-# if SIZEOF_VALUE <= SIZEOF_INT
if (!FIXABLE(v))
return rb_int2big(v);
-# endif
return INT2FIX(v);
}
-static inline VALUE
-LONG2NUM(long v)
-{
- if (FIXABLE(v)) return LONG2FIX(v);
- return rb_int2big(v);
-}
+
static inline VALUE
UINT2NUM(unsigned int v)
{
-# if SIZEOF_VALUE <= SIZEOF_INT
if (!POSFIXABLE(v))
return rb_uint2big(v);
-# endif
return LONG2FIX(v);
}
+#endif
+
+static inline VALUE
+LONG2NUM(long v)
+{
+ if (FIXABLE(v)) return LONG2FIX(v);
+ return rb_int2big(v);
+}
+
static inline VALUE
ULONG2NUM(unsigned long v)
{