C++ Essence Library 0.1.0
A Utility Library for Modern C++ Programming
Loading...
Searching...
No Matches
essence::basic_managed_handle< Shared, Deleter, T, Mapped, Validator > Class Template Reference

Manages a platform-dependent handle. More...

#include <managed_handle.hpp>

Public Types

using native_type = basic_native_handle<T, Mapped, Validator>
 
using value_type = std::conditional_t<Shared, std::shared_ptr<void>, std::unique_ptr<void, void (*)(void*)>>
 

Public Member Functions

 basic_managed_handle (std::nullptr_t=nullptr) noexcept
 
template<typename U >
requires std::is_pointer_v<U>
 basic_managed_handle (U value)
 Constructs the object from a pointer.
 
 basic_managed_handle (Mapped value)
 Constructs the object from a mapped number.
 
 basic_managed_handle (const basic_managed_handle &)=default
 
 basic_managed_handle (basic_managed_handle &&) noexcept=default
 
basic_managed_handleoperator= (const basic_managed_handle &)=default
 
basic_managed_handleoperator= (basic_managed_handle &&) noexcept=default
 
 operator bool () const noexcept
 Checks whether the stored value is a valid handle.
 
native_type get () const noexcept
 Gets the stored handle.
 
void reset () noexcept
 Deletes the handle and resets the value.
 
template<typename U >
requires std::is_pointer_v<U>
void reset (U value) noexcept
 Resets the object with a pointer.
 
void reset (Mapped value) noexcept
 Resets the object with a mapped number.
 
void swap (basic_managed_handle &other) noexcept
 Swaps the handle value with another one.
 

Detailed Description

template<bool Shared, auto Deleter, handle_stroage_type T = std::uintptr_t, typename Mapped = T, auto Validator = &is_valid_handle_value<Mapped>>
requires (handle_deleter_type<decltype(Deleter)> && handle_validator_type<Validator, Mapped>)
class essence::basic_managed_handle< Shared, Deleter, T, Mapped, Validator >

Manages a platform-dependent handle.

Template Parameters
MappedThe integral type to map the T value to (default T).
Sharedtrue to use std::shared_ptr; otherwise std::unique_ptr.
TThe underlying storage type.
DeleterA callable object to delete the handle.
ValidatorA callable object to validate the handle.

Constructor & Destructor Documentation

◆ basic_managed_handle() [1/2]

template<bool Shared, auto Deleter, handle_stroage_type T = std::uintptr_t, typename Mapped = T, auto Validator = &is_valid_handle_value<Mapped>>
template<typename U >
requires std::is_pointer_v<U>
essence::basic_managed_handle< Shared, Deleter, T, Mapped, Validator >::basic_managed_handle ( U value)
inlineexplicit

Constructs the object from a pointer.

Template Parameters
UThe pointer type.
Parameters
valueThe pointer value.

◆ basic_managed_handle() [2/2]

template<bool Shared, auto Deleter, handle_stroage_type T = std::uintptr_t, typename Mapped = T, auto Validator = &is_valid_handle_value<Mapped>>
essence::basic_managed_handle< Shared, Deleter, T, Mapped, Validator >::basic_managed_handle ( Mapped value)
inlineexplicit

Constructs the object from a mapped number.

Parameters
valueThe mapped number.

Member Function Documentation

◆ get()

template<bool Shared, auto Deleter, handle_stroage_type T = std::uintptr_t, typename Mapped = T, auto Validator = &is_valid_handle_value<Mapped>>
native_type essence::basic_managed_handle< Shared, Deleter, T, Mapped, Validator >::get ( ) const
inlinenoexcept

Gets the stored handle.

Returns
The stored handle.

◆ operator bool()

template<bool Shared, auto Deleter, handle_stroage_type T = std::uintptr_t, typename Mapped = T, auto Validator = &is_valid_handle_value<Mapped>>
essence::basic_managed_handle< Shared, Deleter, T, Mapped, Validator >::operator bool ( ) const
inlineexplicitnoexcept

Checks whether the stored value is a valid handle.

Remarks
Assumes zero or negative one is invalid by default.

◆ reset() [1/2]

template<bool Shared, auto Deleter, handle_stroage_type T = std::uintptr_t, typename Mapped = T, auto Validator = &is_valid_handle_value<Mapped>>
void essence::basic_managed_handle< Shared, Deleter, T, Mapped, Validator >::reset ( Mapped value)
inlinenoexcept

Resets the object with a mapped number.

Parameters
valueThe mapped number.

◆ reset() [2/2]

template<bool Shared, auto Deleter, handle_stroage_type T = std::uintptr_t, typename Mapped = T, auto Validator = &is_valid_handle_value<Mapped>>
template<typename U >
requires std::is_pointer_v<U>
void essence::basic_managed_handle< Shared, Deleter, T, Mapped, Validator >::reset ( U value)
inlinenoexcept

Resets the object with a pointer.

Template Parameters
UThe pointer type.
Parameters
valueThe pointer value.

◆ swap()

template<bool Shared, auto Deleter, handle_stroage_type T = std::uintptr_t, typename Mapped = T, auto Validator = &is_valid_handle_value<Mapped>>
void essence::basic_managed_handle< Shared, Deleter, T, Mapped, Validator >::swap ( basic_managed_handle< Shared, Deleter, T, Mapped, Validator > & other)
inlinenoexcept

Swaps the handle value with another one.

Parameters
otherThe other object.

The documentation for this class was generated from the following file: