}
}
+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;
+}
+
bool array_cmp_i(const struct array *array1, const struct array *array2)
{
if (!array_is_created_i(array1) || array1->buffer->used == 0)
return buffer_cmp(array1->buffer, array2->buffer);
}
+
+void array_reverse_i(const struct array *array)
+{
+ const unsigned int element_size = array->element_size;
+ unsigned int i, count = array_count_i(array);
+ size_t size;
+ void *data, *tmp;
+
+ data = buffer_get_modifiable_data(array->buffer, &size);
+ tmp = t_buffer_get(array->element_size);
+ for (i = 0; i+1 < count; i++, count--) {
+ memcpy(tmp, PTR_OFFSET(data, i * element_size), element_size);
+ memcpy(PTR_OFFSET(data, i * element_size),
+ PTR_OFFSET(data, (count-1) * element_size),
+ element_size);
+ memcpy(PTR_OFFSET(data, (count-1) * element_size), tmp,
+ element_size);
+ }
+}
#define array_cmp(array1, array2) \
array_cmp_i(&(array1)->arr, &(array2)->arr)
+void array_reverse_i(const struct array *array);
+#define array_reverse(array) \
+ array_reverse_i(&(array)->arr)
+
#endif
#include <stdlib.h>
#include <time.h>
+static void test_array(void)
+{
+ ARRAY_DEFINE(intarr, int);
+ int input[] = { -1234567890, -272585721, 2724859223, 824725652 };
+ const int *output;
+ unsigned int i, j;
+ bool success = TRUE;
+
+ t_array_init(&intarr, 5);
+ for (i = 0; i < N_ELEMENTS(input); i++) {
+ array_clear(&intarr);
+ array_append(&intarr, input, i);
+ array_reverse(&intarr);
+
+ output = i == 0 ? NULL : array_idx(&intarr, 0);
+ for (j = 0; j < i; j++) {
+ if (input[i-j-1] != output[j]) {
+ success = FALSE;
+ break;
+ }
+ }
+ }
+ test_out("array_reverse()", success);
+}
+
static void test_base64_encode(void)
{
static const char *input[] = {
int main(void)
{
static void (*test_functions[])(void) = {
+ test_array,
test_aqueue,
test_base64_encode,
test_base64_decode,