aboutsummaryrefslogtreecommitdiff
path: root/src/FbTk/RefCount.hh
diff options
context:
space:
mode:
authorPavel Labath <pavelo@centrum.sk>2011-06-14 14:47:32 (GMT)
committerPavel Labath <pavelo@centrum.sk>2011-09-14 17:39:10 (GMT)
commit0a40d1caf3180538d83c7016939d91c7beaf6c2c (patch)
treea95107a2e15f828410684e10600ff4e9a216fd64 /src/FbTk/RefCount.hh
parentb9e9eb4e44a30204f719c40edd792f35305af932 (diff)
downloadfluxbox-0a40d1caf3180538d83c7016939d91c7beaf6c2c.zip
fluxbox-0a40d1caf3180538d83c7016939d91c7beaf6c2c.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/RefCount.hh')
-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();