os/persistentdata/persistentstorage/store/UCONT/UC_SET.CPP
author sl
Tue, 10 Jun 2014 14:32:02 +0200 (2014-06-10)
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
sl@0
     1
// Copyright (c) 1998-2010 Nokia Corporation and/or its subsidiary(-ies).
sl@0
     2
// All rights reserved.
sl@0
     3
// This component and the accompanying materials are made available
sl@0
     4
// under the terms of "Eclipse Public License v1.0"
sl@0
     5
// which accompanies this distribution, and is available
sl@0
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
sl@0
     7
//
sl@0
     8
// Initial Contributors:
sl@0
     9
// Nokia Corporation - initial contribution.
sl@0
    10
//
sl@0
    11
// Contributors:
sl@0
    12
//
sl@0
    13
// Description:
sl@0
    14
//
sl@0
    15
sl@0
    16
#include "UC_STD.H"
sl@0
    17
sl@0
    18
EXPORT_C void TPagedSetToken::ExternalizeL(RWriteStream &aStream) const
sl@0
    19
	{
sl@0
    20
	__ASSERT_DEBUG(iCount>=0,User::Invariant());
sl@0
    21
	TBtreeToken::ExternalizeL(aStream);
sl@0
    22
	aStream.WriteInt32L(iCount);
sl@0
    23
	}
sl@0
    24
sl@0
    25
EXPORT_C void TPagedSetToken::InternalizeL(RReadStream &aStream)
sl@0
    26
	{
sl@0
    27
	TBtreeToken::InternalizeL(aStream);
sl@0
    28
	iCount=aStream.ReadInt32L();
sl@0
    29
	if (iCount<0)
sl@0
    30
		__LEAVE(KErrCorrupt);
sl@0
    31
	}
sl@0
    32
sl@0
    33
EXPORT_C void TPagedSetToken::Clear()
sl@0
    34
	{
sl@0
    35
	TBtreeToken::Clear();
sl@0
    36
	iCount=0;
sl@0
    37
	}
sl@0
    38
sl@0
    39
EXPORT_C TPagedSetBase::TPagedSetBase(TInt anEntrySize)
sl@0
    40
//
sl@0
    41
// Constructor creating a new set.
sl@0
    42
//
sl@0
    43
	: iTree(EBtreeSecure,anEntrySize,anEntrySize),iKey(anEntrySize),iCount(0)
sl@0
    44
	{}
sl@0
    45
sl@0
    46
EXPORT_C TPagedSetBase::TPagedSetBase(const TPagedSetToken &aToken,TInt anEntrySize)
sl@0
    47
//
sl@0
    48
// Constructor reinstating an existing set.
sl@0
    49
//
sl@0
    50
	: iTree(aToken,EBtreeSecure,anEntrySize,anEntrySize),iKey(anEntrySize),iCount(aToken.iCount)
sl@0
    51
	{}
sl@0
    52
sl@0
    53
EXPORT_C void TPagedSetBase::Connect(MPagePool *aPool)
sl@0
    54
//
sl@0
    55
// Hook the tree up to its bits.
sl@0
    56
//
sl@0
    57
	{
sl@0
    58
	iTree.Connect(aPool,&iKey);
sl@0
    59
	}
sl@0
    60
sl@0
    61
EXPORT_C void TPagedSetBase::Set(const TPagedSetToken &aToken)
sl@0
    62
//
sl@0
    63
// Set to the state described by aToken.
sl@0
    64
//
sl@0
    65
	{
sl@0
    66
	iTree.Set(aToken,EBtreeSecure);
sl@0
    67
	iCount=aToken.iCount;
sl@0
    68
	}
sl@0
    69
sl@0
    70
EXPORT_C TPagedSetToken TPagedSetBase::Token() const
sl@0
    71
//
sl@0
    72
// Build the streaming token for the set.
sl@0
    73
//
sl@0
    74
	{
sl@0
    75
	return TPagedSetToken(iTree.Token(),iCount);
sl@0
    76
	}
sl@0
    77
sl@0
    78
EXPORT_C TInt TPagedSetBase::RepairL()
sl@0
    79
//
sl@0
    80
// Repair a broken set.
sl@0
    81
//
sl@0
    82
	{
sl@0
    83
	TInt count=iTree.RepairL();
sl@0
    84
	iCount=count;
sl@0
    85
	return count;
sl@0
    86
	}
sl@0
    87
sl@0
    88
EXPORT_C void TPagedSetBase::ClearL()
sl@0
    89
//
sl@0
    90
// Empty the set.
sl@0
    91
//
sl@0
    92
	{
sl@0
    93
	iTree.ClearL();
sl@0
    94
	iCount=0;
sl@0
    95
	}
sl@0
    96
sl@0
    97
EXPORT_C TBool TPagedSetBase::ContainsL(const TAny *aPtr) const
sl@0
    98
//
sl@0
    99
// Return whether the set contains an entry equal to the one pointed to by aPtr.
sl@0
   100
//
sl@0
   101
	{
sl@0
   102
	TBtreePos pos;
sl@0
   103
	return iTree.FindL(pos,aPtr);
sl@0
   104
	}
sl@0
   105
sl@0
   106
EXPORT_C void TPagedSetBase::InsertL(const TAny *aPtr)
sl@0
   107
//
sl@0
   108
// Insert an entry into the set.
sl@0
   109
//
sl@0
   110
	{
sl@0
   111
	TBtreePos pos;
sl@0
   112
	if (!iTree.InsertL(pos,aPtr))
sl@0
   113
		__LEAVE(KErrAlreadyExists); // a duplicate
sl@0
   114
//
sl@0
   115
	++iCount;
sl@0
   116
	}
sl@0
   117
sl@0
   118
EXPORT_C void TPagedSetBase::DeleteL(const TAny *aPtr)
sl@0
   119
//
sl@0
   120
// Delete an entry from the set.
sl@0
   121
//
sl@0
   122
	{
sl@0
   123
	if (!iTree.DeleteL(aPtr))
sl@0
   124
		__LEAVE(KErrNotFound);
sl@0
   125
//
sl@0
   126
	--iCount;
sl@0
   127
	}
sl@0
   128
sl@0
   129
EXPORT_C void TPagedSetBase::InsertAllowDuplicatesL(const TAny *aPtr)
sl@0
   130
//
sl@0
   131
// Insert an entry into the set, allow duplicates.
sl@0
   132
//
sl@0
   133
	{
sl@0
   134
	TBtreePos pos;
sl@0
   135
	__DEBUG(TBool success=)iTree.InsertL(pos,aPtr,EAllowDuplicates);
sl@0
   136
	__ASSERT_DEBUG(success,User::Invariant());
sl@0
   137
	++iCount;
sl@0
   138
	}
sl@0
   139
sl@0
   140
EXPORT_C TBool TPagedSetIterBase::ResetL()
sl@0
   141
	{
sl@0
   142
	return iTree->ResetL(iMark);
sl@0
   143
	}
sl@0
   144
sl@0
   145
EXPORT_C TBool TPagedSetIterBase::NextL()
sl@0
   146
	{
sl@0
   147
	return iTree->NextL(iMark);
sl@0
   148
	}
sl@0
   149
sl@0
   150
EXPORT_C void TPagedSetIterBase::ExtractAtL(TAny* aPtr) const
sl@0
   151
	{
sl@0
   152
	iTree->ExtractAtL(iMark,aPtr);
sl@0
   153
	}
sl@0
   154
sl@0
   155
EXPORT_C TBool TPagedSetBiIterBase::FirstL()
sl@0
   156
	{
sl@0
   157
	return iTree->FirstL(iPos);
sl@0
   158
	}
sl@0
   159
sl@0
   160
EXPORT_C TBool TPagedSetBiIterBase::LastL()
sl@0
   161
	{
sl@0
   162
	return iTree->LastL(iPos);
sl@0
   163
	}
sl@0
   164
sl@0
   165
EXPORT_C TBool TPagedSetBiIterBase::NextL()
sl@0
   166
	{
sl@0
   167
	return iTree->NextL(iPos);
sl@0
   168
	}
sl@0
   169
sl@0
   170
EXPORT_C TBool TPagedSetBiIterBase::PreviousL()
sl@0
   171
	{
sl@0
   172
	return iTree->PreviousL(iPos);
sl@0
   173
	}
sl@0
   174
sl@0
   175
EXPORT_C void TPagedSetBiIterBase::ExtractAtL(TAny* aPtr) const
sl@0
   176
	{
sl@0
   177
	iTree->ExtractAtL(iPos,aPtr);
sl@0
   178
	}
sl@0
   179