30#error THIS HEADER IS A GENERATOR. DO NOT INCLUDE.
51#ifndef ETL_MESSAGE_PACKET_INCLUDED
52#define ETL_MESSAGE_PACKET_INCLUDED
58#include "static_assert.h"
67#if ETL_USING_CPP17 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
71 template <
typename... TMessageTypes>
100 template <
typename T,
typename =
typename etl::enable_if<IsIMessage<T> || IsInMessageList<T>,
int>::type>
101 explicit message_packet(T&& msg)
104 if constexpr (IsIMessage<T>)
116 ETL_ASSERT(valid, ETL_ERROR(unhandled_message_exception));
118 else if constexpr (IsInMessageList<T>)
124 ETL_STATIC_ASSERT(IsInMessageList<T>,
"Message not in packet type list");
130 message_packet(
const message_packet& other)
132 valid = other.is_valid();
136 add_new_message(other.get());
142 message_packet(message_packet&& other)
144 valid = other.is_valid();
148 add_new_message(etl::move(other.get()));
154 void copy(
const message_packet& other)
156 valid = other.is_valid();
160 add_new_message(other.get());
165 void copy(message_packet&& other)
167 valid = other.is_valid();
171 add_new_message(etl::move(other.get()));
177 message_packet& operator =(
const message_packet& rhs)
179 delete_current_message();
180 valid = rhs.is_valid();
183 add_new_message(rhs.get());
192 message_packet& operator =(message_packet&& rhs)
194 delete_current_message();
195 valid = rhs.is_valid();
198 add_new_message(etl::move(rhs.get()));
208 delete_current_message();
224 bool is_valid()
const
232 return (accepts_message<TMessageTypes::ID>(
id) || ...);
238 return accepts(msg.get_message_id());
242 template <etl::message_
id_t Id>
243 static ETL_CONSTEXPR
bool accepts()
245 return (accepts_message<TMessageTypes::ID, Id>() || ...);
249 template <
typename TMessage>
254 return accepts<TMessage::ID>();
266 template <etl::message_
id_t Id1, etl::message_
id_t Id2>
267 static bool accepts_message()
273 template <etl::message_
id_t Id1>
281 void delete_current_message()
287#if ETL_HAS_VIRTUAL_MESSAGES
290 delete_message(pmsg);
296#if !ETL_HAS_VIRTUAL_MESSAGES
300 (delete_message_type<TMessageTypes>(pmsg) || ...);
304 template <
typename TType>
307 if (TType::ID == pmsg->get_message_id())
309 TType* p =
static_cast<TType*
>(pmsg);
323 (add_new_message_type<TMessageTypes>(msg) || ...);
329 (add_new_message_type<TMessageTypes>(etl::move(msg)) || ...);
336 template <
typename TMessage>
338 add_new_message_type(TMessage&& msg)
347 template <
typename TType>
350 if (TType::ID == msg.get_message_id())
353 new (p) TType(
static_cast<const TType&
>(msg));
364 template <
typename TType>
367 if (TType::ID == msg.get_message_id())
370 new (p) TType(
static_cast<TType&&
>(msg));
388 template <
typename T1,
typename T2 = void,
typename T3 = void,
typename T4 = void,
389 typename T5 = void,
typename T6 = void,
typename T7 = void,
typename T8 = void,
390 typename T9 = void,
typename T10 = void,
typename T11 = void,
typename T12 = void,
391 typename T13 = void,
typename T14 = void,
typename T15 = void,
typename T16 =
void>
410 add_new_message(
msg);
422 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
429 add_new_message(etl::move(
msg));
442 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) && !defined(ETL_COMPILER_GREEN_HILLS)
445 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 &&
447 !
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>
452 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 &&
454 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);
456 ETL_STATIC_ASSERT(
Enabled,
"Message not in packet type list");
462 template <
typename TMessage>
463 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 &&
465 !
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)
469 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 &&
471 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);
473 ETL_STATIC_ASSERT(
Enabled,
"Message not in packet type list");
481 : valid(
other.is_valid())
485 add_new_message(
other.get());
490 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
494 : valid(
other.is_valid())
498 add_new_message(etl::move(
other.get()));
508 delete_current_message();
509 valid =
rhs.is_valid();
512 add_new_message(
rhs.get());
519 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
524 delete_current_message();
525 valid =
rhs.is_valid();
528 add_new_message(etl::move(
rhs.get()));
539 delete_current_message();
555 bool is_valid()
const
563 return T1::ID ==
id || T2::ID ==
id || T3::ID ==
id || T4::ID ==
id ||
564 T5::ID ==
id || T6::ID ==
id || T7::ID ==
id || T8::ID ==
id ||
565 T9::ID ==
id || T10::ID ==
id || T11::ID ==
id || T12::ID ==
id ||
566 T13::ID ==
id || T14::ID ==
id || T15::ID ==
id || T16::ID == id;
572 return accepts(
msg.get_message_id());
576 template <etl::message_
id_t Id>
577 static ETL_CONSTEXPR
bool accepts()
579 return T1::ID ==
Id || T2::ID ==
Id || T3::ID ==
Id || T4::ID ==
Id ||
580 T5::ID ==
Id || T6::ID ==
Id || T7::ID ==
Id || T8::ID ==
Id ||
581 T9::ID ==
Id || T10::ID ==
Id || T11::ID ==
Id || T12::ID ==
Id ||
582 T13::ID ==
Id || T14::ID ==
Id || T15::ID ==
Id || T16::ID ==
Id;
586 template <
typename TMessage>
591 return T1::ID == TMessage::ID || T2::ID == TMessage::ID || T3::ID == TMessage::ID || T4::ID == TMessage::ID ||
592 T5::ID == TMessage::ID || T6::ID == TMessage::ID || T7::ID == TMessage::ID || T8::ID == TMessage::ID ||
593 T9::ID == TMessage::ID || T10::ID == TMessage::ID || T11::ID == TMessage::ID || T12::ID == TMessage::ID ||
594 T13::ID == TMessage::ID || T14::ID == TMessage::ID || T15::ID == TMessage::ID || T16::ID == TMessage::ID;
599 SIZE =
etl::largest<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>::size,
600 ALIGNMENT =
etl::largest<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>::alignment
607 void delete_current_message()
613 #if ETL_HAS_VIRTUAL_MESSAGES
616 delete_message(
pmsg);
625 switch (
pmsg->get_message_id())
627 case T1::ID:
static_cast<const T1*
>(
pmsg)->~
T1();
break;
628 case T2::ID:
static_cast<const T2*
>(
pmsg)->~
T2();
break;
629 case T3::ID:
static_cast<const T3*
>(
pmsg)->~
T3();
break;
630 case T4::ID:
static_cast<const T4*
>(
pmsg)->~
T4();
break;
631 case T5::ID:
static_cast<const T5*
>(
pmsg)->~
T5();
break;
632 case T6::ID:
static_cast<const T6*
>(
pmsg)->~
T6();
break;
633 case T7::ID:
static_cast<const T7*
>(
pmsg)->~
T7();
break;
634 case T8::ID:
static_cast<const T8*
>(
pmsg)->~
T8();
break;
635 case T9::ID:
static_cast<const T9*
>(
pmsg)->~
T9();
break;
636 case T10::ID:
static_cast<const T10*
>(
pmsg)->~
T10();
break;
637 case T11::ID:
static_cast<const T11*
>(
pmsg)->~
T11();
break;
638 case T12::ID:
static_cast<const T12*
>(
pmsg)->~
T12();
break;
639 case T13::ID:
static_cast<const T13*
>(
pmsg)->~
T13();
break;
640 case T14::ID:
static_cast<const T14*
>(
pmsg)->~
T14();
break;
641 case T15::ID:
static_cast<const T15*
>(
pmsg)->~
T15();
break;
642 case T16::ID:
static_cast<const T16*
>(
pmsg)->~
T16();
break;
650 const size_t id =
msg.get_message_id();
655 case T1::ID: ::new (p)
T1(
static_cast<const T1&
>(
msg));
break;
656 case T2::ID: ::new (p)
T2(
static_cast<const T2&
>(
msg));
break;
657 case T3::ID: ::new (p)
T3(
static_cast<const T3&
>(
msg));
break;
658 case T4::ID: ::new (p)
T4(
static_cast<const T4&
>(
msg));
break;
659 case T5::ID: ::new (p)
T5(
static_cast<const T5&
>(
msg));
break;
660 case T6::ID: ::new (p)
T6(
static_cast<const T6&
>(
msg));
break;
661 case T7::ID: ::new (p)
T7(
static_cast<const T7&
>(
msg));
break;
662 case T8::ID: ::new (p)
T8(
static_cast<const T8&
>(
msg));
break;
663 case T9::ID: ::new (p)
T9(
static_cast<const T9&
>(
msg));
break;
664 case T10::ID: ::new (p)
T10(
static_cast<const T10&
>(
msg));
break;
665 case T11::ID: ::new (p)
T11(
static_cast<const T11&
>(
msg));
break;
666 case T12::ID: ::new (p)
T12(
static_cast<const T12&
>(
msg));
break;
667 case T13::ID: ::new (p)
T13(
static_cast<const T13&
>(
msg));
break;
668 case T14::ID: ::new (p)
T14(
static_cast<const T14&
>(
msg));
break;
669 case T15::ID: ::new (p)
T15(
static_cast<const T15&
>(
msg));
break;
670 case T16::ID: ::new (p)
T16(
static_cast<const T16&
>(
msg));
break;
675 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
679 const size_t id =
msg.get_message_id();
684 case T1::ID: ::new (p)
T1(
static_cast<T1&&
>(
msg));
break;
685 case T2::ID: ::new (p)
T2(
static_cast<T2&&
>(
msg));
break;
686 case T3::ID: ::new (p)
T3(
static_cast<T3&&
>(
msg));
break;
687 case T4::ID: ::new (p)
T4(
static_cast<T4&&
>(
msg));
break;
688 case T5::ID: ::new (p)
T5(
static_cast<T5&&
>(
msg));
break;
689 case T6::ID: ::new (p)
T6(
static_cast<T6&&
>(
msg));
break;
690 case T7::ID: ::new (p)
T7(
static_cast<T7&&
>(
msg));
break;
691 case T8::ID: ::new (p)
T8(
static_cast<T8&&
>(
msg));
break;
692 case T9::ID: ::new (p)
T9(
static_cast<T9&&
>(
msg));
break;
693 case T10::ID: ::new (p)
T10(
static_cast<T10&&
>(
msg));
break;
694 case T11::ID: ::new (p)
T11(
static_cast<T11&&
>(
msg));
break;
695 case T12::ID: ::new (p)
T12(
static_cast<T12&&
>(
msg));
break;
696 case T13::ID: ::new (p)
T13(
static_cast<T13&&
>(
msg));
break;
697 case T14::ID: ::new (p)
T14(
static_cast<T14&&
>(
msg));
break;
698 case T15::ID: ::new (p)
T15(
static_cast<T15&&
>(
msg));
break;
699 case T16::ID: ::new (p)
T16(
static_cast<T16&&
>(
msg));
break;
712 template <
typename T1,
typename T2,
typename T3,
typename T4,
713 typename T5,
typename T6,
typename T7,
typename T8,
714 typename T9,
typename T10,
typename T11,
typename T12,
715 typename T13,
typename T14,
typename T15>
716 class message_packet<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12,
T13,
T14,
T15,
void>
734 add_new_message(
msg);
746 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
753 add_new_message(etl::move(
msg));
766 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) && !defined(ETL_COMPILER_GREEN_HILLS)
769 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 &&
771 !
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>
776 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 &&
778 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);
780 ETL_STATIC_ASSERT(
Enabled,
"Message not in packet type list");
786 template <
typename TMessage>
787 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 &&
789 !
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)
793 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 &&
795 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);
797 ETL_STATIC_ASSERT(
Enabled,
"Message not in packet type list");
805 : valid(
other.is_valid())
809 add_new_message(
other.get());
814 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
818 : valid(
other.is_valid())
822 add_new_message(etl::move(
other.get()));
832 delete_current_message();
833 valid =
rhs.is_valid();
836 add_new_message(
rhs.get());
843 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
848 delete_current_message();
849 valid =
rhs.is_valid();
852 add_new_message(etl::move(
rhs.get()));
863 delete_current_message();
879 bool is_valid()
const
887 return T1::ID ==
id || T2::ID ==
id || T3::ID ==
id || T4::ID ==
id ||
888 T5::ID ==
id || T6::ID ==
id || T7::ID ==
id || T8::ID ==
id ||
889 T9::ID ==
id || T10::ID ==
id || T11::ID ==
id || T12::ID ==
id ||
890 T13::ID ==
id || T14::ID ==
id || T15::ID == id;
896 return accepts(
msg.get_message_id());
900 template <etl::message_
id_t Id>
901 static ETL_CONSTEXPR
bool accepts()
903 return T1::ID ==
Id || T2::ID ==
Id || T3::ID ==
Id || T4::ID ==
Id ||
904 T5::ID ==
Id || T6::ID ==
Id || T7::ID ==
Id || T8::ID ==
Id ||
905 T9::ID ==
Id || T10::ID ==
Id || T11::ID ==
Id || T12::ID ==
Id ||
906 T13::ID ==
Id || T14::ID ==
Id || T15::ID ==
Id;
910 template <
typename TMessage>
915 return T1::ID == TMessage::ID || T2::ID == TMessage::ID || T3::ID == TMessage::ID || T4::ID == TMessage::ID ||
916 T5::ID == TMessage::ID || T6::ID == TMessage::ID || T7::ID == TMessage::ID || T8::ID == TMessage::ID ||
917 T9::ID == TMessage::ID || T10::ID == TMessage::ID || T11::ID == TMessage::ID || T12::ID == TMessage::ID ||
918 T13::ID == TMessage::ID || T14::ID == TMessage::ID || T15::ID == TMessage::ID;
923 SIZE =
etl::largest<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>::size,
924 ALIGNMENT =
etl::largest<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>::alignment
931 void delete_current_message()
938 #if ETL_HAS_VIRTUAL_MESSAGES
941 delete_message(
pmsg);
950 switch (
pmsg->get_message_id())
952 case T1::ID:
static_cast<const T1*
>(
pmsg)->~
T1();
break;
953 case T2::ID:
static_cast<const T2*
>(
pmsg)->~
T2();
break;
954 case T3::ID:
static_cast<const T3*
>(
pmsg)->~
T3();
break;
955 case T4::ID:
static_cast<const T4*
>(
pmsg)->~
T4();
break;
956 case T5::ID:
static_cast<const T5*
>(
pmsg)->~
T5();
break;
957 case T6::ID:
static_cast<const T6*
>(
pmsg)->~
T6();
break;
958 case T7::ID:
static_cast<const T7*
>(
pmsg)->~
T7();
break;
959 case T8::ID:
static_cast<const T8*
>(
pmsg)->~
T8();
break;
960 case T9::ID:
static_cast<const T9*
>(
pmsg)->~
T9();
break;
961 case T10::ID:
static_cast<const T10*
>(
pmsg)->~
T10();
break;
962 case T11::ID:
static_cast<const T11*
>(
pmsg)->~
T11();
break;
963 case T12::ID:
static_cast<const T12*
>(
pmsg)->~
T12();
break;
964 case T13::ID:
static_cast<const T13*
>(
pmsg)->~
T13();
break;
965 case T14::ID:
static_cast<const T14*
>(
pmsg)->~
T14();
break;
966 case T15::ID:
static_cast<const T15*
>(
pmsg)->~
T15();
break;
974 const size_t id =
msg.get_message_id();
979 case T1::ID: ::new (p)
T1(
static_cast<const T1&
>(
msg));
break;
980 case T2::ID: ::new (p)
T2(
static_cast<const T2&
>(
msg));
break;
981 case T3::ID: ::new (p)
T3(
static_cast<const T3&
>(
msg));
break;
982 case T4::ID: ::new (p)
T4(
static_cast<const T4&
>(
msg));
break;
983 case T5::ID: ::new (p)
T5(
static_cast<const T5&
>(
msg));
break;
984 case T6::ID: ::new (p)
T6(
static_cast<const T6&
>(
msg));
break;
985 case T7::ID: ::new (p)
T7(
static_cast<const T7&
>(
msg));
break;
986 case T8::ID: ::new (p)
T8(
static_cast<const T8&
>(
msg));
break;
987 case T9::ID: ::new (p)
T9(
static_cast<const T9&
>(
msg));
break;
988 case T10::ID: ::new (p)
T10(
static_cast<const T10&
>(
msg));
break;
989 case T11::ID: ::new (p)
T11(
static_cast<const T11&
>(
msg));
break;
990 case T12::ID: ::new (p)
T12(
static_cast<const T12&
>(
msg));
break;
991 case T13::ID: ::new (p)
T13(
static_cast<const T13&
>(
msg));
break;
992 case T14::ID: ::new (p)
T14(
static_cast<const T14&
>(
msg));
break;
993 case T15::ID: ::new (p)
T15(
static_cast<const T15&
>(
msg));
break;
998 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
1002 const size_t id =
msg.get_message_id();
1007 case T1::ID: ::new (p)
T1(
static_cast<T1&&
>(
msg));
break;
1008 case T2::ID: ::new (p)
T2(
static_cast<T2&&
>(
msg));
break;
1009 case T3::ID: ::new (p)
T3(
static_cast<T3&&
>(
msg));
break;
1010 case T4::ID: ::new (p)
T4(
static_cast<T4&&
>(
msg));
break;
1011 case T5::ID: ::new (p)
T5(
static_cast<T5&&
>(
msg));
break;
1012 case T6::ID: ::new (p)
T6(
static_cast<T6&&
>(
msg));
break;
1013 case T7::ID: ::new (p)
T7(
static_cast<T7&&
>(
msg));
break;
1014 case T8::ID: ::new (p)
T8(
static_cast<T8&&
>(
msg));
break;
1015 case T9::ID: ::new (p)
T9(
static_cast<T9&&
>(
msg));
break;
1016 case T10::ID: ::new (p)
T10(
static_cast<T10&&
>(
msg));
break;
1017 case T11::ID: ::new (p)
T11(
static_cast<T11&&
>(
msg));
break;
1018 case T12::ID: ::new (p)
T12(
static_cast<T12&&
>(
msg));
break;
1019 case T13::ID: ::new (p)
T13(
static_cast<T13&&
>(
msg));
break;
1020 case T14::ID: ::new (p)
T14(
static_cast<T14&&
>(
msg));
break;
1021 case T15::ID: ::new (p)
T15(
static_cast<T15&&
>(
msg));
break;
1034 template <
typename T1,
typename T2,
typename T3,
typename T4,
1035 typename T5,
typename T6,
typename T7,
typename T8,
1036 typename T9,
typename T10,
typename T11,
typename T12,
1037 typename T13,
typename T14>
1038 class message_packet<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12,
T13,
T14,
void,
void>
1056 add_new_message(
msg);
1068 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
1075 add_new_message(etl::move(
msg));
1088 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) && !defined(ETL_COMPILER_GREEN_HILLS)
1091 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 &&
1093 !
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>
1098 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 &&
1100 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);
1102 ETL_STATIC_ASSERT(
Enabled,
"Message not in packet type list");
1108 template <
typename TMessage>
1109 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 &&
1111 !
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)
1115 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 &&
1117 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);
1119 ETL_STATIC_ASSERT(
Enabled,
"Message not in packet type list");
1127 : valid(
other.is_valid())
1131 add_new_message(
other.get());
1136 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
1140 : valid(
other.is_valid())
1144 add_new_message(etl::move(
other.get()));
1154 delete_current_message();
1155 valid =
rhs.is_valid();
1158 add_new_message(
rhs.get());
1165 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
1170 delete_current_message();
1171 valid =
rhs.is_valid();
1174 add_new_message(etl::move(
rhs.get()));
1185 delete_current_message();
1201 bool is_valid()
const
1209 return T1::ID ==
id || T2::ID ==
id || T3::ID ==
id || T4::ID ==
id ||
1210 T5::ID ==
id || T6::ID ==
id || T7::ID ==
id || T8::ID ==
id ||
1211 T9::ID ==
id || T10::ID ==
id || T11::ID ==
id || T12::ID ==
id ||
1212 T13::ID ==
id || T14::ID == id;
1218 return accepts(
msg.get_message_id());
1222 template <etl::message_
id_t Id>
1223 static ETL_CONSTEXPR
bool accepts()
1225 return T1::ID ==
Id || T2::ID ==
Id || T3::ID ==
Id || T4::ID ==
Id ||
1226 T5::ID ==
Id || T6::ID ==
Id || T7::ID ==
Id || T8::ID ==
Id ||
1227 T9::ID ==
Id || T10::ID ==
Id || T11::ID ==
Id || T12::ID ==
Id ||
1228 T13::ID ==
Id || T14::ID ==
Id;
1232 template <
typename TMessage>
1233 static ETL_CONSTEXPR
1237 return T1::ID == TMessage::ID || T2::ID == TMessage::ID || T3::ID == TMessage::ID || T4::ID == TMessage::ID ||
1238 T5::ID == TMessage::ID || T6::ID == TMessage::ID || T7::ID == TMessage::ID || T8::ID == TMessage::ID ||
1239 T9::ID == TMessage::ID || T10::ID == TMessage::ID || T11::ID == TMessage::ID || T12::ID == TMessage::ID ||
1240 T13::ID == TMessage::ID || T14::ID == TMessage::ID;
1245 SIZE =
etl::largest<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>::size,
1246 ALIGNMENT =
etl::largest<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>::alignment
1253 void delete_current_message()
1260 #if ETL_HAS_VIRTUAL_MESSAGES
1263 delete_message(
pmsg);
1272 switch (
pmsg->get_message_id())
1274 case T1::ID:
static_cast<const T1*
>(
pmsg)->~
T1();
break;
1275 case T2::ID:
static_cast<const T2*
>(
pmsg)->~
T2();
break;
1276 case T3::ID:
static_cast<const T3*
>(
pmsg)->~
T3();
break;
1277 case T4::ID:
static_cast<const T4*
>(
pmsg)->~
T4();
break;
1278 case T5::ID:
static_cast<const T5*
>(
pmsg)->~
T5();
break;
1279 case T6::ID:
static_cast<const T6*
>(
pmsg)->~
T6();
break;
1280 case T7::ID:
static_cast<const T7*
>(
pmsg)->~
T7();
break;
1281 case T8::ID:
static_cast<const T8*
>(
pmsg)->~
T8();
break;
1282 case T9::ID:
static_cast<const T9*
>(
pmsg)->~
T9();
break;
1283 case T10::ID:
static_cast<const T10*
>(
pmsg)->~
T10();
break;
1284 case T11::ID:
static_cast<const T11*
>(
pmsg)->~
T11();
break;
1285 case T12::ID:
static_cast<const T12*
>(
pmsg)->~
T12();
break;
1286 case T13::ID:
static_cast<const T13*
>(
pmsg)->~
T13();
break;
1287 case T14::ID:
static_cast<const T14*
>(
pmsg)->~
T14();
break;
1295 const size_t id =
msg.get_message_id();
1300 case T1::ID: ::new (p)
T1(
static_cast<const T1&
>(
msg));
break;
1301 case T2::ID: ::new (p)
T2(
static_cast<const T2&
>(
msg));
break;
1302 case T3::ID: ::new (p)
T3(
static_cast<const T3&
>(
msg));
break;
1303 case T4::ID: ::new (p)
T4(
static_cast<const T4&
>(
msg));
break;
1304 case T5::ID: ::new (p)
T5(
static_cast<const T5&
>(
msg));
break;
1305 case T6::ID: ::new (p)
T6(
static_cast<const T6&
>(
msg));
break;
1306 case T7::ID: ::new (p)
T7(
static_cast<const T7&
>(
msg));
break;
1307 case T8::ID: ::new (p)
T8(
static_cast<const T8&
>(
msg));
break;
1308 case T9::ID: ::new (p)
T9(
static_cast<const T9&
>(
msg));
break;
1309 case T10::ID: ::new (p)
T10(
static_cast<const T10&
>(
msg));
break;
1310 case T11::ID: ::new (p)
T11(
static_cast<const T11&
>(
msg));
break;
1311 case T12::ID: ::new (p)
T12(
static_cast<const T12&
>(
msg));
break;
1312 case T13::ID: ::new (p)
T13(
static_cast<const T13&
>(
msg));
break;
1313 case T14::ID: ::new (p)
T14(
static_cast<const T14&
>(
msg));
break;
1318 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
1322 const size_t id =
msg.get_message_id();
1327 case T1::ID: ::new (p)
T1(
static_cast<T1&&
>(
msg));
break;
1328 case T2::ID: ::new (p)
T2(
static_cast<T2&&
>(
msg));
break;
1329 case T3::ID: ::new (p)
T3(
static_cast<T3&&
>(
msg));
break;
1330 case T4::ID: ::new (p)
T4(
static_cast<T4&&
>(
msg));
break;
1331 case T5::ID: ::new (p)
T5(
static_cast<T5&&
>(
msg));
break;
1332 case T6::ID: ::new (p)
T6(
static_cast<T6&&
>(
msg));
break;
1333 case T7::ID: ::new (p)
T7(
static_cast<T7&&
>(
msg));
break;
1334 case T8::ID: ::new (p)
T8(
static_cast<T8&&
>(
msg));
break;
1335 case T9::ID: ::new (p)
T9(
static_cast<T9&&
>(
msg));
break;
1336 case T10::ID: ::new (p)
T10(
static_cast<T10&&
>(
msg));
break;
1337 case T11::ID: ::new (p)
T11(
static_cast<T11&&
>(
msg));
break;
1338 case T12::ID: ::new (p)
T12(
static_cast<T12&&
>(
msg));
break;
1339 case T13::ID: ::new (p)
T13(
static_cast<T13&&
>(
msg));
break;
1340 case T14::ID: ::new (p)
T14(
static_cast<T14&&
>(
msg));
break;
1353 template <
typename T1,
typename T2,
typename T3,
typename T4,
1354 typename T5,
typename T6,
typename T7,
typename T8,
1355 typename T9,
typename T10,
typename T11,
typename T12,
1357 class message_packet<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12,
T13,
void,
void,
void>
1375 add_new_message(
msg);
1387 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
1394 add_new_message(etl::move(
msg));
1407 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) && !defined(ETL_COMPILER_GREEN_HILLS)
1410 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 &&
1412 !
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>
1417 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 &&
1419 etl::is_one_of<typename etl::remove_cvref<TMessage>::type,
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12,
T13>::value);
1421 ETL_STATIC_ASSERT(
Enabled,
"Message not in packet type list");
1427 template <
typename TMessage>
1428 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 &&
1430 !
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)
1434 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 &&
1436 etl::is_one_of<typename etl::remove_cvref<TMessage>::type,
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12,
T13>::value);
1438 ETL_STATIC_ASSERT(
Enabled,
"Message not in packet type list");
1446 : valid(
other.is_valid())
1450 add_new_message(
other.get());
1455 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
1459 : valid(
other.is_valid())
1463 add_new_message(etl::move(
other.get()));
1473 delete_current_message();
1474 valid =
rhs.is_valid();
1477 add_new_message(
rhs.get());
1484 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
1489 delete_current_message();
1490 valid =
rhs.is_valid();
1493 add_new_message(etl::move(
rhs.get()));
1504 delete_current_message();
1520 bool is_valid()
const
1528 return T1::ID ==
id || T2::ID ==
id || T3::ID ==
id || T4::ID ==
id ||
1529 T5::ID ==
id || T6::ID ==
id || T7::ID ==
id || T8::ID ==
id ||
1530 T9::ID ==
id || T10::ID ==
id || T11::ID ==
id || T12::ID ==
id ||
1537 return accepts(
msg.get_message_id());
1541 template <etl::message_
id_t Id>
1542 static ETL_CONSTEXPR
bool accepts()
1544 return T1::ID ==
Id || T2::ID ==
Id || T3::ID ==
Id || T4::ID ==
Id ||
1545 T5::ID ==
Id || T6::ID ==
Id || T7::ID ==
Id || T8::ID ==
Id ||
1546 T9::ID ==
Id || T10::ID ==
Id || T11::ID ==
Id || T12::ID ==
Id ||
1551 template <
typename TMessage>
1552 static ETL_CONSTEXPR
1556 return T1::ID == TMessage::ID || T2::ID == TMessage::ID || T3::ID == TMessage::ID || T4::ID == TMessage::ID ||
1557 T5::ID == TMessage::ID || T6::ID == TMessage::ID || T7::ID == TMessage::ID || T8::ID == TMessage::ID ||
1558 T9::ID == TMessage::ID || T10::ID == TMessage::ID || T11::ID == TMessage::ID || T12::ID == TMessage::ID ||
1559 T13::ID == TMessage::ID;
1564 SIZE =
etl::largest<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>::size,
1565 ALIGNMENT =
etl::largest<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>::alignment
1572 void delete_current_message()
1579 #if ETL_HAS_VIRTUAL_MESSAGES
1582 delete_message(
pmsg);
1591 switch (
pmsg->get_message_id())
1593 case T1::ID:
static_cast<const T1*
>(
pmsg)->~
T1();
break;
1594 case T2::ID:
static_cast<const T2*
>(
pmsg)->~
T2();
break;
1595 case T3::ID:
static_cast<const T3*
>(
pmsg)->~
T3();
break;
1596 case T4::ID:
static_cast<const T4*
>(
pmsg)->~
T4();
break;
1597 case T5::ID:
static_cast<const T5*
>(
pmsg)->~
T5();
break;
1598 case T6::ID:
static_cast<const T6*
>(
pmsg)->~
T6();
break;
1599 case T7::ID:
static_cast<const T7*
>(
pmsg)->~
T7();
break;
1600 case T8::ID:
static_cast<const T8*
>(
pmsg)->~
T8();
break;
1601 case T9::ID:
static_cast<const T9*
>(
pmsg)->~
T9();
break;
1602 case T10::ID:
static_cast<const T10*
>(
pmsg)->~
T10();
break;
1603 case T11::ID:
static_cast<const T11*
>(
pmsg)->~
T11();
break;
1604 case T12::ID:
static_cast<const T12*
>(
pmsg)->~
T12();
break;
1605 case T13::ID:
static_cast<const T13*
>(
pmsg)->~
T13();
break;
1613 const size_t id =
msg.get_message_id();
1618 case T1::ID: ::new (p)
T1(
static_cast<const T1&
>(
msg));
break;
1619 case T2::ID: ::new (p)
T2(
static_cast<const T2&
>(
msg));
break;
1620 case T3::ID: ::new (p)
T3(
static_cast<const T3&
>(
msg));
break;
1621 case T4::ID: ::new (p)
T4(
static_cast<const T4&
>(
msg));
break;
1622 case T5::ID: ::new (p)
T5(
static_cast<const T5&
>(
msg));
break;
1623 case T6::ID: ::new (p)
T6(
static_cast<const T6&
>(
msg));
break;
1624 case T7::ID: ::new (p)
T7(
static_cast<const T7&
>(
msg));
break;
1625 case T8::ID: ::new (p)
T8(
static_cast<const T8&
>(
msg));
break;
1626 case T9::ID: ::new (p)
T9(
static_cast<const T9&
>(
msg));
break;
1627 case T10::ID: ::new (p)
T10(
static_cast<const T10&
>(
msg));
break;
1628 case T11::ID: ::new (p)
T11(
static_cast<const T11&
>(
msg));
break;
1629 case T12::ID: ::new (p)
T12(
static_cast<const T12&
>(
msg));
break;
1630 case T13::ID: ::new (p)
T13(
static_cast<const T13&
>(
msg));
break;
1635 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
1639 const size_t id =
msg.get_message_id();
1644 case T1::ID: ::new (p)
T1(
static_cast<T1&&
>(
msg));
break;
1645 case T2::ID: ::new (p)
T2(
static_cast<T2&&
>(
msg));
break;
1646 case T3::ID: ::new (p)
T3(
static_cast<T3&&
>(
msg));
break;
1647 case T4::ID: ::new (p)
T4(
static_cast<T4&&
>(
msg));
break;
1648 case T5::ID: ::new (p)
T5(
static_cast<T5&&
>(
msg));
break;
1649 case T6::ID: ::new (p)
T6(
static_cast<T6&&
>(
msg));
break;
1650 case T7::ID: ::new (p)
T7(
static_cast<T7&&
>(
msg));
break;
1651 case T8::ID: ::new (p)
T8(
static_cast<T8&&
>(
msg));
break;
1652 case T9::ID: ::new (p)
T9(
static_cast<T9&&
>(
msg));
break;
1653 case T10::ID: ::new (p)
T10(
static_cast<T10&&
>(
msg));
break;
1654 case T11::ID: ::new (p)
T11(
static_cast<T11&&
>(
msg));
break;
1655 case T12::ID: ::new (p)
T12(
static_cast<T12&&
>(
msg));
break;
1656 case T13::ID: ::new (p)
T13(
static_cast<T13&&
>(
msg));
break;
1669 template <
typename T1,
typename T2,
typename T3,
typename T4,
1670 typename T5,
typename T6,
typename T7,
typename T8,
1671 typename T9,
typename T10,
typename T11,
typename T12>
1672 class message_packet<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12,
void,
void,
void,
void>
1690 add_new_message(
msg);
1702 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
1709 add_new_message(etl::move(
msg));
1722 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) && !defined(ETL_COMPILER_GREEN_HILLS)
1725 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 &&
1727 !
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>
1732 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 &&
1734 etl::is_one_of<typename etl::remove_cvref<TMessage>::type,
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12>::value);
1736 ETL_STATIC_ASSERT(
Enabled,
"Message not in packet type list");
1742 template <
typename TMessage>
1743 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 &&
1745 !
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)
1749 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 &&
1751 etl::is_one_of<typename etl::remove_cvref<TMessage>::type,
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
T12>::value);
1753 ETL_STATIC_ASSERT(
Enabled,
"Message not in packet type list");
1761 : valid(
other.is_valid())
1765 add_new_message(
other.get());
1770 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
1774 : valid(
other.is_valid())
1778 add_new_message(etl::move(
other.get()));
1788 delete_current_message();
1789 valid =
rhs.is_valid();
1792 add_new_message(
rhs.get());
1799 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
1804 delete_current_message();
1805 valid =
rhs.is_valid();
1808 add_new_message(etl::move(
rhs.get()));
1819 delete_current_message();
1835 bool is_valid()
const
1843 return T1::ID ==
id || T2::ID ==
id || T3::ID ==
id || T4::ID ==
id ||
1844 T5::ID ==
id || T6::ID ==
id || T7::ID ==
id || T8::ID ==
id ||
1845 T9::ID ==
id || T10::ID ==
id || T11::ID ==
id || T12::ID == id;
1851 return accepts(
msg.get_message_id());
1855 template <etl::message_
id_t Id>
1856 static ETL_CONSTEXPR
bool accepts()
1858 return T1::ID ==
Id || T2::ID ==
Id || T3::ID ==
Id || T4::ID ==
Id ||
1859 T5::ID ==
Id || T6::ID ==
Id || T7::ID ==
Id || T8::ID ==
Id ||
1860 T9::ID ==
Id || T10::ID ==
Id || T11::ID ==
Id || T12::ID ==
Id;
1864 template <
typename TMessage>
1865 static ETL_CONSTEXPR
1869 return T1::ID == TMessage::ID || T2::ID == TMessage::ID || T3::ID == TMessage::ID || T4::ID == TMessage::ID ||
1870 T5::ID == TMessage::ID || T6::ID == TMessage::ID || T7::ID == TMessage::ID || T8::ID == TMessage::ID ||
1871 T9::ID == TMessage::ID || T10::ID == TMessage::ID || T11::ID == TMessage::ID || T12::ID == TMessage::ID;
1876 SIZE =
etl::largest<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>::size,
1877 ALIGNMENT =
etl::largest<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>::alignment
1884 void delete_current_message()
1891 #if ETL_HAS_VIRTUAL_MESSAGES
1894 delete_message(
pmsg);
1903 switch (
pmsg->get_message_id())
1905 case T1::ID:
static_cast<const T1*
>(
pmsg)->~
T1();
break;
1906 case T2::ID:
static_cast<const T2*
>(
pmsg)->~
T2();
break;
1907 case T3::ID:
static_cast<const T3*
>(
pmsg)->~
T3();
break;
1908 case T4::ID:
static_cast<const T4*
>(
pmsg)->~
T4();
break;
1909 case T5::ID:
static_cast<const T5*
>(
pmsg)->~
T5();
break;
1910 case T6::ID:
static_cast<const T6*
>(
pmsg)->~
T6();
break;
1911 case T7::ID:
static_cast<const T7*
>(
pmsg)->~
T7();
break;
1912 case T8::ID:
static_cast<const T8*
>(
pmsg)->~
T8();
break;
1913 case T9::ID:
static_cast<const T9*
>(
pmsg)->~
T9();
break;
1914 case T10::ID:
static_cast<const T10*
>(
pmsg)->~
T10();
break;
1915 case T11::ID:
static_cast<const T11*
>(
pmsg)->~
T11();
break;
1916 case T12::ID:
static_cast<const T12*
>(
pmsg)->~
T12();
break;
1924 const size_t id =
msg.get_message_id();
1929 case T1::ID: ::new (p)
T1(
static_cast<const T1&
>(
msg));
break;
1930 case T2::ID: ::new (p)
T2(
static_cast<const T2&
>(
msg));
break;
1931 case T3::ID: ::new (p)
T3(
static_cast<const T3&
>(
msg));
break;
1932 case T4::ID: ::new (p)
T4(
static_cast<const T4&
>(
msg));
break;
1933 case T5::ID: ::new (p)
T5(
static_cast<const T5&
>(
msg));
break;
1934 case T6::ID: ::new (p)
T6(
static_cast<const T6&
>(
msg));
break;
1935 case T7::ID: ::new (p)
T7(
static_cast<const T7&
>(
msg));
break;
1936 case T8::ID: ::new (p)
T8(
static_cast<const T8&
>(
msg));
break;
1937 case T9::ID: ::new (p)
T9(
static_cast<const T9&
>(
msg));
break;
1938 case T10::ID: ::new (p)
T10(
static_cast<const T10&
>(
msg));
break;
1939 case T11::ID: ::new (p)
T11(
static_cast<const T11&
>(
msg));
break;
1940 case T12::ID: ::new (p)
T12(
static_cast<const T12&
>(
msg));
break;
1945 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
1949 const size_t id =
msg.get_message_id();
1954 case T1::ID: ::new (p)
T1(
static_cast<T1&&
>(
msg));
break;
1955 case T2::ID: ::new (p)
T2(
static_cast<T2&&
>(
msg));
break;
1956 case T3::ID: ::new (p)
T3(
static_cast<T3&&
>(
msg));
break;
1957 case T4::ID: ::new (p)
T4(
static_cast<T4&&
>(
msg));
break;
1958 case T5::ID: ::new (p)
T5(
static_cast<T5&&
>(
msg));
break;
1959 case T6::ID: ::new (p)
T6(
static_cast<T6&&
>(
msg));
break;
1960 case T7::ID: ::new (p)
T7(
static_cast<T7&&
>(
msg));
break;
1961 case T8::ID: ::new (p)
T8(
static_cast<T8&&
>(
msg));
break;
1962 case T9::ID: ::new (p)
T9(
static_cast<T9&&
>(
msg));
break;
1963 case T10::ID: ::new (p)
T10(
static_cast<T10&&
>(
msg));
break;
1964 case T11::ID: ::new (p)
T11(
static_cast<T11&&
>(
msg));
break;
1965 case T12::ID: ::new (p)
T12(
static_cast<T12&&
>(
msg));
break;
1978 template <
typename T1,
typename T2,
typename T3,
typename T4,
1979 typename T5,
typename T6,
typename T7,
typename T8,
1980 typename T9,
typename T10,
typename T11>
1981 class message_packet<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
void,
void,
void,
void,
void>
1999 add_new_message(
msg);
2011 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
2018 add_new_message(etl::move(
msg));
2031 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) && !defined(ETL_COMPILER_GREEN_HILLS)
2034 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 &&
2036 !
etl::is_one_of<typename etl::remove_cvref<TMessage>::type,
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11>::value,
int>::type>
2041 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 &&
2043 etl::is_one_of<typename etl::remove_cvref<TMessage>::type,
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11>::value);
2045 ETL_STATIC_ASSERT(
Enabled,
"Message not in packet type list");
2051 template <
typename TMessage>
2052 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 &&
2054 !
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)
2058 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 &&
2060 etl::is_one_of<typename etl::remove_cvref<TMessage>::type,
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11>::value);
2062 ETL_STATIC_ASSERT(
Enabled,
"Message not in packet type list");
2070 : valid(
other.is_valid())
2074 add_new_message(
other.get());
2079 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
2083 : valid(
other.is_valid())
2087 add_new_message(etl::move(
other.get()));
2097 delete_current_message();
2098 valid =
rhs.is_valid();
2101 add_new_message(
rhs.get());
2108 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
2113 delete_current_message();
2114 valid =
rhs.is_valid();
2117 add_new_message(etl::move(
rhs.get()));
2128 delete_current_message();
2144 bool is_valid()
const
2152 return T1::ID ==
id || T2::ID ==
id || T3::ID ==
id || T4::ID ==
id ||
2153 T5::ID ==
id || T6::ID ==
id || T7::ID ==
id || T8::ID ==
id ||
2154 T9::ID ==
id || T10::ID ==
id || T11::ID == id;
2160 return accepts(
msg.get_message_id());
2164 template <etl::message_
id_t Id>
2165 static ETL_CONSTEXPR
bool accepts()
2167 return T1::ID ==
Id || T2::ID ==
Id || T3::ID ==
Id || T4::ID ==
Id ||
2168 T5::ID ==
Id || T6::ID ==
Id || T7::ID ==
Id || T8::ID ==
Id ||
2169 T9::ID ==
Id || T10::ID ==
Id || T11::ID ==
Id;
2173 template <
typename TMessage>
2174 static ETL_CONSTEXPR
2178 return T1::ID == TMessage::ID || T2::ID == TMessage::ID || T3::ID == TMessage::ID || T4::ID == TMessage::ID ||
2179 T5::ID == TMessage::ID || T6::ID == TMessage::ID || T7::ID == TMessage::ID || T8::ID == TMessage::ID ||
2180 T9::ID == TMessage::ID || T10::ID == TMessage::ID || T11::ID == TMessage::ID;
2185 SIZE =
etl::largest<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>::size,
2186 ALIGNMENT =
etl::largest<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>::alignment
2193 void delete_current_message()
2200 #if ETL_HAS_VIRTUAL_MESSAGES
2203 delete_message(
pmsg);
2212 switch (
pmsg->get_message_id())
2214 case T1::ID:
static_cast<const T1*
>(
pmsg)->~
T1();
break;
2215 case T2::ID:
static_cast<const T2*
>(
pmsg)->~
T2();
break;
2216 case T3::ID:
static_cast<const T3*
>(
pmsg)->~
T3();
break;
2217 case T4::ID:
static_cast<const T4*
>(
pmsg)->~
T4();
break;
2218 case T5::ID:
static_cast<const T5*
>(
pmsg)->~
T5();
break;
2219 case T6::ID:
static_cast<const T6*
>(
pmsg)->~
T6();
break;
2220 case T7::ID:
static_cast<const T7*
>(
pmsg)->~
T7();
break;
2221 case T8::ID:
static_cast<const T8*
>(
pmsg)->~
T8();
break;
2222 case T9::ID:
static_cast<const T9*
>(
pmsg)->~
T9();
break;
2223 case T10::ID:
static_cast<const T10*
>(
pmsg)->~
T10();
break;
2224 case T11::ID:
static_cast<const T11*
>(
pmsg)->~
T11();
break;
2232 const size_t id =
msg.get_message_id();
2237 case T1::ID: ::new (p)
T1(
static_cast<const T1&
>(
msg));
break;
2238 case T2::ID: ::new (p)
T2(
static_cast<const T2&
>(
msg));
break;
2239 case T3::ID: ::new (p)
T3(
static_cast<const T3&
>(
msg));
break;
2240 case T4::ID: ::new (p)
T4(
static_cast<const T4&
>(
msg));
break;
2241 case T5::ID: ::new (p)
T5(
static_cast<const T5&
>(
msg));
break;
2242 case T6::ID: ::new (p)
T6(
static_cast<const T6&
>(
msg));
break;
2243 case T7::ID: ::new (p)
T7(
static_cast<const T7&
>(
msg));
break;
2244 case T8::ID: ::new (p)
T8(
static_cast<const T8&
>(
msg));
break;
2245 case T9::ID: ::new (p)
T9(
static_cast<const T9&
>(
msg));
break;
2246 case T10::ID: ::new (p)
T10(
static_cast<const T10&
>(
msg));
break;
2247 case T11::ID: ::new (p)
T11(
static_cast<const T11&
>(
msg));
break;
2252 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
2256 const size_t id =
msg.get_message_id();
2261 case T1::ID: ::new (p)
T1(
static_cast<T1&&
>(
msg));
break;
2262 case T2::ID: ::new (p)
T2(
static_cast<T2&&
>(
msg));
break;
2263 case T3::ID: ::new (p)
T3(
static_cast<T3&&
>(
msg));
break;
2264 case T4::ID: ::new (p)
T4(
static_cast<T4&&
>(
msg));
break;
2265 case T5::ID: ::new (p)
T5(
static_cast<T5&&
>(
msg));
break;
2266 case T6::ID: ::new (p)
T6(
static_cast<T6&&
>(
msg));
break;
2267 case T7::ID: ::new (p)
T7(
static_cast<T7&&
>(
msg));
break;
2268 case T8::ID: ::new (p)
T8(
static_cast<T8&&
>(
msg));
break;
2269 case T9::ID: ::new (p)
T9(
static_cast<T9&&
>(
msg));
break;
2270 case T10::ID: ::new (p)
T10(
static_cast<T10&&
>(
msg));
break;
2271 case T11::ID: ::new (p)
T11(
static_cast<T11&&
>(
msg));
break;
2284 template <
typename T1,
typename T2,
typename T3,
typename T4,
2285 typename T5,
typename T6,
typename T7,
typename T8,
2286 typename T9,
typename T10>
2287 class message_packet<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
void,
void,
void,
void,
void,
void>
2305 add_new_message(
msg);
2317 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
2324 add_new_message(etl::move(
msg));
2337 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) && !defined(ETL_COMPILER_GREEN_HILLS)
2340 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 &&
2342 !
etl::is_one_of<typename etl::remove_cvref<TMessage>::type,
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10>::value,
int>::type>
2347 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 &&
2349 etl::is_one_of<typename etl::remove_cvref<TMessage>::type,
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10>::value);
2351 ETL_STATIC_ASSERT(
Enabled,
"Message not in packet type list");
2357 template <
typename TMessage>
2358 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 &&
2360 !
etl::is_one_of<
typename etl::remove_cvref<TMessage>::type,
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10>::value,
int>::type = 0)
2364 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 &&
2366 etl::is_one_of<typename etl::remove_cvref<TMessage>::type,
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10>::value);
2368 ETL_STATIC_ASSERT(
Enabled,
"Message not in packet type list");
2376 : valid(
other.is_valid())
2380 add_new_message(
other.get());
2385 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
2389 : valid(
other.is_valid())
2393 add_new_message(etl::move(
other.get()));
2403 delete_current_message();
2404 valid =
rhs.is_valid();
2407 add_new_message(
rhs.get());
2414 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
2419 delete_current_message();
2420 valid =
rhs.is_valid();
2423 add_new_message(etl::move(
rhs.get()));
2434 delete_current_message();
2450 bool is_valid()
const
2458 return T1::ID ==
id || T2::ID ==
id || T3::ID ==
id || T4::ID ==
id ||
2459 T5::ID ==
id || T6::ID ==
id || T7::ID ==
id || T8::ID ==
id ||
2460 T9::ID ==
id || T10::ID == id;
2466 return accepts(
msg.get_message_id());
2470 template <etl::message_
id_t Id>
2471 static ETL_CONSTEXPR
bool accepts()
2473 return T1::ID ==
Id || T2::ID ==
Id || T3::ID ==
Id || T4::ID ==
Id ||
2474 T5::ID ==
Id || T6::ID ==
Id || T7::ID ==
Id || T8::ID ==
Id ||
2475 T9::ID ==
Id || T10::ID ==
Id;
2479 template <
typename TMessage>
2480 static ETL_CONSTEXPR
2484 return T1::ID == TMessage::ID || T2::ID == TMessage::ID || T3::ID == TMessage::ID || T4::ID == TMessage::ID ||
2485 T5::ID == TMessage::ID || T6::ID == TMessage::ID || T7::ID == TMessage::ID || T8::ID == TMessage::ID ||
2486 T9::ID == TMessage::ID || T10::ID == TMessage::ID;
2491 SIZE =
etl::largest<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>::size,
2499 void delete_current_message()
2506 #if ETL_HAS_VIRTUAL_MESSAGES
2509 delete_message(
pmsg);
2518 switch (
pmsg->get_message_id())
2520 case T1::ID:
static_cast<const T1*
>(
pmsg)->~
T1();
break;
2521 case T2::ID:
static_cast<const T2*
>(
pmsg)->~
T2();
break;
2522 case T3::ID:
static_cast<const T3*
>(
pmsg)->~
T3();
break;
2523 case T4::ID:
static_cast<const T4*
>(
pmsg)->~
T4();
break;
2524 case T5::ID:
static_cast<const T5*
>(
pmsg)->~
T5();
break;
2525 case T6::ID:
static_cast<const T6*
>(
pmsg)->~
T6();
break;
2526 case T7::ID:
static_cast<const T7*
>(
pmsg)->~
T7();
break;
2527 case T8::ID:
static_cast<const T8*
>(
pmsg)->~
T8();
break;
2528 case T9::ID:
static_cast<const T9*
>(
pmsg)->~
T9();
break;
2529 case T10::ID:
static_cast<const T10*
>(
pmsg)->~
T10();
break;
2537 const size_t id =
msg.get_message_id();
2542 case T1::ID: ::new (p)
T1(
static_cast<const T1&
>(
msg));
break;
2543 case T2::ID: ::new (p)
T2(
static_cast<const T2&
>(
msg));
break;
2544 case T3::ID: ::new (p)
T3(
static_cast<const T3&
>(
msg));
break;
2545 case T4::ID: ::new (p)
T4(
static_cast<const T4&
>(
msg));
break;
2546 case T5::ID: ::new (p)
T5(
static_cast<const T5&
>(
msg));
break;
2547 case T6::ID: ::new (p)
T6(
static_cast<const T6&
>(
msg));
break;
2548 case T7::ID: ::new (p)
T7(
static_cast<const T7&
>(
msg));
break;
2549 case T8::ID: ::new (p)
T8(
static_cast<const T8&
>(
msg));
break;
2550 case T9::ID: ::new (p)
T9(
static_cast<const T9&
>(
msg));
break;
2551 case T10::ID: ::new (p)
T10(
static_cast<const T10&
>(
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;
2574 case T10::ID: ::new (p)
T10(
static_cast<T10&&
>(
msg));
break;
2587 template <
typename T1,
typename T2,
typename T3,
typename T4,
2588 typename T5,
typename T6,
typename T7,
typename T8,
2590 class message_packet<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
void,
void,
void,
void,
void,
void,
void>
2608 add_new_message(
msg);
2620 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
2627 add_new_message(etl::move(
msg));
2640 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) && !defined(ETL_COMPILER_GREEN_HILLS)
2643 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 &&
2645 !
etl::is_one_of<typename etl::remove_cvref<TMessage>::type,
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9>::value,
int>::type>
2654 ETL_STATIC_ASSERT(
Enabled,
"Message not in packet type list");
2660 template <
typename TMessage>
2661 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 &&
2663 !
etl::is_one_of<
typename etl::remove_cvref<TMessage>::type,
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9>::value,
int>::type = 0)
2671 ETL_STATIC_ASSERT(
Enabled,
"Message not in packet type list");
2679 : valid(
other.is_valid())
2683 add_new_message(
other.get());
2688 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
2692 : valid(
other.is_valid())
2696 add_new_message(etl::move(
other.get()));
2706 delete_current_message();
2707 valid =
rhs.is_valid();
2710 add_new_message(
rhs.get());
2717 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
2722 delete_current_message();
2723 valid =
rhs.is_valid();
2726 add_new_message(etl::move(
rhs.get()));
2737 delete_current_message();
2753 bool is_valid()
const
2761 return T1::ID ==
id || T2::ID ==
id || T3::ID ==
id || T4::ID ==
id ||
2762 T5::ID ==
id || T6::ID ==
id || T7::ID ==
id || T8::ID ==
id ||
2769 return accepts(
msg.get_message_id());
2773 template <etl::message_
id_t Id>
2774 static ETL_CONSTEXPR
bool accepts()
2776 return T1::ID ==
Id || T2::ID ==
Id || T3::ID ==
Id || T4::ID ==
Id ||
2777 T5::ID ==
Id || T6::ID ==
Id || T7::ID ==
Id || T8::ID ==
Id ||
2782 template <
typename TMessage>
2783 static ETL_CONSTEXPR
2787 return T1::ID == TMessage::ID || T2::ID == TMessage::ID || T3::ID == TMessage::ID || T4::ID == TMessage::ID ||
2788 T5::ID == TMessage::ID || T6::ID == TMessage::ID || T7::ID == TMessage::ID || T8::ID == TMessage::ID ||
2789 T9::ID == TMessage::ID;
2802 void delete_current_message()
2809 #if ETL_HAS_VIRTUAL_MESSAGES
2812 delete_message(
pmsg);
2821 switch (
pmsg->get_message_id())
2823 case T1::ID:
static_cast<const T1*
>(
pmsg)->~
T1();
break;
2824 case T2::ID:
static_cast<const T2*
>(
pmsg)->~
T2();
break;
2825 case T3::ID:
static_cast<const T3*
>(
pmsg)->~
T3();
break;
2826 case T4::ID:
static_cast<const T4*
>(
pmsg)->~
T4();
break;
2827 case T5::ID:
static_cast<const T5*
>(
pmsg)->~
T5();
break;
2828 case T6::ID:
static_cast<const T6*
>(
pmsg)->~
T6();
break;
2829 case T7::ID:
static_cast<const T7*
>(
pmsg)->~
T7();
break;
2830 case T8::ID:
static_cast<const T8*
>(
pmsg)->~
T8();
break;
2831 case T9::ID:
static_cast<const T9*
>(
pmsg)->~
T9();
break;
2839 const size_t id =
msg.get_message_id();
2844 case T1::ID: ::new (p)
T1(
static_cast<const T1&
>(
msg));
break;
2845 case T2::ID: ::new (p)
T2(
static_cast<const T2&
>(
msg));
break;
2846 case T3::ID: ::new (p)
T3(
static_cast<const T3&
>(
msg));
break;
2847 case T4::ID: ::new (p)
T4(
static_cast<const T4&
>(
msg));
break;
2848 case T5::ID: ::new (p)
T5(
static_cast<const T5&
>(
msg));
break;
2849 case T6::ID: ::new (p)
T6(
static_cast<const T6&
>(
msg));
break;
2850 case T7::ID: ::new (p)
T7(
static_cast<const T7&
>(
msg));
break;
2851 case T8::ID: ::new (p)
T8(
static_cast<const T8&
>(
msg));
break;
2852 case T9::ID: ::new (p)
T9(
static_cast<const T9&
>(
msg));
break;
2857 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
2861 const size_t id =
msg.get_message_id();
2866 case T1::ID: ::new (p)
T1(
static_cast<T1&&
>(
msg));
break;
2867 case T2::ID: ::new (p)
T2(
static_cast<T2&&
>(
msg));
break;
2868 case T3::ID: ::new (p)
T3(
static_cast<T3&&
>(
msg));
break;
2869 case T4::ID: ::new (p)
T4(
static_cast<T4&&
>(
msg));
break;
2870 case T5::ID: ::new (p)
T5(
static_cast<T5&&
>(
msg));
break;
2871 case T6::ID: ::new (p)
T6(
static_cast<T6&&
>(
msg));
break;
2872 case T7::ID: ::new (p)
T7(
static_cast<T7&&
>(
msg));
break;
2873 case T8::ID: ::new (p)
T8(
static_cast<T8&&
>(
msg));
break;
2874 case T9::ID: ::new (p)
T9(
static_cast<T9&&
>(
msg));
break;
2887 template <
typename T1,
typename T2,
typename T3,
typename T4,
2888 typename T5,
typename T6,
typename T7,
typename T8>
2889 class message_packet<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
T8,
void,
void,
void,
void,
void,
void,
void,
void>
2907 add_new_message(
msg);
2919 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
2926 add_new_message(etl::move(
msg));
2939 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) && !defined(ETL_COMPILER_GREEN_HILLS)
2953 ETL_STATIC_ASSERT(
Enabled,
"Message not in packet type list");
2959 template <
typename TMessage>
2970 ETL_STATIC_ASSERT(
Enabled,
"Message not in packet type list");
2978 : valid(
other.is_valid())
2982 add_new_message(
other.get());
2987 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
2991 : valid(
other.is_valid())
2995 add_new_message(etl::move(
other.get()));
3005 delete_current_message();
3006 valid =
rhs.is_valid();
3009 add_new_message(
rhs.get());
3016 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
3021 delete_current_message();
3022 valid =
rhs.is_valid();
3025 add_new_message(etl::move(
rhs.get()));
3036 delete_current_message();
3052 bool is_valid()
const
3060 return T1::ID ==
id || T2::ID ==
id || T3::ID ==
id || T4::ID ==
id ||
3061 T5::ID ==
id || T6::ID ==
id || T7::ID ==
id || T8::ID == id;
3067 return accepts(
msg.get_message_id());
3071 template <etl::message_
id_t Id>
3072 static ETL_CONSTEXPR
bool accepts()
3074 return T1::ID ==
Id || T2::ID ==
Id || T3::ID ==
Id || T4::ID ==
Id ||
3075 T5::ID ==
Id || T6::ID ==
Id || T7::ID ==
Id || T8::ID ==
Id;
3079 template <
typename TMessage>
3080 static ETL_CONSTEXPR
3084 return T1::ID == TMessage::ID || T2::ID == TMessage::ID || T3::ID == TMessage::ID || T4::ID == TMessage::ID ||
3085 T5::ID == TMessage::ID || T6::ID == TMessage::ID || T7::ID == TMessage::ID || T8::ID == TMessage::ID;
3098 void delete_current_message()
3105 #if ETL_HAS_VIRTUAL_MESSAGES
3108 delete_message(
pmsg);
3117 switch (
pmsg->get_message_id())
3119 case T1::ID:
static_cast<const T1*
>(
pmsg)->~
T1();
break;
3120 case T2::ID:
static_cast<const T2*
>(
pmsg)->~
T2();
break;
3121 case T3::ID:
static_cast<const T3*
>(
pmsg)->~
T3();
break;
3122 case T4::ID:
static_cast<const T4*
>(
pmsg)->~
T4();
break;
3123 case T5::ID:
static_cast<const T5*
>(
pmsg)->~
T5();
break;
3124 case T6::ID:
static_cast<const T6*
>(
pmsg)->~
T6();
break;
3125 case T7::ID:
static_cast<const T7*
>(
pmsg)->~
T7();
break;
3126 case T8::ID:
static_cast<const T8*
>(
pmsg)->~
T8();
break;
3134 const size_t id =
msg.get_message_id();
3139 case T1::ID: ::new (p)
T1(
static_cast<const T1&
>(
msg));
break;
3140 case T2::ID: ::new (p)
T2(
static_cast<const T2&
>(
msg));
break;
3141 case T3::ID: ::new (p)
T3(
static_cast<const T3&
>(
msg));
break;
3142 case T4::ID: ::new (p)
T4(
static_cast<const T4&
>(
msg));
break;
3143 case T5::ID: ::new (p)
T5(
static_cast<const T5&
>(
msg));
break;
3144 case T6::ID: ::new (p)
T6(
static_cast<const T6&
>(
msg));
break;
3145 case T7::ID: ::new (p)
T7(
static_cast<const T7&
>(
msg));
break;
3146 case T8::ID: ::new (p)
T8(
static_cast<const T8&
>(
msg));
break;
3151 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
3155 const size_t id =
msg.get_message_id();
3160 case T1::ID: ::new (p)
T1(
static_cast<T1&&
>(
msg));
break;
3161 case T2::ID: ::new (p)
T2(
static_cast<T2&&
>(
msg));
break;
3162 case T3::ID: ::new (p)
T3(
static_cast<T3&&
>(
msg));
break;
3163 case T4::ID: ::new (p)
T4(
static_cast<T4&&
>(
msg));
break;
3164 case T5::ID: ::new (p)
T5(
static_cast<T5&&
>(
msg));
break;
3165 case T6::ID: ::new (p)
T6(
static_cast<T6&&
>(
msg));
break;
3166 case T7::ID: ::new (p)
T7(
static_cast<T7&&
>(
msg));
break;
3167 case T8::ID: ::new (p)
T8(
static_cast<T8&&
>(
msg));
break;
3180 template <
typename T1,
typename T2,
typename T3,
typename T4,
3181 typename T5,
typename T6,
typename T7>
3182 class message_packet<
T1,
T2,
T3,
T4,
T5,
T6,
T7,
void,
void,
void,
void,
void,
void,
void,
void,
void>
3200 add_new_message(
msg);
3212 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
3219 add_new_message(etl::move(
msg));
3232 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) && !defined(ETL_COMPILER_GREEN_HILLS)
3246 ETL_STATIC_ASSERT(
Enabled,
"Message not in packet type list");
3252 template <
typename TMessage>
3263 ETL_STATIC_ASSERT(
Enabled,
"Message not in packet type list");
3271 : valid(
other.is_valid())
3275 add_new_message(
other.get());
3280 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
3284 : valid(
other.is_valid())
3288 add_new_message(etl::move(
other.get()));
3298 delete_current_message();
3299 valid =
rhs.is_valid();
3302 add_new_message(
rhs.get());
3309 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
3314 delete_current_message();
3315 valid =
rhs.is_valid();
3318 add_new_message(etl::move(
rhs.get()));
3329 delete_current_message();
3345 bool is_valid()
const
3353 return T1::ID ==
id || T2::ID ==
id || T3::ID ==
id || T4::ID ==
id ||
3354 T5::ID ==
id || T6::ID ==
id || T7::ID == id;
3360 return accepts(
msg.get_message_id());
3364 template <etl::message_
id_t Id>
3365 static ETL_CONSTEXPR
bool accepts()
3367 return T1::ID ==
Id || T2::ID ==
Id || T3::ID ==
Id || T4::ID ==
Id ||
3368 T5::ID ==
Id || T6::ID ==
Id || T7::ID ==
Id;
3372 template <
typename TMessage>
3373 static ETL_CONSTEXPR
3377 return T1::ID == TMessage::ID || T2::ID == TMessage::ID || T3::ID == TMessage::ID || T4::ID == TMessage::ID ||
3378 T5::ID == TMessage::ID || T6::ID == TMessage::ID || T7::ID == TMessage::ID;
3391 void delete_current_message()
3398 #if ETL_HAS_VIRTUAL_MESSAGES
3401 delete_message(
pmsg);
3410 switch (
pmsg->get_message_id())
3412 case T1::ID:
static_cast<const T1*
>(
pmsg)->~
T1();
break;
3413 case T2::ID:
static_cast<const T2*
>(
pmsg)->~
T2();
break;
3414 case T3::ID:
static_cast<const T3*
>(
pmsg)->~
T3();
break;
3415 case T4::ID:
static_cast<const T4*
>(
pmsg)->~
T4();
break;
3416 case T5::ID:
static_cast<const T5*
>(
pmsg)->~
T5();
break;
3417 case T6::ID:
static_cast<const T6*
>(
pmsg)->~
T6();
break;
3418 case T7::ID:
static_cast<const T7*
>(
pmsg)->~
T7();
break;
3426 const size_t id =
msg.get_message_id();
3431 case T1::ID: ::new (p)
T1(
static_cast<const T1&
>(
msg));
break;
3432 case T2::ID: ::new (p)
T2(
static_cast<const T2&
>(
msg));
break;
3433 case T3::ID: ::new (p)
T3(
static_cast<const T3&
>(
msg));
break;
3434 case T4::ID: ::new (p)
T4(
static_cast<const T4&
>(
msg));
break;
3435 case T5::ID: ::new (p)
T5(
static_cast<const T5&
>(
msg));
break;
3436 case T6::ID: ::new (p)
T6(
static_cast<const T6&
>(
msg));
break;
3437 case T7::ID: ::new (p)
T7(
static_cast<const T7&
>(
msg));
break;
3442 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
3446 const size_t id =
msg.get_message_id();
3451 case T1::ID: ::new (p)
T1(
static_cast<T1&&
>(
msg));
break;
3452 case T2::ID: ::new (p)
T2(
static_cast<T2&&
>(
msg));
break;
3453 case T3::ID: ::new (p)
T3(
static_cast<T3&&
>(
msg));
break;
3454 case T4::ID: ::new (p)
T4(
static_cast<T4&&
>(
msg));
break;
3455 case T5::ID: ::new (p)
T5(
static_cast<T5&&
>(
msg));
break;
3456 case T6::ID: ::new (p)
T6(
static_cast<T6&&
>(
msg));
break;
3457 case T7::ID: ::new (p)
T7(
static_cast<T7&&
>(
msg));
break;
3470 template <
typename T1,
typename T2,
typename T3,
typename T4,
3471 typename T5,
typename T6>
3472 class message_packet<
T1,
T2,
T3,
T4,
T5,
T6,
void,
void,
void,
void,
void,
void,
void,
void,
void,
void>
3490 add_new_message(
msg);
3502 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
3509 add_new_message(etl::move(
msg));
3522 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) && !defined(ETL_COMPILER_GREEN_HILLS)
3536 ETL_STATIC_ASSERT(
Enabled,
"Message not in packet type list");
3542 template <
typename TMessage>
3553 ETL_STATIC_ASSERT(
Enabled,
"Message not in packet type list");
3561 : valid(
other.is_valid())
3565 add_new_message(
other.get());
3570 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
3574 : valid(
other.is_valid())
3578 add_new_message(etl::move(
other.get()));
3588 delete_current_message();
3589 valid =
rhs.is_valid();
3592 add_new_message(
rhs.get());
3599 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
3604 delete_current_message();
3605 valid =
rhs.is_valid();
3608 add_new_message(etl::move(
rhs.get()));
3619 delete_current_message();
3635 bool is_valid()
const
3643 return T1::ID ==
id || T2::ID ==
id || T3::ID ==
id || T4::ID ==
id ||
3644 T5::ID ==
id || T6::ID == id;
3650 return accepts(
msg.get_message_id());
3654 template <etl::message_
id_t Id>
3655 static ETL_CONSTEXPR
bool accepts()
3657 return T1::ID ==
Id || T2::ID ==
Id || T3::ID ==
Id || T4::ID ==
Id ||
3658 T5::ID ==
Id || T6::ID ==
Id;
3662 template <
typename TMessage>
3663 static ETL_CONSTEXPR
3667 return T1::ID == TMessage::ID || T2::ID == TMessage::ID || T3::ID == TMessage::ID || T4::ID == TMessage::ID ||
3668 T5::ID == TMessage::ID || T6::ID == TMessage::ID;
3681 void delete_current_message()
3688 #if ETL_HAS_VIRTUAL_MESSAGES
3691 delete_message(
pmsg);
3700 switch (
pmsg->get_message_id())
3702 case T1::ID:
static_cast<const T1*
>(
pmsg)->~
T1();
break;
3703 case T2::ID:
static_cast<const T2*
>(
pmsg)->~
T2();
break;
3704 case T3::ID:
static_cast<const T3*
>(
pmsg)->~
T3();
break;
3705 case T4::ID:
static_cast<const T4*
>(
pmsg)->~
T4();
break;
3706 case T5::ID:
static_cast<const T5*
>(
pmsg)->~
T5();
break;
3707 case T6::ID:
static_cast<const T6*
>(
pmsg)->~
T6();
break;
3715 const size_t id =
msg.get_message_id();
3720 case T1::ID: ::new (p)
T1(
static_cast<const T1&
>(
msg));
break;
3721 case T2::ID: ::new (p)
T2(
static_cast<const T2&
>(
msg));
break;
3722 case T3::ID: ::new (p)
T3(
static_cast<const T3&
>(
msg));
break;
3723 case T4::ID: ::new (p)
T4(
static_cast<const T4&
>(
msg));
break;
3724 case T5::ID: ::new (p)
T5(
static_cast<const T5&
>(
msg));
break;
3725 case T6::ID: ::new (p)
T6(
static_cast<const T6&
>(
msg));
break;
3730 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
3734 const size_t id =
msg.get_message_id();
3739 case T1::ID: ::new (p)
T1(
static_cast<T1&&
>(
msg));
break;
3740 case T2::ID: ::new (p)
T2(
static_cast<T2&&
>(
msg));
break;
3741 case T3::ID: ::new (p)
T3(
static_cast<T3&&
>(
msg));
break;
3742 case T4::ID: ::new (p)
T4(
static_cast<T4&&
>(
msg));
break;
3743 case T5::ID: ::new (p)
T5(
static_cast<T5&&
>(
msg));
break;
3744 case T6::ID: ::new (p)
T6(
static_cast<T6&&
>(
msg));
break;
3757 template <
typename T1,
typename T2,
typename T3,
typename T4,
3759 class message_packet<
T1,
T2,
T3,
T4,
T5,
void,
void,
void,
void,
void,
void,
void,
void,
void,
void,
void>
3777 add_new_message(
msg);
3789 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
3796 add_new_message(etl::move(
msg));
3809 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) && !defined(ETL_COMPILER_GREEN_HILLS)
3823 ETL_STATIC_ASSERT(
Enabled,
"Message not in packet type list");
3829 template <
typename TMessage>
3840 ETL_STATIC_ASSERT(
Enabled,
"Message not in packet type list");
3848 : valid(
other.is_valid())
3852 add_new_message(
other.get());
3857 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
3861 : valid(
other.is_valid())
3865 add_new_message(etl::move(
other.get()));
3875 delete_current_message();
3876 valid =
rhs.is_valid();
3879 add_new_message(
rhs.get());
3886 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
3891 delete_current_message();
3892 valid =
rhs.is_valid();
3895 add_new_message(etl::move(
rhs.get()));
3906 delete_current_message();
3922 bool is_valid()
const
3930 return T1::ID ==
id || T2::ID ==
id || T3::ID ==
id || T4::ID ==
id ||
3937 return accepts(
msg.get_message_id());
3941 template <etl::message_
id_t Id>
3942 static ETL_CONSTEXPR
bool accepts()
3944 return T1::ID ==
Id || T2::ID ==
Id || T3::ID ==
Id || T4::ID ==
Id ||
3949 template <
typename TMessage>
3950 static ETL_CONSTEXPR
3954 return T1::ID == TMessage::ID || T2::ID == TMessage::ID || T3::ID == TMessage::ID || T4::ID == TMessage::ID ||
3955 T5::ID == TMessage::ID;
3968 void delete_current_message()
3975 #if ETL_HAS_VIRTUAL_MESSAGES
3978 delete_message(
pmsg);
3987 switch (
pmsg->get_message_id())
3989 case T1::ID:
static_cast<const T1*
>(
pmsg)->~
T1();
break;
3990 case T2::ID:
static_cast<const T2*
>(
pmsg)->~
T2();
break;
3991 case T3::ID:
static_cast<const T3*
>(
pmsg)->~
T3();
break;
3992 case T4::ID:
static_cast<const T4*
>(
pmsg)->~
T4();
break;
3993 case T5::ID:
static_cast<const T5*
>(
pmsg)->~
T5();
break;
4001 const size_t id =
msg.get_message_id();
4006 case T1::ID: ::new (p)
T1(
static_cast<const T1&
>(
msg));
break;
4007 case T2::ID: ::new (p)
T2(
static_cast<const T2&
>(
msg));
break;
4008 case T3::ID: ::new (p)
T3(
static_cast<const T3&
>(
msg));
break;
4009 case T4::ID: ::new (p)
T4(
static_cast<const T4&
>(
msg));
break;
4010 case T5::ID: ::new (p)
T5(
static_cast<const T5&
>(
msg));
break;
4015 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
4019 const size_t id =
msg.get_message_id();
4024 case T1::ID: ::new (p)
T1(
static_cast<T1&&
>(
msg));
break;
4025 case T2::ID: ::new (p)
T2(
static_cast<T2&&
>(
msg));
break;
4026 case T3::ID: ::new (p)
T3(
static_cast<T3&&
>(
msg));
break;
4027 case T4::ID: ::new (p)
T4(
static_cast<T4&&
>(
msg));
break;
4028 case T5::ID: ::new (p)
T5(
static_cast<T5&&
>(
msg));
break;
4041 template <
typename T1,
typename T2,
typename T3,
typename T4>
4042 class message_packet<
T1,
T2,
T3,
T4,
void,
void,
void,
void,
void,
void,
void,
void,
void,
void,
void,
void>
4060 add_new_message(
msg);
4072 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
4079 add_new_message(etl::move(
msg));
4092 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) && !defined(ETL_COMPILER_GREEN_HILLS)
4106 ETL_STATIC_ASSERT(
Enabled,
"Message not in packet type list");
4112 template <
typename TMessage>
4123 ETL_STATIC_ASSERT(
Enabled,
"Message not in packet type list");
4131 : valid(
other.is_valid())
4135 add_new_message(
other.get());
4140 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
4144 : valid(
other.is_valid())
4148 add_new_message(etl::move(
other.get()));
4158 delete_current_message();
4159 valid =
rhs.is_valid();
4162 add_new_message(
rhs.get());
4169 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
4174 delete_current_message();
4175 valid =
rhs.is_valid();
4178 add_new_message(etl::move(
rhs.get()));
4189 delete_current_message();
4205 bool is_valid()
const
4213 return T1::ID ==
id || T2::ID ==
id || T3::ID ==
id || T4::ID == id;
4219 return accepts(
msg.get_message_id());
4223 template <etl::message_
id_t Id>
4224 static ETL_CONSTEXPR
bool accepts()
4226 return T1::ID ==
Id || T2::ID ==
Id || T3::ID ==
Id || T4::ID ==
Id;
4230 template <
typename TMessage>
4231 static ETL_CONSTEXPR
4235 return T1::ID == TMessage::ID || T2::ID == TMessage::ID || T3::ID == TMessage::ID || T4::ID == TMessage::ID;
4248 void delete_current_message()
4255 #if ETL_HAS_VIRTUAL_MESSAGES
4258 delete_message(
pmsg);
4267 switch (
pmsg->get_message_id())
4269 case T1::ID:
static_cast<const T1*
>(
pmsg)->~
T1();
break;
4270 case T2::ID:
static_cast<const T2*
>(
pmsg)->~
T2();
break;
4271 case T3::ID:
static_cast<const T3*
>(
pmsg)->~
T3();
break;
4272 case T4::ID:
static_cast<const T4*
>(
pmsg)->~
T4();
break;
4280 const size_t id =
msg.get_message_id();
4285 case T1::ID: ::new (p)
T1(
static_cast<const T1&
>(
msg));
break;
4286 case T2::ID: ::new (p)
T2(
static_cast<const T2&
>(
msg));
break;
4287 case T3::ID: ::new (p)
T3(
static_cast<const T3&
>(
msg));
break;
4288 case T4::ID: ::new (p)
T4(
static_cast<const T4&
>(
msg));
break;
4293 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
4297 const size_t id =
msg.get_message_id();
4302 case T1::ID: ::new (p)
T1(
static_cast<T1&&
>(
msg));
break;
4303 case T2::ID: ::new (p)
T2(
static_cast<T2&&
>(
msg));
break;
4304 case T3::ID: ::new (p)
T3(
static_cast<T3&&
>(
msg));
break;
4305 case T4::ID: ::new (p)
T4(
static_cast<T4&&
>(
msg));
break;
4318 template <
typename T1,
typename T2,
typename T3>
4319 class message_packet<
T1,
T2,
T3,
void,
void,
void,
void,
void,
void,
void,
void,
void,
void,
void,
void,
void>
4337 add_new_message(
msg);
4349 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
4356 add_new_message(etl::move(
msg));
4369 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) && !defined(ETL_COMPILER_GREEN_HILLS)
4383 ETL_STATIC_ASSERT(
Enabled,
"Message not in packet type list");
4389 template <
typename TMessage>
4392 !
etl::is_one_of<
typename etl::remove_cvref<TMessage>::type,
T1,
T2,
T3>::value,
int>::type = 0)
4400 ETL_STATIC_ASSERT(
Enabled,
"Message not in packet type list");
4408 : valid(
other.is_valid())
4412 add_new_message(
other.get());
4417 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
4421 : valid(
other.is_valid())
4425 add_new_message(etl::move(
other.get()));
4435 delete_current_message();
4436 valid =
rhs.is_valid();
4439 add_new_message(
rhs.get());
4446 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
4451 delete_current_message();
4452 valid =
rhs.is_valid();
4455 add_new_message(etl::move(
rhs.get()));
4466 delete_current_message();
4482 bool is_valid()
const
4490 return T1::ID ==
id || T2::ID ==
id || T3::ID == id;
4496 return accepts(
msg.get_message_id());
4500 template <etl::message_
id_t Id>
4501 static ETL_CONSTEXPR
bool accepts()
4503 return T1::ID ==
Id || T2::ID ==
Id || T3::ID ==
Id;
4507 template <
typename TMessage>
4508 static ETL_CONSTEXPR
4512 return T1::ID == TMessage::ID || T2::ID == TMessage::ID || T3::ID == TMessage::ID;
4525 void delete_current_message()
4532 #if ETL_HAS_VIRTUAL_MESSAGES
4535 delete_message(
pmsg);
4544 switch (
pmsg->get_message_id())
4546 case T1::ID:
static_cast<const T1*
>(
pmsg)->~
T1();
break;
4547 case T2::ID:
static_cast<const T2*
>(
pmsg)->~
T2();
break;
4548 case T3::ID:
static_cast<const T3*
>(
pmsg)->~
T3();
break;
4556 const size_t id =
msg.get_message_id();
4561 case T1::ID: ::new (p)
T1(
static_cast<const T1&
>(
msg));
break;
4562 case T2::ID: ::new (p)
T2(
static_cast<const T2&
>(
msg));
break;
4563 case T3::ID: ::new (p)
T3(
static_cast<const T3&
>(
msg));
break;
4568 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
4572 const size_t id =
msg.get_message_id();
4577 case T1::ID: ::new (p)
T1(
static_cast<T1&&
>(
msg));
break;
4578 case T2::ID: ::new (p)
T2(
static_cast<T2&&
>(
msg));
break;
4579 case T3::ID: ::new (p)
T3(
static_cast<T3&&
>(
msg));
break;
4592 template <
typename T1,
typename T2>
4593 class message_packet<
T1,
T2,
void,
void,
void,
void,
void,
void,
void,
void,
void,
void,
void,
void,
void,
void>
4611 add_new_message(
msg);
4623 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
4630 add_new_message(etl::move(
msg));
4643 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) && !defined(ETL_COMPILER_GREEN_HILLS)
4657 ETL_STATIC_ASSERT(
Enabled,
"Message not in packet type list");
4663 template <
typename TMessage>
4666 !
etl::is_one_of<
typename etl::remove_cvref<TMessage>::type,
T1,
T2>::value,
int>::type = 0)
4674 ETL_STATIC_ASSERT(
Enabled,
"Message not in packet type list");
4682 : valid(
other.is_valid())
4686 add_new_message(
other.get());
4691 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
4695 : valid(
other.is_valid())
4699 add_new_message(etl::move(
other.get()));
4709 delete_current_message();
4710 valid =
rhs.is_valid();
4713 add_new_message(
rhs.get());
4720 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
4725 delete_current_message();
4726 valid =
rhs.is_valid();
4729 add_new_message(etl::move(
rhs.get()));
4740 delete_current_message();
4756 bool is_valid()
const
4764 return T1::ID ==
id || T2::ID == id;
4770 return accepts(
msg.get_message_id());
4774 template <etl::message_
id_t Id>
4775 static ETL_CONSTEXPR
bool accepts()
4777 return T1::ID ==
Id || T2::ID ==
Id;
4781 template <
typename TMessage>
4782 static ETL_CONSTEXPR
4786 return T1::ID == TMessage::ID || T2::ID == TMessage::ID;
4799 void delete_current_message()
4806 #if ETL_HAS_VIRTUAL_MESSAGES
4809 delete_message(
pmsg);
4818 switch (
pmsg->get_message_id())
4820 case T1::ID:
static_cast<const T1*
>(
pmsg)->~
T1();
break;
4821 case T2::ID:
static_cast<const T2*
>(
pmsg)->~
T2();
break;
4829 const size_t id =
msg.get_message_id();
4834 case T1::ID: ::new (p)
T1(
static_cast<const T1&
>(
msg));
break;
4835 case T2::ID: ::new (p)
T2(
static_cast<const T2&
>(
msg));
break;
4840 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
4844 const size_t id =
msg.get_message_id();
4849 case T1::ID: ::new (p)
T1(
static_cast<T1&&
>(
msg));
break;
4850 case T2::ID: ::new (p)
T2(
static_cast<T2&&
>(
msg));
break;
4863 template <
typename T1>
4864 class message_packet<
T1,
void,
void,
void,
void,
void,
void,
void,
void,
void,
void,
void,
void,
void,
void,
void>
4882 add_new_message(
msg);
4894 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
4901 add_new_message(etl::move(
msg));
4914 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) && !defined(ETL_COMPILER_GREEN_HILLS)
4928 ETL_STATIC_ASSERT(
Enabled,
"Message not in packet type list");
4934 template <
typename TMessage>
4937 !
etl::is_one_of<
typename etl::remove_cvref<TMessage>::type,
T1>::value,
int>::type = 0)
4945 ETL_STATIC_ASSERT(
Enabled,
"Message not in packet type list");
4953 : valid(
other.is_valid())
4957 add_new_message(
other.get());
4962 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
4966 : valid(
other.is_valid())
4970 add_new_message(etl::move(
other.get()));
4980 delete_current_message();
4981 valid =
rhs.is_valid();
4984 add_new_message(
rhs.get());
4991 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
4996 delete_current_message();
4997 valid =
rhs.is_valid();
5000 add_new_message(etl::move(
rhs.get()));
5011 delete_current_message();
5027 bool is_valid()
const
5035 return T1::ID == id;
5041 return accepts(
msg.get_message_id());
5045 template <etl::message_
id_t Id>
5046 static ETL_CONSTEXPR
bool accepts()
5048 return T1::ID ==
Id;
5052 template <
typename TMessage>
5053 static ETL_CONSTEXPR
5057 return T1::ID == TMessage::ID;
5070 void delete_current_message()
5077 #if ETL_HAS_VIRTUAL_MESSAGES
5080 delete_message(
pmsg);
5089 switch (
pmsg->get_message_id())
5091 case T1::ID:
static_cast<const T1*
>(
pmsg)->~
T1();
break;
5099 const size_t id =
msg.get_message_id();
5104 case T1::ID: ::new (p)
T1(
static_cast<const T1&
>(
msg));
break;
5109 #if ETL_USING_CPP11 && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)
5113 const size_t id =
msg.get_message_id();
5118 case T1::ID: ::new (p)
T1(
static_cast<T1&&
>(
msg));
break;
Definition message_packet.h:393
#define ETL_ASSERT(b, e)
Definition error_handler.h:356
enable_if
Definition type_traits_generator.h:1186
is_same
Definition type_traits_generator.h:1036
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