TwoByteString.st
author claus
Sat, 02 Sep 1995 18:08:30 +0200
changeset 420 081f7b2bb3b3
parent 383 8e3ec8164440
child 530 07d0bce293c9
permissions -rw-r--r--
Initial revision
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
235
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
     3
	      All Rights Reserved
1
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
256
f59b4cfdc55a *** empty log message ***
claus
parents: 235
diff changeset
    13
CharacterArray 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
COPYRIGHT (c) 1993 by Claus Gittinger
235
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
    22
	     All Rights Reserved
97
b876f90648aa *** empty log message ***
claus
parents: 89
diff changeset
    23
383
claus
parents: 381
diff changeset
    24
$Header: /cvs/stx/stx/libbasic/TwoByteString.st,v 1.12 1995-08-10 18:36:34 claus Exp $
89
7be0b86ef80f *** empty log message ***
claus
parents: 73
diff changeset
    25
'!
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
    26
89
7be0b86ef80f *** empty log message ***
claus
parents: 73
diff changeset
    27
!TwoByteString class methodsFor:'documentation'!
7be0b86ef80f *** empty log message ***
claus
parents: 73
diff changeset
    28
7be0b86ef80f *** empty log message ***
claus
parents: 73
diff changeset
    29
copyright
7be0b86ef80f *** empty log message ***
claus
parents: 73
diff changeset
    30
"
7be0b86ef80f *** empty log message ***
claus
parents: 73
diff changeset
    31
 COPYRIGHT (c) 1993 by Claus Gittinger
235
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
    32
	      All Rights Reserved
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
    33
89
7be0b86ef80f *** empty log message ***
claus
parents: 73
diff changeset
    34
 This software is furnished under a license and may be used
7be0b86ef80f *** empty log message ***
claus
parents: 73
diff changeset
    35
 only in accordance with the terms of that license and with the
7be0b86ef80f *** empty log message ***
claus
parents: 73
diff changeset
    36
 inclusion of the above copyright notice.   This software may not
7be0b86ef80f *** empty log message ***
claus
parents: 73
diff changeset
    37
 be provided or otherwise made available to, or used by, any
7be0b86ef80f *** empty log message ***
claus
parents: 73
diff changeset
    38
 other person.  No title to or ownership of the software is
7be0b86ef80f *** empty log message ***
claus
parents: 73
diff changeset
    39
 hereby transferred.
7be0b86ef80f *** empty log message ***
claus
parents: 73
diff changeset
    40
"
7be0b86ef80f *** empty log message ***
claus
parents: 73
diff changeset
    41
!
7be0b86ef80f *** empty log message ***
claus
parents: 73
diff changeset
    42
7be0b86ef80f *** empty log message ***
claus
parents: 73
diff changeset
    43
version
7be0b86ef80f *** empty log message ***
claus
parents: 73
diff changeset
    44
"
383
claus
parents: 381
diff changeset
    45
$Header: /cvs/stx/stx/libbasic/TwoByteString.st,v 1.12 1995-08-10 18:36:34 claus Exp $
89
7be0b86ef80f *** empty log message ***
claus
parents: 73
diff changeset
    46
"
7be0b86ef80f *** empty log message ***
claus
parents: 73
diff changeset
    47
!
7be0b86ef80f *** empty log message ***
claus
parents: 73
diff changeset
    48
7be0b86ef80f *** empty log message ***
claus
parents: 73
diff changeset
    49
documentation
7be0b86ef80f *** empty log message ***
claus
parents: 73
diff changeset
    50
"
7be0b86ef80f *** empty log message ***
claus
parents: 73
diff changeset
    51
    TwoByteStrings are like strings, but storing 16bits per character.
7be0b86ef80f *** empty log message ***
claus
parents: 73
diff changeset
    52
    The integration of them into the system is not completed ....
7be0b86ef80f *** empty log message ***
claus
parents: 73
diff changeset
    53
"
7be0b86ef80f *** empty log message ***
claus
parents: 73
diff changeset
    54
! !
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
    55
a27a279701f8 Initial revision
claus
parents:
diff changeset
    56
!TwoByteString class methodsFor:'instance creation'!
a27a279701f8 Initial revision
claus
parents:
diff changeset
    57
a27a279701f8 Initial revision
claus
parents:
diff changeset
    58
basicNew:anInteger
a27a279701f8 Initial revision
claus
parents:
diff changeset
    59
    "return a new empty string with anInteger characters"
a27a279701f8 Initial revision
claus
parents:
diff changeset
    60
63
1f0cdefb013f *** empty log message ***
claus
parents: 33
diff changeset
    61
    ^ (super basicNew:(anInteger*2)) atAllPut:(Character space)
