aboutsummaryrefslogtreecommitdiff
path: root/sibs/SafeSerializer.hpp
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2018-02-01 20:56:03 +0100
committerAleksi Lindeman <aleksi_888@hotmail.com>2018-02-01 20:56:11 +0100
commit91418b32d7b67c335eb3baffc0bf381c04f68035 (patch)
tree37afbd00ee237b039baa83042567d7be9ec0f742 /sibs/SafeSerializer.hpp
parentd6f8d63dc4ed077fa986a78d6390fa4497110152 (diff)
Initial commit0.1.0
Diffstat (limited to 'sibs/SafeSerializer.hpp')
-rw-r--r--sibs/SafeSerializer.hpp44
1 files changed, 44 insertions, 0 deletions
diff --git a/sibs/SafeSerializer.hpp b/sibs/SafeSerializer.hpp
new file mode 100644
index 0000000..94bcdc5
--- /dev/null
+++ b/sibs/SafeSerializer.hpp
@@ -0,0 +1,44 @@
+#pragma once
+
+#include "../types.hpp"
+#include "../utils.hpp"
+#include <vector>
+#include <cstring>
+
+namespace sibs
+{
+ /**
+ * Endian independent serializer
+ */
+ class SafeSerializer
+ {
+ DISABLE_COPY(SafeSerializer);
+ public:
+ SafeSerializer(){}
+
+ template <typename T>
+ void add(const T &data)
+ {
+ usize offset = buffer.size();
+ buffer.resize(buffer.size() + sizeof(data));
+ memcpy(&buffer[offset], &data, sizeof(data));
+ }
+
+ void add(const u8 *data, usize size)
+ {
+ if(size > 0)
+ {
+ usize offset = buffer.size();
+ buffer.resize(buffer.size() + size);
+ memcpy(&buffer[offset], data, size);
+ }
+ }
+
+ std::vector<u8>& getBuffer()
+ {
+ return buffer;
+ }
+ private:
+ std::vector<u8> buffer;
+ };
+}