[squeak-dev] The Trunk: Multilingual-ul.149.mcz

commits at source.squeak.org commits at source.squeak.org
Sun May 22 17:24:27 UTC 2011


Levente Uzonyi uploaded a new version of Multilingual to project The Trunk:
http://source.squeak.org/trunk/Multilingual-ul.149.mcz

==================== Summary ====================

Name: Multilingual-ul.149
Author: ul
Time: 22 May 2011, 2:05:19.387 pm
UUID: 5dc26283-2342-8a46-894f-2de166468c16
Ancestors: Multilingual-ul.148

- assume that UTF16TextConverter's instance variables are correctly initialized. Migration code is in the preamble.
- other minor refactorings of UTF16TextConverter

=============== Diff against Multilingual-ul.148 ===============

Item was changed:
+ (PackageInfo named: 'Multilingual') preamble: '"Ensure that the instance variables of UTF16TextConverters are initialized."
+ UTF16TextConverter allInstancesDo: [ :converter |
+ 	#(useLittleEndian useByteOrderMark byteOrderMarkDone) do: [ :instVarName |
+ 		(converter instVarNamed: instVarName) ifNil: [
+ 			converter instVarNamed: instVarName put: false ] ] ]'!
- (PackageInfo named: 'Multilingual') preamble: '"Initialize the value of wantsLineEndConversion in all MultiByteFileStreams"
- MultiByteFileStream allSubInstancesDo: [ :each |
- 	(each instVarNamed: #wantsLineEndConversion) ifNil: [
- 		each instVarNamed: #wantsLineEndConversion put: false ] ]'!

Item was changed:
  ----- Method: UTF16TextConverter>>charFromStream:withFirst: (in category 'private') -----
  charFromStream: aStream withFirst: firstValue
  
+ 	| character1 character2 n secondValue |
+ 	(16rD800 <= firstValue and: [firstValue <= 16rDBFF]) ifFalse: [
+ 		^Unicode value: firstValue ].
+ 	character1 := aStream basicNext ifNil: [ ^nil ].
+ 	character2 := aStream basicNext ifNil: [ ^nil ].
+ 	useLittleEndian ifTrue: [
+ 		| tmp |
+ 		tmp := character1.
+ 		character1 := character2.
+ 		character2 := tmp ].
+ 	secondValue := (character1 charCode bitShift: 8) + character2 charCode.
+ 	n := firstValue - 16rD800 * 16r400 + (secondValue - 16rDC00) + 16r10000.
+ 	^Unicode value: n!
- 	| character1 character2 tmp n secondValue |
- 	(16rD800 <= firstValue and: [firstValue <= 16rDBFF]) ifTrue: [
- 		character1 := aStream basicNext.
- 		character1 isNil ifTrue: [^ nil].
- 		character2 := aStream basicNext.
- 		character2 isNil ifTrue: [^ nil].
- 		self useLittleEndian ifTrue: [
- 			tmp := character1.
- 			character1 := character2.
- 			character2 := tmp
- 		].
- 		secondValue := (character1 charCode << 8) + (character2 charCode).
- 		n := (firstValue - 16rD800) * 16r400 + (secondValue - 16rDC00) + 16r10000.
- 		^ Unicode value: n
- 	].
- 
- 	^ Unicode value: firstValue
- !

Item was changed:
  ----- Method: UTF16TextConverter>>initialize (in category 'initialize-release') -----
  initialize
  
  	super initialize.
+ 	useLittleEndian := useByteOrderMark := byteOrderMarkDone := false!
- 	useLittleEndian := useByteOrderMark := byteOrderMarkDone := false.
- 	!

Item was changed:
  ----- Method: UTF16TextConverter>>next16BitValue:toStream: (in category 'private') -----
  next16BitValue: value toStream: aStream
  
  	| v1 v2 |
+ 	v1 := (value bitShift: -8) bitAnd: 16rFF.
- 	v1 := (value >> 8) bitAnd: 16rFF.
  	v2 := value bitAnd: 16rFF.
+ 	useLittleEndian
+ 		ifTrue: [
+ 			aStream 
+ 				basicNextPut: (Character value: v2);
+ 				basicNextPut: (Character value: v1) ]
+ 		ifFalse: [
+ 			aStream
+ 				basicNextPut: (Character value: v1);
+ 				basicNextPut: (Character value: v2) ].
- 
- 	self useLittleEndian ifTrue: [
- 		aStream basicNextPut: (Character value: v2).
- 		aStream basicNextPut: (Character value: v1).
- 	] ifFalse: [
- 		aStream basicNextPut: (Character value: v1).
- 		aStream basicNextPut: (Character value: v2).
- 	].
  !

Item was changed:
  ----- Method: UTF16TextConverter>>nextFromStream: (in category 'conversion') -----
  nextFromStream: aStream
  
  	| character1 character2 readBOM charValue |
  	aStream isBinary ifTrue: [^ aStream basicNext].
+ 	character1 := aStream basicNext ifNil: [ ^nil ].
+ 	character2 := aStream basicNext ifNil: [ ^nil ].
+ 	
- 	character1 := aStream basicNext.
- 	character1 isNil ifTrue: [^ nil].
- 	character2 := aStream basicNext.
- 	character2 isNil ifTrue: [^ nil].
- 
  	readBOM := false.
  	(character1 asciiValue = 16rFF and: [character2 asciiValue = 16rFE]) ifTrue: [
+ 		self
+ 			useByteOrderMark: true;
+ 			useLittleEndian: true.
+ 		readBOM := true ].
- 		self useByteOrderMark: true.
- 		self useLittleEndian: true.
- 		readBOM := true.
- 	].
  	(character1 asciiValue = 16rFE and: [character2 asciiValue = 16rFF]) ifTrue: [
+ 		self
+ 			useByteOrderMark: true;
+ 			useLittleEndian: false.
+ 		readBOM := true ].
- 		self useByteOrderMark: true.
- 		self useLittleEndian: false.
- 		readBOM := true.
- 	].
  
  	readBOM ifTrue: [
+ 		character1 := aStream basicNext ifNil: [ ^nil ].
+ 		character2 := aStream basicNext ifNil: [ ^nil ] ].
- 		character1 := aStream basicNext.
- 		character1 isNil ifTrue: [^ nil].
- 		character2 := aStream basicNext.
- 		character2 isNil ifTrue: [^ nil].
- 	].
  
