diff options
Diffstat (limited to 'Examples/chicken/class/test-lowlevel-class.scm')
| -rw-r--r-- | Examples/chicken/class/test-lowlevel-class.scm | 76 |
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) |
