CArrayPak Class Reference

class CArrayPak : public CArrayPakBase

A thin templated base class for variable length, packed, arrays.

The public functions provide standard array behaviour.

The class is always derived from and is never instantiated explicitly.

Inherits from

Public Member Functions
CArrayPak(TBufRep, TInt)
voidAppendL(const T &, TInt)
const TArray< T >Array()
const T &At(TInt)
T &At(TInt)
T &ExpandL(TInt, TInt)
T &ExtendL(TInt)
TInt Find(const T &, TKeyArrayPak &, TInt &)
TInt FindIsq(const T &, TKeyArrayPak &, TInt &)
TInt InsertIsqAllowDuplicatesL(const T &, TInt, TKeyArrayPak &)
TInt InsertIsqL(const T &, TInt, TKeyArrayPak &)
voidInsertL(TInt, const T &, TInt)
const T &operator[](TInt)
T &operator[](TInt)
Inherited Functions
CArrayPakBase::AtR(const CBase *,TInt)
CArrayPakBase::BuildVarArrayL(CArrayVarFlat< TAny > *&)
CArrayPakBase::CArrayPakBase(TBufRep,TInt)
CArrayPakBase::Compress()
CArrayPakBase::Count()const
CArrayPakBase::CountR(const CBase *)
CArrayPakBase::Delete(TInt)
CArrayPakBase::Delete(TInt,TInt)
CArrayPakBase::Find(const TAny *,TKeyArrayPak &,TInt &)const
CArrayPakBase::FindIsq(const TAny *,TKeyArrayPak &,TInt &)const
CArrayPakBase::GetOffset(TInt)const
CArrayPakBase::InsertIsqAllowDuplicatesL(const TAny *,TInt,TKeyArrayPak &)
CArrayPakBase::InsertIsqL(const TAny *,TInt,TKeyArrayPak &)
CArrayPakBase::InsertL(TInt,const TAny *,TInt)
CArrayPakBase::Length(TInt)const
CArrayPakBase::Reset()
CArrayPakBase::SetKey(TKeyArrayPak &)const
CArrayPakBase::SortL(TKeyArrayVar &)
CArrayPakBase::~CArrayPakBase()
CBase::CBase()
CBase::Delete(CBase *)
CBase::Extension_(TUint,TAny *&,TAny *)
CBase::operator new(TUint)
CBase::operator new(TUint,TAny *)
CBase::operator new(TUint,TLeave)
CBase::operator new(TUint,TLeave,TUint)
CBase::operator new(TUint,TUint)
CBase::~CBase()

Constructor & Destructor Documentation

CArrayPak(TBufRep, TInt)

CArrayPak(TBufRepaRep,
TIntaGranularity
)[inline]

Parameters

TBufRep aRep
TInt aGranularity

Member Functions Documentation

AppendL(const T &, TInt)

voidAppendL(const T &aRef,
TIntaLength
)[inline]

Appends an element of a specified length onto the array.

leave
KErrNoMemory The function attempted to allocate from the heap and there is insufficient memory available. In this case, the array is left in the state it was in before the call.
panic
E32USER-CBase 30, if aLength is negative.

Parameters

const T & aRefA reference to the class T element to be appended.
TInt aLengthThe length of the element to be appended.

Array()

const TArray< T >Array()const [inline]

Constructs and returns a TArray<T> object.

At(TInt)

const T &At(TIntanIndex)const [inline]

Gets a reference to the element located at the specified position within the array.

The compiler uses this variant of the function when the returned reference is used in an expression where it cannot be modified.

panic
E32USER-CBase 21, if anIndex is negative or greater than or equal to number of objects currently within the array.

Parameters

TInt anIndexThe position of the element within the array. The position is relative to zero; i.e. zero implies the first element in the array.

At(TInt)

T &At(TIntanIndex)[inline]

Gets a reference to the element located at the specified position within the array.

The compiler uses this variant of the function when the returned reference is used in an expression where it can be modified.

panic
E32USER-CBase 21, if anIndex is negative or greater than or equal to number of objects currently within the array.

Parameters

TInt anIndexThe position of the element within the array. The position is relative to zero; i.e. zero implies the first element in the array.

ExpandL(TInt, TInt)

T &ExpandL(TIntanIndex,
TIntaLength
)[inline]

Expands the array by one element of specified length at the specified position.

It:

1. expands the array by one element at the specified position.

2. constructs a new element of specified length at that position.

3. returns a reference to the new element.

All existing elements from position anIndex to the end of the array are moved up, so that the element originally at position anIndex is now at position anIndex + 1 etc.

The new element of type <class T> and length aLength is constructed at position anIndex, using the default constructor of that class.

leave
KErrNoMemory The function attempted to allocate from the heap and there is insufficient memory available. In this case, the array is left in the state it was in before the call.
panic
E32USER-CBase 21, if anIndex is negative or greater than the number of elements currently in the array.
panic
E32USER-CBase 30, if aLength is negative.

Parameters

TInt anIndexThe position within the array where the array is to be expanded and the new <class T> object is to be constructed.
TInt aLengthThe length of the new element.

ExtendL(TInt)

T &ExtendL(TIntaLength)[inline]

Expands the array by one element of specified length at the end of the array.

It:

1. expands the array by one element at the end of the array, i.e. at position CArrayPakbase::Count().

2. constructs a new element of length aLength at that position.

3. returns a reference to the new element.

The new element of type <class T> is constructed at the end of the array, using the default constructor of that class.

