1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
Magnitude : Object {
// Magnitudes are objects which represent a linear measure
== { arg aMagnitude; ^this.subclassResponsibility(thisMethod) }
!= { arg aMagnitude; ^(this == aMagnitude).not }
hash { ^this.subclassResponsibility(thisMethod) }
// all of the other compare operations are built upon <
< { arg aMagnitude; ^this.subclassResponsibility(thisMethod) }
> { arg aMagnitude; ^aMagnitude < this }
<= { arg aMagnitude; ^(aMagnitude < this).not }
>= { arg aMagnitude; ^(this < aMagnitude).not }
exclusivelyBetween { arg lo, hi; ^(lo < this) and: { this < hi } }
inclusivelyBetween { arg lo, hi; ^(lo <= this) and: { this <= hi } }
min { arg aMagnitude; if (this < aMagnitude, {^this}, {^aMagnitude}) }
max { arg aMagnitude; if (this < aMagnitude, {^aMagnitude}, {^this}) }
clip { arg lo, hi;
// clip the receiver to the range lo, hi
^if (this < lo, {^lo}, { if (hi < this, {^hi}, {^this}) })
}
}
|