diff options
Diffstat (limited to 'Examples/tcl/simple/index.html')
| -rw-r--r-- | Examples/tcl/simple/index.html | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/Examples/tcl/simple/index.html b/Examples/tcl/simple/index.html new file mode 100644 index 0000000..333d905 --- /dev/null +++ b/Examples/tcl/simple/index.html @@ -0,0 +1,97 @@ +<html> +<head> +<title>SWIG:Examples:tcl:simple</title> +</head> + +<body bgcolor="#ffffff"> + +<tt>SWIG/Examples/tcl/simple/</tt> +<hr> + +<H2>Simple Tcl Example</H2> + +<p> +This example illustrates how you can hook Tcl 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 -tcl <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="runme.tcl">here</a> to see a script that calls our C functions from Tcl. + +<h2>Key points</h2> + +<ul> +<li>Use the <tt>load</tt> statement to load your extension module into Tcl. For example: +<blockquote> +<pre> +load ./example.so +</pre> +</blockquote> + +<li>C functions work just like Tcl functions. For example: +<blockquote> +<pre> +set g [gcd 42 105] +</pre> +</blockquote> + +<li>C global variables are accessed as Tcl variables. For example: +<blockquote> +<pre> +set a $Foo +set Foo $newvalue +</pre> +</blockquote> +</ul> + +<hr> +</body> +</html> |
