MADNESS  0.10.1
Public Types | Public Member Functions | Static Public Attributes | Protected Member Functions | Private Types | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
madness::TaskFn< fnT, arg1T, arg2T, arg3T, arg4T, arg5T, arg6T, arg7T, arg8T, arg9T > Struct Template Reference

Wrap a callable object and its arguments into a task function. More...

#include <taskfn.h>

Inheritance diagram for madness::TaskFn< fnT, arg1T, arg2T, arg3T, arg4T, arg5T, arg6T, arg7T, arg8T, arg9T >:
Inheritance graph
[legend]
Collaboration diagram for madness::TaskFn< fnT, arg1T, arg2T, arg3T, arg4T, arg5T, arg6T, arg7T, arg8T, arg9T >:
Collaboration graph
[legend]

Public Types

typedef fnT functionT
 The task function type. More...
 
typedef detail::task_result_type< fnT >::futureT futureT
 
typedef detail::task_result_type< fnT >::resultT resultT
 The result type of the function. More...
 

Public Member Functions

template<typename a1T , typename a2T , typename a3T , typename a4T , typename a5T , typename a6T , typename a7T , typename a8T , typename a9T >
 TaskFn (const futureT &result, functionT func, a1T &&a1, a2T &&a2, a3T &&a3, a4T &&a4, a5T &&a5, a6T &&a6, a7T &&a7, a8T &&a8, a9T &&a9, const TaskAttributes &attr)
 
template<typename a1T , typename a2T , typename a3T , typename a4T , typename a5T , typename a6T , typename a7T , typename a8T >
 TaskFn (const futureT &result, functionT func, a1T &&a1, a2T &&a2, a3T &&a3, a4T &&a4, a5T &&a5, a6T &&a6, a7T &&a7, a8T &&a8, const TaskAttributes &attr)
 
template<typename a1T , typename a2T , typename a3T , typename a4T , typename a5T , typename a6T , typename a7T >
 TaskFn (const futureT &result, functionT func, a1T &&a1, a2T &&a2, a3T &&a3, a4T &&a4, a5T &&a5, a6T &&a6, a7T &&a7, const TaskAttributes &attr)
 
template<typename a1T , typename a2T , typename a3T , typename a4T , typename a5T , typename a6T >
 TaskFn (const futureT &result, functionT func, a1T &&a1, a2T &&a2, a3T &&a3, a4T &&a4, a5T &&a5, a6T &&a6, const TaskAttributes &attr)
 
template<typename a1T , typename a2T , typename a3T , typename a4T , typename a5T >
 TaskFn (const futureT &result, functionT func, a1T &&a1, a2T &&a2, a3T &&a3, a4T &&a4, a5T &&a5, const TaskAttributes &attr)
 
template<typename a1T , typename a2T , typename a3T , typename a4T >
 TaskFn (const futureT &result, functionT func, a1T &&a1, a2T &&a2, a3T &&a3, a4T &&a4, const TaskAttributes &attr)
 
template<typename a1T , typename a2T , typename a3T >
 TaskFn (const futureT &result, functionT func, a1T &&a1, a2T &&a2, a3T &&a3, const TaskAttributes &attr)
 
template<typename a1T , typename a2T >
 TaskFn (const futureT &result, functionT func, a1T &&a1, a2T &&a2, const TaskAttributes &attr)
 
template<typename a1T >
 TaskFn (const futureT &result, functionT func, a1T &&a1, const TaskAttributes &attr)
 
 TaskFn (const futureT &result, functionT func, const TaskAttributes &attr)
 
 TaskFn (const futureT &result, functionT func, const TaskAttributes &attr, archive::BufferInputArchive &input_arch)
 
virtual ~TaskFn ()
 
const futureTresult () const
 
- Public Member Functions inherited from madness::TaskInterface
 TaskInterface (const TaskAttributes &attr)
 Create a new task with zero dependencies and given attributes. More...
 
 TaskInterface (int ndepend, const char *caller, const TaskAttributes attr=TaskAttributes())
 
 TaskInterface (int ndepend=0, const TaskAttributes attr=TaskAttributes())
 Create a new task with ndepend dependencies (default 0) and given attributes. More...
 
virtual ~TaskInterface ()
 
Worldget_world () const
 
virtual void run (World &)
 Runs a single-threaded task ... derived classes must implement this. More...
 
