mirror of
https://github.com/ETLCPP/etl.git
synced 2026-04-30 19:09:10 +08:00
Synced message_router generator to updated code
This commit is contained in:
parent
0ad0cec342
commit
a7fe6bc6b0
@ -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_)")
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user