28template<
typename ModuleType>
32 ModuleType&
module() {
return static_cast<ModuleType&
>(*this); }
33 const ModuleType&
module()
const {
return static_cast<const ModuleType&
>(*this); }
53 static constexpr const char*
type_name() {
return typeid(T).name(); }
77 template<std::
size_t Index>
79 constexpr std::size_t num_inputs = ModuleType::num_inputs;
80 static_assert(Index < num_inputs,
"Input index out of bounds");
82 using InputType = std::conditional_t<
84 typename ModuleType::InputData,
85 std::tuple_element_t<Index, typename ModuleType::InputTypesTuple>
88 const auto& storage =
module().input_metadata_[Index];
91 .sequence_number = storage.sequence_number,
92 .message_id = storage.message_id,
93 .is_new_data = storage.is_new_data,
94 .is_valid = storage.is_valid
104 template<std::
size_t Index>
106 constexpr std::size_t num_inputs = ModuleType::num_inputs;
107 static_assert(Index < num_inputs,
"Input index out of bounds");
108 return module().input_metadata_[Index].timestamp;
121 template<std::
size_t Index>
123 constexpr std::size_t num_inputs = ModuleType::num_inputs;
124 static_assert(Index < num_inputs,
"Input index out of bounds");
125 return module().input_metadata_[Index].is_new_data;
137 template<std::
size_t Index>
139 constexpr std::size_t num_inputs = ModuleType::num_inputs;
140 static_assert(Index < num_inputs,
"Input index out of bounds");
141 return module().input_metadata_[Index].is_valid;
167 requires (ModuleType::num_inputs > 1)
170 typename std::tuple_element<0, typename ModuleType::InputTypesTuple>::type,
171 typename std::tuple_element<1, typename ModuleType::InputTypesTuple>::type
174 return get_input_metadata<index>();
182 requires (ModuleType::num_inputs > 1)
185 typename std::tuple_element<0, typename ModuleType::InputTypesTuple>::type,
186 typename std::tuple_element<1, typename ModuleType::InputTypesTuple>::type
189 return get_input_timestamp<index>();
197 requires (ModuleType::num_inputs > 1)
200 typename std::tuple_element<0, typename ModuleType::InputTypesTuple>::type,
201 typename std::tuple_element<1, typename ModuleType::InputTypesTuple>::type
203 return has_new_data<index>();
211 requires (ModuleType::num_inputs > 1)
214 typename std::tuple_element<0, typename ModuleType::InputTypesTuple>::type,
215 typename std::tuple_element<1, typename ModuleType::InputTypesTuple>::type
217 return is_input_valid<index>();
CommRaT - Modern C++ Real-Time Communication Framework.
static constexpr std::size_t find_type_index()
Find index of type T in input tuple.