aboutsummaryrefslogtreecommitdiff
path: root/src/FbTk
diff options
context:
space:
mode:
authorPavel Labath <pavelo@centrum.sk>2011-06-14 14:47:32 (GMT)
committerPavel Labath <pavelo@centrum.sk>2011-06-15 15:33:47 (GMT)
commitdb243c1d343781a1466e1b863e174427cd37e37f (patch)
treea770b0635a33e952ca029d44e7ec51a6e7870c1d /src/FbTk
parent822c02e96a88a90540fa622afa5ab196b9ba5a7c (diff)
downloadfluxbox_pavel-db243c1d343781a1466e1b863e174427cd37e37f.zip
fluxbox_pavel-db243c1d343781a1466e1b863e174427cd37e37f.tar.bz2
Add template copy constructor to FbTk::Refcount
and remove a an "almost" copy constructor (almost, because it takes a non-const reference parameter) which was useless.
Diffstat (limited to 'src/FbTk')
-rw-r--r--src/FbTk/RefCount.hh10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/FbTk/RefCount.hh b/src/FbTk/RefCount.hh
index 597f847..fe267e3 100644
--- a/src/FbTk/RefCount.hh
+++ b/src/FbTk/RefCount.hh
@@ -32,8 +32,9 @@ class RefCount {
32public: 32public:
33 RefCount(); 33 RefCount();
34 explicit RefCount(Pointer *p); 34 explicit RefCount(Pointer *p);
35 explicit RefCount(RefCount<Pointer> &copy);
36 RefCount(const RefCount<Pointer> &copy); 35 RefCount(const RefCount<Pointer> &copy);
36 template<typename Pointer2>
37 RefCount(const RefCount<Pointer2> &copy);
37 ~RefCount(); 38 ~RefCount();
38 RefCount<Pointer> &operator = (const RefCount<Pointer> &copy); 39 RefCount<Pointer> &operator = (const RefCount<Pointer> &copy);
39 RefCount<Pointer> &operator = (Pointer *p); 40 RefCount<Pointer> &operator = (Pointer *p);
@@ -50,6 +51,10 @@ private:
50 void decRefCount(); 51 void decRefCount();
51 Pointer *m_data; ///< data holder 52 Pointer *m_data; ///< data holder
52 unsigned int *m_refcount; ///< holds reference counting 53 unsigned int *m_refcount; ///< holds reference counting
54
55 // we need this for the template copy constructor
56 template<typename Pointer2>
57 friend class RefCount;
53}; 58};
54 59
55// implementation 60// implementation
@@ -60,7 +65,8 @@ RefCount<Pointer>::RefCount():m_data(0), m_refcount(new unsigned int(0)) {
60} 65}
61 66
62template <typename Pointer> 67template <typename Pointer>
63RefCount<Pointer>::RefCount(RefCount<Pointer> &copy): 68template <typename Pointer2>
69RefCount<Pointer>::RefCount(const RefCount<Pointer2> &copy):
64 m_data(copy.m_data), 70 m_data(copy.m_data),
65 m_refcount(copy.m_refcount) { 71 m_refcount(copy.m_refcount) {
66 incRefCount(); 72 incRefCount();