p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_assert.cpp
2017-10-11 12:35:36 +02:00

81 lines
1.7 KiB
C++

// File: lzham_assert.cpp
// See Copyright Notice and license at the end of include/lzham.h
#include "lzham_core.h"
static bool g_fail_exceptions;
static bool g_exit_on_failure = true;
void lzham_enable_fail_exceptions(bool enabled)
{
g_fail_exceptions = enabled;
}
void lzham_assert(const char* pExp, const char* pFile, unsigned line)
{
char buf[512];
sprintf_s(buf, sizeof(buf), "%s(%u): Assertion failed: \"%s\"\n", pFile, line, pExp);
lzham_output_debug_string(buf);
printf("%s", buf);
if (lzham_is_debugger_present())
lzham_debug_break();
}
void lzham_fail(const char* pExp, const char* pFile, unsigned line)
{
char buf[512];
sprintf_s(buf, sizeof(buf), "%s(%u): Failure: \"%s\"\n", pFile, line, pExp);
lzham_output_debug_string(buf);
printf("%s", buf);
if (lzham_is_debugger_present())
lzham_debug_break();
#if LZHAM_USE_WIN32_API
if (g_fail_exceptions)
RaiseException(LZHAM_FAIL_EXCEPTION_CODE, 0, 0, NULL);
else
#endif
if (g_exit_on_failure)
exit(EXIT_FAILURE);
}
void lzham_trace(const char* pFmt, va_list args)
{
if (lzham_is_debugger_present())
{
char buf[512];
vsprintf_s(buf, sizeof(buf), pFmt, args);
lzham_output_debug_string(buf);
}
}
void lzham_trace(const char* pFmt, ...)
{
va_list args;
va_start(args, pFmt);
lzham_trace(pFmt, args);
va_end(args);
}
#if LZHAM_ERROR_LOGGING
#if LZHAM_VERBOSE_ERROR_LOGGING
void lzham_log_error(const char *pFunc, const char *pFile, int line, const char *pMsg, int idx)
{
fprintf(stderr, "\nlzham_log_error: %i %s file: %s line: %u func %s\n", idx, pMsg ? pMsg : "", pFile, line, pFunc);
}
#else
void lzham_log_error(int idx)
{
fprintf(stderr, "\nlzham_log_error: %i\n", idx);
}
#endif
#endif