11#include "comms/field/details/adapters.h"
12#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> >()
617template <
typename TBase,
typename T, T TMinValue, T TMaxValue>
618using MultiRangeAssemblerT =
619 typename MultiRangeAssembler<TBase::HasMultiRangeValidation>::template Type<TBase, T, TMinValue, TMaxValue>;
621template <std::intmax_t TMinValue, std::intmax_t TMaxValue,
typename... TOptions>
623 comms::option::def::ValidNumValueRange<TMinValue, TMaxValue>,
624 TOptions...> :
public OptionsParser<TOptions...>
626 using BaseImpl = OptionsParser<TOptions...>;
628#ifdef COMMS_COMPILER_GCC47
629 static_assert(!BaseImpl::HasMultiRangeValidation,
630 "Sorry gcc-4.7 fails to compile valid C++11 code that allows multiple usage"
631 "of comms::option::def::ValidNumValueRange options. Either use it only once or"
632 "upgrade your compiler.");
634 using MultiRangeValidationRanges = MultiRangeAssemblerT<BaseImpl, std::intmax_t, TMinValue, TMaxValue>;
635 static constexpr bool HasMultiRangeValidation =
true;
637 template <
typename TField>
638 using AdaptMultiRangeValidation =
639 comms::field::adapter::NumValueMultiRangeValidator<MultiRangeValidationRanges, TField>;
642template <
typename... TOptions>
644 comms::option::def::ValidRangesClear,
645 TOptions...> :
public OptionsParser<TOptions...>
647 using BaseImpl = OptionsParser<TOptions...>;
649 using MultiRangeValidationRanges = void;
650 static constexpr bool HasMultiRangeValidation =
false;
652 template <
typename TField>
653 using AdaptMultiRangeValidation = TField;
656template <std::uintmax_t TMinValue, std::uintmax_t TMaxValue,
typename... TOptions>
658 comms::option::def::ValidBigUnsignedNumValueRange<TMinValue, TMaxValue>,
659 TOptions...> :
public OptionsParser<TOptions...>
661 using BaseImpl = OptionsParser<TOptions...>;
663#ifdef COMMS_COMPILER_GCC47
664 static_assert(!BaseImpl::HasMultiRangeValidation,
665 "Sorry gcc-4.7 fails to compile valid C++11 code that allows multiple usage"
666 "of comms::option::def::ValidNumValueRange options. Either use it only once or"
667 "upgrade your compiler.");
669 using MultiRangeValidationRanges = MultiRangeAssemblerT<BaseImpl, std::uintmax_t, TMinValue, TMaxValue>;
670 static constexpr bool HasMultiRangeValidation =
true;
672 template <
typename TField>
673 using AdaptMultiRangeValidation =
674 comms::field::adapter::NumValueMultiRangeValidator<MultiRangeValidationRanges, TField>;
677template <
typename... TOptions>
679 comms::option::def::HasCustomVersionUpdate,
680 TOptions...> :
public OptionsParser<TOptions...>
686template <std::uintmax_t TFrom, std::uintmax_t TUntil,
typename... TOptions>
688 comms::option::def::ExistsBetweenVersions<TFrom, TUntil>,
689 TOptions...> :
public OptionsParser<TOptions...>
692 static constexpr bool HasVersionsRange =
true;
693 static constexpr std::uintmax_t ExistsFromVersion = TFrom;
696 template <
typename TField>
697 using AdaptVersionsRange =
698 comms::field::adapter::ExistsBetweenVersions<ExistsFromVersion, ExistsUntilVersion, TField>;
701template <
typename... TOptions>
703 comms::option::def::VersionStorage,
704 TOptions...> :
public OptionsParser<TOptions...>
707 static constexpr bool HasVersionStorage =
true;
709 template <
typename TField>
710 using AdaptVersionStorage = comms::field::adapter::VersionStorage<TField>;
713template <std::size_t TIdx,
typename... TOptions>
715 comms::option::def::RemLengthMemberField<TIdx>,
716 TOptions...> :
public OptionsParser<TOptions...>
718 using BaseImpl = OptionsParser<TOptions...>;
719 static_assert(!BaseImpl::HasRemLengthMemberField,
720 "Option comms::def::option::RemLengthMemberField used multiple times");
722 static constexpr bool HasRemLengthMemberField =
true;
723 static constexpr std::size_t RemLengthMemberFieldIdx = TIdx;
725 template <
typename TField>
726 using AdaptRemLengthMemberField =
727 comms::field::adapter::RemLengthMemberField<RemLengthMemberFieldIdx, TField>;
730template <
typename... TOptions>
732 comms::option::def::HasCustomWrite,
733 TOptions...> :
public OptionsParser<TOptions...>
736 static constexpr bool HasCustomWrite =
true;
738 template <
typename TField>
739 using AdaptCustomWrite = comms::field::adapter::CustomWriteWrap<TField>;
742template <
typename TActField,
typename... TOptions>
744 comms::option::def::FieldType<TActField>,
745 TOptions...> :
public OptionsParser<TOptions...>
748 static constexpr bool HasFieldType =
true;
751 template <
typename TField>
752 using AdaptFieldType = comms::field::adapter::FieldType<TActField, TField>;
755template <
typename... TOptions>
757 comms::option::def::MissingOnReadFail,
758 TOptions...> :
public OptionsParser<TOptions...>
761 static constexpr bool HasMissingOnReadFail =
true;
763 template <
typename TField>
764 using AdaptMissingOnReadFail = comms::field::adapter::MissingOnReadFail<TField>;
767template <
typename... TOptions>
769 comms::option::def::MissingOnInvalid,
770 TOptions...> :
public OptionsParser<TOptions...>
773 static constexpr bool HasMissingOnInvalid =
true;
775 template <
typename TField>
776 using AdaptMissingOnInvalid = comms::field::adapter::MissingOnInvalid<TField>;
779template <
typename... TOptions>
781 comms::option::def::VariantHasCustomResetOnDestruct,
782 TOptions...> :
public OptionsParser<TOptions...>
785 static constexpr bool HasVariantCustomResetOnDestruct =
true;
787 template <
typename TField>
788 using AdaptVariantResetOnDestruct = TField;
791template <
bool TVersionDependent,
typename... TOptions>
793 comms::option::def::HasVersionDependentMembers<TVersionDependent>,
794 TOptions...> :
public OptionsParser<TOptions...>
797 static constexpr bool HasVersionDependentMembersForced =
true;
798 static constexpr MembersVersionDependency ForcedMembersVersionDependency =
799 TVersionDependent ? MembersVersionDependency_Dependent : MembersVersionDependency_Independent;
802template <
typename... TOptions>
804 comms::option::def::FixedValue,
805 TOptions...> :
public OptionsParser<TOptions...>
808 static constexpr bool HasFixedValue =
true;
810 template <
typename TField>
811 using AdaptFixedValue = comms::field::adapter::FixedValue<TField>;
814template <std::intmax_t TOffset,
typename... TOptions>
816 comms::option::def::DisplayOffset<TOffset>,
817 TOptions...> :
public OptionsParser<TOptions...>
820 static constexpr bool HasDisplayOffset =
true;
821 static constexpr std::intmax_t DisplayOffset = TOffset;
823 template <
typename TField>
824 using AdaptDisplayOffset = comms::field::adapter::DisplayOffset<TOffset, TField>;
827template <
typename... TOptions>
829 comms::option::def::HasName,
830 TOptions...> :
public OptionsParser<TOptions...>
833 static constexpr bool HasName =
true;
836template <
typename... TOptions>
838 comms::option::app::EmptyOption,
839 TOptions...> :
public OptionsParser<TOptions...>
843template <
typename... TTupleOptions,
typename... TOptions>
845 std::tuple<TTupleOptions...>,
846 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:1218
comms::option::def::SequenceTrailingFieldSuffix< TField > SequenceTrailingFieldSuffix
Same as comms::option::def::SequenceTrailingFieldSuffix.
Definition options.h:1588
comms::option::def::HasName HasName
Same as comms::option::def::HasName.
Definition options.h:1915
comms::option::def::SequenceElemFixedSerLengthFieldPrefix< TField, TReadErrorStatus > SequenceElemFixedSerLengthFieldPrefix
Same as comms::option::def::SequenceElemFixedSerLengthFieldPrefix.
Definition options.h:1578
comms::option::def::SequenceTerminationFieldSuffix< TField > SequenceTerminationFieldSuffix
Same as comms::option::def::SequenceTerminationFieldSuffix.
Definition options.h:1583
comms::option::def::SequenceSerLengthFieldPrefix< TField, TReadErrorStatus > SequenceSerLengthFieldPrefix
Same as comms::option::def::SequenceSerLengthFieldPrefix.
Definition options.h:1566
comms::option::def::DefaultValueInitialiser< T > DefaultValueInitialiser
Same as comms::option::def::DefaultValueInitialiser.
Definition options.h:1610
comms::option::def::FixedLength< TLen, TSignExtend > FixedLength
Same as comms::option::def::FixedLength.
Definition options.h:1535
comms::option::def::SequenceFixedSize< TSize > SequenceFixedSize
Same as comms::option::def::SequenceFixedSize.
Definition options.h:1605
comms::option::def::HasCustomVersionUpdate HasCustomVersionUpdate
Same as comms::option::def::HasCustomVersionUpdate.
Definition options.h:1932
comms::option::def::HasCustomRead HasCustomRead
Same as comms::option::def::HasCustomRead.
Definition options.h:1907
comms::option::def::FieldType< TMsg > FieldType
Same as comms::option::def::FieldType.
Definition options.h:1503
comms::option::def::SequenceElemSerLengthFieldPrefix< TField, TReadErrorStatus > SequenceElemSerLengthFieldPrefix
Same as comms::option::def::SequenceElemSerLengthFieldPrefix.
Definition options.h:1572
comms::option::app::FixedSizeStorage< TSize > FixedSizeStorage
Same as comms::option::app::FixedSizeStorage.
Definition options.h:2044
comms::option::app::CustomStorageType< TType > CustomStorageType
Same as comms::option::app::CustomStorageType.
Definition options.h:2049
comms::option::def::HasCustomRefresh HasCustomRefresh
Same as comms::option::def::HasCustomRefresh.
Definition options.h:1911
comms::option::def::FixedBitLength< TLen, TSignExtend > FixedBitLength
Same as comms::option::def::FixedBitLength.
Definition options.h:1540
comms::option::def::SequenceSizeFieldPrefix< TField > SequenceSizeFieldPrefix
Same as comms::option::def::SequenceSizeFieldPrefix.
Definition options.h:1560
comms::option::def::ScalingRatio< TNum, TDenom > ScalingRatio
Same as comms::option::def::ScalingRatio.
Definition options.h:1555
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:29
Replacement to some types from standard type_traits.