18#include "comms/field/details/adapters.h"
19#include "comms/field/details/MembersVersionDependency.h"
30template <
typename... TOptions>
37 static constexpr bool HasInvalidByDefault =
false;
38 static constexpr bool HasVersionStorage =
false;
39 static constexpr bool HasSerOffset =
false;
40 static constexpr bool HasVersionsRange =
false;
41 static constexpr bool HasFixedLengthLimit =
false;
42 static constexpr bool HasFixedBitLengthLimit =
false;
43 static constexpr bool HasVarLengthLimits =
false;
44 static constexpr bool HasAvailableLengthLimit =
false;
45 static constexpr bool HasSequenceElemLengthForcing =
false;
46 static constexpr bool HasSequenceElemSerLengthFieldPrefix =
false;
47 static constexpr bool HasSequenceElemFixedSerLengthFieldPrefix =
false;
48 static constexpr bool HasSequenceSizeForcing =
false;
49 static constexpr bool HasSequenceLengthForcing =
false;
50 static constexpr bool HasSequenceFixedSize =
false;
51 static constexpr bool HasSequenceSizeFieldPrefix =
false;
52 static constexpr bool HasSequenceSerLengthFieldPrefix =
false;
53 static constexpr bool HasSequenceTrailingFieldSuffix =
false;
54 static constexpr bool HasSequenceTerminationFieldSuffix =
false;
55 static constexpr bool HasRemLengthMemberField =
false;
56 static constexpr bool HasDefaultValueInitialiser =
false;
57 static constexpr bool HasMultiRangeValidation =
false;
58 static constexpr bool HasCustomValidator =
false;
59 static constexpr bool HasFailOnInvalid =
false;
60 static constexpr bool HasIgnoreInvalid =
false;
61 static constexpr bool HasEmptySerialization =
false;
64 static constexpr bool HasCustomWrite =
false;
65 static constexpr bool HasSequenceFixedSizeUseFixedSizeStorage =
false;
66 static constexpr bool HasFixedSizeStorage =
false;
67 static constexpr bool HasCustomStorageType =
false;
68 static constexpr bool HasScalingRatio =
false;
69 static constexpr bool HasUnits =
false;
70 static constexpr bool HasOrigDataView =
false;
72 static constexpr bool HasFieldType =
false;
73 static constexpr bool HasMissingOnReadFail =
false;
74 static constexpr bool HasMissingOnInvalid =
false;
75 static constexpr bool HasVariantCustomResetOnDestruct =
false;
76 static constexpr bool HasVersionDependentMembersForced =
false;
77 static constexpr bool HasFixedValue =
false;
78 static constexpr bool HasDisplayOffset =
false;
79 static constexpr bool HasName =
false;
81 using UnitsType = void;
83 using UnitsRatio = std::ratio<1, 1>;
92 static constexpr std::size_t
SequenceFixedSize = std::numeric_limits<std::size_t>::max();
93 static constexpr MembersVersionDependency ForcedMembersVersionDependency = MembersVersionDependency_NotSpecified;
95 template <
typename TField>
96 using AdaptInvalidByDefault = TField;
98 template <
typename TField>
99 using AdaptVersionStorage = TField;
101 template <
typename TField>
102 using AdaptSerOffset = TField;
104 template <
typename TField>
105 using AdaptVersionsRange = TField;
107 template <
typename TField>
108 using AdaptFixedLengthLimit = TField;
110 template <
typename TField>
111 using AdaptFixedBitLengthLimit = TField;
113 template <
typename TField>
114 using AdaptVarLengthLimits = TField;
116 template <
typename TField>
117 using AdaptAvailableLengthLimit = TField;
119 template <
typename TField>
120 using AdaptSequenceElemLengthForcing = TField;
122 template <
typename TField>
123 using AdaptSequenceElemSerLengthFieldPrefix = TField;
125 template <
typename TField>
126 using AdaptSequenceElemFixedSerLengthFieldPrefix = TField;
128 template <
typename TField>
129 using AdaptSequenceSizeForcing = TField;
131 template <
typename TField>
132 using AdaptSequenceLengthForcing = TField;
134 template <
typename TField>
135 using AdaptSequenceFixedSize = TField;
137 template <
typename TField>
138 using AdaptSequenceSizeFieldPrefix = TField;
140 template <
typename TField>
141 using AdaptSequenceSerLengthFieldPrefix = TField;
143 template <
typename TField>
144 using AdaptSequenceTrailingFieldSuffix = TField;
146 template <
typename TField>
147 using AdaptSequenceTerminationFieldSuffix = TField;
149 template <
typename TField>
150 using AdaptRemLengthMemberField = TField;
152 template <
typename TField>
153 using AdaptDefaultValueInitialiser = TField;
155 template <
typename TField>
156 using AdaptMultiRangeValidation = TField;
158 template <
typename TField>
159 using AdaptCustomValidator = TField;
161 template <
typename TField>
162 using AdaptFailOnInvalid = TField;
164 template <
typename TField>
165 using AdaptIgnoreInvalid = TField;
167 template <
typename TField>
168 using AdaptEmptySerialization = TField;
170 template <
typename TField>
171 using AdaptCustomRead = TField;
173 template <
typename TField>
174 using AdaptCustomRefresh = TField;
176 template <
typename TField>
177 using AdaptCustomWrite = TField;
179 template <
typename TField>
180 using AdaptFieldType = TField;
182 template <
typename TField>
183 using AdaptMissingOnReadFail = TField;
185 template <
typename TField>
186 using AdaptMissingOnInvalid = TField;
188 template <
typename TField>
189 using AdaptVariantResetOnDestruct =
191 std::is_same<typename TField::CommsTag, comms::field::tag::Variant>::value
193 comms::field::adapter::VariantResetOnDestruct<TField>,
197 template <
typename TField>
198 using AdaptFixedValue = TField;
200 template <
typename TField>
201 using AdaptDisplayOffset = TField;
204template <
typename... TOptions>
206 comms::option::def::HasCustomRead,
207 TOptions...> :
public OptionsParser<TOptions...>
212 template <
typename TField>
213 using AdaptCustomRead = comms::field::adapter::CustomReadWrap<TField>;
216template <std::intmax_t TOffset,
typename... TOptions>
218 comms::option::def::NumValueSerOffset<TOffset>,
219 TOptions...> :
public OptionsParser<TOptions...>
222 static constexpr bool HasSerOffset =
true;
223 static const std::intmax_t SerOffset = TOffset;
225 template <
typename TField>
226 using AdaptSerOffset = comms::field::adapter::SerOffset<SerOffset, TField>;
229template <std::size_t TLen,
bool TSignExtend,
typename... TOptions>
231 comms::option::def::FixedLength<TLen, TSignExtend>,
232 TOptions...> :
public OptionsParser<TOptions...>
235 static constexpr bool HasFixedLengthLimit =
true;
237 static constexpr bool FixedLengthSignExtend = TSignExtend;
239 template <
typename TField>
240 using AdaptFixedLengthLimit =
241 comms::field::adapter::FixedLength<
243 FixedLengthSignExtend,
248template <std::size_t TLen,
bool TSignExtend,
typename... TOptions>
250 comms::option::def::FixedBitLength<TLen, TSignExtend>,
251 TOptions...> :
public OptionsParser<TOptions...>
254 static constexpr bool HasFixedBitLengthLimit =
true;
256 static constexpr bool FixedBitLengthSignExtend = TSignExtend;
258 template <
typename TField>
259 using AdaptFixedBitLengthLimit =
260 comms::field::adapter::FixedBitLength<
262 FixedBitLengthSignExtend,
266template <std::size_t TMinLen, std::size_t TMaxLen,
typename... TOptions>
268 comms::option::def::VarLength<TMinLen, TMaxLen>,
269 TOptions...> :
public OptionsParser<TOptions...>
272 static constexpr bool HasVarLengthLimits =
true;
273 static constexpr std::size_t MinVarLength = TMinLen;
274 static constexpr std::size_t MaxVarLength = TMaxLen;
276 template <
typename TField>
277 using AdaptVarLengthLimits =
278 comms::field::adapter::VarLength<MinVarLength, MaxVarLength, TField>;
281template <
typename... TOptions>
283 comms::option::def::AvailableLengthLimit,
284 TOptions...> :
public OptionsParser<TOptions...>
287 static constexpr bool HasAvailableLengthLimit =
true;
289 template <
typename TField>
290 using AdaptAvailableLengthLimit =
291 comms::field::adapter::AvailableLength<TField>;
294template <
typename... TOptions>
296 comms::option::def::SequenceSizeForcingEnabled,
297 TOptions...> :
public OptionsParser<TOptions...>
300 static constexpr bool HasSequenceSizeForcing =
true;
302 template <
typename TField>
303 using AdaptSequenceSizeForcing = comms::field::adapter::SequenceSizeForcing<TField>;
306template <
typename... TOptions>
308 comms::option::def::SequenceLengthForcingEnabled,
309 TOptions...> :
public OptionsParser<TOptions...>
312 static constexpr bool HasSequenceLengthForcing =
true;
314 template <
typename TField>
315 using AdaptSequenceLengthForcing = comms::field::adapter::SequenceLengthForcing<TField>;
318template <
typename... TOptions>
320 comms::option::def::SequenceElemLengthForcingEnabled,
321 TOptions...> :
public OptionsParser<TOptions...>
324 static constexpr bool HasSequenceElemLengthForcing =
true;
326 template <
typename TField>
327 using AdaptSequenceElemLengthForcing = comms::field::adapter::SequenceElemLengthForcing<TField>;
330template <std::size_t TSize,
typename... TOptions>
332 comms::option::def::SequenceFixedSize<TSize>,
333 TOptions...> :
public OptionsParser<TOptions...>
336 static constexpr bool HasSequenceFixedSize =
true;
339 template <
typename TField>
340 using AdaptSequenceFixedSize = comms::field::adapter::SequenceFixedSize<SequenceFixedSize, TField>;
343template <
typename... TOptions>
345 comms::option::app::SequenceFixedSizeUseFixedSizeStorage,
346 TOptions...> :
public OptionsParser<TOptions...>
349 static constexpr bool HasSequenceFixedSizeUseFixedSizeStorage =
true;
352template <
typename TSizeField,
typename... TOptions>
354 comms::option::def::SequenceSizeFieldPrefix<TSizeField>,
355 TOptions...> :
public OptionsParser<TOptions...>
358 static constexpr bool HasSequenceSizeFieldPrefix =
true;
361 template <
typename TField>
362 using AdaptSequenceSizeFieldPrefix = comms::field::adapter::SequenceSizeFieldPrefix<SequenceSizeFieldPrefix, TField>;
367 comms::option::def::SequenceSerLengthFieldPrefix<TField, TReadErrorStatus>,
368 TOptions...> :
public OptionsParser<TOptions...>
371 static constexpr bool HasSequenceSerLengthFieldPrefix =
true;
373 static constexpr comms::ErrorStatus SequenceSerLengthFieldReadErrorStatus = TReadErrorStatus;
375 template <
typename TWrappedField>
376 using AdaptSequenceSerLengthFieldPrefix =
377 comms::field::adapter::SequenceSerLengthFieldPrefix<
379 SequenceSerLengthFieldReadErrorStatus,
386 comms::option::def::SequenceElemSerLengthFieldPrefix<TField, TReadErrorStatus>,
387 TOptions...> :
public OptionsParser<TOptions...>
390 static constexpr bool HasSequenceElemSerLengthFieldPrefix =
true;
392 static constexpr comms::ErrorStatus SequenceElemSerLengthFieldReadErrorStatus = TReadErrorStatus;
394 template <
typename TWrappedField>
395 using AdaptSequenceElemSerLengthFieldPrefix =
396 comms::field::adapter::SequenceElemSerLengthFieldPrefix<
398 SequenceElemSerLengthFieldReadErrorStatus,
405 comms::option::def::SequenceElemFixedSerLengthFieldPrefix<TField, TReadErrorStatus>,
406 TOptions...> :
public OptionsParser<TOptions...>
409 static constexpr bool HasSequenceElemFixedSerLengthFieldPrefix =
true;
411 static constexpr comms::ErrorStatus SequenceElemFixedSerLengthFieldReadErrorStatus = TReadErrorStatus;
413 template <
typename TWrappedField>
414 using AdaptSequenceElemFixedSerLengthFieldPrefix =
415 comms::field::adapter::SequenceElemFixedSerLengthFieldPrefix<
417 SequenceElemFixedSerLengthFieldReadErrorStatus,
422template <
typename TTrailField,
typename... TOptions>
424 comms::option::def::SequenceTrailingFieldSuffix<TTrailField>,
425 TOptions...> :
public OptionsParser<TOptions...>
428 static constexpr bool HasSequenceTrailingFieldSuffix =
true;
431 template <
typename TField>
432 using AdaptSequenceTrailingFieldSuffix = comms::field::adapter::SequenceTrailingFieldSuffix<SequenceTrailingFieldSuffix, TField>;
435template <
typename TTermField,
typename... TOptions>
437 comms::option::def::SequenceTerminationFieldSuffix<TTermField>,
438 TOptions...> :
public OptionsParser<TOptions...>
441 static constexpr bool HasSequenceTerminationFieldSuffix =
true;
444 template <
typename TField>
445 using AdaptSequenceTerminationFieldSuffix =
446 comms::field::adapter::SequenceTerminationFieldSuffix<SequenceTerminationFieldSuffix, TField>;
449template <
typename TInitialiser,
typename... TOptions>
451 comms::option::def::DefaultValueInitialiser<TInitialiser>,
452 TOptions...> :
public OptionsParser<TOptions...>
455 static constexpr bool HasDefaultValueInitialiser =
true;
458 template <
typename TField>
459 using AdaptDefaultValueInitialiser =
460 comms::field::adapter::DefaultValueInitialiser<DefaultValueInitialiser, TField>;
463template <
typename TValidator,
typename... TOptions>
465 comms::option::def::ContentsValidator<TValidator>,
466 TOptions...> :
public OptionsParser<TOptions...>
469 static constexpr bool HasCustomValidator =
true;
470 using CustomValidator = TValidator;
472 template <
typename TField>
473 using AdaptCustomValidator = comms::field::adapter::CustomValidator<CustomValidator, TField>;
476template <
typename... TOptions>
478 comms::option::def::HasCustomRefresh,
479 TOptions...> :
public OptionsParser<TOptions...>
484 template <
typename TField>
485 using AdaptCustomRefresh = comms::field::adapter::CustomRefreshWrap<TField>;
490 comms::option::def::FailOnInvalid<TStatus>,
491 TOptions...> :
public OptionsParser<TOptions...>
494 static constexpr bool HasFailOnInvalid =
true;
497 template <
typename TField>
498 using AdaptFailOnInvalid = comms::field::adapter::FailOnInvalid<FailOnInvalidStatus, TField>;
501template <
typename... TOptions>
503 comms::option::def::IgnoreInvalid,
504 TOptions...> :
public OptionsParser<TOptions...>
507 static constexpr bool HasIgnoreInvalid =
true;
509 template <
typename TField>
510 using AdaptIgnoreInvalid = comms::field::adapter::IgnoreInvalid<TField>;
513template <
typename... TOptions>
515 comms::option::def::InvalidByDefault,
516 TOptions...> :
public OptionsParser<TOptions...>
519 static constexpr bool HasInvalidByDefault =
true;
521 template <
typename TField>
522 using AdaptInvalidByDefault = comms::field::adapter::InvalidByDefault<TField>;
525template <std::size_t TSize,
typename... TOptions>
527 comms::option::app::FixedSizeStorage<TSize>,
528 TOptions...> :
public OptionsParser<TOptions...>
531 static constexpr bool HasFixedSizeStorage =
true;
535template <
typename TType,
typename... TOptions>
537 comms::option::app::CustomStorageType<TType>,
538 TOptions...> :
public OptionsParser<TOptions...>
541 static constexpr bool HasCustomStorageType =
true;
545template <std::intmax_t TNum, std::intmax_t TDenom,
typename... TOptions>
547 comms::option::def::ScalingRatio<TNum, TDenom>,
548 TOptions...> :
public OptionsParser<TOptions...>
551 static constexpr bool HasScalingRatio =
true;
555template <
typename TType,
typename TRatio,
typename... TOptions>
557 comms::option::def::Units<TType, TRatio>,
558 TOptions...> :
public OptionsParser<TOptions...>
561 static constexpr bool HasUnits =
true;
562 using UnitsType = TType;
563 using UnitsRatio = TRatio;
566template <
typename... TOptions>
568 comms::option::app::OrigDataView,
569 TOptions...> :
public OptionsParser<TOptions...>
572 static constexpr bool HasOrigDataView =
true;
575template <
typename... TOptions>
577 comms::option::def::EmptySerialization,
578 TOptions...> :
public OptionsParser<TOptions...>
581 static constexpr bool HasEmptySerialization =
true;
583 template <
typename TField>
584 using AdaptEmptySerialization = comms::field::adapter::EmptySerialization<TField>;
587template <
bool THasMultiRangeVal
idation>
588struct MultiRangeAssembler
590 template <
typename TBase,
typename T, T TMinValue, T TMaxValue>
594 std::integral_constant<T, TMinValue>,
595 std::integral_constant<T, TMaxValue>
601struct MultiRangeAssembler<true>
603 using FalseAssembler = MultiRangeAssembler<false>;
605 template <
typename TBase,
typename T, T TMinValue, T TMaxValue>
610 std::declval<typename TBase::MultiRangeValidationRanges>(),
611 std::declval<
typename FalseAssembler::template Type<TBase, T, TMinValue, TMaxValue> >()
618template <
typename TBase,
typename T, T TMinValue, T TMaxValue>
619using MultiRangeAssemblerT =
620 typename MultiRangeAssembler<TBase::HasMultiRangeValidation>::template Type<TBase, T, TMinValue, TMaxValue>;
622template <std::intmax_t TMinValue, std::intmax_t TMaxValue,
typename... TOptions>
624 comms::option::def::ValidNumValueRange<TMinValue, TMaxValue>,
625 TOptions...> :
public OptionsParser<TOptions...>
627 using BaseImpl = OptionsParser<TOptions...>;
629#ifdef COMMS_COMPILER_GCC47
630 static_assert(!BaseImpl::HasMultiRangeValidation,
631 "Sorry gcc-4.7 fails to compile valid C++11 code that allows multiple usage"
632 "of comms::option::def::ValidNumValueRange options. Either use it only once or"
633 "upgrade your compiler.");
635 using MultiRangeValidationRanges = MultiRangeAssemblerT<BaseImpl, std::intmax_t, TMinValue, TMaxValue>;
636 static constexpr bool HasMultiRangeValidation =
true;
638 template <
typename TField>
639 using AdaptMultiRangeValidation =
640 comms::field::adapter::NumValueMultiRangeValidator<MultiRangeValidationRanges, TField>;
643template <
typename... TOptions>
645 comms::option::def::ValidRangesClear,
646 TOptions...> :
public OptionsParser<TOptions...>
648 using BaseImpl = OptionsParser<TOptions...>;
650 using MultiRangeValidationRanges = void;
651 static constexpr bool HasMultiRangeValidation =
false;
653 template <
typename TField>
654 using AdaptMultiRangeValidation = TField;
658template <std::uintmax_t TMinValue, std::uintmax_t TMaxValue,
typename... TOptions>
660 comms::option::def::ValidBigUnsignedNumValueRange<TMinValue, TMaxValue>,
661 TOptions...> :
public OptionsParser<TOptions...>
663 using BaseImpl = OptionsParser<TOptions...>;
665#ifdef COMMS_COMPILER_GCC47
666 static_assert(!BaseImpl::HasMultiRangeValidation,
667 "Sorry gcc-4.7 fails to compile valid C++11 code that allows multiple usage"
668 "of comms::option::def::ValidNumValueRange options. Either use it only once or"
669 "upgrade your compiler.");
671 using MultiRangeValidationRanges = MultiRangeAssemblerT<BaseImpl, std::uintmax_t, TMinValue, TMaxValue>;
672 static constexpr bool HasMultiRangeValidation =
true;
674 template <
typename TField>
675 using AdaptMultiRangeValidation =
676 comms::field::adapter::NumValueMultiRangeValidator<MultiRangeValidationRanges, TField>;
679template <
typename... TOptions>
681 comms::option::def::HasCustomVersionUpdate,
682 TOptions...> :
public OptionsParser<TOptions...>
688template <std::uintmax_t TFrom, std::uintmax_t TUntil,
typename... TOptions>
690 comms::option::def::ExistsBetweenVersions<TFrom, TUntil>,
691 TOptions...> :
public OptionsParser<TOptions...>
694 static constexpr bool HasVersionsRange =
true;
695 static constexpr std::uintmax_t ExistsFromVersion = TFrom;
698 template <
typename TField>
699 using AdaptVersionsRange =
700 comms::field::adapter::ExistsBetweenVersions<ExistsFromVersion, ExistsUntilVersion, TField>;
703template <
typename... TOptions>
705 comms::option::def::VersionStorage,
706 TOptions...> :
public OptionsParser<TOptions...>
709 static constexpr bool HasVersionStorage =
true;
711 template <
typename TField>
712 using AdaptVersionStorage = comms::field::adapter::VersionStorage<TField>;
715template <std::size_t TIdx,
typename... TOptions>
717 comms::option::def::RemLengthMemberField<TIdx>,
718 TOptions...> :
public OptionsParser<TOptions...>
720 using BaseImpl = OptionsParser<TOptions...>;
721 static_assert(!BaseImpl::HasRemLengthMemberField,
722 "Option comms::def::option::RemLengthMemberField used multiple times");
724 static constexpr bool HasRemLengthMemberField =
true;
725 static constexpr std::size_t RemLengthMemberFieldIdx = TIdx;
727 template <
typename TField>
728 using AdaptRemLengthMemberField =
729 comms::field::adapter::RemLengthMemberField<RemLengthMemberFieldIdx, TField>;
732template <
typename... TOptions>
734 comms::option::def::HasCustomWrite,
735 TOptions...> :
public OptionsParser<TOptions...>
738 static constexpr bool HasCustomWrite =
true;
740 template <
typename TField>
741 using AdaptCustomWrite = comms::field::adapter::CustomWriteWrap<TField>;
744template <
typename TActField,
typename... TOptions>
746 comms::option::def::FieldType<TActField>,
747 TOptions...> :
public OptionsParser<TOptions...>
750 static constexpr bool HasFieldType =
true;
753 template <
typename TField>
754 using AdaptFieldType = comms::field::adapter::FieldType<TActField, TField>;
757template <
typename... TOptions>
759 comms::option::def::MissingOnReadFail,
760 TOptions...> :
public OptionsParser<TOptions...>
763 static constexpr bool HasMissingOnReadFail =
true;
765 template <
typename TField>
766 using AdaptMissingOnReadFail = comms::field::adapter::MissingOnReadFail<TField>;
769template <
typename... TOptions>
771 comms::option::def::MissingOnInvalid,
772 TOptions...> :
public OptionsParser<TOptions...>
775 static constexpr bool HasMissingOnInvalid =
true;
777 template <
typename TField>
778 using AdaptMissingOnInvalid = comms::field::adapter::MissingOnInvalid<TField>;
781template <
typename... TOptions>
783 comms::option::def::VariantHasCustomResetOnDestruct,
784 TOptions...> :
public OptionsParser<TOptions...>
787 static constexpr bool HasVariantCustomResetOnDestruct =
true;
789 template <
typename TField>
790 using AdaptVariantResetOnDestruct = TField;
793template <
bool TVersionDependent,
typename... TOptions>
795 comms::option::def::HasVersionDependentMembers<TVersionDependent>,
796 TOptions...> :
public OptionsParser<TOptions...>
799 static constexpr bool HasVersionDependentMembersForced =
true;
800 static constexpr MembersVersionDependency ForcedMembersVersionDependency =
801 TVersionDependent ? MembersVersionDependency_Dependent : MembersVersionDependency_Independent;
804template <
typename... TOptions>
806 comms::option::def::FixedValue,
807 TOptions...> :
public OptionsParser<TOptions...>
810 static constexpr bool HasFixedValue =
true;
812 template <
typename TField>
813 using AdaptFixedValue = comms::field::adapter::FixedValue<TField>;
816template <std::intmax_t TOffset,
typename... TOptions>
818 comms::option::def::DisplayOffset<TOffset>,
819 TOptions...> :
public OptionsParser<TOptions...>
822 static constexpr bool HasDisplayOffset =
true;
823 static constexpr std::intmax_t DisplayOffset = TOffset;
825 template <
typename TField>
826 using AdaptDisplayOffset = comms::field::adapter::DisplayOffset<TOffset, TField>;
829template <
typename... TOptions>
831 comms::option::def::HasName,
832 TOptions...> :
public OptionsParser<TOptions...>
835 static constexpr bool HasName =
true;
838template <
typename... TOptions>
840 comms::option::app::EmptyOption,
841 TOptions...> :
public OptionsParser<TOptions...>
845template <
typename... TTupleOptions,
typename... TOptions>
847 std::tuple<TTupleOptions...>,
848 TOptions...> :
public OptionsParser<TTupleOptions..., TOptions...>
Contains various compiler related definitions.
Contains definition of various tag classes.
ExistsBetweenVersions< 0, TVer > ExistsUntilVersion
Mark an comms::field::Optional field as existing only until specified version.
Definition options.h:1195
comms::option::def::SequenceTrailingFieldSuffix< TField > SequenceTrailingFieldSuffix
Same as comms::option::def::SequenceTrailingFieldSuffix.
Definition options.h:1540
comms::option::def::HasName HasName
Same as comms::option::def::HasName.
Definition options.h:1795
comms::option::def::SequenceElemFixedSerLengthFieldPrefix< TField, TReadErrorStatus > SequenceElemFixedSerLengthFieldPrefix
Same as comms::option::def::SequenceElemFixedSerLengthFieldPrefix.
Definition options.h:1532
comms::option::def::SequenceTerminationFieldSuffix< TField > SequenceTerminationFieldSuffix
Same as comms::option::def::SequenceTerminationFieldSuffix.
Definition options.h:1536
comms::option::def::SequenceSerLengthFieldPrefix< TField, TReadErrorStatus > SequenceSerLengthFieldPrefix
Same as comms::option::def::SequenceSerLengthFieldPrefix.
Definition options.h:1522
comms::option::def::DefaultValueInitialiser< T > DefaultValueInitialiser
Same as comms::option::def::DefaultValueInitialiser.
Definition options.h:1557
comms::option::def::FixedLength< TLen, TSignExtend > FixedLength
Same as comms::option::def::FixedLength.
Definition options.h:1497
comms::option::def::SequenceFixedSize< TSize > SequenceFixedSize
Same as comms::option::def::SequenceFixedSize.
Definition options.h:1553
comms::option::def::HasCustomVersionUpdate HasCustomVersionUpdate
Same as comms::option::def::HasCustomVersionUpdate.
Definition options.h:1809
comms::option::def::HasCustomRead HasCustomRead
Same as comms::option::def::HasCustomRead.
Definition options.h:1789
comms::option::def::FieldType< TMsg > FieldType
Same as comms::option::def::FieldType.
Definition options.h:1472
comms::option::def::SequenceElemSerLengthFieldPrefix< TField, TReadErrorStatus > SequenceElemSerLengthFieldPrefix
Same as comms::option::def::SequenceElemSerLengthFieldPrefix.
Definition options.h:1527
comms::option::app::FixedSizeStorage< TSize > FixedSizeStorage
Same as comms::option::app::FixedSizeStorage.
Definition options.h:1896
comms::option::app::CustomStorageType< TType > CustomStorageType
Same as comms::option::app::CustomStorageType.
Definition options.h:1900
comms::option::def::HasCustomRefresh HasCustomRefresh
Same as comms::option::def::HasCustomRefresh.
Definition options.h:1792
comms::option::def::FixedBitLength< TLen, TSignExtend > FixedBitLength
Same as comms::option::def::FixedBitLength.
Definition options.h:1501
comms::option::def::SequenceSizeFieldPrefix< TField > SequenceSizeFieldPrefix
Same as comms::option::def::SequenceSizeFieldPrefix.
Definition options.h:1517
comms::option::def::ScalingRatio< TNum, TDenom > ScalingRatio
Same as comms::option::def::ScalingRatio.
Definition options.h:1513
Main namespace for all classes / functions of COMMS library.
ErrorStatus
Error statuses reported by the Communication module.
Definition ErrorStatus.h:17
Contains definition of all the options used by the COMMS library.
Replacement to std::conditional.
Definition type_traits.h:28
Replacement to some types from standard type_traits.