From aec6dba30be81d5a422bcebfe88d9a1ba8e53051 Mon Sep 17 00:00:00 2001 From: Sven Verdoolaege Date: Sun, 24 Aug 2008 13:04:13 +0200 Subject: [PATCH] laurent.cc: don't use const vectors as map keys Apparently, Sun's compiler has a problem with those: "/solapplic/sun-studio-11/SUNWspro/prod/include/CC/Cstd/./map", line 251: Error: Multiple declaration for std::map, const _new__evalue*, std::less>, std::allocator, const _new__evalue*>>>::insert(const std::pair, const _new__evalue*>&). "../../git/barvinok/laurent.cc", line 225: Where: While specializing "std::map, const _new__evalue*, std::less>, std::allocator, const _new__evalue*>>>". "../../git/barvinok/laurent.cc", line 225: Where: Specialized in non-template code. --- laurent.cc | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/laurent.cc b/laurent.cc index 5171cf1..2e95760 100644 --- a/laurent.cc +++ b/laurent.cc @@ -26,7 +26,7 @@ using std::vector; namespace __gnu_cxx { - template<> struct hash< const std::vector > + template<> struct hash< std::vector > { size_t operator()( const std::vector& x ) const { @@ -222,14 +222,14 @@ struct todd_product { /* For each variable, the last ray that has a non-zero coefficient */ vector last_level; - HASH_MAP, const evalue *> cache; + HASH_MAP, const evalue *> cache; todd_product(vertex_cone &vc); evalue *add(evalue *sum); const evalue *get_coefficient(const vector &powers); ~todd_product() { - HASH_MAP, const evalue *>::iterator j; + HASH_MAP, const evalue *>::iterator j; for (j = cache.begin(); j != cache.end(); ++j) if ((*j).second) evalue_free(const_cast((*j).second)); @@ -326,7 +326,7 @@ const evalue *todd_product::get_coefficient(const vector &powers) { evalue *c = NULL; - HASH_MAP, const evalue *>::iterator i; + HASH_MAP, const evalue *>::iterator i; i = cache.find(powers); if (i != cache.end()) return (*i).second; @@ -409,7 +409,7 @@ struct reciprocal { /* The powers of each variable that still need to be selected */ vector left; - HASH_MAP, const evalue *> cache; + HASH_MAP, const evalue *> cache; reciprocal(vertex_cone &vc); void start(vector &power); @@ -418,7 +418,7 @@ struct reciprocal { evalue *add(evalue *sum); const evalue *get_coefficient(); ~reciprocal() { - HASH_MAP, const evalue *>::iterator j; + HASH_MAP, const evalue *>::iterator j; for (j = cache.begin(); j != cache.end(); ++j) if ((*j).second) evalue_free(const_cast((*j).second)); @@ -579,7 +579,7 @@ const evalue *reciprocal::get_coefficient() for (int j = 0; j < vc.dim; ++j) left[j] = base_power[j] - power[j]; - HASH_MAP, const evalue *>::iterator i; + HASH_MAP, const evalue *>::iterator i; i = cache.find(left); if (i != cache.end()) return (*i).second; -- 2.11.4.GIT