00001 #ifndef GenericMesh_HEADER
00002 #define GenericMesh_HEADER
00003
00004 #ifdef HAVE_CONFIG_H
00005 # include <config.h>
00006 #endif
00007
00008 #include <assert.h>
00009 #include <vector>
00010 #include <boost/utility.hpp>
00011
00012
00013 #if 0
00014 #define dprintf(...) printf(__VA_ARGS__);
00015 #else
00016 #define dprintf(...)
00017 #endif
00018
00028 template <size_t ambient>
00029 class GenericMesh : public boost::noncopyable {
00030 std::vector<const GenericMesh*> uppers_;
00031
00032 public:
00033
00034 virtual ~GenericMesh () { }
00035
00036 virtual unsigned topological() const = 0;
00037
00038 void addUpper(const GenericMesh* g) {
00039 dprintf("mesh %p[%u] adding upper %p[%u]\n",
00040 this, topological(), g, g->topological());
00041 assert(topological() < g->topological());
00042 uppers_.push_back(g);
00043 }
00044
00045 typedef typename std::vector<const GenericMesh*>::const_iterator upper_iterator;
00046 upper_iterator begin_uppers() const { return uppers_.begin(); }
00047 upper_iterator end_uppers() const { return uppers_.end(); }
00048 };
00049
00050 #undef dprintf
00051
00052 #endif