23#ifndef VCL_MESH_COMPONENTS_CONCEPTS_COMPONENT_H
24#define VCL_MESH_COMPONENTS_CONCEPTS_COMPONENT_H
26#include <vclib/mesh/components/base/base.h>
28#include <vclib/base.h>
47 { RemoveRef<T>::COMPONENT_ID } -> std::same_as<const uint&>;
61 typename RemoveRef<T>::DataValueType;
62 { RemoveRef<T>::IS_VERTICAL } -> std::same_as<const bool&>;
76 { RemoveRef<T>::IS_OPTIONAL } -> std::same_as<const bool&>;
94 { obj.init() } -> std::same_as<void>;
108 { obj.isAvailable() } -> std::same_as<bool>;
153template<
typename T,
typename R>
156 std::is_base_of<ReferencesComponentTriggerer<RemoveRef<R>>, RemoveRef<T>>::
167template<
typename T,
typename R>
182template<
typename T,
typename R>
184 obj.template pointers<RemoveRef<R>>();
195template<
typename T,
typename R>
210template<
typename T,
typename R>
212 obj.template indices<RemoveRef<R>>();
223template<
typename T,
typename R>
247template<
typename T, u
int COMP_ID>
249 ComponentOfTypePred<COMP_ID, typename RemoveRef<T>::Components>::value;
267template<
typename T, u
int COMP_ID>
271 ComponentOfType<COMP_ID, typename RemoveRef<T>::Components>>;
289template<
typename T, u
int COMP_ID>
293 ComponentOfType<COMP_ID, typename RemoveRef<T>::Components>>;
The ComponentConcept is evaluated to true whenever the type T is a valid component,...
Definition component.h:46
The HasComponentOfType concept checks whether a type T (that may be a Mesh or a MeshElement) has a co...
Definition component.h:248
The HasIndicesOfType concept checks whether a component T stores indices of a type (element) R.
Definition component.h:211
Evaluates to true if the type T is a component that has a init() member function, that must be called...
Definition component.h:93
Evaluates to true if the type T is a component that has a isAvailable() member function,...
Definition component.h:106
The HasOptionalComponentOfType concept checks whether a type T (that should be a MeshElement) has an ...
Definition component.h:290
See vcl::comp::HasIndicesOfType and vcl::comp::IsOptionalComponent.
Definition component.h:224
See vcl::comp::HasPointersOfType and vcl::comp::IsOptionalComponent.
Definition component.h:196
See vcl::comp::HasReferencesOfType and vcl::comp::IsOptionalComponent.
Definition component.h:168
The HasPointersOfType concept checks whether a component T stores pointers of a type (element) R.
Definition component.h:183
The HasReferencesOfType concept checks whether a component T stores references (pointers or indices) ...
Definition component.h:154
The HasVerticalComponentOfType concept checks whether a type T (that should be a MeshElement) has a v...
Definition component.h:268
Evaluates to true if the type T is a component that is stored vertically in its element container,...
Definition component.h:74
Evaluates to true if the type T is tied to the number of vertices in the face.
Definition component.h:126
Evaluates to true if the type T is a component that is stored vertically in its element container.
Definition component.h:59