00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00039 #ifndef ALGORITHM_ARRAYLIST_H
00040 #define ALGORITHM_ARRAYLIST_H
00041
00042 #ifdef __cplusplus
00043 extern "C" {
00044 #endif
00045
00050 typedef void *ArrayListValue;
00051
00059 typedef struct _ArrayList ArrayList;
00060
00065 struct _ArrayList {
00066
00069 ArrayListValue *data;
00070
00073 int length;
00074
00077 int _alloced;
00078 };
00079
00086 typedef int (*ArrayListEqualFunc)(ArrayListValue value1, ArrayListValue value2);
00087
00100 typedef int (*ArrayListCompareFunc)(ArrayListValue value1,
00101 ArrayListValue value2);
00102
00113 ArrayList *arraylist_new(int length);
00114
00121 void arraylist_free(ArrayList *arraylist);
00122
00133 int arraylist_append(ArrayList *arraylist, ArrayListValue data);
00134
00145 int arraylist_prepend(ArrayList *arraylist, ArrayListValue data);
00146
00154 void arraylist_remove(ArrayList *arraylist, int index);
00155
00164 void arraylist_remove_range(ArrayList *arraylist, int index, int length);
00165
00179 int arraylist_insert(ArrayList *arraylist, int index, ArrayListValue data);
00180
00192 int arraylist_index_of(ArrayList *arraylist,
00193 ArrayListEqualFunc callback,
00194 ArrayListValue data);
00195
00202 void arraylist_clear(ArrayList *arraylist);
00203
00211 void arraylist_sort(ArrayList *arraylist, ArrayListCompareFunc compare_func);
00212
00213 #ifdef __cplusplus
00214 }
00215 #endif
00216
00217 #endif
00218