MADNESS  0.10.1
Public Types | Public Member Functions | Public Attributes | Protected Member Functions | List of all members
madness::detail::info_base< memfunT > Struct Template Reference

#include <world_object.h>

Inheritance diagram for madness::detail::info_base< memfunT >:
Inheritance graph
[legend]
Collaboration diagram for madness::detail::info_base< memfunT >:
Collaboration graph
[legend]

Public Types

using memfunT_rel_ptr = decltype(archive::to_rel_memfn_ptr(std::declval< memfunT >()))
 

Public Member Functions

memfunT memfun () const
 

Public Attributes

TaskAttributes attr
 
uniqueidT id
 
memfunT_rel_ptr memfun_rel_ptr
 
ProcessID requestor
 

Protected Member Functions

 info_base ()
 
 info_base (const uniqueidT &id, ProcessID requestor, memfunT memfun, const TaskAttributes &attr=TaskAttributes())
 
template<typename Archive >
void serialize (const Archive &ar)
 Serializes a info_base for I/O. More...
 

Detailed Description

template<typename memfunT>
struct madness::detail::info_base< memfunT >

Todo:
Brief description needed.

We cannot use the normal task forwarding stuff here because pending messages can creating tasks are must be correctly handled. The following code does not easily merge with the send handlers since the task layer is more restrictive on the copy capability of arguments.

It is also annoying that info needs to be broken into two parts so that it id and ref are properly serialized. We need to have id correctly aligned via opaque_wrap, but ref cannot be serialized that way. Thus we break the class into two parts.

Info stored for AM method forwarding.

Template Parameters
memfunTDescription needed.
Todo:
Verify & complete; what is AM?

Member Typedef Documentation

◆ memfunT_rel_ptr

template<typename memfunT >
using madness::detail::info_base< memfunT >::memfunT_rel_ptr = decltype(archive::to_rel_memfn_ptr(std::declval<memfunT>()))

Constructor & Destructor Documentation

◆ info_base() [1/2]

template<typename memfunT >
madness::detail::info_base< memfunT >::info_base ( )
inlineprotected

◆ info_base() [2/2]

template<typename memfunT >
madness::detail::info_base< memfunT >::info_base ( const uniqueidT id,
ProcessID  requestor,
memfunT  memfun,
const TaskAttributes attr = TaskAttributes() 
)
inlineprotected
Todo:
Constructor that [brief description needed].
Todo:
Descriptions needed.
Parameters
[in]idDescription needed.
[in]requestorDescription needed.
memfunVerify: The member function to be invoked for the task.
[in]attrDescription needed.

Member Function Documentation

◆ memfun()

template<typename memfunT >
memfunT madness::detail::info_base< memfunT >::memfun ( ) const
inline

◆ serialize()

template<typename memfunT >
template<typename Archive >
void madness::detail::info_base< memfunT >::serialize ( const Archive &  ar)
inlineprotected

Serializes a info_base for I/O.

Template Parameters
ArchiveThe type of I/O archive.
Parameters
[in,out]arThe I/O archive.

References madness::archive::wrap_opaque().

Referenced by madness::detail::info< memfunT >::serialize().

Member Data Documentation

◆ attr

template<typename memfunT >
TaskAttributes madness::detail::info_base< memfunT >::attr

◆ id

template<typename memfunT >
uniqueidT madness::detail::info_base< memfunT >::id
Todo:
Description needed. Context with the "see peek" comment above?

◆ memfun_rel_ptr

template<typename memfunT >
memfunT_rel_ptr madness::detail::info_base< memfunT >::memfun_rel_ptr
Todo:
Description needed.

Referenced by madness::detail::info_base< memfunT >::memfun().

◆ requestor

template<typename memfunT >
ProcessID madness::detail::info_base< memfunT >::requestor
Todo:
Description needed.

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