Hi guys. Some time ago Henry spot to us a small improvement for WriteStream
>> nextPutAll: that we are using in Fuel, but I think it can be general.
Henry comment was exactly:
*Also: For variableBytes classes, if you rewrite:
WriteStream
nextPutAll: aCollection
| newEnd |
collection class instSpec == aCollection class instSpec ifFalse:
[^ super nextPutAll: aCollection ].
newEnd := position + aCollection size.
newEnd > writeLimit ifTrue:
[self growTo: newEnd + 10].
collection replaceFrom: position+1 to: newEnd with:
aCollectionstartingAt: 1.
position := newEnd.
^ aCollection
You can now pass all variableByte classes (Like ByteString) directly to a
stream with a ByteArray collection, and the replaceFrom:to:with:*
*startingAt: primitive will work correctly, just like the file primitive
does
This means you don't need special Serializers for these either, using
f.ex. clunky nextStringPutAll: methods with manual asByteArray conversions.*
So...if you agree, I can commit the patch.
Let me know.
--
Mariano
http://marianopeck.wordpress.com