mimic++
v10.0.1
Toggle main menu visibility
Loading...
Searching...
No Matches
std-stacktrace.hpp
Go to the documentation of this file.
1
// Copyright Dominic (DNKpp) Koepke 2024 - 2025.
2
// Distributed under the Boost Software License, Version 1.0.
3
// (See accompanying file LICENSE_1_0.txt or copy at
4
// https://www.boost.org/LICENSE_1_0.txt)
5
6
#ifndef MIMICPP_EXT_STACKTRACE_STD_STACKTRACE_HPP
7
#define MIMICPP_EXT_STACKTRACE_STD_STACKTRACE_HPP
8
9
#include "
mimic++/Fwd.hpp
"
10
#include "
mimic++/config/Config.hpp
"
11
12
#ifndef MIMICPP_DETAIL_IS_MODULE
13
#include <limits>
14
#include <stacktrace>
15
#include <string>
16
#endif
17
18
struct
mimicpp::util::stacktrace::find_backend
19
{
20
using
type
= std::stacktrace;
21
};
22
23
template
<
typename
Allocator>
24
struct
mimicpp::util::stacktrace::backend_traits
<std::basic_stacktrace<Allocator>>
25
{
26
using
Backend
= std::basic_stacktrace<Allocator>;
27
28
[[nodiscard]]
29
static
Backend
current
(std::size_t
const
skip, std::size_t
const
max)
noexcept
30
{
31
MIMICPP_ASSERT
(skip < std::numeric_limits<std::size_t>::max() - max,
"Skip + max is too high."
);
32
33
return
Backend::current(skip + 1, max);
34
}
35
36
[[nodiscard]]
37
static
Backend
current
(std::size_t
const
skip)
noexcept
38
{
39
MIMICPP_ASSERT
(skip < std::numeric_limits<std::size_t>::max(),
"Skip is too high."
);
40
41
return
Backend::current(skip + 1);
42
}
43
44
[[nodiscard]]
45
static
std::size_t
size
(
Backend
const
&
backend
)
noexcept
46
{
47
return
backend
.size();
48
}
49
50
[[nodiscard]]
51
static
bool
empty
(
Backend
const
&
backend
)
noexcept
52
{
53
return
backend
.empty();
54
}
55
56
[[nodiscard]]
57
static
std::string
description
(
Backend
const
&
backend
, std::size_t
const
at)
58
{
59
return
entry
(
backend
, at).description();
60
}
61
62
[[nodiscard]]
63
static
std::string
source_file
(
Backend
const
&
backend
, std::size_t
const
at)
64
{
65
return
entry
(
backend
, at).source_file();
66
}
67
68
[[nodiscard]]
69
static
std::size_t
source_line
(
Backend
const
&
backend
, std::size_t
const
at)
70
{
71
return
entry
(
backend
, at).source_line();
72
}
73
74
[[nodiscard]]
75
static
std::stacktrace_entry
const
&
entry
(
Backend
const
&
backend
, std::size_t
const
at)
76
{
77
return
backend
.at(at);
78
}
79
};
80
81
#endif
Config.hpp
MIMICPP_ASSERT
#define MIMICPP_ASSERT(condition, msg)
Definition
Config.hpp:54
Fwd.hpp
mimicpp::util::stacktrace::backend
Checks whether the given type satisfies the requirements of a stacktrace backend.
Definition
Stacktrace.hpp:109
mimicpp::util::stacktrace::backend_traits< std::basic_stacktrace< Allocator > >::Backend
std::basic_stacktrace< Allocator > Backend
Definition
std-stacktrace.hpp:26
mimicpp::util::stacktrace::backend_traits< std::basic_stacktrace< Allocator > >::source_line
static std::size_t source_line(Backend const &backend, std::size_t const at)
Definition
std-stacktrace.hpp:69
mimicpp::util::stacktrace::backend_traits< std::basic_stacktrace< Allocator > >::current
static Backend current(std::size_t const skip) noexcept
Definition
std-stacktrace.hpp:37
mimicpp::util::stacktrace::backend_traits< std::basic_stacktrace< Allocator > >::current
static Backend current(std::size_t const skip, std::size_t const max) noexcept
Definition
std-stacktrace.hpp:29
mimicpp::util::stacktrace::backend_traits< std::basic_stacktrace< Allocator > >::entry
static std::stacktrace_entry const & entry(Backend const &backend, std::size_t const at)
Definition
std-stacktrace.hpp:75
mimicpp::util::stacktrace::backend_traits< std::basic_stacktrace< Allocator > >::empty
static bool empty(Backend const &backend) noexcept
Definition
std-stacktrace.hpp:51
mimicpp::util::stacktrace::backend_traits< std::basic_stacktrace< Allocator > >::description
static std::string description(Backend const &backend, std::size_t const at)
Definition
std-stacktrace.hpp:57
mimicpp::util::stacktrace::backend_traits< std::basic_stacktrace< Allocator > >::source_file
static std::string source_file(Backend const &backend, std::size_t const at)
Definition
std-stacktrace.hpp:63
mimicpp::util::stacktrace::backend_traits< std::basic_stacktrace< Allocator > >::size
static std::size_t size(Backend const &backend) noexcept
Definition
std-stacktrace.hpp:45
mimicpp::util::stacktrace::backend_traits
Trait type for stacktrace backends.
Definition
Fwd.hpp:459
mimicpp::util::stacktrace::find_backend
Definition
Stacktrace.hpp:529
mimicpp::util::stacktrace::find_backend::type
NullBackend type
Definition
Stacktrace.hpp:530
mimic++_ext
stacktrace
std-stacktrace.hpp
Generated on
for mimic++ by
1.18.0