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 EData, class FData, class VData, bool readOnly = true> 00016 class SFIndirectEdge : public SFEdge<EData, FData, VData, readOnly> 00017 { 00018 template<class A, class B, class C, class D, bool E> friend class Mesh; 00019 public: 00020 typedef EntityMFFace<FData, VData, EData, readOnly> MFFace; 00021 00023 SFVertex<VData, EData, FData, readOnly> *getFromVertex() const; 00025 SFVertex<VData, EData, FData, readOnly> *getToVertex() const; 00027 const MFFace &getLeftFaces() const; 00029 const MFFace &getRightFaces() const; 00030 00031 private: 00033 SFIndirectEdge(SFEdgeContent<EData, FData, VData, readOnly> *const edgeContent); 00035 ~SFIndirectEdge(); 00036 00038 void addLeftFace(SFFace<FData, VData, EData, readOnly> *face); 00040 void addRightFace(SFFace<FData, VData, EData, readOnly> *face); 00041 00043 void removeLeftFace(SFFace<FData, VData, EData, readOnly> *face); 00045 void removeRightFace(SFFace<FData, VData, EData, readOnly> *face); 00046 }; 00047 00048 } 00049 } 00050 00051 #include "MESH_SFIndirectEdge.inl" 00052 00053 #endif