mirror of
https://git.eden-emu.dev/eden-emu/eden
synced 2026-04-13 07:09:00 +02:00
- our logging code was bigger than spdlog itself, why???? just keep it simple - fix issues when logging before logging system is even started - removes the "initialized logging twice" issue - removes uneeded indirection in file logging - uses direct formatting instead of jumping hoopla-around the fmt::format() ressult - code duplication and dead code removal as usual I did explore dup2() but I think it's not worth the hassle I did try `fwopen()` but it's better if things are just kept as-is. there is a lot of noise because I removed a bunch of redundant files on logging and just put everything in one file now normally this wouldn't be a good idea, however consider: the complexity of logging; it's less than 500 lines... does it really need a whole subsystem?!?!?! ITS JUST LOGGING Signed-off-by: lizzie <lizzie@eden-emu.dev> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3688 Reviewed-by: crueter <crueter@eden-emu.dev> Reviewed-by: DraVee <chimera@dravee.dev> Reviewed-by: CamilleLaVey <camillelavey99@gmail.com> Co-authored-by: lizzie <lizzie@eden-emu.dev> Co-committed-by: lizzie <lizzie@eden-emu.dev>
67 lines
1.8 KiB
C++
67 lines
1.8 KiB
C++
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
|
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
#pragma once
|
|
|
|
#include <exception>
|
|
#include <string>
|
|
#include <utility>
|
|
|
|
#include "common/logging.h"
|
|
|
|
namespace Shader {
|
|
|
|
class Exception : public std::exception {
|
|
public:
|
|
explicit Exception(std::string message) noexcept : err_message{std::move(message)} {}
|
|
|
|
[[nodiscard]] const char* what() const noexcept override {
|
|
return err_message.c_str();
|
|
}
|
|
|
|
void Prepend(std::string_view prepend) {
|
|
err_message.insert(0, prepend);
|
|
}
|
|
|
|
void Append(std::string_view append) {
|
|
err_message += append;
|
|
}
|
|
|
|
private:
|
|
std::string err_message;
|
|
};
|
|
|
|
class LogicError : public Exception {
|
|
public:
|
|
template <typename... Args>
|
|
explicit LogicError(const char* message, Args&&... args)
|
|
: Exception{fmt::format(fmt::runtime(message), std::forward<Args>(args)...)} {}
|
|
};
|
|
|
|
class RuntimeError : public Exception {
|
|
public:
|
|
template <typename... Args>
|
|
explicit RuntimeError(const char* message, Args&&... args)
|
|
: Exception{fmt::format(fmt::runtime(message), std::forward<Args>(args)...)} {}
|
|
};
|
|
|
|
class NotImplementedException : public Exception {
|
|
public:
|
|
template <typename... Args>
|
|
explicit NotImplementedException(const char* message, Args&&... args)
|
|
: Exception{fmt::format(fmt::runtime(message), std::forward<Args>(args)...)} {
|
|
Append(" is not implemented");
|
|
}
|
|
};
|
|
|
|
class InvalidArgument : public Exception {
|
|
public:
|
|
template <typename... Args>
|
|
explicit InvalidArgument(const char* message, Args&&... args)
|
|
: Exception{fmt::format(fmt::runtime(message), std::forward<Args>(args)...)} {}
|
|
};
|
|
|
|
} // namespace Shader
|