Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/moses-smt/mosesdecoder.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'moses2/HypothesisColl.h')
-rw-r--r--moses2/HypothesisColl.h74
1 files changed, 74 insertions, 0 deletions
diff --git a/moses2/HypothesisColl.h b/moses2/HypothesisColl.h
new file mode 100644
index 000000000..63a8551ba
--- /dev/null
+++ b/moses2/HypothesisColl.h
@@ -0,0 +1,74 @@
+/*
+ * HypothesisColl.h
+ *
+ * Created on: 26 Feb 2016
+ * Author: hieu
+ */
+#pragma once
+#include <boost/unordered_set.hpp>
+#include "HypothesisBase.h"
+#include "MemPoolAllocator.h"
+#include "Recycler.h"
+#include "Array.h"
+#include "legacy/Util2.h"
+
+namespace Moses2
+{
+
+class ManagerBase;
+class ArcLists;
+
+typedef Array<const HypothesisBase*> Hypotheses;
+
+class HypothesisColl
+{
+public:
+ HypothesisColl(const ManagerBase &mgr);
+
+ void Add(const ManagerBase &mgr,
+ HypothesisBase *hypo,
+ Recycler<HypothesisBase*> &hypoRecycle,
+ ArcLists &arcLists);
+
+ size_t GetSize() const {
+ return m_coll.size();
+ }
+
+ void Clear();
+
+ const Hypotheses &GetSortedAndPrunedHypos(
+ const ManagerBase &mgr,
+ ArcLists &arcLists) const;
+
+ const HypothesisBase *GetBestHypo() const;
+
+ template<typename T>
+ const T *GetBestHypo() const {
+ const HypothesisBase *hypo = GetBestHypo();
+ return hypo ? &hypo->Cast<T>() : NULL;
+ }
+
+ void Delete(const HypothesisBase *hypo);
+
+ std::string Debug(const System &system) const;
+
+protected:
+ typedef boost::unordered_set<const HypothesisBase*,
+ UnorderedComparer<HypothesisBase>, UnorderedComparer<HypothesisBase>,
+ MemPoolAllocator<const HypothesisBase*> > _HCType;
+
+ _HCType m_coll;
+ mutable Hypotheses *m_sortedHypos;
+
+ SCORE m_bestScore;
+ SCORE m_worstScore;
+
+ StackAdd Add(const HypothesisBase *hypo);
+
+ void PruneHypos(const ManagerBase &mgr, ArcLists &arcLists);
+ void SortHypos(const ManagerBase &mgr, const HypothesisBase **sortedHypos) const;
+
+};
+
+} /* namespace Moses2 */
+