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)
60 void registerRefCounter(
const char *name,
const size_t* counter);
64 void unregisterRefCounter(
const char *name,
const size_t* counter);
68 size_t readRefCounter(
const char *name);
71 class 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;
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;
122 class 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);
150 char* epicsRefSnapshotCurrent();
std::basic_ostream< _CharT, _Traits > & operator<<(std::basic_ostream< _CharT, _Traits > &__os, const std::bernoulli_distribution &__x)
constexpr complex< _Tp > operator-(const complex< _Tp > &__x)
valarray< size_t > size() const
directory_iterator end(directory_iterator) noexcept
directory_iterator begin(directory_iterator __iter) noexcept
gslice_array< _Tp > operator[](const gslice &__s)
void swap(any &__x, any &__y) noexcept
constexpr bool operator==(const allocator< _T1 > &, const allocator< _T2 > &) noexcept