--- a/srsf/ttscommon/src/ttscommonbody.cpp Thu Aug 19 09:56:14 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,424 +0,0 @@
-/*
-* Copyright (c) 2004-2005 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Implementation of TtsCommon
-*
-*/
-
-
-// INCLUDE FILES
-#include "srsfbldvariant.hrh"
-#include "ttscommonbody.h"
-#include "nssttscommon.h"
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// CTtsParsedTextBody::CTtsParsedTextBody
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// -----------------------------------------------------------------------------
-//
-CTtsParsedTextBody::CTtsParsedTextBody() :
- iText( NULL ),
- iPhonemeSequence( NULL ),
- iPhonemeNotation( NULL )
- {
- // nothing
- }
-
-// -----------------------------------------------------------------------------
-// CTtsParsedTextBody::ConstructL
-// Symbian 2nd phase constructor can leave.
-// -----------------------------------------------------------------------------
-//
-void CTtsParsedTextBody::ConstructL(
- const TDesC& aText,
- const TDesC8& aPhonemeSequence,
- const TDesC& aPhonemeNotation )
- {
-
- if ( aText != KNullDesC )
- {
- // copy text
- iText = HBufC::NewL( aText.Length() );
- TPtr tempPtr( iText->Des() );
- tempPtr = aText;
- }
-
- if ( aPhonemeSequence != KNullDesC8 )
- {
- // copy phoneme sequence
- iPhonemeSequence = HBufC8::NewL( aPhonemeSequence.Length() );
- TPtr8 tempPtr8( iPhonemeSequence->Des() );
- tempPtr8 = aPhonemeSequence;
- }
-
- if ( aPhonemeNotation != KNullDesC )
- {
- // copy phoneme notation
- iPhonemeNotation = HBufC::NewL( aPhonemeNotation.Length() );
- TPtr tempPtr( iPhonemeNotation->Des() );
- tempPtr = aPhonemeNotation;
- }
- }
-
-// -----------------------------------------------------------------------------
-// CTtsParsedTextBody::NewL
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-CTtsParsedTextBody* CTtsParsedTextBody::NewL(
- const TDesC& aText,
- const TDesC8& aPhonemeSequence,
- const TDesC& aPhonemeNotation )
- {
- CTtsParsedTextBody* self = new( ELeave ) CTtsParsedTextBody;
-
- CleanupStack::PushL( self );
- self->ConstructL( aText,
- aPhonemeSequence,
- aPhonemeNotation );
- CleanupStack::Pop();
-
- return self;
- }
-
-
-// Destructor
-CTtsParsedTextBody::~CTtsParsedTextBody()
- {
- delete iText;
- delete iPhonemeSequence;
- delete iPhonemeNotation;
- iSegmentArray.Reset();
- }
-
-
-// -----------------------------------------------------------------------------
-// CTtsParsedTextBody::AddSegmentL
-// Add new segment to array
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CTtsParsedTextBody::AddSegmentL(
- const TTtsSegment& aSegment,
- TInt aIndex )
- {
- if ( aIndex < 0 )
- {
- User::Leave( KErrArgument ); // The index is negative
- }
- else if ( aIndex >= iSegmentArray.Count() )
- {
- // added to end
- User::LeaveIfError( iSegmentArray.Append( aSegment ) );
- }
- else
- {
- // added into middle
- User::LeaveIfError( iSegmentArray.Insert( aSegment, aIndex ) );
- }
- }
-
-// -----------------------------------------------------------------------------
-// CTtsParsedTextBody::DeleteSegment
-// Delete segment
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CTtsParsedTextBody::DeleteSegmentL(
- TInt aIndex )
- {
- if ( aIndex < 0 || aIndex >= iSegmentArray.Count() )
- {
- User::Leave( KErrArgument ); // The index is out of bounds.
- }
-
- iSegmentArray.Remove( aIndex );
- }
-
-// -----------------------------------------------------------------------------
-// CTtsParsedTextBody::IsValid
-// Checks that segments do not overlap or pointer outside.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-TInt CTtsParsedTextBody::IsValid() const
- {
- TInt index( 0 );
-
- if ( iPhonemeSequence == NULL &&
- iText == NULL &&
- iSegmentArray.Count() > 0 )
- {
- // no phoneme sequence and no text but segments still exist
- return EFalse;
- }
-
- // check phoneme sequence part
- if ( iPhonemeSequence )
- {
- const TUint8* beginPhSeqPtr = iPhonemeSequence->Ptr();
- const TUint8* endPhSeqPtr = iPhonemeSequence->Ptr()
- + iPhonemeSequence->Length() - 1;
-
- for ( index = 0; index < iSegmentArray.Count(); index++ )
- {
- // check that pointers do not point outside
- const TTtsSegment& segment = iSegmentArray[index];
- const TDesC8& phSeq = segment.PhonemeSequencePtr();
- if ( phSeq != KNullDesC8 )
- {
- const TUint8* phSeqPtr = phSeq.Ptr();
- if ( phSeqPtr < beginPhSeqPtr ||
- phSeqPtr > endPhSeqPtr ||
- phSeqPtr + phSeq.Length() - 1 > endPhSeqPtr )
- {
- return EFalse;
- }
-
-
- // check order and overlapping
- if ( index > 0 )
- {
- const TDesC8& prevPhSeq
- = iSegmentArray[index - 1].PhonemeSequencePtr();
- if ( prevPhSeq == KNullDesC8 )
- {
- // all pointer must point to either null or valid data
- return EFalse;
- }
-
- const TUint8* prevEndPhSeqPtr
- = prevPhSeq.Ptr() + prevPhSeq.Length() - 1;
- if ( prevEndPhSeqPtr >= phSeqPtr )
- {
- return EFalse;
- }
- }
- }
- }
- }
-
- // check phoneme sequence part
- if ( iText )
- {
- const TUint16* beginTextPtr = iText->Ptr();
- const TUint16* endTextPtr = iText->Ptr() + iText->Length() - 1;
-
- for ( index = 0; index < iSegmentArray.Count(); index++ )
- {
- // check that pointers do not point outside
- const TTtsSegment& segment = iSegmentArray[index];
- const TDesC& text = segment.TextPtr();
- if ( text != KNullDesC )
- {
- const TUint16* textPtr = text.Ptr();
- if ( textPtr < beginTextPtr ||
- textPtr > endTextPtr ||
- textPtr + text.Length() - 1 > endTextPtr )
- {
- return EFalse;
- }
-
- // check order and overlapping
- if ( index > 0 )
- {
- const TDesC& prevText = iSegmentArray[index - 1].TextPtr();
- if ( prevText == KNullDesC )
- {
- // all pointer must point to either null or valid data
- return EFalse;
- }
- const TUint16* prevEndTextPtr
- = prevText.Ptr() + prevText.Length() - 1;
- if ( prevEndTextPtr >= textPtr )
- {
- return EFalse;
- }
- }
- }
- }
- }
-
- // all checks passed
- return ETrue;
- }
-
-// -----------------------------------------------------------------------------
-// CTtsParsedTextBody::NumberOfSegments
-// Return number of segments
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-TInt CTtsParsedTextBody::NumberOfSegments() const
- {
- return iSegmentArray.Count();
- }
-
-// -----------------------------------------------------------------------------
-// CTtsParsedTextBody::PhonemeNotation
-// Returns phoneme notation
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-const TDesC& CTtsParsedTextBody::PhonemeNotation() const
- {
- if ( iPhonemeNotation )
- {
- // Phoneme sequence has been set
- return *iPhonemeNotation;
- }
- return KNullDesC;
- }
-
-// -----------------------------------------------------------------------------
-// CTtsParsedTextBody::PhonemeSequence
-// Returns phoneme sequence
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-const TDesC8& CTtsParsedTextBody::PhonemeSequence() const
- {
- if ( iPhonemeSequence )
- {
- // Phoneme sequence has been set
- return *iPhonemeSequence;
- }
- return KNullDesC8;
- }
-
-// -----------------------------------------------------------------------------
-// CTtsParsedTextBody::SegmentL
-// Returns segment of given index
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-const TTtsSegment& CTtsParsedTextBody::SegmentL(
- TInt aIndex ) const
- {
- if ( aIndex < 0 || aIndex >= iSegmentArray.Count() )
- {
- User::Leave( KErrArgument );
- }
- return iSegmentArray[aIndex];
- }
-
-// -----------------------------------------------------------------------------
-// CTtsParsedTextBody::SetPhonemeNotationL
-// Sets phoneme notation
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CTtsParsedTextBody::SetPhonemeNotationL(
- const TDesC& aPhonemeNotation )
- {
- if ( !iPhonemeNotation )
- {
- // copy phoneme notation
- iPhonemeNotation = HBufC::NewL( aPhonemeNotation.Length() );
- TPtr tempPtr( iPhonemeNotation->Des() );
- tempPtr = aPhonemeNotation;
- }
- else
- {
- TPtr bufferPtr( iPhonemeNotation->Des() );
- if ( aPhonemeNotation.Length() > bufferPtr.MaxLength() )
- {
- // new buffer does not fit into old one
- iPhonemeNotation->ReAllocL( aPhonemeNotation.Length() );
- bufferPtr.Set( iPhonemeNotation->Des() );
- }
- bufferPtr = aPhonemeNotation;
- }
- }
-
-// -----------------------------------------------------------------------------
-// CTtsParsedTextBody::SetPhonemeSequenceL
-// Sets phoneme sequence
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CTtsParsedTextBody::SetPhonemeSequenceL(
- const TDesC8& aPhonemeSequence )
- {
-
- if ( !iPhonemeSequence )
- {
- // create new phoneme sequence
- iPhonemeSequence = HBufC8::NewL( aPhonemeSequence.Length() );
- TPtr8 tempPtr8( iPhonemeSequence->Des() );
- tempPtr8 = aPhonemeSequence;
- }
- else
- {
- TPtr8 bufferPtr( iPhonemeSequence->Des() );
- if ( aPhonemeSequence.Length() > bufferPtr.MaxLength() )
- {
- // new buffer does not fit into old one
- iPhonemeSequence = iPhonemeSequence->ReAllocL( aPhonemeSequence.Length() );
- bufferPtr.Set( iPhonemeSequence->Des() );
- }
- bufferPtr = aPhonemeSequence;
- }
-
- }
-
-// -----------------------------------------------------------------------------
-// CTtsParsedTextBody::SetTextL
-// Sets text
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CTtsParsedTextBody::SetTextL(
- const TDesC& aText )
- {
- if ( !iText )
- {
- // create new text
- iText = HBufC::NewL( aText.Length() );
- TPtr tempPtr( iText->Des() );
- tempPtr = aText;
- }
- else
- {
- TPtr bufferPtr( iText->Des() );
- if ( aText.Length() > bufferPtr.MaxLength() )
- {
- // new buffer does not fit into old one
- iText = iText->ReAllocL( aText.Length() );
- bufferPtr.Set( iText->Des() );
- }
- bufferPtr = aText;
- }
- }
-
-
-// -----------------------------------------------------------------------------
-// CTtsParsedTextBody::Text
-// Returns text
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-const TDesC& CTtsParsedTextBody::Text() const
- {
- if ( iText )
- {
- // text has been set
- return *iText;
- }
- return KNullDesC;
- }
-
-// End of File