TwoByteString.st
author claus
Thu, 02 Jun 1994 18:22:49 +0200
changeset 88 81dacba7a63a
parent 73 a6640cc96199
child 89 7be0b86ef80f
permissions -rw-r--r--
*** empty log message ***
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
     1
"
a27a279701f8 Initial revision
claus
parents:
diff changeset
     2
 COPYRIGHT (c) 1993 by Claus Gittinger
a27a279701f8 Initial revision
claus
parents:
diff changeset
     3
              All Rights Reserved
a27a279701f8 Initial revision
claus
parents:
diff changeset
     4
a27a279701f8 Initial revision
claus
parents:
diff changeset
     5
 This software is furnished under a license and may be used
a27a279701f8 Initial revision
claus
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
a27a279701f8 Initial revision
claus
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
a27a279701f8 Initial revision
claus
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
a27a279701f8 Initial revision
claus
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
a27a279701f8 Initial revision
claus
parents:
diff changeset
    10
 hereby transferred.
a27a279701f8 Initial revision
claus
parents:
diff changeset
    11
"
a27a279701f8 Initial revision
claus
parents:
diff changeset
    12
63
1f0cdefb013f *** empty log message ***
claus
parents: 33
diff changeset
    13
AbstractString subclass:#TwoByteString
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
    14
       instanceVariableNames:''
a27a279701f8 Initial revision
claus
parents:
diff changeset
    15
       classVariableNames:''
a27a279701f8 Initial revision
claus
parents:
diff changeset
    16
       poolDictionaries:''
a27a279701f8 Initial revision
claus
parents:
diff changeset
    17
       category:'Collections-Text'
a27a279701f8 Initial revision
claus
parents:
diff changeset
    18
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
    19
a27a279701f8 Initial revision
claus
parents:
diff changeset
    20
TwoByteString comment:'
a27a279701f8 Initial revision
claus
parents:
diff changeset
    21
a27a279701f8 Initial revision
claus
parents:
diff changeset
    22
COPYRIGHT (c) 1993 by Claus Gittinger
a27a279701f8 Initial revision
claus
parents:
diff changeset
    23
             All Rights Reserved
a27a279701f8 Initial revision
claus
parents:
diff changeset
    24
a27a279701f8 Initial revision
claus
parents:
diff changeset
    25
TwoByteStrings are like strings, but storing 16bits per character.
a27a279701f8 Initial revision
claus
parents:
diff changeset
    26
The integration of them into the system is not completed ....
a27a279701f8 Initial revision
claus
parents:
diff changeset
    27
73
a6640cc96199 *** empty log message ***
claus
parents: 63
diff changeset
    28
$Header: /cvs/stx/stx/libbasic/TwoByteString.st,v 1.6 1994-03-30 10:26:27 claus Exp $
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
    29
'!
a27a279701f8 Initial revision
claus
parents:
diff changeset
    30
a27a279701f8 Initial revision
claus
parents:
diff changeset
    31
!TwoByteString class methodsFor:'instance creation'!
a27a279701f8 Initial revision
claus
parents:
diff changeset
    32
a27a279701f8 Initial revision
claus
parents:
diff changeset
    33
basicNew:anInteger
a27a279701f8 Initial revision
claus
parents:
diff changeset
    34
    "return a new empty string with anInteger characters"
a27a279701f8 Initial revision
claus
parents:
diff changeset
    35
63
1f0cdefb013f *** empty log message ***
claus
parents: 33
diff changeset
    36
    ^ (super basicNew:(anInteger*2)) atAllPut:(Character space)
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
    37
! !
a27a279701f8 Initial revision
claus
parents:
diff changeset
    38
63
1f0cdefb013f *** empty log message ***
claus
parents: 33
diff changeset
    39
!TwoByteString methodsFor:'queries'!
1f0cdefb013f *** empty log message ***
claus
parents: 33
diff changeset
    40
1f0cdefb013f *** empty log message ***
claus
parents: 33
diff changeset
    41
basicSize
1f0cdefb013f *** empty log message ***
claus
parents: 33
diff changeset
    42
    "return the size of the receiver.
1f0cdefb013f *** empty log message ***
claus
parents: 33
diff changeset
    43
     (i.e. the number of characters in this String)"
1f0cdefb013f *** empty log message ***
claus
parents: 33
diff changeset
    44
1f0cdefb013f *** empty log message ***
claus
parents: 33
diff changeset
    45
    ^ super basicSize // 2
1f0cdefb013f *** empty log message ***
claus
parents: 33
diff changeset
    46
! !
1f0cdefb013f *** empty log message ***
claus
parents: 33
diff changeset
    47
    
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
    48
!TwoByteString methodsFor:'accessing'!
a27a279701f8 Initial revision
claus
parents:
diff changeset
    49
a27a279701f8 Initial revision
claus
parents:
diff changeset
    50
basicAt:index
a27a279701f8 Initial revision
claus
parents:
diff changeset
    51
    "return the character at position index, an Integer
73
a6640cc96199 *** empty log message ***
claus
parents: 63
diff changeset
    52
     - reimplemented here since we return 16-bit characters"
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
    53
63
1f0cdefb013f *** empty log message ***
claus
parents: 33
diff changeset
    54
    |val i|
1f0cdefb013f *** empty log message ***
claus
parents: 33
diff changeset
    55
1f0cdefb013f *** empty log message ***
claus
parents: 33
diff changeset
    56
    i := (index * 2) - 1.
73
a6640cc96199 *** empty log message ***
claus
parents: 63
diff changeset
    57
    "always msb first"
a6640cc96199 *** empty log message ***
claus
parents: 63
diff changeset
    58
    val := (super basicAt:(i+1)) + ((super basicAt:i) * 256).
63
1f0cdefb013f *** empty log message ***
claus
parents: 33
diff changeset
    59
    ^ Character value:val
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
    60
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
    61
a27a279701f8 Initial revision
claus
parents:
diff changeset
    62
basicAt:index put:aCharacter
a27a279701f8 Initial revision
claus
parents:
diff changeset
    63
    "store the argument, aCharacter at position index, an Integer
73
a6640cc96199 *** empty log message ***
claus
parents: 63
diff changeset
    64
     - reimplemented here since we store 16-bit characters"
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
    65
63
1f0cdefb013f *** empty log message ***
claus
parents: 33
diff changeset
    66
    |val i|
1f0cdefb013f *** empty log message ***
claus
parents: 33
diff changeset
    67
    val := aCharacter asciiValue.
1f0cdefb013f *** empty log message ***
claus
parents: 33
diff changeset
    68
    i := (index * 2) - 1.
73
a6640cc96199 *** empty log message ***
claus
parents: 63
diff changeset
    69
    "always msb first"
a6640cc96199 *** empty log message ***
claus
parents: 63
diff changeset
    70
    super basicAt:(i+1) put:(val bitAnd:16rFF).
a6640cc96199 *** empty log message ***
claus
parents: 63
diff changeset
    71
    super basicAt:i put:(val // 256).
63
1f0cdefb013f *** empty log message ***
claus
parents: 33
diff changeset
    72
    ^ aCharacter
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
    73
! !