/*** Copyright (C) 2021 J Reece Wilson (a/k/a "Reece"). All rights reserved. File: SysPanic.hpp Date: 2021-6-10 Author: Reece ***/ #pragma once #if defined(_AUHAS_FMT) template static inline void AU_NORETURN SysPanic(T... args) { if constexpr (sizeof...(T) != 0) { Aurora::Debug::AddMemoryCrunch(); try { Aurora::Logging::WriteLinef(static_cast(Aurora::Logging::ELogLevel::eError), Aurora::Console::EAnsiColor::eBoldRed, "Fatal", AuForward(args)...); } catch (...) { } } Aurora::Debug::Panic(); } template static inline void AU_NORETURN SysPanic2(AuUInt uLineHintInNonshipBinary, T... args) { if constexpr (sizeof...(T) != 0) { Aurora::Debug::AddMemoryCrunch(); try { Aurora::Logging::WriteLinef(static_cast(Aurora::Logging::ELogLevel::eError), Aurora::Console::EAnsiColor::eBoldRed, "Fatal", AuForward(args)...); } catch (...) { } } Aurora::Debug::Panic2(uLineHintInNonshipBinary); } static inline void SysUnreachable_(int uLineHintInNonshipBinary) { Aurora::Debug::Panic2(uLineHintInNonshipBinary); } #define SysUnreachable() SysUnreachable_(SysSafeLine) #endif