Blaze 3.9
PointerCast.h
Go to the documentation of this file.
1//=================================================================================================
33//=================================================================================================
34
35#ifndef _BLAZE_UTIL_POINTERCAST_H_
36#define _BLAZE_UTIL_POINTERCAST_H_
37
38
39namespace blaze {
40
41//=================================================================================================
42//
43// POINTER CAST OPERATORS
44//
45//=================================================================================================
46
47//*************************************************************************************************
50template< typename To, typename From > inline To* static_pointer_cast( From* ptr );
51template< typename To, typename From > inline To* dynamic_pointer_cast( From* ptr );
52template< typename To, typename From > inline To* const_pointer_cast( From* ptr);
53template< typename To, typename From > inline To* reinterpret_pointer_cast( From* ptr );
55//*************************************************************************************************
56
57
58//*************************************************************************************************
76template< typename To, typename From >
77inline To* static_pointer_cast( From* ptr )
78{
79 return static_cast<To*>( ptr );
80}
81//*************************************************************************************************
82
83
84//*************************************************************************************************
103template< typename To, typename From >
104inline To* dynamic_pointer_cast( From* ptr )
105{
106 return dynamic_cast<To*>( ptr );
107}
108//*************************************************************************************************
109
110
111//*************************************************************************************************
128template< typename To, typename From >
129inline To* const_pointer_cast( From* ptr)
130{
131 return const_cast<To*>( ptr );
132}
133//*************************************************************************************************
134
135
136//*************************************************************************************************
153template< typename To, typename From >
154inline To* reinterpret_pointer_cast( From* ptr )
155{
156 return reinterpret_cast<To*>( ptr );
157}
158//*************************************************************************************************
159
160
161
162
163//=================================================================================================
164//
165// SMART POINTER CAST OPERATORS
166//
167//=================================================================================================
168
169//*************************************************************************************************
172template< typename To, template<typename> class S, typename From > inline S<To> static_pointer_cast( S<From> ptr );
173template< typename To, template<typename> class S, typename From > inline S<To> dynamic_pointer_cast( S<From> ptr );
174template< typename To, template<typename> class S, typename From > inline S<To> const_pointer_cast( S<From> ptr);
175template< typename To, template<typename> class S, typename From > inline S<To> reinterpret_pointer_cast( S<From> ptr );
177//*************************************************************************************************
178
179
180//*************************************************************************************************
201template< typename To, template<typename> class S, typename From >
202inline S<To> static_pointer_cast( S<From> ptr )
203{
204 return S<To>( static_cast<To*>( ptr.get() ) );
205}
206//*************************************************************************************************
207
208
209//*************************************************************************************************
231template< typename To, template<typename> class S, typename From >
232inline S<To> dynamic_pointer_cast( S<From> ptr )
233{
234 return S<To>( dynamic_cast<To*>( ptr.get() ) );
235}
236//*************************************************************************************************
237
238
239//*************************************************************************************************
259template< typename To, template<typename> class S, typename From >
260inline S<To> const_pointer_cast( S<From> ptr )
261{
262 return S<To>( const_cast<To*>( ptr.get() ) );
263}
264//*************************************************************************************************
265
266
267//*************************************************************************************************
277template< typename To, template<typename> class S, typename From >
278inline S<To> reinterpret_pointer_cast( S<From> ptr )
279{
280 return S<To>( reinterpret_cast<To*>( ptr.get() ) );
281}
282//*************************************************************************************************
283
284} // namespace blaze
285
286#endif
S< To > dynamic_pointer_cast(S< From > ptr)
Dynamic cast for smart pointers.
Definition: PointerCast.h:232
S< To > reinterpret_pointer_cast(S< From > ptr)
Reinterpret cast for smart pointers.
Definition: PointerCast.h:278
S< To > const_pointer_cast(S< From > ptr)
Const cast for smart pointers.
Definition: PointerCast.h:260
S< To > static_pointer_cast(S< From > ptr)
Static cast for smart pointers.
Definition: PointerCast.h:202