Fix for bug 2283 (RVCT 4.0 support is missing from PDK 3.0.h)
Have multiple extension sections in the bld.inf, one for each version
of the compiler. The RVCT version building the tools will build the
runtime libraries for its version, but make sure we extract all the other
versions from zip archives. Also add the archive for RVCT4.
// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
// All rights reserved.
// This component and the accompanying materials are made available
// under the terms of the License "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:
// e32\include\drivers\usbcque.h
// Simple singly linked list + its iterator for the USB Device driver.
//
//
/**
@file usbcque.h
@internalTechnology
*/
#ifndef __USBCQUE_H__
#define __USBCQUE_H__
#include <kernel/kernel.h>
//
// --- Class definitions ---
//
class TSglQueLink
{
private:
void Enque(TSglQueLink* aLink);
public:
TSglQueLink* iNext;
friend class TSglQueBase;
};
class TSglQueBase
{
protected:
TSglQueBase(TInt aOffset);
void DoAddLast(TAny* aPtr);
void DoRemove(TAny* aPtr);
protected:
TSglQueLink* iHead;
TSglQueLink* iLast;
TInt iOffset;
TInt iElements;
private:
friend class TSglQueIterBase;
};
template<class T>
class TSglQue : public TSglQueBase
{
public:
inline TSglQue(TInt aOffset);
inline void AddLast(T& aRef);
inline void Remove(T& aRef);
inline TInt Elements() const;
};
class TSglQueIterBase
{
public:
void SetToFirst();
protected:
TSglQueIterBase(TSglQueBase& aQue);
TAny* DoPostInc();
TAny* DoCurrent();
protected:
TInt iOffset;
TSglQueLink*& iHead;
TSglQueLink* iNext;
};
template<class T>
class TSglQueIter : public TSglQueIterBase
{
public:
inline TSglQueIter(TSglQueBase& aQue);
inline operator T*();
inline T* operator++(TInt);
};
//
// --- Inline implementations ---
//
// Class TSglQue
template<class T>
inline TSglQue<T>::TSglQue(TInt aOffset)
: TSglQueBase(aOffset)
{}
template<class T>
inline void TSglQue<T>::AddLast(T& aRef)
{
DoAddLast(&aRef);
}
template<class T>
inline void TSglQue<T>::Remove(T& aRef)
{
DoRemove(&aRef);
}
template<class T>
inline TInt TSglQue<T>::Elements() const
{
return iElements;
}
// Class TSglQueIter
template<class T>
inline TSglQueIter<T>::TSglQueIter(TSglQueBase& aQue)
: TSglQueIterBase(aQue)
{}
template<class T>
inline TSglQueIter<T>::operator T*()
{
return ((T*)DoCurrent());
}
template<class T>
inline T* TSglQueIter<T>::operator++(TInt)
{
return ((T*)DoPostInc());
}
#endif // __USBCQUE_H__