1
1
// //////////////////////////////////////////////////////////////////////////
2
- // Module : object_destroyer.h
3
- // Created : 21.01.2003
4
- // Modified : 09.07.2004
5
- // Author : Dmitriy Iassenev
6
- // Description : Object destroyer
2
+ // Module : object_destroyer.h
3
+ // Created : 21.01.2003
4
+ // Modified : 09.07.2004
5
+ // Author : Dmitriy Iassenev
6
+ // Description : Object destroyer
7
7
// //////////////////////////////////////////////////////////////////////////
8
8
9
9
#pragma once
10
+ #include " xrCore/xrMemory.h"
10
11
11
12
struct CDestroyer
12
13
{
13
- IC static void delete_data (LPCSTR data) {}
14
+ static void delete_data (LPCSTR data)
14
15
IC static void delete_data(LPSTR data) { xr_free (data); }
15
16
template <typename T1, typename T2>
16
- IC static void delete_data (std::pair<T1, T2>& data)
17
+ static void delete_data (std::pair<T1, T2>& data)
17
18
{
18
19
delete_data (data.first );
19
20
delete_data (data.second );
20
21
}
21
22
22
23
template <typename T, int size>
23
- IC static void delete_data (svector<T, size>& data)
24
+ static void delete_data (svector<T, size>& data)
24
25
{
25
26
svector<T, size>::iterator I = data.begin ();
26
27
svector<T, size>::iterator E = data.end ();
@@ -30,7 +31,7 @@ struct CDestroyer
30
31
}
31
32
32
33
template <typename T, int n>
33
- IC static void delete_data (T (&array)[n])
34
+ static void delete_data (T (&array)[n])
34
35
{
35
36
T* I = array;
36
37
T* E = array + n;
@@ -39,37 +40,37 @@ struct CDestroyer
39
40
}
40
41
41
42
template <typename T1, typename T2>
42
- IC static void delete_data (std::queue<T1, T2>& data)
43
+ static void delete_data (std::queue<T1, T2>& data)
43
44
{
44
45
std::queue<T1, T2> temp = data;
45
46
for (; !temp.empty (); temp.pop ())
46
47
delete_data (temp.front ());
47
48
}
48
49
49
50
template <template <typename _1, typename _2> class T1 , typename T2, typename T3>
50
- IC static void delete_data (T1<T2, T3>& data, bool )
51
+ static void delete_data (T1<T2, T3>& data, bool )
51
52
{
52
53
T1<T2, T3> temp = data;
53
54
for (; !temp.empty (); temp.pop ())
54
55
delete_data (temp.top ());
55
56
}
56
57
57
58
template <template <typename _1, typename _2, typename _3> class T1 , typename T2, typename T3, typename T4>
58
- IC static void delete_data (T1<T2, T3, T4>& data, bool )
59
+ static void delete_data (T1<T2, T3, T4>& data, bool )
59
60
{
60
61
T1<T2, T3, T4> temp = data;
61
62
for (; !temp.empty (); temp.pop ())
62
63
delete_data (temp.top ());
63
64
}
64
65
65
66
template <typename T1, typename T2>
66
- IC static void delete_data (xr_stack<T1, T2>& data)
67
+ static void delete_data (xr_stack<T1, T2>& data)
67
68
{
68
69
delete_data (data, true );
69
70
}
70
71
71
72
template <typename T1, typename T2, typename T3>
72
- IC static void delete_data (std::priority_queue<T1, T2, T3>& data)
73
+ static void delete_data (std::priority_queue<T1, T2, T3>& data)
73
74
{
74
75
delete_data (data, true );
75
76
}
@@ -78,12 +79,12 @@ struct CDestroyer
78
79
struct CHelper1
79
80
{
80
81
template <bool a>
81
- IC static void delete_data (T&)
82
+ static void delete_data (T&)
82
83
{
83
84
}
84
85
85
86
template <>
86
- IC static void delete_data<true >(T& data)
87
+ static void delete_data<true >(T& data)
87
88
{
88
89
data.destroy ();
89
90
}
@@ -93,13 +94,13 @@ struct CDestroyer
93
94
struct CHelper2
94
95
{
95
96
template <bool a>
96
- IC static void delete_data (T& data)
97
+ static void delete_data (T& data)
97
98
{
98
99
CHelper1<T>::delete_data<object_type_traits::is_base_and_derived<IPureDestroyableObject, T>::value>(data);
99
100
}
100
101
101
102
template <>
102
- IC static void delete_data<true >(T& data)
103
+ static void delete_data<true >(T& data)
103
104
{
104
105
if (data)
105
106
CDestroyer::delete_data (*data);
@@ -110,7 +111,7 @@ struct CDestroyer
110
111
struct CHelper3
111
112
{
112
113
template <typename T>
113
- IC static void delete_data (T& data)
114
+ static void delete_data (T& data)
114
115
{
115
116
T::iterator I = data.begin ();
116
117
T::iterator E = data.end ();
@@ -124,27 +125,27 @@ struct CDestroyer
124
125
struct CHelper4
125
126
{
126
127
template <bool a>
127
- IC static void delete_data (T& data)
128
+ static void delete_data (T& data)
128
129
{
129
130
CHelper2<T>::delete_data<object_type_traits::is_pointer<T>::value>(data);
130
131
}
131
132
132
133
template <>
133
- IC static void delete_data<true >(T& data)
134
+ static void delete_data<true >(T& data)
134
135
{
135
136
CHelper3::delete_data (data);
136
137
}
137
138
};
138
139
139
140
template <typename T>
140
- IC static void delete_data (T& data)
141
+ static void delete_data (T& data)
141
142
{
142
143
CHelper4<T>::delete_data<object_type_traits::is_stl_container<T>::value>(data);
143
144
}
144
145
};
145
146
146
147
template <typename T>
147
- IC void delete_data (const T& data)
148
+ void delete_data (const T& data)
148
149
{
149
150
T* temp = const_cast <T*>(&data);
150
151
CDestroyer::delete_data (*temp);
0 commit comments