* variable.c (global_variable, struct trace_var): made function
members more strict. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19564 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
07a88b713d
commit
4300e2a993
@ -1,3 +1,8 @@
|
|||||||
|
Fri Sep 26 10:35:50 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||||
|
|
||||||
|
* variable.c (global_variable, struct trace_var): made function
|
||||||
|
members more strict.
|
||||||
|
|
||||||
Fri Sep 26 09:55:06 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
Fri Sep 26 09:55:06 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||||
|
|
||||||
* include/ruby{io,sig}.h: moved to include/ruby/backward.
|
* include/ruby{io,sig}.h: moved to include/ruby/backward.
|
||||||
|
50
variable.c
50
variable.c
@ -284,9 +284,15 @@ rb_obj_classname(VALUE obj)
|
|||||||
return rb_class2name(CLASS_OF(obj));
|
return rb_class2name(CLASS_OF(obj));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct 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);
|
||||||
|
|
||||||
struct trace_var {
|
struct trace_var {
|
||||||
int removed;
|
int removed;
|
||||||
void (*func)();
|
void (*func)(VALUE arg, VALUE val);
|
||||||
VALUE data;
|
VALUE data;
|
||||||
struct trace_var *next;
|
struct trace_var *next;
|
||||||
};
|
};
|
||||||
@ -294,9 +300,9 @@ struct trace_var {
|
|||||||
struct global_variable {
|
struct global_variable {
|
||||||
int counter;
|
int counter;
|
||||||
void *data;
|
void *data;
|
||||||
VALUE (*getter)();
|
gvar_getter_t *getter;
|
||||||
void (*setter)();
|
gvar_setter_t *setter;
|
||||||
void (*marker)();
|
gvar_marker_t *marker;
|
||||||
int block_trace;
|
int block_trace;
|
||||||
struct trace_var *trace;
|
struct trace_var *trace;
|
||||||
};
|
};
|
||||||
@ -306,16 +312,16 @@ struct global_entry {
|
|||||||
ID id;
|
ID id;
|
||||||
};
|
};
|
||||||
|
|
||||||
static VALUE undef_getter(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 *var);
|
static void undef_setter(VALUE val, ID id, void *data, struct global_variable *gvar);
|
||||||
static void undef_marker(void);
|
static void undef_marker(VALUE *var);
|
||||||
|
|
||||||
static VALUE val_getter(ID id, VALUE val);
|
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 *var);
|
static void val_setter(VALUE val, ID id, void *data, struct global_variable *gvar);
|
||||||
static void val_marker(VALUE data);
|
static void val_marker(VALUE *var);
|
||||||
|
|
||||||
static VALUE var_getter(ID id, VALUE *var);
|
static VALUE var_getter(ID id, void *data, struct global_variable *gvar);
|
||||||
static void var_setter(VALUE val, ID id, VALUE *var);
|
static void var_setter(VALUE val, ID id, void *data, struct global_variable *gvar);
|
||||||
static void var_marker(VALUE *var);
|
static void var_marker(VALUE *var);
|
||||||
|
|
||||||
struct global_entry*
|
struct global_entry*
|
||||||
@ -347,7 +353,7 @@ rb_global_entry(ID id)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static VALUE
|
static VALUE
|
||||||
undef_getter(ID id)
|
undef_getter(ID id, void *data, struct global_variable *var)
|
||||||
{
|
{
|
||||||
rb_warning("global variable `%s' not initialized", rb_id2name(id));
|
rb_warning("global variable `%s' not initialized", rb_id2name(id));
|
||||||
|
|
||||||
@ -365,14 +371,14 @@ undef_setter(VALUE val, ID id, void *data, struct global_variable *var)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
undef_marker(void)
|
undef_marker(VALUE *var)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
static VALUE
|
static VALUE
|
||||||
val_getter(ID id, VALUE val)
|
val_getter(ID id, void *data, struct global_variable *var)
|
||||||
{
|
{
|
||||||
return val;
|
return (VALUE)data;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -382,22 +388,24 @@ val_setter(VALUE val, ID id, void *data, struct global_variable *var)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
val_marker(VALUE data)
|
val_marker(VALUE *var)
|
||||||
{
|
{
|
||||||
|
VALUE data = (VALUE)var;
|
||||||
if (data) rb_gc_mark_maybe(data);
|
if (data) rb_gc_mark_maybe(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
static VALUE
|
static VALUE
|
||||||
var_getter(ID id, VALUE *var)
|
var_getter(ID id, void *data, struct global_variable *gvar)
|
||||||
{
|
{
|
||||||
|
VALUE *var = data;
|
||||||
if (!var) return Qnil;
|
if (!var) return Qnil;
|
||||||
return *var;
|
return *var;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
var_setter(VALUE val, ID id, VALUE *var)
|
var_setter(VALUE val, ID id, void *data, struct global_variable *gvar)
|
||||||
{
|
{
|
||||||
*var = val;
|
*(VALUE *)data = val;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -407,7 +415,7 @@ var_marker(VALUE *var)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
readonly_setter(VALUE val, ID id, void *var)
|
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));
|
rb_name_error(id, "%s is a read-only variable", rb_id2name(id));
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user