dovecot-1.1: Uninlined some of the more complex array functions.

dovecot at dovecot.org dovecot at dovecot.org
Fri Jun 13 04:39:54 EEST 2008


details:   http://hg.dovecot.org/dovecot-1.1/rev/a81b260ff47e
changeset: 7657:a81b260ff47e
user:      Timo Sirainen <tss at iki.fi>
date:      Fri Jun 13 04:25:05 2008 +0300
description:
Uninlined some of the more complex array functions.

diffstat:

3 files changed, 59 insertions(+), 63 deletions(-)
src/lib/Makefile.am |    1 
src/lib/array.c     |   53 +++++++++++++++++++++++++++++++++++++++
src/lib/array.h     |   68 +++------------------------------------------------

diffs (168 lines):

diff -r 1bdec7f05207 -r a81b260ff47e src/lib/Makefile.am
--- 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 @@ EXTRA_DIST = unicodemap.c unicodemap.pl
 	perl $(srcdir)/unicodemap.pl < UnicodeData.txt > $@
 
 liblib_a_SOURCES = \
+	array.c \
 	aqueue.c \
 	backtrace-string.c \
 	base64.c \
diff -r 1bdec7f05207 -r a81b260ff47e src/lib/array.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);
+}
diff -r 1bdec7f05207 -r a81b260ff47e src/lib/array.h
--- 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_get_modifiable_i(struct array *arr
 	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 @@ array_append_space_i(struct array *array
 #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 @@ array_count_i(const struct array *array)
 #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)
 


More information about the dovecot-cvs mailing list