From 78400919bad04fcba0b9dee75b6217933c958fbc Mon Sep 17 00:00:00 2001 From: mrkn Date: Thu, 29 Jan 2015 14:34:43 +0000 Subject: * 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 --- ext/bigdecimal/bigdecimal.c | 24 ++++++++++++++++++++++++ ext/bigdecimal/bigdecimal.gemspec | 2 +- ext/bigdecimal/extconf.rb | 4 ++++ 3 files changed, 29 insertions(+), 1 deletion(-) (limited to 'ext/bigdecimal') 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 ========================== */ diff --git a/ext/bigdecimal/bigdecimal.gemspec b/ext/bigdecimal/bigdecimal.gemspec index 197bdea18f..95e3bbd614 100644 --- a/ext/bigdecimal/bigdecimal.gemspec +++ b/ext/bigdecimal/bigdecimal.gemspec @@ -1,5 +1,5 @@ # -*- ruby -*- -_VERSION = "1.2.6" +_VERSION = "1.2.7" date = %w$Date:: $[1] Gem::Specification.new do |s| diff --git a/ext/bigdecimal/extconf.rb b/ext/bigdecimal/extconf.rb index d6be3e584e..a3ec7b4c6c 100644 --- a/ext/bigdecimal/extconf.rb +++ b/ext/bigdecimal/extconf.rb @@ -3,4 +3,8 @@ require 'mkmf' have_func("labs", "stdlib.h") have_func("llabs", "stdlib.h") +have_type("struct RRational", "ruby.h") +have_func("rb_rational_num", "ruby.h") +have_func("rb_rational_den", "ruby.h") + create_makefile('bigdecimal') -- cgit v1.2.3