From d9bb9b32550027d44de9e47c90a9bd1b85f97593 Mon Sep 17 00:00:00 2001 From: akr Date: Mon, 16 Feb 2009 16:55:33 +0000 Subject: * ext/socket/mkconstants.rb: generate rb_define_const directly for rdoc. * ext/.document: add socket/constdefs.c. * ext/socket/constants.c (sock_define_const): removed. (sock_define_uconst): ditto. (rb_mSockConst): new static variable. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22361 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 11 +++++++++++ ext/.document | 1 + ext/socket/constants.c | 28 ++++------------------------ ext/socket/mkconstants.rb | 25 +++++++++++++++---------- 4 files changed, 31 insertions(+), 34 deletions(-) diff --git a/ChangeLog b/ChangeLog index 6770e9d4cb..84b60e0e9f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +Tue Feb 17 01:53:35 2009 Tanaka Akira + + * ext/socket/mkconstants.rb: generate rb_define_const directly for + rdoc. + + * ext/.document: add socket/constdefs.c. + + * ext/socket/constants.c (sock_define_const): removed. + (sock_define_uconst): ditto. + (rb_mSockConst): new static variable. + Mon Feb 16 23:14:51 2009 Tanaka Akira * ext/socket/ancdata.c (bsock_sendmsg_internal) [OpenBSD]: don't remove diff --git a/ext/.document b/ext/.document index db0882440b..4fe1a102ab 100644 --- a/ext/.document +++ b/ext/.document @@ -23,6 +23,7 @@ socket/socket.c socket/option.c socket/ancdata.c socket/constants.c +socket/constdefs.c socket/lib/socket.rb stringio/stringio.c strscan/strscan.c diff --git a/ext/socket/constants.c b/ext/socket/constants.c index f0e210246d..a8b0a374bf 100644 --- a/ext/socket/constants.c +++ b/ext/socket/constants.c @@ -10,13 +10,9 @@ #include "rubysocket.h" -static void sock_define_const(const char *name, int value, VALUE mConst); -static void sock_define_uconst(const char *name, unsigned int value, VALUE mConst); -#define sock_define_const(name, value) sock_define_const(name, value, mConst) -#define sock_define_uconst(name, value) sock_define_uconst(name, value, mConst) +static VALUE rb_mSockConst; + #include "constdefs.c" -#undef sock_define_const -#undef sock_define_uconst static int constant_arg(VALUE arg, int (*str_to_int)(const char*, int, int*), const char *errmsg) @@ -138,29 +134,13 @@ shutdown_how_arg(VALUE how) return constant_arg(how, shutdown_how_to_int, "unknown shutdown argument"); } -static void -sock_define_const(const char *name, int value, VALUE mConst) -{ - rb_define_const(rb_cSocket, name, INT2NUM(value)); - rb_define_const(mConst, name, INT2NUM(value)); -} - -static void -sock_define_uconst(const char *name, unsigned int value, VALUE mConst) -{ - rb_define_const(rb_cSocket, name, UINT2NUM(value)); - rb_define_const(mConst, name, UINT2NUM(value)); -} - /* * Socket::Constants module */ void Init_socket_constants(void) { - VALUE mConst; - /* constants */ - mConst = rb_define_module_under(rb_cSocket, "Constants"); - init_constants(mConst); + rb_mSockConst = rb_define_module_under(rb_cSocket, "Constants"); + init_constants(); } diff --git a/ext/socket/mkconstants.rb b/ext/socket/mkconstants.rb index 17a6d12f05..101d5a956e 100644 --- a/ext/socket/mkconstants.rb +++ b/ext/socket/mkconstants.rb @@ -51,16 +51,16 @@ DEFS = h.to_a def each_const DEFS.each {|name, default_value| if name =~ /\AINADDR_/ - define = "sock_define_uconst" + make_value = "UINT2NUM" else - define = "sock_define_const" + make_value = "INT2NUM" end guard = nil if /\A(AF_INET6|PF_INET6)\z/ =~ name # IPv6 is not supported although AF_INET6 is defined on bcc32/mingw guard = "defined(INET6)" end - yield guard, define, name, default_value + yield guard, make_value, name, default_value } end @@ -72,7 +72,7 @@ def each_name(pat) end ERB.new(<<'EOS', nil, '%').def_method(Object, "gen_const_decls") -% each_const {|guard, define, name, default_value| +% each_const {|guard, make_value, name, default_value| % if default_value #ifndef <%=name%> # define <%=name%> <%=default_value%> @@ -81,20 +81,21 @@ ERB.new(<<'EOS', nil, '%').def_method(Object, "gen_const_decls") % } EOS -ERB.new(<<'EOS', nil, '%').def_method(Object, "gen_const_defs_in_guard(define, name, default_value)") +ERB.new(<<'EOS', nil, '%').def_method(Object, "gen_const_defs_in_guard(make_value, name, default_value)") #if defined(<%=name%>) - <%=define%>(<%=c_str name%>, <%=name%>); + rb_define_const(rb_cSocket, <%=c_str name%>, <%=make_value%>(<%=name%>)); + rb_define_const(rb_mSockConst, <%=c_str name%>, <%=make_value%>(<%=name%>)); #endif EOS ERB.new(<<'EOS', nil, '%').def_method(Object, "gen_const_defs") -% each_const {|guard, define, name, default_value| +% each_const {|guard, make_value, name, default_value| % if guard #if <%=guard%> -<%= gen_const_defs_in_guard(define, name, default_value).chomp %> +<%= gen_const_defs_in_guard(make_value, name, default_value).chomp %> #endif % else -<%= gen_const_defs_in_guard(define, name, default_value).chomp %> +<%= gen_const_defs_in_guard(make_value, name, default_value).chomp %> % end % } EOS @@ -272,8 +273,12 @@ result = ERB.new(<<'EOS', nil, '%').result(binding) <%= INTERN_DEFS.map {|vardef, gen_hash, decl, func| vardef }.join("\n") %> static void -init_constants(VALUE mConst) +init_constants(void) { + /* for rdoc */ + /* rb_cSocket = rb_define_class("Socket", rb_cBasicSocket); */ + /* rb_mSockConst = rb_define_module_under(rb_cSocket, "Constants"); */ + <%= gen_const_defs %> <%= INTERN_DEFS.map {|vardef, gen_hash, decl, func| gen_hash }.join("\n") %> } -- cgit v1.2.3