00001
00002
00004
00005 #ifndef TEMPLATEEDGECONTENT_H
00006 #define TEMPLATEEDGECONTENT_H
00007
00008 #include "MESH_SceneGraphTypes.h"
00009
00010 #include <vector>
00011
00012 namespace X3DTK {
00013 namespace MESH {
00014
00015 template<class VData, class EData, class FData> class SFVertex;
00016 template<class FData, class VData, class EData> class SFFace;
00017
00020
00021 template<class EData, class FData, class VData>
00022 class SFEdgeContent
00023 {
00024 template<class A, class B, class C, class D> friend class Mesh;
00025 template<class A, class B, class C> friend class SFDirectEdge;
00026 template<class A, class B, class C> friend class SFIndirectEdge;
00027 public:
00029 inline SFVertex<VData, EData, FData> *getFromVertex() const;
00031 inline SFVertex<VData, EData, FData> *getToVertex() const;
00033 inline const MFFace<FData, VData, EData> &get1Faces() const;
00035 inline const MFFace<FData, VData, EData> &get2Faces() const;
00037 inline bool isBoundary() const;
00039 inline EData &data();
00041 inline const EData &data() const;
00042
00043 private:
00044 SFVertex<VData, EData, FData> *const _from;
00045 SFVertex<VData, EData, FData> *const _to;
00046 MFFace<FData, VData, EData> _r1Faces;
00047 MFFace<FData, VData, EData> _r2Faces;
00048 bool _isBoundary;
00049 EData _data;
00050
00052 SFEdgeContent(SFVertex<VData, EData, FData> * from, SFVertex<VData, EData, FData> *const to);
00054 ~SFEdgeContent();
00055
00057 void add1Face(SFFace<FData, VData, EData> *face);
00059 void add2Face(SFFace<FData, VData, EData> *face);
00060 };
00061
00062 }
00063 }
00064
00065 #include "MESH_SFEdgeContent.inl"
00066
00067 #endif