Location:
e32base.h
Link against: euser.lib
CBufSeg
Supported from 5.0
Segmented dynamic buffer.
This class should be used when the object has a long life-time and an unpredictable number of insertions, or there is concern about the performance of insertion and deletion operations into large buffers.
This class is an implementation of the abstract buffer interface
provided by CBufBase
and uses doubly-linked list of heap cells to
contain the data; each cell contains a segment of the buffer.
Its data members include an anchor for the doubly-linked list, and also a reference to the buffer position used by the last operation. This reference acts as a cache; if the next operation uses a similar buffer position, then calculation of the pointer corresponding to its buffer position is much faster.
|
Defined in CBufSeg
:
BackPtr()
, Compress()
, Delete()
, NewL()
, Ptr()
, ~CBufSeg()
Inherited from CBase
:
operator new()
Inherited from CBufBase
:
ExpandL()
,
InsertL()
,
Read()
,
Reset()
,
ResizeL()
,
Size()
,
Write()
static CBufSeg* NewL(TInt anExpandSize);
Allocates and constructs a segmented buffer.
If there is insufficient memory available to allocate the segmented buffer, the function leaves.
|
|
~CBufSeg();
Frees all resources owned by the object, prior to its destruction. Specifically, it frees all segments allocated to the buffer.
virtual void Delete(TInt aPos,TInt aLength);
Deletes data from the buffer. During deletion, shuffling is minimised by deleting intermediate segments and allowing segments to contain less data than the buffer granularity.
virtual void Compress();
Compresses the buffer so as to occupy minimal space. This frees unused memory at the end of each segment. It may also optimise segment allocations.
virtual TPtr8 Ptr(TInt aPos);
Returns a pointer descriptor to represent the data starting at the specified data byte through to the end of the contiguous region containing that byte.
The time needed for calculation of the pointer depends on how many segments there are in the buffer, and how near the target segment is to the segment which was last used in the buffer.
virtual TPtr8 BackPtr(TInt aPos);
Returns a pointer descriptor to represent the data starting at 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 segment containing the specified byte. The time needed for calculation of the pointer depends on how many segments there are in the buffer, and how near the target segment is to the segment which was last used in the buffer.