--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/srsf/sisrscontrollerplugin/src/sigrammardb.h Thu Dec 17 08:46:30 2009 +0200
@@ -0,0 +1,261 @@
+/*
+* Copyright (c) 2004-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
+* grammars. It is also responsible for allocating memory when
+* loading grammars into the recognizer.
+*
+*/
+
+
+#ifndef SIGRAMMARDB_H
+#define SIGRAMMARDB_H
+
+// INCLUDES
+#include <nsssispeechrecognitiondatadevasr.h>
+#include "sicommondb.h"
+
+// CLASS DECLARATION
+/**
+* This class implements Speaker Independent Grammar Database.
+*
+* @lib SIControllerPlugin.lib
+* @since 2.0
+*/
+class CSIGrammarDB : public CSICommonDB
+ {
+ public: // Constructors and destructor
+
+ /**
+ * Two-phased constructor.
+ */
+ static CSIGrammarDB* NewL( RDbNamedDatabase& aDatabase,
+ RDbs& aDbSession,
+ TInt aDrive );
+
+ /**
+ * Destructor.
+ */
+ virtual ~CSIGrammarDB();
+
+ public: // New functions
+
+ /**
+ * Adds a new rule variant into the specified grammar.
+ * @since 2.0
+ * @param aClientUid client's Uid for data ownership
+ * @param aGrammarID grammar Id
+ * @param aLexiconID lexicon Id
+ * @param aPronunciationID pronunciation Id
+ * @return -
+ */
+ void AddRuleVariantL(TUid aClientUid,
+ TSIGrammarID aGrammarID,
+ TSILexiconID aLexiconID,
+ const RArray<TSIPronunciationID>& aPronunciationIDs,
+ TSIRuleID aRuleID,
+ TSIRuleVariantID& aRuleVariantID) ;
+
+ /**
+ * Returns a grammar object containing all speaker independent rules of the specified grammar.
+ * The grammar is added to iGrammarArray
+ * @since 2.0
+ * @param aGrammarID grammar Id
+ * @return pointer to a grammar object
+ */
+ const CSICompiledGrammar* LoadGrammarL(TSIGrammarID aGrammarID );
+
+ /**
+ * Creates a new rule in the database.
+ * @since 2.0
+ * @param aClientUid client's Uid for data ownership
+ * @param aGrammarID grammar Id
+ * @param aRuleID rule Id of the created rule
+ * @return -
+ */
+ void CreateRuleL(TUid aClientUid,TSIGrammarID aGrammarID, TSIRuleID& aRuleID) ;
+
+ /**
+ * Creates a new grammar in the database.
+ * @since 2.0
+ * @param aClientUid client's Uid for data ownership
+ * @return a new grammar Id
+ */
+ TSIGrammarID CreateGrammarL( TUid aClientUid );
+
+ /**
+ * Creates a new grammar ID table in the database.
+ * @since 2.0
+ * @param -
+ * @return -
+ */
+ void CreateIDTableL();
+
+ /**
+ * Returns all grammar IDs that belong to the specified client.
+ * @since 2.0
+ * @param aClientUid client's Uid for data ownership
+ * @param aGrammarIDs reference where grammar Ids are stored
+ * @return -
+ */
+ void GetAllClientGrammarIDsL(
+ TUid aClientUid,
+ RArray<TSIGrammarID>& aGrammarIDs );
+ /**
+ * Returns all grammar Ids in the database.
+ * @since 2.0
+ * @param aGrammarIDs reference where grammar Ids are stored
+ * @return -
+ */
+ void GetAllGrammarIDsL( RArray<TSIGrammarID>& aGrammarIDs );
+
+
+ /**
+ * Returns all rule Ids that exist in the specified grammar.
+ * @since 2.0
+ * @param aGrammarID grammar Id
+ * @param aRuleIDs reference where rule Ids are stored
+ * @return -
+ */
+ void GetAllRuleIDsL( TSIGrammarID aGrammarID, RArray<TSIRuleID>& aRuleIDs );
+
+ /**
+ * Checks if a valid grammar is loaded.
+ * @since 2.0
+ * @param -
+ * @return ETrue if a valid grammar is loaded
+ */
+ TBool IsGrammarLoaded();
+
+ /**
+ * Checks if the rule is valid or not.
+ * @since 2.0
+ * @param aGrammarID grammar Id
+ * @param aRuleID rule Id
+ * @return ETrue if the rule is valid
+ */
+ TBool IsRuleValidL( TSIGrammarID aGrammarID, TSIRuleID aRuleID );
+
+ /**
+ * Removes the specified grammar from the database.
+ * Removing a grammar will remove all rules within the grammar.
+ * @since 2.0
+ * @param aClientUid client's Uid for data ownership
+ * @param aGrammarID grammar Id
+ * @return -
+ */
+ void RemoveGrammarL( TUid aClientUid, TSIGrammarID aGrammarID );
+
+ /**
+ * Removes the specified rule from the database.
+ * @since 2.0
+ * @param aClientUid client's Uid for data ownership
+ * @param aGrammarID grammar Id
+ * @param aRuleID rule Id
+ * @return -
+ */
+ void RemoveRuleL(TUid aClientUid,TSIGrammarID aGrammarID, TSIRuleID aRuleID );
+
+ /**
+ * Deallocates the temporary memory containing the grammar object created with AllRulesL.
+ * @since 2.0
+ * @param -
+ * @return -
+ */
+ void ResetAndDestroy();
+
+ /**
+ * Unloads the specified rule from the specified grammar in temporary memory, previously
+ * loaded with AllRulesL. The rule in the database remains intact.
+ * @since 2.0
+ * @param aGrammarID grammar Id
+ * @param aRuleID rule Id
+ * @return -
+ */
+ void UnloadRuleL( TSIGrammarID aGrammarID, TSIRuleID aRuleID );
+
+ /**
+ * Unloads the specified grammar from the temporary memory, previously
+ * loaded with AllRulesL. The grammar in the database remains intact.
+ * @since 2.0
+ * @param aGrammarID grammar Id
+ * @return -
+ */
+ void UnloadGrammarL( TSIGrammarID aGrammarID);
+
+ /**
+ * Update the specified grammar in the database
+ * @since 2.0
+ * @param aClientUid client's Uid for data ownership
+ * @param aSICompiledGrammar pointer to a updated grammar object
+ * @return -
+ */
+ void UpdateGrammarL(TUid aClientUid,CSICompiledGrammar* aSICompiledGrammar);
+
+ /**
+ * Returns a grammar object containing all speaker independent rules of the specified grammar.
+ * The pointer to the object is not put in the iGrammarArray
+ * @since 2.0
+ * @param aGrammarID grammar Id
+ * @param
+ * @return Pointer to a compiled grammar object
+ */
+ const CSICompiledGrammar* GrammarL(TSIGrammarID aGrammarID );
+
+ /**
+ * Find a grammar from loaded grammar array
+ * @since 2.0
+ * @param aGrammarID grammar Id
+ * @param
+ * @return Pointer to a compiled grammar object
+ */
+ CSICompiledGrammar* FindGrammarL(TSIGrammarID aGrammarID) ;
+
+
+ /**
+ * Get a new uniq ID
+ * @since 2.0
+ * @param Rule ID array
+ * @param
+ * @return Created ID
+ */
+ TInt GetNewID( RArray<TSIRuleID>& aMyIds );
+
+ /**
+ * Returns the number of rules in the specified grammar.
+ * @since 2.0
+ * @param aGrammarID grammar Id
+ * @return Number of rules
+ */
+ TInt RuleCountL( TSIGrammarID aGrammarID );
+
+ private:
+
+ /**
+ * C++ default constructor.
+ */
+ CSIGrammarDB( RDbNamedDatabase& aDatabase, RDbs& aDbSession, TInt aDrive );
+
+ /**
+ * By default Symbian 2nd phase constructor is private.
+ */
+ void ConstructL();
+
+ private: // Data
+ // Temporary memory where loaded grammars are held during recognition session
+ RPointerArray<CSICompiledGrammar> iGrammarArray;
+ };
+
+#endif // SIGRAMMARDB_H
+
+// End of File