Main Page   Namespace List   Class Hierarchy   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages  

MESH_TemplateVertexSet.h

Go to the documentation of this file.
00001 
00002 //                            TemplateVertexSet.h                             //
00004 
00005 #ifndef TEMPLATEVERTEXSET_H
00006 #define TEMPLATEVERTEXSET_H
00007 
00008 #include "MESH_X3DNode.h"
00009 #include "MESH_SFTemplateVertex.h"
00010 
00011 namespace X3DTK {
00012 namespace MESH {
00013 
00014 template<class VData, class EData, class FData>
00015 class TemplateVertexSet : public X3DNode
00016 {
00017 public:
00019   TemplateVertexSet()
00020   : X3DNode() 
00021   {
00022   };
00023   
00025   virtual SFNode clone() const
00026   {
00027     return new TemplateVertexSet(*this);  
00028   };
00029   
00031   virtual ~TemplateVertexSet() 
00032   {
00033     // delete vertices
00034     for (typename MFTemplateVertex<VData, EData, FData>::iterator it = _vertices.begin(); it != _vertices.end(); ++it)
00035       delete (*it);
00036   };
00037     
00039   SFTemplateVertex<VData, EData, FData> *createVertex() 
00040   {
00041     SFTemplateVertex<VData, EData, FData> *V = new SFTemplateVertex<VData, EData, FData>(_vertices.size());
00042     _vertices.push_back(V);
00043     return V;
00044   };
00046   SFTemplateVertex<VData, EData, FData> *createVertex(unsigned int i) 
00047   {
00048     if (i > _vertices.size())
00049       _vertices.resize(i + 1, 0);
00050     else
00051     {
00052       if (_vertices[i] != 0)  
00053       {
00054         cx3d << "TemplateVertexSet::createVertex: cannot create a Vertex at index " << i << ", a Vertex already exists!" << std::endl;
00055         return 0;
00056       }
00057     }
00058     
00059     SFTemplateVertex<VData, EData, FData> *V = new SFTemplateVertex<VData, EData, FData>(i);  
00060     _vertices[i] = V;
00061     
00062     return V;
00063   };  
00064   
00066   inline const MFTemplateVertex<VData, EData, FData> &getVertices() const {return _vertices;};
00067 
00068 protected:
00070   TemplateVertexSet(const TemplateVertexSet &S)
00071   : X3DNode(S), _vertices(S._vertices)
00072   {
00073   };   
00074 
00075 private:
00076   MFTemplateVertex<VData, EData, FData> _vertices; 
00077 };  
00078 
00079 }
00080 }
00081 
00082 #endif

Generated on Thu Dec 4 13:25:47 2003 for X3DToolKit by doxygen1.2.18