00001
00002
00004
00005 #ifndef TEMPLATEVERTEX_H
00006 #define TEMPLATEVERTEX_H
00007
00008 #include "MESH_SceneGraphTypes.h"
00009 #include "TypeList.h"
00010
00011 #include <vector>
00012
00013 namespace X3DTK {
00014 namespace MESH {
00015
00016 template<class EData, class FData, class VData> class SFEdge;
00017 template<class FData, class VData, class EData> class SFFace;
00018
00021
00022 template<class VData, class EData, class FData>
00023 class SFVertex
00024 {
00025 template<class A, class B, class C> friend class VertexSet;
00026 template<class A, class B, class C, class D> friend class Mesh;
00027 public:
00029 inline unsigned int getIndex() const;
00031 inline const MFEdge<EData, FData, VData> &getEdges() const;
00033 inline const MFFace<FData, VData, EData> &getFaces() const;
00035 inline VData &data();
00037 inline const VData &data() const;
00039 template<class F, bool optional>
00040 F &getData();
00041
00042 private:
00043 const unsigned int _index;
00044 MFEdge<EData, FData, VData> _edges;
00045 MFFace<FData, VData, EData> _faces;
00046 VData _data;
00047
00049 SFVertex(unsigned int i);
00051 ~SFVertex();
00052
00054 void addEdge(SFEdge<EData, FData, VData> *E);
00056 void addFace(SFFace<FData, VData, EData> *F);
00057 };
00058
00059 }
00060 }
00061
00062 #include "MESH_SFVertex.inl"
00063
00064 #endif