/trunk/Examples/chicken/class/test-lowlevel-class.scm
Lisp | 76 lines | 52 code | 16 blank | 8 comment | 0 complexity | 6f994a91b31923c29f091b261b92ac63 MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
- ;; 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)