carb::extras::HandleRef
Defined in carb/extras/HandleDatabase.h
-
template<class Mapped, class Handle, class Allocator = std::allocator<Mapped>>
struct HandleRef : public carb::extras::ConstHandleRef<Mapped, Handle, std::allocator<Mapped>> A smart-reference class for a Handle associated with a HandleDatabase.
When HandleRef is destroyed, the associated handle is released with the HandleDatabase.
Public Types
-
using BaseType = ConstHandleRef<Mapped, Handle, Allocator>
Base type used for this container.
-
using Database = HandleDatabase<Mapped, Handle, Allocator>
The type specification for the associated HandleDatabase.
-
using element_type = MappedType
Deprecated: Use MappedType instead.
-
using handle_type = HandleType
Deprecated: Use HandleType instead.
Public Functions
-
HandleRef() = default
Default constructor.
Produces an empty HandleRef.
-
inline HandleRef(Database &database, Handle handle) noexcept
Attempts to atomically reference a Handle from the given
database
.- Parameters
database – The HandleDatabase containing
handle
.handle – The handle previously returned from HandleDatabase::createHandle(). Providing an invalid or previously-valid handle results in an empty HandleRef.
-
inline HandleRef clone() const noexcept
Explicitly adds a reference to any referenced handle and returns a HandleRef.
- Returns
A HandleRef holding its own reference for the contained handle. May be empty if
*this
is empty.
-
inline PointerType operator->() noexcept
Dereferences and returns a pointer to the mapped type.
Warning
Undefined behavior if
*this
is empty.- Returns
A pointer to the mapped type.
-
inline PointerType operator->() const noexcept
Dereferences and returns a const pointer to the mapped type.
Warning
Undefined behavior if
*this
is empty.- Returns
A const pointer to the mapped type.
-
inline ReferenceType operator*() noexcept
Dereferences and returns a reference to the mapped type.
Warning
Undefined behavior if
*this
is empty.- Returns
A reference to the mapped type.
-
inline ReferenceType operator*() const noexcept
Dereferences and returns a const reference to the mapped type.
Warning
Undefined behavior if
*this
is empty.- Returns
A const reference to the mapped type.
-
inline PointerType get() noexcept
Returns a pointer to the mapped type, or
nullptr
if empty.- Returns
A pointer to the mapped type or
nullptr
if empty.
-
inline PointerType get() const noexcept
Returns a const pointer to the mapped type, or
nullptr
if empty.- Returns
A const pointer to the mapped type or
nullptr
if empty.
-
inline Handle handle() const noexcept
Returns the Handle referenced by
*this
.- Returns
The Handle referenced by
*this
.
-
inline explicit operator bool() const noexcept
Tests if
*this
contains a valid reference.- Returns
true
if*this
maintains a valid reference;false
if*this
is empty.
-
inline void reset()
Releases any associated reference and resets
*this
to empty.
-
inline void swap(ConstHandleRef &rhs)
Swaps state with another HandleRef.
-
using BaseType = ConstHandleRef<Mapped, Handle, Allocator>