- Public Member Functions inherited from madness::PoolTaskInterface
 PoolTaskInterface ()
 Default constructor. More...
 
 PoolTaskInterface (const TaskAttributes &attr)
 
virtual ~PoolTaskInterface ()=default
 Destructor. More...
 
void execute ()
 
void set_nthread (int nthread)
 Call this to reset the number of threads before the task is submitted. More...
 
- Public Member Functions inherited from madness::TaskAttributes
 TaskAttributes (const TaskAttributes &attr)
 Copy constructor. More...
 
 TaskAttributes (unsigned long flags=0)
 Sets the attributes to the desired values. More...
 
virtual ~TaskAttributes ()
 
int get_nthread () const
 Get the number of threads. More...
 
bool is_generator () const
 Test if the generator attribute is true. More...
 
bool is_high_priority () const
 Test if the high priority attribute is true. More...
 
bool is_stealable () const
 Test if the stealable attribute is true. More...
 
template<typename Archive >
void serialize (Archive &ar)
 Serializes the attributes for I/O. More...
 
TaskAttributesset_generator (bool generator_hint)
 Sets the generator attribute. More...
 
TaskAttributesset_highpriority (bool hipri)
 Sets the high priority attribute. More...
 
void set_nthread (int nthread)
 Set the number of threads. More...
 
TaskAttributesset_stealable (bool stealable)
 Sets the stealable attribute. More...
 
- Public Member Functions inherited from madness::DependencyInterface
 DependencyInterface (int ndep, const char *caller)
 
 DependencyInterface (int ndep=0)
 
virtual ~DependencyInterface ()
 Destructor. More...
 
void dec ()
 Decrement the number of dependencies and invoke the callback if ndepend==0. More...
 
void dec_debug (const char *caller)
 
void inc ()
 Increment the number of dependencies. More...
 
void inc_debug (const char *caller)
 Same as inc(), but keeps track of caller; calling dec_debug() will signal error if no matching inc_debug() had been invoked
More...
 
int ndep () const
 Returns the number of unsatisfied dependencies. More...
 
void notify ()
 Invoked by callbacks to notify of dependencies being satisfied. More...
 
void notify_debug (const char *caller)
 Overload of CallbackInterface::notify_debug(), updates dec() More...
 
bool probe () const
 Returns true if ndepend == 0 (no unsatisfied dependencies). More...
 
void register_callback (CallbackInterface *callback)
 Registers a callback that will be executed when ndepend==0; immediately invoked if ndepend==0. More...
 
void register_final_callback (CallbackInterface *callback)
 Registers the final callback to be executed when ndepend==0; immediately invoked if ndepend==0. More...
 
- Public Member Functions inherited from madness::CallbackInterface
virtual ~CallbackInterface ()
 

Static Public Attributes

static const unsigned int arity
 
- Static Public Attributes inherited from madness::TaskInterface
static bool debug = false
 
- Static Public Attributes inherited from madness::TaskAttributes
static const unsigned long GENERATOR = 1ul<<8
 Mask for generator bit. More...
 
static const unsigned long HIGHPRIORITY = GENERATOR<<2
 Mask for priority bit. More...
 
static const unsigned long NTHREAD = 0xff
 Mask for nthread byte. More...
 
static const unsigned long STEALABLE = GENERATOR<<1
 Mask for stealable bit. More...
 

Protected Member Functions

virtual void run (World &, const TaskThreadEnv &)
 Runs a multi-threaded task. More...
 
- Protected Member Functions inherited from madness::TaskInterface
virtual void run (const TaskThreadEnv &env)
 Override this method to implement a multi-threaded task. More...
 
- Protected Member Functions inherited from madness::CallbackInterface
virtual void notify_debug_impl (const char *caller)
 

Private Types

typedef TaskFn< fnT, arg1T, arg2T, arg3T, arg4T, arg5T, arg6T, arg7T, arg8T, arg9T > TaskFn_
 This class type. More...
 

Private Member Functions

 TaskFn (const TaskFn_ &)
 
void check_dependencies ()
 Check dependencies and register callbacks where necessary. More...
 
template<typename T >
void check_dependency (const detail::ArgHolder< T > &)
 None future arguments are always ready => no op. More...
 
void check_dependency (const Future< void > &)
 Future<void> is always ready => no op. More...
 
void check_dependency (const std::vector< Future< void > > &)
 Future<void> is always ready => no op. More...
 
template<typename T >
void check_dependency (detail::ArgHolder< std::vector< Future< T > > > &arg)
 None future arguments are always ready => no op. More...
 
