Alphabetical Class List   File List   Compound Members  

vlist.h

00001 
00002 
00003 #ifndef VLIST_H
00004 #define VLIST_H
00005 
00006 
00007 #include <stdlib.h>
00008 
00009 #ifdef __cplusplus
00010 extern "C" {
00011 #endif /* __cplusplus */
00012 
00013 
00014 typedef struct vlist_s{
00015     struct vlist_node_s * head;
00016     struct vlist_node_s * tail;
00017     struct vlist_node_s * cursor;
00018     unsigned int cursor_index;
00019     unsigned int count;
00020     void *(*malloc) (size_t);
00021     void (*free) (void*);
00022 } vlist_t;
00023 
00024 
00025 vlist_t* new_vlist(
00026     void *(*vlist_malloc) (size_t),
00027     void (*vlist_free) (void *));
00028 
00029 void delete_vlist( 
00030     vlist_t* vlist); 
00031 
00032 void vlist_add_first( 
00033     vlist_t* vlist, 
00034     void* item);
00035 
00036 void vlist_add_last( 
00037     vlist_t* vlist, 
00038     void* item);
00039 
00040 void vlist_add_after_cursor(
00041     vlist_t* vlist,
00042         void *item);
00043 
00044 int vlist_remove(
00045     vlist_t* vlist, 
00046     void* item);
00047 
00048 void * vlist_remove_first(
00049     vlist_t* vlist);
00050 
00051 void * vlist_remove_cursor_next(
00052     vlist_t* vlist);
00053 
00054 void vlist_reset_cursor(
00055     vlist_t* vlist);
00056 
00057 void * vlist_peek_cursor(
00058     vlist_t* vlist);
00059 
00060 void * vlist_peek_cursor_next(
00061     vlist_t* vlist);
00062 
00063 void * vlist_peek_cursor_next_next(
00064     vlist_t* vlist);
00065 
00066 void vlist_advance_cursor(
00067     vlist_t* vlist);
00068 
00069 void * vlist_peek_first(
00070     vlist_t* vlist);
00071 
00072 void * vlist_peek_last(
00073     vlist_t* vlist);
00074 
00075 unsigned long vlist_count(
00076     vlist_t* vlist);
00077 
00078 int vlist_item_exists(
00079     vlist_t* vlist, 
00080     void* item);
00081 
00082 /*items must be of size count*/
00083 void vlist_items_to_array(
00084     vlist_t* vlist, 
00085     void** items);
00086 
00087 void vlist_map_function(
00088     vlist_t* vlist, 
00089     void(*function)(void*, void*),
00090     void * user_data);
00091 
00092 /* This function takes a 0 based index */
00093 void* vlist_nth_item(
00094     vlist_t* vlist,
00095     unsigned long index);
00096 
00097 void vlist_reverse(
00098     vlist_t* vlist);
00099 
00100 /* clears all items from list*/
00101 void vlist_flush(
00102     vlist_t* vlist);
00103 
00104 #ifdef __cplusplus
00105 } /* extern "C" */
00106 #endif /* __cplusplus */
00107 
00108 #endif /*VLIST_H*/
00109 
00110 
00111 


Copyright © 2003 Tech Soft 3D