added flag field to buffer

Wed, 10 Oct 2012 10:04:01 +0200

author
Mike Becker <universe@uap-core.de>
date
Wed, 10 Oct 2012 10:04:01 +0200
changeset 61
fb07a0ab9a17
parent 60
abae4669fba7
child 62
6814aea8462d

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  /*

mercurial