7 #ifndef _QITYPE_DETAIL_TYPE_HXX_
8 #define _QITYPE_DETAIL_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 " << qi::typeId<T>().
name();
58 QI_ONCE(initializeType<T>(defaultResult));
59 result = defaultResult;
88 using type =
typename std::add_pointer<typename std::remove_const<TypeOfAdapter_t<T>>
::type>
::type;
96 return detail::typeOfBackend<detail::TypeOfAdapter_t<T>>();
129 template <
typename T>
135 template<
template<
typename>
class T>
138 template<
template<
typename>
class T,
typename I>
142 #endif // _QITYPE_DETAIL_TYPE_HXX_
TypeOfAdapter_t< T > type
TypeInterface * getType(const TypeIndex &typeId)
Runtime Type factory getter. Used by typeOf<T>()
class QITYPE_TEMPLATE_API TypeOfTemplate
#define QITYPE_TEMPLATE_API
typename TypeImplMethodsBySize< T >::type TypeImplMethodsBySize_t
TypeInterface * typeOfBackend()
#define QI_ONCE(code)
Execute code once, parallel calls are blocked until code finishes.
typename TypeOfAdapter< T >::type TypeOfAdapter_t
TypeOfAdapter_t< T > type
typename std::add_pointer< typename std::remove_const< TypeOfAdapter_t< T >>::type >::type type
void initializeType(TypeInterface *&tgt)