src/ucx/buffer.c

changeset 490
d218607f5a7e
parent 415
d938228c382e
--- a/src/ucx/buffer.c	Sat Mar 25 17:18:51 2023 +0100
+++ b/src/ucx/buffer.c	Fri May 05 18:02:11 2023 +0200
@@ -29,10 +29,8 @@
 #include "cx/buffer.h"
 #include "cx/utils.h"
 
-#include <stdlib.h>
 #include <stdio.h>
 #include <string.h>
-#include <stdint.h>
 
 int cxBufferInit(
         CxBuffer *buffer,
@@ -41,6 +39,7 @@
         CxAllocator const *allocator,
         int flags
 ) {
+    if (allocator == NULL) allocator = cxDefaultAllocator;
     buffer->allocator = allocator;
     buffer->flags = flags;
     if (!space) {
@@ -71,6 +70,29 @@
     }
 }
 
+CxBuffer *cxBufferCreate(
+        void *space,
+        size_t capacity,
+        CxAllocator const *allocator,
+        int flags
+) {
+    CxBuffer *buf = cxMalloc(allocator, sizeof(CxBuffer));
+    if (buf == NULL) return NULL;
+    if (0 == cxBufferInit(buf, space, capacity, allocator, flags)) {
+        return buf;
+    } else {
+        cxFree(allocator, buf);
+        return NULL;
+    }
+}
+
+void cxBufferFree(CxBuffer *buffer) {
+    if ((buffer->flags & CX_BUFFER_FREE_CONTENTS) == CX_BUFFER_FREE_CONTENTS) {
+        cxFree(buffer->allocator, buffer->bytes);
+    }
+    cxFree(buffer->allocator, buffer);
+}
+
 int cxBufferSeek(
         CxBuffer *buffer,
         off_t offset,

mercurial