|
@@ -26,18 +26,45 @@ namespace Invercargill {
|
|
|
endianness = Endianness.Native;
|
|
|
}
|
|
|
|
|
|
+ public BinaryData.from_bytes(Bytes data) {
|
|
|
+ chunks = Invercargill.single(ate(data.get_data()));
|
|
|
+ endianness = Endianness.Native;
|
|
|
+ }
|
|
|
+
|
|
|
+ public BinaryData.from_byte_array(uint8[] data) {
|
|
|
+ chunks = Invercargill.single(ate(data));
|
|
|
+ endianness = Endianness.Native;
|
|
|
+ }
|
|
|
+
|
|
|
+ public BinaryData.from_base64(string data) {
|
|
|
+ chunks = Invercargill.single(ate(Base64.decode(data)));
|
|
|
+ endianness = Endianness.Native;
|
|
|
+ }
|
|
|
+
|
|
|
public void append(Enumerable<uint8> data) {
|
|
|
lock(chunks) {
|
|
|
chunks = chunks.with(data);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ public void append_all(Enumerable<Enumerable<uint8>> data) {
|
|
|
+ lock(chunks) {
|
|
|
+ chunks = chunks.concat(data);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
public void prepend(Enumerable<uint8> data) {
|
|
|
lock(chunks) {
|
|
|
chunks = Invercargill.single(data).concat(chunks);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ public void prepend_all(Enumerable<Enumerable<uint8>> data) {
|
|
|
+ lock(chunks) {
|
|
|
+ chunks = data.concat(chunks);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
public void append_byte_array(uint8[] data) {
|
|
|
append(ate(data.copy()));
|
|
|
}
|
|
@@ -88,6 +115,10 @@ namespace Invercargill {
|
|
|
append(ate(chunk));
|
|
|
}
|
|
|
|
|
|
+ public void push_all_int64(Enumerable<int64?> values) {
|
|
|
+ values.iterate(i => push_int64(i));
|
|
|
+ }
|
|
|
+
|
|
|
public void push_uint64(uint64 value) {
|
|
|
var chunk = new uint8[sizeof(uint64)];
|
|
|
uint64 val;
|
|
@@ -106,6 +137,11 @@ namespace Invercargill {
|
|
|
append(ate(chunk));
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ public void push_all_uint64(Enumerable<uint64?> values) {
|
|
|
+ values.iterate(i => push_uint64(i));
|
|
|
+ }
|
|
|
+
|
|
|
public void push_int32(int32 value) {
|
|
|
var chunk = new uint8[sizeof(int32)];
|
|
|
int32 val;
|
|
@@ -124,6 +160,10 @@ namespace Invercargill {
|
|
|
append(ate(chunk));
|
|
|
}
|
|
|
|
|
|
+ public void push_all_int32(Enumerable<int32?> values) {
|
|
|
+ values.iterate(i => push_int32(i));
|
|
|
+ }
|
|
|
+
|
|
|
public void push_uint32(uint32 value) {
|
|
|
var chunk = new uint8[sizeof(uint32)];
|
|
|
uint32 val;
|
|
@@ -142,6 +182,10 @@ namespace Invercargill {
|
|
|
append(ate(chunk));
|
|
|
}
|
|
|
|
|
|
+ public void push_all_uint32(Enumerable<uint32?> values) {
|
|
|
+ values.iterate(i => push_uint32(i));
|
|
|
+ }
|
|
|
+
|
|
|
public void push_int16(int16 value) {
|
|
|
var chunk = new uint8[sizeof(int16)];
|
|
|
int16 val;
|
|
@@ -160,6 +204,10 @@ namespace Invercargill {
|
|
|
append(ate(chunk));
|
|
|
}
|
|
|
|
|
|
+ public void push_all_int16(Enumerable<int16?> values) {
|
|
|
+ values.iterate(i => push_int16(i));
|
|
|
+ }
|
|
|
+
|
|
|
public void push_uint16(uint16 value) {
|
|
|
var chunk = new uint8[sizeof(uint16)];
|
|
|
uint16 val;
|
|
@@ -178,17 +226,29 @@ namespace Invercargill {
|
|
|
append(ate(chunk));
|
|
|
}
|
|
|
|
|
|
+ public void push_all_uint16(Enumerable<uint16?> values) {
|
|
|
+ values.iterate(i => push_uint16(i));
|
|
|
+ }
|
|
|
+
|
|
|
public void push_int8(int8 value) {
|
|
|
var chunk = new uint8[sizeof(int8)];
|
|
|
Memory.copy(chunk, &value, sizeof(int8));
|
|
|
append(ate(chunk));
|
|
|
}
|
|
|
|
|
|
+ public void push_all_int8(Enumerable<int8?> values) {
|
|
|
+ values.iterate(i => push_int8(i));
|
|
|
+ }
|
|
|
+
|
|
|
public void push_uint8(uint8 value) {
|
|
|
var chunk = new uint8[] { value };
|
|
|
append(ate(chunk));
|
|
|
}
|
|
|
|
|
|
+ public void push_all_uint8(Enumerable<uint8?> values) {
|
|
|
+ values.iterate(i => push_uint8(i));
|
|
|
+ }
|
|
|
+
|
|
|
public string to_escaped_string() {
|
|
|
var builder = new StringBuilder();
|
|
|
foreach (var byte in this) {
|