--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/srsf/nssvasapi/nssvascore/src/nssvasccontextbuilder.cpp Wed Sep 01 12:29:17 2010 +0100
@@ -0,0 +1,167 @@
+/*
+* Copyright (c) 2004-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: CNssContextBuilder is the builder for context objects. It is owned
+* by the context manager. A client builds contexts by requesting the
+* context manager which in turn forwards the request to context builder.
+*
+*/
+
+
+// INCLUDE FILES
+#include "nssvasccontextbuilder.h"
+#include "rubydebug.h"
+
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// CNssContextBuilder::CNssContextBuilder
+// C++ constructor can NOT contain any code that
+// might leave.
+// ---------------------------------------------------------
+//
+CNssContextBuilder::CNssContextBuilder()
+ {
+ // Nothing
+ }
+
+// ---------------------------------------------------------
+// CNssContextBuilder::NewL
+// Two-phased constructor.
+// ---------------------------------------------------------
+//
+CNssContextBuilder* CNssContextBuilder::NewL()
+ {
+ // Takes ages in strain test
+ // RUBY_DEBUG0( "CNssContextBuilder::NewL" );
+
+ CNssContextBuilder* self = NewLC();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// ---------------------------------------------------------
+// CNssContextBuilder::NewLC
+// Two-phased constructor.
+// ---------------------------------------------------------
+//
+CNssContextBuilder* CNssContextBuilder::NewLC()
+ {
+ CNssContextBuilder* self = new (ELeave) CNssContextBuilder;
+
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ return self;
+ }
+
+// ---------------------------------------------------------
+// CNssContextBuilder::~CNssContextBuilder
+// Destructor
+// ---------------------------------------------------------
+//
+CNssContextBuilder::~CNssContextBuilder()
+ {
+ RUBY_DEBUG0( "CNssContextBuilder::~CNssContextBuilder" );
+
+ // do not delete the portal if ContextCount() > 0
+ if ( iContextSrsPortal )
+ {
+ iContextSrsPortal->SetTerminationState( CNssContextSrsPortal::EVASTERMINATION_PENDING );
+ if ( iContextSrsPortal->ContextCount() == 0 )
+ {
+ delete iContextSrsPortal;
+ }
+ }
+ }
+
+// ---------------------------------------------------------
+// CNssContextBuilder::ConstructL
+// creates a context srs portal
+// ---------------------------------------------------------
+//
+void CNssContextBuilder::ConstructL()
+ {
+ iContextSrsPortal = new (ELeave) CNssContextSrsPortal();
+ }
+
+// ---------------------------------------------------------
+// CNssContextBuilder::CreateContextL
+// creates a context given all data member values.
+// ---------------------------------------------------------
+//
+CNssContext* CNssContextBuilder::CreateContextL( const TDesC& aName,
+ TInt aContextId,
+ TBool aGlobal,
+ TUint32 aGrammarId,
+ TUint32 aLexiconId,
+ TUint32 aModelBankId,
+ TUint32 /*iTrainType*/,
+ const TDesC8& aClientData )
+ {
+ // Takes ages in strain test
+ // RUBY_DEBUG_BLOCK( "CNssContextBuilder::CreateContextL" );
+
+ CNssContext *context = new (ELeave) CNssContext( iContextSrsPortal );
+ CleanupStack::PushL(context);
+ context->SetNameL( aName );
+ context->SetContextId( aContextId );
+ context->SetGlobal( aGlobal );
+ context->SetGrammarId( aGrammarId );
+ context->SetLexiconId( aLexiconId );
+ context->SetModelBankId( aModelBankId );
+ context->SetClientData( aClientData );
+ CleanupStack::Pop(context);
+ return context;
+ }
+
+// ---------------------------------------------------------
+// CNssContextBuilder::CreateContextL
+// creates a context given lexicon id and model bank id
+// ---------------------------------------------------------
+//
+CNssContext* CNssContextBuilder::CreateContextL( TUint32 aLexiconId,
+ TUint32 aModelBankId )
+ {
+ RUBY_DEBUG_BLOCK( "CNssContextBuilder::CreateContextL() - w/ lex id & model bank id" );
+
+ CNssContext *context = new (ELeave) CNssContext( iContextSrsPortal );
+ context->SetLexiconId( aLexiconId );
+ context->SetModelBankId( aModelBankId );
+ return context;
+ }
+
+// ---------------------------------------------------------
+// CNssContextBuilder::CreateContextL
+// creates an empty context object
+// ---------------------------------------------------------
+//
+CNssContext* CNssContextBuilder::CreateContextL()
+ {
+ RUBY_DEBUG_BLOCK( "CNssContextBuilder::CreateContextL() - empty" );
+
+ CNssContext *context = new (ELeave) CNssContext( iContextSrsPortal );
+ return context;
+ }
+
+// ---------------------------------------------------------
+// CNssContextBuilder::GetContextPortal
+// returns the context SRS portal
+// ---------------------------------------------------------
+//
+CNssContextSrsPortal* CNssContextBuilder::GetContextPortal()
+ {
+ return iContextSrsPortal;
+ }
+
+// End of File