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)