diff -r 000000000000 -r bde4ae8d615e os/mm/mmlibs/mmfw/src/Client/Audio/MmfFifo.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/os/mm/mmlibs/mmfw/src/Client/Audio/MmfFifo.h Fri Jun 15 03:10:57 2012 +0200 @@ -0,0 +1,92 @@ +// Copyright (c) 2001-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: +// + +#ifndef __MMFFIFO_H_ +#define __MMFFIFO_H_ + +// standard EPOC include header files +#include +#include + + +/** + Class for storing stream data +*/ +class TMMFFifoItemBase + { +public: + static const TInt iOffset; +private: + TSglQueLink iSlink; + }; + +template +class TMMFFifoItem : public TMMFFifoItemBase + { +public: + inline TMMFFifoItem(T& aData); + inline T& GetData(); +private: + T& iData; + }; + +/** + Class for processing stream data queue (add, get, remove etc) +*/ +class CMMFFifoBase : public CBase + { +public: + virtual ~CMMFFifoBase(); + TBool IsEmpty(); + void AddToFifo(TMMFFifoItemBase& aItem); +protected: + CMMFFifoBase(); + void RemoveFirstItemBase(); + TMMFFifoItemBase* GetBase(); +private: + TSglQue iFifo; + TSglQueIter iFifoIter; + }; + +template +class CMMFFifo : public CMMFFifoBase + { +public: + inline void RemoveFirstItem(); + inline TMMFFifoItem* Get(); + }; + + +template +TMMFFifoItem::TMMFFifoItem(T& aData) +: iData(aData) + {} + +template +T& TMMFFifoItem::GetData() + { return iData; } + +// + +template +void CMMFFifo::RemoveFirstItem() + { RemoveFirstItemBase(); } + +template +inline TMMFFifoItem* CMMFFifo::Get() + { return STATIC_CAST(TMMFFifoItem*, GetBase()); } + + +#endif