Add a static accepts() function to message_packet. Allows a router to determine if a packet type can be created with a generic imessage it received. (#373)

This commit is contained in:
Jeremy Overesch 2021-04-22 02:39:41 -05:00 committed by GitHub
parent 7dfd971b4e
commit d834586d30
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 236 additions and 0 deletions

View File

@ -190,6 +190,23 @@ namespace etl
cog.outl(" return valid;")
cog.outl(" }")
cog.outl("")
cog.outl(" //**********************************************")
cog.outl(" static ETL_CONSTEXPR bool accepts(etl::message_id_t id)")
cog.outl(" {")
cog.outl(" switch (id)")
cog.outl(" {")
cog.out(" ")
for n in range(1, int(Handlers) + 1):
cog.out("case T%d::ID: " % n)
if n % 8 == 0:
cog.outl("")
cog.out(" ")
cog.outl(" return true;")
cog.outl(" default:")
cog.outl(" return false;")
cog.outl(" }")
cog.outl(" }")
cog.outl("")
cog.outl(" enum")
cog.outl(" {")
cog.out(" SIZE = etl::largest<")
@ -389,6 +406,24 @@ namespace etl
cog.outl(" return valid;")
cog.outl(" }")
cog.outl("")
cog.outl(" //**********************************************")
cog.outl(" static ETL_CONSTEXPR bool accepts(etl::message_id_t id)")
cog.outl(" {")
cog.outl(" switch (id)")
cog.outl(" {")
cog.out(" ")
for t in range(1, n + 1):
cog.out("case T%d::ID: " % t)
if t % 8 == 0:
cog.outl("")
cog.out(" ")
cog.outl("")
cog.outl(" return true;")
cog.outl(" default:")
cog.outl(" return false;")
cog.outl(" }")
cog.outl(" }")
cog.outl("")
cog.outl(" enum")
cog.outl(" {")
cog.out(" SIZE = etl::largest<")

View File

@ -169,6 +169,19 @@ namespace etl
return valid;
}
//**********************************************
static ETL_CONSTEXPR bool accepts(etl::message_id_t id)
{
switch (id)
{
case T1::ID: case T2::ID: case T3::ID: case T4::ID: case T5::ID: case T6::ID: case T7::ID: case T8::ID:
case T9::ID: case T10::ID: case T11::ID: case T12::ID: case T13::ID: case T14::ID: case T15::ID: case T16::ID:
return true;
default:
return false;
}
}
enum
{
SIZE = etl::largest<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>::size,
@ -382,6 +395,19 @@ namespace etl
return valid;
}
//**********************************************
static ETL_CONSTEXPR bool accepts(etl::message_id_t id)
{
switch (id)
{
case T1::ID: case T2::ID: case T3::ID: case T4::ID: case T5::ID: case T6::ID: case T7::ID: case T8::ID:
case T9::ID: case T10::ID: case T11::ID: case T12::ID: case T13::ID: case T14::ID: case T15::ID:
return true;
default:
return false;
}
}
enum
{
SIZE = etl::largest<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>::size,
@ -592,6 +618,19 @@ namespace etl
return valid;
}
//**********************************************
static ETL_CONSTEXPR bool accepts(etl::message_id_t id)
{
switch (id)
{
case T1::ID: case T2::ID: case T3::ID: case T4::ID: case T5::ID: case T6::ID: case T7::ID: case T8::ID:
case T9::ID: case T10::ID: case T11::ID: case T12::ID: case T13::ID: case T14::ID:
return true;
default:
return false;
}
}
enum
{
SIZE = etl::largest<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>::size,
@ -799,6 +838,19 @@ namespace etl
return valid;
}
//**********************************************
static ETL_CONSTEXPR bool accepts(etl::message_id_t id)
{
switch (id)
{
case T1::ID: case T2::ID: case T3::ID: case T4::ID: case T5::ID: case T6::ID: case T7::ID: case T8::ID:
case T9::ID: case T10::ID: case T11::ID: case T12::ID: case T13::ID:
return true;
default:
return false;
}
}
enum
{
SIZE = etl::largest<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>::size,
@ -1002,6 +1054,19 @@ namespace etl
return valid;
}
//**********************************************
static ETL_CONSTEXPR bool accepts(etl::message_id_t id)
{
switch (id)
{
case T1::ID: case T2::ID: case T3::ID: case T4::ID: case T5::ID: case T6::ID: case T7::ID: case T8::ID:
case T9::ID: case T10::ID: case T11::ID: case T12::ID:
return true;
default:
return false;
}
}
enum
{
SIZE = etl::largest<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>::size,
@ -1202,6 +1267,19 @@ namespace etl
return valid;
}
//**********************************************
static ETL_CONSTEXPR bool accepts(etl::message_id_t id)
{
switch (id)
{
case T1::ID: case T2::ID: case T3::ID: case T4::ID: case T5::ID: case T6::ID: case T7::ID: case T8::ID:
case T9::ID: case T10::ID: case T11::ID:
return true;
default:
return false;
}
}
enum
{
SIZE = etl::largest<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>::size,
@ -1399,6 +1477,19 @@ namespace etl
return valid;
}
//**********************************************
static ETL_CONSTEXPR bool accepts(etl::message_id_t id)
{
switch (id)
{
case T1::ID: case T2::ID: case T3::ID: case T4::ID: case T5::ID: case T6::ID: case T7::ID: case T8::ID:
case T9::ID: case T10::ID:
return true;
default:
return false;
}
}
enum
{
SIZE = etl::largest<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>::size,
@ -1593,6 +1684,19 @@ namespace etl
return valid;
}
//**********************************************
static ETL_CONSTEXPR bool accepts(etl::message_id_t id)
{
switch (id)
{
case T1::ID: case T2::ID: case T3::ID: case T4::ID: case T5::ID: case T6::ID: case T7::ID: case T8::ID:
case T9::ID:
return true;
default:
return false;
}
}
enum
{
SIZE = etl::largest<T1, T2, T3, T4, T5, T6, T7, T8, T9>::size,
@ -1783,6 +1887,19 @@ namespace etl
return valid;
}
//**********************************************
static ETL_CONSTEXPR bool accepts(etl::message_id_t id)
{
switch (id)
{
case T1::ID: case T2::ID: case T3::ID: case T4::ID: case T5::ID: case T6::ID: case T7::ID: case T8::ID:
return true;
default:
return false;
}
}
enum
{
SIZE = etl::largest<T1, T2, T3, T4, T5, T6, T7, T8>::size,
@ -1970,6 +2087,18 @@ namespace etl
return valid;
}
//**********************************************
static ETL_CONSTEXPR bool accepts(etl::message_id_t id)
{
switch (id)
{
case T1::ID: case T2::ID: case T3::ID: case T4::ID: case T5::ID: case T6::ID: case T7::ID:
return true;
default:
return false;
}
}
enum
{
SIZE = etl::largest<T1, T2, T3, T4, T5, T6, T7>::size,
@ -2154,6 +2283,18 @@ namespace etl
return valid;
}
//**********************************************
static ETL_CONSTEXPR bool accepts(etl::message_id_t id)
{
switch (id)
{
case T1::ID: case T2::ID: case T3::ID: case T4::ID: case T5::ID: case T6::ID:
return true;
default:
return false;
}
}
enum
{
SIZE = etl::largest<T1, T2, T3, T4, T5, T6>::size,
@ -2335,6 +2476,18 @@ namespace etl
return valid;
}
//**********************************************
static ETL_CONSTEXPR bool accepts(etl::message_id_t id)
{
switch (id)
{
case T1::ID: case T2::ID: case T3::ID: case T4::ID: case T5::ID:
return true;
default:
return false;
}
}
enum
{
SIZE = etl::largest<T1, T2, T3, T4, T5>::size,
@ -2512,6 +2665,18 @@ namespace etl
return valid;
}
//**********************************************
static ETL_CONSTEXPR bool accepts(etl::message_id_t id)
{
switch (id)
{
case T1::ID: case T2::ID: case T3::ID: case T4::ID:
return true;
default:
return false;
}
}
enum
{
SIZE = etl::largest<T1, T2, T3, T4>::size,
@ -2686,6 +2851,18 @@ namespace etl
return valid;
}
//**********************************************
static ETL_CONSTEXPR bool accepts(etl::message_id_t id)
{
switch (id)
{
case T1::ID: case T2::ID: case T3::ID:
return true;
default:
return false;
}
}
enum
{
SIZE = etl::largest<T1, T2, T3>::size,
@ -2857,6 +3034,18 @@ namespace etl
return valid;
}
//**********************************************
static ETL_CONSTEXPR bool accepts(etl::message_id_t id)
{
switch (id)
{
case T1::ID: case T2::ID:
return true;
default:
return false;
}
}
enum
{
SIZE = etl::largest<T1, T2>::size,
@ -3025,6 +3214,18 @@ namespace etl
return valid;
}
//**********************************************
static ETL_CONSTEXPR bool accepts(etl::message_id_t id)
{
switch (id)
{
case T1::ID:
return true;
default:
return false;
}
}
enum
{
SIZE = etl::largest<T1>::size,