#ifndef CELLVELOCITYDATACLASSFACTORY_H
#define CELLVELOCITYDATACLASSFACTORY_H

#include <BasicUtils/BasicClassFactory.h>
#include "CellVelocityData.h"


template <class B, class T>
class CellVelocityDataClassFactory: public BasicClassFactory<B,T> {
public:

      CellVelocityDataClassFactory (cldeque<Coordinates3D<float> >::size_type _cldequeCapacity,
                              cldeque<Coordinates3D<float> >::size_type _enoughDataThreshold
      ):
         BasicClassFactory<B,T>(),
         cldequeCapacity(_cldequeCapacity),
         enoughDataThreshold(_enoughDataThreshold)
      {}

  /** 
   * @return A pointer to a newly allocated instance of class T.
   */
  virtual B *create() {
   return new T(cldequeCapacity , enoughDataThreshold);

  }

  /** 
   * @param classNode A pointer to the instance of class T to deallocate.
   */
  virtual void destroy(B *classNode) {delete classNode;}

  private:
   cldeque<Coordinates3D<float> >::size_type cldequeCapacity;
   cldeque<Coordinates3D<float> >::size_type enoughDataThreshold;

};


#endif
