Visual Computing Library
|
The IndexContainerComponent is the base class for all the components of VCLib that store a container of indices of an Element. More...
#include <vclib/mesh/components/bases/index_container_component.h>
Public Member Functions | |
void | init () |
template<typename T > requires std::is_same_v<T, Elem> | |
const auto & | indices () const |
Exposes the indices of the container. | |
Protected Types | |
using | ConstIndexIterator = typename Base::ConstIterator |
using | Iterator = PointerFromIndexIterator< ConstIndexIterator, Elem, ParentElemType > |
using | ConstIterator = ConstPointerFromIndexIterator< ConstIndexIterator, Elem, ParentElemType > |
![]() | |
using | Iterator = Vector< uint, N >::Iterator |
using | ConstIterator = Vector< uint, N >::ConstIterator |
Protected Member Functions | |
void | updateReferences (const Elem *, std::size_t offset=0) |
void | updateReferences (const std::vector< uint > &newIndices) |
![]() | |
void | init () |
Vector< uint, N > & | container () |
const Vector< uint, N > & | container () const |
AdDt & | additionalData () |
const AdDt & | additionalData () const |
Private Types | |
using | Base = ContainerComponent< DerivedComponent, COMP_ID, uint, N, void, ParentElemType, VERT, OPT, TTVN, Elem > |
Additional Inherited Members | |
![]() | |
static const bool | TIED_TO_VERTEX_NUMBER |
Boolean that tells if this component stores a container having its size tied to the number of the vertices of the Element. | |
static const int | SIZE |
The IndexContainerComponent is the base class for all the components of VCLib that store a container of indices of an Element.
A component that inherits from this class will have all the features of the Component and ContainerComponent classes, and will have access to the implementations of updateElementPointers/Indices member functions, that should be used by the Derived Component.
For further details , please refer to the page implement_component page.
DerivedComponent | The type of the Derived Component. It is used to implement the CRTP pattern. |
COMP_ID | The id of the component. It is a value of the enum ComponentIDEnum, or an integer value that is not already used by any other component. It is used to identify the component at compile time. |
Elem | The type of the Element of which the indices are stored. E.g. a VertexIndices component would have VertexType as Elem. |
N | The size of the container: if >= 0 the size is static, if < 0 the size is dynamic. |
ParentElemType | The Parent Element type is used to get access to the Element that has the component (and, in case, to the Mesh that has the Element). If the component doesn't need to access the Element, this type can be void. Note: if the component is vertical (or optional), this type cannot be void. |
VERT | Boolean that tells if the component is vertical. If the component is vertical, this parameter must be true. Note: to be vertical, this parameter must be true, and ElementType must be the type of the Element that has the component (the 'parent' Element Type). |
OPT | When a component is vertical, it could be optional, that means that could be enabled/disabled at runtime. To make the component optional, this template parameter must be true. |
TTVN | "Tied To Vertex Number", this boolean tells whether the component should leave liberty to control the size of the Container to the user, or it should be tied to the vertex number and changed automatically when the number of vertices changes. E.g. a AdjacentFaceIndices component, if part of a Face element, should be tied to the vertex number of the Face, meaning that the number of face indices should be always be the same of the number of vertices. Setting this value to true will tie the size of this container to the number of vertices. |
|
inline |
Exposes the indices of the container.
This function is templated in order to force the user to specify the type of the indices to element that are stored in the container. This is necessary when a component that stores indices to different types of elements is used.