diff --git a/include/etl/generators/message_packet_generator.h b/include/etl/generators/message_packet_generator.h index 1524e8f6..a05e51e4 100644 --- a/include/etl/generators/message_packet_generator.h +++ b/include/etl/generators/message_packet_generator.h @@ -85,36 +85,74 @@ namespace etl //******************************************** message_packet() - : valid(false) + : data() + , valid(false) { } //******************************************** explicit message_packet(const etl::imessage& msg) - : valid(true) + : data() { - add_new_message(msg); + if (accepts(msg)) + { + add_new_message(msg); + valid = true; + } + else + { + valid = false; + } + + ETL_ASSERT(valid, ETL_ERROR(unhandled_message_exception)); } //******************************************** explicit message_packet(etl::imessage&& msg) - : valid(true) + : data() { - add_new_message(etl::move(msg)); + if (accepts(msg)) + { + add_new_message(etl::move(msg)); + valid = true; + } + else + { + valid = false; + } + + ETL_ASSERT(valid, ETL_ERROR(unhandled_message_exception)); } //******************************************** - template , etl::imessage> && - !etl::is_same_v, etl::message_packet>, int> = 0> + template , etl::message_packet> && + !etl::is_same_v, etl::imessage> && + !etl::is_one_of_v, TMessageTypes...>, int>> explicit message_packet(TMessage&& msg) - : valid(true) + : data() + , valid(true) + { + // Not etl::message_packet, not etl::imessage and in typelist. + constexpr bool Enabled = (!etl::is_same_v, etl::message_packet> && + !etl::is_same_v, etl::imessage> && + etl::is_one_of_v, TMessageTypes...>); + + ETL_STATIC_ASSERT(Enabled, "Message not in packet type list"); + } + + //******************************************** + template , TMessageTypes...>, int>> + explicit message_packet(TMessage&& msg) + : data() + , valid(true) { add_new_message(etl::forward(msg)); } //********************************************** message_packet(const message_packet& other) - : valid(other.is_valid()) + : data() + , valid(other.is_valid()) { if (valid) { @@ -124,7 +162,8 @@ namespace etl //********************************************** message_packet(message_packet&& other) - : valid(other.is_valid()) + : data() + , valid(other.is_valid()) { if (valid) { @@ -204,7 +243,7 @@ namespace etl //********************************************** template static ETL_CONSTEXPR - typename etl::enable_if::value, bool>::type + typename etl::enable_if::value, bool>::type accepts() { return accepts(); @@ -220,14 +259,14 @@ namespace etl //********************************************** template - static ETL_CONSTEXPR bool accepts_message() + static bool accepts_message() { return Id1 == Id2; } //********************************************** template - static ETL_CONSTEXPR bool accepts_message(etl::message_id_t id2) + static bool accepts_message(etl::message_id_t id2) { return Id1 == id2; } @@ -242,10 +281,7 @@ namespace etl #if defined(ETL_MESSAGES_ARE_VIRTUAL) || defined(ETL_POLYMORPHIC_MESSAGES) pmsg->~imessage(); #else - if (!(delete_current_message_type(pmsg->get_message_id()) || ...)) - { - ETL_ALWAYS_ASSERT(ETL_ERROR(unhandled_message_exception)); - } + (delete_current_message_type(pmsg->get_message_id()) || ...); #endif } } @@ -253,29 +289,20 @@ namespace etl //******************************************** void add_new_message(const etl::imessage& msg) { - if (!(add_new_message_type(msg) || ...)) - { - ETL_ALWAYS_ASSERT(ETL_ERROR(unhandled_message_exception)); - } + (add_new_message_type(msg) || ...); } //******************************************** void add_new_message(etl::imessage&& msg) { - if (!(add_new_message_type(etl::move(msg)) || ...)) - { - ETL_ALWAYS_ASSERT(ETL_ERROR(unhandled_message_exception)); - } + (add_new_message_type(etl::move(msg)) || ...); } //******************************************** - template , etl::imessage>, int> = 0> + template , TMessageTypes...>, int>> void add_new_message(TMessage&& msg) { - if (!(add_new_message_type::ID>(etl::forward(msg)) || ...)) - { - ETL_ALWAYS_ASSERT(ETL_ERROR(unhandled_message_exception)); - } + (add_new_message_type::ID>(etl::forward(msg)) || ...); } typename etl::aligned_storage::type data; @@ -367,16 +394,64 @@ namespace etl /*[[[cog import cog - def accepts_return(num_id): + + def generate_accepts_return(n): cog.out(" return") - for i in range(1, num_id + 1): + for i in range(1, n + 1): cog.out(" T%d::ID == id" % i) - if i < num_id: + if i < n: cog.out(" ||") if i % 4 == 0: cog.outl("") cog.out(" ") cog.outl(";") + + def generate_accepts_return_compile_time(n): + cog.out(" return") + for i in range(1, n + 1): + cog.out(" T%d::ID == Id" % i) + if i < n: + cog.out(" ||") + if i % 4 == 0: + cog.outl("") + cog.out(" ") + cog.outl(";") + + def generate_accepts_return_compile_time_TMessage(n): + cog.outl(" ETL_CONSTANT etl::message_id_t id = TMessage::ID;") + cog.outl("") + cog.out(" return") + for i in range(1, n + 1): + cog.out(" T%d::ID == id" % i) + if i < n: + cog.out(" ||") + if i % 4 == 0: + cog.outl("") + cog.out(" ") + cog.outl(";") + + def generate_static_assert_cpp03(n): + cog.outl(" // Not etl::message_packet, not etl::imessage and in typelist.") + cog.out(" static const bool Enabled = (!etl::is_same::type, etl::message_packet<") + for i in range(1, n): + cog.out("T%d, " % i) + cog.outl("T%s> >::value &&" % n) + cog.outl(" !etl::is_same::type, etl::imessage>::value &&") + cog.out(" etl::is_one_of::type,") + for i in range(1, n): + cog.out("T%d, " % i) + cog.outl("T%s>::value);" % n) + cog.outl("") + cog.outl(" ETL_STATIC_ASSERT(Enabled, \"Message not in packet type list\");") + + def generate_static_assert_cpp11(): + cog.outl(" // Not etl::message_packet, not etl::imessage and in typelist.") + cog.outl(" constexpr bool Enabled = (!etl::is_same_v, etl::message_packet> &&") + cog.outl(" !etl::is_same_v, etl::imessage> &&") + cog.outl(" etl::is_one_of_v, TMessageTypes...>);") + cog.outl("") + cog.outl(" ETL_STATIC_ASSERT(Enabled, \"Message not in packet type list\");") + ################################################ # The first definition for all of the messages. ################################################ @@ -397,29 +472,81 @@ namespace etl cog.outl("") cog.outl(" //********************************************") cog.outl(" message_packet()") - cog.outl(" : valid(false)") + cog.outl(" : data()") + cog.outl(" , valid(false)") cog.outl(" {") cog.outl(" }") cog.outl("") cog.outl(" //********************************************") cog.outl(" explicit message_packet(const etl::imessage& msg)") - cog.outl(" : valid(true)") + cog.outl(" : data()") cog.outl(" {") - cog.outl(" add_new_message(msg);") + cog.outl(" if (accepts(msg))") + cog.outl(" {") + cog.outl(" add_new_message(msg);") + cog.outl(" valid = true;") + cog.outl(" }") + cog.outl(" else") + cog.outl(" {") + cog.outl(" valid = false;") + cog.outl(" }") + cog.outl("") + cog.outl(" ETL_ASSERT(valid, ETL_ERROR(unhandled_message_exception));") cog.outl(" }") cog.outl("") - cog.outl("#if ETL_CPP11_SUPPORTED") + cog.outl("#if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)") cog.outl(" //********************************************") cog.outl(" explicit message_packet(etl::imessage&& msg)") - cog.outl(" : valid(true)") + cog.outl(" : data()") cog.outl(" {") - cog.outl(" add_new_message(etl::move(msg));") + cog.outl(" if (accepts(msg))") + cog.outl(" {") + cog.outl(" add_new_message(etl::move(msg));") + cog.outl(" valid = true;") + cog.outl(" }") + cog.outl(" else") + cog.outl(" {") + cog.outl(" valid = false;") + cog.outl(" }") + cog.outl("") + cog.outl(" ETL_ASSERT(valid, ETL_ERROR(unhandled_message_exception));") + cog.outl(" }") + cog.outl("#endif") + cog.outl("") + cog.outl("#if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)") + cog.outl(" //********************************************") + cog.outl(" template , etl::message_packet> &&") + cog.outl(" !etl::is_same_v, etl::imessage> &&") + cog.outl(" !etl::is_one_of_v, TMessageHandlers...>>") + cog.outl(" explicit message_packet(TMessage&& msg)") + cog.outl(" : data()") + cog.outl(" , valid(true)") + cog.outl(" {") + generate_static_assert_cpp11() + cog.outl(" }") + cog.outl("#else") + cog.outl(" //********************************************") + cog.outl(" template ") + cog.out(" explicit message_packet(const TMessage& msg, typename etl::enable_if::type, etl::message_packet<") + for n in range(1, int(Handlers)): + cog.out("T%s, " % n) + cog.outl("T%s> >::value &&" % int(Handlers)) + cog.outl(" !etl::is_same::type, etl::imessage>::value &&") + cog.out(" !etl::is_one_of::type, ") + for n in range(1, int(Handlers)): + cog.out("T%s, " % n) + cog.outl("T%s>::value, int>::type = 0)" % int(Handlers)) + cog.outl(" : data()") + cog.outl(" , valid(true)") + cog.outl(" {") + generate_static_assert_cpp03(int(Handlers)) cog.outl(" }") cog.outl("#endif") cog.outl("") cog.outl(" //**********************************************") cog.outl(" message_packet(const message_packet& other)") - cog.outl(" : valid(other.is_valid())") + cog.outl(" : data()") + cog.outl(" , valid(other.is_valid())") cog.outl(" {") cog.outl(" if (valid)") cog.outl(" {") @@ -427,10 +554,11 @@ namespace etl cog.outl(" }") cog.outl(" }") cog.outl("") - cog.outl("#if ETL_CPP11_SUPPORTED") + cog.outl("#if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)") cog.outl(" //**********************************************") cog.outl(" message_packet(message_packet&& other)") - cog.outl(" : valid(other.is_valid())") + cog.outl(" : data()") + cog.outl(" , valid(other.is_valid())") cog.outl(" {") cog.outl(" if (valid)") cog.outl(" {") @@ -452,7 +580,7 @@ namespace etl cog.outl(" return *this;") cog.outl(" }") cog.outl("") - cog.outl("#if ETL_CPP11_SUPPORTED") + cog.outl("#if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)") cog.outl(" //**********************************************") cog.outl(" message_packet& operator =(message_packet&& rhs)") cog.outl(" {") @@ -494,7 +622,7 @@ namespace etl cog.outl(" //**********************************************") cog.outl(" static ETL_CONSTEXPR bool accepts(etl::message_id_t id)") cog.outl(" {") - accepts_return(int(Handlers)) + generate_accepts_return(int(Handlers)) cog.outl(" }") cog.outl("") cog.outl(" //**********************************************") @@ -507,16 +635,16 @@ namespace etl cog.outl(" template ") cog.outl(" static ETL_CONSTEXPR bool accepts()") cog.outl(" {") - cog.outl(" return accepts(Id);") + generate_accepts_return_compile_time(int(Handlers)) cog.outl(" }") cog.outl("") cog.outl(" //**********************************************") cog.outl(" template ") cog.outl(" static ETL_CONSTEXPR") - cog.outl(" typename etl::enable_if::value, bool>::type") + cog.outl(" typename etl::enable_if::value, bool>::type") cog.outl(" accepts()") cog.outl(" {") - cog.outl(" return accepts(TMessage::ID);") + generate_accepts_return_compile_time_TMessage(int(Handlers)) cog.outl(" }") cog.outl("") cog.outl(" enum") @@ -569,7 +697,7 @@ namespace etl cog.outl(" }") cog.outl(" }") cog.outl("") - cog.outl("#if ETL_CPP11_SUPPORTED") + cog.outl("#if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)") cog.outl(" //********************************************") cog.outl(" void add_new_message(etl::imessage&& msg)") cog.outl(" {") @@ -624,29 +752,85 @@ namespace etl cog.outl("") cog.outl(" //********************************************") cog.outl(" message_packet()") - cog.outl(" : valid(false)") + cog.outl(" : data()") + cog.outl(" , valid(false)") cog.outl(" {") cog.outl(" }") cog.outl("") cog.outl(" //********************************************") cog.outl(" explicit message_packet(const etl::imessage& msg)") - cog.outl(" : valid(true)") + cog.outl(" : data()") cog.outl(" {") - cog.outl(" add_new_message(msg);") + cog.outl(" if (accepts(msg))") + cog.outl(" {") + cog.outl(" add_new_message(msg);") + cog.outl(" valid = true;") + cog.outl(" }") + cog.outl(" else") + cog.outl(" {") + cog.outl(" valid = false;") + cog.outl(" }") + cog.outl("") + cog.outl(" ETL_ASSERT(valid, ETL_ERROR(unhandled_message_exception));") cog.outl(" }") cog.outl("") - cog.outl("#if ETL_CPP11_SUPPORTED") + cog.outl("#if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)") cog.outl(" //********************************************") cog.outl(" explicit message_packet(etl::imessage&& msg)") - cog.outl(" : valid(true)") + cog.outl(" : data()") cog.outl(" {") - cog.outl(" add_new_message(etl::move(msg));") + cog.outl(" if (accepts(msg))") + cog.outl(" {") + cog.outl(" add_new_message(etl::move(msg));") + cog.outl(" valid = true;") + cog.outl(" }") + cog.outl(" else") + cog.outl(" {") + cog.outl(" valid = false;") + cog.outl(" }") + cog.outl("") + cog.outl(" ETL_ASSERT(valid, ETL_ERROR(unhandled_message_exception));") cog.outl(" }") cog.outl("#endif") cog.outl("") + cog.outl("#if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)") + cog.outl(" //********************************************") + cog.outl(" template , etl::message_packet> &&") + cog.outl(" !etl::is_same_v, etl::imessage> &&") + cog.outl(" !etl::is_one_of_v") + for t in range(1, n): + cog.out("T%s, " % t) + cog.outl("T%s>>" % n) + cog.outl(" explicit message_packet(TMessage&& msg)") + cog.outl(" : data()") + cog.outl(" , valid(true)") + cog.outl(" {") + generate_static_assert_cpp11() + cog.outl(" }") + cog.outl("#else") + cog.outl(" //********************************************") + cog.outl(" template ") + cog.out(" explicit message_packet(const TMessage& msg, typename etl::enable_if::type, etl::message_packet<") + for t in range(1, n): + cog.out("T%s, " % t) + cog.outl("T%s> >::value &&" % n) + cog.outl(" !etl::is_same::type, etl::imessage>::value &&") + cog.out(" !etl::is_one_of::type, ") + for t in range(1, n): + cog.out("T%s, " % t) + cog.outl("T%s>::value, int>::type = 0)" % n) + cog.outl(" : data()") + cog.outl(" , valid(true)") + cog.outl(" {") + generate_static_assert_cpp03(n) + cog.outl(" }") + cog.outl("#endif") + cog.outl("") + cog.outl("") cog.outl(" //**********************************************") cog.outl(" message_packet(const message_packet& other)") - cog.outl(" : valid(other.is_valid())") + cog.outl(" : data()") + cog.outl(" , valid(other.is_valid())") cog.outl(" {") cog.outl(" if (valid)") cog.outl(" {") @@ -654,10 +838,11 @@ namespace etl cog.outl(" }") cog.outl(" }") cog.outl("") - cog.outl("#if ETL_CPP11_SUPPORTED") + cog.outl("#if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)") cog.outl(" //**********************************************") cog.outl(" message_packet(message_packet&& other)") - cog.outl(" : valid(other.is_valid())") + cog.outl(" : data()") + cog.outl(" , valid(other.is_valid())") cog.outl(" {") cog.outl(" if (valid)") cog.outl(" {") @@ -679,7 +864,7 @@ namespace etl cog.outl(" return *this;") cog.outl(" }") cog.outl("") - cog.outl("#if ETL_CPP11_SUPPORTED") + cog.outl("#if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)") cog.outl(" //**********************************************") cog.outl(" message_packet& operator =(message_packet&& rhs)") cog.outl(" {") @@ -721,7 +906,7 @@ namespace etl cog.outl(" //**********************************************") cog.outl(" static ETL_CONSTEXPR bool accepts(etl::message_id_t id)") cog.outl(" {") - accepts_return(n) + generate_accepts_return(n) cog.outl(" }") cog.outl("") cog.outl(" //**********************************************") @@ -734,16 +919,16 @@ namespace etl cog.outl(" template ") cog.outl(" static ETL_CONSTEXPR bool accepts()") cog.outl(" {") - cog.outl(" return accepts(Id);") + generate_accepts_return_compile_time(n) cog.outl(" }") cog.outl("") cog.outl(" //**********************************************") cog.outl(" template ") cog.outl(" static ETL_CONSTEXPR") - cog.outl(" typename etl::enable_if::value, bool>::type") + cog.outl(" typename etl::enable_if::value, bool>::type") cog.outl(" accepts()") cog.outl(" {") - cog.outl(" return accepts(TMessage::ID);") + generate_accepts_return_compile_time_TMessage(n) cog.outl(" }") cog.outl("") cog.outl(" enum") @@ -792,11 +977,11 @@ namespace etl cog.outl(" {") for t in range(1, n + 1): cog.outl(" case T%d::ID: ::new (p) T%d(static_cast(msg)); break;" %(t, t, t)) - cog.outl(" default: ETL_ASSERT(false, ETL_ERROR(unhandled_message_exception)); break;") + cog.outl(" default: break;") cog.outl(" }") cog.outl(" }") cog.outl("") - cog.outl("#if ETL_CPP11_SUPPORTED") + cog.outl("#if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION)") cog.outl(" //********************************************") cog.outl(" void add_new_message(etl::imessage&& msg)") cog.outl(" {") @@ -807,7 +992,7 @@ namespace etl cog.outl(" {") for t in range(1, n + 1): cog.outl(" case T%d::ID: ::new (p) T%d(static_cast(msg)); break;" %(t, t, t)) - cog.outl(" default: ETL_ASSERT(false, ETL_ERROR(unhandled_message_exception)); break;") + cog.outl(" default: break;") cog.outl(" }") cog.outl(" }") cog.outl("#endif") diff --git a/include/etl/message_packet.h b/include/etl/message_packet.h index d486c215..6d6bc007 100644 --- a/include/etl/message_packet.h +++ b/include/etl/message_packet.h @@ -113,20 +113,25 @@ namespace etl } //******************************************** - template , etl::message_packet> && - !etl::is_same_v, etl::imessage> && - !etl::is_one_of_v, TMessageTypes...>, int> = 0> - explicit message_packet(TMessage&& msg) + template , etl::message_packet> && + !etl::is_same_v, etl::imessage> && + !etl::is_one_of_v, TMessageTypes...>, int>> + explicit message_packet(TMessage&& msg) : data() , valid(true) { - ETL_STATIC_ASSERT(false, "Unsupported message type"); + // Not etl::message_packet, not etl::imessage and in typelist. + constexpr bool Enabled = (!etl::is_same_v, etl::message_packet> && + !etl::is_same_v, etl::imessage> && + etl::is_one_of_v, TMessageTypes...>); + + ETL_STATIC_ASSERT(Enabled, "Message not in packet type list"); } //******************************************** - template , TMessageTypes...>, int> = 0> + template , TMessageTypes...>, int>> explicit message_packet(TMessage&& msg) - : data() + : data() , valid(true) { add_new_message(etl::forward(msg)); @@ -282,7 +287,7 @@ namespace etl } //******************************************** - template , TMessageTypes...>, int> = 0> + template , TMessageTypes...>, int>> void add_new_message(TMessage&& msg) { (add_new_message_type::ID>(etl::forward(msg)) || ...); @@ -410,7 +415,7 @@ namespace etl ETL_ASSERT(valid, ETL_ERROR(unhandled_message_exception)); } - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //******************************************** explicit message_packet(etl::imessage&& msg) : data() @@ -429,46 +434,40 @@ namespace etl } #endif - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //******************************************** - template ::type,T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>::value, int>::type = 0> + template , etl::message_packet> && + !etl::is_same_v, etl::imessage> && + !etl::is_one_of_v, TMessageHandlers...>> explicit message_packet(TMessage&& msg) : data() , valid(true) { - add_new_message(etl::forward(msg)); + // Not etl::message_packet, not etl::imessage and in typelist. + constexpr bool Enabled = (!etl::is_same_v, etl::message_packet> && + !etl::is_same_v, etl::imessage> && + etl::is_one_of_v, TMessageTypes...>); + + ETL_STATIC_ASSERT(Enabled, "Message not in packet type list"); } #else //******************************************** template - explicit message_packet(const TMessage& msg, typename etl::enable_if::type, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>::value, int>::type Dummy = 0) + explicit message_packet(const TMessage& msg, typename etl::enable_if::type, etl::message_packet >::value && + !etl::is_same::type, etl::imessage>::value && + !etl::is_one_of::type, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>::value, int>::type = 0) : data() , valid(true) { - add_new_message(msg); + // Not etl::message_packet, not etl::imessage and in typelist. + static const bool Enabled = (!etl::is_same::type, etl::message_packet >::value && + !etl::is_same::type, etl::imessage>::value && + etl::is_one_of::type,T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>::value); + + ETL_STATIC_ASSERT(Enabled, "Message not in packet type list"); } #endif - //******************************************** - template , etl::message_packet>::value && - !etl::is_same, etl::imessage>::value && - !etl::is_one_of, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>::value, int> = 0> - explicit message_packet(const TMessage& msg) - : data() - , valid(true) - { - ETL_STATIC_ASSERT(false, "Unsupported message type"); - } - - //******************************************** - template , T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>, int> = 0> - explicit message_packet(const TMessage& msg) - : data() - , valid(true) - { - add_new_message(etl::forward(msg)); - } - //********************************************** message_packet(const message_packet& other) : data() @@ -480,7 +479,7 @@ namespace etl } } - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //********************************************** message_packet(message_packet&& other) : data() @@ -506,7 +505,7 @@ namespace etl return *this; } - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //********************************************** message_packet& operator =(message_packet&& rhs) { @@ -656,7 +655,7 @@ namespace etl } } - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //******************************************** void add_new_message(etl::imessage&& msg) { @@ -725,7 +724,7 @@ namespace etl ETL_ASSERT(valid, ETL_ERROR(unhandled_message_exception)); } - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //******************************************** explicit message_packet(etl::imessage&& msg) : data() @@ -744,44 +743,41 @@ namespace etl } #endif - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //******************************************** - template ::type,T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>::value, int>::type = 0> + template , etl::message_packet> && + !etl::is_same_v, etl::imessage> && + !etl::is_one_of_v + T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>> explicit message_packet(TMessage&& msg) : data() , valid(true) { - add_new_message(etl::forward(msg)); + // Not etl::message_packet, not etl::imessage and in typelist. + constexpr bool Enabled = (!etl::is_same_v, etl::message_packet> && + !etl::is_same_v, etl::imessage> && + etl::is_one_of_v, TMessageTypes...>); + + ETL_STATIC_ASSERT(Enabled, "Message not in packet type list"); } #else //******************************************** template - explicit message_packet(const TMessage& msg, typename etl::enable_if::type, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>::value, int>::type Dummy = 0) - : valid(true) + explicit message_packet(const TMessage& msg, typename etl::enable_if::type, etl::message_packet >::value && + !etl::is_same::type, etl::imessage>::value && + !etl::is_one_of::type, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>::value, int>::type = 0) + : data() + , valid(true) { - add_new_message(msg); + // Not etl::message_packet, not etl::imessage and in typelist. + static const bool Enabled = (!etl::is_same::type, etl::message_packet >::value && + !etl::is_same::type, etl::imessage>::value && + etl::is_one_of::type,T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>::value); + + ETL_STATIC_ASSERT(Enabled, "Message not in packet type list"); } #endif - //******************************************** - template , etl::message_packet>::value && - !etl::is_same, etl::imessage>::value && - !etl::is_one_of, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>::value, int> = 0> - explicit message_packet(const TMessage& msg) - : data() - , valid(true) - { - ETL_STATIC_ASSERT(false, "Unsupported message type"); - } - - //******************************************** - template , T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>, int> = 0> - explicit message_packet(const TMessage& msg) - : data() - , valid(true) - { - add_new_message(etl::forward(msg)); - } //********************************************** message_packet(const message_packet& other) @@ -794,7 +790,7 @@ namespace etl } } - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //********************************************** message_packet(message_packet&& other) : data() @@ -820,7 +816,7 @@ namespace etl return *this; } - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //********************************************** message_packet& operator =(message_packet&& rhs) { @@ -968,7 +964,7 @@ namespace etl } } - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //******************************************** void add_new_message(etl::imessage&& msg) { @@ -1036,7 +1032,7 @@ namespace etl ETL_ASSERT(valid, ETL_ERROR(unhandled_message_exception)); } - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //******************************************** explicit message_packet(etl::imessage&& msg) : data() @@ -1055,25 +1051,42 @@ namespace etl } #endif - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //******************************************** - template ::type,T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>::value, int>::type = 0> + template , etl::message_packet> && + !etl::is_same_v, etl::imessage> && + !etl::is_one_of_v + T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>> explicit message_packet(TMessage&& msg) : data() , valid(true) { - add_new_message(etl::forward(msg)); + // Not etl::message_packet, not etl::imessage and in typelist. + constexpr bool Enabled = (!etl::is_same_v, etl::message_packet> && + !etl::is_same_v, etl::imessage> && + etl::is_one_of_v, TMessageTypes...>); + + ETL_STATIC_ASSERT(Enabled, "Message not in packet type list"); } #else //******************************************** template - explicit message_packet(const TMessage& msg, typename etl::enable_if::type, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>::value, int>::type Dummy = 0) - : valid(true) + explicit message_packet(const TMessage& msg, typename etl::enable_if::type, etl::message_packet >::value && + !etl::is_same::type, etl::imessage>::value && + !etl::is_one_of::type, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>::value, int>::type = 0) + : data() + , valid(true) { - add_new_message(msg); + // Not etl::message_packet, not etl::imessage and in typelist. + static const bool Enabled = (!etl::is_same::type, etl::message_packet >::value && + !etl::is_same::type, etl::imessage>::value && + etl::is_one_of::type,T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>::value); + + ETL_STATIC_ASSERT(Enabled, "Message not in packet type list"); } #endif + //********************************************** message_packet(const message_packet& other) : data() @@ -1085,7 +1098,7 @@ namespace etl } } - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //********************************************** message_packet(message_packet&& other) : data() @@ -1111,7 +1124,7 @@ namespace etl return *this; } - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //********************************************** message_packet& operator =(message_packet&& rhs) { @@ -1257,7 +1270,7 @@ namespace etl } } - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //******************************************** void add_new_message(etl::imessage&& msg) { @@ -1324,7 +1337,7 @@ namespace etl ETL_ASSERT(valid, ETL_ERROR(unhandled_message_exception)); } - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //******************************************** explicit message_packet(etl::imessage&& msg) : data() @@ -1343,25 +1356,42 @@ namespace etl } #endif - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //******************************************** - template ::type,T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>::value, int>::type = 0> + template , etl::message_packet> && + !etl::is_same_v, etl::imessage> && + !etl::is_one_of_v + T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>> explicit message_packet(TMessage&& msg) : data() , valid(true) { - add_new_message(etl::forward(msg)); + // Not etl::message_packet, not etl::imessage and in typelist. + constexpr bool Enabled = (!etl::is_same_v, etl::message_packet> && + !etl::is_same_v, etl::imessage> && + etl::is_one_of_v, TMessageTypes...>); + + ETL_STATIC_ASSERT(Enabled, "Message not in packet type list"); } #else //******************************************** template - explicit message_packet(const TMessage& msg, typename etl::enable_if::type, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>::value, int>::type Dummy = 0) - : valid(true) + explicit message_packet(const TMessage& msg, typename etl::enable_if::type, etl::message_packet >::value && + !etl::is_same::type, etl::imessage>::value && + !etl::is_one_of::type, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>::value, int>::type = 0) + : data() + , valid(true) { - add_new_message(msg); + // Not etl::message_packet, not etl::imessage and in typelist. + static const bool Enabled = (!etl::is_same::type, etl::message_packet >::value && + !etl::is_same::type, etl::imessage>::value && + etl::is_one_of::type,T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>::value); + + ETL_STATIC_ASSERT(Enabled, "Message not in packet type list"); } #endif + //********************************************** message_packet(const message_packet& other) : data() @@ -1373,7 +1403,7 @@ namespace etl } } - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //********************************************** message_packet(message_packet&& other) : data() @@ -1399,7 +1429,7 @@ namespace etl return *this; } - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //********************************************** message_packet& operator =(message_packet&& rhs) { @@ -1543,7 +1573,7 @@ namespace etl } } - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //******************************************** void add_new_message(etl::imessage&& msg) { @@ -1608,7 +1638,7 @@ namespace etl ETL_ASSERT(valid, ETL_ERROR(unhandled_message_exception)); } - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //******************************************** explicit message_packet(etl::imessage&& msg) : data() @@ -1627,25 +1657,42 @@ namespace etl } #endif - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //******************************************** - template ::type,T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>::value, int>::type = 0> + template , etl::message_packet> && + !etl::is_same_v, etl::imessage> && + !etl::is_one_of_v + T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>> explicit message_packet(TMessage&& msg) : data() , valid(true) { - add_new_message(etl::forward(msg)); + // Not etl::message_packet, not etl::imessage and in typelist. + constexpr bool Enabled = (!etl::is_same_v, etl::message_packet> && + !etl::is_same_v, etl::imessage> && + etl::is_one_of_v, TMessageTypes...>); + + ETL_STATIC_ASSERT(Enabled, "Message not in packet type list"); } #else //******************************************** template - explicit message_packet(const TMessage& msg, typename etl::enable_if::type, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>::value, int>::type Dummy = 0) - : valid(true) + explicit message_packet(const TMessage& msg, typename etl::enable_if::type, etl::message_packet >::value && + !etl::is_same::type, etl::imessage>::value && + !etl::is_one_of::type, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>::value, int>::type = 0) + : data() + , valid(true) { - add_new_message(msg); + // Not etl::message_packet, not etl::imessage and in typelist. + static const bool Enabled = (!etl::is_same::type, etl::message_packet >::value && + !etl::is_same::type, etl::imessage>::value && + etl::is_one_of::type,T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>::value); + + ETL_STATIC_ASSERT(Enabled, "Message not in packet type list"); } #endif + //********************************************** message_packet(const message_packet& other) : data() @@ -1657,7 +1704,7 @@ namespace etl } } - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //********************************************** message_packet(message_packet&& other) : data() @@ -1683,7 +1730,7 @@ namespace etl return *this; } - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //********************************************** message_packet& operator =(message_packet&& rhs) { @@ -1822,7 +1869,7 @@ namespace etl } } - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //******************************************** void add_new_message(etl::imessage&& msg) { @@ -1886,7 +1933,7 @@ namespace etl ETL_ASSERT(valid, ETL_ERROR(unhandled_message_exception)); } - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //******************************************** explicit message_packet(etl::imessage&& msg) : data() @@ -1905,25 +1952,42 @@ namespace etl } #endif - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //******************************************** - template ::type,T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>::value, int>::type = 0> + template , etl::message_packet> && + !etl::is_same_v, etl::imessage> && + !etl::is_one_of_v + T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>> explicit message_packet(TMessage&& msg) : data() , valid(true) { - add_new_message(etl::forward(msg)); + // Not etl::message_packet, not etl::imessage and in typelist. + constexpr bool Enabled = (!etl::is_same_v, etl::message_packet> && + !etl::is_same_v, etl::imessage> && + etl::is_one_of_v, TMessageTypes...>); + + ETL_STATIC_ASSERT(Enabled, "Message not in packet type list"); } #else //******************************************** template - explicit message_packet(const TMessage& msg, typename etl::enable_if::type, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>::value, int>::type Dummy = 0) - : valid(true) + explicit message_packet(const TMessage& msg, typename etl::enable_if::type, etl::message_packet >::value && + !etl::is_same::type, etl::imessage>::value && + !etl::is_one_of::type, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>::value, int>::type = 0) + : data() + , valid(true) { - add_new_message(msg); + // Not etl::message_packet, not etl::imessage and in typelist. + static const bool Enabled = (!etl::is_same::type, etl::message_packet >::value && + !etl::is_same::type, etl::imessage>::value && + etl::is_one_of::type,T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>::value); + + ETL_STATIC_ASSERT(Enabled, "Message not in packet type list"); } #endif + //********************************************** message_packet(const message_packet& other) : data() @@ -1935,7 +1999,7 @@ namespace etl } } - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //********************************************** message_packet(message_packet&& other) : data() @@ -1961,7 +2025,7 @@ namespace etl return *this; } - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //********************************************** message_packet& operator =(message_packet&& rhs) { @@ -2098,7 +2162,7 @@ namespace etl } } - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //******************************************** void add_new_message(etl::imessage&& msg) { @@ -2161,7 +2225,7 @@ namespace etl ETL_ASSERT(valid, ETL_ERROR(unhandled_message_exception)); } - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //******************************************** explicit message_packet(etl::imessage&& msg) : data() @@ -2180,25 +2244,42 @@ namespace etl } #endif - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //******************************************** - template ::type,T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>::value, int>::type = 0> + template , etl::message_packet> && + !etl::is_same_v, etl::imessage> && + !etl::is_one_of_v + T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>> explicit message_packet(TMessage&& msg) : data() , valid(true) { - add_new_message(etl::forward(msg)); + // Not etl::message_packet, not etl::imessage and in typelist. + constexpr bool Enabled = (!etl::is_same_v, etl::message_packet> && + !etl::is_same_v, etl::imessage> && + etl::is_one_of_v, TMessageTypes...>); + + ETL_STATIC_ASSERT(Enabled, "Message not in packet type list"); } #else //******************************************** template - explicit message_packet(const TMessage& msg, typename etl::enable_if::type, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>::value, int>::type Dummy = 0) - : valid(true) + explicit message_packet(const TMessage& msg, typename etl::enable_if::type, etl::message_packet >::value && + !etl::is_same::type, etl::imessage>::value && + !etl::is_one_of::type, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>::value, int>::type = 0) + : data() + , valid(true) { - add_new_message(msg); + // Not etl::message_packet, not etl::imessage and in typelist. + static const bool Enabled = (!etl::is_same::type, etl::message_packet >::value && + !etl::is_same::type, etl::imessage>::value && + etl::is_one_of::type,T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>::value); + + ETL_STATIC_ASSERT(Enabled, "Message not in packet type list"); } #endif + //********************************************** message_packet(const message_packet& other) : data() @@ -2210,7 +2291,7 @@ namespace etl } } - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //********************************************** message_packet(message_packet&& other) : data() @@ -2236,7 +2317,7 @@ namespace etl return *this; } - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //********************************************** message_packet& operator =(message_packet&& rhs) { @@ -2371,7 +2452,7 @@ namespace etl } } - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //******************************************** void add_new_message(etl::imessage&& msg) { @@ -2433,7 +2514,7 @@ namespace etl ETL_ASSERT(valid, ETL_ERROR(unhandled_message_exception)); } - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //******************************************** explicit message_packet(etl::imessage&& msg) : data() @@ -2452,25 +2533,42 @@ namespace etl } #endif - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //******************************************** - template ::type,T1, T2, T3, T4, T5, T6, T7, T8, T9>::value, int>::type = 0> + template , etl::message_packet> && + !etl::is_same_v, etl::imessage> && + !etl::is_one_of_v + T1, T2, T3, T4, T5, T6, T7, T8, T9>> explicit message_packet(TMessage&& msg) : data() , valid(true) { - add_new_message(etl::forward(msg)); + // Not etl::message_packet, not etl::imessage and in typelist. + constexpr bool Enabled = (!etl::is_same_v, etl::message_packet> && + !etl::is_same_v, etl::imessage> && + etl::is_one_of_v, TMessageTypes...>); + + ETL_STATIC_ASSERT(Enabled, "Message not in packet type list"); } #else //******************************************** template - explicit message_packet(const TMessage& msg, typename etl::enable_if::type, T1, T2, T3, T4, T5, T6, T7, T8, T9>::value, int>::type Dummy = 0) - : valid(true) + explicit message_packet(const TMessage& msg, typename etl::enable_if::type, etl::message_packet >::value && + !etl::is_same::type, etl::imessage>::value && + !etl::is_one_of::type, T1, T2, T3, T4, T5, T6, T7, T8, T9>::value, int>::type = 0) + : data() + , valid(true) { - add_new_message(msg); + // Not etl::message_packet, not etl::imessage and in typelist. + static const bool Enabled = (!etl::is_same::type, etl::message_packet >::value && + !etl::is_same::type, etl::imessage>::value && + etl::is_one_of::type,T1, T2, T3, T4, T5, T6, T7, T8, T9>::value); + + ETL_STATIC_ASSERT(Enabled, "Message not in packet type list"); } #endif + //********************************************** message_packet(const message_packet& other) : data() @@ -2482,7 +2580,7 @@ namespace etl } } - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //********************************************** message_packet(message_packet&& other) : data() @@ -2508,7 +2606,7 @@ namespace etl return *this; } - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //********************************************** message_packet& operator =(message_packet&& rhs) { @@ -2641,7 +2739,7 @@ namespace etl } } - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //******************************************** void add_new_message(etl::imessage&& msg) { @@ -2701,7 +2799,7 @@ namespace etl ETL_ASSERT(valid, ETL_ERROR(unhandled_message_exception)); } - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //******************************************** explicit message_packet(etl::imessage&& msg) : data() @@ -2720,25 +2818,42 @@ namespace etl } #endif - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //******************************************** - template ::type,T1, T2, T3, T4, T5, T6, T7, T8>::value, int>::type = 0> + template , etl::message_packet> && + !etl::is_same_v, etl::imessage> && + !etl::is_one_of_v + T1, T2, T3, T4, T5, T6, T7, T8>> explicit message_packet(TMessage&& msg) : data() , valid(true) { - add_new_message(etl::forward(msg)); + // Not etl::message_packet, not etl::imessage and in typelist. + constexpr bool Enabled = (!etl::is_same_v, etl::message_packet> && + !etl::is_same_v, etl::imessage> && + etl::is_one_of_v, TMessageTypes...>); + + ETL_STATIC_ASSERT(Enabled, "Message not in packet type list"); } #else //******************************************** template - explicit message_packet(const TMessage& msg, typename etl::enable_if::type, T1, T2, T3, T4, T5, T6, T7, T8>::value, int>::type Dummy = 0) - : valid(true) + explicit message_packet(const TMessage& msg, typename etl::enable_if::type, etl::message_packet >::value && + !etl::is_same::type, etl::imessage>::value && + !etl::is_one_of::type, T1, T2, T3, T4, T5, T6, T7, T8>::value, int>::type = 0) + : data() + , valid(true) { - add_new_message(msg); + // Not etl::message_packet, not etl::imessage and in typelist. + static const bool Enabled = (!etl::is_same::type, etl::message_packet >::value && + !etl::is_same::type, etl::imessage>::value && + etl::is_one_of::type,T1, T2, T3, T4, T5, T6, T7, T8>::value); + + ETL_STATIC_ASSERT(Enabled, "Message not in packet type list"); } #endif + //********************************************** message_packet(const message_packet& other) : data() @@ -2750,7 +2865,7 @@ namespace etl } } - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //********************************************** message_packet(message_packet&& other) : data() @@ -2776,7 +2891,7 @@ namespace etl return *this; } - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //********************************************** message_packet& operator =(message_packet&& rhs) { @@ -2904,7 +3019,7 @@ namespace etl } } - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //******************************************** void add_new_message(etl::imessage&& msg) { @@ -2963,7 +3078,7 @@ namespace etl ETL_ASSERT(valid, ETL_ERROR(unhandled_message_exception)); } - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //******************************************** explicit message_packet(etl::imessage&& msg) : data() @@ -2982,25 +3097,42 @@ namespace etl } #endif - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //******************************************** - template ::type,T1, T2, T3, T4, T5, T6, T7>::value, int>::type = 0> + template , etl::message_packet> && + !etl::is_same_v, etl::imessage> && + !etl::is_one_of_v + T1, T2, T3, T4, T5, T6, T7>> explicit message_packet(TMessage&& msg) : data() , valid(true) { - add_new_message(etl::forward(msg)); + // Not etl::message_packet, not etl::imessage and in typelist. + constexpr bool Enabled = (!etl::is_same_v, etl::message_packet> && + !etl::is_same_v, etl::imessage> && + etl::is_one_of_v, TMessageTypes...>); + + ETL_STATIC_ASSERT(Enabled, "Message not in packet type list"); } #else //******************************************** template - explicit message_packet(const TMessage& msg, typename etl::enable_if::type, T1, T2, T3, T4, T5, T6, T7>::value, int>::type Dummy = 0) - : valid(true) + explicit message_packet(const TMessage& msg, typename etl::enable_if::type, etl::message_packet >::value && + !etl::is_same::type, etl::imessage>::value && + !etl::is_one_of::type, T1, T2, T3, T4, T5, T6, T7>::value, int>::type = 0) + : data() + , valid(true) { - add_new_message(msg); + // Not etl::message_packet, not etl::imessage and in typelist. + static const bool Enabled = (!etl::is_same::type, etl::message_packet >::value && + !etl::is_same::type, etl::imessage>::value && + etl::is_one_of::type,T1, T2, T3, T4, T5, T6, T7>::value); + + ETL_STATIC_ASSERT(Enabled, "Message not in packet type list"); } #endif + //********************************************** message_packet(const message_packet& other) : data() @@ -3012,7 +3144,7 @@ namespace etl } } - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //********************************************** message_packet(message_packet&& other) : data() @@ -3038,7 +3170,7 @@ namespace etl return *this; } - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //********************************************** message_packet& operator =(message_packet&& rhs) { @@ -3164,7 +3296,7 @@ namespace etl } } - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //******************************************** void add_new_message(etl::imessage&& msg) { @@ -3222,7 +3354,7 @@ namespace etl ETL_ASSERT(valid, ETL_ERROR(unhandled_message_exception)); } - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //******************************************** explicit message_packet(etl::imessage&& msg) : data() @@ -3241,25 +3373,42 @@ namespace etl } #endif - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //******************************************** - template ::type,T1, T2, T3, T4, T5, T6>::value, int>::type = 0> + template , etl::message_packet> && + !etl::is_same_v, etl::imessage> && + !etl::is_one_of_v + T1, T2, T3, T4, T5, T6>> explicit message_packet(TMessage&& msg) : data() , valid(true) { - add_new_message(etl::forward(msg)); + // Not etl::message_packet, not etl::imessage and in typelist. + constexpr bool Enabled = (!etl::is_same_v, etl::message_packet> && + !etl::is_same_v, etl::imessage> && + etl::is_one_of_v, TMessageTypes...>); + + ETL_STATIC_ASSERT(Enabled, "Message not in packet type list"); } #else //******************************************** template - explicit message_packet(const TMessage& msg, typename etl::enable_if::type, T1, T2, T3, T4, T5, T6>::value, int>::type Dummy = 0) - : valid(true) + explicit message_packet(const TMessage& msg, typename etl::enable_if::type, etl::message_packet >::value && + !etl::is_same::type, etl::imessage>::value && + !etl::is_one_of::type, T1, T2, T3, T4, T5, T6>::value, int>::type = 0) + : data() + , valid(true) { - add_new_message(msg); + // Not etl::message_packet, not etl::imessage and in typelist. + static const bool Enabled = (!etl::is_same::type, etl::message_packet >::value && + !etl::is_same::type, etl::imessage>::value && + etl::is_one_of::type,T1, T2, T3, T4, T5, T6>::value); + + ETL_STATIC_ASSERT(Enabled, "Message not in packet type list"); } #endif + //********************************************** message_packet(const message_packet& other) : data() @@ -3271,7 +3420,7 @@ namespace etl } } - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //********************************************** message_packet(message_packet&& other) : data() @@ -3297,7 +3446,7 @@ namespace etl return *this; } - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //********************************************** message_packet& operator =(message_packet&& rhs) { @@ -3421,7 +3570,7 @@ namespace etl } } - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //******************************************** void add_new_message(etl::imessage&& msg) { @@ -3478,7 +3627,7 @@ namespace etl ETL_ASSERT(valid, ETL_ERROR(unhandled_message_exception)); } - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //******************************************** explicit message_packet(etl::imessage&& msg) : data() @@ -3497,25 +3646,42 @@ namespace etl } #endif - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //******************************************** - template ::type,T1, T2, T3, T4, T5>::value, int>::type = 0> + template , etl::message_packet> && + !etl::is_same_v, etl::imessage> && + !etl::is_one_of_v + T1, T2, T3, T4, T5>> explicit message_packet(TMessage&& msg) : data() , valid(true) { - add_new_message(etl::forward(msg)); + // Not etl::message_packet, not etl::imessage and in typelist. + constexpr bool Enabled = (!etl::is_same_v, etl::message_packet> && + !etl::is_same_v, etl::imessage> && + etl::is_one_of_v, TMessageTypes...>); + + ETL_STATIC_ASSERT(Enabled, "Message not in packet type list"); } #else //******************************************** template - explicit message_packet(const TMessage& msg, typename etl::enable_if::type, T1, T2, T3, T4, T5>::value, int>::type Dummy = 0) - : valid(true) + explicit message_packet(const TMessage& msg, typename etl::enable_if::type, etl::message_packet >::value && + !etl::is_same::type, etl::imessage>::value && + !etl::is_one_of::type, T1, T2, T3, T4, T5>::value, int>::type = 0) + : data() + , valid(true) { - add_new_message(msg); + // Not etl::message_packet, not etl::imessage and in typelist. + static const bool Enabled = (!etl::is_same::type, etl::message_packet >::value && + !etl::is_same::type, etl::imessage>::value && + etl::is_one_of::type,T1, T2, T3, T4, T5>::value); + + ETL_STATIC_ASSERT(Enabled, "Message not in packet type list"); } #endif + //********************************************** message_packet(const message_packet& other) : data() @@ -3527,7 +3693,7 @@ namespace etl } } - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //********************************************** message_packet(message_packet&& other) : data() @@ -3553,7 +3719,7 @@ namespace etl return *this; } - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //********************************************** message_packet& operator =(message_packet&& rhs) { @@ -3675,7 +3841,7 @@ namespace etl } } - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //******************************************** void add_new_message(etl::imessage&& msg) { @@ -3730,7 +3896,7 @@ namespace etl ETL_ASSERT(valid, ETL_ERROR(unhandled_message_exception)); } - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //******************************************** explicit message_packet(etl::imessage&& msg) : data() @@ -3749,25 +3915,42 @@ namespace etl } #endif - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //******************************************** - template ::type,T1, T2, T3, T4>::value, int>::type = 0> + template , etl::message_packet> && + !etl::is_same_v, etl::imessage> && + !etl::is_one_of_v + T1, T2, T3, T4>> explicit message_packet(TMessage&& msg) : data() , valid(true) { - add_new_message(etl::forward(msg)); + // Not etl::message_packet, not etl::imessage and in typelist. + constexpr bool Enabled = (!etl::is_same_v, etl::message_packet> && + !etl::is_same_v, etl::imessage> && + etl::is_one_of_v, TMessageTypes...>); + + ETL_STATIC_ASSERT(Enabled, "Message not in packet type list"); } #else //******************************************** template - explicit message_packet(const TMessage& msg, typename etl::enable_if::type, T1, T2, T3, T4>::value, int>::type Dummy = 0) - : valid(true) + explicit message_packet(const TMessage& msg, typename etl::enable_if::type, etl::message_packet >::value && + !etl::is_same::type, etl::imessage>::value && + !etl::is_one_of::type, T1, T2, T3, T4>::value, int>::type = 0) + : data() + , valid(true) { - add_new_message(msg); + // Not etl::message_packet, not etl::imessage and in typelist. + static const bool Enabled = (!etl::is_same::type, etl::message_packet >::value && + !etl::is_same::type, etl::imessage>::value && + etl::is_one_of::type,T1, T2, T3, T4>::value); + + ETL_STATIC_ASSERT(Enabled, "Message not in packet type list"); } #endif + //********************************************** message_packet(const message_packet& other) : data() @@ -3779,7 +3962,7 @@ namespace etl } } - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //********************************************** message_packet(message_packet&& other) : data() @@ -3805,7 +3988,7 @@ namespace etl return *this; } - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //********************************************** message_packet& operator =(message_packet&& rhs) { @@ -3922,7 +4105,7 @@ namespace etl } } - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //******************************************** void add_new_message(etl::imessage&& msg) { @@ -3976,7 +4159,7 @@ namespace etl ETL_ASSERT(valid, ETL_ERROR(unhandled_message_exception)); } - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //******************************************** explicit message_packet(etl::imessage&& msg) : data() @@ -3995,25 +4178,42 @@ namespace etl } #endif - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //******************************************** - template ::type,T1, T2, T3>::value, int>::type = 0> + template , etl::message_packet> && + !etl::is_same_v, etl::imessage> && + !etl::is_one_of_v + T1, T2, T3>> explicit message_packet(TMessage&& msg) : data() , valid(true) { - add_new_message(etl::forward(msg)); + // Not etl::message_packet, not etl::imessage and in typelist. + constexpr bool Enabled = (!etl::is_same_v, etl::message_packet> && + !etl::is_same_v, etl::imessage> && + etl::is_one_of_v, TMessageTypes...>); + + ETL_STATIC_ASSERT(Enabled, "Message not in packet type list"); } #else //******************************************** template - explicit message_packet(const TMessage& msg, typename etl::enable_if::type, T1, T2, T3>::value, int>::type Dummy = 0) - : valid(true) + explicit message_packet(const TMessage& msg, typename etl::enable_if::type, etl::message_packet >::value && + !etl::is_same::type, etl::imessage>::value && + !etl::is_one_of::type, T1, T2, T3>::value, int>::type = 0) + : data() + , valid(true) { - add_new_message(msg); + // Not etl::message_packet, not etl::imessage and in typelist. + static const bool Enabled = (!etl::is_same::type, etl::message_packet >::value && + !etl::is_same::type, etl::imessage>::value && + etl::is_one_of::type,T1, T2, T3>::value); + + ETL_STATIC_ASSERT(Enabled, "Message not in packet type list"); } #endif + //********************************************** message_packet(const message_packet& other) : data() @@ -4025,7 +4225,7 @@ namespace etl } } - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //********************************************** message_packet(message_packet&& other) : data() @@ -4051,7 +4251,7 @@ namespace etl return *this; } - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //********************************************** message_packet& operator =(message_packet&& rhs) { @@ -4166,7 +4366,7 @@ namespace etl } } - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //******************************************** void add_new_message(etl::imessage&& msg) { @@ -4219,7 +4419,7 @@ namespace etl ETL_ASSERT(valid, ETL_ERROR(unhandled_message_exception)); } - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //******************************************** explicit message_packet(etl::imessage&& msg) : data() @@ -4238,25 +4438,42 @@ namespace etl } #endif - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //******************************************** - template ::type,T1, T2>::value, int>::type = 0> + template , etl::message_packet> && + !etl::is_same_v, etl::imessage> && + !etl::is_one_of_v + T1, T2>> explicit message_packet(TMessage&& msg) : data() , valid(true) { - add_new_message(etl::forward(msg)); + // Not etl::message_packet, not etl::imessage and in typelist. + constexpr bool Enabled = (!etl::is_same_v, etl::message_packet> && + !etl::is_same_v, etl::imessage> && + etl::is_one_of_v, TMessageTypes...>); + + ETL_STATIC_ASSERT(Enabled, "Message not in packet type list"); } #else //******************************************** template - explicit message_packet(const TMessage& msg, typename etl::enable_if::type, T1, T2>::value, int>::type Dummy = 0) - : valid(true) + explicit message_packet(const TMessage& msg, typename etl::enable_if::type, etl::message_packet >::value && + !etl::is_same::type, etl::imessage>::value && + !etl::is_one_of::type, T1, T2>::value, int>::type = 0) + : data() + , valid(true) { - add_new_message(msg); + // Not etl::message_packet, not etl::imessage and in typelist. + static const bool Enabled = (!etl::is_same::type, etl::message_packet >::value && + !etl::is_same::type, etl::imessage>::value && + etl::is_one_of::type,T1, T2>::value); + + ETL_STATIC_ASSERT(Enabled, "Message not in packet type list"); } #endif + //********************************************** message_packet(const message_packet& other) : data() @@ -4268,7 +4485,7 @@ namespace etl } } - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //********************************************** message_packet(message_packet&& other) : data() @@ -4294,7 +4511,7 @@ namespace etl return *this; } - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //********************************************** message_packet& operator =(message_packet&& rhs) { @@ -4407,7 +4624,7 @@ namespace etl } } - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //******************************************** void add_new_message(etl::imessage&& msg) { @@ -4459,7 +4676,7 @@ namespace etl ETL_ASSERT(valid, ETL_ERROR(unhandled_message_exception)); } - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //******************************************** explicit message_packet(etl::imessage&& msg) : data() @@ -4478,25 +4695,42 @@ namespace etl } #endif - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //******************************************** - template ::type,T1>::value, int>::type = 0> + template , etl::message_packet> && + !etl::is_same_v, etl::imessage> && + !etl::is_one_of_v + T1>> explicit message_packet(TMessage&& msg) : data() , valid(true) { - add_new_message(etl::forward(msg)); + // Not etl::message_packet, not etl::imessage and in typelist. + constexpr bool Enabled = (!etl::is_same_v, etl::message_packet> && + !etl::is_same_v, etl::imessage> && + etl::is_one_of_v, TMessageTypes...>); + + ETL_STATIC_ASSERT(Enabled, "Message not in packet type list"); } #else //******************************************** template - explicit message_packet(const TMessage& msg, typename etl::enable_if::type, T1>::value, int>::type Dummy = 0) - : valid(true) + explicit message_packet(const TMessage& msg, typename etl::enable_if::type, etl::message_packet >::value && + !etl::is_same::type, etl::imessage>::value && + !etl::is_one_of::type, T1>::value, int>::type = 0) + : data() + , valid(true) { - add_new_message(msg); + // Not etl::message_packet, not etl::imessage and in typelist. + static const bool Enabled = (!etl::is_same::type, etl::message_packet >::value && + !etl::is_same::type, etl::imessage>::value && + etl::is_one_of::type,T1>::value); + + ETL_STATIC_ASSERT(Enabled, "Message not in packet type list"); } #endif + //********************************************** message_packet(const message_packet& other) : data() @@ -4508,7 +4742,7 @@ namespace etl } } - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //********************************************** message_packet(message_packet&& other) : data() @@ -4534,7 +4768,7 @@ namespace etl return *this; } - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //********************************************** message_packet& operator =(message_packet&& rhs) { @@ -4645,7 +4879,7 @@ namespace etl } } - #if ETL_CPP11_SUPPORTED + #if ETL_CPP11_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //******************************************** void add_new_message(etl::imessage&& msg) { diff --git a/test/test_message_packet.cpp b/test/test_message_packet.cpp index 75ac200e..029b4bce 100644 --- a/test/test_message_packet.cpp +++ b/test/test_message_packet.cpp @@ -197,6 +197,9 @@ namespace Packet packet2(message2); Packet packet3(message3); + // Should causes a static assert. + //Packet packet4(message4); + CHECK_EQUAL(MESSAGE1, packet1.get().get_message_id()); CHECK_EQUAL(MESSAGE2, packet2.get().get_message_id()); CHECK_EQUAL(MESSAGE3, packet3.get().get_message_id()); @@ -214,6 +217,7 @@ namespace CHECK_EQUAL("3", static_cast(packet3.get()).x); } +#if !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //************************************************************************* TEST(message_packet_move_construction) { @@ -235,6 +239,7 @@ namespace CHECK_EQUAL(1, static_cast(packet1.get()).x); CHECK_EQUAL(2.2, static_cast(packet2.get()).x); } +#endif //************************************************************************* TEST(message_constant_packet_construction) @@ -302,6 +307,7 @@ namespace CHECK_EQUAL(1, static_cast(packet2.get()).x); } +#if !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //************************************************************************* TEST(message_packet_move_consructor) { @@ -323,6 +329,7 @@ namespace CHECK_EQUAL(1, static_cast(packet1.get()).x); CHECK_EQUAL(1, static_cast(packet2.get()).x); } +#endif //************************************************************************* TEST(message_packet_assignment) @@ -348,6 +355,7 @@ namespace CHECK_EQUAL(1, static_cast(packet2.get()).x); } +#if !defined(ETL_MESSAGE_PACKET_FORCE_CPP03_IMPLEMENTATION) //************************************************************************* TEST(message_packet_move_assignment) { @@ -371,6 +379,7 @@ namespace CHECK_EQUAL(1, static_cast(packet1.get()).x); CHECK_EQUAL(1, static_cast(packet2.get()).x); } +#endif //************************************************************************* TEST(message_packet_accepts)