Lots more has happened.
[sod] / examples.lisp
index 92489dd..cda6bcf 100644 (file)
@@ -1,60 +1,60 @@
 (set-dispatch-macro-character #\# #\{ 'c-fragment-reader)
 
-(progn
-  (clear-the-decks)
-
-  (define-sod-class "Animal" ("SodObject")
-    :nick 'nml
-    :link '|SodObject|
-    (slot "tickles" int)
-    (instance-initializer "nml" "tickles" :single #{ 0 })
-    (message "tickle" (fun void))
-    (method "nml" "tickle" (fun void) #{
-       me->tickles++;
-     }
-     :role :before)
-    (method "nml" "tickle" (fun void) #{ }))
-
-  (define-sod-class "Lion" ("Animal")
-    :nick 'lion
-    :link '|Animal|
-    (message "bite" (fun void))
-    (method "lion" "bite" (fun void) nil)
-    (method "nml" "tickle" (fun void) #{
-       me->_vt->lion.bite(me);
-       CALL_NEXT_METHOD;
-     }))
-
-  (define-sod-class "Goat" ("Animal")
-    :nick 'goat
-    (message "butt" (fun void))
-    (method "goat" "butt" (fun void) nil)
-    (method "nml" "tickle" (fun void) #{
-       me->_vt->goat.bite(me);
-       CALL_NEXT_METHOD;
-     }))
-
-  (define-sod-class "Serpent" ("Animal")
-    :nick 'serpent
-    (message "bite" (fun void))
-    (method "serpent" "bite" (fun void) nil)
-    (message "hiss" (fun void))
-    (method "serpent" "hiss" (fun void) nil)
-    (method "nml" "tickle" (fun void) #{
-       if (me->tickles < 3) me->_vt->hiss(me);
-       else me->_vt->bite(me);
-       CALL_NEXT_METHOD;
-     }))
-
-  (define-sod-class "Chimaera" ("Lion" "Goat" "Serpent")
-    :nick 'sir
-    :link '|Lion|)
-
-  (defparameter *chimaera* (find-sod-class "Chimaera"))
-  (defparameter *emeth* (find "tickle"
-                             (sod-class-effective-methods *chimaera*)
-                             :key (lambda (method)
-                                    (sod-message-name
-                                     (effective-method-message method)))
-                             :test #'string=)))
+(defparameter *chimaera-module*
+  (define-module ("chimaera.sod")
+
+    (define-sod-class "Animal" ("SodObject")
+      :nick 'nml
+      :link '|SodObject|
+      (slot "tickles" int)
+      (instance-initializer "nml" "tickles" :single #{ 0 })
+      (message "tickle" (fun void))
+      (method "nml" "tickle" (fun void) #{
+        me->tickles++;
+       }
+       :role :before)
+      (method "nml" "tickle" (fun void) #{ }))
+
+    (define-sod-class "Lion" ("Animal")
+      :nick 'lion
+      :link '|Animal|
+      (message "bite" (fun void))
+      (method "lion" "bite" (fun void) nil)
+      (method "nml" "tickle" (fun void) #{
+        me->_vt->lion.bite(me);
+        CALL_NEXT_METHOD;
+       }))
+
+    (define-sod-class "Goat" ("Animal")
+      :nick 'goat
+      (message "butt" (fun void))
+      (method "goat" "butt" (fun void) nil)
+      (method "nml" "tickle" (fun void) #{
+        me->_vt->goat.bite(me);
+        CALL_NEXT_METHOD;
+       }))
+
+    (define-sod-class "Serpent" ("Animal")
+      :nick 'serpent
+      (message "bite" (fun void))
+      (method "serpent" "bite" (fun void) nil)
+      (message "hiss" (fun void))
+      (method "serpent" "hiss" (fun void) nil)
+      (method "nml" "tickle" (fun void) #{
+        if (me->tickles < 3) me->_vt->hiss(me);
+        else me->_vt->bite(me);
+        CALL_NEXT_METHOD;
+       }))
+
+    (define-sod-class "Chimaera" ("Lion" "Goat" "Serpent")
+      :nick 'sir
+      :link '|Lion|)
+
+    (defparameter *chimaera* (find-sod-class "Chimaera"))
+    (defparameter *emeth* (find "tickle"
+                               (sod-class-effective-methods *chimaera*)
+                               :key (lambda (method)
+                                      (sod-message-name
+                                       (effective-method-message method)))
+                               :test #'string=))))