Move transform ranges in property_maps

This commit is contained in:
Simon Giraudot 2020-04-22 13:47:33 +02:00
parent 90ad2cb613
commit c1d8fb69b7
2 changed files with 34 additions and 33 deletions

View File

@ -27,6 +27,8 @@
#include <utility> // defines std::pair
#include <CGAL/boost/iterator/transform_iterator.hpp>
#include <CGAL/Iterator_range.h>
#include <CGAL/Cartesian_converter_fwd.h>
#include <CGAL/Kernel_traits_fwd.h>
#include <CGAL/assertions.h>
@ -576,6 +578,38 @@ make_cartesian_converter_property_map(Vpm vpm)
return Cartesian_converter_property_map<GeomObject, Vpm>(vpm);
}
/// \cond SKIP_IN_MANUAL
// Syntaxic sugar for transform_iterator+pmap_to_unary_function
template <typename Iterator, typename Pmap>
typename boost::transform_iterator<CGAL::Property_map_to_unary_function<Pmap>, Iterator>
make_transform_iterator_from_property_map (Iterator it, Pmap pmap)
{
return boost::make_transform_iterator (it, CGAL::Property_map_to_unary_function<Pmap>(pmap));
}
// Syntaxic sugar for make_range+transform_iterator+pmap_to_unary_function
template <typename Range, typename Pmap>
CGAL::Iterator_range<typename boost::transform_iterator<CGAL::Property_map_to_unary_function<Pmap>,
typename Range::const_iterator> >
make_transform_range_from_property_map (const Range& range, Pmap pmap)
{
return CGAL::make_range
(make_transform_iterator_from_property_map (range.begin(), pmap),
make_transform_iterator_from_property_map (range.end(), pmap));
}
// Syntaxic sugar for make_range+transform_iterator+pmap_to_unary_function
template <typename Range, typename Pmap>
CGAL::Iterator_range<typename boost::transform_iterator<CGAL::Property_map_to_unary_function<Pmap>,
typename Range::iterator> >
make_transform_range_from_property_map (Range& range, Pmap pmap)
{
return CGAL::make_range
(make_transform_iterator_from_property_map (range.begin(), pmap),
make_transform_iterator_from_property_map (range.end(), pmap));
}
/// \endcond
} // namespace CGAL

View File

@ -22,10 +22,8 @@
#include <CGAL/disable_warnings.h>
#include <CGAL/assertions.h>
#include <CGAL/boost/iterator/transform_iterator.hpp>
#include <CGAL/circulator.h>
#include <CGAL/Iterator_range.h>
#include <CGAL/property_map.h>
#include <CGAL/result_of.h>
#include <CGAL/tuple.h>
#include <CGAL/use.h>
@ -1482,37 +1480,6 @@ struct Range_iterator_type<RangeRef&> { typedef typename RangeRef::iterato
template <typename RangeRef>
struct Range_iterator_type<const RangeRef&> { typedef typename RangeRef::const_iterator type; };
// Syntaxic sugar for transform_iterator+pmap_to_unary_function
template <typename Iterator, typename Pmap>
typename boost::transform_iterator<CGAL::Property_map_to_unary_function<Pmap>, Iterator>
make_transform_iterator_from_property_map (Iterator it, Pmap pmap)
{
return boost::make_transform_iterator (it, CGAL::Property_map_to_unary_function<Pmap>(pmap));
}
// Syntaxic sugar for make_range+transform_iterator+pmap_to_unary_function
template <typename Range, typename Pmap>
CGAL::Iterator_range<typename boost::transform_iterator<CGAL::Property_map_to_unary_function<Pmap>,
typename Range::const_iterator> >
make_transform_range_from_property_map (const Range& range, Pmap pmap)
{
return CGAL::make_range
(make_transform_iterator_from_property_map (range.begin(), pmap),
make_transform_iterator_from_property_map (range.end(), pmap));
}
// Syntaxic sugar for make_range+transform_iterator+pmap_to_unary_function
template <typename Range, typename Pmap>
CGAL::Iterator_range<typename boost::transform_iterator<CGAL::Property_map_to_unary_function<Pmap>,
typename Range::iterator> >
make_transform_range_from_property_map (Range& range, Pmap pmap)
{
return CGAL::make_range
(make_transform_iterator_from_property_map (range.begin(), pmap),
make_transform_iterator_from_property_map (range.end(), pmap));
}
} //namespace CGAL
#include <CGAL/enable_warnings.h>