CCirBufBase Class Reference

#include <e32base.h>

Link against: euser_v5.lib

class CCirBufBase : public CBase

Inherits from

Detailed Description

Base class for circular buffers.

The class is part of the implementation of circular buffers and is never instantiated.

The class provides member functions that form part of the interface.

Member Attribute Documentation

iCount

TInt iCount[protected]

iHead

TUint8 *iHead[protected]

iLength

TInt iLength[protected]

iPtr

TUint8 *iPtr[protected]

iPtrE

TUint8 *iPtrE[protected]

iSize

TInt iSize[protected]

iTail

TUint8 *iTail[protected]

Constructor & Destructor Documentation

CCirBufBase ( TInt )

IMPORT_CCCirBufBase(TIntaSize)[protected]

Constructor taking the size of an object within the buffer.

Parameters
aSizeThe size of an object in the buffer.
Panic Codes
E32USER-CBase72, if aSize is zero or negative.

~CCirBufBase ( )

IMPORT_C~CCirBufBase()

Destructor.

This frees the memory allocated to the buffer.

Member Function Documentation

Count ( )

TInt Count()const [inline]

Gets the current number of objects in this circular buffer.

Return Value
The number of objects in this circular buffer. This value can never be greater than the maximum capacity.

DoAdd ( const TUint8 * )

IMPORT_C TIntDoAdd(const TUint8 *aPtr)[protected]

Implementation function for CCirBuf::Add(const T*)

Adds a single object to the circular buffer, but only if there is space available.

See also: CCirBuf::Add CCirBufBase::SetLengthL

Parameters
aPtrA pointer to the object to be added.
Return Value
1 if the object is successfully added. 0 if the object cannot be added because the circular buffer is full.
Panic Codes
E32USER-CBase74, if a call to

DoAdd ( const TUint8 *, TInt )

IMPORT_C TIntDoAdd(const TUint8 *aPtr,
TIntaCount
)[protected]

Implementation function for CCirBuf::Add(const T*,TInt)

Adds multiple objects to the circular buffer, but only if there is space available.

See also: CCirBuf::Add CCirBufBase::SetLengthL

Parameters
aPtrA pointer to a set of contiguous objects to be added.
aCountThe number of objects to be added.
Return Value
The number of objects successfully added to the buffer. This value may be less than the number requested and can range from 0 to aCount.
Panic Codes
E32USER-CBase74, if a call to
E32USER-CBase75, if aCount is not a positive value.

DoRemove ( TUint8 * )

IMPORT_C TIntDoRemove(TUint8 *aPtr)[protected]

Implementation function for CCirBuf::Remove(T*)

Removes a single object from the circular buffer, but only if there are objects in the buffer.

A binary copy of the object is made to aPtr.

See also: CCirBuf::Remove

Parameters
aPtrA pointer to a location supplied by the caller.
Return Value
1 if an object is successfully removed. 0 if an object cannot be removed because the circular buffer is empty.

DoRemove ( TUint8 *, TInt )

IMPORT_C TIntDoRemove(TUint8 *aPtr,
TIntaCount
)[protected]

Implementation function for CCirBuf::Remove(T*,TInt)

Attempts to remove aCount objects from the circular buffer, but only if there are objects in the buffer.

A binary copy of the objects is made to aPtr.

See also: CCirBuf::Remove

Parameters
aPtrA pointer to a location supplied by the caller capable of holding aCount objects.
aCountThe number of objects to be removed from the circular buffer.
Return Value
The number of objects successfully removed from the buffer. This value may be less than the number requested, and can range from 0 to aCount.
Panic Codes
E32USER-CBase76, if aCount is not a positive value.

Length ( )

TInt Length()const [inline]

Gets the maximum capacity of this circular buffer.

The capacity is the maximum number of elements that the buffer can hold.

Use SetLengthL() to change the capacity of the circular buffer.

See also: CCirBufBase::SetLengthL

Return Value
The maximum capacity of this circular buffer.

Reset ( )

IMPORT_C voidReset()

Empties the buffer.

SetLengthL ( TInt )

IMPORT_C voidSetLengthL(TIntaLength)

Sets the maximum capacity of this circular buffer, and resets all of the buffer pointers.

The capacity is the maximum number of elements that the buffer can hold.

The buffer itself is allocated as a result of a call to this function. If the function has previously been called, then any existing buffer is freed and any information in it is lost.

Notes:

1. This function must be called before attempting to add any objects to the buffer.

2. The function can leave if there is insufficient memory available to allocate the buffer.

Parameters
aLengthThe maximum capacity of the circular buffer.
Panic Codes
E32USER-CBase73, if aLength is zero or negative.