list.h

00001 /*
00002  * Copyright (c) 2005-2012 by KoanLogic s.r.l. - All rights reserved.
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 /* forward decl */
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 /* !_U_LIST_H_ */

←Products
© 2005-2012 - KoanLogic S.r.l. - All rights reserved