template<typename T >
void check_dependency (Future< T > &fut)
 Register a non-ready future as a dependency. More...
 
template<typename T >
void check_dependency (Future< T > *fut)
 Register (pointer to) a non-ready future as a dependency. More...
 
template<typename T >
void check_dependency (std::vector< Future< T > > &vec)
 None future arguments are always ready => no op. More...
 
virtual void get_id (std::pair< void *, unsigned short > &id) const
 
TaskFn_ operator= (TaskFn_ &)
 

Static Private Member Functions

template<typename ptrT , typename memfnT , typename resT >
static memfnT get_func (const detail::MemFuncWrapper< ptrT, memfnT, resT > &wrapper)
 
template<typename fT >
static fT & get_func (fT &f)
 

Private Attributes

detail::task_arg< arg1T >::holderT arg1_
 Argument 1 that will be given to the function. More...
 
detail::task_arg< arg2T >::holderT arg2_
 Argument 2 that will be given to the function. More...
 
detail::task_arg< arg3T >::holderT arg3_
 Argument 3 that will be given to the function. More...
 
detail::task_arg< arg4T >::holderT arg4_
 Argument 4 that will be given to the function. More...
 
detail::task_arg< arg5T >::holderT arg5_
 Argument 5 that will be given to the function. More...
 
detail::task_arg< arg6T >::holderT arg6_
 Argument 6 that will be given to the function. More...
 
detail::task_arg< arg7T >::holderT arg7_
 Argument 7 that will be given to the function. More...
 
detail::task_arg< arg8T >::holderT arg8_
 Argument 8 that will be given to the function. More...
 
detail::task_arg< arg9T >::holderT arg9_
 Argument 9 that will be given to the function. More...
 
const functionT func_
 The task function. More...
 
futureT result_
 The task Future result. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from madness::TaskAttributes
static TaskAttributes generator ()
 
static TaskAttributes hipri ()
 
static TaskAttributes multi_threaded (int nthread)
 
- Static Protected Member Functions inherited from madness::PoolTaskInterface
template<typename fnobjT >
static std::enable_if<!(detail::function_traits< fnobjT >::value||detail::memfunc_traits< fnobjT >::value) >::type make_id (std::pair< void *, unsigned short > &id, const fnobjT &)
 
template<typename fnT >
static std::enable_if< detail::function_traits< fnT >::value||detail::memfunc_traits< fnT >::value >::type make_id (std::pair< void *, unsigned short > &id, fnT fn)
 

Detailed Description

template<typename fnT, typename arg1T = void, typename arg2T = void, typename arg3T = void, typename arg4T = void, typename arg5T = void, typename arg6T = void, typename arg7T = void, typename arg8T = void, typename arg9T = void>
struct madness::TaskFn< fnT, arg1T, arg2T, arg3T, arg4T, arg5T, arg6T, arg7T, arg8T, arg9T >

Wrap a callable object and its arguments into a task function.

The callable object may have up to 10 arguments

Note
arg*T cannot be a reference type

Member Typedef Documentation

◆ functionT

template<typename fnT , typename arg1T = void, typename arg2T = void, typename arg3T = void, typename arg4T = void, typename arg5T = void, typename arg6T = void, typename arg7T = void, typename arg8T = void, typename arg9T = void>
typedef fnT madness::TaskFn< fnT, arg1T, arg2T, arg3T, arg4T, arg5T, arg6T, arg7T, arg8T, arg9T >::functionT

The task function type.

◆ futureT

template<typename fnT , typename arg1T = void, typename arg2T = void, typename arg3T = void, typename arg4T = void, typename arg5T = void, typename arg6T = void, typename arg7T = void, typename arg8T = void, typename arg9T = void>
typedef detail::task_result_type<fnT>::futureT madness::TaskFn< fnT, arg1T, arg2T, arg3T, arg4T, arg5T, arg6T, arg7T, arg8T, arg9T >::futureT

◆ resultT

template<typename fnT , typename arg1T = void, typename arg2T = void, typename arg3T = void, typename arg4T = void, typename arg5T = void, typename arg6T = void, typename arg7T = void, typename arg8T = void, typename arg9T = void>
typedef detail::task_result_type<fnT>::resultT madness::TaskFn< fnT, arg1T, arg2T, arg3T, arg4T, arg5T, arg6T, arg7T, arg8T, arg9T >::resultT

The result type of the function.

◆ TaskFn_

