23#ifndef VCL_TYPES_MESH_CONTAINERS_H
24#define VCL_TYPES_MESH_CONTAINERS_H
27#include "filter_types.h"
45template<uint ELEM_ID,
typename... Containers>
46struct ContainerOfElementPred
49 template<
typename Cont>
52 static constexpr bool value = Cont::ELEMENT_ID == ELEM_ID;
58 typename FilterTypesByCondition<SameElPred, Containers...>::type;
59 static constexpr bool value = NumberOfTypes<type>::value == 1;
63template<uint ELEM_ID,
typename... Containers>
64struct ContainerOfElementPred<ELEM_ID, TypeWrapper<Containers...>> :
65 public ContainerOfElementPred<ELEM_ID, Containers...>
82 static const bool value =
83 std::is_base_of<ElementContainerTriggerer, RemoveRef<T>>::value;
105template<u
int ELEM_ID,
typename MeshType>
132template<u
int ELEM_ID,
typename MeshType>
133using ContainerOfElementType =
136template<
typename El,
typename MeshType>
139 static constexpr bool value = detail::ContainerOfElementPred<
144template<u
int ELEM_ID,
typename MeshType>
147 static constexpr bool value = detail::ContainerOfElementPred<
A class representing a line segment in n-dimensional space. The class is parameterized by a PointConc...
Definition segment.h:43
Definition mesh_containers.h:72
typename FirstType< Args... >::type FirstTypeT
Alias for the type of the first type in a pack of types.
Definition variadic_templates.h:65
std::remove_reference_t< T > RemoveRef
Utility alias to get a type type without the reference. e.g. If T is int&, the resulting type is int.
Definition pointers.h:55
The ContainerOfElement structure exposes the type of the container of the given MeshType having eleme...
Definition mesh_containers.h:107
Definition mesh_containers.h:146
Definition mesh_containers.h:138
The predicate IsElementContainerPred sets its bool value to true when the type T satisfies the Elemen...
Definition mesh_containers.h:81