25#ifndef FBCPP_SMART_PTRS_H
26#define FBCPP_SMART_PTRS_H
39 struct FbDisposeDeleter final
41 void operator()(fb::IDisposable* obj)
noexcept
53 using FbUniquePtr = std::unique_ptr<T, impl::FbDisposeDeleter>;
80 FbRef(std::nullptr_t) noexcept
85 explicit FbRef(T* p) noexcept
91 explicit FbRef(Y* p) noexcept
102 template <
typename Y>
121 void reset(T* p =
nullptr)
noexcept
132 template <
typename Y>
144 assign(
nullptr,
false);
153 T* operator->()
noexcept
158 const T* operator->()
const noexcept
163 explicit operator bool()
const noexcept
165 return ptr !=
nullptr;
168 bool operator!()
const noexcept
170 return ptr ==
nullptr;
173 bool operator==(
const FbRef& other)
const noexcept
175 return ptr == other.ptr;
178 bool operator==(
const T* other)
const noexcept
183 bool operator!=(
const FbRef& other)
const noexcept
185 return ptr != other.ptr;
188 bool operator!=(
const T* other)
const noexcept
198 const T* get()
const noexcept
204 T* assign(T*
const p,
bool addRef)
noexcept
228 template <
typename T>
Reference-counted smart pointer for Firebird objects using addRef/release semantics.
FbRef< T > fbRef(T *arg) noexcept
Creates a reference-counted smart pointer for a Firebird object.
FbUniquePtr< T > fbUnique(T *obj) noexcept
Creates a unique pointer for a Firebird disposable object.
std::unique_ptr< T, impl::FbDisposeDeleter > FbUniquePtr
Unique pointer type for Firebird disposable objects.