| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| |
| |
| |
|
|
| #include "alignedspeech.h" |
| #include "alignedsegmentiterator.h" |
|
|
| AlignedSpeech::AlignedSpeech(Speech* speech) |
| { |
| m_segments = map <Segment*, AlignedSegment* >(); |
| m_speech = speech; |
| } |
|
|
| AlignedSpeech::~AlignedSpeech() |
| { |
| map< Segment*, AlignedSegment* >::iterator i, ei; |
| |
| i = m_segments.begin(); |
| ei = m_segments.end(); |
| |
| while(i != ei) |
| { |
| AlignedSegment* ptr_elt = i->second; |
| |
| if(ptr_elt) |
| delete ptr_elt; |
| |
| ++i; |
| } |
| |
| m_segments.clear(); |
|
|
| } |
|
|
| AlignedSegment* AlignedSpeech::GetOrCreateAlignedSegmentFor(Segment* segment, const bool& doCreate) |
| { |
| |
| if(segment == NULL || m_speech != segment->GetParentSpeech()) |
| { |
| return NULL; |
| } |
| |
| AlignedSegment* result = m_segments[segment]; |
| |
| if(result == NULL && doCreate) |
| { |
| result = new AlignedSegment(segment); |
| m_segments[segment] = result; |
| } |
| |
| return result; |
| } |
|
|
| AlignedSegmentIterator* AlignedSpeech::AlignedSegments() |
| { |
| return new AlignedSegmentIterator(this); |
| } |
|
|
| string AlignedSpeech::ToString() |
| { |
| AlignedSegmentIterator* alSegments = AlignedSegments(); |
| AlignedSegment* alSeg; |
| string result = "<AlignedSpeech>\n"; |
| |
| while(alSegments->Current(&alSeg)) |
| { |
| result += alSeg->ToString() + "\n"; |
| } |
| |
| result += "</AlignedSpeech>"; |
| |
| delete alSegments; |
| |
| return result; |
| } |
|
|