AK: Move adopt_nonnull_ref_or_enomem() to NonnullRefPtr.h

Rewrite the implementation to not depend on OwnPtr.h.

No intended behavior change.
This commit is contained in:
Nico Weber 2023-02-10 19:47:07 -05:00 committed by Andreas Kling
parent ca6090889a
commit ed198ee6ae
Notes: sideshowbarker 2024-07-17 07:20:57 +09:00
2 changed files with 10 additions and 10 deletions

View file

@ -226,6 +226,15 @@ inline NonnullRefPtr<T> adopt_ref(T& object)
return NonnullRefPtr<T>(NonnullRefPtr<T>::Adopt, object); return NonnullRefPtr<T>(NonnullRefPtr<T>::Adopt, object);
} }
// Use like `adopt_nonnull_own_or_enomem(new (nothrow) T(args...))`.
template<typename T>
inline ErrorOr<NonnullRefPtr<T>> adopt_nonnull_ref_or_enomem(T* object)
{
if (!object)
return Error::from_errno(ENOMEM);
return NonnullRefPtr<T>(NonnullRefPtr<T>::Adopt, *object);
}
template<Formattable T> template<Formattable T>
struct Formatter<NonnullRefPtr<T>> : Formatter<T> { struct Formatter<NonnullRefPtr<T>> : Formatter<T> {
ErrorOr<void> format(FormatBuilder& builder, NonnullRefPtr<T> const& value) ErrorOr<void> format(FormatBuilder& builder, NonnullRefPtr<T> const& value)
@ -274,6 +283,7 @@ struct Traits<NonnullRefPtr<T>> : public GenericTraits<NonnullRefPtr<T>> {
} }
#if USING_AK_GLOBALLY #if USING_AK_GLOBALLY
using AK::adopt_nonnull_ref_or_enomem;
using AK::adopt_ref; using AK::adopt_ref;
using AK::make_ref_counted; using AK::make_ref_counted;
using AK::NonnullRefPtr; using AK::NonnullRefPtr;

View file

@ -341,19 +341,9 @@ inline ErrorOr<NonnullRefPtr<T>> try_make_ref_counted(Args&&... args)
return adopt_nonnull_ref_or_enomem(new (nothrow) T { forward<Args>(args)... }); return adopt_nonnull_ref_or_enomem(new (nothrow) T { forward<Args>(args)... });
} }
template<typename T>
inline ErrorOr<NonnullRefPtr<T>> adopt_nonnull_ref_or_enomem(T* object)
{
auto result = adopt_ref_if_nonnull(object);
if (!result)
return Error::from_errno(ENOMEM);
return result.release_nonnull();
}
} }
#if USING_AK_GLOBALLY #if USING_AK_GLOBALLY
using AK::adopt_nonnull_ref_or_enomem;
using AK::adopt_ref_if_nonnull; using AK::adopt_ref_if_nonnull;
using AK::RefPtr; using AK::RefPtr;
using AK::static_ptr_cast; using AK::static_ptr_cast;