#pragma once
#if defined(_DEBUG)
void DebugOnlyAssert(bool Statement, const char *Description);
void DebugOnlyAssert(bool Statement, const String &Description);
#else
#define DebugOnlyAssert(x, y)
#endif
#if defined(_DEBUG) || defined(ALWAYS_ASSERT)
void Assert(bool Statement, const char *Description);
void Assert(bool Statement, const String &Description);
void SignalError(const char *Description);
void SignalError(const String &Description);
#else
#define SignalError(x) {__debugbreak(); ExitProcess(1);}
#ifndef Assert
#define Assert(x, y)
#endif
#endif
void PersistentSignalError(const char *Description);
void PersistentSignalError(const String &Description);
void PersistentAssert(bool Statement, const char *Description);
void PersistentAssert(bool Statement, const String &Description);