Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/generic/src/adt/list.c

    r1ab4aca r0a02653  
    3333/**
    3434 * @file
    35  * @brief       Functions completing doubly linked circular list implementation.
     35 * @brief       Functions completing doubly linked circular list implementaion.
    3636 *
    3737 * This file contains some of the functions implementing doubly linked circular lists.
     
    4343/** Check for membership
    4444 *
    45  * Check whether link is contained in a list.
    46  * Membership is defined as pointer equivalence.
     45 * Check whether link is contained in the list head.
     46 * The membership is defined as pointer equivalence.
    4747 *
    48  * @param link  Item to look for.
    49  * @param list  List to look in.
     48 * @param link Item to look for.
     49 * @param head List to look in.
    5050 *
    51  * @return true if link is contained in list, false otherwise.
     51 * @return true if link is contained in head, false otherwise.
    5252 *
    5353 */
    54 int list_member(const link_t *link, const list_t *list)
     54int list_member(const link_t *link, const link_t *head)
    5555{
    5656        bool found = false;
    57         link_t *hlp = list->head.next;
     57        link_t *hlp = head->next;
    5858       
    59         while (hlp != &list->head) {
     59        while (hlp != head) {
    6060                if (hlp == link) {
    6161                        found = true;
     
    6868}
    6969
     70
    7071/** Concatenate two lists
    7172 *
    72  * Concatenate lists @a list1 and @a list2, producing a single
    73  * list @a list1 containing items from both (in @a list1, @a list2
    74  * order) and empty list @a list2.
     73 * Concatenate lists head1 and head2, producing a single
     74 * list head1 containing items from both (in head1, head2
     75 * order) and empty list head2.
    7576 *
    76  * @param list1         First list and concatenated output
    77  * @param list2         Second list and empty output.
     77 * @param head1 First list and concatenated output
     78 * @param head2 Second list and empty output.
    7879 *
    7980 */
    80 void list_concat(list_t *list1, list_t *list2)
     81void list_concat(link_t *head1, link_t *head2)
    8182{
    82         if (list_empty(list2))
     83        if (list_empty(head2))
    8384                return;
    8485
    85         list2->head.next->prev = list1->head.prev;
    86         list2->head.prev->next = &list1->head;
    87         list1->head.prev->next = list2->head.next;
    88         list1->head.prev = list2->head.prev;
    89         list_initialize(list2);
    90 }
    91 
    92 /** Count list items
    93  *
    94  * Return the number of items in the list.
    95  *
    96  * @param list          List to count.
    97  * @return              Number of items in the list.
    98  */
    99 unsigned int list_count(const list_t *list)
    100 {
    101         unsigned int count = 0;
    102        
    103         list_foreach(*list, link) {
    104                 count++;
    105         }
    106        
    107         return count;
     86        head2->next->prev = head1->prev;
     87        head2->prev->next = head1;     
     88        head1->prev->next = head2->next;
     89        head1->prev = head2->prev;
     90        list_initialize(head2);
    10891}
    10992
Note: See TracChangeset for help on using the changeset viewer.