8
8
9
9
#pragma once
10
10
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()
16
13
{
17
14
m_object = 0 ;
18
15
}
19
16
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)
22
19
{
23
20
m_object = 0 ;
24
21
set (rhs);
25
22
}
26
23
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)
29
26
{
30
27
m_object = 0 ;
31
28
set (rhs);
32
29
}
33
30
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 ()
36
33
{
37
34
STATIC_CHECK (result, Class_MUST_Be_Derived_From_The_Base);
38
35
dec ();
39
36
}
40
37
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()
43
40
{
44
41
if (!m_object)
45
42
return ;
@@ -49,56 +46,56 @@ IC void _intrusive_ptr::dec()
49
46
m_object->base_type ::_release (m_object);
50
47
}
51
48
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)
54
51
{
55
52
set (rhs);
56
53
return ((self_type&)*this );
57
54
}
58
55
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)
61
58
{
62
59
set (rhs);
63
60
return ((self_type&)*this );
64
61
}
65
62
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
68
65
{
69
66
VERIFY (m_object);
70
67
return (*m_object);
71
68
}
72
69
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
75
72
{
76
73
VERIFY (m_object);
77
74
return (m_object);
78
75
}
79
76
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
82
79
{
83
80
return (!m_object);
84
81
}
85
82
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)
88
85
{
89
86
object_type* tmp = m_object;
90
87
m_object = rhs.m_object ;
91
88
rhs.m_object = tmp;
92
89
}
93
90
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
96
93
{
97
94
return (m_object == rhs.m_object );
98
95
}
99
96
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)
102
99
{
103
100
if (m_object == rhs)
104
101
return ;
@@ -109,8 +106,8 @@ IC void _intrusive_ptr::set(object_type* rhs)
109
106
++m_object->m_ref_count ;
110
107
}
111
108
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)
114
111
{
115
112
if (m_object == rhs.m_object )
116
113
return ;
@@ -121,41 +118,38 @@ IC void _intrusive_ptr::set(self_type const& rhs)
121
118
++m_object->m_ref_count ;
122
119
}
123
120
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
126
123
{
127
124
return (m_object);
128
125
}
129
126
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)
132
129
{
133
130
return (a.get () == b.get ());
134
131
}
135
132
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)
138
135
{
139
136
return (a.get () != b.get ());
140
137
}
141
138
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)
144
141
{
145
142
return (a.get () < b.get ());
146
143
}
147
144
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)
150
147
{
151
148
return (a.get () > b.get ());
152
149
}
153
150
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)
156
153
{
157
154
lhs.swap (rhs);
158
155
}
159
-
160
- #undef TEMPLATE_SPECIALIZATION
161
- #undef _intrusive_ptr
0 commit comments