27template <
typename TTrailField,
typename TBase>
30 using BaseImpl = TBase;
31 using TrailField = TTrailField;
33 static_assert(!TrailField::isVersionDependent(),
34 "Suffix fields must not be version dependent");
37 using ValueType =
typename BaseImpl::ValueType;
38 using ElementType =
typename BaseImpl::ElementType;
48 : BaseImpl(
std::move(val))
57 constexpr std::size_t length()
const
59 return m_trailField.length() + BaseImpl::length();
62 static constexpr std::size_t minLength()
64 return TrailField::minLength() + BaseImpl::minLength();
67 static constexpr std::size_t maxLength()
69 return TrailField::maxLength() + BaseImpl::maxLength();
74 return m_trailField.valid() && BaseImpl::valid();
77 template <
typename TIter>
80 auto es = BaseImpl::read(iter, len - TrailField::minLength());
85 return m_trailField.read(iter, len - BaseImpl::length());
88 static constexpr bool hasReadNoStatus()
93 template <
typename TIter>
94 void readNoStatus(TIter& iter) =
delete;
96 template <
typename TIter>
99 auto trailLen = m_trailField.length();
100 auto es = BaseImpl::write(iter, len - trailLen);
105 return m_trailField.write(iter, trailLen);
108 template <
typename TIter>
109 void writeNoStatus(TIter& iter)
const
111 BaseImpl::writeNoStatus(iter);
112 m_trailField.writeNoStatus(iter);
116 TrailField m_trailField;
This file contains classes required for generic custom assertion functionality.
This file contain definition of error statuses used by comms module.
comms::option::def::SequenceTrailingFieldSuffix< TField > SequenceTrailingFieldSuffix
Same as comms::option::def::SequenceTrailingFieldSuffix.
Definition options.h:1590
Main namespace for all classes / functions of COMMS library.
ErrorStatus
Error statuses reported by the Communication module.
Definition ErrorStatus.h:19
@ Success
Used to indicate successful outcome of the operation.