--- /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'
+! !