Dart DocumentationutilsLinkedBag<E>

LinkedBag<E> class

class LinkedBag<E> {
 LinkedEntry _head = new LinkedEntry();

 get length {
   int i = 0;
   for(var a = _head; a != null; a = a._next) {
     if (a._obj != null) i++;
   }
   return i;
 }

 void clear() {
   for(var a = _head; a != null; a = a._next) {
     a._obj = null;
   }
 }

 void add(E obj) {
   var a = _head;
   while(a != null) {
     if (a._obj == null) {
       a._obj = obj;
       return;
     }
     if (a._next == null) {
       var e = new LinkedEntry();
       e._obj = obj;
       a._next = e;
       return;
     }
     a = a._next;
   }
 }

 /**
  * Iterate over the entries (!= null) in the bag.
  * [f] update the entry in the bag (return null => free the entry)
  * The function can be used to loop (forEach) over entry if [f] return
  * its parameter.
  */
 void iterateAndUpdate(E f(E)) {
   int i = 0;
   for(var current = _head; current != null; current = current._next) {
     if (current._obj != null) {
       current._obj = f(current._obj);
     }
   }
 }
}

Properties

final length #

get length {
 int i = 0;
 for(var a = _head; a != null; a = a._next) {
   if (a._obj != null) i++;
 }
 return i;
}

Methods

void add(E obj) #

void add(E obj) {
 var a = _head;
 while(a != null) {
   if (a._obj == null) {
     a._obj = obj;
     return;
   }
   if (a._next == null) {
     var e = new LinkedEntry();
     e._obj = obj;
     a._next = e;
     return;
   }
   a = a._next;
 }
}

void clear() #

void clear() {
 for(var a = _head; a != null; a = a._next) {
   a._obj = null;
 }
}

void iterateAndUpdate(E f(E)) #

Iterate over the entries (!= null) in the bag. f update the entry in the bag (return null => free the entry) The function can be used to loop (forEach) over entry if f return its parameter.

void iterateAndUpdate(E f(E)) {
 int i = 0;
 for(var current = _head; current != null; current = current._next) {
   if (current._obj != null) {
     current._obj = f(current._obj);
   }
 }
}