17 #ifndef CPP_MATE_RESOURCE_HPP
18 #define CPP_MATE_RESOURCE_HPP
37 using Release = std::function<void(
const T& resource)>;
53 _resource(std::move(other._resource)),
54 _release(std::move(other._release))
67 T
get() const noexcept {
return _resource; }
73 void set(
const T& resource) noexcept { _resource = resource; }
81 _resource = std::move(other._resource);
82 _release = std::move(other._release);
89 operator T() const noexcept {
return get(); }
94 operator bool() const noexcept {
return static_cast<bool>(
get()); }
Represents some abstract resource which should be released.
Definition: Resource.hpp:29
void set(const T &resource) noexcept
Sets a new resource without releasing a previous one.
Definition: Resource.hpp:73
Resource & operator=(const Resource &)=delete
Resource(const Resource &)=delete
T get() const noexcept
Gets resource.
Definition: Resource.hpp:67
T operator*() const noexcept
Operator to access the resource via asterisk symbol.
Definition: Resource.hpp:100
Resource & operator=(Resource &&other) noexcept
operator =
Definition: Resource.hpp:80
~Resource()
Definition: Resource.hpp:61
Resource(const T &resource, const Release &release) noexcept
Constructor.
Definition: Resource.hpp:44
Resource(Resource &&other) noexcept
Constructor.
Definition: Resource.hpp:52
std::function< void(const T &resource)> Release
Definition: Resource.hpp:37
Resource & operator=(const T &resource) noexcept
operator =
Definition: Resource.hpp:107
Definition: BinaryData.hpp:28