Synced message_router generator to updated code

This commit is contained in:
John Wellbelove 2026-01-30 09:06:54 +00:00
parent 0ad0cec342
commit a7fe6bc6b0
2 changed files with 57 additions and 231 deletions

View File

@ -76,7 +76,7 @@ cog.outl("//********************************************************************
#include "placement_new.h"
#include "successor.h"
#include "type_traits.h"
#include "type_list.h"
#include <stdint.h>
namespace etl
@ -574,8 +574,7 @@ namespace etl
cog.outl("//***************************************************************************")
cog.outl("template <typename TDerived,")
cog.out(" ")
cog.out("typename T1, ")
for n in range(2, int(Handlers)):
for n in range(1, int(Handlers)):
cog.out("typename T%s = void, " % n)
if n % 4 == 0:
cog.outl("")
@ -589,8 +588,17 @@ namespace etl
cog.out(" typedef etl::message_packet<")
for n in range(1, int(Handlers)):
cog.out("T%s, " % n)
cog.outl(" T%s> message_packet;" % int(Handlers))
cog.outl("T%s> message_packet;" % int(Handlers))
cog.outl("")
cog.outl("#if ETL_USING_CPP11")
cog.out(" using message_types = etl::type_list<")
for n in range(1, int(Handlers)):
cog.out("T%s, " % n)
cog.outl("T%s> message_packet;" % int(Handlers))
cog.outl("#endif")
cog.outl("")
cog.outl(" //**********************************************")
cog.outl(" message_router(etl::message_router_id_t id_)")
cog.outl(" : imessage_router(id_)")
@ -765,6 +773,15 @@ namespace etl
cog.out("T%s, " % t)
cog.outl(" T%s> message_packet;" % n)
cog.outl("")
cog.outl("#if ETL_USING_CPP11")
cog.out(" using message_types = etl::type_list<")
for t in range(1, n):
cog.out("T%s, " % t)
cog.outl("T%s>;" % n)
cog.outl("#endif")
cog.outl("")
cog.outl(" //**********************************************")
cog.outl(" message_router(etl::message_router_id_t id_)")
cog.outl(" : imessage_router(id_)")

View File

@ -65,7 +65,6 @@ SOFTWARE.
#include "successor.h"
#include "type_traits.h"
#include "type_list.h"
#include <stdint.h>
namespace etl
@ -411,8 +410,7 @@ namespace etl
{
public:
using message_packet = etl::message_packet<TMessageTypes...>;
using message_types = etl::type_list<TMessageTypes...>;
typedef etl::message_packet<TMessageTypes...> message_packet;
//**********************************************
message_router()
@ -550,108 +548,7 @@ namespace etl
}
}
};
//***************************************************************************
// The definition for 0 message types.
//***************************************************************************
template <typename TDerived>
class message_router<TDerived> : public imessage_router
{
public:
using message_packet = etl::message_packet<>;
using message_types = etl::type_list<>;
//**********************************************
message_router()
: imessage_router(etl::imessage_router::MESSAGE_ROUTER)
{
}
//**********************************************
message_router(etl::imessage_router& successor_)
: imessage_router(etl::imessage_router::MESSAGE_ROUTER, successor_)
{
}
//**********************************************
message_router(etl::message_router_id_t id_)
: imessage_router(id_)
{
ETL_ASSERT(id_ <= etl::imessage_router::MAX_MESSAGE_ROUTER, ETL_ERROR(etl::message_router_illegal_id));
}
//**********************************************
message_router(etl::message_router_id_t id_, etl::imessage_router& successor_)
: imessage_router(id_, successor_)
{
ETL_ASSERT(id_ <= etl::imessage_router::MAX_MESSAGE_ROUTER, ETL_ERROR(etl::message_router_illegal_id));
}
//**********************************************
using etl::imessage_router::receive;
void receive(const etl::imessage& msg) ETL_OVERRIDE
{
if (has_successor())
{
get_successor().receive(msg);
}
}
template <typename TMessage, typename etl::enable_if<etl::is_base_of<imessage, TMessage>::value, int>::type = 0>
void receive(const TMessage& msg)
{
#include "etl/private/diagnostic_array_bounds_push.h"
if (has_successor())
{
get_successor().receive(msg);
}
#include "etl/private/diagnostic_pop.h"
}
//**********************************************
using imessage_router::accepts;
bool accepts(etl::message_id_t /*id*/) const ETL_OVERRIDE
{
return false;
}
//********************************************
ETL_DEPRECATED bool is_null_router() const ETL_OVERRIDE
{
return false;
}
//********************************************
bool is_producer() const ETL_OVERRIDE
{
return true;
}
//********************************************
bool is_consumer() const ETL_OVERRIDE
{
return true;
}
};
//***************************************************************************
/// Helper to turn etl::type_list<TTypes...> into etl::tuple<TTypes...>
template <typename TDerived, typename TList>
struct message_router_from_type_list;
template <typename TDerived, typename... TMessageTypes>
struct message_router_from_type_list<TDerived, etl::type_list<TMessageTypes...>>
{
using type = etl::message_router<TDerived, TMessageTypes...>;
};
template <typename TDerived, typename TTypeList>
using message_router_from_type_list_t = typename message_router_from_type_list<TDerived, TTypeList>::type;
#else
#else
//*************************************************************************************************
// For C++14 and below.
//*************************************************************************************************
@ -669,9 +566,9 @@ namespace etl
typedef etl::message_packet<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> message_packet;
#if ETL_USING_CPP11
using message_types = etl::type_list<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>;
#endif
#if ETL_USING_CPP11
using message_types = etl::type_list<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> message_packet;
#endif
//**********************************************
message_router(etl::message_router_id_t id_)
@ -824,9 +721,9 @@ namespace etl
typedef etl::message_packet<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> message_packet;
#if ETL_USING_CPP11
#if ETL_USING_CPP11
using message_types = etl::type_list<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>;
#endif
#endif
//**********************************************
message_router(etl::message_router_id_t id_)
@ -979,9 +876,9 @@ namespace etl
typedef etl::message_packet<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> message_packet;
#if ETL_USING_CPP11
#if ETL_USING_CPP11
using message_types = etl::type_list<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>;
#endif
#endif
//**********************************************
message_router(etl::message_router_id_t id_)
@ -1133,9 +1030,9 @@ namespace etl
typedef etl::message_packet<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> message_packet;
#if ETL_USING_CPP11
#if ETL_USING_CPP11
using message_types = etl::type_list<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>;
#endif
#endif
//**********************************************
message_router(etl::message_router_id_t id_)
@ -1285,9 +1182,9 @@ namespace etl
typedef etl::message_packet<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> message_packet;
#if ETL_USING_CPP11
#if ETL_USING_CPP11
using message_types = etl::type_list<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>;
#endif
#endif
//**********************************************
message_router(etl::message_router_id_t id_)
@ -1436,9 +1333,9 @@ namespace etl
typedef etl::message_packet<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> message_packet;
#if ETL_USING_CPP11
#if ETL_USING_CPP11
using message_types = etl::type_list<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>;
#endif
#endif
//**********************************************
message_router(etl::message_router_id_t id_)
@ -1586,9 +1483,9 @@ namespace etl
typedef etl::message_packet<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> message_packet;
#if ETL_USING_CPP11
#if ETL_USING_CPP11
using message_types = etl::type_list<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>;
#endif
#endif
//**********************************************
message_router(etl::message_router_id_t id_)
@ -1735,9 +1632,9 @@ namespace etl
typedef etl::message_packet<T1, T2, T3, T4, T5, T6, T7, T8, T9> message_packet;
#if ETL_USING_CPP11
#if ETL_USING_CPP11
using message_types = etl::type_list<T1, T2, T3, T4, T5, T6, T7, T8, T9>;
#endif
#endif
//**********************************************
message_router(etl::message_router_id_t id_)
@ -1882,9 +1779,9 @@ namespace etl
typedef etl::message_packet<T1, T2, T3, T4, T5, T6, T7, T8> message_packet;
#if ETL_USING_CPP11
#if ETL_USING_CPP11
using message_types = etl::type_list<T1, T2, T3, T4, T5, T6, T7, T8>;
#endif
#endif
//**********************************************
message_router(etl::message_router_id_t id_)
@ -2028,9 +1925,9 @@ namespace etl
typedef etl::message_packet<T1, T2, T3, T4, T5, T6, T7> message_packet;
#if ETL_USING_CPP11
#if ETL_USING_CPP11
using message_types = etl::type_list<T1, T2, T3, T4, T5, T6, T7>;
#endif
#endif
//**********************************************
message_router(etl::message_router_id_t id_)
@ -2172,9 +2069,9 @@ namespace etl
typedef etl::message_packet<T1, T2, T3, T4, T5, T6> message_packet;
#if ETL_USING_CPP11
#if ETL_USING_CPP11
using message_types = etl::type_list<T1, T2, T3, T4, T5, T6>;
#endif
#endif
//**********************************************
message_router(etl::message_router_id_t id_)
@ -2315,9 +2212,9 @@ namespace etl
typedef etl::message_packet<T1, T2, T3, T4, T5> message_packet;
#if ETL_USING_CPP11
#if ETL_USING_CPP11
using message_types = etl::type_list<T1, T2, T3, T4, T5>;
#endif
#endif
//**********************************************
message_router(etl::message_router_id_t id_)
@ -2456,9 +2353,9 @@ namespace etl
typedef etl::message_packet<T1, T2, T3, T4> message_packet;
#if ETL_USING_CPP11
#if ETL_USING_CPP11
using message_types = etl::type_list<T1, T2, T3, T4>;
#endif
#endif
//**********************************************
message_router(etl::message_router_id_t id_)
@ -2596,9 +2493,9 @@ namespace etl
typedef etl::message_packet<T1, T2, T3> message_packet;
#if ETL_USING_CPP11
#if ETL_USING_CPP11
using message_types = etl::type_list<T1, T2, T3>;
#endif
#endif
//**********************************************
message_router(etl::message_router_id_t id_)
@ -2735,9 +2632,9 @@ namespace etl
typedef etl::message_packet<T1, T2> message_packet;
#if ETL_USING_CPP11
#if ETL_USING_CPP11
using message_types = etl::type_list<T1, T2>;
#endif
#endif
//**********************************************
message_router(etl::message_router_id_t id_)
@ -2871,11 +2768,11 @@ namespace etl
{
public:
typedef etl::message_packet<T1> message_packet;
typedef etl::message_packet< T1> message_packet;
#if ETL_USING_CPP11
#if ETL_USING_CPP11
using message_types = etl::type_list<T1>;
#endif
#endif
//**********************************************
message_router(etl::message_router_id_t id_)
@ -2997,94 +2894,6 @@ namespace etl
return true;
}
};
//***************************************************************************
// Specialisation for 0 message types.
//***************************************************************************
template <typename TDerived>
class message_router<TDerived, void, void, void, void, void, void, void, void, void, void, void, void, void, void, void, void>
: public imessage_router
{
public:
typedef etl::message_packet<> message_packet;
#if ETL_USING_CPP11
using message_types = etl::type_list<>;
#endif
//**********************************************
message_router(etl::message_router_id_t id_)
: imessage_router(id_)
{
ETL_ASSERT(id_ <= etl::imessage_router::MAX_MESSAGE_ROUTER, ETL_ERROR(etl::message_router_illegal_id));
}
//**********************************************
message_router(etl::message_router_id_t id_, etl::imessage_router& successor_)
: imessage_router(id_, successor_)
{
ETL_ASSERT(id_ <= etl::imessage_router::MAX_MESSAGE_ROUTER, ETL_ERROR(etl::message_router_illegal_id));
}
//**********************************************
message_router()
: imessage_router(etl::imessage_router::MESSAGE_ROUTER)
{
}
//**********************************************
message_router(etl::imessage_router& successor_)
: imessage_router(etl::imessage_router::MESSAGE_ROUTER, successor_)
{
}
//**********************************************
using etl::imessage_router::receive;
void receive(const etl::imessage& msg) ETL_OVERRIDE
{
#include "etl/private/diagnostic_array_bounds_push.h"
if (has_successor())
{
get_successor().receive(msg);
}
#include "etl/private/diagnostic_pop.h"
}
//**********************************************
using imessage_router::accepts;
bool accepts(etl::message_id_t id) const ETL_OVERRIDE
{
if (has_successor())
{
return get_successor().accepts(id);
}
else
{
return false;
}
}
//********************************************
ETL_DEPRECATED bool is_null_router() const ETL_OVERRIDE
{
return false;
}
//********************************************
bool is_producer() const ETL_OVERRIDE
{
return true;
}
//********************************************
bool is_consumer() const ETL_OVERRIDE
{
return true;
}
};
#endif
}