libqi-api  release-2.5.3-2016-11-18
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Classes | Namespaces | Macros | Typedefs | Functions
trackable.hxx File Reference
#include <type_traits>
#include <boost/function.hpp>
#include <boost/bind.hpp>
#include <boost/weak_ptr.hpp>
#include <boost/function_types/result_type.hpp>

Go to the source code of this file.

Classes

class  qi::detail::LockAndCall< WT, F >
 
struct  qi::detail::ObjectWrap< T, IsActor >
 
struct  qi::detail::ObjectWrap< T, false >
 
struct  qi::detail::ObjectWrap< T, true >
 
struct  qi::detail::IsAsyncBindImpl
 
struct  qi::detail::IsAsyncBindImpl::ArbitraryBigBuf
 
struct  qi::detail::IsAsyncBind< T >
 
struct  qi::detail::DecayAsyncResultImpl< IsAsync, F, Args >
 
struct  qi::detail::DecayAsyncResultImpl< false, F, Args...>
 
struct  qi::detail::DecayAsyncResultImpl< true, F, Args...>
 
struct  qi::detail::BindTransformImpl< T, IsTrackable >
 
struct  qi::detail::BindTransformImpl< T *, false >
 
struct  qi::detail::BindTransformImpl< T *, true >
 

Namespaces

 qi
 Deprecated in 2.5. Use int8_t from <cstdint>.
 
 qi::detail
 

Macros

#define _QI_DETAIL_TRACKABLE_HXX_
 

Typedefs

template<typename T , typename... Args>
using qi::detail::DecayAsyncResult = DecayAsyncResultImpl< IsAsyncBind< typename std::decay< T >::type >::value, T, Args...>
 
template<typename T , typename K = typename std::decay<T>::type>
using qi::detail::BindTransform = BindTransformImpl< K, std::is_base_of< TrackableBase, typename std::remove_pointer< K >::type >::value >
 

Functions

template<typename T >
qi::detail::defaultConstruct ()
 
template<>
void qi::detail::defaultConstruct< void > ()
 
void qi::detail::throwPointerLockException ()
 
template<typename RF , typename AF , typename Arg0 , typename... Args>
std::enable_if
< std::is_function< RF >
::value, boost::function< RF >
>::type 
qi::bindWithFallback (boost::function< void()> onFail, AF &&fun, Arg0 &&arg0, Args &&...args)
 
template<typename RF , typename AF , typename Arg0 , typename... Args>
std::enable_if
< std::is_function< RF >
::value, boost::function< RF >
>::type 
qi::bindSilent (AF &&fun, Arg0 &&arg0, Args &&...args)
 
template<typename RF , typename AF , typename Arg0 , typename... Args>
std::enable_if
< std::is_function< RF >
::value, boost::function< RF >
>::type 
qi::bind (AF &&fun, Arg0 &&arg0, Args &&...args)
 
template<typename AF , typename Arg0 , typename... Args>
auto qi::bindWithFallback (boost::function< void()> onFail, AF &&fun, Arg0 &&arg0, Args &&...args) -> typename detail::BindTransform< Arg0 >::template wrap_type< decltype(boost::bind(std::forward< AF >(fun), detail::BindTransform< Arg0 >::transform(arg0), std::forward< Args >(args)...))>
 
template<typename AF , typename Arg0 , typename... Args>
auto qi::bindSilent (AF &&fun, Arg0 &&arg0, Args &&...args) -> decltype(bindWithFallback(
 
template<typename AF , typename Arg0 , typename... Args>
auto qi::bind (AF &&fun, Arg0 &&arg0, Args &&...args) -> decltype(bindWithFallback(detail::throwPointerLockException, std::forward< AF >(fun), std::forward< Arg0 >(arg0), std::forward< Args >(args)...))
 
template<typename R , typename AF , typename Arg0 , typename... Args>
auto qi::bindWithFallback (boost::function< void()> onFail, AF &&fun, Arg0 &&arg0, Args &&...args) -> typename std::enable_if<!std::is_function< R >::value, typename detail::BindTransform< Arg0 >::template wrap_type< decltype(boost::bind< R >(std::forward< AF >(fun), detail::BindTransform< Arg0 >::transform(arg0), std::forward< Args >(args)...))>>::type
 
template<typename R , typename AF , typename Arg0 , typename... Args>
auto qi::bindSilent (AF &&fun, Arg0 &&arg0, Args &&...args) -> typename std::enable_if< !std::is_function< R >::value, decltype(bindWithFallback< R >(
 
template<typename R , typename AF , typename Arg0 , typename... Args>
auto qi::bind (AF &&fun, Arg0 &&arg0, Args &&...args) -> typename std::enable_if<!std::is_function< R >::value, decltype(bindWithFallback< R >(detail::throwPointerLockException, std::forward< AF >(fun), std::forward< Arg0 >(arg0), std::forward< Args >(args)...))>::type
 
template<typename F , typename Arg0 >
auto qi::trackWithFallback (boost::function< void()> onFail, F &&f, Arg0 &&arg0) -> decltype(detail::BindTransform< Arg0 >::wrap(std::forward< Arg0 >(arg0), std::forward< F >(f), std::move(onFail)))
 
template<typename F , typename Arg0 >
auto qi::track (F &&f, Arg0 &&arg0) -> decltype(trackWithFallback(detail::throwPointerLockException, std::forward< F >(f), std::forward< Arg0 >(arg0)))
 
template<typename F , typename Arg0 >
auto qi::trackSilent (F &&f, Arg0 &&arg0) -> decltype(trackWithFallback(
 
template<typename F , typename Arg0 >
boost::function< F > qi::trackWithFallback (boost::function< void()> onFail, boost::function< F > f, const Arg0 &arg0)
 
template<typename F , typename Arg0 >
boost::function< F > qi::trackSilent (boost::function< F > f, const Arg0 &arg0)
 
template<typename F , typename Arg0 >
boost::function< F > qi::track (boost::function< F > f, const Arg0 &arg0)
 

Macro Definition Documentation

#define _QI_DETAIL_TRACKABLE_HXX_

Definition at line 9 of file trackable.hxx.