Get rid of result_type in Kernels + fix some bad return types (wip)

This commit is contained in:
Mael Rouxel-Labbé 2024-12-20 16:12:56 +01:00
parent 468dde773d
commit 4d4549cad6
29 changed files with 1264 additions and 1793 deletions

File diff suppressed because it is too large Load Diff

View File

@ -72,13 +72,10 @@ template < class SK > \
class Compute_circular_x_3
{
typedef typename SK::Circular_arc_point_3 Circular_arc_point_3;
typedef typename SK::Root_of_2 Root_of_2;
public:
typedef const Root_of_2& result_type;
result_type operator() (const Circular_arc_point_3 & a) const
// SK::Root_of_2
decltype(auto) operator() (const Circular_arc_point_3 & a) const
{ return (a.rep().x()); }
};
@ -86,13 +83,10 @@ template < class SK > \
class Compute_circular_y_3
{
typedef typename SK::Circular_arc_point_3 Circular_arc_point_3;
typedef typename SK::Root_of_2 Root_of_2;
public:
typedef const Root_of_2& result_type;
result_type operator() (const Circular_arc_point_3 & a) const
// SK::Root_of_2
decltype(auto) operator() (const Circular_arc_point_3 & a) const
{ return (a.rep().y()); }
};
@ -100,13 +94,10 @@ template < class SK > \
class Compute_circular_z_3
{
typedef typename SK::Circular_arc_point_3 Circular_arc_point_3;
typedef typename SK::Root_of_2 Root_of_2;
public:
typedef const Root_of_2& result_type;
result_type operator() (const Circular_arc_point_3 & a) const
// SK::Root_of_2
decltype(auto) operator() (const Circular_arc_point_3 & a) const
{ return (a.rep().z()); }
};
@ -309,83 +300,78 @@ template < class SK > \
class Construct_sphere_3
{
typedef typename SK::Circular_arc_3 Circular_arc_3;
typedef typename SK::Sphere_3 Sphere_3;
typedef typename SK::Point_3 Point_3;
typedef typename SK::Circle_3 Circle_3;
typedef typename SK::FT FT;
typedef typename SK::Linear_kernel LK;
typedef typename LK::Point_3 Point_3;
typedef typename LK::Circle_3 Circle_3;
typedef typename LK::Sphere_3 Sphere_3;
typedef typename LK::Construct_sphere_3 LK_Construct_sphere_3;
typedef typename LK::FT FT;
public:
typedef typename SK::Linear_kernel::Construct_sphere_3::result_type result_type;
result_type
Sphere_3
operator()( Return_base_tag tag, const Point_3& center, const FT& squared_radius,
Orientation orientation = COUNTERCLOCKWISE) const
{ return LK_Construct_sphere_3()(tag, center, squared_radius, orientation); }
result_type
Sphere_3
operator()( Return_base_tag tag, const Point_3& p, const Point_3& q,
const Point_3& r, const Point_3& s) const
{ return LK_Construct_sphere_3()(tag, p, q, r, s); }
result_type
Sphere_3
operator()( Return_base_tag tag, const Point_3& p, const Point_3& q, const Point_3& r,
Orientation orientation = COUNTERCLOCKWISE) const
{ return LK_Construct_sphere_3()(tag, p, q, r, orientation); }
result_type
Sphere_3
operator()( Return_base_tag tag, const Point_3& p, const Point_3& q,
Orientation orientation = COUNTERCLOCKWISE) const
{ return LK_Construct_sphere_3()(tag, p, q, orientation); }
result_type
Sphere_3
operator()( Return_base_tag tag, const Point_3& center,
Orientation orientation = COUNTERCLOCKWISE) const
{ return LK_Construct_sphere_3()(tag, center, orientation); }
result_type
decltype(auto)
operator() (Return_base_tag tag, const Circle_3 & c) const
{ return LK_Construct_sphere_3()(tag, c); }
result_type
Sphere_3
operator()( const Point_3& center, const FT& squared_radius,
Orientation orientation = COUNTERCLOCKWISE) const
{ return LK_Construct_sphere_3()(center, squared_radius, orientation); }
result_type
Sphere_3
operator()( const Point_3& p, const Point_3& q,
const Point_3& r, const Point_3& s) const
{ return LK_Construct_sphere_3()(p, q, r, s); }
result_type
Sphere_3
operator()( const Point_3& p, const Point_3& q, const Point_3& r,
Orientation orientation = COUNTERCLOCKWISE) const
{ return LK_Construct_sphere_3()(p, q, r, orientation); }
result_type
Sphere_3
operator()( const Point_3& p, const Point_3& q,
Orientation orientation = COUNTERCLOCKWISE) const
{ return LK_Construct_sphere_3()(p, q, orientation); }
result_type
Sphere_3
operator()( const Point_3& center,
Orientation orientation = COUNTERCLOCKWISE) const
{ return LK_Construct_sphere_3()(center, orientation); }
result_type
decltype(auto)
operator() (const Circle_3 & c) const
{ return LK_Construct_sphere_3()(c); }
result_type
Sphere_3
operator() ( const typename SK::Polynomial_for_spheres_2_3 &eq )
{ return SphericalFunctors::construct_sphere_3<SK>(eq); }
result_type operator() (const Circular_arc_3 & c) const
decltype(auto) operator() (const Circular_arc_3 & c) const
{ return c.rep().diametral_sphere(); }
};
@ -394,93 +380,89 @@ template < class SK > \
class Construct_plane_3
{
typedef typename SK::Circular_arc_3 Circular_arc_3;
typedef typename SK::RT RT;
typedef typename SK::Point_3 Point_3;
typedef typename SK::Vector_3 Vector_3;
typedef typename SK::Direction_3 Direction_3;
typedef typename SK::Line_3 Line_3;
typedef typename SK::Ray_3 Ray_3;
typedef typename SK::Segment_3 Segment_3;
typedef typename SK::Plane_3 Plane_3;
typedef typename SK::Circle_3 Circle_3;
typedef typename SK::Linear_kernel LK;
typedef typename LK::Construct_plane_3 LK_Construct_plane_3;
typedef typename LK::RT RT;
typedef typename LK::Point_3 Point_3;
typedef typename LK::Vector_3 Vector_3;
typedef typename LK::Direction_3 Direction_3;
typedef typename LK::Line_3 Line_3;
typedef typename LK::Ray_3 Ray_3;
typedef typename LK::Segment_3 Segment_3;
typedef typename LK::Plane_3 Plane_3;
typedef typename LK::Circle_3 Circle_3;
public:
typedef typename SK::Linear_kernel::Construct_plane_3::result_type result_type;
public:
result_type
Plane_3
operator()(Return_base_tag tag, const RT& a, const RT& b, const RT& c, const RT& d) const
{ return LK_Construct_plane_3()(tag, a, b, c, d); }
result_type
Plane_3
operator()(Return_base_tag tag, const Point_3& p, const Point_3& q, const Point_3& r) const
{ return LK_Construct_plane_3()(tag, p, q, r); }
result_type
Plane_3
operator()(Return_base_tag tag, const Point_3& p, const Direction_3& d) const
{ return LK_Construct_plane_3()(tag, p, d); }
result_type
Plane_3
operator()(Return_base_tag tag, const Point_3& p, const Vector_3& v) const
{ return LK_Construct_plane_3()(tag, p, v); }
result_type
Plane_3
operator()(Return_base_tag tag, const Line_3& l, const Point_3& p) const
{ return LK_Construct_plane_3()(tag, l, p); }
result_type
Plane_3
operator()(Return_base_tag tag, const Ray_3& r, const Point_3& p) const
{ return LK_Construct_plane_3()(tag, r, p); }
result_type
Plane_3
operator()(Return_base_tag tag, const Segment_3& s, const Point_3& p) const
{ return LK_Construct_plane_3()(tag, s, p); }
result_type
decltype(auto)
operator()(Return_base_tag tag, const Circle_3 & c) const
{ return LK_Construct_plane_3()(tag, c); }
result_type
Plane_3
operator()(const RT& a, const RT& b, const RT& c, const RT& d) const
{ return this->operator()(Return_base_tag(), a, b, c, d); }
result_type
Plane_3
operator()(const Point_3& p, const Point_3& q, const Point_3& r) const
{ return this->operator()(Return_base_tag(), p, q, r); }
result_type
Plane_3
operator()(const Point_3& p, const Direction_3& d) const
{ return this->operator()(Return_base_tag(), p, d); }
result_type
Plane_3
operator()(const Point_3& p, const Vector_3& v) const
{ return this->operator()(Return_base_tag(), p, v); }
result_type
Plane_3
operator()(const Line_3& l, const Point_3& p) const
{ return this->operator()(Return_base_tag(), l, p); }
result_type
Plane_3
operator()(const Ray_3& r, const Point_3& p) const
{ return this->operator()(Return_base_tag(), r, p); }
result_type
Plane_3
operator()(const Segment_3& s, const Point_3& p) const
{ return this->operator()(Return_base_tag(), s, p); }
result_type
decltype(auto)
operator()(const Circle_3 & c) const
{ return this->operator()(Return_base_tag(), c); }
result_type
Plane_3
operator() ( const typename SK::Polynomial_1_3 &eq )
{ return SphericalFunctors::construct_plane_3<SK>(eq); }
result_type operator() (const Circular_arc_3 & c) const
decltype(auto) operator() (const Circular_arc_3 & c) const
{ return c.rep().supporting_plane(); }
};
@ -498,54 +480,53 @@ template < class SK > \
typedef typename SK::Ray_3 Ray_3;
public:
typedef typename SK::Linear_kernel::Construct_line_3 LK_Construct_line_3;
typedef typename LK_Construct_line_3::result_type result_type;
result_type
Line_3
operator()(Return_base_tag, const Point_3& p, const Point_3& q) const
{ return LK_Construct_line_3()(p, Vector_3(p, q)); }
result_type
Line_3
operator()(Return_base_tag, const Point_3& p, const Direction_3& d) const
{ return operator()(Return_base_tag(), p, Vector_3(d.dx(), d.dy(), d.dz())); }
result_type
Line_3
operator()(Return_base_tag, const Point_3& p, const Vector_3& v) const
{ return LK_Construct_line_3()(p, v); }
result_type
Line_3
operator()(Return_base_tag, const Segment_3& s) const
{ return LK_Construct_line_3()(s.source(), Vector_3(s.source(), s.target())); }
result_type
Line_3
operator()(Return_base_tag, const Ray_3& r) const
{ return LK_Construct_line_3()(r.source(), Vector_3(r.source(), r.second_point())); }
result_type
Line_3
operator()(const Point_3& p, const Point_3& q) const
{ return this->operator()(Return_base_tag(), p, q); }
result_type
Line_3
operator()(const Point_3& p, const Direction_3& d) const
{ return this->operator()(Return_base_tag(), p, d); }
result_type
Line_3
operator()(const Point_3& p, const Vector_3& v) const
{ return this->operator()(Return_base_tag(), p, v); }
result_type
Line_3
operator()(const Segment_3& s) const
{ return this->operator()(Return_base_tag(), s); }
result_type
Line_3
operator()(const Ray_3& r) const
{ return this->operator()(Return_base_tag(), r); }
const result_type&
decltype(auto)
operator() (const Line_arc_3 & a) const
{ return (a.rep().supporting_line()); }
result_type
Line_3
operator() ( const typename SK::Polynomials_for_line_3 &eq )
{ return SphericalFunctors::construct_line_3<SK>(eq); }
@ -554,8 +535,6 @@ template < class SK > \
template < class SK >
class Construct_circle_3
{
typedef typename SK::Linear_kernel::Construct_circle_3 Extended;
typedef typename Extended::result_type forwarded_result_type;
typedef typename SK::FT FT;
typedef typename SK::Point_3 Point_3;
typedef typename SK::Plane_3 Plane_3;
@ -564,57 +543,57 @@ template < class SK > \
typedef typename SK::Vector_3 Vector_3;
typedef typename SK::Direction_3 Direction_3;
typedef typename SK::Circular_arc_3 Circular_arc_3;
typedef typename SK::Kernel_base::Circle_3 RCircle_3;
typedef typename Circle_3::Rep Rep;
public:
forwarded_result_type
typedef typename SK::Linear_kernel::Construct_circle_3 LK_Construct_circle_3;
public:
Circle_3
operator()(const Point_3& p, const FT& sr,
const Plane_3& plane) const
{ return Extended()(p, sr, plane); }
{ return LK_Construct_circle_3()(p, sr, plane); }
forwarded_result_type
Circle_3
operator() (const Point_3& p, const FT& sr,
const Vector_3& v) const
{ return Extended()(p, sr, v); }
{ return LK_Construct_circle_3()(p, sr, v); }
forwarded_result_type
Circle_3
operator() (const Point_3& p, const FT& sr,
const Direction_3& d) const
{ return Extended()(p, sr, d); }
{ return LK_Construct_circle_3()(p, sr, d); }
forwarded_result_type
Circle_3
operator() (const Sphere_3& s1, const Sphere_3& s2) const
{ return Extended()(s1, s2); }
{ return LK_Construct_circle_3()(s1, s2); }
forwarded_result_type
Circle_3
operator() (const Plane_3& p, const Sphere_3& s) const
{ return Extended()(p, s); }
{ return LK_Construct_circle_3()(p, s); }
forwarded_result_type
Circle_3
operator() (const Sphere_3& s, const Plane_3& p) const
{ return Extended()(p, s); }
{ return LK_Construct_circle_3()(p, s); }
forwarded_result_type
Circle_3
operator() (const Plane_3& p, const Sphere_3& s, int a) const
{ return Extended()(p, s, a); }
{ return LK_Construct_circle_3()(p, s, a); }
forwarded_result_type
Circle_3
operator() (const Sphere_3& s, const Plane_3& p, int a) const
{ return Extended()(p, s, a); }
{ return LK_Construct_circle_3()(p, s, a); }
forwarded_result_type
Circle_3
operator()( const Point_3& p1, const Point_3& p2, const Point_3& p3) const
{ return Extended()(p1, p2, p3); }
{ return LK_Construct_circle_3()(p1, p2, p3); }
forwarded_result_type
Circle_3
operator() ( const typename SK::Polynomials_for_circle_3 &eq )
{ return Rep(construct_circle_3<SK>(eq)); }
{ return construct_circle_3<SK>(eq); }
const forwarded_result_type&
decltype(auto)
operator() (const Circular_arc_3 & a) const
{ return (a.rep().supporting_circle()); }
};
template < class SK >
@ -1297,18 +1276,15 @@ template < class SK > \
typedef typename SK::Line_arc_3 Line_arc_3;
public:
typedef typename SK::Linear_kernel::Construct_bbox_3::result_type result_type;
using SK::Linear_kernel::Construct_bbox_3::operator();
result_type operator() (const Circular_arc_point_3 & c) const
decltype(auto) operator() (const Circular_arc_point_3 & c) const
{ return c.rep().bbox(); }
result_type operator() (const Line_arc_3 & l) const
decltype(auto) operator() (const Line_arc_3 & l) const
{ return l.rep().bbox(); }
result_type operator() (const Circular_arc_3 & c) const
decltype(auto) operator() (const Circular_arc_3 & c) const
{ return c.rep().bbox(); }
};
@ -1322,8 +1298,8 @@ template < class SK > \
typedef typename SK::FT FT;
public:
typedef double result_type;
using SK::Linear_kernel::Compute_approximate_squared_length_3::operator();
result_type operator() (const Circular_arc_3 & c) const
@ -1341,7 +1317,6 @@ template < class SK > \
typedef typename SK::FT FT;
public:
typedef double result_type;
using SK::Linear_kernel::Compute_approximate_angle_3::operator();

