00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef DBUS_LIST_H
00025 #define DBUS_LIST_H
00026
00027 #include <dbus/dbus-internals.h>
00028 #include <dbus/dbus-memory.h>
00029 #include <dbus/dbus-types.h>
00030
00031 DBUS_BEGIN_DECLS
00032
00033 typedef struct DBusList DBusList;
00034
00035 struct DBusList
00036 {
00037 DBusList *prev;
00038 DBusList *next;
00039 void *data;
00040 };
00041 dbus_bool_t _dbus_list_append (DBusList **list,
00042 void *data);
00043 dbus_bool_t _dbus_list_prepend (DBusList **list,
00044 void *data);
00045 dbus_bool_t _dbus_list_insert_before (DBusList **list,
00046 DBusList *before_this_link,
00047 void *data);
00048 dbus_bool_t _dbus_list_insert_after (DBusList **list,
00049 DBusList *after_this_link,
00050 void *data);
00051 void _dbus_list_insert_before_link (DBusList **list,
00052 DBusList *before_this_link,
00053 DBusList *link);
00054 void _dbus_list_insert_after_link (DBusList **list,
00055 DBusList *after_this_link,
00056 DBusList *link);
00057 dbus_bool_t _dbus_list_remove (DBusList **list,
00058 void *data);
00059 dbus_bool_t _dbus_list_remove_last (DBusList **list,
00060 void *data);
00061 void _dbus_list_remove_link (DBusList **list,
00062 DBusList *link);
00063 DBusList* _dbus_list_find_last (DBusList **list,
00064 void *data);
00065 void _dbus_list_clear (DBusList **list);
00066 DBusList* _dbus_list_get_first_link (DBusList **list);
00067 DBusList* _dbus_list_get_last_link (DBusList **list);
00068 void* _dbus_list_get_last (DBusList **list);
00069 void* _dbus_list_get_first (DBusList **list);
00070 void* _dbus_list_pop_first (DBusList **list);
00071 void* _dbus_list_pop_last (DBusList **list);
00072 DBusList* _dbus_list_pop_first_link (DBusList **list);
00073 DBusList* _dbus_list_pop_last_link (DBusList **list);
00074 dbus_bool_t _dbus_list_copy (DBusList **list,
00075 DBusList **dest);
00076 int _dbus_list_get_length (DBusList **list);
00077 DBusList* _dbus_list_alloc_link (void *data);
00078 void _dbus_list_free_link (DBusList *link);
00079 void _dbus_list_unlink (DBusList **list,
00080 DBusList *link);
00081 void _dbus_list_append_link (DBusList **list,
00082 DBusList *link);
00083 void _dbus_list_prepend_link (DBusList **list,
00084 DBusList *link);
00085 dbus_bool_t _dbus_list_length_is_one (DBusList **list);
00086
00087
00088
00089
00090 void _dbus_list_foreach (DBusList **list,
00091 DBusForeachFunction function,
00092 void *data);
00093
00094 #define _dbus_list_get_next_link(list, link) ((link)->next == *(list) ? NULL : (link)->next)
00095 #define _dbus_list_get_prev_link(list, link) ((link) == *(list) ? NULL : (link)->prev)
00096
00097 DBUS_END_DECLS
00098
00099 #endif