ruby-changes:13066
From: nobu <ko1@a...>
Date: Wed, 9 Sep 2009 13:11:34 +0900 (JST)
Subject: [ruby-changes:13066] Ruby:r24812 (trunk): * variable.c (autoload_data_type): typed.
nobu 2009-09-09 13:09:09 +0900 (Wed, 09 Sep 2009) New Revision: 24812 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=24812 Log: * variable.c (autoload_data_type): typed. Modified files: trunk/ChangeLog trunk/variable.c Index: ChangeLog =================================================================== --- ChangeLog (revision 24811) +++ ChangeLog (revision 24812) @@ -1,4 +1,4 @@ -Wed Sep 9 12:56:56 2009 Nobuyoshi Nakada <nobu@r...> +Wed Sep 9 13:09:07 2009 Nobuyoshi Nakada <nobu@r...> * dir.c (dir_data_type): typed. @@ -16,6 +16,8 @@ * transcode.c (econv_data_type): typed. + * variable.c (autoload_data_type): typed. + Wed Sep 9 11:11:33 2009 Nobuyoshi Nakada <nobu@r...> * include/ruby/ruby.h (rb_data_type_struct): constified dsize. Index: variable.c =================================================================== --- variable.c (revision 24811) +++ variable.c (revision 24812) @@ -292,7 +292,7 @@ VALUE rb_path2class(const char *path) { - return rb_path_to_class(rb_usascii_str_new_cstr(path)); + return rb_path_to_class(rb_str_new_cstr(path)); } void @@ -1357,18 +1357,33 @@ return Qnil; /* not reached */ } -static struct st_table * -check_autoload_table(VALUE av) +static void +autoload_mark(void *ptr) { - Check_Type(av, T_DATA); - if (RDATA(av)->dmark != (RUBY_DATA_FUNC)rb_mark_tbl || - RDATA(av)->dfree != (RUBY_DATA_FUNC)st_free_table) { - VALUE desc = rb_inspect(av); - rb_raise(rb_eTypeError, "wrong autoload table: %s", RSTRING_PTR(desc)); - } - return (struct st_table *)DATA_PTR(av); + rb_mark_tbl((st_table *)ptr); } +static void +autoload_free(void *ptr) +{ + st_free_table((st_table *)ptr); +} + +static size_t +autoload_memsize(const void *ptr) +{ + const st_table *tbl = ptr; + return st_memsize(tbl); +} + +static const rb_data_type_t autoload_data_type = { + "autoload", + autoload_mark, autoload_free, autoload_memsize, +}; + +#define check_autoload_table(av) \ + (struct st_table *)rb_check_typeddata(av, &autoload_data_type) + void rb_autoload(VALUE mod, ID id, const char *file) { -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/