Line data Source code
1 0 : // Distributed under the MIT License.
2 : // See LICENSE.txt for details.
3 :
4 : #pragma once
5 :
6 : #include <cstddef>
7 :
8 : #include "Domain/Structure/ObjectLabel.hpp"
9 :
10 : /// \cond
11 : namespace control_system::Systems {
12 : template <::domain::ObjectLabel Horizon, size_t DerivOrder>
13 : struct Size;
14 : } // namespace control_system::Systems
15 : /// \endcond
16 :
17 : namespace control_system::size {
18 : // tt::is_a doesn't work because of domain::ObjectLabel and size_t
19 : template <typename T>
20 0 : struct is_size : std::false_type {};
21 :
22 : template <domain::ObjectLabel Label, size_t DerivOrder>
23 0 : struct is_size<Systems::Size<Label, DerivOrder>> : std::true_type {};
24 :
25 : /// Check whether a control system is the `control_system::Systems::Size` system
26 : /// or not
27 : template <typename T>
28 1 : constexpr bool is_size_v = is_size<T>::value;
29 : } // namespace control_system::size
|