Fixed lots of compiler bugs. Added more primitives. Reworked interpreter
[panda.git] / st / ByteString.st
blob581548d109d7153cdd593e1e76872828cb1323c8
2 "instance creation"
3 ByteString classMethod!
4 newFromBytes: aByteArray
5         ^ (self basicNew: aByteArray size) initializeWithBytes: aByteArray!
7 "accessing"
9 ByteString method!
10 at: anInteger
11         <primitive: 'ByteString_at'>
12         anInteger isInteger
13                 ifTrue: [ self error: 'index out of bounds' ].
14         anInteger isNumber
15                 ifTrue: [ ^ self at: anInteger asInteger ]
16                 ifFalse: [ self error: 'index is not an integer']!
18 ByteString method!
19 size
20         <primitive: 'ByteString_size'>
21         self primitiveFailed!
23 ByteString method!
24 byteAt: anInteger
25         <primitive: 'ByteArray_at'>
26         self primitiveFailed!
28 ByteString method!
29 byteAt: anInteger put: anObject
30         <primitive: 'ByteArray_at_put'>
31         self primitiveFailed!
33 ByteString method!
34 byteSize
35         <primitive: 'ByteArray_size'>
36         self primitiveFailed!
38 ByteString method!
39 bytes
40         | bytes index |
41         
42         bytes := ByteArray new: self byteSize.
44         index := 1.
45         [ index <= bytes size ]
46                 whileTrue: [ bytes at: index put: (self byteAt: index).
47                                          index := index + 1].
49         ^ bytes!
52 "comparing"
54 ByteString method!
55 compare: aString
56         <primitive: 'ByteString_compare'>
57         self error: 'argument is not a ByteString'!
59 ByteString method!
60 compareOrdinal: aString
61         "compare the individual Unicode code points in the string irrespective of locale"
62         <primitive: 'ByteString_compareOrdinal'>
63         self error: 'argument is not a ByteString'!
65 ByteString method!
66 hash
67         <primitive: 'ByteString_hash'>
68         self primitiveFailed!
70 "reversing"
72 ByteString method!
73 reversed
74         <primitive: 'ByteString_reversed'>
75         self primitiveFailed!
76         
78 "testing"
80 ByteString method!
81 isByteString
82         ^ true!
85 "private"
87 ByteString method!
88 initializeWithBytes: aByteArray
89         | index |
91         index := 1.
93         [ index <= aByteArray size ]
94                 whileTrue: [ self byteAt: index put: (aByteArray at: index).
95                                          index := index + 1]!