00001 #ifndef X3DTK_MESH_SFINDIRECTEDGE_H 00002 #define X3DTK_MESH_SFINDIRECTEDGE_H 00003 00004 #include "MESH_SFEdge.h" 00005 00006 namespace X3DTK { 00007 namespace MESH { 00008 00015 template<class MData, class VData, class EData, class FData, bool RW> 00016 class SFTemplateIndirectEdge : public SFTemplateEdge<MData, VData, EData, FData, RW> 00017 { 00018 friend class TemplateMesh<MData, VData, EData, FData, RW>; 00019 friend class TemplateVertex<MData, VData, EData, FData, RW>; 00020 public: 00021 typedef EntityMFTemplateFace<MData, VData, EData, FData, RW> MFFace; 00022 00024 SFTemplateVertex<MData, VData, EData, FData, RW> *getFromVertex() const; 00026 SFTemplateVertex<MData, VData, EData, FData, RW> *getToVertex() const; 00028 const MFFace &getLeftFaces() const; 00030 const MFFace &getRightFaces() const; 00031 00032 private: 00034 SFTemplateIndirectEdge(SFTemplateEdgeContent<MData, VData, EData, FData, RW> *const edgeContent); 00036 ~SFTemplateIndirectEdge(); 00037 00039 void addLeftFace(SFTemplateFace<MData, VData, EData, FData, RW> *face); 00041 void addRightFace(SFTemplateFace<MData, VData, EData, FData, RW> *face); 00042 00044 void removeLeftFace(SFTemplateFace<MData, VData, EData, FData, RW> *face); 00046 void removeRightFace(SFTemplateFace<MData, VData, EData, FData, RW> *face); 00047 }; 00048 00049 } 00050 } 00051 00052 #include "MESH_SFIndirectEdge.inl" 00053 00054 #endif