#pragma once
#include "globals.h"
class System
{
private:
	System(void);
	~System(void);
public:
	static void* SafeAllocMemory(UINT size);
	static BOOL SafeFreeMemory(void* memory);
	static void ShowErrorMessage(STRING message);
	static BOOL ExecuteAndWait(STRING executablePath, STRING args);
	//Path existance NOT GUARANTIED
	static STRING GetTemporaryFolder();
	static int MemCmp(BYTE* m1, BYTE* m2, int len);
	static void MemCpy(BYTE* m1, BYTE* m2, int count);
	static void WriteLog(STRING value);
	static BOOL AllocateConsole(STRING title);
	static void WaitForAnyKey();
};
