summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLioncash <mathew1800@gmail.com>2021-01-11 23:59:02 +0100
committerLioncash <mathew1800@gmail.com>2021-01-12 00:26:04 +0100
commit703c57a119d5ae48eb0d463b0f6d3f607931b300 (patch)
tree00a028d13aa7cdbe60c9c7145b7fdadb2a8765d2
parentMerge pull request #5266 from bunnei/kernel-synch (diff)
downloadyuzu-703c57a119d5ae48eb0d463b0f6d3f607931b300.tar
yuzu-703c57a119d5ae48eb0d463b0f6d3f607931b300.tar.gz
yuzu-703c57a119d5ae48eb0d463b0f6d3f607931b300.tar.bz2
yuzu-703c57a119d5ae48eb0d463b0f6d3f607931b300.tar.lz
yuzu-703c57a119d5ae48eb0d463b0f6d3f607931b300.tar.xz
yuzu-703c57a119d5ae48eb0d463b0f6d3f607931b300.tar.zst
yuzu-703c57a119d5ae48eb0d463b0f6d3f607931b300.zip
-rw-r--r--src/common/intrusive_red_black_tree.h4
-rw-r--r--src/common/parent_of_member.h14
2 files changed, 10 insertions, 8 deletions
diff --git a/src/common/intrusive_red_black_tree.h b/src/common/intrusive_red_black_tree.h
index 929b5497e..fb55de94e 100644
--- a/src/common/intrusive_red_black_tree.h
+++ b/src/common/intrusive_red_black_tree.h
@@ -533,7 +533,7 @@ private:
}
private:
- static constexpr TYPED_STORAGE(Derived) DerivedStorage = {};
+ static constexpr TypedStorage<Derived> DerivedStorage = {};
static_assert(GetParent(GetNode(GetPointer(DerivedStorage))) == GetPointer(DerivedStorage));
};
@@ -549,7 +549,7 @@ public:
using TreeTypeImpl = impl::IntrusiveRedBlackTreeImpl;
static constexpr bool IsValid() {
- TYPED_STORAGE(Derived) DerivedStorage = {};
+ TypedStorage<Derived> DerivedStorage = {};
return GetParent(GetNode(GetPointer(DerivedStorage))) == GetPointer(DerivedStorage);
}
diff --git a/src/common/parent_of_member.h b/src/common/parent_of_member.h
index 1af31ee44..d9a14529d 100644
--- a/src/common/parent_of_member.h
+++ b/src/common/parent_of_member.h
@@ -10,21 +10,23 @@
#include "common/common_types.h"
namespace Common {
-
+namespace detail {
template <typename T, size_t Size, size_t Align>
-struct TypedStorage {
+struct TypedStorageImpl {
std::aligned_storage_t<Size, Align> storage_;
};
+} // namespace detail
-#define TYPED_STORAGE(...) TypedStorage<__VA_ARGS__, sizeof(__VA_ARGS__), alignof(__VA_ARGS__)>
+template <typename T>
+using TypedStorage = detail::TypedStorageImpl<T, sizeof(T), alignof(T)>;
template <typename T>
-static constexpr T* GetPointer(TYPED_STORAGE(T) & ts) {
+static constexpr T* GetPointer(TypedStorage<T>& ts) {
return static_cast<T*>(static_cast<void*>(std::addressof(ts.storage_)));
}
template <typename T>
-static constexpr const T* GetPointer(const TYPED_STORAGE(T) & ts) {
+static constexpr const T* GetPointer(const TypedStorage<T>& ts) {
return static_cast<const T*>(static_cast<const void*>(std::addressof(ts.storage_)));
}
@@ -72,7 +74,7 @@ struct OffsetOfCalculator {
union Union {
char c{};
UnionHolder first_union;
- TYPED_STORAGE(ParentType) parent;
+ TypedStorage<ParentType> parent;
constexpr Union() : c() {}
};