Mercurial > hg > amuse
comparison generics.lisp @ 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 |
comparison
equal
deleted
inserted
replaced
9:22d090e96582 | 10:356ee92313be |
---|---|
33 (defgeneric time+ (object1 object2)) | 33 (defgeneric time+ (object1 object2)) |
34 (defgeneric time- (object1 object2)) | 34 (defgeneric time- (object1 object2)) |
35 | 35 |
36 (defgeneric time> (object1 object2)) | 36 (defgeneric time> (object1 object2)) |
37 (defgeneric time< (object1 object2)) | 37 (defgeneric time< (object1 object2)) |
38 (defgeneric time>= (object1 object2)) | |
39 (defgeneric time<= (object1 object2)) | |
40 (defgeneric time= (object1 object2)) | 38 (defgeneric time= (object1 object2)) |
41 (defgeneric time/= (object1 object2)) | 39 (defgeneric time>= (object1 object2) |
40 (:method (o1 o2) (or (time> o1 o2) (time= o1 o2)))) | |
41 (defgeneric time<= (object1 object2) | |
42 (:method (o1 o2) (or (time< o1 o2) (time= o1 o2)))) | |
43 (defgeneric time/= (object1 object2) | |
44 (:method (o1 o2) (not (time= o1 o2)))) | |
45 | |
42 | 46 |
43 ;;; Duration protocol | 47 ;;; Duration protocol |
44 | 48 |
45 (defgeneric duration> (object1 object2)) | 49 (defgeneric duration> (object1 object2)) |
46 (defgeneric duration< (object1 object2)) | 50 (defgeneric duration< (object1 object2)) |
47 (defgeneric duration>= (object1 object2)) | |
48 (defgeneric duration<= (object1 object2)) | |
49 (defgeneric duration= (object1 object2)) | 51 (defgeneric duration= (object1 object2)) |
50 (defgeneric duration/= (object1 object2)) | 52 (defgeneric duration>= (object1 object2) |
53 (:method (o1 o2) (or (duration> o1 o2) (duration= o1 o2)))) | |
54 (defgeneric duration<= (object1 object2) | |
55 (:method (o1 o2) (or (duration< o1 o2) (duration= o1 o2)))) | |
56 (defgeneric duration/= (object1 object2) | |
57 (:method (o1 o2) (not (duration= o1 o2)))) | |
51 | 58 |
52 | 59 |
53 ;;; Pitch protocol | 60 ;;; Pitch protocol |
54 | 61 |
55 ;; pitch+: <pitch> <pitch> -> <pitch> | 62 ;; pitch+: <pitch> <pitch> -> <pitch> |
65 (defgeneric pitch+ (object1 object2)) | 72 (defgeneric pitch+ (object1 object2)) |
66 (defgeneric pitch- (object1 object2)) | 73 (defgeneric pitch- (object1 object2)) |
67 | 74 |
68 (defgeneric pitch> (object1 object2)) | 75 (defgeneric pitch> (object1 object2)) |
69 (defgeneric pitch< (object1 object2)) | 76 (defgeneric pitch< (object1 object2)) |
70 (defgeneric pitch>= (object1 object2)) | |
71 (defgeneric pitch<= (object1 object2)) | |
72 (defgeneric pitch= (object1 object2)) | 77 (defgeneric pitch= (object1 object2)) |
73 (defgeneric pitch/= (object1 object2)) | 78 (defgeneric pitch>= (object1 object2) |
79 (:method (o1 o2) (or (pitch> o1 o2) (pitch= o1 o2)))) | |
80 (defgeneric pitch<= (object1 object2) | |
81 (:method (o1 o2) (or (pitch< o1 o2) (pitch= o1 o2)))) | |
82 (defgeneric pitch/= (object1 object2) | |
83 (:method (o1 o2) (not (pitch= o1 o2)))) | |
74 | 84 |
75 ;;; Interval protocol (emphasise _pitch_ not _time_ interval?) | 85 ;;; Interval protocol (emphasise _pitch_ not _time_ interval?) |
76 | 86 |
77 (defgeneric interval> (object1 object2)) | 87 (defgeneric interval> (object1 object2)) |
78 (defgeneric interval< (object1 object2)) | 88 (defgeneric interval< (object1 object2)) |
79 (defgeneric interval>= (object1 object2)) | |
80 (defgeneric interval<= (object1 object2)) | |
81 (defgeneric interval= (object1 object2)) | 89 (defgeneric interval= (object1 object2)) |
82 (defgeneric interval/= (object1 object2)) | 90 (defgeneric interval>= (object1 object2) |
91 (:method (o1 o2) (or (interval> o1 o2) (interval= o1 o2)))) | |
92 (defgeneric interval<= (object1 object2) | |
93 (:method (o1 o2) (or (interval< o1 o2) (interval= o1 o2)))) | |
94 (defgeneric interval/= (object1 object2) | |
95 (:method (o1 o2) (not (interval= o1 o2)))) | |
83 | 96 |
84 ;;; Allen's (1984) interval relations | 97 ;;; Allen's (1984) interval relations |
85 ;;; . equals already defined as INTERVAL= above | 98 ;;; . equals already defined as INTERVAL= above |
86 ;;; . can all be defined in terms of MEETS | 99 ;;; . inverses ommitted for now (just use CL:NOT) |
100 ;;; . can all be defined in terms of MEETS (apparently) | |
87 | 101 |
88 (defgeneric meets (object1 object2)) | 102 (defgeneric meets (object1 object2)) |
89 (defgeneric before (object1 object2)) | 103 (defgeneric before (object1 object2)) |
90 (defgeneric overlaps (object1 object2)) | 104 (defgeneric overlaps (object1 object2)) |
91 (defgeneric during (object1 object2)) | 105 (defgeneric during (object1 object2)) |
92 (defgeneric starts (object1 object2)) | 106 (defgeneric starts (object1 object2)) |
93 (defgeneric ends (object1 object2)) | 107 (defgeneric ends (object1 object2)) |
94 | 108 |
95 ;;; and extensions ... | 109 ;;; and extensions thereof ... |
96 | 110 |
97 ;;; i subinterval j if i starts j or i during j or i ends j | 111 (defgeneric subinterval (object1 object2) |
98 (defgeneric subinterval (object1 object2)) | 112 (:method (o1 o2) (or (starts o1 o2) (during o1 o2) (ends o1 o2)))) |
99 ;;; i disjoint j if i before j or i meets j or j meets i or j before i | 113 |
100 (defgeneric disjoint (object1 object2)) | 114 (defgeneric disjoint (object1 object2) |
115 (:method (o1 o2) | |
116 (or (before o1 o2) (meets o1 o2) (meets o2 o1) (before o2 o1)))) | |
101 | 117 |
102 | 118 |
103 ;;; Time Signature | 119 ;;; Time Signature |
104 ;;; Tempo | 120 ;;; Tempo |
105 ;;; Tonality (Key Signature / Mode) | 121 ;;; Tonality (Key Signature / Mode) |