#ifndef CIVNEWINP_H
#define CIVNEWINP_H
#include <sstream>
#include <string>
#include "CivAssembly.h"
#include <list>


/**
   转inp文件类
*/
class CivNewInp
{
public:
	/**
		管网组件
	*/
	void setTtitle(const std::string& title);
	void setNode(const CivNode& node);
	void setPipes(const CivPipe& pipes);
	void setTank(const CivTank& tank);
	void setReservoirs(const  CivReservoirs& res);
	void setValves(const CivValve& valve);
	void setPumps(const CivPumps& pumps);
	void setEmitters(const CivEmitters& mitters);

	// 系统运行
	void setCurves(const CivCurves& cureves);
	void setPatterns(const CivPatterns& patterns);	
	void setStatus(const CivStatus& status);
	void setControls(const std::string& control);
	void setRules(const std::string& ruleName, const std::string& rules);
	void setDemands(const CivDemands& demands);

	// 水质
	void setQuality(const CivQuality& quality);
	void setSources(const CivSources& sources);
	void setMixing(const CivMixing& mixing);

	// 选项和报表
/*void setReactions();
   void setOptions();
	void setTimes();
	void setReport();
	void setEnergy();
*/
	void setParamter(const CivParameter& params, const std::string& type);


	//管网地图/标签
	void setCoordnates(const CivCoordinates& coords);
	void setVertices();
	void setLabels(const CivLabels& labels);
	void setBackDrop();
	void setTags(const CivTags& tags);

private:
	void inline writeString(const std::string& s);
	void inline writeStringFormat(const std::string& s, const std::string& sep="\t");
	void inline writeHead(const std::string& head);
	std::string currentTime();
private:
	std::ostringstream mTextStream;
};
#endif // !CIVNEWINP_H

