From 8a1261995ea0b4b68c96ea99cbe3832d8d6f2466 Mon Sep 17 00:00:00 2001 From: akr Date: Sat, 10 Jan 2009 11:52:06 +0000 Subject: * ext/socket/mkconstants.rb: refactored to nest properly in statically and dynamically. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@21416 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ext/socket/mkconstants.rb | 57 ++++++++++++++++++++++++++++------------------- 1 file changed, 34 insertions(+), 23 deletions(-) (limited to 'ext/socket/mkconstants.rb') diff --git a/ext/socket/mkconstants.rb b/ext/socket/mkconstants.rb index 23993f99fa..26a6ef687d 100644 --- a/ext/socket/mkconstants.rb +++ b/ext/socket/mkconstants.rb @@ -66,6 +66,31 @@ def each_name(pat) } end +ERB.new(<<'EOS', nil, '%').def_method(Object, "gen_const_defs_in_guard(define, name, default_value)") +% if default_value +#ifndef <%=name%> +#define <%=name%> <%=default_value%> +#endif + <%=define%>(<%=c_str name%>, <%=name%>); +% else +#if defined(<%=name%>) + <%=define%>(<%=c_str name%>, <%=name%>); +#endif +% end +EOS + +ERB.new(<<'EOS', nil, '%').def_method(Object, "gen_const_defs") +% each_const {|guard, define, name, default_value| +% if guard +#if <%=guard%> +<%= gen_const_defs_in_guard(define, name, default_value) %> +#endif +% else +<%= gen_const_defs_in_guard(define, name, default_value) %> +% end +% } +EOS + def reverse_each_name(pat) DEFS.reverse_each {|name, default_value| next if pat !~ name @@ -104,10 +129,7 @@ def each_names_with_len(pat, prefix_optional=nil) } end -ERB.new(<<'EOS', nil, '%').def_method(Object, "gen_name_to_int_func(funcname, pat, prefix_optional, guard=nil)") -%if guard -#ifdef <%=guard%> -%end +ERB.new(<<'EOS', nil, '%').def_method(Object, "gen_name_to_int_func_in_guard(funcname, pat, prefix_optional, guard=nil)") static int <%=funcname%>(char *str, int len, int *valp) { @@ -126,8 +148,15 @@ static int return -1; } } +EOS + +ERB.new(<<'EOS', nil, '%').def_method(Object, "gen_name_to_int_func(funcname, pat, prefix_optional, guard=nil)") %if guard +#ifdef <%=guard%> +<%=gen_name_to_int_func_in_guard(funcname, pat, prefix_optional, guard)%> #endif +%else +<%=gen_name_to_int_func_in_guard(funcname, pat, prefix_optional, guard)%> %end EOS @@ -193,25 +222,7 @@ result << ERB.new(<<'EOS', nil, '%').result(binding) static void init_constants(VALUE mConst) { -% each_const {|guard, define, name, default_value| -% if guard -#if <%=guard%> -% end -% if default_value -#ifndef <%=name%> -#define <%=name%> <%=default_value%> -#endif -% else -#if defined(<%=name%>) -% end - <%=define%>(<%=c_str name%>, <%=name%>); -% unless default_value -#endif -% end -% if guard -#endif -% end -% } +<%= gen_const_defs %> <%= INTERN_DEFS.map {|decl, gen_hash, func| gen_hash }.join("\n") %> } -- cgit v1.2.3