Original Symbian headers
Selected EUSER, Window Server, networking, graphics and device declarations
Loading...
Searching...
No Matches
CArrayPak< T > Class Template Reference

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

#include <e32base.h>

Inheritance diagram for CArrayPak< T >:
CArrayPakBase CBase CArrayPakFlat< TEntry > CArrayPakFlat< T >

Public Member Functions

 CArrayPak (TBufRep aRep, TInt aGranularity)
 
const T & operator[] (TInt anIndex) const
 Gets a reference to the element located at the specified position within the array.
 
T & operator[] (TInt anIndex)
 Gets a reference to the element located at the specified position within the array.
 
const T & At (TInt anIndex) const
 Gets a reference to the element located at the specified position within the array.
 
T & At (TInt anIndex)
 Gets a reference to the element located at the specified position within the array.
 
void AppendL (const T &aRef, TInt aLength)
 Appends an element of a specified length onto the array.
 
T & ExpandL (TInt anIndex, TInt aLength)
 Expands the array by one element of specified length at the specified position.
 
T & ExtendL (TInt aLength)
 Expands the array by one element of specified length at the end of the array.
 
TInt Find (const T &aRef, TKeyArrayPak &aKey, TInt &anIndex) const
 Finds the position of an element within the array, based on the matching of keys, using a sequential search.
 
TInt FindIsq (const T &aRef, TKeyArrayPak &aKey, TInt &anIndex) const
 Finds the position of an element within the array, based on the matching of keys, using a binary search technique.
 
void InsertL (TInt anIndex, const T &aRef, TInt aLength)
 Inserts an element of a specified length into the array at the specified position.
 
TInt InsertIsqL (const T &aRef, TInt aLength, TKeyArrayPak &aKey)
 Inserts a single element of a specified length into the array at a position determined by a key.
 
TInt InsertIsqAllowDuplicatesL (const T &aRef, TInt aLength, TKeyArrayPak &aKey)
 Inserts a single element of a specified length into the array at a position determined by a key, allowing duplicates.
 
const TArray< T > Array () const
 Constructs and returns a TArray<T> object.
 
- Public Member Functions inherited from CArrayPakBase
IMPORT_C ~CArrayPakBase ()
 Destructor.
 
TInt Count () const
 Gets the number of elements held in the array.
 
IMPORT_C TInt Length (TInt anIndex) const
 Gets the length of the specified element.
 
IMPORT_C void Compress ()
 Removes excess space from the array buffer.
 
IMPORT_C void Reset ()
 Deletes all elements from the array and frees the memory allocated to the array buffer.
 
IMPORT_C void SortL (TKeyArrayVar &aKey)
 Sorts the elements of the array into key sequence.
 
IMPORT_C TAny * At (TInt anIndex) const
 TAny points to the data associated with the record with anIndex.
 
IMPORT_C void Delete (TInt anIndex)
 Removes a single element from the array.
 
IMPORT_C void Delete (TInt anIndex, TInt aCount)
 Removes one or more contiguous elements from the array, starting at a specific position.
 
IMPORT_C TAny * ExpandL (TInt anIndex, TInt aLength)
 Expand the array at anIndex.
 
IMPORT_C TInt Find (const TAny *aPtr, TKeyArrayPak &aKey, TInt &anIndex) const
 Find using a sequential search.
 
IMPORT_C TInt FindIsq (const TAny *aPtr, TKeyArrayPak &aKey, TInt &anIndex) const
 Find using a binary search.
 
IMPORT_C void InsertL (TInt anIndex, const TAny *aPtr, TInt aLength)
 Inserts a record at index anIndex.
 
IMPORT_C TInt InsertIsqL (const TAny *aPtr, TInt aLength, TKeyArrayPak &aKey)
 Insert in sequence, no duplicates allowed.
 
IMPORT_C TInt InsertIsqAllowDuplicatesL (const TAny *aPtr, TInt aLength, TKeyArrayPak &aKey)
 Insert in sequence, allow duplicates.
 
- Public Member Functions inherited from CBase
 CBase ()
 Default constructor.
 
virtual IMPORT_C ~CBase ()
 Virtual destructor.
 
TAny * operator new (TUint aSize, TAny *aBase) __NO_THROW
 Initialises the object to binary zeroes.
 
TAny * operator new (TUint aSize) __NO_THROW
 Allocates the object from the heap and then initialises its contents to binary zeroes.
 
TAny * operator new (TUint aSize, TLeave)
 Allocates the object from the heap and then initialises its contents to binary zeroes.
 
TAny * operator new (TUint aSize, TUint aExtraSize) __NO_THROW
 Allocates the object from the heap and then initialises its contents to binary zeroes.
 
TAny * operator new (TUint aSize, TLeave, TUint aExtraSize)
 Allocates the object from the heap and then initialises its contents to binary zeroes.
 

Additional Inherited Members

