--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// Name: buffer.h
+// Purpose: interface of wxMemoryBuffer
+// Author: wxWidgets team
+// RCS-ID: $Id$
+// Licence: wxWindows license
+/////////////////////////////////////////////////////////////////////////////
+
+/**
+ @class wxMemoryBuffer
+ @wxheader{buffer.h}
+
+ A @b 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.
+
+ @library{wxbase}
+ @category{data}
+*/
+class wxMemoryBuffer
+{
+public:
+ /**
+ 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.
+
+ @see @ref overview_refcount
+ */
+ wxMemoryBuffer(const wxMemoryBuffer& src);
+
+ /**
+ Create a new buffer.
+
+ @param size
+ size of the new buffer.
+ */
+ wxMemoryBuffer(size_t size);
+
+ /**
+ Append a single byte to the buffer.
+
+ @param data
+ New byte to append to the buffer.
+ */
+ void AppendByte(char data);
+
+ /**
+ 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.
+
+ @param sizeNeeded
+ Amount of extra space required in the buffer for
+ the append operation
+ */
+ void* GetAppendBuf(size_t sizeNeeded);
+
+ /**
+ Returns the size of the buffer.
+ */
+ size_t GetBufSize() const;
+
+ /**
+ Return a pointer to the data in the buffer.
+ */
+ void* GetData() const;
+
+ /**
+ Returns the length of the valid data in the buffer.
+ */
+ size_t GetDataLen() const;
+
+ /**
+ 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 @a sizeNeeded bytes.
+ */
+ void* GetWriteBuf(size_t sizeNeeded);
+
+ /**
+ Ensures the buffer has at least @a size bytes available.
+ */
+ void SetBufSize(size_t size);
+
+ /**
+ Sets the length of the data stored in the buffer.
+ Mainly useful for truncating existing data.
+
+ @param size
+ New length of the valid data in the buffer. This is
+ distinct from the allocated size
+ */
+ void SetDataLen(size_t size);
+
+ /**
+ Update the length after completing a direct append, which
+ you must have used GetAppendBuf() to initialise.
+
+ @param sizeUsed
+ This is the amount of new data that has been
+ appended.
+ */
+ void UngetAppendBuf(size_t sizeUsed);
+
+ /**
+ Update the buffer after completing a direct write, which
+ you must have used GetWriteBuf() to initialise.
+
+ @param sizeUsed
+ The amount of data written in to buffer
+ by the direct write
+ */
+ void UngetWriteBuf(size_t sizeUsed);
+};
+