diff options
author | Søren Sandmann Pedersen <sandmann@daimi.au.dk> | 2009-04-17 19:12:40 -0400 |
---|---|---|
committer | Søren Sandmann Pedersen <sandmann@daimi.au.dk> | 2009-04-17 19:12:40 -0400 |
commit | ff336094ae0271b3f8b39309cdf5d3095fa846ed (patch) | |
tree | 6eb362248d3c3b087458c312a546e2a8f8c9f35f | |
parent | 907e9b9b9867f1340a26af956ff56826ea4b0ffb (diff) |
Make array_append_undefined() generically useful
-rw-r--r-- | array.c | 29 |
1 files changed, 19 insertions, 10 deletions
@@ -138,6 +138,23 @@ array_delete_tail (array_t *array, int n_elements) return array; } +static array_t * G_GNUC_WARN_UNUSED_RESULT +array_append_undefined (array_t *array, + int n_elements, + void **tail) +{ + array = realloc_array (array, array->n_elements + n_elements * array->element_size); + + array->n_elements += n_elements; + + nul_terminate (array); + + if (tail) + *tail = (char *)array->data + array->element_size * (array->n_elements - n_elements); + + return array; +} + /* Generic arrays * * The idiomatic way to use them is like this: @@ -285,18 +302,10 @@ nul_string_append_undefined (nul_string_t *str, char **tail) { array_t *array = get_array (str, &string_t_magic); - - array = realloc_array (array, array->n_elements + n_bytes); - array->n_elements += n_bytes; - str = (nul_string_t *)array->data; + array = array_append_undefined (array, n_bytes, (void **)tail); - str[array->n_elements] = '\0'; - - if (tail) - *tail = str + array->n_elements - n_bytes; - - return str; + return (nul_string_t *)array->data; } nul_string_t * |