From 40b82afe6a20749a375d36ce17e941e890ef8b0e Mon Sep 17 00:00:00 2001 From: Kenta Murata Date: Wed, 9 Oct 2019 10:50:59 +0900 Subject: [PATCH] [ruby/bigdecimal] Support Ruby < 2.6 https://github.com/ruby/bigdecimal/commit/61ec452599 --- ext/bigdecimal/bigdecimal.c | 24 ++++++++++++++++++++++++ ext/bigdecimal/extconf.rb | 3 +++ 2 files changed, 27 insertions(+) diff --git a/ext/bigdecimal/bigdecimal.c b/ext/bigdecimal/bigdecimal.c index 5d0fc85baa..380015248b 100644 --- a/ext/bigdecimal/bigdecimal.c +++ b/ext/bigdecimal/bigdecimal.c @@ -128,6 +128,30 @@ rb_rational_den(VALUE rat) } #endif +#ifndef HAVE_RB_COMPLEX_REAL +static inline VALUE +rb_complex_real(VALUE cmp) +{ +#ifdef HAVE_TYPE_STRUCT_RCOMPLEX + return RCOMPLEX(cmp)->real; +#else + return rb_funcall(cmp, rb_intern("real"), 0); +#endif +} +#endif + +#ifndef HAVE_RB_COMPLEX_IMAG +static inline VALUE +rb_complex_imag(VALUE cmp) +{ +#ifdef HAVE_TYPE_STRUCT_RCOMPLEX + return RCOMPLEX(cmp)->imag; +#else + return rb_funcall(cmp, rb_intern("imag"), 0); +#endif +} +#endif + #define BIGDECIMAL_POSITIVE_P(bd) ((bd)->sign > 0) #define BIGDECIMAL_NEGATIVE_P(bd) ((bd)->sign < 0) diff --git a/ext/bigdecimal/extconf.rb b/ext/bigdecimal/extconf.rb index b4098fdacf..fc448ed380 100644 --- a/ext/bigdecimal/extconf.rb +++ b/ext/bigdecimal/extconf.rb @@ -36,6 +36,9 @@ have_func("isfinite", "math.h") have_type("struct RRational", "ruby.h") have_func("rb_rational_num", "ruby.h") have_func("rb_rational_den", "ruby.h") +have_type("struct RComplex", "ruby.h") +have_func("rb_complex_real", "ruby.h") +have_func("rb_complex_imag", "ruby.h") have_func("rb_array_const_ptr", "ruby.h") have_func("rb_sym2str", "ruby.h") have_func("rb_opts_exception_p", "ruby.h")