sl@0: // Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
sl@0: // All rights reserved.
sl@0: // This component and the accompanying materials are made available
sl@0: // under the terms of "Eclipse Public License v1.0"
sl@0: // which accompanies this distribution, and is available
sl@0: // at the URL "http://www.eclipse.org/legal/epl-v10.html".
sl@0: //
sl@0: // Initial Contributors:
sl@0: // Nokia Corporation - initial contribution.
sl@0: //
sl@0: // Contributors:
sl@0: //
sl@0: // Description:
sl@0: //
sl@0: 
sl@0: #include "MmfFifo.h"
sl@0: 
sl@0: const TInt TMMFFifoItemBase::iOffset = _FOFF(TMMFFifoItemBase, iSlink);
sl@0: 
sl@0: 
sl@0: /**
sl@0:  *
sl@0:  * Construct
sl@0:  *
sl@0:  */
sl@0: CMMFFifoBase::CMMFFifoBase() : iFifo(TMMFFifoItemBase::iOffset), iFifoIter(iFifo)
sl@0: 	{
sl@0: 	}
sl@0: 
sl@0: 
sl@0: /**
sl@0:  *
sl@0:  *	Destructor
sl@0:  *
sl@0:  */
sl@0: CMMFFifoBase::~CMMFFifoBase()
sl@0: 	{
sl@0: 	TMMFFifoItemBase* item;
sl@0: 	iFifoIter.SetToFirst();
sl@0: 	while((item = iFifoIter++)!=NULL)
sl@0: 		{
sl@0: 		iFifo.Remove(*item);
sl@0: 		delete item;
sl@0: 		};
sl@0: 	}
sl@0: 
sl@0: 
sl@0: /**
sl@0:  *
sl@0:  *  To remove the first stream data from queue	
sl@0:  *
sl@0:  */
sl@0: void CMMFFifoBase::RemoveFirstItemBase()
sl@0: 	{
sl@0: 	if(!iFifo.IsEmpty())
sl@0: 		{
sl@0: 		iFifo.Remove(*iFifo.First());
sl@0: 		}
sl@0: 	}
sl@0: 
sl@0: /**
sl@0:  *
sl@0:  *  To get the first stream data from queue	
sl@0:  *
sl@0:  *	@return	"CMMFFifoItem*"	
sl@0:  *			a pointer point to the stream data
sl@0:  *
sl@0:  */
sl@0: TMMFFifoItemBase* CMMFFifoBase::GetBase()
sl@0: 	{
sl@0: 	TMMFFifoItemBase* firstItem;
sl@0: 	if(iFifo.IsEmpty())
sl@0: 		return NULL;
sl@0: 	firstItem = iFifo.First();
sl@0: 	return firstItem;
sl@0: 	}
sl@0: 
sl@0: /**
sl@0:  *
sl@0:  *  To add a stream data to the queue, the data will be added at end of queue
sl@0:  *
sl@0:  *	@param	"TMMFFifoItemBase& aItem"	
sl@0:  *			a reference to data
sl@0:  *
sl@0:  */
sl@0: void CMMFFifoBase::AddToFifo(TMMFFifoItemBase& aItem)
sl@0: 	{
sl@0: 	iFifo.AddLast(aItem);
sl@0: 	}
sl@0: 
sl@0: /**
sl@0:  *
sl@0:  *  To check stream data queue empty or not	
sl@0:  *
sl@0:  *	@return	"TBool"	
sl@0:  *			a boolean value to indicate the queue is empty or not (ETrue is empty)
sl@0:  *
sl@0:  */
sl@0: TBool CMMFFifoBase::IsEmpty()
sl@0: 	{
sl@0: 	return iFifo.IsEmpty();
sl@0: 	}
sl@0: 
sl@0: 
sl@0: 
sl@0: 
sl@0: 
sl@0: