diff options
author | William S Fulton <wsf@fultondesigns.co.uk> | 2019-02-09 14:43:27 +0000 |
---|---|---|
committer | William S Fulton <wsf@fultondesigns.co.uk> | 2019-02-09 14:44:33 +0000 |
commit | 30d0c16ac0935fdc343c1e646ff6cae3bf03bcd8 (patch) | |
tree | 10975e63a965bda04a745eb4ee0136e8ebf6d594 /Examples/mzscheme | |
parent | de23343739a79331883cfd2bede0afc0504657c0 (diff) | |
download | swig-30d0c16ac0935fdc343c1e646ff6cae3bf03bcd8.tar.gz |
Standardise Mzscheme simple example
Changes so that it works the same as other language modules
Diffstat (limited to 'Examples/mzscheme')
-rw-r--r-- | Examples/mzscheme/simple/README | 1 | ||||
-rw-r--r-- | Examples/mzscheme/simple/example.c | 30 | ||||
-rw-r--r-- | Examples/mzscheme/simple/example.i | 13 | ||||
-rw-r--r-- | Examples/mzscheme/simple/runme.scm | 39 |
4 files changed, 37 insertions, 46 deletions
diff --git a/Examples/mzscheme/simple/README b/Examples/mzscheme/simple/README deleted file mode 100644 index 07e8da069..000000000 --- a/Examples/mzscheme/simple/README +++ /dev/null @@ -1 +0,0 @@ -Simple example from users manual. diff --git a/Examples/mzscheme/simple/example.c b/Examples/mzscheme/simple/example.c index f2b074781..1c2af789c 100644 --- a/Examples/mzscheme/simple/example.c +++ b/Examples/mzscheme/simple/example.c @@ -1,24 +1,18 @@ -/* Simple example from documentation */ /* File : example.c */ -#include <time.h> +/* A global variable */ +double Foo = 3.0; -double My_variable = 3.0; - -/* Compute factorial of n */ -int fact(int n) { - if (n <= 1) return 1; - else return n*fact(n-1); -} - -/* Compute n mod m */ -int my_mod(int n, int m) { - return (n % m); +/* 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; } -char *get_time() { - long ltime; - time(<ime); - return ctime(<ime); -} diff --git a/Examples/mzscheme/simple/example.i b/Examples/mzscheme/simple/example.i index 5b3e95580..24093b9bf 100644 --- a/Examples/mzscheme/simple/example.i +++ b/Examples/mzscheme/simple/example.i @@ -1,16 +1,7 @@ /* File : example.i */ %module example -%{ -/* Put headers and other declarations here */ -%} - -%include typemaps.i - -%rename(mod) my_mod; %inline %{ -extern double My_variable; -extern int fact(int); -extern int my_mod(int n, int m); -extern char *get_time(); +extern int gcd(int x, int y); +extern double Foo; %} diff --git a/Examples/mzscheme/simple/runme.scm b/Examples/mzscheme/simple/runme.scm index 181635078..88d32d6fc 100644 --- a/Examples/mzscheme/simple/runme.scm +++ b/Examples/mzscheme/simple/runme.scm @@ -2,23 +2,30 @@ (load-extension "example.so") -(display (get-time)) +; Call our gcd() function -(printf "My-variable = ~a~n" (My-variable)) +(define x 42) +(define y 105) +(define g (gcd x y)) +(display "The gcd of ") +(display x) +(display " and ") +(display y) +(display " is ") +(display g) +(newline) -(let loop ((i 0)) - (when (< i 14) (begin (display i) - (display " factorial is ") - (display (fact i)) - (newline) - (loop (+ i 1))))) +; Manipulate the Foo global variable -(let loop ((i 1)) - (when (< i 250) - (begin - (let loopi ((j 1)) - (when (< j 250) (begin (My-variable (+ (My-variable) (mod i j))) - (loopi (+ j 1))))) - (loop (+ i 1))))) +; Output its current value +(display "Foo = ") +(display (Foo)) +(newline) -(printf "My-variable = ~a~n" (My-variable)) +; Change its value +(Foo 3.1415926) + +; See if the change took effect +(display "Foo = ") +(display (Foo)) +(newline) |