37 lines
1.1 KiB
C
37 lines
1.1 KiB
C
|
// Copyright 2013 Dolphin Emulator Project / 2014 Citra Emulator Project
|
||
|
// Licensed under GPLv2 or any later version
|
||
|
// Refer to the license.txt file included.
|
||
|
|
||
|
#pragma once
|
||
|
|
||
|
#include "common/common_funcs.h"
|
||
|
|
||
|
// TODO (yuriks) allow synchronous logging so we don't need printf
|
||
|
#define ASSERT(_a_) \
|
||
|
do if (!(_a_)) {\
|
||
|
fprintf(stderr, "Assertion Failed!\n\n Line: %d\n File: %s\n Time: %s\n", \
|
||
|
__LINE__, __FILE__, __TIME__); \
|
||
|
Crash(); \
|
||
|
} while (0)
|
||
|
|
||
|
#define ASSERT_MSG(_a_, ...) \
|
||
|
do if (!(_a_)) {\
|
||
|
fprintf(stderr, "Assertion Failed!\n\n Line: %d\n File: %s\n Time: %s\n", \
|
||
|
__LINE__, __FILE__, __TIME__); \
|
||
|
fprintf(stderr, __VA_ARGS__); \
|
||
|
fprintf(stderr, "\n"); \
|
||
|
Crash(); \
|
||
|
} while (0)
|
||
|
|
||
|
#define UNREACHABLE() ASSERT_MSG(false, "Unreachable code!")
|
||
|
|
||
|
#ifdef _DEBUG
|
||
|
#define DEBUG_ASSERT(_a_) ASSERT(_a_)
|
||
|
#define DEBUG_ASSERT_MSG(_a_, ...) ASSERT_MSG(_a_, __VA_ARGS__)
|
||
|
#else // not debug
|
||
|
#define DEBUG_ASSERT(_a_)
|
||
|
#define DEBUG_ASSERT_MSG(_a_, _desc_, ...)
|
||
|
#endif
|
||
|
|
||
|
#define UNIMPLEMENTED() DEBUG_ASSERT_MSG(false, "Unimplemented code!")
|