HPX_PLAIN_ACTION — Defines a plain action type based on the given function func and registers it with HPX.


// In header: <hpx/runtime/actions/plain_action.hpp>



The macro HPX_PLAIN_ACTION can be used to define a plain action (e.g. an action encapsulating a global or free function) based on the given function func. It defines the action type name representing the given function. This macro additionally registers the newly define action type with HPX.

The parameter func is a global or free (non-member) function which should be encapsulated into a plain action. The parameter name is the name of the action type defined by this macro.


*      namespace app
*      {
*          void some_global_function(double d)
*          {
*              cout << d;
*          }
*      }
*      // This will define the action type 'some_global_action' which represents
*      // the function 'app::some_global_function'.
*      HPX_PLAIN_ACTION(app::some_global_function, some_global_action);
[Note] Note

The macro HPX_PLAIN_ACTION has to be used at global namespace even if the wrapped function is located in some other namespace. The newly defined action type is placed into the global namespace as well.

The macro HPX_PLAIN_ACTION_ID can be used with 1, 2, or 3 arguments. The second and third arguments are optional. The default value for the second argument (the typename of the defined action) is derived from the name of the function (as passed as the first argument) by appending '_action'. The second argument can be omitted only if the first argument with an appended suffix '_action' resolves to a valid, unqualified C++ type name. The default value for the third argument is hpx::components::factory_check.

Only one of the forms of this macro HPX_PLAIN_ACTION or HPX_PLAIN_ACTION_ID should be used for a particular action, never both.