13 #if __cplusplus<201103L 14 # error c++11 required 27 #define HAVE_SHOW_REFS 46 ptr_base(
const track_t& track) :track(track) {}
53 typedef std::set<const shared_ptr_base *>
ref_set_t;
54 void show_refs(std::ostream&,
bool self=
true,
bool weak=
false)
const;
55 void spy_refs(ref_set_t&)
const;
67 #ifndef EXCEPT_USE_NONE 68 :m_stack(), m_depth(0)
73 ,m_stack(), m_depth(0)
81 void track_new(
void* ptr);
88 #ifndef EXCEPT_USE_NONE 94 void show_stack(std::ostream&)
const;
106 template<
typename Store,
typename Actual>
118 typedef ::std::shared_ptr<T> real_type;
144 template<
typename A,
class ... Args>
176 void reset() noexcept { real.reset(); track_clear(); }
177 template<
typename A,
class ... Args>
180 real.reset(a, args...);
194 T*
get()
const noexcept {
return real.get(); }
197 long use_count() const noexcept {
return real.use_count(); }
198 bool unique() const noexcept {
return real.unique(); }
199 explicit operator bool() const noexcept {
return bool(real); }
203 bool operator<(const shared_ptr<T>& o)
const {
return real<o.real; }
210 template<
typename TO,
typename FROM>
213 template<
typename TO,
typename FROM>
216 template<
typename TO,
typename FROM>
219 template<
typename Store,
typename Actual>
226 template<
typename TO,
typename FROM>
231 template<
typename TO,
typename FROM>
236 template<
typename TO,
typename FROM>
243 typedef ::std::weak_ptr<T> real_type;
285 void reset() noexcept { track.reset(); real.reset(); }
287 long use_count() const noexcept {
return real.use_count(); }
288 bool unique() const noexcept {
return real.unique(); }
295 template<
typename Store,
typename Actual>
307 template<
typename Store,
typename Actual>
315 throw std::logic_error(
"epics::debug::enabled_shared_from_this fails");
316 self->xxInternalSelf = actual;
322 inline std::ostream& operator<<(std::ostream& strm, const epics::debug::shared_ptr<T>& ptr)
void swap(shared_ptr_base &o)
shared_ptr< TO > static_pointer_cast(const shared_ptr< FROM > &src)
shared_ptr_base(const track_t &track)
bool operator!=(const shared_ptr< T > &o) const
shared_ptr(std::unique_ptr< A > &&a)
void swap(shared_ptr &o) noexcept
pvd::StructureConstPtr type
shared_ptr< T > lock() const noexcept
TODO only here because of the Lockable.
real_type::element_type element_type
Mark external symbols and entry points for shared libraries.
shared_ptr & operator=(const shared_ptr &o)
void reset(A *a, Args...args)
void do_enable_shared_from_this(const shared_ptr< Store > &dest, enable_shared_from_this< Actual > *self)
shared_ptr(const shared_ptr &o)
bool unique() const noexcept
long use_count() const noexcept
shared_ptr(A *a, Args...args)
shared_ptr(const shared_ptr< A > &o)
bool owner_before(const shared_ptr< A > &o)
bool unique() const noexcept
shared_ptr< TO > dynamic_pointer_cast(const shared_ptr< FROM > &src)
bool owner_before(const weak_ptr< A > &o)
long use_count() const noexcept
std::set< const shared_ptr_base * > ref_set_t
weak_ptr(const weak_ptr< A > &o)
ptr_base(const track_t &track)
bool operator==(const shared_ptr< T > &o) const
weak_ptr & operator=(const shared_ptr< A > &o)
std::shared_ptr< tracker > track_t
shared_ptr(const weak_ptr< A > &o)
real_type::element_type element_type
shared_ptr< TO > const_pointer_cast(const shared_ptr< FROM > &src)
weak_ptr(const weak_ptr &o)
shared_ptr< Base > shared_from_this() const
shared_ptr & operator=(const shared_ptr< A > &o)
std::add_lvalue_reference< T >::type operator*() const noexcept
shared_ptr_base() noexcept
weak_ptr_base(const track_t &track)
weak_ptr & operator=(const weak_ptr &o)
T * operator->() const noexcept
weak_ptr(const shared_ptr< A > &o)