textinput/ptienginev2/src/PtiEngine.cpp
changeset 0 eb1f2e154e89
child 9 e6a39382bb9c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/textinput/ptienginev2/src/PtiEngine.cpp	Tue Feb 02 01:02:04 2010 +0200
@@ -0,0 +1,1288 @@
+/*
+* Copyright (c) 2003-2006 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:   Predective text input engine API implementation
+*
+*/
+
+
+
+#include "PtiEngine.h"
+#include "PtiEngineImpl.h"
+#include "PtiHwrRecognizer.h"
+	
+//
+// CPtiEngine
+//
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::NewL
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CPtiEngine* CPtiEngine::NewL(TBool aUseDefaultUserDictionary)
+	{
+	CPtiEngine *engine = new (ELeave) CPtiEngine();
+	CleanupStack::PushL( engine );
+	engine->ConstructL(aUseDefaultUserDictionary);
+	CleanupStack::Pop(); // engine
+	return engine;
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::NewL
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CPtiEngine* CPtiEngine::NewL(const TDesC& /*aCoreName*/, TBool /*aUseDefaultUserDictionary*/)
+	{
+	// Deprecated.
+	User::Leave(KErrNotSupported);
+	return NULL;
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::NewL
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CPtiEngine* CPtiEngine::NewL(const TUid aCoreUid, TBool aUseDefaultUserDictionary)
+	{
+	CPtiEngine *engine = new (ELeave) CPtiEngine();
+	CleanupStack::PushL( engine );
+	engine->ConstructL(aCoreUid, aUseDefaultUserDictionary);
+	CleanupStack::Pop(); // engine
+	return engine;
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::CPtiEngine
+// 
+// ---------------------------------------------------------------------------
+//
+CPtiEngine::CPtiEngine()
+	{	
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::~CPtiEngine
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CPtiEngine::~CPtiEngine()
+	{	
+	delete iImpl;
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::ConstructL
+// 
+// ---------------------------------------------------------------------------
+//
+void CPtiEngine::ConstructL(TBool aUseDefaultUserDictionary)
+	{
+	iImpl = CPtiEngineImpl::NewL(this);
+	iImpl->InitializeL(aUseDefaultUserDictionary);
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::ConstructL
+// 
+// ---------------------------------------------------------------------------
+//
+void CPtiEngine::ConstructL(const TUid /*aCoreUid*/, TBool aUseDefaultUserDictionary)
+	{
+	iImpl = CPtiEngineImpl::NewL(this);
+	iImpl->InitializeL(aUseDefaultUserDictionary);
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::GetLanguage
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C MPtiLanguage* CPtiEngine::GetLanguage(TInt aCode) const
+	{
+	return iImpl->GetLanguage( aCode );
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::GetAvailableLanguagesL
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CPtiEngine::GetAvailableLanguagesL(CArrayFix<TInt>* aResult)
+	{
+	iImpl->GetAvailableLanguagesL( aResult );
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::CreateUserDictionaryL
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TInt CPtiEngine::CreateUserDictionaryL(TDesC& aFileName, CDesCArrayFlat* aWords, TPtiEngineInputMode aMode) 
+	{
+	return iImpl->CreateUserDictionaryL(aFileName, aWords, aMode);
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::AttachUserDictionaryL
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C MPtiUserDictionary* CPtiEngine::AttachUserDictionaryL(TDesC& aFileName)
+	{
+	return iImpl->AttachUserDictionaryL (aFileName );
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::DetachUserDictionary
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TInt CPtiEngine::DetachUserDictionary(TDesC& aFileName)
+	{
+	return iImpl->DetachUserDictionary( aFileName );
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::DetachUserDictionary
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TInt CPtiEngine::DetachUserDictionary(TInt aId)
+	{
+	return iImpl->DetachUserDictionary( aId );
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::SetCurrentWord
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TInt CPtiEngine::SetCurrentWord(TPtrC aWord)
+	{
+	return iImpl->SetCurrentWord( aWord );
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::ActivateLanguageL
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TInt CPtiEngine::ActivateLanguageL(TInt aEpocLanguageID, TPtiEngineInputMode aMode)
+	{
+	return iImpl->ActivateLanguageL(aEpocLanguageID, aMode);
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::CloseCurrentLanguageL
+// 
+// ---------------------------------------------------------------------------
+//	
+EXPORT_C void CPtiEngine::CloseCurrentLanguageL()
+	{
+	iImpl->CloseCurrentLanguageL();
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::SetInputMode
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TInt CPtiEngine::SetInputMode(TPtiEngineInputMode aMode)
+	{
+	return iImpl->SetInputMode( aMode );
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::GetNextWordCandidateListL
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TInt CPtiEngine::GetNextWordCandidateListL(CDesCArray& aList)
+	{
+	return iImpl->GetNextWordCandidateListL( aList );
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::AppendKeyPress
+// 
+// ---------------------------------------------------------------------------
+//		
+EXPORT_C TPtrC CPtiEngine::AppendKeyPress(TPtiKey aKey)
+	{
+	return iImpl->AppendKeyPress( aKey );
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::DeleteKeyPress
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TPtrC CPtiEngine::DeleteKeyPress()
+	{
+	return iImpl->DeleteKeyPress();
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::GetLocalizedLanguageName
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CPtiEngine::GetLocalizedLanguageName(TInt aLangCode, TDes& aResult)
+	{
+	TRAP_IGNORE(iImpl->GetLocalizedLanguageNameL(aLangCode, aResult));
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::GetCandidateListL
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TInt CPtiEngine::GetCandidateListL(CDesCArray& aList)
+	{
+	return iImpl->GetCandidateListL( aList );
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::FirstCandidate
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TPtrC CPtiEngine::FirstCandidate()
+	{
+	return iImpl->FirstCandidate();
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::NextCandidate
+// 
+// ---------------------------------------------------------------------------
+//	
+EXPORT_C TPtrC CPtiEngine::NextCandidate()
+	{
+	return iImpl->NextCandidate();
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::PreviousCandidate
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TPtrC CPtiEngine::PreviousCandidate()
+	{
+	return iImpl->PreviousCandidate();
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::CoreInfo
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C MPtiCoreInfo* CPtiEngine::CoreInfo(TPtiEngineInputMode aMode) const
+	{
+	return iImpl->CoreInfo( aMode );
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::NumberOfCandidates
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TInt CPtiEngine::NumberOfCandidates()
+	{	
+	return iImpl->NumberOfCandidates();
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::SetReordering
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TInt CPtiEngine::SetReordering(TBool aStatus)
+	{
+	return iImpl->SetReordering( aStatus );
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::ClearCurrentWord
+// 
+// ---------------------------------------------------------------------------
+//			
+EXPORT_C void CPtiEngine::ClearCurrentWord()
+	{
+	iImpl->ClearCurrentWord();
+	}
+	
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::CommitCurrentWord
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TInt CPtiEngine::CommitCurrentWord()
+	{
+	return iImpl->CommitCurrentWord();
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::AddCoreL
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TInt CPtiEngine::AddCoreL(const TDesC& /*aFileName*/, TBool /*aUseDefaultUserDictionary*/)
+	{
+	User::Leave(KErrNotSupported);
+	return KErrNotSupported;
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::AddCoreL
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TInt CPtiEngine::AddCoreL(const TUid aCoreUid, TBool aUseDefaultUserDictionary)
+	{
+	return iImpl->AddCoreL(aCoreUid, aUseDefaultUserDictionary);
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::CharConversion
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TInt CPtiEngine::CharConversion(TPtiCharConversion aType,
+			                         TAny* aInput,
+									 TInt aInputLength,
+									 TAny* aOutput)
+	{
+	return iImpl->CharConversion(aType, aInput, aInputLength, aOutput);
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::AvailableCharConversions
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TUint32 CPtiEngine::AvailableCharConversions() const
+	{
+	return iImpl->AvailableCharConversions();
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::SetExternalKeyMapL
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TInt CPtiEngine::SetExternalKeyMapL(TPtiEngineInputMode aMode,
+			                                 TPtiKey aKey,
+										     TDesC& aKeyMap,
+											 TPtiTextCase aCase)
+	{
+	return iImpl->SetExternalKeyMapL(aMode, aKey, aKeyMap, aCase);
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::GetSpelling
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TInt CPtiEngine::GetSpelling(TUint16 aInput, TDes& aOutput, TPtiSpelling aType)
+	{
+	return iImpl->GetSpelling(aInput, aOutput, aType);
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::CancelTimerActivity
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TInt CPtiEngine::CancelTimerActivity()
+	{
+	return iImpl->CancelTimerActivity();
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::CharacterToKey
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TPtiKey CPtiEngine::CharacterToKey(TUint16 aChar)
+	{
+	return iImpl->CharacterToKey( aChar );
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::AddUserDictionaryEntry
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TInt CPtiEngine::AddUserDictionaryEntry(MPtiUserDictionaryEntry& aEntry)
+	{
+	return iImpl->AddUserDictionaryEntry( aEntry );
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::AddUserDictionaryEntry
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TInt CPtiEngine::AddUserDictionaryEntry(MPtiUserDictionaryEntry& aEntry, TInt aId)
+	{
+	return iImpl->AddUserDictionaryEntry(aEntry, aId);
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::RemoveEntryFromUserDictionary
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TInt CPtiEngine::RemoveEntryFromUserDictionary(MPtiUserDictionaryEntry& aEntry)
+	{
+	return iImpl->RemoveEntryFromUserDictionary( aEntry );
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::RemoveEntryFromUserDictionary
+// 
+// ---------------------------------------------------------------------------
+//	
+EXPORT_C TInt CPtiEngine::RemoveEntryFromUserDictionary(MPtiUserDictionaryEntry& aEntry, TInt aId)
+	{
+	return iImpl->RemoveEntryFromUserDictionary(aEntry, aId);
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::NumberOfEntriesInUserDictionary
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TInt CPtiEngine::NumberOfEntriesInUserDictionary()
+	{
+	return iImpl->NumberOfEntriesInUserDictionary();
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::HandleCommandL
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TInt CPtiEngine::HandleCommandL(TPtiEngineCommand aCommand, TAny* aParams)
+	{
+	return iImpl->HandleCommandL(aCommand, aParams);
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::CandidatePage
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TPtrC CPtiEngine::CandidatePage()
+	{
+	return iImpl->CandidatePage();
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::NextCandidatePage
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TBool CPtiEngine::NextCandidatePage()
+	{
+	return iImpl->NextCandidatePage();
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::PreviousCandidatePage
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TBool CPtiEngine::PreviousCandidatePage()
+	{
+	return iImpl->PreviousCandidatePage();
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::MoreCandidatePages
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TBool CPtiEngine::MoreCandidatePages()
+	{
+	return iImpl->MoreCandidatePages();
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::SetCandidatePageLength
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CPtiEngine::SetCandidatePageLength(TInt aLength)
+	{
+	iImpl->SetCandidatePageLength( aLength );
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::CompositionData
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C MPtiEngineCompositionDataInterface* CPtiEngine::CompositionData()
+	{
+	return iImpl->CompositionData();
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::DefaultUserDictionary
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C MPtiUserDictionary* CPtiEngine::DefaultUserDictionary(TPtiEngineInputMode aMode)
+	{	
+	return iImpl->DefaultUserDictionary( aMode );
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::GetUserDictionaryEntry
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TInt CPtiEngine::GetUserDictionaryEntry(TInt aIndex, MPtiUserDictionaryEntry& aResult)
+	{
+	return iImpl->GetUserDictionaryEntry(aIndex, aResult);
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::GetPhoneticSpelling
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TPtrC CPtiEngine::GetPhoneticSpelling(TInt aIndex) const 
+	{
+	return iImpl->GetPhoneticSpelling( aIndex );
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::PhoneticSpellingCount
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TInt CPtiEngine::PhoneticSpellingCount() const	
+	{
+	return iImpl->PhoneticSpellingCount();
+	}		
+	
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::SelectPhoneticSpelling
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TBool CPtiEngine::SelectPhoneticSpelling(TInt aIndex)
+	{
+	return iImpl->SelectPhoneticSpelling( aIndex );
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::SelectedPhoneticSpelling
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TInt CPtiEngine::SelectedPhoneticSpelling() const
+	{
+	return iImpl->SelectedPhoneticSpelling();
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::ReadingTextL
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TPtrC CPtiEngine::ReadingTextL()
+	{
+	return iImpl->ReadingTextL();
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::EnableToneMarks
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CPtiEngine::EnableToneMarks(TBool aValue)
+	{
+	iImpl->EnableToneMarks( aValue );
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::ResetToneMark
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CPtiEngine::ResetToneMark()
+	{
+	iImpl->ResetToneMark();
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::ToneMark
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TBool CPtiEngine::ToneMark(TText& aToneMark) const
+	{
+	return iImpl->ToneMark( aToneMark );
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::IsToneMarkValidForSpelling
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TBool CPtiEngine::IsToneMarkValidForSpelling() const
+	{
+	return iImpl->IsToneMarkValidForSpelling();
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::IncrementToneMark
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TBool CPtiEngine::IncrementToneMark(TBool aOverrideInvalid)
+	{
+	return iImpl->IncrementToneMark( aOverrideInvalid );
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::SetPredictiveChineseChar
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TBool CPtiEngine::SetPredictiveChineseChar(const TDesC& aChar)
+	{
+	return iImpl->SetPredictiveChineseChar( aChar );
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::GetModeNameIndexL
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CPtiEngine::GetModeNameIndexL(TPtiChineseVariant aVariant, RArray<TInt>& aResult)
+	{
+	iImpl->GetModeNameIndexL(aVariant, aResult);
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::CurrentLanguage
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C MPtiLanguage* CPtiEngine::CurrentLanguage() 
+	{
+	return iImpl->CurrentLanguage();
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::CurrentWord
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TPtrC CPtiEngine::CurrentWord()
+	{
+	return iImpl->CurrentWord();	
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::InputMode
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TPtiEngineInputMode CPtiEngine::InputMode() const
+	{
+	return iImpl->InputMode();
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::SetCase
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CPtiEngine::SetCase(TPtiTextCase aCase)
+	{
+	iImpl->SetCase( aCase );
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::Case
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TPtiTextCase CPtiEngine::Case() const
+	{
+	return iImpl->Case();
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::NumberOfLanguages
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TInt CPtiEngine::NumberOfLanguages() const
+	{
+	return iImpl->NumberOfLanguages();
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::LastEnteredKey
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TPtiKey CPtiEngine::LastEnteredKey() const
+	{
+	return iImpl->LastEnteredKey();
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::Observer
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C MPtiObserver* CPtiEngine::Observer()
+	{
+	return iImpl->Observer();
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::SetObserver
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CPtiEngine::SetObserver(MPtiObserver* aObserver)
+	{
+	iImpl->SetObserver( aObserver );
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::CurrentInputSequence
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TPtrC8 CPtiEngine::CurrentInputSequence() const
+	{
+	return iImpl->CurrentInputSequence();
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::GetPhoneticSpellingsL
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TInt CPtiEngine::GetPhoneticSpellingsL(CDesCArray& aList)
+	{
+	return iImpl->GetPhoneticSpellingsL(aList);
+	}
+	
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::GetChinesePhraseCandidatesL
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TInt CPtiEngine::GetChinesePhraseCandidatesL(CDesCArray& aList)
+	{
+	return iImpl->GetChinesePhraseCandidatesL(aList);
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::SetToneMark
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TBool CPtiEngine::SetToneMark(TInt aToneMark)
+	{
+	return iImpl->SetToneMark(aToneMark);
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::GetAvailableLanguagesL
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CPtiEngine::GetAvailableLanguagesL(RArray<TInt>& aResult)
+	{
+	return iImpl->GetAvailableLanguagesL(aResult);
+	}
+	
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::CreateDefaultUserDictionaryFileL
+// 
+// ---------------------------------------------------------------------------
+//	
+EXPORT_C void CPtiEngine::CreateDefaultUserDictionaryFileL(TUid aCoreUid, TInt aSymbolClass)
+	{
+	iImpl->CreateDefaultUserDictionaryFileL(aCoreUid, aSymbolClass);
+	}
+	
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::AttachDefaultUserDictionaryL
+// 
+// ---------------------------------------------------------------------------
+//	
+EXPORT_C MPtiUserDictionary* CPtiEngine::AttachDefaultUserDictionaryL(TUid aCoreUid, TInt aSymbolClass)
+	{
+	return iImpl->AttachDefaultUserDictionaryL(aCoreUid, aSymbolClass);
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::WriteSecondaryDataFileL
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CPtiEngine::WriteSecondaryDataFileL(TUid aCoreUid, TInt aIndexNumber, HBufC8* aData)
+	{
+	iImpl->WriteSecondaryDataFileL(aCoreUid, aIndexNumber, aData);
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::ReadSecondaryDataFileL
+// 
+// ---------------------------------------------------------------------------
+//		
+EXPORT_C HBufC8* CPtiEngine::ReadSecondaryDataFileL(TUid aCoreUid, TInt aIndexNumber)
+	{
+	return iImpl->ReadSecondaryDataFileL(aCoreUid, aIndexNumber);	
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::MappingDataForKey
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CPtiEngine::MappingDataForKey(TPtiKey aKey, TDes& aResult, TPtiTextCase aCase)
+	{
+	iImpl->MappingDataForKey(aKey, aResult, aCase);
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::GetNumericModeKeysForQwertyL
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CPtiEngine::GetNumericModeKeysForQwertyL(TInt aLanguage, RArray<TPtiNumericKeyBinding>& aResult)
+	{
+	iImpl->GetNumericModeKeysForQwertyL(aLanguage, aResult);
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::GetCandidatesByInputString
+// 
+// ---------------------------------------------------------------------------
+//	
+EXPORT_C HBufC* CPtiEngine::GetCandidatesByInputString(const TDesC& aInputString, 
+                                                       RPointerArray<HBufC>& aList,
+                                                       const TBool aIsPredictive)
+    {
+    return iImpl->GetCandidatesByInputString(aInputString, aList, aIsPredictive);
+    }
+    
+    
+// ---------------------------------------------------------------------------
+// CPtiEngine::GetHwrRecognizerL
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+// 
+EXPORT_C MPtiHwrRecognizer* CPtiEngine::GetHwrRecognizerL(TLanguage aLanguage)
+    {
+    return iImpl->GetHwrRecognizerL(aLanguage);
+    }
+    
+    
+// ---------------------------------------------------------------------------
+// CPtiEngine::GetHwrRecognizerL
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+// 
+EXPORT_C MPtiHwrRecognizer* CPtiEngine::GetHwrRecognizerL(TInt aImpId)
+    {
+    return iImpl->GetHwrRecognizerL(aImpId);
+    }
+   
+    
+// ---------------------------------------------------------------------------
+// CPtiEngine::ListHwrRecognizerL
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+// 
+EXPORT_C RArray<TUid>& CPtiEngine::ListHwrRecognizerL(TLanguage aLanguage)
+    {
+    return iImpl->ListHwrRecognizerL(aLanguage);
+    }
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngine::GetHwrAvailableLanguagesL
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+// 
+EXPORT_C void CPtiEngine::GetHwrAvailableLanguagesL(RArray<TInt>& aResult)
+    {
+    iImpl->GetHwrAvailableLanguagesL(aResult);
+    }
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::ExtendedNumericModeKeysForQwertyL
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C const RArray<TPtiNumericKeyBinding>& CPtiEngine::ExtendedNumericModeKeysForQwertyL(TInt aLanguage)
+	{
+	return iImpl->ExtendedNumericModeKeysForQwertyL(aLanguage);
+	}
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngine::SetAutoSubstitution
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TInt CPtiEngine::SetAutoSubstitution(TBool aStatus)
+    {
+    return iImpl->SetAutoSubstitution(aStatus);    
+    }
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngine::AddAutoSubstitutionEntry
+// 
+// ---------------------------------------------------------------------------
+//    
+EXPORT_C TInt CPtiEngine::AddAutoSubstitutionEntry(const TDesC& aShortcut,
+                                                   const TDesC& aSubstituition)
+    {
+    return iImpl->AddAutoSubstitutionEntry(aShortcut, aSubstituition);
+    }
+
+     
+// ---------------------------------------------------------------------------
+// CPtiEngine::DeleteAutoSubstitutionEntry
+// 
+// ---------------------------------------------------------------------------
+//      
+EXPORT_C TInt CPtiEngine::DeleteAutoSubstitutionEntry(const TDesC& aShortcut)
+    {
+    return iImpl->DeleteAutoSubstitutionEntry(aShortcut);
+    }
+
+     
+// ---------------------------------------------------------------------------
+// CPtiEngine::NumberOfAutoSubstitutionEntries
+// 
+// ---------------------------------------------------------------------------
+//            
+EXPORT_C TInt CPtiEngine::NumberOfAutoSubstitutionEntries() const
+    {
+    return iImpl->NumberOfAutoSubstitutionEntries();
+    }
+
+     
+// ---------------------------------------------------------------------------
+// CPtiEngine::GetAutoSubstitutionEntry
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TInt CPtiEngine::GetAutoSubstitutionEntry(TInt aIndex, TDes& aShortcut,
+                                                   TDes& aSubstitution)
+    {
+    return iImpl->GetAutoSubstitutionEntry(aIndex, aShortcut, aSubstitution);
+    }
+    
+    
+// ---------------------------------------------------------------------------
+// CPtiEngine::KeyboardType
+// 
+// ---------------------------------------------------------------------------
+//                                                                                    
+EXPORT_C TPtiKeyboardType CPtiEngine::KeyboardType() const
+    {
+    return iImpl->KeyboardType();
+    }
+     
+    
+// ---------------------------------------------------------------------------
+// CPtiEngine::KeyboardType
+// 
+// ---------------------------------------------------------------------------
+//                           
+EXPORT_C TInt CPtiEngine::SetKeyboardType(TPtiKeyboardType aType)
+    {
+    return iImpl->SetKeyboardType(aType);
+    }
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngine::IsQwertyBasedMode
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TBool CPtiEngine::IsQwertyBasedMode(TPtiEngineInputMode aMode) const
+    {
+    if ((aMode == EPtiEngineQwerty) ||
+        (aMode == EPtiEngineZhuyinQwerty) ||
+        (aMode == EPtiEngineZhuyinPhraseQwerty) ||
+        (aMode == EPtiEnginePinyinQwerty) ||
+        (aMode == EPtiEnginePinyinPhraseQwerty) ||
+        (aMode == EPtiEngineStrokeQwerty) ||
+        (aMode == EPtiEngineStrokePhraseQwerty) ||        
+        (aMode == EPtiEngineNormalCangjieQwerty) ||
+        (aMode == EPtiEngineEasyCangjieQwerty) ||
+        (aMode == EPtiEngineAdvCangjieQwerty) ||
+        (aMode == EPtiEngineHiraganaKanjiQwerty) ||
+        (aMode == EPtiEngineHiraganaKanjiPredictiveQwerty) ||
+        (aMode == EPtiEngineKatakanaQwerty) ||
+        (aMode == EPtiEngineFullWidthKatakanaQwerty) ||
+        (aMode == EPtiEngineFullWidthNumericQwerty) ||
+        (aMode == EPtiEngineFullWidthAlphabetQwerty) ||
+        (aMode == EPtiEngineHiraganaQwerty) ||
+        (aMode == EPtiEngineQwertyPredictive)    
+#ifdef RD_HINDI_PHONETIC_INPUT
+        || (aMode == EPtiEngineInputModeIndicPhoneticQwerty)
+#endif
+#ifdef RD_INTELLIGENT_TEXT_INPUT
+        || (aMode == EPtiEnginePinyinPhraseHalfQwerty)
+        || (aMode == EPtiEngineStrokePhraseHalfQwerty)
+        || (aMode == EPtiEngineZhuyinPhraseHalfQwerty)
+        || (aMode == EPtiEngineInputModeZhuyinMiniQwertyFind)
+        || (aMode == EPtiEngineQwertyKorean)
+#endif
+        || (aMode == EPtiEngineNormalCangjieQwerty)
+        || (aMode == EPtiEngineEasyCangjieQwerty)
+        || (aMode == EPtiEngineAdvCangjieQwerty))
+        {
+        return ETrue;   
+        }
+        
+    return EFalse;
+    }      
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngine::KeyboardTypesSupportedByLanguage
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CPtiEngine::KeyboardTypesSupportedByLanguageL(TInt aLanguage,
+                                                            RArray<TPtiKeyboardType>& aResult)
+    {
+    iImpl->KeyboardTypesSupportedByLanguageL(aLanguage, aResult);
+    }
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngine::GetNumericModeKeysForQwertyL
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CPtiEngine::GetNumericModeKeysForQwertyL(TInt aLanguage,
+ 	                                            RArray<TPtiNumericKeyBinding>& aResult,
+ 	                                            TPtiKeyboardType aKeyboardType)
+    {
+    iImpl->GetNumericModeKeysForQwertyL(aLanguage, aResult, aKeyboardType);
+    }
+  
+  
+// ---------------------------------------------------------------------------
+// CPtiEngine::ExtendedNumericModeKeysForQwertyL
+// 
+// ---------------------------------------------------------------------------
+//   
+EXPORT_C const RArray<TPtiNumericKeyBinding>& CPtiEngine::ExtendedNumericModeKeysForQwertyL(TInt aLanguage,
+                                                                                     TPtiKeyboardType aKeyboardType)
+    {
+    return iImpl->ExtendedNumericModeKeysForQwertyL(aLanguage, aKeyboardType);
+    }
+    
+    
+// ---------------------------------------------------------------------------
+// CPtiEngine::ListAvailablePhysicalKeyboardsL
+// 
+// ---------------------------------------------------------------------------
+//	
+EXPORT_C void CPtiEngine::ListAvailablePhysicalKeyboardsL(RArray<TPtiKeyboardType>& aResult)
+    {
+  	// Add real implementation later.	
+    User::LeaveIfError(aResult.Append(EPtiKeyboard12Key));        	    
+    }    
+    
+        
+// ---------------------------------------------------------------------------
+// CPtiEngine::SetNumberCandidateStatus
+// 
+// ---------------------------------------------------------------------------
+//	    
+EXPORT_C TInt CPtiEngine::SetNumberCandidateStatus(TBool aStatus)
+    {
+    return iImpl->SetNumberCandidateStatus(aStatus);
+    }
+
+
+// ---------------------------------------------------------------------------
+// CPtiEngine::SetNumberCandidateStatus
+// 
+// ---------------------------------------------------------------------------
+//	    
+EXPORT_C TBool CPtiEngine::IsValidKey(TPtiKey aKey) const
+    {
+    return iImpl->IsValidKey(aKey);
+    }
+    
+    
+// ---------------------------------------------------------------------------
+// CPtiEngine::SetNumberCandidateStatus
+// 
+// ---------------------------------------------------------------------------
+//	        
+EXPORT_C TInt CPtiEngine::SetMaxLengthForAutoCompletedCandidates(TInt aMaxLength)
+   {
+   return iImpl->SetMaxLengthForAutoCompletedCandidates(aMaxLength);	
+   }
+      
+      
+// ---------------------------------------------------------------------------
+// CPtiEngine::MarkAutoCapitalized()
+// 
+// ---------------------------------------------------------------------------
+//	         
+EXPORT_C void CPtiEngine::MarkAutoCapitalized()
+    {
+    iImpl->MarkAutoCapitalized();
+    }
+    
+
+// ---------------------------------------------------------------------------
+// CPtiEngine::CaseSequence()
+// 
+// ---------------------------------------------------------------------------
+//	 
+EXPORT_C TPtrC8 CPtiEngine::CaseSequence()
+    {
+    return iImpl->CaseSequence();
+    }
+    
+    
+// ---------------------------------------------------------------------------
+// CPtiEngine::AddPhrase()
+// 
+// ---------------------------------------------------------------------------
+//	    
+EXPORT_C TInt CPtiEngine::AddPhrase(const TDesC& aNewPhrase)
+    {
+    return iImpl->AddPhrase(aNewPhrase);
+    }
+    
+#ifdef FF_DUAL_LANGUAGE_SUPPORT
+// ---------------------------------------------------------------------------
+// CPtiEngineImpl::SetSecondaryInputL
+// 
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TInt CPtiEngine::SetSecondaryInputL(TInt aEpocLanguageID)
+    {
+    return iImpl->SetSecondaryInputL(aEpocLanguageID);
+    }
+#endif //FF_DUAL_LANGUAGE_SUPPORT
+// End of file