<html> <head> <title>SWIG:Examples:ruby:simple</title> </head> <body bgcolor="#ffffff"> <tt>SWIG/Examples/ruby/simple/</tt> <hr> <H2>Simple Ruby Example</H2> <tt>$Header: /cvs/projects/SWIG/Examples/ruby/simple/index.html,v 1.1 2000/07/05 18:58:47 ttn Exp $</tt><br> <p> This example illustrates how you can hook Ruby to a very simple C program containing a function and a global variable. <h2>The C Code</h2> Suppose you have the following C code: <blockquote> <pre> /* File : example.c */ /* A global variable */ double Foo = 3.0; /* Compute the greatest common divisor of positive integers */ int gcd(int x, int y) { int g; g = y; while (x > 0) { g = x; x = y % x; y = g; } return g; } </pre> </blockquote> <h2>The SWIG interface</h2> Here is a simple SWIG interface file: <blockquote> <pre> /* File: example.i */ %module example extern int gcd(int x, int y); extern double Foo; </pre> </blockquote> <h2>Compilation</h2> <ol> <li><tt>swig -ruby <a href="example.i">example.i</a></tt> <p> <li>Compile <tt><a href="example_wrap.c">example_wrap.c</a></tt> and <tt><a href="example.c">example.c</a></tt> to create the extension <tt>example.so</tt>. </ol> <h2>Using the extension</h2> Click <a href="run.rb">here</a> to see a script that calls our C functions from Ruby. <h2>Key points</h2> <ul> <li>Use the <tt>require</tt> function to load your extension library from Ruby. For example: <blockquote> <pre> require 'example' </pre> </blockquote> <li>C functions work just like Ruby functions. For example: <blockquote> <pre> g = Example.gcd(42,105) </pre> </blockquote> <li>C global variables are accessed through module method. For example: <blockquote> <pre> a = Example.Foo </pre> </blockquote> </ul> <hr> </body> </html>