summaryrefslogtreecommitdiff
path: root/Examples/chicken/class/test-lowlevel-class.scm
diff options
context:
space:
mode:
Diffstat (limited to 'Examples/chicken/class/test-lowlevel-class.scm')
-rw-r--r--Examples/chicken/class/test-lowlevel-class.scm76
1 files changed, 76 insertions, 0 deletions
diff --git a/Examples/chicken/class/test-lowlevel-class.scm b/Examples/chicken/class/test-lowlevel-class.scm
new file mode 100644
index 0000000..7c59c0a
--- /dev/null
+++ b/Examples/chicken/class/test-lowlevel-class.scm
@@ -0,0 +1,76 @@
+;; This file illustrates the low-level C++ interface generated
+;; by SWIG.
+
+(load-library 'example "class.so")
+(declare (uses example))
+
+;; ----- Object creation -----
+
+(display "Creating some objects:\n")
+(define c (new-Circle 10.0))
+(display " Created circle ")
+(display c)
+(display "\n")
+(define s (new-Square 10.0))
+(display " Created square ")
+(display s)
+(display "\n")
+
+;; ----- Access a static member -----
+
+(display "\nA total of ")
+(display (Shape-nshapes))
+(display " shapes were created\n")
+
+;; ----- Member data access -----
+
+;; Set the location of the object
+
+(Shape-x-set c 20.0)
+(Shape-y-set c 30.0)
+
+(Shape-x-set s -10.0)
+(Shape-y-set s 5.0)
+
+(display "\nHere is their current position:\n")
+(display " Circle = (")
+(display (Shape-x-get c))
+(display ", ")
+(display (Shape-y-get c))
+(display ")\n")
+(display " Square = (")
+(display (Shape-x-get s))
+(display ", ")
+(display (Shape-y-get s))
+(display ")\n")
+
+;; ----- Call some methods -----
+
+(display "\nHere are some properties of the shapes:\n")
+(let
+ ((disp (lambda (o)
+ (display " ")
+ (display o)
+ (display "\n")
+ (display " area = ")
+ (display (Shape-area o))
+ (display "\n")
+ (display " perimeter = ")
+ (display (Shape-perimeter o))
+ (display "\n"))))
+ (disp c)
+ (disp s))
+
+(display "\nGuess I'll clean up now\n")
+
+;; Note: this invokes the virtual destructor
+(set! c #f)
+(set! s #f)
+(gc #t)
+
+(set! s 3)
+(display (Shape-nshapes))
+(display " shapes remain\n")
+(display "Goodbye\n")
+
+(exit)