; file: runme.scm ; This file illustrates the proxy class C++ interface generated ; by SWIG. (load-extension "example.so") ; Convenience wrapper around the display function ; (which only accepts one argument at the time) (define (mdisplay-newline . args) (for-each display args) (newline)) ; ----- Object creation ----- (mdisplay-newline "Creating some objects:") (define c (new-Circle 10)) (mdisplay-newline " Created circle " c) (define s (new-Square 10)) (mdisplay-newline " Created square " s) ; ----- Access a static member ----- (mdisplay-newline "\nA total of " (Shape-nshapes) " shapes were created") ; ----- Member data access ----- ; Set the location of the object (Shape-x-set c 20) (Shape-y-set c 30) (Shape-x-set s -10) (Shape-y-set s 5) (mdisplay-newline "\nHere is their current position:") (mdisplay-newline " Circle = (" (Shape-x-get c) "," (Shape-y-get c) ")") (mdisplay-newline " Square = (" (Shape-x-get s) "," (Shape-y-get s) ")") ; ----- Call some methods ----- (mdisplay-newline "\nHere are some properties of the shapes:") (define (shape-props o) (mdisplay-newline " " o) (mdisplay-newline " area = " (Shape-area o)) (mdisplay-newline " perimeter = " (Shape-perimeter o))) (for-each shape-props (list c s)) (mdisplay-newline "\nGuess I'll clean up now") ; Note: this invokes the virtual destructor (delete-Shape c) (delete-Shape s) (define s 3) (mdisplay-newline (Shape-nshapes) " shapes remain") (mdisplay-newline "Goodbye") (exit 0)