4302d3222883af299038e10dc9943613e6703b1c
[my-code/api.git] / list / list.h
1 /* list.h -- list headers */
2
3 #ifndef LIST_H
4 #define LIST_H
5
6 #define _GNU_SOURCE
7 #include <stdio.h>
8 #include <string.h>
9 #include <stdlib.h>
10
11 #define L_SUCCESS 1
12 #define L_ERROR -1
13 #define L_NO_NEXT_ELEMENT -2
14 #define L_NO_SUCH_ELEMENT -3
15 #define L_INVALID_ELEMENT -4
16 #define L_EMPTY_LIST -5
17 #define L_ELEMENT_IN_LIST -6
18 #define L_E_MEM -7
19
20 typedef struct s_list_element {
21   struct s_list_element *prev;
22   struct s_list_element *next;
23   void *data;
24   int data_len;
25 } t_list_element;
26
27 typedef struct s_list {
28   int outfd;
29   t_list_element *start;
30   t_list_element *current;
31 } t_list;
32
33 /* function prototypes */
34 int list_init(t_list *list,int outfd);
35 int list_shutdown(t_list *list);
36 int list_reset(t_list *list);
37 int list_next(t_list *list);
38 int list_del_element(t_list *list,t_list_element *element);
39 int list_del_current(t_list *list);
40 int list_destroy(t_list *list);
41 int list_search_data(t_list *list,void *data,int first_bytes);
42 int list_add_immediate_ptr(t_list *list,void *ptr);
43 int list_add_immediate(t_list *list,void *data,int data_len);
44 int list_add_element(t_list *list,void *data,int data_len);
45 int list_count(t_list *list);
46
47 #endif