CommRaT 2.0.0
C++20 Real-Time Messaging Framework
Loading...
Searching...
No Matches
type_extraction.hpp
Go to the documentation of this file.
1#pragma once
2
5#include <tuple>
6#include <type_traits>
7
8namespace commrat {
9
10// ============================================================================
11// Type Extraction Helpers
12// ============================================================================
13
14// Helper to extract InputData from InputSpec (outside Module class)
15template<typename T>
17 using type = void; // PeriodicInput, LoopInput
18};
19
20template<typename T>
22 using type = T;
23};
24
25// Helper to extract input types tuple from InputSpec (outside Module)
26template<typename T>
28 using type = std::tuple<>; // Default: no inputs (PeriodicInput, LoopInput)
29};
30
31template<typename T>
33 using type = std::tuple<T>; // Single input
34};
35
36template<typename... Ts>
37struct ExtractInputTypes<Inputs<Ts...>> {
38 using type = std::tuple<Ts...>; // Multi-input
39};
40
41// Helper to extract OutputData from OutputSpec (outside Module class)
42template<typename T>
44 using type = T; // Raw type
45};
46
47template<typename T>
49 using type = T;
50};
51
52template<typename... Ts>
54 using type = void; // Multi-output: void process(T1& out1, T2& out2, ...)
55};
56
57// Helper to get output types as tuple (outside Module class)
58template<typename T>
60 using type = std::tuple<T>; // Raw type
61};
62
63template<typename T>
65 using type = std::tuple<T>;
66};
67
68template<typename... Ts>
69struct OutputTypesTuple<Outputs<Ts...>> {
70 using type = std::tuple<Ts...>;
71};
72
73} // namespace commrat
Input/Output specifications for multi-I/O modules.
CommRaT - Modern C++ Real-Time Communication Framework.
Single continuous input specification.
Definition io_spec.hpp:143
Multiple continuous inputs specification.
Definition io_spec.hpp:205
Single output specification.
Definition io_spec.hpp:68
Multiple outputs specification.
Definition io_spec.hpp:94