- Static Public Member Functions inherited from CBase
static IMPORT_C void Delete (CBase *aPtr)
 Deletes the specified object.
 
- Protected Member Functions inherited from CArrayPakBase
IMPORT_C CArrayPakBase (TBufRep aRep, TInt aGranularity)
 Constructor.
 
IMPORT_C void SetKey (TKeyArrayPak &aKey) const
 Set the key data.
 
IMPORT_C TInt GetOffset (TInt anIndex) const
 Return the offset into the buffer of the record with index anIndex;.
 
IMPORT_C void BuildVarArrayL (CArrayVarFlat< TAny > *&aVarFlat)
 Make a copy of the current array as a CArrayVarFlat.
 
- Protected Member Functions inherited from CBase
virtual IMPORT_C TInt Extension_ (TUint aExtensionId, TAny *&a0, TAny *a1)
 Extension function.
 
- Static Protected Member Functions inherited from CArrayPakBase
static IMPORT_C TInt CountR (const CBase *aPtr)
 Return the number of items in the array.
 
static IMPORT_C const TAny * AtR (const CBase *aPtr, TInt anIndex)
 Return the address of an item in the array.
 

Detailed Description

template<class T>
class CArrayPak< T >

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.

API status
Published to all clients. Released API.

Definition at line 1021 of file e32base.h.

Constructor & Destructor Documentation

◆ CArrayPak()

template<class T >
CArrayPak< T >::CArrayPak ( TBufRep  aRep,
TInt  aGranularity 
)
inline

Member Function Documentation

◆ AppendL()

template<class T >
void CArrayPak< T >::AppendL ( const T &  aRef,
TInt  aLength 
)
inline

Appends an element of a specified length onto the array.

Parameters
aRefA reference to the class T element to be appended.
aLengthThe length of the element to be appended.

Leave condition: 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 condition: E32USER-CBase 30, if aLength is negative.

(generated from Symbian Developer Library)

◆ Array()

template<class T >
const TArray< T > CArrayPak< T >::Array ( ) const
inline

Constructs and returns a TArray<T> object.

(generated from Symbian Developer Library)

◆ At() [1/2]

template<class T >
T & CArrayPak< T >::At ( TInt  anIndex)
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.

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

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

(generated from Symbian Developer Library)

◆ At() [2/2]

template<class T >
const T & CArrayPak< T >::At ( TInt  anIndex) 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.

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

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

(generated from Symbian Developer Library)

◆ ExpandL()

template<class T >
T & CArrayPak< T >::ExpandL ( TInt  anIndex,
TInt  aLength 
)
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.

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

Leave condition: 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 condition: E32USER-CBase 21, if anIndex is negative or greater than the number of elements currently in the array.

Panic condition: E32USER-CBase 30, if aLength is negative.

(generated from Symbian Developer Library)

◆ ExtendL()

template<class T >
T & CArrayPak< T >::ExtendL ( TInt  aLength)
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.

Parameters
aLengthThe length of the new element.

Leave condition: 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 condition: E32USER-CBase 30, if aLength is negative.

(generated from Symbian Developer Library)

◆ Find()

template<class T >
TInt CArrayPak< T >::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
aRefA reference to an object of type <class T> whose key is used for comparison.
aKeyA reference to a key object defining the properties of the key.
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.

(generated from Symbian Developer Library)

◆ FindIsq()

template<class T >
TInt CArrayPak< T >::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
aRefA reference to an object of type <class T> whose key is used for comparison.
aKeyA reference to a key object defining the properties of the key.
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.

(generated from Symbian Developer Library)

◆ InsertIsqAllowDuplicatesL()

template<class T >
TInt CArrayPak< T >::InsertIsqAllowDuplicatesL ( const T &  aRef,
TInt  aLength,
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.

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

Leave condition: 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.

(generated from Symbian Developer Library)

◆ InsertIsqL()

template<class T >
TInt CArrayPak< T >::InsertIsqL ( const T &  aRef,
TInt  aLength,
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.

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

Leave condition: 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 condition: 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.

(generated from Symbian Developer Library)

◆ InsertL()

template<class T >
void CArrayPak< T >::InsertL ( TInt  anIndex,
const T &  aRef,
TInt  aLength 
)
inline

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

Parameters
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.
aRefA reference to the class T object to be inserted into the array.
aLengthThe length of the element to be inserted into the array.

Leave condition: 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 condition: E32USER-CBase 21, if anIndex is negative or greater than the number of objects currently in the array.

Panic condition: E32USER-CBase 30, if aLength is negative.

(generated from Symbian Developer Library)

◆ operator[]() [1/2]

template<class T >
T & CArrayPak< T >::operator[] ( TInt  anIndex)
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.

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

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

(generated from Symbian Developer Library)

◆ operator[]() [2/2]

template<class T >
const T & CArrayPak< T >::operator[] ( TInt  anIndex) 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.

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

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

(generated from Symbian Developer Library)


The documentation for this class was generated from the following files: