diff -r 666f914201fb -r 2fe1408b6811 epoc32/include/s32btree.inl --- a/epoc32/include/s32btree.inl Tue Nov 24 13:55:44 2009 +0000 +++ b/epoc32/include/s32btree.inl Tue Mar 16 16:12:26 2010 +0000 @@ -1,1 +1,179 @@ -s32btree.inl +// 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 the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members +// which accompanies this distribution, and is available +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.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 +inline TBtreeFix::TBtreeFix(TBtreeMode aMode) + : TBtreeFixBase(aMode,sizeof(Entry),sizeof(Key)) +/** Constructor that sets the B-tree mode. + +@param aMode B-tree operating mode */ + {} +template +inline TBtreeFix::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 +inline TBool TBtreeFix::FindL(TBtreePos& aPos,const Key& aKey,TBtree::TFind aMode) const + {return TBtreeFixBase::FindL(aPos,&aKey,aMode);} +template +inline TBool TBtreeFix::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 +inline TBool TBtreeFix::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 +inline Entry TBtreeFix::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 +inline Entry TBtreeFix::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 +inline void TBtreeFix::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 +inline void TBtreeFix::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::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::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 */ + {}