result_type in functors

This commit is contained in:
Monique Teillaud 2006-03-07 15:45:01 +00:00
parent 8b5b6b64bf
commit 15daa97c09
1 changed files with 38 additions and 20 deletions

View File

@ -40,7 +40,8 @@ namespace AlgebraicFunctors {
typedef typename AK::Polynomial_1_2 Equation_Line; typedef typename AK::Polynomial_1_2 Equation_Line;
public: public:
typedef void result_type;
template < class OutputIterator > template < class OutputIterator >
OutputIterator OutputIterator
operator()(const Equation_Circle & e1, operator()(const Equation_Circle & e1,
@ -80,7 +81,9 @@ namespace AlgebraicFunctors {
public: public:
Polynomial_for_circles_2_2 typedef Polynomial_for_circles_2_2 result_type;
result_type
operator()(const RT& xc, const RT& yc, const RT& r_sq) const operator()(const RT& xc, const RT& yc, const RT& r_sq) const
{ return Polynomial_for_circles_2_2(xc, yc, r_sq); } { return Polynomial_for_circles_2_2(xc, yc, r_sq); }
@ -93,8 +96,10 @@ namespace AlgebraicFunctors {
typedef typename AK::Polynomial_1_2 Polynomial_1_2; typedef typename AK::Polynomial_1_2 Polynomial_1_2;
public: public:
typedef Polynomial_1_2 result_type;
Polynomial_1_2 result_type
operator()( const RT& a, const RT& b, const RT& c) const operator()( const RT& a, const RT& b, const RT& c) const
{ return Polynomial_1_2(a, b, c); } { return Polynomial_1_2(a, b, c); }
@ -103,16 +108,21 @@ namespace AlgebraicFunctors {
template < class AK > template < class AK >
class Sign_at class Sign_at
{ {
typedef typename AK::Polynomial_1_2 Polynomial_1_2;
typedef typename AK::Polynomial_for_circles_2_2 Polynomial_for_circles_2_2;
typedef typename AK::Root_for_circles_2_2 Root_for_circles_2_2;
public: public:
typedef CGAL::Sign result_type;
Sign
operator()( const typename AK::Polynomial_for_circles_2_2 & equation, result_type
const typename AK::Root_for_circles_2_2 & r ) const operator()( const Polynomial_for_circles_2_2 & equation,
const Root_for_circles_2_2 & r ) const
{ return AlgebraicFunctors::sign_at<AK>(equation, r); } { return AlgebraicFunctors::sign_at<AK>(equation, r); }
Sign result_type
operator()( const typename AK::Polynomial_1_2 & equation, operator()( const Polynomial_1_2 & equation,
const typename AK::Root_for_circles_2_2 & r ) const const Root_for_circles_2_2 & r ) const
{ return AlgebraicFunctors::sign_at<AK>(equation, r); } { return AlgebraicFunctors::sign_at<AK>(equation, r); }
}; };
@ -120,16 +130,20 @@ namespace AlgebraicFunctors {
template < class AK > template < class AK >
class X_critical_points class X_critical_points
{ {
public: typedef typename AK::Root_for_circles_2_2 Root_for_circles_2_2;
typedef typename AK::Polynomial_for_circles_2_2 Polynomial_for_circles_2_2;
typename AK::Root_for_circles_2_2 public:
operator()(const typename AK::Polynomial_for_circles_2_2 & c, typedef void result_type;
Root_for_circles_2_2
operator()(const Polynomial_for_circles_2_2 & c,
bool i) const bool i) const
{ return AlgebraicFunctors::x_critical_point<AK>(c,i); } { return AlgebraicFunctors::x_critical_point<AK>(c,i); }
template <class OutputIterator> template <class OutputIterator>
OutputIterator OutputIterator
operator()(const typename AK::Polynomial_for_circles_2_2 & c, operator()(const Polynomial_for_circles_2_2 & c,
OutputIterator res) const OutputIterator res) const
{ return AlgebraicFunctors::x_critical_points<AK>(c,res); } { return AlgebraicFunctors::x_critical_points<AK>(c,res); }
@ -138,16 +152,20 @@ namespace AlgebraicFunctors {
template < class AK > template < class AK >
class Y_critical_points class Y_critical_points
{ {
typedef typename AK::Root_for_circles_2_2 Root_for_circles_2_2;
typedef typename AK::Polynomial_for_circles_2_2 Polynomial_for_circles_2_2;
public: public:
typedef void result_type;
typename AK::Root_for_circles_2_2 Root_for_circles_2_2
operator()(const typename AK::Polynomial_for_circles_2_2 & c, operator()(const Polynomial_for_circles_2_2 & c,
bool i) const bool i) const
{ return AlgebraicFunctors::y_critical_point<AK>(c,i); } { return AlgebraicFunctors::y_critical_point<AK>(c,i); }
template <class OutputIterator> template <class OutputIterator>
OutputIterator OutputIterator
operator()(const typename AK::Polynomial_for_circles_2_2 & c, operator()(const Polynomial_for_circles_2_2 & c,
OutputIterator res) const OutputIterator res) const
{ return AlgebraicFunctors::y_critical_points<AK>(c,res); } { return AlgebraicFunctors::y_critical_points<AK>(c,res); }
@ -161,7 +179,7 @@ namespace AlgebraicFunctors {
Comparison_result Comparison_result
operator()(const Root_for_circles_2_2<RT>& r1, operator()(const Root_for_circles_2_2<RT>& r1,
const Root_for_circles_2_2<RT>& r2) const const Root_for_circles_2_2<RT>& r2) const
{ return compare_x<RT>(r1, r2); } { return AlgebraicFunctors::compare_x<RT>(r1, r2); }
}; };
@ -173,7 +191,7 @@ namespace AlgebraicFunctors {
Comparison_result Comparison_result
operator()(const Root_for_circles_2_2<RT>& r1, operator()(const Root_for_circles_2_2<RT>& r1,
const Root_for_circles_2_2<RT>& r2) const const Root_for_circles_2_2<RT>& r2) const
{ return compare_y<RT>(r1, r2); } { return AlgebraicFunctors::compare_y<RT>(r1, r2); }
}; };
@ -185,7 +203,7 @@ namespace AlgebraicFunctors {
Comparison_result Comparison_result
operator()(const Root_for_circles_2_2<RT>& r1, operator()(const Root_for_circles_2_2<RT>& r1,
const Root_for_circles_2_2<RT>& r2) const const Root_for_circles_2_2<RT>& r2) const
{ return compare_xy<RT>(r1, r2); } { return AlgebraicFunctors::compare_xy<RT>(r1, r2); }
}; };