33 typedef UINT8 uint8_t;
34 typedef UINT16 uint16_t;
35 typedef ULONG32 uint32_t;
36 typedef UINT64 uint64_t;
38 typedef INT16 int16_t;
39 typedef LONG32 int32_t;
40 typedef INT64 int64_t;
45 #include <sys/types.h> 48 #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L 61 typedef int32_t list_hash_t;
63 #ifdef SIMCLIST_DUMPRESTORE 69 list_hash_t list_hash;
84 typedef int (*element_comparator)(
const void *a,
const void *b);
97 typedef int (*element_seeker)(
const void *el,
const void *indicator);
108 typedef size_t (*element_meter)(
const void *el);
119 typedef list_hash_t (*element_hash_computer)(
const void *el);
139 typedef void *(*element_serializer)(
const void *restrict el, uint32_t *restrict serializ_len);
156 typedef void *(*element_unserializer)(
const void *restrict data, uint32_t *restrict data_len);
170 element_comparator comparator;
172 element_seeker seeker;
177 element_hash_computer hasher;
179 element_serializer serializer;
181 element_unserializer unserializer;
194 unsigned int spareelsnum;
196 #ifdef SIMCLIST_WITH_THREADS 198 unsigned int threadcount;
203 unsigned int iter_pos;
216 int list_init(list_t *restrict l);
227 void list_destroy(list_t *restrict l);
241 int list_attributes_comparator(list_t *restrict l, element_comparator comparator_fun);
255 int list_attributes_seeker(list_t *restrict l, element_seeker seeker_fun);
287 int list_attributes_copy(list_t *restrict l, element_meter metric_fun,
int copy_data);
307 int list_attributes_hash_computer(list_t *restrict l, element_hash_computer hash_computer_fun);
328 int list_attributes_serializer(list_t *restrict l, element_serializer serializer_fun);
350 int list_attributes_unserializer(list_t *restrict l, element_unserializer unserializer_fun);
362 int list_append(list_t *restrict l,
const void *data);
374 int list_prepend(list_t *restrict l,
const void *restrict data);
384 void *list_fetch(list_t *restrict l);
393 void *list_get_at(
const list_t *restrict l,
unsigned int pos);
407 void *list_get_max(
const list_t *restrict l);
421 void *list_get_min(
const list_t *restrict l);
430 void *list_extract_at(list_t *restrict l,
unsigned int pos);
440 int list_insert_at(list_t *restrict l,
const void *data,
unsigned int pos);
457 int list_delete(list_t *restrict l,
const void *data);
466 int list_delete_at(list_t *restrict l,
unsigned int pos);
476 int list_delete_range(list_t *restrict l,
unsigned int posstart,
unsigned int posend);
489 int list_clear(list_t *restrict l);
497 unsigned int list_size(
const list_t *restrict l);
507 int list_empty(
const list_t *restrict l);
526 int list_locate(
const list_t *restrict l,
const void *data);
541 void *list_seek(list_t *restrict l,
const void *indicator);
562 int list_contains(
const list_t *restrict l,
const void *data);
581 int list_concat(
const list_t *l1,
const list_t *l2, list_t *restrict dest);
598 int list_sort(list_t *restrict l,
int versus);
610 int list_iterator_start(list_t *restrict l);
618 void *list_iterator_next(list_t *restrict l);
626 int list_iterator_hasnext(
const list_t *restrict l);
634 int list_iterator_stop(list_t *restrict l);
644 int list_hash(
const list_t *restrict l, list_hash_t *restrict hash);
646 #ifdef SIMCLIST_DUMPRESTORE 662 int list_dump_getinfo_filedescriptor(
int fd, list_dump_info_t *restrict info);
677 int list_dump_getinfo_file(
const char *restrict filename, list_dump_info_t *restrict info);
713 int list_dump_filedescriptor(
const list_t *restrict l,
int fd,
size_t *restrict len);
736 int list_dump_file(
const list_t *restrict l,
const char *restrict filename,
size_t *restrict len);
756 int list_restore_filedescriptor(list_t *restrict l,
int fd,
size_t *restrict len);
774 int list_restore_file(list_t *restrict l,
const char *restrict filename,
size_t *len);
783 int list_comparator_int8_t(
const void *a,
const void *b);
789 int list_comparator_int16_t(
const void *a,
const void *b);
795 int list_comparator_int32_t(
const void *a,
const void *b);
801 int list_comparator_int64_t(
const void *a,
const void *b);
807 int list_comparator_uint8_t(
const void *a,
const void *b);
813 int list_comparator_uint16_t(
const void *a,
const void *b);
819 int list_comparator_uint32_t(
const void *a,
const void *b);
825 int list_comparator_uint64_t(
const void *a,
const void *b);
831 int list_comparator_float(
const void *a,
const void *b);
837 int list_comparator_double(
const void *a,
const void *b);
843 int list_comparator_string(
const void *a,
const void *b);
850 size_t list_meter_int8_t(
const void *el);
856 size_t list_meter_int16_t(
const void *el);
862 size_t list_meter_int32_t(
const void *el);
868 size_t list_meter_int64_t(
const void *el);
874 size_t list_meter_uint8_t(
const void *el);
880 size_t list_meter_uint16_t(
const void *el);
886 size_t list_meter_uint32_t(
const void *el);
892 size_t list_meter_uint64_t(
const void *el);
898 size_t list_meter_float(
const void *el);
904 size_t list_meter_double(
const void *el);
910 size_t list_meter_string(
const void *el);
917 list_hash_t list_hashcomputer_int8_t(
const void *el);
923 list_hash_t list_hashcomputer_int16_t(
const void *el);
929 list_hash_t list_hashcomputer_int32_t(
const void *el);
935 list_hash_t list_hashcomputer_int64_t(
const void *el);
941 list_hash_t list_hashcomputer_uint8_t(
const void *el);
947 list_hash_t list_hashcomputer_uint16_t(
const void *el);
953 list_hash_t list_hashcomputer_uint32_t(
const void *el);
959 list_hash_t list_hashcomputer_uint64_t(
const void *el);
965 list_hash_t list_hashcomputer_float(
const void *el);
971 list_hash_t list_hashcomputer_double(
const void *el);
977 list_hash_t list_hashcomputer_string(
const void *el);
Definition: simclist.h:168
list object
Definition: simclist.h:185
Definition: simclist.h:159