27#ifndef CONTROL_COMMAND_OP_CLOSURE_H
28#define CONTROL_COMMAND_OP_CLOSURE_H
78 TY const&
element()
const {
return std::get<idx> (*
this); }
89 dump (ostream& output)
const
91 return BASE::dump (output <<
element() <<
',');
95 template<
class TUP, u
int n>
126 template<
typename SIG>
183 operator string()
const
185 std::ostringstream buff;
186 params_.dump (buff <<
"OpClosure(" );
188 string dumped (buff.str());
Implementation helper to bind Steam-Layer commands with arbitrary argument tuples.
Foundation for a custom allocation manager, tracking the created objects by smart-ptrs.
closure to deal with the actual command operation.
OpClosure(OpClosure &&)=default
ParamStorageTuple params_
OpClosure(OpClosure const &)=default
OpClosure & operator=(OpClosure const &)=delete
we deliberately support immutable types as command arguments
BuildTupleAccessor< ParamAccessor, Args > Builder
Builder::Product ParamStorageTuple
OpClosure(ArgTuple const &args)
void invoke(CmdFunctor const &unboundFunctor)
Core operation: use the embedded argument tuple for invoking a functor.
ParamAccessor(ParamAccessor &&)=default
ParamAccessor(TUP const &tup)
ostream & dump(ostream &output) const
ParamAccessor(ParamAccessor const &)=default
Helper for accessing an individual function parameter.
ostream & dump(ostream &output) const
TY const & element() const
A closure enabling self-contained execution of commands within the SteamDispatcher.
Partial function application and building a complete function closure.
Metaprogramming tools for detecting and transforming function types.
helpers for fail-safe invocation of comparison operations from generic code.
basic_ostream< char, char_traits< char > > ostream
Steam-Layer implementation namespace root.
Metaprogramming with tuples-of-types and the std::tuple record.
Specialised adapter to consume a record of GenNode entries to build a tuple.
Abstract foundation for building custom allocation managers.