Mercurial > pub > dyncall > bindings
diff ruby/rbdc/README.txt @ 6:80273969f043
- ruby binding path cleanup, previous version required bindings and dyncall be checked out in same parent directory
author | cslag |
---|---|
date | Sat, 26 Mar 2016 00:12:40 +0100 |
parents | a27ef6fdc275 |
children | 6493c9ed4b33 |
line wrap: on
line diff
--- a/ruby/rbdc/README.txt Tue Mar 22 01:49:34 2016 +0100 +++ b/ruby/rbdc/README.txt Sat Mar 26 00:12:40 2016 +0100 @@ -2,53 +2,78 @@ Copyright 2007-2015 Tassilo Philipp -BUILD +BUILD/INSTALLATION +------------------ + +1) The extension isn't built here, but its code along with dyncall's source is bundled + in a .gem file to then be built and installed on the platform where the gem is installed. + So, you need dyncall's full source code to be included. Unfortunately, the .gemspec isn't + flexible enough to pull from different paths, so building the .gem file requires dyncall + to be found next to rbdc.c and extconf.rb. This means either copy dyncall's base directory + do ./dyncall or create a symlink ./dyncall, that points to it. + +2) Then, build this gem with: + gem build rbdc.gemspec - Build and install this gem with: - (cd ../../../dyncall; make distclean) || (gem build rbdc.gemspec && gem install ../../../rbdc-*.gem) +3) On the target platform, install the gem with: + gem install ../../../rbdc-*.gem + + +API +--- + +l = Dyncall::ExtLib.new +l.load(libpath) +l.syms_init(libpath) +l.syms_count +l.syms_each { |sym_name| ... } +l.exists?(:symbolname) +l.call(:symbolname, sigstring, ...) SIGNATURE FORMAT +---------------- - format: "xxxxx)y" +format: "xxxxx)y" - x is positional parameter-type charcode + x is positional parameter-type charcode - 'B' C++: bool <- Ruby: TrueClass, FalseClass, NilClass, Fixnum - 'c' C: char <- Ruby: Fixnum - 'C' C: unsigned char <- Ruby: Fixnum - 's' C: short <- Ruby: Fixnum - 'S' C: unsigned short <- Ruby: Fixnum - 'i' C: int <- Ruby: Fixnum - 'I' C: unsigned int <- Ruby: Fixnum - 'j' C: long <- Ruby: Fixnum - 'J' C: unsigned long <- Ruby: Fixnum - 'l' C: long long <- Ruby: Fixnum - 'L' C: unsigned long long <- Ruby: Fixnum - 'f' C: float <- Ruby: Float - 'd' C: double <- Ruby: Float - 'p' C: void* <- Ruby: String (check if there are other pointer-convertible ruby types @@@) - 'Z' C: void* <- Ruby: String + 'B' C++: bool <- Ruby: TrueClass, FalseClass, NilClass, Fixnum + 'c' C: char <- Ruby: Fixnum + 'C' C: unsigned char <- Ruby: Fixnum + 's' C: short <- Ruby: Fixnum + 'S' C: unsigned short <- Ruby: Fixnum + 'i' C: int <- Ruby: Fixnum + 'I' C: unsigned int <- Ruby: Fixnum + 'j' C: long <- Ruby: Fixnum + 'J' C: unsigned long <- Ruby: Fixnum + 'l' C: long long <- Ruby: Fixnum + 'L' C: unsigned long long <- Ruby: Fixnum + 'f' C: float <- Ruby: Float + 'd' C: double <- Ruby: Float + 'p' C: void* <- Ruby: String (check if there are other pointer-convertible ruby types @@@) + 'Z' C: void* <- Ruby: String - y is result-type charcode + y is result-type charcode - 'v' C: void -> Ruby: NilClass - 'B' C: bool -> Ruby: TrueClass, FalseClass - 'c' C: char -> Ruby: Fixnum - 'C' C: unsigned char -> Ruby: Fixnum - 's' C: short -> Ruby: Fixnum - 'S' C: unsigned short -> Ruby: Fixnum - 'i' C: int -> Ruby: Fixnum - 'I' C: unsigned int -> Ruby: Fixnum - 'j' C: long -> Ruby: Fixnum - 'J' C: unsigned long -> Ruby: Fixnum - 'l' C: long long -> Ruby: Fixnum - 'L' C: unsigned long long -> Ruby: Fixnum - 'f' C: float -> Ruby: Float - 'd' C: double -> Ruby: Float - 'p' C: void* -> unsupported at the moment @@@ - 'Z' C: void* -> Ruby: String + 'v' C: void -> Ruby: NilClass + 'B' C: bool -> Ruby: TrueClass, FalseClass + 'c' C: char -> Ruby: Fixnum + 'C' C: unsigned char -> Ruby: Fixnum + 's' C: short -> Ruby: Fixnum + 'S' C: unsigned short -> Ruby: Fixnum + 'i' C: int -> Ruby: Fixnum + 'I' C: unsigned int -> Ruby: Fixnum + 'j' C: long -> Ruby: Fixnum + 'J' C: unsigned long -> Ruby: Fixnum + 'l' C: long long -> Ruby: Fixnum + 'L' C: unsigned long long -> Ruby: Fixnum + 'f' C: float -> Ruby: Float + 'd' C: double -> Ruby: Float + 'p' C: void* -> unsupported at the moment @@@ + 'Z' C: void* -> Ruby: String -> Note that signature suffixes used to indicate calling -> conventions, are not supported yet! @@@ +