diff options
Diffstat (limited to 'Examples/ruby/simple/index.html')
| -rw-r--r-- | Examples/ruby/simple/index.html | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/Examples/ruby/simple/index.html b/Examples/ruby/simple/index.html new file mode 100644 index 0000000..b2ab14e --- /dev/null +++ b/Examples/ruby/simple/index.html @@ -0,0 +1,97 @@ +<html> +<head> +<title>SWIG:Examples:ruby:simple</title> +</head> + +<body bgcolor="#ffffff"> + + +<tt>SWIG/Examples/ruby/simple/</tt> +<hr> + +<H2>Simple Ruby Example</H2> + +<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> |