template<typename fnT , typename arg1T = void, typename arg2T = void, typename arg3T = void, typename arg4T = void, typename arg5T = void, typename arg6T = void, typename arg7T = void, typename arg8T = void, typename arg9T = void>
typedef TaskFn<fnT, arg1T, arg2T, arg3T, arg4T, arg5T, arg6T, arg7T, arg8T, arg9T> madness::TaskFn< fnT, arg1T, arg2T, arg3T, arg4T, arg5T, arg6T, arg7T, arg8T, arg9T >::TaskFn_
private

This class type.

Constructor & Destructor Documentation

◆ TaskFn() [1/12]

template<typename fnT , typename arg1T = void, typename arg2T = void, typename arg3T = void, typename arg4T = void, typename arg5T = void, typename arg6T = void, typename arg7T = void, typename arg8T = void, typename arg9T = void>
madness::TaskFn< fnT, arg1T, arg2T, arg3T, arg4T, arg5T, arg6T, arg7T, arg8T, arg9T >::TaskFn ( const TaskFn_ )
private

◆ TaskFn() [2/12]

template<typename fnT , typename arg1T = void, typename arg2T = void, typename arg3T = void, typename arg4T = void, typename arg5T = void, typename arg6T = void, typename arg7T = void, typename arg8T = void, typename arg9T = void>
madness::TaskFn< fnT, arg1T, arg2T, arg3T, arg4T, arg5T, arg6T, arg7T, arg8T, arg9T >::TaskFn ( const futureT result,
functionT  func,
const TaskAttributes attr 
)
inline

◆ TaskFn() [3/12]

template<typename fnT , typename arg1T = void, typename arg2T = void, typename arg3T = void, typename arg4T = void, typename arg5T = void, typename arg6T = void, typename arg7T = void, typename arg8T = void, typename arg9T = void>
template<typename a1T >
madness::TaskFn< fnT, arg1T, arg2T, arg3T, arg4T, arg5T, arg6T, arg7T, arg8T, arg9T >::TaskFn ( const futureT result,
functionT  func,
a1T &&  a1,
const TaskAttributes attr 
)
inline

◆ TaskFn() [4/12]

template<typename fnT , typename arg1T = void, typename arg2T = void, typename arg3T = void, typename arg4T = void, typename arg5T = void, typename arg6T = void, typename arg7T = void, typename arg8T = void, typename arg9T = void>
template<typename a1T , typename a2T >
madness::TaskFn< fnT, arg1T, arg2T, arg3T, arg4T, arg5T, arg6T, arg7T, arg8T, arg9T >::TaskFn ( const futureT result,
functionT  func,
a1T &&  a1,
a2T &&  a2,
const TaskAttributes attr 
)
inline

◆ TaskFn() [5/12]

template<typename fnT , typename arg1T = void, typename arg2T = void, typename arg3T = void, typename arg4T = void, typename arg5T = void, typename arg6T = void, typename arg7T = void, typename arg8T = void, typename arg9T = void>
template<typename a1T , typename a2T , typename a3T >
madness::TaskFn< fnT, arg1T, arg2T, arg3T, arg4T, arg5T, arg6T, arg7T, arg8T, arg9T >::TaskFn ( const futureT result,
functionT  func,
a1T &&  a1,
a2T &&  a2,
a3T &&  a3,
const TaskAttributes attr 
)
inline

◆ TaskFn() [6/12]

template<typename fnT , typename arg1T = void, typename arg2T = void, typename arg3T = void, typename arg4T = void, typename arg5T = void, typename arg6T = void, typename arg7T = void, typename arg8T = void, typename arg9T = void>
template<typename a1T , typename a2T , typename a3T , typename a4T >
madness::TaskFn< fnT, arg1T, arg2T, arg3T, arg4T, arg5T, arg6T, arg7T, arg8T, arg9T >::TaskFn ( const futureT result,
functionT  func,
a1T &&  a1,
a2T &&  a2,
a3T &&  a3,
a4T &&  a4,
const TaskAttributes attr 
)
inline

◆ TaskFn() [7/12]

template<typename fnT , typename arg1T = void, typename arg2T = void, typename arg3T = void, typename arg4T = void, typename arg5T = void, typename arg6T = void, typename arg7T = void, typename arg8T = void, typename arg9T = void>
template<typename a1T , typename a2T , typename a3T , typename a4T , typename a5T >
madness::TaskFn< fnT, arg1T, arg2T, arg3T, arg4T, arg5T, arg6T, arg7T, arg8T, arg9T >::TaskFn ( const futureT result,
functionT  func,
a1T &&  a1,
a2T &&  a2,
a3T &&  a3,
a4T &&  a4,
a5T &&  a5,
const TaskAttributes attr 
)
inline

