diff options
author | ttate <ttate@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2002-04-02 10:56:13 +0000 |
---|---|---|
committer | ttate <ttate@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2002-04-02 10:56:13 +0000 |
commit | 7d711b817e62eb6c8dee01ea2283fcb1ad90f8ac (patch) | |
tree | b1b54ab76217775071de4e3669674aa7887aa6b9 /ext/dl/mkcbtable.rb | |
parent | 64b6406445e53f187d2982f87becff8065edd0cc (diff) | |
download | ruby-7d711b817e62eb6c8dee01ea2283fcb1ad90f8ac.tar.gz |
Add ruby-dl
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2324 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/dl/mkcbtable.rb')
-rw-r--r-- | ext/dl/mkcbtable.rb | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/ext/dl/mkcbtable.rb b/ext/dl/mkcbtable.rb new file mode 100644 index 0000000000..f25f012e4c --- /dev/null +++ b/ext/dl/mkcbtable.rb @@ -0,0 +1,42 @@ +# -*- ruby -*- + +require 'mkmf' +$:.unshift File.dirname(__FILE__) +require 'type' +require 'dlconfig' + +$int_eq_long = try_run(<<EOF) +int main() { + return sizeof(int) == sizeof(long) ? 0 : 1; +} +EOF + +def output_func(types, n = 0) + code = + "/* #{types2ctypes(types).inspect} */\n" + + "rb_dl_func_table[#{types2num(types)}][#{n}] " + + "= rb_dl_func#{types2num(types)}_#{n};\n" + if( n < MAX_CBENT - 1) + return code + output_func(types, n+1) + else + return code + end +end + + +def rec_output(types = [VOID]) + print output_func(types) + if( types.length <= MAX_CBARG ) + DLTYPE.keys.sort.each{|t| + if( t != VOID && DLTYPE[t][:cb] ) + rec_output(types + [t]) + end + } + end +end + +DLTYPE.keys.sort.each{|t| + if( DLTYPE[t][:cb] ) + rec_output([t]) + end +} |