Lumiera
0.pre.03
»edit your freedom«
|
Go to the source code of this file.
Service to support forming and invocation of command instances for use by the UI.
A Steam-Layer command is a functor, which can be parametrised with concrete arguments. Typically, these arguments are to be picked up from the actual usage context in the GUI. This creates the specific twist that possible command instances for invocation can and will be formed during an extended time period, non-deterministically – since the actual context depends on the user interactions. Within the UI, there is a dedicated mechanism to form such command invocations similar to forming sentences of a language (with subject, predication and possibly some further objects). The UI manages several InteractionState instances to observe and pick up contextual state, finally leading to a complete parametrisation of a command. The CommandInstanceManager is a service to support this process; it prepares command instances and provides dedicated instance IDs, which can be stored in the UI and later used to retrieve those instances for invocation. These IDs are created by decorating a base command ID, allowing for several competing invocations to exist at the same time. When finally a given invocation is about to happen, a corresponding registration handle is transfered to the SteamDispatcher, where it is enqueued for execution.
Definition in file command-instance-manager.hpp.
#include "lib/error.hpp"
#include "lib/nocopy.hpp"
#include "steam/control/command.hpp"
#include "steam/control/command-dispatch.hpp"
#include "lib/diff/gen-node.hpp"
#include "lib/symbol.hpp"
#include <unordered_map>
#include <string>
Classes | |
class | CommandInstanceManager |
Maintain a current command instance for parametrisation. More... | |
Namespaces | |
steam | |
Steam-Layer implementation namespace root. | |
steam::control | |
Steam-Layer dispatcher, controller and administrative facilities. | |