30#error THIS HEADER IS A GENERATOR. DO NOT INCLUDE.
51#ifndef ETL_MESSAGE_PACKET_INCLUDED
52#define ETL_MESSAGE_PACKET_INCLUDED
56#include "static_assert.h"
65#if ETL_USING_CPP17 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
69 template <
typename... TMessageTypes>
76 static constexpr bool IsMessagePacket = etl::is_same_v< etl::remove_const_t<etl::remove_reference_t<T>>,
etl::message_packet<TMessageTypes...>>;
79 static constexpr bool IsInMessageList = etl::is_one_of_v<etl::remove_const_t<etl::remove_reference_t<T>>, TMessageTypes...>;
82 static constexpr bool IsIMessage = etl::is_same_v<remove_const_t<etl::remove_reference_t<T>>,
etl::imessage>;
99 explicit message_packet(T&& msg)
102 if constexpr (IsIMessage<T>)
106 add_new_message(etl::forward<T>(msg));
114 ETL_ASSERT(valid, ETL_ERROR(unhandled_message_exception));
116 else if constexpr (IsInMessageList<T>)
118 add_new_message_type<T>(etl::forward<T>(msg));
120 else if constexpr (IsMessagePacket<T>)
122 copy(etl::forward<T>(msg));
126 ETL_STATIC_ASSERT(IsInMessageList<T>,
"Message not in packet type list");
132 void copy(
const message_packet& other)
134 valid = other.is_valid();
138 add_new_message(other.get());
143 void copy(message_packet&& other)
145 valid = other.is_valid();
149 add_new_message(etl::move(other.get()));
154 message_packet& operator =(
const message_packet& rhs)
156 delete_current_message();
157 valid = rhs.is_valid();
160 add_new_message(rhs.get());
167 message_packet& operator =(message_packet&& rhs)
169 delete_current_message();
170 valid = rhs.is_valid();
173 add_new_message(etl::move(rhs.get()));
182 delete_current_message();
198 bool is_valid()
const
206 return (accepts_message<TMessageTypes::ID>(
id) || ...);
212 return accepts(msg.get_message_id());
216 template <etl::message_
id_t Id>
217 static ETL_CONSTEXPR
bool accepts()
219 return (accepts_message<TMessageTypes::ID, Id>() || ...);
223 template <
typename TMessage>
228 return accepts<TMessage::ID>();
240 template <etl::message_
id_t Id1, etl::message_
id_t Id2>
241 static bool accepts_message()
247 template <etl::message_
id_t Id1>
255 void delete_current_message()
269 (add_new_message_type<TMessageTypes>(msg) || ...);
275 (add_new_message_type<TMessageTypes>(etl::move(msg)) || ...);
281 template <
typename TMessage>
282 etl::enable_if_t<etl::is_one_of_v<etl::remove_const_t<etl::remove_reference_t<TMessage>>, TMessageTypes...>,
void>
283 add_new_message_type(TMessage&& msg)
286 new (p) etl::remove_reference_t<TMessage>((etl::forward<TMessage>(msg)));
290 template <
typename TType>
293 if (TType::ID == msg.get_message_id())
296 new (p) TType(
static_cast<const TType&
>(msg));
306 template <
typename TType>
309 if (TType::ID == msg.get_message_id())
312 new (p) TType(
static_cast<TType&&
>(msg));
330 template <
typename T1,
typename T2 = void,
typename T3 = void,
typename T4 = void,
331 typename T5 = void,
typename T6 = void,
typename T7 = void,
typename T8 = void,
332 typename T9 = void,
typename T10 = void,
typename T11 = void,
typename T12 = void,
333 typename T13 = void,
typename T14 = void,
typename T15 = void,
typename T16 =
void>
352 add_new_message(msg);
364 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
371 add_new_message(etl::move(msg));
384 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) && !defined(ETL_COMPILER_GREEN_HILLS)
387 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 &&
389 !
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>
394 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 &&
396 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);
398 ETL_STATIC_ASSERT(Enabled,
"Message not in packet type list");
404 template <
typename TMessage>
405 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 &&
407 !
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)
411 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 &&
413 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);
415 ETL_STATIC_ASSERT(Enabled,
"Message not in packet type list");
423 : valid(other.is_valid())
427 add_new_message(other.get());
432 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
436 : valid(other.is_valid())
440 add_new_message(etl::move(other.get()));
449 delete_current_message();
450 valid = rhs.is_valid();
453 add_new_message(rhs.get());
459 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
463 delete_current_message();
464 valid = rhs.is_valid();
467 add_new_message(etl::move(rhs.get()));
477 delete_current_message();
493 bool is_valid()
const
501 return T1::ID ==
id || T2::ID ==
id || T3::ID ==
id || T4::ID ==
id ||
502 T5::ID ==
id || T6::ID ==
id || T7::ID ==
id || T8::ID ==
id ||
503 T9::ID ==
id || T10::ID ==
id || T11::ID ==
id || T12::ID ==
id ||
504 T13::ID ==
id || T14::ID ==
id || T15::ID ==
id || T16::ID == id;
510 return accepts(msg.get_message_id());
514 template <etl::message_
id_t Id>
515 static ETL_CONSTEXPR
bool accepts()
517 return T1::ID == Id || T2::ID == Id || T3::ID == Id || T4::ID == Id ||
518 T5::ID == Id || T6::ID == Id || T7::ID == Id || T8::ID == Id ||
519 T9::ID == Id || T10::ID == Id || T11::ID == Id || T12::ID == Id ||
520 T13::ID == Id || T14::ID == Id || T15::ID == Id || T16::ID == Id;
524 template <
typename TMessage>
529 return T1::ID == TMessage::ID || T2::ID == TMessage::ID || T3::ID == TMessage::ID || T4::ID == TMessage::ID ||
530 T5::ID == TMessage::ID || T6::ID == TMessage::ID || T7::ID == TMessage::ID || T8::ID == TMessage::ID ||
531 T9::ID == TMessage::ID || T10::ID == TMessage::ID || T11::ID == TMessage::ID || T12::ID == TMessage::ID ||
532 T13::ID == TMessage::ID || T14::ID == TMessage::ID || T15::ID == TMessage::ID || T16::ID == TMessage::ID;
537 SIZE =
etl::largest<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>::size,
538 ALIGNMENT =
etl::largest<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>::alignment
545 void delete_current_message()
559 const size_t id = msg.get_message_id();
564 case T1::ID: ::new (p) T1(
static_cast<const T1&
>(msg));
break;
565 case T2::ID: ::new (p) T2(
static_cast<const T2&
>(msg));
break;
566 case T3::ID: ::new (p) T3(
static_cast<const T3&
>(msg));
break;
567 case T4::ID: ::new (p) T4(
static_cast<const T4&
>(msg));
break;
568 case T5::ID: ::new (p) T5(
static_cast<const T5&
>(msg));
break;
569 case T6::ID: ::new (p) T6(
static_cast<const T6&
>(msg));
break;
570 case T7::ID: ::new (p) T7(
static_cast<const T7&
>(msg));
break;
571 case T8::ID: ::new (p) T8(
static_cast<const T8&
>(msg));
break;
572 case T9::ID: ::new (p) T9(
static_cast<const T9&
>(msg));
break;
573 case T10::ID: ::new (p) T10(
static_cast<const T10&
>(msg));
break;
574 case T11::ID: ::new (p) T11(
static_cast<const T11&
>(msg));
break;
575 case T12::ID: ::new (p) T12(
static_cast<const T12&
>(msg));
break;
576 case T13::ID: ::new (p) T13(
static_cast<const T13&
>(msg));
break;
577 case T14::ID: ::new (p) T14(
static_cast<const T14&
>(msg));
break;
578 case T15::ID: ::new (p) T15(
static_cast<const T15&
>(msg));
break;
579 case T16::ID: ::new (p) T16(
static_cast<const T16&
>(msg));
break;
584 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
588 const size_t id = msg.get_message_id();
593 case T1::ID: ::new (p) T1(
static_cast<T1&&
>(msg));
break;
594 case T2::ID: ::new (p) T2(
static_cast<T2&&
>(msg));
break;
595 case T3::ID: ::new (p) T3(
static_cast<T3&&
>(msg));
break;
596 case T4::ID: ::new (p) T4(
static_cast<T4&&
>(msg));
break;
597 case T5::ID: ::new (p) T5(
static_cast<T5&&
>(msg));
break;
598 case T6::ID: ::new (p) T6(
static_cast<T6&&
>(msg));
break;
599 case T7::ID: ::new (p) T7(
static_cast<T7&&
>(msg));
break;
600 case T8::ID: ::new (p) T8(
static_cast<T8&&
>(msg));
break;
601 case T9::ID: ::new (p) T9(
static_cast<T9&&
>(msg));
break;
602 case T10::ID: ::new (p) T10(
static_cast<T10&&
>(msg));
break;
603 case T11::ID: ::new (p) T11(
static_cast<T11&&
>(msg));
break;
604 case T12::ID: ::new (p) T12(
static_cast<T12&&
>(msg));
break;
605 case T13::ID: ::new (p) T13(
static_cast<T13&&
>(msg));
break;
606 case T14::ID: ::new (p) T14(
static_cast<T14&&
>(msg));
break;
607 case T15::ID: ::new (p) T15(
static_cast<T15&&
>(msg));
break;
608 case T16::ID: ::new (p) T16(
static_cast<T16&&
>(msg));
break;
621 template <
typename T1,
typename T2,
typename T3,
typename T4,
622 typename T5,
typename T6,
typename T7,
typename T8,
623 typename T9,
typename T10,
typename T11,
typename T12,
624 typename T13,
typename T14,
typename T15>
625 class message_packet<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, void>
643 add_new_message(msg);
655 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
662 add_new_message(etl::move(msg));
675 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) && !defined(ETL_COMPILER_GREEN_HILLS)
678 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 &&
680 !
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>
685 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 &&
687 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);
689 ETL_STATIC_ASSERT(Enabled,
"Message not in packet type list");
695 template <
typename TMessage>
696 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 &&
698 !
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)
702 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 &&
704 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);
706 ETL_STATIC_ASSERT(Enabled,
"Message not in packet type list");
714 : valid(other.is_valid())
718 add_new_message(other.get());
723 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
727 : valid(other.is_valid())
731 add_new_message(etl::move(other.get()));
740 delete_current_message();
741 valid = rhs.is_valid();
744 add_new_message(rhs.get());
750 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
754 delete_current_message();
755 valid = rhs.is_valid();
758 add_new_message(etl::move(rhs.get()));
768 delete_current_message();
784 bool is_valid()
const
792 return T1::ID ==
id || T2::ID ==
id || T3::ID ==
id || T4::ID ==
id ||
793 T5::ID ==
id || T6::ID ==
id || T7::ID ==
id || T8::ID ==
id ||
794 T9::ID ==
id || T10::ID ==
id || T11::ID ==
id || T12::ID ==
id ||
795 T13::ID ==
id || T14::ID ==
id || T15::ID == id;
801 return accepts(msg.get_message_id());
805 template <etl::message_
id_t Id>
806 static ETL_CONSTEXPR
bool accepts()
808 return T1::ID == Id || T2::ID == Id || T3::ID == Id || T4::ID == Id ||
809 T5::ID == Id || T6::ID == Id || T7::ID == Id || T8::ID == Id ||
810 T9::ID == Id || T10::ID == Id || T11::ID == Id || T12::ID == Id ||
811 T13::ID == Id || T14::ID == Id || T15::ID == Id;
815 template <
typename TMessage>
820 return T1::ID == TMessage::ID || T2::ID == TMessage::ID || T3::ID == TMessage::ID || T4::ID == TMessage::ID ||
821 T5::ID == TMessage::ID || T6::ID == TMessage::ID || T7::ID == TMessage::ID || T8::ID == TMessage::ID ||
822 T9::ID == TMessage::ID || T10::ID == TMessage::ID || T11::ID == TMessage::ID || T12::ID == TMessage::ID ||
823 T13::ID == TMessage::ID || T14::ID == TMessage::ID || T15::ID == TMessage::ID;
828 SIZE =
etl::largest<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>::size,
829 ALIGNMENT =
etl::largest<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>::alignment
836 void delete_current_message()
850 const size_t id = msg.get_message_id();
855 case T1::ID: ::new (p) T1(
static_cast<const T1&
>(msg));
break;
856 case T2::ID: ::new (p) T2(
static_cast<const T2&
>(msg));
break;
857 case T3::ID: ::new (p) T3(
static_cast<const T3&
>(msg));
break;
858 case T4::ID: ::new (p) T4(
static_cast<const T4&
>(msg));
break;
859 case T5::ID: ::new (p) T5(
static_cast<const T5&
>(msg));
break;
860 case T6::ID: ::new (p) T6(
static_cast<const T6&
>(msg));
break;
861 case T7::ID: ::new (p) T7(
static_cast<const T7&
>(msg));
break;
862 case T8::ID: ::new (p) T8(
static_cast<const T8&
>(msg));
break;
863 case T9::ID: ::new (p) T9(
static_cast<const T9&
>(msg));
break;
864 case T10::ID: ::new (p) T10(
static_cast<const T10&
>(msg));
break;
865 case T11::ID: ::new (p) T11(
static_cast<const T11&
>(msg));
break;
866 case T12::ID: ::new (p) T12(
static_cast<const T12&
>(msg));
break;
867 case T13::ID: ::new (p) T13(
static_cast<const T13&
>(msg));
break;
868 case T14::ID: ::new (p) T14(
static_cast<const T14&
>(msg));
break;
869 case T15::ID: ::new (p) T15(
static_cast<const T15&
>(msg));
break;
874 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
878 const size_t id = msg.get_message_id();
883 case T1::ID: ::new (p) T1(
static_cast<T1&&
>(msg));
break;
884 case T2::ID: ::new (p) T2(
static_cast<T2&&
>(msg));
break;
885 case T3::ID: ::new (p) T3(
static_cast<T3&&
>(msg));
break;
886 case T4::ID: ::new (p) T4(
static_cast<T4&&
>(msg));
break;
887 case T5::ID: ::new (p) T5(
static_cast<T5&&
>(msg));
break;
888 case T6::ID: ::new (p) T6(
static_cast<T6&&
>(msg));
break;
889 case T7::ID: ::new (p) T7(
static_cast<T7&&
>(msg));
break;
890 case T8::ID: ::new (p) T8(
static_cast<T8&&
>(msg));
break;
891 case T9::ID: ::new (p) T9(
static_cast<T9&&
>(msg));
break;
892 case T10::ID: ::new (p) T10(
static_cast<T10&&
>(msg));
break;
893 case T11::ID: ::new (p) T11(
static_cast<T11&&
>(msg));
break;
894 case T12::ID: ::new (p) T12(
static_cast<T12&&
>(msg));
break;
895 case T13::ID: ::new (p) T13(
static_cast<T13&&
>(msg));
break;
896 case T14::ID: ::new (p) T14(
static_cast<T14&&
>(msg));
break;
897 case T15::ID: ::new (p) T15(
static_cast<T15&&
>(msg));
break;
910 template <
typename T1,
typename T2,
typename T3,
typename T4,
911 typename T5,
typename T6,
typename T7,
typename T8,
912 typename T9,
typename T10,
typename T11,
typename T12,
913 typename T13,
typename T14>
914 class message_packet<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, void, void>
932 add_new_message(msg);
944 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
951 add_new_message(etl::move(msg));
964 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) && !defined(ETL_COMPILER_GREEN_HILLS)
967 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 &&
969 !
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>
974 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 &&
976 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);
978 ETL_STATIC_ASSERT(Enabled,
"Message not in packet type list");
984 template <
typename TMessage>
985 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 &&
987 !
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)
991 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 &&
993 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);
995 ETL_STATIC_ASSERT(Enabled,
"Message not in packet type list");
1003 : valid(other.is_valid())
1007 add_new_message(other.get());
1012 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
1016 : valid(other.is_valid())
1020 add_new_message(etl::move(other.get()));
1029 delete_current_message();
1030 valid = rhs.is_valid();
1033 add_new_message(rhs.get());
1039 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
1043 delete_current_message();
1044 valid = rhs.is_valid();
1047 add_new_message(etl::move(rhs.get()));
1057 delete_current_message();
1073 bool is_valid()
const
1081 return T1::ID ==
id || T2::ID ==
id || T3::ID ==
id || T4::ID ==
id ||
1082 T5::ID ==
id || T6::ID ==
id || T7::ID ==
id || T8::ID ==
id ||
1083 T9::ID ==
id || T10::ID ==
id || T11::ID ==
id || T12::ID ==
id ||
1084 T13::ID ==
id || T14::ID == id;
1090 return accepts(msg.get_message_id());
1094 template <etl::message_
id_t Id>
1095 static ETL_CONSTEXPR
bool accepts()
1097 return T1::ID == Id || T2::ID == Id || T3::ID == Id || T4::ID == Id ||
1098 T5::ID == Id || T6::ID == Id || T7::ID == Id || T8::ID == Id ||
1099 T9::ID == Id || T10::ID == Id || T11::ID == Id || T12::ID == Id ||
1100 T13::ID == Id || T14::ID == Id;
1104 template <
typename TMessage>
1105 static ETL_CONSTEXPR
1109 return T1::ID == TMessage::ID || T2::ID == TMessage::ID || T3::ID == TMessage::ID || T4::ID == TMessage::ID ||
1110 T5::ID == TMessage::ID || T6::ID == TMessage::ID || T7::ID == TMessage::ID || T8::ID == TMessage::ID ||
1111 T9::ID == TMessage::ID || T10::ID == TMessage::ID || T11::ID == TMessage::ID || T12::ID == TMessage::ID ||
1112 T13::ID == TMessage::ID || T14::ID == TMessage::ID;
1117 SIZE =
etl::largest<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>::size,
1118 ALIGNMENT =
etl::largest<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>::alignment
1125 void delete_current_message()
1139 const size_t id = msg.get_message_id();
1144 case T1::ID: ::new (p) T1(
static_cast<const T1&
>(msg));
break;
1145 case T2::ID: ::new (p) T2(
static_cast<const T2&
>(msg));
break;
1146 case T3::ID: ::new (p) T3(
static_cast<const T3&
>(msg));
break;
1147 case T4::ID: ::new (p) T4(
static_cast<const T4&
>(msg));
break;
1148 case T5::ID: ::new (p) T5(
static_cast<const T5&
>(msg));
break;
1149 case T6::ID: ::new (p) T6(
static_cast<const T6&
>(msg));
break;
1150 case T7::ID: ::new (p) T7(
static_cast<const T7&
>(msg));
break;
1151 case T8::ID: ::new (p) T8(
static_cast<const T8&
>(msg));
break;
1152 case T9::ID: ::new (p) T9(
static_cast<const T9&
>(msg));
break;
1153 case T10::ID: ::new (p) T10(
static_cast<const T10&
>(msg));
break;
1154 case T11::ID: ::new (p) T11(
static_cast<const T11&
>(msg));
break;
1155 case T12::ID: ::new (p) T12(
static_cast<const T12&
>(msg));
break;
1156 case T13::ID: ::new (p) T13(
static_cast<const T13&
>(msg));
break;
1157 case T14::ID: ::new (p) T14(
static_cast<const T14&
>(msg));
break;
1162 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
1166 const size_t id = msg.get_message_id();
1171 case T1::ID: ::new (p) T1(
static_cast<T1&&
>(msg));
break;
1172 case T2::ID: ::new (p) T2(
static_cast<T2&&
>(msg));
break;
1173 case T3::ID: ::new (p) T3(
static_cast<T3&&
>(msg));
break;
1174 case T4::ID: ::new (p) T4(
static_cast<T4&&
>(msg));
break;
1175 case T5::ID: ::new (p) T5(
static_cast<T5&&
>(msg));
break;
1176 case T6::ID: ::new (p) T6(
static_cast<T6&&
>(msg));
break;
1177 case T7::ID: ::new (p) T7(
static_cast<T7&&
>(msg));
break;
1178 case T8::ID: ::new (p) T8(
static_cast<T8&&
>(msg));
break;
1179 case T9::ID: ::new (p) T9(
static_cast<T9&&
>(msg));
break;
1180 case T10::ID: ::new (p) T10(
static_cast<T10&&
>(msg));
break;
1181 case T11::ID: ::new (p) T11(
static_cast<T11&&
>(msg));
break;
1182 case T12::ID: ::new (p) T12(
static_cast<T12&&
>(msg));
break;
1183 case T13::ID: ::new (p) T13(
static_cast<T13&&
>(msg));
break;
1184 case T14::ID: ::new (p) T14(
static_cast<T14&&
>(msg));
break;
1197 template <
typename T1,
typename T2,
typename T3,
typename T4,
1198 typename T5,
typename T6,
typename T7,
typename T8,
1199 typename T9,
typename T10,
typename T11,
typename T12,
1201 class message_packet<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, void, void, void>
1219 add_new_message(msg);
1231 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
1238 add_new_message(etl::move(msg));
1251 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) && !defined(ETL_COMPILER_GREEN_HILLS)
1254 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 &&
1256 !
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>
1261 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 &&
1263 etl::is_one_of<typename etl::remove_cvref<TMessage>::type,T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>::value);
1265 ETL_STATIC_ASSERT(Enabled,
"Message not in packet type list");
1271 template <
typename TMessage>
1272 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 &&
1274 !
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)
1278 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 &&
1280 etl::is_one_of<typename etl::remove_cvref<TMessage>::type,T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>::value);
1282 ETL_STATIC_ASSERT(Enabled,
"Message not in packet type list");
1290 : valid(other.is_valid())
1294 add_new_message(other.get());
1299 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
1303 : valid(other.is_valid())
1307 add_new_message(etl::move(other.get()));
1316 delete_current_message();
1317 valid = rhs.is_valid();
1320 add_new_message(rhs.get());
1326 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
1330 delete_current_message();
1331 valid = rhs.is_valid();
1334 add_new_message(etl::move(rhs.get()));
1344 delete_current_message();
1360 bool is_valid()
const
1368 return T1::ID ==
id || T2::ID ==
id || T3::ID ==
id || T4::ID ==
id ||
1369 T5::ID ==
id || T6::ID ==
id || T7::ID ==
id || T8::ID ==
id ||
1370 T9::ID ==
id || T10::ID ==
id || T11::ID ==
id || T12::ID ==
id ||
1377 return accepts(msg.get_message_id());
1381 template <etl::message_
id_t Id>
1382 static ETL_CONSTEXPR
bool accepts()
1384 return T1::ID == Id || T2::ID == Id || T3::ID == Id || T4::ID == Id ||
1385 T5::ID == Id || T6::ID == Id || T7::ID == Id || T8::ID == Id ||
1386 T9::ID == Id || T10::ID == Id || T11::ID == Id || T12::ID == Id ||
1391 template <
typename TMessage>
1392 static ETL_CONSTEXPR
1396 return T1::ID == TMessage::ID || T2::ID == TMessage::ID || T3::ID == TMessage::ID || T4::ID == TMessage::ID ||
1397 T5::ID == TMessage::ID || T6::ID == TMessage::ID || T7::ID == TMessage::ID || T8::ID == TMessage::ID ||
1398 T9::ID == TMessage::ID || T10::ID == TMessage::ID || T11::ID == TMessage::ID || T12::ID == TMessage::ID ||
1399 T13::ID == TMessage::ID;
1404 SIZE =
etl::largest<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>::size,
1405 ALIGNMENT =
etl::largest<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>::alignment
1412 void delete_current_message()
1426 const size_t id = msg.get_message_id();
1431 case T1::ID: ::new (p) T1(
static_cast<const T1&
>(msg));
break;
1432 case T2::ID: ::new (p) T2(
static_cast<const T2&
>(msg));
break;
1433 case T3::ID: ::new (p) T3(
static_cast<const T3&
>(msg));
break;
1434 case T4::ID: ::new (p) T4(
static_cast<const T4&
>(msg));
break;
1435 case T5::ID: ::new (p) T5(
static_cast<const T5&
>(msg));
break;
1436 case T6::ID: ::new (p) T6(
static_cast<const T6&
>(msg));
break;
1437 case T7::ID: ::new (p) T7(
static_cast<const T7&
>(msg));
break;
1438 case T8::ID: ::new (p) T8(
static_cast<const T8&
>(msg));
break;
1439 case T9::ID: ::new (p) T9(
static_cast<const T9&
>(msg));
break;
1440 case T10::ID: ::new (p) T10(
static_cast<const T10&
>(msg));
break;
1441 case T11::ID: ::new (p) T11(
static_cast<const T11&
>(msg));
break;
1442 case T12::ID: ::new (p) T12(
static_cast<const T12&
>(msg));
break;
1443 case T13::ID: ::new (p) T13(
static_cast<const T13&
>(msg));
break;
1448 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
1452 const size_t id = msg.get_message_id();
1457 case T1::ID: ::new (p) T1(
static_cast<T1&&
>(msg));
break;
1458 case T2::ID: ::new (p) T2(
static_cast<T2&&
>(msg));
break;
1459 case T3::ID: ::new (p) T3(
static_cast<T3&&
>(msg));
break;
1460 case T4::ID: ::new (p) T4(
static_cast<T4&&
>(msg));
break;
1461 case T5::ID: ::new (p) T5(
static_cast<T5&&
>(msg));
break;
1462 case T6::ID: ::new (p) T6(
static_cast<T6&&
>(msg));
break;
1463 case T7::ID: ::new (p) T7(
static_cast<T7&&
>(msg));
break;
1464 case T8::ID: ::new (p) T8(
static_cast<T8&&
>(msg));
break;
1465 case T9::ID: ::new (p) T9(
static_cast<T9&&
>(msg));
break;
1466 case T10::ID: ::new (p) T10(
static_cast<T10&&
>(msg));
break;
1467 case T11::ID: ::new (p) T11(
static_cast<T11&&
>(msg));
break;
1468 case T12::ID: ::new (p) T12(
static_cast<T12&&
>(msg));
break;
1469 case T13::ID: ::new (p) T13(
static_cast<T13&&
>(msg));
break;
1482 template <
typename T1,
typename T2,
typename T3,
typename T4,
1483 typename T5,
typename T6,
typename T7,
typename T8,
1484 typename T9,
typename T10,
typename T11,
typename T12>
1485 class message_packet<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, void, void, void, void>
1503 add_new_message(msg);
1515 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
1522 add_new_message(etl::move(msg));
1535 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) && !defined(ETL_COMPILER_GREEN_HILLS)
1538 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 &&
1540 !
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>
1545 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 &&
1547 etl::is_one_of<typename etl::remove_cvref<TMessage>::type,T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>::value);
1549 ETL_STATIC_ASSERT(Enabled,
"Message not in packet type list");
1555 template <
typename TMessage>
1556 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 &&
1558 !
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)
1562 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 &&
1564 etl::is_one_of<typename etl::remove_cvref<TMessage>::type,T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>::value);
1566 ETL_STATIC_ASSERT(Enabled,
"Message not in packet type list");
1574 : valid(other.is_valid())
1578 add_new_message(other.get());
1583 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
1587 : valid(other.is_valid())
1591 add_new_message(etl::move(other.get()));
1600 delete_current_message();
1601 valid = rhs.is_valid();
1604 add_new_message(rhs.get());
1610 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
1614 delete_current_message();
1615 valid = rhs.is_valid();
1618 add_new_message(etl::move(rhs.get()));
1628 delete_current_message();
1644 bool is_valid()
const
1652 return T1::ID ==
id || T2::ID ==
id || T3::ID ==
id || T4::ID ==
id ||
1653 T5::ID ==
id || T6::ID ==
id || T7::ID ==
id || T8::ID ==
id ||
1654 T9::ID ==
id || T10::ID ==
id || T11::ID ==
id || T12::ID == id;
1660 return accepts(msg.get_message_id());
1664 template <etl::message_
id_t Id>
1665 static ETL_CONSTEXPR
bool accepts()
1667 return T1::ID == Id || T2::ID == Id || T3::ID == Id || T4::ID == Id ||
1668 T5::ID == Id || T6::ID == Id || T7::ID == Id || T8::ID == Id ||
1669 T9::ID == Id || T10::ID == Id || T11::ID == Id || T12::ID == Id;
1673 template <
typename TMessage>
1674 static ETL_CONSTEXPR
1678 return T1::ID == TMessage::ID || T2::ID == TMessage::ID || T3::ID == TMessage::ID || T4::ID == TMessage::ID ||
1679 T5::ID == TMessage::ID || T6::ID == TMessage::ID || T7::ID == TMessage::ID || T8::ID == TMessage::ID ||
1680 T9::ID == TMessage::ID || T10::ID == TMessage::ID || T11::ID == TMessage::ID || T12::ID == TMessage::ID;
1685 SIZE =
etl::largest<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>::size,
1686 ALIGNMENT =
etl::largest<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>::alignment
1693 void delete_current_message()
1707 const size_t id = msg.get_message_id();
1712 case T1::ID: ::new (p) T1(
static_cast<const T1&
>(msg));
break;
1713 case T2::ID: ::new (p) T2(
static_cast<const T2&
>(msg));
break;
1714 case T3::ID: ::new (p) T3(
static_cast<const T3&
>(msg));
break;
1715 case T4::ID: ::new (p) T4(
static_cast<const T4&
>(msg));
break;
1716 case T5::ID: ::new (p) T5(
static_cast<const T5&
>(msg));
break;
1717 case T6::ID: ::new (p) T6(
static_cast<const T6&
>(msg));
break;
1718 case T7::ID: ::new (p) T7(
static_cast<const T7&
>(msg));
break;
1719 case T8::ID: ::new (p) T8(
static_cast<const T8&
>(msg));
break;
1720 case T9::ID: ::new (p) T9(
static_cast<const T9&
>(msg));
break;
1721 case T10::ID: ::new (p) T10(
static_cast<const T10&
>(msg));
break;
1722 case T11::ID: ::new (p) T11(
static_cast<const T11&
>(msg));
break;
1723 case T12::ID: ::new (p) T12(
static_cast<const T12&
>(msg));
break;
1728 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
1732 const size_t id = msg.get_message_id();
1737 case T1::ID: ::new (p) T1(
static_cast<T1&&
>(msg));
break;
1738 case T2::ID: ::new (p) T2(
static_cast<T2&&
>(msg));
break;
1739 case T3::ID: ::new (p) T3(
static_cast<T3&&
>(msg));
break;
1740 case T4::ID: ::new (p) T4(
static_cast<T4&&
>(msg));
break;
1741 case T5::ID: ::new (p) T5(
static_cast<T5&&
>(msg));
break;
1742 case T6::ID: ::new (p) T6(
static_cast<T6&&
>(msg));
break;
1743 case T7::ID: ::new (p) T7(
static_cast<T7&&
>(msg));
break;
1744 case T8::ID: ::new (p) T8(
static_cast<T8&&
>(msg));
break;
1745 case T9::ID: ::new (p) T9(
static_cast<T9&&
>(msg));
break;
1746 case T10::ID: ::new (p) T10(
static_cast<T10&&
>(msg));
break;
1747 case T11::ID: ::new (p) T11(
static_cast<T11&&
>(msg));
break;
1748 case T12::ID: ::new (p) T12(
static_cast<T12&&
>(msg));
break;
1761 template <
typename T1,
typename T2,
typename T3,
typename T4,
1762 typename T5,
typename T6,
typename T7,
typename T8,
1763 typename T9,
typename T10,
typename T11>
1764 class message_packet<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, void, void, void, void, void>
1782 add_new_message(msg);
1794 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
1801 add_new_message(etl::move(msg));
1814 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) && !defined(ETL_COMPILER_GREEN_HILLS)
1817 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 &&
1819 !
etl::is_one_of<typename etl::remove_cvref<TMessage>::type, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>::value,
int>::type>
1824 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 &&
1826 etl::is_one_of<typename etl::remove_cvref<TMessage>::type,T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>::value);
1828 ETL_STATIC_ASSERT(Enabled,
"Message not in packet type list");
1834 template <
typename TMessage>
1835 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 &&
1837 !
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)
1841 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 &&
1843 etl::is_one_of<typename etl::remove_cvref<TMessage>::type,T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>::value);
1845 ETL_STATIC_ASSERT(Enabled,
"Message not in packet type list");
1853 : valid(other.is_valid())
1857 add_new_message(other.get());
1862 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
1866 : valid(other.is_valid())
1870 add_new_message(etl::move(other.get()));
1879 delete_current_message();
1880 valid = rhs.is_valid();
1883 add_new_message(rhs.get());
1889 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
1893 delete_current_message();
1894 valid = rhs.is_valid();
1897 add_new_message(etl::move(rhs.get()));
1907 delete_current_message();
1923 bool is_valid()
const
1931 return T1::ID ==
id || T2::ID ==
id || T3::ID ==
id || T4::ID ==
id ||
1932 T5::ID ==
id || T6::ID ==
id || T7::ID ==
id || T8::ID ==
id ||
1933 T9::ID ==
id || T10::ID ==
id || T11::ID == id;
1939 return accepts(msg.get_message_id());
1943 template <etl::message_
id_t Id>
1944 static ETL_CONSTEXPR
bool accepts()
1946 return T1::ID == Id || T2::ID == Id || T3::ID == Id || T4::ID == Id ||
1947 T5::ID == Id || T6::ID == Id || T7::ID == Id || T8::ID == Id ||
1948 T9::ID == Id || T10::ID == Id || T11::ID == Id;
1952 template <
typename TMessage>
1953 static ETL_CONSTEXPR
1957 return T1::ID == TMessage::ID || T2::ID == TMessage::ID || T3::ID == TMessage::ID || T4::ID == TMessage::ID ||
1958 T5::ID == TMessage::ID || T6::ID == TMessage::ID || T7::ID == TMessage::ID || T8::ID == TMessage::ID ||
1959 T9::ID == TMessage::ID || T10::ID == TMessage::ID || T11::ID == TMessage::ID;
1964 SIZE =
etl::largest<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>::size,
1965 ALIGNMENT =
etl::largest<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>::alignment
1972 void delete_current_message()
1986 const size_t id = msg.get_message_id();
1991 case T1::ID: ::new (p) T1(
static_cast<const T1&
>(msg));
break;
1992 case T2::ID: ::new (p) T2(
static_cast<const T2&
>(msg));
break;
1993 case T3::ID: ::new (p) T3(
static_cast<const T3&
>(msg));
break;
1994 case T4::ID: ::new (p) T4(
static_cast<const T4&
>(msg));
break;
1995 case T5::ID: ::new (p) T5(
static_cast<const T5&
>(msg));
break;
1996 case T6::ID: ::new (p) T6(
static_cast<const T6&
>(msg));
break;
1997 case T7::ID: ::new (p) T7(
static_cast<const T7&
>(msg));
break;
1998 case T8::ID: ::new (p) T8(
static_cast<const T8&
>(msg));
break;
1999 case T9::ID: ::new (p) T9(
static_cast<const T9&
>(msg));
break;
2000 case T10::ID: ::new (p) T10(
static_cast<const T10&
>(msg));
break;
2001 case T11::ID: ::new (p) T11(
static_cast<const T11&
>(msg));
break;
2006 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
2010 const size_t id = msg.get_message_id();
2015 case T1::ID: ::new (p) T1(
static_cast<T1&&
>(msg));
break;
2016 case T2::ID: ::new (p) T2(
static_cast<T2&&
>(msg));
break;
2017 case T3::ID: ::new (p) T3(
static_cast<T3&&
>(msg));
break;
2018 case T4::ID: ::new (p) T4(
static_cast<T4&&
>(msg));
break;
2019 case T5::ID: ::new (p) T5(
static_cast<T5&&
>(msg));
break;
2020 case T6::ID: ::new (p) T6(
static_cast<T6&&
>(msg));
break;
2021 case T7::ID: ::new (p) T7(
static_cast<T7&&
>(msg));
break;
2022 case T8::ID: ::new (p) T8(
static_cast<T8&&
>(msg));
break;
2023 case T9::ID: ::new (p) T9(
static_cast<T9&&
>(msg));
break;
2024 case T10::ID: ::new (p) T10(
static_cast<T10&&
>(msg));
break;
2025 case T11::ID: ::new (p) T11(
static_cast<T11&&
>(msg));
break;
2038 template <
typename T1,
typename T2,
typename T3,
typename T4,
2039 typename T5,
typename T6,
typename T7,
typename T8,
2040 typename T9,
typename T10>
2041 class message_packet<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, void, void, void, void, void, void>
2059 add_new_message(msg);
2071 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
2078 add_new_message(etl::move(msg));
2091 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) && !defined(ETL_COMPILER_GREEN_HILLS)
2094 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 &&
2096 !
etl::is_one_of<typename etl::remove_cvref<TMessage>::type, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>::value,
int>::type>
2101 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 &&
2103 etl::is_one_of<typename etl::remove_cvref<TMessage>::type,T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>::value);
2105 ETL_STATIC_ASSERT(Enabled,
"Message not in packet type list");
2111 template <
typename TMessage>
2112 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 &&
2114 !
etl::is_one_of<
typename etl::remove_cvref<TMessage>::type, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>::value,
int>::type = 0)
2118 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 &&
2120 etl::is_one_of<typename etl::remove_cvref<TMessage>::type,T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>::value);
2122 ETL_STATIC_ASSERT(Enabled,
"Message not in packet type list");
2130 : valid(other.is_valid())
2134 add_new_message(other.get());
2139 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
2143 : valid(other.is_valid())
2147 add_new_message(etl::move(other.get()));
2156 delete_current_message();
2157 valid = rhs.is_valid();
2160 add_new_message(rhs.get());
2166 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
2170 delete_current_message();
2171 valid = rhs.is_valid();
2174 add_new_message(etl::move(rhs.get()));
2184 delete_current_message();
2200 bool is_valid()
const
2208 return T1::ID ==
id || T2::ID ==
id || T3::ID ==
id || T4::ID ==
id ||
2209 T5::ID ==
id || T6::ID ==
id || T7::ID ==
id || T8::ID ==
id ||
2210 T9::ID ==
id || T10::ID == id;
2216 return accepts(msg.get_message_id());
2220 template <etl::message_
id_t Id>
2221 static ETL_CONSTEXPR
bool accepts()
2223 return T1::ID == Id || T2::ID == Id || T3::ID == Id || T4::ID == Id ||
2224 T5::ID == Id || T6::ID == Id || T7::ID == Id || T8::ID == Id ||
2225 T9::ID == Id || T10::ID == Id;
2229 template <
typename TMessage>
2230 static ETL_CONSTEXPR
2234 return T1::ID == TMessage::ID || T2::ID == TMessage::ID || T3::ID == TMessage::ID || T4::ID == TMessage::ID ||
2235 T5::ID == TMessage::ID || T6::ID == TMessage::ID || T7::ID == TMessage::ID || T8::ID == TMessage::ID ||
2236 T9::ID == TMessage::ID || T10::ID == TMessage::ID;
2241 SIZE =
etl::largest<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>::size,
2249 void delete_current_message()
2263 const size_t id = msg.get_message_id();
2268 case T1::ID: ::new (p) T1(
static_cast<const T1&
>(msg));
break;
2269 case T2::ID: ::new (p) T2(
static_cast<const T2&
>(msg));
break;
2270 case T3::ID: ::new (p) T3(
static_cast<const T3&
>(msg));
break;
2271 case T4::ID: ::new (p) T4(
static_cast<const T4&
>(msg));
break;
2272 case T5::ID: ::new (p) T5(
static_cast<const T5&
>(msg));
break;
2273 case T6::ID: ::new (p) T6(
static_cast<const T6&
>(msg));
break;
2274 case T7::ID: ::new (p) T7(
static_cast<const T7&
>(msg));
break;
2275 case T8::ID: ::new (p) T8(
static_cast<const T8&
>(msg));
break;
2276 case T9::ID: ::new (p) T9(
static_cast<const T9&
>(msg));
break;
2277 case T10::ID: ::new (p) T10(
static_cast<const T10&
>(msg));
break;
2282 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
2286 const size_t id = msg.get_message_id();
2291 case T1::ID: ::new (p) T1(
static_cast<T1&&
>(msg));
break;
2292 case T2::ID: ::new (p) T2(
static_cast<T2&&
>(msg));
break;
2293 case T3::ID: ::new (p) T3(
static_cast<T3&&
>(msg));
break;
2294 case T4::ID: ::new (p) T4(
static_cast<T4&&
>(msg));
break;
2295 case T5::ID: ::new (p) T5(
static_cast<T5&&
>(msg));
break;
2296 case T6::ID: ::new (p) T6(
static_cast<T6&&
>(msg));
break;
2297 case T7::ID: ::new (p) T7(
static_cast<T7&&
>(msg));
break;
2298 case T8::ID: ::new (p) T8(
static_cast<T8&&
>(msg));
break;
2299 case T9::ID: ::new (p) T9(
static_cast<T9&&
>(msg));
break;
2300 case T10::ID: ::new (p) T10(
static_cast<T10&&
>(msg));
break;
2313 template <
typename T1,
typename T2,
typename T3,
typename T4,
2314 typename T5,
typename T6,
typename T7,
typename T8,
2316 class message_packet<T1, T2, T3, T4, T5, T6, T7, T8, T9, void, void, void, void, void, void, void>
2334 add_new_message(msg);
2346 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
2353 add_new_message(etl::move(msg));
2366 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) && !defined(ETL_COMPILER_GREEN_HILLS)
2369 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 &&
2371 !
etl::is_one_of<typename etl::remove_cvref<TMessage>::type, T1, T2, T3, T4, T5, T6, T7, T8, T9>::value,
int>::type>
2380 ETL_STATIC_ASSERT(Enabled,
"Message not in packet type list");
2386 template <
typename TMessage>
2387 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 &&
2389 !
etl::is_one_of<
typename etl::remove_cvref<TMessage>::type, T1, T2, T3, T4, T5, T6, T7, T8, T9>::value,
int>::type = 0)
2397 ETL_STATIC_ASSERT(Enabled,
"Message not in packet type list");
2405 : valid(other.is_valid())
2409 add_new_message(other.get());
2414 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
2418 : valid(other.is_valid())
2422 add_new_message(etl::move(other.get()));
2431 delete_current_message();
2432 valid = rhs.is_valid();
2435 add_new_message(rhs.get());
2441 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
2445 delete_current_message();
2446 valid = rhs.is_valid();
2449 add_new_message(etl::move(rhs.get()));
2459 delete_current_message();
2475 bool is_valid()
const
2483 return T1::ID ==
id || T2::ID ==
id || T3::ID ==
id || T4::ID ==
id ||
2484 T5::ID ==
id || T6::ID ==
id || T7::ID ==
id || T8::ID ==
id ||
2491 return accepts(msg.get_message_id());
2495 template <etl::message_
id_t Id>
2496 static ETL_CONSTEXPR
bool accepts()
2498 return T1::ID == Id || T2::ID == Id || T3::ID == Id || T4::ID == Id ||
2499 T5::ID == Id || T6::ID == Id || T7::ID == Id || T8::ID == Id ||
2504 template <
typename TMessage>
2505 static ETL_CONSTEXPR
2509 return T1::ID == TMessage::ID || T2::ID == TMessage::ID || T3::ID == TMessage::ID || T4::ID == TMessage::ID ||
2510 T5::ID == TMessage::ID || T6::ID == TMessage::ID || T7::ID == TMessage::ID || T8::ID == TMessage::ID ||
2511 T9::ID == TMessage::ID;
2524 void delete_current_message()
2538 const size_t id = msg.get_message_id();
2543 case T1::ID: ::new (p) T1(
static_cast<const T1&
>(msg));
break;
2544 case T2::ID: ::new (p) T2(
static_cast<const T2&
>(msg));
break;
2545 case T3::ID: ::new (p) T3(
static_cast<const T3&
>(msg));
break;
2546 case T4::ID: ::new (p) T4(
static_cast<const T4&
>(msg));
break;
2547 case T5::ID: ::new (p) T5(
static_cast<const T5&
>(msg));
break;
2548 case T6::ID: ::new (p) T6(
static_cast<const T6&
>(msg));
break;
2549 case T7::ID: ::new (p) T7(
static_cast<const T7&
>(msg));
break;
2550 case T8::ID: ::new (p) T8(
static_cast<const T8&
>(msg));
break;
2551 case T9::ID: ::new (p) T9(
static_cast<const T9&
>(msg));
break;
2556 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
2560 const size_t id = msg.get_message_id();
2565 case T1::ID: ::new (p) T1(
static_cast<T1&&
>(msg));
break;
2566 case T2::ID: ::new (p) T2(
static_cast<T2&&
>(msg));
break;
2567 case T3::ID: ::new (p) T3(
static_cast<T3&&
>(msg));
break;
2568 case T4::ID: ::new (p) T4(
static_cast<T4&&
>(msg));
break;
2569 case T5::ID: ::new (p) T5(
static_cast<T5&&
>(msg));
break;
2570 case T6::ID: ::new (p) T6(
static_cast<T6&&
>(msg));
break;
2571 case T7::ID: ::new (p) T7(
static_cast<T7&&
>(msg));
break;
2572 case T8::ID: ::new (p) T8(
static_cast<T8&&
>(msg));
break;
2573 case T9::ID: ::new (p) T9(
static_cast<T9&&
>(msg));
break;
2586 template <
typename T1,
typename T2,
typename T3,
typename T4,
2587 typename T5,
typename T6,
typename T7,
typename T8>
2588 class message_packet<T1, T2, T3, T4, T5, T6, T7, T8, void, void, void, void, void, void, void, void>
2606 add_new_message(msg);
2618 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
2625 add_new_message(etl::move(msg));
2638 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) && !defined(ETL_COMPILER_GREEN_HILLS)
2652 ETL_STATIC_ASSERT(Enabled,
"Message not in packet type list");
2658 template <
typename TMessage>
2661 !
etl::is_one_of<
typename etl::remove_cvref<TMessage>::type, T1, T2, T3, T4, T5, T6, T7, T8>::value,
int>::type = 0)
2669 ETL_STATIC_ASSERT(Enabled,
"Message not in packet type list");
2677 : valid(other.is_valid())
2681 add_new_message(other.get());
2686 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
2690 : valid(other.is_valid())
2694 add_new_message(etl::move(other.get()));
2703 delete_current_message();
2704 valid = rhs.is_valid();
2707 add_new_message(rhs.get());
2713 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
2717 delete_current_message();
2718 valid = rhs.is_valid();
2721 add_new_message(etl::move(rhs.get()));
2731 delete_current_message();
2747 bool is_valid()
const
2755 return T1::ID ==
id || T2::ID ==
id || T3::ID ==
id || T4::ID ==
id ||
2756 T5::ID ==
id || T6::ID ==
id || T7::ID ==
id || T8::ID == id;
2762 return accepts(msg.get_message_id());
2766 template <etl::message_
id_t Id>
2767 static ETL_CONSTEXPR
bool accepts()
2769 return T1::ID == Id || T2::ID == Id || T3::ID == Id || T4::ID == Id ||
2770 T5::ID == Id || T6::ID == Id || T7::ID == Id || T8::ID == Id;
2774 template <
typename TMessage>
2775 static ETL_CONSTEXPR
2779 return T1::ID == TMessage::ID || T2::ID == TMessage::ID || T3::ID == TMessage::ID || T4::ID == TMessage::ID ||
2780 T5::ID == TMessage::ID || T6::ID == TMessage::ID || T7::ID == TMessage::ID || T8::ID == TMessage::ID;
2793 void delete_current_message()
2807 const size_t id = msg.get_message_id();
2812 case T1::ID: ::new (p) T1(
static_cast<const T1&
>(msg));
break;
2813 case T2::ID: ::new (p) T2(
static_cast<const T2&
>(msg));
break;
2814 case T3::ID: ::new (p) T3(
static_cast<const T3&
>(msg));
break;
2815 case T4::ID: ::new (p) T4(
static_cast<const T4&
>(msg));
break;
2816 case T5::ID: ::new (p) T5(
static_cast<const T5&
>(msg));
break;
2817 case T6::ID: ::new (p) T6(
static_cast<const T6&
>(msg));
break;
2818 case T7::ID: ::new (p) T7(
static_cast<const T7&
>(msg));
break;
2819 case T8::ID: ::new (p) T8(
static_cast<const T8&
>(msg));
break;
2824 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
2828 const size_t id = msg.get_message_id();
2833 case T1::ID: ::new (p) T1(
static_cast<T1&&
>(msg));
break;
2834 case T2::ID: ::new (p) T2(
static_cast<T2&&
>(msg));
break;
2835 case T3::ID: ::new (p) T3(
static_cast<T3&&
>(msg));
break;
2836 case T4::ID: ::new (p) T4(
static_cast<T4&&
>(msg));
break;
2837 case T5::ID: ::new (p) T5(
static_cast<T5&&
>(msg));
break;
2838 case T6::ID: ::new (p) T6(
static_cast<T6&&
>(msg));
break;
2839 case T7::ID: ::new (p) T7(
static_cast<T7&&
>(msg));
break;
2840 case T8::ID: ::new (p) T8(
static_cast<T8&&
>(msg));
break;
2853 template <
typename T1,
typename T2,
typename T3,
typename T4,
2854 typename T5,
typename T6,
typename T7>
2855 class message_packet<T1, T2, T3, T4, T5, T6, T7, void, void, void, void, void, void, void, void, void>
2873 add_new_message(msg);
2885 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
2892 add_new_message(etl::move(msg));
2905 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) && !defined(ETL_COMPILER_GREEN_HILLS)
2919 ETL_STATIC_ASSERT(Enabled,
"Message not in packet type list");
2925 template <
typename TMessage>
2928 !
etl::is_one_of<
typename etl::remove_cvref<TMessage>::type, T1, T2, T3, T4, T5, T6, T7>::value,
int>::type = 0)
2936 ETL_STATIC_ASSERT(Enabled,
"Message not in packet type list");
2944 : valid(other.is_valid())
2948 add_new_message(other.get());
2953 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
2957 : valid(other.is_valid())
2961 add_new_message(etl::move(other.get()));
2970 delete_current_message();
2971 valid = rhs.is_valid();
2974 add_new_message(rhs.get());
2980 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
2984 delete_current_message();
2985 valid = rhs.is_valid();
2988 add_new_message(etl::move(rhs.get()));
2998 delete_current_message();
3014 bool is_valid()
const
3022 return T1::ID ==
id || T2::ID ==
id || T3::ID ==
id || T4::ID ==
id ||
3023 T5::ID ==
id || T6::ID ==
id || T7::ID == id;
3029 return accepts(msg.get_message_id());
3033 template <etl::message_
id_t Id>
3034 static ETL_CONSTEXPR
bool accepts()
3036 return T1::ID == Id || T2::ID == Id || T3::ID == Id || T4::ID == Id ||
3037 T5::ID == Id || T6::ID == Id || T7::ID == Id;
3041 template <
typename TMessage>
3042 static ETL_CONSTEXPR
3046 return T1::ID == TMessage::ID || T2::ID == TMessage::ID || T3::ID == TMessage::ID || T4::ID == TMessage::ID ||
3047 T5::ID == TMessage::ID || T6::ID == TMessage::ID || T7::ID == TMessage::ID;
3060 void delete_current_message()
3074 const size_t id = msg.get_message_id();
3079 case T1::ID: ::new (p) T1(
static_cast<const T1&
>(msg));
break;
3080 case T2::ID: ::new (p) T2(
static_cast<const T2&
>(msg));
break;
3081 case T3::ID: ::new (p) T3(
static_cast<const T3&
>(msg));
break;
3082 case T4::ID: ::new (p) T4(
static_cast<const T4&
>(msg));
break;
3083 case T5::ID: ::new (p) T5(
static_cast<const T5&
>(msg));
break;
3084 case T6::ID: ::new (p) T6(
static_cast<const T6&
>(msg));
break;
3085 case T7::ID: ::new (p) T7(
static_cast<const T7&
>(msg));
break;
3090 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
3094 const size_t id = msg.get_message_id();
3099 case T1::ID: ::new (p) T1(
static_cast<T1&&
>(msg));
break;
3100 case T2::ID: ::new (p) T2(
static_cast<T2&&
>(msg));
break;
3101 case T3::ID: ::new (p) T3(
static_cast<T3&&
>(msg));
break;
3102 case T4::ID: ::new (p) T4(
static_cast<T4&&
>(msg));
break;
3103 case T5::ID: ::new (p) T5(
static_cast<T5&&
>(msg));
break;
3104 case T6::ID: ::new (p) T6(
static_cast<T6&&
>(msg));
break;
3105 case T7::ID: ::new (p) T7(
static_cast<T7&&
>(msg));
break;
3118 template <
typename T1,
typename T2,
typename T3,
typename T4,
3119 typename T5,
typename T6>
3120 class message_packet<T1, T2, T3, T4, T5, T6, void, void, void, void, void, void, void, void, void, void>
3138 add_new_message(msg);
3150 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
3157 add_new_message(etl::move(msg));
3170 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) && !defined(ETL_COMPILER_GREEN_HILLS)
3184 ETL_STATIC_ASSERT(Enabled,
"Message not in packet type list");
3190 template <
typename TMessage>
3193 !
etl::is_one_of<
typename etl::remove_cvref<TMessage>::type, T1, T2, T3, T4, T5, T6>::value,
int>::type = 0)
3201 ETL_STATIC_ASSERT(Enabled,
"Message not in packet type list");
3209 : valid(other.is_valid())
3213 add_new_message(other.get());
3218 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
3222 : valid(other.is_valid())
3226 add_new_message(etl::move(other.get()));
3235 delete_current_message();
3236 valid = rhs.is_valid();
3239 add_new_message(rhs.get());
3245 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
3249 delete_current_message();
3250 valid = rhs.is_valid();
3253 add_new_message(etl::move(rhs.get()));
3263 delete_current_message();
3279 bool is_valid()
const
3287 return T1::ID ==
id || T2::ID ==
id || T3::ID ==
id || T4::ID ==
id ||
3288 T5::ID ==
id || T6::ID == id;
3294 return accepts(msg.get_message_id());
3298 template <etl::message_
id_t Id>
3299 static ETL_CONSTEXPR
bool accepts()
3301 return T1::ID == Id || T2::ID == Id || T3::ID == Id || T4::ID == Id ||
3302 T5::ID == Id || T6::ID == Id;
3306 template <
typename TMessage>
3307 static ETL_CONSTEXPR
3311 return T1::ID == TMessage::ID || T2::ID == TMessage::ID || T3::ID == TMessage::ID || T4::ID == TMessage::ID ||
3312 T5::ID == TMessage::ID || T6::ID == TMessage::ID;
3325 void delete_current_message()
3339 const size_t id = msg.get_message_id();
3344 case T1::ID: ::new (p) T1(
static_cast<const T1&
>(msg));
break;
3345 case T2::ID: ::new (p) T2(
static_cast<const T2&
>(msg));
break;
3346 case T3::ID: ::new (p) T3(
static_cast<const T3&
>(msg));
break;
3347 case T4::ID: ::new (p) T4(
static_cast<const T4&
>(msg));
break;
3348 case T5::ID: ::new (p) T5(
static_cast<const T5&
>(msg));
break;
3349 case T6::ID: ::new (p) T6(
static_cast<const T6&
>(msg));
break;
3354 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
3358 const size_t id = msg.get_message_id();
3363 case T1::ID: ::new (p) T1(
static_cast<T1&&
>(msg));
break;
3364 case T2::ID: ::new (p) T2(
static_cast<T2&&
>(msg));
break;
3365 case T3::ID: ::new (p) T3(
static_cast<T3&&
>(msg));
break;
3366 case T4::ID: ::new (p) T4(
static_cast<T4&&
>(msg));
break;
3367 case T5::ID: ::new (p) T5(
static_cast<T5&&
>(msg));
break;
3368 case T6::ID: ::new (p) T6(
static_cast<T6&&
>(msg));
break;
3381 template <
typename T1,
typename T2,
typename T3,
typename T4,
3383 class message_packet<T1, T2, T3, T4, T5, void, void, void, void, void, void, void, void, void, void, void>
3401 add_new_message(msg);
3413 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
3420 add_new_message(etl::move(msg));
3433 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) && !defined(ETL_COMPILER_GREEN_HILLS)
3447 ETL_STATIC_ASSERT(Enabled,
"Message not in packet type list");
3453 template <
typename TMessage>
3456 !
etl::is_one_of<
typename etl::remove_cvref<TMessage>::type, T1, T2, T3, T4, T5>::value,
int>::type = 0)
3464 ETL_STATIC_ASSERT(Enabled,
"Message not in packet type list");
3472 : valid(other.is_valid())
3476 add_new_message(other.get());
3481 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
3485 : valid(other.is_valid())
3489 add_new_message(etl::move(other.get()));
3498 delete_current_message();
3499 valid = rhs.is_valid();
3502 add_new_message(rhs.get());
3508 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
3512 delete_current_message();
3513 valid = rhs.is_valid();
3516 add_new_message(etl::move(rhs.get()));
3526 delete_current_message();
3542 bool is_valid()
const
3550 return T1::ID ==
id || T2::ID ==
id || T3::ID ==
id || T4::ID ==
id ||
3557 return accepts(msg.get_message_id());
3561 template <etl::message_
id_t Id>
3562 static ETL_CONSTEXPR
bool accepts()
3564 return T1::ID == Id || T2::ID == Id || T3::ID == Id || T4::ID == Id ||
3569 template <
typename TMessage>
3570 static ETL_CONSTEXPR
3574 return T1::ID == TMessage::ID || T2::ID == TMessage::ID || T3::ID == TMessage::ID || T4::ID == TMessage::ID ||
3575 T5::ID == TMessage::ID;
3588 void delete_current_message()
3602 const size_t id = msg.get_message_id();
3607 case T1::ID: ::new (p) T1(
static_cast<const T1&
>(msg));
break;
3608 case T2::ID: ::new (p) T2(
static_cast<const T2&
>(msg));
break;
3609 case T3::ID: ::new (p) T3(
static_cast<const T3&
>(msg));
break;
3610 case T4::ID: ::new (p) T4(
static_cast<const T4&
>(msg));
break;
3611 case T5::ID: ::new (p) T5(
static_cast<const T5&
>(msg));
break;
3616 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
3620 const size_t id = msg.get_message_id();
3625 case T1::ID: ::new (p) T1(
static_cast<T1&&
>(msg));
break;
3626 case T2::ID: ::new (p) T2(
static_cast<T2&&
>(msg));
break;
3627 case T3::ID: ::new (p) T3(
static_cast<T3&&
>(msg));
break;
3628 case T4::ID: ::new (p) T4(
static_cast<T4&&
>(msg));
break;
3629 case T5::ID: ::new (p) T5(
static_cast<T5&&
>(msg));
break;
3642 template <
typename T1,
typename T2,
typename T3,
typename T4>
3643 class message_packet<T1, T2, T3, T4, void, void, void, void, void, void, void, void, void, void, void, void>
3661 add_new_message(msg);
3673 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
3680 add_new_message(etl::move(msg));
3693 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) && !defined(ETL_COMPILER_GREEN_HILLS)
3707 ETL_STATIC_ASSERT(Enabled,
"Message not in packet type list");
3713 template <
typename TMessage>
3716 !
etl::is_one_of<
typename etl::remove_cvref<TMessage>::type, T1, T2, T3, T4>::value,
int>::type = 0)
3724 ETL_STATIC_ASSERT(Enabled,
"Message not in packet type list");
3732 : valid(other.is_valid())
3736 add_new_message(other.get());
3741 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
3745 : valid(other.is_valid())
3749 add_new_message(etl::move(other.get()));
3758 delete_current_message();
3759 valid = rhs.is_valid();
3762 add_new_message(rhs.get());
3768 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
3772 delete_current_message();
3773 valid = rhs.is_valid();
3776 add_new_message(etl::move(rhs.get()));
3786 delete_current_message();
3802 bool is_valid()
const
3810 return T1::ID ==
id || T2::ID ==
id || T3::ID ==
id || T4::ID == id;
3816 return accepts(msg.get_message_id());
3820 template <etl::message_
id_t Id>
3821 static ETL_CONSTEXPR
bool accepts()
3823 return T1::ID == Id || T2::ID == Id || T3::ID == Id || T4::ID == Id;
3827 template <
typename TMessage>
3828 static ETL_CONSTEXPR
3832 return T1::ID == TMessage::ID || T2::ID == TMessage::ID || T3::ID == TMessage::ID || T4::ID == TMessage::ID;
3845 void delete_current_message()
3859 const size_t id = msg.get_message_id();
3864 case T1::ID: ::new (p) T1(
static_cast<const T1&
>(msg));
break;
3865 case T2::ID: ::new (p) T2(
static_cast<const T2&
>(msg));
break;
3866 case T3::ID: ::new (p) T3(
static_cast<const T3&
>(msg));
break;
3867 case T4::ID: ::new (p) T4(
static_cast<const T4&
>(msg));
break;
3872 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
3876 const size_t id = msg.get_message_id();
3881 case T1::ID: ::new (p) T1(
static_cast<T1&&
>(msg));
break;
3882 case T2::ID: ::new (p) T2(
static_cast<T2&&
>(msg));
break;
3883 case T3::ID: ::new (p) T3(
static_cast<T3&&
>(msg));
break;
3884 case T4::ID: ::new (p) T4(
static_cast<T4&&
>(msg));
break;
3897 template <
typename T1,
typename T2,
typename T3>
3898 class message_packet<T1, T2, T3, void, void, void, void, void, void, void, void, void, void, void, void, void>
3916 add_new_message(msg);
3928 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
3935 add_new_message(etl::move(msg));
3948 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) && !defined(ETL_COMPILER_GREEN_HILLS)
3951 template <typename TMessage, typename = typename etl::enable_if<!etl::is_same<typename etl::remove_cvref<TMessage>::type,
etl::message_packet<T1, T2, T3> >::value &&
3962 ETL_STATIC_ASSERT(Enabled,
"Message not in packet type list");
3968 template <
typename TMessage>
3971 !
etl::is_one_of<
typename etl::remove_cvref<TMessage>::type, T1, T2, T3>::value,
int>::type = 0)
3979 ETL_STATIC_ASSERT(Enabled,
"Message not in packet type list");
3987 : valid(other.is_valid())
3991 add_new_message(other.get());
3996 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
4000 : valid(other.is_valid())
4004 add_new_message(etl::move(other.get()));
4013 delete_current_message();
4014 valid = rhs.is_valid();
4017 add_new_message(rhs.get());
4023 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
4027 delete_current_message();
4028 valid = rhs.is_valid();
4031 add_new_message(etl::move(rhs.get()));
4041 delete_current_message();
4057 bool is_valid()
const
4065 return T1::ID ==
id || T2::ID ==
id || T3::ID == id;
4071 return accepts(msg.get_message_id());
4075 template <etl::message_
id_t Id>
4076 static ETL_CONSTEXPR
bool accepts()
4078 return T1::ID == Id || T2::ID == Id || T3::ID == Id;
4082 template <
typename TMessage>
4083 static ETL_CONSTEXPR
4087 return T1::ID == TMessage::ID || T2::ID == TMessage::ID || T3::ID == TMessage::ID;
4100 void delete_current_message()
4114 const size_t id = msg.get_message_id();
4119 case T1::ID: ::new (p) T1(
static_cast<const T1&
>(msg));
break;
4120 case T2::ID: ::new (p) T2(
static_cast<const T2&
>(msg));
break;
4121 case T3::ID: ::new (p) T3(
static_cast<const T3&
>(msg));
break;
4126 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
4130 const size_t id = msg.get_message_id();
4135 case T1::ID: ::new (p) T1(
static_cast<T1&&
>(msg));
break;
4136 case T2::ID: ::new (p) T2(
static_cast<T2&&
>(msg));
break;
4137 case T3::ID: ::new (p) T3(
static_cast<T3&&
>(msg));
break;
4150 template <
typename T1,
typename T2>
4151 class message_packet<T1, T2, void, void, void, void, void, void, void, void, void, void, void, void, void, void>
4169 add_new_message(msg);
4181 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
4188 add_new_message(etl::move(msg));
4201 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) && !defined(ETL_COMPILER_GREEN_HILLS)
4204 template <typename TMessage, typename = typename etl::enable_if<!etl::is_same<typename etl::remove_cvref<TMessage>::type,
etl::message_packet<T1, T2> >::value &&
4215 ETL_STATIC_ASSERT(Enabled,
"Message not in packet type list");
4221 template <
typename TMessage>
4224 !
etl::is_one_of<
typename etl::remove_cvref<TMessage>::type, T1, T2>::value,
int>::type = 0)
4232 ETL_STATIC_ASSERT(Enabled,
"Message not in packet type list");
4240 : valid(other.is_valid())
4244 add_new_message(other.get());
4249 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
4253 : valid(other.is_valid())
4257 add_new_message(etl::move(other.get()));
4266 delete_current_message();
4267 valid = rhs.is_valid();
4270 add_new_message(rhs.get());
4276 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
4280 delete_current_message();
4281 valid = rhs.is_valid();
4284 add_new_message(etl::move(rhs.get()));
4294 delete_current_message();
4310 bool is_valid()
const
4318 return T1::ID ==
id || T2::ID == id;
4324 return accepts(msg.get_message_id());
4328 template <etl::message_
id_t Id>
4329 static ETL_CONSTEXPR
bool accepts()
4331 return T1::ID == Id || T2::ID == Id;
4335 template <
typename TMessage>
4336 static ETL_CONSTEXPR
4340 return T1::ID == TMessage::ID || T2::ID == TMessage::ID;
4353 void delete_current_message()
4367 const size_t id = msg.get_message_id();
4372 case T1::ID: ::new (p) T1(
static_cast<const T1&
>(msg));
break;
4373 case T2::ID: ::new (p) T2(
static_cast<const T2&
>(msg));
break;
4378 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
4382 const size_t id = msg.get_message_id();
4387 case T1::ID: ::new (p) T1(
static_cast<T1&&
>(msg));
break;
4388 case T2::ID: ::new (p) T2(
static_cast<T2&&
>(msg));
break;
4401 template <
typename T1>
4402 class message_packet<T1, void, void, void, void, void, void, void, void, void, void, void, void, void, void, void>
4420 add_new_message(msg);
4432 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
4439 add_new_message(etl::move(msg));
4452 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) && !defined(ETL_COMPILER_GREEN_HILLS)
4455 template <typename TMessage, typename = typename etl::enable_if<!etl::is_same<typename etl::remove_cvref<TMessage>::type,
etl::message_packet<T1> >::value &&
4466 ETL_STATIC_ASSERT(Enabled,
"Message not in packet type list");
4472 template <
typename TMessage>
4475 !
etl::is_one_of<
typename etl::remove_cvref<TMessage>::type, T1>::value,
int>::type = 0)
4483 ETL_STATIC_ASSERT(Enabled,
"Message not in packet type list");
4491 : valid(other.is_valid())
4495 add_new_message(other.get());
4500 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
4504 : valid(other.is_valid())
4508 add_new_message(etl::move(other.get()));
4517 delete_current_message();
4518 valid = rhs.is_valid();
4521 add_new_message(rhs.get());
4527 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
4531 delete_current_message();
4532 valid = rhs.is_valid();
4535 add_new_message(etl::move(rhs.get()));
4545 delete_current_message();
4561 bool is_valid()
const
4569 return T1::ID == id;
4575 return accepts(msg.get_message_id());
4579 template <etl::message_
id_t Id>
4580 static ETL_CONSTEXPR
bool accepts()
4582 return T1::ID == Id;
4586 template <
typename TMessage>
4587 static ETL_CONSTEXPR
4591 return T1::ID == TMessage::ID;
4604 void delete_current_message()
4618 const size_t id = msg.get_message_id();
4623 case T1::ID: ::new (p) T1(
static_cast<const T1&
>(msg));
break;
4628 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
4632 const size_t id = msg.get_message_id();
4637 case T1::ID: ::new (p) T1(
static_cast<T1&&
>(msg));
break;
Definition: message_packet.h:335
#define ETL_ASSERT(b, e)
Definition: error_handler.h:316
Definition: largest.h:367
enable_if
Definition: type_traits_generator.h:1191
is_same
Definition: type_traits_generator.h:1041
bitset_ext
Definition: absolute.h:38
uint_least8_t message_id_t
Allow alternative type for message id.
Definition: message_types.h:40
Definition: alignment.h:223
Definition: type_traits.h:1376