Adds helper functions for ScopedPtr
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2021-08-29 16:23:04 +02:00
parent b58b8537b5
commit 54c5422cda
3 changed files with 23 additions and 5 deletions

View File

@@ -43,15 +43,14 @@ namespace ArbUt {
/// @brief Return whether the pointer is null or not.
[[nodiscard]] inline bool HasValue() const noexcept { return _raw != nullptr; }
/// @brief Get the raw underlying pointer.
inline T* GetValue() const noexcept { return _raw; }
/// @brief Get the raw underlying pointer.
/// @brief Get the raw underlying pointer, and take ownership of it. This removes the existing pointer in here.
inline T* TakeOwnership() noexcept {
auto raw = _raw;
_raw = nullptr;
return raw;
}
/// @brief Get the raw underlying pointer, without taking ownership of it.
inline T* GetValue() noexcept { return _raw; }
/// @brief Check equality of two ScopedPtr objects
inline bool operator==(const OptionalScopedPtr& rhs) const noexcept { return _raw == rhs._raw; }
@@ -61,6 +60,8 @@ namespace ArbUt {
inline bool operator!=(const OptionalScopedPtr& rhs) const noexcept { return _raw != rhs._raw; }
/// @brief Check equality of pointers
inline bool operator!=(T* rhs) const noexcept { return _raw != rhs; }
/// @brief Implicit cast to retrieve optional borrowed pointer.
inline operator OptionalBorrowedPtr<T>() const noexcept { return _raw; }
};
}

View File

@@ -48,12 +48,14 @@ namespace ArbUt {
/// @brief Operator for access into underlying pointer.
inline T* operator->() const noexcept { return _raw; }
/// @brief Get the raw underlying pointer.
/// @brief Get the raw underlying pointer, and take ownership of it. This removes the existing pointer in here.
inline T* TakeOwnership() noexcept {
auto raw = _raw;
_raw = nullptr;
return raw;
}
/// @brief Get the raw underlying pointer, without taking ownership of it.
inline T* GetValue() noexcept { return _raw; }
/// @brief Delete comparison with nullptr, ScopedPtr can't be null
inline bool operator==(std::nullptr_t) const = delete;
@@ -68,6 +70,10 @@ namespace ArbUt {
/// @brief Implicit cast to retrieve raw pointer.
inline operator T*() const noexcept { return _raw; }
/// @brief Implicit cast to retrieve borrowed ptr.
inline operator BorrowedPtr<T>() const noexcept { return _raw; }
/// @brief Implicit cast to retrieve optional borrowed pointer.
inline operator OptionalBorrowedPtr<T>() const noexcept { return _raw; }
};
}