#ifndef COMPUCELL3DREACTIONDIFFUSIONFILE_H
#define COMPUCELL3DREACTIONDIFFUSIONFILE_H


#include <CompuCell3D/Steppable.h>
#include <CompuCell3D/Potts3D/Cell.h>
#include <CompuCell3D/DiffusableVector.h>

#include <string>
#include <vector>

#include <iostream>


namespace CompuCell3D {

/**
@author m
*/
//forward declarations
class Potts3D;
class Simulator;
class Cell;
class CellInventory;
class Automaton;

template <typename Y> class Field3D;
template <typename Y> class Field3DImpl;

class ReactionDiffusionFile :public DiffusableVector<float>
{
protected:
   Simulator *simPtr;
   
   std::string fileName;  
   unsigned int currentStep;
   unsigned int numberOfFields;
   Dim3D fieldDim;

   
public:
    ReactionDiffusionFile();

    virtual ~ReactionDiffusionFile();
   
    virtual void init(Simulator *simulator);

    // Begin Steppable interface
    virtual void start();
    virtual void step(const unsigned int _currentStep);
    virtual void finish() {}
    // End Steppable interface

    // Begin XMLSerializable interface
    virtual void readXML(XMLPullParser &in);
    virtual void writeXML(XMLSerializer &out){};
    // End XMLSerializable interface

    
};

};

#endif
