13#include "comms/field/details/adapters.h"
14#include "comms/field/details/MembersVersionDependency.h"
35template <
typename... TOptions>
42 static constexpr bool HasInvalidByDefault =
false;
43 static constexpr bool HasVersionStorage =
false;
44 static constexpr bool HasSerOffset =
false;
45 static constexpr bool HasVersionsRange =
false;
46 static constexpr bool HasFixedLengthLimit =
false;
47 static constexpr bool HasFixedBitLengthLimit =
false;
48 static constexpr bool HasVarLengthLimits =
false;
49 static constexpr bool HasAvailableLengthLimit =
false;
50 static constexpr bool HasSequenceElemLengthForcing =
false;
51 static constexpr bool HasSequenceElemSerLengthFieldPrefix =
false;
52 static constexpr bool HasSequenceElemFixedSerLengthFieldPrefix =
false;
53 static constexpr bool HasSequenceSizeForcing =
false;
54 static constexpr bool HasSequenceLengthForcing =
false;
55 static constexpr bool HasSequenceFixedSize =
false;
56 static constexpr bool HasSequenceSizeFieldPrefix =
false;
57 static constexpr bool HasSequenceSerLengthFieldPrefix =
false;
58 static constexpr bool HasSequenceTrailingFieldSuffix =
false;
59 static constexpr bool HasSequenceTerminationFieldSuffix =
false;
60 static constexpr bool HasRemLengthMemberField =
false;
61 static constexpr bool HasDefaultValueInitialiser =
false;
62 static constexpr bool HasMultiRangeValidation =
false;
63 static constexpr bool HasCustomValidator =
false;
64 static constexpr bool HasFailOnInvalid =
false;
65 static constexpr bool HasIgnoreInvalid =
false;
66 static constexpr bool HasEmptySerialization =
false;
69 static constexpr bool HasCustomWrite =
false;
70 static constexpr bool HasSequenceFixedSizeUseFixedSizeStorage =
false;
71 static constexpr bool HasFixedSizeStorage =
false;
72 static constexpr bool HasCustomStorageType =
false;
73 static constexpr bool HasScalingRatio =
false;
74 static constexpr bool HasUnits =
false;
75 static constexpr bool HasOrigDataView =
false;
77 static constexpr bool HasFieldType =
false;
78 static constexpr bool HasMissingOnReadFail =
false;
79 static constexpr bool HasMissingOnInvalid =
false;
80 static constexpr bool HasVariantCustomResetOnDestruct =
false;
81 static constexpr bool HasVersionDependentMembersForced =
false;
82 static constexpr bool HasFixedValue =
false;
83 static constexpr bool HasDisplayOffset =
false;
84 static constexpr bool HasName =
false;
86 using UnitsType = void;
88 using UnitsRatio = std::ratio<1, 1>;
97 static constexpr std::size_t
SequenceFixedSize = std::numeric_limits<std::size_t>::max();
98 static constexpr MembersVersionDependency ForcedMembersVersionDependency = MembersVersionDependency_NotSpecified;
100 template <
typename TField>
101 using AdaptInvalidByDefault = TField;
103 template <
typename TField>
104 using AdaptVersionStorage = TField;
106 template <
typename TField>
107 using AdaptSerOffset = TField;
109 template <
typename TField>
110 using AdaptVersionsRange = TField;
112 template <
typename TField>
113 using AdaptFixedLengthLimit = TField;
115 template <
typename TField>
116 using AdaptFixedBitLengthLimit = TField;
118 template <
typename TField>
119 using AdaptVarLengthLimits = TField;
121 template <
typename TField>
122 using AdaptAvailableLengthLimit = TField;
124 template <
typename TField>
125 using AdaptSequenceElemLengthForcing = TField;
127 template <
typename TField>
128 using AdaptSequenceElemSerLengthFieldPrefix = TField;
130 template <
typename TField>
131 using AdaptSequenceElemFixedSerLengthFieldPrefix = TField;
133 template <
typename TField>
134 using AdaptSequenceSizeForcing = TField;
136 template <
typename TField>
137 using AdaptSequenceLengthForcing = TField;
139 template <
typename TField>
140 using AdaptSequenceFixedSize = TField;
142 template <
typename TField>
143 using AdaptSequenceSizeFieldPrefix = TField;
145 template <
typename TField>
146 using AdaptSequenceSerLengthFieldPrefix = TField;
148 template <
typename TField>
149 using AdaptSequenceTrailingFieldSuffix = TField;
151 template <
typename TField>
152 using AdaptSequenceTerminationFieldSuffix = TField;
154 template <
typename TField>
155 using AdaptRemLengthMemberField = TField;
157 template <
typename TField>
158 using AdaptDefaultValueInitialiser = TField;
160 template <
typename TField>
161 using AdaptMultiRangeValidation = TField;
163 template <
typename TField>
164 using AdaptCustomValidator = TField;
166 template <
typename TField>
167 using AdaptFailOnInvalid = TField;
169 template <
typename TField>
170 using AdaptIgnoreInvalid = TField;
172 template <
typename TField>
173 using AdaptEmptySerialization = TField;
175 template <
typename TField>
176 using AdaptCustomRead = TField;
178 template <
typename TField>
179 using AdaptCustomRefresh = TField;
181 template <
typename TField>
182 using AdaptCustomWrite = TField;
184 template <
typename TField>
185 using AdaptFieldType = TField;
187 template <
typename TField>
188 using AdaptMissingOnReadFail = TField;
190 template <
typename TField>
191 using AdaptMissingOnInvalid = TField;
193 template <
typename TField>
194 using AdaptVariantResetOnDestruct =
196 std::is_same<typename TField::CommsTag, comms::field::tag::Variant>::value
198 comms::field::adapter::VariantResetOnDestruct<TField>,
202 template <
typename TField>
203 using AdaptFixedValue = TField;
205 template <
typename TField>
206 using AdaptDisplayOffset = TField;
209template <
typename... TOptions>
211 comms::option::def::HasCustomRead,
212 TOptions...> :
public OptionsParser<TOptions...>
217 template <
typename TField>
218 using AdaptCustomRead = comms::field::adapter::CustomReadWrap<TField>;
221template <std::intmax_t TOffset,
typename... TOptions>
223 comms::option::def::NumValueSerOffset<TOffset>,
224 TOptions...> :
public OptionsParser<TOptions...>
227 static constexpr bool HasSerOffset =
true;
228 static const std::intmax_t SerOffset = TOffset;
230 template <
typename TField>
231 using AdaptSerOffset = comms::field::adapter::SerOffset<SerOffset, TField>;
234template <std::size_t TLen,
bool TSignExtend,
typename... TOptions>
236 comms::option::def::FixedLength<TLen, TSignExtend>,
237 TOptions...> :
public OptionsParser<TOptions...>
240 static constexpr bool HasFixedLengthLimit =
true;
242 static constexpr bool FixedLengthSignExtend = TSignExtend;
244 template <
typename TField>
245 using AdaptFixedLengthLimit =
246 comms::field::adapter::FixedLength<
248 FixedLengthSignExtend,
253template <std::size_t TLen,
bool TSignExtend,
typename... TOptions>
255 comms::option::def::FixedBitLength<TLen, TSignExtend>,
256 TOptions...> :
public OptionsParser<TOptions...>
259 static constexpr bool HasFixedBitLengthLimit =
true;
261 static constexpr bool FixedBitLengthSignExtend = TSignExtend;
263 template <
typename TField>
264 using AdaptFixedBitLengthLimit =
265 comms::field::adapter::FixedBitLength<
267 FixedBitLengthSignExtend,
271template <std::size_t TMinLen, std::size_t TMaxLen,
typename... TOptions>
273 comms::option::def::VarLength<TMinLen, TMaxLen>,
274 TOptions...> :
public OptionsParser<TOptions...>
277 static constexpr bool HasVarLengthLimits =
true;
278 static constexpr std::size_t MinVarLength = TMinLen;
279 static constexpr std::size_t MaxVarLength = TMaxLen;
281 template <
typename TField>
282 using AdaptVarLengthLimits =
283 comms::field::adapter::VarLength<MinVarLength, MaxVarLength, TField>;
286template <
typename... TOptions>
288 comms::option::def::AvailableLengthLimit,
289 TOptions...> :
public OptionsParser<TOptions...>
292 static constexpr bool HasAvailableLengthLimit =
true;
294 template <
typename TField>
295 using AdaptAvailableLengthLimit =
296 comms::field::adapter::AvailableLength<TField>;
299template <
typename... TOptions>
301 comms::option::def::SequenceSizeForcingEnabled,
302 TOptions...> :
public OptionsParser<TOptions...>
305 static constexpr bool HasSequenceSizeForcing =
true;
307 template <
typename TField>
308 using AdaptSequenceSizeForcing = comms::field::adapter::SequenceSizeForcing<TField>;
311template <
typename... TOptions>
313 comms::option::def::SequenceLengthForcingEnabled,
314 TOptions...> :
public OptionsParser<TOptions...>
317 static constexpr bool HasSequenceLengthForcing =
true;
319 template <
typename TField>
320 using AdaptSequenceLengthForcing = comms::field::adapter::SequenceLengthForcing<TField>;
323template <
typename... TOptions>
325 comms::option::def::SequenceElemLengthForcingEnabled,
326 TOptions...> :
public OptionsParser<TOptions...>
329 static constexpr bool HasSequenceElemLengthForcing =
true;
331 template <
typename TField>
332 using AdaptSequenceElemLengthForcing = comms::field::adapter::SequenceElemLengthForcing<TField>;
335template <std::size_t TSize,
typename... TOptions>
337 comms::option::def::SequenceFixedSize<TSize>,
338 TOptions...> :
public OptionsParser<TOptions...>
341 static constexpr bool HasSequenceFixedSize =
true;
344 template <
typename TField>
345 using AdaptSequenceFixedSize = comms::field::adapter::SequenceFixedSize<SequenceFixedSize, TField>;
348template <
typename... TOptions>
350 comms::option::app::SequenceFixedSizeUseFixedSizeStorage,
351 TOptions...> :
public OptionsParser<TOptions...>
354 static constexpr bool HasSequenceFixedSizeUseFixedSizeStorage =
true;
357template <
typename TSizeField,
typename... TOptions>
359 comms::option::def::SequenceSizeFieldPrefix<TSizeField>,
360 TOptions...> :
public OptionsParser<TOptions...>
363 static constexpr bool HasSequenceSizeFieldPrefix =
true;
366 template <
typename TField>
367 using AdaptSequenceSizeFieldPrefix = comms::field::adapter::SequenceSizeFieldPrefix<SequenceSizeFieldPrefix, TField>;
372 comms::option::def::SequenceSerLengthFieldPrefix<TField, TReadErrorStatus>,
373 TOptions...> :
public OptionsParser<TOptions...>
376 static constexpr bool HasSequenceSerLengthFieldPrefix =
true;
378 static constexpr comms::ErrorStatus SequenceSerLengthFieldReadErrorStatus = TReadErrorStatus;
380 template <
typename TWrappedField>
381 using AdaptSequenceSerLengthFieldPrefix =
382 comms::field::adapter::SequenceSerLengthFieldPrefix<
384 SequenceSerLengthFieldReadErrorStatus,
391 comms::option::def::SequenceElemSerLengthFieldPrefix<TField, TReadErrorStatus>,
392 TOptions...> :
public OptionsParser<TOptions...>
395 static constexpr bool HasSequenceElemSerLengthFieldPrefix =
true;
397 static constexpr comms::ErrorStatus SequenceElemSerLengthFieldReadErrorStatus = TReadErrorStatus;
399 template <
typename TWrappedField>
400 using AdaptSequenceElemSerLengthFieldPrefix =
401 comms::field::adapter::SequenceElemSerLengthFieldPrefix<
403 SequenceElemSerLengthFieldReadErrorStatus,
410 comms::option::def::SequenceElemFixedSerLengthFieldPrefix<TField, TReadErrorStatus>,
411 TOptions...> :
public OptionsParser<TOptions...>
414 static constexpr bool HasSequenceElemFixedSerLengthFieldPrefix =
true;
416 static constexpr comms::ErrorStatus SequenceElemFixedSerLengthFieldReadErrorStatus = TReadErrorStatus;
418 template <
typename TWrappedField>
419 using AdaptSequenceElemFixedSerLengthFieldPrefix =
420 comms::field::adapter::SequenceElemFixedSerLengthFieldPrefix<
422 SequenceElemFixedSerLengthFieldReadErrorStatus,
427template <
typename TTrailField,
typename... TOptions>
429 comms::option::def::SequenceTrailingFieldSuffix<TTrailField>,
430 TOptions...> :
public OptionsParser<TOptions...>
433 static constexpr bool HasSequenceTrailingFieldSuffix =
true;
436 template <
typename TField>
437 using AdaptSequenceTrailingFieldSuffix = comms::field::adapter::SequenceTrailingFieldSuffix<SequenceTrailingFieldSuffix, TField>;
440template <
typename TTermField,
typename... TOptions>
442 comms::option::def::SequenceTerminationFieldSuffix<TTermField>,
443 TOptions...> :
public OptionsParser<TOptions...>
446 static constexpr bool HasSequenceTerminationFieldSuffix =
true;
449 template <
typename TField>
450 using AdaptSequenceTerminationFieldSuffix =
451 comms::field::adapter::SequenceTerminationFieldSuffix<SequenceTerminationFieldSuffix, TField>;
454template <
typename TInitialiser,
typename... TOptions>
456 comms::option::def::DefaultValueInitialiser<TInitialiser>,
457 TOptions...> :
public OptionsParser<TOptions...>
460 static constexpr bool HasDefaultValueInitialiser =
true;
463 template <
typename TField>
464 using AdaptDefaultValueInitialiser =
465 comms::field::adapter::DefaultValueInitialiser<DefaultValueInitialiser, TField>;
468template <
typename TValidator,
typename... TOptions>
470 comms::option::def::ContentsValidator<TValidator>,
471 TOptions...> :
public OptionsParser<TOptions...>
474 static constexpr bool HasCustomValidator =
true;
475 using CustomValidator = TValidator;
477 template <
typename TField>
478 using AdaptCustomValidator = comms::field::adapter::CustomValidator<CustomValidator, TField>;
481template <
typename... TOptions>
483 comms::option::def::HasCustomRefresh,
484 TOptions...> :
public OptionsParser<TOptions...>
489 template <
typename TField>
490 using AdaptCustomRefresh = comms::field::adapter::CustomRefreshWrap<TField>;
495 comms::option::def::FailOnInvalid<TStatus>,
496 TOptions...> :
public OptionsParser<TOptions...>
499 static constexpr bool HasFailOnInvalid =
true;
502 template <
typename TField>
503 using AdaptFailOnInvalid = comms::field::adapter::FailOnInvalid<FailOnInvalidStatus, TField>;
506template <
typename... TOptions>
508 comms::option::def::IgnoreInvalid,
509 TOptions...> :
public OptionsParser<TOptions...>
512 static constexpr bool HasIgnoreInvalid =
true;
514 template <
typename TField>
515 using AdaptIgnoreInvalid = comms::field::adapter::IgnoreInvalid<TField>;
518template <
typename... TOptions>
520 comms::option::def::InvalidByDefault,
521 TOptions...> :
public OptionsParser<TOptions...>
524 static constexpr bool HasInvalidByDefault =
true;
526 template <
typename TField>
527 using AdaptInvalidByDefault = comms::field::adapter::InvalidByDefault<TField>;
530template <std::size_t TSize,
typename... TOptions>
532 comms::option::app::FixedSizeStorage<TSize>,
533 TOptions...> :
public OptionsParser<TOptions...>
536 static constexpr bool HasFixedSizeStorage =
true;
540template <
typename TType,
typename... TOptions>
542 comms::option::app::CustomStorageType<TType>,
543 TOptions...> :
public OptionsParser<TOptions...>
546 static constexpr bool HasCustomStorageType =
true;
550template <std::intmax_t TNum, std::intmax_t TDenom,
typename... TOptions>
552 comms::option::def::ScalingRatio<TNum, TDenom>,
553 TOptions...> :
public OptionsParser<TOptions...>
556 static constexpr bool HasScalingRatio =
true;
560template <
typename TType,
typename TRatio,
typename... TOptions>
562 comms::option::def::Units<TType, TRatio>,
563 TOptions...> :
public OptionsParser<TOptions...>
566 static constexpr bool HasUnits =
true;
567 using UnitsType = TType;
568 using UnitsRatio = TRatio;
571template <
typename... TOptions>
573 comms::option::app::OrigDataView,
574 TOptions...> :
public OptionsParser<TOptions...>
577 static constexpr bool HasOrigDataView =
true;
580template <
typename... TOptions>
582 comms::option::def::EmptySerialization,
583 TOptions...> :
public OptionsParser<TOptions...>
586 static constexpr bool HasEmptySerialization =
true;
588 template <
typename TField>
589 using AdaptEmptySerialization = comms::field::adapter::EmptySerialization<TField>;
592template <
bool THasMultiRangeVal
idation>
593struct MultiRangeAssembler
595 template <
typename TBase,
typename T, T TMinValue, T TMaxValue>
599 std::integral_constant<T, TMinValue>,
600 std::integral_constant<T, TMaxValue>
606struct MultiRangeAssembler<true>
608 using FalseAssembler = MultiRangeAssembler<false>;
610 template <
typename TBase,
typename T, T TMinValue, T TMaxValue>
615 std::declval<typename TBase::MultiRangeValidationRanges>(),
616 std::declval<
typename FalseAssembler::template Type<TBase, T, TMinValue, TMaxValue> >()
622template <
typename TBase,
typename T, T TMinValue, T TMaxValue>
623using MultiRangeAssemblerT =
624 typename MultiRangeAssembler<TBase::HasMultiRangeValidation>::template Type<TBase, T, TMinValue, TMaxValue>;
626template <std::intmax_t TMinValue, std::intmax_t TMaxValue,
typename... TOptions>
628 comms::option::def::ValidNumValueRange<TMinValue, TMaxValue>,
629 TOptions...> :
public OptionsParser<TOptions...>
631 using BaseImpl = OptionsParser<TOptions...>;
633#ifdef COMMS_COMPILER_GCC47
634 static_assert(!BaseImpl::HasMultiRangeValidation,
635 "Sorry gcc-4.7 fails to compile valid C++11 code that allows multiple usage"
636 "of comms::option::def::ValidNumValueRange options. Either use it only once or"
637 "upgrade your compiler.");
639 using MultiRangeValidationRanges = MultiRangeAssemblerT<BaseImpl, std::intmax_t, TMinValue, TMaxValue>;
640 static constexpr bool HasMultiRangeValidation =
true;
642 template <
typename TField>
643 using AdaptMultiRangeValidation =
644 comms::field::adapter::NumValueMultiRangeValidator<MultiRangeValidationRanges, TField>;
647template <
typename... TOptions>
649 comms::option::def::ValidRangesClear,
650 TOptions...> :
public OptionsParser<TOptions...>
652 using BaseImpl = OptionsParser<TOptions...>;
654 using MultiRangeValidationRanges = void;
655 static constexpr bool HasMultiRangeValidation =
false;
657 template <
typename TField>
658 using AdaptMultiRangeValidation = TField;
661template <std::uintmax_t TMinValue, std::uintmax_t TMaxValue,
typename... TOptions>
663 comms::option::def::ValidBigUnsignedNumValueRange<TMinValue, TMaxValue>,
664 TOptions...> :
public OptionsParser<TOptions...>
666 using BaseImpl = OptionsParser<TOptions...>;
668#ifdef COMMS_COMPILER_GCC47
669 static_assert(!BaseImpl::HasMultiRangeValidation,
670 "Sorry gcc-4.7 fails to compile valid C++11 code that allows multiple usage"
671 "of comms::option::def::ValidNumValueRange options. Either use it only once or"
672 "upgrade your compiler.");
674 using MultiRangeValidationRanges = MultiRangeAssemblerT<BaseImpl, std::uintmax_t, TMinValue, TMaxValue>;
675 static constexpr bool HasMultiRangeValidation =
true;
677 template <
typename TField>
678 using AdaptMultiRangeValidation =
679 comms::field::adapter::NumValueMultiRangeValidator<MultiRangeValidationRanges, TField>;
682template <
typename... TOptions>
684 comms::option::def::HasCustomVersionUpdate,
685 TOptions...> :
public OptionsParser<TOptions...>
691template <std::uintmax_t TFrom, std::uintmax_t TUntil,
typename... TOptions>
693 comms::option::def::ExistsBetweenVersions<TFrom, TUntil>,
694 TOptions...> :
public OptionsParser<TOptions...>
697 static constexpr bool HasVersionsRange =
true;
698 static constexpr std::uintmax_t ExistsFromVersion = TFrom;
701 template <
typename TField>
702 using AdaptVersionsRange =
703 comms::field::adapter::ExistsBetweenVersions<ExistsFromVersion, ExistsUntilVersion, TField>;
706template <
typename... TOptions>
708 comms::option::def::VersionStorage,
709 TOptions...> :
public OptionsParser<TOptions...>
712 static constexpr bool HasVersionStorage =
true;
714 template <
typename TField>
715 using AdaptVersionStorage = comms::field::adapter::VersionStorage<TField>;
718template <std::size_t TIdx,
typename... TOptions>
720 comms::option::def::RemLengthMemberField<TIdx>,
721 TOptions...> :
public OptionsParser<TOptions...>
723 using BaseImpl = OptionsParser<TOptions...>;
724 static_assert(!BaseImpl::HasRemLengthMemberField,
725 "Option comms::def::option::RemLengthMemberField used multiple times");
727 static constexpr bool HasRemLengthMemberField =
true;
728 static constexpr std::size_t RemLengthMemberFieldIdx = TIdx;
730 template <
typename TField>
731 using AdaptRemLengthMemberField =
732 comms::field::adapter::RemLengthMemberField<RemLengthMemberFieldIdx, TField>;
735template <
typename... TOptions>
737 comms::option::def::HasCustomWrite,
738 TOptions...> :
public OptionsParser<TOptions...>
741 static constexpr bool HasCustomWrite =
true;
743 template <
typename TField>
744 using AdaptCustomWrite = comms::field::adapter::CustomWriteWrap<TField>;
747template <
typename TActField,
typename... TOptions>
749 comms::option::def::FieldType<TActField>,
750 TOptions...> :
public OptionsParser<TOptions...>
753 static constexpr bool HasFieldType =
true;
756 template <
typename TField>
757 using AdaptFieldType = comms::field::adapter::FieldType<TActField, TField>;
760template <
typename... TOptions>
762 comms::option::def::MissingOnReadFail,
763 TOptions...> :
public OptionsParser<TOptions...>
766 static constexpr bool HasMissingOnReadFail =
true;
768 template <
typename TField>
769 using AdaptMissingOnReadFail = comms::field::adapter::MissingOnReadFail<TField>;
772template <
typename... TOptions>
774 comms::option::def::MissingOnInvalid,
775 TOptions...> :
public OptionsParser<TOptions...>
778 static constexpr bool HasMissingOnInvalid =
true;
780 template <
typename TField>
781 using AdaptMissingOnInvalid = comms::field::adapter::MissingOnInvalid<TField>;
784template <
typename... TOptions>
786 comms::option::def::VariantHasCustomResetOnDestruct,
787 TOptions...> :
public OptionsParser<TOptions...>
790 static constexpr bool HasVariantCustomResetOnDestruct =
true;
792 template <
typename TField>
793 using AdaptVariantResetOnDestruct = TField;
796template <
bool TVersionDependent,
typename... TOptions>
798 comms::option::def::HasVersionDependentMembers<TVersionDependent>,
799 TOptions...> :
public OptionsParser<TOptions...>
802 static constexpr bool HasVersionDependentMembersForced =
true;
803 static constexpr MembersVersionDependency ForcedMembersVersionDependency =
804 TVersionDependent ? MembersVersionDependency_Dependent : MembersVersionDependency_Independent;
807template <
typename... TOptions>
809 comms::option::def::FixedValue,
810 TOptions...> :
public OptionsParser<TOptions...>
813 static constexpr bool HasFixedValue =
true;
815 template <
typename TField>
816 using AdaptFixedValue = comms::field::adapter::FixedValue<TField>;
819template <std::intmax_t TOffset,
typename... TOptions>
821 comms::option::def::DisplayOffset<TOffset>,
822 TOptions...> :
public OptionsParser<TOptions...>
825 static constexpr bool HasDisplayOffset =
true;
826 static constexpr std::intmax_t DisplayOffset = TOffset;
828 template <
typename TField>
829 using AdaptDisplayOffset = comms::field::adapter::DisplayOffset<TOffset, TField>;
832template <
typename... TOptions>
834 comms::option::def::HasName,
835 TOptions...> :
public OptionsParser<TOptions...>
838 static constexpr bool HasName =
true;
841template <
typename... TOptions>
843 comms::option::app::EmptyOption,
844 TOptions...> :
public OptionsParser<TOptions...>
848template <
typename... TTupleOptions,
typename... TOptions>
850 std::tuple<TTupleOptions...>,
851 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:1220
comms::option::def::SequenceTrailingFieldSuffix< TField > SequenceTrailingFieldSuffix
Same as comms::option::def::SequenceTrailingFieldSuffix.
Definition options.h:1590
comms::option::def::HasName HasName
Same as comms::option::def::HasName.
Definition options.h:1917
comms::option::def::SequenceElemFixedSerLengthFieldPrefix< TField, TReadErrorStatus > SequenceElemFixedSerLengthFieldPrefix
Same as comms::option::def::SequenceElemFixedSerLengthFieldPrefix.
Definition options.h:1580
comms::option::def::SequenceTerminationFieldSuffix< TField > SequenceTerminationFieldSuffix
Same as comms::option::def::SequenceTerminationFieldSuffix.
Definition options.h:1585
comms::option::def::SequenceSerLengthFieldPrefix< TField, TReadErrorStatus > SequenceSerLengthFieldPrefix
Same as comms::option::def::SequenceSerLengthFieldPrefix.
Definition options.h:1568
comms::option::def::DefaultValueInitialiser< T > DefaultValueInitialiser
Same as comms::option::def::DefaultValueInitialiser.
Definition options.h:1612
comms::option::def::FixedLength< TLen, TSignExtend > FixedLength
Same as comms::option::def::FixedLength.
Definition options.h:1537
comms::option::def::SequenceFixedSize< TSize > SequenceFixedSize
Same as comms::option::def::SequenceFixedSize.
Definition options.h:1607
comms::option::def::HasCustomVersionUpdate HasCustomVersionUpdate
Same as comms::option::def::HasCustomVersionUpdate.
Definition options.h:1934
comms::option::def::HasCustomRead HasCustomRead
Same as comms::option::def::HasCustomRead.
Definition options.h:1909
comms::option::def::FieldType< TMsg > FieldType
Same as comms::option::def::FieldType.
Definition options.h:1505
comms::option::def::SequenceElemSerLengthFieldPrefix< TField, TReadErrorStatus > SequenceElemSerLengthFieldPrefix
Same as comms::option::def::SequenceElemSerLengthFieldPrefix.
Definition options.h:1574
comms::option::app::FixedSizeStorage< TSize > FixedSizeStorage
Same as comms::option::app::FixedSizeStorage.
Definition options.h:2046
comms::option::app::CustomStorageType< TType > CustomStorageType
Same as comms::option::app::CustomStorageType.
Definition options.h:2051
comms::option::def::HasCustomRefresh HasCustomRefresh
Same as comms::option::def::HasCustomRefresh.
Definition options.h:1913
comms::option::def::FixedBitLength< TLen, TSignExtend > FixedBitLength
Same as comms::option::def::FixedBitLength.
Definition options.h:1542
comms::option::def::SequenceSizeFieldPrefix< TField > SequenceSizeFieldPrefix
Same as comms::option::def::SequenceSizeFieldPrefix.
Definition options.h:1562
comms::option::def::ScalingRatio< TNum, TDenom > ScalingRatio
Same as comms::option::def::ScalingRatio.
Definition options.h:1557
Main namespace for all classes / functions of COMMS library.
ErrorStatus
Error statuses reported by the Communication module.
Definition ErrorStatus.h:19
Contains definition of all the options used by the COMMS library.
Replacement to std::conditional.
Definition type_traits.h:32
Replacement to some types from standard type_traits.