list.h
00001
00002
00003
00004
00005 #ifndef _U_LIST_H_
00006 #define _U_LIST_H_
00007
00008 #include <u/libu_conf.h>
00009
00010 #ifdef __cplusplus
00011 extern "C" {
00012 #endif
00013
00014
00015 struct u_list_s;
00016
00023 typedef struct u_list_s u_list_t;
00024
00031 #define u_list_foreach(list, n, it) \
00032 for(n = u_list_first(list, &it); n; n = u_list_next(list, &it))
00033
00042 #define u_list_iforeach(list, n, it, i) \
00043 for(i = 0, n = u_list_first(list, &it); n; n = u_list_next(list, &it), ++i)
00044
00045 int u_list_create (u_list_t **plist);
00046 void u_list_free (u_list_t *list);
00047 int u_list_clear (u_list_t *list);
00048 int u_list_add (u_list_t *list, void *ptr);
00049 int u_list_insert (u_list_t *list, void *ptr, size_t n);
00050 int u_list_del (u_list_t *list, void *ptr);
00051 int u_list_del_n (u_list_t *list, size_t n, void **pptr);
00052 void *u_list_get_n (u_list_t *list, size_t n);
00053 size_t u_list_count (u_list_t *list);
00054 void *u_list_first (u_list_t *list, void **it);
00055 void *u_list_next (u_list_t *list, void **it);
00056
00061 #ifdef __cplusplus
00062 }
00063 #endif
00064
00065 #endif