libqi-api  2.8.7.4
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Classes | Namespaces | Macros | Typedefs | Functions
anyfunctionfactory.hxx File Reference
#include <boost/mpl/for_each.hpp>
#include <boost/mpl/transform_view.hpp>
#include <boost/mpl/find_if.hpp>
#include <boost/mpl/vector.hpp>
#include <boost/mpl/pop_front.hpp>
#include <boost/mpl/at.hpp>
#include <boost/mpl/placeholders.hpp>
#include <boost/mpl/max_element.hpp>
#include <boost/mpl/transform.hpp>
#include <boost/type_traits/remove_reference.hpp>
#include <boost/type_traits/add_pointer.hpp>
#include <boost/type_traits/remove_const.hpp>
#include <boost/type_traits/remove_pointer.hpp>
#include <boost/type_traits/is_member_function_pointer.hpp>
#include <boost/function_types/function_type.hpp>
#include <boost/function_types/function_arity.hpp>
#include <boost/function_types/function_pointer.hpp>
#include <boost/function_types/member_function_pointer.hpp>
#include <boost/function_types/result_type.hpp>
#include <boost/function_types/parameter_types.hpp>
#include <boost/bind.hpp>
#include <boost/any.hpp>
#include <boost/thread/mutex.hpp>
#include <qi/atomic.hpp>
#include <qi/anyvalue.hpp>
#include <ka/typetraits.hpp>

Go to the source code of this file.

Classes

class  qi::detail::Class
 
struct  qi::detail::EqTypeBase< T, isWordSize >
 
struct  qi::detail::EqTypeBase< T, true >
 
struct  qi::detail::EqType< T >
 
struct  qi::detail::EqType< void >
 
struct  qi::detail::EqType< double >
 
struct  qi::detail::EqType< float >
 
struct  qi::detail::EqType< bool >
 
struct  qi::detail::EqType< T & >
 
struct  qi::detail::EqType< T const & >
 
struct  qi::detail::EqType< T * >
 
struct  qi::detail::EqFunctionBare< F >
 
struct  qi::detail::EqMemberFunction< F >
 
struct  qi::detail::EqFunction< F >
 
class  qi::detail::AnyReferenceCopy
 
struct  qi::detail::AssignAnyRef< T >
 
struct  qi::detail::AssignAnyRef< T * >
 
struct  qi::InfosKeyMask
 
class  qi::FunctionTypeInterfaceEq< T, S >
 
struct  qi::detail::Ident< T >
 
struct  qi::detail::checkForNonConstRef
 
struct  qi::detail::remove_constptr< T >
 
struct  qi::detail::remove_constptr< const T * >
 
struct  qi::detail::fill_arguments
 
struct  qi::detail::FunctionPointerSynthetizer< F, Member >
 
struct  qi::detail::FunctionPointerSynthetizer< F, false >
 
struct  qi::detail::Pointer< T >
 
struct  qi::detail::Pointer< T * >
 

Namespaces

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

Macros

#define _QITYPE_DETAIL_ANYFUNCTIONFACTORY_HXX_
 
#define callArg(z, n, _)   BOOST_PP_COMMA_IF(n) * (typename boost::remove_reference<P##n>::type*)args[n]
 
#define makeCall(n, argstypedecl, argstype, argsdecl, argsues, comma)
 
#define STATIC_IF_SAFE   static
 
#define declType(z, n, _)
 
#define callArgBF(z, n, _)
 
#define makeCall(n, argstypedecl, argstype, argsdecl, argsues, comma)
 
#define makeCall(n, argstypedecl, argstype, argsdecl, argsues, comma)
 
#define makeCall_(n, argstypedecl, argstype, argsdecl, argsues, comma)
 

Typedefs

template<typename T >
using qi::detail::remove_constptr_t = typename remove_constptr< T >::type
 

Functions

void qi::detail::transformRef (void **args, void **out, unsigned int sz, unsigned long refMask)
 
template<typename T >
void qi::detail::operator, (AnyReferenceCopy &g, T &&any)
 
template<typename F >
AnyFunction qi::detail::makeAnyFunctionBare (F func)
 
