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
124 static const auto MinValue = TMinValue;
125 static const auto MaxValue = TMaxValue;
126};
127
128template<std::uintmax_t TMask, std::uintmax_t TValue>
129struct BitmaskReservedBitsValidator
130{
131 template <typename TField>
132 constexpr bool operator()(TField&& field) const
133 {
134 using FieldType = typename std::decay<TField>::type;
135 using ValueType = typename FieldType::ValueType;
136
137 return (field.value() & static_cast<ValueType>(TMask)) == static_cast<ValueType>(TValue);
138 }
139};
140
141template <comms::field::OptionalMode TVal>
142struct DefaultOptModeInitialiser
143{
144 template <typename TField>
145 void operator()(TField& field) const
146 {
147 field.setMode(TVal);
148 }
149};
150
151template<std::size_t TIdx>
152struct DefaultVariantIndexInitialiser
153{
154 template <typename TField>
155 void operator()(TField& field)
156 {
157 field.template initField<TIdx>();
158 }
159};
160
161} // namespace details
162
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
1083
1093
1098
1106
1110
1118
1122
1131
1135
1140
1145
1150
1153struct HasName {};
1154
1161
1164struct PseudoValue {};
1165
1169template <typename T>
1171{
1172 static_assert(std::is_integral<T>::value, "Only unsigned integral types are supported for versions");
1173 static_assert(std::is_unsigned<T>::value, "Only unsigned integral types are supported for versions");
1174};
1175
1180
1187template <std::uintmax_t TFrom, std::uintmax_t TUntil>
1189{
1190 static_assert(TFrom <= TUntil, "Invalid version parameters");
1191};
1192
1198template <std::uintmax_t TVer>
1200
1206template <std::uintmax_t TVer>
1208
1212
1217
1221template <typename T>
1223
1227template <std::size_t TIdx>
1229
1234
1239
1245
1252template <bool TVersionDependent>
1254
1256struct FixedValue {};
1257
1261template <std::intmax_t TOffset>
1263
1264} // namespace def
1265
1266namespace app
1267{
1268
1271struct EmptyOption {};
1272
1276template <typename TIter>
1278
1282template <typename TIter>
1284
1288
1292
1296
1300
1304
1308template <typename T>
1309struct Handler {};
1310
1315
1319struct NoReadImpl {};
1320
1324struct NoWriteImpl {};
1325
1329struct NoValidImpl {};
1330
1335
1340
1345
1350template <typename TGenericMessage>
1352
1366template <std::size_t TSize>
1368
1383template <typename TType>
1385
1394
1399
1421
1424template <typename T>
1426
1430
1434
1438
1442template <typename TFactory>
1443struct MsgFactory {};
1444
1450template <template<typename, typename, typename...> class TFactory>
1452
1453} // namespace app
1454
1455// Definition options
1456
1459template <typename TEndian>
1461
1465
1469
1472template <typename T>
1474
1477template <std::intmax_t TId>
1479
1483
1486template <typename TMsg>
1488
1491template <typename TMsg>
1493
1496template <typename TFields>
1498
1501template <std::size_t TIdx>
1503
1506template <typename TFields>
1508
1512
1516
1520
1523template<std::size_t TLen, bool TSignExtend = true>
1525
1528template<std::size_t TLen, bool TSignExtend = true>
1530
1533template<std::size_t TMin, std::size_t TMax>
1535
1538template<std::intmax_t TOffset>
1540
1543template <std::intmax_t TNum, std::intmax_t TDenom>
1545
1548template <typename TField>
1550
1553template <typename TField, comms::ErrorStatus TReadErrorStatus = comms::ErrorStatus::InvalidMsgData>
1556
1559template <typename TField, comms::ErrorStatus TReadErrorStatus = comms::ErrorStatus::InvalidMsgData>
1562
1565template <typename TField, comms::ErrorStatus TReadErrorStatus = comms::ErrorStatus::InvalidMsgData>
1568
1571template <typename TField>
1573
1576template <typename TField>
1578
1582
1586
1590
1593template <std::size_t TSize>
1595
1598template <typename T>
1600
1603template <comms::ErrorStatus TStatus = comms::ErrorStatus::InvalidMsgData>
1605
1609
1612template <typename TType, typename TRatio>
1614
1618
1622
1626
1630
1634
1638
1642
1646
1650
1654
1658
1662
1666
1670
1674
1678
1682
1686
1690
1694
1698
1702
1706
1710
1714
1718
1722
1726
1730
1734
1738
1742
1746
1750
1754
1758
1762
1766
1770
1774
1778
1782
1785template<std::intmax_t TVal>
1787
1790template<std::uintmax_t TVal>
1792
1795template<std::intmax_t TMinValue, std::intmax_t TMaxValue>
1797
1801
1804template<std::intmax_t TMinValue, std::intmax_t TMaxValue>
1806
1809template<std::intmax_t TValue>
1811
1814template<std::intmax_t TValue>
1816
1819template<std::uintmax_t TMinValue, std::uintmax_t TMaxValue>
1822
1825template<std::uintmax_t TMinValue, std::uintmax_t TMaxValue>
1828
1831template<std::uintmax_t TValue>
1834
1837template<std::uintmax_t TValue>
1840
1843template<std::uintmax_t TMask, std::uintmax_t TValue = 0U>
1845
1848template<comms::field::OptionalMode TVal>
1850
1854
1858
1862
1866
1869template <std::size_t TIdx>
1871
1875
1879
1883
1888
1893
1897
1901
1905
1909
1913
1916template <typename T>
1918
1922
1925template <std::uintmax_t TFrom, std::uintmax_t TUntil>
1927
1930template <std::uintmax_t TVer>
1932
1935template <std::uintmax_t TVer>
1937
1941
1945
1948template <typename T>
1950
1953template <std::size_t TIdx>
1955
1956// Application customization options
1957
1961
1964template <typename TIter>
1966
1969template <typename TIter>
1971
1975
1979
1983
1987
1991
1994template <typename T>
1996
2000
2004
2008
2012
2016
2020
2024
2027template <typename TGenericMessage>
2029
2032template <std::size_t TSize>
2034
2037template <typename TType>
2039
2043
2047
2051
2054template <typename T>
2056
2060
2064
2068
2069} // namespace option
2070
2071} // namespace comms
2072
2073
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:1437
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:1433
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:1429
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:1160
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:1097
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:1815
comms::option::def::ValidBigUnsignedNumValueOverride< TValue > ValidBigUnsignedNumValueOverride
Same as comms::option::def::ValidBigUnsignedNumValueOverride.
Definition options.h:1839
comms::option::def::ValidBigUnsignedNumValueRangeOverride< TMinValue, TMaxValue > ValidBigUnsignedNumValueRangeOverride
Same as comms::option::def::ValidBigUnsignedNumValueRangeOverride.
Definition options.h:1827
comms::option::def::FieldType< TMsg > FieldType
Same as comms::option::def::FieldType.
Definition options.h:1492
comms::option::def::ValidNumValueRangeOverride< TMinValue, TMaxValue > ValidNumValueRangeOverride
Same as comms::option::def::ValidNumValueRangeOverride.
Definition options.h:1805
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:1384
No-op option, doesn't have any effect.
Definition options.h:1271
Option that forces usage of embedded uninitialised data area instead of dynamic memory allocation.
Definition options.h:1367
Force a particular way to dispatch message object and/or type.
Definition options.h:1425
Option used to specify type of the message handler.
Definition options.h:1309
Option used to add getId() function into Message interface.
Definition options.h:1287
Option that forces "in place" allocation with placement "new" for initialisation, instead of usage of...
Definition options.h:1344
Option used to add length() function into Message interface.
Definition options.h:1295
Force usage of the provide message factory.
Definition options.h:1451
Force usage of the provide message factory.
Definition options.h:1443
Option used to add name() function into Message interface.
Definition options.h:1303
Option used to inhibit default implementation of dispatchImpl() in comms::MessageBase.
Definition options.h:1314
Option that inhibits implementation of comms::MessageBase::lengthImpl() regardless of other availabil...
Definition options.h:1334
Option that inhibits implementation of comms::MessageBase::readImpl() regardless of other availabilit...
Definition options.h:1319
Option that inhibits implementation of comms::MessageBase::refreshImpl() regardless of other availabi...
Definition options.h:1339
Option that inhibits implementation of comms::MessageBase::validImpl() regardless of other availabili...
Definition options.h:1329
Force the destructor of comms::Message class to be non-virtual, even if there are other virtual funct...
Definition options.h:1398
Option that inhibits implementation of comms::MessageBase::writeImpl() regardless of other availabili...
Definition options.h:1324
Use "view" on original raw data instead of copying it.
Definition options.h:1420
Option used to specify type of iterator used for reading.
Definition options.h:1277
Option used to add refresh() function into Message interface.
Definition options.h:1299
Option that forces usage of fixed size storage for sequences with fixed size.
Definition options.h:1393
Option used to allow comms::GenericMessage generation inside comms::MsgFactory and/or comms::frame::M...
Definition options.h:1351
Option used to add valid() function into Message interface.
Definition options.h:1291
Option used to specify type of iterator used for writing.
Definition options.h:1283
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
Force comms::frame::ChecksumLayer and comms::frame::ChecksumPrefixLayer, to verify checksum prior to ...
Definition options.h:1082
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:1262
Force field not to be serialized during read/write operations.
Definition options.h:1092
Options to specify endian.
Definition options.h:172
Mark an comms::field::Optional field as existing between specified versions.
Definition options.h:1189
Option to specify real extending class.
Definition options.h:1222
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:1256
Disallow usage of FrameLayerForceReadUntilDataSplit option in earlier (outer wrapping) layers.
Definition options.h:1130
Option to force comms::frame::FrameLayerBase class to split read operation "until" and "from" data (p...
Definition options.h:1105
Option to forcefully disable passing the FrameLayerForceReadUntilDataSplit option to the layer defini...
Definition options.h:1117
Mark field class to have custom implementation of read functionality.
Definition options.h:1139
Mark message / field class to have custom implementation of refresh functionality.
Definition options.h:1144
Mark message / field class to have custom implementation of version update functionality.
Definition options.h:1179
Mark field class to have custom implementation of read functionality.
Definition options.h:1149
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:1153
Mark complex fields like comms::field::Bundle or comms::field::Variant that their members are or are ...
Definition options.h:1253
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:1211
Mark an comms::field::Optional field as missing if its contents are invalid (member field has invalid...
Definition options.h:1238
Mark an comms::field::Optional field as missing if its read operation fails.
Definition options.h:1233
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:1164
Option to specify index of member field containing remaining length in bytes.
Definition options.h:1228
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:1244
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:1216
Provide type to be used for versioning.
Definition options.h:1171
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.