mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
Add ruby-dl
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2324 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
64b6406445
commit
7d711b817e
30 changed files with 5872 additions and 0 deletions
42
ext/dl/mkcbtable.rb
Normal file
42
ext/dl/mkcbtable.rb
Normal file
|
@ -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
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue