changeset 4452:66fc4c35a8de HEAD

Added array_idx_clear().
author Timo Sirainen <timo.sirainen@movial.fi>
date Wed, 28 Jun 2006 18:36:42 +0300
parents 1a35d53c18fc
children 85fcdb478608
files src/lib/array.h
diffstat 1 files changed, 16 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib/array.h	Wed Jun 28 16:10:25 2006 +0300
+++ b/src/lib/array.h	Wed Jun 28 18:36:42 2006 +0300
@@ -205,6 +205,22 @@
 	_array_idx_set(&(array)->arr, idx, data); \
 	} STMT_END
 
+static inline void
+_array_idx_clear(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);
+	}
+}
+#define array_idx_clear(array, idx) \
+	_array_idx_clear(&(array)->arr, idx)
+
 static inline void *
 _array_append_space(struct array *array)
 {