aboutsummaryrefslogtreecommitdiff
path: root/src/stream.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/stream.cpp')
-rw-r--r--src/stream.cpp43
1 files changed, 39 insertions, 4 deletions
diff --git a/src/stream.cpp b/src/stream.cpp
index 71a5b27..f5d4ac9 100644
--- a/src/stream.cpp
+++ b/src/stream.cpp
@@ -6,8 +6,21 @@ extern "C" {
uint256_t *uint256_new() { return new uint256_t(); }
uint256_t *uint256_new_from_bytes(const uint8_t *arr) {
- return new uint256_t(arr);
+ try {
+ return new uint256_t(arr);
+ } catch (...) {
+ return nullptr;
+ }
}
+
+uint256_t *uint256_new_from_bytearray(const bytearray_t *bytes) {
+ try {
+ return new uint256_t(*bytes);
+ } catch (...) {
+ return nullptr;
+ }
+}
+
void uint256_free(const uint256_t *self) { delete self; }
bool uint256_is_null(const uint256_t *self) { return self->is_null(); }
@@ -39,6 +52,22 @@ datastream_t *datastream_new_from_bytes(const uint8_t *base, size_t size) {
}
}
+datastream_t *datastream_new_from_bytearray(const bytearray_t *bytes) {
+ try {
+ return new datastream_t(*bytes);
+ } catch (...) {
+ return nullptr;
+ }
+}
+
+datastream_t *datastream_new_moved_from_bytearray(bytearray_t *bytes) {
+ try {
+ return new datastream_t(std::move(*bytes));
+ } catch (...) {
+ return nullptr;
+ }
+}
+
void datastream_free(const datastream_t *self) { delete self; }
datastream_t *datastream_copy(const datastream_t *self) {
@@ -98,9 +127,15 @@ uint256_t *datastream_get_hash(const datastream_t *self) {
bytearray_t *bytearray_new_moved_from_datastream(datastream_t *_moved_src) {
try {
- auto res = new bytearray_t(std::move(*_moved_src));
- //delete _moved_src;
- return res;
+ return new bytearray_t(std::move(*_moved_src));
+ } catch (...) {
+ return nullptr;
+ }
+}
+
+bytearray_t *bytearray_new_from_hex(const char *hex_str) {
+ try {
+ return new bytearray_t(salticidae::from_hex(hex_str));
} catch (...) {
return nullptr;
}