aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/cru/base/Base.h53
-rw-r--r--include/cru/base/Exception.h65
-rw-r--r--include/cru/base/StringUtil.h5
-rw-r--r--include/cru/base/SubProcess.h1
-rw-r--r--include/cru/base/Timer.h1
-rw-r--r--include/cru/base/io/BufferStream.h1
-rw-r--r--include/cru/base/io/Stream.h1
-rw-r--r--include/cru/base/platform/unix/EventLoop.h1
-rw-r--r--include/cru/base/platform/web/WebException.h2
-rw-r--r--include/cru/base/platform/win/Exception.h2
-rw-r--r--include/cru/base/toml/TomlParser.h2
-rw-r--r--include/cru/base/xml/XmlParser.h2
-rw-r--r--include/cru/platform/Base.h1
-rw-r--r--include/cru/platform/gui/sdl/Base.h1
-rw-r--r--include/cru/platform/gui/xcb/Base.h1
-rw-r--r--include/cru/ui/mapper/Mapper.h1
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>