1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* 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
This commit is contained in:
akr 2009-02-16 16:55:33 +00:00
parent 835fa875cc
commit d9bb9b3255
4 changed files with 31 additions and 34 deletions

View file

@ -1,3 +1,14 @@
Tue Feb 17 01:53:35 2009 Tanaka Akira <akr@fsij.org>
* 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 <akr@fsij.org> Mon Feb 16 23:14:51 2009 Tanaka Akira <akr@fsij.org>
* ext/socket/ancdata.c (bsock_sendmsg_internal) [OpenBSD]: don't remove * ext/socket/ancdata.c (bsock_sendmsg_internal) [OpenBSD]: don't remove

View file

@ -23,6 +23,7 @@ socket/socket.c
socket/option.c socket/option.c
socket/ancdata.c socket/ancdata.c
socket/constants.c socket/constants.c
socket/constdefs.c
socket/lib/socket.rb socket/lib/socket.rb
stringio/stringio.c stringio/stringio.c
strscan/strscan.c strscan/strscan.c

View file

@ -10,13 +10,9 @@
#include "rubysocket.h" #include "rubysocket.h"
static void sock_define_const(const char *name, int value, VALUE mConst); static VALUE rb_mSockConst;
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)
#include "constdefs.c" #include "constdefs.c"
#undef sock_define_const
#undef sock_define_uconst
static int static int
constant_arg(VALUE arg, int (*str_to_int)(const char*, int, int*), const char *errmsg) 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"); 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 * Socket::Constants module
*/ */
void void
Init_socket_constants(void) Init_socket_constants(void)
{ {
VALUE mConst;
/* constants */ /* constants */
mConst = rb_define_module_under(rb_cSocket, "Constants"); rb_mSockConst = rb_define_module_under(rb_cSocket, "Constants");
init_constants(mConst); init_constants();
} }

View file

@ -51,16 +51,16 @@ DEFS = h.to_a
def each_const def each_const
DEFS.each {|name, default_value| DEFS.each {|name, default_value|
if name =~ /\AINADDR_/ if name =~ /\AINADDR_/
define = "sock_define_uconst" make_value = "UINT2NUM"
else else
define = "sock_define_const" make_value = "INT2NUM"
end end
guard = nil guard = nil
if /\A(AF_INET6|PF_INET6)\z/ =~ name if /\A(AF_INET6|PF_INET6)\z/ =~ name
# IPv6 is not supported although AF_INET6 is defined on bcc32/mingw # IPv6 is not supported although AF_INET6 is defined on bcc32/mingw
guard = "defined(INET6)" guard = "defined(INET6)"
end end
yield guard, define, name, default_value yield guard, make_value, name, default_value
} }
end end
@ -72,7 +72,7 @@ def each_name(pat)
end end
ERB.new(<<'EOS', nil, '%').def_method(Object, "gen_const_decls") 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 % if default_value
#ifndef <%=name%> #ifndef <%=name%>
# define <%=name%> <%=default_value%> # define <%=name%> <%=default_value%>
@ -81,20 +81,21 @@ ERB.new(<<'EOS', nil, '%').def_method(Object, "gen_const_decls")
% } % }
EOS 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%>) #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 #endif
EOS EOS
ERB.new(<<'EOS', nil, '%').def_method(Object, "gen_const_defs") 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
#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 #endif
% else % else
<%= gen_const_defs_in_guard(define, name, default_value).chomp %> <%= gen_const_defs_in_guard(make_value, name, default_value).chomp %>
% end % end
% } % }
EOS EOS
@ -272,8 +273,12 @@ result = ERB.new(<<'EOS', nil, '%').result(binding)
<%= INTERN_DEFS.map {|vardef, gen_hash, decl, func| vardef }.join("\n") %> <%= INTERN_DEFS.map {|vardef, gen_hash, decl, func| vardef }.join("\n") %>
static void 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 %> <%= gen_const_defs %>
<%= INTERN_DEFS.map {|vardef, gen_hash, decl, func| gen_hash }.join("\n") %> <%= INTERN_DEFS.map {|vardef, gen_hash, decl, func| gen_hash }.join("\n") %>
} }