ucx/buffer.c

changeset 78
af355652f271
parent 76
655020a30e77
child 84
7465c18765dc
equal deleted inserted replaced
77:51311a5685d3 78:af355652f271
6 UcxBuffer *ucx_buffer_new(void *space, size_t size, int flags) { 6 UcxBuffer *ucx_buffer_new(void *space, size_t size, int flags) {
7 UcxBuffer *buffer = (UcxBuffer*) malloc(sizeof(UcxBuffer)); 7 UcxBuffer *buffer = (UcxBuffer*) malloc(sizeof(UcxBuffer));
8 if (buffer) { 8 if (buffer) {
9 buffer->flags = flags; 9 buffer->flags = flags;
10 if (!space) { 10 if (!space) {
11 buffer->space = malloc(size); 11 buffer->space = (char*)malloc(size);
12 if (!buffer->space) { 12 if (!buffer->space) {
13 free(buffer); 13 free(buffer);
14 return NULL; 14 return NULL;
15 } 15 }
16 memset(buffer->space, 0, size); 16 memset(buffer->space, 0, size);
17 buffer->flags |= UCX_BUFFER_AUTOFREE; 17 buffer->flags |= UCX_BUFFER_AUTOFREE;
18 } else { 18 } else {
19 buffer->space = space; 19 buffer->space = (char*)space;
20 } 20 }
21 buffer->capacity = size; 21 buffer->capacity = size;
22 buffer->size = 0; 22 buffer->size = 0;
23 23
24 buffer->pos = 0; 24 buffer->pos = 0;
46 return NULL; 46 return NULL;
47 } 47 }
48 48
49 UcxBuffer *dst = (UcxBuffer*) malloc(sizeof(UcxBuffer)); 49 UcxBuffer *dst = (UcxBuffer*) malloc(sizeof(UcxBuffer));
50 if (dst) { 50 if (dst) {
51 dst->space = malloc(length); 51 dst->space = (char*)malloc(length);
52 if (!dst->space) { 52 if (!dst->space) {
53 free(dst); 53 free(dst);
54 return NULL; 54 return NULL;
55 } 55 }
56 dst->capacity = length; 56 dst->capacity = length;
93 93
94 int ucx_buffer_extend(UcxBuffer *buffer, size_t len) { 94 int ucx_buffer_extend(UcxBuffer *buffer, size_t len) {
95 size_t newcap = buffer->capacity; 95 size_t newcap = buffer->capacity;
96 while (buffer->pos + len > newcap) newcap <<= 1; 96 while (buffer->pos + len > newcap) newcap <<= 1;
97 97
98 char *newspace = realloc(buffer->space, newcap); 98 char *newspace = (char*)realloc(buffer->space, newcap);
99 if (newspace) { 99 if (newspace) {
100 memset(newspace+buffer->size, 0, newcap-buffer->size); 100 memset(newspace+buffer->size, 0, newcap-buffer->size);
101 buffer->space = newspace; 101 buffer->space = newspace;
102 buffer->capacity = newcap; 102 buffer->capacity = newcap;
103 } else { 103 } else {
183 } 183 }
184 184
185 size_t ucx_buffer_generic_copy(void *s1, void *s2, 185 size_t ucx_buffer_generic_copy(void *s1, void *s2,
186 read_func readfnc, write_func writefnc, size_t bufsize) { 186 read_func readfnc, write_func writefnc, size_t bufsize) {
187 size_t ncp = 0; 187 size_t ncp = 0;
188 char *buf = malloc(bufsize); 188 char *buf = (char*)malloc(bufsize);
189 if(buf == NULL) { 189 if(buf == NULL) {
190 return 0; 190 return 0;
191 } 191 }
192 192
193 size_t r; 193 size_t r;

mercurial