[前][次][番号順一覧][スレッド一覧]

ruby-changes:9875

From: akr <ko1@a...>
Date: Sat, 10 Jan 2009 20:52:46 +0900 (JST)
Subject: [ruby-changes:9875] Ruby:r21416 (trunk): * ext/socket/mkconstants.rb: refactored to nest properly in statically

akr	2009-01-10 20:52:06 +0900 (Sat, 10 Jan 2009)

  New Revision: 21416

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=21416

  Log:
    * ext/socket/mkconstants.rb: refactored to nest properly in statically
      and dynamically.

  Modified files:
    trunk/ChangeLog
    trunk/ext/socket/mkconstants.rb

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 21415)
+++ ChangeLog	(revision 21416)
@@ -1,3 +1,8 @@
+Sat Jan 10 20:50:02 2009  Tanaka Akira  <akr@f...>
+
+	* ext/socket/mkconstants.rb: refactored to nest properly in statically
+	  and dynamically.
+
 Sat Jan 10 20:26:17 2009  Tanaka Akira  <akr@f...>
 
 	* version.h: make version string succinct:
Index: ext/socket/mkconstants.rb
===================================================================
--- ext/socket/mkconstants.rb	(revision 21415)
+++ ext/socket/mkconstants.rb	(revision 21416)
@@ -66,6 +66,31 @@
   }
 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 @@
   }
 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 @@
         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 @@
 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") %>
 }
 

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]