#ifndef FILE_LOADER_ITEM_H
#define FILE_LOADER_ITEM_H

#include <string>

namespace cbk
{
	namespace factory
	{
		template<class paramType, class nameType = std::string>
		class Item
		{
		public:
			Item(const nameType& name = "", paramType param = paramType());
			virtual Item& load(const nameType& name, paramType param) = 0;

			inline const nameType& getName(void) const;

		protected:
			inline Item& setName(const nameType& name);
			
		private:
			nameType name;
		};
	}
}

#include "factory_item_code.h"

#endif //FILE_LOADER_ITEM_H