ruby-changes:9848
From: akr <ko1@a...>
Date: Thu, 8 Jan 2009 23:02:02 +0900 (JST)
Subject: [ruby-changes:9848] Ruby:r21389 (trunk): * ext/socket/mkconstants.rb (gen_name_to_int_func): generate
akr 2009-01-08 23:00:34 +0900 (Thu, 08 Jan 2009) New Revision: 21389 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=21389 Log: * ext/socket/mkconstants.rb (gen_name_to_int_func): generate name_to_int functions, not only body. Modified files: trunk/ChangeLog trunk/ext/socket/mkconstants.rb Index: ChangeLog =================================================================== --- ChangeLog (revision 21388) +++ ChangeLog (revision 21389) @@ -1,3 +1,8 @@ +Thu Jan 8 22:59:30 2009 Tanaka Akira <akr@f...> + + * ext/socket/mkconstants.rb (gen_name_to_int_func): generate + name_to_int functions, not only body. + Thu Jan 8 22:44:10 2009 Tanaka Akira <akr@f...> * ext/socket/socket.c: don't use AI_NUMERICSERV for platforms which Index: ext/socket/mkconstants.rb =================================================================== --- ext/socket/mkconstants.rb (revision 21388) +++ ext/socket/mkconstants.rb (revision 21389) @@ -104,13 +104,19 @@ } end -ERB.new(<<'EOS', nil, '%').def_method(Object, "gen_name_to_int(str_var, len_var, retp_var, pat, prefix_optional=nil)") - switch (<%=len_var%>) { +ERB.new(<<'EOS', nil, '%').def_method(Object, "gen_name_to_int_func(funcname, pat, prefix_optional, guard=nil)") +%if guard +#ifdef <%=guard%> +%end +static int +<%=funcname%>(char *str, int len, int *valp) +{ + switch (len) { % each_names_with_len(pat, prefix_optional) {|pairs, len| case <%=len%>: % pairs.each {|name, const| #ifdef <%=const%> - if (memcmp(<%=str_var%>, <%=c_str name%>, <%=len%>) == 0) { *<%=retp_var%> = <%=const%>; return 0; } + if (memcmp(str, <%=c_str name%>, <%=len%>) == 0) { *valp = <%=const%>; return 0; } #endif % } return -1; @@ -119,6 +125,10 @@ default: return -1; } +} +%if guard +#endif +%end EOS def reverse_each_name_with_prefix_optional(pat, prefix_pat) @@ -201,56 +211,15 @@ <%= INTERN_DEFS.map {|decl, gen_hash, func| gen_hash }.join("\n") %> } -static int -family_to_int(char *str, int len, int *valp) -{ -<%= gen_name_to_int("str", "len", "valp", /\A[AP]F_/, "AF_") %> -} +<%= gen_name_to_int_func("family_to_int", /\A(AF_|PF_)/, "AF_") %> +<%= gen_name_to_int_func("socktype_to_int", /\ASOCK_/, "SOCK_") %> +<%= gen_name_to_int_func("level_to_int", /\A(SOL_SOCKET\z|IPPROTO_)/, /\A(SOL_|IPPROTO_)/) %> +<%= gen_name_to_int_func("so_optname_to_int", /\ASO_/, "SO_") %> +<%= gen_name_to_int_func("ip_optname_to_int", /\AIP_/, "IP_") %> +<%= gen_name_to_int_func("ipv6_optname_to_int", /\AIPV6_/, "IPV6_", "IPPROTO_IPV6") %> +<%= gen_name_to_int_func("tcp_optname_to_int", /\ATCP_/, "TCP_") %> +<%= gen_name_to_int_func("udp_optname_to_int", /\AUDP_/, "UDP_") %> -static int -socktype_to_int(char *str, int len, int *valp) -{ -<%= gen_name_to_int("str", "len", "valp", /\ASOCK_/, "SOCK_") %> -} - -static int -level_to_int(char *str, int len, int *valp) -{ -<%= gen_name_to_int("str", "len", "valp", /\A(SOL_SOCKET\z|IPPROTO_)/, /\A(SOL_|IPPROTO_)/) %> -} - -static int -so_optname_to_int(char *str, int len, int *valp) -{ -<%= gen_name_to_int("str", "len", "valp", /\ASO_/, "SO_") %> -} - -static int -ip_optname_to_int(char *str, int len, int *valp) -{ -<%= gen_name_to_int("str", "len", "valp", /\AIP_/, "IP_") %> -} - -#ifdef IPPROTO_IPV6 -static int -ipv6_optname_to_int(char *str, int len, int *valp) -{ -<%= gen_name_to_int("str", "len", "valp", /\AIPV6_/, "IPV6_") %> -} -#endif - -static int -tcp_optname_to_int(char *str, int len, int *valp) -{ -<%= gen_name_to_int("str", "len", "valp", /\ATCP_/, "TCP_") %> -} - -static int -udp_optname_to_int(char *str, int len, int *valp) -{ -<%= gen_name_to_int("str", "len", "valp", /\AUDP_/, "UDP_") %> -} - <%= INTERN_DEFS.map {|decl, gen_hash, func| func }.join("\n") %> EOS -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/