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! @@@
+