/* -----------------------------------------------------------------------------
	GSFramework
	Copyright 2001-2013 Emmanuel Julien. All Rights Reserved.
----------------------------------------------------------------------------- */


#ifndef	__NAUDIORESOURCEFACTORY__
#define	__NAUDIORESOURCEFACTORY__


		#include "core/resource_factory_event_interface.h"
		#include "memory/nauto_ptr.h"


namespace GS {
	namespace Audio {
		struct IMixer;
		struct Sound;

/*
	@short	Mixer resource factory.
	@author	Emmanuel Julien (ejulien@gsworks.fr)
*/
struct	ResourceFactory
{
		AutoPtr <IResourceFactoryEvent> event_handler;

		IMixer			&mixer;

virtual	Sound			*LoadSound(const char *) = 0;

		ResourceFactory(IMixer &m) : event_handler(new IResourceFactoryEvent), mixer(m) {}
virtual	~ResourceFactory() {}
};

		typedef	SharedPtr <Sound> sSound;

	} // Audio
} // GS


#endif	// __NAUDIORESOURCEFACTORY__
