33 int (* compare) (
const void *
a,
const void *
b);
37 int (* compare) (
const void *
a,
const void *
b,
void * data);
43 Index * index = g_slice_new (Index);
55 g_slice_free (Index, index);
65 if (size <= index->size)
71 while (size > index->size)
74 index->data = g_realloc (index->data, sizeof (
void *) * index->size);
79 index->data[
at] = value;
84 return index->data[
at];
91 if (at < index->count)
92 memmove (index->data + at + count, index->data + at, sizeof (
void *) *
95 index->count += count;
101 index->data[
at] = value;
112 memcpy (target->data + to, source->data + from, sizeof (
void *) * count);
119 memcpy (target->data + to, source->data + from, sizeof (
void *) * count);
140 memmove (index->data + to, index->data + from, sizeof (
void *) * count);
145 index->count -= count;
146 memmove (index->data + at, index->data + at + count, sizeof (
void *) *
147 (index->count - at));
150 static int index_compare (
const void * ap,
const void * bp,
void * _wrapper)
153 return wrapper->
compare (* (
const void * *) ap, * (
const void * *) bp);
156 EXPORT
void index_sort (Index * index,
int (* compare) (
const void *,
const void *))
159 g_qsort_with_data (index->data, index->count, sizeof (
void *),
166 return wrapper->
compare (* (
const void * *) ap, * (
const void * *) bp, wrapper->
data);
170 (
const void *
a,
const void *
b,
void * data),
void * data)
173 g_qsort_with_data (index->data, index->count, sizeof (
void *),