11 #ifndef __UI_XPTR_H_INCLUDED__
12 #define __UI_XPTR_H_INCLUDED__
54 operator=(
UI_XPtr<U> &&other) noexcept;
60 UI_XPtr &operator=(std::nullptr_t) noexcept
70 explicit operator bool() const noexcept {
return myPtr !=
nullptr; }
72 explicit operator bool() noexcept {
return myPtr !=
nullptr; }
77 {
return myPtr == other.myPtr; }
81 {
return !(*
this == other); }
90 T *
get()
const noexcept {
return myPtr; }
95 T *
release() noexcept { myIsOwner =
false;
return myPtr; }
100 void reset() noexcept;
114 bool isOwner() const noexcept {
return myIsOwner; }
121 UI_Look*
ptr = myPtr;
125 bool owner = myIsOwner;
126 myIsOwner =
b.myIsOwner;
138 bool myIsOwner =
false;
142 template <
typename T,
class... Args>
144 UImakeLook(Args&&...
args)
154 template <
typename T>
160 if constexpr (SYS_IsSame_v<T, UI_Look>)
167 template <
typename T>
175 template <
typename T>
176 template <
typename U>
181 myIsOwner = other.isOwner();
182 myPtr = other.release();
185 template <
typename T>
186 template <
typename U>
200 UT_ASSERT((!myIsOwner && !other.isOwner()) || myPtr != other.get());
203 if (myIsOwner && myPtr != other.get())
207 myIsOwner = other.isOwner();
208 myPtr = other.release();
213 template <
typename T>
224 template <
typename T>
235 #endif // __UI_XPTR_H_INCLUDED__
SYS_FORCE_INLINE UI_XPtr & operator=(UI_XPtr< U > &&other) noexcept
SYS_FORCE_INLINE void swap(ThisType &b) noexcept
GLboolean GLboolean GLboolean GLboolean a
GUI_SceneLook ElementType
GUI_SceneLook * PointerType
SYS_FORCE_INLINE friend void swap(ThisType &a, ThisType &b) noexcept
SYS_FORCE_INLINE UI_XPtr() noexcept=default
SYS_FORCE_INLINE bool operator==(const ThisType &other) const noexcept
SYS_FORCE_INLINE bool isOwner() const noexcept
Determine if this is an owning pointer.
#define SYS_NO_DISCARD_RESULT
SYS_FORCE_INLINE void reset() noexcept
GLboolean GLboolean GLboolean b
SYS_FORCE_INLINE T * operator->() const noexcept
SYS_FORCE_INLINE ~UI_XPtr()
SYS_FORCE_INLINE T * release() noexcept
SYS_FORCE_INLINE bool operator!=(const ThisType &other) const noexcept
**If you just want to fire and args
SYS_FORCE_INLINE T & operator*() const noexcept