AK: Move adopt_nonnull_own_or_enomem() to NonnullOwnPtr.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:40:35 -05:00 committed by Andreas Kling
parent cf73e15dc1
commit ca6090889a
Notes: sideshowbarker 2024-07-17 08:35:21 +09:00
2 changed files with 10 additions and 10 deletions

View File

@ -161,6 +161,15 @@ inline NonnullOwnPtr<T> make(Args&&... args)
#endif
// Use like `adopt_nonnull_own_or_enomem(new (nothrow) T(args...))`.
template<typename T>
inline ErrorOr<NonnullOwnPtr<T>> adopt_nonnull_own_or_enomem(T* object)
{
if (!object)
return Error::from_errno(ENOMEM);
return NonnullOwnPtr<T>(NonnullOwnPtr<T>::Adopt, *object);
}
template<typename T>
struct Traits<NonnullOwnPtr<T>> : public GenericTraits<NonnullOwnPtr<T>> {
using PeekType = T*;
@ -190,5 +199,6 @@ struct Formatter<NonnullOwnPtr<T>> : Formatter<T const*> {
using AK::adopt_own;
using AK::make;
# endif
using AK::adopt_nonnull_own_or_enomem;
using AK::NonnullOwnPtr;
#endif

View File

@ -192,15 +192,6 @@ inline OwnPtr<T> adopt_own_if_nonnull(T* object)
return {};
}
template<typename T>
inline ErrorOr<NonnullOwnPtr<T>> adopt_nonnull_own_or_enomem(T* object)
{
auto result = adopt_own_if_nonnull(object);
if (!result)
return Error::from_errno(ENOMEM);
return result.release_nonnull();
}
template<typename T, class... Args>
requires(IsConstructible<T, Args...>) inline ErrorOr<NonnullOwnPtr<T>> try_make(Args&&... args)
{
@ -226,7 +217,6 @@ struct Traits<OwnPtr<T>> : public GenericTraits<OwnPtr<T>> {
}
#if USING_AK_GLOBALLY
using AK::adopt_nonnull_own_or_enomem;
using AK::adopt_own_if_nonnull;
using AK::OwnPtr;
using AK::try_make;