//	Darkstar Engine  (c) UnderWorld Interactive Studio (all coding by Svarog    2007-2008)
//
//      Данный файл является частью Darkstar Engine. Любое использование кода файла
//      без согласия компании, является нарушением закона об авторском праве (в слу-
//      чае если не оговорено обратное).
//
//      Имя файла: compiled_effect_file.hpp
//      Краткое описание: loader and saver for compiled effect files
//

#ifndef DSE_GS_EFFECT_COMPILED_EFFECT_FILE_HPP
#define DSE_GS_EFFECT_COMPILED_EFFECT_FILE_HPP

#include <Darkstar/common.hpp>
#include <Darkstar/Graphic System/Effect/effect.hpp>
#include <Darkstar/Kernel/FileSystem/dfile.hpp>
#include <Darkstar/Graphic System/Effect/effect_parser.hpp>
#include <Darkstar/Kernel/misc.hpp>

namespace gs
{
	class CompiledEffectFile
	{
	private:
		int output;
		std::string full_file_path;

		void _loadInputSignature(ker::DFile& input_file, shared_ptr<Effect>& effect);
	public:
		CompiledEffectFile();
		~CompiledEffectFile();

		void deleteFile();

		void openForWrite(const std::string& output_file_name);
		void writeConstantTables(const shared_ptr<ConstantTable>& const_table, const std::vector<ker::Blob>& vc_code, const std::vector<ker::Blob>& pc_code);
		void writeInputSignature(const ker::Blob& input_signature);
		bool load(ker::DFile& input_file, const std::list<_Technique>& tech, shared_ptr<Effect>& effect);
	};
};

#endif

