From 3bee2457a679f164da912a8833321befbbef1f56 Mon Sep 17 00:00:00 2001 From: Claudius Holeksa Date: Sun, 5 Dec 2021 18:31:55 +0100 Subject: [PATCH] container for primitive and structs added --- source/kelgin/message.h | 3 +- source/kelgin/message_container.h | 61 +++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+), 2 deletions(-) diff --git a/source/kelgin/message.h b/source/kelgin/message.h index d14f4aa..8277f35 100644 --- a/source/kelgin/message.h +++ b/source/kelgin/message.h @@ -34,7 +34,6 @@ public: * singular types or has some form of encoding in a buffer present */ - /* * Struct Message */ @@ -92,7 +91,7 @@ public: Reader(MessageType &msg) : message{msg} {} Builder asBuilder() { return Builder{message}; } - + /* * Get member by index */ diff --git a/source/kelgin/message_container.h b/source/kelgin/message_container.h index fd2b53c..82633f6 100644 --- a/source/kelgin/message_container.h +++ b/source/kelgin/message_container.h @@ -45,4 +45,65 @@ public: template Element &get() { return std::get(values); } }; + +/* + * Helper for the basic message container, so the class doesn't have to be + * specialized 10 times. + */ +template struct PrimitiveTypeHelper; + +struct PrimitiveTypeHelper> { + using Type = int8_t; +}; + +struct PrimitiveTypeHelper> { + using Type = int16_t; +}; + +struct PrimitiveTypeHelper> { + using Type = int32_t; +}; + +struct PrimitiveTypeHelper> { + using Type = int64_t; +}; + +struct PrimitiveTypeHelper> { + using Type = uint8_t; +}; + +struct PrimitiveTypeHelper> { + using Type = uint16_t; +}; + +struct PrimitiveTypeHelper> { + using Type = uint32_t; +}; + +struct PrimitiveTypeHelper> { + using Type = uint64_t; +}; + +struct PrimitiveTypeHelper> { + using Type = float; +}; + +struct PrimitiveTypeHelper> { + using Type = double; +}; + +template class MessageContainer> { +public: + using ValueType = PrimitiveTypeHelper>::Type; + +private: + ValueType value; + +public: + MessageContainer() : value{0} {} + + void set(const ValueType &v) { value = v; } + + const T &get() { return value; } +}; } // namespace gin