44#ifndef CONTROL_COMMAND_DEF_H
45#define CONTROL_COMMAND_DEF_H
72 using std::shared_ptr;
75 using std::placeholders::_1;
76 using std::tuple_size;
93 template<
typename SIG>
96 , CompletedDefinition<SIG>
159 template<
typename SIG,
typename MEM>
209 template<
typename U_SIG>
220 template<
typename SIG>
232 template<
typename FUN2>
286 template<
typename FUN>
Mixin-templates providing arbitrary function call operators and argument binding functions.
constexpr const char * c() const
Token or Atom with distinct identity.
Variation of AcceptArgumentBinding, allowing to control the return type of the generated bind(....
Helper class used solely for defining a Command-Object.
stage::Activation Activation
stage::ImplInstance PImpl
auto operation(FUN operation_to_define)
bool isValid() const
is this a valid command definition? especially.
Command & activate(PImpl &&completedDef)
callback from completed command definition stage: "arm up" the command handle object and register it ...
~CommandDef()
when starting a CommandDef, we immediately place a yet empty Command object into the index,...
Registry managing command implementation objects (Singleton).
shared_ptr< CommandImpl > newCommandImpl(function< SIG_OPER > &operFunctor, function< SIG_CAPT > &captFunctor, function< SIG_UNDO > &undoFunctor)
set up a new command implementation frame
static lib::Depend< CommandRegistry > instance
storage for the singleton factory used to access CommandRegistry
Handle object representing a single Command instance to be used by client code.
Command & bindArg(std::tuple< TYPES... > const &)
HandlingPattern::ID setHandlingPattern(HandlingPattern::ID)
define a handling pattern to be used by default
void activate(shared_ptr< CommandImpl > &&, Symbol cmdID=0)
Case< Ret, Args >::CaptureSig CaptureSig
Any copy and copy construction prohibited.
Top level of the command implementation.
Core of a Steam-Layer command: functor containing the operation to be executed.
Managing command definitions and the storage of individual command objects.
Metaprogramming helpers for deriving the precise function signatures necessary to implement a given c...
Steam-Layer command frontend.
Lumiera error handling (C++ interface).
Metaprogramming tools for detecting and transforming function types.
This header is for including and configuring NoBug.
Lumiera GTK UI implementation root.
shared_ptr< CommandImpl > ImplInstance
< helpers for building up a command definition
UndoDefinition< typename U_SIG::OperateSig, typename U_SIG::Memento > Type
function< Command &(ImplInstance &&)> Activation
type re-binding helper: create a suitable UndoDefinition type, based on the UndoSignature template in...
Steam-Layer implementation namespace root.
Mix-Ins to allow or prohibit various degrees of copying and cloning.
function< SIG > operation_
auto captureUndo(FUN2 how_to_capture_UndoState)
BasicDefinition(Activation const &whenComplete, function< SIG > const &operation)
CompletedDefinition setHandlingPattern(PattID newID)
allow for defining the default execution pattern, which is used by Command::operator()
_Fun< SIG >::Args CmdArgs
void maybeArm_if_zero_parameters()
Helper: automatically "bind" and make executable a command, for the case when the command operation t...
CompletedDefinition(Command &definedCommand)
Command & bindArg(Tuple< CmdArgs > const ¶ms)
allow to bind immediately to a set of arguments.
function< UndoCaptureSig > CaptFunc
CmdType::UndoOp_Sig UndoOperationSig
UndoDefinition(Activation const &whenComplete, OperFunc const &commandOperation, CaptFunc const &undoCapOperation)
function< UndoOperationSig > UndoFunc
Activation activatePrototype_
CommandSignature< SIG, MEM > CmdType
CmdType::CaptureSig UndoCaptureSig
CompletedDefinition< SIG > undoOperation(UndoOperationSig how_to_Undo)
CmdType::OperateSig CommandOperationSig
function< CommandOperationSig > OperFunc
Marker types to indicate a literal string and a Symbol.
CStr cStr(std::string const &rendered)
convenience shortcut: forced conversion to c-String via string.
Metaprogramming with tuples-of-types and the std::tuple record.
Metaprogramming: Helpers for manipulating lists-of-types.
A template metaprogramming technique for manipulating collections of types.
Tiny helper functions and shortcuts to be used everywhere Consider this header to be effectively incl...