servicediscoveryandcontrol/pnp/test/upnp/chunkmgr/inc/rmemchunk.h
changeset 0 f5a58ecadc66
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/servicediscoveryandcontrol/pnp/test/upnp/chunkmgr/inc/rmemchunk.h	Tue Feb 02 01:12:20 2010 +0200
@@ -0,0 +1,118 @@
+// Copyright (c) 2008-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:
+// @file
+// @internalComponent
+// 
+//
+
+#ifndef __RMEMCHUNK_
+#define __RMEMCHUNK_
+
+#include <e32base.h>
+#include <cchunkmanager.h>
+
+//forward Declaration
+class RMemoryAllocator;
+
+class RMemChunk
+	{
+public:
+	inline RMemChunk ()
+		{
+		iNextCell = NULL;
+		}
+		
+	IMPORT_C TInt Alloc ( TInt aSize, RMemoryAllocator& aAllocator );
+	IMPORT_C TInt Create ( const TDesC8& aDes, RMemoryAllocator& aAllocator );
+	IMPORT_C void CreateL ( const TDesC8& aDes,RMemoryAllocator& aAllocator );
+	IMPORT_C void Free ();
+	IMPORT_C RMemCell* Remove();
+	IMPORT_C TInt NumBufs() const;
+	IMPORT_C TInt Length() const;
+	IMPORT_C void TrimStart(TInt anOffset);
+	IMPORT_C void CopyIn(const TDesC8& aDes, TInt aOffset=0);
+	IMPORT_C void CopyOut(TDes8 &aDes, TInt aOffset=0) const;
+	IMPORT_C TBool Goto(TInt anOffset, RMemCell* &resBuf, TInt& resOffset, TInt& resLength, RMemCell* &resPrevBuf) const;
+	IMPORT_C void Assign(RMemChunk& aChain);
+	IMPORT_C void Append(RMemChunk& aChain);
+	IMPORT_C RMemCell* Last() const;
+	inline RMemCell* First ();
+	inline TBool IsEmpty() const;
+	inline void Init();
+	
+private:
+	RMemCell*	iNextCell;
+	};
+	
+inline TBool RMemChunk::IsEmpty() const
+	{ 
+	return iNextCell==NULL; 
+	}
+
+inline void RMemChunk::Init()
+	{ 
+	iNextCell = NULL;	
+	}
+
+class RMemoryAllocator
+	{
+public:
+	RMemoryAllocator ( CChunkManager* aManager )
+		: iManager ( aManager )
+		{	}
+	
+	CChunkManager* ChunkManager ()
+		{
+		return iManager;
+		}
+	
+	RMemoryAllocator (  )
+		: iManager ( NULL )
+			{	}
+	
+	void SetChunkManager (CChunkManager* aChunkMgr)
+		{
+		iManager = aChunkMgr;
+		}
+private:
+	CChunkManager* iManager;	
+	};	
+
+inline RMemCell* RMemChunk::First ()
+	{
+	return iNextCell;
+	}
+	
+
+class TMemCellIterator
+	{
+	public:
+		TMemCellIterator();
+		inline TMemCellIterator(RMemCell* aChain);
+		inline TMemCellIterator(RMemChunk& aMemChunk);
+		IMPORT_C RMemCell* operator++(TInt);
+	private:
+		RMemCell* iMemCell;
+		
+	};
+
+inline TMemCellIterator::TMemCellIterator(RMemChunk& aMemChunk)
+	: iMemCell(aMemChunk.First()) 
+	{ }
+
+inline TMemCellIterator::TMemCellIterator(RMemCell* aChain)
+	: iMemCell(aChain)
+	{ }
+
+#endif /*__RMEMCHUNK_*/