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

#ifndef DSE_KERNEL_FILESYSTEM_BASEFILELOADER_HPP
#define DSE_KERNEL_FILESYSTEM_BASEFILELOADER_HPP

#include <Darkstar/Kernel/Timetable/systemTime.hpp>

namespace ker
{
typedef void* DFHANDLE;

	struct FileData
	{
		unsigned int size;
		DFHANDLE id;
		std::string filename;
		shared_ptr<SystemTime> last_write_time;
		std::string full_path;
		std::string path;
	};

	class BaseFileLoader
	{
	public:
		BaseFileLoader();
		virtual ~BaseFileLoader();

		virtual bool open(const std::string& filename, FileData* data)=0;
		virtual bool close(const DFHANDLE id) const=0;
		virtual bool read(const DFHANDLE id, const unsigned int size, void* data) const=0;
		virtual bool skip(const DFHANDLE id, const unsigned int size) const=0;

		virtual const std::set<std::string>& getSetOfChanges() const=0;
	};
};

#include <Darkstar/Kernel/FileSystem/baseFileLoader.inl>

#endif