21template<
size_t I,
typename T>
24template<
size_t I,
typename T>
27template<
size_t I,
typename T>
30template<
size_t I,
typename T>
33template<
size_t I,
typename T>
36template<
size_t I,
typename T>
40struct tuple_element<0, MR::
AffineXf<V>> {
using type =
typename V::MatrixType; };
43struct tuple_element<1, MR::
AffineXf<V>> {
using type = V; };
46struct tuple_element<0, MR::
Id<T>> {
using type = int; };
49struct tuple_element<
I, MR::Color> {
using type = uint8_t; };
52struct tuple_size<MR::
Vector2<T>> : integral_constant<size_t, MR::Vector2<T>::elements> {};
55struct tuple_size<MR::
Vector3<T>> : integral_constant<size_t, MR::Vector3<T>::elements> {};
58struct tuple_size<MR::
Vector4<T>> : integral_constant<size_t, MR::Vector4<T>::elements> {};
61struct tuple_size<MR::
Matrix2<T>> : integral_constant<size_t, MR::Matrix2<T>::VectorType::elements> {};
64struct tuple_size<MR::
Matrix3<T>> : integral_constant<size_t, MR::Matrix3<T>::VectorType::elements> {};
67struct tuple_size<MR::
Matrix4<T>> : integral_constant<size_t, MR::Matrix4<T>::VectorType::elements> {};
70struct tuple_size<MR::
AffineXf<V>> : integral_constant<size_t, 2> {};
73struct tuple_size<MR::
Id<T>> : integral_constant<size_t, 1> {};
76struct tuple_size<MR::Color> : integral_constant<size_t, 4> {};
88template<
size_t I,
typename T>
89constexpr const T&
get(
const Vector2<T>& v )
noexcept {
return v[int(
I )]; }
91template<
size_t I,
typename T>
94template<
size_t I,
typename T>
95constexpr const T&
get(
const Vector3<T>& v )
noexcept {
return v[int(
I )]; }
97template<
size_t I,
typename T>
100template<
size_t I,
typename T>
103template<
size_t I,
typename T>
106template<
size_t I,
typename T>
109template<
size_t I,
typename T>
112template<
size_t I,
typename T>
115template<
size_t I,
typename T>
118template<
size_t I,
typename T>
121template<
size_t I,
typename T>
124template<
size_t I,
typename V>
125constexpr const typename std::tuple_element<I, AffineXf<V>>::type&
get(
const AffineXf<V>& m )
noexcept
127 if constexpr (
I == 0 )
133template<
size_t I,
typename V>
134constexpr typename std::tuple_element<I, AffineXf<V>>::type&
get(
AffineXf<V>& m )
noexcept
136 if constexpr (
I == 0 )
142template <
size_t I,
typename T>
145 static_assert(
I == 0 );
149template <
size_t I,
typename T>
152 static_assert(
I == 0 );
157constexpr const uint8_t&
get(
const Color& c )
noexcept
159 static_assert(
I < 4 );
166 static_assert(
I < 4 );
stores index of some element, it is made as template class to avoid mixing faces, edges and vertices
Definition MRId.h:19
constexpr const V & get(const Box< V > &box) noexcept
get<0> returns min, get<1> returns max
Definition MRBox.h:400
Vector4< T > VectorType
Definition MRMatrix4.h:27
T ValueType
Definition MRVector4.h:27
Vector3< T > VectorType
Definition MRMatrix3.h:26
Vector4
Definition MRMeshFwd.h:229
Matrix4
Definition MRMeshFwd.h:262
Vector2< T > VectorType
Definition MRMatrix2.h:26
class MRMESH_CLASS I
Definition MRMeshFwd.h:137
MRMESH_CLASS Vector2
Definition MRMeshFwd.h:204
T ValueType
Definition MRVector3.h:34
Matrix3
Definition MRMeshFwd.h:251
Matrix2
Definition MRMeshFwd.h:240
AffineXf
Definition MRMeshFwd.h:306
class MRMESH_CLASS Id(EdgeId, Id< EdgeTag >)(UndirectedEdgeId
MRMESH_CLASS Vector3
Definition MRMeshFwd.h:218
only for bindings generation
Definition MRCameraOrientationPlugin.h:8
Definition MRAffineXf.h:26
Definition MRMatrix2.h:24
Definition MRMatrix3.h:24
Definition MRMatrix4.h:25
Definition MRVector2.h:29
T ValueType
Definition MRVector2.h:30
Definition MRVector3.h:33
Definition MRVector4.h:26