--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/applayerprotocols/httptransportfw/Test/T_HttpIntegration/CPile.h Tue Feb 02 01:09:52 2010 +0200
@@ -0,0 +1,207 @@
+// 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$
+// mjd, mark@mjdss.com, july 2002
+// During implementation found a 'known' bug in the MSVC++ v6.0 compiler.
+// The C2955 bug.
+//
+//
+
+#ifndef __CPILE_H__
+#define __CPILE_H__
+
+//-----------------------------------------------------------------------------
+
+#include <e32base.h>
+#include <e32cons.h>
+
+//-----------------------------------------------------------------------------
+
+#include "CLogFile.h"
+#include "CCmdFile.h"
+#include "CIFControl.h"
+
+//-----------------------------------------------------------------------------
+
+template <class T>
+class CPile : public CBase
+{
+public: // Constructors and destructors
+
+ static CPile *NewL (); // these were both static - why???
+ static CPile *NewL (const TInt &); // these were both static - why???
+ static CPile *NewLC(const TInt & = 16);
+ ~CPile();
+
+protected:
+
+ // this may be required by derived classes...
+ virtual void ConstructL(const TInt &);
+
+private:
+
+ // this remains private
+ CPile() {};
+
+public: // New functions
+
+ // Push to pile.
+ virtual void PushL(T *);
+
+ // Pop from pile. Returns NULL is none.
+ virtual T *Pop();
+
+ // Pop from pile (skim) and delete (empty).
+ virtual void Skim(); // skim off top
+ virtual void Empty(); // Empty the stack completely
+ virtual T *Peek(); // Peek at the current (top) item
+
+ // Get count and the it'h T, legal i assumed.
+ virtual TInt Count() const;
+ virtual T *At(const TInt &) const;
+ virtual T *operator[](const TInt &) const;
+
+private: // Data
+
+ // Pile (stack) of T.
+ CArrayPtrSeg<T> *iPile;
+ //RPointerArray<T> *iPile;
+};
+
+//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
+// For the specializations
+
+class CLogFile;
+
+//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
+
+TEMPLATE_SPECIALIZATION class CPile<CLogFile> : public CBase
+{
+public: // New functions
+
+ static CPile *NewL ();
+ static CPile *NewLC(const TInt & = 16);
+ ~CPile();
+
+protected:
+
+ // this may be required by derived classes...
+ virtual void ConstructL(const TInt &);
+
+public: // New functions
+
+ // Push to pile.
+ void PushL(CLogFile *);
+
+ // Pop from pile. Returns NULL is none.
+ CLogFile *Pop();
+
+ // Get count and the it'h T, legal i assumed.
+ TInt Count() const;
+
+ CLogFile *At(const TInt &) const;
+
+private: // Data
+
+ CArrayPtrSeg<CLogFile> *iPile;
+};
+
+//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
+// For the specializations
+
+TEMPLATE_SPECIALIZATION class CPile<CCmdFile> : public CBase
+{
+public: // New functions
+
+ static CPile *NewL ();
+ static CPile *NewLC(const TInt & = 16);
+ ~CPile();
+
+protected:
+
+ // this may be required by derived classes...
+ virtual void ConstructL(const TInt &);
+
+public: // New functions
+
+ // Push to pile.
+ void PushL(CCmdFile *);
+
+ // Pop from pile. Returns NULL is none.
+ CCmdFile *Pop();
+
+ // Get count and the it'h T, legal i assumed.
+ TInt Count() const;
+
+ void Skim(); // skim off top
+ void Empty(); // Empty the stack completely
+
+ CCmdFile *At(const TInt &) const;
+
+private: // Data
+
+ CArrayPtrSeg<CCmdFile> *iPile;
+};
+
+//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
+// For the specializations
+
+TEMPLATE_SPECIALIZATION class CPile<CIFControl> : public CBase
+{
+public: // New functions
+
+ static CPile *NewL ();
+ static CPile *NewLC(const TInt & = 16);
+ ~CPile();
+
+protected:
+
+ // this may be required by derived classes...
+ virtual void ConstructL(const TInt &);
+
+public: // New functions
+
+ // Push to pile.
+ void PushL(CIFControl *);
+
+ // Pop from pile. Returns NULL is none.
+ CIFControl *Pop();
+ void Skim(); // skim off top
+
+ // Get count and the it'h T, legal i assumed.
+ TInt Count() const;
+
+ // return the items At(x)
+ CIFControl *At(const TInt &) const;
+
+ // Peek at the current (top) item
+ CIFControl *Peek();
+
+private: // Data
+
+ CArrayPtrSeg<CIFControl> *iPile;
+};
+
+//-----------------------------------------------------------------------------
+
+#endif // __CPILE_H__
+
+//-----------------------------------------------------------------------------
+// End of File
+//-----------------------------------------------------------------------------
+