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