mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
sizes.c.tmpl: autogenerate
* template/sizes.c.tmpl: generate automatically by extracting RUBY_CHECK_SIZEOF from configure.in. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42685 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
c3ab2dc6ae
commit
21d7cd3988
6 changed files with 49 additions and 57 deletions
30
template/sizes.c.tmpl
Normal file
30
template/sizes.c.tmpl
Normal file
|
@ -0,0 +1,30 @@
|
|||
%# -*- c -*-
|
||||
#include "ruby/ruby.h"
|
||||
<%
|
||||
class String
|
||||
def tr_cpp
|
||||
strip.upcase.tr_s("^A-Z0-9_*", "_").tr_s("*", "P")
|
||||
end
|
||||
end
|
||||
types = ARGF.grep(/^\s*RUBY_CHECK_SIZEOF\((\w[^\[\],#]*)[^#]*\)/) {$1}
|
||||
conditions = {
|
||||
"long long" => 'defined(HAVE_TRUE_LONG_LONG)',
|
||||
}
|
||||
%>
|
||||
void
|
||||
Init_sizes(void)
|
||||
{
|
||||
VALUE s = rb_hash_new();
|
||||
rb_define_const(rb_define_module("RbConfig"), "SIZEOF", s);
|
||||
|
||||
#define DEFINE(type, size) rb_hash_aset(s, rb_str_new_cstr(#type), INT2FIX(SIZEOF_##size));
|
||||
|
||||
% types.each do |type|
|
||||
% cond = conditions[type]
|
||||
#if SIZEOF_<%= type.tr_cpp %> != 0<%= " && #{cond}" if cond %>
|
||||
DEFINE(<%= type %>, <%= type.tr_cpp %>);
|
||||
#endif
|
||||
% end
|
||||
|
||||
#undef DEFINE
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue