[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