[ox] Make Error use std::source_location
This commit is contained in:
parent
480dd5ece4
commit
835e3270ce
2
deps/ox/src/ox/event/signal.hpp
vendored
2
deps/ox/src/ox/event/signal.hpp
vendored
@ -215,7 +215,7 @@ Error Signal<Args...>::emitCheckError(Args... args) const noexcept {
|
|||||||
}
|
}
|
||||||
return ox::Error(0);
|
return ox::Error(0);
|
||||||
} catch (const ox::Exception &ex) {
|
} catch (const ox::Exception &ex) {
|
||||||
return ox::Error(ex.file, ex.line, ex.errCode, ex.msg);
|
return ox::Error(ex.errCode, ex.msg, ex.src);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
2
deps/ox/src/ox/logconn/def.hpp
vendored
2
deps/ox/src/ox/logconn/def.hpp
vendored
@ -14,7 +14,7 @@
|
|||||||
{ \
|
{ \
|
||||||
const auto loggerErr = (loggerName).initConn(appName); \
|
const auto loggerErr = (loggerName).initConn(appName); \
|
||||||
if (loggerErr) { \
|
if (loggerErr) { \
|
||||||
oxErrf("Could not connect to logger: {} ({}:{})\n", toStr(loggerErr), loggerErr.file, loggerErr.line); \
|
oxErrf("Could not connect to logger: {} ({}:{})\n", toStr(loggerErr), loggerErr.src.file_name(), loggerErr.src.line()); \
|
||||||
} else { \
|
} else { \
|
||||||
ox::trace::setLogger(&(loggerName)); \
|
ox::trace::setLogger(&(loggerName)); \
|
||||||
} \
|
} \
|
||||||
|
8
deps/ox/src/ox/std/assert.cpp
vendored
8
deps/ox/src/ox/std/assert.cpp
vendored
@ -20,8 +20,8 @@ void panic(StringViewCR file, int line, StringViewCR panicMsg, const Error &err)
|
|||||||
oxErrf("\tError Message:\t{}\n", err.msg);
|
oxErrf("\tError Message:\t{}\n", err.msg);
|
||||||
}
|
}
|
||||||
oxErrf("\tError Code:\t{}\n", static_cast<ErrorCode>(err));
|
oxErrf("\tError Code:\t{}\n", static_cast<ErrorCode>(err));
|
||||||
if (err.file != nullptr) {
|
if (err.src.file_name() != nullptr) {
|
||||||
oxErrf("\tError Location:\t{}:{}\n", err.file, err.line);
|
oxErrf("\tError Location:\t{}:{}\n", err.src.file_name(), err.src.line());
|
||||||
}
|
}
|
||||||
#ifdef OX_USE_STDLIB
|
#ifdef OX_USE_STDLIB
|
||||||
printStackTrace(2);
|
printStackTrace(2);
|
||||||
@ -56,8 +56,8 @@ void assertFailFuncRuntime(StringViewCR file, int line, [[maybe_unused]] const E
|
|||||||
msg += sfmt("\tError Message:\t{}\n", err.msg);
|
msg += sfmt("\tError Message:\t{}\n", err.msg);
|
||||||
}
|
}
|
||||||
msg += sfmt("\tError Code:\t{}\n", static_cast<ErrorCode>(err));
|
msg += sfmt("\tError Code:\t{}\n", static_cast<ErrorCode>(err));
|
||||||
if (err.file != nullptr) {
|
if (err.src.file_name() != nullptr) {
|
||||||
msg += sfmt("\tError Location:\t{}:{}\n", err.file, err.line);
|
msg += sfmt("\tError Location:\t{}:{}\n", err.src.file_name(), err.src.line());
|
||||||
}
|
}
|
||||||
msg += genStackTrace(2);
|
msg += genStackTrace(2);
|
||||||
oxErr(msg);
|
oxErr(msg);
|
||||||
|
40
deps/ox/src/ox/std/error.hpp
vendored
40
deps/ox/src/ox/std/error.hpp
vendored
@ -36,28 +36,16 @@ using ErrorCode = uint16_t;
|
|||||||
|
|
||||||
|
|
||||||
struct [[nodiscard]] Error {
|
struct [[nodiscard]] Error {
|
||||||
|
std::source_location src;
|
||||||
ox::CString msg = nullptr;
|
ox::CString msg = nullptr;
|
||||||
ox::CString file = nullptr;
|
|
||||||
uint16_t line = 0;
|
|
||||||
ErrorCode errCode = 0;
|
ErrorCode errCode = 0;
|
||||||
|
|
||||||
constexpr Error() noexcept = default;
|
constexpr Error() noexcept = default;
|
||||||
|
|
||||||
explicit constexpr Error(
|
|
||||||
ox::CString file,
|
|
||||||
uint32_t const line,
|
|
||||||
ErrorCode const errCode,
|
|
||||||
ox::CString msg = nullptr) noexcept:
|
|
||||||
msg{msg},
|
|
||||||
file{file},
|
|
||||||
line{static_cast<uint16_t>(line)},
|
|
||||||
errCode{errCode} {}
|
|
||||||
|
|
||||||
explicit constexpr Error(
|
explicit constexpr Error(
|
||||||
ErrorCode const errCode,
|
ErrorCode const errCode,
|
||||||
std::source_location const&src = std::source_location::current()) noexcept:
|
std::source_location const&src = std::source_location::current()) noexcept:
|
||||||
file{src.file_name()},
|
src{src},
|
||||||
line{static_cast<uint16_t>(src.line())},
|
|
||||||
errCode{errCode}
|
errCode{errCode}
|
||||||
{}
|
{}
|
||||||
|
|
||||||
@ -65,9 +53,8 @@ struct [[nodiscard]] Error {
|
|||||||
ErrorCode const errCode,
|
ErrorCode const errCode,
|
||||||
ox::CString msg,
|
ox::CString msg,
|
||||||
std::source_location const&src = std::source_location::current()) noexcept:
|
std::source_location const&src = std::source_location::current()) noexcept:
|
||||||
|
src{src},
|
||||||
msg{msg},
|
msg{msg},
|
||||||
file{src.file_name()},
|
|
||||||
line{static_cast<uint16_t>(src.line())},
|
|
||||||
errCode{errCode}
|
errCode{errCode}
|
||||||
{}
|
{}
|
||||||
|
|
||||||
@ -89,42 +76,31 @@ constexpr auto toStr(Error const&err) noexcept {
|
|||||||
}
|
}
|
||||||
|
|
||||||
struct Exception: public std::exception {
|
struct Exception: public std::exception {
|
||||||
|
std::source_location src;
|
||||||
ox::CString msg = nullptr;
|
ox::CString msg = nullptr;
|
||||||
ox::CString file = nullptr;
|
|
||||||
uint16_t line = 0;
|
|
||||||
ErrorCode errCode = 0;
|
ErrorCode errCode = 0;
|
||||||
|
|
||||||
explicit inline Exception(ox::CString file, uint32_t line, ErrorCode errCode, char const*msg = "") noexcept {
|
|
||||||
this->file = file;
|
|
||||||
this->line = static_cast<uint16_t>(line);
|
|
||||||
this->msg = msg;
|
|
||||||
this->errCode = errCode;
|
|
||||||
}
|
|
||||||
|
|
||||||
explicit inline Exception(
|
explicit inline Exception(
|
||||||
ErrorCode const errCode,
|
ErrorCode const errCode,
|
||||||
std::source_location const&src = std::source_location::current()) noexcept:
|
std::source_location const&src = std::source_location::current()) noexcept:
|
||||||
file{src.file_name()},
|
src{src},
|
||||||
line{static_cast<uint16_t>(src.line())},
|
|
||||||
errCode{errCode} {}
|
errCode{errCode} {}
|
||||||
|
|
||||||
explicit inline Exception(
|
explicit inline Exception(
|
||||||
ErrorCode const errCode,
|
ErrorCode const errCode,
|
||||||
ox::CString msg,
|
ox::CString msg,
|
||||||
std::source_location const&src = std::source_location::current()) noexcept:
|
std::source_location const&src = std::source_location::current()) noexcept:
|
||||||
|
src{src},
|
||||||
msg{msg},
|
msg{msg},
|
||||||
file{src.file_name()},
|
|
||||||
line{static_cast<uint16_t>(src.line())},
|
|
||||||
errCode{errCode} {}
|
errCode{errCode} {}
|
||||||
|
|
||||||
explicit inline Exception(Error const&err) noexcept:
|
explicit inline Exception(Error const&err) noexcept:
|
||||||
|
src{err.src},
|
||||||
msg{err.msg ? err.msg : ""},
|
msg{err.msg ? err.msg : ""},
|
||||||
file{err.file},
|
|
||||||
line{err.line},
|
|
||||||
errCode{err.errCode} {}
|
errCode{err.errCode} {}
|
||||||
|
|
||||||
constexpr Error toError() const noexcept {
|
constexpr Error toError() const noexcept {
|
||||||
return Error(file, line, errCode, msg);
|
return Error(errCode, msg, src);
|
||||||
}
|
}
|
||||||
|
|
||||||
[[nodiscard]]
|
[[nodiscard]]
|
||||||
|
8
deps/ox/src/ox/std/trace.hpp
vendored
8
deps/ox/src/ox/std/trace.hpp
vendored
@ -269,8 +269,8 @@ using TraceStream = NullStream;
|
|||||||
inline void logError(const char *file, int line, const char *fmt, const Error &err) noexcept {
|
inline void logError(const char *file, int line, const char *fmt, const Error &err) noexcept {
|
||||||
if (err) {
|
if (err) {
|
||||||
TraceStream trc(file, line, "ox::error");
|
TraceStream trc(file, line, "ox::error");
|
||||||
if (err.file != nullptr) {
|
if (err.src.file_name() != nullptr) {
|
||||||
trc << "Error: (" << err.file << ":" << err.line << "):";
|
trc << "Error: (" << err.src.file_name() << ":" << err.src.line() << "):";
|
||||||
} else {
|
} else {
|
||||||
trc << "Error:";
|
trc << "Error:";
|
||||||
}
|
}
|
||||||
@ -282,8 +282,8 @@ inline void logError(const char *file, int line, const Error &err) noexcept {
|
|||||||
if (err) {
|
if (err) {
|
||||||
TraceStream trc(file, line, "ox::error");
|
TraceStream trc(file, line, "ox::error");
|
||||||
trc << "Error:" << err;
|
trc << "Error:" << err;
|
||||||
if (err.file != nullptr) {
|
if (err.src.file_name() != nullptr) {
|
||||||
trc << "(" << err.file << ":" << err.line << ")";
|
trc << "(" << err.src.file_name() << ":" << err.src.line() << ")";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user