leave
KErrNoMemory The function attempted to allocate from the heap and there is insufficient memory available. In this case, the array is left in the state it was in before the call.
panic
E32USER-CBase 30, if aLength is negative.

Parameters

TInt aLengthThe length of the new element.

Find(const T &, TKeyArrayPak &, TInt &)

TInt Find(const T &aRef,
TKeyArrayPak &aKey,
TInt &anIndex
)const [inline]

Finds the position of an element within the array, based on the matching of keys, using a sequential search.

The array is searched sequentially for an element whose key matches the key of the supplied <class T> object. The search starts with the first element in the array.

Note that where an array has elements with duplicate keys, the function only supplies the position of the first element in the array with that key.

Parameters

const T & aRefA reference to an object of type <class T> whose key is used for comparison.
TKeyArrayPak & aKeyA reference to a key object defining the properties of the key.
TInt & anIndexA reference to a TInt supplied by the caller. On return, if the element is found, this is set to the position of that element within the array. The position is relative to zero, (i.e. the first element in the array is at position 0). If the element is not found or the array is empty, then this is undefined.

FindIsq(const T &, TKeyArrayPak &, TInt &)

TInt FindIsq(const T &aRef,
TKeyArrayPak &aKey,
TInt &anIndex
)const [inline]

Finds the position of an element within the array, based on the matching of keys, using a binary search technique.

The array is searched, using a binary search technique, for an element whose key matches the key of the supplied <class T> object.

The array must be in key order.

Note that where an array has elements with duplicate keys, the function cannot guarantee which element, with the given key value, it will return, except that it will find one of them.

Parameters

const T & aRefA reference to an object of type <class T> whose key is used for comparison.
TKeyArrayPak & aKeyA reference to a key object defining the properties of the key.
TInt & anIndexA reference to a TInt supplied by the caller. On return, if the element is found, this is set to the position of that element within the array. The position is relative to zero, (i.e. the first element in the array is at position 0). If the element is not found and the array is not empty, then this is set to the position of the first element in the array with a key which is greater than the key of the object aRef. If the element is not found and the array is empty, then this is undefined.

InsertIsqAllowDuplicatesL(const T &, TInt, TKeyArrayPak &)

TInt InsertIsqAllowDuplicatesL(const T &aRef,
TIntaLength,
TKeyArrayPak &aKey
)[inline]

Inserts a single element of a specified length into the array at a position determined by a key, allowing duplicates.

The array MUST already be in key sequence, otherwise the position of the new element is unpredictable.

Elements with duplicate keys are permitted. If the new element's key is a duplicate of an existing element's key, then the new element is positioned after the existing element.

leave
KErrNoMemory The function attempted to expand the array buffer and there is insufficient memory available. In this case, the array is left in the state it was in before the call.

Parameters

const T & aRefA reference to the element of type <class T> to be inserted into the array.
TInt aLengthThe length of the new element to be inserted into the array.
TKeyArrayPak & aKeyA reference to a key object defining the properties of the key.

InsertIsqL(const T &, TInt, TKeyArrayPak &)

TInt InsertIsqL(const T &aRef,
TIntaLength,
TKeyArrayPak &aKey
)[inline]

Inserts a single element of a specified length into the array at a position determined by a key.

The array MUST already be in key sequence (as defined by the key), otherwise the position of the new element is unpredictable, or duplicates may occur.

Elements with duplicate keys are not permitted.

leave
KErrAlreadyExists An element with the same key already exists within the array. NB the array MUST already be in key sequence, otherwise the function may insert a duplicate and fail to leave with this value.
leave
KErrNoMemory The function attempted to expand the array buffer and there is insufficient memory available. In this case, the array is left in the state it was in before the call.

Parameters

const T & aRefA reference to the element of type <class T> to be inserted into the array.
TInt aLengthThe length of the new element of type <class T> to be inserted into the array.
TKeyArrayPak & aKeyA reference to a key object defining the properties of the key.

InsertL(TInt, const T &, TInt)

voidInsertL(TIntanIndex,
const T &aRef,
TIntaLength
)[inline]

Inserts an element of a specified length into the array at the specified position.

leave
KErrNoMemory The function attempted to expand the array buffer and there is insufficient memory available. In this case, the array is left in the state it was in before the call.
panic
E32USER-CBase 21, if anIndex is negative or greater than the number of objects currently in the array.
panic
E32USER-CBase 30, if aLength is negative.

Parameters

TInt anIndexThe position within the array where the element is to be inserted. The position is relative to zero, i.e. zero implies that elements are inserted at the beginning of the array.
const T & aRefA reference to the class T object to be inserted into the array.
TInt aLengthThe length of the element to be inserted into the array.

operator[](TInt)

const T &operator[](TIntanIndex)const [inline]

Gets a reference to the element located at the specified position within the array.

The compiler uses this variant of the function when the returned reference is used in an expression where it cannot be modified.

panic
E32USER-CBase 21, if anIndex is negative or greater than or equal to number of objects currently within the array.

Parameters

TInt anIndexThe position of the element within the array. The position is relative to zero; i.e. zero implies the first element in the array.

operator[](TInt)

T &operator[](TIntanIndex)[inline]

Gets a reference to the element located at the specified position within the array.

The compiler uses this variant of the function when the returned reference is used in an expression where it can be modified.

panic
E32USER-CBase 21, if anIndex is negative or greater than or equal to number of objects currently within the array.

Parameters

TInt anIndexThe position of the element within the array. The position is relative to zero; i.e. zero implies the first element in the array.