1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24: #ifndef DBUS_LIST_H
25: #define DBUS_LIST_H
26:
27: #include <dbus/dbus-internals.h>
28: #include <dbus/dbus-memory.h>
29: #include <dbus/dbus-types.h>
30: #include <dbus/dbus-sysdeps.h>
31:
32: DBUS_BEGIN_DECLS
33:
34: struct DBusList
35: {
36: DBusList *prev;
37: DBusList *next;
38: void *data;
39: };
40: dbus_bool_t _dbus_list_append (DBusList **list,
41: void *data);
42: dbus_bool_t _dbus_list_prepend (DBusList **list,
43: void *data);
44: dbus_bool_t _dbus_list_insert_before (DBusList **list,
45: DBusList *before_this_link,
46: void *data);
47: dbus_bool_t _dbus_list_insert_after (DBusList **list,
48: DBusList *after_this_link,
49: void *data);
50: void _dbus_list_insert_before_link (DBusList **list,
51: DBusList *before_this_link,
52: DBusList *link);
53: void _dbus_list_insert_after_link (DBusList **list,
54: DBusList *after_this_link,
55: DBusList *link);
56: dbus_bool_t _dbus_list_remove (DBusList **list,
57: void *data);
58: dbus_bool_t _dbus_list_remove_last (DBusList **list,
59: void *data);
60: void _dbus_list_remove_link (DBusList **list,
61: DBusList *link);
62: DBusList* _dbus_list_find_last (DBusList **list,
63: void *data);
64: void _dbus_list_clear (DBusList **list);
65: DBusList* _dbus_list_get_first_link (DBusList **list);
66: DBusList* _dbus_list_get_last_link (DBusList **list);
67: void* _dbus_list_get_last (DBusList **list);
68: void* _dbus_list_get_first (DBusList **list);
69: void* _dbus_list_pop_first (DBusList **list);
70: void* _dbus_list_pop_last (DBusList **list);
71: DBusList* _dbus_list_pop_first_link (DBusList **list);
72: DBusList* _dbus_list_pop_last_link (DBusList **list);
73: dbus_bool_t _dbus_list_copy (DBusList **list,
74: DBusList **dest);
75: int _dbus_list_get_length (DBusList **list);
76: DBusList* _dbus_list_alloc_link (void *data);
77: void _dbus_list_free_link (DBusList *link);
78: void _dbus_list_unlink (DBusList **list,
79: DBusList *link);
80: void _dbus_list_append_link (DBusList **list,
81: DBusList *link);
82: void _dbus_list_prepend_link (DBusList **list,
83: DBusList *link);
84: dbus_bool_t _dbus_list_length_is_one (DBusList **list);
85:
86:
87:
88:
89: void _dbus_list_foreach (DBusList **list,
90: DBusForeachFunction function,
91: void *data);
92:
93: #define _dbus_list_get_next_link(list, link) ((link)->next == *(list) ? NULL : (link)->next)
94: #define _dbus_list_get_prev_link(list, link) ((link) == *(list) ? NULL : (link)->prev)
95:
96: DBUS_END_DECLS
97:
98: #endif