1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

ruby.h: rb_num2ulong_inline

* include/ruby/ruby.h (NUM2ULONG): optimize by inline as well as
  NUM2LONG, and cast to unsigned long explicitly for the platforms
  where SIZEOF_VALUE is larger than SIZEOF_LONG.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36631 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2012-08-05 15:39:26 +00:00
parent 306a16d201
commit 95512f2777
2 changed files with 14 additions and 2 deletions

View file

@ -1,4 +1,8 @@
Mon Aug 6 00:38:52 2012 Nobuyoshi Nakada <nobu@ruby-lang.org> Mon Aug 6 00:39:24 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
* include/ruby/ruby.h (NUM2ULONG): optimize by inline as well as
NUM2LONG, and cast to unsigned long explicitly for the platforms
where SIZEOF_VALUE is larger than SIZEOF_LONG.
* include/ruby/ruby.h (NUM2SSIZET): fix type to cast. * include/ruby/ruby.h (NUM2SSIZET): fix type to cast.

View file

@ -514,7 +514,15 @@ rb_num2long_inline(VALUE x)
return (long)rb_num2long(x); return (long)rb_num2long(x);
} }
#define NUM2LONG(x) rb_num2long_inline(x) #define NUM2LONG(x) rb_num2long_inline(x)
#define NUM2ULONG(x) rb_num2ulong(x) static inline unsigned long
rb_num2ulong_inline(VALUE x)
{
if (FIXNUM_P(x))
return (unsigned long)FIX2LONG(x);
else
return (unsigned long)rb_num2ulong(x);
}
#define NUM2ULONG(x) rb_num2ulong_inline(x)
#if SIZEOF_INT < SIZEOF_LONG #if SIZEOF_INT < SIZEOF_LONG
long rb_num2int(VALUE); long rb_num2int(VALUE);
long rb_fix2int(VALUE); long rb_fix2int(VALUE);