Dart API Referencedart:coreimplDoubleLinkedQueueEntry<E>

DoubleLinkedQueueEntry<E> class

An entry in a doubly linked list. It contains a pointer to the next entry, the previous entry, and the boxed element.

class DoubleLinkedQueueEntry<E> {
  DoubleLinkedQueueEntry<E> _previous;
  DoubleLinkedQueueEntry<E> _next;
  E _element;

  DoubleLinkedQueueEntry(E e) {
    _element = e;
  }

  void _link(DoubleLinkedQueueEntry<E> p,
             DoubleLinkedQueueEntry<E> n) {
    _next = n;
    _previous = p;
    p._next = this;
    n._previous = this;
  }

  void append(E e) {
    new DoubleLinkedQueueEntry<E>(e)._link(this, _next);
  }

  void prepend(E e) {
    new DoubleLinkedQueueEntry<E>(e)._link(_previous, this);
  }

  E remove() {
    _previous._next = _next;
    _next._previous = _previous;
    _next = null;
    _previous = null;
    return _element;
  }

  DoubleLinkedQueueEntry<E> _asNonSentinelEntry() {
    return this;
  }

  DoubleLinkedQueueEntry<E> previousEntry() {
    return _previous._asNonSentinelEntry();
  }

  DoubleLinkedQueueEntry<E> nextEntry() {
    return _next._asNonSentinelEntry();
  }

  E get element {
    return _element;
  }

  void set element(E e) {
    _element = e;
  }
}

Constructors

new DoubleLinkedQueueEntry(E e) #

DoubleLinkedQueueEntry(E e) {
  _element = e;
}

Properties

E element #

E get element {
  return _element;
}
void set element(E e) {
  _element = e;
}

Methods

void append(E e) #

void append(E e) {
  new DoubleLinkedQueueEntry<E>(e)._link(this, _next);
}

DoubleLinkedQueueEntry<E> nextEntry() #

DoubleLinkedQueueEntry<E> nextEntry() {
  return _next._asNonSentinelEntry();
}

void prepend(E e) #

void prepend(E e) {
  new DoubleLinkedQueueEntry<E>(e)._link(_previous, this);
}

DoubleLinkedQueueEntry<E> previousEntry() #

DoubleLinkedQueueEntry<E> previousEntry() {
  return _previous._asNonSentinelEntry();
}

E remove() #

E remove() {
  _previous._next = _next;
  _next._previous = _previous;
  _next = null;
  _previous = null;
  return _element;
}