diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-10-14 11:45:32 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-10-14 11:45:32 +0000 |
commit | 1288965f4e464686a95b701a2573f5a3cc406569 (patch) | |
tree | d6150e979897ec7323bd57a2a3f7ac0741e3c043 /variable.c | |
parent | b968fa97f6ce694af0e1a102475217b627b78289 (diff) | |
download | bundler-1288965f4e464686a95b701a2573f5a3cc406569.tar.gz |
* io.c (Init_IO): $FILENAME and $* must be read-only. [ruby-dev:36698]
* variable.c (*_getter, *_setter, *_marker): made public.
* include/ruby/ruby.h (rb_gvar_*_{getter,setter,marker}): declared.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19781 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'variable.c')
-rw-r--r-- | variable.c | 48 |
1 files changed, 25 insertions, 23 deletions
diff --git a/variable.c b/variable.c index 056a27128d..65ea8e4f83 100644 --- a/variable.c +++ b/variable.c @@ -286,11 +286,11 @@ rb_obj_classname(VALUE obj) return rb_class2name(CLASS_OF(obj)); } -struct global_variable; +#define global_variable rb_global_variable -typedef VALUE gvar_getter_t(ID id, void *data, struct global_variable *gvar); -typedef void gvar_setter_t(VALUE val, ID id, void *data, struct global_variable *gvar); -typedef void gvar_marker_t(VALUE *var); +#define gvar_getter_t rb_gvar_getter_t +#define gvar_setter_t rb_gvar_setter_t +#define gvar_marker_t rb_gvar_marker_t struct trace_var { int removed; @@ -314,17 +314,19 @@ struct global_entry { ID id; }; -static VALUE undef_getter(ID id, void *data, struct global_variable *gvar); -static void undef_setter(VALUE val, ID id, void *data, struct global_variable *gvar); -static void undef_marker(VALUE *var); +#define undef_getter rb_gvar_undef_getter +#define undef_setter rb_gvar_undef_setter +#define undef_marker rb_gvar_undef_marker -static VALUE val_getter(ID id, void *data, struct global_variable *gvar); -static void val_setter(VALUE val, ID id, void *data, struct global_variable *gvar); -static void val_marker(VALUE *var); +#define val_getter rb_gvar_val_getter +#define val_setter rb_gvar_val_setter +#define val_marker rb_gvar_val_marker -static VALUE var_getter(ID id, void *data, struct global_variable *gvar); -static void var_setter(VALUE val, ID id, void *data, struct global_variable *gvar); -static void var_marker(VALUE *var); +#define var_getter rb_gvar_var_getter +#define var_setter rb_gvar_var_setter +#define var_marker rb_gvar_var_marker + +#define readonly_setter rb_gvar_readonly_setter struct global_entry* rb_global_entry(ID id) @@ -354,7 +356,7 @@ rb_global_entry(ID id) return entry; } -static VALUE +VALUE undef_getter(ID id, void *data, struct global_variable *var) { rb_warning("global variable `%s' not initialized", rb_id2name(id)); @@ -362,7 +364,7 @@ undef_getter(ID id, void *data, struct global_variable *var) return Qnil; } -static void +void undef_setter(VALUE val, ID id, void *data, struct global_variable *var) { var->getter = val_getter; @@ -372,31 +374,31 @@ undef_setter(VALUE val, ID id, void *data, struct global_variable *var) var->data = (void*)val; } -static void +void undef_marker(VALUE *var) { } -static VALUE +VALUE val_getter(ID id, void *data, struct global_variable *var) { return (VALUE)data; } -static void +void val_setter(VALUE val, ID id, void *data, struct global_variable *var) { var->data = (void*)val; } -static void +void val_marker(VALUE *var) { VALUE data = (VALUE)var; if (data) rb_gc_mark_maybe(data); } -static VALUE +VALUE var_getter(ID id, void *data, struct global_variable *gvar) { VALUE *var = data; @@ -404,19 +406,19 @@ var_getter(ID id, void *data, struct global_variable *gvar) return *var; } -static void +void var_setter(VALUE val, ID id, void *data, struct global_variable *gvar) { *(VALUE *)data = val; } -static void +void var_marker(VALUE *var) { if (var) rb_gc_mark_maybe(*var); } -static void +void readonly_setter(VALUE val, ID id, void *data, struct global_variable *gvar) { rb_name_error(id, "%s is a read-only variable", rb_id2name(id)); |