mirror of https://github.com/CGAL/cgal
Remove obsolete config flags
CGAL_CFG_OUTOFLINE_TEMPLATE_MEMBER_DEFINITION_BUG and CGAL_CFG_OUTOFLINE_TEMPLATE_MEMBER_DEFINITION_BUG_2.
This commit is contained in:
parent
8258484ac9
commit
f2a1b260a4
|
|
@ -89,265 +89,61 @@ public:
|
||||||
#ifdef CGAL_HAS_VARIADIC_TEMPLATES
|
#ifdef CGAL_HAS_VARIADIC_TEMPLATES
|
||||||
template <typename... Args>
|
template <typename... Args>
|
||||||
result_type
|
result_type
|
||||||
operator()(const Args&... args) const
|
operator()(const Args&... args) const;
|
||||||
#ifndef CGAL_CFG_OUTOFLINE_TEMPLATE_MEMBER_DEFINITION_BUG
|
|
||||||
;
|
|
||||||
#else
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
CGAL_PROFILER(std::string("calls to : ") + std::string(CGAL_PRETTY_FUNCTION));
|
|
||||||
Protect_FPU_rounding<Protection> P;
|
|
||||||
Ares res = ap(c2a(args)...);
|
|
||||||
if (! is_indeterminate(res))
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
catch (Interval_nt_advanced::unsafe_comparison) {}
|
|
||||||
CGAL_PROFILER(std::string("failures of : ") + std::string(CGAL_PRETTY_FUNCTION));
|
|
||||||
Protect_FPU_rounding<!Protection> P(CGAL_FE_TONEAREST);
|
|
||||||
return ep(c2e(args)...);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
template <class A1>
|
template <class A1>
|
||||||
result_type
|
result_type
|
||||||
operator()(const A1 &a1) const
|
operator()(const A1 &a1) const;
|
||||||
#ifndef CGAL_CFG_OUTOFLINE_TEMPLATE_MEMBER_DEFINITION_BUG
|
|
||||||
;
|
|
||||||
#else
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
CGAL_PROFILER(std::string("calls to : ") + std::string(CGAL_PRETTY_FUNCTION));
|
|
||||||
Protect_FPU_rounding<Protection> P;
|
|
||||||
Ares res = ap(c2a(a1));
|
|
||||||
if (! is_indeterminate(res))
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
catch (Interval_nt_advanced::unsafe_comparison) {}
|
|
||||||
CGAL_PROFILER(std::string("failures of : ") + std::string(CGAL_PRETTY_FUNCTION));
|
|
||||||
Protect_FPU_rounding<!Protection> P(CGAL_FE_TONEAREST);
|
|
||||||
return ep(c2e(a1));
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template <class A1, class A2>
|
template <class A1, class A2>
|
||||||
result_type
|
result_type
|
||||||
operator()(const A1 &a1, const A2 &a2) const
|
operator()(const A1 &a1, const A2 &a2) const;
|
||||||
#ifndef CGAL_CFG_OUTOFLINE_TEMPLATE_MEMBER_DEFINITION_BUG
|
|
||||||
;
|
|
||||||
#else
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
CGAL_PROFILER(std::string("calls to : ") + std::string(CGAL_PRETTY_FUNCTION));
|
|
||||||
Protect_FPU_rounding<Protection> P;
|
|
||||||
Ares res = ap(c2a(a1), c2a(a2));
|
|
||||||
if (! is_indeterminate(res))
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
catch (Interval_nt_advanced::unsafe_comparison) {}
|
|
||||||
CGAL_PROFILER(std::string("failures of : ") + std::string(CGAL_PRETTY_FUNCTION));
|
|
||||||
Protect_FPU_rounding<!Protection> P(CGAL_FE_TONEAREST);
|
|
||||||
return ep(c2e(a1), c2e(a2));
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template <class A1, class A2, class A3>
|
template <class A1, class A2, class A3>
|
||||||
result_type
|
result_type
|
||||||
operator()(const A1 &a1, const A2 &a2, const A3 &a3) const
|
operator()(const A1 &a1, const A2 &a2, const A3 &a3) const;
|
||||||
#ifndef CGAL_CFG_OUTOFLINE_TEMPLATE_MEMBER_DEFINITION_BUG
|
|
||||||
;
|
|
||||||
#else
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
CGAL_PROFILER(std::string("calls to : ") + std::string(CGAL_PRETTY_FUNCTION));
|
|
||||||
Protect_FPU_rounding<Protection> P;
|
|
||||||
Ares res = ap(c2a(a1), c2a(a2), c2a(a3));
|
|
||||||
if (! is_indeterminate(res))
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
catch (Interval_nt_advanced::unsafe_comparison) {}
|
|
||||||
CGAL_PROFILER(std::string("failures of : ") + std::string(CGAL_PRETTY_FUNCTION));
|
|
||||||
Protect_FPU_rounding<!Protection> P(CGAL_FE_TONEAREST);
|
|
||||||
return ep(c2e(a1), c2e(a2), c2e(a3));
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template <class A1, class A2, class A3, class A4>
|
template <class A1, class A2, class A3, class A4>
|
||||||
result_type
|
result_type
|
||||||
operator()(const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4) const
|
operator()(const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4) const;
|
||||||
#ifndef CGAL_CFG_OUTOFLINE_TEMPLATE_MEMBER_DEFINITION_BUG
|
|
||||||
;
|
|
||||||
#else
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
CGAL_PROFILER(std::string("calls to : ") + std::string(CGAL_PRETTY_FUNCTION));
|
|
||||||
Protect_FPU_rounding<Protection> P;
|
|
||||||
Ares res = ap(c2a(a1), c2a(a2), c2a(a3), c2a(a4));
|
|
||||||
if (! is_indeterminate(res))
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
catch (Interval_nt_advanced::unsafe_comparison) {}
|
|
||||||
CGAL_PROFILER(std::string("failures of : ") + std::string(CGAL_PRETTY_FUNCTION));
|
|
||||||
Protect_FPU_rounding<!Protection> P(CGAL_FE_TONEAREST);
|
|
||||||
return ep(c2e(a1), c2e(a2), c2e(a3), c2e(a4));
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template <class A1, class A2, class A3, class A4, class A5>
|
template <class A1, class A2, class A3, class A4, class A5>
|
||||||
result_type
|
result_type
|
||||||
operator()(const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4,
|
operator()(const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4,
|
||||||
const A5 &a5) const
|
const A5 &a5) const;
|
||||||
#ifndef CGAL_CFG_OUTOFLINE_TEMPLATE_MEMBER_DEFINITION_BUG
|
|
||||||
;
|
|
||||||
#else
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
CGAL_PROFILER(std::string("calls to : ") + std::string(CGAL_PRETTY_FUNCTION));
|
|
||||||
Protect_FPU_rounding<Protection> P;
|
|
||||||
Ares res = ap(c2a(a1), c2a(a2), c2a(a3), c2a(a4), c2a(a5));
|
|
||||||
if (! is_indeterminate(res))
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
catch (Interval_nt_advanced::unsafe_comparison) {}
|
|
||||||
CGAL_PROFILER(std::string("failures of : ") + std::string(CGAL_PRETTY_FUNCTION));
|
|
||||||
Protect_FPU_rounding<!Protection> P(CGAL_FE_TONEAREST);
|
|
||||||
return ep(c2e(a1), c2e(a2), c2e(a3), c2e(a4), c2e(a5));
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template <class A1, class A2, class A3, class A4, class A5, class A6>
|
template <class A1, class A2, class A3, class A4, class A5, class A6>
|
||||||
result_type
|
result_type
|
||||||
operator()(const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4,
|
operator()(const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4,
|
||||||
const A5 &a5, const A6 &a6) const
|
const A5 &a5, const A6 &a6) const;
|
||||||
#ifndef CGAL_CFG_OUTOFLINE_TEMPLATE_MEMBER_DEFINITION_BUG
|
|
||||||
;
|
|
||||||
#else
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
CGAL_PROFILER(std::string("calls to : ") + std::string(CGAL_PRETTY_FUNCTION));
|
|
||||||
Protect_FPU_rounding<Protection> P;
|
|
||||||
Ares res = ap(c2a(a1), c2a(a2), c2a(a3), c2a(a4), c2a(a5), c2a(a6));
|
|
||||||
if (! is_indeterminate(res))
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
catch (Interval_nt_advanced::unsafe_comparison) {}
|
|
||||||
CGAL_PROFILER(std::string("failures of : ") + std::string(CGAL_PRETTY_FUNCTION));
|
|
||||||
Protect_FPU_rounding<!Protection> P(CGAL_FE_TONEAREST);
|
|
||||||
return ep(c2e(a1), c2e(a2), c2e(a3), c2e(a4), c2e(a5), c2e(a6));
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template <class A1, class A2, class A3, class A4, class A5, class A6,
|
template <class A1, class A2, class A3, class A4, class A5, class A6,
|
||||||
class A7>
|
class A7>
|
||||||
result_type
|
result_type
|
||||||
operator()(const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4,
|
operator()(const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4,
|
||||||
const A5 &a5, const A6 &a6, const A7 &a7) const
|
const A5 &a5, const A6 &a6, const A7 &a7) const;
|
||||||
#ifndef CGAL_CFG_OUTOFLINE_TEMPLATE_MEMBER_DEFINITION_BUG
|
|
||||||
;
|
|
||||||
#else
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
CGAL_PROFILER(std::string("calls to : ") + std::string(CGAL_PRETTY_FUNCTION));
|
|
||||||
Protect_FPU_rounding<Protection> P;
|
|
||||||
Ares res = ap(c2a(a1), c2a(a2), c2a(a3), c2a(a4),
|
|
||||||
c2a(a5), c2a(a6), c2a(a7));
|
|
||||||
if (! is_indeterminate(res))
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
catch (Interval_nt_advanced::unsafe_comparison) {}
|
|
||||||
CGAL_PROFILER(std::string("failures of : ") + std::string(CGAL_PRETTY_FUNCTION));
|
|
||||||
Protect_FPU_rounding<!Protection> P(CGAL_FE_TONEAREST);
|
|
||||||
return ep(c2e(a1), c2e(a2), c2e(a3), c2e(a4), c2e(a5), c2e(a6), c2e(a7));
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template <class A1, class A2, class A3, class A4, class A5, class A6,
|
template <class A1, class A2, class A3, class A4, class A5, class A6,
|
||||||
class A7, class A8>
|
class A7, class A8>
|
||||||
result_type
|
result_type
|
||||||
operator()(const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4,
|
operator()(const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4,
|
||||||
const A5 &a5, const A6 &a6, const A7 &a7, const A8 &a8) const
|
const A5 &a5, const A6 &a6, const A7 &a7, const A8 &a8) const;
|
||||||
#ifndef CGAL_CFG_OUTOFLINE_TEMPLATE_MEMBER_DEFINITION_BUG
|
|
||||||
;
|
|
||||||
#else
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
CGAL_PROFILER(std::string("calls to : ") + std::string(__PRETTY_FUNCTION__));
|
|
||||||
Protect_FPU_rounding<Protection> P;
|
|
||||||
Ares res = ap(c2a(a1), c2a(a2), c2a(a3), c2a(a4),
|
|
||||||
c2a(a5), c2a(a6), c2a(a7), c2a(a8) );
|
|
||||||
if (! is_indeterminate(res))
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
catch (Interval_nt_advanced::unsafe_comparison) {}
|
|
||||||
CGAL_PROFILER(std::string("failures of : ") + std::string(__PRETTY_FUNCTION__));
|
|
||||||
Protect_FPU_rounding<!Protection> P(CGAL_FE_TONEAREST);
|
|
||||||
return ep(c2e(a1), c2e(a2), c2e(a3), c2e(a4),
|
|
||||||
c2e(a5), c2e(a6), c2e(a7), c2e(a8) );
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template <class A1, class A2, class A3, class A4, class A5, class A6,
|
template <class A1, class A2, class A3, class A4, class A5, class A6,
|
||||||
class A7, class A8, class A9>
|
class A7, class A8, class A9>
|
||||||
result_type
|
result_type
|
||||||
operator()(const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4,
|
operator()(const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4,
|
||||||
const A5 &a5, const A6 &a6, const A7 &a7, const A8 &a8,
|
const A5 &a5, const A6 &a6, const A7 &a7, const A8 &a8,
|
||||||
const A9 &a9) const
|
const A9 &a9) const;
|
||||||
#ifndef CGAL_CFG_OUTOFLINE_TEMPLATE_MEMBER_DEFINITION_BUG
|
|
||||||
;
|
|
||||||
#else
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
CGAL_PROFILER(std::string("calls to : ") + std::string(__PRETTY_FUNCTION__));
|
|
||||||
Protect_FPU_rounding<Protection> P;
|
|
||||||
Ares res = ap(c2a(a1), c2a(a2), c2a(a3), c2a(a4),
|
|
||||||
c2a(a5), c2a(a6), c2a(a7), c2a(a8), c2a(a9) );
|
|
||||||
if (! is_indeterminate(res))
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
catch (Interval_nt_advanced::unsafe_comparison) {}
|
|
||||||
CGAL_PROFILER(std::string("failures of : ") + std::string(__PRETTY_FUNCTION__));
|
|
||||||
Protect_FPU_rounding<!Protection> P(CGAL_FE_TONEAREST);
|
|
||||||
return ep(c2e(a1), c2e(a2), c2e(a3), c2e(a4),
|
|
||||||
c2e(a5), c2e(a6), c2e(a7), c2e(a8), c2e(a9) );
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template <class A1, class A2, class A3, class A4, class A5, class A6,
|
template <class A1, class A2, class A3, class A4, class A5, class A6,
|
||||||
class A7, class A8, class A9, class A10>
|
class A7, class A8, class A9, class A10>
|
||||||
result_type
|
result_type
|
||||||
operator()(const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4,
|
operator()(const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4,
|
||||||
const A5 &a5, const A6 &a6, const A7 &a7, const A8 &a8,
|
const A5 &a5, const A6 &a6, const A7 &a7, const A8 &a8,
|
||||||
const A9 &a9, const A10 &a10) const
|
const A9 &a9, const A10 &a10) const;
|
||||||
#ifndef CGAL_CFG_OUTOFLINE_TEMPLATE_MEMBER_DEFINITION_BUG
|
|
||||||
;
|
|
||||||
#else
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
CGAL_PROFILER(std::string("calls to : ") + std::string(__PRETTY_FUNCTION__));
|
|
||||||
Protect_FPU_rounding<Protection> P;
|
|
||||||
Ares res = ap(c2a(a1), c2a(a2), c2a(a3), c2a(a4),
|
|
||||||
c2a(a5), c2a(a6), c2a(a7), c2a(a8), c2a(a9), c2a(a10) );
|
|
||||||
if (! is_indeterminate(res))
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
catch (Interval_nt_advanced::unsafe_comparison) {}
|
|
||||||
CGAL_PROFILER(std::string("failures of : ") + std::string(__PRETTY_FUNCTION__));
|
|
||||||
Protect_FPU_rounding<!Protection> P(CGAL_FE_TONEAREST);
|
|
||||||
return ep(c2e(a1), c2e(a2), c2e(a3), c2e(a4),
|
|
||||||
c2e(a5), c2e(a6), c2e(a7), c2e(a8), c2e(a9), c2e(a10) );
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
// Idem for more than 10 arguments. Do it on demand.
|
// Idem for more than 10 arguments. Do it on demand.
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -374,9 +170,9 @@ Filtered_predicate<EP,AP,C2E,C2A,Protection>::
|
||||||
Protect_FPU_rounding<!Protection> P(CGAL_FE_TONEAREST);
|
Protect_FPU_rounding<!Protection> P(CGAL_FE_TONEAREST);
|
||||||
return ep(c2e(args)...);
|
return ep(c2e(args)...);
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
#ifndef CGAL_CFG_OUTOFLINE_TEMPLATE_MEMBER_DEFINITION_BUG
|
|
||||||
template <class EP, class AP, class C2E, class C2A, bool Protection>
|
template <class EP, class AP, class C2E, class C2A, bool Protection>
|
||||||
template <class A1>
|
template <class A1>
|
||||||
typename Filtered_predicate<EP,AP,C2E,C2A,Protection>::result_type
|
typename Filtered_predicate<EP,AP,C2E,C2A,Protection>::result_type
|
||||||
|
|
@ -598,8 +394,6 @@ Filtered_predicate<EP,AP,C2E,C2A,Protection>::
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
CGAL_END_NAMESPACE
|
CGAL_END_NAMESPACE
|
||||||
|
|
||||||
#endif // CGAL_FILTERED_PREDICATE_H
|
#endif // CGAL_FILTERED_PREDICATE_H
|
||||||
|
|
|
||||||
|
|
@ -1,56 +0,0 @@
|
||||||
// Copyright (c) 2003 Utrecht University (The Netherlands),
|
|
||||||
// ETH Zurich (Switzerland), Freie Universitaet Berlin (Germany),
|
|
||||||
// INRIA Sophia-Antipolis (France), Martin-Luther-University Halle-Wittenberg
|
|
||||||
// (Germany), Max-Planck-Institute Saarbruecken (Germany), RISC Linz (Austria),
|
|
||||||
// and Tel-Aviv University (Israel). All rights reserved.
|
|
||||||
//
|
|
||||||
// This file is part of CGAL (www.cgal.org); you can redistribute it and/or
|
|
||||||
// modify it under the terms of the GNU Lesser General Public License as
|
|
||||||
// published by the Free Software Foundation; version 2.1 of the License.
|
|
||||||
// See the file LICENSE.LGPL distributed with CGAL.
|
|
||||||
//
|
|
||||||
// Licensees holding a valid commercial license may use this file in
|
|
||||||
// accordance with the commercial license agreement provided with the software.
|
|
||||||
//
|
|
||||||
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
|
|
||||||
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
//
|
|
||||||
// $URL$
|
|
||||||
// $Id$
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// Author(s) : Radu Ursu
|
|
||||||
|
|
||||||
// ---------------------------------------------------------------------
|
|
||||||
// A short test program to evaluate a C++ compiler.
|
|
||||||
// This program is used by install_cgal.
|
|
||||||
// The following documentation will be pasted in the generated configfile.
|
|
||||||
// ---------------------------------------------------------------------
|
|
||||||
|
|
||||||
//| The flag CGAL_CFG_OUTOFLINE_TEMPLATE_MEMBER_DEFINITION_BUG is set,
|
|
||||||
//| if a compiler does not support the definition of member templates
|
|
||||||
//| out of line, i.e. outside class scope. The solution is to put the
|
|
||||||
//| definition inside the class. This is a feature of SunPro 5.5.
|
|
||||||
|
|
||||||
template <class A>
|
|
||||||
class B {
|
|
||||||
public:
|
|
||||||
typedef typename A::D Res;
|
|
||||||
|
|
||||||
template<class C>
|
|
||||||
Res fct(C *i);
|
|
||||||
};
|
|
||||||
|
|
||||||
template<class A>
|
|
||||||
template<class C> //syntax error
|
|
||||||
typename B<A>::Res
|
|
||||||
B<A>::fct(C *i)
|
|
||||||
{
|
|
||||||
typedef typename B<A>::Res R;
|
|
||||||
return R();
|
|
||||||
}
|
|
||||||
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
@ -1,53 +0,0 @@
|
||||||
// Copyright (c) 2004 Utrecht University (The Netherlands),
|
|
||||||
// ETH Zurich (Switzerland), Freie Universitaet Berlin (Germany),
|
|
||||||
// INRIA Sophia-Antipolis (France), Martin-Luther-University Halle-Wittenberg
|
|
||||||
// (Germany), Max-Planck-Institute Saarbruecken (Germany), RISC Linz (Austria),
|
|
||||||
// and Tel-Aviv University (Israel). All rights reserved.
|
|
||||||
//
|
|
||||||
// This file is part of CGAL (www.cgal.org); you can redistribute it and/or
|
|
||||||
// modify it under the terms of the GNU Lesser General Public License as
|
|
||||||
// published by the Free Software Foundation; version 2.1 of the License.
|
|
||||||
// See the file LICENSE.LGPL distributed with CGAL.
|
|
||||||
//
|
|
||||||
// Licensees holding a valid commercial license may use this file in
|
|
||||||
// accordance with the commercial license agreement provided with the software.
|
|
||||||
//
|
|
||||||
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
|
|
||||||
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
//
|
|
||||||
// $URL$
|
|
||||||
// $Id$
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// Author(s) : Laurent Rineau
|
|
||||||
|
|
||||||
// ---------------------------------------------------------------------
|
|
||||||
// A short test program to evaluate a C++ compiler.
|
|
||||||
// This program is used by install_cgal.
|
|
||||||
// The following documentation will be pasted in the generated configfile.
|
|
||||||
// ---------------------------------------------------------------------
|
|
||||||
|
|
||||||
//| The flag CGAL_CFG_OUTOFLINE_TEMPLATE_MEMBER_DEFINITION_BUG_2 is set,
|
|
||||||
//| if a compiler does not support the definition of member templates
|
|
||||||
//| out of line, i.e. outside class scope. The solution is to put the
|
|
||||||
//| definition inside the class.
|
|
||||||
//| The difference with CGAL_CFG_OUTOFLINE_TEMPLATE_MEMBER_DEFINITION_BUG
|
|
||||||
//| is the return type of the member template.SunPro 5.5 should be OK with
|
|
||||||
//| this code.
|
|
||||||
|
|
||||||
template <class A>
|
|
||||||
class B {
|
|
||||||
public:
|
|
||||||
template<class C>
|
|
||||||
void fct(C *i);
|
|
||||||
};
|
|
||||||
|
|
||||||
template<class A>
|
|
||||||
template<class C>
|
|
||||||
void
|
|
||||||
B<A>::fct(C *i){
|
|
||||||
}
|
|
||||||
|
|
||||||
int main(){
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
@ -702,8 +702,6 @@ void clone(const Plane_map& H) const;
|
||||||
\precond |H.check_integrity_and_topological_planarity()| and
|
\precond |H.check_integrity_and_topological_planarity()| and
|
||||||
|P| is empty.}*/
|
|P| is empty.}*/
|
||||||
|
|
||||||
#if ! defined(CGAL_CFG_OUTOFLINE_TEMPLATE_MEMBER_DEFINITION_BUG)
|
|
||||||
|
|
||||||
template <typename LINKDA>
|
template <typename LINKDA>
|
||||||
void clone_skeleton(const Plane_map& H, const LINKDA& L) const;
|
void clone_skeleton(const Plane_map& H, const LINKDA& L) const;
|
||||||
/*{\Mop clones the skeleton of |H| into |P|. Afterwards |P| is a copy
|
/*{\Mop clones the skeleton of |H| into |P|. Afterwards |P| is a copy
|
||||||
|
|
@ -716,56 +714,6 @@ objects.\\
|
||||||
\precond |H.check_integrity_and_topological_planarity()| and
|
\precond |H.check_integrity_and_topological_planarity()| and
|
||||||
|P| is empty.}*/
|
|P| is empty.}*/
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
template <typename LINKDA>
|
|
||||||
void clone_skeleton(const HDS& H, const LINKDA& L) const
|
|
||||||
{
|
|
||||||
CGAL_assertion(number_of_vertices()==0&&
|
|
||||||
number_of_halfedges()==0&&
|
|
||||||
number_of_faces()==0);
|
|
||||||
|
|
||||||
PM_const_decorator<HDS> DC(H);
|
|
||||||
CGAL_assertion((DC.check_integrity_and_topological_planarity(),1));
|
|
||||||
CGAL::Unique_hash_map<Vertex_const_iterator,Vertex_handle> Vnew;
|
|
||||||
CGAL::Unique_hash_map<Halfedge_const_iterator,Halfedge_handle> Hnew;
|
|
||||||
|
|
||||||
/* First clone all objects and store correspondance in the two maps.*/
|
|
||||||
Vertex_const_iterator vit, vend = H.vertices_end();
|
|
||||||
for (vit = H.vertices_begin(); vit!=vend; ++vit) {
|
|
||||||
Vertex_handle v = this->phds->vertices_push_back(Vertex_base());
|
|
||||||
Vnew[vit] = v;
|
|
||||||
}
|
|
||||||
Halfedge_const_iterator eit, eend = H.halfedges_end();
|
|
||||||
for (eit = H.halfedges_begin(); eit!=eend; ++(++eit)) {
|
|
||||||
Halfedge_handle e = this->phds->edges_push_back(Halfedge_base(),Halfedge_base());
|
|
||||||
Hnew[eit] = e; Hnew[eit->opposite()] = e->opposite();
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Now copy topology.*/
|
|
||||||
Vertex_iterator vit2, vend2 = vertices_end();
|
|
||||||
for (vit = H.vertices_begin(), vit2 = vertices_begin();
|
|
||||||
vit2!=vend2; ++vit, ++vit2) {
|
|
||||||
mark(vit2) = DC.mark(vit);
|
|
||||||
point(vit2) = DC.point(vit);
|
|
||||||
if ( !DC.is_isolated(vit) )
|
|
||||||
vit2->set_halfedge(Hnew[vit->halfedge()]);
|
|
||||||
L(vit2,vit);
|
|
||||||
}
|
|
||||||
Halfedge_iterator eit2, eend2 = this->phds->halfedges_end();
|
|
||||||
for (eit = H.halfedges_begin(), eit2 = halfedges_begin();
|
|
||||||
eit2!=eend2; ++eit, ++eit2) {
|
|
||||||
eit2->set_prev(Hnew[eit->prev()]);
|
|
||||||
eit2->set_next(Hnew[eit->next()]);
|
|
||||||
eit2->set_vertex(Vnew[eit->vertex()]);
|
|
||||||
mark(eit2) = DC.mark(eit);
|
|
||||||
// eit2->set_face(Face_handle((Face*)&*(eit->face())));
|
|
||||||
L(eit2,eit);
|
|
||||||
// link to face of original
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void reflecting_inversion()
|
void reflecting_inversion()
|
||||||
/*{\Xop inverts the topological links corresponding to a reflecting
|
/*{\Xop inverts the topological links corresponding to a reflecting
|
||||||
|
|
@ -906,7 +854,6 @@ void PM_decorator<HDS>::clone(const HDS& H) const
|
||||||
CGAL_assertion((this->check_integrity_and_topological_planarity(),1));
|
CGAL_assertion((this->check_integrity_and_topological_planarity(),1));
|
||||||
}
|
}
|
||||||
|
|
||||||
#if ! defined(CGAL_CFG_OUTOFLINE_TEMPLATE_MEMBER_DEFINITION_BUG)
|
|
||||||
|
|
||||||
template <typename HDS>
|
template <typename HDS>
|
||||||
template <typename LINKDA>
|
template <typename LINKDA>
|
||||||
|
|
@ -957,10 +904,6 @@ clone_skeleton(const HDS& H, const LINKDA& L) const
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CGAL_END_NAMESPACE
|
CGAL_END_NAMESPACE
|
||||||
#endif //CGAL_PM_DECORATOR_H
|
|
||||||
|
|
||||||
|
#endif //CGAL_PM_DECORATOR_H
|
||||||
|
|
|
||||||
|
|
@ -51,89 +51,40 @@ public:
|
||||||
|
|
||||||
template <class A1>
|
template <class A1>
|
||||||
result_type
|
result_type
|
||||||
operator()(const A1 &a1) const
|
operator()(const A1 &a1) const;
|
||||||
#ifndef CGAL_CFG_OUTOFLINE_TEMPLATE_MEMBER_DEFINITION_BUG
|
|
||||||
;
|
|
||||||
#else
|
|
||||||
{
|
|
||||||
return static_cast<result_type>(Certified_approx_predicate(a1));
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template <class A1, class A2>
|
template <class A1, class A2>
|
||||||
result_type
|
result_type
|
||||||
operator()(const A1 &a1, const A2 &a2) const
|
operator()(const A1 &a1, const A2 &a2) const;
|
||||||
#ifndef CGAL_CFG_OUTOFLINE_TEMPLATE_MEMBER_DEFINITION_BUG
|
|
||||||
;
|
|
||||||
#else
|
|
||||||
{
|
|
||||||
return static_cast<result_type>(Certified_approx_predicate(a1, a2));
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template <class A1, class A2, class A3>
|
template <class A1, class A2, class A3>
|
||||||
result_type
|
result_type
|
||||||
operator()(const A1 &a1, const A2 &a2, const A3 &a3) const
|
operator()(const A1 &a1, const A2 &a2, const A3 &a3) const;
|
||||||
#ifndef CGAL_CFG_OUTOFLINE_TEMPLATE_MEMBER_DEFINITION_BUG
|
|
||||||
;
|
|
||||||
#else
|
|
||||||
{
|
|
||||||
return static_cast<result_type>(Certified_approx_predicate(a1, a2, a3));
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template <class A1, class A2, class A3, class A4>
|
template <class A1, class A2, class A3, class A4>
|
||||||
result_type
|
result_type
|
||||||
operator()(const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4) const
|
operator()(const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4) const;
|
||||||
#ifndef CGAL_CFG_OUTOFLINE_TEMPLATE_MEMBER_DEFINITION_BUG
|
|
||||||
;
|
|
||||||
#else
|
|
||||||
{
|
|
||||||
return static_cast<result_type>(Certified_approx_predicate(a1, a2, a3,a4));
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template <class A1, class A2, class A3, class A4, class A5>
|
template <class A1, class A2, class A3, class A4, class A5>
|
||||||
result_type
|
result_type
|
||||||
operator()(const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4,
|
operator()(const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4,
|
||||||
const A5 &a5) const
|
const A5 &a5) const;
|
||||||
#ifndef CGAL_CFG_OUTOFLINE_TEMPLATE_MEMBER_DEFINITION_BUG
|
|
||||||
;
|
|
||||||
#else
|
|
||||||
{
|
|
||||||
return static_cast<result_type>(Certified_approx_predicate(a1, a2, a3, a4, a5));
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template <class A1, class A2, class A3, class A4, class A5, class A6>
|
template <class A1, class A2, class A3, class A4, class A5, class A6>
|
||||||
result_type
|
result_type
|
||||||
operator()(const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4,
|
operator()(const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4,
|
||||||
const A5 &a5, const A6 &a6) const
|
const A5 &a5, const A6 &a6) const;
|
||||||
#ifndef CGAL_CFG_OUTOFLINE_TEMPLATE_MEMBER_DEFINITION_BUG
|
|
||||||
;
|
|
||||||
#else
|
|
||||||
{
|
|
||||||
return static_cast<result_type>(Certified_approx_predicate(a1, a2, a3, a4, a5, a6));
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template <class A1, class A2, class A3, class A4, class A5, class A6,
|
template <class A1, class A2, class A3, class A4, class A5, class A6,
|
||||||
class A7>
|
class A7>
|
||||||
result_type
|
result_type
|
||||||
operator()(const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4,
|
operator()(const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4,
|
||||||
const A5 &a5, const A6 &a6, const A7 &a7) const
|
const A5 &a5, const A6 &a6, const A7 &a7) const;
|
||||||
#ifndef CGAL_CFG_OUTOFLINE_TEMPLATE_MEMBER_DEFINITION_BUG
|
|
||||||
;
|
|
||||||
#else
|
|
||||||
{
|
|
||||||
return static_cast<result_type>(Certified_approx_predicate(a1, a2, a3, a4, a5, a6, a7));
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Idem for more than 7 arguments. Do it on demand.
|
// Idem for more than 7 arguments. Do it on demand.
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifndef CGAL_CFG_OUTOFLINE_TEMPLATE_MEMBER_DEFINITION_BUG
|
|
||||||
template <class CAP>
|
template <class CAP>
|
||||||
template <class A1>
|
template <class A1>
|
||||||
typename Unfiltered_predicate_adaptor<CAP>::result_type
|
typename Unfiltered_predicate_adaptor<CAP>::result_type
|
||||||
|
|
@ -189,7 +140,6 @@ Unfiltered_predicate_adaptor<CAP>::
|
||||||
{
|
{
|
||||||
return static_cast<result_type>(Certified_approx_predicate(a1, a2, a3, a4, a5, a6));
|
return static_cast<result_type>(Certified_approx_predicate(a1, a2, a3, a4, a5, a6));
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
CGAL_END_NAMESPACE
|
CGAL_END_NAMESPACE
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue