Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/generic/include/adt/list.h

    rdf13836 r7856d09  
    5252} list_t;
    5353
    54 
    55 extern bool list_member(const link_t *, const list_t *);
    56 extern void list_splice(list_t *, link_t *);
    57 extern unsigned long list_count(const list_t *);
    58 
    59 
    6054/** Declare and initialize statically allocated list.
    6155 *
     
    8680            _link != &(list).head; _link = _link->prev)
    8781
    88 /** Unlike list_foreach(), allows removing items while traversing a list.
    89  *
    90  * @code
    91  * list_t mylist;
    92  * typedef struct item {
    93  *     int value;
    94  *     link_t item_link;
    95  * } item_t;
    96  *
    97  * //..
    98  *
    99  * // Print each list element's value and remove the element from the list.
    100  * list_foreach_safe(mylist, cur_link, next_link) {
    101  *     item_t *cur_item = list_get_instance(cur_link, item_t, item_link);
    102  *     printf("%d\n", cur_item->value);
    103  *     list_remove(cur_link);
    104  * }
    105  * @endcode
    106  *
    107  * @param list List to traverse.
    108  * @param iterator Iterator to the current element of the list.
    109  *             The item this iterator points may be safely removed
    110  *             from the list.
    111  * @param next_iter Iterator to the next element of the list.
    112  */
    113 #define list_foreach_safe(list, iterator, next_iter) \
    114         for (link_t *iterator = (list).head.next, \
    115                 *next_iter = iterator->next; \
    116                 iterator != &(list).head; \
    117                 iterator = next_iter, next_iter = iterator->next)
    118 
    119        
    12082#define assert_link_not_used(link) \
    12183        ASSERT(!link_used(link))
     
    220182 *
    221183 */
    222 NO_TRACE static inline bool list_empty(const list_t *list)
     184NO_TRACE static inline int list_empty(const list_t *list)
    223185{
    224186        return (list->head.next == &list->head);
     
    329291}
    330292
    331 /** Concatenate two lists
    332  *
    333  * Concatenate lists @a list1 and @a list2, producing a single
    334  * list @a list1 containing items from both (in @a list1, @a list2
    335  * order) and empty list @a list2.
    336  *
    337  * @param list1         First list and concatenated output
    338  * @param list2         Second list and empty output.
    339  *
    340  */
    341 NO_TRACE static inline void list_concat(list_t *list1, list_t *list2)
    342 {
    343         list_splice(list2, list1->head.prev);
    344 }
    345 
    346293/** Get n-th item in a list.
    347294 *
     
    353300 *
    354301 */
    355 static inline link_t *list_nth(list_t *list, unsigned long n)
    356 {
    357         unsigned long cnt = 0;
     302static inline link_t *list_nth(list_t *list, unsigned int n)
     303{
     304        unsigned int cnt = 0;
    358305        link_t *link;
    359306       
     
    393340}
    394341
     342extern int list_member(const link_t *, const list_t *);
     343extern void list_concat(list_t *, list_t *);
     344extern unsigned int list_count(const list_t *);
     345
    395346#endif
    396347
Note: See TracChangeset for help on using the changeset viewer.