34 int (* compare) (
const void *
a,
const void *
b);
38 int (* compare) (
const void *
a,
const void *
b,
void * data);
44 Index * index = g_slice_new (Index);
56 g_slice_free (Index, index);
66 if (size <= index->size)
72 while (size > index->size)
75 index->data = g_realloc (index->data, sizeof (
void *) * index->size);
80 index->data[
at] = value;
85 return index->data[
at];
92 if (at < index->count)
93 memmove (index->data + at + count, index->data + at, sizeof (
void *) *
96 index->count += count;
102 index->data[
at] = value;
113 memcpy (target->data + to, source->data + from, sizeof (
void *) * count);
120 memcpy (target->data + to, source->data + from, sizeof (
void *) * count);
141 memmove (index->data + to, index->data + from, sizeof (
void *) * count);
146 index->count -= count;
147 memmove (index->data + at, index->data + at + count, sizeof (
void *) *
148 (index->count - at));
151 static int index_compare (
const void * ap,
const void * bp,
void * _wrapper)
154 return wrapper->
compare (* (
const void * *) ap, * (
const void * *) bp);
157 EXPORT
void index_sort (Index * index,
int (* compare) (
const void *,
const void *))
160 g_qsort_with_data (index->data, index->count, sizeof (
void *),
167 return wrapper->
compare (* (
const void * *) ap, * (
const void * *) bp, wrapper->
data);
171 (
const void *
a,
const void *
b,
void * data),
void * data)
174 g_qsort_with_data (index->data, index->count, sizeof (
void *),