diff options
| author | Yuqian Yang <crupest@crupest.life> | 2025-11-04 22:17:27 +0800 |
|---|---|---|
| committer | Yuqian Yang <crupest@crupest.life> | 2025-11-04 22:17:27 +0800 |
| commit | ef6cff0f308d49326bbe0c3b557cb8ab6cca455b (patch) | |
| tree | 34914a6e76093d892ff10f8400d04c285eeab2c8 /include | |
| parent | 8bea03e0811588e741050b598b8123865b333999 (diff) | |
| download | cru-ef6cff0f308d49326bbe0c3b557cb8ab6cca455b.tar.gz cru-ef6cff0f308d49326bbe0c3b557cb8ab6cca455b.tar.bz2 cru-ef6cff0f308d49326bbe0c3b557cb8ab6cca455b.zip | |
Move base Exception.h to Base.h.
Diffstat (limited to 'include')
| -rw-r--r-- | include/cru/base/Base.h | 53 | ||||
| -rw-r--r-- | include/cru/base/Exception.h | 65 | ||||
| -rw-r--r-- | include/cru/base/StringUtil.h | 5 | ||||
| -rw-r--r-- | include/cru/base/SubProcess.h | 1 | ||||
| -rw-r--r-- | include/cru/base/Timer.h | 1 | ||||
| -rw-r--r-- | include/cru/base/io/BufferStream.h | 1 | ||||
| -rw-r--r-- | include/cru/base/io/Stream.h | 1 | ||||
| -rw-r--r-- | include/cru/base/platform/unix/EventLoop.h | 1 | ||||
| -rw-r--r-- | include/cru/base/platform/web/WebException.h | 2 | ||||
| -rw-r--r-- | include/cru/base/platform/win/Exception.h | 2 | ||||
| -rw-r--r-- | include/cru/base/toml/TomlParser.h | 2 | ||||
| -rw-r--r-- | include/cru/base/xml/XmlParser.h | 2 | ||||
| -rw-r--r-- | include/cru/platform/Base.h | 1 | ||||
| -rw-r--r-- | include/cru/platform/gui/sdl/Base.h | 1 | ||||
| -rw-r--r-- | include/cru/platform/gui/xcb/Base.h | 1 | ||||
| -rw-r--r-- | include/cru/ui/mapper/Mapper.h | 1 |
16 files changed, 62 insertions, 78 deletions
diff --git a/include/cru/base/Base.h b/include/cru/base/Base.h index 6dfe995a..af4d38ff 100644 --- a/include/cru/base/Base.h +++ b/include/cru/base/Base.h @@ -1,8 +1,12 @@ #pragma once #include <cassert> #include <cstddef> +#include <exception> #include <functional> #include <memory> +#include <optional> +#include <string> +#include <string_view> #ifdef CRU_IS_DLL #ifdef CRU_BASE_EXPORT_API @@ -105,4 +109,53 @@ inline void hash_combine(std::size_t& s, const T& v) { #define CRU_DEFINE_CLASS_LOG_TAG(tag) \ private: \ constexpr static const char* kLogTag = tag; + +#ifdef _MSC_VER +#pragma warning(disable : 4275) +#endif +class CRU_BASE_API Exception : public std::exception { + public: + explicit Exception(std::string message = "", + std::shared_ptr<std::exception> inner = nullptr); + + ~Exception() override; + + public: + std::string GetUtf8Message() const { return this->message_; } + + std::exception* GetInner() const noexcept { return inner_.get(); } + + const char* what() const noexcept override; + + protected: + void SetMessage(std::string message) { message_ = std::move(message); } + void AppendMessage(const std::string& additional_message); + void AppendMessage(std::string_view additional_message); + void AppendMessage(std::optional<std::string_view> additional_message); + + private: + std::string message_; + std::shared_ptr<std::exception> inner_; +}; + +class CRU_BASE_API PlatformException : public Exception { + public: + using Exception::Exception; // inherit constructors +}; + +class ErrnoException : public Exception { + public: + ErrnoException(); + explicit ErrnoException(int error_code); + /** + * @brief will retrieve errno automatically. + */ + explicit ErrnoException(std::string_view message); + ErrnoException(std::string_view message, int errno_code); + + int GetErrnoCode() const { return errno_code_; } + + private: + int errno_code_; +}; } // namespace cru diff --git a/include/cru/base/Exception.h b/include/cru/base/Exception.h deleted file mode 100644 index c45cdc58..00000000 --- a/include/cru/base/Exception.h +++ /dev/null @@ -1,65 +0,0 @@ -#pragma once -#include "Base.h" - -#include <exception> -#include <optional> -#include <string_view> -#include <string> - -namespace cru { -#ifdef _MSC_VER -#pragma warning(disable : 4275) -#endif -class CRU_BASE_API Exception : public std::exception { - public: - explicit Exception(std::string message = "", - std::shared_ptr<std::exception> inner = nullptr); - - ~Exception() override; - - public: - std::string GetUtf8Message() const { return this->message_; } - - std::exception* GetInner() const noexcept { return inner_.get(); } - - const char* what() const noexcept override; - - protected: - void SetMessage(std::string message) { message_ = std::move(message); } - void AppendMessage(const std::string& additional_message); - void AppendMessage(std::string_view additional_message); - void AppendMessage(std::optional<std::string_view> additional_message); - - private: - std::string message_; - std::shared_ptr<std::exception> inner_; -}; - -class CRU_BASE_API PlatformException : public Exception { - public: - using Exception::Exception; // inherit constructors - - CRU_DEFAULT_DESTRUCTOR(PlatformException) -}; - -class CRU_BASE_API TextEncodeException : public Exception { - public: - using Exception::Exception; -}; - -class ErrnoException : public Exception { - public: - ErrnoException(); - explicit ErrnoException(int error_code); - /** - * @brief will retrieve errno automatically. - */ - explicit ErrnoException(std::string_view message); - ErrnoException(std::string_view message, int errno_code); - - int GetErrnoCode() const { return errno_code_; } - - private: - int errno_code_; -}; -} // namespace cru diff --git a/include/cru/base/StringUtil.h b/include/cru/base/StringUtil.h index 159f34c3..5c1c4be7 100644 --- a/include/cru/base/StringUtil.h +++ b/include/cru/base/StringUtil.h @@ -18,6 +18,11 @@ #include <vector> namespace cru::string { +class CRU_BASE_API TextEncodeException : public Exception { + public: + using Exception::Exception; +}; + std::weak_ordering CRU_BASE_API CaseInsensitiveCompare(std::string_view left, std::string_view right); std::string CRU_BASE_API TrimBegin(std::string_view str); diff --git a/include/cru/base/SubProcess.h b/include/cru/base/SubProcess.h index e8ba5936..609c4c4a 100644 --- a/include/cru/base/SubProcess.h +++ b/include/cru/base/SubProcess.h @@ -1,6 +1,5 @@ #pragma once #include "Base.h" -#include "Exception.h" #include "io/Stream.h" #include <chrono> diff --git a/include/cru/base/Timer.h b/include/cru/base/Timer.h index 7b467f18..955296b7 100644 --- a/include/cru/base/Timer.h +++ b/include/cru/base/Timer.h @@ -1,7 +1,6 @@ #pragma once #include "Base.h" -#include "Exception.h" #include <algorithm> #include <chrono> diff --git a/include/cru/base/io/BufferStream.h b/include/cru/base/io/BufferStream.h index 5ebff546..d4ee3837 100644 --- a/include/cru/base/io/BufferStream.h +++ b/include/cru/base/io/BufferStream.h @@ -1,7 +1,6 @@ #pragma once #include "../Buffer.h" -#include "../Exception.h" #include "Stream.h" #include <condition_variable> diff --git a/include/cru/base/io/Stream.h b/include/cru/base/io/Stream.h index 54801f05..503ccd27 100644 --- a/include/cru/base/io/Stream.h +++ b/include/cru/base/io/Stream.h @@ -2,7 +2,6 @@ #include "../Base.h" #include "../Buffer.h" -#include "../Exception.h" #include <cstddef> diff --git a/include/cru/base/platform/unix/EventLoop.h b/include/cru/base/platform/unix/EventLoop.h index 0bc68138..b039cfbf 100644 --- a/include/cru/base/platform/unix/EventLoop.h +++ b/include/cru/base/platform/unix/EventLoop.h @@ -5,7 +5,6 @@ #endif #include "../../Base.h" -#include "../../Exception.h" #include "../../Timer.h" #include "UnixFile.h" diff --git a/include/cru/base/platform/web/WebException.h b/include/cru/base/platform/web/WebException.h index 85454f82..ba90bec7 100644 --- a/include/cru/base/platform/web/WebException.h +++ b/include/cru/base/platform/web/WebException.h @@ -2,7 +2,7 @@ #ifdef CRU_PLATFORM_EMSCRIPTEN -#include "../Exception.h" +#include "../../Base.h" namespace cru::platform::web { class WebException : public PlatformException { diff --git a/include/cru/base/platform/win/Exception.h b/include/cru/base/platform/win/Exception.h index 21851bb9..db98e7b6 100644 --- a/include/cru/base/platform/win/Exception.h +++ b/include/cru/base/platform/win/Exception.h @@ -6,7 +6,7 @@ #include "WinPreConfig.h" -#include "../../Exception.h" +#include "../../Base.h" namespace cru::platform::win { class CRU_BASE_API HResultError : public Exception { diff --git a/include/cru/base/toml/TomlParser.h b/include/cru/base/toml/TomlParser.h index ac7d0217..8d62f8dc 100644 --- a/include/cru/base/toml/TomlParser.h +++ b/include/cru/base/toml/TomlParser.h @@ -1,6 +1,6 @@ #pragma once -#include "../Exception.h" +#include "../Base.h" #include "TomlDocument.h" #include <optional> diff --git a/include/cru/base/xml/XmlParser.h b/include/cru/base/xml/XmlParser.h index 22b529d7..5aa2f6bb 100644 --- a/include/cru/base/xml/XmlParser.h +++ b/include/cru/base/xml/XmlParser.h @@ -1,6 +1,6 @@ #pragma once -#include "../Exception.h" +#include "../Base.h" #include "XmlNode.h" namespace cru::xml { diff --git a/include/cru/platform/Base.h b/include/cru/platform/Base.h index a31e8e08..b910cde1 100644 --- a/include/cru/platform/Base.h +++ b/include/cru/platform/Base.h @@ -1,7 +1,6 @@ #pragma once #include <cru/base/Base.h> -#include <cru/base/Exception.h> #include <string> diff --git a/include/cru/platform/gui/sdl/Base.h b/include/cru/platform/gui/sdl/Base.h index d4b61dbf..89d2dad6 100644 --- a/include/cru/platform/gui/sdl/Base.h +++ b/include/cru/platform/gui/sdl/Base.h @@ -1,7 +1,6 @@ #pragma once -#include <cru/base/Exception.h> #include <cru/platform/Base.h> namespace cru::platform::gui::sdl { diff --git a/include/cru/platform/gui/xcb/Base.h b/include/cru/platform/gui/xcb/Base.h index 0d72fbaa..124499a7 100644 --- a/include/cru/platform/gui/xcb/Base.h +++ b/include/cru/platform/gui/xcb/Base.h @@ -1,6 +1,5 @@ #pragma once -#include <cru/base/Exception.h> #include <cru/platform/Base.h> #include <cru/platform/gui/Base.h> diff --git a/include/cru/ui/mapper/Mapper.h b/include/cru/ui/mapper/Mapper.h index e4a4c528..88081816 100644 --- a/include/cru/ui/mapper/Mapper.h +++ b/include/cru/ui/mapper/Mapper.h @@ -2,7 +2,6 @@ #include "../Base.h" #include "cru/base/ClonablePtr.h" -#include "cru/base/Exception.h" #include "cru/base/xml/XmlNode.h" #include <memory> |
