[GIT] ppl/ppl(floating_point): Added a temporary implementation for external method neg_assign.

Module: ppl/ppl Branch: floating_point Commit: 9b98cc5348d01790871f0c4c12b7cb4cbd46f64d URL: http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=9b98cc5348d01...
Author: Fabio Bossi bossi@cs.unipr.it Date: Thu Sep 3 14:05:27 2009 +0200
Added a temporary implementation for external method neg_assign.
---
src/Interval.defs.hh | 5 +++++ src/Interval.inlines.hh | 11 +++++++++++ 2 files changed, 16 insertions(+), 0 deletions(-)
diff --git a/src/Interval.defs.hh b/src/Interval.defs.hh index d39505a..b373cba 100644 --- a/src/Interval.defs.hh +++ b/src/Interval.defs.hh @@ -55,6 +55,11 @@ struct Is_Singleton : public Is_Native_Or_Checked<T> {}; template <typename T> struct Is_Interval : public Is_Same_Or_Derived<Interval_Base, T> {};
+// FIXME: This has been added as a workaraound. +template <typename From> +typename Enable_If<Is_Interval<From>::value, I_Result>::type +neg_assign(From& x); + //! A generic, not necessarily closed, possibly restricted interval. /*! \ingroup PPL_CXX_interface The class template type parameter \p Boundary represents the type diff --git a/src/Interval.inlines.hh b/src/Interval.inlines.hh index 2db333e..88a0b1e 100644 --- a/src/Interval.inlines.hh +++ b/src/Interval.inlines.hh @@ -25,6 +25,17 @@ site: http://www.cs.unipr.it/ppl/ . */
namespace Parma_Polyhedra_Library {
+template <typename From> +typename Enable_If<Is_Interval<From>::value, I_Result>::type +neg_assign(From& x) { + // FIXME: Avoid the creation of a temporary. + From y; + typename Enable_If<Is_Interval<From>::value, I_Result>::type res = + y.neg_assign(x); + x = y; + return res; +} + template <typename Boundary, typename Info> inline memory_size_type Interval<Boundary, Info>::external_memory_in_bytes() const {
participants (1)
-
Fabio Bossi