From c90c7967c6c8042215192c59f16da3206f3b0586 Mon Sep 17 00:00:00 2001 From: John Wellbelove Date: Mon, 23 Mar 2020 19:49:24 +0000 Subject: [PATCH] Added etl::message_packet classes --- .gitignore | 3 + include/etl/file_error_numbers.txt | 1 + include/etl/generate.bat | 3 +- include/etl/message_router.h | 1361 +----------------------- include/etl/message_router_generator.h | 167 +-- include/etl/platform.h | 2 + include/etl/version.h | 4 +- library.json | 2 +- library.properties | 2 +- support/Release notes.txt | 4 + test/test_message_router.cpp | 1 - test/vs2017/etl.vcxproj | 5 + test/vs2017/etl.vcxproj.filters | 15 + 13 files changed, 58 insertions(+), 1512 deletions(-) diff --git a/.gitignore b/.gitignore index ded20f8a..4e1f38f5 100644 --- a/.gitignore +++ b/.gitignore @@ -9,9 +9,12 @@ test/keil/Debug test/keil/Release test/keil/Objects test/keil/Listings +test/cmake-windows/unittest++/src +test/cmake/unittest++/src examples/ArmTimerCallbacks/Listings examples/ArmTimerCallbacks/Objects examples/ArmTimerCallbacks/DebugConfig +build-test-Desktop_x86_windows_msvc2017_pe_32bit-Debug/unittest++/src ################# ## Eclipse diff --git a/include/etl/file_error_numbers.txt b/include/etl/file_error_numbers.txt index 3961913e..89cfc5e1 100644 --- a/include/etl/file_error_numbers.txt +++ b/include/etl/file_error_numbers.txt @@ -52,3 +52,4 @@ 52 bitset 53 indirect_vector 54 queue_spsc_locked +55 message_packet diff --git a/include/etl/generate.bat b/include/etl/generate.bat index c121da9f..1aed11dd 100644 --- a/include/etl/generate.bat +++ b/include/etl/generate.bat @@ -4,4 +4,5 @@ python -m cogapp -d -e -olargest.h -DNTypes=16 largest_generator.h python -m cogapp -d -e -osmallest.h -DNTypes=16 smallest_generator.h python -m cogapp -d -e -otype_traits.h -DIsOneOf=17 type_traits_generator.h python -m cogapp -d -e -otype_lookup.h -DNTypes=16 type_lookup_generator.h -python -m cogapp -d -e -otype_select.h -DNTypes=16 type_select_generator.h \ No newline at end of file +python -m cogapp -d -e -otype_select.h -DNTypes=16 type_select_generator.h +python -m cogapp -d -e -omessage_packet.h -DHandlers=16 message_packet_generator.h \ No newline at end of file diff --git a/include/etl/message_router.h b/include/etl/message_router.h index 26a68b45..fcfaa0e1 100644 --- a/include/etl/message_router.h +++ b/include/etl/message_router.h @@ -56,6 +56,7 @@ SOFTWARE. #include "platform.h" #include "message.h" +#include "message_packet.h" #include "message_types.h" #include "alignment.h" #include "error_handler.h" @@ -250,105 +251,7 @@ namespace etl { public: - //********************************************** - class message_packet - { - public: - - //******************************************** - explicit message_packet(const etl::imessage& msg) - { - const size_t id = msg.message_id; - - void* p = data; - - switch (id) - { - case T1::ID: ::new (p) T1(static_cast(msg)); break; - case T2::ID: ::new (p) T2(static_cast(msg)); break; - case T3::ID: ::new (p) T3(static_cast(msg)); break; - case T4::ID: ::new (p) T4(static_cast(msg)); break; - case T5::ID: ::new (p) T5(static_cast(msg)); break; - case T6::ID: ::new (p) T6(static_cast(msg)); break; - case T7::ID: ::new (p) T7(static_cast(msg)); break; - case T8::ID: ::new (p) T8(static_cast(msg)); break; - case T9::ID: ::new (p) T9(static_cast(msg)); break; - case T10::ID: ::new (p) T10(static_cast(msg)); break; - case T11::ID: ::new (p) T11(static_cast(msg)); break; - case T12::ID: ::new (p) T12(static_cast(msg)); break; - case T13::ID: ::new (p) T13(static_cast(msg)); break; - case T14::ID: ::new (p) T14(static_cast(msg)); break; - case T15::ID: ::new (p) T15(static_cast(msg)); break; - case T16::ID: ::new (p) T16(static_cast(msg)); break; - default: ETL_ASSERT(false, ETL_ERROR(unhandled_message_exception)); break; - } - } - - //******************************************** - template - explicit message_packet(const T& msg) - { - ETL_STATIC_ASSERT((etl::is_one_of::value), "Unsupported type for this message packet"); - - void* p = data; - ::new (p) T(static_cast(msg)); - } - - //******************************************** - ~message_packet() - { - etl::imessage* pmsg = static_cast(data); - - #if defined(ETL_MESSAGES_ARE_VIRTUAL) || defined(ETL_POLYMORPHIC_MESSAGES) - pmsg->~imessage(); - #else - size_t id = pmsg->message_id; - - switch (id) - { - case T1::ID: static_cast(pmsg)->~T1(); break; - case T2::ID: static_cast(pmsg)->~T2(); break; - case T3::ID: static_cast(pmsg)->~T3(); break; - case T4::ID: static_cast(pmsg)->~T4(); break; - case T5::ID: static_cast(pmsg)->~T5(); break; - case T6::ID: static_cast(pmsg)->~T6(); break; - case T7::ID: static_cast(pmsg)->~T7(); break; - case T8::ID: static_cast(pmsg)->~T8(); break; - case T9::ID: static_cast(pmsg)->~T9(); break; - case T10::ID: static_cast(pmsg)->~T10(); break; - case T11::ID: static_cast(pmsg)->~T11(); break; - case T12::ID: static_cast(pmsg)->~T12(); break; - case T13::ID: static_cast(pmsg)->~T13(); break; - case T14::ID: static_cast(pmsg)->~T14(); break; - case T15::ID: static_cast(pmsg)->~T15(); break; - case T16::ID: static_cast(pmsg)->~T16(); break; - default: assert(false); break; - } - #endif - } - - //******************************************** - etl::imessage& get() - { - return *static_cast(data); - } - - //******************************************** - const etl::imessage& get() const - { - return *static_cast(data); - } - - enum - { - SIZE = etl::largest::size, - ALIGNMENT = etl::largest::alignment - }; - - private: - - typename etl::aligned_storage::type data; - }; + typedef etl::message_packet message_packet; //********************************************** message_router(etl::message_router_id_t id_) @@ -452,103 +355,7 @@ namespace etl { public: - //********************************************** - class message_packet - { - public: - - //******************************************** - explicit message_packet(const etl::imessage& msg) - { - const size_t id = msg.message_id; - - void* p = data; - - switch (id) - { - case T1::ID: ::new (p) T1(static_cast(msg)); break; - case T2::ID: ::new (p) T2(static_cast(msg)); break; - case T3::ID: ::new (p) T3(static_cast(msg)); break; - case T4::ID: ::new (p) T4(static_cast(msg)); break; - case T5::ID: ::new (p) T5(static_cast(msg)); break; - case T6::ID: ::new (p) T6(static_cast(msg)); break; - case T7::ID: ::new (p) T7(static_cast(msg)); break; - case T8::ID: ::new (p) T8(static_cast(msg)); break; - case T9::ID: ::new (p) T9(static_cast(msg)); break; - case T10::ID: ::new (p) T10(static_cast(msg)); break; - case T11::ID: ::new (p) T11(static_cast(msg)); break; - case T12::ID: ::new (p) T12(static_cast(msg)); break; - case T13::ID: ::new (p) T13(static_cast(msg)); break; - case T14::ID: ::new (p) T14(static_cast(msg)); break; - case T15::ID: ::new (p) T15(static_cast(msg)); break; - default: ETL_ASSERT(false, ETL_ERROR(unhandled_message_exception)); break; - } - } - - //******************************************** - template - explicit message_packet(const T& msg) - { - ETL_STATIC_ASSERT((etl::is_one_of::value), "Unsupported type for this message packet"); - - void* p = data; - ::new (p) T(static_cast(msg)); - } - - //******************************************** - ~message_packet() - { - etl::imessage* pmsg = static_cast(data); - - #if defined(ETL_MESSAGES_ARE_VIRTUAL) || defined(ETL_POLYMORPHIC_MESSAGES) - pmsg->~imessage(); - #else - size_t id = pmsg->message_id; - - switch (id) - { - case T1::ID: static_cast(pmsg)->~T1(); break; - case T2::ID: static_cast(pmsg)->~T2(); break; - case T3::ID: static_cast(pmsg)->~T3(); break; - case T4::ID: static_cast(pmsg)->~T4(); break; - case T5::ID: static_cast(pmsg)->~T5(); break; - case T6::ID: static_cast(pmsg)->~T6(); break; - case T7::ID: static_cast(pmsg)->~T7(); break; - case T8::ID: static_cast(pmsg)->~T8(); break; - case T9::ID: static_cast(pmsg)->~T9(); break; - case T10::ID: static_cast(pmsg)->~T10(); break; - case T11::ID: static_cast(pmsg)->~T11(); break; - case T12::ID: static_cast(pmsg)->~T12(); break; - case T13::ID: static_cast(pmsg)->~T13(); break; - case T14::ID: static_cast(pmsg)->~T14(); break; - case T15::ID: static_cast(pmsg)->~T15(); break; - default: assert(false); break; - } - #endif - } - - //******************************************** - etl::imessage& get() - { - return *static_cast(data); - } - - //******************************************** - const etl::imessage& get() const - { - return *static_cast(data); - } - - enum - { - SIZE = etl::largest::size, - ALIGNMENT = etl::largest::alignment - }; - - private: - - typename etl::aligned_storage::type data; - }; + typedef etl::message_packet message_packet; //********************************************** message_router(etl::message_router_id_t id_) @@ -651,101 +458,7 @@ namespace etl { public: - //********************************************** - class message_packet - { - public: - - //******************************************** - explicit message_packet(const etl::imessage& msg) - { - const size_t id = msg.message_id; - - void* p = data; - - switch (id) - { - case T1::ID: ::new (p) T1(static_cast(msg)); break; - case T2::ID: ::new (p) T2(static_cast(msg)); break; - case T3::ID: ::new (p) T3(static_cast(msg)); break; - case T4::ID: ::new (p) T4(static_cast(msg)); break; - case T5::ID: ::new (p) T5(static_cast(msg)); break; - case T6::ID: ::new (p) T6(static_cast(msg)); break; - case T7::ID: ::new (p) T7(static_cast(msg)); break; - case T8::ID: ::new (p) T8(static_cast(msg)); break; - case T9::ID: ::new (p) T9(static_cast(msg)); break; - case T10::ID: ::new (p) T10(static_cast(msg)); break; - case T11::ID: ::new (p) T11(static_cast(msg)); break; - case T12::ID: ::new (p) T12(static_cast(msg)); break; - case T13::ID: ::new (p) T13(static_cast(msg)); break; - case T14::ID: ::new (p) T14(static_cast(msg)); break; - default: ETL_ASSERT(false, ETL_ERROR(unhandled_message_exception)); break; - } - } - - //******************************************** - template - explicit message_packet(const T& msg) - { - ETL_STATIC_ASSERT((etl::is_one_of::value), "Unsupported type for this message packet"); - - void* p = data; - ::new (p) T(static_cast(msg)); - } - - //******************************************** - ~message_packet() - { - etl::imessage* pmsg = static_cast(data); - - #if defined(ETL_MESSAGES_ARE_VIRTUAL) || defined(ETL_POLYMORPHIC_MESSAGES) - pmsg->~imessage(); - #else - size_t id = pmsg->message_id; - - switch (id) - { - case T1::ID: static_cast(pmsg)->~T1(); break; - case T2::ID: static_cast(pmsg)->~T2(); break; - case T3::ID: static_cast(pmsg)->~T3(); break; - case T4::ID: static_cast(pmsg)->~T4(); break; - case T5::ID: static_cast(pmsg)->~T5(); break; - case T6::ID: static_cast(pmsg)->~T6(); break; - case T7::ID: static_cast(pmsg)->~T7(); break; - case T8::ID: static_cast(pmsg)->~T8(); break; - case T9::ID: static_cast(pmsg)->~T9(); break; - case T10::ID: static_cast(pmsg)->~T10(); break; - case T11::ID: static_cast(pmsg)->~T11(); break; - case T12::ID: static_cast(pmsg)->~T12(); break; - case T13::ID: static_cast(pmsg)->~T13(); break; - case T14::ID: static_cast(pmsg)->~T14(); break; - default: assert(false); break; - } - #endif - } - - //******************************************** - etl::imessage& get() - { - return *static_cast(data); - } - - //******************************************** - const etl::imessage& get() const - { - return *static_cast(data); - } - - enum - { - SIZE = etl::largest::size, - ALIGNMENT = etl::largest::alignment - }; - - private: - - typename etl::aligned_storage::type data; - }; + typedef etl::message_packet message_packet; //********************************************** message_router(etl::message_router_id_t id_) @@ -847,99 +560,7 @@ namespace etl { public: - //********************************************** - class message_packet - { - public: - - //******************************************** - explicit message_packet(const etl::imessage& msg) - { - const size_t id = msg.message_id; - - void* p = data; - - switch (id) - { - case T1::ID: ::new (p) T1(static_cast(msg)); break; - case T2::ID: ::new (p) T2(static_cast(msg)); break; - case T3::ID: ::new (p) T3(static_cast(msg)); break; - case T4::ID: ::new (p) T4(static_cast(msg)); break; - case T5::ID: ::new (p) T5(static_cast(msg)); break; - case T6::ID: ::new (p) T6(static_cast(msg)); break; - case T7::ID: ::new (p) T7(static_cast(msg)); break; - case T8::ID: ::new (p) T8(static_cast(msg)); break; - case T9::ID: ::new (p) T9(static_cast(msg)); break; - case T10::ID: ::new (p) T10(static_cast(msg)); break; - case T11::ID: ::new (p) T11(static_cast(msg)); break; - case T12::ID: ::new (p) T12(static_cast(msg)); break; - case T13::ID: ::new (p) T13(static_cast(msg)); break; - default: ETL_ASSERT(false, ETL_ERROR(unhandled_message_exception)); break; - } - } - - //******************************************** - template - explicit message_packet(const T& msg) - { - ETL_STATIC_ASSERT((etl::is_one_of::value), "Unsupported type for this message packet"); - - void* p = data; - ::new (p) T(static_cast(msg)); - } - - //******************************************** - ~message_packet() - { - etl::imessage* pmsg = static_cast(data); - - #if defined(ETL_MESSAGES_ARE_VIRTUAL) || defined(ETL_POLYMORPHIC_MESSAGES) - pmsg->~imessage(); - #else - size_t id = pmsg->message_id; - - switch (id) - { - case T1::ID: static_cast(pmsg)->~T1(); break; - case T2::ID: static_cast(pmsg)->~T2(); break; - case T3::ID: static_cast(pmsg)->~T3(); break; - case T4::ID: static_cast(pmsg)->~T4(); break; - case T5::ID: static_cast(pmsg)->~T5(); break; - case T6::ID: static_cast(pmsg)->~T6(); break; - case T7::ID: static_cast(pmsg)->~T7(); break; - case T8::ID: static_cast(pmsg)->~T8(); break; - case T9::ID: static_cast(pmsg)->~T9(); break; - case T10::ID: static_cast(pmsg)->~T10(); break; - case T11::ID: static_cast(pmsg)->~T11(); break; - case T12::ID: static_cast(pmsg)->~T12(); break; - case T13::ID: static_cast(pmsg)->~T13(); break; - default: assert(false); break; - } - #endif - } - - //******************************************** - etl::imessage& get() - { - return *static_cast(data); - } - - //******************************************** - const etl::imessage& get() const - { - return *static_cast(data); - } - - enum - { - SIZE = etl::largest::size, - ALIGNMENT = etl::largest::alignment - }; - - private: - - typename etl::aligned_storage::type data; - }; + typedef etl::message_packet message_packet; //********************************************** message_router(etl::message_router_id_t id_) @@ -1039,97 +660,7 @@ namespace etl { public: - //********************************************** - class message_packet - { - public: - - //******************************************** - explicit message_packet(const etl::imessage& msg) - { - const size_t id = msg.message_id; - - void* p = data; - - switch (id) - { - case T1::ID: ::new (p) T1(static_cast(msg)); break; - case T2::ID: ::new (p) T2(static_cast(msg)); break; - case T3::ID: ::new (p) T3(static_cast(msg)); break; - case T4::ID: ::new (p) T4(static_cast(msg)); break; - case T5::ID: ::new (p) T5(static_cast(msg)); break; - case T6::ID: ::new (p) T6(static_cast(msg)); break; - case T7::ID: ::new (p) T7(static_cast(msg)); break; - case T8::ID: ::new (p) T8(static_cast(msg)); break; - case T9::ID: ::new (p) T9(static_cast(msg)); break; - case T10::ID: ::new (p) T10(static_cast(msg)); break; - case T11::ID: ::new (p) T11(static_cast(msg)); break; - case T12::ID: ::new (p) T12(static_cast(msg)); break; - default: ETL_ASSERT(false, ETL_ERROR(unhandled_message_exception)); break; - } - } - - //******************************************** - template - explicit message_packet(const T& msg) - { - ETL_STATIC_ASSERT((etl::is_one_of::value), "Unsupported type for this message packet"); - - void* p = data; - ::new (p) T(static_cast(msg)); - } - - //******************************************** - ~message_packet() - { - etl::imessage* pmsg = static_cast(data); - - #if defined(ETL_MESSAGES_ARE_VIRTUAL) || defined(ETL_POLYMORPHIC_MESSAGES) - pmsg->~imessage(); - #else - size_t id = pmsg->message_id; - - switch (id) - { - case T1::ID: static_cast(pmsg)->~T1(); break; - case T2::ID: static_cast(pmsg)->~T2(); break; - case T3::ID: static_cast(pmsg)->~T3(); break; - case T4::ID: static_cast(pmsg)->~T4(); break; - case T5::ID: static_cast(pmsg)->~T5(); break; - case T6::ID: static_cast(pmsg)->~T6(); break; - case T7::ID: static_cast(pmsg)->~T7(); break; - case T8::ID: static_cast(pmsg)->~T8(); break; - case T9::ID: static_cast(pmsg)->~T9(); break; - case T10::ID: static_cast(pmsg)->~T10(); break; - case T11::ID: static_cast(pmsg)->~T11(); break; - case T12::ID: static_cast(pmsg)->~T12(); break; - default: assert(false); break; - } - #endif - } - - //******************************************** - etl::imessage& get() - { - return *static_cast(data); - } - - //******************************************** - const etl::imessage& get() const - { - return *static_cast(data); - } - - enum - { - SIZE = etl::largest::size, - ALIGNMENT = etl::largest::alignment - }; - - private: - - typename etl::aligned_storage::type data; - }; + typedef etl::message_packet message_packet; //********************************************** message_router(etl::message_router_id_t id_) @@ -1228,95 +759,7 @@ namespace etl { public: - //********************************************** - class message_packet - { - public: - - //******************************************** - explicit message_packet(const etl::imessage& msg) - { - const size_t id = msg.message_id; - - void* p = data; - - switch (id) - { - case T1::ID: ::new (p) T1(static_cast(msg)); break; - case T2::ID: ::new (p) T2(static_cast(msg)); break; - case T3::ID: ::new (p) T3(static_cast(msg)); break; - case T4::ID: ::new (p) T4(static_cast(msg)); break; - case T5::ID: ::new (p) T5(static_cast(msg)); break; - case T6::ID: ::new (p) T6(static_cast(msg)); break; - case T7::ID: ::new (p) T7(static_cast(msg)); break; - case T8::ID: ::new (p) T8(static_cast(msg)); break; - case T9::ID: ::new (p) T9(static_cast(msg)); break; - case T10::ID: ::new (p) T10(static_cast(msg)); break; - case T11::ID: ::new (p) T11(static_cast(msg)); break; - default: ETL_ASSERT(false, ETL_ERROR(unhandled_message_exception)); break; - } - } - - //******************************************** - template - explicit message_packet(const T& msg) - { - ETL_STATIC_ASSERT((etl::is_one_of::value), "Unsupported type for this message packet"); - - void* p = data; - ::new (p) T(static_cast(msg)); - } - - //******************************************** - ~message_packet() - { - etl::imessage* pmsg = static_cast(data); - - #if defined(ETL_MESSAGES_ARE_VIRTUAL) || defined(ETL_POLYMORPHIC_MESSAGES) - pmsg->~imessage(); - #else - size_t id = pmsg->message_id; - - switch (id) - { - case T1::ID: static_cast(pmsg)->~T1(); break; - case T2::ID: static_cast(pmsg)->~T2(); break; - case T3::ID: static_cast(pmsg)->~T3(); break; - case T4::ID: static_cast(pmsg)->~T4(); break; - case T5::ID: static_cast(pmsg)->~T5(); break; - case T6::ID: static_cast(pmsg)->~T6(); break; - case T7::ID: static_cast(pmsg)->~T7(); break; - case T8::ID: static_cast(pmsg)->~T8(); break; - case T9::ID: static_cast(pmsg)->~T9(); break; - case T10::ID: static_cast(pmsg)->~T10(); break; - case T11::ID: static_cast(pmsg)->~T11(); break; - default: assert(false); break; - } - #endif - } - - //******************************************** - etl::imessage& get() - { - return *static_cast(data); - } - - //******************************************** - const etl::imessage& get() const - { - return *static_cast(data); - } - - enum - { - SIZE = etl::largest::size, - ALIGNMENT = etl::largest::alignment - }; - - private: - - typename etl::aligned_storage::type data; - }; + typedef etl::message_packet message_packet; //********************************************** message_router(etl::message_router_id_t id_) @@ -1414,93 +857,7 @@ namespace etl { public: - //********************************************** - class message_packet - { - public: - - //******************************************** - explicit message_packet(const etl::imessage& msg) - { - const size_t id = msg.message_id; - - void* p = data; - - switch (id) - { - case T1::ID: ::new (p) T1(static_cast(msg)); break; - case T2::ID: ::new (p) T2(static_cast(msg)); break; - case T3::ID: ::new (p) T3(static_cast(msg)); break; - case T4::ID: ::new (p) T4(static_cast(msg)); break; - case T5::ID: ::new (p) T5(static_cast(msg)); break; - case T6::ID: ::new (p) T6(static_cast(msg)); break; - case T7::ID: ::new (p) T7(static_cast(msg)); break; - case T8::ID: ::new (p) T8(static_cast(msg)); break; - case T9::ID: ::new (p) T9(static_cast(msg)); break; - case T10::ID: ::new (p) T10(static_cast(msg)); break; - default: ETL_ASSERT(false, ETL_ERROR(unhandled_message_exception)); break; - } - } - - //******************************************** - template - explicit message_packet(const T& msg) - { - ETL_STATIC_ASSERT((etl::is_one_of::value), "Unsupported type for this message packet"); - - void* p = data; - ::new (p) T(static_cast(msg)); - } - - //******************************************** - ~message_packet() - { - etl::imessage* pmsg = static_cast(data); - - #if defined(ETL_MESSAGES_ARE_VIRTUAL) || defined(ETL_POLYMORPHIC_MESSAGES) - pmsg->~imessage(); - #else - size_t id = pmsg->message_id; - - switch (id) - { - case T1::ID: static_cast(pmsg)->~T1(); break; - case T2::ID: static_cast(pmsg)->~T2(); break; - case T3::ID: static_cast(pmsg)->~T3(); break; - case T4::ID: static_cast(pmsg)->~T4(); break; - case T5::ID: static_cast(pmsg)->~T5(); break; - case T6::ID: static_cast(pmsg)->~T6(); break; - case T7::ID: static_cast(pmsg)->~T7(); break; - case T8::ID: static_cast(pmsg)->~T8(); break; - case T9::ID: static_cast(pmsg)->~T9(); break; - case T10::ID: static_cast(pmsg)->~T10(); break; - default: assert(false); break; - } - #endif - } - - //******************************************** - etl::imessage& get() - { - return *static_cast(data); - } - - //******************************************** - const etl::imessage& get() const - { - return *static_cast(data); - } - - enum - { - SIZE = etl::largest::size, - ALIGNMENT = etl::largest::alignment - }; - - private: - - typename etl::aligned_storage::type data; - }; + typedef etl::message_packet message_packet; //********************************************** message_router(etl::message_router_id_t id_) @@ -1597,91 +954,7 @@ namespace etl { public: - //********************************************** - class message_packet - { - public: - - //******************************************** - explicit message_packet(const etl::imessage& msg) - { - const size_t id = msg.message_id; - - void* p = data; - - switch (id) - { - case T1::ID: ::new (p) T1(static_cast(msg)); break; - case T2::ID: ::new (p) T2(static_cast(msg)); break; - case T3::ID: ::new (p) T3(static_cast(msg)); break; - case T4::ID: ::new (p) T4(static_cast(msg)); break; - case T5::ID: ::new (p) T5(static_cast(msg)); break; - case T6::ID: ::new (p) T6(static_cast(msg)); break; - case T7::ID: ::new (p) T7(static_cast(msg)); break; - case T8::ID: ::new (p) T8(static_cast(msg)); break; - case T9::ID: ::new (p) T9(static_cast(msg)); break; - default: ETL_ASSERT(false, ETL_ERROR(unhandled_message_exception)); break; - } - } - - //******************************************** - template - explicit message_packet(const T& msg) - { - ETL_STATIC_ASSERT((etl::is_one_of::value), "Unsupported type for this message packet"); - - void* p = data; - ::new (p) T(static_cast(msg)); - } - - //******************************************** - ~message_packet() - { - etl::imessage* pmsg = static_cast(data); - - #if defined(ETL_MESSAGES_ARE_VIRTUAL) || defined(ETL_POLYMORPHIC_MESSAGES) - pmsg->~imessage(); - #else - size_t id = pmsg->message_id; - - switch (id) - { - case T1::ID: static_cast(pmsg)->~T1(); break; - case T2::ID: static_cast(pmsg)->~T2(); break; - case T3::ID: static_cast(pmsg)->~T3(); break; - case T4::ID: static_cast(pmsg)->~T4(); break; - case T5::ID: static_cast(pmsg)->~T5(); break; - case T6::ID: static_cast(pmsg)->~T6(); break; - case T7::ID: static_cast(pmsg)->~T7(); break; - case T8::ID: static_cast(pmsg)->~T8(); break; - case T9::ID: static_cast(pmsg)->~T9(); break; - default: assert(false); break; - } - #endif - } - - //******************************************** - etl::imessage& get() - { - return *static_cast(data); - } - - //******************************************** - const etl::imessage& get() const - { - return *static_cast(data); - } - - enum - { - SIZE = etl::largest::size, - ALIGNMENT = etl::largest::alignment - }; - - private: - - typename etl::aligned_storage::type data; - }; + typedef etl::message_packet message_packet; //********************************************** message_router(etl::message_router_id_t id_) @@ -1776,89 +1049,7 @@ namespace etl { public: - //********************************************** - class message_packet - { - public: - - //******************************************** - explicit message_packet(const etl::imessage& msg) - { - const size_t id = msg.message_id; - - void* p = data; - - switch (id) - { - case T1::ID: ::new (p) T1(static_cast(msg)); break; - case T2::ID: ::new (p) T2(static_cast(msg)); break; - case T3::ID: ::new (p) T3(static_cast(msg)); break; - case T4::ID: ::new (p) T4(static_cast(msg)); break; - case T5::ID: ::new (p) T5(static_cast(msg)); break; - case T6::ID: ::new (p) T6(static_cast(msg)); break; - case T7::ID: ::new (p) T7(static_cast(msg)); break; - case T8::ID: ::new (p) T8(static_cast(msg)); break; - default: ETL_ASSERT(false, ETL_ERROR(unhandled_message_exception)); break; - } - } - - //******************************************** - template - explicit message_packet(const T& msg) - { - ETL_STATIC_ASSERT((etl::is_one_of::value), "Unsupported type for this message packet"); - - void* p = data; - ::new (p) T(static_cast(msg)); - } - - //******************************************** - ~message_packet() - { - etl::imessage* pmsg = static_cast(data); - - #if defined(ETL_MESSAGES_ARE_VIRTUAL) || defined(ETL_POLYMORPHIC_MESSAGES) - pmsg->~imessage(); - #else - size_t id = pmsg->message_id; - - switch (id) - { - case T1::ID: static_cast(pmsg)->~T1(); break; - case T2::ID: static_cast(pmsg)->~T2(); break; - case T3::ID: static_cast(pmsg)->~T3(); break; - case T4::ID: static_cast(pmsg)->~T4(); break; - case T5::ID: static_cast(pmsg)->~T5(); break; - case T6::ID: static_cast(pmsg)->~T6(); break; - case T7::ID: static_cast(pmsg)->~T7(); break; - case T8::ID: static_cast(pmsg)->~T8(); break; - default: assert(false); break; - } - #endif - } - - //******************************************** - etl::imessage& get() - { - return *static_cast(data); - } - - //******************************************** - const etl::imessage& get() const - { - return *static_cast(data); - } - - enum - { - SIZE = etl::largest::size, - ALIGNMENT = etl::largest::alignment - }; - - private: - - typename etl::aligned_storage::type data; - }; + typedef etl::message_packet message_packet; //********************************************** message_router(etl::message_router_id_t id_) @@ -1952,87 +1143,7 @@ namespace etl { public: - //********************************************** - class message_packet - { - public: - - //******************************************** - explicit message_packet(const etl::imessage& msg) - { - const size_t id = msg.message_id; - - void* p = data; - - switch (id) - { - case T1::ID: ::new (p) T1(static_cast(msg)); break; - case T2::ID: ::new (p) T2(static_cast(msg)); break; - case T3::ID: ::new (p) T3(static_cast(msg)); break; - case T4::ID: ::new (p) T4(static_cast(msg)); break; - case T5::ID: ::new (p) T5(static_cast(msg)); break; - case T6::ID: ::new (p) T6(static_cast(msg)); break; - case T7::ID: ::new (p) T7(static_cast(msg)); break; - default: ETL_ASSERT(false, ETL_ERROR(unhandled_message_exception)); break; - } - } - - //******************************************** - template - explicit message_packet(const T& msg) - { - ETL_STATIC_ASSERT((etl::is_one_of::value), "Unsupported type for this message packet"); - - void* p = data; - ::new (p) T(static_cast(msg)); - } - - //******************************************** - ~message_packet() - { - etl::imessage* pmsg = static_cast(data); - - #if defined(ETL_MESSAGES_ARE_VIRTUAL) || defined(ETL_POLYMORPHIC_MESSAGES) - pmsg->~imessage(); - #else - size_t id = pmsg->message_id; - - switch (id) - { - case T1::ID: static_cast(pmsg)->~T1(); break; - case T2::ID: static_cast(pmsg)->~T2(); break; - case T3::ID: static_cast(pmsg)->~T3(); break; - case T4::ID: static_cast(pmsg)->~T4(); break; - case T5::ID: static_cast(pmsg)->~T5(); break; - case T6::ID: static_cast(pmsg)->~T6(); break; - case T7::ID: static_cast(pmsg)->~T7(); break; - default: assert(false); break; - } - #endif - } - - //******************************************** - etl::imessage& get() - { - return *static_cast(data); - } - - //******************************************** - const etl::imessage& get() const - { - return *static_cast(data); - } - - enum - { - SIZE = etl::largest::size, - ALIGNMENT = etl::largest::alignment - }; - - private: - - typename etl::aligned_storage::type data; - }; + typedef etl::message_packet message_packet; //********************************************** message_router(etl::message_router_id_t id_) @@ -2124,85 +1235,7 @@ namespace etl { public: - //********************************************** - class message_packet - { - public: - - //******************************************** - explicit message_packet(const etl::imessage& msg) - { - const size_t id = msg.message_id; - - void* p = data; - - switch (id) - { - case T1::ID: ::new (p) T1(static_cast(msg)); break; - case T2::ID: ::new (p) T2(static_cast(msg)); break; - case T3::ID: ::new (p) T3(static_cast(msg)); break; - case T4::ID: ::new (p) T4(static_cast(msg)); break; - case T5::ID: ::new (p) T5(static_cast(msg)); break; - case T6::ID: ::new (p) T6(static_cast(msg)); break; - default: ETL_ASSERT(false, ETL_ERROR(unhandled_message_exception)); break; - } - } - - //******************************************** - template - explicit message_packet(const T& msg) - { - ETL_STATIC_ASSERT((etl::is_one_of::value), "Unsupported type for this message packet"); - - void* p = data; - ::new (p) T(static_cast(msg)); - } - - //******************************************** - ~message_packet() - { - etl::imessage* pmsg = static_cast(data); - - #if defined(ETL_MESSAGES_ARE_VIRTUAL) || defined(ETL_POLYMORPHIC_MESSAGES) - pmsg->~imessage(); - #else - size_t id = pmsg->message_id; - - switch (id) - { - case T1::ID: static_cast(pmsg)->~T1(); break; - case T2::ID: static_cast(pmsg)->~T2(); break; - case T3::ID: static_cast(pmsg)->~T3(); break; - case T4::ID: static_cast(pmsg)->~T4(); break; - case T5::ID: static_cast(pmsg)->~T5(); break; - case T6::ID: static_cast(pmsg)->~T6(); break; - default: assert(false); break; - } - #endif - } - - //******************************************** - etl::imessage& get() - { - return *static_cast(data); - } - - //******************************************** - const etl::imessage& get() const - { - return *static_cast(data); - } - - enum - { - SIZE = etl::largest::size, - ALIGNMENT = etl::largest::alignment - }; - - private: - - typename etl::aligned_storage::type data; - }; + typedef etl::message_packet message_packet; //********************************************** message_router(etl::message_router_id_t id_) @@ -2293,83 +1326,7 @@ namespace etl { public: - //********************************************** - class message_packet - { - public: - - //******************************************** - explicit message_packet(const etl::imessage& msg) - { - const size_t id = msg.message_id; - - void* p = data; - - switch (id) - { - case T1::ID: ::new (p) T1(static_cast(msg)); break; - case T2::ID: ::new (p) T2(static_cast(msg)); break; - case T3::ID: ::new (p) T3(static_cast(msg)); break; - case T4::ID: ::new (p) T4(static_cast(msg)); break; - case T5::ID: ::new (p) T5(static_cast(msg)); break; - default: ETL_ASSERT(false, ETL_ERROR(unhandled_message_exception)); break; - } - } - - //******************************************** - template - explicit message_packet(const T& msg) - { - ETL_STATIC_ASSERT((etl::is_one_of::value), "Unsupported type for this message packet"); - - void* p = data; - ::new (p) T(static_cast(msg)); - } - - //******************************************** - ~message_packet() - { - etl::imessage* pmsg = static_cast(data); - - #if defined(ETL_MESSAGES_ARE_VIRTUAL) || defined(ETL_POLYMORPHIC_MESSAGES) - pmsg->~imessage(); - #else - size_t id = pmsg->message_id; - - switch (id) - { - case T1::ID: static_cast(pmsg)->~T1(); break; - case T2::ID: static_cast(pmsg)->~T2(); break; - case T3::ID: static_cast(pmsg)->~T3(); break; - case T4::ID: static_cast(pmsg)->~T4(); break; - case T5::ID: static_cast(pmsg)->~T5(); break; - default: assert(false); break; - } - #endif - } - - //******************************************** - etl::imessage& get() - { - return *static_cast(data); - } - - //******************************************** - const etl::imessage& get() const - { - return *static_cast(data); - } - - enum - { - SIZE = etl::largest::size, - ALIGNMENT = etl::largest::alignment - }; - - private: - - typename etl::aligned_storage::type data; - }; + typedef etl::message_packet message_packet; //********************************************** message_router(etl::message_router_id_t id_) @@ -2458,81 +1415,7 @@ namespace etl { public: - //********************************************** - class message_packet - { - public: - - //******************************************** - explicit message_packet(const etl::imessage& msg) - { - const size_t id = msg.message_id; - - void* p = data; - - switch (id) - { - case T1::ID: ::new (p) T1(static_cast(msg)); break; - case T2::ID: ::new (p) T2(static_cast(msg)); break; - case T3::ID: ::new (p) T3(static_cast(msg)); break; - case T4::ID: ::new (p) T4(static_cast(msg)); break; - default: ETL_ASSERT(false, ETL_ERROR(unhandled_message_exception)); break; - } - } - - //******************************************** - template - explicit message_packet(const T& msg) - { - ETL_STATIC_ASSERT((etl::is_one_of::value), "Unsupported type for this message packet"); - - void* p = data; - ::new (p) T(static_cast(msg)); - } - - //******************************************** - ~message_packet() - { - etl::imessage* pmsg = static_cast(data); - - #if defined(ETL_MESSAGES_ARE_VIRTUAL) || defined(ETL_POLYMORPHIC_MESSAGES) - pmsg->~imessage(); - #else - size_t id = pmsg->message_id; - - switch (id) - { - case T1::ID: static_cast(pmsg)->~T1(); break; - case T2::ID: static_cast(pmsg)->~T2(); break; - case T3::ID: static_cast(pmsg)->~T3(); break; - case T4::ID: static_cast(pmsg)->~T4(); break; - default: assert(false); break; - } - #endif - } - - //******************************************** - etl::imessage& get() - { - return *static_cast(data); - } - - //******************************************** - const etl::imessage& get() const - { - return *static_cast(data); - } - - enum - { - SIZE = etl::largest::size, - ALIGNMENT = etl::largest::alignment - }; - - private: - - typename etl::aligned_storage::type data; - }; + typedef etl::message_packet message_packet; //********************************************** message_router(etl::message_router_id_t id_) @@ -2620,79 +1503,7 @@ namespace etl { public: - //********************************************** - class message_packet - { - public: - - //******************************************** - explicit message_packet(const etl::imessage& msg) - { - const size_t id = msg.message_id; - - void* p = data; - - switch (id) - { - case T1::ID: ::new (p) T1(static_cast(msg)); break; - case T2::ID: ::new (p) T2(static_cast(msg)); break; - case T3::ID: ::new (p) T3(static_cast(msg)); break; - default: ETL_ASSERT(false, ETL_ERROR(unhandled_message_exception)); break; - } - } - - //******************************************** - template - explicit message_packet(const T& msg) - { - ETL_STATIC_ASSERT((etl::is_one_of::value), "Unsupported type for this message packet"); - - void* p = data; - ::new (p) T(static_cast(msg)); - } - - //******************************************** - ~message_packet() - { - etl::imessage* pmsg = static_cast(data); - - #if defined(ETL_MESSAGES_ARE_VIRTUAL) || defined(ETL_POLYMORPHIC_MESSAGES) - pmsg->~imessage(); - #else - size_t id = pmsg->message_id; - - switch (id) - { - case T1::ID: static_cast(pmsg)->~T1(); break; - case T2::ID: static_cast(pmsg)->~T2(); break; - case T3::ID: static_cast(pmsg)->~T3(); break; - default: assert(false); break; - } - #endif - } - - //******************************************** - etl::imessage& get() - { - return *static_cast(data); - } - - //******************************************** - const etl::imessage& get() const - { - return *static_cast(data); - } - - enum - { - SIZE = etl::largest::size, - ALIGNMENT = etl::largest::alignment - }; - - private: - - typename etl::aligned_storage::type data; - }; + typedef etl::message_packet message_packet; //********************************************** message_router(etl::message_router_id_t id_) @@ -2779,77 +1590,7 @@ namespace etl { public: - //********************************************** - class message_packet - { - public: - - //******************************************** - explicit message_packet(const etl::imessage& msg) - { - const size_t id = msg.message_id; - - void* p = data; - - switch (id) - { - case T1::ID: ::new (p) T1(static_cast(msg)); break; - case T2::ID: ::new (p) T2(static_cast(msg)); break; - default: ETL_ASSERT(false, ETL_ERROR(unhandled_message_exception)); break; - } - } - - //******************************************** - template - explicit message_packet(const T& msg) - { - ETL_STATIC_ASSERT((etl::is_one_of::value), "Unsupported type for this message packet"); - - void* p = data; - ::new (p) T(static_cast(msg)); - } - - //******************************************** - ~message_packet() - { - etl::imessage* pmsg = static_cast(data); - - #if defined(ETL_MESSAGES_ARE_VIRTUAL) || defined(ETL_POLYMORPHIC_MESSAGES) - pmsg->~imessage(); - #else - size_t id = pmsg->message_id; - - switch (id) - { - case T1::ID: static_cast(pmsg)->~T1(); break; - case T2::ID: static_cast(pmsg)->~T2(); break; - default: assert(false); break; - } - #endif - } - - //******************************************** - etl::imessage& get() - { - return *static_cast(data); - } - - //******************************************** - const etl::imessage& get() const - { - return *static_cast(data); - } - - enum - { - SIZE = etl::largest::size, - ALIGNMENT = etl::largest::alignment - }; - - private: - - typename etl::aligned_storage::type data; - }; + typedef etl::message_packet message_packet; //********************************************** message_router(etl::message_router_id_t id_) @@ -2935,75 +1676,7 @@ namespace etl { public: - //********************************************** - class message_packet - { - public: - - //******************************************** - explicit message_packet(const etl::imessage& msg) - { - const size_t id = msg.message_id; - - void* p = data; - - switch (id) - { - case T1::ID: ::new (p) T1(static_cast(msg)); break; - default: ETL_ASSERT(false, ETL_ERROR(unhandled_message_exception)); break; - } - } - - //******************************************** - template - explicit message_packet(const T& msg) - { - ETL_STATIC_ASSERT((etl::is_one_of::value), "Unsupported type for this message packet"); - - void* p = data; - ::new (p) T(static_cast(msg)); - } - - //******************************************** - ~message_packet() - { - etl::imessage* pmsg = static_cast(data); - - #if defined(ETL_MESSAGES_ARE_VIRTUAL) || defined(ETL_POLYMORPHIC_MESSAGES) - pmsg->~imessage(); - #else - size_t id = pmsg->message_id; - - switch (id) - { - case T1::ID: static_cast(pmsg)->~T1(); break; - default: assert(false); break; - } - #endif - } - - //******************************************** - etl::imessage& get() - { - return *static_cast(data); - } - - //******************************************** - const etl::imessage& get() const - { - return *static_cast(data); - } - - enum - { - SIZE = etl::largest::size, - ALIGNMENT = etl::largest::alignment - }; - - private: - - typename etl::aligned_storage::type data; - }; + typedef etl::message_packet< T1> message_packet; //********************************************** message_router(etl::message_router_id_t id_) diff --git a/include/etl/message_router_generator.h b/include/etl/message_router_generator.h index 8049b5e1..61951531 100644 --- a/include/etl/message_router_generator.h +++ b/include/etl/message_router_generator.h @@ -68,6 +68,7 @@ cog.outl("//******************************************************************** #include "platform.h" #include "message.h" +#include "message_packet.h" #include "message_types.h" #include "alignment.h" #include "error_handler.h" @@ -272,89 +273,10 @@ namespace etl cog.outl("{") cog.outl("public:") cog.outl("") - cog.outl(" //**********************************************") - cog.outl(" class message_packet") - cog.outl(" {") - cog.outl(" public:") - cog.outl("") - cog.outl(" //********************************************") - cog.outl(" explicit message_packet(const etl::imessage& msg)") - cog.outl(" {") - cog.outl(" const size_t id = msg.message_id;") - cog.outl("") - cog.outl(" void* p = data;") - cog.outl("") - cog.outl(" switch (id)") - cog.outl(" {") - for n in range(1, int(Handlers) + 1): - cog.outl(" case T%s::ID: ::new (p) T%s(static_cast(msg)); break;" % (n, n, n)) - cog.outl(" default: ETL_ASSERT(false, ETL_ERROR(unhandled_message_exception)); break;") - cog.outl(" }") - cog.outl(" }") - cog.outl("") - cog.outl(" //********************************************") - cog.outl(" template ") - cog.outl(" explicit message_packet(const T& msg)") - cog.outl(" {") - cog.out(" ETL_STATIC_ASSERT((etl::is_one_of::value), "Unsupported type for this message packet");""" % int(Handlers)) - cog.outl("") - cog.outl(" void* p = data;") - cog.outl(" ::new (p) T(static_cast(msg));") - cog.outl(" }") - cog.outl("") - cog.outl(" //********************************************") - cog.outl(" ~message_packet()") - cog.outl(" {") - cog.outl(" etl::imessage* pmsg = static_cast(data);") - cog.outl("") - cog.outl("#if defined(ETL_MESSAGES_ARE_VIRTUAL) || defined(ETL_POLYMORPHIC_MESSAGES)") - cog.outl(" pmsg->~imessage();") - cog.outl("#else") - cog.outl(" size_t id = pmsg->message_id;") - cog.outl("") - cog.outl(" switch (id)") - cog.outl(" {") - for n in range(1, int(Handlers) + 1): - cog.outl(" case T%s::ID: static_cast(pmsg)->~T%s(); break;" % (n, n, n)) - cog.outl(" default: assert(false); break;") - cog.outl(" }") - cog.outl("#endif") - cog.outl(" }") - cog.outl("") - cog.outl(" //********************************************") - cog.outl(" etl::imessage& get()") - cog.outl(" {") - cog.outl(" return *static_cast(data);") - cog.outl(" }") - cog.outl("") - cog.outl(" //********************************************") - cog.outl(" const etl::imessage& get() const") - cog.outl(" {") - cog.outl(" return *static_cast(data);") - cog.outl(" }") - cog.outl("") - cog.outl(" enum") - cog.outl(" {") - cog.out(" SIZE = etl::largest<") - for n in range(1, int(Handlers)): - cog.out("T%s, " % n) - cog.outl("T%s>::size," % int(Handlers)) - cog.out(" ALIGNMENT = etl::largest<") - for n in range(1, int(Handlers)): - cog.out("T%s, " % n) - cog.outl("T%s>::alignment" % int(Handlers)) - cog.outl(" };") - cog.outl("") - cog.outl(" private:") - cog.outl("") - cog.outl(" typename etl::aligned_storage::type data;") - cog.outl(" };") + cog.outl(" T%s> message_packet;" % int(Handlers)) cog.outl("") cog.outl(" //**********************************************") cog.outl(" message_router(etl::message_router_id_t id_)") @@ -472,89 +394,10 @@ namespace etl cog.outl("{") cog.outl("public:") cog.outl("") - cog.outl(" //**********************************************") - cog.outl(" class message_packet") - cog.outl(" {") - cog.outl(" public:") - cog.outl("") - cog.outl(" //********************************************") - cog.outl(" explicit message_packet(const etl::imessage& msg)") - cog.outl(" {") - cog.outl(" const size_t id = msg.message_id;") - cog.outl("") - cog.outl(" void* p = data;") - cog.outl("") - cog.outl(" switch (id)") - cog.outl(" {") - for t in range(1, n + 1): - cog.outl(" case T%s::ID: ::new (p) T%s(static_cast(msg)); break;" % (t, t, t)) - cog.outl(" default: ETL_ASSERT(false, ETL_ERROR(unhandled_message_exception)); break;") - cog.outl(" }") - cog.outl(" }") - cog.outl("") - cog.outl(" //********************************************") - cog.outl(" template ") - cog.outl(" explicit message_packet(const T& msg)") - cog.outl(" {") - cog.out(" ETL_STATIC_ASSERT((etl::is_one_of::value), "Unsupported type for this message packet");""" % n) - cog.outl("") - cog.outl(" void* p = data;") - cog.outl(" ::new (p) T(static_cast(msg));") - cog.outl(" }") - cog.outl("") - cog.outl(" //********************************************") - cog.outl(" ~message_packet()") - cog.outl(" {") - cog.outl(" etl::imessage* pmsg = static_cast(data);") - cog.outl("") - cog.outl("#if defined(ETL_MESSAGES_ARE_VIRTUAL) || defined(ETL_POLYMORPHIC_MESSAGES)") - cog.outl(" pmsg->~imessage();") - cog.outl("#else") - cog.outl(" size_t id = pmsg->message_id;") - cog.outl("") - cog.outl(" switch (id)") - cog.outl(" {") - for t in range(1, n + 1): - cog.outl(" case T%s::ID: static_cast(pmsg)->~T%s(); break;" % (t, t, t)) - cog.outl(" default: assert(false); break;") - cog.outl(" }") - cog.outl("#endif") - cog.outl(" }") - cog.outl("") - cog.outl(" //********************************************") - cog.outl(" etl::imessage& get()") - cog.outl(" {") - cog.outl(" return *static_cast(data);") - cog.outl(" }") - cog.outl("") - cog.outl(" //********************************************") - cog.outl(" const etl::imessage& get() const") - cog.outl(" {") - cog.outl(" return *static_cast(data);") - cog.outl(" }") - cog.outl("") - cog.outl(" enum") - cog.outl(" {") - cog.out(" SIZE = etl::largest<") - for t in range(1, n): - cog.out("T%s, " % t) - cog.outl("T%s>::size," % n) - cog.out(" ALIGNMENT = etl::largest<") - for t in range(1, n): - cog.out("T%s, " % t) - cog.outl("T%s>::alignment" % n) - cog.outl(" };") - cog.outl("") - cog.outl(" private:") - cog.outl("") - cog.outl(" typename etl::aligned_storage::type data;") - cog.outl(" };") + cog.outl(" T%s> message_packet;" % n) cog.outl("") cog.outl(" //**********************************************") cog.outl(" message_router(etl::message_router_id_t id_)") diff --git a/include/etl/platform.h b/include/etl/platform.h index a00a434a..a556338b 100644 --- a/include/etl/platform.h +++ b/include/etl/platform.h @@ -72,6 +72,7 @@ SOFTWARE. #define ETL_CONST_OR_CONSTEXPR constexpr #define ETL_DELETE = delete #define ETL_EXPLICIT explicit + #define ETL_OVERRIDE override #if defined(ETL_EXCEPTIONS_DISABLED) #define ETL_NOEXCEPT #define ETL_NOEXCEPT_EXPR(expression) @@ -84,6 +85,7 @@ SOFTWARE. #define ETL_CONST_OR_CONSTEXPR const #define ETL_DELETE #define ETL_EXPLICIT + #define ETL_OVERRIDE #define ETL_NOEXCEPT #define ETL_NOEXCEPT_EXPR(expression) #endif diff --git a/include/etl/version.h b/include/etl/version.h index 83d8d60f..ae06c800 100644 --- a/include/etl/version.h +++ b/include/etl/version.h @@ -38,8 +38,8 @@ SOFTWARE. ///\ingroup utilities #define ETL_VERSION_MAJOR 16 -#define ETL_VERSION_MINOR 7 -#define ETL_VERSION_PATCH 1 +#define ETL_VERSION_MINOR 8 +#define ETL_VERSION_PATCH 0 #define ETL_VERSION ETL_STRINGIFY(ETL_VERSION_MAJOR) "." ETL_STRINGIFY(ETL_VERSION_MINOR) "." ETL_STRINGIFY(ETL_VERSION_PATCH) #define ETL_VERSION_W ETL_STRINGIFY(ETL_VERSION_MAJOR) L"." ETL_STRINGIFY(ETL_VERSION_MINOR) L"." ETL_STRINGIFY(ETL_VERSION_PATCH) #define ETL_VERSION_U16 ETL_STRINGIFY(ETL_VERSION_MAJOR) u"." ETL_STRINGIFY(ETL_VERSION_MINOR) u"." ETL_STRINGIFY(ETL_VERSION_PATCH) diff --git a/library.json b/library.json index d9f6e5e7..75b96331 100644 --- a/library.json +++ b/library.json @@ -1,6 +1,6 @@ { "name": "Embedded Template Library", - "version": "16.7.1", + "version": "16.8.0", "authors": { "name": "John Wellbelove", "email": "john.wellbelove@etlcpp.com" diff --git a/library.properties b/library.properties index f1379e04..b554dfd3 100644 --- a/library.properties +++ b/library.properties @@ -1,5 +1,5 @@ name=Embedded Template Library -version=16.7.1 +version=16.8.0 author= John Wellbelove maintainer=John Wellbelove license=MIT diff --git a/support/Release notes.txt b/support/Release notes.txt index 82f88819..d971f82e 100644 --- a/support/Release notes.txt +++ b/support/Release notes.txt @@ -1,3 +1,7 @@ +=============================================================================== +16.8.0 +Extracted message_packet from etl::message_router for use as an independant class. + =============================================================================== 16.7.1 Fix C++03 compatibility issues in memory.h and utility.h diff --git a/test/test_message_router.cpp b/test/test_message_router.cpp index f1fe6113..5b2d1b94 100644 --- a/test/test_message_router.cpp +++ b/test/test_message_router.cpp @@ -32,7 +32,6 @@ SOFTWARE. #include "etl/message_router.h" #include "etl/queue.h" #include "etl/largest.h" -#include "etl/packet.h" //*************************************************************************** // The set of messages. diff --git a/test/vs2017/etl.vcxproj b/test/vs2017/etl.vcxproj index 19b622de..6b0c44fa 100644 --- a/test/vs2017/etl.vcxproj +++ b/test/vs2017/etl.vcxproj @@ -888,6 +888,9 @@ + + + @@ -1106,6 +1109,7 @@ + ../../../unittest-cpp @@ -1442,6 +1446,7 @@ + diff --git a/test/vs2017/etl.vcxproj.filters b/test/vs2017/etl.vcxproj.filters index 06cd6e63..bde4af08 100644 --- a/test/vs2017/etl.vcxproj.filters +++ b/test/vs2017/etl.vcxproj.filters @@ -822,6 +822,15 @@ ETL\Utilities\Mutex + + ETL\Frameworks\Generators + + + ETL\Frameworks + + + ETL\Frameworks + @@ -1277,6 +1286,9 @@ Source Files + + Source Files + @@ -1324,6 +1336,9 @@ Resource Files + + Resource Files\Generators +