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: