Skip to content

Commit 752f904

Browse files
committed
xrCore/intrusive_ptr: Fixed compilation with GCC.
1 parent 1c3900f commit 752f904

File tree

2 files changed

+40
-48
lines changed

2 files changed

+40
-48
lines changed

src/xrCore/intrusive_ptr.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,6 @@ template <typename object_type, typename base_type = intrusive_base>
3737
class intrusive_ptr
3838
{
3939
private:
40-
typedef base_type base_type;
41-
typedef object_type object_type;
4240
typedef intrusive_ptr<object_type, base_type> self_type;
4341
typedef const object_type* (intrusive_ptr::*unspecified_bool_type) () const;
4442

src/xrCore/intrusive_ptr_inline.h

Lines changed: 40 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -8,38 +8,35 @@
88

99
#pragma once
1010

11-
#define TEMPLATE_SPECIALIZATION template <typename object_type, typename base_type>
12-
#define _intrusive_ptr intrusive_ptr<object_type,base_type>
13-
14-
TEMPLATE_SPECIALIZATION
15-
IC _intrusive_ptr::intrusive_ptr()
11+
template <typename object_type, typename base_type>
12+
IC intrusive_ptr<object_type,base_type>::intrusive_ptr()
1613
{
1714
m_object = 0;
1815
}
1916

20-
TEMPLATE_SPECIALIZATION
21-
IC _intrusive_ptr::intrusive_ptr(object_type* rhs)
17+
template <typename object_type, typename base_type>
18+
IC intrusive_ptr<object_type,base_type>::intrusive_ptr(object_type* rhs)
2219
{
2320
m_object = 0;
2421
set(rhs);
2522
}
2623

27-
TEMPLATE_SPECIALIZATION
28-
IC _intrusive_ptr::intrusive_ptr(self_type const& rhs)
24+
template <typename object_type, typename base_type>
25+
IC intrusive_ptr<object_type,base_type>::intrusive_ptr(self_type const& rhs)
2926
{
3027
m_object = 0;
3128
set(rhs);
3229
}
3330

34-
TEMPLATE_SPECIALIZATION
35-
IC _intrusive_ptr::~intrusive_ptr()
31+
template <typename object_type, typename base_type>
32+
IC intrusive_ptr<object_type,base_type>::~intrusive_ptr()
3633
{
3734
STATIC_CHECK(result, Class_MUST_Be_Derived_From_The_Base);
3835
dec();
3936
}
4037

41-
TEMPLATE_SPECIALIZATION
42-
IC void _intrusive_ptr::dec()
38+
template <typename object_type, typename base_type>
39+
IC void intrusive_ptr<object_type,base_type>::dec()
4340
{
4441
if (!m_object)
4542
return;
@@ -49,56 +46,56 @@ IC void _intrusive_ptr::dec()
4946
m_object->base_type::_release(m_object);
5047
}
5148

52-
TEMPLATE_SPECIALIZATION
53-
IC typename _intrusive_ptr::self_type& _intrusive_ptr::operator= (object_type* rhs)
49+
template <typename object_type, typename base_type>
50+
IC typename intrusive_ptr<object_type,base_type>::self_type& intrusive_ptr<object_type,base_type>::operator= (object_type* rhs)
5451
{
5552
set(rhs);
5653
return ((self_type&)*this);
5754
}
5855

59-
TEMPLATE_SPECIALIZATION
60-
IC typename _intrusive_ptr::self_type& _intrusive_ptr::operator= (self_type const& rhs)
56+
template <typename object_type, typename base_type>
57+
IC typename intrusive_ptr<object_type,base_type>::self_type& intrusive_ptr<object_type,base_type>::operator= (self_type const& rhs)
6158
{
6259
set(rhs);
6360
return ((self_type&)*this);
6461
}
6562

66-
TEMPLATE_SPECIALIZATION
67-
IC typename _intrusive_ptr::object_type& _intrusive_ptr::operator* () const
63+
template <typename object_type, typename base_type>
64+
IC object_type& intrusive_ptr<object_type,base_type>::operator* () const
6865
{
6966
VERIFY(m_object);
7067
return (*m_object);
7168
}
7269

73-
TEMPLATE_SPECIALIZATION
74-
IC typename _intrusive_ptr::object_type* _intrusive_ptr::operator->() const
70+
template <typename object_type, typename base_type>
71+
IC object_type* intrusive_ptr<object_type,base_type>::operator->() const
7572
{
7673
VERIFY(m_object);
7774
return (m_object);
7875
}
7976

80-
TEMPLATE_SPECIALIZATION
81-
IC bool _intrusive_ptr::operator! () const
77+
template <typename object_type, typename base_type>
78+
IC bool intrusive_ptr<object_type,base_type>::operator! () const
8279
{
8380
return (!m_object);
8481
}
8582

86-
TEMPLATE_SPECIALIZATION
87-
IC void _intrusive_ptr::swap(self_type& rhs)
83+
template <typename object_type, typename base_type>
84+
IC void intrusive_ptr<object_type,base_type>::swap(self_type& rhs)
8885
{
8986
object_type* tmp = m_object;
9087
m_object = rhs.m_object;
9188
rhs.m_object = tmp;
9289
}
9390

94-
TEMPLATE_SPECIALIZATION
95-
IC bool _intrusive_ptr::equal(const self_type& rhs) const
91+
template <typename object_type, typename base_type>
92+
IC bool intrusive_ptr<object_type,base_type>::equal(const self_type& rhs) const
9693
{
9794
return (m_object == rhs.m_object);
9895
}
9996

100-
TEMPLATE_SPECIALIZATION
101-
IC void _intrusive_ptr::set(object_type* rhs)
97+
template <typename object_type, typename base_type>
98+
IC void intrusive_ptr<object_type,base_type>::set(object_type* rhs)
10299
{
103100
if (m_object == rhs)
104101
return;
@@ -109,8 +106,8 @@ IC void _intrusive_ptr::set(object_type* rhs)
109106
++m_object->m_ref_count;
110107
}
111108

112-
TEMPLATE_SPECIALIZATION
113-
IC void _intrusive_ptr::set(self_type const& rhs)
109+
template <typename object_type, typename base_type>
110+
IC void intrusive_ptr<object_type,base_type>::set(self_type const& rhs)
114111
{
115112
if (m_object == rhs.m_object)
116113
return;
@@ -121,41 +118,38 @@ IC void _intrusive_ptr::set(self_type const& rhs)
121118
++m_object->m_ref_count;
122119
}
123120

124-
TEMPLATE_SPECIALIZATION
125-
IC const typename _intrusive_ptr::object_type* _intrusive_ptr::get() const
121+
template <typename object_type, typename base_type>
122+
IC const object_type* intrusive_ptr<object_type,base_type>::get() const
126123
{
127124
return (m_object);
128125
}
129126

130-
TEMPLATE_SPECIALIZATION
131-
IC bool operator== (_intrusive_ptr const& a, _intrusive_ptr const& b)
127+
template <typename object_type, typename base_type>
128+
IC bool operator== (intrusive_ptr<object_type,base_type> const& a, intrusive_ptr<object_type,base_type> const& b)
132129
{
133130
return (a.get() == b.get());
134131
}
135132

136-
TEMPLATE_SPECIALIZATION
137-
IC bool operator != (_intrusive_ptr const& a, _intrusive_ptr const& b)
133+
template <typename object_type, typename base_type>
134+
IC bool operator != (intrusive_ptr<object_type,base_type> const& a, intrusive_ptr<object_type,base_type> const& b)
138135
{
139136
return (a.get() != b.get());
140137
}
141138

142-
TEMPLATE_SPECIALIZATION
143-
IC bool operator< (_intrusive_ptr const& a, _intrusive_ptr const& b)
139+
template <typename object_type, typename base_type>
140+
IC bool operator< (intrusive_ptr<object_type,base_type> const& a, intrusive_ptr<object_type,base_type> const& b)
144141
{
145142
return (a.get() < b.get());
146143
}
147144

148-
TEMPLATE_SPECIALIZATION
149-
IC bool operator> (_intrusive_ptr const& a, _intrusive_ptr const& b)
145+
template <typename object_type, typename base_type>
146+
IC bool operator> (intrusive_ptr<object_type,base_type> const& a, intrusive_ptr<object_type,base_type> const& b)
150147
{
151148
return (a.get() > b.get());
152149
}
153150

154-
TEMPLATE_SPECIALIZATION
155-
IC void swap(_intrusive_ptr& lhs, _intrusive_ptr& rhs)
151+
template <typename object_type, typename base_type>
152+
IC void swap(intrusive_ptr<object_type,base_type>& lhs, intrusive_ptr<object_type,base_type>& rhs)
156153
{
157154
lhs.swap(rhs);
158155
}
159-
160-
#undef TEMPLATE_SPECIALIZATION
161-
#undef _intrusive_ptr

0 commit comments

Comments
 (0)