UndefObj.st
changeset 1 a27a279701f8
child 2 6526dde5f3ac
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/UndefObj.st	Fri Jul 16 11:39:45 1993 +0200
@@ -0,0 +1,142 @@
+"
+ COPYRIGHT (c) 1988-92 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:#UndefinedObject
+       instanceVariableNames:''
+       classVariableNames:''
+       poolDictionaries:''
+       category:'Kernel-Objects'
+!
+
+UndefinedObject comment:'
+
+COPYRIGHT (c) 1988-92 by Claus Gittinger
+	      All Rights Reserved
+
+there is only one instance of this class: nil
+
+%W% %E%
+'!
+
+!UndefinedObject class methodsFor:'instance creation'!
+
+basicNew
+    "catch new - there MUST be only one nil in the system"
+
+    ^ nil
+!
+
+basicNew:size
+    "catch new - there MUST be only one nil in the system"
+
+    ^ nil
+! !
+
+!UndefinedObject methodsFor:'error catching'!
+
+basicAt:index
+    "catch array access - its illegal
+     defined here since basicAt: in Object ommits the nil-check"
+
+    ^ self notIndexed
+!
+
+at:index
+    "catch array access - its illegal
+     defined here since at: in Object ommits the nil-check"
+
+    ^ self notIndexed
+!
+
+basicAt:index put:anObject
+    "catch array access - its illegal
+     defined here since basicAt:put: in Object ommits the nil-check"
+
+    ^ self notIndexed
+!
+
+at:index put:anObject
+    "catch array access - its illegal
+     defined here since at:put: in Object ommits the nil-check"
+
+    ^ self notIndexed
+! !
+
+!UndefinedObject methodsFor:'testing'!
+
+isNil
+    "return true if I am nil - since I am, return true"
+
+    ^ true
+!
+
+notNil
+    "return true if I am not nil - since I am nil, return false"
+
+    ^ false
+!
+
+size
+    "return the number of indexed instvars
+     defined here since size in Object ommits the nil-check"
+ 
+    ^ 0
+!
+
+basicSize
+    "return the number of indexed instvars
+     defined here since size in Object ommits the nil-check"
+
+    ^ 0
+!
+
+hash
+    "return an integer useful as a hash key"
+
+    ^ 0
+!
+
+identityHash
+    "return an integer useful as a hash key"
+
+    ^ 0
+! !
+
+!UndefinedObject methodsFor:'copying'!
+
+shallowCopy
+    "return a shallow copy of myself
+     - since there is only one nil in the system return self"
+
+    ^ self
+!
+
+deepCopy
+    "return a deep copy of myself
+     - since there is only one nil in the system return self"
+
+    ^ self
+! !
+
+!UndefinedObject methodsFor:'printing & storing'!
+
+printString
+    "return a string for printing myself"
+
+    ^ 'nil'
+!
+
+storeString
+    "return a string for storing myself"
+
+    ^ 'nil'
+! !