aboutsummaryrefslogtreecommitdiff
path: root/include/cru/common/Base.hpp
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2021-08-10 01:00:33 +0800
committercrupest <crupest@outlook.com>2021-08-10 01:00:33 +0800
commitd2448884500811bf1cd1eba89e7a4193a76c4d6b (patch)
tree2c9117f3e91128c3f08639283281c1898e01b063 /include/cru/common/Base.hpp
parent9c32e6d705b23cf0f5d7c0909271640401f9785f (diff)
downloadcru-d2448884500811bf1cd1eba89e7a4193a76c4d6b.tar.gz
cru-d2448884500811bf1cd1eba89e7a4193a76c4d6b.tar.bz2
cru-d2448884500811bf1cd1eba89e7a4193a76c4d6b.zip
...
Diffstat (limited to 'include/cru/common/Base.hpp')
-rw-r--r--include/cru/common/Base.hpp33
1 files changed, 30 insertions, 3 deletions
diff --git a/include/cru/common/Base.hpp b/include/cru/common/Base.hpp
index 560f83bb..93b0008c 100644
--- a/include/cru/common/Base.hpp
+++ b/include/cru/common/Base.hpp
@@ -1,9 +1,19 @@
#pragma once
#include "PreConfig.hpp"
-#include <exception>
+#ifdef CRU_PLATFORM_WINDOWS
+#ifdef CRU_BASE_EXPORT_API
+#define CRU_BASE_API __declspec(dllexport)
+#else
+#define CRU_BASE_API __declspec(dllimport)
+#endif
+#else
+#define CRU_BASE_API
+#endif
+
#include <gsl/gsl>
#include <stdexcept>
+#include <string>
#define CRU_UNUSED(entity) static_cast<void>(entity);
@@ -27,7 +37,7 @@
classname& operator=(classname&&) = delete;
namespace cru {
-class Object {
+class CRU_BASE_API Object {
public:
Object() = default;
CRU_DEFAULT_COPY(Object)
@@ -35,7 +45,7 @@ class Object {
virtual ~Object() = default;
};
-struct Interface {
+struct CRU_BASE_API Interface {
Interface() = default;
CRU_DELETE_COPY(Interface)
CRU_DELETE_MOVE(Interface)
@@ -56,4 +66,21 @@ inline void hash_combine(std::size_t& s, const T& v) {
#define CRU_DEFINE_CLASS_LOG_TAG(tag) \
private: \
constexpr static std::u16string_view log_tag = tag;
+
+class CRU_BASE_API Exception {
+ public:
+ Exception() = default;
+ Exception(std::u16string message) : message_(std::move(message)) {}
+
+ CRU_DEFAULT_COPY(Exception)
+ CRU_DEFAULT_MOVE(Exception)
+
+ virtual ~Exception() = default;
+
+ public:
+ std::u16string GetMessage() const { return message_; }
+
+ private:
+ std::u16string message_;
+};
} // namespace cru