33 #ifndef __H__UG__element_storage__
34 #define __H__UG__element_storage__
42 template <
class TElem>
147 template <
class TElem>
209 template <
class TElem>
A linked list of elements living in an attachment.
Definition: attached_list.h:182
void set_pipe(TAttachmentPipe *pipe)
set the attachment pipe on which the list shall operate
Definition: attached_list.h:275
Handles data which has been attached to the pipe using callbacks for the element.
Definition: attachment_pipe.h:337
Base-class for edges.
Definition: grid_base_objects.h:397
This struct is used to hold GridObjects and their attachment pipes.
Definition: element_storage.h:44
ElementStorage()
Definition: element_storage.h:51
AttachmentPipe m_attachmentPipe
holds elements
Definition: element_storage.h:63
SectionContainer m_sectionContainer
Definition: element_storage.h:62
ug::SectionContainer< TElem *, AttachedElementList > SectionContainer
Definition: element_storage.h:49
ug::AttachedElementList< AttachmentPipe > AttachedElementList
Definition: element_storage.h:47
ug::AttachmentPipe< TElem *, ElementStorage< TElem > > AttachmentPipe
Definition: element_storage.h:46
~ElementStorage()
Definition: element_storage.h:58
Faces are 2-dimensional objects.
Definition: grid_base_objects.h:510
uint grid_data_index() const
Returns the grid attachment data index of a geometric object.
Definition: grid_base_objects.h:205
void set_grid_data_index(uint index)
ATTENTION: Use this method with extreme care!
Definition: grid_base_objects.h:212
Container & get_container()
returns the container for raw access.
Definition: section_container.h:116
iterator begin()
Definition: section_container.h:77
iterator end()
Definition: section_container.h:78
Base-class for all vertex-types.
Definition: grid_base_objects.h:231
Volumes are 3-dimensional objects.
Definition: grid_base_objects.h:754
Edge * ElemPtr
Definition: element_storage.h:90
static element_iterator elements_end(ElemHandlerPtr pHandler)
Definition: element_storage.h:97
static element_iterator elements_begin(ElemHandlerPtr pHandler)
Definition: element_storage.h:96
ElementStorage< Edge > * ElemHandlerPtr
Definition: element_storage.h:92
static void set_data_index(ElemHandlerPtr pHandler, ElemPtr elem, uint index)
Definition: element_storage.h:99
ElementStorage< Edge >::SectionContainer::iterator element_iterator
Definition: element_storage.h:94
Edge *& ElemRef
Definition: element_storage.h:89
const Edge * ConstElemPtr
Definition: element_storage.h:91
const ElementStorage< Edge > * ConstElemHandlerPtr
Definition: element_storage.h:93
static uint get_data_index(ConstElemHandlerPtr pHandler, ConstElemPtr elem)
Definition: element_storage.h:98
static element_iterator elements_end(ElemHandlerPtr pHandler)
Definition: element_storage.h:114
static element_iterator elements_begin(ElemHandlerPtr pHandler)
Definition: element_storage.h:113
ElementStorage< Face >::SectionContainer::iterator element_iterator
Definition: element_storage.h:111
static void set_data_index(ElemHandlerPtr pHandler, ElemPtr elem, uint index)
Definition: element_storage.h:116
Face *& ElemRef
Definition: element_storage.h:106
const Face * ConstElemPtr
Definition: element_storage.h:108
static uint get_data_index(ConstElemHandlerPtr pHandler, ConstElemPtr elem)
Definition: element_storage.h:115
ElementStorage< Face > * ElemHandlerPtr
Definition: element_storage.h:109
const ElementStorage< Face > * ConstElemHandlerPtr
Definition: element_storage.h:110
Face * ElemPtr
Definition: element_storage.h:107
static void set_data_index(ElemHandlerPtr pHandler, ElemPtr elem, uint index)
Definition: element_storage.h:82
Vertex *& ElemRef
Definition: element_storage.h:72
ElementStorage< Vertex > * ElemHandlerPtr
Definition: element_storage.h:75
static element_iterator elements_end(ElemHandlerPtr pHandler)
Definition: element_storage.h:80
static uint get_data_index(ConstElemHandlerPtr pHandler, ConstElemPtr elem)
Definition: element_storage.h:81
const Vertex * ConstElemPtr
Definition: element_storage.h:74
ElementStorage< Vertex >::SectionContainer::iterator element_iterator
Definition: element_storage.h:77
static element_iterator elements_begin(ElemHandlerPtr pHandler)
Definition: element_storage.h:79
const ElementStorage< Vertex > * ConstElemHandlerPtr
Definition: element_storage.h:76
Vertex * ElemPtr
Definition: element_storage.h:73
static void set_data_index(ElemHandlerPtr pHandler, ElemPtr elem, uint index)
Definition: element_storage.h:133
ElementStorage< Volume >::SectionContainer::iterator element_iterator
Definition: element_storage.h:128
Volume * ElemPtr
Definition: element_storage.h:124
ElementStorage< Volume > * ElemHandlerPtr
Definition: element_storage.h:126
static element_iterator elements_end(ElemHandlerPtr pHandler)
Definition: element_storage.h:131
Volume *& ElemRef
Definition: element_storage.h:123
const ElementStorage< Volume > * ConstElemHandlerPtr
Definition: element_storage.h:127
static element_iterator elements_begin(ElemHandlerPtr pHandler)
Definition: element_storage.h:130
const Volume * ConstElemPtr
Definition: element_storage.h:125
static uint get_data_index(ConstElemHandlerPtr pHandler, ConstElemPtr elem)
Definition: element_storage.h:132
define the interface that enables you to use your own types as element-types in an AttachmentPipe.
Definition: attachment_pipe.h:305
unsigned int uint
Definition: types.h:114
ElementStorage< Volume > VolumeElementStorage
Definition: element_storage.h:141
ElementStorage< Edge > EdgeElementStorage
Definition: element_storage.h:139
ElementStorage< Face > FaceElementStorage
Definition: element_storage.h:140
ElementStorage< Vertex > VertexElementStorage
Definition: element_storage.h:138
static ElementStorage< Edge > & element_storage(VertexElementStorage &vrts, EdgeElementStorage &edges, FaceElementStorage &faces, VolumeElementStorage &vols)
Definition: element_storage.h:172
static const ElementStorage< Edge > & element_storage(const VertexElementStorage &vrts, const EdgeElementStorage &edges, const FaceElementStorage &faces, const VolumeElementStorage &vols)
Definition: element_storage.h:176
static const ElementStorage< Face > & element_storage(const VertexElementStorage &vrts, const EdgeElementStorage &edges, const FaceElementStorage &faces, const VolumeElementStorage &vols)
Definition: element_storage.h:188
static ElementStorage< Face > & element_storage(VertexElementStorage &vrts, EdgeElementStorage &edges, FaceElementStorage &faces, VolumeElementStorage &vols)
Definition: element_storage.h:184
static const ElementStorage< Vertex > & element_storage(const VertexElementStorage &vrts, const EdgeElementStorage &edges, const FaceElementStorage &faces, const VolumeElementStorage &vols)
Definition: element_storage.h:164
static ElementStorage< Vertex > & element_storage(VertexElementStorage &vrts, EdgeElementStorage &edges, FaceElementStorage &faces, VolumeElementStorage &vols)
Definition: element_storage.h:160
static ElementStorage< Volume > & element_storage(VertexElementStorage &vrts, EdgeElementStorage &edges, FaceElementStorage &faces, VolumeElementStorage &vols)
Definition: element_storage.h:196
static const ElementStorage< Volume > & element_storage(const VertexElementStorage &vrts, const EdgeElementStorage &edges, const FaceElementStorage &faces, const VolumeElementStorage &vols)
Definition: element_storage.h:200
Helper class to access the correct element storage from its element type.
Definition: element_storage.h:148
static ElementStorage< TElem > & element_storage(VertexElementStorage &vrts, EdgeElementStorage &edges, FaceElementStorage &faces, VolumeElementStorage &vols)
static const ElementStorage< TElem > & element_storage(const VertexElementStorage &vrts, const EdgeElementStorage &edges, const FaceElementStorage &faces, const VolumeElementStorage &vols)
static ElementStorage< Edge >::SectionContainer * section_container(VertexElementStorage::SectionContainer *vrts, EdgeElementStorage::SectionContainer *edges, FaceElementStorage::SectionContainer *faces, VolumeElementStorage::SectionContainer *vols)
Definition: element_storage.h:283
static const ElementStorage< Edge >::SectionContainer * section_container(const VertexElementStorage::SectionContainer *vrts, const EdgeElementStorage::SectionContainer *edges, const FaceElementStorage::SectionContainer *faces, const VolumeElementStorage::SectionContainer *vols)
Definition: element_storage.h:290
static const ElementStorage< Edge >::SectionContainer & section_container(const VertexElementStorage::SectionContainer &vrts, const EdgeElementStorage::SectionContainer &edges, const FaceElementStorage::SectionContainer &faces, const VolumeElementStorage::SectionContainer &vols)
Definition: element_storage.h:276
static ElementStorage< Edge >::SectionContainer & section_container(VertexElementStorage::SectionContainer &vrts, EdgeElementStorage::SectionContainer &edges, FaceElementStorage::SectionContainer &faces, VolumeElementStorage::SectionContainer &vols)
Definition: element_storage.h:269
static ElementStorage< Face >::SectionContainer * section_container(VertexElementStorage::SectionContainer *vrts, EdgeElementStorage::SectionContainer *edges, FaceElementStorage::SectionContainer *faces, VolumeElementStorage::SectionContainer *vols)
Definition: element_storage.h:314
static const ElementStorage< Face >::SectionContainer * section_container(const VertexElementStorage::SectionContainer *vrts, const EdgeElementStorage::SectionContainer *edges, const FaceElementStorage::SectionContainer *faces, const VolumeElementStorage::SectionContainer *vols)
Definition: element_storage.h:321
static ElementStorage< Face >::SectionContainer & section_container(VertexElementStorage::SectionContainer &vrts, EdgeElementStorage::SectionContainer &edges, FaceElementStorage::SectionContainer &faces, VolumeElementStorage::SectionContainer &vols)
Definition: element_storage.h:300
static const ElementStorage< Face >::SectionContainer & section_container(const VertexElementStorage::SectionContainer &vrts, const EdgeElementStorage::SectionContainer &edges, const FaceElementStorage::SectionContainer &faces, const VolumeElementStorage::SectionContainer &vols)
Definition: element_storage.h:307
static ElementStorage< Vertex >::SectionContainer & section_container(VertexElementStorage::SectionContainer &vrts, EdgeElementStorage::SectionContainer &edges, FaceElementStorage::SectionContainer &faces, VolumeElementStorage::SectionContainer &vols)
Definition: element_storage.h:238
static const ElementStorage< Vertex >::SectionContainer & section_container(const VertexElementStorage::SectionContainer &vrts, const EdgeElementStorage::SectionContainer &edges, const FaceElementStorage::SectionContainer &faces, const VolumeElementStorage::SectionContainer &vols)
Definition: element_storage.h:245
static const ElementStorage< Vertex >::SectionContainer * section_container(const VertexElementStorage::SectionContainer *vrts, const EdgeElementStorage::SectionContainer *edges, const FaceElementStorage::SectionContainer *faces, const VolumeElementStorage::SectionContainer *vols)
Definition: element_storage.h:259
static ElementStorage< Vertex >::SectionContainer * section_container(VertexElementStorage::SectionContainer *vrts, EdgeElementStorage::SectionContainer *edges, FaceElementStorage::SectionContainer *faces, VolumeElementStorage::SectionContainer *vols)
Definition: element_storage.h:252
static const ElementStorage< Volume >::SectionContainer * section_container(const VertexElementStorage::SectionContainer *vrts, const EdgeElementStorage::SectionContainer *edges, const FaceElementStorage::SectionContainer *faces, const VolumeElementStorage::SectionContainer *vols)
Definition: element_storage.h:352
static ElementStorage< Volume >::SectionContainer & section_container(VertexElementStorage::SectionContainer &vrts, EdgeElementStorage::SectionContainer &edges, FaceElementStorage::SectionContainer &faces, VolumeElementStorage::SectionContainer &vols)
Definition: element_storage.h:331
static ElementStorage< Volume >::SectionContainer * section_container(VertexElementStorage::SectionContainer *vrts, EdgeElementStorage::SectionContainer *edges, FaceElementStorage::SectionContainer *faces, VolumeElementStorage::SectionContainer *vols)
Definition: element_storage.h:345
static const ElementStorage< Volume >::SectionContainer & section_container(const VertexElementStorage::SectionContainer &vrts, const EdgeElementStorage::SectionContainer &edges, const FaceElementStorage::SectionContainer &faces, const VolumeElementStorage::SectionContainer &vols)
Definition: element_storage.h:338
Helper class to access the correct element storage from its element type.
Definition: element_storage.h:210
static ElementStorage< TElem >::SectionContainer * section_container(VertexElementStorage::SectionContainer *vrts, EdgeElementStorage::SectionContainer *edges, FaceElementStorage::SectionContainer *faces, VolumeElementStorage::SectionContainer *vols)
static const ElementStorage< TElem >::SectionContainer * section_container(const VertexElementStorage::SectionContainer *vrts, const EdgeElementStorage::SectionContainer *edges, const FaceElementStorage::SectionContainer *faces, const VolumeElementStorage::SectionContainer *vols)
static const ElementStorage< TElem >::SectionContainer & section_container(const VertexElementStorage::SectionContainer &vrts, const EdgeElementStorage::SectionContainer &edges, const FaceElementStorage::SectionContainer &faces, const VolumeElementStorage::SectionContainer &vols)
static ElementStorage< TElem >::SectionContainer & section_container(VertexElementStorage::SectionContainer &vrts, EdgeElementStorage::SectionContainer &edges, FaceElementStorage::SectionContainer &faces, VolumeElementStorage::SectionContainer &vols)