Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Rubber Generate

v0.0.20

Template language for generating Ruby bindings for C libraries
by Geoff Youngs <g@intersect-uk.co.uk>

Introduction

A simple ruby-style bindings generator for Ruby. It allows bindings to
be laid out in a Ruby style, documentation to be included inline and
explicit type casts within C code. It’s somewhere between SWIG and pyrex.

It also allows features extconf.rb creation, including checks for headers,
pkg-config etc. The modules it creates currently depend on Ruby/GTK, but
it is planned to remove this dependency unless they genuinely require Ruby/GTK.

Other features include custom named type-maps, pre/post code inclusion within
functions and some rudimentary understanding of C code.

Changes

  • 0.0.20 – 31st Jul 2013
    – Auto-scan loaded gems for missing headers
    – Add support for %include_dir gem:foo or gem:foo/path/in/gem
  • 0.0.19 – 17th June 2013
    – Ruby 1.9 changes arguments for rb_num_coerce_cmp() – fixed.
  • 0.0.18 – 16th Nov 2012
    – Fixes for finding ruby-gnome2 header in gems
    – Improved error reporting
  • 0.0.17 – 16th Nov 2012
    – Ruby 1.9 fixes
  • 0.0.16 – 20th Oct 2011
    – Add GCC pragma to reduce warnings on unused variables
  • 0.0.15 – 18th Oct 2011
    – Add support for scanning gem directories for ruby-gnome2 headers
    – Fix missing fileutils dependency
  • 0.0.14 – 18th Oct 2011
    – Add define_on_self to genum (allow constants to be defined within submodule rather than on parent module/class)
  • 0.0.13 – 5th May 2011
    – Bug fix for gcpool
  • 0.0.12 – 3rd May 2011
    – Add support for uint64 conversion
  • 0.0.11 – 27th Apr 2011
    – Fix parsing of %min-version numbers
  • 0.0.10 – 27th Apr 2011
    – Add —install flag
  • 0.0.9 – 31st May 2010
    – Add support for —build-dir switch to specify output directory
  • 0.0.8 – 10th May 2010
    – Add support for %min-version ..
  • 0.0.7 – 7th May 2010
    – Add support for array constants (including autmatic type detection) – e.g array = [ “Text”, NULL, 3 ]
    – Add syntax_error function to parser which reports slightly more helpful syntax error messages for a .cr file
    – Add tracking of code location so that C compiler throws errors which refer to the original line in the .cr file
    – Add support for GSList{type} or GList{type} conversion to arrays as return values for functions
  • 0.0.6 – 6th May 2010
    – Flags class allows wrapping a bit field with slightly more information. Plus automatic conversion to/from ruby and support for integer values.

Dependencies

  • Ruby 1.8 / Ruby 1.9 / Ruby 2.0

Example

Sample file:

  • example/vte.cr

Usage:


$ rubber-generate —generate —build —install vte.cr

Which should generate
[arch]/vte.c <- Source code for extension
[arch]/vte.rd <- RD documentation from vte.cr
[arch]/extconf.rb <- Config script
[arch]/vte.o <- Object file
[arch]/vte.so <- Compiled extension

Installation

  $ sudo gem install rubber-generate

Credits

Author: Geoff Youngs

Contributors:

  • Vincent Isambart

About

Ruby C Bindings template language

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages