summaryrefslogtreecommitdiff
path: root/spec/rubyspec/optional/capi/ext/fixnum_spec.c
diff options
context:
space:
mode:
Diffstat (limited to 'spec/rubyspec/optional/capi/ext/fixnum_spec.c')
-rw-r--r--spec/rubyspec/optional/capi/ext/fixnum_spec.c20
1 files changed, 17 insertions, 3 deletions
diff --git a/spec/rubyspec/optional/capi/ext/fixnum_spec.c b/spec/rubyspec/optional/capi/ext/fixnum_spec.c
index 49dd039c52..78d452f936 100644
--- a/spec/rubyspec/optional/capi/ext/fixnum_spec.c
+++ b/spec/rubyspec/optional/capi/ext/fixnum_spec.c
@@ -5,23 +5,37 @@
extern "C" {
#endif
+static VALUE fixnum_spec_FIX2INT(VALUE self, VALUE value) {
+ int i = FIX2INT(value);
+ return INT2NUM(i);
+}
+
+static VALUE fixnum_spec_FIX2UINT(VALUE self, VALUE value) {
+ unsigned int i = FIX2UINT(value);
+ return UINT2NUM(i);
+}
+
#ifdef HAVE_RB_FIX2UINT
static VALUE fixnum_spec_rb_fix2uint(VALUE self, VALUE value) {
- return INT2FIX(rb_fix2uint(value));
+ unsigned int i = rb_fix2uint(value);
+ return UINT2NUM(i);
}
#endif
#ifdef HAVE_RB_FIX2INT
static VALUE fixnum_spec_rb_fix2int(VALUE self, VALUE value) {
- return INT2FIX(rb_fix2int(value));
+ int i = rb_fix2int(value);
+ return INT2NUM(i);
}
#endif
-
void Init_fixnum_spec(void) {
VALUE cls;
cls = rb_define_class("CApiFixnumSpecs", rb_cObject);
+ rb_define_method(cls, "FIX2INT", fixnum_spec_FIX2INT, 1);
+ rb_define_method(cls, "FIX2UINT", fixnum_spec_FIX2UINT, 1);
+
#ifdef HAVE_RB_FIX2UINT
rb_define_method(cls, "rb_fix2uint", fixnum_spec_rb_fix2uint, 1);
#endif