#pragma once

#include <cstdio>
#include <cstdarg>
#include <sstream>
#include <stdarg.h>

#include <ctime>
#include <iomanip>

#define BOT_BREAK __debugbreak();

#if true
    #define BOT_ASSERT(cond, msg, ...) \
        do \
        { \
            if (!(cond)) \
            { \
                Assert::ReportFailure(#cond, __FILE__, __LINE__, (msg), ##__VA_ARGS__); \
                BOT_BREAK \
            } \
        } while(0)
#else
    #define BOT_ASSERT(cond, msg, ...) 
#endif

namespace Assert
{
    extern std::string lastErrorMessage;

    const std::string CurrentDateTime();

    void ReportFailure(const char * condition, const char * file, int line, const char * msg, ...);
}

#pragma once

#include <cstdio>
#include <cstdarg>
#include <sstream>
#include <stdarg.h>

#include <ctime>
#include <iomanip>

#ifdef WIN32
    #define BOT_BREAK __debugbreak();
#else
    #define BOT_BREAK ;
#endif

#if true
    #define BOT_ASSERT(cond, msg, ...) \
        do \
        { \
            if (!(cond)) \
            { \
                Assert::ReportFailure(#cond, __FILE__, __LINE__, (msg), ##__VA_ARGS__); \
                BOT_BREAK \
            } \
        } while(0)
#else
    #define BOT_ASSERT(cond, msg, ...) 
#endif

namespace Assert
{
    extern std::string lastErrorMessage;

    const std::string CurrentDateTime();

    void ReportFailure(const char * condition, const char * file, int line, const char * msg, ...);
}

Put dummy BOT_ASSERT in case of non-Windows build
Put dummy BOT_ASSERT in case of non-Windows build

Unfortunately non-Windows platforms don't have good analogue
for Winodws DebugBrake(). There are several alternatives that
depend heavily on debugger time.

Since we have lldb, gdb and probably something else but still
need to compile the code this commit replaces BOT_ASSERT with a dummy
until it will be decided how to handle such cases in a portable way.
