00001
00002
00004
00005 #ifndef TEMPLATEVERTEX_H
00006 #define TEMPLATEVERTEX_H
00007
00008 #include "MESH_SceneGraphTypes.h"
00009
00010 #include <vector>
00011
00012 namespace X3DTK {
00013 namespace MESH {
00014
00015 template<class A, class B, class C> class SFTemplateEdge;
00016 template<class A, class B, class C> class SFTemplateFace;
00017
00020
00021 template<class VData, class EData, class FData>
00022 class SFTemplateVertex
00023 {
00024 template<class A, class B, class C> friend class TemplateVertexSet;
00025 template<class A, class B, class C, class D> friend class TemplateMesh;
00026 public:
00028 inline unsigned int getIndex() const {return _index;};
00030 inline const MFTemplateEdge<EData, FData, VData> &getEdges() const {return _edges;};
00032 inline const MFTemplateFace<FData, VData, EData> &getFaces() const {return _faces;};
00034 inline VData &data() {return _data;};
00036 inline const VData &data() const {return _data;};
00037
00038 private:
00039 const unsigned int _index;
00040 MFTemplateEdge<EData, FData, VData> _edges;
00041 MFTemplateFace<FData, VData, EData> _faces;
00042 VData _data;
00043
00045 SFTemplateVertex(unsigned int i)
00046 : _index(i) {};
00047
00049 ~SFTemplateVertex()
00050 {};
00051
00053 void addEdge(SFTemplateEdge<EData, FData, VData> *E) {_edges.push_back(E);};
00055 void addFace(SFTemplateFace<FData, VData, EData> *F) {_faces.push_back(F);};
00056 };
00057
00058 }
00059 }
00060
00061 #endif