/*
 * Copyright © 2020-2026 Pierrick Caillon <pierrick.caillon+zipdirfs@megami.fr>
 */
#ifndef ZIPDIRFS_CONTAINERS_HELPERS_FACTORY_H
#define ZIPDIRFS_CONTAINERS_HELPERS_FACTORY_H

#include <string>

namespace fusekit
{
	struct entry;
}

namespace ZipDirFs::Containers::Helpers
{
	/**
	 * @brief A factory definition to manage list entries
	 * @authors Pierrick Caillon <pierrick.caillon+zipdirfs@megami.fr>
	 */
	class Factory
	{
	public:
		typedef std::string key_type;
		typedef fusekit::entry* mapped_type;
		virtual ~Factory() = default;
		virtual mapped_type create(const key_type& name) = 0;
		virtual void destroy(const mapped_type& item) = 0;
	};
} // namespace ZipDirFs::Containers::Helpers

#endif // ZIPDIRFS_CONTAINERS_HELPERS_FACTORY_H
