summaryrefslogtreecommitdiff
path: root/Examples/tcl/simple/index.html
diff options
context:
space:
mode:
Diffstat (limited to 'Examples/tcl/simple/index.html')
-rw-r--r--Examples/tcl/simple/index.html97
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 &gt; 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>