# HG changeset patch # User Claus Gittinger # Date 852764782 -3600 # Node ID 3a849047dc901ce5d86cfd5ba852821f844b6644 # Parent 054598f8f50e4e0c75f20636a0a3db3345aefcd9 *** empty log message *** diff -r 054598f8f50e -r 3a849047dc90 Make.proto --- a/Make.proto Thu Jan 09 00:03:53 1997 +0100 +++ b/Make.proto Thu Jan 09 00:06:22 1997 +0100 @@ -1,4 +1,4 @@ -# $Header: /cvs/stx/stx/libbasic/Make.proto,v 1.85 1996-11-11 21:34:59 stefan Exp $ +# $Header: /cvs/stx/stx/libbasic/Make.proto,v 1.86 1997-01-08 23:06:17 cg Exp $ # # -------------- no need to change anything below ---------- @@ -65,6 +65,7 @@ Dict.$(O) \ IdDict.$(O) \ WeakIdDict.$(O)\ + WeakDepDict.$(O)\ WeakVDict.$(O) \ IdSet.$(O) \ WeakIdSet.$(O) \ @@ -314,6 +315,7 @@ Unix.o: Unix.st $(STCHDR) ../include/Object.H WeakArr.o: WeakArr.st $(STCHDR) ../include/Array.H ../include/ArrColl.H ../include/SeqColl.H ../include/Coll.H ../include/Object.H WeakIdDict.o: WeakIdDict.st $(STCHDR) ../include/IdDict.H ../include/Dict.H ../include/Set.H ../include/Coll.H ../include/Object.H +WeakDepDict.o: WeakDepDict.st $(STCHDR) ../include/WeakIdDict.H ../include/IdDict.H ../include/Dict.H ../include/Set.H ../include/Coll.H ../include/Object.H WeakVDict.o: WeakVDict.st $(STCHDR) ../include/Dict.H ../include/Set.H ../include/Coll.H ../include/Object.H WeakIdSet.o: WeakIdSet.st $(STCHDR) ../include/IdSet.H ../include/Set.H ../include/Coll.H ../include/Object.H WriteStr.o: WriteStr.st $(STCHDR) ../include/PosStream.H ../include/PeekStr.H ../include/Stream.H ../include/Object.H diff -r 054598f8f50e -r 3a849047dc90 WeakDepDic.st --- a/WeakDepDic.st Thu Jan 09 00:03:53 1997 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,117 +0,0 @@ -" - COPYRIGHT (c) 1997 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. -" - - -WeakIdentityDictionary subclass:#WeakDependencyDictionary - instanceVariableNames:'' - classVariableNames:'' - poolDictionaries:'' - category:'Collections-Unordered' -! - -!WeakDependencyDictionary class methodsFor:'documentation'! - -copyright -" - COPYRIGHT (c) 1997 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. -" - -! - -documentation -" - A specialized WeakIdentityDictionary, which 'knowns' how - to get rid of obsolete entries. This is only used with the - dependency mechanism. - - [author:] - Claus Gittinger - - [See also:] - WeakArray WeakIdentityDictionary WeakValueDictionary WeakIdentitySet -" -! ! - -!WeakDependencyDictionary methodsFor:'special dependency support'! - -removeEmptyDependencyValues - "special entry for dependency management: - remove any empty (due to finalization) value WeakArray elements." - - |index t wasBlocked val| - - "/ careful: this is sent by the finalizer at low prio. - "/ be prepared for the receiver to change while we walk over - "/ the value array here ... - - index := 1. - [index <= keyArray size] whileTrue:[ - "/ get the size again - it could have changed - - wasBlocked := OperatingSystem blockInterrupts. - index <= keyArray size ifTrue:[ - val := valueArray basicAt:index. - val notNil ifTrue:[ - "/ is it an empty WeakArray ? - - (val isMemberOf:WeakArray) ifTrue:[ - t := val findFirst:[:el | el notNil and:[el ~~ 0]]. - t == 0 ifTrue:[ - "/ yes - nil it - valueArray basicAt:index put:nil. - (keyArray basicAt:index) notNil ifTrue:[ - keyArray basicAt:index put:DeletedEntry. - tally := tally - 1. - ] - ] - ] ifFalse:[ - "/ is it an empty WeakIdSet ? - - (val isMemberOf:WeakIdentitySet) ifTrue:[ - val size == 0 ifTrue:[ - "/ yes - nil it - valueArray basicAt:index put:nil. - (keyArray basicAt:index) notNil ifTrue:[ - keyArray basicAt:index put:DeletedEntry. - tally := tally - 1. - ] - ]. - ] - ] - ] - ]. - - wasBlocked ifTrue:[OperatingSystem unblockInterrupts]. - index := index + 1. - ]. - - " - Dependencies removeEmptyDependencyValues - " - - "Modified: 8.1.1997 / 23:57:56 / cg" - "Created: 9.1.1997 / 00:00:28 / cg" -! ! - -!WeakDependencyDictionary class methodsFor:'documentation'! - -version - ^ '$Header: /cvs/stx/stx/libbasic/Attic/WeakDepDic.st,v 1.1 1997-01-08 23:03:53 cg Exp $' -! ! diff -r 054598f8f50e -r 3a849047dc90 WeakDepDict.st --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WeakDepDict.st Thu Jan 09 00:06:22 1997 +0100 @@ -0,0 +1,117 @@ +" + COPYRIGHT (c) 1997 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. +" + + +WeakIdentityDictionary subclass:#WeakDependencyDictionary + instanceVariableNames:'' + classVariableNames:'' + poolDictionaries:'' + category:'Collections-Unordered' +! + +!WeakDependencyDictionary class methodsFor:'documentation'! + +copyright +" + COPYRIGHT (c) 1997 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. +" + +! + +documentation +" + A specialized WeakIdentityDictionary, which 'knowns' how + to get rid of obsolete entries. This is only used with the + dependency mechanism. + + [author:] + Claus Gittinger + + [See also:] + WeakArray WeakIdentityDictionary WeakValueDictionary WeakIdentitySet +" +! ! + +!WeakDependencyDictionary methodsFor:'special dependency support'! + +removeEmptyDependencyValues + "special entry for dependency management: + remove any empty (due to finalization) value WeakArray elements." + + |index t wasBlocked val| + + "/ careful: this is sent by the finalizer at low prio. + "/ be prepared for the receiver to change while we walk over + "/ the value array here ... + + index := 1. + [index <= keyArray size] whileTrue:[ + "/ get the size again - it could have changed + + wasBlocked := OperatingSystem blockInterrupts. + index <= keyArray size ifTrue:[ + val := valueArray basicAt:index. + val notNil ifTrue:[ + "/ is it an empty WeakArray ? + + (val isMemberOf:WeakArray) ifTrue:[ + t := val findFirst:[:el | el notNil and:[el ~~ 0]]. + t == 0 ifTrue:[ + "/ yes - nil it + valueArray basicAt:index put:nil. + (keyArray basicAt:index) notNil ifTrue:[ + keyArray basicAt:index put:DeletedEntry. + tally := tally - 1. + ] + ] + ] ifFalse:[ + "/ is it an empty WeakIdSet ? + + (val isMemberOf:WeakIdentitySet) ifTrue:[ + val size == 0 ifTrue:[ + "/ yes - nil it + valueArray basicAt:index put:nil. + (keyArray basicAt:index) notNil ifTrue:[ + keyArray basicAt:index put:DeletedEntry. + tally := tally - 1. + ] + ]. + ] + ] + ] + ]. + + wasBlocked ifTrue:[OperatingSystem unblockInterrupts]. + index := index + 1. + ]. + + " + Dependencies removeEmptyDependencyValues + " + + "Modified: 8.1.1997 / 23:57:56 / cg" + "Created: 9.1.1997 / 00:00:28 / cg" +! ! + +!WeakDependencyDictionary class methodsFor:'documentation'! + +version + ^ '$Header: /cvs/stx/stx/libbasic/Attic/WeakDepDict.st,v 1.1 1997-01-08 23:06:22 cg Exp $' +! ! diff -r 054598f8f50e -r 3a849047dc90 WeakDependencyDictionary.st --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WeakDependencyDictionary.st Thu Jan 09 00:06:22 1997 +0100 @@ -0,0 +1,117 @@ +" + COPYRIGHT (c) 1997 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. +" + + +WeakIdentityDictionary subclass:#WeakDependencyDictionary + instanceVariableNames:'' + classVariableNames:'' + poolDictionaries:'' + category:'Collections-Unordered' +! + +!WeakDependencyDictionary class methodsFor:'documentation'! + +copyright +" + COPYRIGHT (c) 1997 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. +" + +! + +documentation +" + A specialized WeakIdentityDictionary, which 'knowns' how + to get rid of obsolete entries. This is only used with the + dependency mechanism. + + [author:] + Claus Gittinger + + [See also:] + WeakArray WeakIdentityDictionary WeakValueDictionary WeakIdentitySet +" +! ! + +!WeakDependencyDictionary methodsFor:'special dependency support'! + +removeEmptyDependencyValues + "special entry for dependency management: + remove any empty (due to finalization) value WeakArray elements." + + |index t wasBlocked val| + + "/ careful: this is sent by the finalizer at low prio. + "/ be prepared for the receiver to change while we walk over + "/ the value array here ... + + index := 1. + [index <= keyArray size] whileTrue:[ + "/ get the size again - it could have changed + + wasBlocked := OperatingSystem blockInterrupts. + index <= keyArray size ifTrue:[ + val := valueArray basicAt:index. + val notNil ifTrue:[ + "/ is it an empty WeakArray ? + + (val isMemberOf:WeakArray) ifTrue:[ + t := val findFirst:[:el | el notNil and:[el ~~ 0]]. + t == 0 ifTrue:[ + "/ yes - nil it + valueArray basicAt:index put:nil. + (keyArray basicAt:index) notNil ifTrue:[ + keyArray basicAt:index put:DeletedEntry. + tally := tally - 1. + ] + ] + ] ifFalse:[ + "/ is it an empty WeakIdSet ? + + (val isMemberOf:WeakIdentitySet) ifTrue:[ + val size == 0 ifTrue:[ + "/ yes - nil it + valueArray basicAt:index put:nil. + (keyArray basicAt:index) notNil ifTrue:[ + keyArray basicAt:index put:DeletedEntry. + tally := tally - 1. + ] + ]. + ] + ] + ] + ]. + + wasBlocked ifTrue:[OperatingSystem unblockInterrupts]. + index := index + 1. + ]. + + " + Dependencies removeEmptyDependencyValues + " + + "Modified: 8.1.1997 / 23:57:56 / cg" + "Created: 9.1.1997 / 00:00:28 / cg" +! ! + +!WeakDependencyDictionary class methodsFor:'documentation'! + +version + ^ '$Header: /cvs/stx/stx/libbasic/WeakDependencyDictionary.st,v 1.1 1997-01-08 23:06:22 cg Exp $' +! !