123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182 |
- namespace Invercargill {
- [GenericAccessors]
- public interface AddressableBytes : Addressable<uint8>, ReadOnlyAddressableBytes {
- public virtual void set_int64(uint index, int64 value, Endianness endianness) throws IndexError {
- var chunk = new uint8[sizeof(int64)];
- int64 val;
- switch (endianness) {
- case Endianness.Native:
- val = value;
- break;
- case Endianness.BigEndian:
- val = value.to_big_endian();
- break;
- case Endianness.LittleEndian:
- val = value.to_little_endian();
- break;
- }
- Memory.copy(chunk, &val, sizeof(int64));
- set_data(index, chunk);
- }
- public virtual void set_all_int64(uint index, Enumerable<int64?> values, Endianness endianness) throws IndexError {
- foreach(var value in values) {
- set_int64(index, value, endianness);
- }
- }
- public virtual void set_uint64(uint index, uint64 value, Endianness endianness) throws IndexError {
- var chunk = new uint8[sizeof(uint64)];
- uint64 val;
- switch (endianness) {
- case Endianness.Native:
- val = value;
- break;
- case Endianness.BigEndian:
- val = value.to_big_endian();
- break;
- case Endianness.LittleEndian:
- val = value.to_little_endian();
- break;
- }
- Memory.copy(chunk, &val, sizeof(uint64));
- set_data(index, chunk);
- }
- public virtual void set_all_uint64(uint index, Enumerable<uint64?> values, Endianness endianness) throws IndexError {
- foreach(var value in values) {
- set_uint64(index, value, endianness);
- }
- }
- public virtual void set_int32(uint index, int32 value, Endianness endianness) throws IndexError {
- var chunk = new uint8[sizeof(int32)];
- int32 val;
- switch (endianness) {
- case Endianness.Native:
- val = value;
- break;
- case Endianness.BigEndian:
- val = value.to_big_endian();
- break;
- case Endianness.LittleEndian:
- val = value.to_little_endian();
- break;
- }
- Memory.copy(chunk, &val, sizeof(int32));
- set_data(index, chunk);
- }
- public virtual void set_all_int32(uint index, Enumerable<int32?> values, Endianness endianness) throws IndexError {
- foreach(var value in values) {
- set_int32(index, value, endianness);
- }
- }
- public virtual void set_uint32(uint index, uint32 value, Endianness endianness) throws IndexError {
- var chunk = new uint8[sizeof(uint32)];
- uint32 val;
- switch (endianness) {
- case Endianness.Native:
- val = value;
- break;
- case Endianness.BigEndian:
- val = value.to_big_endian();
- break;
- case Endianness.LittleEndian:
- val = value.to_little_endian();
- break;
- }
- Memory.copy(chunk, &val, sizeof(uint32));
- set_data(index, chunk);
- }
- public virtual void set_all_uint32(uint index, Enumerable<uint32?> values, Endianness endianness) throws IndexError {
- foreach(var value in values) {
- set_uint32(index, value, endianness);
- }
- }
- public virtual void set_int16(uint index, int16 value, Endianness endianness) throws IndexError {
- var chunk = new uint8[sizeof(int16)];
- int16 val;
- switch (endianness) {
- case Endianness.Native:
- val = value;
- break;
- case Endianness.BigEndian:
- val = value.to_big_endian();
- break;
- case Endianness.LittleEndian:
- val = value.to_little_endian();
- break;
- }
- Memory.copy(chunk, &val, sizeof(int16));
- set_data(index, chunk);
- }
- public virtual void set_all_int16(uint index, Enumerable<int16?> values, Endianness endianness) throws IndexError {
- foreach(var value in values) {
- set_int16(index, value, endianness);
- }
- }
- public virtual void set_uint16(uint index, uint16 value, Endianness endianness) throws IndexError {
- var chunk = new uint8[sizeof(uint16)];
- uint16 val;
- switch (endianness) {
- case Endianness.Native:
- val = value;
- break;
- case Endianness.BigEndian:
- val = value.to_big_endian();
- break;
- case Endianness.LittleEndian:
- val = value.to_little_endian();
- break;
- }
- Memory.copy(chunk, &val, sizeof(uint16));
- set_data(index, chunk);
- }
- public virtual void set_all_uint16(uint index, Enumerable<uint16?> values, Endianness endianness) throws IndexError {
- foreach(var value in values) {
- set_uint16(index, value, endianness);
- }
- }
- public virtual void set_int8(uint index, int8 value, Endianness endianness) throws IndexError {
- var chunk = new uint8[sizeof(int8)];
- Memory.copy(chunk, &value, sizeof(int8));
- set_data(index, chunk);
- }
- public virtual void set_all_int8(uint index, Enumerable<int8?> values, Endianness endianness) throws IndexError {
- foreach(var value in values) {
- set_int8(index, value, endianness);
- }
- }
- public virtual void set_uint8(uint index, uint8 value, Endianness endianness) throws IndexError {
- var chunk = new uint8[] { value };
- set_data(index, chunk);
- }
- public virtual void set_all_uint8(uint index, Enumerable<uint8?> values, Endianness endianness) throws IndexError {
- foreach(var value in values) {
- set_uint8(index, value, endianness);
- }
- }
- private void set_data(uint index, uint8[] data) throws IndexError {
- for(int i = 0; i < data.length; i++) {
- this[i + index] = data[i];
- }
- }
- }
- }
|