48 #include <OpenMesh/Core/Utils/Property.hh>
54 #define STV_DEBUG_CHECKS
123 template <
class Mesh,
class EHandle,
class EPHandle>
143 inline void untag_all(
const unsigned int _new_tag_range);
150 inline void set_tag (
const EHandle _eh,
unsigned int _tag = 1);
157 inline unsigned int get_tag (
const EHandle _eh)
const;
164 inline bool is_tagged(
const EHandle _eh)
const;
176 inline void all_tags_to_zero();
187 unsigned int current_base_;
190 unsigned int tag_range_;
197 template<
class Mesh>
199 :
public SmartTaggerT< Mesh, typename Mesh::VertexHandle, OpenMesh::VPropHandleT<unsigned int> >
203 SmartTaggerVT(
Mesh& _mesh,
unsigned int _tag_range = 1) : BaseType(_mesh, _tag_range) {}
206 template<
class Mesh>
208 :
public SmartTaggerT< Mesh, typename Mesh::EdgeHandle, OpenMesh::EPropHandleT<unsigned int> >
211 typedef SmartTaggerT< Mesh, typename Mesh::EdgeHandle, OpenMesh::EPropHandleT<unsigned int> > BaseType;
212 SmartTaggerET(Mesh& _mesh,
unsigned int _tag_range = 1) : BaseType(_mesh, _tag_range) {}
215 template<
class Mesh>
217 :
public SmartTaggerT< Mesh, typename Mesh::FaceHandle, OpenMesh::FPropHandleT<unsigned int> >
220 typedef SmartTaggerT< Mesh, typename Mesh::FaceHandle, OpenMesh::FPropHandleT<unsigned int> > BaseType;
221 SmartTaggerFT(Mesh& _mesh,
unsigned int _tag_range = 1): BaseType(_mesh, _tag_range) {}
224 template<
class Mesh>
226 :
public SmartTaggerT< Mesh, typename Mesh::HalfedgeHandle, OpenMesh::HPropHandleT<unsigned int> >
229 typedef SmartTaggerT< Mesh, typename Mesh::HalfedgeHandle, OpenMesh::HPropHandleT<unsigned int> > BaseType;
230 SmartTaggerHT(Mesh& _mesh,
unsigned int _tag_range = 1): BaseType(_mesh, _tag_range){}
237 #if defined(OM_INCLUDE_TEMPLATES) && !defined(OPENMESH_SMARTTAGGERT_C)
238 #define OPENMESH_SMARTTAGGERT_TEMPLATES
239 #include "SmartTaggerT_impl.hh"