'From Squeak2.8 of 23 June 2000 [latest update: #2342] on 7 July 2000 at 11:46:44 am'! "Change Set: JMMExternalTableByIndex Date: 3 July 2000 Author: johnmci@smalltalkconsulting.com A prereq for correspondents. I broke out these changes to the base system for correspondents1b4 so you can understand the impact. This change might get into the base system. For documentation see the original author's web pages at http://netjam.org/self/projects/smalltalk "! !ExternalSemaphoreTable class methodsFor: 'accessing' stamp: 'JMM 6/23/2000 23:14'! externalObjectAt: anIndex ^ProtectTable critical: [self safelyGetObjectAt: anIndex].! ! !ExternalSemaphoreTable class methodsFor: 'accessing' stamp: 'JMM 6/23/2000 23:15'! safelyGetObjectAt: anIndex | objects | objects _ Smalltalk specialObjectsArray at: 39. ^[objects at: anIndex] on: Error do: [:ex | ex return: nil].! ! !ExternalSemaphoreTable class methodsFor: 'accessing' stamp: 'JMM 6/23/2000 23:13'! safelyUnregisterExternalObjectAt: anIndex "Unregister the given object in the external objects array. Do nothing if it isn't registered." | objects | objects _ Smalltalk specialObjectsArray at: 39. [objects at: anIndex put: nil] on: Error do: [:ex | ex return].! ! !ExternalSemaphoreTable class methodsFor: 'accessing' stamp: 'JMM 6/23/2000 23:05'! unregisterExternalObjectAt: anIndex ProtectTable critical: [self safelyUnregisterExternalObjectAt: anIndex] ! ! !SystemDictionary methodsFor: 'special objects' stamp: 'JMM 6/23/2000 23:03'! externalObjectAt: index "Answer the external object at index." ^ExternalSemaphoreTable externalObjectAt: index ! ! !SystemDictionary methodsFor: 'special objects' stamp: 'JMM 6/23/2000 23:04'! unregisterExternalObjectAt: index "Unregister the object at index in the external objects array." ExternalSemaphoreTable unregisterExternalObjectAt: index! !