[ANN] Rice 1.5.0 - Ruby Interface for C++ Extensions

Rice: Ruby Interface for C++ Extensions

···

========================================

What is Rice?

  Rice is a C++ interface to Ruby's C API. It provides a type-safe and
  exception-safe interface in order to make embedding Ruby and writing
  Ruby extensions with C++ easier. It is similar to Boost.Python in many
  ways, but also attempts to provide an object-oriented interface to all
  of the Ruby C API.

What's New?

  * Ruby 2.0 support!
  * Removed support for all Ruby < 1.8.7
  * Fix converting from Ruby to a single char (#34)
  * Fix define_singleton_method to set methods on the metaclass (#40)
  * Fix a few potential memory leaks (#41, #42)

Supported Platforms:

  * Linux
  * Mac OS X

  * While Windows has been known to work with MinGW / MSYS, I haven't
    been able to keep this testing up as of late.

What Rice gives you:

  * A simple C++-based syntax for wrapping and defining classes
  * Automatic conversion of exceptions between C++ and Ruby
  * Smart pointers for handling garbage collection
  * Wrappers for most builtin types to simplify calling code

  Documentation: http://rice.rubyforge.org

  Project Page: http://github.com/jasonroelofs/rice

  Mailing List: rice@librelist.com
                First email will be used as subscription and dropped.

How do you get Rice?

  gem install rice

  Note: Rice does require a C++ compiler. See the Documentation page for
more details.

How simple of a syntax?

wrapper.cpp

  #include <rice/Class.hpp>
  #include <rice/Constructor.hpp>

  class MyWrapper {
    public:
      MyWrapper() { }

      void doThis() { }
      int doThat(int a, float b) { }
  };

  extern "C"
  void Init_wrapper()
  {
    define_class<MyWrapper>("MyWrapper")
      .define_constructor(Constructor<MyWrapper>())
      .define_method("do_this", &MyWrapper::doThis)
      .define_method("do_that", &MyWrapper::doThat);
  }

extconf.rb

  require 'mkmf-rice'
  create_makefile("wrapper")

test.rb

  require 'wrapper'
  c = MyWrapper.new
  c.do_this
  c.do_that(1, 2.0)

--
Posted via http://www.ruby-forum.com/.