11// //////////////////////////////////////////////////////////////////////////
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
77// //////////////////////////////////////////////////////////////////////////
88
99#pragma once
10+ #include " xrCore/xrMemory.h"
1011
1112struct CDestroyer
1213{
13- IC static void delete_data (LPCSTR data) {}
14+ static void delete_data (LPCSTR data)
1415 IC static void delete_data(LPSTR data) { xr_free (data); }
1516 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)
1718 {
1819 delete_data (data.first );
1920 delete_data (data.second );
2021 }
2122
2223 template <typename T, int size>
23- IC static void delete_data (svector<T, size>& data)
24+ static void delete_data (svector<T, size>& data)
2425 {
2526 svector<T, size>::iterator I = data.begin ();
2627 svector<T, size>::iterator E = data.end ();
@@ -30,7 +31,7 @@ struct CDestroyer
3031 }
3132
3233 template <typename T, int n>
33- IC static void delete_data (T (&array)[n])
34+ static void delete_data (T (&array)[n])
3435 {
3536 T* I = array;
3637 T* E = array + n;
@@ -39,37 +40,37 @@ struct CDestroyer
3940 }
4041
4142 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)
4344 {
4445 std::queue<T1, T2> temp = data;
4546 for (; !temp.empty (); temp.pop ())
4647 delete_data (temp.front ());
4748 }
4849
4950 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 )
5152 {
5253 T1<T2, T3> temp = data;
5354 for (; !temp.empty (); temp.pop ())
5455 delete_data (temp.top ());
5556 }
5657
5758 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 )
5960 {
6061 T1<T2, T3, T4> temp = data;
6162 for (; !temp.empty (); temp.pop ())
6263 delete_data (temp.top ());
6364 }
6465
6566 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)
6768 {
6869 delete_data (data, true );
6970 }
7071
7172 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)
7374 {
7475 delete_data (data, true );
7576 }
@@ -78,12 +79,12 @@ struct CDestroyer
7879 struct CHelper1
7980 {
8081 template <bool a>
81- IC static void delete_data (T&)
82+ static void delete_data (T&)
8283 {
8384 }
8485
8586 template <>
86- IC static void delete_data<true >(T& data)
87+ static void delete_data<true >(T& data)
8788 {
8889 data.destroy ();
8990 }
@@ -93,13 +94,13 @@ struct CDestroyer
9394 struct CHelper2
9495 {
9596 template <bool a>
96- IC static void delete_data (T& data)
97+ static void delete_data (T& data)
9798 {
9899 CHelper1<T>::delete_data<object_type_traits::is_base_and_derived<IPureDestroyableObject, T>::value>(data);
99100 }
100101
101102 template <>
102- IC static void delete_data<true >(T& data)
103+ static void delete_data<true >(T& data)
103104 {
104105 if (data)
105106 CDestroyer::delete_data (*data);
@@ -110,7 +111,7 @@ struct CDestroyer
110111 struct CHelper3
111112 {
112113 template <typename T>
113- IC static void delete_data (T& data)
114+ static void delete_data (T& data)
114115 {
115116 T::iterator I = data.begin ();
116117 T::iterator E = data.end ();
@@ -124,27 +125,27 @@ struct CDestroyer
124125 struct CHelper4
125126 {
126127 template <bool a>
127- IC static void delete_data (T& data)
128+ static void delete_data (T& data)
128129 {
129130 CHelper2<T>::delete_data<object_type_traits::is_pointer<T>::value>(data);
130131 }
131132
132133 template <>
133- IC static void delete_data<true >(T& data)
134+ static void delete_data<true >(T& data)
134135 {
135136 CHelper3::delete_data (data);
136137 }
137138 };
138139
139140 template <typename T>
140- IC static void delete_data (T& data)
141+ static void delete_data (T& data)
141142 {
142143 CHelper4<T>::delete_data<object_type_traits::is_stl_container<T>::value>(data);
143144 }
144145};
145146
146147template <typename T>
147- IC void delete_data (const T& data)
148+ void delete_data (const T& data)
148149{
149150 T* temp = const_cast <T*>(&data);
150151 CDestroyer::delete_data (*temp);
0 commit comments