View File

@ -34,13 +34,12 @@ template < typename K_base >
class Angle_3
: public K_base::Angle_3
{
typedef typename K_base::Angle Angle;
typedef typename K_base::Point_3 Point_3;
typedef typename K_base::Angle_3 Base;
public:
typedef typename Base::result_type result_type;
using Base::operator();
Sign sign_with_error(const double x, const double error) const {
@ -49,7 +48,7 @@ public:
else return ZERO;
}
result_type operator()(const Point_3 &p, const Point_3& q, const Point_3& r) const
Angle operator()(const Point_3& p, const Point_3& q, const Point_3& r) const
{
CGAL_BRANCH_PROFILER_3("semi-static failures/attempts/calls to : Angle_3", tmp);

View File

@ -24,16 +24,16 @@ template < typename K_base >
class Collinear_3
: public K_base::Collinear_3
{
typedef typename K_base::Boolean Boolean;
typedef typename K_base::Point_3 Point_3;
typedef typename K_base::Vector_3 Vector_3;
typedef typename K_base::Sphere_3 Sphere_3;
typedef typename K_base::Tetrahedron_3 Tetrahedron_3;
typedef typename K_base::Collinear_3 Base;
public:
typedef typename Base::result_type result_type;
result_type
Boolean
operator()(const Point_3 &p, const Point_3 &q, const Point_3 &r) const
{
CGAL_BRANCH_PROFILER_3("semi-static failures/attempts/calls to : Collinear_3", tmp);

View File

@ -30,17 +30,16 @@ template < typename K_base >
class Compare_distance_3
: public K_base::Compare_distance_3
{
typedef typename K_base::Comparison_result Comparison_result;
typedef typename K_base::Point_3 Point_3;
typedef typename K_base::Vector_3 Vector_3;
typedef typename K_base::Compare_distance_3 Base;
public:
typedef typename Base::result_type result_type;
using Base::operator();
result_type operator()(const Point_3 &p, const Point_3& q, const Point_3& r) const
Comparison_result operator()(const Point_3& p, const Point_3& q, const Point_3& r) const
{
CGAL_BRANCH_PROFILER(std::string("semi-static attempts/calls to : ") +
std::string(CGAL_PRETTY_FUNCTION), tmp);

View File

@ -24,15 +24,16 @@ namespace CGAL { namespace internal { namespace Static_filters_predicates {
class Compare_squared_radius_3
: public K_base::Compare_squared_radius_3
{
typedef typename K_base::Comparison_result Comparison_result;
typedef typename K_base::Point_3 Point_3;
typedef typename K_base::FT FT;
typedef typename K_base::Compare_squared_radius_3 Base;
public:
typedef typename Base::result_type result_type;
typedef typename K_base::Compare_squared_radius_3 Base;
public:
using Base::operator();
result_type operator() (
Comparison_result operator() (
const Point_3& p,
const Point_3& q,
const Point_3& r,
@ -185,7 +186,7 @@ namespace CGAL { namespace internal { namespace Static_filters_predicates {
return Base::operator()(p,q,r,s,w);
}
result_type operator() (
Comparison_result operator() (
const Point_3& p,
const Point_3& q,
const Point_3& s,
@ -312,14 +313,14 @@ namespace CGAL { namespace internal { namespace Static_filters_predicates {
}
}
}
return static_cast<result_type>(int_tmp_result);
return static_cast<Comparison_result>(int_tmp_result);
}
else
return Base::operator()(p,q,s,w);
}
result_type operator() (
Comparison_result operator() (
const Point_3& p,
const Point_3& q,
const FT& w

View File

@ -27,15 +27,16 @@ namespace CGAL { namespace internal { namespace Static_filters_predicates {
class Compare_weighted_squared_radius_3:
public K_base::Compare_weighted_squared_radius_3
{
typedef typename K_base::Comparison_result Comparison_result;
typedef typename K_base::Weighted_point_3 Weighted_point_3;
typedef typename K_base::FT FT;
typedef typename K_base::Compare_weighted_squared_radius_3 Base;
public:
typedef typename Base::result_type result_type;
typedef typename K_base::Compare_weighted_squared_radius_3 Base;
public:
using Base::operator();
result_type operator() (
Comparison_result operator() (
const Weighted_point_3& p,
const Weighted_point_3& q,
const Weighted_point_3& r,
@ -175,7 +176,7 @@ namespace CGAL { namespace internal { namespace Static_filters_predicates {
return Base::operator()(p,q,r,s,w);
}
result_type
Comparison_result
operator() (
const Weighted_point_3& p,
const Weighted_point_3& q ,
@ -292,7 +293,7 @@ namespace CGAL { namespace internal { namespace Static_filters_predicates {
return Base::operator()(p,q,r,w);
}
result_type
Comparison_result
operator() (
const Weighted_point_3& p,
const Weighted_point_3& q,

View File

@ -31,17 +31,16 @@ template < typename K_base >
class Compare_x_2
: public K_base::Compare_x_2
{
typedef typename K_base::Comparison_result Comparison_result;
typedef typename K_base::Point_2 Point_2;
typedef typename K_base::Line_2 Line_2;
typedef typename K_base::Compare_x_2 Base;
public:
typedef typename Base::result_type result_type;
using Base::operator();
result_type operator()(const Point_2 &p, const Point_2& q) const
Comparison_result operator()(const Point_2& p, const Point_2& q) const
{
CGAL_BRANCH_PROFILER(std::string("semi-static attempts/calls to : ") +
std::string(CGAL_PRETTY_FUNCTION), tmp);

View File

@ -31,17 +31,16 @@ template < typename K_base >
class Compare_y_2
: public K_base::Compare_y_2
{
typedef typename K_base::Comparison_result Comparison_result;
typedef typename K_base::Point_2 Point_2;
typedef typename K_base::Line_2 Line_2;
typedef typename K_base::Compare_y_2 Base;
public:
typedef typename Base::result_type result_type;
using Base::operator();
result_type operator()(const Point_2 &p, const Point_2& q) const
Comparison_result operator()(const Point_2 &p, const Point_2& q) const
{
CGAL_BRANCH_PROFILER(std::string("semi-static attempts/calls to : ") +
std::string(CGAL_PRETTY_FUNCTION), tmp);

View File

@ -22,13 +22,14 @@ template < typename K_base, typename Kernel >
class Compare_y_at_x_2
: public K_base::Compare_y_at_x_2
{
typedef typename K_base::Comparison_result Comparison_result;
typedef typename K_base::Point_2 Point_2;
typedef typename K_base::Segment_2 Segment_2;
typedef typename K_base::FT FT;
typedef typename K_base::Compare_y_at_x_2 Base;
public:
using Base::operator();
Comparison_result

View File

@ -25,17 +25,14 @@ template < typename K_base, typename SFK >
class Coplanar_3
: public K_base::Coplanar_3
{
typedef typename K_base::Boolean Boolean;
typedef typename K_base::Point_3 Point_3;
typedef typename K_base::Coplanar_3 Base;
typedef typename SFK::Orientation_3 Orientation_3;
public:
typedef typename Base::result_type result_type;
result_type
Boolean
operator()(const Point_3& p,const Point_3& q, const Point_3& r, const Point_3& s) const
{
return Orientation_3()(p,q,r,s) == COPLANAR;

View File

@ -40,12 +40,12 @@ template < typename Kernel >
class Coplanar_orientation_3
: public Kernel::Coplanar_orientation_3
{
typedef typename Kernel::Orientation Orientation;
typedef typename Kernel::Point_3 Point_3;
typedef typename Kernel::Coplanar_orientation_3 Base;
public:
typedef Orientation result_type;
Orientation operator()(const Point_3 &p, const Point_3 &q, const Point_3 &r) const
{
return opti_coplanar_orientationC3(

View File

@ -28,16 +28,13 @@ template < typename K_base, typename SFK >
class Do_intersect_2
: public K_base::Do_intersect_2
{
typedef typename K_base::Boolean Boolean;
typedef typename K_base::Point_2 Point_2;
typedef typename K_base::Segment_2 Segment_2;
typedef typename K_base::Do_intersect_2 Base;
typedef K_base TA1;
typedef SFK TA2;
public:
typedef typename Base::result_type result_type;
using Base::operator();
// The internal::do_intersect(..) function
@ -47,19 +44,19 @@ public:
// the statically filtered kernel we avoid
// that doubles are put into Interval_nt
// to get taken out again with fit_in_double
result_type
Boolean
operator()(const Segment_2 &s, const Segment_2& t) const
{
return Intersections::internal::do_intersect(s,t, SFK());
}
result_type
Boolean
operator()(const Point_2 &p, const Segment_2& t) const
{
return Intersections::internal::do_intersect(p,t, SFK());
}
result_type
Boolean
operator()(const Segment_2& t, const Point_2 &p) const
{
return Intersections::internal::do_intersect(p,t, SFK());

View File

@ -39,18 +39,17 @@ template < typename K_base, typename SFK >
class Do_intersect_3
: public K_base::Do_intersect_3
{
typedef typename K_base::Boolean Boolean;
typedef typename K_base::Point_3 Point_3;
typedef typename K_base::Ray_3 Ray_3;
typedef typename K_base::Segment_3 Segment_3;
typedef typename K_base::Triangle_3 Triangle_3;
typedef typename K_base::Tetrahedron_3 Tetrahedron_3;
typedef typename K_base::Sphere_3 Sphere_3;
typedef typename K_base::Do_intersect_3 Base;
public:
typedef typename Base::result_type result_type;
using Base::operator();
Sign sign_with_error(const double x, const double error) const {
@ -67,32 +66,31 @@ public:
// the statically filtered kernel we avoid
// that doubles are put into Interval_nt
// to get taken out again with fit_in_double
result_type
Boolean
operator()(const Segment_3 &s, const Triangle_3& t) const
{
return Intersections::internal::do_intersect(t,s, SFK());
}
result_type
Boolean
operator()(const Triangle_3& t, const Segment_3 &s) const
{
return Intersections::internal::do_intersect(t,s, SFK());
}
result_type
Boolean
operator()(const Triangle_3 &t0, const Triangle_3& t1) const
{
return Intersections::internal::do_intersect(t0,t1, SFK());
}
result_type
Boolean
operator()(const Bbox_3& b, const Segment_3 &s) const
{
return this->operator()(s, b);
}
result_type
Boolean
operator()(const Segment_3 &s, const Bbox_3& b) const
{
CGAL_BRANCH_PROFILER_3(std::string("semi-static failures/attempts/calls to : ") +
@ -111,7 +109,7 @@ public:
{
CGAL_BRANCH_PROFILER_BRANCH_1(tmp);
const Uncertain<result_type> ub =
const Uncertain<Boolean> ub =
Intersections::internal::do_intersect_bbox_segment_aux
<double,
true, // bounded at t=0
@ -127,13 +125,13 @@ public:
return Base::operator()(s,b);
}
result_type
Boolean
operator()(const Bbox_3& b, const Tetrahedron_3 &t) const
{
return this->operator()(t, b);
}
result_type
Boolean
operator()(const Tetrahedron_3 &t, const Bbox_3& b) const
{
CGAL_BRANCH_PROFILER_3(std::string("semi-static failures/attempts/calls to : ") +
@ -168,13 +166,13 @@ public:
return Base::operator()(t,b);
}
result_type
Boolean
operator()(const Bbox_3& b, const Ray_3 &r) const
{
return this->operator()(r, b);
}
result_type
Boolean
operator()(const Ray_3 &r, const Bbox_3& b) const
{
CGAL_BRANCH_PROFILER_3(std::string("semi-static failures/attempts/calls to : ") +
@ -193,7 +191,7 @@ public:
{
CGAL_BRANCH_PROFILER_BRANCH_1(tmp);
const Uncertain<result_type> ub =
const Uncertain<Boolean> ub =
Intersections::internal::do_intersect_bbox_segment_aux
<double,
true, // bounded at t=0
@ -209,8 +207,7 @@ public:
return Base::operator()(r,b);
}
result_type
Boolean
operator()(const Bbox_3& b, const Triangle_3 &t) const
{
return this->operator()(t, b);
@ -487,7 +484,7 @@ public:
return false;
};
result_type
Boolean
operator()(const Triangle_3 &t, const Bbox_3& b) const
{
CGAL_BRANCH_PROFILER_3(std::string("semi-static failures/attempts/calls to : ") +
@ -616,14 +613,14 @@ public:
return Base::operator()(t,b);
}
result_type
Boolean
operator()(const Bbox_3& b, const Sphere_3 &s) const
{
return this->operator()(s, b);
}
// The parameter overestimate is used to avoid a filter failure in AABB_tree::closest_point()
result_type
Boolean
operator()(const Sphere_3 &s, const Bbox_3& b, bool overestimate = false) const
{
CGAL_BRANCH_PROFILER_3(std::string("semi-static failures/attempts/calls to : ") +

View File

@ -31,18 +31,16 @@ template < typename K_base >
class Equal_2
: public K_base::Equal_2
{
typedef typename K_base::Boolean Boolean;
typedef typename K_base::FT FT;
typedef typename K_base::Point_2 Point_2;
typedef typename K_base::Vector_2 Vector_2;
typedef typename K_base::Equal_2 Base;
public:
typedef typename Base::result_type result_type;
using Base::operator();
result_type operator()(const Point_2 &p, const Point_2& q) const
Boolean operator()(const Point_2& p, const Point_2& q) const
{
CGAL_BRANCH_PROFILER(std::string("semi-static attempts/calls to : ") +
std::string(CGAL_PRETTY_FUNCTION), tmp);
@ -61,8 +59,7 @@ public:
return Base::operator()(p, q);
}
result_type operator()(const Vector_2 &p, const Vector_2& q) const
Boolean operator()(const Vector_2& p, const Vector_2& q) const
{
CGAL_BRANCH_PROFILER(std::string("semi-static attempts/calls to : ") +
std::string(CGAL_PRETTY_FUNCTION), tmp);

View File

@ -31,17 +31,16 @@ template < typename K_base >
class Equal_3
: public K_base::Equal_3
{
typedef typename K_base::Boolean Boolean;
typedef typename K_base::Point_3 Point_3;
typedef typename K_base::Vector_3 Vector_3;
typedef typename K_base::Equal_3 Base;
public:
typedef typename Base::result_type result_type;
using Base::operator();
result_type operator()(const Point_3 &p, const Point_3& q) const
Boolean operator()(const Point_3& p, const Point_3& q) const
{
CGAL_BRANCH_PROFILER(std::string("semi-static attempts/calls to : ") +
std::string(CGAL_PRETTY_FUNCTION), tmp);
@ -62,7 +61,7 @@ public:
}
result_type operator()(const Vector_3 &p, const Vector_3& q) const
Boolean operator()(const Vector_3& p, const Vector_3& q) const
{
CGAL_BRANCH_PROFILER(std::string("semi-static attempts/calls to : ") +
std::string(CGAL_PRETTY_FUNCTION), tmp);
@ -83,7 +82,7 @@ public:
}
result_type operator()(const Vector_3 &p, const Null_vector &q) const
Boolean operator()(const Vector_3& p, const Null_vector& q) const
{
CGAL_BRANCH_PROFILER(std::string("semi-static attempts/calls to : ") +
std::string(CGAL_PRETTY_FUNCTION), tmp);

View File

@ -25,6 +25,7 @@ template < typename K_base, typename SFK >
class Is_degenerate_3
: public K_base::Is_degenerate_3
{
typedef typename K_base::Boolean Boolean;
typedef typename K_base::Ray_3 Ray_3;
typedef typename K_base::Segment_3 Segment_3;
typedef typename K_base::Plane_3 Plane_3;
@ -35,25 +36,21 @@ class Is_degenerate_3
typedef typename SFK::Equal_3 Equal_3;
public:
typedef typename Base::result_type result_type;
using Base::operator();
result_type
Boolean
operator()(const Segment_3& s) const
{
return Equal_3()(Construct_source_3()(s), Construct_target_3()(s));
}
result_type
Boolean
operator()(const Ray_3& r) const
{
return Equal_3()(Construct_source_3()(r), Construct_second_point_3()(r));
}
result_type
Boolean
operator()(const Plane_3& p) const
{
CGAL_BRANCH_PROFILER(std::string("semi-static attempts/calls to : ") +

View File

@ -25,6 +25,7 @@ template < typename K_base >
class Orientation_2
: public K_base::Orientation_2
{
typedef typename K_base::Orientation Orientation;
typedef typename K_base::Point_2 Point_2;
typedef typename K_base::Vector_2 Vector_2;
typedef typename K_base::Circle_2 Circle_2;
@ -32,9 +33,6 @@ class Orientation_2
typedef typename K_base::Orientation_2 Base;
public:
typedef typename Base::result_type result_type;
using Base::operator();
Orientation

View File

@ -27,18 +27,18 @@ template < typename K_base >
class Orientation_3
: public K_base::Orientation_3
{
typedef typename K_base::Orientation Orientation;
typedef typename K_base::Point_3 Point_3;
typedef typename K_base::Vector_3 Vector_3;
typedef typename K_base::Sphere_3 Sphere_3;
typedef typename K_base::Tetrahedron_3 Tetrahedron_3;
typedef typename K_base::Orientation_3 Base;
public:
typedef typename Base::result_type result_type;
using Base::operator();
result_type
Orientation
operator()(const Point_3 &p, const Point_3 &q,
const Point_3 &r, const Point_3 &s) const
{

View File

@ -26,12 +26,12 @@ namespace CGAL { namespace internal { namespace Static_filters_predicates {
class Power_side_of_oriented_power_sphere_3:
public K_base::Power_side_of_oriented_power_sphere_3
{
typedef typename K_base::Oriented_side Oriented_side;
typedef typename K_base::Weighted_point_3 Weighted_point_3;
typedef typename K_base::FT FT;
typedef typename K_base::Power_side_of_oriented_power_sphere_3 Base;
public:
typedef typename Base::result_type result_type;
public:
using Base::operator();
void
@ -107,11 +107,11 @@ namespace CGAL { namespace internal { namespace Static_filters_predicates {
}
result_type operator() ( const Weighted_point_3 & p,
const Weighted_point_3 & q,
const Weighted_point_3 & r,
const Weighted_point_3 & s,
const Weighted_point_3 & t) const
Oriented_side operator() (const Weighted_point_3& p,
const Weighted_point_3& q,
const Weighted_point_3& r,
const Weighted_point_3& s,
const Weighted_point_3& t) const
{
CGAL_BRANCH_PROFILER_3("semi-static failures/attempts/calls to : Power_side_of_power_sphere_3 with 4+1 wpoints", tmp);
@ -225,7 +225,7 @@ namespace CGAL { namespace internal { namespace Static_filters_predicates {
return Base::operator()(p,q,r,s,t);
}
result_type int_tmp_result;
Oriented_side int_tmp_result;
double eps = (1.67106803095990471147e-13 * (((max2 * max3) * max4) * (CGAL::max) ( max5, (max1 * max1) )));
@ -253,10 +253,10 @@ namespace CGAL { namespace internal { namespace Static_filters_predicates {
return Base::operator()(p,q,r,s,t);
}
result_type operator() ( const Weighted_point_3 & p,
const Weighted_point_3 & q,
const Weighted_point_3 & r,
const Weighted_point_3 & t) const
Oriented_side operator() (const Weighted_point_3& p,
const Weighted_point_3& q,
const Weighted_point_3& r,
const Weighted_point_3& t) const
{
CGAL_BRANCH_PROFILER_3("semi-static failures/attempts/calls to : Power_side_of_oriented_power_sphere_3 with 3+1 wpoints", tmp);
@ -410,7 +410,7 @@ namespace CGAL { namespace internal { namespace Static_filters_predicates {
}
}
}
return static_cast<result_type>(cmp * int_tmp_result_FFWKCAA);
return static_cast<Oriented_side>(cmp * int_tmp_result_FFWKCAA);
}
int int_tmp_result_k60Ocge;
double RT_tmp_result_3SPBwDj = CGAL::determinant( dpx, dpz, dpt, dqx, dqz, dqt, drx, drz, drt );
@ -498,7 +498,7 @@ namespace CGAL { namespace internal { namespace Static_filters_predicates {
}
}
}
return static_cast<result_type>(cmp * int_tmp_result_k3Lzf6g);
return static_cast<Oriented_side>(cmp * int_tmp_result_k3Lzf6g);
}
int int_tmp_result_AvrrXBP;
double RT_tmp_result_feLwnHn = CGAL::determinant( dpy, dpz, dpt, dqy, dqz, dqt, dry, drz, drt );
@ -581,15 +581,15 @@ namespace CGAL { namespace internal { namespace Static_filters_predicates {
}
}
}
return static_cast<result_type>(cmp * int_tmp_result_agX3WsT);
return static_cast<Oriented_side>(cmp * int_tmp_result_agX3WsT);
}
else
return Base::operator()(p,q,r,t);
}
result_type operator() ( const Weighted_point_3 & p,
const Weighted_point_3 & q,
const Weighted_point_3 & t) const
Oriented_side operator() (const Weighted_point_3& p,
const Weighted_point_3& q,
const Weighted_point_3& t) const
{
CGAL_BRANCH_PROFILER_3("semi-static failures/attempts/calls to : Power_side_of_oriented_power_sphere_3 with 2+1 wpoints", tmp);
@ -679,7 +679,7 @@ namespace CGAL { namespace internal { namespace Static_filters_predicates {
}
}
}
return static_cast<result_type>(cmp * int_tmp_result);
return static_cast<Oriented_side>(cmp * int_tmp_result);
}
cmp = ((py > qy) ? 1 : ((py < qy) ? -1 : 0));
if( (cmp != 0) )
@ -722,7 +722,7 @@ namespace CGAL { namespace internal { namespace Static_filters_predicates {
}
}
}
return static_cast<result_type>(cmp * int_tmp_result_FFWKCAA);
return static_cast<Oriented_side>(cmp * int_tmp_result_FFWKCAA);
}
cmp = ((pz > qz) ? 1 : ((pz < qz) ? -1 : 0));
int int_tmp_result_3SPBwDj;
@ -765,7 +765,7 @@ namespace CGAL { namespace internal { namespace Static_filters_predicates {
}
}
}
return static_cast<result_type>(cmp * int_tmp_result_3SPBwDj);
return static_cast<Oriented_side>(cmp * int_tmp_result_3SPBwDj);
}
else
return Base::operator()(p,q,t);

View File

@ -23,11 +23,11 @@ template < typename K_base >
class Side_of_oriented_circle_2
: public K_base::Side_of_oriented_circle_2
{
typedef typename K_base::Oriented_side Oriented_side;
typedef typename K_base::Point_2 Point_2;
typedef typename K_base::Side_of_oriented_circle_2 Base;
public:
Oriented_side operator()(const Point_2 &p, const Point_2 &q,
const Point_2 &r, const Point_2 &t) const
{

View File

@ -22,11 +22,11 @@ template < typename K_base >
class Side_of_oriented_sphere_3
: public K_base::Side_of_oriented_sphere_3
{
typedef typename K_base::Oriented_side Oriented_side;
typedef typename K_base::Point_3 Point_3;
typedef typename K_base::Side_of_oriented_sphere_3 Base;
public:
Oriented_side
operator()(const Point_3 &p, const Point_3 &q, const Point_3 &r,
const Point_3 &s, const Point_3 &t) const

View File

@ -225,11 +225,9 @@ class Side_of_oriented_hyperbolic_segment_2
typedef typename Traits::Construct_weighted_circumcenter_2 Construct_weighted_circumcenter_2;
public:
typedef Oriented_side result_type;
Side_of_oriented_hyperbolic_segment_2(const Traits& gt = Traits()) : _gt(gt) {}
result_type operator()(const Hyperbolic_point_2& p,
Oriented_side operator()(const Hyperbolic_point_2& p,
const Hyperbolic_point_2& q,
const Hyperbolic_point_2& query) const
{

View File

@ -8,9 +8,8 @@ class MyConstruct_point_2
typedef typename K::Point_2 Point_2;
typedef typename K::Line_2 Line_2;
typedef typename Point_2::Rep Rep;
public:
typedef Point_2 result_type;
public:
// Note : the CGAL::Return_base_tag is really internal CGAL stuff.
// Unfortunately it is needed for optimizing away copy-constructions,
// due to current lack of delegating constructors in the C++ standard.

View File

@ -8,8 +8,6 @@ typedef K::Line_2 Line_2;
typedef K::Intersect_2 Intersect_2;
struct Intersection_visitor {
typedef void result_type;
void operator()(const Point_2& p) const
{
std::cout << p << std::endl;

File diff suppressed because it is too large Load Diff

View File

@ -254,19 +254,20 @@ template <class R, int dim>
class Compare_signed_distance_to_line_projected_3
{
public:
typedef typename R::Comparison_result Comparison_result;
typedef typename R::Point_3 Point_3;
typedef typename R::Point_2 Point_2;
typedef typename R::FT RT;
typename R::FT x(const Point_3 &p) const { return Projector<R,dim>::x(p); }
typename R::FT y(const Point_3 &p) const { return Projector<R,dim>::y(p); }
typedef typename R::Comparison_result result_type;
Point_2 project(const Point_3& p) const
{
return Point_2(x(p),y(p));
}
result_type operator()(const Point_3& p,
Comparison_result operator()(const Point_3& p,
const Point_3& q,
const Point_3& r,
const Point_3& s) const
@ -280,19 +281,20 @@ template <class R, int dim>
class Less_signed_distance_to_line_projected_3
{
public:
typedef typename R::Boolean Boolean;
typedef typename R::Point_3 Point_3;
typedef typename R::Point_2 Point_2;
typedef typename R::FT RT;
typename R::FT x(const Point_3 &p) const { return Projector<R,dim>::x(p); }
typename R::FT y(const Point_3 &p) const { return Projector<R,dim>::y(p); }
typedef typename R::Boolean result_type;
Point_2 project(const Point_3& p) const
{
return Point_2(x(p),y(p));
}
result_type operator()(const Point_3& p,
Boolean operator()(const Point_3& p,
const Point_3& q,
const Point_3& r,
const Point_3& s) const
@ -597,8 +599,6 @@ class Compute_squared_length_projected_3
typedef typename R::Vector_3 Vector_3;
typedef typename R::FT FT;
typedef FT result_type;
FT x(const Vector_3 &v) const { return Projector<R,dim>::x(v); }
FT y(const Vector_3 &v) const { return Projector<R,dim>::y(v); }
@ -972,8 +972,8 @@ public:
struct Less_xy_2 {
typedef typename R::Boolean result_type;
bool operator()(const Point_2& p, const Point_2& q) const
typedef typename R::Boolean Boolean;
Boolean operator()(const Point_2& p, const Point_2& q) const
{
Compare_x_2 cx;
Comparison_result crx = cx(p,q);
@ -986,8 +986,8 @@ public:
struct Less_yx_2 {
typedef typename R::Boolean result_type;
bool operator()(const Point_2& p, const Point_2& q) const
typedef typename R::Boolean Boolean;
Boolean operator()(const Point_2& p, const Point_2& q) const
{
Compare_y_2 cy;
Comparison_result cry = cy(p,q);
@ -999,8 +999,8 @@ public:
};
struct Equal_2 {
typedef typename R::Boolean result_type;
bool operator()(const Point_2& p, const Point_2& q) const
typedef typename R::Boolean Boolean;
Boolean operator()(const Point_2& p, const Point_2& q) const
{
Equal_x_2 eqx;
@ -1010,8 +1010,8 @@ public:
};
struct Left_turn_2 {
typedef typename R::Boolean result_type;
bool operator()(const Point_2& p, const Point_2& q, const Point_2& r) const
typedef typename R::Boolean Boolean;
Boolean operator()(const Point_2& p, const Point_2& q, const Point_2& r) const
{
Orientation_2 ori;
@ -1020,7 +1020,7 @@ public:
};
struct Collinear_2 {
typedef typename R::Boolean result_type;
typedef typename R::Boolean Boolean;
bool operator()(const Point_2& p, const Point_2& q, const Point_2& r) const
{
Orientation_2 ori;

View File

@ -34,7 +34,6 @@ class Projected_orientation_with_normal_3
typedef typename Traits::Vector_3 Vector_3;
public:
typedef typename K::Orientation Orientation;
typedef Orientation result_type;
Projected_orientation_with_normal_3(const Vector_3& normal_)
: normal(normal_)
@ -69,7 +68,6 @@ class Projected_side_of_oriented_circle_with_normal_3
public:
typedef typename K::Oriented_side Oriented_side;
typedef Oriented_side result_type;
Projected_side_of_oriented_circle_with_normal_3(const Vector_3& normal_)
: normal(normal_)
@ -307,6 +305,7 @@ template <class Traits>
class Less_along_axis
{
// private members
typedef typename Traits::Boolean Boolean;
typedef typename Traits::Vector_3 Vector_3;
typedef typename Traits::Point_2 Point;
Vector_3 base;
@ -317,9 +316,7 @@ public:
CGAL_TIME_PROFILER("Construct Less_along_axis")
}
typedef bool result_type;
bool operator() (const Point &p, const Point &q) const {
Boolean operator() (const Point &p, const Point &q) const {
return base * (p - q) < 0;
}
}; // end class Less_along_axis
@ -328,6 +325,7 @@ template <class Traits>
class Compare_along_axis
{
// private members
typedef typename Traits::Comparison_result Comparison_result;
typedef typename Traits::Vector_3 Vector_3;
typedef typename Traits::Point_2 Point;
Vector_3 base;
@ -338,8 +336,6 @@ public:
CGAL_TIME_PROFILER("Construct Compare_along_axis")
}
typedef Comparison_result result_type;
Comparison_result operator() (const Point &p, const Point &q) const {
return compare(base * (p - q), 0);
}
@ -349,6 +345,7 @@ template <class Traits>
class Less_xy_along_axis
{
// private members
typedef typename Traits::Boolean Boolean;
typedef typename Traits::Vector_3 Vector_3;
typedef typename Traits::Point_2 Point;
Vector_3 base1, base2;
@ -359,9 +356,7 @@ public:
CGAL_TIME_PROFILER("Construct Less_xy_along_axis")
}
typedef bool result_type;
bool operator() (const Point &p, const Point &q) const {
Boolean operator() (const Point &p, const Point &q) const {
Compare_along_axis<Traits> cx(base1);
Comparison_result crx = cx(p, q);