diff -r 095bea5f582e -r 0ac9a5310753 mmserv/radioutility/presetutility/src/cenrepbookkeeping.cpp --- a/mmserv/radioutility/presetutility/src/cenrepbookkeeping.cpp Tue Aug 31 15:43:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,281 +0,0 @@ -/* -* Copyright (c) 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: -* -* -*/ - -#include // RWriteStream, RReadStream - -#include "cenrepbookkeeping.h" -#include "trace.h" - - -const TUint8 KNbrOfBitsPerByte = 8; - - -#define BITSPERLWORD ( sizeof(iBookKeepingData.iUsedIndexLWords[0]) * KNbrOfBitsPerByte) - - -// ============= MEMBER FUNCTIONS ============== - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -CCenrepBookKeeping::CCenrepBookKeeping() - { - FUNC_LOG; - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -CCenrepBookKeeping::~CCenrepBookKeeping() - { - FUNC_LOG; - Clear(); - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -TInt CCenrepBookKeeping::PresetCount() const - { - FUNC_LOG; - return iBookKeepingData.iCount; - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -TInt CCenrepBookKeeping::FirstIndex() const - { - FUNC_LOG; - TInt retIndex( KErrGeneral ); - TUint32 bitMask( 0 ); - for ( TInt lwordOffset = 0; ; ++lwordOffset) - { - if ( 0 !=iBookKeepingData.iUsedIndexLWords[lwordOffset] ) - { - bitMask = 1; - for ( TUint8 bitOffset( 0 ); BITSPERLWORD > bitOffset; ++bitOffset ) - { - if ( KMaxNumberOfPresetStations <= ( ( BITSPERLWORD * lwordOffset ) + bitOffset ) ) - { - retIndex = KErrNotFound; - break; - } - if ( 0 != ( iBookKeepingData.iUsedIndexLWords[lwordOffset] & bitMask) ) - { - retIndex = ( BITSPERLWORD * lwordOffset ) + bitOffset; - break; - } - bitMask = bitMask << 1; - } - } - else if ( KMaxNumberOfPresetStations < ( BITSPERLWORD * (lwordOffset + 1) ) ) - { - retIndex = KErrNotFound; - break; - } - if ( KErrGeneral != retIndex ) - { - break; - } - } - INFO_1( "retIndex: %i", retIndex ); - return retIndex; - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -TInt CCenrepBookKeeping::NextIndex( TInt aFromIndex ) - { - FUNC_LOG; - TInt retIndex( KErrGeneral ); - TInt startIndex( aFromIndex + 1 ); - TUint32 bitMask( 0 ); - TUint8 bitOffset( 0 ); - for ( TInt lwordOffset(startIndex/BITSPERLWORD); ; ++lwordOffset) - { - if ( lwordOffset == (startIndex/BITSPERLWORD) ) - { - bitMask = 1 << (startIndex%BITSPERLWORD); - bitOffset = (startIndex%BITSPERLWORD); - } - else - { - bitMask = 1; - bitOffset = 0; - } - if ( 0 !=iBookKeepingData.iUsedIndexLWords[lwordOffset] ) - { - for ( ; BITSPERLWORD > bitOffset; ++bitOffset ) - { - if ( KMaxNumberOfPresetStations <= ( ( BITSPERLWORD * lwordOffset ) + bitOffset ) ) - { - retIndex = KErrNotFound; - break; - } - if ( 0 != ( iBookKeepingData.iUsedIndexLWords[lwordOffset] & bitMask) ) - { - retIndex = ( BITSPERLWORD * lwordOffset ) + bitOffset; - break; - } - bitMask = bitMask << 1; - } - } - else if ( KMaxNumberOfPresetStations < ( BITSPERLWORD * (lwordOffset + 1) ) ) - { - retIndex = KErrNotFound; - break; - } - if ( KErrGeneral != retIndex ) - { - break; - } - } - INFO_1( "retIndex: %i", retIndex ); - return retIndex; - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -void CCenrepBookKeeping::AddIndex( const TInt aIndex ) - { - FUNC_LOG; - if ( - ( KMaxNumberOfPresetStations >iBookKeepingData.iCount ) && - ( !IsIndexUsed( aIndex ) ) - ) - { - TInt lwordOffset(aIndex/BITSPERLWORD); - TUint bitOffset( (aIndex%BITSPERLWORD) ); - TUint32 bitMask( 1 ); - bitMask = bitMask << bitOffset; - iBookKeepingData.iUsedIndexLWords[lwordOffset] |= bitMask; - ++iBookKeepingData.iCount; - } - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -void CCenrepBookKeeping::RemoveIndex( const TInt aIndex ) - { - FUNC_LOG; - if ( - ( 0 lwordOffset; ++lwordOffset) - { - iBookKeepingData.iUsedIndexLWords[lwordOffset] = 0; - } - iBookKeepingData.iCount = 0; - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -TInt CCenrepBookKeeping::FindUnusedIndex() const - { - FUNC_LOG; - TInt retIndex( KErrGeneral ); - TUint32 bitMask( 0 ); - for ( TInt lwordOffset = 0; ; ++lwordOffset) - { - if ( 0xFFFFFFFF !=iBookKeepingData.iUsedIndexLWords[lwordOffset] ) - { - bitMask = 1; - for ( TUint8 bitOffset = 0; BITSPERLWORD > bitOffset; ++bitOffset ) - { - if ( KMaxNumberOfPresetStations <= ( ( BITSPERLWORD * lwordOffset ) + bitOffset ) ) - { - retIndex = KErrNotFound; - break; - } - if ( 0 == ( iBookKeepingData.iUsedIndexLWords[lwordOffset] & bitMask) ) - { - retIndex = ( BITSPERLWORD * lwordOffset ) + bitOffset; - break; - } - bitMask = bitMask << 1; - } - } - else if ( KMaxNumberOfPresetStations < ( BITSPERLWORD * (lwordOffset + 1) ) ) - { - retIndex = KErrNotFound; - break; - } - if ( KErrGeneral != retIndex ) - { - break; - } - } - INFO_1( "retIndex: %i", retIndex ); - return retIndex; - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -TBool CCenrepBookKeeping::IsIndexUsed( const TInt aIndex ) - { - FUNC_LOG; - TInt lwordOffset(aIndex/BITSPERLWORD); - TUint bitOffset( (aIndex%BITSPERLWORD) ); - TUint32 bitMask( 1 ); - bitMask = bitMask << bitOffset; - return ( iBookKeepingData.iUsedIndexLWords[lwordOffset] & bitMask); - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -TPtr8 CCenrepBookKeeping::BookKeepingData() - { - TPtr8 bookKeepingData( (TUint8*)&iBookKeepingData, sizeof( iBookKeepingData ), sizeof( iBookKeepingData ) ); - return bookKeepingData; - }