| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- namespace Invercargill.DataStructures {
- public class ByteBuffer : Buffer<uint8>, Hashable, Sticky<BinaryData, uint8>, BinaryData, ReadOnlyAddressableBytes, AddressableBytes {
- public ByteBuffer(uint size) {
- base(size);
- }
- public uint hash_code() {
- return aggregate<uint>(5381, (h, b) => h * 33 + b);
- }
- protected BinaryData adhere(Enumerable<uint8> enumerable) {
- return enumerable.assert_promotion<BinaryData>();
- }
- public ByteBuffer.from_enumerable(Enumerable<uint8> data) {
- base.take_array(data.to_array());
- }
- public ByteBuffer.from_bytes(Bytes data) {
- base.take_array(data.get_data());
- }
- public ByteBuffer.from_byte_array(uint8[] data) {
- base.take_array(data);
- }
- public ByteBuffer.from_base64(string data) {
- base.take_array(Base64.decode(data));
- }
- public ByteBuffer.from_hex(string data) {
- var groomed = data.replace(" ", "").replace("-", "").replace(":", "").replace("0x", "");
- base(groomed.length/2);
- for(var i = 0; i < groomed.length/2; i++) {
- non_error(() => this[i] = (uint8)uint.parse(groomed[i*2:(i+1)*2], 16));
- }
- }
- }
- }
|