diff options
author | mrkn <mrkn@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-01-29 14:34:43 +0000 |
---|---|---|
committer | mrkn <mrkn@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-01-29 14:34:43 +0000 |
commit | 78400919bad04fcba0b9dee75b6217933c958fbc (patch) | |
tree | 3209c640f27c4eca4dfb08519fe89064c3414a0c /ext/bigdecimal/bigdecimal.c | |
parent | 21f6bb283f3eac8e723a23f0a7f78ffcfe574540 (diff) | |
download | ruby-78400919bad04fcba0b9dee75b6217933c958fbc.tar.gz |
* ext/bigdecimal/bigdecimal.c (rb_rational_num): add fallback function
for rubies lower than 2.2.0.
* ext/bigdecimal/bigdecimal.c (rb_rational_den): ditto.
* ext/bigdecimal/extconf.rb: check the existences of struct RRational,
rb_rational_num, and rb_rational_den.
* ext/bigdecimal/bigdecimal.bundle: bump version.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49440 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/bigdecimal/bigdecimal.c')
-rw-r--r-- | ext/bigdecimal/bigdecimal.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/ext/bigdecimal/bigdecimal.c b/ext/bigdecimal/bigdecimal.c index f9a25a5170..6d3ef77b14 100644 --- a/ext/bigdecimal/bigdecimal.c +++ b/ext/bigdecimal/bigdecimal.c @@ -109,6 +109,30 @@ static ID id_eq; # define RB_OBJ_STRING(obj) StringValueCStr(obj) #endif +#ifndef HAVE_RB_RATIONAL_NUM +static inline VALUE +rb_rational_num(VALUE rat) +{ +#ifdef HAVE_TYPE_STRUCT_RRATIONAL + return RRATIONAL(rat)->num; +#else + return rb_funcall(rat, rb_intern("numerator")); +#endif +} +#endif + +#ifndef HAVE_RB_RATIONAL_DEN +static inline VALUE +rb_rational_den(VALUE rat) +{ +#ifdef HAVE_TYPE_STRUCT_RRATIONAL + return RRATIONAL(rat)->den; +#else + return rb_funcall(rat, rb_intern("denominator")); +#endif +} +#endif + /* * ================== Ruby Interface part ========================== */ |