◆ TaskFn() [8/12]

template<typename fnT , typename arg1T = void, typename arg2T = void, typename arg3T = void, typename arg4T = void, typename arg5T = void, typename arg6T = void, typename arg7T = void, typename arg8T = void, typename arg9T = void>
template<typename a1T , typename a2T , typename a3T , typename a4T , typename a5T , typename a6T >
madness::TaskFn< fnT, arg1T, arg2T, arg3T, arg4T, arg5T, arg6T, arg7T, arg8T, arg9T >::TaskFn ( const futureT result,
functionT  func,
a1T &&  a1,
a2T &&  a2,
a3T &&  a3,
a4T &&  a4,
a5T &&  a5,
a6T &&  a6,
const TaskAttributes attr 
)
inline

◆ TaskFn() [9/12]

template<typename fnT , typename arg1T = void, typename arg2T = void, typename arg3T = void, typename arg4T = void, typename arg5T = void, typename arg6T = void, typename arg7T = void, typename arg8T = void, typename arg9T = void>
template<typename a1T , typename a2T , typename a3T , typename a4T , typename a5T , typename a6T , typename a7T >
madness::TaskFn< fnT, arg1T, arg2T, arg3T, arg4T, arg5T, arg6T, arg7T, arg8T, arg9T >::TaskFn ( const futureT result,
functionT  func,
a1T &&  a1,
a2T &&  a2,
a3T &&  a3,
a4T &&  a4,
a5T &&  a5,
a6T &&  a6,
a7T &&  a7,
const TaskAttributes attr 
)
inline

◆ TaskFn() [10/12]

template<typename fnT , typename arg1T = void, typename arg2T = void, typename arg3T = void, typename arg4T = void, typename arg5T = void, typename arg6T = void, typename arg7T = void, typename arg8T = void, typename arg9T = void>
template<typename a1T , typename a2T , typename a3T , typename a4T , typename a5T , typename a6T , typename a7T , typename a8T >
madness::TaskFn< fnT, arg1T, arg2T, arg3T, arg4T, arg5T, arg6T, arg7T, arg8T, arg9T >::TaskFn ( const futureT result,
functionT  func,
a1T &&  a1,
a2T &&  a2,
a3T &&  a3,
a4T &&  a4,
a5T &&  a5,
a6T &&  a6,
a7T &&  a7,
a8T &&  a8,
const TaskAttributes attr 
)
inline

◆ TaskFn() [11/12]

template<typename fnT , typename arg1T = void, typename arg2T = void, typename arg3T = void, typename arg4T = void, typename arg5T = void, typename arg6T = void, typename arg7T = void, typename arg8T = void, typename arg9T = void>
template<typename a1T , typename a2T , typename a3T , typename a4T , typename a5T , typename a6T , typename a7T , typename a8T , typename a9T >
madness::TaskFn< fnT, arg1T, arg2T, arg3T, arg4T, arg5T, arg6T, arg7T, arg8T, arg9T >::TaskFn ( const futureT result,
functionT  func,
a1T &&  a1,
a2T &&  a2,
a3T &&  a3,
a4T &&  a4,
a5T &&  a5,
a6T &&  a6,
a7T &&  a7,
a8T &&  a8,
a9T &&  a9,
const TaskAttributes attr 
)
inline

◆ TaskFn() [12/12]

template<typename fnT , typename arg1T = void, typename arg2T = void, typename arg3T = void, typename arg4T = void, typename arg5T = void, typename arg6T = void, typename arg7T = void, typename arg8T = void, typename arg9T = void>
madness::TaskFn< fnT, arg1T, arg2T, arg3T, arg4T, arg5T, arg6T, arg7T, arg8T, arg9T >::TaskFn ( const futureT result,
functionT  func,
const TaskAttributes attr,
archive::BufferInputArchive input_arch 
)
inline

◆ ~TaskFn()

template<typename fnT , typename arg1T = void, typename arg2T = void, typename arg3T = void, typename arg4T = void, typename arg5T = void, typename arg6T = void, typename arg7T = void, typename arg8T = void, typename arg9T = void>
virtual madness::TaskFn< fnT, arg1T, arg2T, arg3T, arg4T, arg5T, arg6T, arg7T, arg8T, arg9T >::~TaskFn ( )
inlinevirtual

