williamr@2: // Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@2: // All rights reserved. williamr@2: // This component and the accompanying materials are made available williamr@2: // 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 williamr@2: // which accompanies this distribution, and is available williamr@2: // at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". williamr@2: // williamr@2: // Initial Contributors: williamr@2: // Nokia Corporation - initial contribution. williamr@2: // williamr@2: // Contributors: williamr@2: // williamr@2: // Description: williamr@2: // williamr@2: williamr@2: #if !defined(__S32CONT_H__) williamr@2: #define __S32CONT_H__ williamr@2: #if !defined(__S32BTREE_H__) williamr@2: #include williamr@2: #endif williamr@2: williamr@2: /** williamr@2: * @publishedAll williamr@2: * @released williamr@2: */ williamr@2: class TPagedSetToken : public TBtreeToken williamr@2: { williamr@2: public: williamr@2: TPagedSetToken() {} williamr@2: inline TPagedSetToken(TEmpty); williamr@2: // williamr@2: inline TInt Count() const; williamr@2: // williamr@2: IMPORT_C void ExternalizeL(RWriteStream& aStream) const; williamr@2: IMPORT_C void InternalizeL(RReadStream& aStream); williamr@2: protected: williamr@2: IMPORT_C void Clear(); williamr@2: private: williamr@2: inline TPagedSetToken(const TBtreeToken& aTree,TInt aCount); williamr@2: private: williamr@2: TInt iCount; williamr@2: private: williamr@2: friend class TPagedSetBase; williamr@2: }; williamr@2: #define KEmptyPagedSetToken TPagedSetToken(TPagedSetToken::EEmpty) williamr@2: williamr@2: /** williamr@2: * @publishedAll williamr@2: * @released williamr@2: */ williamr@2: class TPagedSetBase williamr@2: { williamr@2: public: williamr@2: IMPORT_C void Connect(MPagePool* aPool); williamr@2: IMPORT_C void Set(const TPagedSetToken& aToken); williamr@2: IMPORT_C TPagedSetToken Token() const; williamr@2: // williamr@2: inline TBool IsDirty() const; williamr@2: inline void MarkCurrent(); williamr@2: inline void MarkDirty(); williamr@2: // williamr@2: inline TBool IsBroken() const; williamr@2: inline TBool IsIntact() const; williamr@2: inline void MarkBroken(); williamr@2: IMPORT_C TInt RepairL(); williamr@2: // williamr@2: inline TInt Count() const; williamr@2: inline TBool IsEmpty() const; williamr@2: IMPORT_C void ClearL(); williamr@2: // williamr@2: IMPORT_C TBool ContainsL(const TAny* aPtr) const; williamr@2: IMPORT_C void InsertL(const TAny* aPtr); williamr@2: IMPORT_C void DeleteL(const TAny* aPtr); williamr@2: protected: williamr@2: IMPORT_C TPagedSetBase(TInt anEntrySize); williamr@2: IMPORT_C TPagedSetBase(const TPagedSetToken& aToken,TInt anEntrySize); williamr@2: IMPORT_C void InsertAllowDuplicatesL(const TAny* aPtr); williamr@2: private: williamr@2: TBtreeFix iTree; williamr@2: TBtreeKey iKey; williamr@2: TInt iCount; williamr@2: private: williamr@2: friend class TPagedSetIterBase; williamr@2: friend class TPagedSetBiIterBase; williamr@2: }; williamr@2: williamr@2: /** williamr@2: * @publishedAll williamr@2: * @released williamr@2: */ williamr@2: class TPagedMultisetBase : public TPagedSetBase williamr@2: { williamr@2: public: williamr@2: inline void InsertL(const TAny* aPtr); williamr@2: protected: williamr@2: inline TPagedMultisetBase(TInt anEntrySize); williamr@2: inline TPagedMultisetBase(const TPagedSetToken& aToken,TInt anEntrySize); williamr@2: }; williamr@2: williamr@2: /** williamr@2: * @publishedAll williamr@2: * @released williamr@2: */ williamr@2: template williamr@2: class TPagedSet : public TPagedSetBase williamr@2: { williamr@2: public: williamr@2: inline TPagedSet(); williamr@2: inline TPagedSet(const TPagedSetToken& aToken); williamr@2: // williamr@2: inline TBool ContainsL(const T& anObject) const; williamr@2: inline void InsertL(const T& anObject); williamr@2: inline void DeleteL(const T& anObject); williamr@2: }; williamr@2: williamr@2: /** williamr@2: * @publishedAll williamr@2: * @released williamr@2: */ williamr@2: TEMPLATE_SPECIALIZATION class TPagedSet : public TPagedSetBase williamr@2: { williamr@2: public: williamr@2: inline TPagedSet(TInt anEntrySize); williamr@2: inline TPagedSet(const TPagedSetToken& aToken,TInt anEntrySize); williamr@2: }; williamr@2: williamr@2: /** williamr@2: * @publishedAll williamr@2: * @released williamr@2: */ williamr@2: template williamr@2: class TPagedMultiset : public TPagedMultisetBase williamr@2: { williamr@2: public: williamr@2: inline TPagedMultiset(); williamr@2: inline TPagedMultiset(const TPagedSetToken& aToken); williamr@2: // williamr@2: inline TBool ContainsL(const T& anObject) const; williamr@2: inline void InsertL(const T& anObject); williamr@2: inline void DeleteL(const T& anObject); williamr@2: }; williamr@2: williamr@2: /** williamr@2: * @publishedAll williamr@2: * @released williamr@2: */ williamr@2: TEMPLATE_SPECIALIZATION class TPagedMultiset : public TPagedMultisetBase williamr@2: { williamr@2: public: williamr@2: inline TPagedMultiset(TInt anEntrySize); williamr@2: inline TPagedMultiset(const TPagedSetToken& aToken,TInt anEntrySize); williamr@2: }; williamr@2: williamr@2: /** williamr@2: * @publishedAll williamr@2: * @released williamr@2: */ williamr@2: class TPagedSetIterBase williamr@2: { williamr@2: public: williamr@2: IMPORT_C TBool ResetL(); williamr@2: IMPORT_C TBool NextL(); williamr@2: IMPORT_C void ExtractAtL(TAny* aPtr) const; williamr@2: protected: williamr@2: inline TPagedSetIterBase(const TPagedSetBase& aSet); williamr@2: private: williamr@2: const TBtreeFixBase* iTree; williamr@2: TBtreeMark iMark; williamr@2: }; williamr@2: williamr@2: /** williamr@2: * @publishedAll williamr@2: * @released williamr@2: */ williamr@2: template williamr@2: class TPagedSetIter : public TPagedSetIterBase williamr@2: { williamr@2: public: williamr@2: inline TPagedSetIter(const TPagedSet& aSet); williamr@2: inline TPagedSetIter(const TPagedMultiset& aSet); williamr@2: inline T AtL() const; williamr@2: inline void ExtractAtL(T& anObject) const; williamr@2: }; williamr@2: williamr@2: /** williamr@2: * @publishedAll williamr@2: * @released williamr@2: */ williamr@2: TEMPLATE_SPECIALIZATION class TPagedSetIter : public TPagedSetIterBase williamr@2: { williamr@2: public: williamr@2: inline TPagedSetIter(const TPagedSetBase& aSet); williamr@2: }; williamr@2: williamr@2: /** williamr@2: * @publishedAll williamr@2: * @released williamr@2: */ williamr@2: class TPagedSetBiIterBase williamr@2: { williamr@2: public: williamr@2: IMPORT_C TBool FirstL(); williamr@2: IMPORT_C TBool LastL(); williamr@2: IMPORT_C TBool NextL(); williamr@2: IMPORT_C TBool PreviousL(); williamr@2: IMPORT_C void ExtractAtL(TAny* aPtr) const; williamr@2: protected: williamr@2: inline TPagedSetBiIterBase(const TPagedSetBase& aSet); williamr@2: private: williamr@2: const TBtreeFixBase* iTree; williamr@2: TBtreePos iPos; williamr@2: }; williamr@2: williamr@2: /** williamr@2: * @publishedAll williamr@2: * @released williamr@2: */ williamr@2: template williamr@2: class TPagedSetBiIter : public TPagedSetBiIterBase williamr@2: { williamr@2: public: williamr@2: inline TPagedSetBiIter(const TPagedSet& aSet); williamr@2: inline TPagedSetBiIter(const TPagedMultiset& aSet); williamr@2: inline T AtL() const; williamr@2: inline void ExtractAtL(T& anObject) const; williamr@2: }; williamr@2: williamr@2: /** williamr@2: * @publishedAll williamr@2: * @released williamr@2: */ williamr@2: TEMPLATE_SPECIALIZATION class TPagedSetBiIter : public TPagedSetBiIterBase williamr@2: { williamr@2: public: williamr@2: inline TPagedSetBiIter(const TPagedSetBase& aSet); williamr@2: }; williamr@2: williamr@2: /** williamr@2: * @publishedAll williamr@2: * @released williamr@2: */ williamr@2: class TPagedSetRIterBase williamr@2: { williamr@2: public: williamr@2: inline TBool ResetL(); williamr@2: inline TBool NextL(); williamr@2: inline void ExtractAtL(TAny* aPtr) const; williamr@2: protected: williamr@2: inline TPagedSetRIterBase(const TPagedSetBase& aSet); williamr@2: private: williamr@2: TPagedSetBiIter iIter; williamr@2: }; williamr@2: williamr@2: /** williamr@2: * @publishedAll williamr@2: * @released williamr@2: */ williamr@2: template williamr@2: class TPagedSetRIter : public TPagedSetRIterBase williamr@2: { williamr@2: public: williamr@2: inline TPagedSetRIter(const TPagedSet& aSet); williamr@2: inline TPagedSetRIter(const TPagedMultiset& aSet); williamr@2: inline T AtL() const; williamr@2: inline void ExtractAtL(T& anObject) const; williamr@2: }; williamr@2: williamr@2: /** williamr@2: * @publishedAll williamr@2: * @released williamr@2: */ williamr@2: TEMPLATE_SPECIALIZATION class TPagedSetRIter : public TPagedSetRIterBase williamr@2: { williamr@2: public: williamr@2: inline TPagedSetRIter(const TPagedSetBase& aSet); williamr@2: }; williamr@2: williamr@2: #include williamr@2: #endif