file action.hpp

Classes

Type Name
struct eosio::permission_level
struct eosio::action
struct eosio::action_wrapper
Used to wrap an a particular action to simplify the process of other contracts sending inline actions to "wrapped" action. Example:
struct eosio::variant_action_wrapper
struct eosio::inline_dispatcher
struct eosio::inline_dispatcher< void(T::*)(Args...), Name >

Defines

Type Name
define INLINE_ACTION_SENDER3
define INLINE_ACTION_SENDER2
define INLINE_ACTION_SENDER
define SEND_INLINE_ACTION
A macro to simplify calling inline actions.

Detailed Description

Copyright

defined in eos/LICENSE

Defines Documentation

define INLINE_ACTION_SENDER3

#define INLINE_ACTION_SENDER3(CONTRACT_CLASS, FUNCTION_NAME, ACTION_NAME) ::eosio::inline_dispatcher<decltype(&CONTRACT_CLASS::FUNCTION_NAME), ACTION_NAME>::call

define INLINE_ACTION_SENDER2

#define INLINE_ACTION_SENDER2(CONTRACT_CLASS, NAME) INLINE_ACTION_SENDER3( CONTRACT_CLASS, NAME, ::eosio::name(#NAME) )

define INLINE_ACTION_SENDER

#define INLINE_ACTION_SENDER(...) BOOST_PP_OVERLOAD(INLINE_ACTION_SENDER,__VA_ARGS__)(__VA_ARGS__)

define SEND_INLINE_ACTION

#define SEND_INLINE_ACTION(CONTRACT, NAME, ...)\
INLINE_ACTION_SENDER(std::decay_t<decltype(CONTRACT)>, NAME)( (CONTRACT).get_self(),\
BOOST_PP_TUPLE_ENUM(BOOST_PP_VARIADIC_SIZE(__VA_ARGS__), BOOST_PP_VARIADIC_TO_TUPLE(__VA_ARGS__)) );

A macro to simplify calling inline actions.

Send an inline-action from inside a contract. The send inline action macro is intended to simplify the process of calling inline actions. When calling new actions from existing actions EOSIO supports two communication models, inline and deferred. Inline actions are executed as part of the current transaction. This macro creates an Action using the supplied parameters and automatically calls action.send() on this newly created action. Example:

SEND_INLINE_ACTION( *this, transfer, {st.issuer,N(active)}, {st.issuer, to, quantity, memo} );

The example above is taken from eosio.token. This example: uses the passed in, dereferenced this pointer, to call this.get_self() i.e. the eosio.token contract; calls the eosio.token::transfer() action; uses the active permission of the "issuer" account; uses parameters st.issuer, to, quantity and memo. This macro creates an action struct used to 'send()' (call) transfer(account_name from, account_name to, asset quantity, string memo)

Parameters:

  • CONTRACT - The contract to call, which contains the action being sent, maps to the account
  • NAME - The name of the action to be called, maps to a Name
  • ... - The authorising permission, maps to an authorization , followed by the parameters of the action, maps to a data.

The documentation for this class was generated from the following file: libraries/eosiolib/contracts/eosio/action.hpp