Go to the documentation of this file. 1 #ifndef UTILS_RESOURCEGUARD_H
2 #define UTILS_RESOURCEGUARD_H
61 class FlagType = bool,
62 FlagType InvalidVal = std::is_lvalue_reference<T>::value,
63 class =
typename std::enable_if<
65 !std::is_same<FlagType, bool>::value &&
67 (std::is_same<FlagType, bool>::value ||
68 std::is_same<FlagType, T>::value) &&
70 std::is_trivially_default_constructible<Relinquish>::value
79 if (m_val != InvalidVal)
90 other.m_val = InvalidVal;
94 if (m_val != InvalidVal) {
98 other.m_val = InvalidVal;
111 operator bool()
const {
112 return m_val != InvalidVal;
117 return m_val != InvalidVal;
125 if (m_val != InvalidVal) {
161 template<
class T,
class Relinquish>
167 m_val(val), m_isvalid(true) {}
181 m_isvalid(other.m_isvalid) {
183 other.m_isvalid =
false;
191 m_isvalid = other.m_isvalid;
193 other.m_isvalid =
false;
206 operator bool()
const {
253 template<
class T,
class Relinquish>
282 operator bool()
const {
307 #endif // UTILS_RESOURCEGUARD_H
constexpr bool operator!=(T rhs) const
Definition: ResourceGuard.h:238
bool m_isvalid
Definition: ResourceGuard.h:245
bool IsValid() const
Definition: ResourceGuard.h:116
ResourceGuard()
Definition: ResourceGuard.h:164
ResourceGuard(T val)
Definition: ResourceGuard.h:258
T Release()
Releases the underlying resource without relinquishing it and returns it to the caller.
Definition: ResourceGuard.h:137
~ResourceGuard()
Definition: ResourceGuard.h:261
~ResourceGuard()
Definition: ResourceGuard.h:169
void Reset()
Definition: ResourceGuard.h:216
ResourceGuard(T val)
Definition: ResourceGuard.h:166
ResourceGuard(ResourceGuard &&other)
Definition: ResourceGuard.h:179
constexpr bool operator==(T rhs) const
Definition: ResourceGuard.h:292
ResourceGuard(ResourceGuard &&other)
Definition: ResourceGuard.h:88
Specialization of ResourceGuard where we have an always-valid value (e.g., lvalue-ref).
Definition: ResourceGuard.h:254
constexpr bool operator!=(T rhs) const
Definition: ResourceGuard.h:149
T Release()
Definition: ResourceGuard.h:225
ResourceGuard()
Definition: ResourceGuard.h:74
T Get() const
Definition: ResourceGuard.h:202
T m_val
Definition: ResourceGuard.h:244
T Get() const
Definition: ResourceGuard.h:278
constexpr bool operator==(T rhs) const
Definition: ResourceGuard.h:144
bool IsValid() const
Definition: ResourceGuard.h:211
ResourceGuard & operator=(ResourceGuard &&other)
Definition: ResourceGuard.h:93
constexpr bool operator!=(T rhs) const
Definition: ResourceGuard.h:297
ResourceGuard is used for automatically relinquishes some resource when it goes out of scope.
Definition: ResourceGuard.h:72
Specialization of ResourceGuard when we use an additional boolean flag to denote the invalid value.
Definition: ResourceGuard.h:162
ResourceGuard(T val)
Definition: ResourceGuard.h:76
~ResourceGuard()
Definition: ResourceGuard.h:78
T Get() const
Definition: ResourceGuard.h:107
constexpr bool operator==(T rhs) const
Definition: ResourceGuard.h:233
bool IsValid() const
Definition: ResourceGuard.h:287
ResourceGuard & operator=(ResourceGuard &&other)
Definition: ResourceGuard.h:186
T m_val
Definition: ResourceGuard.h:302
T m_val
Definition: ResourceGuard.h:154
void Reset()
Relinquishes the underlying resource and sets its to an invalid value.
Definition: ResourceGuard.h:124