diff options
author | Claudius "keldu" Holeksa <mail@keldu.de> | 2023-12-04 12:20:01 +0100 |
---|---|---|
committer | Claudius "keldu" Holeksa <mail@keldu.de> | 2023-12-04 12:20:01 +0100 |
commit | fb7ed24d557c9f9ac5eaa60dbf22cba509953c1a (patch) | |
tree | fd9da3393972d07bef6aafaaafe7e3c7b27184e0 /modules/core/common.h | |
parent | a14896f9ed209dd3f9597722e5a5697bd7dbf531 (diff) |
core: Moving structure around
Diffstat (limited to 'modules/core/common.h')
-rw-r--r-- | modules/core/common.h | 75 |
1 files changed, 0 insertions, 75 deletions
diff --git a/modules/core/common.h b/modules/core/common.h deleted file mode 100644 index a06c238..0000000 --- a/modules/core/common.h +++ /dev/null @@ -1,75 +0,0 @@ -#pragma once - -#include <cstdint> -#include <memory> -#include <optional> -#include <utility> - -namespace saw { - -#define SAW_CONCAT_(x, y) x##y -#define SAW_CONCAT(x, y) SAW_CONCAT_(x, y) -#define SAW_UNIQUE_NAME(prefix) SAW_CONCAT(prefix, __LINE__) - -#define SAW_FORBID_COPY(classname) \ - classname(const classname &) = delete; \ - classname &operator=(const classname &) = delete - -#define SAW_FORBID_MOVE(classname) \ - classname(classname &&) = delete; \ - classname &operator=(classname &&) = delete - -#define SAW_DEFAULT_COPY(classname) \ - classname(const classname &) = default; \ - classname &operator=(const classname &) = default - -#define SAW_DEFAULT_MOVE(classname) \ - classname(classname &&) = default; \ - classname &operator=(classname &&) = default - -// In case of C++20 -#define SAW_ASSERT(expression) \ - assert(expression); \ - if (!(expression)) [[unlikely]] - -template <typename T> using maybe = std::optional<T>; - -template <typename T> using own = std::unique_ptr<T>; - -template <typename T> using our = std::shared_ptr<T>; - -template <typename T> using lent = std::weak_ptr<T>; - -template <typename T, class... Args> own<T> heap(Args &&...args) { - return own<T>(new T(std::forward<Args>(args)...)); -} - -template <typename T, class... Args> our<T> share(Args &&...args) { - return std::make_shared<T>(std::forward<Args>(args)...); -} - -template <typename T> T instance() noexcept; - -template <typename Func, typename T> struct return_type_helper { - typedef decltype(instance<Func>()(instance<T>())) Type; -}; -template <typename Func> struct return_type_helper<Func, void> { - typedef decltype(instance<Func>()()) Type; -}; - -template <typename Func, typename T> -using return_type = typename return_type_helper<Func, T>::Type; - -struct void_t {}; - -template <typename T> struct void_fix { typedef T Type; }; -template <> struct void_fix<void> { typedef void_t Type; }; -template <typename T> using fix_void = typename void_fix<T>::Type; - -template <typename T> struct void_unfix { typedef T Type; }; -template <> struct void_unfix<void_t> { typedef void Type; }; -template <typename T> using unfix_void = typename void_unfix<T>::Type; - -template <typename... T> constexpr bool always_false = false; - -} // namespace saw |