MADNESS  version 0.9
Classes | Namespaces | Macros | Functions
typestuff.h File Reference

Grossly simplified Boost-like type traits and templates. More...

#include <cstddef>
#include <stdint.h>
#include <madness/madness_config.h>
#include <madness/world/type_traits.h>
#include <madness/world/enable_if.h>
#include <madness/world/function_traits_bits.h>
Include dependency graph for typestuff.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  madness::is_derived_from< A, B >
 True if A is derived from B and is not B. More...
 
struct  madness::is_derived_from< A, A >
 True if A is derived from B and is not B. More...
 
class  madness::Future< T >
 A future is a possibly yet unevaluated value. More...
 
struct  madness::remove_future< T >
 Boost-type-trait-like mapping of Future<T> to T. More...
 
struct  madness::remove_fcvr< T >
 
struct  madness::is_serializable< T >
 This defines stuff that is serialiable by default rules ... basically anything contiguous. More...
 
class  madness::BindNullaryMemFun< T, resultT >
 Simple binder for member functions with no arguments. More...
 
class  madness::BindNullaryMemFun< T, void >
 Specialization of BindNullaryMemFun for void return. More...
 
class  madness::BindNullaryConstMemFun< T, resultT >
 Simple binder for const member functions with no arguments. More...
 
class  madness::BindNullaryConstMemFun< T, void >
 Specialization of BindNullaryConstMemFun for void return. More...
 
struct  madness::Void
 A type you can return when you want to return void ... use "return None". More...
 
struct  madness::ReturnWrapper< T >
 Wrapper so that can return something even if returning void. More...
 
struct  madness::ReturnWrapper< void >
 Wrapper so that can return something even if returning void. More...
 
class  madness::Reference< T >
 Used to provide rvalue references to support move semantics. More...
 
struct  madness::has_result_type< T >
 

Namespaces

 madness
 Holds machinery to set up Functions/FuncImpls using various Factories and Interfaces.
 

Macros

#define REMREF(TYPE)   typename std::remove_reference< TYPE >::type
 Macro to make remove_reference<T> easier to use. More...
 
#define REMCONST(TYPE)   typename std::remove_const< TYPE >::type
 Macro to make remove_const<T> easier to use. More...
 
#define REMCONSTX(TYPE)   std::remove_const< TYPE >::type
 
#define RETURN_WRAPPERT(TYPE)   typename madness::ReturnWrapper< TYPE >::type
 Returns TYPE unless TYPE is void when returns ReturnWrapper<void> More...
 
#define MEMFUN_RETURNT(MEMFUN)   typename madness::detail::memfunc_traits< MEMFUN >::result_type
 Macro to make member function type traits easier to use. More...
 
#define MEMFUN_CONSTNESS(MEMFUN)   madness::detail::memfunc_traits< MEMFUN >::constness
 
#define MEMFUN_OBJT(MEMFUN)   typename madness::detail::memfunc_traits< MEMFUN >::obj_type
 Macro to make member function type traits easier to use. More...
 
#define MEMFUN_ARITY(MEMFUN)   madness::detail::memfunc_traits< MEMFUN >::arity
 Macro to make member function type traits easier to use. More...
 
#define MEMFUN_ARG1T(MEMFUN)   typename madness::detail::memfunc_traits< MEMFUN >::arg1_type
 Macro to make member function type traits easier to use. More...
 
#define MEMFUN_ARG2T(MEMFUN)   typename madness::detail::memfunc_traits< MEMFUN >::arg2_type
 Macro to make member function type traits easier to use. More...
 
#define MEMFUN_ARG3T(MEMFUN)   typename madness::detail::memfunc_traits< MEMFUN >::arg3_type
 Macro to make member function type traits easier to use. More...
 
#define MEMFUN_ARG4T(MEMFUN)   typename madness::detail::memfunc_traits< MEMFUN >::arg4_type
 Macro to make member function type traits easier to use. More...
 
#define FUNCTION_RETURNT(FUNCTION)   typename madness::detail::function_traits< FUNCTION >::result_type
 Macro to make function type traits easier to use. More...
 
#define FUNCTION_ARITY(FUNCTION)   madness::detail::function_traits< FUNCTION >::arity
 Macro to make function type traits easier to use. More...
 
#define FUNCTION_ARG1T(FUNCTION)   typename madness::detail::function_traits< FUNCTION >::arg1_type
 Macro to make function type traits easier to use. More...
 
#define FUNCTION_ARG2T(FUNCTION)   typename madness::detail::function_traits< FUNCTION >::arg2_type
 Macro to make function type traits easier to use. More...
 
