diff -r a9d730c8b94a -r b9a940779877 docs/Writerside/topics/buffer.h.md
--- a/docs/Writerside/topics/buffer.h.md Fri Mar 21 19:47:38 2025 +0100
+++ b/docs/Writerside/topics/buffer.h.md Sat Mar 22 14:14:29 2025 +0100
@@ -15,30 +15,154 @@
to automatically resizing the buffer space.
Please refer to the API doc for the fields prefixed with `flush_` to learn more.
-
+## Example
+
+
+TODO: add example
+
+
+## Create
+
+```C
+#include
+
+int cxBufferInit(CxBuffer *buffer, void *space, size_t capacity,
+ const CxAllocator *allocator, int flags);
+
+CxBuffer *cxBufferCreate(void *space,size_t capacity,
+ const CxAllocator *allocator, int flags);
+
+// available flags:
+#define CX_BUFFER_DEFAULT
+#define CX_BUFFER_FREE_CONTENTS
+#define CX_BUFFER_AUTO_EXTEND
+#define CX_BUFFER_COPY_ON_WRITE
+#define CX_BUFFER_COPY_ON_EXTEND
+```
+
+
+TODO: document
+
+
+## Destroy
+
+```C
+#include
+
+void cxBufferDestroy(CxBuffer *buffer);
+
+void cxBufferFree(CxBuffer *buffer);
+```
+
+
+TODO: document
+
+
+## Write
+
+```C
+#include
+
+size_t cxBufferWrite(const void *ptr, size_t size, size_t nitems,
+ CxBuffer *buffer);
+
+size_t cxBufferAppend(const void *ptr, size_t size, size_t nitems,
+ CxBuffer *buffer);
+
+int cxBufferPut(CxBuffer *buffer, int c);
+
+size_t cxBufferPutString(CxBuffer *buffer, const char *str);
+
+int cxBufferTerminate(CxBuffer *buffer);
+
+int cxBufferMinimumCapacity(CxBuffer *buffer, size_t capacity);
+```
+
+
+TODO: document
+
+
+## Read
+
+```C
+#include
+
+size_t cxBufferRead(void *ptr, size_t size, size_t nitems,
+ CxBuffer *buffer);
+
+int cxBufferGet(CxBuffer *buffer);
+```
+
+
+TODO: document
+
+
+## Reset and Clear
+
+```C
+#include
+
+void cxBufferReset(CxBuffer *buffer);
+
+void cxBufferClear(CxBuffer *buffer);
+```
+
+
+TODO: document
+
+
+## Random Access
+
+```C
+#include
+
+int cxBufferSeek(CxBuffer *buffer, off_t offset, int whence);
+
+bool cxBufferEof(const CxBuffer *buffer);
+```
+
+
+TODO: document
+
+
+## Shift Contents
+
+```C
+#include
+
+int cxBufferShift(CxBuffer *buffer, off_t shift);
+
+int cxBufferShiftRight(CxBuffer *buffer, size_t shift);
+
+int cxBufferShiftLeft(CxBuffer *buffer, size_t shift);
+```
+
+
+TODO: document
+
+
+## Flushing
+
+```C
+#include
+
+typedef struct cx_buffer_flush_config_s {
+ size_t threshold;
+ size_t blksize;
+ size_t blkmax;
+ void *target;
+ cx_write_func wfunc;
+} CxBufferFlushConfig;
+
+int cxBufferEnableFlushing(CxBuffer *buffer,
+ CxBufferFlushConfig config);
+
+size_t cxBufferFlush(CxBuffer *buffer);
+```
+
+
+TODO: document
+