## wxMemoryBuffer

A wxMemoryBuffer is a useful data structure for storing arbitrary sized blocks of memory. wxMemoryBuffer guarantees deletion of the memory block when the object is destroyed.

Derived from

None

Include files

<wx/buffer.h>

Members

wxMemoryBuffer::wxMemoryBuffer
wxMemoryBuffer::GetData
wxMemoryBuffer::GetBufSize
wxMemoryBuffer::GetDataLen
wxMemoryBuffer::SetBufSize
wxMemoryBuffer::SetDataLen
wxMemoryBuffer::GetWriteBuf
wxMemoryBuffer::UngetWriteBuf
wxMemoryBuffer::GetAppendBuf
wxMemoryBuffer::UngetAppendBuf
wxMemoryBuffer::AppendByte
wxMemoryBuffer::AppendData

### wxMemoryBuffer::wxMemoryBuffer

wxMemoryBuffer(const wxMemoryBuffer& src)

Copy constructor, refcounting is used for performance , but wxMemoryBuffer is not a copy-on-write structure so changes made to one buffer effect all copies made from it.

wxMemoryBuffer(size_t size)

Create a new buffer.

size

size of new buffer.

### wxMemoryBuffer::GetData

void* GetData()

Return a pointer to the data in the buffer.

### wxMemoryBuffer::GetBufSize

size_t GetBufSize()

Returns the size of the buffer.

### wxMemoryBuffer::GetDataLen

size_t GetDataLen()

Returns the length of the valid data in the buffer.

### wxMemoryBuffer::SetBufSize

void SetBufSize(size_t size)

Ensures the buffer has at least size bytes available.

### wxMemoryBuffer::SetDataLen

void SetDataLen(size_t size)

Sets the length of the data stored in the buffer. Mainly useful for truncating existing data.

size

New length of the valid data in the buffer. This is distinct from the allocated size

### wxMemoryBuffer::GetWriteBuf

void * GetWriteBuf(size_t sizeNeeded)

Ensure the buffer is big enough and return a pointer to the buffer which can be used to directly write into the buffer up to sizeNeeded bytes.

### wxMemoryBuffer::UngetWriteBuf

void UngetWriteBuf(size_t sizeUsed)

Update the buffer after completing a direct write, which you must have used GetWriteBuf() to initialise.

sizeUsed

The amount of data written in to buffer by the direct write

### wxMemoryBuffer::GetAppendBuf

void * GetAppendBuf(size_t sizeNeeded)

Ensure that the buffer is big enough and return a pointer to the start of the empty space in the buffer. This pointer can be used to directly write data into the buffer, this new data will be appended to the existing data.

sizeNeeded

Amount of extra space required in the buffer for the append operation

### wxMemoryBuffer::UngetAppendBuf

void UngetAppendBuf(size_t sizeUsed)

Update the length after completing a direct append, which you must have used GetAppendBuf() to initialise.

sizeUsed

This is the amount of new data that has been appended.

### wxMemoryBuffer::AppendByte

void AppendByte(char data)

Append a single byte to the buffer.

data

New byte to append to the buffer.

### wxMemoryBuffer::AppendData

void AppendData(void* data, size_t len)

Single call to append a data block to the buffer.

data

Pointer to block to append to the buffer.

len

Length of data to append.