- Clean-up
- Moved Prevent_deref to CGAL/iterator.h
This commit is contained in:
Maxime Gimeno 2016-07-13 11:10:09 +02:00 committed by Sébastien Loriot
parent 04f589e97d
commit 3eb1f4ca69
5 changed files with 36 additions and 31 deletions

View File

@ -36,6 +36,7 @@
#include <CGAL/basic.h>
#include <CGAL/boost/graph/iterator.h>
#include <CGAL/Handle_hash_function.h>
#include <CGAL/iterator.h>
#ifndef CGAL_NO_DEPRECATED_CODE
#include <CGAL/boost/graph/halfedge_graph_traits.h>
@ -45,29 +46,6 @@ namespace CGAL {
namespace internal {
template<typename I>
class Prevent_deref
: public boost::iterator_adaptor<
Prevent_deref<I>
, I // base
, I // value
>
{
public:
typedef boost::iterator_adaptor<
Prevent_deref<I>
, I // base
, I // value
> Base;
// typedef typename Prevent_deref::iterator_adaptor_::reference reference;
typedef typename Base::reference reference;
Prevent_deref() : Base() {};
Prevent_deref(const I& i) : Base(i) {};
private:
friend class boost::iterator_core_access;
reference dereference() const { return const_cast<typename boost::remove_reference<reference>::type&>(this->base_reference()); }
};
// a HDS_halfedge pretending to be an Edge
template<typename Halfedge_handle>
struct HDS_edge {

View File

@ -34,8 +34,8 @@ template <typename Id, class ObjectFromIdMap, class GeneratorOnObject, class P>
class Generic_random_point_generator : public Random_generator_base<P>
{
typedef Generic_random_point_generator<Id, ObjectFromIdMap, GeneratorOnObject, P> This;
typedef typename ObjectFromIdMap::reference Geometric_object_ref;
typedef typename cpp11::result_of<GeneratorOnObject(Id)>::type result_type;
typedef typename cpp11::result_of<ObjectFromIdMap(Id)>::type Geometric_object;
typedef Geometric_object result_type;
std::vector<Id> ids;
std::vector<double> weights;
@ -65,7 +65,7 @@ public:
BOOST_FOREACH(Id id, input)
{
//create a geometric object
Geometric_object_ref object = object_from_id_map(id);
Geometric_object object = object_from_id_map(id);
ids.push_back(id);
//compute the weight of a face
total_weight += to_double( compute_weight(object) );

View File

@ -32,7 +32,7 @@
#include <iterator>
#include <CGAL/number_type_basic.h>
#include <CGAL/internal/Generic_random_point_generator.h>
#include <CGAL/boost/graph/graph_traits_HalfedgeDS.h>
#include <CGAL/iterator.h>
namespace CGAL {
@ -553,7 +553,7 @@ class Triangle_from_face_2
{
typedef typename T::Triangle Triangle;
public:
typedef Triangle reference;
typedef Triangle result_type;
Triangle_from_face_2(){}
Triangle operator()(typename T::Face_handle face)const {

View File

@ -318,7 +318,7 @@ class Triangle_from_face_3
private: PMAP map;
public:
typedef Triangle reference;
typedef Triangle result_type;
Triangle_from_face_3(PMAP map)
:map(map)
@ -380,7 +380,7 @@ class Triangle_from_face_C3t3
typedef typename T::Point Point;
typedef std::pair<typename T::Cell_handle, int> Face;
public:
typedef Triangle reference;
typedef Triangle result_type;
Triangle_from_face_C3t3()
{}
@ -402,7 +402,7 @@ class Tetrahedron_from_cell_C3t3
typedef typename T::Point Point;
typedef typename Kernel_traits<Point>::Kernel::Tetrahedron_3 Tetrahedron;
public:
typedef Tetrahedron reference;
typedef Tetrahedron result_type;
Tetrahedron_from_cell_C3t3()
{}

View File

@ -49,6 +49,33 @@
#endif
namespace CGAL {
namespace internal{
template<typename I>
class Prevent_deref
: public boost::iterator_adaptor<
Prevent_deref<I>
, I // base
, I // value
>
{
public:
typedef boost::iterator_adaptor<
Prevent_deref<I>
, I // base
, I // value
> Base;
// typedef typename Prevent_deref::iterator_adaptor_::reference reference;
typedef typename Base::reference reference;
Prevent_deref() : Base() {}
Prevent_deref(const I& i) : Base(i) {}
private:
friend class boost::iterator_core_access;
reference dereference() const { return const_cast<typename boost::remove_reference<reference>::type&>(this->base_reference()); }
};
}//end of namespace internal
// +----------------------------------------------------------------+
// | Emptyset_iterator
// +----------------------------------------------------------------+