00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00030 #if !defined(_TIFA_LINKED_LIST_H_)
00031
00035 #define _TIFA_LINKED_LIST_H_
00036
00037 #include <inttypes.h>
00038
00039 #ifdef __cplusplus
00040 extern "C" {
00041 #endif
00042
00051 struct struct_linked_list_node_t {
00055 struct struct_linked_list_node_t* next;
00059 void* data;
00060 };
00061
00070 struct struct_linked_list_t {
00074 struct struct_linked_list_node_t* head;
00078 struct struct_linked_list_node_t* tail;
00089 int (*cmp_func) (const void* const data_a, const void* const data_b);
00093 uint32_t length;
00094 };
00095
00100 typedef struct struct_linked_list_t linked_list_t;
00101
00106 typedef struct struct_linked_list_node_t linked_list_node_t;
00107
00120 void init_linked_list(linked_list_t* const list,
00121 int (*cmp_func) (const void* const data_a,
00122 const void* const data_b) );
00123
00135 void clear_linked_list(linked_list_t* const list);
00136
00146 void append_to_linked_list(linked_list_t* const list, void* const data);
00147
00157 void prepend_to_linked_list(linked_list_t* const list, void* const data);
00158
00159
00168 void* pop_linked_list(linked_list_t* const list);
00169
00178 void* push_linked_list(linked_list_t* const list);
00179
00190 void insert_in_linked_list(linked_list_t* const list, void* const data);
00191
00204 linked_list_node_t* get_node_in_linked_list(linked_list_t* const list,
00205 void* const data);
00206
00220 linked_list_node_t* remove_from_linked_list(linked_list_t* const list,
00221 void* const data);
00222
00233 void remove_node_from_linked_list(linked_list_t* const list,
00234 linked_list_node_t* const node);
00235
00250 void delete_in_linked_list(linked_list_t* const list, void* const data);
00251
00252 #ifdef __cplusplus
00253 }
00254 #endif
00255
00256 #endif