diff options
| author | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-01-10 11:52:06 +0000 |
|---|---|---|
| committer | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-01-10 11:52:06 +0000 |
| commit | 729d1bc1577d2781ee56ddc13c7871b5df5598f1 (patch) | |
| tree | 64e81b5e243aee833bb505d082390bbfac77bddd /ext/socket | |
| parent | a846c816acf3050a677401457b7794749072470b (diff) | |
| download | ruby-729d1bc1577d2781ee56ddc13c7871b5df5598f1.tar.gz ruby-729d1bc1577d2781ee56ddc13c7871b5df5598f1.tar.xz ruby-729d1bc1577d2781ee56ddc13c7871b5df5598f1.zip | |
* ext/socket/mkconstants.rb: refactored to nest properly in statically
and dynamically.
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@21416 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/socket')
| -rw-r--r-- | ext/socket/mkconstants.rb | 57 |
1 files changed, 34 insertions, 23 deletions
diff --git a/ext/socket/mkconstants.rb b/ext/socket/mkconstants.rb index 23993f99f..26a6ef687 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") %> } |
