00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef _MBTOPOLOGYI_H
00024 #define _MBTOPOLOGYI_H
00025
00026 #ifdef _WIN32
00027 #pragma warning(push)
00028 #pragma warning(disable:4250)
00029 #pragma warning(disable:4251)
00030 #endif
00031
00032 #include <MeshVizXLM/mesh/topology/MiTopologyI.h>
00033 #include <topology/MbTopology.h>
00034 #include <Inventor/STL/cassert>
00035
00036
00046 class MbTopologyI : virtual public MiTopologyI, public MbTopology
00047 {
00048 public:
00049
00055 template <typename _BoolIter>
00056 void assignDeadFlags(_BoolIter beginId, _BoolIter endId);
00057
00064 virtual bool isDead(size_t i) const;
00065
00066 private:
00067
00068
00069
00070 MbTopologyI()
00071 : MiTopologyI()
00072 , MbTopology()
00073 {}
00074
00075 };
00076
00077
00078 inline bool
00079 MbTopologyI::isDead(size_t cellId) const
00080 {
00081 assert ( cellId < getNumCells() );
00082 return m_deadCells[cellId];
00083 }
00084
00085
00086 template <typename _BoolIter>
00087 inline void
00088 MbTopologyI::assignDeadFlags(_BoolIter beginId, _BoolIter endId)
00089 {
00090 #ifndef MBMESH_DONT_USE_STL
00091 m_deadCells.assign(beginId,endId);
00092 #else
00093 delete m_deadCells;
00094 m_deadCells = new bool[this->getNumCells()];
00095 size_t i = 0;
00096 for (_BoolIter it = beginId; it != endId; ++it,++i)
00097 m_deadCells[i] = *it;
00098 #endif
00099 m_timeStamp = MxTimeStamp::getTimeStamp();
00100 }
00101
00102 #ifdef _WIN32
00103 #pragma warning(pop)
00104 #endif
00105
00106 #endif
00107
00108
00109