changeset 15:38976571a4ac

Various changes - mostly accessors, constructors and methods darcs-hash:20061211134854-f76cc-1e32f695bc91208b22bb4803abcdb2941f8f7edf.gz
author David Lewis <d.lewis@gold.ac.uk>
date Mon, 11 Dec 2006 13:48:54 +0000
parents 2af5e4f825a8
children 5fac84ca066a
files amuse.asd generics.lisp
diffstat 2 files changed, 37 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/amuse.asd	Tue Dec 05 17:05:15 2006 +0000
+++ b/amuse.asd	Mon Dec 11 13:48:54 2006 +0000
@@ -4,5 +4,7 @@
     :serial t
     :components ((:file "package")
                  (:file "conditions")
+		 (:file "classes")
+		 (:file "constructors")
                  (:file "generics")
-                 (:file "classes")))
+                 (:file "methods")))
--- a/generics.lisp	Tue Dec 05 17:05:15 2006 +0000
+++ b/generics.lisp	Mon Dec 11 13:48:54 2006 +0000
@@ -4,17 +4,38 @@
 
 (defgeneric get-composition (identifier))
 
-;;; Accessors (do we need the get- prefix?) 
+;;; Simple Accessors
 
-(defgeneric get-pitch (object &key kind)) ; ?
-(defgeneric get-chromatic-pitch (pitch-designator))
-(defgeneric get-diatonic-pitch (pitch-designator))
-(defgeneric get-frequency (object)) ;?
+(defgeneric pitch (object &key kind)) ; ? Maybe this returns the pitch
+				      ; in its ur form?
+(defgeneric chromatic-pitch (pitch-designator)) ; How simple are these
+(defgeneric diatonic-pitch (pitch-designator)) ; if has to be computed?
+(defgeneric frequency (object)) ;?
 
-(defgeneric get-duration (time-interval-designator))
-(defgeneric get-time (moment-designator))
-(defgeneric get-onset (moment-designator)
-  (:method (m-d) (get-time m-d)))
+(defgeneric duration (period-designator))
+(defgeneric (setf duration) (value period-designator))
+(defgeneric time (moment-designator))
+(defgeneric (setf time) (value moment-designator))
+(defgeneric onset (anchored-period-designator)
+  (:method (apd) (time apd)))
+(defgeneric (setf onset) (value anchored-period-designator))
+(defgeneric end (anchored-period-designator); change name
+  (:method (apd) (time+ (onset apd) (duration apd))))
+
+;;; Coerce-type accessors
+
+;; Should I be including these default methods?  Should the accessors
+;; be direct slot accessors or the generics I'm using? Should we
+;; return the object itself if it already is in the target class?
+
+(defgeneric anchored-period (anchored-period-designator)
+  (:method (apd) (make-anchored-period (onset apd) (duration apd))))
+
+(defgeneric floating-period (period-designator)
+  (:method (pd) (make-floating-period (duration pd))))
+
+(defgeneric moment (moment-designator)
+  (:method (md) (make-moment (time md))))
 
 ;;; Time Protocol (or moments?)
 
@@ -121,11 +142,11 @@
   (:method (o1 o2) 
     (or (before o1 o2) (meets o1 o2) (meets o2 o1) (before o2 o1))))
 
-;; Another time-based function, returning the anchored-time-interval
+;; Another time-based function, returning the anchored-period
 ;; representing the intersection of two
-;; anchored-time-interval-specifiers.
-(defgeneric intersection (anchored-time-interval-specifier1
-			  anchored-time-interval-specifier2))
+;; anchored-period-specifiers.
+(defgeneric period-intersection (anchored-period-specifier1
+				 anchored-period-specifier2))