diff --git a/Surface_mesh/include/CGAL/Surface_mesh/Surface_mesh.h b/Surface_mesh/include/CGAL/Surface_mesh/Surface_mesh.h index 42382fb7bd1..84e8a3f7f5d 100644 --- a/Surface_mesh/include/CGAL/Surface_mesh/Surface_mesh.h +++ b/Surface_mesh/include/CGAL/Surface_mesh/Surface_mesh.h @@ -355,7 +355,7 @@ public: // virtual interface of Base_property_array { data_.push_back(value_); } - + bool transfer(const Base_property_array& other) { const Property_array* pa = dynamic_cast(&other); @@ -387,6 +387,8 @@ public: // virtual interface of Base_property_array virtual const std::type_info& type() { return typeid(T); } + virtual typename vector_type::iterator begin() { return data_.begin(); } + virtual typename vector_type::iterator end() { return data_.end(); } public: @@ -659,6 +661,7 @@ public: typedef I key_type; typedef T value_type; typedef boost::lvalue_property_map_tag category; + typedef Property_array Array; #ifndef DOXYGEN_RUNNING @@ -734,7 +737,7 @@ public: } //@} -private: + Property_array& array() { @@ -747,7 +750,7 @@ private: CGAL_assertion(parray_ != NULL); return *parray_; } - +private: Property_array* parray_; }; @@ -962,12 +965,12 @@ private: //------------------------------------------------------ iterator types class Index_iterator : public boost::iterator_facade< Index_iterator, Index_, - std::bidirectional_iterator_tag + std::random_access_iterator_tag > { typedef boost::iterator_facade< Index_iterator, Index_, - std::bidirectional_iterator_tag + std::random_access_iterator_tag > Facade; public: Index_iterator() : hnd_(), mesh_(NULL) {} @@ -2365,6 +2368,9 @@ private: //--------------------------------------------------- property handling Property_map points() const { return vpoint_; } + Property_map& + points() { return vpoint_; } + /// returns the point associated to vertex `v`. const Point& point(Vertex_index v) const { return vpoint_[v]; }