93 ++
ptr->_refCount.refCount;
97 if (
ptr && --
ptr->_refCount.refCount == 0)
102 template<
class U>
friend class ref;
125 *
this = std::move(r);
148 T *saved_ptr = r.
ptr;
169 U *saved_ptr = r.
ptr;
188 if (
static_cast<void *
>(
this) ==
static_cast<void *
>(&r))
196 ptr = cast_or_null<T>(r.ptr);
214 explicit operator bool() const noexcept {
return !
isNull(); }
218 assert(!
isNull() && !rhs.
isNull() &&
"Invalid call to compare()");
219 return get()->compare(*rhs.
get());
259 :
public simplify_type<const ::klee::ref<T> > {};
Reference counter to be used as part of a ref-managed struct or class.
ReferenceCounter(const ReferenceCounter &)
unsigned refCount
Count how often the object has been referenced.
ReferenceCounter & operator=(ReferenceCounter &&other) noexcept=delete
ReferenceCounter(ReferenceCounter &&r) noexcept=delete
ReferenceCounter & operator=(const ReferenceCounter &a)
ReferenceCounter()=default
~ReferenceCounter()=default
int compare(const ref &rhs) const
bool operator==(const ref &rhs) const
ref< T > & operator=(ref< T > &&r) noexcept
ref(ref< U > &&r) noexcept
ref(ref< T > &&r) noexcept
bool operator!=(const ref &rhs) const
bool operator<(const ref &rhs) const
ref< T > & operator=(const ref< T > &r)
ref< T > & operator=(ref< U > &&r) noexcept
llvm::raw_ostream & operator<<(llvm::raw_ostream &os, const MemoryMap &mm)
static SimpleType getSimplifiedValue(const ::klee::ref< T > &Ref)