#pragma once
#include <chrono>
#include <functional>
#include "cl.hpp"

void printTimeStats(cl_event event);
void WriteTGA_RGB(const char* filename, unsigned char* data, unsigned int width, unsigned int height);
std::string FileToString(const std::string& path);
const char* getErrorString(cl_int error);
bool CheckCLError(cl_int err);

class Timer {
private:
	static std::chrono::time_point<std::chrono::high_resolution_clock> t_start;
public:
	static void start();
	static void end(unsigned int nRuns = 1);
	static void measure(const std::function<void(void)>& program, unsigned int nRuns = 10000);
};