Eliot Miranda uploaded a new version of Collections to project The Trunk:
http://source.squeak.org/trunk/Collections-eem.913.mcz ==================== Summary ==================== Name: Collections-eem.913 Author: eem Time: 1 October 2020, 4:19:52.930593 pm UUID: fb7fd4f9-a89f-4a71-8807-66b7d9861f06 Ancestors: Collections-eem.912 Move arrayType to the instance side where it matches associationClass, and where it is more convenient for everything except arguably OrderedCollection. Have OrderedCollection compensate very simply. =============== Diff against Collections-eem.912 =============== Item was removed: - ----- Method: FloatCollection class>>arrayType (in category 'private') ----- - arrayType - ^ Float32Array! Item was added: + ----- Method: FloatCollection>>arrayType (in category 'private') ----- + arrayType + ^ Float32Array! Item was removed: - ----- Method: HashedCollection class>>arrayType (in category 'private') ----- - arrayType - ^ Array! Item was added: + ----- Method: HashedCollection>>arrayType (in category 'private') ----- + arrayType + ^ Array! Item was changed: ----- Method: HashedCollection>>growTo: (in category 'private') ----- growTo: anInteger "Grow the elements array and reinsert the old elements" | oldElements | oldElements := array. + array := self arrayType new: anInteger. - array := self class arrayType new: anInteger. self noCheckNoGrowFillFrom: oldElements! Item was changed: ----- Method: HashedCollection>>initialize: (in category 'private') ----- initialize: n "Initialize array to an array size of n" + array := self arrayType new: n. - array := self class arrayType new: n. tally := 0! Item was removed: - ----- Method: NonPointersOrderedCollection class>>arrayType (in category 'private') ----- - arrayType - "This method must return a non-pointers array class." - - self subclassResponsibility! Item was added: + ----- Method: NonPointersOrderedCollection>>arrayType (in category 'private') ----- + arrayType + "This method must return a non-pointers array class." + + self subclassResponsibility! Item was removed: - ----- Method: OrderedCollection class>>arrayType (in category 'private') ----- - arrayType - ^ Array! Item was changed: ----- Method: OrderedCollection class>>new: (in category 'instance creation') ----- new: anInteger + | instance | + ^(instance := self basicNew) setCollection: (instance arrayType new: anInteger)! - ^ self basicNew setCollection: (self arrayType new: anInteger)! Item was changed: ----- Method: OrderedCollection class>>new:withAll: (in category 'instance creation') ----- new: anInteger withAll: anObject + | instance | + ^(instance := self basicNew) setContents: (instance arrayType new: anInteger withAll: anObject)! - ^ self basicNew setContents: (self arrayType new: anInteger withAll: anObject)! Item was added: + ----- Method: OrderedCollection>>arrayType (in category 'private') ----- + arrayType + ^ Array! Item was changed: ----- Method: OrderedCollection>>growAtFirst (in category 'private') ----- growAtFirst "Add new empty slots to the front of array, while keeping the empty slots at the end." | newArray newFirstIndex newLastIndex | + newArray := self arrayType new: (array size * 2 max: 1). - newArray := self class arrayType new: (array size * 2 max: 1). newFirstIndex := newArray size - array size + firstIndex. newLastIndex := newFirstIndex + lastIndex - firstIndex. newArray replaceFrom: newFirstIndex to: newLastIndex with: array startingAt: firstIndex. array := newArray. firstIndex := newFirstIndex. lastIndex := newLastIndex! Item was changed: ----- Method: OrderedCollection>>growAtLast (in category 'private') ----- growAtLast "Add new empty slots to the end of array, while keeping the empty slots at the front." | newArray | + newArray := self arrayType new: (array size * 2 max: 1). - newArray := self class arrayType new: (array size * 2 max: 1). newArray replaceFrom: firstIndex to: lastIndex with: array startingAt: firstIndex. array := newArray! Item was changed: ----- Method: OrderedCollection>>removeAll (in category 'removing') ----- removeAll "remove all the elements from this collection. Keep same amount of storage" + self setCollection: (self arrayType new: array size)! - self setCollection: (self class arrayType new: array size)! Item was changed: ----- Method: OrderedDictionary>>growTo: (in category 'private') ----- growTo: anInteger | oldOrder | super growTo: anInteger. oldOrder := order. "Grow only to 75%. See #atNewIndex:put: in HashedCollection." + order := self arrayType new: anInteger + 1 * 3 // 4. - order := self class arrayType new: anInteger + 1 * 3 // 4. order replaceFrom: 1 to: tally with: oldOrder startingAt: 1! Item was changed: ----- Method: OrderedDictionary>>initialize: (in category 'private') ----- initialize: n super initialize: n. + order := self arrayType new: n + 1 * 3 // 4! - order := self class arrayType new: n + 1 * 3 // 4! Item was changed: ----- Method: OrderedDictionary>>postCopyFrom:to: (in category 'copying') ----- postCopyFrom: startIndex to: endIndex "Adapted from SequenceableCollection and OrderedCollection." | oldOrder | oldOrder := order. + array := self arrayType - array := self class arrayType new: (self class goodPrimeAtLeast: endIndex - startIndex + 1 * 4 // 3). "fill 75% to 100%" + order := self arrayType - order := self class arrayType new: array size + 1 * 3 // 4. "remove 25%" startIndex to: endIndex do: [:index | | element | element := (oldOrder at: index) copy. order at: index - startIndex + 1 put: element. array at: (self scanFor: element key) put: element]. + tally := endIndex - startIndex + 1! - tally := endIndex - startIndex + 1.! Item was added: + ----- Method: ReadStream>>contentsFrom:to: (in category 'accessing') ----- + contentsFrom: startIndex to: stopIndex + "Answer with a copy of my collection from startIndex to stopIndex." + + ^collection copyFrom: (initialPositionOrNil ifNil: [1]) + startIndex - 1 to: ((initialPositionOrNil ifNil: [1]) + stopIndex - 1 min: readLimit)! Item was removed: - ----- Method: WeakIdentityDictionary class>>arrayType (in category 'private') ----- - arrayType - ^ WeakArray! Item was added: + ----- Method: WeakIdentityDictionary>>arrayType (in category 'private') ----- + arrayType + ^ WeakArray! Item was changed: ----- Method: WeakIdentityDictionary>>growTo: (in category 'private') ----- growTo: anInteger "Grow the elements array and reinsert the old elements" | oldElements | oldElements := array. + array := self arrayType new: anInteger withAll: vacuum. - array := self class arrayType new: anInteger withAll: vacuum. self noCheckNoGrowFillFrom: oldElements! Item was changed: ----- Method: WeakIdentityDictionary>>initialize: (in category 'private') ----- initialize: n vacuum := Object new. + array := self arrayType new: n withAll: vacuum. - array := self class arrayType new: n withAll: vacuum. tally := 0! Item was removed: - ----- Method: WeakOrderedCollection class>>arrayType (in category 'private') ----- - arrayType - ^ WeakArray! Item was added: + ----- Method: WeakOrderedCollection>>arrayType (in category 'private') ----- + arrayType + ^ WeakArray! Item was removed: - ----- Method: WeakSet class>>arrayType (in category 'private') ----- - arrayType - - ^WeakArray! Item was added: + ----- Method: WeakSet>>arrayType (in category 'private') ----- + arrayType + + ^WeakArray! Item was changed: ----- Method: WeakSet>>growTo: (in category 'private') ----- growTo: anInteger "Grow the elements array and reinsert the old elements" | oldElements | oldElements := array. + array := self arrayType new: anInteger withAll: flag. - array := self class arrayType new: anInteger withAll: flag. self noCheckNoGrowFillFrom: oldElements! |
Free forum by Nabble | Edit this page |