libxr  1.0
Want to be the best embedded framework
Loading...
Searching...
No Matches
diag.hpp
1#pragma once
2
3#include <cstdint>
4#include <utility>
5
6#include "libxr_cb.hpp"
7
8namespace LibXR::Assert
9{
14using FatalCallback = LibXR::Callback<const char*, uint32_t>;
15
16namespace Detail
17{
18// Process-global fatal callback storage.
19// 进程级 fatal 回调存根。
20inline FatalCallback fatal_error_callback_; // NOLINT
21} // namespace Detail
22
27inline void RegisterFatalErrorCallback(FatalCallback cb)
28{
29 Detail::fatal_error_callback_ = std::move(cb);
30}
31
38[[nodiscard]] inline FatalCallback FatalErrorCallback()
39{
40 return Detail::fatal_error_callback_;
41}
42
49inline void RunFatalErrorCallback(bool in_isr, const char* file, uint32_t line)
50{
51 if (!Detail::fatal_error_callback_.Empty())
52 {
53 Detail::fatal_error_callback_.Run(in_isr, file, line);
54 }
55}
56} // namespace LibXR::Assert
通用回调包装,支持动态参数传递 / Generic callback wrapper supporting dynamic argument passing
Definition libxr_cb.hpp:143