| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| #include "alignedsegment.h" |
|
|
| AlignedSegment::AlignedSegment(Segment* referenceSegment) |
| { |
| m_tokenAlignments = vector< TokenAlignment* >(); |
| m_refToAlignments = map<Token*, TokenAlignment*>(); |
| m_referenceSegment = referenceSegment; |
| } |
|
|
| AlignedSegment::~AlignedSegment() |
| { |
| for(size_t i=0; i< m_tokenAlignments.size(); ++i) |
| { |
| TokenAlignment* ptr_elt = m_tokenAlignments[i]; |
| |
| if(ptr_elt) |
| delete ptr_elt; |
| } |
| |
| m_tokenAlignments.clear(); |
| m_refToAlignments.clear(); |
| } |
|
|
| string AlignedSegment::ToString() |
| { |
| size_t nbTokAli = GetTokenAlignmentCount(); |
| string result = "<AlignedSegment>\n\tref:\n\t" + m_referenceSegment->ToString() + "\n"; |
| |
| for(size_t i = 0; i < nbTokAli; ++i) |
| { |
| result += GetTokenAlignmentAt(i)->ToString() + "\n"; |
| } |
| |
| result += "</AlignedSegment>"; |
| return result; |
| } |
|
|
| TokenAlignment* AlignedSegment::GetTokenAlignmentFor(Token* reference, const bool& create) |
| { |
| TokenAlignment* ta = m_refToAlignments[reference]; |
| |
| |
| if(!create || ta != NULL) |
| { |
| return ta; |
| } |
| |
| ta = new TokenAlignment(reference); |
| m_tokenAlignments.push_back(ta); |
| |
| |
| if(reference != NULL) |
| { |
| m_refToAlignments[reference] = ta; |
| } |
| |
| return ta; |
| } |
|
|
| int AlignedSegment::AddTokenAlignment(Token* reference, const string& hypKey, Token* hypothesis) |
| { |
| if(reference != NULL && reference->GetParentSegment() != m_referenceSegment) |
| { |
| return -1; |
| } |
| |
| return GetTokenAlignmentFor(reference, true)->AddAlignmentFor(hypKey, hypothesis); |
| } |
|
|