<html> <head> <title>SWIG:Examples:tcl:simple</title> </head> <body bgcolor="#ffffff"> <tt>SWIG/Examples/tcl/simple/</tt> <hr> <H2>Simple Tcl Example</H2> <tt>$Header: /cvs/projects/SWIG/Examples/tcl/simple/index.html,v 1.1 2000/06/17 21:41:01 beazley Exp $</tt><br> <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="example.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>