summaryrefslogtreecommitdiff
path: root/modules/codec/c++/stream_value.h
diff options
context:
space:
mode:
authorClaudius "keldu" Holeksa <mail@keldu.de>2024-01-23 13:12:11 +0100
committerClaudius "keldu" Holeksa <mail@keldu.de>2024-01-23 13:12:11 +0100
commit8dad985328e2183b224300aa992951131956fdb3 (patch)
treeceda3d9805335f36f571fb36585444ebdb421a02 /modules/codec/c++/stream_value.h
parenta9d2025030d0a7641f4b0701bd4aff7d2db5aeb4 (diff)
core,codec-json,codec-minecraft,codec-netcdf,codec,io-tls,io,io_codec,window,window-opengl:
Renamed file endings and changed includes
Diffstat (limited to 'modules/codec/c++/stream_value.h')
-rw-r--r--modules/codec/c++/stream_value.h64
1 files changed, 0 insertions, 64 deletions
diff --git a/modules/codec/c++/stream_value.h b/modules/codec/c++/stream_value.h
deleted file mode 100644
index b5a58bd..0000000
--- a/modules/codec/c++/stream_value.h
+++ /dev/null
@@ -1,64 +0,0 @@
-#pragma once
-
-#include "schema.h"
-
-#include <forstio/buffer.h>
-#include <forstio/error.h>
-
-#include <cstdint>
-#include <cstring>
-
-namespace saw {
-/**
- * Helper class to encode/decode any primtive type into/from litte endian.
- * The shift class does this by shifting bytes. This type of procedure is
- * platform independent. So it does not matter if the memory layout is
- * little endian or big endian
- */
-template<typename T> class shift_stream_value {
- static_assert(always_false<T>, "Shift Stream Value only supports Primitives");
-};
-
-template <typename T, size_t N> class shift_stream_value<schema::Primitive<T,N>> {
-public:
- inline static error_or<void> decode(typename native_data_type<schema::Primitive<T,N>>::type &val, buffer &buff) {
- if (buff.read_composite_length() < N) {
- return make_error<err::buffer_exhausted>();
- }
-
- typename native_data_type<schema::Primitive<schema::UnsignedInteger,N>>::type raw = 0;
-
- for (size_t i = 0; i < N; ++i) {
- raw |= (static_cast<typename native_data_type<schema::Primitive<T,N>>::type>(buff.read(i)) << (i * 8));
- }
-
- memcpy(&val, &raw, N);
- buff.read_advance(N);
-
- return void_t{};
- }
-
- inline static error_or<void> encode(const typename native_data_type<schema::Primitive<T,N>>::type &val, buffer &buff) {
- error err = buff.write_require_length(N);
- if (err.failed()) {
- return err;
- }
-
- typename native_data_type<schema::Primitive<schema::UnsignedInteger,N>>::type raw{};
- memcpy(&raw, &val, N);
-
- for (size_t i = 0; i < N; ++i) {
- buff.write(i) = raw >> (i * 8);
- }
-
- buff.write_advance(N);
-
- return void_t{};
- }
-
- inline static size_t size() { return N; }
-};
-
-template <typename T> using stream_value = shift_stream_value<T>;
-
-} // namespace saw