renamed dlls+exe to prevent conflicts with existing files in emulator; changelog attached.
* renamed dlls/exe:
- aifw.dll to aifw_hs.dll
- cputils to cputils_hs
- aiidleint.dll to aiidleint_hs.dll
- aiutils.dll to aiutils_hs.dll
- MenuInterface.dll to MenuInterface_hs.dll
- XCFW.dll to XCFW_hs.dll
- homescreen.exe to homescreen_hs.exe
- ailaunch.exe to ailaunch_hs.exe
* new UID for Active Idle (aifw_hs.dll, aiidleint_hs.dll and homescreen.exe):
#define AI_UID3_AIFW_COMMON 0xEDFF45C4 (was 0x102750F0 = 271012080)
* new UID for cputils_hs.dll: 0xE3E7134E (was 0x20016B7F = 536963967)
* new UID for AI Utilities Factory (aiutils_hs.dll): 0xEC55106C (was 0x10281865 = 271063141)
* new UID for MenuInterface_hs.dll: 0xEEE24485 (was 0x10210EAB = 270601899)
* new UID for XCFW_hs.dll: 0xEB12332F (was 0x10210EA0 = 270601888)
* new UID for ailaunch_hs.exe: 0xEF5A047A (was 0x200286E3 = 537036515)
/*
* Copyright (c) 2002-2004 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: Iterates over a tree, breadth first
*
*/
#ifndef XNNODEBREADTHFIRSTITERATOR_H
#define XNNODEBREADTHFIRSTITERATOR_H
#include <e32base.h>
#include <e32cmn.h>
#include "xnchilditerator.h"
// Constants
/**
* Queue granularity value
*/
const TInt KMemoryAloc = 128;
template< class T > class CXnNodeBreadthFirstIterator : public CBase,
public MXnChildIterator
{
public:
/**
* Two-phased constructor.
* @param aStartNode Object to iterate over
*/
static CXnNodeBreadthFirstIterator< T >* NewL( T& aStartNode );
/**
* Destructor.
*/
virtual ~CXnNodeBreadthFirstIterator();
/**
* Get the next iterator value.
* @return Next object or NULL if no more values.
*/
T* NextL();
/**
* Get the current iterator value.
* @return Current object
*/
T* Value();
/**
* Get the previous iterator value. Obsolete!
* @return NULL
*/
T* PreviousL();
/**
* Get the current iterator index. Obsolete!
* @return value 0
*/
TUint Index() const;
protected:
/**
* C++ default constructor.
*/
CXnNodeBreadthFirstIterator( T* aStartNode );
/**
* 2nd phase constructor.
*/
void ConstructL();
private:
// Queue
RPointerArray< T > iQueue;
// Object to iterate over
T* iStart;
// Current object
T* iCurrent;
};
// -----------------------------------------------------------------------------
// CXnNodeBreadthFirstIterator< T >::NewL()
// -----------------------------------------------------------------------------
//
template< class T > CXnNodeBreadthFirstIterator< T >*
CXnNodeBreadthFirstIterator< T >::NewL( T& aStartNode )
{
CXnNodeBreadthFirstIterator< T >* p =
new ( ELeave )CXnNodeBreadthFirstIterator< T >( &aStartNode );
CleanupStack::PushL( p );
p->ConstructL();
CleanupStack::Pop();
return p;
}
// -----------------------------------------------------------------------------
// CXnNodeBreadthFirstIterator< T >::CXnNodeBreadthFirstIterator()
// C++ default constructor
// -----------------------------------------------------------------------------
//
template< class T >
CXnNodeBreadthFirstIterator < T >::CXnNodeBreadthFirstIterator(
T* aStartNode ): iStart( aStartNode ), iCurrent( aStartNode ),
iQueue( KMemoryAloc )
{
}
// -----------------------------------------------------------------------------
// CXnNodeBreadthFirstIterator< T >::~CXnNodeBreadthFirstIterator()
// C++ default destructor.
// -----------------------------------------------------------------------------
//
template< class T >
CXnNodeBreadthFirstIterator< T >::~CXnNodeBreadthFirstIterator()
{
iQueue.Close();
}
// -----------------------------------------------------------------------------
// CXnNodeBreadthFirstIterator< T >::ConstructL()
// Symbian 2nd phase constructor can leave.
// -----------------------------------------------------------------------------
//
template< class T > void CXnNodeBreadthFirstIterator< T >::ConstructL()
{
iQueue.AppendL( iStart );
}
// -----------------------------------------------------------------------------
// CXnNodeBreadthFirstIterator< T >::NextL()
// -----------------------------------------------------------------------------
//
template< class T > T* CXnNodeBreadthFirstIterator< T >::NextL()
{
if( iQueue.Count() )
{
// Dequeue
iCurrent = iQueue[0];
iQueue.Remove(0);
RPointerArray< T >& currentChildNodes = iCurrent->Children();
TInt currentChildCount( currentChildNodes.Count() );
// Enqueue
for( TInt i = 0; i < currentChildCount; ++i )
{
iQueue.AppendL( currentChildNodes[i] );
}
}
else
{
iCurrent = NULL;
iQueue.Reset();
iQueue.AppendL( iStart );
}
return iCurrent;
}
// -----------------------------------------------------------------------------
// CXnNodeBreadthFirstIterator< T >::Value()
// -----------------------------------------------------------------------------
//
template< class T > T* CXnNodeBreadthFirstIterator< T >::Value()
{
return iCurrent;
}
// -----------------------------------------------------------------------------
// CXnNodeBreadthFirstIterator< T >::PreviousL()
// -----------------------------------------------------------------------------
//
template< class T > T* CXnNodeBreadthFirstIterator< T >::PreviousL()
{
return NULL;
}
// -----------------------------------------------------------------------------
// CXnNodeBreadthFirstIterator< T >::Index()
// -----------------------------------------------------------------------------
//
template< class T > TUint CXnNodeBreadthFirstIterator< T >::Index() const
{
return 0;
}
#endif //CXNNODEBREADTHFIRSTITERATOR_H
// End of File