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 - 2026 (C). Alex Robenko. All rights reserved.
3//
4// SPDX-License-Identifier: MPL-2.0
5//
6// This Source Code Form is subject to the terms of the Mozilla Public
7// License, v. 2.0. If a copy of the MPL was not distributed with this
8// file, You can obtain one at http://mozilla.org/MPL/2.0/.
9
12
13#pragma once
14
15#include "comms/ErrorStatus.h"
17#include "comms/traits.h"
19
20#include <cstddef>
21#include <cstdint>
22#include <limits>
23#include <ratio>
24#include <tuple>
25#include <type_traits>
26
27namespace comms
28{
29
30namespace option
31{
32
33namespace details
34{
35
36template <typename T>
37struct IsRatio
38{
39 static const bool Value = false;
40};
41
42template <std::intmax_t TNum, std::intmax_t TDen>
43struct IsRatio<std::ratio<TNum, TDen> >
44{
45 static const bool Value = true;
46};
47
48template <typename T>
49constexpr bool isRatio()
50{
51 return IsRatio<T>::Value;
52}
53
54template<typename T, T TVal>
55struct DefaultNumValueInitialiser
56{
57 template <typename TField>
58 void operator()(TField&& field)
59 {
60 using FieldType = typename std::decay<TField>::type;
61 using ValueType = typename FieldType::ValueType;
62 field.value() = static_cast<ValueType>(TVal);
63 }
64};
65
66template<std::intmax_t TMinValue, std::intmax_t TMaxValue>
67struct NumValueRangeValidator
68{
69 static_assert(
70 TMinValue <= TMaxValue,
71 "Min value must be not greater than Max value");
72
73 template <typename TField>
74 constexpr bool operator()(const TField& field) const
75 {
76 using MinTag =
78 (std::numeric_limits<decltype(MinValue)>::min() < MinValue)
79 >::template Type<
80 CompareTag,
81 ReturnTrueTag
82 >;
83
84 using MaxTag =
86 (MaxValue < std::numeric_limits<decltype(MaxValue)>::max())
87 >::template Type<
88 CompareTag,
89 ReturnTrueTag
90 >::type;
91
92 return aboveMin(field.value(), MinTag()) && belowMax(field.value(), MaxTag());
93 }
94
95private:
96 struct ReturnTrueTag {};
97 struct CompareTag {};
98
99 template <typename TValue>
100 static constexpr bool aboveMin(const TValue& value, CompareTag)
101 {
102 using ValueType = typename std::decay<decltype(value)>::type;
103 return (static_cast<ValueType>(MinValue) <= static_cast<ValueType>(value));
104 }
105
106 template <typename TValue>
107 static constexpr bool aboveMin(const TValue&, ReturnTrueTag)
108 {
109 return true;
110 }
111
112 template <typename TValue>
113 static constexpr bool belowMax(const TValue& value, CompareTag)
114 {
115 using ValueType = typename std::decay<decltype(value)>::type;
116 return (value <= static_cast<ValueType>(MaxValue));
117 }
118
119 template <typename TValue>
120 static constexpr bool belowMax(const TValue&, ReturnTrueTag)
121 {
122 return true;
123 }
124
125 static const auto MinValue = TMinValue;
126 static const auto MaxValue = TMaxValue;
127};
128
129template<std::uintmax_t TMask, std::uintmax_t TValue>
130struct BitmaskReservedBitsValidator
131{
132 template <typename TField>
133 constexpr bool operator()(TField&& field) const
134 {
135 using FieldType = typename std::decay<TField>::type;
136 using ValueType = typename FieldType::ValueType;
137
138 return (field.value() & static_cast<ValueType>(TMask)) == static_cast<ValueType>(TValue);
139 }
140};
141
142template <comms::field::OptionalMode TVal>
143struct DefaultOptModeInitialiser
144{
145 template <typename TField>
146 void operator()(TField& field) const
147 {
148 field.setMode(TVal);
149 }
150};
151
152template<std::size_t TIdx>
153struct DefaultVariantIndexInitialiser
154{
155 template <typename TField>
156 void operator()(TField& field)
157 {
158 field.template initField<TIdx>();
159 }
160};
161
162} // namespace details
163
164namespace def {
165
170template <typename TEndian>
171struct Endian
172{
173};
174
178
182
186template <typename T>
187struct MsgIdType {};
188
192template <std::intmax_t TId>
194
197struct NoIdImpl {};
198
201template <typename TMsg>
202struct MsgType {};
203
206template <typename TField>
207struct FieldType {};
208
217template <typename TFields>
219
225template <std::size_t TIdx>
227
233template <typename TFields>
235
237template <typename... TFields>
238struct FieldsImpl<std::tuple<TFields...> >
239{
240};
242
246
250struct HasDoGetId {};
251
258
279template<std::size_t TLen, bool TSignExtend = true>
280struct FixedLength {};
281
309template<std::size_t TLen, bool TSignExtend = true>
311
335template<std::size_t TMin, std::size_t TMax>
337{
338 static_assert(TMin <= TMax, "TMin must not be greater that TMax.");
339};
340
347{
348};
349
377template<std::intmax_t TOffset>
379
408template <std::intmax_t TNum, std::intmax_t TDenom>
410{
411 static_assert(TNum != 0, "Wrong scaling ratio");
412 static_assert(TDenom != 0, "Wrong scaling ratio");
413};
414
437template <typename TField>
439
464template <typename TField, comms::ErrorStatus TReadErrorStatus = comms::ErrorStatus::InvalidMsgData>
466
474template <typename TField, comms::ErrorStatus TReadErrorStatus = comms::ErrorStatus::InvalidMsgData>
476
486template <typename TField, comms::ErrorStatus TReadErrorStatus = comms::ErrorStatus::InvalidMsgData>
488
506template <typename TField>
508
530template <typename TField>
532
545
559
571
578template <std::size_t TSize>
580
615template <typename T>
617
661template <typename T>
663
673template <comms::ErrorStatus TStatus = comms::ErrorStatus::InvalidMsgData>
675
684
691template <typename TType, typename TRatio>
692struct Units
693{
694 static_assert(details::isRatio<TRatio>(),
695 "TRatio parameter must be a variant of std::ratio");
696
697 static_assert(TRatio::num != 0, "Wrong ratio value");
698 static_assert(TRatio::den != 0, "Wrong ratio value");
699};
700
705
710
715
720
725
730
735
740
745
750
755
760
765
770
775
780
785
790
795
800
805
810
815
820
825
830
835
840
845
850
855
860
865
870
875
880
885
890
895
900
905
910
919template<std::intmax_t TVal>
922 details::DefaultNumValueInitialiser<std::intmax_t, TVal>
923 >;
924
933template<std::uintmax_t TVal>
936 details::DefaultNumValueInitialiser<std::uintmax_t, TVal>
937 >;
938
954template<std::intmax_t TMinValue, std::intmax_t TMaxValue>
956{
957 static_assert(TMinValue <= TMaxValue, "Invalid range");
958};
959
962
968template<std::intmax_t TMinValue, std::intmax_t TMaxValue>
970 std::tuple<
973 >;
974
977template<std::intmax_t TValue>
979
983template<std::intmax_t TValue>
985
999template<std::uintmax_t TMinValue, std::uintmax_t TMaxValue>
1001{
1002 static_assert(TMinValue <= TMaxValue, "Invalid range");
1003};
1004
1010template<std::uintmax_t TMinValue, std::uintmax_t TMaxValue>
1012 std::tuple<
1015 >;
1016
1019template<std::uintmax_t TValue>
1021
1025template<std::uintmax_t TValue>
1027
1039template<std::uintmax_t TMask, std::uintmax_t TValue = 0U>
1041
1048template<comms::field::OptionalMode TVal>
1050
1057
1064
1067
1070
1075template <std::size_t TIdx>
1077
1082
1089
1094template <typename TEscField = void>
1096
1106
1111
1119
1123
1131
1135
1144
1148
1153
1158
1163
1166struct HasName {};
1167
1174
1177struct PseudoValue {};
1178
1182template <typename T>
1184{
1185 static_assert(std::is_integral<T>::value, "Only unsigned integral types are supported for versions");
1186 static_assert(std::is_unsigned<T>::value, "Only unsigned integral types are supported for versions");
1187};
1188
1193
1200template <std::uintmax_t TFrom, std::uintmax_t TUntil>
1202{
1203 static_assert(TFrom <= TUntil, "Invalid version parameters");
1204};
1205
1211template <std::uintmax_t TVer>
1213
1219template <std::uintmax_t TVer>
1221
1225
1230
1234template <typename T>
1236
1240template <std::size_t TIdx>
1242
1247
1252
1258
1265template <bool TVersionDependent>
1267
1269struct FixedValue {};
1270
1274template <std::intmax_t TOffset>
1276
1277} // namespace def
1278
1279namespace app
1280{
1281
1284struct EmptyOption {};
1285
1289template <typename TIter>
1291
1295template <typename TIter>
1297
1301
1305
1309
1313
1317
1321template <typename T>
1322struct Handler {};
1323
1328
1332struct NoReadImpl {};
1333
1337struct NoWriteImpl {};
1338
1342struct NoValidImpl {};
1343
1348
1353
1358
1363template <typename TGenericMessage>
1365
1379template <std::size_t TSize>
1381
1396template <typename TType>
1398
1407
1412
1434
1437template <typename T>
1439
1443
1447
1451
1455template <typename TFactory>
1456struct MsgFactory {};
1457
1463template <template<typename, typename, typename...> class TFactory>
1465
1466} // namespace app
1467
1468// Definition options
1469
1472template <typename TEndian>
1474
1478
1482
1485template <typename T>
1487
1490template <std::intmax_t TId>
1492
1496
1499template <typename TMsg>
1501
1504template <typename TMsg>
1506
1509template <typename TFields>
1511
1514template <std::size_t TIdx>
1516
1519template <typename TFields>
1521
1525
1529
1533
1536template<std::size_t TLen, bool TSignExtend = true>
1538
1541template<std::size_t TLen, bool TSignExtend = true>
1543
1546template<std::size_t TMin, std::size_t TMax>
1548
1551template<std::intmax_t TOffset>
1553
1556template <std::intmax_t TNum, std::intmax_t TDenom>
1558
1561template <typename TField>
1563
1566template <typename TField, comms::ErrorStatus TReadErrorStatus = comms::ErrorStatus::InvalidMsgData>
1569
1572template <typename TField, comms::ErrorStatus TReadErrorStatus = comms::ErrorStatus::InvalidMsgData>
1575
1578template <typename TField, comms::ErrorStatus TReadErrorStatus = comms::ErrorStatus::InvalidMsgData>
1581
1584template <typename TField>
1586
1589template <typename TField>
1591
1595
1599
1603
1606template <std::size_t TSize>
1608
1611template <typename T>
1613
1616template <comms::ErrorStatus TStatus = comms::ErrorStatus::InvalidMsgData>
1618
1622
1625template <typename TType, typename TRatio>
1627
1631
1635
1639
1643
1647
1651
1655
1659
1663
1667
1671
1675
1679
1683
1687
1691
1695
1699
1703
1707
1711
1715
1719
1723
1727
1731
1735
1739
1743
1747
1751
1755
1759
1763
1767
1771
1775
1779
1783
1787
1791
1795
1798template<std::intmax_t TVal>
1800
1803template<std::uintmax_t TVal>
1805
1808template<std::intmax_t TMinValue, std::intmax_t TMaxValue>
1810
1814
1817template<std::intmax_t TMinValue, std::intmax_t TMaxValue>
1819
1822template<std::intmax_t TValue>
1824
1827template<std::intmax_t TValue>
1829
1832template<std::uintmax_t TMinValue, std::uintmax_t TMaxValue>
1835
1838template<std::uintmax_t TMinValue, std::uintmax_t TMaxValue>
1841
1844template<std::uintmax_t TValue>
1847
1850template<std::uintmax_t TValue>
1853
1856template<std::uintmax_t TMask, std::uintmax_t TValue = 0U>
1858
1861template<comms::field::OptionalMode TVal>
1863
1867
1871
1875
1879
1882template <std::size_t TIdx>
1884
1888
1892
1896
1901
1906
1910
1914
1918
1922
1926
1929template <typename T>
1931
1935
1938template <std::uintmax_t TFrom, std::uintmax_t TUntil>
1940
1943template <std::uintmax_t TVer>
1945
1948template <std::uintmax_t TVer>
1950
1954
1958
1961template <typename T>
1963
1966template <std::size_t TIdx>
1968
1969// Application customization options
1970
1974
1977template <typename TIter>
1979
1982template <typename TIter>
1984
1988
1992
1996
2000
2004
2007template <typename T>
2009
2013
2017
2021
2025
2029
2033
2037
2040template <typename TGenericMessage>
2042
2045template <std::size_t TSize>
2047
2050template <typename TType>
2052
2056
2060
2064
2067template <typename T>
2069
2073
2077
2081
2082} // namespace option
2083
2084} // namespace comms
2085
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:1450
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:1446
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:1442
Units< comms::traits::units::Speed, comms::traits::units::KilometersPerSecondRatio > UnitsKilometersPerSecond
Alias option, specifying field value units are "kilometers per second".
Definition options.h:799
std::tuple< ValidBigUnsignedNumValueRange< TMinValue, TMaxValue >, ValidRangesClear > ValidBigUnsignedNumValueRangeOverride
Similar to ValidBigUnsignedNumValueRange, but overrides (nullifies) all previously set valid values r...
Definition options.h:1015
Units< comms::traits::units::Distance, comms::traits::units::MicrometersRatio > UnitsMicrometers
Alias option, specifying field value units are "micrometers".
Definition options.h:749
Units< comms::traits::units::Time, comms::traits::units::HoursRatio > UnitsHours
Alias option, specifying field value units are "hours".
Definition options.h:729
Units< comms::traits::units::Frequency, comms::traits::units::MegaHzRatio > UnitsMegahertz
Alias option, specifying field value units are "megahertz".
Definition options.h:819
Units< comms::traits::units::Time, comms::traits::units::MinutesRatio > UnitsMinutes
Alias option, specifying field value units are "minutes".
Definition options.h:724
Units< comms::traits::units::Speed, comms::traits::units::KilometersPerHourRatio > UnitsKilometersPerHour
Alias option, specifying field value units are "kilometers per hour".
Definition options.h:804
Units< comms::traits::units::Current, comms::traits::units::NanoampsRatio > UnitsNanoamps
Alias option, specifying field value units are "nanoamps".
Definition options.h:839
Units< comms::traits::units::Time, comms::traits::units::WeeksRatio > UnitsWeeks
Alias option, specifying field value units are "weeks".
Definition options.h:739
Units< comms::traits::units::Memory, comms::traits::units::TerabytesRatio > UnitsTerabytes
Alias option, specifying field value units are "terabytes".
Definition options.h:909
Units< comms::traits::units::Memory, comms::traits::units::BytesRatio > UnitsBytes
Alias option, specifying field value units are "bytes".
Definition options.h:889
Units< comms::traits::units::Frequency, comms::traits::units::GigaHzRatio > UnitsGigahertz
Alias option, specifying field value units are "gigahertz".
Definition options.h:824
Units< comms::traits::units::Distance, comms::traits::units::MillimetersRatio > UnitsMillimeters
Alias option, specifying field value units are "millimeters".
Definition options.h:754
Units< comms::traits::units::Time, comms::traits::units::MillisecondsRatio > UnitsMilliseconds
Alias option, specifying field value units are "milliseconds".
Definition options.h:714
Units< comms::traits::units::Speed, comms::traits::units::MillimetersPerSecondRatio > UnitsMillimetersPerSecond
Alias option, specifying field value units are "millimeters per second".
Definition options.h:784
Units< comms::traits::units::Time, comms::traits::units::DaysRatio > UnitsDays
Alias option, specifying field value units are "days".
Definition options.h:734
Units< comms::traits::units::Distance, comms::traits::units::KilometersRatio > UnitsKilometers
Alias option, specifying field value units are "kilometers".
Definition options.h:769
std::tuple< ValidNumValueRange< TMinValue, TMaxValue >, ValidRangesClear > ValidNumValueRangeOverride
Similar to ValidNumValueRange, but overrides (nullifies) all previously set valid values ranges.
Definition options.h:973
ExistsByDefault OptionalExistsByDefault
Alias to DefaultOptionalMode<comms::field::OptinalMode::Exists>
Definition options.h:1069
Units< comms::traits::units::Speed, comms::traits::units::MicrometersPerSecondRatio > UnitsMicrometersPerSecond
Alias option, specifying field value units are "micrometers per second".
Definition options.h:779
Units< comms::traits::units::Speed, comms::traits::units::CentimetersPerSecondRatio > UnitsCentimetersPerSecond
Alias option, specifying field value units are "centimeters per second".
Definition options.h:789
Units< comms::traits::units::Voltage, comms::traits::units::NanovoltsRatio > UnitsNanovolts
Alias option, specifying field value units are "nanovolts".
Definition options.h:864
Units< comms::traits::units::Voltage, comms::traits::units::KilovoltsRatio > UnitsKilovolts
Alias option, specifying field value units are "kilovolts".
Definition options.h:884
Units< comms::traits::units::Angle, comms::traits::units::DegreesRatio > UnitsDegrees
Alias option, specifying field value units are "degrees".
Definition options.h:829
Endian< comms::traits::endian::Big > BigEndian
Alias option to Endian specifying Big endian.
Definition options.h:177
Units< comms::traits::units::Frequency, comms::traits::units::KiloHzRatio > UnitsKilohertz
Alias option, specifying field value units are "kilohertz".
Definition options.h:814
Units< comms::traits::units::Distance, comms::traits::units::NanometersRatio > UnitsNanometers
Alias option, specifying field value units are "nanometers".
Definition options.h:744
Units< comms::traits::units::Speed, comms::traits::units::NanometersPerSecondRatio > UnitsNanometersPerSecond
Alias option, specifying field value units are "nanometers per second".
Definition options.h:774
DefaultOptionalMode< comms::field::OptionalMode::Missing > MissingByDefault
Alias to DefaultOptionalMode.
Definition options.h:1056
ValidNumValueRangeOverride< TValue, TValue > ValidNumValueOverride
Alias to ValidNumValueRangeOverride.
Definition options.h:984
Units< comms::traits::units::Voltage, comms::traits::units::VoltsRatio > UnitsVolts
Alias option, specifying field value units are "volts".
Definition options.h:879
HasCustomRefresh HasDoRefresh
Option that notifies comms::MessageBase about existence of custom refresh functionality in derived cl...
Definition options.h:1173
Units< comms::traits::units::Current, comms::traits::units::AmpsRatio > UnitsAmps
Alias option, specifying field value units are "amps".
Definition options.h:854
Units< comms::traits::units::Angle, comms::traits::units::RadiansRatio > UnitsRadians
Alias option, specifying field value units are "radians".
Definition options.h:834
Units< comms::traits::units::Frequency, comms::traits::units::HzRatio > UnitsHertz
Alias option, specifying field value units are "hertz".
Definition options.h:809
Units< comms::traits::units::Voltage, comms::traits::units::MillivoltsRatio > UnitsMillivolts
Alias option, specifying field value units are "millivolts".
Definition options.h:874
EmptySerialization EmptySerialisation
Same as EmptySerialization.
Definition options.h:1110
Units< comms::traits::units::Current, comms::traits::units::MicroampsRatio > UnitsMicroamps
Alias option, specifying field value units are "microamps".
Definition options.h:844
MissingByDefault OptionalMissingByDefault
Alias to DefaultOptionalMode<comms::field::OptinalMode::Missing>
Definition options.h:1066
Units< comms::traits::units::Distance, comms::traits::units::MetersRatio > UnitsMeters
Alias option, specifying field value units are "meters".
Definition options.h:764
Units< comms::traits::units::Memory, comms::traits::units::KilobytesRatio > UnitsKilobytes
Alias option, specifying field value units are "kilobytes".
Definition options.h:894
Units< comms::traits::units::Current, comms::traits::units::KiloampsRatio > UnitsKiloamps
Alias option, specifying field value units are "kiloamps".
Definition options.h:859
Units< comms::traits::units::Voltage, comms::traits::units::MicrovoltsRatio > UnitsMicrovolts
Alias option, specifying field value units are "microvolts".
Definition options.h:869
Units< comms::traits::units::Memory, comms::traits::units::MegabytesRatio > UnitsMegabytes
Alias option, specifying field value units are "megabytes".
Definition options.h:899
Units< comms::traits::units::Time, comms::traits::units::MicrosecondsRatio > UnitsMicroseconds
Alias option, specifying field value units are "microseconds".
Definition options.h:709
Units< comms::traits::units::Time, comms::traits::units::NanosecondsRatio > UnitsNanoseconds
Alias option, specifying field value units are "nanoseconds".
Definition options.h:704
Units< comms::traits::units::Distance, comms::traits::units::CentimetersRatio > UnitsCentimeters
Alias option, specifying field value units are "centimeters".
Definition options.h:759
DefaultOptionalMode< comms::field::OptionalMode::Exists > ExistsByDefault
Alias to DefaultOptionalMode.
Definition options.h:1063
Units< comms::traits::units::Current, comms::traits::units::MilliampsRatio > UnitsMilliamps
Alias option, specifying field value units are "milliamps".
Definition options.h:849
ValidBigUnsignedNumValueRangeOverride< TValue, TValue > ValidBigUnsignedNumValueOverride
Alias to ValidBigUnsignedNumValueRangeOverride.
Definition options.h:1026
Units< comms::traits::units::Speed, comms::traits::units::MetersPerSecondRatio > UnitsMetersPerSecond
Alias option, specifying field value units are "meters per second".
Definition options.h:794
FieldsImpl< std::tuple<> > ZeroFieldsImpl
Alias to FieldsImpl<std::tuple<> >
Definition options.h:245
Endian< comms::traits::endian::Little > LittleEndian
Alias option to Endian specifying Little endian.
Definition options.h:181
Units< comms::traits::units::Time, comms::traits::units::SecondsRatio > UnitsSeconds
Alias option, specifying field value units are "seconds".
Definition options.h:719
Units< comms::traits::units::Memory, comms::traits::units::GigabytesRatio > UnitsGigabytes
Alias option, specifying field value units are "gigabytes".
Definition options.h:904
comms::option::def::ValidNumValueOverride< TValue > ValidNumValueOverride
Same as comms::option::def::ValidNumValueOverride.
Definition options.h:1828
comms::option::def::ValidBigUnsignedNumValueOverride< TValue > ValidBigUnsignedNumValueOverride
Same as comms::option::def::ValidBigUnsignedNumValueOverride.
Definition options.h:1852
comms::option::def::ValidBigUnsignedNumValueRangeOverride< TMinValue, TMaxValue > ValidBigUnsignedNumValueRangeOverride
Same as comms::option::def::ValidBigUnsignedNumValueRangeOverride.
Definition options.h:1840
comms::option::def::FieldType< TMsg > FieldType
Same as comms::option::def::FieldType.
Definition options.h:1505
comms::option::def::ValidNumValueRangeOverride< TMinValue, TMaxValue > ValidNumValueRangeOverride
Same as comms::option::def::ValidNumValueRangeOverride.
Definition options.h:1818
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:1397
No-op option, doesn't have any effect.
Definition options.h:1284
Option that forces usage of embedded uninitialised data area instead of dynamic memory allocation.
Definition options.h:1380
Force a particular way to dispatch message object and/or type.
Definition options.h:1438
Option used to specify type of the message handler.
Definition options.h:1322
Option used to add getId() function into Message interface.
Definition options.h:1300
Option that forces "in place" allocation with placement "new" for initialisation, instead of usage of...
Definition options.h:1357
Option used to add length() function into Message interface.
Definition options.h:1308
Force usage of the provide message factory.
Definition options.h:1464
Force usage of the provide message factory.
Definition options.h:1456
Option used to add name() function into Message interface.
Definition options.h:1316
Option used to inhibit default implementation of dispatchImpl() in comms::MessageBase.
Definition options.h:1327
Option that inhibits implementation of comms::MessageBase::lengthImpl() regardless of other availabil...
Definition options.h:1347
Option that inhibits implementation of comms::MessageBase::readImpl() regardless of other availabilit...
Definition options.h:1332
Option that inhibits implementation of comms::MessageBase::refreshImpl() regardless of other availabi...
Definition options.h:1352
Option that inhibits implementation of comms::MessageBase::validImpl() regardless of other availabili...
Definition options.h:1342
Force the destructor of comms::Message class to be non-virtual, even if there are other virtual funct...
Definition options.h:1411
Option that inhibits implementation of comms::MessageBase::writeImpl() regardless of other availabili...
Definition options.h:1337
Use "view" on original raw data instead of copying it.
Definition options.h:1433
Option used to specify type of iterator used for reading.
Definition options.h:1290
Option used to add refresh() function into Message interface.
Definition options.h:1312
Option that forces usage of fixed size storage for sequences with fixed size.
Definition options.h:1406
Option used to allow comms::GenericMessage generation inside comms::MsgFactory and/or comms::frame::M...
Definition options.h:1364
Option used to add valid() function into Message interface.
Definition options.h:1304
Option used to specify type of iterator used for writing.
Definition options.h:1296
Option that notifies comms::MessageBase about existence of access to fields.
Definition options.h:257
Option used to specify that serialization length can be contolled by available data length.
Definition options.h:347
Option that specifies custom validation class.
Definition options.h:662
Option that specifies default initialisation class.
Definition options.h:616
Option used to specify display offset for the comms::field::IntValue field.
Definition options.h:1275
Force field not to be serialized during read/write operations.
Definition options.h:1105
Options to specify endian.
Definition options.h:172
Mark an comms::field::Optional field as existing between specified versions.
Definition options.h:1202
Option to specify real extending class.
Definition options.h:1235
Option used to specify some extra fields from transport framing.
Definition options.h:218
Option that forces field's read operation to fail if invalid value is received.
Definition options.h:674
Option used to specify actual type of the field.
Definition options.h:207
Option used to specify fields of the message and force implementation of default read,...
Definition options.h:234
Option used to specify number of bits that is used for field serialisation when a field is a member o...
Definition options.h:310
Option used to specify number of bytes that is used for field serialisation.
Definition options.h:280
Remove an ability to update field's value by the client code.
Definition options.h:1269
Disallow usage of FrameLayerForceReadUntilDataSplit option in earlier (outer wrapping) layers.
Definition options.h:1143
Option to force comms::frame::FrameLayerBase class to split read operation "until" and "from" data (p...
Definition options.h:1118
Force the layer to seek its field before forwarding read to the wrapped layer(s).
Definition options.h:1095
Option to forcefully disable passing the FrameLayerForceReadUntilDataSplit option to the layer defini...
Definition options.h:1130
Force the layer to verify its field's value before forwarding read to the wrapped layer(s).
Definition options.h:1081
Mark field class to have custom implementation of read functionality.
Definition options.h:1152
Mark message / field class to have custom implementation of refresh functionality.
Definition options.h:1157
Mark message / field class to have custom implementation of version update functionality.
Definition options.h:1192
Mark field class to have custom implementation of read functionality.
Definition options.h:1162
Option that notifies comms::MessageBase about existence of doGetId() member function in derived class...
Definition options.h:250
Mark message class as providing its name information.
Definition options.h:1166
Mark complex fields like comms::field::Bundle or comms::field::Variant that their members are or are ...
Definition options.h:1266
Option that forces field's read operation to ignore read data if invalid value is received.
Definition options.h:683
Make the field's contents to be invalid by default.
Definition options.h:1224
Mark an comms::field::Optional field as missing if its contents are invalid (member field has invalid...
Definition options.h:1251
Mark an comms::field::Optional field as missing if its read operation fails.
Definition options.h:1246
Option used to specify type of the ID.
Definition options.h:187
Option used to specify actual type of the message.
Definition options.h:202
Option used to specify that message doesn't have valid ID.
Definition options.h:197
Option to specify numeric value serialisation offset.
Definition options.h:378
Option for comms::frame::TransportValueLayer to mark that the handled field is a "pseudo" one,...
Definition options.h:1177
Option to specify index of member field containing remaining length in bytes.
Definition options.h:1241
Option to specify scaling ratio.
Definition options.h:410
Option that forces first element only of comms::field::ArrayList to be prefixed with its serialisatio...
Definition options.h:487
Option to enable external forcing of the collection element serialisation length.
Definition options.h:570
Option that forces every element of comms::field::ArrayList to be prefixed with its serialisation len...
Definition options.h:475
Option used to define exact number of elements in the collection field.
Definition options.h:579
Option to enable external forcing of the collection's serialisation length duting "read" operation.
Definition options.h:558
Option that modifies the default behaviour of collection fields to prepend the serialised data with n...
Definition options.h:465
Option that modifies the default behaviour of collection fields to prepend the serialised data with n...
Definition options.h:438
Option to enable external forcing of the collection's elements count.
Definition options.h:544
Option that forces termination of the sequence when predefined value is encountered.
Definition options.h:507
Option that forces collection fields to append provides suffix every time it is serialised.
Definition options.h:531
Option used to specify numeric ID of the message.
Definition options.h:193
Options to specify units of the field.
Definition options.h:693
Provide range of valid unsigned numeric values.
Definition options.h:1001
Provide range of valid numeric values.
Definition options.h:956
Clear accumulated ranges of valid values.
Definition options.h:961
Option used to specify that field may have variable serialisation length.
Definition options.h:337
Avoid invocation of built-in reset() member function on destruction of the comms::field::Variant fiel...
Definition options.h:1257
Option used to specify index of the version field inside extra transport fields tuple provided with c...
Definition options.h:226
Add storage of version information inside private data members.
Definition options.h:1229
Provide type to be used for versioning.
Definition options.h:1184
Replacement to std::conditional.
Definition type_traits.h:32
This file contains all the classes necessary to properly define message traits.
Replacement to some types from standard type_traits.