#ifndef _CRANDOM_HPP_
#define _CRANDOM_HPP_

/*** SDL Header Files ***/
#include <SDL.h>   

/*** DLL Header File ***/
#include "dllExport.h"

namespace MathEngine {
	/* Singleton */
	class EXPORT_FROM_MYDLL cRandom
	{
	private:
		cRandom();
		~cRandom();

	public:
		/// Functions
		static cRandom& Inst();
		static void Delete();

		const bool Setup() const;

		/* Gives you a Random Integer less then or equal to max and more then or equal to min */
		const unsigned long int Rand( const unsigned long int max, const unsigned long int min = 0 ) const;
		/* Gives you a Random float less then or equal to max and more then or equal to min */
		const float Rand( const float max, const float min = 0.0f ) const;
		/* Gives you a Random double less then or equal to max and more then or equal to min */
		const double Rand(const double max, const double min = 0.0f) const;
		/* Gives you a Random long double less then or equal to max and more then or equal to min */
		const long double Rand(const long double max, const long double min = 0.0f) const;
	private:
		/// Variables
		static cRandom* sp_inst;/// = nullptr
	};/// END CLASS DEFINITION cRandom
}/// END NAMESPACE DEFINITION MathEngine
#endif/// END IFNDEF _CRANDOM_HPP_