MESH_SFEdgeContent.h

Go to the documentation of this file.
00001 #ifndef X3DTK_MESH_SFEDGECONTENT_H
00002 #define X3DTK_MESH_SFEDGECONTENT_H
00003 
00004 #include <vector>
00005 #include <algorithm>
00006 
00007 namespace X3DTK {
00008 namespace MESH {
00009 
00010 template<class MData, class VData, class EData, class FData, bool RW> class TemplateMesh;
00011 template<class MData, class VData, class EData, class FData, bool RW> class TemplateVertex;
00012 template<class MData, class VData, class EData, class FData, bool RW> class SFTemplateVertex;
00013 template<class MData, class VData, class EData, class FData, bool RW> class SFTemplateFace;
00014 template<class MData, class VData, class EData, class FData, bool RW> class EntityMFTemplateFace;
00015 template<class MData, class VData, class EData, class FData, bool RW> class SFTemplateDirectEdge;
00016 template<class MData, class VData, class EData, class FData, bool RW> class SFTemplateIndirectEdge;
00017 
00024 template<class MData, class VData, class EData, class FData, bool RW = true>
00025 class SFTemplateEdgeContent
00026 {
00027   friend class TemplateVertex<MData, VData, EData, FData, RW>;
00028   friend class SFTemplateEdge<MData, VData, EData, FData, RW>;
00029   friend class SFTemplateDirectEdge<MData, VData, EData, FData, RW>;
00030   friend class SFTemplateIndirectEdge<MData, VData, EData, FData, RW>;
00031 public:
00032   typedef EntityMFTemplateFace<MData, VData, EData, FData, RW> MFFace;
00033  
00035   inline SFTemplateVertex<MData, VData, EData, FData, RW> *getFromVertex() const;
00037   inline SFTemplateVertex<MData, VData, EData, FData, RW> *getToVertex() const;
00039   inline const MFFace &get1Faces() const;
00041   inline const MFFace &get2Faces() const;
00043   inline bool isBoundary() const;
00045   inline bool isNonManifold() const;
00047   inline EData &data();
00049   inline const EData &data() const;
00050 
00051 private:
00052   SFTemplateVertex<MData, VData, EData, FData, RW> *const _from;
00053   SFTemplateVertex<MData, VData, EData, FData, RW> *const _to;
00054   MFFace _r1Faces;
00055   MFFace _r2Faces;
00056   EData _data;
00057   
00059   SFTemplateEdgeContent(SFTemplateVertex<MData, VData, EData, FData, RW> * from, SFTemplateVertex<MData, VData, EData, FData, RW> *const to);
00061   ~SFTemplateEdgeContent();
00062     
00064   void add1Face(SFTemplateFace<MData, VData, EData, FData, RW> *face);
00066   void add2Face(SFTemplateFace<MData, VData, EData, FData, RW> *face);
00067   
00069   void remove1Face(SFTemplateFace<MData, VData, EData, FData, RW> *face);
00071   void remove2Face(SFTemplateFace<MData, VData, EData, FData, RW> *face);
00072   
00074   void reverse(SFTemplateFace<MData, VData, EData, FData, RW> *face);
00075 };
00076 
00077 }
00078 }
00079 
00080 #include "MESH_SFEdgeContent.inl"
00081 
00082 #endif

Generated on Fri Jul 30 12:02:28 2004 for X3DToolKit by doxygen 1.3.6