#ifndef _DATAENGINE_HPP_
#define _DATAENGINE_HPP_

#include <list>
#include "DataBase.h"
#include "RegressionStorage.h"

namespace database {


class DataEngine
{
	private:
		const DataBase * dataBase;
		DataEngine() {}
		numeric::RegressionStorage * storage;
		unsigned index;
		unsigned dimension;

	public:
		DataEngine(const DataBase & _dataBase,
							 unsigned _index,
							 unsigned K,
							 unsigned sizeOfStorage);

		void computeRegression(std::list<unsigned> listObs, unsigned K) const;

		double error(unsigned obsId, unsigned K) const;
		
		double rand() const;
		int rand(unsigned,unsigned) const;

		~DataEngine()
		{
			delete storage;
		}
};

}

#endif

