//	Darkstar Engine  (c) UnderWorld Interactive Studio (all coding by Svarog    2007)
//
//      Данный файл является частью Darkstar Engine. Любое использование кода файла
//      без согласия компании, является нарушением закона об авторском праве (в слу-
//      чае если не оговорено обратное).
//
//      Имя файла: profiler.hpp
//      Краткое описание: Профилятор
//

#ifndef DSE_KERNEL_PROFILE_PROFILER_HPP
#define DSE_KERNEL_PROFILE_PROFILER_HPP

#include <Darkstar/common.hpp>
#include <Darkstar/Kernel/Misc/singleton.hpp>

namespace ker
{
	class Profiler : public SingletonHolder<Profiler>
	{
	private:
		unsigned __int64 start_time;
		unsigned __int64 end_time;

		float el_time;

		float cpf;
		void _getCPF();

		unsigned __int64 _getTicks();
	public:
		Profiler();
		~Profiler();

		void startProfileFunction();
		void endProfileFunction(const std::string& func_name);

		void startTimer();
		float endTimer();
		float getElapsedTime();
	};
};

#include <Darkstar/Kernel/Profile/profiler.inl>

#endif
