(linenum→info "unix/slp.c:2238")

dbus/1.0.2/dbus/dbus-list.h

    1: /* -*- mode: C; c-file-style: "gnu" -*- */
    2: /* dbus-list.h Generic linked list utility (internal to D-Bus implementation)
    3:  * 
    4:  * Copyright (C) 2002, 2003 Red Hat, Inc.
    5:  *
    6:  * Licensed under the Academic Free License version 2.1
    7:  * 
    8:  * This program is free software; you can redistribute it and/or modify
    9:  * it under the terms of the GNU General Public License as published by
   10:  * the Free Software Foundation; either version 2 of the License, or
   11:  * (at your option) any later version.
   12:  *
   13:  * This program is distributed in the hope that it will be useful,
   14:  * but WITHOUT ANY WARRANTY; without even the implied warranty of
   15:  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   16:  * GNU General Public License for more details.
   17:  * 
   18:  * You should have received a copy of the GNU General Public License
   19:  * along with this program; if not, write to the Free Software
   20:  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
   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; /**< Previous list node. */
   37:   DBusList *next; /**< Next list node. */
   38:   void     *data; /**< Data stored at this element. */
   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 /* DBUS_LIST_H */
Syntax (Markdown)