/* * Stack.h * * Created on: 24 Oct 2015 * Author: hieu */ #pragma once #include #include #include #include "../Hypothesis.h" #include "../../TypeDef.h" #include "../../Vector.h" #include "../../MemPool.h" #include "../../Recycler.h" #include "../../legacy/Util2.h" namespace Moses2 { class Manager; namespace NSCubePruningCardinalStack { typedef Vector Hypotheses; ///////////////////////////////////////////// class Stack { protected: typedef boost::unordered_set, UnorderedComparer > _HCType; public: typedef std::pair HypoCoverage; typedef boost::unordered_map SortedHypos; Stack(const Manager &mgr); virtual ~Stack(); size_t GetHypoSize() const; _HCType &GetColl() { return m_coll; } const _HCType &GetColl() const { return m_coll; } void Add(const Hypothesis *hypo, Recycler &hypoRecycle); std::vector GetBestHypos(size_t num) const; void Clear(); SortedHypos GetSortedAndPruneHypos(const Manager &mgr) const; void SortAndPruneHypos(const Manager &mgr, Hypotheses &hypos) const; protected: const Manager &m_mgr; _HCType m_coll; }; } }