COMMS
Template library intended to help with implementation of communication protocols.
Loading...
Searching...
No Matches
options.h
Go to the documentation of this file.
1//
2// Copyright 2014 - 2025 (C). Alex Robenko. All rights reserved.
3//
4// This Source Code Form is subject to the terms of the Mozilla Public
5// License, v. 2.0. If a copy of the MPL was not distributed with this
6// file, You can obtain one at http://mozilla.org/MPL/2.0/.
7
10
11#pragma once
12
13#include "comms/ErrorStatus.h"
15#include "comms/traits.h"
17
18#include <cstddef>
19#include <cstdint>
20#include <limits>
21#include <ratio>
22#include <tuple>
23#include <type_traits>
24
25namespace comms
26{
27
28namespace option
29{
30
31namespace details
32{
33
34template <typename T>
35struct IsRatio
36{
37 static const bool Value = false;
38};
39
40template <std::intmax_t TNum, std::intmax_t TDen>
41struct IsRatio<std::ratio<TNum, TDen> >
42{
43 static const bool Value = true;
44};
45
46template <typename T>
47constexpr bool isRatio()
48{
49 return IsRatio<T>::Value;
50}
51
52template<typename T, T TVal>
53struct DefaultNumValueInitialiser
54{
55 template <typename TField>
56 void operator()(TField&& field)
57 {
58 using FieldType = typename std::decay<TField>::type;
59 using ValueType = typename FieldType::ValueType;
60 field.value() = static_cast<ValueType>(TVal);
61 }
62};
63
64template<std::intmax_t TMinValue, std::intmax_t TMaxValue>
65struct NumValueRangeValidator
66{
67 static_assert(
68 TMinValue <= TMaxValue,
69 "Min value must be not greater than Max value");
70
71 template <typename TField>
72 constexpr bool operator()(const TField& field) const
73 {
74 using MinTag =
76 (std::numeric_limits<decltype(MinValue)>::min() < MinValue)
77 >::template Type<
78 CompareTag,
79 ReturnTrueTag
80 >;
81
82 using MaxTag =
84 (MaxValue < std::numeric_limits<decltype(MaxValue)>::max())
85 >::template Type<
86 CompareTag,
87 ReturnTrueTag
88 >::type;
89
90 return aboveMin(field.value(), MinTag()) && belowMax(field.value(), MaxTag());
91 }
92
93private:
94 struct ReturnTrueTag {};
95 struct CompareTag {};
96
97 template <typename TValue>
98 static constexpr bool aboveMin(const TValue& value, CompareTag)
99 {
100 using ValueType = typename std::decay<decltype(value)>::type;
101 return (static_cast<ValueType>(MinValue) <= static_cast<ValueType>(value));
102 }
103
104 template <typename TValue>
105 static constexpr bool aboveMin(const TValue&, ReturnTrueTag)
106 {
107 return true;
108 }
109
110 template <typename TValue>
111 static constexpr bool belowMax(const TValue& value, CompareTag)
112 {
113 using ValueType = typename std::decay<decltype(value)>::type;
114 return (value <= static_cast<ValueType>(MaxValue));
115 }
116
117 template <typename TValue>
118 static constexpr bool belowMax(const TValue&, ReturnTrueTag)
119 {
120 return true;
121 }
122
123 static const auto MinValue = TMinValue;
124 static const auto MaxValue = TMaxValue;
125};
126
127template<std::uintmax_t TMask, std::uintmax_t TValue>
128struct BitmaskReservedBitsValidator
129{
130 template <typename TField>
131 constexpr bool operator()(TField&& field) const
132 {
133 using FieldType = typename std::decay<TField>::type;
134 using ValueType = typename FieldType::ValueType;
135
136 return (field.value() & static_cast<ValueType>(TMask)) == static_cast<ValueType>(TValue);
137 }
138};
139
140template <comms::field::OptionalMode TVal>
141struct DefaultOptModeInitialiser
142{
143 template <typename TField>
144 void operator()(TField& field) const
145 {
146 field.setMode(TVal);
147 }
148};
149
150template<std::size_t TIdx>
151struct DefaultVariantIndexInitialiser
152{
153 template <typename TField>
154 void operator()(TField& field)
155 {
156 field.template initField<TIdx>();
157 }
158};
159
160} // namespace details
161
162namespace def {
163
168template <typename TEndian>
169struct Endian
170{
171};
172
176
180
184template <typename T>
185struct MsgIdType {};
186
190template <std::intmax_t TId>
192
195struct NoIdImpl {};
196
199template <typename TMsg>
200struct MsgType {};
201
204template <typename TField>
205struct FieldType {};
206
215template <typename TFields>
217
223template <std::size_t TIdx>
225
231template <typename TFields>
233
235template <typename... TFields>
236struct FieldsImpl<std::tuple<TFields...> >
237{
238};
240
244
248struct HasDoGetId {};
249
256
277template<std::size_t TLen, bool TSignExtend = true>
278struct FixedLength {};
279
307template<std::size_t TLen, bool TSignExtend = true>
309
333template<std::size_t TMin, std::size_t TMax>
335{
336 static_assert(TMin <= TMax, "TMin must not be greater that TMax.");
337};
338
345{
346};
347
375template<std::intmax_t TOffset>
377
406template <std::intmax_t TNum, std::intmax_t TDenom>
408{
409 static_assert(TNum != 0, "Wrong scaling ratio");
410 static_assert(TDenom != 0, "Wrong scaling ratio");
411};
412
435template <typename TField>
437
462template <typename TField, comms::ErrorStatus TReadErrorStatus = comms::ErrorStatus::InvalidMsgData>
464
472template <typename TField, comms::ErrorStatus TReadErrorStatus = comms::ErrorStatus::InvalidMsgData>
474
484template <typename TField, comms::ErrorStatus TReadErrorStatus = comms::ErrorStatus::InvalidMsgData>
486
504template <typename TField>
506
528template <typename TField>
530
543
557
569
576template <std::size_t TSize>
578
613template <typename T>
615
659template <typename T>
661
671template <comms::ErrorStatus TStatus = comms::ErrorStatus::InvalidMsgData>
673
682
689template <typename TType, typename TRatio>
690struct Units
691{
692 static_assert(details::isRatio<TRatio>(),
693 "TRatio parameter must be a variant of std::ratio");
694
695 static_assert(TRatio::num != 0, "Wrong ratio value");
696 static_assert(TRatio::den != 0, "Wrong ratio value");
697};
698
703
708
713
718
723
728
733
738
743
748
753
758
763
768
773
778
783
788
793
798
803
808
813
818
823
828
833
838
843
848
853
858
863
868
873
878
883
888
893
898
903
908
917template<std::intmax_t TVal>
920 details::DefaultNumValueInitialiser<std::intmax_t, TVal>
921 >;
922
931template<std::uintmax_t TVal>
934 details::DefaultNumValueInitialiser<std::uintmax_t, TVal>
935 >;
936
952template<std::intmax_t TMinValue, std::intmax_t TMaxValue>
954{
955 static_assert(TMinValue <= TMaxValue, "Invalid range");
956};
957
960
966template<std::intmax_t TMinValue, std::intmax_t TMaxValue>
968 std::tuple<
971 >;
972
975template<std::intmax_t TValue>
977
981template<std::intmax_t TValue>
983
997template<std::uintmax_t TMinValue, std::uintmax_t TMaxValue>
999{
1000 static_assert(TMinValue <= TMaxValue, "Invalid range");
1001};
1002
1008template<std::uintmax_t TMinValue, std::uintmax_t TMaxValue>
1010 std::tuple<
1013 >;
1014
1017template<std::uintmax_t TValue>
1019
1023template<std::uintmax_t TValue>
1025
1037template<std::uintmax_t TMask, std::uintmax_t TValue = 0U>
1039
1046template<comms::field::OptionalMode TVal>
1048
1055
1062
1065
1068
1073template <std::size_t TIdx>
1075
1080
1087
1092template <typename TEscField = void>
1094
1104
1109
1117
1121
1129
1133
1142
1146
1151
1156
1161
1164struct HasName {};
1165
1172
1175struct PseudoValue {};
1176
1180template <typename T>
1182{
1183 static_assert(std::is_integral<T>::value, "Only unsigned integral types are supported for versions");
1184 static_assert(std::is_unsigned<T>::value, "Only unsigned integral types are supported for versions");
1185};
1186
1191
1198template <std::uintmax_t TFrom, std::uintmax_t TUntil>
1200{
1201 static_assert(TFrom <= TUntil, "Invalid version parameters");
1202};
1203
1209template <std::uintmax_t TVer>
1211
1217template <std::uintmax_t TVer>
1219
1223
1228
1232template <typename T>
1234
1238template <std::size_t TIdx>
1240
1245
1250
1256
1263template <bool TVersionDependent>
1265
1267struct FixedValue {};
1268
1272template <std::intmax_t TOffset>
1274
1275} // namespace def
1276
1277namespace app
1278{
1279
1282struct EmptyOption {};
1283
1287template <typename TIter>
1289
1293template <typename TIter>
1295
1299
1303
1307
1311
1315
1319template <typename T>
1320struct Handler {};
1321
1326
1330struct NoReadImpl {};
1331
1335struct NoWriteImpl {};
1336
1340struct NoValidImpl {};
1341
1346
1351
1356
1361template <typename TGenericMessage>
1363
1377template <std::size_t TSize>
1379
1394template <typename TType>
1396
1405
1410
1432
1435template <typename T>
1437
1441
1445
1449
1453template <typename TFactory>
1454struct MsgFactory {};
1455
1461template <template<typename, typename, typename...> class TFactory>
1463
1464} // namespace app
1465
1466// Definition options
1467
1470template <typename TEndian>
1472
1476
1480
1483template <typename T>
1485
1488template <std::intmax_t TId>
1490
1494
1497template <typename TMsg>
1499
1502template <typename TMsg>
1504
1507template <typename TFields>
1509
1512template <std::size_t TIdx>
1514
1517template <typename TFields>
1519
1523
1527
1531
1534template<std::size_t TLen, bool TSignExtend = true>
1536
1539template<std::size_t TLen, bool TSignExtend = true>
1541
1544template<std::size_t TMin, std::size_t TMax>
1546
1549template<std::intmax_t TOffset>
1551
1554template <std::intmax_t TNum, std::intmax_t TDenom>
1556
1559template <typename TField>
1561
1564template <typename TField, comms::ErrorStatus TReadErrorStatus = comms::ErrorStatus::InvalidMsgData>
1567
1570template <typename TField, comms::ErrorStatus TReadErrorStatus = comms::ErrorStatus::InvalidMsgData>
1573
1576template <typename TField, comms::ErrorStatus TReadErrorStatus = comms::ErrorStatus::InvalidMsgData>
1579
1582template <typename TField>
1584
1587template <typename TField>
1589
1593
1597
1601
1604template <std::size_t TSize>
1606
1609template <typename T>
1611
1614template <comms::ErrorStatus TStatus = comms::ErrorStatus::InvalidMsgData>
1616
1620
1623template <typename TType, typename TRatio>
1625
1629
1633
1637
1641
1645
1649
1653
1657
1661
1665
1669
1673
1677
1681
1685
1689
1693
1697
1701
1705
1709
1713
1717
1721
1725
1729
1733
1737
1741
1745
1749
1753
1757
1761
1765
1769
1773
1777
1781
1785
1789
1793
1796template<std::intmax_t TVal>
1798
1801template<std::uintmax_t TVal>
1803
1806template<std::intmax_t TMinValue, std::intmax_t TMaxValue>
1808
1812
1815template<std::intmax_t TMinValue, std::intmax_t TMaxValue>
1817
1820template<std::intmax_t TValue>
1822
1825template<std::intmax_t TValue>
1827
1830template<std::uintmax_t TMinValue, std::uintmax_t TMaxValue>
1833
1836template<std::uintmax_t TMinValue, std::uintmax_t TMaxValue>
1839
1842template<std::uintmax_t TValue>
1845
1848template<std::uintmax_t TValue>
1851
1854template<std::uintmax_t TMask, std::uintmax_t TValue = 0U>
1856
1859template<comms::field::OptionalMode TVal>
1861
1865
1869
1873
1877
1880template <std::size_t TIdx>
1882
1886
1890
1894
1899
1904
1908
1912
1916
1920
1924
1927template <typename T>
1929
1933
1936template <std::uintmax_t TFrom, std::uintmax_t TUntil>
1938
1941template <std::uintmax_t TVer>
1943
1946template <std::uintmax_t TVer>
1948
1952
1956
1959template <typename T>
1961
1964template <std::size_t TIdx>
1966
1967// Application customization options
1968
1972
1975template <typename TIter>
1977
1980template <typename TIter>
1982
1986
1990
1994
1998
2002
2005template <typename T>
2007
2011
2015
2019
2023
2027
2031
2035
2038template <typename TGenericMessage>
2040
2043template <std::size_t TSize>
2045
2048template <typename TType>
2050
2054
2058
2062
2065template <typename T>
2067
2071
2075
2079
2080} // namespace option
2081
2082} // namespace comms
2083
This file contain definition of error statuses used by comms module.
Contains definition of the mode used for comms::field::Optional fields.
ForceDispatch< comms::traits::dispatch::LinearSwitch > ForceDispatchLinearSwitch
Force generation of linear switch statmenets for dispatch logic of message object and/or message obje...
Definition options.h:1448
ForceDispatch< comms::traits::dispatch::StaticBinSearch > ForceDispatchStaticBinSearch
Force generation of static binary search dispatch logic for message object and/or message object type...
Definition options.h:1444
ForceDispatch< comms::traits::dispatch::Polymorphic > ForceDispatchPolymorphic
Force generation of v-tables and polymorphic dispatch logic for message object and/or message object ...
Definition options.h:1440
Units< comms::traits::units::Speed, comms::traits::units::KilometersPerSecondRatio > UnitsKilometersPerSecond
Alias option, specifying field value units are "kilometers per second".
Definition options.h:797
std::tuple< ValidBigUnsignedNumValueRange< TMinValue, TMaxValue >, ValidRangesClear > ValidBigUnsignedNumValueRangeOverride
Similar to ValidBigUnsignedNumValueRange, but overrides (nullifies) all previously set valid values r...
Definition options.h:1013
Units< comms::traits::units::Distance, comms::traits::units::MicrometersRatio > UnitsMicrometers
Alias option, specifying field value units are "micrometers".
Definition options.h:747
Units< comms::traits::units::Time, comms::traits::units::HoursRatio > UnitsHours
Alias option, specifying field value units are "hours".
Definition options.h:727
Units< comms::traits::units::Frequency, comms::traits::units::MegaHzRatio > UnitsMegahertz
Alias option, specifying field value units are "megahertz".
Definition options.h:817
Units< comms::traits::units::Time, comms::traits::units::MinutesRatio > UnitsMinutes
Alias option, specifying field value units are "minutes".
Definition options.h:722
Units< comms::traits::units::Speed, comms::traits::units::KilometersPerHourRatio > UnitsKilometersPerHour
Alias option, specifying field value units are "kilometers per hour".
Definition options.h:802
Units< comms::traits::units::Current, comms::traits::units::NanoampsRatio > UnitsNanoamps
Alias option, specifying field value units are "nanoamps".
Definition options.h:837
Units< comms::traits::units::Time, comms::traits::units::WeeksRatio > UnitsWeeks
Alias option, specifying field value units are "weeks".
Definition options.h:737
Units< comms::traits::units::Memory, comms::traits::units::TerabytesRatio > UnitsTerabytes
Alias option, specifying field value units are "terabytes".
Definition options.h:907
Units< comms::traits::units::Memory, comms::traits::units::BytesRatio > UnitsBytes
Alias option, specifying field value units are "bytes".
Definition options.h:887
Units< comms::traits::units::Frequency, comms::traits::units::GigaHzRatio > UnitsGigahertz
Alias option, specifying field value units are "gigahertz".
Definition options.h:822
Units< comms::traits::units::Distance, comms::traits::units::MillimetersRatio > UnitsMillimeters
Alias option, specifying field value units are "millimeters".
Definition options.h:752
Units< comms::traits::units::Time, comms::traits::units::MillisecondsRatio > UnitsMilliseconds
Alias option, specifying field value units are "milliseconds".
Definition options.h:712
Units< comms::traits::units::Speed, comms::traits::units::MillimetersPerSecondRatio > UnitsMillimetersPerSecond
Alias option, specifying field value units are "millimeters per second".
Definition options.h:782
Units< comms::traits::units::Time, comms::traits::units::DaysRatio > UnitsDays
Alias option, specifying field value units are "days".
Definition options.h:732
Units< comms::traits::units::Distance, comms::traits::units::KilometersRatio > UnitsKilometers
Alias option, specifying field value units are "kilometers".
Definition options.h:767
std::tuple< ValidNumValueRange< TMinValue, TMaxValue >, ValidRangesClear > ValidNumValueRangeOverride
Similar to ValidNumValueRange, but overrides (nullifies) all previously set valid values ranges.
Definition options.h:971
ExistsByDefault OptionalExistsByDefault
Alias to DefaultOptionalMode<comms::field::OptinalMode::Exists>
Definition options.h:1067
Units< comms::traits::units::Speed, comms::traits::units::MicrometersPerSecondRatio > UnitsMicrometersPerSecond
Alias option, specifying field value units are "micrometers per second".
Definition options.h:777
Units< comms::traits::units::Speed, comms::traits::units::CentimetersPerSecondRatio > UnitsCentimetersPerSecond
Alias option, specifying field value units are "centimeters per second".
Definition options.h:787
Units< comms::traits::units::Voltage, comms::traits::units::NanovoltsRatio > UnitsNanovolts
Alias option, specifying field value units are "nanovolts".
Definition options.h:862
Units< comms::traits::units::Voltage, comms::traits::units::KilovoltsRatio > UnitsKilovolts
Alias option, specifying field value units are "kilovolts".
Definition options.h:882
Units< comms::traits::units::Angle, comms::traits::units::DegreesRatio > UnitsDegrees
Alias option, specifying field value units are "degrees".
Definition options.h:827
Endian< comms::traits::endian::Big > BigEndian
Alias option to Endian specifying Big endian.
Definition options.h:175
Units< comms::traits::units::Frequency, comms::traits::units::KiloHzRatio > UnitsKilohertz
Alias option, specifying field value units are "kilohertz".
Definition options.h:812
Units< comms::traits::units::Distance, comms::traits::units::NanometersRatio > UnitsNanometers
Alias option, specifying field value units are "nanometers".
Definition options.h:742
Units< comms::traits::units::Speed, comms::traits::units::NanometersPerSecondRatio > UnitsNanometersPerSecond
Alias option, specifying field value units are "nanometers per second".
Definition options.h:772
DefaultOptionalMode< comms::field::OptionalMode::Missing > MissingByDefault
Alias to DefaultOptionalMode.
Definition options.h:1054
ValidNumValueRangeOverride< TValue, TValue > ValidNumValueOverride
Alias to ValidNumValueRangeOverride.
Definition options.h:982
Units< comms::traits::units::Voltage, comms::traits::units::VoltsRatio > UnitsVolts
Alias option, specifying field value units are "volts".
Definition options.h:877
HasCustomRefresh HasDoRefresh
Option that notifies comms::MessageBase about existence of custom refresh functionality in derived cl...
Definition options.h:1171
Units< comms::traits::units::Current, comms::traits::units::AmpsRatio > UnitsAmps
Alias option, specifying field value units are "amps".
Definition options.h:852
Units< comms::traits::units::Angle, comms::traits::units::RadiansRatio > UnitsRadians
Alias option, specifying field value units are "radians".
Definition options.h:832
Units< comms::traits::units::Frequency, comms::traits::units::HzRatio > UnitsHertz
Alias option, specifying field value units are "hertz".
Definition options.h:807
Units< comms::traits::units::Voltage, comms::traits::units::MillivoltsRatio > UnitsMillivolts
Alias option, specifying field value units are "millivolts".
Definition options.h:872
EmptySerialization EmptySerialisation
Same as EmptySerialization.
Definition options.h:1108
Units< comms::traits::units::Current, comms::traits::units::MicroampsRatio > UnitsMicroamps
Alias option, specifying field value units are "microamps".
Definition options.h:842
MissingByDefault OptionalMissingByDefault
Alias to DefaultOptionalMode<comms::field::OptinalMode::Missing>
Definition options.h:1064
Units< comms::traits::units::Distance, comms::traits::units::MetersRatio > UnitsMeters
Alias option, specifying field value units are "meters".
Definition options.h:762
Units< comms::traits::units::Memory, comms::traits::units::KilobytesRatio > UnitsKilobytes
Alias option, specifying field value units are "kilobytes".
Definition options.h:892
Units< comms::traits::units::Current, comms::traits::units::KiloampsRatio > UnitsKiloamps
Alias option, specifying field value units are "kiloamps".
Definition options.h:857
Units< comms::traits::units::Voltage, comms::traits::units::MicrovoltsRatio > UnitsMicrovolts
Alias option, specifying field value units are "microvolts".
Definition options.h:867
Units< comms::traits::units::Memory, comms::traits::units::MegabytesRatio > UnitsMegabytes
Alias option, specifying field value units are "megabytes".
Definition options.h:897
Units< comms::traits::units::Time, comms::traits::units::MicrosecondsRatio > UnitsMicroseconds
Alias option, specifying field value units are "microseconds".
Definition options.h:707
Units< comms::traits::units::Time, comms::traits::units::NanosecondsRatio > UnitsNanoseconds
Alias option, specifying field value units are "nanoseconds".
Definition options.h:702
Units< comms::traits::units::Distance, comms::traits::units::CentimetersRatio > UnitsCentimeters
Alias option, specifying field value units are "centimeters".
Definition options.h:757
DefaultOptionalMode< comms::field::OptionalMode::Exists > ExistsByDefault
Alias to DefaultOptionalMode.
Definition options.h:1061
Units< comms::traits::units::Current, comms::traits::units::MilliampsRatio > UnitsMilliamps
Alias option, specifying field value units are "milliamps".
Definition options.h:847
ValidBigUnsignedNumValueRangeOverride< TValue, TValue > ValidBigUnsignedNumValueOverride
Alias to ValidBigUnsignedNumValueRangeOverride.
Definition options.h:1024
Units< comms::traits::units::Speed, comms::traits::units::MetersPerSecondRatio > UnitsMetersPerSecond
Alias option, specifying field value units are "meters per second".
Definition options.h:792
FieldsImpl< std::tuple<> > ZeroFieldsImpl
Alias to FieldsImpl<std::tuple<> >
Definition options.h:243
Endian< comms::traits::endian::Little > LittleEndian
Alias option to Endian specifying Little endian.
Definition options.h:179
Units< comms::traits::units::Time, comms::traits::units::SecondsRatio > UnitsSeconds
Alias option, specifying field value units are "seconds".
Definition options.h:717
Units< comms::traits::units::Memory, comms::traits::units::GigabytesRatio > UnitsGigabytes
Alias option, specifying field value units are "gigabytes".
Definition options.h:902
comms::option::def::ValidNumValueOverride< TValue > ValidNumValueOverride
Same as comms::option::def::ValidNumValueOverride.
Definition options.h:1826
comms::option::def::ValidBigUnsignedNumValueOverride< TValue > ValidBigUnsignedNumValueOverride
Same as comms::option::def::ValidBigUnsignedNumValueOverride.
Definition options.h:1850
comms::option::def::ValidBigUnsignedNumValueRangeOverride< TMinValue, TMaxValue > ValidBigUnsignedNumValueRangeOverride
Same as comms::option::def::ValidBigUnsignedNumValueRangeOverride.
Definition options.h:1838
comms::option::def::FieldType< TMsg > FieldType
Same as comms::option::def::FieldType.
Definition options.h:1503
comms::option::def::ValidNumValueRangeOverride< TMinValue, TMaxValue > ValidNumValueRangeOverride
Same as comms::option::def::ValidNumValueRangeOverride.
Definition options.h:1816
Main namespace for all classes / functions of COMMS library.
STL namespace.
Set custom storage type for fields like comms::field::String or comms::field::ArrayList.
Definition options.h:1395
No-op option, doesn't have any effect.
Definition options.h:1282
Option that forces usage of embedded uninitialised data area instead of dynamic memory allocation.
Definition options.h:1378
Force a particular way to dispatch message object and/or type.
Definition options.h:1436
Option used to specify type of the message handler.
Definition options.h:1320
Option used to add getId() function into Message interface.
Definition options.h:1298
Option that forces "in place" allocation with placement "new" for initialisation, instead of usage of...
Definition options.h:1355
Option used to add length() function into Message interface.
Definition options.h:1306
Force usage of the provide message factory.
Definition options.h:1462
Force usage of the provide message factory.
Definition options.h:1454
Option used to add name() function into Message interface.
Definition options.h:1314
Option used to inhibit default implementation of dispatchImpl() in comms::MessageBase.
Definition options.h:1325
Option that inhibits implementation of comms::MessageBase::lengthImpl() regardless of other availabil...
Definition options.h:1345
Option that inhibits implementation of comms::MessageBase::readImpl() regardless of other availabilit...
Definition options.h:1330
Option that inhibits implementation of comms::MessageBase::refreshImpl() regardless of other availabi...
Definition options.h:1350
Option that inhibits implementation of comms::MessageBase::validImpl() regardless of other availabili...
Definition options.h:1340
Force the destructor of comms::Message class to be non-virtual, even if there are other virtual funct...
Definition options.h:1409
Option that inhibits implementation of comms::MessageBase::writeImpl() regardless of other availabili...
Definition options.h:1335
Use "view" on original raw data instead of copying it.
Definition options.h:1431
Option used to specify type of iterator used for reading.
Definition options.h:1288
Option used to add refresh() function into Message interface.
Definition options.h:1310
Option that forces usage of fixed size storage for sequences with fixed size.
Definition options.h:1404
Option used to allow comms::GenericMessage generation inside comms::MsgFactory and/or comms::frame::M...
Definition options.h:1362
Option used to add valid() function into Message interface.
Definition options.h:1302
Option used to specify type of iterator used for writing.
Definition options.h:1294
Option that notifies comms::MessageBase about existence of access to fields.
Definition options.h:255
Option used to specify that serialization length can be contolled by available data length.
Definition options.h:345
Option that specifies custom validation class.
Definition options.h:660
Option that specifies default initialisation class.
Definition options.h:614
Option used to specify display offset for the comms::field::IntValue field.
Definition options.h:1273
Force field not to be serialized during read/write operations.
Definition options.h:1103
Options to specify endian.
Definition options.h:170
Mark an comms::field::Optional field as existing between specified versions.
Definition options.h:1200
Option to specify real extending class.
Definition options.h:1233
Option used to specify some extra fields from transport framing.
Definition options.h:216
Option that forces field's read operation to fail if invalid value is received.
Definition options.h:672
Option used to specify actual type of the field.
Definition options.h:205
Option used to specify fields of the message and force implementation of default read,...
Definition options.h:232
Option used to specify number of bits that is used for field serialisation when a field is a member o...
Definition options.h:308
Option used to specify number of bytes that is used for field serialisation.
Definition options.h:278
Remove an ability to update field's value by the client code.
Definition options.h:1267
Disallow usage of FrameLayerForceReadUntilDataSplit option in earlier (outer wrapping) layers.
Definition options.h:1141
Option to force comms::frame::FrameLayerBase class to split read operation "until" and "from" data (p...
Definition options.h:1116
Force the layer to seek its field before forwarding read to the wrapped layer(s).
Definition options.h:1093
Option to forcefully disable passing the FrameLayerForceReadUntilDataSplit option to the layer defini...
Definition options.h:1128
Force the layer to verify its field's value before forwarding read to the wrapped layer(s).
Definition options.h:1079
Mark field class to have custom implementation of read functionality.
Definition options.h:1150
Mark message / field class to have custom implementation of refresh functionality.
Definition options.h:1155
Mark message / field class to have custom implementation of version update functionality.
Definition options.h:1190
Mark field class to have custom implementation of read functionality.
Definition options.h:1160
Option that notifies comms::MessageBase about existence of doGetId() member function in derived class...
Definition options.h:248
Mark message class as providing its name information.
Definition options.h:1164
Mark complex fields like comms::field::Bundle or comms::field::Variant that their members are or are ...
Definition options.h:1264
Option that forces field's read operation to ignore read data if invalid value is received.
Definition options.h:681
Make the field's contents to be invalid by default.
Definition options.h:1222
Mark an comms::field::Optional field as missing if its contents are invalid (member field has invalid...
Definition options.h:1249
Mark an comms::field::Optional field as missing if its read operation fails.
Definition options.h:1244
Option used to specify type of the ID.
Definition options.h:185
Option used to specify actual type of the message.
Definition options.h:200
Option used to specify that message doesn't have valid ID.
Definition options.h:195
Option to specify numeric value serialisation offset.
Definition options.h:376
Option for comms::frame::TransportValueLayer to mark that the handled field is a "pseudo" one,...
Definition options.h:1175
Option to specify index of member field containing remaining length in bytes.
Definition options.h:1239
Option to specify scaling ratio.
Definition options.h:408
Option that forces first element only of comms::field::ArrayList to be prefixed with its serialisatio...
Definition options.h:485
Option to enable external forcing of the collection element serialisation length.
Definition options.h:568
Option that forces every element of comms::field::ArrayList to be prefixed with its serialisation len...
Definition options.h:473
Option used to define exact number of elements in the collection field.
Definition options.h:577
Option to enable external forcing of the collection's serialisation length duting "read" operation.
Definition options.h:556
Option that modifies the default behaviour of collection fields to prepend the serialised data with n...
Definition options.h:463
Option that modifies the default behaviour of collection fields to prepend the serialised data with n...
Definition options.h:436
Option to enable external forcing of the collection's elements count.
Definition options.h:542
Option that forces termination of the sequence when predefined value is encountered.
Definition options.h:505
Option that forces collection fields to append provides suffix every time it is serialised.
Definition options.h:529
Option used to specify numeric ID of the message.
Definition options.h:191
Options to specify units of the field.
Definition options.h:691
Provide range of valid unsigned numeric values.
Definition options.h:999
Provide range of valid numeric values.
Definition options.h:954
Clear accumulated ranges of valid values.
Definition options.h:959
Option used to specify that field may have variable serialisation length.
Definition options.h:335
Avoid invocation of built-in reset() member function on destruction of the comms::field::Variant fiel...
Definition options.h:1255
Option used to specify index of the version field inside extra transport fields tuple provided with c...
Definition options.h:224
Add storage of version information inside private data members.
Definition options.h:1227
Provide type to be used for versioning.
Definition options.h:1182
Replacement to std::conditional.
Definition type_traits.h:29
This file contains all the classes necessary to properly define message traits.
Replacement to some types from standard type_traits.