diff -r 000000000000 -r b16258d2340f applayerprotocols/httptransportfw/Test/T_HttpIntegration/CCmdFamily.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/applayerprotocols/httptransportfw/Test/T_HttpIntegration/CCmdFamily.cpp Tue Feb 02 01:09:52 2010 +0200 @@ -0,0 +1,232 @@ +// Copyright (c) 2002-2009 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: +// $Header$ +// GT0149 Applications Protocol Integration Test Harness +// blank application +// This module implements the CCmdFamily class: a generic collection of +// registered CCmdBase class derived commands. +// +// + +#include "CCmdBase.h" // + +// bizarre configuration means that this is the only way this will compile... +//#include "CCmdFamily.h" // + +//----------------------------------------------------------------------------- + +CCmdFamily* CCmdFamily::NewL () +{ +CCmdFamily* self = NewLC(); +CleanupStack::Pop(); +return self; +} + +//----------------------------------------------------------------------------- + +CCmdFamily* CCmdFamily::NewLC() +{ +CCmdFamily* self = new (ELeave) CCmdFamily(); +CleanupStack::PushL(self); +self->ConstructL(); +return self; +} + +//----------------------------------------------------------------------------- + +void CCmdFamily::ConstructL() +{ + +iMachine = NULL; +iStepOver = EFalse; + +// Perhaps the granularity should be approximated in advance? +TInt granularity = 32; // this one here is just a wild guess +iCommands = new (ELeave) CArrayPtrSeg(granularity); + +// +// Assuming a TBool array to be initially full of EFalse's? +// + +} + +//----------------------------------------------------------------------------- + +CCmdFamily::~CCmdFamily() +{ +iCommands->ResetAndDestroy(); +delete iCommands; +} + +//----------------------------------------------------------------------------- + +void CCmdFamily::SetMachine(CTEngine *aTestMachine) +{ +iMachine = aTestMachine; +} + +//----------------------------------------------------------------------------- + +CTEngine* CCmdFamily::Machine() +{ +return iMachine; +} + +//----------------------------------------------------------------------------- +// use this to append a new command to the list + +void CCmdFamily::RegisterL(CCmdBase* aCommand) +{ +if (aCommand != 0) + { + iCommands->AppendL(aCommand); + aCommand->SetFamily(this); + } +} + +//----------------------------------------------------------------------------- +// returns how many commands currently available + +TInt CCmdFamily::Count() const +{ +return iCommands->Count(); +} + +//----------------------------------------------------------------------------- +// returns a pointer to aIndex'th command + +CCmdBase* CCmdFamily::At(TInt aIndex) const +{ +return iCommands->At(aIndex); +} + +//----------------------------------------------------------------------------- +// operator to get at particular command + +CCmdBase* CCmdFamily::operator[](TInt aIndex) const +{ +return iCommands->At(aIndex); +} + +//----------------------------------------------------------------------------- +// get command with this ID + +CCmdBase* CCmdFamily::Command(TInt aCommandId) +{ +for (TInt i = 0; i < Count(); ++i) + { + CCmdBase* command = At(i); + if (command->CommandId() == aCommandId) + return command; + } + +// Not found +return NULL; +} + +//----------------------------------------------------------------------------- +// Get Command by command string i.e. recognize the command. + +CCmdBase *CCmdFamily::Recognize(const TDesC& aCommand) +{ +for (TInt i = 0; i < Count(); ++i) + { + CCmdBase *command = At(i); + if (command->Recognize(aCommand)) + return command; + } + +// Not found +return NULL; +} + +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +// +// Command Family Methods +// +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +// List all the commands out one by one! +// added mjd, Aug.2002 + +void CCmdFamily::ListAll(CConsoleBase *aConsole) +{ +_LIT(KHdr, "\r\n Command Help Information"); +_LIT(KMsg, "\r\n%3d %-16S - %-52S"); + +if (aConsole != 0) + aConsole->Printf(KHdr); + +TInt i = 0; +TInt j = 0; +while (j < Count()) + { + if (aConsole) + { + CCmdBase* iCmd = At(j); + aConsole->Printf(KMsg, j, &iCmd->Keyphrase(), &iCmd->HelpText()); + if (i > 12) + { + aConsole->Printf(_L("\r\n[Press any key]")); + aConsole->Getch(); + aConsole->Printf(KHdr); + i = 0; + } + } + ++i; + ++j; + } + +// one final CRLF to ensure we display the prompt on a new line... +aConsole->Printf(_L("\n")); +} + +//----------------------------------------------------------------------------- +// Set the switch (default aBoolean to TRUE) + +void CCmdFamily::SetSwitch(const TSwitch &aSwitch, TBool aBoolean) +{ +iSwitch[aSwitch] = aBoolean; +} + +//----------------------------------------------------------------------------- +// Get the switch + +TBool CCmdFamily::Switch(const TSwitch &aSwitch) +{ +return iSwitch[aSwitch]; +} + +//----------------------------------------------------------------------------- +// Set the StepOver flag. + +void CCmdFamily::SetStepOver(const TBool &aBoolean) +{ +iStepOver = aBoolean; +} + +//----------------------------------------------------------------------------- +// Get the StepOver flag. + +TBool CCmdFamily::StepOver() +{ +return iStepOver; +} + +//----------------------------------------------------------------------------- +// End of File +//-----------------------------------------------------------------------------