Member Function Documentation

◆ check_dependencies()

template<typename fnT , typename arg1T = void, typename arg2T = void, typename arg3T = void, typename arg4T = void, typename arg5T = void, typename arg6T = void, typename arg7T = void, typename arg8T = void, typename arg9T = void>
void madness::TaskFn< fnT, arg1T, arg2T, arg3T, arg4T, arg5T, arg6T, arg7T, arg8T, arg9T >::check_dependencies ( )
inlineprivate

◆ check_dependency() [1/7]

template<typename fnT , typename arg1T = void, typename arg2T = void, typename arg3T = void, typename arg4T = void, typename arg5T = void, typename arg6T = void, typename arg7T = void, typename arg8T = void, typename arg9T = void>
template<typename T >
void madness::TaskFn< fnT, arg1T, arg2T, arg3T, arg4T, arg5T, arg6T, arg7T, arg8T, arg9T >::check_dependency ( const detail::ArgHolder< T > &  )
inlineprivate

None future arguments are always ready => no op.

◆ check_dependency() [2/7]

template<typename fnT , typename arg1T = void, typename arg2T = void, typename arg3T = void, typename arg4T = void, typename arg5T = void, typename arg6T = void, typename arg7T = void, typename arg8T = void, typename arg9T = void>
void madness::TaskFn< fnT, arg1T, arg2T, arg3T, arg4T, arg5T, arg6T, arg7T, arg8T, arg9T >::check_dependency ( const Future< void > &  )
inlineprivate

Future<void> is always ready => no op.

◆ check_dependency() [3/7]

template<typename fnT , typename arg1T = void, typename arg2T = void, typename arg3T = void, typename arg4T = void, typename arg5T = void, typename arg6T = void, typename arg7T = void, typename arg8T = void, typename arg9T = void>
void madness::TaskFn< fnT, arg1T, arg2T, arg3T, arg4T, arg5T, arg6T, arg7T, arg8T, arg9T >::check_dependency ( const std::vector< Future< void > > &  )
inlineprivate

Future<void> is always ready => no op.

◆ check_dependency() [4/7]

template<typename fnT , typename arg1T = void, typename arg2T = void, typename arg3T = void, typename arg4T = void, typename arg5T = void, typename arg6T = void, typename arg7T = void, typename arg8T = void, typename arg9T = void>
template<typename T >
void madness::TaskFn< fnT, arg1T, arg2T, arg3T, arg4T, arg5T, arg6T, arg7T, arg8T, arg9T >::check_dependency ( detail::ArgHolder< std::vector< Future< T > > > &  arg)
inlineprivate

◆ check_dependency() [5/7]

template<typename fnT , typename arg1T = void, typename arg2T = void, typename arg3T = void, typename arg4T = void, typename arg5T = void, typename arg6T = void, typename arg7T = void, typename arg8T = void, typename arg9T = void>
template<typename T >
void madness::TaskFn< fnT, arg1T, arg2T, arg3T, arg4T, arg5T, arg6T, arg7T, arg8T, arg9T >::check_dependency ( Future< T > &  fut)
inlineprivate

◆ check_dependency() [6/7]

template<typename fnT , typename arg1T = void, typename arg2T = void, typename arg3T = void, typename arg4T = void, typename arg5T = void, typename arg6T = void, typename arg7T = void, typename arg8T = void, typename arg9T = void>
template<typename T >
void madness::TaskFn< fnT, arg1T, arg2T, arg3T, arg4T, arg5T, arg6T, arg7T, arg8T, arg9T >::check_dependency ( Future< T > *  fut)
inlineprivate

Register (pointer to) a non-ready future as a dependency.

Template Parameters
TThe type of the future to check
Parameters
futThe future to check

References madness::DependencyInterface::inc(), madness::Future< T >::probe(), and madness::Future< T >::register_callback().

◆ check_dependency() [7/7]

template<typename fnT , typename arg1T = void, typename arg2T = void, typename arg3T = void, typename arg4T = void, typename arg5T = void, typename arg6T = void, typename arg7T = void, typename arg8T = void, typename arg9T = void>
template<typename T >
void madness::TaskFn< fnT, arg1T, arg2T, arg3T, arg4T, arg5T, arg6T, arg7T, arg8T, arg9T >::check_dependency ( std::vector< Future< T > > &  vec)
inlineprivate

