Sha256: 167c37633dbfc764d5f1a0c2b4704351834c5f34255be894103480583c08c833
Contents?: true
Size: 1.93 KB
Versions: 2
Compression:
Stored size: 1.93 KB
Contents
#ifndef global_entry__h_ #define global_entry__h_ st_table * rb_global_tbl; #define global_entry rb_global_entry #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; void (*func)(VALUE arg, VALUE val); VALUE data; struct trace_var *next; }; struct global_variable { int counter; void *data; gvar_getter_t *getter; gvar_setter_t *setter; gvar_marker_t *marker; int block_trace; struct trace_var *trace; }; #define undef_getter rb_gvar_undef_getter #define undef_setter rb_gvar_undef_setter #define undef_marker rb_gvar_undef_marker struct global_entry* rb_global_entry(ID id) { struct global_entry *entry; st_data_t data; if (!st_lookup(rb_global_tbl, (st_data_t)id, &data)) { struct global_variable *var; entry = ALLOC(struct global_entry); var = ALLOC(struct global_variable); entry->id = id; entry->var = var; var->counter = 1; var->data = 0; var->getter = undef_getter; var->setter = undef_setter; var->marker = undef_marker; var->block_trace = 0; var->trace = 0; st_add_direct(rb_global_tbl, id, (st_data_t)entry); } else { entry = (struct global_entry *)data; } return entry; } VALUE undef_getter(ID id, void *data, struct global_variable *var) { rb_warning("global variable `%s' not initialized", rb_id2name(id)); return Qnil; } void undef_setter(VALUE val, ID id, void *data, struct global_variable *var) { var->getter = val_getter; var->setter = val_setter; var->marker = val_marker; var->data = (void*)val; } void undef_marker(VALUE *var) { } VALUE val_getter(ID id, void *data, struct global_variable *var) { return (VALUE)data; } void val_setter(VALUE val, ID id, void *data, struct global_variable *var) { var->data = (void*)val; } void val_marker(VALUE *var) { VALUE data = (VALUE)var; if (data) rb_gc_mark_maybe(data); } #endif
Version data entries
2 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
ruby-internal-0.8.0 | ext/cached/ruby-1.9.2/internal/node/global_entry.h |
ruby-internal-0.8.0 | ext/cached/ruby-1.9.3/internal/node/global_entry.h |