diff --git a/include/hyprutils/memory/SharedPtr.hpp b/include/hyprutils/memory/SharedPtr.hpp index 8cc8ee2..81ea705 100644 --- a/include/hyprutils/memory/SharedPtr.hpp +++ b/include/hyprutils/memory/SharedPtr.hpp @@ -20,7 +20,7 @@ namespace Hyprutils { namespace CSharedPointer_ { class impl_base { public: - virtual ~impl_base(){}; + virtual ~impl_base() {}; virtual void inc() noexcept = 0; virtual void dec() noexcept = 0; @@ -31,6 +31,7 @@ namespace Hyprutils { virtual void destroy() noexcept = 0; virtual bool destroying() noexcept = 0; virtual bool dataNonNull() noexcept = 0; + virtual void* getData() noexcept = 0; }; template @@ -107,6 +108,10 @@ namespace Hyprutils { } virtual bool dataNonNull() noexcept { + return _data != nullptr; + } + + virtual void* getData() noexcept { return _data; } @@ -213,11 +218,11 @@ namespace Hyprutils { } bool operator()(const CSharedPointer& lhs, const CSharedPointer& rhs) const { - return (uintptr_t)lhs.impl_ < (uintptr_t)rhs.impl_; + return reinterpret_cast(lhs.impl_) < reinterpret_cast(rhs.impl_); } bool operator<(const CSharedPointer& rhs) const { - return (uintptr_t)impl_ < (uintptr_t)rhs.impl_; + return reinterpret_cast(impl_) < reinterpret_cast(rhs.impl_); } T* operator->() const { @@ -234,7 +239,7 @@ namespace Hyprutils { } T* get() const { - return (T*)(impl_ ? static_cast*>(impl_)->_data : nullptr); + return impl_ ? static_cast(impl_->getData()) : nullptr; } unsigned int strongRef() const { diff --git a/include/hyprutils/memory/WeakPtr.hpp b/include/hyprutils/memory/WeakPtr.hpp index 8c62fa4..cd0d4bd 100644 --- a/include/hyprutils/memory/WeakPtr.hpp +++ b/include/hyprutils/memory/WeakPtr.hpp @@ -80,7 +80,7 @@ namespace Hyprutils { /* create a weak ptr from a shared ptr with assignment */ template validHierarchy&> operator=(const CSharedPointer& rhs) { - if ((uintptr_t)impl_ == (uintptr_t)rhs.impl_) + if (reinterpret_cast(impl_) == reinterpret_cast(rhs.impl_)) return *this; decrementWeak(); @@ -139,15 +139,15 @@ namespace Hyprutils { } bool operator()(const CWeakPointer& lhs, const CWeakPointer& rhs) const { - return (uintptr_t)lhs.impl_ < (uintptr_t)rhs.impl_; + return reinterpret_cast(lhs.impl_) < reinterpret_cast(rhs.impl_); } bool operator<(const CWeakPointer& rhs) const { - return (uintptr_t)impl_ < (uintptr_t)rhs.impl_; + return reinterpret_cast(impl_) < reinterpret_cast(rhs.impl_); } T* get() const { - return (T*)(impl_ ? static_cast*>(impl_)->_data : nullptr); + return impl_ ? static_cast(impl_->getData()) : nullptr; } T* operator->() const {