williamr@2: /* williamr@2: * Copyright (c) 2005-2006 Nokia Corporation and/or its subsidiary(-ies). williamr@2: * All rights reserved. williamr@2: * This component and the accompanying materials are made available williamr@2: * under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members williamr@2: * which accompanies this distribution, and is available williamr@2: * at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". williamr@2: * williamr@2: * Initial Contributors: williamr@2: * Nokia Corporation - initial contribution. williamr@2: * williamr@2: * Contributors: williamr@2: * williamr@2: * Description: CPosLmItemIterator class williamr@2: * williamr@2: */ williamr@2: williamr@2: williamr@2: #ifndef CPOSLMITEMITERATOR_H williamr@2: #define CPOSLMITEMITERATOR_H williamr@2: williamr@2: #include williamr@2: #include "EPos_Landmarks.h" williamr@2: williamr@2: /** williamr@2: * Landmark item iterator. williamr@2: * williamr@2: * This is an abstract base class for objects which iterates a set of database williamr@2: * items in a single database. williamr@2: * williamr@2: * A database item is an item which is stored in a landmark database, i.e. a williamr@2: * landmark or a landmark category. williamr@2: * williamr@2: * Note that an iterator either iterates categories or landmarks. The items are williamr@2: * never mixed. williamr@2: * williamr@2: * This class does not export a constructor. The instance is created by the williamr@2: * operation which generates the item set to be iterated. The iterator may williamr@2: * implement a caching scheme, but that scheme depends on what is iterated. williamr@2: * williamr@2: * @lib eposlandmarks.lib williamr@2: * @since S60 3.0 williamr@2: */ williamr@2: class CPosLmItemIterator : public CBase williamr@2: { williamr@2: public: williamr@2: williamr@2: /** williamr@2: * Destructor. williamr@2: */ williamr@2: IMPORT_C virtual ~CPosLmItemIterator(); williamr@2: williamr@2: public: williamr@2: williamr@2: /** williamr@2: * Returns the next database item ID in the iterated set. williamr@2: * williamr@2: * The first call will return the first database item ID in the set. williamr@2: * williamr@2: * @return The next database item ID, or @p KPosLmNullItemId if there williamr@2: * are no more database items in the iterated set. williamr@2: */ williamr@2: virtual TPosLmItemId NextL() = 0; williamr@2: williamr@2: /** williamr@2: * Resets the database item iterator. williamr@2: * williamr@2: * The next call to @ref NextL will return the first database item ID in williamr@2: * the iterated set. williamr@2: */ williamr@2: virtual void Reset() = 0; williamr@2: williamr@2: /** williamr@2: * Returns the number of database items which are iterated. williamr@2: * williamr@2: * @return Number of items in the iterated database item set. williamr@2: */ williamr@2: virtual TUint NumOfItemsL() = 0; williamr@2: williamr@2: /** williamr@2: * Fetches a sequence of database items from the iterated set. williamr@2: * williamr@2: * The client supplies an ID array which will be filled by this williamr@2: * operation. The array will be reset before any items are added. williamr@2: * williamr@2: * The client specifies which database item sequence to fetch by williamr@2: * supplying a start index (0 is the first item) and the number of items williamr@2: * to fetch. williamr@2: * williamr@2: * @param[out] aIdArray On return contains the requested items. williamr@2: * @param[in] aStartIndex The index of the first item to fetch. williamr@2: * @param[in] aNumOfItems The number of items to fetch williamr@2: * williamr@2: * @panic "Landmarks Client"-EPosSpecifiedIntervalLiesOutsideIteratedSet williamr@2: * specified interval lies [partially] outside the iterated set. williamr@2: */ williamr@2: virtual void GetItemIdsL( williamr@2: RArray& aIdArray, williamr@2: TInt aStartIndex, williamr@2: TInt aNumOfItems williamr@2: ) = 0; williamr@2: williamr@2: protected: williamr@2: williamr@2: // C++ constructor. williamr@2: IMPORT_C CPosLmItemIterator(); williamr@2: williamr@2: private: williamr@2: williamr@2: // Prohibit copy constructor williamr@2: CPosLmItemIterator( const CPosLmItemIterator& ); williamr@2: // Prohibit assigment operator williamr@2: CPosLmItemIterator& operator= ( const CPosLmItemIterator& ); williamr@2: williamr@2: }; williamr@2: williamr@2: #endif // CPOSLMITEMITERATOR_H williamr@2: williamr@2: