Wed, 10 Oct 2012 10:04:01 +0200
added flag field to buffer
test/buffer_tests.c | file | annotate | diff | comparison | revisions | |
ucx/buffer.c | file | annotate | diff | comparison | revisions | |
ucx/buffer.h | file | annotate | diff | comparison | revisions |
1.1 --- a/test/buffer_tests.c Wed Oct 10 09:54:57 2012 +0200 1.2 +++ b/test/buffer_tests.c Wed Oct 10 10:04:01 2012 +0200 1.3 @@ -9,7 +9,7 @@ 1.4 memset(buffer, 32, 7); 1.5 buffer[7] = 0; 1.6 1.7 - UcxBuffer *b = ucx_buffer_new(buffer, 16); 1.8 + UcxBuffer *b = ucx_buffer_new(buffer, 16, UCX_BUFFER_DEFAULT); 1.9 int r; 1.10 1.11 UCX_TEST_BEGIN 1.12 @@ -51,7 +51,7 @@ 1.13 char *buffer = malloc(16); 1.14 memset(buffer, 32, 16); 1.15 1.16 - UcxBuffer *b = ucx_buffer_new(buffer, 16); 1.17 + UcxBuffer *b = ucx_buffer_new(buffer, 16, UCX_BUFFER_DEFAULT); 1.18 int r; 1.19 1.20 UCX_TEST_BEGIN 1.21 @@ -79,7 +79,7 @@ 1.22 buffer[i] = 40+i; 1.23 } 1.24 1.25 - UcxBuffer *b = ucx_buffer_new(buffer, 16); 1.26 + UcxBuffer *b = ucx_buffer_new(buffer, 16, UCX_BUFFER_DEFAULT); 1.27 int r; 1.28 1.29 UCX_TEST_BEGIN 1.30 @@ -109,7 +109,7 @@ 1.31 buffer[i] = 40+i; 1.32 } 1.33 1.34 - UcxBuffer *b = ucx_buffer_new(buffer, 16); 1.35 + UcxBuffer *b = ucx_buffer_new(buffer, 16, UCX_BUFFER_DEFAULT); 1.36 int r; 1.37 1.38 UCX_TEST_BEGIN 1.39 @@ -151,7 +151,7 @@ 1.40 buffer[i] = 40+i; 1.41 } 1.42 1.43 - UcxBuffer *b = ucx_buffer_new(buffer, 16); 1.44 + UcxBuffer *b = ucx_buffer_new(buffer, 16, UCX_BUFFER_DEFAULT); 1.45 int r; 1.46 1.47 UCX_TEST_BEGIN
2.1 --- a/ucx/buffer.c Wed Oct 10 09:54:57 2012 +0200 2.2 +++ b/ucx/buffer.c Wed Oct 10 10:04:01 2012 +0200 2.3 @@ -7,12 +7,13 @@ 2.4 void *space; 2.5 off_t pos; 2.6 size_t length; 2.7 - _Bool autofree; 2.8 + int flags; 2.9 }; 2.10 2.11 -UcxBuffer *ucx_buffer_new(void *space, size_t length) { 2.12 +UcxBuffer *ucx_buffer_new(void *space, size_t length, int flags) { 2.13 UcxBuffer *buffer = (UcxBuffer*) malloc(sizeof(UcxBuffer)); 2.14 if (buffer) { 2.15 + buffer->flags = flags; 2.16 if (!space) { 2.17 buffer->space = malloc(length); 2.18 if (!buffer->space) { 2.19 @@ -20,10 +21,9 @@ 2.20 return NULL; 2.21 } 2.22 memset(buffer->space, 0, length); 2.23 - buffer->autofree = 1; 2.24 + buffer->flags |= UCX_BUFFER_AUTOFREE; 2.25 } else { 2.26 buffer->space = space; 2.27 - buffer->autofree = 0; 2.28 } 2.29 buffer->length = length; 2.30 2.31 @@ -34,7 +34,7 @@ 2.32 } 2.33 2.34 void ucx_buffer_free(UcxBuffer *buffer) { 2.35 - if (buffer->autofree) { 2.36 + if ((buffer->flags & UCX_BUFFER_AUTOFREE) > 0) { 2.37 free(buffer->space); 2.38 } 2.39 free(buffer);
3.1 --- a/ucx/buffer.h Wed Oct 10 09:54:57 2012 +0200 3.2 +++ b/ucx/buffer.h Wed Oct 10 10:04:01 2012 +0200 3.3 @@ -7,11 +7,14 @@ 3.4 extern "C" { 3.5 #endif 3.6 3.7 +#define UCX_BUFFER_DEFAULT 0x00 3.8 +#define UCX_BUFFER_AUTOFREE 0x01 3.9 3.10 /* the user shall not modify values */ 3.11 typedef struct UcxBuffer UcxBuffer; 3.12 3.13 -UcxBuffer *ucx_buffer_new(void *space, size_t length); 3.14 +/* if space is NULL, new space is allocated and the autofree flag is enforced */ 3.15 +UcxBuffer *ucx_buffer_new(void *space, size_t length, int flags); 3.16 void ucx_buffer_free(UcxBuffer* buffer); 3.17 3.18 /*