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>;
79 FbRef(std::nullptr_t) noexcept
84 explicit FbRef(T* p) noexcept
90 explicit FbRef(Y* p) noexcept
101 template <
typename Y>
120 void reset(T* p =
nullptr)
noexcept
143 template <
typename Y>
144 FbRef& operator=(FbRef<Y>& r)
noexcept
150 FbRef& operator=(FbRef&& r)
noexcept
155 assign(
nullptr,
false);
164 T* operator->() noexcept
169 const T* operator->() const noexcept
174 explicit operator bool() const noexcept
176 return ptr !=
nullptr;
179 bool operator!() const noexcept
181 return ptr ==
nullptr;
184 bool operator==(
const FbRef& other)
const noexcept
186 return ptr == other.ptr;
189 bool operator==(
const T* other)
const noexcept
194 bool operator!=(
const FbRef& other)
const noexcept
196 return ptr != other.ptr;
199 bool operator!=(
const T* other)
const noexcept
209 const T* get() const noexcept
215 T* assign(T*
const p,
bool addRef)
noexcept
239 template <
typename T>
Reference-counted smart pointer for Firebird objects using addRef/release semantics.
T * release() noexcept
Relinquishes ownership of the pointer without releasing it and returns it.
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.