source: MondoRescue/branches/stable/mondo/src/include/mr_list.h @ 1361

Last change on this file since 1361 was 1361, checked in by Bruno Cornec, 13 years ago

Addition of a double chained list (Idea from M. Loiseleur) to support tapecatalog and probably other data types later

  • Property svn:eol-style set to native
File size: 1.4 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    /* The neighbours (pointers to next and previous) */
26    struct mr_list_elt *next;
27    struct mr_list_elt *prev;
28};
29
30
31/* functions (public methods) */
32
33void mr_list_alloc(struct mr_list *list);
34void mr_list_alloc_elt(struct mr_list_elt *elt, void *data);
35void mr_list_free(struct mr_list *list);
36void mr_list_free_elt(struct mr_list_elt *elt);
37int mr_list_length(struct mr_list *list);
38void mr_list_add_elt_first(struct mr_list *list, struct mr_list_elt *elt);
39void mr_list_add_elt_last(struct mr_list *list, struct mr_list_elt *elt);
40void mr_list_add_elt_after(struct mr_list *list, struct mr_list_elt *ref, struct mr_list_elt *elt);
41void mr_list_add_elt_before(struct mr_list *list, struct mr_list_elt *ref, struct mr_list_elt *elt);
42void mr_list_del_elt_first(struct mr_list *list);
43void mr_list_del_elt_last(struct mr_list *list);
44void mr_list_del_elt_after(struct mr_list *list, struct mr_list_elt *ref);
45void mr_list_del_elt_before(struct mr_list *list, struct mr_list_elt *ref);
46
47#endif                          /* MR_LIST_H */
Note: See TracBrowser for help on using the repository browser.