00001
00002
00003
00005
00006
00011
00016
00021
00023
00024 #ifndef TEMPLATEVERTEX_H
00025 #define TEMPLATEVERTEX_H
00026
00027 #include "MeshTypes.h"
00028
00029 #include <vector>
00030
00031 namespace X3DTK {
00032 namespace Mesh {
00033
00034 template<class A, class B, class C> class TemplateEdge;
00035 template<class A, class B, class C> class TemplateFace;
00036
00039
00040 template<class VData, class EData, class FData>
00041 class TemplateVertex
00042 {
00043 template<class A, class B, class C, class D> friend class TemplateMesh;
00044 public:
00046 inline unsigned int getIndex() const {return _index;};
00048 inline const MTemplateEdge<EData, FData, VData> &getEdges() const {return _edges;};
00050 inline const MTemplateFace<FData, VData, EData> &getFaces() const {return _faces;};
00052 inline VData &data() {return _data;};
00054 inline const VData &data() const {return _data;};
00055
00056 private:
00057 const unsigned int _index;
00058 MTemplateEdge<EData, FData, VData> _edges;
00059 MTemplateFace<FData, VData, EData> _faces;
00060 VData _data;
00061
00063 TemplateVertex(unsigned int i)
00064 : _index(i) {};
00066 void addEdge(TemplateEdge<EData, FData, VData> *E) {_edges.back() = E; _edges.push_back((TemplateEdge<EData, FData, VData> *)(0x1));};
00068 void addFace(TemplateFace<FData, VData, EData> *F) {_faces.back() = F; _faces.push_back((TemplateFace<FData, VData, EData> *)(0x1));};
00069 };
00070
00071 }
00072 }
00073
00074 #endif