18#ifndef LIBSEMIGROUPS_IS_MATRIX_HPP_
19#define LIBSEMIGROUPS_IS_MATRIX_HPP_
26 struct MatrixPolymorphicBase {};
29 struct IsMatrixHelper {
30 static constexpr bool value
31 = std::is_base_of<detail::MatrixPolymorphicBase, T>::value;
35 struct IsStaticMatrixHelper : std::false_type {};
38 struct IsMatWithSemiringHelper : std::false_type {};
40 template <
typename S,
typename T =
void>
41 struct IsTruncMatHelper : std::false_type {};
44 static constexpr bool IsTruncMat = IsTruncMatHelper<T>::value;
47 struct IsIntMatHelper : std::false_type {};
50 struct IsBMatHelper : std::false_type {};
53 struct IsMaxPlusMatHelper : std::false_type {};
56 struct IsMinPlusMatHelper : std::false_type {};
59 struct IsMaxPlusTruncMatHelper : std::false_type {};
62 struct IsMinPlusTruncMatHelper : std::false_type {};
65 struct IsNTPMatHelper : std::false_type {};
68 struct IsProjMaxPlusMatHelper : std::false_type {};
87 constexpr bool IsMatrix = detail::IsMatrixHelper<T>::value;
112 template <
typename T>
125 template <
typename T>
127 = detail::IsMatWithSemiringHelper<T>::value;
139 template <
typename T>
140 static constexpr bool IsIntMat = detail::IsIntMatHelper<T>::value;
152 template <
typename T>
153 static constexpr bool IsBMat = detail::IsBMatHelper<T>::value;
165 template <
typename T>
166 static constexpr bool IsMaxPlusMat = detail::IsMaxPlusMatHelper<T>::value;
178 template <
typename T>
179 static constexpr bool IsMinPlusMat = detail::IsMinPlusMatHelper<T>::value;
192 template <
typename T>
194 = detail::IsMaxPlusTruncMatHelper<T>::value;
207 template <
typename T>
209 = detail::IsMinPlusTruncMatHelper<T>::value;
222 template <
typename U>
223 static constexpr bool IsNTPMat = detail::IsNTPMatHelper<U>::value;
236 template <
typename T>
238 = detail::IsProjMaxPlusMatHelper<T>::value;
static constexpr bool IsBMat
Helper to check if a type is BMat.
Definition is-matrix.hpp:153
static constexpr bool IsMaxPlusMat
Helper variable template.
Definition is-matrix.hpp:166
constexpr bool IsStaticMatrix
Helper variable template.
Definition is-matrix.hpp:100
constexpr bool IsDynamicMatrix
Helper variable template.
Definition is-matrix.hpp:113
static constexpr bool IsIntMat
Helper variable template.
Definition is-matrix.hpp:140
static constexpr bool IsMatWithSemiring
Helper variable template.
Definition is-matrix.hpp:127
static constexpr bool IsMinPlusMat
Helper variable template.
Definition is-matrix.hpp:179
constexpr bool IsMatrix
Helper variable template.
Definition is-matrix.hpp:87
static constexpr bool IsMaxPlusTruncMat
Helper to check if a type is MaxPlusTruncMat.
Definition is-matrix.hpp:194
static constexpr bool IsMinPlusTruncMat
Helper to check if a type is MinPlusTruncMat.
Definition is-matrix.hpp:209
static constexpr bool IsNTPMat
Helper to check if a type is NTPMat.
Definition is-matrix.hpp:223
static constexpr bool IsProjMaxPlusMat
Helper to check if a type is ProjMaxPlusMat.
Definition is-matrix.hpp:238
Namespace for everything in the libsemigroups library.
Definition action.hpp:44