7 #ifndef _QITYPE_DETAILS_TYPE_HXX_
8 #define _QITYPE_DETAILS_TYPE_HXX_
17 #include <boost/thread/mutex.hpp>
18 #include <boost/mpl/for_each.hpp>
19 #include <boost/mpl/transform_view.hpp>
20 #include <boost/type_traits/remove_reference.hpp>
21 #include <boost/type_traits/add_pointer.hpp>
22 #include <boost/function_types/parameter_types.hpp>
23 #include <boost/function_types/result_type.hpp>
24 #include <boost/function_types/function_type.hpp>
25 #include <boost/function_types/is_member_pointer.hpp>
46 qiLogDebug(
"qitype.typeof") <<
"first typeOf request for unregistered type " <<
typeid(T).name();
58 QI_ONCE(initializeType<T>(defaultResult));
59 result = defaultResult;
85 typedef typename boost::add_pointer<typename boost::remove_const<typename TypeOfAdapter<T>::type>
::type>
::type type;
93 return detail::typeOfBackend<typename detail::TypeOfAdapter<T>::type>();
129 template<
template<
typename>
class T>
132 template<
template<
typename>
class T,
typename I>
136 #endif // _QITYPE_DETAILS_TYPE_HXX_
class QITYPE_TEMPLATE_API TypeOfTemplate
DefaultTypeImplMethods< T > type
#define QITYPE_TEMPLATE_API
TypeInterface * getType(const std::type_info &type)
Runtime Type factory getter. Used by typeOf<T>()
TypeOfAdapter< T >::type type
TypeInterface * typeOfBackend()
#define QI_ONCE(code)
Execute code once, parallel calls are blocked until code finishes.
boost::add_pointer< typename boost::remove_const< typename TypeOfAdapter< T >::type >::type >::type type
TypeOfAdapter< T >::type type
void initializeType(TypeInterface *&tgt)