48#include <epicsVersion.h>
49#include <epicsAtomic.h>
51#define REFTRACE_INCREMENT(counter) ::epics::atomic::increment(counter)
52#define REFTRACE_DECREMENT(counter) ::epics::atomic::decrement(counter)
60void registerRefCounter(
const char *name,
const size_t* counter);
64void unregisterRefCounter(
const char *name,
const size_t* counter);
68size_t readRefCounter(
const char *name);
71class epicsShareClass RefSnapshot
78 Count() :current(0u), delta(0) {}
79 explicit Count(
size_t c,
long d) :current(c), delta(d) {}
81 {
return current==o.current && delta==o.delta; }
88 typedef cnt_map_t::const_iterator iterator;
89 typedef cnt_map_t::const_iterator const_iterator;
97 const Count&
operator[](
const std::string& name)
const;
99 iterator
begin()
const {
return counts.begin(); }
100 iterator
end()
const {
return counts.end(); }
101 size_t size()
const {
return counts.size(); }
103 inline void swap(RefSnapshot& o)
105 counts.swap(o.counts);
113 RefSnapshot
operator-(
const RefSnapshot& rhs)
const;
118std::ostream&
operator<<(std::ostream& strm,
const RefSnapshot& snap);
122class epicsShareClass RefMonitor
128 virtual ~RefMonitor();
130 void start(
double period=10.0);
132 bool running()
const;
139 virtual void show(
const RefSnapshot& snap,
bool complete=
false);
150char* epicsRefSnapshotCurrent();
constexpr common_type< duration< _Rep1, _Period1 >, duration< _Rep2, _Period2 > >::type operator-(const duration< _Rep1, _Period1 > &__lhs, const duration< _Rep2, _Period2 > &__rhs)
gslice_array< _Tp > operator[](const gslice &__s)
valarray< size_t > size() const
void swap(any &__x, any &__y) noexcept
basic_ostream< _CharT, _Traits > & operator<<(basic_ostream< _CharT, _Traits > &__os, const basic_string< _CharT, _Traits, _Alloc > &__str)
constexpr auto begin(_Container &__cont) -> decltype(__cont.begin())
constexpr auto end(_Container &__cont) -> decltype(__cont.end())
constexpr bool operator==(const basic_string< _CharT, _Traits, _Alloc > &__lhs, const _CharT *__rhs)