13namespace module_traits {
27template<
typename T,
typename... Rest>
30template<
typename First,
typename... Rest>
41template<
typename T,
typename... Rest>
46template<
typename First,
typename... Rest>
52template<
typename UserRegistry,
typename OutputTypesTuple,
typename... CommandTypes>
55template<
typename UserRegistry,
typename... OutputTypes,
typename... CommandTypes>
57 using type = std::tuple<
MailboxSet<UserRegistry, OutputTypes, CommandTypes...>...>;
63template<
typename UserRegistry,
typename... Ts>
66template<
typename UserRegistry,
typename... Ts>
68 using type = std::conditional_t<
81template<
typename UserRegistry,
typename CommandTuple,
typename OutputTuple>
84template<
typename UserRegistry,
typename...
Commands,
typename...
Outputs>
86 using type = std::conditional_t<
87 sizeof...(Commands) == 0 &&
sizeof...(
Outputs) == 0,
90 sizeof...(Commands) == 0,
114template<
typename... Ts>
116 using type = std::tuple<Ts...>;
122template<
typename UserRegistry,
typename Tuple>
125template<
typename UserRegistry,
typename... Ts>
127 using type = std::conditional_t<
149template<
typename UserRegistry,
150 typename OutputSpec_,
152 typename... CommandTypes>
160 static constexpr size_t InputCount = std::tuple_size_v<InputTypesTuple>;
184 std::declval<CommandTuple>(),
185 std::declval<OutputTypesTuple>()
Mailbox that takes a MessageRegistry and exposes payload-only interface.
Type-restricted mailbox with optimized buffer sizing.
Input/Output specifications for multi-I/O modules.
CommRaT - Modern C++ Real-Time Communication Framework.
typename NormalizeInput< T >::Type NormalizeInput_t
typename NormalizeOutput< T >::Type NormalizeOutput_t
@ Commands
Command messages.
Complete set of mailboxes for one output type.
Multiple outputs specification.
Tag type to mark send-only types in template parameter.
std::tuple< MailboxSet< UserRegistry, OutputTypes, CommandTypes... >... > type
Generate MailboxSet tuple for each output type (Phase 7.4)
std::conditional_t< sizeof...(Commands)==0 &&sizeof...(Outputs)==0, TypedMailbox< UserRegistry >, std::conditional_t< sizeof...(Commands)==0, TypedMailbox< UserRegistry, SendOnlyTypes< Outputs... > >, std::conditional_t< sizeof...(Outputs)==0, TypedMailbox< UserRegistry, Commands... >, TypedMailbox< UserRegistry, ReceiveTypes< Commands... >, SendOnlyTypes< Outputs... > > > > > type
Create CMD mailbox with receive/send separation.
std::conditional_t< sizeof...(Ts)==0, RegistryMailbox< UserRegistry >, TypedMailbox< UserRegistry, Ts... > > type
Create typed CMD mailbox (Commands + Outputs)
std::conditional_t< sizeof...(Ts)==0, RegistryMailbox< UserRegistry >, TypedMailbox< UserRegistry, Ts... > > type
Create typed DATA mailbox (Input data types only)
Centralized type computation for Module class.
NormalizeOutput_t< OutputSpec_ > OutputSpec
static constexpr bool has_multi_output
typename ExtractInputTypes< InputSpec >::type InputTypesTuple
NormalizeInput_t< InputSpec_ > InputSpec
static constexpr size_t num_command_types
static constexpr bool has_periodic_input
static constexpr bool has_loop_input
typename ExtractPrimaryPayloadHelper< CommandTypes... >::type PrimaryPayloadType
typename MakeTypedCmdMailbox< UserRegistry, OutputTypesTuple >::type PublishMailbox
typename MakeTypedCmdMailboxWithSend< UserRegistry, CommandTuple, OutputTypesTuple >::type CmdMailbox
static constexpr bool has_continuous_input
typename ExtractDataTypes< InputSpec >::type DataTypesTuple
static constexpr bool has_primary_input_spec
static constexpr bool use_mailbox_sets
typename ExtractInputPayload< InputSpec >::type InputData
typename MakeTypedDataMailbox< UserRegistry, DataTypesTuple >::type DataMailbox
std::tuple< CommandTypes... > CommandTuple
typename MakeMailboxSetTuple< UserRegistry, OutputTypesTuple, CommandTypes... >::type MailboxSetTuple
static constexpr size_t num_output_types
typename ::commrat::OutputTypesTuple< OutputSpec >::type OutputTypesTuple
static constexpr bool has_multi_input
decltype(std::tuple_cat(std::declval< CommandTuple >(), std::declval< OutputTypesTuple >())) CombinedCmdTypes
typename ExtractOutputPayload< OutputSpec >::type OutputData
Type-restricted mailbox with optimized buffer sizing (Phase 7)