// Copyright (c) 2008-2010 Raynaldo (Wildicv) Rivera, Joshua (Dark_Kilauea) Jones
// This file is part of the "cAudio Engine"
// For conditions of distribution and use, see copyright notice in cAudio.h

#ifndef IDATASOURCEFACTORY_H
#define IDATASOURCEFACTORY_H

#include "IDataSource.h"

namespace cAudio
{
	//! Interface for creating data sources for use with the engine.
	class IDataSourceFactory
	{
		public:
			IDataSourceFactory() { }
			virtual ~IDataSourceFactory() { }

			//! Creates a data source instance for use with the engine.
			/**
			\param filename: Filename of the file to get a stream for. 
			\param streamingRequested: True if the user requested streaming capabilities from the data source.
			\return A pointer to a data source instance or NULL on failure to allocate. */
			virtual IDataSource* CreateDataSource(const char* filename, bool streamingRequested) = 0;
		protected:
		private:
	};
};

#endif //! IDATASOURCEFACTORY_H
