00001
00002
00004
00005 #ifndef TEMPLATEFACE_H
00006 #define TEMPLATEFACE_H
00007
00008 #include "MeshTypes.h"
00009
00010 #include <vector>
00011 #include <iostream>
00012
00013 namespace X3DTK {
00014 namespace Mesh {
00015
00016 template<class A, class B, class C> class TemplateEdge;
00017
00019
00020 template<class FData, class VData, class EData>
00021 class TemplateFace
00022 {
00023 template<class A, class B, class C, class D> friend class TemplateMesh;
00024 public:
00026 inline unsigned int getIndex() const {return _index;};
00028 inline const MTemplateEdge<EData, FData, VData> &getEdges() const {return _edges;};
00030 inline FData &data() {return _data;};
00032 inline const FData &data() const {return _data;};
00033
00034 private:
00035 const unsigned int _index;
00036 MTemplateEdge<EData, FData, VData> _edges;
00037 FData _data;
00038
00040 TemplateFace(unsigned int i, const MTemplateEdge<EData, FData, VData> &edges)
00041 : _index(i), _edges(edges)
00042 {
00043 if (edges.size() == 0)
00044 std::cerr << "Mesh::TemplateFace : cannot create a face of 0 edge!" << std::endl;
00045 };
00046 };
00047
00048 }
00049 }
00050
00051 #endif