00001
00002
00004
00005 #ifndef TEMPLATEVERTEX_H
00006 #define TEMPLATEVERTEX_H
00007
00008 #include "MeshSceneGraphTypes.h"
00009
00010 #include <vector>
00011
00012 namespace X3DTK {
00013 namespace MESH {
00014
00015 template<class A, class B, class C> class TemplateEdge;
00016 template<class A, class B, class C> class TemplateFace;
00017
00020
00021 template<class VData, class EData, class FData>
00022 class TemplateVertex
00023 {
00024 template<class A, class B, class C, class D> friend class TemplateMesh;
00025 public:
00027 inline unsigned int getIndex() const {return _index;};
00029 inline const MTemplateEdge<EData, FData, VData> &getEdges() const {return _edges;};
00031 inline const MTemplateFace<FData, VData, EData> &getFaces() const {return _faces;};
00033 inline VData &data() {return _data;};
00035 inline const VData &data() const {return _data;};
00036
00037 private:
00038 const unsigned int _index;
00039 MTemplateEdge<EData, FData, VData> _edges;
00040 MTemplateFace<FData, VData, EData> _faces;
00041 VData _data;
00042
00044 TemplateVertex(unsigned int i)
00045 : _index(i) {};
00047 void addEdge(TemplateEdge<EData, FData, VData> *E) {_edges.back() = E; _edges.push_back((TemplateEdge<EData, FData, VData> *)(0x1));};
00049 void addFace(TemplateFace<FData, VData, EData> *F) {_faces.back() = F; _faces.push_back((TemplateFace<FData, VData, EData> *)(0x1));};
00050 };
00051
00052 }
00053 }
00054
00055 #endif