// __author__ = Juan Carlos De Abreu (jcabreur@gmail.com)

#ifndef DATA_FOR_H__
#define DATA_FOR_H__
 
#include "../DataTypes/Data.h"

BEGIN_TEG_NAMESPACE();

class DataFor : public IData {
public:
	// Attributes
	SmartPointer<IData> initial;
	SmartPointer<IData> cond;
	SmartPointer<IData> it; 
	std::vector<SmartPointer<IData>> inst;	// Instructions

	// Constructors
	DataFor(SmartPointer<IData> initial_, SmartPointer<IData> cond_, SmartPointer<IData> it_, std::vector<SmartPointer<IData>> inst_)
		: IData(DATA_FOR), initial(initial_), cond(cond_), it(it_), inst(inst_) { }
	~DataFor() { }

	// Methods
	void print() {	}

	AUTO_SIZE();

	SmartPointer<IData> resolve(std::map<std::string, SmartPointer<IData>>& variables);
};

END_TEG_NAMESPACE();

#endif  // DATA_FOR_H__
