Mercurial > dovecot > original-hg > dovecot-1.2
changeset 7857:63df79ccfedb HEAD
Uninlined some of the more complex array functions.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Fri, 13 Jun 2008 04:25:05 +0300 |
parents | 3c8736e8f08d |
children | 69c1e3e13464 |
files | src/lib/Makefile.am src/lib/array.c src/lib/array.h |
diffstat | 3 files changed, 59 insertions(+), 63 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib/Makefile.am Fri Jun 13 03:53:37 2008 +0300 +++ b/src/lib/Makefile.am Fri Jun 13 04:25:05 2008 +0300 @@ -9,6 +9,7 @@ perl $(srcdir)/unicodemap.pl < UnicodeData.txt > $@ liblib_a_SOURCES = \ + array.c \ aqueue.c \ backtrace-string.c \ base64.c \
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/lib/array.c Fri Jun 13 04:25:05 2008 +0300 @@ -0,0 +1,53 @@ +/* Copyright (c) 2003-2008 Dovecot authors, see the included COPYING file */ + +#include "lib.h" +#include "array.h" + +void *array_idx_modifiable_i(struct array *array, unsigned int idx) +{ + size_t pos; + + pos = idx * array->element_size; + if (pos >= array->buffer->used) { + /* index doesn't exist yet, initialize with zero */ + buffer_append_zero(array->buffer, pos + array->element_size - + array->buffer->used); + } + return buffer_get_space_unsafe(array->buffer, pos, array->element_size); +} + +void array_idx_set_i(struct array *array, unsigned int idx, const void *data) +{ + size_t pos; + + pos = idx * array->element_size; + if (pos > array->buffer->used) { + /* index doesn't exist yet, initialize with zero */ + buffer_append_zero(array->buffer, pos - array->buffer->used); + } + buffer_write(array->buffer, pos, data, array->element_size); +} + +void array_idx_clear_i(struct array *array, unsigned int idx) +{ + size_t pos; + + pos = idx * array->element_size; + if (pos > array->buffer->used) { + /* index doesn't exist yet, initialize with zero */ + buffer_append_zero(array->buffer, pos - array->buffer->used); + } else { + buffer_write_zero(array->buffer, pos, array->element_size); + } +} + +bool array_cmp_i(const struct array *array1, const struct array *array2) +{ + if (!array_is_created_i(array1) || array1->buffer->used == 0) + return !array_is_created_i(array2) || array2->buffer->used == 0; + + if (!array_is_created_i(array2)) + return FALSE; + + return buffer_cmp(array1->buffer, array2->buffer); +}
--- a/src/lib/array.h Fri Jun 13 03:53:37 2008 +0300 +++ b/src/lib/array.h Fri Jun 13 04:25:05 2008 +0300 @@ -167,52 +167,17 @@ ARRAY_TYPE_CAST_MODIFIABLE(array) \ array_get_modifiable_i(&(array)->arr, count) -static inline void * -array_idx_modifiable_i(struct array *array, unsigned int idx) -{ - size_t pos; - - pos = idx * array->element_size; - if (pos >= array->buffer->used) { - /* index doesn't exist yet, initialize with zero */ - buffer_append_zero(array->buffer, pos + array->element_size - - array->buffer->used); - } - return buffer_get_space_unsafe(array->buffer, pos, array->element_size); -} +void *array_idx_modifiable_i(struct array *array, unsigned int idx); #define array_idx_modifiable(array, idx) \ ARRAY_TYPE_CAST_MODIFIABLE(array) \ array_idx_modifiable_i(&(array)->arr, idx) -static inline void -array_idx_set_i(struct array *array, unsigned int idx, const void *data) -{ - size_t pos; - - pos = idx * array->element_size; - if (pos > array->buffer->used) { - /* index doesn't exist yet, initialize with zero */ - buffer_append_zero(array->buffer, pos - array->buffer->used); - } - buffer_write(array->buffer, pos, data, array->element_size); -} +void array_idx_set_i(struct array *array, unsigned int idx, const void *data); #define array_idx_set(array, idx, data) \ array_idx_set_i(&(array)->arr + ARRAY_TYPE_CHECK(array, data), \ idx, data) -static inline void -array_idx_clear_i(struct array *array, unsigned int idx) -{ - size_t pos; - - pos = idx * array->element_size; - if (pos > array->buffer->used) { - /* index doesn't exist yet, initialize with zero */ - buffer_append_zero(array->buffer, pos - array->buffer->used); - } else { - buffer_write_zero(array->buffer, pos, array->element_size); - } -} +void array_idx_clear_i(struct array *array, unsigned int idx); #define array_idx_clear(array, idx) \ array_idx_clear_i(&(array)->arr, idx) @@ -228,20 +193,7 @@ #define array_append_space(array) \ ARRAY_TYPE_CAST_MODIFIABLE(array)array_append_space_i(&(array)->arr) -static inline void * -array_insert_space_i(struct array *array, unsigned int idx) -{ - void *data; - size_t pos; - - pos = idx * array->element_size; - buffer_copy(array->buffer, pos + array->element_size, - array->buffer, pos, (size_t)-1); - - data = buffer_get_space_unsafe(array->buffer, pos, array->element_size); - memset(data, 0, array->element_size); - return data; -} +void *array_insert_space_i(struct array *array, unsigned int idx); #define array_insert_space(array, idx) \ ARRAY_TYPE_CAST_MODIFIABLE(array) \ array_insert_space_i(&(array)->arr, idx) @@ -265,17 +217,7 @@ #define array_count(array) \ array_count_i(&(array)->arr) -static inline bool -array_cmp_i(const struct array *array1, const struct array *array2) -{ - if (!array_is_created_i(array1) || array1->buffer->used == 0) - return !array_is_created_i(array2) || array2->buffer->used == 0; - - if (!array_is_created_i(array2)) - return FALSE; - - return buffer_cmp(array1->buffer, array2->buffer); -} +bool array_cmp_i(const struct array *array1, const struct array *array2); #define array_cmp(array1, array2) \ array_cmp_i(&(array1)->arr, &(array2)->arr)