30#error THIS HEADER IS A GENERATOR. DO NOT INCLUDE.
51#ifndef ETL_MESSAGE_PACKET_INCLUDED
52#define ETL_MESSAGE_PACKET_INCLUDED
56#if ETL_HAS_VIRTUAL_MESSAGES
60#include "static_assert.h"
69#if ETL_USING_CPP17 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
73 template <
typename... TMessageTypes>
102 template <
typename T,
typename =
typename etl::enable_if<IsIMessage<T> || IsInMessageList<T>,
int>::type>
103 explicit message_packet(T&& msg)
106 if constexpr (IsIMessage<T>)
118 ETL_ASSERT(valid, ETL_ERROR(unhandled_message_exception));
120 else if constexpr (IsInMessageList<T>)
126 ETL_STATIC_ASSERT(IsInMessageList<T>,
"Message not in packet type list");
132 message_packet(
const message_packet& other)
134 valid = other.is_valid();
138 add_new_message(other.get());
144 message_packet(message_packet&& other)
146 valid = other.is_valid();
150 add_new_message(etl::move(other.get()));
156 void copy(
const message_packet& other)
158 valid = other.is_valid();
162 add_new_message(other.get());
167 void copy(message_packet&& other)
169 valid = other.is_valid();
173 add_new_message(etl::move(other.get()));
179 message_packet& operator =(
const message_packet& rhs)
181 delete_current_message();
182 valid = rhs.is_valid();
185 add_new_message(rhs.get());
194 message_packet& operator =(message_packet&& rhs)
196 delete_current_message();
197 valid = rhs.is_valid();
200 add_new_message(etl::move(rhs.get()));
210 delete_current_message();
226 bool is_valid()
const
234 return (accepts_message<TMessageTypes::ID>(
id) || ...);
240 return accepts(msg.get_message_id());
244 template <etl::message_
id_t Id>
245 static ETL_CONSTEXPR
bool accepts()
247 return (accepts_message<TMessageTypes::ID, Id>() || ...);
251 template <
typename TMessage>
256 return accepts<TMessage::ID>();
268 template <etl::message_
id_t Id1, etl::message_
id_t Id2>
269 static bool accepts_message()
275 template <etl::message_
id_t Id1>
283 void delete_current_message()
297 (add_new_message_type<TMessageTypes>(msg) || ...);
303 (add_new_message_type<TMessageTypes>(etl::move(msg)) || ...);
310 template <
typename TMessage>
312 add_new_message_type(TMessage&& msg)
321 template <
typename TType>
324 if (TType::ID == msg.get_message_id())
327 new (p) TType(
static_cast<const TType&
>(msg));
338 template <
typename TType>
341 if (TType::ID == msg.get_message_id())
344 new (p) TType(
static_cast<TType&&
>(msg));
362 template <
typename T1,
typename T2 = void,
typename T3 = void,
typename T4 = void,
363 typename T5 = void,
typename T6 = void,
typename T7 = void,
typename T8 = void,
364 typename T9 = void,
typename T10 = void,
typename T11 = void,
typename T12 = void,
365 typename T13 = void,
typename T14 = void,
typename T15 = void,
typename T16 =
void>
384 add_new_message(
msg);
396 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
403 add_new_message(etl::move(
msg));
416 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) && !defined(ETL_COMPILER_GREEN_HILLS)
419 template <typename TMessage, typename = typename etl::enable_if<!etl::is_same<typename etl::remove_cvref<TMessage>::type,
etl::message_packet<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> >::value &&
421 !
etl::is_one_of<typename etl::remove_cvref<TMessage>::type,
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12,
T13,
T14,
T15,
T16>::value,
int>::type>
426 static constexpr bool Enabled = (!
etl::is_same<typename etl::remove_cvref<TMessage>::type,
etl::message_packet<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> >::value &&
428 etl::is_one_of<typename etl::remove_cvref<TMessage>::type,
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12,
T13,
T14,
T15,
T16>::value);
430 ETL_STATIC_ASSERT(
Enabled,
"Message not in packet type list");
436 template <
typename TMessage>
437 explicit message_packet(
const TMessage& ,
typename etl::enable_if<!
etl::is_same<
typename etl::remove_cvref<TMessage>::type,
etl::message_packet<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> >::value &&
439 !
etl::is_one_of<
typename etl::remove_cvref<TMessage>::type,
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12,
T13,
T14,
T15,
T16>::value,
int>::type = 0)
443 static const bool Enabled = (!
etl::is_same<typename etl::remove_cvref<TMessage>::type,
etl::message_packet<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> >::value &&
445 etl::is_one_of<typename etl::remove_cvref<TMessage>::type,
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12,
T13,
T14,
T15,
T16>::value);
447 ETL_STATIC_ASSERT(
Enabled,
"Message not in packet type list");
455 : valid(
other.is_valid())
459 add_new_message(
other.get());
464 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
468 : valid(
other.is_valid())
472 add_new_message(etl::move(
other.get()));
482 delete_current_message();
483 valid =
rhs.is_valid();
486 add_new_message(
rhs.get());
493 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
498 delete_current_message();
499 valid =
rhs.is_valid();
502 add_new_message(etl::move(
rhs.get()));
513 delete_current_message();
529 bool is_valid()
const
537 return T1::ID ==
id || T2::ID ==
id || T3::ID ==
id || T4::ID ==
id ||
538 T5::ID ==
id || T6::ID ==
id || T7::ID ==
id || T8::ID ==
id ||
539 T9::ID ==
id || T10::ID ==
id || T11::ID ==
id || T12::ID ==
id ||
540 T13::ID ==
id || T14::ID ==
id || T15::ID ==
id || T16::ID == id;
546 return accepts(
msg.get_message_id());
550 template <etl::message_
id_t Id>
551 static ETL_CONSTEXPR
bool accepts()
553 return T1::ID ==
Id || T2::ID ==
Id || T3::ID ==
Id || T4::ID ==
Id ||
554 T5::ID ==
Id || T6::ID ==
Id || T7::ID ==
Id || T8::ID ==
Id ||
555 T9::ID ==
Id || T10::ID ==
Id || T11::ID ==
Id || T12::ID ==
Id ||
556 T13::ID ==
Id || T14::ID ==
Id || T15::ID ==
Id || T16::ID ==
Id;
560 template <
typename TMessage>
565 return T1::ID == TMessage::ID || T2::ID == TMessage::ID || T3::ID == TMessage::ID || T4::ID == TMessage::ID ||
566 T5::ID == TMessage::ID || T6::ID == TMessage::ID || T7::ID == TMessage::ID || T8::ID == TMessage::ID ||
567 T9::ID == TMessage::ID || T10::ID == TMessage::ID || T11::ID == TMessage::ID || T12::ID == TMessage::ID ||
568 T13::ID == TMessage::ID || T14::ID == TMessage::ID || T15::ID == TMessage::ID || T16::ID == TMessage::ID;
573 SIZE =
etl::largest<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>::size,
574 ALIGNMENT =
etl::largest<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>::alignment
581 void delete_current_message()
595 const size_t id =
msg.get_message_id();
600 case T1::ID: ::new (p)
T1(
static_cast<const T1&
>(
msg));
break;
601 case T2::ID: ::new (p)
T2(
static_cast<const T2&
>(
msg));
break;
602 case T3::ID: ::new (p)
T3(
static_cast<const T3&
>(
msg));
break;
603 case T4::ID: ::new (p)
T4(
static_cast<const T4&
>(
msg));
break;
604 case T5::ID: ::new (p)
T5(
static_cast<const T5&
>(
msg));
break;
605 case T6::ID: ::new (p)
T6(
static_cast<const T6&
>(
msg));
break;
606 case T7::ID: ::new (p)
T7(
static_cast<const T7&
>(
msg));
break;
607 case T8::ID: ::new (p)
T8(
static_cast<const T8&
>(
msg));
break;
608 case T9::ID: ::new (p)
T9(
static_cast<const T9&
>(
msg));
break;
609 case T10::ID: ::new (p)
T10(
static_cast<const T10&
>(
msg));
break;
610 case T11::ID: ::new (p)
T11(
static_cast<const T11&
>(
msg));
break;
611 case T12::ID: ::new (p)
T12(
static_cast<const T12&
>(
msg));
break;
612 case T13::ID: ::new (p)
T13(
static_cast<const T13&
>(
msg));
break;
613 case T14::ID: ::new (p)
T14(
static_cast<const T14&
>(
msg));
break;
614 case T15::ID: ::new (p)
T15(
static_cast<const T15&
>(
msg));
break;
615 case T16::ID: ::new (p)
T16(
static_cast<const T16&
>(
msg));
break;
620 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
624 const size_t id =
msg.get_message_id();
629 case T1::ID: ::new (p)
T1(
static_cast<T1&&
>(
msg));
break;
630 case T2::ID: ::new (p)
T2(
static_cast<T2&&
>(
msg));
break;
631 case T3::ID: ::new (p)
T3(
static_cast<T3&&
>(
msg));
break;
632 case T4::ID: ::new (p)
T4(
static_cast<T4&&
>(
msg));
break;
633 case T5::ID: ::new (p)
T5(
static_cast<T5&&
>(
msg));
break;
634 case T6::ID: ::new (p)
T6(
static_cast<T6&&
>(
msg));
break;
635 case T7::ID: ::new (p)
T7(
static_cast<T7&&
>(
msg));
break;
636 case T8::ID: ::new (p)
T8(
static_cast<T8&&
>(
msg));
break;
637 case T9::ID: ::new (p)
T9(
static_cast<T9&&
>(
msg));
break;
638 case T10::ID: ::new (p)
T10(
static_cast<T10&&
>(
msg));
break;
639 case T11::ID: ::new (p)
T11(
static_cast<T11&&
>(
msg));
break;
640 case T12::ID: ::new (p)
T12(
static_cast<T12&&
>(
msg));
break;
641 case T13::ID: ::new (p)
T13(
static_cast<T13&&
>(
msg));
break;
642 case T14::ID: ::new (p)
T14(
static_cast<T14&&
>(
msg));
break;
643 case T15::ID: ::new (p)
T15(
static_cast<T15&&
>(
msg));
break;
644 case T16::ID: ::new (p)
T16(
static_cast<T16&&
>(
msg));
break;
657 template <
typename T1,
typename T2,
typename T3,
typename T4,
658 typename T5,
typename T6,
typename T7,
typename T8,
659 typename T9,
typename T10,
typename T11,
typename T12,
660 typename T13,
typename T14,
typename T15>
661 class message_packet<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12,
T13,
T14,
T15,
void>
679 add_new_message(
msg);
691 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
698 add_new_message(etl::move(
msg));
711 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) && !defined(ETL_COMPILER_GREEN_HILLS)
714 template <typename TMessage, typename = typename etl::enable_if<!etl::is_same<typename etl::remove_cvref<TMessage>::type,
etl::message_packet<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> >::value &&
716 !
etl::is_one_of<typename etl::remove_cvref<TMessage>::type,
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12,
T13,
T14,
T15>::value,
int>::type>
721 static constexpr bool Enabled = (!
etl::is_same<typename etl::remove_cvref<TMessage>::type,
etl::message_packet<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> >::value &&
723 etl::is_one_of<typename etl::remove_cvref<TMessage>::type,
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12,
T13,
T14,
T15>::value);
725 ETL_STATIC_ASSERT(
Enabled,
"Message not in packet type list");
731 template <
typename TMessage>
732 explicit message_packet(
const TMessage& ,
typename etl::enable_if<!
etl::is_same<
typename etl::remove_cvref<TMessage>::type,
etl::message_packet<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> >::value &&
734 !
etl::is_one_of<
typename etl::remove_cvref<TMessage>::type,
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12,
T13,
T14,
T15>::value,
int>::type = 0)
738 static const bool Enabled = (!
etl::is_same<typename etl::remove_cvref<TMessage>::type,
etl::message_packet<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> >::value &&
740 etl::is_one_of<typename etl::remove_cvref<TMessage>::type,
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12,
T13,
T14,
T15>::value);
742 ETL_STATIC_ASSERT(
Enabled,
"Message not in packet type list");
750 : valid(
other.is_valid())
754 add_new_message(
other.get());
759 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
763 : valid(
other.is_valid())
767 add_new_message(etl::move(
other.get()));
777 delete_current_message();
778 valid =
rhs.is_valid();
781 add_new_message(
rhs.get());
788 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
793 delete_current_message();
794 valid =
rhs.is_valid();
797 add_new_message(etl::move(
rhs.get()));
808 delete_current_message();
824 bool is_valid()
const
832 return T1::ID ==
id || T2::ID ==
id || T3::ID ==
id || T4::ID ==
id ||
833 T5::ID ==
id || T6::ID ==
id || T7::ID ==
id || T8::ID ==
id ||
834 T9::ID ==
id || T10::ID ==
id || T11::ID ==
id || T12::ID ==
id ||
835 T13::ID ==
id || T14::ID ==
id || T15::ID == id;
841 return accepts(
msg.get_message_id());
845 template <etl::message_
id_t Id>
846 static ETL_CONSTEXPR
bool accepts()
848 return T1::ID ==
Id || T2::ID ==
Id || T3::ID ==
Id || T4::ID ==
Id ||
849 T5::ID ==
Id || T6::ID ==
Id || T7::ID ==
Id || T8::ID ==
Id ||
850 T9::ID ==
Id || T10::ID ==
Id || T11::ID ==
Id || T12::ID ==
Id ||
851 T13::ID ==
Id || T14::ID ==
Id || T15::ID ==
Id;
855 template <
typename TMessage>
860 return T1::ID == TMessage::ID || T2::ID == TMessage::ID || T3::ID == TMessage::ID || T4::ID == TMessage::ID ||
861 T5::ID == TMessage::ID || T6::ID == TMessage::ID || T7::ID == TMessage::ID || T8::ID == TMessage::ID ||
862 T9::ID == TMessage::ID || T10::ID == TMessage::ID || T11::ID == TMessage::ID || T12::ID == TMessage::ID ||
863 T13::ID == TMessage::ID || T14::ID == TMessage::ID || T15::ID == TMessage::ID;
868 SIZE =
etl::largest<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>::size,
869 ALIGNMENT =
etl::largest<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>::alignment
876 void delete_current_message()
890 const size_t id =
msg.get_message_id();
895 case T1::ID: ::new (p)
T1(
static_cast<const T1&
>(
msg));
break;
896 case T2::ID: ::new (p)
T2(
static_cast<const T2&
>(
msg));
break;
897 case T3::ID: ::new (p)
T3(
static_cast<const T3&
>(
msg));
break;
898 case T4::ID: ::new (p)
T4(
static_cast<const T4&
>(
msg));
break;
899 case T5::ID: ::new (p)
T5(
static_cast<const T5&
>(
msg));
break;
900 case T6::ID: ::new (p)
T6(
static_cast<const T6&
>(
msg));
break;
901 case T7::ID: ::new (p)
T7(
static_cast<const T7&
>(
msg));
break;
902 case T8::ID: ::new (p)
T8(
static_cast<const T8&
>(
msg));
break;
903 case T9::ID: ::new (p)
T9(
static_cast<const T9&
>(
msg));
break;
904 case T10::ID: ::new (p)
T10(
static_cast<const T10&
>(
msg));
break;
905 case T11::ID: ::new (p)
T11(
static_cast<const T11&
>(
msg));
break;
906 case T12::ID: ::new (p)
T12(
static_cast<const T12&
>(
msg));
break;
907 case T13::ID: ::new (p)
T13(
static_cast<const T13&
>(
msg));
break;
908 case T14::ID: ::new (p)
T14(
static_cast<const T14&
>(
msg));
break;
909 case T15::ID: ::new (p)
T15(
static_cast<const T15&
>(
msg));
break;
914 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
918 const size_t id =
msg.get_message_id();
923 case T1::ID: ::new (p)
T1(
static_cast<T1&&
>(
msg));
break;
924 case T2::ID: ::new (p)
T2(
static_cast<T2&&
>(
msg));
break;
925 case T3::ID: ::new (p)
T3(
static_cast<T3&&
>(
msg));
break;
926 case T4::ID: ::new (p)
T4(
static_cast<T4&&
>(
msg));
break;
927 case T5::ID: ::new (p)
T5(
static_cast<T5&&
>(
msg));
break;
928 case T6::ID: ::new (p)
T6(
static_cast<T6&&
>(
msg));
break;
929 case T7::ID: ::new (p)
T7(
static_cast<T7&&
>(
msg));
break;
930 case T8::ID: ::new (p)
T8(
static_cast<T8&&
>(
msg));
break;
931 case T9::ID: ::new (p)
T9(
static_cast<T9&&
>(
msg));
break;
932 case T10::ID: ::new (p)
T10(
static_cast<T10&&
>(
msg));
break;
933 case T11::ID: ::new (p)
T11(
static_cast<T11&&
>(
msg));
break;
934 case T12::ID: ::new (p)
T12(
static_cast<T12&&
>(
msg));
break;
935 case T13::ID: ::new (p)
T13(
static_cast<T13&&
>(
msg));
break;
936 case T14::ID: ::new (p)
T14(
static_cast<T14&&
>(
msg));
break;
937 case T15::ID: ::new (p)
T15(
static_cast<T15&&
>(
msg));
break;
950 template <
typename T1,
typename T2,
typename T3,
typename T4,
951 typename T5,
typename T6,
typename T7,
typename T8,
952 typename T9,
typename T10,
typename T11,
typename T12,
953 typename T13,
typename T14>
954 class message_packet<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12,
T13,
T14,
void,
void>
972 add_new_message(
msg);
984 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
991 add_new_message(etl::move(
msg));
1004 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) && !defined(ETL_COMPILER_GREEN_HILLS)
1007 template <typename TMessage, typename = typename etl::enable_if<!etl::is_same<typename etl::remove_cvref<TMessage>::type,
etl::message_packet<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> >::value &&
1009 !
etl::is_one_of<typename etl::remove_cvref<TMessage>::type,
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12,
T13,
T14>::value,
int>::type>
1014 static constexpr bool Enabled = (!
etl::is_same<typename etl::remove_cvref<TMessage>::type,
etl::message_packet<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> >::value &&
1016 etl::is_one_of<typename etl::remove_cvref<TMessage>::type,
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12,
T13,
T14>::value);
1018 ETL_STATIC_ASSERT(
Enabled,
"Message not in packet type list");
1024 template <
typename TMessage>
1025 explicit message_packet(
const TMessage& ,
typename etl::enable_if<!
etl::is_same<
typename etl::remove_cvref<TMessage>::type,
etl::message_packet<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> >::value &&
1027 !
etl::is_one_of<
typename etl::remove_cvref<TMessage>::type,
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12,
T13,
T14>::value,
int>::type = 0)
1031 static const bool Enabled = (!
etl::is_same<typename etl::remove_cvref<TMessage>::type,
etl::message_packet<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> >::value &&
1033 etl::is_one_of<typename etl::remove_cvref<TMessage>::type,
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12,
T13,
T14>::value);
1035 ETL_STATIC_ASSERT(
Enabled,
"Message not in packet type list");
1043 : valid(
other.is_valid())
1047 add_new_message(
other.get());
1052 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
1056 : valid(
other.is_valid())
1060 add_new_message(etl::move(
other.get()));
1070 delete_current_message();
1071 valid =
rhs.is_valid();
1074 add_new_message(
rhs.get());
1081 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
1086 delete_current_message();
1087 valid =
rhs.is_valid();
1090 add_new_message(etl::move(
rhs.get()));
1101 delete_current_message();
1117 bool is_valid()
const
1125 return T1::ID ==
id || T2::ID ==
id || T3::ID ==
id || T4::ID ==
id ||
1126 T5::ID ==
id || T6::ID ==
id || T7::ID ==
id || T8::ID ==
id ||
1127 T9::ID ==
id || T10::ID ==
id || T11::ID ==
id || T12::ID ==
id ||
1128 T13::ID ==
id || T14::ID == id;
1134 return accepts(
msg.get_message_id());
1138 template <etl::message_
id_t Id>
1139 static ETL_CONSTEXPR
bool accepts()
1141 return T1::ID ==
Id || T2::ID ==
Id || T3::ID ==
Id || T4::ID ==
Id ||
1142 T5::ID ==
Id || T6::ID ==
Id || T7::ID ==
Id || T8::ID ==
Id ||
1143 T9::ID ==
Id || T10::ID ==
Id || T11::ID ==
Id || T12::ID ==
Id ||
1144 T13::ID ==
Id || T14::ID ==
Id;
1148 template <
typename TMessage>
1149 static ETL_CONSTEXPR
1153 return T1::ID == TMessage::ID || T2::ID == TMessage::ID || T3::ID == TMessage::ID || T4::ID == TMessage::ID ||
1154 T5::ID == TMessage::ID || T6::ID == TMessage::ID || T7::ID == TMessage::ID || T8::ID == TMessage::ID ||
1155 T9::ID == TMessage::ID || T10::ID == TMessage::ID || T11::ID == TMessage::ID || T12::ID == TMessage::ID ||
1156 T13::ID == TMessage::ID || T14::ID == TMessage::ID;
1161 SIZE =
etl::largest<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>::size,
1162 ALIGNMENT =
etl::largest<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>::alignment
1169 void delete_current_message()
1183 const size_t id =
msg.get_message_id();
1188 case T1::ID: ::new (p)
T1(
static_cast<const T1&
>(
msg));
break;
1189 case T2::ID: ::new (p)
T2(
static_cast<const T2&
>(
msg));
break;
1190 case T3::ID: ::new (p)
T3(
static_cast<const T3&
>(
msg));
break;
1191 case T4::ID: ::new (p)
T4(
static_cast<const T4&
>(
msg));
break;
1192 case T5::ID: ::new (p)
T5(
static_cast<const T5&
>(
msg));
break;
1193 case T6::ID: ::new (p)
T6(
static_cast<const T6&
>(
msg));
break;
1194 case T7::ID: ::new (p)
T7(
static_cast<const T7&
>(
msg));
break;
1195 case T8::ID: ::new (p)
T8(
static_cast<const T8&
>(
msg));
break;
1196 case T9::ID: ::new (p)
T9(
static_cast<const T9&
>(
msg));
break;
1197 case T10::ID: ::new (p)
T10(
static_cast<const T10&
>(
msg));
break;
1198 case T11::ID: ::new (p)
T11(
static_cast<const T11&
>(
msg));
break;
1199 case T12::ID: ::new (p)
T12(
static_cast<const T12&
>(
msg));
break;
1200 case T13::ID: ::new (p)
T13(
static_cast<const T13&
>(
msg));
break;
1201 case T14::ID: ::new (p)
T14(
static_cast<const T14&
>(
msg));
break;
1206 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
1210 const size_t id =
msg.get_message_id();
1215 case T1::ID: ::new (p)
T1(
static_cast<T1&&
>(
msg));
break;
1216 case T2::ID: ::new (p)
T2(
static_cast<T2&&
>(
msg));
break;
1217 case T3::ID: ::new (p)
T3(
static_cast<T3&&
>(
msg));
break;
1218 case T4::ID: ::new (p)
T4(
static_cast<T4&&
>(
msg));
break;
1219 case T5::ID: ::new (p)
T5(
static_cast<T5&&
>(
msg));
break;
1220 case T6::ID: ::new (p)
T6(
static_cast<T6&&
>(
msg));
break;
1221 case T7::ID: ::new (p)
T7(
static_cast<T7&&
>(
msg));
break;
1222 case T8::ID: ::new (p)
T8(
static_cast<T8&&
>(
msg));
break;
1223 case T9::ID: ::new (p)
T9(
static_cast<T9&&
>(
msg));
break;
1224 case T10::ID: ::new (p)
T10(
static_cast<T10&&
>(
msg));
break;
1225 case T11::ID: ::new (p)
T11(
static_cast<T11&&
>(
msg));
break;
1226 case T12::ID: ::new (p)
T12(
static_cast<T12&&
>(
msg));
break;
1227 case T13::ID: ::new (p)
T13(
static_cast<T13&&
>(
msg));
break;
1228 case T14::ID: ::new (p)
T14(
static_cast<T14&&
>(
msg));
break;
1241 template <
typename T1,
typename T2,
typename T3,
typename T4,
1242 typename T5,
typename T6,
typename T7,
typename T8,
1243 typename T9,
typename T10,
typename T11,
typename T12,
1245 class message_packet<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12,
T13,
void,
void,
void>
1263 add_new_message(
msg);
1275 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
1282 add_new_message(etl::move(
msg));
1295 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) && !defined(ETL_COMPILER_GREEN_HILLS)
1298 template <typename TMessage, typename = typename etl::enable_if<!etl::is_same<typename etl::remove_cvref<TMessage>::type,
etl::message_packet<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> >::value &&
1300 !
etl::is_one_of<typename etl::remove_cvref<TMessage>::type,
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12,
T13>::value,
int>::type>
1305 static constexpr bool Enabled = (!
etl::is_same<typename etl::remove_cvref<TMessage>::type,
etl::message_packet<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> >::value &&
1307 etl::is_one_of<typename etl::remove_cvref<TMessage>::type,
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12,
T13>::value);
1309 ETL_STATIC_ASSERT(
Enabled,
"Message not in packet type list");
1315 template <
typename TMessage>
1316 explicit message_packet(
const TMessage& ,
typename etl::enable_if<!
etl::is_same<
typename etl::remove_cvref<TMessage>::type,
etl::message_packet<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> >::value &&
1318 !
etl::is_one_of<
typename etl::remove_cvref<TMessage>::type,
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12,
T13>::value,
int>::type = 0)
1322 static const bool Enabled = (!
etl::is_same<typename etl::remove_cvref<TMessage>::type,
etl::message_packet<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> >::value &&
1324 etl::is_one_of<typename etl::remove_cvref<TMessage>::type,
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12,
T13>::value);
1326 ETL_STATIC_ASSERT(
Enabled,
"Message not in packet type list");
1334 : valid(
other.is_valid())
1338 add_new_message(
other.get());
1343 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
1347 : valid(
other.is_valid())
1351 add_new_message(etl::move(
other.get()));
1361 delete_current_message();
1362 valid =
rhs.is_valid();
1365 add_new_message(
rhs.get());
1372 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
1377 delete_current_message();
1378 valid =
rhs.is_valid();
1381 add_new_message(etl::move(
rhs.get()));
1392 delete_current_message();
1408 bool is_valid()
const
1416 return T1::ID ==
id || T2::ID ==
id || T3::ID ==
id || T4::ID ==
id ||
1417 T5::ID ==
id || T6::ID ==
id || T7::ID ==
id || T8::ID ==
id ||
1418 T9::ID ==
id || T10::ID ==
id || T11::ID ==
id || T12::ID ==
id ||
1425 return accepts(
msg.get_message_id());
1429 template <etl::message_
id_t Id>
1430 static ETL_CONSTEXPR
bool accepts()
1432 return T1::ID ==
Id || T2::ID ==
Id || T3::ID ==
Id || T4::ID ==
Id ||
1433 T5::ID ==
Id || T6::ID ==
Id || T7::ID ==
Id || T8::ID ==
Id ||
1434 T9::ID ==
Id || T10::ID ==
Id || T11::ID ==
Id || T12::ID ==
Id ||
1439 template <
typename TMessage>
1440 static ETL_CONSTEXPR
1444 return T1::ID == TMessage::ID || T2::ID == TMessage::ID || T3::ID == TMessage::ID || T4::ID == TMessage::ID ||
1445 T5::ID == TMessage::ID || T6::ID == TMessage::ID || T7::ID == TMessage::ID || T8::ID == TMessage::ID ||
1446 T9::ID == TMessage::ID || T10::ID == TMessage::ID || T11::ID == TMessage::ID || T12::ID == TMessage::ID ||
1447 T13::ID == TMessage::ID;
1452 SIZE =
etl::largest<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>::size,
1453 ALIGNMENT =
etl::largest<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>::alignment
1460 void delete_current_message()
1474 const size_t id =
msg.get_message_id();
1479 case T1::ID: ::new (p)
T1(
static_cast<const T1&
>(
msg));
break;
1480 case T2::ID: ::new (p)
T2(
static_cast<const T2&
>(
msg));
break;
1481 case T3::ID: ::new (p)
T3(
static_cast<const T3&
>(
msg));
break;
1482 case T4::ID: ::new (p)
T4(
static_cast<const T4&
>(
msg));
break;
1483 case T5::ID: ::new (p)
T5(
static_cast<const T5&
>(
msg));
break;
1484 case T6::ID: ::new (p)
T6(
static_cast<const T6&
>(
msg));
break;
1485 case T7::ID: ::new (p)
T7(
static_cast<const T7&
>(
msg));
break;
1486 case T8::ID: ::new (p)
T8(
static_cast<const T8&
>(
msg));
break;
1487 case T9::ID: ::new (p)
T9(
static_cast<const T9&
>(
msg));
break;
1488 case T10::ID: ::new (p)
T10(
static_cast<const T10&
>(
msg));
break;
1489 case T11::ID: ::new (p)
T11(
static_cast<const T11&
>(
msg));
break;
1490 case T12::ID: ::new (p)
T12(
static_cast<const T12&
>(
msg));
break;
1491 case T13::ID: ::new (p)
T13(
static_cast<const T13&
>(
msg));
break;
1496 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
1500 const size_t id =
msg.get_message_id();
1505 case T1::ID: ::new (p)
T1(
static_cast<T1&&
>(
msg));
break;
1506 case T2::ID: ::new (p)
T2(
static_cast<T2&&
>(
msg));
break;
1507 case T3::ID: ::new (p)
T3(
static_cast<T3&&
>(
msg));
break;
1508 case T4::ID: ::new (p)
T4(
static_cast<T4&&
>(
msg));
break;
1509 case T5::ID: ::new (p)
T5(
static_cast<T5&&
>(
msg));
break;
1510 case T6::ID: ::new (p)
T6(
static_cast<T6&&
>(
msg));
break;
1511 case T7::ID: ::new (p)
T7(
static_cast<T7&&
>(
msg));
break;
1512 case T8::ID: ::new (p)
T8(
static_cast<T8&&
>(
msg));
break;
1513 case T9::ID: ::new (p)
T9(
static_cast<T9&&
>(
msg));
break;
1514 case T10::ID: ::new (p)
T10(
static_cast<T10&&
>(
msg));
break;
1515 case T11::ID: ::new (p)
T11(
static_cast<T11&&
>(
msg));
break;
1516 case T12::ID: ::new (p)
T12(
static_cast<T12&&
>(
msg));
break;
1517 case T13::ID: ::new (p)
T13(
static_cast<T13&&
>(
msg));
break;
1530 template <
typename T1,
typename T2,
typename T3,
typename T4,
1531 typename T5,
typename T6,
typename T7,
typename T8,
1532 typename T9,
typename T10,
typename T11,
typename T12>
1533 class message_packet<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12,
void,
void,
void,
void>
1551 add_new_message(
msg);
1563 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
1570 add_new_message(etl::move(
msg));
1583 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) && !defined(ETL_COMPILER_GREEN_HILLS)
1586 template <typename TMessage, typename = typename etl::enable_if<!etl::is_same<typename etl::remove_cvref<TMessage>::type,
etl::message_packet<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> >::value &&
1588 !
etl::is_one_of<typename etl::remove_cvref<TMessage>::type,
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12>::value,
int>::type>
1593 static constexpr bool Enabled = (!
etl::is_same<typename etl::remove_cvref<TMessage>::type,
etl::message_packet<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> >::value &&
1595 etl::is_one_of<typename etl::remove_cvref<TMessage>::type,
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12>::value);
1597 ETL_STATIC_ASSERT(
Enabled,
"Message not in packet type list");
1603 template <
typename TMessage>
1604 explicit message_packet(
const TMessage& ,
typename etl::enable_if<!
etl::is_same<
typename etl::remove_cvref<TMessage>::type,
etl::message_packet<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> >::value &&
1606 !
etl::is_one_of<
typename etl::remove_cvref<TMessage>::type,
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12>::value,
int>::type = 0)
1610 static const bool Enabled = (!
etl::is_same<typename etl::remove_cvref<TMessage>::type,
etl::message_packet<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> >::value &&
1612 etl::is_one_of<typename etl::remove_cvref<TMessage>::type,
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12>::value);
1614 ETL_STATIC_ASSERT(
Enabled,
"Message not in packet type list");
1622 : valid(
other.is_valid())
1626 add_new_message(
other.get());
1631 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
1635 : valid(
other.is_valid())
1639 add_new_message(etl::move(
other.get()));
1649 delete_current_message();
1650 valid =
rhs.is_valid();
1653 add_new_message(
rhs.get());
1660 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
1665 delete_current_message();
1666 valid =
rhs.is_valid();
1669 add_new_message(etl::move(
rhs.get()));
1680 delete_current_message();
1696 bool is_valid()
const
1704 return T1::ID ==
id || T2::ID ==
id || T3::ID ==
id || T4::ID ==
id ||
1705 T5::ID ==
id || T6::ID ==
id || T7::ID ==
id || T8::ID ==
id ||
1706 T9::ID ==
id || T10::ID ==
id || T11::ID ==
id || T12::ID == id;
1712 return accepts(
msg.get_message_id());
1716 template <etl::message_
id_t Id>
1717 static ETL_CONSTEXPR
bool accepts()
1719 return T1::ID ==
Id || T2::ID ==
Id || T3::ID ==
Id || T4::ID ==
Id ||
1720 T5::ID ==
Id || T6::ID ==
Id || T7::ID ==
Id || T8::ID ==
Id ||
1721 T9::ID ==
Id || T10::ID ==
Id || T11::ID ==
Id || T12::ID ==
Id;
1725 template <
typename TMessage>
1726 static ETL_CONSTEXPR
1730 return T1::ID == TMessage::ID || T2::ID == TMessage::ID || T3::ID == TMessage::ID || T4::ID == TMessage::ID ||
1731 T5::ID == TMessage::ID || T6::ID == TMessage::ID || T7::ID == TMessage::ID || T8::ID == TMessage::ID ||
1732 T9::ID == TMessage::ID || T10::ID == TMessage::ID || T11::ID == TMessage::ID || T12::ID == TMessage::ID;
1737 SIZE =
etl::largest<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>::size,
1738 ALIGNMENT =
etl::largest<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>::alignment
1745 void delete_current_message()
1759 const size_t id =
msg.get_message_id();
1764 case T1::ID: ::new (p)
T1(
static_cast<const T1&
>(
msg));
break;
1765 case T2::ID: ::new (p)
T2(
static_cast<const T2&
>(
msg));
break;
1766 case T3::ID: ::new (p)
T3(
static_cast<const T3&
>(
msg));
break;
1767 case T4::ID: ::new (p)
T4(
static_cast<const T4&
>(
msg));
break;
1768 case T5::ID: ::new (p)
T5(
static_cast<const T5&
>(
msg));
break;
1769 case T6::ID: ::new (p)
T6(
static_cast<const T6&
>(
msg));
break;
1770 case T7::ID: ::new (p)
T7(
static_cast<const T7&
>(
msg));
break;
1771 case T8::ID: ::new (p)
T8(
static_cast<const T8&
>(
msg));
break;
1772 case T9::ID: ::new (p)
T9(
static_cast<const T9&
>(
msg));
break;
1773 case T10::ID: ::new (p)
T10(
static_cast<const T10&
>(
msg));
break;
1774 case T11::ID: ::new (p)
T11(
static_cast<const T11&
>(
msg));
break;
1775 case T12::ID: ::new (p)
T12(
static_cast<const T12&
>(
msg));
break;
1780 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
1784 const size_t id =
msg.get_message_id();
1789 case T1::ID: ::new (p)
T1(
static_cast<T1&&
>(
msg));
break;
1790 case T2::ID: ::new (p)
T2(
static_cast<T2&&
>(
msg));
break;
1791 case T3::ID: ::new (p)
T3(
static_cast<T3&&
>(
msg));
break;
1792 case T4::ID: ::new (p)
T4(
static_cast<T4&&
>(
msg));
break;
1793 case T5::ID: ::new (p)
T5(
static_cast<T5&&
>(
msg));
break;
1794 case T6::ID: ::new (p)
T6(
static_cast<T6&&
>(
msg));
break;
1795 case T7::ID: ::new (p)
T7(
static_cast<T7&&
>(
msg));
break;
1796 case T8::ID: ::new (p)
T8(
static_cast<T8&&
>(
msg));
break;
1797 case T9::ID: ::new (p)
T9(
static_cast<T9&&
>(
msg));
break;
1798 case T10::ID: ::new (p)
T10(
static_cast<T10&&
>(
msg));
break;
1799 case T11::ID: ::new (p)
T11(
static_cast<T11&&
>(
msg));
break;
1800 case T12::ID: ::new (p)
T12(
static_cast<T12&&
>(
msg));
break;
1813 template <
typename T1,
typename T2,
typename T3,
typename T4,
1814 typename T5,
typename T6,
typename T7,
typename T8,
1815 typename T9,
typename T10,
typename T11>
1816 class message_packet<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
void,
void,
void,
void,
void>
1834 add_new_message(
msg);
1846 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
1853 add_new_message(etl::move(
msg));
1866 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) && !defined(ETL_COMPILER_GREEN_HILLS)
1869 template <typename TMessage, typename = typename etl::enable_if<!etl::is_same<typename etl::remove_cvref<TMessage>::type,
etl::message_packet<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> >::value &&
1871 !
etl::is_one_of<typename etl::remove_cvref<TMessage>::type,
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11>::value,
int>::type>
1876 static constexpr bool Enabled = (!
etl::is_same<typename etl::remove_cvref<TMessage>::type,
etl::message_packet<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> >::value &&
1878 etl::is_one_of<typename etl::remove_cvref<TMessage>::type,
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11>::value);
1880 ETL_STATIC_ASSERT(
Enabled,
"Message not in packet type list");
1886 template <
typename TMessage>
1887 explicit message_packet(
const TMessage& ,
typename etl::enable_if<!
etl::is_same<
typename etl::remove_cvref<TMessage>::type,
etl::message_packet<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> >::value &&
1889 !
etl::is_one_of<
typename etl::remove_cvref<TMessage>::type,
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11>::value,
int>::type = 0)
1893 static const bool Enabled = (!
etl::is_same<typename etl::remove_cvref<TMessage>::type,
etl::message_packet<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> >::value &&
1895 etl::is_one_of<typename etl::remove_cvref<TMessage>::type,
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11>::value);
1897 ETL_STATIC_ASSERT(
Enabled,
"Message not in packet type list");
1905 : valid(
other.is_valid())
1909 add_new_message(
other.get());
1914 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
1918 : valid(
other.is_valid())
1922 add_new_message(etl::move(
other.get()));
1932 delete_current_message();
1933 valid =
rhs.is_valid();
1936 add_new_message(
rhs.get());
1943 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
1948 delete_current_message();
1949 valid =
rhs.is_valid();
1952 add_new_message(etl::move(
rhs.get()));
1963 delete_current_message();
1979 bool is_valid()
const
1987 return T1::ID ==
id || T2::ID ==
id || T3::ID ==
id || T4::ID ==
id ||
1988 T5::ID ==
id || T6::ID ==
id || T7::ID ==
id || T8::ID ==
id ||
1989 T9::ID ==
id || T10::ID ==
id || T11::ID == id;
1995 return accepts(
msg.get_message_id());
1999 template <etl::message_
id_t Id>
2000 static ETL_CONSTEXPR
bool accepts()
2002 return T1::ID ==
Id || T2::ID ==
Id || T3::ID ==
Id || T4::ID ==
Id ||
2003 T5::ID ==
Id || T6::ID ==
Id || T7::ID ==
Id || T8::ID ==
Id ||
2004 T9::ID ==
Id || T10::ID ==
Id || T11::ID ==
Id;
2008 template <
typename TMessage>
2009 static ETL_CONSTEXPR
2013 return T1::ID == TMessage::ID || T2::ID == TMessage::ID || T3::ID == TMessage::ID || T4::ID == TMessage::ID ||
2014 T5::ID == TMessage::ID || T6::ID == TMessage::ID || T7::ID == TMessage::ID || T8::ID == TMessage::ID ||
2015 T9::ID == TMessage::ID || T10::ID == TMessage::ID || T11::ID == TMessage::ID;
2020 SIZE =
etl::largest<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>::size,
2021 ALIGNMENT =
etl::largest<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>::alignment
2028 void delete_current_message()
2042 const size_t id =
msg.get_message_id();
2047 case T1::ID: ::new (p)
T1(
static_cast<const T1&
>(
msg));
break;
2048 case T2::ID: ::new (p)
T2(
static_cast<const T2&
>(
msg));
break;
2049 case T3::ID: ::new (p)
T3(
static_cast<const T3&
>(
msg));
break;
2050 case T4::ID: ::new (p)
T4(
static_cast<const T4&
>(
msg));
break;
2051 case T5::ID: ::new (p)
T5(
static_cast<const T5&
>(
msg));
break;
2052 case T6::ID: ::new (p)
T6(
static_cast<const T6&
>(
msg));
break;
2053 case T7::ID: ::new (p)
T7(
static_cast<const T7&
>(
msg));
break;
2054 case T8::ID: ::new (p)
T8(
static_cast<const T8&
>(
msg));
break;
2055 case T9::ID: ::new (p)
T9(
static_cast<const T9&
>(
msg));
break;
2056 case T10::ID: ::new (p)
T10(
static_cast<const T10&
>(
msg));
break;
2057 case T11::ID: ::new (p)
T11(
static_cast<const T11&
>(
msg));
break;
2062 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
2066 const size_t id =
msg.get_message_id();
2071 case T1::ID: ::new (p)
T1(
static_cast<T1&&
>(
msg));
break;
2072 case T2::ID: ::new (p)
T2(
static_cast<T2&&
>(
msg));
break;
2073 case T3::ID: ::new (p)
T3(
static_cast<T3&&
>(
msg));
break;
2074 case T4::ID: ::new (p)
T4(
static_cast<T4&&
>(
msg));
break;
2075 case T5::ID: ::new (p)
T5(
static_cast<T5&&
>(
msg));
break;
2076 case T6::ID: ::new (p)
T6(
static_cast<T6&&
>(
msg));
break;
2077 case T7::ID: ::new (p)
T7(
static_cast<T7&&
>(
msg));
break;
2078 case T8::ID: ::new (p)
T8(
static_cast<T8&&
>(
msg));
break;
2079 case T9::ID: ::new (p)
T9(
static_cast<T9&&
>(
msg));
break;
2080 case T10::ID: ::new (p)
T10(
static_cast<T10&&
>(
msg));
break;
2081 case T11::ID: ::new (p)
T11(
static_cast<T11&&
>(
msg));
break;
2094 template <
typename T1,
typename T2,
typename T3,
typename T4,
2095 typename T5,
typename T6,
typename T7,
typename T8,
2096 typename T9,
typename T10>
2097 class message_packet<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
void,
void,
void,
void,
void,
void>
2115 add_new_message(
msg);
2127 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
2134 add_new_message(etl::move(
msg));
2147 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) && !defined(ETL_COMPILER_GREEN_HILLS)
2150 template <typename TMessage, typename = typename etl::enable_if<!etl::is_same<typename etl::remove_cvref<TMessage>::type,
etl::message_packet<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> >::value &&
2152 !
etl::is_one_of<typename etl::remove_cvref<TMessage>::type,
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10>::value,
int>::type>
2157 static constexpr bool Enabled = (!
etl::is_same<typename etl::remove_cvref<TMessage>::type,
etl::message_packet<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> >::value &&
2159 etl::is_one_of<typename etl::remove_cvref<TMessage>::type,
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10>::value);
2161 ETL_STATIC_ASSERT(
Enabled,
"Message not in packet type list");
2167 template <
typename TMessage>
2168 explicit message_packet(
const TMessage& ,
typename etl::enable_if<!
etl::is_same<
typename etl::remove_cvref<TMessage>::type,
etl::message_packet<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> >::value &&
2170 !
etl::is_one_of<
typename etl::remove_cvref<TMessage>::type,
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10>::value,
int>::type = 0)
2174 static const bool Enabled = (!
etl::is_same<typename etl::remove_cvref<TMessage>::type,
etl::message_packet<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> >::value &&
2176 etl::is_one_of<typename etl::remove_cvref<TMessage>::type,
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10>::value);
2178 ETL_STATIC_ASSERT(
Enabled,
"Message not in packet type list");
2186 : valid(
other.is_valid())
2190 add_new_message(
other.get());
2195 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
2199 : valid(
other.is_valid())
2203 add_new_message(etl::move(
other.get()));
2213 delete_current_message();
2214 valid =
rhs.is_valid();
2217 add_new_message(
rhs.get());
2224 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
2229 delete_current_message();
2230 valid =
rhs.is_valid();
2233 add_new_message(etl::move(
rhs.get()));
2244 delete_current_message();
2260 bool is_valid()
const
2268 return T1::ID ==
id || T2::ID ==
id || T3::ID ==
id || T4::ID ==
id ||
2269 T5::ID ==
id || T6::ID ==
id || T7::ID ==
id || T8::ID ==
id ||
2270 T9::ID ==
id || T10::ID == id;
2276 return accepts(
msg.get_message_id());
2280 template <etl::message_
id_t Id>
2281 static ETL_CONSTEXPR
bool accepts()
2283 return T1::ID ==
Id || T2::ID ==
Id || T3::ID ==
Id || T4::ID ==
Id ||
2284 T5::ID ==
Id || T6::ID ==
Id || T7::ID ==
Id || T8::ID ==
Id ||
2285 T9::ID ==
Id || T10::ID ==
Id;
2289 template <
typename TMessage>
2290 static ETL_CONSTEXPR
2294 return T1::ID == TMessage::ID || T2::ID == TMessage::ID || T3::ID == TMessage::ID || T4::ID == TMessage::ID ||
2295 T5::ID == TMessage::ID || T6::ID == TMessage::ID || T7::ID == TMessage::ID || T8::ID == TMessage::ID ||
2296 T9::ID == TMessage::ID || T10::ID == TMessage::ID;
2301 SIZE =
etl::largest<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>::size,
2309 void delete_current_message()
2323 const size_t id =
msg.get_message_id();
2328 case T1::ID: ::new (p)
T1(
static_cast<const T1&
>(
msg));
break;
2329 case T2::ID: ::new (p)
T2(
static_cast<const T2&
>(
msg));
break;
2330 case T3::ID: ::new (p)
T3(
static_cast<const T3&
>(
msg));
break;
2331 case T4::ID: ::new (p)
T4(
static_cast<const T4&
>(
msg));
break;
2332 case T5::ID: ::new (p)
T5(
static_cast<const T5&
>(
msg));
break;
2333 case T6::ID: ::new (p)
T6(
static_cast<const T6&
>(
msg));
break;
2334 case T7::ID: ::new (p)
T7(
static_cast<const T7&
>(
msg));
break;
2335 case T8::ID: ::new (p)
T8(
static_cast<const T8&
>(
msg));
break;
2336 case T9::ID: ::new (p)
T9(
static_cast<const T9&
>(
msg));
break;
2337 case T10::ID: ::new (p)
T10(
static_cast<const T10&
>(
msg));
break;
2342 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
2346 const size_t id =
msg.get_message_id();
2351 case T1::ID: ::new (p)
T1(
static_cast<T1&&
>(
msg));
break;
2352 case T2::ID: ::new (p)
T2(
static_cast<T2&&
>(
msg));
break;
2353 case T3::ID: ::new (p)
T3(
static_cast<T3&&
>(
msg));
break;
2354 case T4::ID: ::new (p)
T4(
static_cast<T4&&
>(
msg));
break;
2355 case T5::ID: ::new (p)
T5(
static_cast<T5&&
>(
msg));
break;
2356 case T6::ID: ::new (p)
T6(
static_cast<T6&&
>(
msg));
break;
2357 case T7::ID: ::new (p)
T7(
static_cast<T7&&
>(
msg));
break;
2358 case T8::ID: ::new (p)
T8(
static_cast<T8&&
>(
msg));
break;
2359 case T9::ID: ::new (p)
T9(
static_cast<T9&&
>(
msg));
break;
2360 case T10::ID: ::new (p)
T10(
static_cast<T10&&
>(
msg));
break;
2373 template <
typename T1,
typename T2,
typename T3,
typename T4,
2374 typename T5,
typename T6,
typename T7,
typename T8,
2376 class message_packet<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
void,
void,
void,
void,
void,
void,
void>
2394 add_new_message(
msg);
2406 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
2413 add_new_message(etl::move(
msg));
2426 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) && !defined(ETL_COMPILER_GREEN_HILLS)
2429 template <typename TMessage, typename = typename etl::enable_if<!etl::is_same<typename etl::remove_cvref<TMessage>::type,
etl::message_packet<T1, T2, T3, T4, T5, T6, T7, T8, T9> >::value &&
2431 !
etl::is_one_of<typename etl::remove_cvref<TMessage>::type,
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9>::value,
int>::type>
2440 ETL_STATIC_ASSERT(
Enabled,
"Message not in packet type list");
2446 template <
typename TMessage>
2447 explicit message_packet(
const TMessage& ,
typename etl::enable_if<!
etl::is_same<
typename etl::remove_cvref<TMessage>::type,
etl::message_packet<T1, T2, T3, T4, T5, T6, T7, T8, T9> >::value &&
2449 !
etl::is_one_of<
typename etl::remove_cvref<TMessage>::type,
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9>::value,
int>::type = 0)
2457 ETL_STATIC_ASSERT(
Enabled,
"Message not in packet type list");
2465 : valid(
other.is_valid())
2469 add_new_message(
other.get());
2474 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
2478 : valid(
other.is_valid())
2482 add_new_message(etl::move(
other.get()));
2492 delete_current_message();
2493 valid =
rhs.is_valid();
2496 add_new_message(
rhs.get());
2503 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
2508 delete_current_message();
2509 valid =
rhs.is_valid();
2512 add_new_message(etl::move(
rhs.get()));
2523 delete_current_message();
2539 bool is_valid()
const
2547 return T1::ID ==
id || T2::ID ==
id || T3::ID ==
id || T4::ID ==
id ||
2548 T5::ID ==
id || T6::ID ==
id || T7::ID ==
id || T8::ID ==
id ||
2555 return accepts(
msg.get_message_id());
2559 template <etl::message_
id_t Id>
2560 static ETL_CONSTEXPR
bool accepts()
2562 return T1::ID ==
Id || T2::ID ==
Id || T3::ID ==
Id || T4::ID ==
Id ||
2563 T5::ID ==
Id || T6::ID ==
Id || T7::ID ==
Id || T8::ID ==
Id ||
2568 template <
typename TMessage>
2569 static ETL_CONSTEXPR
2573 return T1::ID == TMessage::ID || T2::ID == TMessage::ID || T3::ID == TMessage::ID || T4::ID == TMessage::ID ||
2574 T5::ID == TMessage::ID || T6::ID == TMessage::ID || T7::ID == TMessage::ID || T8::ID == TMessage::ID ||
2575 T9::ID == TMessage::ID;
2588 void delete_current_message()
2602 const size_t id =
msg.get_message_id();
2607 case T1::ID: ::new (p)
T1(
static_cast<const T1&
>(
msg));
break;
2608 case T2::ID: ::new (p)
T2(
static_cast<const T2&
>(
msg));
break;
2609 case T3::ID: ::new (p)
T3(
static_cast<const T3&
>(
msg));
break;
2610 case T4::ID: ::new (p)
T4(
static_cast<const T4&
>(
msg));
break;
2611 case T5::ID: ::new (p)
T5(
static_cast<const T5&
>(
msg));
break;
2612 case T6::ID: ::new (p)
T6(
static_cast<const T6&
>(
msg));
break;
2613 case T7::ID: ::new (p)
T7(
static_cast<const T7&
>(
msg));
break;
2614 case T8::ID: ::new (p)
T8(
static_cast<const T8&
>(
msg));
break;
2615 case T9::ID: ::new (p)
T9(
static_cast<const T9&
>(
msg));
break;
2620 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
2624 const size_t id =
msg.get_message_id();
2629 case T1::ID: ::new (p)
T1(
static_cast<T1&&
>(
msg));
break;
2630 case T2::ID: ::new (p)
T2(
static_cast<T2&&
>(
msg));
break;
2631 case T3::ID: ::new (p)
T3(
static_cast<T3&&
>(
msg));
break;
2632 case T4::ID: ::new (p)
T4(
static_cast<T4&&
>(
msg));
break;
2633 case T5::ID: ::new (p)
T5(
static_cast<T5&&
>(
msg));
break;
2634 case T6::ID: ::new (p)
T6(
static_cast<T6&&
>(
msg));
break;
2635 case T7::ID: ::new (p)
T7(
static_cast<T7&&
>(
msg));
break;
2636 case T8::ID: ::new (p)
T8(
static_cast<T8&&
>(
msg));
break;
2637 case T9::ID: ::new (p)
T9(
static_cast<T9&&
>(
msg));
break;
2650 template <
typename T1,
typename T2,
typename T3,
typename T4,
2651 typename T5,
typename T6,
typename T7,
typename T8>
2652 class message_packet<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
void,
void,
void,
void,
void,
void,
void,
void>
2670 add_new_message(
msg);
2682 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
2689 add_new_message(etl::move(
msg));
2702 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) && !defined(ETL_COMPILER_GREEN_HILLS)
2716 ETL_STATIC_ASSERT(
Enabled,
"Message not in packet type list");
2722 template <
typename TMessage>
2733 ETL_STATIC_ASSERT(
Enabled,
"Message not in packet type list");
2741 : valid(
other.is_valid())
2745 add_new_message(
other.get());
2750 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
2754 : valid(
other.is_valid())
2758 add_new_message(etl::move(
other.get()));
2768 delete_current_message();
2769 valid =
rhs.is_valid();
2772 add_new_message(
rhs.get());
2779 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
2784 delete_current_message();
2785 valid =
rhs.is_valid();
2788 add_new_message(etl::move(
rhs.get()));
2799 delete_current_message();
2815 bool is_valid()
const
2823 return T1::ID ==
id || T2::ID ==
id || T3::ID ==
id || T4::ID ==
id ||
2824 T5::ID ==
id || T6::ID ==
id || T7::ID ==
id || T8::ID == id;
2830 return accepts(
msg.get_message_id());
2834 template <etl::message_
id_t Id>
2835 static ETL_CONSTEXPR
bool accepts()
2837 return T1::ID ==
Id || T2::ID ==
Id || T3::ID ==
Id || T4::ID ==
Id ||
2838 T5::ID ==
Id || T6::ID ==
Id || T7::ID ==
Id || T8::ID ==
Id;
2842 template <
typename TMessage>
2843 static ETL_CONSTEXPR
2847 return T1::ID == TMessage::ID || T2::ID == TMessage::ID || T3::ID == TMessage::ID || T4::ID == TMessage::ID ||
2848 T5::ID == TMessage::ID || T6::ID == TMessage::ID || T7::ID == TMessage::ID || T8::ID == TMessage::ID;
2861 void delete_current_message()
2875 const size_t id =
msg.get_message_id();
2880 case T1::ID: ::new (p)
T1(
static_cast<const T1&
>(
msg));
break;
2881 case T2::ID: ::new (p)
T2(
static_cast<const T2&
>(
msg));
break;
2882 case T3::ID: ::new (p)
T3(
static_cast<const T3&
>(
msg));
break;
2883 case T4::ID: ::new (p)
T4(
static_cast<const T4&
>(
msg));
break;
2884 case T5::ID: ::new (p)
T5(
static_cast<const T5&
>(
msg));
break;
2885 case T6::ID: ::new (p)
T6(
static_cast<const T6&
>(
msg));
break;
2886 case T7::ID: ::new (p)
T7(
static_cast<const T7&
>(
msg));
break;
2887 case T8::ID: ::new (p)
T8(
static_cast<const T8&
>(
msg));
break;
2892 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
2896 const size_t id =
msg.get_message_id();
2901 case T1::ID: ::new (p)
T1(
static_cast<T1&&
>(
msg));
break;
2902 case T2::ID: ::new (p)
T2(
static_cast<T2&&
>(
msg));
break;
2903 case T3::ID: ::new (p)
T3(
static_cast<T3&&
>(
msg));
break;
2904 case T4::ID: ::new (p)
T4(
static_cast<T4&&
>(
msg));
break;
2905 case T5::ID: ::new (p)
T5(
static_cast<T5&&
>(
msg));
break;
2906 case T6::ID: ::new (p)
T6(
static_cast<T6&&
>(
msg));
break;
2907 case T7::ID: ::new (p)
T7(
static_cast<T7&&
>(
msg));
break;
2908 case T8::ID: ::new (p)
T8(
static_cast<T8&&
>(
msg));
break;
2921 template <
typename T1,
typename T2,
typename T3,
typename T4,
2922 typename T5,
typename T6,
typename T7>
2923 class message_packet<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
void,
void,
void,
void,
void,
void,
void,
void,
void>
2941 add_new_message(
msg);
2953 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
2960 add_new_message(etl::move(
msg));
2973 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) && !defined(ETL_COMPILER_GREEN_HILLS)
2987 ETL_STATIC_ASSERT(
Enabled,
"Message not in packet type list");
2993 template <
typename TMessage>
3004 ETL_STATIC_ASSERT(
Enabled,
"Message not in packet type list");
3012 : valid(
other.is_valid())
3016 add_new_message(
other.get());
3021 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
3025 : valid(
other.is_valid())
3029 add_new_message(etl::move(
other.get()));
3039 delete_current_message();
3040 valid =
rhs.is_valid();
3043 add_new_message(
rhs.get());
3050 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
3055 delete_current_message();
3056 valid =
rhs.is_valid();
3059 add_new_message(etl::move(
rhs.get()));
3070 delete_current_message();
3086 bool is_valid()
const
3094 return T1::ID ==
id || T2::ID ==
id || T3::ID ==
id || T4::ID ==
id ||
3095 T5::ID ==
id || T6::ID ==
id || T7::ID == id;
3101 return accepts(
msg.get_message_id());
3105 template <etl::message_
id_t Id>
3106 static ETL_CONSTEXPR
bool accepts()
3108 return T1::ID ==
Id || T2::ID ==
Id || T3::ID ==
Id || T4::ID ==
Id ||
3109 T5::ID ==
Id || T6::ID ==
Id || T7::ID ==
Id;
3113 template <
typename TMessage>
3114 static ETL_CONSTEXPR
3118 return T1::ID == TMessage::ID || T2::ID == TMessage::ID || T3::ID == TMessage::ID || T4::ID == TMessage::ID ||
3119 T5::ID == TMessage::ID || T6::ID == TMessage::ID || T7::ID == TMessage::ID;
3132 void delete_current_message()
3146 const size_t id =
msg.get_message_id();
3151 case T1::ID: ::new (p)
T1(
static_cast<const T1&
>(
msg));
break;
3152 case T2::ID: ::new (p)
T2(
static_cast<const T2&
>(
msg));
break;
3153 case T3::ID: ::new (p)
T3(
static_cast<const T3&
>(
msg));
break;
3154 case T4::ID: ::new (p)
T4(
static_cast<const T4&
>(
msg));
break;
3155 case T5::ID: ::new (p)
T5(
static_cast<const T5&
>(
msg));
break;
3156 case T6::ID: ::new (p)
T6(
static_cast<const T6&
>(
msg));
break;
3157 case T7::ID: ::new (p)
T7(
static_cast<const T7&
>(
msg));
break;
3162 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
3166 const size_t id =
msg.get_message_id();
3171 case T1::ID: ::new (p)
T1(
static_cast<T1&&
>(
msg));
break;
3172 case T2::ID: ::new (p)
T2(
static_cast<T2&&
>(
msg));
break;
3173 case T3::ID: ::new (p)
T3(
static_cast<T3&&
>(
msg));
break;
3174 case T4::ID: ::new (p)
T4(
static_cast<T4&&
>(
msg));
break;
3175 case T5::ID: ::new (p)
T5(
static_cast<T5&&
>(
msg));
break;
3176 case T6::ID: ::new (p)
T6(
static_cast<T6&&
>(
msg));
break;
3177 case T7::ID: ::new (p)
T7(
static_cast<T7&&
>(
msg));
break;
3190 template <
typename T1,
typename T2,
typename T3,
typename T4,
3191 typename T5,
typename T6>
3192 class message_packet<
T1,
T2,
T3,
T4,
T5,
T6,
void,
void,
void,
void,
void,
void,
void,
void,
void,
void>
3210 add_new_message(
msg);
3222 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
3229 add_new_message(etl::move(
msg));
3242 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) && !defined(ETL_COMPILER_GREEN_HILLS)
3256 ETL_STATIC_ASSERT(
Enabled,
"Message not in packet type list");
3262 template <
typename TMessage>
3273 ETL_STATIC_ASSERT(
Enabled,
"Message not in packet type list");
3281 : valid(
other.is_valid())
3285 add_new_message(
other.get());
3290 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
3294 : valid(
other.is_valid())
3298 add_new_message(etl::move(
other.get()));
3308 delete_current_message();
3309 valid =
rhs.is_valid();
3312 add_new_message(
rhs.get());
3319 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
3324 delete_current_message();
3325 valid =
rhs.is_valid();
3328 add_new_message(etl::move(
rhs.get()));
3339 delete_current_message();
3355 bool is_valid()
const
3363 return T1::ID ==
id || T2::ID ==
id || T3::ID ==
id || T4::ID ==
id ||
3364 T5::ID ==
id || T6::ID == id;
3370 return accepts(
msg.get_message_id());
3374 template <etl::message_
id_t Id>
3375 static ETL_CONSTEXPR
bool accepts()
3377 return T1::ID ==
Id || T2::ID ==
Id || T3::ID ==
Id || T4::ID ==
Id ||
3378 T5::ID ==
Id || T6::ID ==
Id;
3382 template <
typename TMessage>
3383 static ETL_CONSTEXPR
3387 return T1::ID == TMessage::ID || T2::ID == TMessage::ID || T3::ID == TMessage::ID || T4::ID == TMessage::ID ||
3388 T5::ID == TMessage::ID || T6::ID == TMessage::ID;
3401 void delete_current_message()
3415 const size_t id =
msg.get_message_id();
3420 case T1::ID: ::new (p)
T1(
static_cast<const T1&
>(
msg));
break;
3421 case T2::ID: ::new (p)
T2(
static_cast<const T2&
>(
msg));
break;
3422 case T3::ID: ::new (p)
T3(
static_cast<const T3&
>(
msg));
break;
3423 case T4::ID: ::new (p)
T4(
static_cast<const T4&
>(
msg));
break;
3424 case T5::ID: ::new (p)
T5(
static_cast<const T5&
>(
msg));
break;
3425 case T6::ID: ::new (p)
T6(
static_cast<const T6&
>(
msg));
break;
3430 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
3434 const size_t id =
msg.get_message_id();
3439 case T1::ID: ::new (p)
T1(
static_cast<T1&&
>(
msg));
break;
3440 case T2::ID: ::new (p)
T2(
static_cast<T2&&
>(
msg));
break;
3441 case T3::ID: ::new (p)
T3(
static_cast<T3&&
>(
msg));
break;
3442 case T4::ID: ::new (p)
T4(
static_cast<T4&&
>(
msg));
break;
3443 case T5::ID: ::new (p)
T5(
static_cast<T5&&
>(
msg));
break;
3444 case T6::ID: ::new (p)
T6(
static_cast<T6&&
>(
msg));
break;
3457 template <
typename T1,
typename T2,
typename T3,
typename T4,
3459 class message_packet<
T1,
T2,
T3,
T4,
T5,
void,
void,
void,
void,
void,
void,
void,
void,
void,
void,
void>
3477 add_new_message(
msg);
3489 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
3496 add_new_message(etl::move(
msg));
3509 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) && !defined(ETL_COMPILER_GREEN_HILLS)
3523 ETL_STATIC_ASSERT(
Enabled,
"Message not in packet type list");
3529 template <
typename TMessage>
3540 ETL_STATIC_ASSERT(
Enabled,
"Message not in packet type list");
3548 : valid(
other.is_valid())
3552 add_new_message(
other.get());
3557 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
3561 : valid(
other.is_valid())
3565 add_new_message(etl::move(
other.get()));
3575 delete_current_message();
3576 valid =
rhs.is_valid();
3579 add_new_message(
rhs.get());
3586 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
3591 delete_current_message();
3592 valid =
rhs.is_valid();
3595 add_new_message(etl::move(
rhs.get()));
3606 delete_current_message();
3622 bool is_valid()
const
3630 return T1::ID ==
id || T2::ID ==
id || T3::ID ==
id || T4::ID ==
id ||
3637 return accepts(
msg.get_message_id());
3641 template <etl::message_
id_t Id>
3642 static ETL_CONSTEXPR
bool accepts()
3644 return T1::ID ==
Id || T2::ID ==
Id || T3::ID ==
Id || T4::ID ==
Id ||
3649 template <
typename TMessage>
3650 static ETL_CONSTEXPR
3654 return T1::ID == TMessage::ID || T2::ID == TMessage::ID || T3::ID == TMessage::ID || T4::ID == TMessage::ID ||
3655 T5::ID == TMessage::ID;
3668 void delete_current_message()
3682 const size_t id =
msg.get_message_id();
3687 case T1::ID: ::new (p)
T1(
static_cast<const T1&
>(
msg));
break;
3688 case T2::ID: ::new (p)
T2(
static_cast<const T2&
>(
msg));
break;
3689 case T3::ID: ::new (p)
T3(
static_cast<const T3&
>(
msg));
break;
3690 case T4::ID: ::new (p)
T4(
static_cast<const T4&
>(
msg));
break;
3691 case T5::ID: ::new (p)
T5(
static_cast<const T5&
>(
msg));
break;
3696 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
3700 const size_t id =
msg.get_message_id();
3705 case T1::ID: ::new (p)
T1(
static_cast<T1&&
>(
msg));
break;
3706 case T2::ID: ::new (p)
T2(
static_cast<T2&&
>(
msg));
break;
3707 case T3::ID: ::new (p)
T3(
static_cast<T3&&
>(
msg));
break;
3708 case T4::ID: ::new (p)
T4(
static_cast<T4&&
>(
msg));
break;
3709 case T5::ID: ::new (p)
T5(
static_cast<T5&&
>(
msg));
break;
3722 template <
typename T1,
typename T2,
typename T3,
typename T4>
3723 class message_packet<
T1,
T2,
T3,
T4,
void,
void,
void,
void,
void,
void,
void,
void,
void,
void,
void,
void>
3741 add_new_message(
msg);
3753 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
3760 add_new_message(etl::move(
msg));
3773 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) && !defined(ETL_COMPILER_GREEN_HILLS)
3787 ETL_STATIC_ASSERT(
Enabled,
"Message not in packet type list");
3793 template <
typename TMessage>
3804 ETL_STATIC_ASSERT(
Enabled,
"Message not in packet type list");
3812 : valid(
other.is_valid())
3816 add_new_message(
other.get());
3821 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
3825 : valid(
other.is_valid())
3829 add_new_message(etl::move(
other.get()));
3839 delete_current_message();
3840 valid =
rhs.is_valid();
3843 add_new_message(
rhs.get());
3850 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
3855 delete_current_message();
3856 valid =
rhs.is_valid();
3859 add_new_message(etl::move(
rhs.get()));
3870 delete_current_message();
3886 bool is_valid()
const
3894 return T1::ID ==
id || T2::ID ==
id || T3::ID ==
id || T4::ID == id;
3900 return accepts(
msg.get_message_id());
3904 template <etl::message_
id_t Id>
3905 static ETL_CONSTEXPR
bool accepts()
3907 return T1::ID ==
Id || T2::ID ==
Id || T3::ID ==
Id || T4::ID ==
Id;
3911 template <
typename TMessage>
3912 static ETL_CONSTEXPR
3916 return T1::ID == TMessage::ID || T2::ID == TMessage::ID || T3::ID == TMessage::ID || T4::ID == TMessage::ID;
3929 void delete_current_message()
3943 const size_t id =
msg.get_message_id();
3948 case T1::ID: ::new (p)
T1(
static_cast<const T1&
>(
msg));
break;
3949 case T2::ID: ::new (p)
T2(
static_cast<const T2&
>(
msg));
break;
3950 case T3::ID: ::new (p)
T3(
static_cast<const T3&
>(
msg));
break;
3951 case T4::ID: ::new (p)
T4(
static_cast<const T4&
>(
msg));
break;
3956 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
3960 const size_t id =
msg.get_message_id();
3965 case T1::ID: ::new (p)
T1(
static_cast<T1&&
>(
msg));
break;
3966 case T2::ID: ::new (p)
T2(
static_cast<T2&&
>(
msg));
break;
3967 case T3::ID: ::new (p)
T3(
static_cast<T3&&
>(
msg));
break;
3968 case T4::ID: ::new (p)
T4(
static_cast<T4&&
>(
msg));
break;
3981 template <
typename T1,
typename T2,
typename T3>
3982 class message_packet<
T1,
T2,
T3,
void,
void,
void,
void,
void,
void,
void,
void,
void,
void,
void,
void,
void>
4000 add_new_message(
msg);
4012 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
4019 add_new_message(etl::move(
msg));
4032 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) && !defined(ETL_COMPILER_GREEN_HILLS)
4046 ETL_STATIC_ASSERT(
Enabled,
"Message not in packet type list");
4052 template <
typename TMessage>
4055 !
etl::is_one_of<
typename etl::remove_cvref<TMessage>::type,
T1,
T2,
T3>::value,
int>::type = 0)
4063 ETL_STATIC_ASSERT(
Enabled,
"Message not in packet type list");
4071 : valid(
other.is_valid())
4075 add_new_message(
other.get());
4080 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
4084 : valid(
other.is_valid())
4088 add_new_message(etl::move(
other.get()));
4098 delete_current_message();
4099 valid =
rhs.is_valid();
4102 add_new_message(
rhs.get());
4109 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
4114 delete_current_message();
4115 valid =
rhs.is_valid();
4118 add_new_message(etl::move(
rhs.get()));
4129 delete_current_message();
4145 bool is_valid()
const
4153 return T1::ID ==
id || T2::ID ==
id || T3::ID == id;
4159 return accepts(
msg.get_message_id());
4163 template <etl::message_
id_t Id>
4164 static ETL_CONSTEXPR
bool accepts()
4166 return T1::ID ==
Id || T2::ID ==
Id || T3::ID ==
Id;
4170 template <
typename TMessage>
4171 static ETL_CONSTEXPR
4175 return T1::ID == TMessage::ID || T2::ID == TMessage::ID || T3::ID == TMessage::ID;
4188 void delete_current_message()
4202 const size_t id =
msg.get_message_id();
4207 case T1::ID: ::new (p)
T1(
static_cast<const T1&
>(
msg));
break;
4208 case T2::ID: ::new (p)
T2(
static_cast<const T2&
>(
msg));
break;
4209 case T3::ID: ::new (p)
T3(
static_cast<const T3&
>(
msg));
break;
4214 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
4218 const size_t id =
msg.get_message_id();
4223 case T1::ID: ::new (p)
T1(
static_cast<T1&&
>(
msg));
break;
4224 case T2::ID: ::new (p)
T2(
static_cast<T2&&
>(
msg));
break;
4225 case T3::ID: ::new (p)
T3(
static_cast<T3&&
>(
msg));
break;
4238 template <
typename T1,
typename T2>
4239 class message_packet<
T1,
T2,
void,
void,
void,
void,
void,
void,
void,
void,
void,
void,
void,
void,
void,
void>
4257 add_new_message(
msg);
4269 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
4276 add_new_message(etl::move(
msg));
4289 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) && !defined(ETL_COMPILER_GREEN_HILLS)
4303 ETL_STATIC_ASSERT(
Enabled,
"Message not in packet type list");
4309 template <
typename TMessage>
4312 !
etl::is_one_of<
typename etl::remove_cvref<TMessage>::type,
T1,
T2>::value,
int>::type = 0)
4320 ETL_STATIC_ASSERT(
Enabled,
"Message not in packet type list");
4328 : valid(
other.is_valid())
4332 add_new_message(
other.get());
4337 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
4341 : valid(
other.is_valid())
4345 add_new_message(etl::move(
other.get()));
4355 delete_current_message();
4356 valid =
rhs.is_valid();
4359 add_new_message(
rhs.get());
4366 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
4371 delete_current_message();
4372 valid =
rhs.is_valid();
4375 add_new_message(etl::move(
rhs.get()));
4386 delete_current_message();
4402 bool is_valid()
const
4410 return T1::ID ==
id || T2::ID == id;
4416 return accepts(
msg.get_message_id());
4420 template <etl::message_
id_t Id>
4421 static ETL_CONSTEXPR
bool accepts()
4423 return T1::ID ==
Id || T2::ID ==
Id;
4427 template <
typename TMessage>
4428 static ETL_CONSTEXPR
4432 return T1::ID == TMessage::ID || T2::ID == TMessage::ID;
4445 void delete_current_message()
4459 const size_t id =
msg.get_message_id();
4464 case T1::ID: ::new (p)
T1(
static_cast<const T1&
>(
msg));
break;
4465 case T2::ID: ::new (p)
T2(
static_cast<const T2&
>(
msg));
break;
4470 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
4474 const size_t id =
msg.get_message_id();
4479 case T1::ID: ::new (p)
T1(
static_cast<T1&&
>(
msg));
break;
4480 case T2::ID: ::new (p)
T2(
static_cast<T2&&
>(
msg));
break;
4493 template <
typename T1>
4494 class message_packet<
T1,
void,
void,
void,
void,
void,
void,
void,
void,
void,
void,
void,
void,
void,
void,
void>
4512 add_new_message(
msg);
4524 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
4531 add_new_message(etl::move(
msg));
4544 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) && !defined(ETL_COMPILER_GREEN_HILLS)
4558 ETL_STATIC_ASSERT(
Enabled,
"Message not in packet type list");
4564 template <
typename TMessage>
4567 !
etl::is_one_of<
typename etl::remove_cvref<TMessage>::type,
T1>::value,
int>::type = 0)
4575 ETL_STATIC_ASSERT(
Enabled,
"Message not in packet type list");
4583 : valid(
other.is_valid())
4587 add_new_message(
other.get());
4592 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
4596 : valid(
other.is_valid())
4600 add_new_message(etl::move(
other.get()));
4610 delete_current_message();
4611 valid =
rhs.is_valid();
4614 add_new_message(
rhs.get());
4621 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
4626 delete_current_message();
4627 valid =
rhs.is_valid();
4630 add_new_message(etl::move(
rhs.get()));
4641 delete_current_message();
4657 bool is_valid()
const
4665 return T1::ID == id;
4671 return accepts(
msg.get_message_id());
4675 template <etl::message_
id_t Id>
4676 static ETL_CONSTEXPR
bool accepts()
4678 return T1::ID ==
Id;
4682 template <
typename TMessage>
4683 static ETL_CONSTEXPR
4687 return T1::ID == TMessage::ID;
4700 void delete_current_message()
4714 const size_t id =
msg.get_message_id();
4719 case T1::ID: ::new (p)
T1(
static_cast<const T1&
>(
msg));
break;
4724 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
4728 const size_t id =
msg.get_message_id();
4733 case T1::ID: ::new (p)
T1(
static_cast<T1&&
>(
msg));
break;
4745 #error "etl::message_packet is not compatible with non-virtual etl::imessage"
Definition message_packet.h:367
#define ETL_ASSERT(b, e)
Definition error_handler.h:316
enable_if
Definition type_traits_generator.h:1191
is_same
Definition type_traits_generator.h:1041
bitset_ext
Definition absolute.h:38
ETL_CONSTEXPR TContainer::size_type size(const TContainer &container)
Definition iterator.h:1187
Definition alignment.h:233
pair holds two objects of arbitrary type
Definition utility.h:164