* ext/socket/mkconstants.rb: refine family_to_int.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@21241 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
0c838b4947
commit
7454eab701
@ -1,3 +1,7 @@
|
|||||||
|
Thu Jan 1 17:01:50 2009 Tanaka Akira <akr@fsij.org>
|
||||||
|
|
||||||
|
* ext/socket/mkconstants.rb: refine family_to_int.
|
||||||
|
|
||||||
Thu Jan 1 16:48:07 2009 Tanaka Akira <akr@fsij.org>
|
Thu Jan 1 16:48:07 2009 Tanaka Akira <akr@fsij.org>
|
||||||
|
|
||||||
* ext/socket/mkconstants.rb: generate family_to_int().
|
* ext/socket/mkconstants.rb: generate family_to_int().
|
||||||
|
@ -64,6 +64,17 @@ def each_name(pat)
|
|||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def each_names_with_len(pat)
|
||||||
|
h = {}
|
||||||
|
DEFS.each {|name, default_value|
|
||||||
|
next if pat !~ name
|
||||||
|
(h[name.length] ||= []) << name
|
||||||
|
}
|
||||||
|
h.keys.sort.each {|len|
|
||||||
|
yield h[len], len
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
result << ERB.new(<<'EOS', nil, '%').result(binding)
|
result << ERB.new(<<'EOS', nil, '%').result(binding)
|
||||||
static void
|
static void
|
||||||
init_constants(VALUE mConst)
|
init_constants(VALUE mConst)
|
||||||
@ -89,13 +100,21 @@ init_constants(VALUE mConst)
|
|||||||
static int
|
static int
|
||||||
family_to_int(char *str, int len)
|
family_to_int(char *str, int len)
|
||||||
{
|
{
|
||||||
% each_name(/\A[AP]F_/) {|name|
|
switch (len) {
|
||||||
|
% each_names_with_len(/\A[AP]F_/) {|names, len|
|
||||||
|
case <%=len%>:
|
||||||
|
% names.each {|name|
|
||||||
#ifdef <%=name%>
|
#ifdef <%=name%>
|
||||||
% size = name.bytesize
|
% size = name.bytesize
|
||||||
if (len == <%=size%> && memcmp(str, <%=c_str name%>, <%=size%>) == 0) return <%=name%>;
|
if (memcmp(str, <%=c_str name%>, <%=size%>) == 0) return <%=name%>;
|
||||||
#endif
|
#endif
|
||||||
% }
|
% }
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
|
% }
|
||||||
|
default:
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
EOS
|
EOS
|
||||||
|
Loading…
x
Reference in New Issue
Block a user