27template <
long long int TOffset,
typename TBase>
28class SerOffset :
public TBase
30 using BaseImpl = TBase;
31 static const auto Offset = TOffset;
34 using ValueType =
typename BaseImpl::ValueType;
35 using SerialisedType =
typename BaseImpl::SerialisedType;
36 using Endian =
typename BaseImpl::Endian;
38 SerOffset() =
default;
40 explicit SerOffset(
const ValueType& val)
45 explicit SerOffset(ValueType&& val)
46 : BaseImpl(
std::move(val))
50 SerOffset(
const SerOffset&) =
default;
51 SerOffset(SerOffset&&) =
default;
52 SerOffset& operator=(
const SerOffset&) =
default;
53 SerOffset& operator=(SerOffset&&) =
default;
55 template <
typename TIter>
58 if (size < BaseImpl::length()) {
66 template <
typename TIter>
67 void readNoStatus(TIter& iter)
69 auto serialisedValue =
70 comms::util::readData<SerialisedType>(iter,
Endian());
71 BaseImpl::setValue(fromSerialised(serialisedValue));
74 template <
typename TIter>
75 ErrorStatus write(TIter& iter, std::size_t size)
const
77 if (size < BaseImpl::length()) {
85 template <
typename TIter>
86 void writeNoStatus(TIter& iter)
const
91 static constexpr SerialisedType toSerialised(ValueType val)
93 return adjustToSerialised(BaseImpl::toSerialised(val));
96 static constexpr ValueType fromSerialised(SerialisedType val)
98 return BaseImpl::fromSerialised(adjustFromSerialised(val));
102 static SerialisedType adjustToSerialised(SerialisedType val)
104 return static_cast<SerialisedType
>(Offset + val);
107 static SerialisedType adjustFromSerialised(SerialisedType val)
109 return static_cast<SerialisedType
>((-Offset) + val);
This file contain definition of error statuses used by comms module.
Contains functions for raw data access / (de)serialization.
comms::option::def::Endian< TEndian > Endian
Same as comms::option::def::Endian.
Definition options.h:1473
void writeData(T value, TIter &iter, const traits::endian::Big &endian)
Same as writeBig<T, TIter>()
Definition access.h:707
Main namespace for all classes / functions of COMMS library.
ErrorStatus
Error statuses reported by the Communication module.
Definition ErrorStatus.h:19
@ Success
Used to indicate successful outcome of the operation.