simplify phrase class hierarchy

This commit is contained in:
Hieu Hoang 2016-04-27 11:53:51 +04:00
parent 285e4fb188
commit c860a29702
14 changed files with 26 additions and 104 deletions

View File

@ -13,7 +13,7 @@
#include "BidirectionalReorderingState.h"
#include "../../TranslationModel/PhraseTable.h"
#include "../../System.h"
#include "../../PhraseImpl.h"
#include "../../PhraseBased/PhraseImpl.h"
#include "../../PhraseBased/Manager.h"
#include "../../PhraseBased/Hypothesis.h"
#include "../../legacy/InputFileStream.h"

View File

@ -13,7 +13,6 @@ alias deps : ../../..//z ../../..//boost_iostreams ../../..//boost_filesystem .
ManagerBase.cpp
MemPool.cpp
Phrase.cpp
PhraseImpl.cpp
Sentence.cpp
Scores.cpp
SubPhrase.cpp
@ -71,7 +70,8 @@ alias deps : ../../..//z ../../..//boost_iostreams ../../..//boost_filesystem .
PhraseBased/InputPath.cpp
PhraseBased/InputPaths.cpp
PhraseBased/Manager.cpp
PhraseBased/TargetPhrases.cpp
PhraseBased/PhraseImpl.cpp
PhraseBased/TargetPhrases.cpp
PhraseBased/Search.cpp
PhraseBased/TargetPhraseImpl.cpp
PhraseBased/TrellisPath.cpp

View File

