00001
00002
00004
00005 #ifndef TEMPLATEFACE_H
00006 #define TEMPLATEFACE_H
00007
00008 #include "MESH_SceneGraphTypes.h"
00009
00010 #include <vector>
00011 #include <iostream>
00012
00013 namespace X3DTK {
00014 namespace MESH {
00015
00016 template<class EData, class FData, class VData> class SFEdge;
00017
00019
00020 template<class FData, class VData, class EData>
00021 class SFFace
00022 {
00023 template<class A, class B, class C, class D> friend class Mesh;
00024 public:
00026 inline unsigned int getIndex() const;
00028 inline const MFEdge<EData, FData, VData> &getEdges() const;
00030 inline FData &data();
00032 inline const FData &data() const;
00034 template<class F, bool optional>
00035 F &getData();
00036
00037 private:
00038 const unsigned int _index;
00039 MFEdge<EData, FData, VData> _edges;
00040 FData _data;
00041
00043 SFFace(unsigned int i);
00045 ~SFFace();
00046
00048 void addEdge(SFEdge<EData, FData, VData> *edge);
00049 };
00050
00051 }
00052 }
00053
00054 #include "MESH_SFFace.inl"
00055
00056 #endif