/** Copyright (c) 2002-2005 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 file for Iscqueue**/#ifndef DISCQUEUE_H#define DISCQUEUE_H// INCLUDES#include <kernel.h>// CONSTANTS// MACROS// DATA TYPES// FUNCTION PROTOTYPES// FORWARD DECLARATIONS// CLASS DECLARATION/*** Generic FIFO-type class** @lib IscDriver.LIB* @since 2.8*/class DIscQueue { public: // Constructors and destructor DIscQueue(); /** * C++ default constructor. */ IMPORT_C DIscQueue( TUint32** aQueue, TUint16 Size ); /** * Destructor. */ IMPORT_C virtual ~DIscQueue(); /** * Function to add element to queue * @since 2.8 * @param TAny* pointer to frame * @return TInt KErrNone / KErrNoMemory */ IMPORT_C TInt Add( TAny* ); /** * Removes first element from the queue * @since 2.8 * @return TAny* pointer to frame */ IMPORT_C TAny* RemoveFirst(); /** * Fetches first element from the queue * @since 2.8 * @return TAny* pointer to frame */ IMPORT_C TAny* GetFirst(); /** * Deletes first element from the queue * @since 2.8 * @return void */ IMPORT_C void DeleteFirst(); /** * Checks if queue is empty * @since 2.8 * @return TBool ETrue if empty, otherwise EFalse */ IMPORT_C TBool Empty(); /** * Gets length of next frame in queue * @since 2.8 * @return TUint16 */ IMPORT_C TUint16 NextBufferLength(); /** * Inline function to tell the amount of elements in queue * @since 2.8 * @return TUint16 amount of elements in queue */ inline TUint16 Count() const { return iCount; }; /** * Inline function to tell the size of queue * @since 2.8 * @return TUint16 size of queue */ inline TUint16 SizeOf() const { return iSize; }; protected: /** * Function to disable interrupts * @since 2.8 * @return TInt KErrNone if succesful */ TInt DisableIrqs(); /** * Function to restore interrupts * @since 2.8 * @param TInt aLevel level where interrupts should be restored * @return void */ void RestoreIrqs( TInt aLevel ); volatile TUint16 iHead; volatile TUint16 iTail; volatile TUint16 iCount; TUint16 iSize; TUint32** iQueue; };#endif // DISCQUEUE_H// End of File