@ -1,11 +1,11 @@
#pragma once
#include "PhraseImplTemplate.h"
#include "SubPhrase.h"
#include "../PhraseImplTemplate.h"
#include "../SubPhrase.h"
namespace Moses2
{
class PhraseImpl: public Phrase<Word>, public PhraseImplTemplate<Word>
class PhraseImpl: public PhraseImplTemplate<Word>
{
public:
static PhraseImpl *CreateFromString(MemPool &pool, FactorCollection &vocab,
@ -26,27 +26,6 @@ public:
{
}
const Word& operator[](size_t pos) const
{
return m_words[pos];
}
Word& operator[](size_t pos)
{
return m_words[pos];
}
size_t GetSize() const
{
return m_size;
}
SubPhrase<Moses2::Word> GetSubPhrase(size_t start, size_t size) const
{
SubPhrase<Moses2::Word> ret(*this, start, size);
return ret;
}
};
}

View File

@ -34,7 +34,7 @@ TargetPhraseImpl *TargetPhraseImpl::CreateFromString(MemPool &pool,
TargetPhraseImpl::TargetPhraseImpl(MemPool &pool, const PhraseTable &pt,
const System &system, size_t size) :
TargetPhrase(pool, pt, system), PhraseImplTemplate<Word>(pool, size)
TargetPhrase(pool, pt, system, size)
{
m_scores = new (pool.Allocate<Scores>()) Scores(system, pool,
system.featureFunctions.GetNumScores());

View File

@ -23,7 +23,7 @@ class Manager;
class System;
class PhraseTable;
class TargetPhraseImpl: public TargetPhrase<Moses2::Word>, public PhraseImplTemplate<Word>
class TargetPhraseImpl: public TargetPhrase<Moses2::Word>
{
friend std::ostream& operator<<(std::ostream &, const TargetPhraseImpl &);
public:
@ -36,27 +36,6 @@ public:
virtual ~TargetPhraseImpl();
const Word& operator[](size_t pos) const
{
return m_words[pos];
}
Word& operator[](size_t pos)
{
return m_words[pos];
}
size_t GetSize() const
{
return m_size;
}
SubPhrase<Moses2::Word> GetSubPhrase(size_t start, size_t end) const
{
SubPhrase<Moses2::Word> ret(*this, start, end);
return ret;
}
//mutable void *chartState;
protected:

View File

@ -18,7 +18,7 @@ template<typename WORD>
class SubPhrase;
template<typename WORD>
class PhraseImplTemplate
class PhraseImplTemplate : public Phrase<WORD>
{
public:
PhraseImplTemplate(MemPool &pool, size_t size) :
@ -51,6 +51,12 @@ public:
const WORD& operator[](size_t pos) const
{ return m_words[pos]; }
SubPhrase<WORD> GetSubPhrase(size_t start, size_t size) const
{
SubPhrase<WORD> ret(*this, start, size);
return ret;
}
protected:
size_t m_size;
WORD *m_words;

View File

@ -8,7 +8,7 @@ namespace Moses2
namespace SCFG
{
class PhraseImpl: public Phrase<SCFG::Word>, public PhraseImplTemplate<SCFG::Word>
class PhraseImpl: public PhraseImplTemplate<SCFG::Word>
{
public:
static PhraseImpl *CreateFromString(MemPool &pool, FactorCollection &vocab,
@ -19,27 +19,6 @@ public:
{
}
const Word& operator[](size_t pos) const
{
return m_words[pos];
}
Word& operator[](size_t pos)
{
return m_words[pos];
}
size_t GetSize() const
{
return m_size;
}
SubPhrase<SCFG::Word> GetSubPhrase(size_t start, size_t size) const
{
SubPhrase<SCFG::Word> ret(*this, start, size);
return ret;
}
};
}

View File

@ -47,8 +47,7 @@ TargetPhraseImpl::TargetPhraseImpl(MemPool &pool,
const PhraseTable &pt,
const System &system,
size_t size)
:TargetPhrase(pool, pt, system)
,PhraseImplTemplate<SCFG::Word>(pool, size)
:TargetPhrase(pool, pt, system, size)
,m_alignTerm(&AlignmentInfoCollection::Instance().GetEmptyAlignmentInfo())
,m_alignNonTerm(&AlignmentInfoCollection::Instance().GetEmptyAlignmentInfo())

View File

@ -27,7 +27,7 @@ class AlignmentInfo;
namespace SCFG
{
class TargetPhraseImpl: public Moses2::TargetPhrase<SCFG::Word>, public PhraseImplTemplate<SCFG::Word>
class TargetPhraseImpl: public Moses2::TargetPhrase<SCFG::Word>
{
friend std::ostream& operator<<(std::ostream &, const SCFG::TargetPhraseImpl &);
public:
@ -43,27 +43,6 @@ public:
virtual ~TargetPhraseImpl();
const Word& operator[](size_t pos) const
{
return m_words[pos];
}
Word& operator[](size_t pos)
{
return m_words[pos];
}
size_t GetSize() const
{
return m_size;
}
SubPhrase<SCFG::Word> GetSubPhrase(size_t start, size_t size) const
{
SubPhrase<SCFG::Word> ret(*this, start, size);
return ret;
}
// ALNREP = alignment representation,
// see AlignmentInfo constructors for supported representations
template<typename ALNREP>

View File

@ -8,7 +8,7 @@
#include <string>
#include "InputType.h"
#include "PhraseImpl.h"
#include "PhraseBased/PhraseImpl.h"
#include "MemPool.h"
#include "legacy/Util2.h"

View File

@ -6,7 +6,7 @@
*/
#pragma once
#include "Phrase.h"
#include "PhraseImplTemplate.h"
#include "System.h"
#include "Scores.h"
@ -14,7 +14,7 @@ namespace Moses2
{
template<typename WORD>
class TargetPhrase: public Phrase<WORD>
class TargetPhrase: public PhraseImplTemplate<WORD>
{
friend std::ostream& operator<<(std::ostream &, const TargetPhrase &);
@ -23,8 +23,9 @@ public:
mutable void **ffData;
SCORE *scoreProperties;
TargetPhrase(MemPool &pool, const PhraseTable &pt, const System &system)
: pt(pt)
TargetPhrase(MemPool &pool, const PhraseTable &pt, const System &system, size_t size)
: PhraseImplTemplate<WORD>(pool, size)
, pt(pt)
, scoreProperties(NULL)
{
m_scores = new (pool.Allocate<Scores>()) Scores(system, pool,

View File

@ -8,7 +8,7 @@
#include <cassert>
#include <boost/foreach.hpp>
#include "PhraseTableMemory.h"
#include "../../PhraseImpl.h"
#include "../../PhraseBased/PhraseImpl.h"
#include "../../Phrase.h"
#include "../../System.h"
#include "../../Scores.h"

View File

@ -8,11 +8,11 @@
#include "ProbingPT.h"
#include "../System.h"
#include "../Scores.h"
#include "../PhraseImpl.h"
#include "../Phrase.h"
#include "../legacy/InputFileStream.h"
#include "../legacy/ProbingPT/probing_hash_utils.hh"
#include "../FF/FeatureFunctions.h"
#include "../PhraseBased/PhraseImpl.h"
#include "../PhraseBased/TargetPhraseImpl.h"
#include "../PhraseBased/Manager.h"
#include "../PhraseBased/TargetPhrases.h"