|
Class: FourByteString
Object
|
+--Collection
|
+--SequenceableCollection
|
+--ArrayedCollection
|
+--UninterpretedBytes
|
+--CharacterArray
|
+--FourByteString
|
+--Unicode32String
- Package:
- stx:libbasic2
- Category:
- Collections-Text
- Version:
- rev:
1.15
date: 2019/03/27 13:14:36
- user: cg
- file: FourByteString.st directory: libbasic2
- module: stx stc-classLibrary: libbasic2
- Author:
- Claus Gittinger
FourByteStrings are like strings, but storing 32bits per character.
The integration of them into the system is not completed ....
Text
TwoByteString
UnicodeEncodedString
StringCollection
initialization
-
initialize
-
initialize the class - private
usage example(s):
FourByteString initialize
|
instance creation
-
basicNew: anInteger
-
return a new empty string with anInteger characters
-
uninitializedNew: anInteger
-
return a new empty string with anInteger characters
usage example(s):
accessing
-
basicAt: index
-
return the character at position index, an Integer
- reimplemented here since we return 32-bit characters
-
basicAt: index put: aCharacter
-
store the argument, aCharacter at position index, an Integer.
Returns aCharacter (sigh).
- reimplemented here since we store 32-bit characters
filling and replacing
-
from: start to: stop put: aCharacter
-
fill part of the receiver with aCharacter.
- reimplemented here for speed
usage example(s):
(Unicode16String new:10) from:1 to:10 put:$a
(Unicode16String new:20) from:10 to:20 put:$b
(Unicode16String new:20) from:1 to:10 put:$c
(Unicode16String new:20) from:1 to:10 put:$c
(Unicode16String new:100) from:2 to:99 put:$c
(Unicode16String new:10) from:0 to:9 put:$a
(Unicode16String new:10) from:1 to:11 put:$a
|
-
replaceFrom: start to: stop with: aString startingAt: repStart
-
replace the characters starting at index start, anInteger and ending
at stop, anInteger with characters from aString starting at repStart.
Return the receiver.
- reimplemented here for speed
usage example(s):
'hello world' asUnicode32String replaceFrom:1 to:5 with:'123456' startingAt:2
'hello world' asUnicode32String replaceFrom:1 to:5 with:'123456' asUnicode16String startingAt:2
'hello world' asUnicode32String replaceFrom:1 to:5 with:'123456' asUnicode32String startingAt:2
'hello world' asUnicode32String replaceFrom:1 to:0 with:'123456' startingAt:2
'hello' asUnicode32String replaceFrom:1 to:6 with:'123456' startingAt:2
'hello world' asUnicode32String replaceFrom:1 to:1 with:'123456' startingAt:2
|
queries
-
bitsPerCharacter
-
return the number of bits each character has.
Here, 32 is returned (storing quad byte characters).
-
bytesPerCharacter
-
return the number of bytes each character has.
Here, 4 is returned (storing quad byte characters).
-
isWideString
-
true if I require more than one byte per character
-
occurrencesOf: aCharacter
-
count the occurrences of the argument, aCharacter in myself
- reimplemented here for speed
usage example(s):
'hello world' asUnicode32String occurrencesOf:$a
'hello world' asUnicode32String occurrencesOf:$w
'hello world' asUnicode32String occurrencesOf:$l
'hello world' asUnicode32String occurrencesOf:$x
'hello world' asUnicode32String occurrencesOf:1
Time millisecondsToRun:[
|s|
s := 'abcdefghijklmn' asUnicode32String.
1000000 timesRepeat:[ s occurrencesOf:$x ]
]. 60 60 60 70 (untuned: 690 760 670)
|
testing
-
isSingleByteCollection
-
return true, if the receiver has access methods for bytes;
i.e. #at: and #at:put: accesses a byte and are equivalent to #byteAt: and byteAt:put:
and #replaceFrom:to: is equivalent to #replaceBytesFrom:to:.
false is returned here since at: returns 4-byte characters and not bytes
- the method is redefined from UninterpretedBytes.
|