235
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
    62
!
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
    63
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
    64
fromJISString:aString
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
    65
    "return a new string containing the characters of aString,
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
    66
     which are taken as JIS encoded."
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
    67
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
    68
    |newString sz dstIdx singleBytes start stop n1 n2 n3 b1 b2 val|
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
    69
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
    70
    sz := aString size.
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
    71
    newString := self new:sz.
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
    72
    sz ~~ 0 ifTrue:[
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
    73
	dstIdx := 1.
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
    74
	start := 1.
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
    75
	singleBytes := true.
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
    76
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
    77
	[true] whileTrue:[
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
    78
	    "scan for next escape"
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
    79
	    stop := aString indexOf:(Character esc) startingAt:start.
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
    80
	    stop == 0 ifTrue:[
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
    81
		stop := sz + 1.
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
    82
	    ] ifFalse:[
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
    83
		(stop + 2) > sz ifTrue:[
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
    84
		    stop := sz + 1.
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
    85
		]
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
    86
	    ].
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
    87
	    singleBytes ifTrue:[
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
    88
		newString replaceFrom:dstIdx to:(dstIdx + (stop - start - 1))
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
    89
				 with:aString startingAt:start.
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
    90
		dstIdx := dstIdx + (stop - start).
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
    91
	    ] ifFalse:[
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
    92
		start to:(stop - 1) by:2 do:[:i |
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
    93
		    b1 := (aString at:i) asciiValue.
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
    94
		    b2 := (aString at:i+1) asciiValue.
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
    95
		    val := (b1 bitShift:8) bitOr:b2.
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
    96
		    newString at:dstIdx put:(Character value:val).
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
    97
		    dstIdx := dstIdx + 1.
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
    98
		]
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
    99
	    ].
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   100
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   101
	    stop > sz ifTrue:[
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   102
		^ newString copyFrom:1 to:dstIdx - 1.
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   103
	    ].
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   104
	    start := stop.
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   105
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   106
	    "
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   107
	     found an escape (at index stop) - check for ESC $ B
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   108
	    "
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   109
	    n1 := aString at:start.
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   110
	    n2 := aString at:(start + 1).
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   111
	    n3 := aString at:(start + 2).
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   112
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   113
	    (n2 == $$ and:[n3 == $B]) ifTrue:[
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   114
		singleBytes := false.
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   115
	    ] ifFalse:[
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   116
		(n2 == $( and:[n3 == $B]) ifTrue:[
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   117
		    singleBytes := true.
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   118
		] ifFalse:[
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   119
		    newString at:dstIdx put:n1.
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   120
		    newString at:(dstIdx + 1) put:n2.
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   121
		    newString at:(dstIdx + 2) put:n3.
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   122
		    dstIdx := dstIdx + 3.
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   123
		]
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   124
	    ].
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   125
	    start := start + 3.
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   126
	    start > sz ifTrue:[
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   127
		^ newString copyFrom:1 to:dstIdx-1.
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   128
	    ]
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   129
	]
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   130
    ].
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   131
    ^ newString
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   132
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   133
    "
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   134
     TwoByteString fromJISString:'hello'
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   135
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   136
     |s|
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   137
     s := 'hello' copyWith:Character esc.
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   138
     TwoByteString fromJISString:s
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   139
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   140
     |s|
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   141
     s := 'hello' copyWith:Character esc.
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   142
     s := s copyWith:$A.
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   143
     TwoByteString fromJISString:s
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   144
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   145
     |s|
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   146
     s := 'hello' copyWith:Character esc.
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   147
     s := s copyWith:$$.
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   148
     TwoByteString fromJISString:s
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   149
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   150
     |s|
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   151
     s := 'hello' copyWith:Character esc.
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   152
     s := s copyWith:$$.
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   153
     s := s copyWith:$A.
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   154
     TwoByteString fromJISString:s
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   155
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   156
     |s|
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   157
     s := 'hello' copyWith:Character esc.
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   158
     s := s copyWith:$$.
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   159
     s := s copyWith:$B.
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   160
     TwoByteString fromJISString:s
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   161
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   162
     |s|
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   163
     s := 'hello' copyWith:Character esc.
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   164
     s := s copyWith:$$.
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   165
     s := s copyWith:$B.
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   166
     s := s , '$N'.
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   167
     TwoByteString fromJISString:s
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   168
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   169
     |s|
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   170
     s := 'hello' copyWith:Character esc.
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   171
     s := s copyWith:$$.
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   172
     s := s copyWith:$B.
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   173
     s := s , '$N4A;z'.
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   174
     TwoByteString fromJISString:s
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   175
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   176
     |s|
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   177
     s := 'hello' copyWith:Character esc.
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   178
     s := s copyWith:$$.
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   179
     s := s copyWith:$B.
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   180
     s := s , '$N'.
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   181
     s := s copyWith:Character esc.
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   182
     s := s copyWith:$(.
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   183
     s := s copyWith:$B.
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   184
     s := s , 'hello'.
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   185
     TwoByteString fromJISString:s
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   186
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   187
     |s t l|
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   188
     s := 'kterm ' copyWith:Character esc.
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   189
     s := s copyWith:$$.
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   190
     s := s copyWith:$B.
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   191
     s := s , '$N4A;zC<Kv%(%_%e%l!!<%?'.
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   192
     s := s copyWith:Character esc.
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   193
     s := s copyWith:$(.
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   194
     s := s copyWith:$B.
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   195
     s := s , ' kterm'.
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   196
     t := TwoByteString fromJISString:s.
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   197
     l := Label new.
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   198
     l label:t.
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   199
     l font:(Font family:'k14' face:nil style:nil size:nil).
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   200
     l realize
d8e62525bfdf *** empty log message ***
claus
parents: 97
diff changeset
   201
    "
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   202
! !
a27a279701f8 Initial revision
claus
parents:
diff changeset
   203
63
1f0cdefb013f *** empty log message ***
claus
parents: 33
diff changeset
   204
!TwoByteString methodsFor:'queries'!
1f0cdefb013f *** empty log message ***
claus
parents: 33
diff changeset
   205
1f0cdefb013f *** empty log message ***
claus
parents: 33
diff changeset
   206
basicSize
1f0cdefb013f *** empty log message ***
claus
parents: 33
diff changeset
   207
    "return the size of the receiver.
1f0cdefb013f *** empty log message ***
claus
parents: 33
diff changeset
   208
     (i.e. the number of characters in this String)"
1f0cdefb013f *** empty log message ***
claus
parents: 33
diff changeset
   209
1f0cdefb013f *** empty log message ***
claus
parents: 33
diff changeset
   210
    ^ super basicSize // 2
1f0cdefb013f *** empty log message ***
claus
parents: 33
diff changeset
   211
! !
1f0cdefb013f *** empty log message ***
claus
parents: 33
diff changeset
   212
    
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   213
!TwoByteString methodsFor:'accessing'!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   214
a27a279701f8 Initial revision
claus
parents:
diff changeset
   215
basicAt:index
a27a279701f8 Initial revision
claus
parents:
diff changeset
   216
    "return the character at position index, an Integer
73
a6640cc96199 *** empty log message ***
claus
parents: 63
diff changeset
   217
     - reimplemented here since we return 16-bit characters"
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   218
63
1f0cdefb013f *** empty log message ***
claus
parents: 33
diff changeset
   219
    |val i|
1f0cdefb013f *** empty log message ***
claus
parents: 33
diff changeset
   220
1f0cdefb013f *** empty log message ***
claus
parents: 33
diff changeset
   221
    i := (index * 2) - 1.
73
a6640cc96199 *** empty log message ***
claus
parents: 63
diff changeset
   222
    "always msb first"
a6640cc96199 *** empty log message ***
claus
parents: 63
diff changeset
   223
    val := (super basicAt:(i+1)) + ((super basicAt:i) * 256).
63
1f0cdefb013f *** empty log message ***
claus
parents: 33
diff changeset
   224
    ^ Character value:val
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   225
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   226
a27a279701f8 Initial revision
claus
parents:
diff changeset
   227
basicAt:index put:aCharacter
a27a279701f8 Initial revision
claus
parents:
diff changeset
   228
    "store the argument, aCharacter at position index, an Integer
73
a6640cc96199 *** empty log message ***
claus
parents: 63
diff changeset
   229
     - reimplemented here since we store 16-bit characters"
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   230
63
1f0cdefb013f *** empty log message ***
claus
parents: 33
diff changeset
   231
    |val i|
1f0cdefb013f *** empty log message ***
claus
parents: 33
diff changeset
   232
    val := aCharacter asciiValue.
1f0cdefb013f *** empty log message ***
claus
parents: 33
diff changeset
   233
    i := (index * 2) - 1.
73
a6640cc96199 *** empty log message ***
claus
parents: 63
diff changeset
   234
    "always msb first"
a6640cc96199 *** empty log message ***
claus
parents: 63
diff changeset
   235
    super basicAt:(i+1) put:(val bitAnd:16rFF).
a6640cc96199 *** empty log message ***
claus
parents: 63
diff changeset
   236
    super basicAt:i put:(val // 256).
63
1f0cdefb013f *** empty log message ***
claus
parents: 33
diff changeset
   237
    ^ aCharacter
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   238
! !