diff -r cad71a31b7fc -r e36f3802f733 srsf/sisrscontrollerplugin/src/sigrammardb.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/srsf/sisrscontrollerplugin/src/sigrammardb.h Wed Sep 01 12:29:17 2010 +0100 @@ -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 +#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& 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& aGrammarIDs ); + /** + * Returns all grammar Ids in the database. + * @since 2.0 + * @param aGrammarIDs reference where grammar Ids are stored + * @return - + */ + void GetAllGrammarIDsL( RArray& 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& 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& 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 iGrammarArray; + }; + +#endif // SIGRAMMARDB_H + +// End of File