diff options
author | Claudius "keldu" Holeksa <mail@keldu.de> | 2023-07-20 17:02:05 +0200 |
---|---|---|
committer | Claudius "keldu" Holeksa <mail@keldu.de> | 2023-07-20 17:02:05 +0200 |
commit | fac9e8bec1983fa9dff8f447fef106e427dfec26 (patch) | |
tree | 2221d4216873fa8250dd5ff45f00d0d6b46eab26 /src/core/common.h | |
parent | 398164432abcf599eaa51ebc4088024b7f46b97f (diff) |
c++: Renamed src to c++
Diffstat (limited to 'src/core/common.h')
-rw-r--r-- | src/core/common.h | 75 |
1 files changed, 0 insertions, 75 deletions
diff --git a/src/core/common.h b/src/core/common.h deleted file mode 100644 index a06c238..0000000 --- a/src/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 |