◆ get_func() [1/2]

template<typename fnT , typename arg1T = void, typename arg2T = void, typename arg3T = void, typename arg4T = void, typename arg5T = void, typename arg6T = void, typename arg7T = void, typename arg8T = void, typename arg9T = void>
template<typename ptrT , typename memfnT , typename resT >
static memfnT madness::TaskFn< fnT, arg1T, arg2T, arg3T, arg4T, arg5T, arg6T, arg7T, arg8T, arg9T >::get_func ( const detail::MemFuncWrapper< ptrT, memfnT, resT > &  wrapper)
inlinestaticprivate

◆ get_func() [2/2]

template<typename fnT , typename arg1T = void, typename arg2T = void, typename arg3T = void, typename arg4T = void, typename arg5T = void, typename arg6T = void, typename arg7T = void, typename arg8T = void, typename arg9T = void>
template<typename fT >
static fT& madness::TaskFn< fnT, arg1T, arg2T, arg3T, arg4T, arg5T, arg6T, arg7T, arg8T, arg9T >::get_func ( fT &  f)
inlinestaticprivate

◆ get_id()

template<typename fnT , typename arg1T = void, typename arg2T = void, typename arg3T = void, typename arg4T = void, typename arg5T = void, typename arg6T = void, typename arg7T = void, typename arg8T = void, typename arg9T = void>
virtual void madness::TaskFn< fnT, arg1T, arg2T, arg3T, arg4T, arg5T, arg6T, arg7T, arg8T, arg9T >::get_id ( std::pair< void *, unsigned short > &  id) const
inlineprivatevirtual

◆ operator=()

template<typename fnT , typename arg1T = void, typename arg2T = void, typename arg3T = void, typename arg4T = void, typename arg5T = void, typename arg6T = void, typename arg7T = void, typename arg8T = void, typename arg9T = void>
TaskFn_ madness::TaskFn< fnT, arg1T, arg2T, arg3T, arg4T, arg5T, arg6T, arg7T, arg8T, arg9T >::operator= ( TaskFn_ )
private

◆ result()

template<typename fnT , typename arg1T = void, typename arg2T = void, typename arg3T = void, typename arg4T = void, typename arg5T = void, typename arg6T = void, typename arg7T = void, typename arg8T = void, typename arg9T = void>
const futureT& madness::TaskFn< fnT, arg1T, arg2T, arg3T, arg4T, arg5T, arg6T, arg7T, arg8T, arg9T >::result ( ) const
inline

◆ run()

template<typename fnT , typename arg1T = void, typename arg2T = void, typename arg3T = void, typename arg4T = void, typename arg5T = void, typename arg6T = void, typename arg7T = void, typename arg8T = void, typename arg9T = void>
virtual void madness::TaskFn< fnT, arg1T, arg2T, arg3T, arg4T, arg5T, arg6T, arg7T, arg8T, arg9T >::run ( World world,
const TaskThreadEnv env 
)
inlineprotectedvirtual

Member Data Documentation

◆ arg1_

template<typename fnT , typename arg1T = void, typename arg2T = void, typename arg3T = void, typename arg4T = void, typename arg5T = void, typename arg6T = void, typename arg7T = void, typename arg8T = void, typename arg9T = void>
detail::task_arg<arg1T>::holderT madness::TaskFn< fnT, arg1T, arg2T, arg3T, arg4T, arg5T, arg6T, arg7T, arg8T, arg9T >::arg1_
private

◆ arg2_

template<typename fnT , typename arg1T = void, typename arg2T = void, typename arg3T = void, typename arg4T = void, typename arg5T = void, typename arg6T = void, typename arg7T = void, typename arg8T = void, typename arg9T = void>
detail::task_arg<arg2T>::holderT madness::TaskFn< fnT, arg1T, arg2T, arg3T, arg4T, arg5T, arg6T, arg7T, arg8T, arg9T >::arg2_
private

◆ arg3_

template<typename fnT , typename arg1T = void, typename arg2T = void, typename arg3T = void, typename arg4T = void, typename arg5T = void, typename arg6T = void, typename arg7T = void, typename arg8T = void, typename arg9T = void>
detail::task_arg<arg3T>::holderT madness::TaskFn< fnT, arg1T, arg2T, arg3T, arg4T, arg5T, arg6T, arg7T, arg8T, arg9T >::arg3_
private

