From b5aebd12c003342a68ca756b2a43c17b1ff254c1 Mon Sep 17 00:00:00 2001 From: akr Date: Fri, 2 Jan 2009 08:22:36 +0000 Subject: * ext/socket/mkconstants.rb: use ID in the values of family_to_str_hash. family_to_str returns a VALUE. * ext/socket/socket.c (ipaddr): follow family_to_str change. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@21271 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ext/socket/mkconstants.rb | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) (limited to 'ext/socket/mkconstants.rb') diff --git a/ext/socket/mkconstants.rb b/ext/socket/mkconstants.rb index a90171277e..83efde1cd4 100644 --- a/ext/socket/mkconstants.rb +++ b/ext/socket/mkconstants.rb @@ -121,31 +121,36 @@ ERB.new(<<'EOS', nil, '%').def_method(Object, "gen_name_to_int(str_var, len_var, } EOS +def reverse_each_name_with_prefix_optional(pat, prefix_pat) + reverse_each_name(pat) {|n| + yield n, n + } + if prefix_pat + reverse_each_name(pat) {|n| + next if prefix_pat !~ n + yield n, $' + } + end +end + + ERB.new(<<'EOS', nil, '%').def_method(Object, "gen_int_to_name_hash(hash_var, pat, prefix_pat)") <%=hash_var%> = st_init_numtable(); -% reverse_each_name(pat) {|n| +% reverse_each_name_with_prefix_optional(pat, prefix_pat) {|n,s| #ifdef <%=n%> - st_insert(<%=hash_var%>, (st_data_t)<%=n%>, (st_data_t)<%=c_str n%>); + st_insert(<%=hash_var%>, (st_data_t)<%=n%>, (st_data_t)rb_intern2(<%=c_str s%>, <%=s.bytesize%>)); #endif % } -% if prefix_pat -% reverse_each_name(pat) {|n| -% next if prefix_pat !~ n -#ifdef <%=n%> - st_insert(<%=hash_var%>, (st_data_t)<%=n%>, (st_data_t)<%=c_str $'%>); -#endif -% } -% end EOS ERB.new(<<'EOS', nil, '%').def_method(Object, "gen_int_to_name_func(func_name, hash_var)") -static char * +static VALUE <%=func_name%>(int val) { st_data_t name; if (st_lookup(<%=hash_var%>, (st_data_t)val, &name)) - return (char*)name; - return NULL; + return rb_id2str((ID)name); + return Qnil; } EOS -- cgit v1.2.3