Do not copy the traits object

This commit is contained in:
Andreas Fabri 2019-04-18 11:33:10 +02:00
parent f6e3221d98
commit 804184ba78
8 changed files with 19 additions and 27 deletions

View File

@ -83,15 +83,11 @@ typedef R::Collinear_are_ordered_along_line_2 Collinear_are_ordered_along_line_2
*/
typedef R::Are_strictly_ordered_along_line_2 Are_strictly_ordered_along_line_2;
/*!
*/
typedef CGAL::Polygon_traits_2<R> Poly_Traits;
/*!
*/
typedef Poly_Traits::Point_2 Point_2;
typedef R::Point_2 Point_2;
/*!
@ -101,7 +97,7 @@ typedef std::list<Point_2> Container;
/*!
*/
typedef CGAL::Polygon_2<Poly_Traits, Container> Polygon_2;
typedef CGAL::Polygon_2<R, Container> Polygon_2;
/*!

View File

@ -54,12 +54,11 @@ int main( )
}
std::cout << std::endl;
}
assert(CGAL::partition_is_valid_2(polygon.vertices_begin(),
polygon.vertices_end(),
partition_polys.begin(),
partition_polys.end(),
traits));
return 0;
}

View File

@ -84,7 +84,7 @@ public:
}
private:
Traits_ traits;
const Traits_& traits;
};
template <class Traits_>
@ -321,7 +321,7 @@ public:
}
private :
Traits traits;
const Traits& traits;
List m_list ;
};
@ -532,7 +532,7 @@ private :
}
private :
Traits traits;
const Traits& traits;
Map m_map ;
};

View File

@ -290,7 +290,7 @@ private:
}
Left_turn_2 _left_turn;
Traits traits;
const Traits& traits;
};
template <class Traits_>

View File

@ -41,11 +41,11 @@ public:
Partition_is_valid_traits_2()
{}
Partition_is_valid_traits_2(const Traits& traits)
: Traits(traits)
{}
public:
Is_valid
is_valid_object(const Traits& traits) const
{ return Is_valid(traits); }

View File

@ -42,6 +42,7 @@ private:
typedef Partition_traits_adapter_2<Base_traits,PointPropertyMap> Self;
PointPropertyMap ppmap;
public:
Partition_traits_adapter_2(const Base_traits& base=Base_traits())
@ -68,11 +69,11 @@ public:
const PointPropertyMap& ppmap;
typename BaseFct::result_type operator()(Arg_type p, Arg_type q) const {
typename BaseFct::result_type operator()(const Arg_type& p, const Arg_type& q) const {
return static_cast<const BaseFct*>(this)->operator()(get(ppmap,p),get(ppmap,q));
}
typename BaseFct::result_type operator()(Arg_type p, Arg_type q, Arg_type r) const {
typename BaseFct::result_type operator()(const Arg_type& p, const Arg_type& q, const Arg_type& r) const {
return static_cast<const BaseFct*>(this)->operator()(get(ppmap,p),get(ppmap,q),get(ppmap,r));
}
};
@ -91,12 +92,6 @@ public:
typename K::Collinear_are_ordered_along_line_2::result_type
operator()(Arg_type p, Arg_type q, const typename K::Point_2& r) const
{
return fct(p.first, q.first, r);
}
typename K::Collinear_are_ordered_along_line_2::result_type
operator()(Arg_type p, Arg_type q, Arg_type r) const
{

View File

@ -47,28 +47,28 @@ template <class Traits>
class Is_convex_2
{
public:
Is_convex_2(Traits t): traits(t) {}
Is_convex_2(const Traits& t): traits(t) {}
template <class ForwardIterator>
bool operator()(ForwardIterator first, ForwardIterator last)
{ return is_convex_2(first, last, traits); }
private:
Traits traits;
const Traits& traits;
};
template <class Traits>
class Is_y_monotone_2
{
public:
Is_y_monotone_2(Traits t): traits(t) {}
Is_y_monotone_2(const Traits& t): traits(t) {}
template <class ForwardIterator>
bool operator()(ForwardIterator first, ForwardIterator last)
{ return is_y_monotone_2(first, last, traits); }
private:
Traits traits;
const Traits& traits;
};
}

View File

@ -147,7 +147,9 @@ class Polygon_2 {
/// @{
/// Creates an empty polygon.
Polygon_2(const Traits & p_traits = Traits()) : traits(p_traits) {}
Polygon_2() : traits() {}
Polygon_2(const Traits & p_traits) : traits(p_traits) {}
/// Copy constructor.
Polygon_2(const Polygon_2<Traits_P,Container_P>& polygon)