class CBufFlat : public CBufBase |
Provides a flat storage dynamic buffer.
This class should be used when high-speed pointer lookup is an important consideration, and you are reasonably confident that the insertion of data will not fail.
This class is an implementation of the abstract buffer interface provided by CBufBase and uses a single heap cell to contain the data.
Public Member Functions | |
---|---|
~CBufFlat() | |
IMPORT_C TPtr8 | BackPtr(TInt) |
TInt | Capacity() |
IMPORT_C void | Compress() |
IMPORT_C void | Delete(TInt, TInt) |
IMPORT_C CBufFlat * | NewL(TInt) |
IMPORT_C TPtr8 | Ptr(TInt) |
IMPORT_C void | SetReserveL(TInt) |
Protected Member Functions | |
---|---|
CBufFlat(TInt) |
Private Member Functions | |
---|---|
IMPORT_C void | DoInsertL(TInt, const TAny *, TInt) |
Private Attributes | |
---|---|
TInt | iMaxSize |
TUint8 * | iPtr |
Inherited Attributes | |
---|---|
CBufBase::iExpandSize | |
CBufBase::iSize |
IMPORT_C | ~CBufFlat | ( | ) |
Destructor.
Frees all resources owned by the object, prior to its destruction. Specifically, it frees the allocated cell used as a buffer.
IMPORT_C TPtr8 | BackPtr | ( | TInt | aPos | ) | [virtual] |
Gets a pointer descriptor to represent the data starting at the beginning of the contiguous region containing that byte through to the byte immediately preceding the specified byte.
The descriptor always points to the beginning of the buffer containing the specified byte. Calculation of the pointer and length involves only a few machine instructions and is independent of the data contained in the buffer.
TInt aPos | Buffer position: must be in range zero to Size(). |
TInt | Capacity | ( | ) | const [inline] |
Gets the size to which the buffer may expand without re-allocation.
IMPORT_C void | Compress | ( | ) | [virtual] |
Compresses the buffer so as to occupy minimal space.
This frees any unused memory at the end of the buffer.
IMPORT_C void | Delete | ( | TInt | aPos, |
TInt | aLength | |||
) | [virtual] |
Deletes data from the buffer.
During deletion, any data beyond the deleted data is shuffled up so that the buffer contents are contiguous. No memory is freed.
IMPORT_C void | DoInsertL | ( | TInt | aPos, |
const TAny * | aPtr, | |||
TInt | aLength | |||
) | [private, virtual] |
IMPORT_C CBufFlat * | NewL | ( | TInt | anExpandSize | ) | [static] |
Allocates and constructs a flat buffer.
If there is insufficient memory available to allocate the flat buffer, the function leaves.
TInt anExpandSize | The granularity of buffer expansion. Additional space, when required, is always allocated in multiples of this number. Note: although a value of zero is permitted by this interface, it has no meaning, and risks raising panics later during execution. We suggest that you pass a positive value. |
IMPORT_C TPtr8 | Ptr | ( | TInt | aPos | ) | [virtual] |
Gets a pointer descriptor to represent the data starting at the specified data byte through to the end of the contiguous region containing that byte.
Calculation of the pointer and length involves only a few machine instructions and is independent of the data contained in the buffer.
TInt aPos | Buffer position: must be in range zero to Size(). |
IMPORT_C void | SetReserveL | ( | TInt | aSize | ) |
Specifies a minimum amount of space which the flat buffer should occupy.
If the required size is zero, the heap cell is deleted. If it is different from the current size, the heap cell is rellocated accordingly.
TInt aSize | The size of the buffer required. If there is no data in the buffer, i.e. Size() returns zero, then this value can be zero, which causes the buffer's allocated heap cell to be deleted. |
Copyright ©2010 Nokia Corporation and/or its subsidiary(-ies).
All rights
reserved. Unless otherwise stated, these materials are provided under the terms of the Eclipse Public License
v1.0.