4#include "Stroika/Foundation/StroikaPreComp.h"
10#if qStroika_Foundation_Execution_Throw_TraceThrowpointBacktrace
19#if qStroika_Foundation_Debug_DefaultTracingOn
25void Execution::Private_::JustDbgTrace_ (
const string& msg)
27 DbgTrace (
"{}"_f, String::FromNarrowSDKString (msg));
29void Execution::Private_::JustDbgTrace_ (
const wstring& msg)
39void Execution::Private_::ThrowingExceptionDbgTrace_ (
const string& msg)
41 if constexpr (qStroika_Foundation_Execution_Throw_TraceThrowpoint) {
42#if qStroika_Foundation_Execution_Throw_TraceThrowpointBacktrace
43 DbgTrace (
"Throwing exception: {} from {}"_f, String::FromNarrowSDKString (msg), Private_::GetBT_ws ());
49void Execution::Private_::ThrowingExceptionDbgTrace_ (
const wstring& msg)
51 if constexpr (qStroika_Foundation_Execution_Throw_TraceThrowpoint) {
52#if qStroika_Foundation_Execution_Throw_TraceThrowpointBacktrace
53 DbgTrace (
"Throwing exception: {} from {}"_f, msg, Private_::GetBT_ws ());
55 DbgTrace (
"Throwing exception: {}"_f, msg);
65void Execution::Private_::ReThrowingExceptionDbgTrace_ (
const string& msg)
67 if constexpr (qStroika_Foundation_Execution_Throw_TraceThrowpoint) {
68#if qStroika_Foundation_Execution_Throw_TraceThrowpointBacktrace
69 DbgTrace (
"ReThrow: {} from {}"_f, String::FromNarrowSDKString (msg), Private_::GetBT_ws ());
75void Execution::Private_::ReThrowingExceptionDbgTrace_ (
const wstring& msg)
77 if constexpr (qStroika_Foundation_Execution_Throw_TraceThrowpoint) {
78#if qStroika_Foundation_Execution_Throw_TraceThrowpointBacktrace
79 DbgTrace (
"ReThrow: {} from {}"_f, msg, Private_::GetBT_ws ());
92#if qStroika_Foundation_Execution_Throw_TraceThrowpointBacktrace
93string Execution::Private_::GetBT_s ()
96 wstring tmp = Debug::BackTrace::Capture (Debug::BackTrace::Options{1});
98 for (
wchar_t c : tmp) {
99 result +=
static_cast<char> (c);
103wstring Execution::Private_::GetBT_ws ()
106 return Debug::BackTrace::Capture (Debug::BackTrace::Options{1});
110string Execution::Private_::ToString_ (
const type_info& s)
112 return Characters::ToString (s).AsNarrowSDKString (Characters::eIgnoreErrors);
String is like std::u32string, except it is much easier to use, often much more space efficient,...