diff options
author | dec05eba <dec05eba@protonmail.com> | 2018-02-01 20:56:03 +0100 |
---|---|---|
committer | Aleksi Lindeman <aleksi_888@hotmail.com> | 2018-02-01 20:56:11 +0100 |
commit | 91418b32d7b67c335eb3baffc0bf381c04f68035 (patch) | |
tree | 37afbd00ee237b039baa83042567d7be9ec0f742 /sibs/SafeSerializer.hpp | |
parent | d6f8d63dc4ed077fa986a78d6390fa4497110152 (diff) |
Initial commit0.1.0
Diffstat (limited to 'sibs/SafeSerializer.hpp')
-rw-r--r-- | sibs/SafeSerializer.hpp | 44 |
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; + }; +} |