mirror of
https://github.com/KytyPS5/KytyPS5.git
synced 2026-10-20 19:07:01 +02:00
Initial commit
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
#ifndef KYTY_COMMON_ASSERT_H_
|
||||
#define KYTY_COMMON_ASSERT_H_
|
||||
|
||||
#include "common/common.h"
|
||||
#include "common/logging/log.h"
|
||||
|
||||
#include <cstdlib>
|
||||
#include <string_view>
|
||||
|
||||
namespace Common {
|
||||
|
||||
#ifdef __clang__
|
||||
int DbgExitHandler(char const* file, int line, std::string_view text)
|
||||
__attribute__((analyzer_noreturn));
|
||||
int DbgExitHandler(char const* file, int line, fmt::text_style style, std::string_view text)
|
||||
__attribute__((analyzer_noreturn));
|
||||
int DbgExitIfHandler(char const* expr, char const* file, int line)
|
||||
__attribute__((analyzer_noreturn));
|
||||
int DbgNotImplementedHandler(char const* expr, char const* file, int line)
|
||||
__attribute__((analyzer_noreturn));
|
||||
void DbgExit(int status) __attribute__((analyzer_noreturn));
|
||||
#else
|
||||
int DbgExitHandler(char const* file, int line, std::string_view text);
|
||||
int DbgExitHandler(char const* file, int line, fmt::text_style style, std::string_view text);
|
||||
int DbgExitIfHandler(char const* expr, char const* file, int line);
|
||||
int DbgNotImplementedHandler(char const* expr, char const* file, int line);
|
||||
void DbgExit(int status);
|
||||
#endif
|
||||
|
||||
} // namespace Common
|
||||
|
||||
#if KYTY_PLATFORM == KYTY_PLATFORM_WINDOWS || KYTY_PLATFORM == KYTY_PLATFORM_LINUX
|
||||
#define EXIT_HALT() (Common::DbgExit(321), 1)
|
||||
#else
|
||||
#define EXIT_HALT() (std::_Exit(321), 1)
|
||||
#endif
|
||||
|
||||
#ifndef KYTY_FINAL
|
||||
#define EXIT_IF(x) \
|
||||
((void)((x) && Common::DbgExitIfHandler(#x, __FILE__, __LINE__) != 0 && (EXIT_HALT(), 1) != 0))
|
||||
#else
|
||||
#define EXIT_IF(x) \
|
||||
do { \
|
||||
constexpr bool kyty_exit_if_disabled = false && (x); \
|
||||
(void)kyty_exit_if_disabled; \
|
||||
} while (0)
|
||||
#endif
|
||||
|
||||
#define EXIT(...) \
|
||||
do { \
|
||||
((void)(Common::DbgExitHandler(__FILE__, __LINE__, ::fmt::sprintf(__VA_ARGS__)) && \
|
||||
(EXIT_HALT(), 1))); \
|
||||
} while (0)
|
||||
|
||||
#define EXIT_COLOR(style, ...) \
|
||||
do { \
|
||||
((void)(Common::DbgExitHandler(__FILE__, __LINE__, (style), \
|
||||
::fmt::sprintf(__VA_ARGS__)) && \
|
||||
(EXIT_HALT(), 1))); \
|
||||
} while (0)
|
||||
|
||||
#define EXIT_NOT_IMPLEMENTED(x) \
|
||||
((void)((x) && Common::DbgNotImplementedHandler(#x, __FILE__, __LINE__) != 0 && \
|
||||
(EXIT_HALT(), 1) != 0))
|
||||
#define KYTY_NOT_IMPLEMENTED EXIT_NOT_IMPLEMENTED(true)
|
||||
|
||||
#endif /* KYTY_COMMON_ASSERT_H_ */
|
||||
Reference in New Issue
Block a user