source: MondoRescue/branches/2.2.9/mondo/src/include/mr_list.h @ 2208

Last change on this file since 2208 was 2208, checked in by Bruno Cornec, 11 years ago

Addition of useful functions originaly written for stable branch now obsolete

  • Property svn:eol-style set to native
File size: 1.5 KB
Line 
1/*
2 * $Id$
3 *
4 *     Header file of mr_list.c: a set of function manipulating lists
5 *     Provided under the GPL v2
6 */
7
8#ifndef MR_LIST_H
9#define MR_LIST_H
10
11/* Data structure */
12struct mr_list {
13    /**
14     * Pointers to first and last components of the list
15     */
16    struct mr_list_elt *first;
17    struct mr_list_elt *last;
18};
19
20struct mr_list_elt {
21   
22    /* Content of the element in the list */
23    void *data;
24
25    /* Function to unallocate memory contained in data */
26    void (*mr_free_data)(void *data);
27
28    /* The neighbours (pointers to next and previous) */
29    struct mr_list_elt *next;
30    struct mr_list_elt *prev;
31};
32
33
34/* functions (public methods) */
35
36struct mr_list *mr_list_alloc(void);
37struct mr_list_elt *mr_list_alloc_elt(void *data, void (*mr_free_data)(void *data));
38void mr_list_free(struct mr_list *list);
39void mr_list_free_elt(struct mr_list_elt *elt);
40int mr_list_length(struct mr_list *list);
41void mr_list_add_elt_first(struct mr_list *list, struct mr_list_elt *elt);
42void mr_list_add_elt_last(struct mr_list *list, struct mr_list_elt *elt);
43void mr_list_add_elt_after(struct mr_list *list, struct mr_list_elt *ref, struct mr_list_elt *elt);
44void mr_list_add_elt_before(struct mr_list *list, struct mr_list_elt *ref, struct mr_list_elt *elt);
45void mr_list_del_elt_first(struct mr_list *list);
46void mr_list_del_elt_last(struct mr_list *list);
47void mr_list_del_elt_after(struct mr_list *list, struct mr_list_elt *ref);
48void mr_list_del_elt_before(struct mr_list *list, struct mr_list_elt *ref);
49
50#endif                          /* MR_LIST_H */
Note: See TracBrowser for help on using the repository browser.