1
(declare (unit precsi))
2
(declare (uses example))
4
(if (not (member "-quiet" (cdr (argv))))
6
;; display prelude to csi
9
(display " A SWIG example for the CHICKEN compiler\n")
10
(display " Author: Jonah Beckford, December 2002\n\n")
12
(display "C++ Interface\n")
13
(display "-------------\n")
20
void move(double dx, double dy);
21
virtual double area(void) = 0;
22
virtual double perimeter(void) = 0;
32
class Circle : public Shape {
37
virtual double area(void);
38
virtual double perimeter(void);
41
class Square : public Shape {
46
virtual double area(void);
47
virtual double perimeter(void);
53
(display "CHICKEN Low-Level Procedures\n")
54
(display "----------------------------\n")
56
(define A-CIRCLE-SHAPE (example:new-Circle %radius))
57
(example:Circle-area %circle)
58
(example:Circle-perimeter %circle)
59
(example:delete-Circle %circle)
61
(define A-SQUARE-SHAPE (example:new-Square %width))
62
(example:Square-area %square)
63
(example:Square-perimeter %square)
64
(example:delete-Square %square)
66
(example:delete-Shape %shape)
67
(example:Shape-x-set %shape %x)
68
(example:Shape-x-get %shape)
69
(example:Shape-y-set %shape %y)
70
(example:Shape-y-get %shape)
71
(example:Shape-move %shape %dx %dy)
72
(example:Shape-area %shape)
73
(example:Shape-perimeter %shape)
74
(example:Shape-nshapes)
75
(example:Shape-nshapes %nshapes-int)
77
(example:Shape-Second)
84
(display "TinyCLOS Classes\n")
85
(display "----------------\n")
87
;; ALL generic methods must be included first
88
(include \"example-generic\")
89
;; After generic methods are defined, can include TinyCLOS code
90
(include \"example-clos\")
92
(define A-CIRCLE-SHAPE (make <example:Circle> %radius))
93
(-get-x- %shapeObject)
94
(-set-x!- %shapeObject %x)
95
(-get-y- %shapeObject)
96
(-set-y!- %shapeObject %y)
97
(-move!- %shapeObject %dx %dy)
99
(-perimeter- %shapeObject)
100
(+example:Shape-nshapes+)
101
(+example:Shape-nshapes+ %nshapes-int)
102
;; do not use (example:delete-Shape (slot-ref %shapeObject 'this))
103
;; as %shapeObject is always garbage-collected