diff options
Diffstat (limited to 'spec/ruby/optional/capi/ext/object_spec.c')
-rw-r--r-- | spec/ruby/optional/capi/ext/object_spec.c | 40 |
1 files changed, 39 insertions, 1 deletions
diff --git a/spec/ruby/optional/capi/ext/object_spec.c b/spec/ruby/optional/capi/ext/object_spec.c index ad1ebecc78..45a28169ef 100644 --- a/spec/ruby/optional/capi/ext/object_spec.c +++ b/spec/ruby/optional/capi/ext/object_spec.c @@ -5,6 +5,32 @@ extern "C" { #endif +#ifdef HAVE_FL_ABLE +static VALUE object_spec_FL_ABLE(VALUE self, VALUE obj) { + if (FL_ABLE(obj)) { + return Qtrue; + } else { + return Qfalse; + } +} +#endif + +#ifdef HAVE_FL_TEST +static int object_spec_FL_TEST_flag(VALUE flag_string) { + char *flag_cstr = StringValueCStr(flag_string); + if (strcmp(flag_cstr, "FL_TAINT") == 0) { + return FL_TAINT; + } else if (strcmp(flag_cstr, "FL_FREEZE") == 0) { + return FL_FREEZE; + } + return 0; +} + +static VALUE object_spec_FL_TEST(VALUE self, VALUE obj, VALUE flag) { + return INT2FIX(FL_TEST(obj, object_spec_FL_TEST_flag(flag))); +} +#endif + #ifdef HAVE_OBJ_TAINT static VALUE object_spec_OBJ_TAINT(VALUE self, VALUE obj) { OBJ_TAINT(obj); @@ -204,7 +230,11 @@ static VALUE object_spec_rb_method_boundp(VALUE self, VALUE obj, VALUE method, V #ifdef HAVE_RB_SPECIAL_CONST_P static VALUE object_spec_rb_special_const_p(VALUE self, VALUE value) { - return rb_special_const_p(value); + if (rb_special_const_p(value)) { + return Qtrue; + } else { + return Qfalse; + } } #endif @@ -404,6 +434,14 @@ void Init_object_spec(void) { VALUE cls; cls = rb_define_class("CApiObjectSpecs", rb_cObject); +#ifdef HAVE_FL_ABLE + rb_define_method(cls, "FL_ABLE", object_spec_FL_ABLE, 1); +#endif + +#ifdef HAVE_FL_TEST + rb_define_method(cls, "FL_TEST", object_spec_FL_TEST, 2); +#endif + #ifdef HAVE_OBJ_TAINT rb_define_method(cls, "OBJ_TAINT", object_spec_OBJ_TAINT, 1); #endif |