diff --git a/src/Memory/NonNullOwnPtr.hpp b/src/Memory/NonNullOwnPtr.hpp index d62bc2e..2e9bf6c 100644 --- a/src/Memory/NonNullOwnPtr.hpp +++ b/src/Memory/NonNullOwnPtr.hpp @@ -3,14 +3,14 @@ #include "../Assert.hpp" #include "NonNullBorrowedPtr.hpp" -#include "OwnPtr.hpp" +#include "BorrowedPtr.hpp" namespace Arbutils::Memory { template class NonNullOwnPtr { T* _ptr; public: - inline NonNullOwnPtr() {}; + inline NonNullOwnPtr(){}; inline NonNullOwnPtr(T* ptr) : _ptr(ptr) { AssertNotNull(ptr); }; NonNullOwnPtr(const NonNullOwnPtr&) = delete; @@ -21,10 +21,9 @@ namespace Arbutils::Memory { inline constexpr const T* GetUnsafe() const noexcept { return _ptr; } inline NonNullBorrowedPtr Borrow() { return NonNullBorrowedPtr(_ptr); } - - inline const NonNullBorrowedPtr Borrow() const{ - return NonNullBorrowedPtr(_ptr); - } + inline const NonNullBorrowedPtr Borrow() const { return NonNullBorrowedPtr(_ptr); } + inline BorrowedPtr BorrowOptional() { return BorrowedPtr(_ptr); } + inline const BorrowedPtr BorrowOptional() const { return BorrowedPtr(_ptr); } T* operator->() noexcept { return _ptr; } const T* operator->() const noexcept { return _ptr; } diff --git a/src/Memory/OwnPtr.hpp b/src/Memory/OwnPtr.hpp index 93594ac..4d6994a 100644 --- a/src/Memory/OwnPtr.hpp +++ b/src/Memory/OwnPtr.hpp @@ -3,6 +3,7 @@ #include #include "BorrowedPtr.hpp" +#include "NonNullBorrowedPtr.hpp" namespace Arbutils::Memory { template class OwnPtr { @@ -22,6 +23,8 @@ namespace Arbutils::Memory { inline BorrowedPtr Borrow() { return BorrowedPtr(_ptr); } inline const BorrowedPtr Borrow() const { return BorrowedPtr(_ptr); } + inline BorrowedPtr BorrowNonNull() { return NonNullBorrowedPtr(_ptr); } + inline const BorrowedPtr BorrowNonNull() const { return NonNullBorrowedPtr(_ptr); } T* operator->() noexcept { return _ptr; } const T* operator->() const noexcept { return _ptr; }