--- /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<CCmdBase>(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
+//-----------------------------------------------------------------------------