changeset 10:356ee92313be

Move default methods from default-methods.lisp to generics.lisp and remove default-methods.lisp. darcs-hash:20061113192940-aa3d6-c5c255e9aa6486b360e1ac1393910ba3c783f4b8.gz
author m.pearce <m.pearce@gold.ac.uk>
date Mon, 13 Nov 2006 19:29:40 +0000
parents 22d090e96582
children 9f05ce23e71e
files amuse.asd default-methods.lisp generics.lisp
diffstat 3 files changed, 35 insertions(+), 76 deletions(-) [+]
line wrap: on
line diff
--- a/amuse.asd	Mon Nov 13 19:00:10 2006 +0000
+++ b/amuse.asd	Mon Nov 13 19:29:40 2006 +0000
@@ -5,6 +5,4 @@
     :components ((:file "package")
                  (:file "conditions")
                  (:file "generics")
-                 (:file "classes")
-                 (:file "default-methods")))
-
+                 (:file "classes")))
--- a/default-methods.lisp	Mon Nov 13 19:00:10 2006 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-(cl:in-package #:amuse) 
-
-;; Some methods that can be defined in terms of others:
-
-;; Time
-
-(defmethod time>= ((object1 moment) (object2 moment))
-  (or (time> object1 object2)
-      (time= object1 object2)))
-
-(defmethod time<= ((object1 moment) (object2 moment))
-  (or (time< object1 object2)
-      (time= object1 object2)))
-
-(defmethod time/= ((object1 moment) (object2 moment))
-  (not (time= object1 object2)))
-
-;; Duration
-
-(defmethod duration>= ((object1 duration) (object2 duration))
-  (or (duration> object1 object2)
-      (duration= object1 object2)))
-
-(defmethod duration<= ((object1 duration) (object2 duration))
-  (or (duration< object1 object2)
-      (duration= object1 object2)))
-
-(defmethod duration/= ((object1 duration) (object2 duration))
-  (not (duration= object1 object2)))
-
-;; Pitch
-
-(defmethod pitch>= ((object1 pitch) (object2 pitch))
-  (or (pitch> object1 object2)
-      (pitch= object1 object2)))
-
-(defmethod pitch<= ((object1 pitch) (object2 pitch))
-  (or (pitch< object1 object2)
-      (pitch= object1 object2)))
-
-(defmethod pitch/= ((object1 pitch) (object2 pitch))
-  (not (pitch= object1 object2)))
-
-;; Interval
-
-(defmethod interval>= ((object1 interval) (object2 interval))
-  (or (interval> object1 object2)
-      (interval= object1 object2)))
-
-(defmethod interval<= ((object1 interval) (object2 interval))
-  (or (interval< object1 object2)
-      (interval= object1 object2)))
-
-(defmethod interval/= ((object1 interval) (object2 interval))
-  (not (interval= object1 object2)))
--- a/generics.lisp	Mon Nov 13 19:00:10 2006 +0000
+++ b/generics.lisp	Mon Nov 13 19:29:40 2006 +0000
@@ -35,19 +35,26 @@
 
 (defgeneric time> (object1 object2))
 (defgeneric time< (object1 object2))
-(defgeneric time>= (object1 object2)) 
-(defgeneric time<= (object1 object2))
 (defgeneric time= (object1 object2)) 
-(defgeneric time/= (object1 object2)) 
+(defgeneric time>= (object1 object2)
+  (:method (o1 o2) (or (time> o1 o2) (time= o1 o2))))
+(defgeneric time<= (object1 object2)
+  (:method (o1 o2) (or (time< o1 o2) (time= o1 o2))))
+(defgeneric time/= (object1 object2)
+  (:method (o1 o2) (not (time= o1 o2))))
+
 
 ;;; Duration protocol 
 
 (defgeneric duration> (object1 object2))
 (defgeneric duration< (object1 object2))
-(defgeneric duration>= (object1 object2)) 
-(defgeneric duration<= (object1 object2))
 (defgeneric duration= (object1 object2)) 
-(defgeneric duration/= (object1 object2)) 
+(defgeneric duration>= (object1 object2) 
+  (:method (o1 o2) (or (duration> o1 o2) (duration= o1 o2))))
+(defgeneric duration<= (object1 object2)
+  (:method (o1 o2) (or (duration< o1 o2) (duration= o1 o2))))
+(defgeneric duration/= (object1 object2) 
+  (:method (o1 o2) (not (duration= o1 o2))))
 
 
 ;;; Pitch protocol 
@@ -67,23 +74,30 @@
 
 (defgeneric pitch> (object1 object2))
 (defgeneric pitch< (object1 object2))
-(defgeneric pitch>= (object1 object2)) 
-(defgeneric pitch<= (object1 object2))
 (defgeneric pitch= (object1 object2)) 
-(defgeneric pitch/= (object1 object2)) 
+(defgeneric pitch>= (object1 object2) 
+  (:method (o1 o2) (or (pitch> o1 o2) (pitch= o1 o2))))
+(defgeneric pitch<= (object1 object2)
+  (:method (o1 o2) (or (pitch< o1 o2) (pitch= o1 o2))))
+(defgeneric pitch/= (object1 object2) 
+  (:method (o1 o2) (not (pitch= o1 o2))))
 
 ;;; Interval protocol (emphasise _pitch_ not _time_ interval?) 
 
 (defgeneric interval> (object1 object2))
 (defgeneric interval< (object1 object2))
-(defgeneric interval>= (object1 object2)) 
-(defgeneric interval<= (object1 object2))
 (defgeneric interval= (object1 object2)) 
-(defgeneric interval/= (object1 object2)) 
+(defgeneric interval>= (object1 object2) 
+  (:method (o1 o2) (or (interval> o1 o2) (interval= o1 o2))))
+(defgeneric interval<= (object1 object2)
+  (:method (o1 o2) (or (interval< o1 o2) (interval= o1 o2))))
+(defgeneric interval/= (object1 object2) 
+  (:method (o1 o2) (not (interval= o1 o2))))
 
 ;;; Allen's (1984) interval relations 
 ;;;  . equals already defined as INTERVAL= above 
-;;;  . can all be defined in terms of MEETS
+;;;  . inverses ommitted for now (just use CL:NOT) 
+;;;  . can all be defined in terms of MEETS (apparently)
 
 (defgeneric meets (object1 object2))
 (defgeneric before (object1 object2))
@@ -92,12 +106,14 @@
 (defgeneric starts (object1 object2))
 (defgeneric ends (object1 object2))
 
-;;; and extensions ... 
+;;; and extensions thereof ...
 
-;;; i subinterval j if i starts j or i during j or i ends j
-(defgeneric subinterval (object1 object2))
-;;; i disjoint j if i before j or i meets j or j meets i or j before i
-(defgeneric disjoint (object1 object2))
+(defgeneric subinterval (object1 object2)
+  (:method (o1 o2) (or (starts o1 o2) (during o1 o2) (ends o1 o2))))
+
+(defgeneric disjoint (object1 object2)
+  (:method (o1 o2) 
+    (or (before o1 o2) (meets o1 o2) (meets o2 o1) (before o2 o1))))
 
 
 ;;; Time Signature