00001 #ifndef X3DTK_MESH_VERTEXSET_H 00002 #define X3DTK_MESH_VERTEXSET_H 00003 00004 #include "MESH_X3DNode.h" 00005 #include "MESH_SFVertex.h" 00006 #include "MESH_MeshData.h" 00007 00008 namespace X3DTK { 00009 namespace MESH { 00010 00017 template<class VData, class EData, class FData, bool readOnly = true> 00018 class Vertex : public X3DNode 00019 { 00020 public: 00021 typedef MeshMFVertex<VData, EData, FData, readOnly> MFVertex; 00022 00024 Vertex(); 00026 virtual SFNode clone() const; 00028 virtual ~Vertex(); 00029 00031 SFVertex<VData, EData, FData, readOnly> *createVertex(); 00033 SFVertex<VData, EData, FData, readOnly> *createVertex(unsigned int i); 00034 00036 void removeVertex(SFVertex<VData, EData, FData, readOnly> *vertex); 00038 void removeVertex(unsigned int i); 00039 00041 inline const MFVertex &getVertices() const; 00042 00043 protected: 00045 Vertex(const Vertex &S); 00046 00047 private: 00048 MFVertex _vertices; 00049 }; 00050 00053 typedef Vertex<VertexData, EdgeData, FaceData, true> DefVertex; 00054 00055 } 00056 } 00057 00058 #include "MESH_Vertex.inl" 00059 00060 #endif