Sen API
Sen Libraries
Toggle main menu visibility
Loading...
Searching...
No Matches
quantity_traits.h
Go to the documentation of this file.
1
// === quantity_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_QUANTITY_TRAITS_H
9
#define SEN_CORE_META_QUANTITY_TRAITS_H
10
11
// sen
12
#include "
sen/core/io/input_stream.h
"
13
#include "
sen/core/io/output_stream.h
"
14
#include "
sen/core/io/util.h
"
15
#include "
sen/core/meta/quantity_type.h
"
16
#include "
sen/core/meta/type_traits.h
"
17
#include "
sen/core/meta/var.h
"
18
19
// std
20
#include <cstdint>
21
#include <string>
22
23
namespace
sen
24
{
25
26
struct
Var
;
27
30
32
template
<
typename
T>
33
struct
QuantityTraitsBase
34
{
35
using
ValueType
=
typename
T::ValueType;
36
37
static
constexpr
bool
available
=
true
;
38
39
static
void
write
(
OutputStream
& out, T val) { impl::writeQuantity<T>(out, val); }
40
static
void
read
(
InputStream
& in, T& val) { impl::readQuantity<T>(in, val); }
41
static
void
valueToVariant
(T val,
Var
& var) { impl::quantityToVariant<T>(val, var); }
42
static
void
variantToValue
(
const
Var
& var, T& val) { impl::variantToQuantity<T>(var, val); }
43
[[nodiscard]]
static
uint32_t
serializedSize
(
const
T& val)
noexcept
44
{
45
return
SerializationTraits<ValueType>::serializedSize
(val.get());
46
}
47
48
static
std::string
toJsonString
(T val)
49
{
50
Var
var;
51
valueToVariant
(val, var);
52
return
toJson
(var);
53
}
54
55
static
void
fromJsonString
(
const
std::string& str, T& val)
56
{
57
const
Var
var =
fromJson
(str);
58
variantToValue
(var, val);
59
}
60
};
61
63
64
}
// namespace sen
65
66
#endif
// SEN_CORE_META_QUANTITY_TRAITS_H
util.h
sen::InputStream
InputStreamTemplate< LittleEndian > InputStream
Definition
input_stream.h:84
sen::SerializationTraits
Definition
type_traits.h:47
sen::toJson
std::string toJson(const Var &var, int indent=2)
Converts a variant into its Json representation. See https://www.Json.org/Json-en....
sen::fromJson
Var fromJson(const std::string &str)
Inverse as toJson.
input_stream.h
sen
Definition
assert.h:17
sen::OutputStream
OutputStreamTemplate< LittleEndian > OutputStream
Definition
output_stream.h:64
output_stream.h
quantity_type.h
sen::QuantityTraitsBase
Base class for quantity traits.
Definition
quantity_traits.h:34
sen::QuantityTraitsBase::available
static constexpr bool available
Definition
quantity_traits.h:37
sen::QuantityTraitsBase::ValueType
typename T::ValueType ValueType
Definition
quantity_traits.h:35
sen::QuantityTraitsBase::toJsonString
static std::string toJsonString(T val)
Definition
quantity_traits.h:48
sen::QuantityTraitsBase::read
static void read(InputStream &in, T &val)
Definition
quantity_traits.h:40
sen::QuantityTraitsBase::valueToVariant
static void valueToVariant(T val, Var &var)
Definition
quantity_traits.h:41
sen::QuantityTraitsBase::serializedSize
static uint32_t serializedSize(const T &val) noexcept
Definition
quantity_traits.h:43
sen::QuantityTraitsBase::fromJsonString
static void fromJsonString(const std::string &str, T &val)
Definition
quantity_traits.h:55
sen::QuantityTraitsBase::write
static void write(OutputStream &out, T val)
Definition
quantity_traits.h:39
sen::QuantityTraitsBase::variantToValue
static void variantToValue(const Var &var, T &val)
Definition
quantity_traits.h:42
sen::Var
Can hold any supported value type. Wraps std::variant to allow recursion and implements some helpers.
Definition
var.h:119
type_traits.h
var.h
libs
core
include
sen
core
meta
quantity_traits.h
Generated by
1.17.0