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