diff options
author | crupest <crupest@outlook.com> | 2021-08-10 01:00:33 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2021-08-10 01:00:33 +0800 |
commit | d2448884500811bf1cd1eba89e7a4193a76c4d6b (patch) | |
tree | 2c9117f3e91128c3f08639283281c1898e01b063 /include/cru/common/Base.hpp | |
parent | 9c32e6d705b23cf0f5d7c0909271640401f9785f (diff) | |
download | cru-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.hpp | 33 |
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 |