Wed, 10 Oct 2012 13:58:51 +0200
discarded fascism from 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 10:46:20 2012 +0200 1.2 +++ b/test/buffer_tests.c Wed Oct 10 13:58:51 2012 +0200 1.3 @@ -16,29 +16,29 @@ 1.4 1.5 r = ucx_buffer_seek(b, 5, SEEK_SET); 1.6 UCX_TEST_ASSERT(r == 0, "seek SET+5 failed"); 1.7 - UCX_TEST_ASSERT(ucx_buffer_tell(b) == 5, "seek SET+5 set wrong position"); 1.8 + UCX_TEST_ASSERT(b->pos == 5, "seek SET+5 set wrong position"); 1.9 1.10 r = ucx_buffer_seek(b, 20, SEEK_SET); 1.11 UCX_TEST_ASSERT(r != 0, "seek beyond bounds shall fail"); 1.12 - UCX_TEST_ASSERT(ucx_buffer_tell(b) == 5, 1.13 + UCX_TEST_ASSERT(b->pos == 5, 1.14 "failed seek shall leave pos unchanged"); 1.15 1.16 r = ucx_buffer_seek(b, 5, SEEK_CUR); 1.17 UCX_TEST_ASSERT(r == 0, "seek CUR+5 failed"); 1.18 - UCX_TEST_ASSERT(ucx_buffer_tell(b) == 10, "seek CUR+5 set wrong position"); 1.19 + UCX_TEST_ASSERT(b->pos == 10, "seek CUR+5 set wrong position"); 1.20 1.21 r = ucx_buffer_seek(b, 10, SEEK_CUR); 1.22 UCX_TEST_ASSERT(r != 0, "seek CUR beyond bounds shall fail"); 1.23 - UCX_TEST_ASSERT(ucx_buffer_tell(b) == 10, 1.24 + UCX_TEST_ASSERT(b->pos == 10, 1.25 "failed seek shall leave pos unchanged"); 1.26 1.27 r = ucx_buffer_seek(b, -5, SEEK_END); 1.28 UCX_TEST_ASSERT(r == 0, "seek END-5 failed"); 1.29 - UCX_TEST_ASSERT(ucx_buffer_tell(b) == 2, "seek END-5 set wrong position"); 1.30 + UCX_TEST_ASSERT(b->pos == 2, "seek END-5 set wrong position"); 1.31 1.32 r = ucx_buffer_seek(b, -10, SEEK_END); 1.33 UCX_TEST_ASSERT(r != 0, "seek END beyond bounds shall fail"); 1.34 - UCX_TEST_ASSERT(ucx_buffer_tell(b) == 2, 1.35 + UCX_TEST_ASSERT(b->pos == 2, 1.36 "failed seek shall leave pos unchanged"); 1.37 1.38 UCX_TEST_END 1.39 @@ -57,10 +57,10 @@ 1.40 UCX_TEST_BEGIN 1.41 1.42 ucx_buffer_putc(b, 48); ucx_buffer_putc(b, 48); ucx_buffer_putc(b, 48); 1.43 - UCX_TEST_ASSERT(ucx_buffer_tell(b) == 3, "pos wrong after first 3 puts"); 1.44 + UCX_TEST_ASSERT(b->pos == 3, "pos wrong after first 3 puts"); 1.45 ucx_buffer_seek(b, 10, SEEK_CUR); 1.46 ucx_buffer_putc(b, 48); ucx_buffer_putc(b, 48); ucx_buffer_putc(b, 48); 1.47 - UCX_TEST_ASSERT(ucx_buffer_tell(b) == 16, "pos wrong after last 3 puts"); 1.48 + UCX_TEST_ASSERT(b->pos == 16, "pos wrong after last 3 puts"); 1.49 UCX_TEST_ASSERT(ucx_buffer_eof(b), "eof not set"); 1.50 UCX_TEST_ASSERT(ucx_buffer_putc(b, 48) == EOF, 1.51 "put shall return EOF when buffer is full"); 1.52 @@ -87,12 +87,12 @@ 1.53 1.54 char rb[16]; 1.55 for (int i = 0 ; i < 16 ; i++) { 1.56 - UCX_TEST_ASSERT(ucx_buffer_tell(b) == i, "pos wrong during read loop"); 1.57 + UCX_TEST_ASSERT(b->pos == i, "pos wrong during read loop"); 1.58 UCX_TEST_ASSERT(!ucx_buffer_eof(b), 1.59 "EOF shall not be set during read loop"); 1.60 rb[i] = ucx_buffer_getc(b); 1.61 } 1.62 - UCX_TEST_ASSERT(ucx_buffer_tell(b) == 16, "pos wrong after read loop"); 1.63 + UCX_TEST_ASSERT(b->pos == 16, "pos wrong after read loop"); 1.64 UCX_TEST_ASSERT(ucx_buffer_eof(b), "EOF not set"); 1.65 UCX_TEST_ASSERT(memcmp(rb, " 01234567", 16) == 0, 1.66 "read data incorrect"); 1.67 @@ -133,7 +133,7 @@ 1.68 ucx_buffer_seek(b, 0, SEEK_SET); 1.69 r = ucx_buffer_write(threebytestring, 3, 6, b); 1.70 UCX_TEST_ASSERT(r == 15, "three byte string not correctly trimed"); 1.71 - UCX_TEST_ASSERT(ucx_buffer_tell(b) == 15, 1.72 + UCX_TEST_ASSERT(b->pos == 15, 1.73 "position after write of three byte string incorrect"); 1.74 UCX_TEST_ASSERT(!ucx_buffer_eof(b), "eof shall not be set"); 1.75 UCX_TEST_ASSERT(memcmp(buffer, " t h r e e1", 16) == 0, 1.76 @@ -194,9 +194,9 @@ 1.77 *dst = ucx_buffer_extract(src, 5, 5, UCX_BUFFER_DEFAULT); 1.78 1.79 UCX_TEST_BEGIN 1.80 - UCX_TEST_ASSERT(ucx_buffer_testflags(dst, UCX_BUFFER_AUTOFREE), 1.81 + UCX_TEST_ASSERT((dst->flags & UCX_BUFFER_AUTOFREE) == UCX_BUFFER_AUTOFREE, 1.82 "autofree flag shall be enforced"); 1.83 - UCX_TEST_ASSERT(ucx_buffer_size(dst) == 5, "wrong size for new buffer"); 1.84 + UCX_TEST_ASSERT(dst->size == 5, "wrong size for new buffer"); 1.85 char rb[5]; 1.86 ucx_buffer_read(rb, 1, 5, dst); 1.87 UCX_TEST_ASSERT(memcmp(rb, "is a ", 5) == 0,
2.1 --- a/ucx/buffer.c Wed Oct 10 10:46:20 2012 +0200 2.2 +++ b/ucx/buffer.c Wed Oct 10 13:58:51 2012 +0200 2.3 @@ -3,13 +3,6 @@ 2.4 #include <stdlib.h> 2.5 #include <string.h> 2.6 2.7 -struct UcxBuffer { 2.8 - void *space; 2.9 - size_t pos; 2.10 - size_t size; 2.11 - int flags; 2.12 -}; 2.13 - 2.14 UcxBuffer *ucx_buffer_new(void *space, size_t length, int flags) { 2.15 UcxBuffer *buffer = (UcxBuffer*) malloc(sizeof(UcxBuffer)); 2.16 if (buffer) { 2.17 @@ -34,7 +27,7 @@ 2.18 } 2.19 2.20 void ucx_buffer_free(UcxBuffer *buffer) { 2.21 - if (ucx_buffer_testflags(buffer, UCX_BUFFER_AUTOFREE)) { 2.22 + if ((buffer->flags & UCX_BUFFER_AUTOFREE) == UCX_BUFFER_AUTOFREE) { 2.23 free(buffer->space); 2.24 } 2.25 free(buffer); 2.26 @@ -93,18 +86,6 @@ 2.27 return buffer->pos >= buffer->size; 2.28 } 2.29 2.30 -size_t ucx_buffer_tell(UcxBuffer *buffer) { 2.31 - return buffer->pos; 2.32 -} 2.33 - 2.34 -size_t ucx_buffer_size(UcxBuffer *buffer) { 2.35 - return buffer->size; 2.36 -} 2.37 - 2.38 -int ucx_buffer_testflags(UcxBuffer *buffer, int flags) { 2.39 - return (buffer->flags & flags) == flags; 2.40 -} 2.41 - 2.42 size_t ucx_bufio(void* d, size_t s, size_t n, UcxBuffer *b, _Bool read) { 2.43 size_t len; 2.44 if (b->pos + s*n > b->size) {
3.1 --- a/ucx/buffer.h Wed Oct 10 10:46:20 2012 +0200 3.2 +++ b/ucx/buffer.h Wed Oct 10 13:58:51 2012 +0200 3.3 @@ -10,9 +10,15 @@ 3.4 3.5 #define UCX_BUFFER_DEFAULT 0x00 3.6 #define UCX_BUFFER_AUTOFREE 0x01 3.7 +#define UCX_BUFFER_AUTOEXTEND 0x02 3.8 3.9 -/* the user shall not modify values */ 3.10 -typedef struct UcxBuffer UcxBuffer; 3.11 +/* the user shall not modify values, but can get an up to date space pointer */ 3.12 +typedef struct { 3.13 + void *space; 3.14 + size_t pos; 3.15 + size_t size; 3.16 + int flags; 3.17 +} UcxBuffer; 3.18 3.19 /* if space is NULL, new space is allocated and the autofree flag is enforced */ 3.20 UcxBuffer *ucx_buffer_new(void *space, size_t length, int flags); 3.21 @@ -41,10 +47,6 @@ 3.22 * 3.23 */ 3.24 int ucx_buffer_seek(UcxBuffer *buffer, off_t offset, int whence); 3.25 -size_t ucx_buffer_tell(UcxBuffer *buffer); 3.26 -size_t ucx_buffer_size(UcxBuffer *buffer); 3.27 -/* returns non-zero, if at least the specified flags are set */ 3.28 -int ucx_buffer_testflags(UcxBuffer *buffer, int flags); 3.29 3.30 /* 3.31 * returns non-zero, iff the current buffer position has exceeded the last