HandleRef#
Fully qualified name: carb::extras::HandleRef
Defined in carb/extras/HandleDatabase.h
- 
template<class Mapped, class Handle, class Allocator = std::allocator<Mapped>, size_t IndexBits = 32, size_t LifecycleBits = 32>
struct HandleRef : public carb::extras::ConstHandleRef<Mapped, Handle, std::allocator<Mapped>, 32, 32># 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, IndexBits, LifecycleBits>#
 Base type used for this container.
- 
using Database = HandleDatabase<Mapped, Handle, Allocator, IndexBits, LifecycleBits>#
 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
- 
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
*thisis empty.
- 
inline PointerType operator->() noexcept#
 Dereferences and returns a pointer to the mapped type.
Warning
Undefined behavior if
*thisis 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
*thisis 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
*thisis 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
*thisis empty.- Returns:
 A const reference to the mapped type.
- 
inline PointerType get() noexcept#
 Returns a pointer to the mapped type, or
nullptrif empty.- Returns:
 A pointer to the mapped type or
nullptrif empty.
- 
inline PointerType get() const noexcept#
 Returns a const pointer to the mapped type, or
nullptrif empty.- Returns:
 A const pointer to the mapped type or
nullptrif 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
*thiscontains a valid reference.- Returns:
 trueif*thismaintains a valid reference;falseif*thisis empty.
- 
inline void reset()#
 Releases any associated reference and resets
*thisto empty.
- 
inline Mapped *release() noexcept#
 Releases the ownership of the managed object, if any.
The caller becomes responsible for ownership of the returned object and must release it from the handle database.
- Returns:
 The managed object or
nullptrif there was no managed object.
- 
inline void swap(ConstHandleRef &rhs)#
 Swaps state with another HandleRef.
- 
using BaseType = ConstHandleRef<Mapped, Handle, Allocator, IndexBits, LifecycleBits>#