From a0097fe3e063bb6269841d89679b5fdade3e50df Mon Sep 17 00:00:00 2001 From: Hans-Christian Ebke Date: Tue, 25 Feb 2014 14:01:12 +0000 Subject: [PATCH] PropertyManager: Added set_range method. git-svn-id: http://www.openmesh.org/svnrepo/OpenMesh/trunk@998 fdac6126-5c0c-442c-9429-916003d36597 --- src/OpenMesh/Core/Utils/PropertyManager.hh | 31 ++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/OpenMesh/Core/Utils/PropertyManager.hh b/src/OpenMesh/Core/Utils/PropertyManager.hh index 6281c9cd..b8d68408 100644 --- a/src/OpenMesh/Core/Utils/PropertyManager.hh +++ b/src/OpenMesh/Core/Utils/PropertyManager.hh @@ -278,6 +278,37 @@ class PropertyManager { return mesh_->property(prop_, handle); } + /** + * Conveniently set the property for an entire range of values. + * + * Examples: + * \code + * MeshT mesh; + * PropertyManager, MeshT> distance( + * mesh, "distance.plugin-example.i8.informatik.rwth-aachen.de"); + * distance.set_range( + * mesh.vertices_begin(), mesh.vertices_end(), + * std::numeric_limits::infinity()); + * \endcode + * or + * \code + * MeshT::VertexHandle vh; + * distance.set_range( + * mesh.vv_begin(vh), mesh.vv_end(vh), + * std::numeric_limits::infinity()); + * \endcode + * + * @param begin Start iterator. Needs to dereference to HandleType. + * @param end End iterator. (Exclusive.) + * @param value The value the range will be set to. + */ + template + void set_range(HandleTypeIterator begin, HandleTypeIterator end, + typename PROPTYPE::const_reference value) { + for (; begin != end; ++begin) + (*this)[*begin] = value; + } + private: void deleteProperty() { if (!retain_)