Sen API
Sen Libraries
Loading...
Searching...
No Matches
enum_traits.h
Go to the documentation of this file.
1// === enum_traits.h ===================================================================================================
2// Sen Infrastructure
3// Released under the Apache License v2.0 (SPDX-License-Identifier Apache-2.0).
4// See the LICENSE.txt file for more information.
5// © Airbus SAS, Airbus Helicopters, and Airbus Defence and Space SAU/GmbH/SAS.
6// =====================================================================================================================
7
8#ifndef SEN_CORE_META_ENUM_TRAITS_H
9#define SEN_CORE_META_ENUM_TRAITS_H
10
12
13namespace sen
14{
15
16struct Var;
17
20
22template <typename T>
24{
25 static constexpr bool available = true;
26 using StorageType = std::underlying_type_t<T>;
27
28 static void write(OutputStream& out, T val) { impl::writeEnum<T>(out, val); }
29 static void read(InputStream& in, T& val) { impl::readEnum<T>(in, val); }
30 static void valueToVariant(const T& val, Var& var) { var = static_cast<StorageType>(val); }
31 static void variantToValue(const Var& var, T& val) { impl::enumVariantToValue<T>(var, val); }
32 [[nodiscard]] static uint32_t serializedSize(T val) noexcept { return impl::enumSerializedSize<T>(val); }
33};
34
36
37} // namespace sen
38
39#endif // SEN_CORE_META_ENUM_TRAITS_H
InputStreamTemplate< LittleEndian > InputStream
Definition input_stream.h:84
Definition assert.h:17
OutputStreamTemplate< LittleEndian > OutputStream
Definition output_stream.h:64
Base class for enum traits.
Definition enum_traits.h:24
static void read(InputStream &in, T &val)
Definition enum_traits.h:29
static void write(OutputStream &out, T val)
Definition enum_traits.h:28
static void variantToValue(const Var &var, T &val)
Definition enum_traits.h:31
static uint32_t serializedSize(T val) noexcept
Definition enum_traits.h:32
static constexpr bool available
Definition enum_traits.h:25
std::underlying_type_t< T > StorageType
Definition enum_traits.h:26
static void valueToVariant(const T &val, Var &var)
Definition enum_traits.h:30
Can hold any supported value type. Wraps std::variant to allow recursion and implements some helpers.
Definition var.h:119