Added GetTtask() and HasTtaskSPtr() to Phrase API; non-TargetPhrases never have a ttask associated with them, but we need to be able to check.

This commit is contained in:
Ulrich Germann 2015-10-23 21:49:09 +01:00
parent b5c4ab32b4
commit 8ace1398eb
3 changed files with 16 additions and 11 deletions

View File

@ -52,6 +52,19 @@ protected:
std::vector<Word> m_words;
public:
/// return shared pointer to ttask
// only TargetPhrases have non-NULL ttaskptrs!
virtual ttasksptr GetTtask() const {
return ttasksptr();
}
/// check if this phrase belongs to a valid ttask
// only TargetPhrases have non-NULL ttaskptrs!
virtual bool HasTtaskSPtr() const {
return false;
}
/** No longer does anything as not using mem pool for Phrase class anymore */
static void InitializeMemPool();
static void FinalizeMemPool();

View File

@ -42,7 +42,6 @@ namespace Moses
{
TargetPhrase::TargetPhrase( std::string out_string, const PhraseDictionary *pt)
:Phrase(0)
, m_ttask_flag(false)
, m_fullScore(0.0)
, m_futureScore(0.0)
, m_alignTerm(&AlignmentInfoCollection::Instance().GetEmptyAlignmentInfo())
@ -62,7 +61,6 @@ TargetPhrase::TargetPhrase( std::string out_string, const PhraseDictionary *pt)
TargetPhrase::TargetPhrase(ttasksptr& ttask, std::string out_string, const PhraseDictionary *pt)
:Phrase(0)
, m_ttask(ttask)
, m_ttask_flag(true)
, m_fullScore(0.0)
, m_futureScore(0.0)
, m_alignTerm(&AlignmentInfoCollection::Instance().GetEmptyAlignmentInfo())
@ -83,7 +81,6 @@ TargetPhrase::TargetPhrase(ttasksptr& ttask, std::string out_string, const Phras
TargetPhrase::TargetPhrase(ttasksptr& ttask, const PhraseDictionary *pt)
:Phrase()
, m_ttask(ttask)
, m_ttask_flag(true)
, m_fullScore(0.0)
, m_futureScore(0.0)
, m_alignTerm(&AlignmentInfoCollection::Instance().GetEmptyAlignmentInfo())
@ -103,7 +100,6 @@ TargetPhrase::TargetPhrase(ttasksptr& ttask, const Phrase &phrase, const PhraseD
, m_lhsTarget(NULL)
, m_ruleSource(NULL)
, m_ttask(ttask)
, m_ttask_flag(true)
, m_container(pt)
{
}
@ -116,7 +112,6 @@ TargetPhrase::TargetPhrase(const PhraseDictionary *pt)
, m_alignNonTerm(&AlignmentInfoCollection::Instance().GetEmptyAlignmentInfo())
, m_lhsTarget(NULL)
, m_ruleSource(NULL)
, m_ttask_flag(false)
, m_container(pt)
{
}
@ -129,7 +124,6 @@ TargetPhrase::TargetPhrase(const Phrase &phrase, const PhraseDictionary *pt)
, m_alignNonTerm(&AlignmentInfoCollection::Instance().GetEmptyAlignmentInfo())
, m_lhsTarget(NULL)
, m_ruleSource(NULL)
, m_ttask_flag(false)
, m_container(pt)
{
}
@ -144,7 +138,6 @@ TargetPhrase::TargetPhrase(const TargetPhrase &copy)
, m_alignNonTerm(copy.m_alignNonTerm)
, m_properties(copy.m_properties)
, m_ttask(copy.m_ttask)
, m_ttask_flag(copy.m_ttask_flag)
, m_container(copy.m_container)
{
if (copy.m_lhsTarget) {
@ -179,10 +172,10 @@ void TargetPhrase::WriteToRulePB(hgmert::Rule* pb) const
bool TargetPhrase::HasTtaskSPtr() const
{
return m_ttask_flag;
return !m_ttask.expired();
}
const ttasksptr TargetPhrase::GetTtask() const
ttasksptr TargetPhrase::GetTtask() const
{
return m_ttask.lock();
}

View File

@ -62,7 +62,6 @@ public:
private:
ScoreCache_t m_cached_scores;
ttaskwptr m_ttask;
bool m_ttask_flag;
private:
friend std::ostream& operator<<(std::ostream&, const TargetPhrase&);
@ -92,7 +91,7 @@ public:
TargetPhrase(ttasksptr &ttask, const PhraseDictionary *pt = NULL);
TargetPhrase(ttasksptr &ttask, std::string out_string, const PhraseDictionary *pt = NULL);
explicit TargetPhrase(ttasksptr &ttask, const Phrase &targetPhrase, const PhraseDictionary *pt);
const ttasksptr GetTtask() const;
ttasksptr GetTtask() const;
bool HasTtaskSPtr() const;
~TargetPhrase();