diff -r 000000000000 -r bde4ae8d615e os/persistentdata/persistentstorage/store/INC/S32BTREE.INL --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/os/persistentdata/persistentstorage/store/INC/S32BTREE.INL Fri Jun 15 03:10:57 2012 +0200 @@ -0,0 +1,180 @@ +// Copyright (c) 1998-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: +// + +// Class TBtreeToken +inline TBtreeToken::TBtreeToken(TEmpty) +/** Constructor that intialises the TBtreeToken for an empty B-tree. + +@param Intialises for an empty B-tree */ + {Clear();} +inline void TBtreeToken::Touch() +/** Marks the B-tree as broken. */ + {iHeight=0;} +inline TBool TBtreeToken::IsBroken() const +/** Tests if the broken flag has been set on the B-tree. + +@return True if the B-tree is broken, otherwise false. */ + {return iFirst!=KNullPageRef&&iHeight==0;} +inline TBool TBtreeToken::IsIntact() const +/** Tests if the broken flag has not been set on the B-tree . + +@return True if the B-tree is not broken, otherwise false. */ + {return iFirst==KNullPageRef||iHeight!=0;} +inline TBool TBtreeToken::IsEmpty() const +/** Tests if the B-tree is empty. + +@return True if the B-tree is empty, otherwise false. */ + {return iFirst==KNullPageRef;} + +// Class TBtreePath +inline TBtreePath::TBtreePath() + : iEnd(-1) + {} +inline TPageRef TBtreePath::Node() const + {return iNodes[iEnd];} +inline TInt TBtreePath::Entry() const + {return iEntries[iEnd];} +inline TBool TBtreePath::IsLeaf() const + {return iEnd==0;} +inline TBtreeHeight TBtreePath::End() const + {return iEnd;} +inline void TBtreePath::SetEntry(TInt aEntry) + {iEntries[iEnd]=TUint8(aEntry);} +inline void TBtreePath::Pop() + {++iEnd;} + +// Class TBtree +inline TBool TBtree::IsDirty() const +/** Tests if the dirty flag has been set on the B-tree. + +Any updates to the B-tree will set this flag on the TBtree object. Applications +can use this to determine if they need to flush the page pool and re-save +the B-tree token, after which they can call MarkCurrent() to indicate that +the persistent storage is now up-to-date with the TBtree object. + +@return True if the dirty flag has been set, otherwise false */ + {return iStatus<0;} +inline void TBtree::MarkCurrent() +/** Clears the dirty flag. */ + {iStatus&=~EDirty;} +inline void TBtree::MarkDirty() +/** Sets the dirty flag. */ + {iStatus|=EDirty;} +inline TBool TBtree::IsBroken() const +/** Tests if the broken flag has been set on the B-tree. + +Any updates to the B-tree that fail will leave this flag set on the TBtree +object. This indicates that the persistent tree data is broken (corrupt) and +the tree needs to be repaired. In this state, none of the functions which +use a TBtreePos will work, only those taking a TBtreeMark. + +@return True if the B-tree is broken, otherwise false. */ + {return (iStatus&EBroken)!=0;} +inline TBool TBtree::IsIntact() const +/** Tests if the broken flag has not been set on the B-tree . + +@return True if the B-tree is not broken, otherwise false. */ + {return (iStatus&EBroken)==0;} +inline void TBtree::MarkBroken() +/** Sets the broken flag. */ + {if (iFirst!=KNullPageRef) iStatus|=EBroken;} +inline TBool TBtree::IsEmpty() const +/** Tests if the B-tree is empty. + +@return True if the B-tree is empty, otherwise false */ + {return iFirst==KNullPageRef;} + +// Template class TBtreeFix +template <class Entry,class Key> +inline TBtreeFix<Entry,Key>::TBtreeFix(TBtreeMode aMode) + : TBtreeFixBase(aMode,sizeof(Entry),sizeof(Key)) +/** Constructor that sets the B-tree mode. + +@param aMode B-tree operating mode */ + {} +template <class Entry,class Key> +inline TBtreeFix<Entry,Key>::TBtreeFix(const TBtreeToken& aToken,TBtreeMode aMode) + : TBtreeFixBase(aToken,aMode,sizeof(Entry),sizeof(Key)) +/** Constructor that sets the B-tree mode and initialisation parameters. + +@param aToken Parameters with which to initialise the B-tree +@param aMode B-tree operating mode */ + {} +template <class Entry,class Key> +inline TBool TBtreeFix<Entry,Key>::FindL(TBtreePos& aPos,const Key& aKey,TBtree::TFind aMode) const + {return TBtreeFixBase::FindL(aPos,&aKey,aMode);} +template <class Entry,class Key> +inline TBool TBtreeFix<Entry,Key>::InsertL(TBtreePos& aPos,const Entry& anEntry,TAllowDuplicates aDup) +/** Inserts an entry into the tree. + +@param aPos On return, the position of the entry inserted +@param anEntry Entry to insert +@param aDup Flag to indicate whether duplicate entries are allowed in the tree +@return True if successful, false if the entry was a duplicate and aDup was +set to ENoDuplicates */ + {return TBtreeFixBase::InsertL(aPos,&anEntry,aDup);} +template <class Entry,class Key> +inline TBool TBtreeFix<Entry,Key>::DeleteL(const Key& aKey) +/** Delete an entry. + +@param aKey Key of the entry to delete +@return True if successful, false if the entry was not found */ + {return TBtreeFixBase::DeleteL(&aKey);} +template <class Entry,class Key> +inline Entry TBtreeFix<Entry,Key>::AtL(const TBtreePos& aPos) const +/** Gets the entry at the specified position. + +@param aPos Position of the entry to get +@return Entry at position aPos */ + {Entry e;TBtreeFixBase::ExtractAtL(aPos,&e);return e;} +template <class Entry,class Key> +inline Entry TBtreeFix<Entry,Key>::AtL(const TBtreeMark& aMark) const +/** Gets the entry at the specified iterator position. + +@param aMark Iterator to use to get the entry +@return Entry at current iterator position */ + {Entry e;TBtreeFixBase::ExtractAtL(aMark,&e);return e;} +template <class Entry,class Key> +inline void TBtreeFix<Entry,Key>::ExtractAtL(const TBtreePos& aPos,Entry& anEntry) const +/** Gets the entry at the specified position. + +@param aPos Position of the entry to get +@param anEntry On return, the specified entry */ + {TBtreeFixBase::ExtractAtL(aPos,&anEntry);} +template <class Entry,class Key> +inline void TBtreeFix<Entry,Key>::ExtractAtL(const TBtreeMark& aMark,Entry& anEntry) const +/** Gets the entry at the specified iterator position. + +@param aMark Iterator to use to get the entry +@param anEntry On return, the specified entry */ + {TBtreeFixBase::ExtractAtL(aMark,&anEntry);} +inline TBtreeFix<TAny,TAny>::TBtreeFix(TBtreeMode aMode,TInt anEntrySize,TInt aKeySize) + : TBtreeFixBase(aMode,anEntrySize,aKeySize) +/** Constructor that sets the B-tree mode. + +@param aMode B-tree operating mode +@param anEntrySize Entry size +@param aKeySize Key size for entries */ + {} +inline TBtreeFix<TAny,TAny>::TBtreeFix(const TBtreeToken& aToken,TBtreeMode aMode,TInt anEntrySize,TInt aKeySize) + : TBtreeFixBase(aToken,aMode,anEntrySize,aKeySize) +/** Constructor that sets the B-tree mode and initialisation parameters. + +@param aToken Parameters with which to initialise the B-tree +@param aMode B-tree operating mode +@param anEntrySize Entry size +@param aKeySize Key size for entries */ + {} +