summaryrefslogtreecommitdiff
path: root/Examples/chicken/overload/test-overload.scm
diff options
context:
space:
mode:
Diffstat (limited to 'Examples/chicken/overload/test-overload.scm')
-rw-r--r--Examples/chicken/overload/test-overload.scm45
1 files changed, 45 insertions, 0 deletions
diff --git a/Examples/chicken/overload/test-overload.scm b/Examples/chicken/overload/test-overload.scm
new file mode 100644
index 0000000..168490f
--- /dev/null
+++ b/Examples/chicken/overload/test-overload.scm
@@ -0,0 +1,45 @@
+;; This file demonstrates the overloading capabilities of SWIG
+
+(load-library 'example "overload.so")
+
+;; Low level
+;; ---------
+
+(display "
+Trying low level code ...
+ (foo 1)
+ (foo \"some string\")
+ (define A-FOO (new-Foo))
+ (define ANOTHER-FOO (new-Foo A-FOO)) ;; copy constructor
+ (Foo-bar A-FOO 2)
+ (Foo-bar ANOTHER-FOO \"another string\" 3)
+")
+
+(primitive:foo 1)
+(primitive:foo "some string")
+(define A-FOO (slot-ref (primitive:new-Foo) 'swig-this))
+(define ANOTHER-FOO (slot-ref (primitive:new-Foo A-FOO) 'swig-this)) ;; copy constructor
+(primitive:Foo-bar A-FOO 2)
+(primitive:Foo-bar ANOTHER-FOO "another string" 3)
+
+;; TinyCLOS
+;; --------
+
+(display "
+Trying TinyCLOS code ...
+ (+foo+ 1)
+ (+foo+ \"some string\")
+ (define A-FOO (make <Foo>))
+ (define ANOTHER-FOO (make <Foo> A-FOO)) ;; copy constructor
+ (-bar- A-FOO 2)
+ (-bar- ANOTHER-FOO \"another string\" 3)
+")
+
+(foo 1)
+(foo "some string")
+(define A-FOO (make <Foo>))
+(define ANOTHER-FOO (make <Foo> A-FOO)) ;; copy constructor
+(bar A-FOO 2)
+(bar ANOTHER-FOO "another string" 3)
+
+(exit)