37#ifndef CONTROL_COMMAND_SIMPLE_CLOSURE_H
38#define CONTROL_COMMAND_SIMPLE_CLOSURE_H
67 template<
typename SIG>
131 throw err::State{
"Lifecycle error: can't bind functor, "
132 "command arguments not yet provided"
133 ,
LERR_(UNBOUND_ARGUMENTS)};
140 operator string()
const override
142 return "Command-Closure{ arguments="
169 if (
oAh.arguments_->isValid())
Buffer to place and maintain an object instance privately within another object.
object-like record of data.
Visitor to support creating a CommandImpl clone.
Dummy / proof-of-concept implementation of CmdClosure.
ArgHolder::ArgTuple ArgTuple
OpClosure< SIG > ArgHolder
SimpleClosure()
per default, all data within StorageHolder is set up in empty state.
virtual bool isCaptured() const override
does this closure hold captured UNDO state?
virtual void unbindArguments() override
discard any argument data and return to empty state
bool canUndo() const
has undo state capturing been invoked?
void accept(CommandImplCloneBuilder &) const override
assist with creating clone closure without disclosing concrete type
virtual bool isValid() const override
does this closure hold a valid argument tuple?
virtual void bindArguments(Arguments &args) override
assign a new parameter tuple to this
virtual void bindArguments(lib::diff::Rec const ¶mData) override
assign a new set of parameter values to this.
virtual void invoke(CmdFunctor const &func) override
invoke functor using the stored parameter values
void storeTuple(ArgTuple const &argTup)
store a new argument tuple within this StorageHolder, discarding any previously stored arguments
SimpleClosure(SimpleClosure const &oAh)
lib::meta::RebindTupleTypes< ArgTuple >::Seq Args
SimpleClosure(ArgTuple const &args)
Implementation of the concrete (sub)-closure of a command, responsible for invoking the actual comman...
LumieraError< LERR_(STATE)> State
Steam-Layer implementation namespace root.
Helper allowing type erasure while holding the actual object inline.
Abstract foundation for building custom allocation managers.