[ox] Make Error use std::source_location
This commit is contained in:
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 {
|
||||
std::source_location src;
|
||||
ox::CString msg = nullptr;
|
||||
ox::CString file = nullptr;
|
||||
uint16_t line = 0;
|
||||
ErrorCode errCode = 0;
|
||||
|
||||
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(
|
||||
ErrorCode const errCode,
|
||||
std::source_location const&src = std::source_location::current()) noexcept:
|
||||
file{src.file_name()},
|
||||
line{static_cast<uint16_t>(src.line())},
|
||||
src{src},
|
||||
errCode{errCode}
|
||||
{}
|
||||
|
||||
@ -65,9 +53,8 @@ struct [[nodiscard]] Error {
|
||||
ErrorCode const errCode,
|
||||
ox::CString msg,
|
||||
std::source_location const&src = std::source_location::current()) noexcept:
|
||||
src{src},
|
||||
msg{msg},
|
||||
file{src.file_name()},
|
||||
line{static_cast<uint16_t>(src.line())},
|
||||
errCode{errCode}
|
||||
{}
|
||||
|
||||
@ -89,42 +76,31 @@ constexpr auto toStr(Error const&err) noexcept {
|
||||
}
|
||||
|
||||
struct Exception: public std::exception {
|
||||
std::source_location src;
|
||||
ox::CString msg = nullptr;
|
||||
ox::CString file = nullptr;
|
||||
uint16_t line = 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(
|
||||
ErrorCode const errCode,
|
||||
std::source_location const&src = std::source_location::current()) noexcept:
|
||||
file{src.file_name()},
|
||||
line{static_cast<uint16_t>(src.line())},
|
||||
src{src},
|
||||
errCode{errCode} {}
|
||||
|
||||
explicit inline Exception(
|
||||
ErrorCode const errCode,
|
||||
ox::CString msg,
|
||||
std::source_location const&src = std::source_location::current()) noexcept:
|
||||
src{src},
|
||||
msg{msg},
|
||||
file{src.file_name()},
|
||||
line{static_cast<uint16_t>(src.line())},
|
||||
errCode{errCode} {}
|
||||
|
||||
explicit inline Exception(Error const&err) noexcept:
|
||||
src{err.src},
|
||||
msg{err.msg ? err.msg : ""},
|
||||
file{err.file},
|
||||
line{err.line},
|
||||
errCode{err.errCode} {}
|
||||
|
||||
constexpr Error toError() const noexcept {
|
||||
return Error(file, line, errCode, msg);
|
||||
return Error(errCode, msg, src);
|
||||
}
|
||||
|
||||
[[nodiscard]]
|
||||
|
Reference in New Issue
Block a user