コード例 #1
0
struct list_elem
*list_prev(struct list_elem *e)
{
    assert(e);
    assert(is_interior(e) || is_tail(e));
    return e->prev;
}
コード例 #2
0
ファイル: list.c プロジェクト: heisvoid/WarGS
struct list_elem *
list_next (struct list_elem *elem)
{
  ASSERT (is_head (elem) == true || is_interior (elem) == true);
  
  return elem->next;
}
コード例 #3
0
struct list_elem
*list_next(struct list_elem *e)
{
    assert(e);
    assert(is_head(e) || is_interior(e));
    return e->next;
}
コード例 #4
0
ファイル: list.c プロジェクト: cjd2951/POS1
/* Removes ELEM from its list and returns the element that
   followed it.  Undefined behavior if ELEM is not in a list.

   A list element must be treated very carefully after removing
   it from its list.  Calling list_next() or list_prev() on ELEM
   will return the item that was previously before or after ELEM,
   but, e.g., list_prev(list_next(ELEM)) is no longer ELEM!

   The list_remove() return value provides a convenient way to
   iterate and remove elements from a list:

   for (e = list_begin (&list); e != list_end (&list); e = list_remove (e))
     {
       ...do something with e...
     }

   If you need to free() elements of the list then you need to be
   more conservative.  Here's an alternate strategy that works
   even in that case:

   while (!list_empty (&list))
     {
       struct list_elem *e = list_pop_front (&list);
       ...do something with e...
     }
*/
struct list_elem *
list_remove (struct list_elem *elem)
{
  ASSERT (is_interior (elem));
  elem->prev->next = elem->next;
  elem->next->prev = elem->prev;
  return elem->next;
}
コード例 #5
0
struct list_elem*
list_remove(struct list_elem *e)
{
    assert(e);
    assert(is_interior(e));
    e->prev->next = e->next;
    e->next->prev = e->prev;
    return e->next;
}
コード例 #6
0
ファイル: list.c プロジェクト: chikinmukjja/Past_Projects
/* Inserts ELEM just before BEFORE, which may be either an
   interior element or a tail.  The latter case is equivalent to
   list_push_back(). */
void
list_insert (struct list_elem *before, struct list_elem *elem)
{
  ASSERT (is_interior (before) || is_tail (before));
  ASSERT (elem != NULL);
  elem->prev = before->prev;
  elem->next = before;
  before->prev->next = elem;
  before->prev = elem;
}
コード例 #7
0
ファイル: list.c プロジェクト: manjuraj/archive
/* 
 * Removes ELEM from its list and returns the element that
 * followed it.  Undefined behavior if ELEM is not in a list.
 */
struct list_elem *
list_remove (struct list_elem *elem)
{
  struct list_elem *next = elem->next;

  ASSERT (is_interior (elem));
  elem->prev->next = elem->next;
  elem->next->prev = elem->prev;
  elem->next = elem->prev = NULL; /* be safe; dump if your not */
  return next;
}
コード例 #8
0
ファイル: list.c プロジェクト: heisvoid/WarGS
void
list_insert (struct list_elem *before, struct list_elem *elem)
{
  ASSERT (is_interior (before) == true || is_tail (before) == true);
  ASSERT (NULL != elem);

  elem->prev = before->prev;
  elem->next = before;
  before->prev->next = elem;
  before->prev = elem;
}
コード例 #9
0
ファイル: list.c プロジェクト: cjd2951/POS1
/* Removes elements FIRST though LAST (exclusive) from their
   current list, then inserts them just before BEFORE, which may
   be either an interior element or a tail. */
void
list_splice (struct list_elem *before,
             struct list_elem *first, struct list_elem *last)
{
  ASSERT (is_interior (before) || is_tail (before));
  if (first == last)
    return;
  last = list_prev (last);

  ASSERT (is_interior (first));
  ASSERT (is_interior (last));

  /* Cleanly remove FIRST...LAST from its current list. */
  first->prev->next = last->next;
  last->next->prev = first->prev;

  /* Splice FIRST...LAST into new list. */
  first->prev = before->prev;
  last->next = before;
  before->prev->next = first;
  before->prev = last;
}
コード例 #10
0
ファイル: list.c プロジェクト: pshahi92/Projects
/* Inserts ELEM just before BEFORE, which may be either an
   interior element or a tail.  The latter case is equivalent to
   list_push_back(). */
void
list_insert (struct list_elem *before, struct list_elem *elem)
{
  ASSERT (is_interior (before) || is_tail (before));
  ASSERT (elem != NULL);

  /* Abraham driving */

  //elem->node_lock = before->node_lock; /* gave a copy of the lock to the new element we just added */

  elem->prev = before->prev;
  elem->next = before;
  before->prev->next = elem;
  before->prev = elem;
}
コード例 #11
0
ファイル: list.c プロジェクト: cjd2951/POS1
/* Returns the element before ELEM in its list.  If ELEM is the
   first element in its list, returns the list head.  Results are
   undefined if ELEM is itself a list head. */
struct list_elem *
list_prev (struct list_elem *elem)
{
  ASSERT (is_interior (elem) || is_tail (elem));
  return elem->prev;
}
コード例 #12
0
ファイル: list.c プロジェクト: spolu/ur
/* Returns the element after ELEM in its list.  If ELEM is the
   last element in its list, returns the list tail.  Results are
   undefined if ELEM is itself a list tail. */
struct list_elem *
list_next (struct list_elem *elem)
{
  assert (is_head (elem) || is_interior (elem));
  return elem->next;
}