applayerprotocols/httptransportfw/Test/T_HttpIntegration/CCmdFamily.cpp
changeset 0 b16258d2340f
--- /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  
+//-----------------------------------------------------------------------------