diff -r 000000000000 -r 96e5fb8b040d userlibandfileserver/fileserver/sfat32/sl_cache.inl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/userlibandfileserver/fileserver/sfat32/sl_cache.inl Thu Dec 17 09:24:54 2009 +0200 @@ -0,0 +1,106 @@ +// Copyright (c) 1996-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: +// f32\sfat32\inc\sl_cache.inl +// +// + +/** + @file + @internalTechnology +*/ + +#ifndef SL_CACHE_INL +#define SL_CACHE_INL + + +/** + @param aPos media linear position + @return ETrue if the aPos belongs to this page +*/ +TBool CWTCachePage::PosCached(TInt64 aPos) const + { + return (iValid && aPos >= iStartPos && aPos < iStartPos+PageSize()); + } + + +/** + Calculate data position within cache page relatively to the page beginning. + @param aPos media linear position + @return data offset from the beginning of the page +*/ +TUint32 CWTCachePage::PosInCachePage(TInt64 aPos) const + { + return ((TUint32)aPos - (TUint32)iStartPos) & (PageSize()-1); + } + +/** + Obtain pointer to the data in the cache page by media inear position + @param aPos media linear position + @return pointer to the data in page buffer +*/ +TUint8* CWTCachePage::PtrInCachePage(TInt64 aPos) const + { + return (TUint8*)iData.Ptr() + PosInCachePage(aPos); + } + +/** + @return cache page size in bytes +*/ +TUint32 CWTCachePage::PageSize() const + { + return iData.Size(); + } + +//--------------------------------------------------------------------------------------------------------------------------------- + + +/** + Just helper method to calculate cache page start position by given media pos. + @param aPos media linear position + @return rounded-down and aligned position that is the beginning of the cache page +*/ +TInt64 CMediaWTCache::CalcPageStartPos(TInt64 aPos) const + { + ASSERT(aPos >= iCacheBasePos); + return (((aPos - iCacheBasePos) >> iPageSizeLog2) << iPageSizeLog2) + iCacheBasePos; + } + +/** + @return cache page size +*/ +TUint32 CMediaWTCache::PageSize() const + { + return 1<