+ 	useLittleEndian 
+ 		ifTrue: [ charValue := character2 charCode bitShift: 8 + character1 charCode ]
+ 		ifFalse: [ charValue := character1 charCode bitShift: 8 + character2 charCode ].
- 	self useLittleEndian ifTrue: [
- 		charValue := character2 charCode << 8 + character1 charCode.
- 	] ifFalse: [
- 		charValue := character1 charCode << 8 + character2 charCode.
- 	].
  
+ 	^ self charFromStream: aStream withFirst: charValue!
- 	^ self charFromStream: aStream withFirst: charValue.
- !

Item was changed:
  ----- Method: UTF16TextConverter>>nextPut:toStream: (in category 'conversion') -----
  nextPut: aCharacter toStream: aStream
  
  	| charCode |
  	aStream isBinary ifTrue: [ ^aCharacter storeBinaryOn: aStream ].
+ 	(useByteOrderMark and: [ byteOrderMarkDone not ]) ifTrue: [
- 	(useByteOrderMark == true and: [ byteOrderMarkDone isNil ]) ifTrue: [
  		self next16BitValue: 16rFEFF toStream: aStream.
  		byteOrderMarkDone := true ].
  	(charCode := aCharacter charCode) < 256
  		ifTrue: [
  			(latin1Encodings at: charCode + 1)
  				ifNil: [ self next16BitValue: charCode toStream: aStream ]
  				ifNotNil: [ :encodedString | aStream basicNextPutAll: encodedString ] ]
  		ifFalse: [
  			charCode <= 16rFFFF
  				ifTrue: [ self next16BitValue: charCode toStream: aStream ]
  				ifFalse: [
  					| low high |
  					charCode := charCode - 16r10000.
+ 					low := charCode \\ 16r400 + 16rDC00.
+ 					high := charCode // 16r400 + 16rD800.
- 					low := (charCode \\ 16r400) + 16rDC00.
- 					high := (charCode // 16r400) + 16rD800.
  					self
  						next16BitValue: high toStream: aStream;
  						next16BitValue: low toStream: aStream ] ].
  	^aCharacter!

Item was changed:
  ----- Method: UTF16TextConverter>>useByteOrderMark (in category 'accessing') -----
  useByteOrderMark
  
+ 	^useByteOrderMark
- 	^ useByteOrderMark ifNil: [^ false].
  !

Item was changed:
  ----- Method: UTF16TextConverter>>useLittleEndian (in category 'accessing') -----
  useLittleEndian
  
+ 	^useLittleEndian
- 	^ useLittleEndian ifNil: [false].
  !

Item was changed:
  ----- Method: UTF16TextConverter>>useLittleEndian: (in category 'accessing') -----
  useLittleEndian: aBoolean
+ 
+ 	aBoolean = useLittleEndian ifFalse: [ self swapLatin1EncodingByteOrder ].
- 	aBoolean = self useLittleEndian ifFalse: [self swapLatin1EncodingByteOrder].
  	useLittleEndian := aBoolean.
  !




More information about the Squeak-dev mailing list