template<typename C , typename R >
AnyReference qi::detail::bouncer (const AnyReferenceVector &vargs, R(C::*fun)(const AnyArguments &))
 
template<typename R >
AnyReference qi::detail::bouncerBF (const AnyReferenceVector &vargs, boost::function< R(const AnyArguments &)> f)
 
template<typename C , typename R >
AnyFunction qi::detail::makeAnyFunctionBare (R(C::*fun)(const AnyArguments &))
 
template<typename R >
AnyFunction qi::detail::makeAnyFunctionBare (R(*fun)(const AnyArguments &))
 
template<typename R >
AnyFunction qi::detail::makeAnyFunctionBare (boost::function< R(const AnyArguments &)> fun)
 
template<typename F >
AnyFunction qi::detail::makeAnyFunctionBare (boost::function< F > func)
 

Macro Definition Documentation

#define _QITYPE_DETAIL_ANYFUNCTIONFACTORY_HXX_

Definition at line 8 of file anyfunctionfactory.hxx.

#define callArg (   z,
  n,
 
)    BOOST_PP_COMMA_IF(n) * (typename boost::remove_reference<P##n>::type*)args[n]

Definition at line 270 of file anyfunctionfactory.hxx.

#define callArgBF (   z,
  n,
 
)
Value:
BOOST_PP_COMMA_IF(n) * (typename boost::remove_reference<P##n>::type*) \
type_##n->ptrFromStorage(&args[n])

Definition at line 294 of file anyfunctionfactory.hxx.

#define declType (   z,
  n,
 
)
Value:
STATIC_IF_SAFE TypeInterface* type_##n = \
typeOf<typename boost::remove_reference<P##n>::type>();
#define STATIC_IF_SAFE

Definition at line 291 of file anyfunctionfactory.hxx.

#define makeCall (   n,
  argstypedecl,
  argstype,
  argsdecl,
  argsues,
  comma 
)
Value:
template <typename R comma argstypedecl> \
void* makeCall(R (*f)(argstype), void** args) \
{ \
detail::AnyReferenceCopy val; \
val(), f(BOOST_PP_REPEAT(n, callArg, _)); \
return val.rawValue(); \
}
#define makeCall(n, argstypedecl, argstype, argsdecl, argsues, comma)
#define callArg(z, n, _)

Definition at line 309 of file anyfunctionfactory.hxx.

#define makeCall (   n,
  argstypedecl,
  argstype,
  argsdecl,
  argsues,
  comma 
)
Value:
template <typename R comma argstypedecl> \
void* makeCall(boost::function<R(argstype)> f, void** args) \
{ \
BOOST_PP_REPEAT(n, declType, _) detail::AnyReferenceCopy val; \
val(), f(BOOST_PP_REPEAT(n, callArgBF, _)); \
return val.rawValue(); \
}
#define declType(z, n, _)
#define callArgBF(z, n, _)
#define makeCall(n, argstypedecl, argstype, argsdecl, argsues, comma)

Definition at line 309 of file anyfunctionfactory.hxx.

#define makeCall (   n,
  argstypedecl,
  argstype,
  argsdecl,
  argsues,
  comma 
)
Value:
template <typename R comma argstypedecl> \
void* makeCall(R (Class::*f)(argstype), void* instance, void** args) \
{ \
detail::AnyReferenceCopy val; \
Class* cptr = *(Class**)instance; \
val(), ((*cptr).*f)(BOOST_PP_REPEAT(n, callArg, _)); \
return val.rawValue(); \
}
#define makeCall(n, argstypedecl, argstype, argsdecl, argsues, comma)
#define callArg(z, n, _)

Definition at line 309 of file anyfunctionfactory.hxx.

#define makeCall_ (   n,
  argstypedecl,
  argstype,
  argsdecl,
  argsues,
  comma 
)
Value:
template <typename R comma argstypedecl> \
void* makeCall(R (Class::*f)(argstype), void** args) \
{ \
return makeCall(f, args[0], args + 1); \
}
#define makeCall(n, argstypedecl, argstype, argsdecl, argsues, comma)

Definition at line 321 of file anyfunctionfactory.hxx.

#define STATIC_IF_SAFE   static

Definition at line 286 of file anyfunctionfactory.hxx.