◆ arg4_

template<typename fnT , typename arg1T = void, typename arg2T = void, typename arg3T = void, typename arg4T = void, typename arg5T = void, typename arg6T = void, typename arg7T = void, typename arg8T = void, typename arg9T = void>
detail::task_arg<arg4T>::holderT madness::TaskFn< fnT, arg1T, arg2T, arg3T, arg4T, arg5T, arg6T, arg7T, arg8T, arg9T >::arg4_
private

◆ arg5_

template<typename fnT , typename arg1T = void, typename arg2T = void, typename arg3T = void, typename arg4T = void, typename arg5T = void, typename arg6T = void, typename arg7T = void, typename arg8T = void, typename arg9T = void>
detail::task_arg<arg5T>::holderT madness::TaskFn< fnT, arg1T, arg2T, arg3T, arg4T, arg5T, arg6T, arg7T, arg8T, arg9T >::arg5_
private

◆ arg6_

template<typename fnT , typename arg1T = void, typename arg2T = void, typename arg3T = void, typename arg4T = void, typename arg5T = void, typename arg6T = void, typename arg7T = void, typename arg8T = void, typename arg9T = void>
detail::task_arg<arg6T>::holderT madness::TaskFn< fnT, arg1T, arg2T, arg3T, arg4T, arg5T, arg6T, arg7T, arg8T, arg9T >::arg6_
private

◆ arg7_

template<typename fnT , typename arg1T = void, typename arg2T = void, typename arg3T = void, typename arg4T = void, typename arg5T = void, typename arg6T = void, typename arg7T = void, typename arg8T = void, typename arg9T = void>
detail::task_arg<arg7T>::holderT madness::TaskFn< fnT, arg1T, arg2T, arg3T, arg4T, arg5T, arg6T, arg7T, arg8T, arg9T >::arg7_
private

◆ arg8_

template<typename fnT , typename arg1T = void, typename arg2T = void, typename arg3T = void, typename arg4T = void, typename arg5T = void, typename arg6T = void, typename arg7T = void, typename arg8T = void, typename arg9T = void>
detail::task_arg<arg8T>::holderT madness::TaskFn< fnT, arg1T, arg2T, arg3T, arg4T, arg5T, arg6T, arg7T, arg8T, arg9T >::arg8_
private

◆ arg9_

template<typename fnT , typename arg1T = void, typename arg2T = void, typename arg3T = void, typename arg4T = void, typename arg5T = void, typename arg6T = void, typename arg7T = void, typename arg8T = void, typename arg9T = void>
detail::task_arg<arg9T>::holderT madness::TaskFn< fnT, arg1T, arg2T, arg3T, arg4T, arg5T, arg6T, arg7T, arg8T, arg9T >::arg9_
private

◆ arity

template<typename fnT , typename arg1T = void, typename arg2T = void, typename arg3T = void, typename arg4T = void, typename arg5T = void, typename arg6T = void, typename arg7T = void, typename arg8T = void, typename arg9T = void>
const unsigned int madness::TaskFn< fnT, arg1T, arg2T, arg3T, arg4T, arg5T, arg6T, arg7T, arg8T, arg9T >::arity
static
Initial value:
= detail::ArgCount<arg1T, arg2T, arg3T,
arg4T, arg5T, arg6T, arg7T, arg8T, arg9T>::value

The number of arguments given for the function

Note
This may not match the arity of the function if it has default parameter values

Referenced by madness::TaskFn< fnT, arg1T, arg2T, arg3T, arg4T, arg5T, arg6T, arg7T, arg8T, arg9T >::TaskFn().

◆ func_

template<typename fnT , typename arg1T = void, typename arg2T = void, typename arg3T = void, typename arg4T = void, typename arg5T = void, typename arg6T = void, typename arg7T = void, typename arg8T = void, typename arg9T = void>
const functionT madness::TaskFn< fnT, arg1T, arg2T, arg3T, arg4T, arg5T, arg6T, arg7T, arg8T, arg9T >::func_
private

◆ result_

template<typename fnT , typename arg1T = void, typename arg2T = void, typename arg3T = void, typename arg4T = void, typename arg5T = void, typename arg6T = void, typename arg7T = void, typename arg8T = void, typename arg9T = void>
futureT madness::TaskFn< fnT, arg1T, arg2T, arg3T, arg4T, arg5T, arg6T, arg7T, arg8T, arg9T >::result_
private

The documentation for this struct was generated from the following file: