diff -r 36bfc973b146 -r 329ab0095843 userlibandfileserver/fileserver/inc/filesystem_utils.inl --- a/userlibandfileserver/fileserver/inc/filesystem_utils.inl Thu Jan 07 13:38:45 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,201 +0,0 @@ -// Copyright (c) 1995-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: -// - -/** - @file - @internalTechnology -*/ - -#if !defined(__FILESYSTEM_UTILS_INL__) -#define __FILESYSTEM_UTILS_INL__ - - -//----------------------------------------------------------------------------- -/** @return 2^aVal */ -inline TUint32 Pow2(TUint32 aVal) - { - ASSERT(aVal<32); - return 1 << aVal; - } - -//----------------------------------------------------------------------------- -/** @return TUint32 value equals 2^aVal */ -inline TUint32 Pow2_32(TUint32 aVal) - { - ASSERT(aVal < 32); - return 1 << aVal; - } - -//----------------------------------------------------------------------------- -/** @return TUint64 value equals 2^aVal */ -inline TUint64 Pow2_64(TUint32 aVal) - { - ASSERT(aVal < 64); - return ((TUint64)1) << aVal; - } - -//----------------------------------------------------------------------------- -/** - Indicates if a number passed in is a power of two - @return ETrue if aVal is a power of 2 -*/ -inline TBool IsPowerOf2(TUint32 aVal) - { - if (aVal==0) - return EFalse; - - return !(aVal & (aVal-1)); - } - -//----------------------------------------------------------------------------- -/** - Indicates if a number passed in is a power of two - @return ETrue if aVal is a power of 2 -*/ -inline TBool IsPowerOf2_64(TUint64 aVal) - { - if (aVal==0) - return EFalse; - - return !(aVal & (aVal-1)); - - } - -//----------------------------------------------------------------------------- - -/** - rounds down the given value to 2^aGranularityLog2 - @param aVal input value to round down - @param aGranularityLog2 Log2(granularity) - @return rounded - down value -*/ -inline TUint32 RoundDown(TUint32 aVal, TUint32 aGranularityLog2) -{ - ASSERT(aGranularityLog2 < 32); - return (aVal >> aGranularityLog2) << aGranularityLog2; -} - -//----------------------------------------------------------------------------- -/** - Rounds up aVal to the 2^aGranularityLog2 - For example: RoundUp(0x08, 2) == 0x08; RoundUp(0x08, 3) == 0x08; RoundUp(0x08, 4) == 0x10; RoundUp(0x19, 4) == 0x20 - - @return rounded-up value -*/ -inline TUint32 RoundUp(TUint32 aVal, TUint32 aGranularityLog2) - { - ASSERT(aGranularityLog2 < 32); - - if( (aVal & ((1<>= aGranularityLog2; - aVal++; - aVal <<= aGranularityLog2; - - return aVal; - } - -//----------------------------------------------------------------------------- - -/** - @return Boolean exclusive OR between a1 and a2 - This function should be used on C-style TBool, which is, actually TInt type; Its '0' value means "False" and _any_ non-zero means "True" - E.g: BoolXor(0x17, 0x4a) == EFalse; -*/ -TBool BoolXOR(TBool a1, TBool a2) - { - if(!a1 && !a2) - return EFalse; - else if(a1 && a2) - return EFalse; - else - return ETrue; - } - -//----------------------------------------------------------------------------- - -/** - Calculates the log2 of a number - This is the explicitly inlined version. Extensive using it may result in a code bloat. - - @param aNum Number to calulate the log two of - @return The log two of the number passed in -*/ -inline TUint32 Log2_inline(TUint32 aVal) - { - __ASSERT_COMPILE(sizeof(TUint32) == 4); - ASSERT(aVal); - - TUint32 bitPos=31; - - if(!(aVal >> 16)) {bitPos-=16; aVal<<=16;} - if(!(aVal >> 24)) {bitPos-=8; aVal<<=8 ;} - if(!(aVal >> 28)) {bitPos-=4; aVal<<=4 ;} - if(!(aVal >> 30)) {bitPos-=2; aVal<<=2 ;} - if(!(aVal >> 31)) {bitPos-=1;} - - return bitPos; - } - - -//----------------------------------------------------------------------------- -/** - Calculates number of '1' bits in the aVal - This is the explicitly inlined version. Extensive using it may result in a code bloat. - - @param aVal some value - @return number of '1' bits in the aVal -*/ -inline TUint32 Count1Bits_inline(TUint32 aVal) - { - if(!aVal) - return 0; - - if(aVal == 0xFFFFFFFF) - return 32; - - aVal = aVal - ((aVal >> 1) & 0x55555555); - aVal = (aVal & 0x33333333) + ((aVal >> 2) & 0x33333333); - aVal = (aVal + (aVal >> 4)) & 0x0f0f0f0f; - aVal = aVal + (aVal >> 8); - aVal = aVal + (aVal >> 16); - - return aVal & 0x3f; - } - - - - - - -#endif //__FILESYSTEM_UTILS_INL__ - - - - - - - - - - - - - - - - -