[mathicgb] 316/393: Moved NonCopyable to its own file. Made KoszulQueue movable but non-copyable and removed use of FreeModuleOrder from KoszulQueue and SigSPairs.

Doug Torrance dtorrance-guest at moszumanska.debian.org
Fri Apr 3 15:59:28 UTC 2015


This is an automated email from the git hooks/post-receive script.

dtorrance-guest pushed a commit to branch upstream
in repository mathicgb.

commit 6739198df0885068a7157d00bd0355a4a7a6b0f2
Author: Bjarke Hammersholt Roune <bjarkehr.code at gmail.com>
Date:   Sat May 11 13:41:41 2013 +0200

    Moved NonCopyable to its own file. Made KoszulQueue movable but non-copyable and removed use of FreeModuleOrder from KoszulQueue and SigSPairs.
---
 src/mathicgb/KoszulQueue.hpp | 51 ++++++++++++++++++++++----------------------
 1 file changed, 25 insertions(+), 26 deletions(-)

diff --git a/src/mathicgb/KoszulQueue.hpp b/src/mathicgb/KoszulQueue.hpp
index 57106e7..bc98602 100755
--- a/src/mathicgb/KoszulQueue.hpp
+++ b/src/mathicgb/KoszulQueue.hpp
@@ -7,63 +7,62 @@
 
 class KoszulQueue : public NonCopyable<KoszulQueue> {
 public:
-  KoszulQueue(const PolyRing& ring): mQueue(Configuration(ring)) {}
+  typedef PolyRing::Monoid Monoid;
+  typedef Monoid::Mono Mono;
+  typedef Monoid::ConstMonoRef ConstMonoRef;
+
+  KoszulQueue(const Monoid& monoid): mQueue(Configuration(monoid)) {}
   KoszulQueue(KoszulQueue&& kq): mQueue(std::move(kq.mQueue)) {}
 
-  const_monomial top() const {
+  ConstMonoRef top() const {
     MATHICGB_ASSERT(!empty());
     return mQueue.top();
   }
 
-  monomial popRelease() {
-    MATHICGB_ASSERT(!empty());
-    return mQueue.pop();
-  }
-
   void pop() {
     MATHICGB_ASSERT(!empty());
-    auto toFree = popRelease().unsafeGetRepresentation();
-    mQueue.getConfiguration().ring().freeMonomial(toFree);
+    monoid().freeRaw(mQueue.pop());
   }
 
-  void push(monomial sig) {mQueue.push(sig);}
+  void push(ConstMonoRef sig) {
+    auto m = monoid().alloc();
+    monoid().copy(sig, m);
+    mQueue.push(*m.release());
+  }
   bool empty() const {return mQueue.empty();}
   size_t size() const {return mQueue.size();}
 
   size_t getMemoryUse() const {return mQueue.getMemoryUse();}
 
-private:
-  KoszulQueue(const KoszulQueue&); // unavailable
-  
+  const Monoid& monoid() const {return mQueue.getConfiguration().monoid();}
 
-  class Configuration
-  {
+private:
+  class Configuration {
   public:
-    typedef monomial Entry;
-
-    Configuration(const PolyRing& ring): mRing(ring) {}
-
-    const PolyRing& ring() const {return mRing;}
+    typedef Monoid::MonoRef Entry;
 
-    typedef int CompareResult; /* LT, EQ, GT */
+    Configuration(const Monoid& monoid): mMonoid(monoid) {}
 
+    typedef Monoid::CompareResult CompareResult;
     CompareResult compare(const Entry& a, const Entry& b) const {
       return ring().monoid().compare(a, b);
     }
-
-    bool cmpLessThan(CompareResult r) const {return r == GT;}
+    bool cmpLessThan(CompareResult r) const {return r == Monoid::GreaterThan;}
 
     static const bool fastIndex = false;
     static const bool supportDeduplication = true;
-    bool cmpEqual(CompareResult r) const {return r == EQ;}
+    bool cmpEqual(CompareResult r) const {return r == Monoid::EqualTo;}
 
     Entry deduplicate(Entry a, Entry b)
     {
-      ring().freeMonomial(b.unsafeGetRepresentation());
+      monoid().freeRaw(b);
       return a;
     }
+
+    const Monoid& monoid() const {return mMonoid;}
+
   private:
-    const PolyRing& mRing;
+    const Monoid& mMonoid;
   };
 
   mic::Heap<Configuration> mQueue;

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/mathicgb.git



More information about the debian-science-commits mailing list