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

MESH_SFEdge.h

Go to the documentation of this file.
00001 
00002 //                            MESH_SFEdge.h                                   //
00004 
00005 #ifndef TEMPLATEEDGE_H
00006 #define TEMPLATEEDGE_H
00007 
00008 #include "MESH_SceneGraphTypes.h"
00009 #include "MESH_SFEdgeContent.h"
00010 
00011 namespace X3DTK {
00012 namespace MESH {
00013 
00014 template<class VData, class EData, class FData> class SFVertex;
00015 template<class FData, class VData, class EData> class SFFace;
00016 
00018 
00019 template<class EData, class FData, class VData>
00020 class SFEdge
00021 {
00022   template<class A, class B, class C, class D> friend class Mesh;
00023   template<class A, class B, class C> friend class SFDirectEdge;
00024   template<class A, class B, class C> friend class SFIndirectEdge;
00025 public:
00027   inline SFEdge *getSymetric();
00029   virtual SFVertex<VData, EData, FData> *getFromVertex() const = 0;
00031   virtual SFVertex<VData, EData, FData> *getToVertex() const = 0;
00033   virtual const MFFace<FData, VData, EData> &getLeftFaces() const = 0;
00035   virtual const MFFace<FData, VData, EData> &getRightFaces() const = 0;
00037   MFFace<FData, VData, EData> getFaces() const;
00039   inline bool isBoundary() const;
00041   inline EData &data();
00043   inline const EData &data() const;
00045   template<class F, bool optional>  
00046   F &getData();
00047   
00048 protected:    
00050   SFEdge(SFEdgeContent<EData, FData, VData> *const edgeContent);
00052   virtual ~SFEdge();
00053   
00055   void setSymetric(SFEdge *symetric);
00057   virtual void addLeftFace(SFFace<FData, VData, EData> *face) = 0;
00059   virtual void addRightFace(SFFace<FData, VData, EData> *face) = 0;
00060 
00061 private:
00062   SFEdgeContent<EData, FData, VData> *const _edgeContent;
00063   SFEdge *_symetric;
00064 };
00065 
00066 
00067 }
00068 }
00069 
00070 #include "MESH_SFEdge.inl"
00071 
00072 #endif

Generated on Mon Jan 19 10:32:05 2004 for X3DToolKit by doxygen1.2.18