Mercurial > hg > amuse
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))