70 static constexpr size_t count = 1;
93template<
typename... Ts>
96 static constexpr size_t count =
sizeof...(Ts);
98 static_assert(
count > 0,
"Outputs<> requires at least one type");
204template<
typename... Ts>
207 static constexpr size_t count =
sizeof...(Ts);
209 static_assert(
count > 0,
"Inputs<> requires at least one type");
262template<
typename... Ts>
279 is_multi_output_v<T> ||
314template<
typename... Ts>
331 is_loop_input_v<T> ||
332 is_single_input_v<T> ||
359template<
typename... Ts>
361 static constexpr size_t value =
sizeof...(Ts);
385template<
typename... Ts>
387 static constexpr size_t value =
sizeof...(Ts);
417 using Type = std::conditional_t<
434template<
typename InputSpec>
444template<
typename... Ts>
446 using Type = std::tuple<Ts...>;
449template<
typename InputSpec>
455template<
typename OutputSpec>
465template<
typename... Ts>
467 using Type = std::tuple<Ts...>;
470template<
typename OutputSpec>
476template<
typename OutputSpec>
486template<
typename OutputSpec>
492template<
typename InputSpec>
502template<
typename InputSpec>
529template<
typename PrimaryT,
typename InputsTuple>
533template<
typename PrimaryT>
535 static_assert(
sizeof(PrimaryT) == 0,
536 "PrimaryInput type not found in Inputs<...> list. "
537 "Ensure PrimaryInput<T> specifies a type T that exists in Inputs<Ts...>.");
541template<
typename PrimaryT,
typename... Rest>
543 static constexpr size_t value = 0;
547template<
typename PrimaryT,
typename First,
typename... Rest>
552template<
typename PrimaryT,
typename InputsTuple>
564template<
typename PrimaryInputSpec,
typename InputSpec>
566 static_assert(is_primary_input_v<PrimaryInputSpec>,
567 "PrimaryInputSpec must be PrimaryInput<T>");
569 static_assert(is_multi_input_v<InputSpec>,
570 "InputSpec must be Inputs<Ts...> when using PrimaryInput<T>");
577 PrimaryInputIndex_v<PrimaryPayload, InputsPayloadTypes>;
582template<
typename PrimaryInputSpec,
typename InputSpec>
CommRaT - Modern C++ Real-Time Communication Framework.
constexpr bool is_periodic_input_v
constexpr bool is_single_input_v
typename SingleInputType< InputSpec >::Type SingleInputType_t
typename NormalizeInput< T >::Type NormalizeInput_t
constexpr bool is_no_output_v
typename OutputPayloadTypes< OutputSpec >::Type OutputPayloadTypes_t
typename NormalizeOutput< T >::Type NormalizeOutput_t
constexpr bool is_loop_input_v
constexpr bool ValidatePrimaryInput_v
constexpr size_t OutputCount_v
constexpr bool is_primary_input_v
constexpr bool is_single_output_v
typename InputPayloadTypes< InputSpec >::Type InputPayloadTypes_t
constexpr size_t InputCount_v
typename SingleOutputType< OutputSpec >::Type SingleOutputType_t
constexpr bool is_multi_output_v
constexpr bool is_multi_input_v
constexpr size_t PrimaryInputIndex_v
No output specification (sink module)
static constexpr size_t count
Maps raw output types to Output<T> format.
std::conditional_t< ValidOutputSpec< T >, T, Output< T > > Type
Get the number of outputs in an OutputSpec.
static constexpr size_t value
Extract payload types from Outputs<Ts...> as a tuple.
Single output specification.
static constexpr size_t count
Multiple outputs specification.
std::tuple< Ts... > PayloadTypes
static constexpr size_t count
Get the single payload type from Output<T> or legacy OutputDataT.