#define FUNCTION_ARG3T(FUNCTION)   typename madness::detail::function_traits< FUNCTION >::arg3_type
 Macro to make function type traits easier to use. More...
 
#define FUNCTION_ARG4T(FUNCTION)   typename madness::detail::function_traits< FUNCTION >::arg4_type
 Macro to make function type traits easier to use. More...
 
#define RESULT_OF(FUNCTION)   typename madness::detail::result_of< FUNCTION >::type
 
#define IS_SAME(A, B)   std::is_same< A, B >
 Macro to make is_same<T> template easier to use. More...
 
#define IS_EQ(A, B)   std::is_eq< A, B >
 

Functions

template<class T , typename resultT >
BindNullaryMemFun< T, resultT > madness::bind_nullary_mem_fun (T *t, resultT(T::*op)())
 Factory function for BindNullaryMemFun. More...
 
template<class T , typename resultT >
BindNullaryConstMemFun< T,
resultT > 
madness::bind_nullary_mem_fun (const T *t, resultT(T::*op)() const)
 Factory function for BindNullaryConstMemFun. More...
 

Detailed Description

Grossly simplified Boost-like type traits and templates.

Macro Definition Documentation

#define FUNCTION_ARG1T (   FUNCTION)    typename madness::detail::function_traits< FUNCTION >::arg1_type

Macro to make function type traits easier to use.

#define FUNCTION_ARG2T (   FUNCTION)    typename madness::detail::function_traits< FUNCTION >::arg2_type

Macro to make function type traits easier to use.

#define FUNCTION_ARG3T (   FUNCTION)    typename madness::detail::function_traits< FUNCTION >::arg3_type

Macro to make function type traits easier to use.

#define FUNCTION_ARG4T (   FUNCTION)    typename madness::detail::function_traits< FUNCTION >::arg4_type

Macro to make function type traits easier to use.

#define FUNCTION_ARITY (   FUNCTION)    madness::detail::function_traits< FUNCTION >::arity

Macro to make function type traits easier to use.

#define FUNCTION_RETURNT (   FUNCTION)    typename madness::detail::function_traits< FUNCTION >::result_type

Macro to make function type traits easier to use.

#define IS_EQ (   A,
  B 
)    std::is_eq< A, B >
#define IS_SAME (   A,
  B 
)    std::is_same< A, B >

Macro to make is_same<T> template easier to use.

#define MEMFUN_ARG1T (   MEMFUN)    typename madness::detail::memfunc_traits< MEMFUN >::arg1_type

Macro to make member function type traits easier to use.

#define MEMFUN_ARG2T (   MEMFUN)    typename madness::detail::memfunc_traits< MEMFUN >::arg2_type

Macro to make member function type traits easier to use.

#define MEMFUN_ARG3T (   MEMFUN)    typename madness::detail::memfunc_traits< MEMFUN >::arg3_type

Macro to make member function type traits easier to use.

#define MEMFUN_ARG4T (   MEMFUN)    typename madness::detail::memfunc_traits< MEMFUN >::arg4_type

Macro to make member function type traits easier to use.

#define MEMFUN_ARITY (   MEMFUN)    madness::detail::memfunc_traits< MEMFUN >::arity

Macro to make member function type traits easier to use.

#define MEMFUN_CONSTNESS (   MEMFUN)    madness::detail::memfunc_traits< MEMFUN >::constness
#define MEMFUN_OBJT (   MEMFUN)    typename madness::detail::memfunc_traits< MEMFUN >::obj_type

Macro to make member function type traits easier to use.

#define MEMFUN_RETURNT (   MEMFUN)    typename madness::detail::memfunc_traits< MEMFUN >::result_type

Macro to make member function type traits easier to use.

Referenced by madness::WorldContainer< keyT, nodeT >::send(), and madness::WorldContainer< keyT, nodeT >::task().

#define REMCONST (   TYPE)    typename std::remove_const< TYPE >::type

Macro to make remove_const<T> easier to use.

#define REMCONSTX (   TYPE)    std::remove_const< TYPE >::type
#define REMREF (   TYPE)    typename std::remove_reference< TYPE >::type

Macro to make remove_reference<T> easier to use.

#define RESULT_OF (   FUNCTION)    typename madness::detail::result_of< FUNCTION >::type
#define RETURN_WRAPPERT (   TYPE)    typename madness::ReturnWrapper< TYPE >::type

Returns TYPE unless TYPE is void when returns ReturnWrapper<void>