[KCP] another question
Stephane Ducasse
ducasse at iam.unibe.ch
Fri Jun 27 21:52:09 UTC 2003
SystemDictionary>>swapBytesIn: aNonPointerThing from: start to: stop
"Perform a bigEndian/littleEndian byte reversal of my words.
We only intend this for non-pointer arrays. Do nothing if I contain
pointers."
| hack blt |
"The implementation is a hack, but fast for large ranges"
hack _ Form new hackBits: aNonPointerThing.
blt _ (BitBlt toForm: hack) sourceForm: hack.
blt combinationRule: Form reverse. "XOR"
blt sourceY: start-1; destY: start-1; height: stop-start+1; width: 1.
blt sourceX: 0; destX: 3; copyBits. "Exchange bytes 0 and 3"
blt sourceX: 3; destX: 0; copyBits.
blt sourceX: 0; destX: 3; copyBits.
blt sourceX: 1; destX: 2; copyBits. "Exchange bytes 1 and 2"
blt sourceX: 2; destX: 1; copyBits.
blt sourceX: 1; destX: 2; copyBits.
Should not be there. I was thinking that it could be moved in the
SmalltalkImage class.
Then I looked and saw that there is only one sender:
StandardFileStream>>nextWordsPutAll: aCollection
"Write the argument a word-like object in big endian format on the
receiver.
May be used to write other than plain word-like objects (such as
ColorArray)."
| reversed |
aCollection class isPointers | aCollection class isWords not
ifTrue: [^self error: aCollection class name,' is not word-like'].
Smalltalk isLittleEndian ifTrue:[
reversed _ aCollection clone.
Smalltalk swapBytesIn: reversed from: 1 to: aCollection basicSize.
self nextPutAll: reversed.
] ifFalse:[
self nextPutAll: aCollection.
].
^aCollection
So I was thinking that moving that in the private protocol of
StandardFileStream
Any idea suggestion
stef
More information about the Squeak-dev
mailing list
|