srsf/sisrscontrollerplugin/src/silexicondb.h
branchRCL_3
changeset 19 e36f3802f733
parent 0 bf1d17376201
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/srsf/sisrscontrollerplugin/src/silexicondb.h	Wed Sep 01 12:29:17 2010 +0100
@@ -0,0 +1,191 @@
+/*
+* Copyright (c) 2002-2007 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:  This class handles the storage and access of speaker independent
+*               lexicons.  It is also responsible for allocating memory when
+*               loading lexicons into the recognizer.
+*
+*/
+
+
+
+#ifndef SILEXICONDB_H
+#define SILEXICONDB_H
+
+//  INCLUDES
+#include <nsssispeechrecognitiondatadevasr.h>
+#include "sicommondb.h"
+
+// CLASS DECLARATION
+/**
+*  This class implements Speaker Inependent Lexicon Database.
+*
+*  @lib SIControllerPlugin.lib
+*  @since 2.0
+*/
+class CSILexiconDB : public CSICommonDB
+    {
+    public:  // Constructors and destructor
+        
+        /**
+        * Two-phased constructor.
+        */
+        static CSILexiconDB* NewL( RDbNamedDatabase& aDatabase, 
+                                   RDbs& aDbSession,
+                                   TInt aDrive );
+        
+        /**
+        * Destructor.
+        */
+        virtual ~CSILexiconDB();
+        
+    public:  
+        
+        /**
+        * Adds a new pronunciation into the specified lexicon.
+        * @since 2.0
+        * @param    aClientUid            client's Uid for data ownership
+        * @param    aLexiconID            lexicon Id
+        * @param    aModelBankID        model bank Id
+        * @param    aPhonemeID            phoneme Id
+        * @return    new pronunciation Id
+        */
+        TSIPronunciationID AddPronunciationL( TUid aClientUid, TSILexiconID aLexiconID,
+                                              TDesC8& aPronunciation, TSIModelBankID aModelBankID );
+     
+        /**
+        * Inserts the externalized SI Lexicon into the specified grammar table.
+        * @since 2.0
+        * @param    aClientUid            client's Uid for data ownership
+        * @param    aSILexicon            lexicon to be updated
+        */
+        void  UpdateLexiconL( TUid aClientUid, CSILexicon* aSILexicon );
+                
+        /**
+        * Creates a new lexicon ID table in the database.
+        * @since 2.0
+        */
+        void CreateIDTableL();
+        
+        /**
+        * Creates a new lexicon in the database.
+        * @since 2.0
+        * @param    aClientUid            client's Uid for data ownership
+        * @return    new lexicon Id
+        */
+        TSILexiconID CreateLexiconL( TUid aClientUid );
+        
+            
+        /**
+        * Returns all lexicon Ids that belong to the specified client.
+        * @since 2.0
+        * @param    aClientUid            client's Uid for data ownership
+        * @param    aLexiconIDs            reference where lexicon Ids are stored
+        */
+        void GetAllClientLexiconIDsL( TUid aClientUid, RArray<TSILexiconID>& aLexiconIDs );
+        
+        /**
+        * Returns all lexicon Ids in the database.
+        * @since 2.0
+        * @param    aLexiconIDs            reference where lexicon Ids are stored
+        */
+        void GetAllLexiconIDsL( RArray<TSILexiconID>& aLexiconIDs );
+        
+        /**
+        * Returns all pronunciation Ids that exist in the specified lexicon.
+        * @since 2.0
+        * @param    aLexiconID            lexicon Id
+        * @param    aPronunciationIDs    reference where pronunciation Ids are stored
+        */
+        void GetAllPronunciationIDsL( TSILexiconID aLexiconID, RArray<TSIPronunciationID>& aPronunciationIDs );
+    
+        /**
+        * Returns the number of pronunciations in the specified lexicon.
+        * @since 2.0
+        * @param    aLexiconID            lexicon Id
+        * @return    Number of pronunciations
+        */
+        TInt PronunciationCountL( TSILexiconID aLexiconID );
+    
+        /**
+        * Checks if the pronunciation is valid or not.
+        * @since 2.0
+        * @param    aLexiconID            lexicon Id
+        * @param    aPronunciationID    pronunciation Id
+        * @return    ETrue if the pronunciation is valid
+        */
+        TBool IsPronunciationValidL( TSILexiconID aLexiconID, TSIPronunciationID aPronunciationID );
+        
+        /**
+        * Removes the specified lexicon from the database.
+        * Removing a lexicon will remove all pronunciations within the lexicon.
+        * @since 2.0
+        * @param    aClientUid            client's Uid for data ownership
+        * @param    aLexiconID            lexicon Id
+        */
+        void RemoveLexiconL( TUid aClientUid, TSILexiconID aLexiconID );
+        
+        /**
+        * Removes the specified pronunciation from the database.
+        * @since 2.0
+        * @param    aClientUid            client's Uid for data ownership
+        * @param    aLexiconID            lexicon Id
+        * @param    aPronunciationID    pronunciation Id
+        */ 
+        void RemovePronunciationL(  TUid aClientUid,  TSILexiconID aLexiconID, TSIPronunciationID aPronunciationID );
+        
+        /**
+        * Deallocates the temporary memory containing the lexicon object created with AllPronunciationsL.
+        * @since 2.0
+        */
+        void ResetAndDestroy();
+            
+        /**
+        * Get a new uniq ID
+        * @since 2.0
+        * @param    Rule ID array
+        * @param    
+        * @return   Error code
+        */
+        TInt GetNewID( RArray<TSIRuleID>& aMyIds ) ;
+    
+        /**
+        * This function returns lexicon based on given id
+        * @since 2.0
+        * @param    aLexiconID            lexicon Id
+        * @return Lexicon containing all pronunciations
+        */
+        CSILexicon* LexiconL( TSILexiconID aLexiconID );
+    
+    private:
+            
+        /**
+        * C++ default constructor.
+        */
+        CSILexiconDB( RDbNamedDatabase& aDatabase, RDbs& aDbSession, TInt aDrive );
+        
+        /**
+        * By default Symbian 2nd phase constructor is private.
+        */
+        void ConstructL();
+            
+    private:    // Data
+            
+        // Temporary memory where loaded lexicons are held during recognition session
+        RPointerArray<CSILexicon> iLexiconArray;
+        CSILexicon* iLexicon;
+    };
+    
+#endif // SILEXICONDB_H
+    
+// End of File