7
7
#include < interrupt/impl.hpp>
8
8
#include < interrupt/policies.hpp>
9
9
10
+ #include < stdx/ct_format.hpp>
11
+ #include < stdx/ct_string.hpp>
10
12
#include < stdx/tuple.hpp>
11
13
#include < stdx/tuple_algorithms.hpp>
14
+ #include < stdx/utility.hpp>
12
15
13
16
namespace interrupt {
14
17
namespace detail {
@@ -96,6 +99,13 @@ struct irq : detail::policy_config<Policies>,
96
99
detail::super_config<Number, Priority>,
97
100
detail::flow_config<Flows...> {
98
101
template <typename ... Nexi> using built_t = irq_impl<irq, Nexi...>;
102
+
103
+ constexpr static auto config () {
104
+ using namespace stdx ::literals;
105
+ return +stdx::ct_format<" interrupt::irq<{}_irq, {}, {}{}>" >(
106
+ stdx::ct<stdx::to_underlying (Number)>(), stdx::ct<Priority>(),
107
+ detail::get_name<Policies>(), detail::get_names<Flows...>());
108
+ }
99
109
};
100
110
101
111
template <typename EnableField, typename StatusField, typename Policies,
@@ -105,6 +115,13 @@ struct sub_irq : detail::policy_config<Policies>,
105
115
detail::sub_config<EnableField, StatusField>,
106
116
detail::flow_config<Flows...> {
107
117
template <typename ... Nexi> using built_t = sub_irq_impl<sub_irq, Nexi...>;
118
+
119
+ constexpr static auto config () {
120
+ using namespace stdx ::literals;
121
+ return +stdx::ct_format<" interrupt::sub_irq<{}, {}, {}{}>" >(
122
+ detail::get_name<EnableField>(), detail::get_name<StatusField>(),
123
+ detail::get_name<Policies>(), detail::get_names<Flows...>());
124
+ }
108
125
};
109
126
110
127
template <typename EnableField, typename Policies>
@@ -113,6 +130,12 @@ struct id_irq : detail::policy_config<Policies>,
113
130
detail::sub_config<EnableField, status_t <>> {
114
131
template <typename ...> using built_t = id_irq_impl<id_irq>;
115
132
template <typename > constexpr static bool triggers_flow = false ;
133
+
134
+ constexpr static auto config () {
135
+ using namespace stdx ::literals;
136
+ return +stdx::ct_format<" interrupt::id_irq<{}, {}>" >(
137
+ detail::get_name<EnableField>(), detail::get_name<Policies>());
138
+ }
116
139
};
117
140
118
141
template <irq_num_t Number, priority_t Priority, typename Policies,
@@ -131,6 +154,13 @@ struct shared_irq : detail::policy_config<Policies>,
131
154
template <typename Flow>
132
155
constexpr static bool triggers_flow =
133
156
(... or Cfgs::template triggers_flow<Flow>);
157
+
158
+ constexpr static auto config () {
159
+ using namespace stdx ::literals;
160
+ return +stdx::ct_format<" interrupt::shared_irq<{}_irq, {}, {}{}>" >(
161
+ stdx::ct<stdx::to_underlying (Number)>(), stdx::ct<Priority>(),
162
+ detail::get_name<Policies>(), detail::get_names<Cfgs...>());
163
+ }
134
164
};
135
165
136
166
template <typename EnableField, typename StatusField, typename Policies,
@@ -149,5 +179,12 @@ struct shared_sub_irq : detail::policy_config<Policies>,
149
179
template <typename Flow>
150
180
constexpr static bool triggers_flow =
151
181
(... or Cfgs::template triggers_flow<Flow>);
182
+
183
+ constexpr static auto config () {
184
+ using namespace stdx ::literals;
185
+ return +stdx::ct_format<" interrupt::shared_sub_irq<{}, {}, {}{}>" >(
186
+ detail::get_name<EnableField>(), detail::get_name<StatusField>(),
187
+ detail::get_name<Policies>(), detail::get_names<Cfgs...>());
188
+ }
152
189
};
153
190
} // namespace interrupt
0 commit comments