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 
39 namespace blaze {
40 
41 //=================================================================================================
42 //
43 // POINTER CAST OPERATORS
44 //
45 //=================================================================================================
46 
47 //*************************************************************************************************
50 template< typename To, typename From > inline To* static_pointer_cast( From* ptr );
51 template< typename To, typename From > inline To* dynamic_pointer_cast( From* ptr );
52 template< typename To, typename From > inline To* const_pointer_cast( From* ptr);
53 template< typename To, typename From > inline To* reinterpret_pointer_cast( From* ptr );
55 //*************************************************************************************************
56 
57 
58 //*************************************************************************************************
76 template< typename To, typename From >
77 inline To* static_pointer_cast( From* ptr )
78 {
79  return static_cast<To*>( ptr );
80 }
81 //*************************************************************************************************
82 
83 
84 //*************************************************************************************************
103 template< typename To, typename From >
104 inline To* dynamic_pointer_cast( From* ptr )
105 {
106  return dynamic_cast<To*>( ptr );
107 }
108 //*************************************************************************************************
109 
110 
111 //*************************************************************************************************
128 template< typename To, typename From >
129 inline To* const_pointer_cast( From* ptr)
130 {
131  return const_cast<To*>( ptr );
132 }
133 //*************************************************************************************************
134 
135 
136 //*************************************************************************************************
153 template< typename To, typename From >
154 inline 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 //*************************************************************************************************
172 template< typename To, template<typename> class S, typename From > inline S<To> static_pointer_cast( S<From> ptr );
173 template< typename To, template<typename> class S, typename From > inline S<To> dynamic_pointer_cast( S<From> ptr );
174 template< typename To, template<typename> class S, typename From > inline S<To> const_pointer_cast( S<From> ptr);
175 template< typename To, template<typename> class S, typename From > inline S<To> reinterpret_pointer_cast( S<From> ptr );
177 //*************************************************************************************************
178 
179 
180 //*************************************************************************************************
201 template< typename To, template<typename> class S, typename From >
202 inline S<To> static_pointer_cast( S<From> ptr )
203 {
204  return S<To>( static_cast<To*>( ptr.get() ) );
205 }
206 //*************************************************************************************************
207 
208 
209 //*************************************************************************************************
231 template< typename To, template<typename> class S, typename From >
232 inline S<To> dynamic_pointer_cast( S<From> ptr )
233 {
234  return S<To>( dynamic_cast<To*>( ptr.get() ) );
235 }
236 //*************************************************************************************************
237 
238 
239 //*************************************************************************************************
259 template< typename To, template<typename> class S, typename From >
260 inline S<To> const_pointer_cast( S<From> ptr )
261 {
262  return S<To>( const_cast<To*>( ptr.get() ) );
263 }
264 //*************************************************************************************************
265 
266 
267 //*************************************************************************************************
277 template< typename To, template<typename> class S, typename From >
278 inline 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
Namespace of the Blaze C++ math library.
Definition: Blaze.h:57
To * reinterpret_pointer_cast(From *ptr)
Reinterpret cast for pointer types.
Definition: PointerCast.h:154
To * const_pointer_cast(From *ptr)
Const cast for pointer types.
Definition: PointerCast.h:129
To * static_pointer_cast(From *ptr)
Static cast for pointer types.
Definition: PointerCast.h:77
To * dynamic_pointer_cast(From *ptr)
Dynamic cast for pointer types.
Definition: PointerCast.h:104