Feature #15338 ยป 0001-Add-rb_gv_defined.patch
| include/ruby/ruby.h | ||
|---|---|---|
| VALUE rb_gv_set(const char*, VALUE); | ||
| VALUE rb_gv_get(const char*); | ||
| VALUE rb_gv_defined(const char *); | ||
| VALUE rb_iv_get(VALUE, const char*); | ||
| VALUE rb_iv_set(VALUE, const char*, VALUE); | ||
| spec/ruby/optional/capi/ext/globals_spec.c | ||
|---|---|---|
| } | ||
| #endif | ||
| #ifdef HAVE_RB_GV_DEFINED | ||
| static VALUE sb_gv_defined(VALUE self, VALUE var) { | ||
|   return rb_gv_defined(StringValuePtr(var)); | ||
| } | ||
| #endif | ||
| #ifdef HAVE_RB_STDIN | ||
| static VALUE global_spec_rb_stdin(VALUE self) { | ||
|   return rb_stdin; | ||
| ... | ... | |
|   rb_define_method(cls, "sb_gv_set", sb_gv_set, 2); | ||
| #endif | ||
| #ifdef HAVE_RB_GV_DEFINED | ||
|   rb_define_method(cls, "sb_gv_defined", sb_gv_defined, 1); | ||
| #endif | ||
| #ifdef HAVE_RB_STDIN | ||
|   rb_define_method(cls, "rb_stdin", global_spec_rb_stdin, 0); | ||
| #endif | ||
| spec/ruby/optional/capi/ext/rubyspec.h | ||
|---|---|---|
| #define HAVE_RB_F_GLOBAL_VARIABLES         1 | ||
| #define HAVE_RB_GV_GET                     1 | ||
| #define HAVE_RB_GV_SET                     1 | ||
| #define HAVE_RB_GV_DEFINED                 1 | ||
| #define HAVE_RB_RS                         1 | ||
| #define HAVE_RB_OUTPUT_RS                  1 | ||
| #define HAVE_RB_OUTPUT_FS                  1 | ||
| spec/ruby/optional/capi/globals_spec.rb | ||
|---|---|---|
|     @f.sb_gv_get("\\").should == nil # rb_gv_get should change \ to $\ | ||
|   end | ||
|   it "correctly checks if global value is defined" do | ||
|     $THIS_IS_DEFINED = nil | ||
|     @f.sb_gv_defined("$THIS_IS_DEFINED").should == true | ||
|     @f.sb_gv_defined("$THIS_IS_NOT_DEFINED").should == false | ||
|   end | ||
|   it "returns $~" do | ||
|     'a' =~ /a/ | ||
|     @f.sb_gv_get("$~").to_a.should == ['a'] | ||
| variable.c | ||
|---|---|---|
|     return rb_gvar_get(entry); | ||
| } | ||
| VALUE | ||
| rb_gv_defined(const char * name) | ||
| { | ||
|     struct rb_global_entry *entry; | ||
|     entry = rb_global_entry(global_id(name)); | ||
|     return rb_gvar_defined(entry); | ||
| } | ||
| MJIT_FUNC_EXPORTED VALUE | ||
| rb_gvar_defined(struct rb_global_entry *entry) | ||
| { | ||
| ... | ... | |
|     } | ||
|     return 0; | ||
| } | ||
| /* vim: set sw=4 ts=8 sts=4: */ | ||