Dart DocumentationstagexlObjectPool<T>

ObjectPool<T> class

class ObjectPool<T> {

 final List<T> _pool = new List<T>();
 final Function _valueFactory;

 int _poolCount = 0;

 ObjectPool(T valueFactory()) : _valueFactory = valueFactory;

 //---------------------------------------------------------------------------

 T pop() {

   if (_poolCount == 0) {
     return _valueFactory();
   } else {
     _poolCount--;
     return _pool[_poolCount];
   }
 }

 //---------------------------------------------------------------------------

 push(T value) {

   if (_poolCount == _pool.length) {
     _pool.add(value);
   } else {
     _pool[_poolCount] = value;
   }
   _poolCount++;
 }

 //---------------------------------------------------------------------------

 reset() {

   _pool.clear();
   _poolCount = 0;
 }
}

Constructors

new ObjectPool(T valueFactory()) #

Creates a new Object instance.

Object instances have no meaningful state, and are only useful through their identity. An Object instance is equal to itself only.

docs inherited from Object
ObjectPool(T valueFactory()) : _valueFactory = valueFactory;

Methods

T pop() #

T pop() {

 if (_poolCount == 0) {
   return _valueFactory();
 } else {
   _poolCount--;
   return _pool[_poolCount];
 }
}

dynamic push(T value) #

push(T value) {

 if (_poolCount == _pool.length) {
   _pool.add(value);
 } else {
   _pool[_poolCount] = value;
 }
 _poolCount++;
}

dynamic reset() #

reset() {

 _pool.clear();
 _poolCount = 0;
}