--- a/UninterpretedBytes.st Thu Jun 24 00:22:36 1999 +0200
+++ b/UninterpretedBytes.st Thu Jun 24 09:36:27 1999 +0200
@@ -32,22 +32,22 @@
#define __fetchBytePointerAndSize__(o, pPtr, pSize) \
{\
if (__isNonNilObject(o)) { \
- if (__qClass(o) == ByteArray) { \
- *(pPtr) = (char *)__ByteArrayInstPtr(o)->ba_element; \
+ if (__qClass(o) == ByteArray) { \
+ *(pPtr) = (unsigned char *)__ByteArrayInstPtr(o)->ba_element; \
*(pSize) = __byteArraySize(o); \
} else if (__qClass(o) == ExternalBytes) { \
OBJ __sz__ = __externalBytesSize(o); \
if (__isSmallInteger(__sz__)) { \
*(pSize) = __intVal(__sz__); \
- *(pPtr) = (char *)(__externalBytesAddress(o)); \
+ *(pPtr) = (unsigned char *)(__externalBytesAddress(o)); \
} else { \
- *(pPtr) = (char *)0; \
+ *(pPtr) = (unsigned char *)0; \
} \
} else { \
- *(pPtr) = (char *)0; \
+ *(pPtr) = (unsigned char *)0; \
} \
} else { \
- *(pPtr) = (char *)0; \
+ *(pPtr) = (unsigned char *)0; \
} \
}
@@ -75,25 +75,25 @@
UninterpretedBytes provides the common protocol for byte-storage
containers; concrete subclasses are
ByteArray (which store the bytes within the
- Smalltalk object memory)
+ Smalltalk object memory)
and
ExternalBytes (which store the bytes in the malloc-heap).
UninterpretedBytes itself is abstract, so no instances of it can be created.
[See also:]
- ByteArray String ExternalBytes
+ ByteArray String ExternalBytes
[author:]
- Claus Gittinger
+ Claus Gittinger
[Notice:]
Notice the confusion due to multiple methods with the same
- functionality (i.e. 'xxxx:MSB:' vs. 'xxxx:bigEndian:').
- The reason is that at the time this class was written,
- ST80 sid not offer protocol to specify the byteOrder, and
- ST/X provided methods ending in 'MSB:' for this.
- In the meanwhile, VW added protocol ending in 'bigEndian:',
+ functionality (i.e. 'xxxx:MSB:' vs. 'xxxx:bigEndian:').
+ The reason is that at the time this class was written,
+ ST80 sid not offer protocol to specify the byteOrder, and
+ ST/X provided methods ending in 'MSB:' for this.
+ In the meanwhile, VW added protocol ending in 'bigEndian:',
which has been added here for compatibility.
(certainly a point, where an ansi-standard will help)
"
@@ -116,7 +116,7 @@
I.e. false for vax, intel; true for m68k, sun.
Notice: UninterpretedBytes isBigEndian
- this is inlined both by stc and the jit compiler"
+ this is inlined both by stc and the jit compiler"
%{ /* NOCONTEXT */
@@ -137,8 +137,8 @@
* constant for systems where this is known.
*/
union {
- unsigned int u_l;
- char u_c[sizeof(int)];
+ unsigned int u_l;
+ char u_c[sizeof(int)];
} u;
u.u_l = 0x87654321;
@@ -242,11 +242,11 @@
* handle the most common cases fast ...
*/
if (__isSmallInteger(index)) {
- char *cp;
+ unsigned char *cp;
int sz;
-
+
__fetchBytePointerAndSize__(self, &cp, &sz);
- if (cp) {
+ if (cp) {
unsigned INT idx = ((unsigned INT)__intVal(index)) - 1;
if ((idx+(sizeof(double)-1)) < sz) {
@@ -259,7 +259,7 @@
OBJ f;
__qMKFLOAT(f, dVal);
- RETURN (f);
+ RETURN (f);
}
}
}
@@ -293,12 +293,12 @@
|newFloat|
msb == UninterpretedBytes isBigEndian ifTrue:[
- ^ self doubleAt:index.
+ ^ self doubleAt:index.
].
newFloat := Float basicNew.
1 to:8 do:[:destIndex|
- newFloat basicAt:(9-destIndex) put:(self at:index - 1 + destIndex)
+ newFloat basicAt:(9-destIndex) put:(self at:index - 1 + destIndex)
].
^ newFloat.
@@ -322,29 +322,29 @@
* handle the most common cases fast ...
*/
if (__isSmallInteger(index) && __isFloat(flt)) {
- char *cp;
- int sz;
+ unsigned char *cp;
+ int sz;
- __fetchBytePointerAndSize__(self, &cp, &sz);
- if (cp) {
- unsigned INT idx = ((unsigned INT)__intVal(index)) - 1;
+ __fetchBytePointerAndSize__(self, &cp, &sz);
+ if (cp) {
+ unsigned INT idx = ((unsigned INT)__intVal(index)) - 1;
- if ((idx+(sizeof(double)-1)) < sz) {
- cp += idx;
- /*
- * aligned
- */
- if (((INT)cp & (sizeof(double)-1)) == 0) {
- ((double *)cp)[0] = __floatVal(flt);
- RETURN (aFloat);
- }
- }
- }
+ if ((idx+(sizeof(double)-1)) < sz) {
+ cp += idx;
+ /*
+ * aligned
+ */
+ if (((INT)cp & (sizeof(double)-1)) == 0) {
+ ((double *)cp)[0] = __floatVal(flt);
+ RETURN (aFloat);
+ }
+ }
+ }
}
%}.
1 to:8 do:[:srcIndex|
- self at:index - 1 + srcIndex put:(flt basicAt:srcIndex)
+ self at:index - 1 + srcIndex put:(flt basicAt:srcIndex)
].
^ aFloat
!
@@ -361,12 +361,12 @@
|flt|
msb == UninterpretedBytes isBigEndian ifTrue:[
- ^ self doubleAt:index put:aFloat.
+ ^ self doubleAt:index put:aFloat.
].
flt := aFloat asFloat.
1 to:8 do:[:srcIndex|
- self at:index - 1 + srcIndex put:(flt basicAt:(9-srcIndex))
+ self at:index - 1 + srcIndex put:(flt basicAt:(9-srcIndex))
].
^ aFloat
@@ -391,33 +391,33 @@
* handle the most common cases fast ...
*/
if (__isSmallInteger(index)) {
- char *cp;
- int sz;
+ unsigned char *cp;
+ int sz;
- __fetchBytePointerAndSize__(self, &cp, &sz);
- if (cp) {
- unsigned INT idx = ((unsigned INT)__intVal(index)) - 1;
+ __fetchBytePointerAndSize__(self, &cp, &sz);
+ if (cp) {
+ unsigned INT idx = ((unsigned INT)__intVal(index)) - 1;
- if ((idx+(sizeof(float)-1)) < sz) {
- cp += idx;
- /*
- * aligned
- */
- if (((INT)cp & (sizeof(float)-1)) == 0) {
- float fVal = ((float *)cp)[0];
+ if ((idx+(sizeof(float)-1)) < sz) {
+ cp += idx;
+ /*
+ * aligned
+ */
+ if (((INT)cp & (sizeof(float)-1)) == 0) {
+ float fVal = ((float *)cp)[0];
OBJ f;
__qMKSFLOAT(f, fVal);
- RETURN (f);
- }
- }
- }
+ RETURN (f);
+ }
+ }
+ }
}
%}.
newFloat := ShortFloat basicNew.
1 to:4 do:[:destIndex|
- newFloat basicAt:destIndex put:(self at:index - 1 + destIndex)
+ newFloat basicAt:destIndex put:(self at:index - 1 + destIndex)
].
^ newFloat.
!
@@ -435,12 +435,12 @@
|newFloat|
msb == UninterpretedBytes isBigEndian ifTrue:[
- ^ self floatAt:index
+ ^ self floatAt:index
].
newFloat := ShortFloat basicNew.
1 to:4 do:[:destIndex|
- newFloat basicAt:(5-destIndex) put:(self at:index - 1 + destIndex)
+ newFloat basicAt:(5-destIndex) put:(self at:index - 1 + destIndex)
].
^ newFloat.
@@ -465,30 +465,30 @@
* handle the most common cases fast ...
*/
if (__isSmallInteger(index) && __isShortFloat(sflt)) {
- char *cp;
- int sz;
+ unsigned char *cp;
+ int sz;
- __fetchBytePointerAndSize__(self, &cp, &sz);
- if (cp) {
- unsigned INT idx = ((unsigned INT)__intVal(index)) - 1;
+ __fetchBytePointerAndSize__(self, &cp, &sz);
+ if (cp) {
+ unsigned INT idx = ((unsigned INT)__intVal(index)) - 1;
- if ((idx+(sizeof(float)-1)) < sz) {
- cp += idx;
- /*
- * aligned
- */
- if (((INT)cp & (sizeof(float)-1)) == 0) {
- ((float *)cp)[0] = __shortFloatVal(sflt);
+ if ((idx+(sizeof(float)-1)) < sz) {
+ cp += idx;
+ /*
+ * aligned
+ */
+ if (((INT)cp & (sizeof(float)-1)) == 0) {
+ ((float *)cp)[0] = __shortFloatVal(sflt);
- RETURN (aFloat);
- }
- }
- }
+ RETURN (aFloat);
+ }
+ }
+ }
}
%}.
1 to:4 do:[:srcIndex|
- self at:index - 1 + srcIndex put:(sflt basicAt:srcIndex)
+ self at:index - 1 + srcIndex put:(sflt basicAt:srcIndex)
].
^ aFloat
!
@@ -505,12 +505,12 @@
|sflt|
msb == UninterpretedBytes isBigEndian ifTrue:[
- ^ self floatAt:index put:aFloat
+ ^ self floatAt:index put:aFloat
].
sflt := aFloat asShortFloat.
1 to:4 do:[:srcIndex|
- self at:index - 1 + srcIndex put:(sflt basicAt:(5-srcIndex))
+ self at:index - 1 + srcIndex put:(sflt basicAt:(5-srcIndex))
].
^ aFloat
@@ -610,7 +610,7 @@
w := self unsignedLongLongAt:index bigEndian:(UninterpretedBytes isBigEndian).
(w > (16r7FFFFFFFFFFFFFFF)) ifTrue:[
- ^ w - (16r10000000000000000)
+ ^ w - (16r10000000000000000)
].
^ w
@@ -636,7 +636,7 @@
w := self unsignedLongLongAt:index bigEndian:msb.
(w > (16r7FFFFFFFFFFFFFFF)) ifTrue:[
- ^ w - (16r10000000000000000)
+ ^ w - (16r10000000000000000)
].
^ w
@@ -672,7 +672,7 @@
v := anInteger.
anInteger < 0 ifTrue:[
- v := v + 16r10000000000000000
+ v := v + 16r10000000000000000
].
^ self unsignedLongLongAt:byteIndex put:v bigEndian:msb
@@ -691,15 +691,15 @@
l := LargeInteger basicNew numberOfDigits:8.
msb ifTrue:[
- bIdx := index + 7.
- delta := -1
+ bIdx := index + 7.
+ delta := -1
] ifFalse:[
- bIdx := index.
- delta := 1
+ bIdx := index.
+ delta := 1
].
1 to:8 do:[:i |
- l digitAt:i put:(self basicAt:bIdx).
- bIdx := bIdx + delta
+ l digitAt:i put:(self basicAt:bIdx).
+ bIdx := bIdx + delta
].
^ l compressed
@@ -758,15 +758,15 @@
l := LargeInteger basicNew numberOfDigits:8.
msb ifTrue:[
- bIdx := index + 7.
- delta := -1
+ bIdx := index + 7.
+ delta := -1
] ifFalse:[
- bIdx := index.
- delta := 1
+ bIdx := index.
+ delta := 1
].
1 to:8 do:[:i |
- l digitAt:i put:(self basicAt:bIdx).
- bIdx := bIdx + delta
+ l digitAt:i put:(self basicAt:bIdx).
+ bIdx := bIdx + delta
].
^ l compressed
@@ -803,19 +803,19 @@
delta "{ Class: SmallInteger }"|
((anInteger < 0) or:[anInteger > 16rFFFFFFFFFFFFFFFF]) ifTrue:[
- ^ self elementBoundsError
+ ^ self elementBoundsError
].
msb ifTrue:[
- bIdx := index + 7.
- delta := -1
+ bIdx := index + 7.
+ delta := -1
] ifFalse:[
- bIdx := index.
- delta := 1
+ bIdx := index.
+ delta := 1
].
1 to:8 do:[:i |
- self basicAt:bIdx put:(anInteger digitAt:i).
- bIdx := bIdx + delta.
+ self basicAt:bIdx put:(anInteger digitAt:i).
+ bIdx := bIdx + delta.
].
^ anInteger
@@ -844,46 +844,46 @@
* handle the most common cases fast ...
*/
if (__isSmallInteger(index)) {
- char *cp;
- int sz;
+ unsigned char *cp;
+ int sz;
- __fetchBytePointerAndSize__(self, &cp, &sz);
- if (cp) {
- unsigned INT idx = ((unsigned INT)__intVal(index)) - 1;
- int iVal;
+ __fetchBytePointerAndSize__(self, &cp, &sz);
+ if (cp) {
+ unsigned INT idx = ((unsigned INT)__intVal(index)) - 1;
+ int iVal;
- if ((idx+(sizeof(int)-1)) < sz) {
- cp += idx;
+ if ((idx+(sizeof(int)-1)) < sz) {
+ cp += idx;
#if defined(i386) || defined(UNALIGNED_FETCH_OK)
- /* aligned or not - we dont care
- * (i386 can fetch unaligned)
- */
- iVal = ((int *)cp)[0];
+ /* aligned or not - we dont care
+ * (i386 can fetch unaligned)
+ */
+ iVal = ((int *)cp)[0];
#else
- if (((INT)cp & (sizeof(int)-1)) == 0) {
- /*
- * aligned
- */
- iVal = ((int *)cp)[0];
- } else {
- union {
- char c[4];
- int i;
- } u;
- u.c[0] = cp[0];
- u.c[1] = cp[1];
- u.c[2] = cp[2];
- u.c[3] = cp[3];
- iVal = u.i;
- }
+ if (((INT)cp & (sizeof(int)-1)) == 0) {
+ /*
+ * aligned
+ */
+ iVal = ((int *)cp)[0];
+ } else {
+ union {
+ char c[4];
+ int i;
+ } u;
+ u.c[0] = cp[0];
+ u.c[1] = cp[1];
+ u.c[2] = cp[2];
+ u.c[3] = cp[3];
+ iVal = u.i;
+ }
#endif
- if ((iVal >= 0) && (iVal <= _MAX_INT)) {
- RETURN ( __MKSMALLINT(iVal) );
- }
- RETURN ( __MKULARGEINT(iVal) );
- }
- }
+ if ((iVal >= 0) && (iVal <= _MAX_INT)) {
+ RETURN ( __MKSMALLINT(iVal) );
+ }
+ RETURN ( __MKULARGEINT(iVal) );
+ }
+ }
}
%}.
@@ -920,59 +920,59 @@
* handle the most common cases fast ...
*/
if (__isSmallInteger(index)) {
- unsigned char *cp;
- int sz;
+ unsigned char *cp;
+ int sz;
- __fetchBytePointerAndSize__(self, &cp, &sz);
- if (cp) {
- unsigned INT idx = ((unsigned INT)__intVal(index)) - 1;
- int iVal;
+ __fetchBytePointerAndSize__(self, &cp, &sz);
+ if (cp) {
+ unsigned INT idx = ((unsigned INT)__intVal(index)) - 1;
+ int iVal;
- if ((idx+(sizeof(int)-1)) < sz) {
- cp += idx;
+ if ((idx+(sizeof(int)-1)) < sz) {
+ cp += idx;
- if (msb == true) {
+ if (msb == true) {
#if defined(__MSBFIRST) || defined(sparc)
- if (((INT)cp & (sizeof(int)-1))== 0) {
- /*
- * aligned
- */
- iVal = ((int *)cp)[0];
- } else
+ if (((INT)cp & (sizeof(int)-1))== 0) {
+ /*
+ * aligned
+ */
+ iVal = ((int *)cp)[0];
+ } else
#endif
- {
- iVal = cp[0];
- iVal = (iVal << 8) | cp[1];
- iVal = (iVal << 8) | cp[2];
- iVal = (iVal << 8) | cp[3];
- }
- } else {
-#ifdef i386
- /*
- * aligned or not - we dont care
- * (i386 can fetch unaligned)
- */
- iVal = ((int *)cp)[0];
+ {
+ iVal = cp[0];
+ iVal = (iVal << 8) | cp[1];
+ iVal = (iVal << 8) | cp[2];
+ iVal = (iVal << 8) | cp[3];
+ }
+ } else {
+#if defined(i386) || (defined(UNALIGNED_FETCH_OK) && defined(__LSBFIRST))
+ /*
+ * aligned or not - we dont care
+ * (i386 can fetch unaligned)
+ */
+ iVal = ((int *)cp)[0];
#else
-# if defined(__LSBFIRST)
- if (((INT)cp & (sizeof(int)-1))== 0) {
- /*
- * aligned
- */
- iVal = ((int *)cp)[0];
- } else
+# if defined(__LSBFIRST) || defined(i386)
+ if (((INT)cp & (sizeof(int)-1))== 0) {
+ /*
+ * aligned
+ */
+ iVal = ((int *)cp)[0];
+ } else
# endif
- {
- iVal = cp[3];
- iVal = (iVal << 8) | cp[2];
- iVal = (iVal << 8) | cp[1];
- iVal = (iVal << 8) | cp[0];
- }
+ {
+ iVal = cp[3];
+ iVal = (iVal << 8) | cp[2];
+ iVal = (iVal << 8) | cp[1];
+ iVal = (iVal << 8) | cp[0];
+ }
#endif
- }
- RETURN (__MKUINT(iVal));
- }
- }
+ }
+ RETURN (__MKUINT(iVal));
+ }
+ }
}
%}.
@@ -986,8 +986,8 @@
b4 := self at:(i+3).
msb ifFalse:[
- t := b4. b4 := b1. b1 := t.
- t := b3. b3 := b2. b2 := t.
+ t := b4. b4 := b1. b1 := t.
+ t := b3. b3 := b2. b2 := t.
].
ival := b1.
ival := (ival bitShift:8) + b2.
@@ -1035,20 +1035,20 @@
|i "{ Class: SmallInteger }" |
((aNumber < 0) or:[aNumber > 16rFFFFFFFF]) ifTrue:[
- ^ self elementBoundsError
+ ^ self elementBoundsError
].
i := index.
msb ifTrue:[
- self at:i put:(aNumber digitAt:4).
- self at:(i+1) put:(aNumber digitAt:3).
- self at:(i+2) put:(aNumber digitAt:2).
- self at:(i+3) put:(aNumber digitAt:1).
+ self at:i put:(aNumber digitAt:4).
+ self at:(i+1) put:(aNumber digitAt:3).
+ self at:(i+2) put:(aNumber digitAt:2).
+ self at:(i+3) put:(aNumber digitAt:1).
] ifFalse:[
- self at:i put:(aNumber digitAt:1).
- self at:(i+1) put:(aNumber digitAt:2).
- self at:(i+2) put:(aNumber digitAt:3).
- self at:(i+3) put:(aNumber digitAt:4).
+ self at:i put:(aNumber digitAt:1).
+ self at:(i+1) put:(aNumber digitAt:2).
+ self at:(i+2) put:(aNumber digitAt:3).
+ self at:(i+3) put:(aNumber digitAt:4).
].
^ aNumber
@@ -1117,8 +1117,12 @@
longAt:index
"return the 4-bytes starting at index as a signed Integer.
The index is a smalltalk index (i.e. 1-based).
- The value is retrieved in the machines natural byte order.
- This may be worth a primitive."
+ The value is retrieved in the machines natural byte order,
+ therefore, this should only be used for byte-data which is
+ only used inside this machine.
+ To setup data packets which are to be sent to other machines,
+ or stored into a file, always use longAt:MSB: and specify
+ a definite byteOrder."
|w|
@@ -1127,31 +1131,42 @@
* handle the most common cases fast ...
*/
if (__isSmallInteger(index)) {
- char *cp;
- int sz;
+ unsigned char *cp;
+ int sz;
- __fetchBytePointerAndSize__(self, &cp, &sz);
- if (cp) {
- unsigned INT idx = ((unsigned INT)__intVal(index)) - 1;
+ __fetchBytePointerAndSize__(self, &cp, &sz);
+ if (cp) {
+ unsigned INT idx = ((unsigned INT)__intVal(index)) - 1;
- if ((idx+(sizeof(int)-1)) < sz) {
- cp += idx;
- /*
- * aligned
- */
- if (((INT)cp & (sizeof(int)-1)) == 0) {
- INT iVal = ((int *)cp)[0];
+ if ((idx+(sizeof(int)-1)) < sz) {
+ cp += idx;
+#if defined(i386)
+ /*
+ * aligned or not, we dont care (i386 can do both)
+ */
+ {
+ int iVal = ((int *)cp)[0];
- RETURN (__MKINT(iVal));
- }
- }
- }
+ RETURN (__MKINT(iVal));
+ }
+#else
+ /*
+ * aligned
+ */
+ if (((INT)cp & (sizeof(int)-1)) == 0) {
+ INT iVal = ((int *)cp)[0];
+
+ RETURN (__MKINT(iVal));
+ }
+#endif
+ }
+ }
}
%}.
w := self unsignedLongAt:index.
(w > (16r7FFFFFFF)) ifTrue:[
- ^ w - (16r100000000)
+ ^ w - (16r100000000)
].
^ w
@@ -1176,7 +1191,7 @@
w := self unsignedLongAt:index bigEndian:msb.
(w > (16r7FFFFFFF)) ifTrue:[
- ^ w - (16r100000000)
+ ^ w - (16r100000000)
].
^ w
@@ -1206,39 +1221,39 @@
* handle the most common cases fast ...
*/
if (__isSmallInteger(index)) {
- char *cp;
- int sz;
+ unsigned char *cp;
+ int sz;
- __fetchBytePointerAndSize__(self, &cp, &sz);
- if (cp) {
- unsigned INT idx = ((unsigned INT)__intVal(index)) - 1;
+ __fetchBytePointerAndSize__(self, &cp, &sz);
+ if (cp) {
+ unsigned INT idx = ((unsigned INT)__intVal(index)) - 1;
- if ((idx+(sizeof(int)-1)) < sz) {
- cp += idx;
- /*
- * aligned
- */
- if (((INT)cp & (sizeof(int)-1)) == 0) {
+ if ((idx+(sizeof(int)-1)) < sz) {
+ cp += idx;
+ /*
+ * aligned
+ */
+ if (((INT)cp & (sizeof(int)-1)) == 0) {
int __v;
- if (__isSmallInteger(value)) {
- ((int *)cp)[0] = __intVal(value);
- RETURN (value);
+ if (__isSmallInteger(value)) {
+ ((int *)cp)[0] = __intVal(value);
+ RETURN (value);
}
if (__v = __signedLongIntVal(value)) {
((int *)cp)[0] = __v;
RETURN (value);
}
- }
- }
- }
+ }
+ }
+ }
}
%}.
value >= 0 ifTrue:[
- v := value
+ v := value
] ifFalse:[
- v := value + 16r100000000
+ v := value + 16r100000000
].
self unsignedLongAt:index put:v.
^ value
@@ -1263,7 +1278,7 @@
v := anInteger.
anInteger < 0 ifTrue:[
- v := v + 16r100000000
+ v := v + 16r100000000
].
^ self unsignedLongAt:byteIndex put:v bigEndian:msb
@@ -1512,9 +1527,9 @@
|v|
value >= 0 ifTrue:[
- v := value
+ v := value
] ifFalse:[
- v := 16r10000 + value
+ v := 16r10000 + value
].
self unsignedShortAt:index put:v.
^ value
@@ -1582,9 +1597,9 @@
|v|
value >= 0 ifTrue:[
- v := value
+ v := value
] ifFalse:[
- v := 16r10000 + value
+ v := 16r10000 + value
].
self unsignedShortAt:index put:v.
^ value
@@ -1657,7 +1672,7 @@
b1 := self at:index.
b2 := self at:(index + 1).
msb ifTrue:[
- ^ (b1 bitShift:8) + b2
+ ^ (b1 bitShift:8) + b2
].
^ (b2 bitShift:8) + b1
@@ -1697,14 +1712,14 @@
iVal := value.
((iVal < 0) or:[iVal > 16rFFFF]) ifTrue:[
- ^ self elementBoundsError
+ ^ self elementBoundsError
].
msb ifTrue:[
- b1 := ((iVal bitShift:-8) bitAnd:16rFF).
- b2 := (iVal bitAnd:16rFF).
+ b1 := ((iVal bitShift:-8) bitAnd:16rFF).
+ b2 := (iVal bitAnd:16rFF).
] ifFalse:[
- b1 := (iVal bitAnd:16rFF).
- b2 := ((iVal bitShift:-8) bitAnd:16rFF).
+ b1 := (iVal bitAnd:16rFF).
+ b2 := ((iVal bitShift:-8) bitAnd:16rFF).
].
self at:index put:b1.
self at:index+1 put:b2.
@@ -1748,7 +1763,7 @@
b1 := self at:index.
b2 := self at:(index + 1).
msb ifTrue:[
- ^ (b1 bitShift:8) + b2
+ ^ (b1 bitShift:8) + b2
].
^ (b2 bitShift:8) + b1
@@ -1788,14 +1803,14 @@
iVal := value.
((iVal < 0) or:[iVal > 16rFFFF]) ifTrue:[
- ^ self elementBoundsError
+ ^ self elementBoundsError
].
msb ifTrue:[
- b1 := ((iVal bitShift:-8) bitAnd:16rFF).
- b2 := (iVal bitAnd:16rFF).
+ b1 := ((iVal bitShift:-8) bitAnd:16rFF).
+ b2 := (iVal bitAnd:16rFF).
] ifFalse:[
- b1 := (iVal bitAnd:16rFF).
- b2 := ((iVal bitShift:-8) bitAnd:16rFF).
+ b1 := (iVal bitAnd:16rFF).
+ b2 := ((iVal bitShift:-8) bitAnd:16rFF).
].
self at:index put:b1.
self at:index+1 put:b2.
@@ -1874,8 +1889,8 @@
stream := WriteStream on:''.
i := index.
[(c := self basicAt:i) ~~ 0] whileTrue:[
- stream nextPut:(Character value:c).
- i := i + 1.
+ stream nextPut:(Character value:c).
+ i := i + 1.
].
^ stream contents
@@ -1891,8 +1906,8 @@
i := index.
aString do:[:aChar |
- self basicAt:i put:aChar asciiValue.
- i := i + 1.
+ self basicAt:i put:aChar asciiValue.
+ i := i + 1.
].
self basicAt:i put:0.
^ aString
@@ -1903,7 +1918,7 @@
bytes := ExternalBytes new:10.
bytes stringAt:1 put:'hello'.
1 to:bytes size do:[:i |
- Transcript showCR:(bytes at:i)
+ Transcript showCR:(bytes at:i)
]
"
@@ -1920,8 +1935,8 @@
i := index.
[(i <= maxSize)
and:[(c := self basicAt:i) ~~ 0]] whileTrue:[
- stream nextPut:(Character value:c).
- i := i + 1.
+ stream nextPut:(Character value:c).
+ i := i + 1.
].
^ stream contents
@@ -1975,5 +1990,5 @@
!UninterpretedBytes class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/UninterpretedBytes.st,v 1.33 1999-06-05 10:40:28 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/UninterpretedBytes.st,v 1.34 1999-06-24 07:36:27 cg Exp $'
! !