Magnitude.st
changeset 1 a27a279701f8
child 3 24d81bf47225
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Magnitude.st	Fri Jul 16 11:39:45 1993 +0200
@@ -0,0 +1,102 @@
+"
+ COPYRIGHT (c) 1988-93 by Claus Gittinger
+              All Rights Reserved
+
+ This software is furnished under a license and may be used
+ only in accordance with the terms of that license and with the
+ inclusion of the above copyright notice.   This software may not
+ be provided or otherwise made available to, or used by, any
+ other person.  No title to or ownership of the software is
+ hereby transferred.
+"
+
+Object subclass:#Magnitude
+       instanceVariableNames:''
+       classVariableNames:''
+       poolDictionaries:''
+       category:'Magnitude-General'
+!
+
+Magnitude comment:'
+
+COPYRIGHT (c) 1988-93 by Claus Gittinger
+              All Rights Reserved
+
+This is an abstract class definining common methods for
+Objects which can be compared by a kind of greater realation.
+
+%W% %E%
+'!
+
+!Magnitude methodsFor:'comparing'!
+
+> aMagnitude
+    "Compare the receiver with the argument and return true if the
+     receiver is greater than the argument. Otherwise return false."
+
+    ^ self subclassResponsibility
+!
+
+= aMagnitude
+    "Compare the receiver with the argument and return true if the
+     receiver is equal to the argument. Otherwise return false."
+
+    ^ self subclassResponsibility
+!
+
+<= aMagnitude
+    "Compare the receiver with the argument and return true if the
+     receiver is less than or equal to the argument. Otherwise return false."
+
+    ^ (self > aMagnitude) not
+!
+
+< aMagnitude
+    "Compare the receiver with the argument and return true if the
+     receiver is less than the argument. Otherwise return false."
+
+    ^ (aMagnitude > self)
+!
+
+>= aMagnitude
+    "Compare the receiver with the argument and return true if the
+     receiver is greater than or equal to the argument.
+     Otherwise return false."
+
+    ^ (aMagnitude > self) not
+! !
+
+!Magnitude methodsFor:'testing'!
+
+between:min and:max
+    "return whether the receiver is less than or equal to the argument max
+     and greater than or equal to the argument min."
+
+    (self < min) ifTrue:[^ false].
+    (self > max) ifTrue:[^ false].
+    ^ true
+!
+
+in:anInterval
+    "return whether the receiver is within the interval bounds"
+
+    (self < anInterval start) ifTrue:[^ false].
+    (self > anInterval stop) ifTrue:[^ false].
+    ^ true
+! !
+
+!Magnitude methodsFor:'misc'!
+
+min:aMagnitude
+    "return the receiver or the argument, whichever has lesser magnitude"
+
+    (self < aMagnitude) ifTrue:[^ self].
+    ^ aMagnitude
+!
+
+max:aMagnitude
+    "return the receiver or the argument, whichever has greater magnitude"
+
+    (self > aMagnitude) ifTrue:[^ self].
+    ^ aMagnitude
+! !