MythTV
master
mythtv
libs
libmythbase
referencecounter.h
Go to the documentation of this file.
1
// -*- Mode: c++ -*-
2
3
#ifndef MYTHREFCOUNT_H_
4
#define MYTHREFCOUNT_H_
5
6
// Uncomment this line for more useful reference counting debugging
7
//#define EXTRA_DEBUG
8
// Uncomment the DEBUG define lines in referencecounter.cpp for
9
// even more debugging.
10
11
#include <QAtomicInt>
12
13
#ifdef EXTRA_DEBUG
14
#include <QString>
15
#else
16
class
QString;
17
#endif
18
19
#include "
mythbaseexp.h
"
20
26
class
MBASE_PUBLIC
ReferenceCounter
27
{
28
public
:
30
explicit
ReferenceCounter
(
const
QString &debugName,
bool
logDebug =
true
);
31
34
virtual
int
IncrRef(
void
);
35
38
virtual
int
DecrRef(
void
);
39
41
static
void
PrintDebug(
void
);
42
protected
:
45
virtual
~
ReferenceCounter
(
void
);
46
47
protected
:
48
#ifdef EXTRA_DEBUG
49
const
QString m_debugName;
50
#endif
51
bool
m_logDebug;
57
QAtomicInt m_referenceCount {1};
58
};
59
66
class
MBASE_PUBLIC
ReferenceLocker
67
{
68
public
:
69
explicit
ReferenceLocker
(
ReferenceCounter
*counter) : m_counter(counter) { }
70
~ReferenceLocker
()
71
{
72
if
(m_counter)
73
m_counter->DecrRef();
74
}
75
private
:
76
ReferenceCounter
*m_counter {
nullptr
};
77
};
78
79
#endif
ReferenceLocker
This decrements the reference on destruction.
Definition:
referencecounter.h:66
mythbaseexp.h
MBASE_PUBLIC
#define MBASE_PUBLIC
Definition:
mythbaseexp.h:15
ReferenceLocker::~ReferenceLocker
~ReferenceLocker()
Definition:
referencecounter.h:70
ReferenceLocker::ReferenceLocker
ReferenceLocker(ReferenceCounter *counter)
Definition:
referencecounter.h:69
ReferenceCounter
General purpose reference counter.
Definition:
referencecounter.h:26
Generated on Wed Feb 26 2025 03:17:54 for MythTV by
1.8.17