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: */
|