use mempool for vector

This commit is contained in:
Hieu Hoang 2016-03-30 12:20:20 +01:00
parent 637def281c
commit d4dd0c0a28
6 changed files with 23 additions and 10 deletions

View File

@ -11,9 +11,12 @@
namespace Moses2 {
HReorderingBackwardState::HReorderingBackwardState(const LRModel &config,
HReorderingBackwardState::HReorderingBackwardState(
MemPool &pool,
const LRModel &config,
size_t offset)
:LRState(config, LRModel::Backward, offset)
,reoStack(pool)
{
// TODO Auto-generated constructor stub

View File

@ -16,7 +16,9 @@ private:
ReorderingStack reoStack;
public:
HReorderingBackwardState(const LRModel &config,
HReorderingBackwardState(
MemPool &pool,
const LRModel &config,
size_t offset);
virtual void Init(const LRState *prev,

View File

@ -171,7 +171,7 @@ LRState *LRModel::CreateLRState(MemPool &pool) const
//cerr << "bwd=" << bwd << bwd->ToString() << endl;
}
else {
bwd = new (pool.Allocate<HReorderingBackwardState>()) HReorderingBackwardState(*this, offset);
bwd = new (pool.Allocate<HReorderingBackwardState>()) HReorderingBackwardState(pool, *this, offset);
}
offset += m_collapseScores ? 1 : GetNumberOfTypes();
if (m_direction == Backward) return bwd; // else fall through

View File

@ -4,11 +4,18 @@
** Date: Jan 26, 2010
*/
#include "ReorderingStack.h"
#include <vector>
#include "ReorderingStack.h"
#include "../../MemPool.h"
namespace Moses2
{
ReorderingStack::ReorderingStack(MemPool &pool)
:m_stack(pool)
{
}
void ReorderingStack::Init()
{
m_stack.clear();

View File

@ -13,19 +13,20 @@
//#include "TypeDef.h"
//#include "Util.h"
#include "../../legacy/Range.h"
#include "../../Vector.h"
namespace Moses2
{
class MemPool;
/** @todo what is this?
*/
class ReorderingStack
{
private:
std::vector<Range> m_stack;
Vector<Range> m_stack;
public:
ReorderingStack(MemPool &pool);
size_t hash() const;
bool operator==(const ReorderingStack& other) const;

View File

@ -14,13 +14,13 @@ namespace Moses2
{
template <typename T>
class Vector : public std::vector<T>
class Vector : public std::vector<T, MemPoolAllocator<T> >
{
typedef std::vector<T> Parent;
typedef std::vector<T, MemPoolAllocator<T> > Parent;
public:
Vector(MemPool &pool, size_t size = 0, const T &val = T())
:Parent(size, val)
:Parent(size, val, MemPoolAllocator<T>(pool) )
{
}