#ifndef COMPUCELL3DCELLINVENTORY_H
#define COMPUCELL3DCELLINVENTORY_H

#include <set>




namespace CompuCell3D {

class CellG;

/**
@author m
*/

class CellInventory
{
   public:
      typedef  std::set<CellG *>::iterator cellInventoryIterator;
      
      CellInventory();
      virtual ~CellInventory();
      virtual void addToInventory(CellG * _cell);
      virtual void removeFromInventory(CellG * _cell);
      std::set<CellG *>::size_type getCellInventorySize(){return inventory.size();}
      cellInventoryIterator cellInventoryBegin(){return inventory.begin();}
      cellInventoryIterator cellInventoryEnd(){return inventory.end();}
      cellInventoryIterator find(CellG * _cell){return inventory.find(_cell);}
      
      
      //BasicClassGroup * getPtr(cellInventoryIterator _itr){return const_cast<BasicClassGroup*>(*_itr); }
   private:
      std::set<CellG *> inventory;
     
};

};

#endif
