30#ifndef STAGE_CTRL_NEXUS_H
31#define STAGE_CTRL_NEXUS_H
43#include <unordered_map>
71 using RoutingTable = std::unordered_map<EntryID, Tangible*, EntryID::UseEmbeddedHash>;
90 entry->second->mark (
mark);
102 this->mark (entry.first,
mark);
125 applicator.consume (move(diff));
159 virtual operator string()
const
174 :
BusTerm(identity, uplink_to_CoreService)
180 ERROR (
stage,
"Some UI components are still connected to the backbone.");
Attachment point to the UI-Bus.
generic builder to apply a diff description to a given target data structure.
connection point at the UI-Bus.
Central hub of the UI-Bus.
Nexus(BusTerm &uplink_to_CoreService, ID identity=lib::idi::EntryID< Nexus >())
virtual bool change(ID subject, MutationMessage &&diff) override
direct a mutation message towards the indicated Tangible.
virtual size_t markAll(GenNode const &mark) override
broadcast a notification to all connected terminal nodes.
virtual BusTerm & routeAdd(ID identity, Tangible &newNode) override
add a new down-link connection to the routing table
virtual void routeDetach(ID node) noexcept override
deactivate and remove a down-link route.
RoutingTable routingTable_
std::unordered_map< EntryID, Tangible *, EntryID::UseEmbeddedHash > RoutingTable
virtual bool mark(ID subject, GenNode const &mark) override
route mark messages down to the individual Tangible.
Interface common to all UI elements of relevance for the Lumiera application.
Any copy and copy construction prohibited.
Bare symbolic and hash ID used for accounting of asset like entries.
Lumiera error handling (C++ interface).
Generic functions to build identification schemes.
Generic Message with an embedded diff, to describe changes to model elements.
string instanceTypeID(const TY *const obj)
designation of an distinct object instance
Lumiera GTK UI implementation root.
Mix-Ins to allow or prohibit various degrees of copying and cloning.
generic data element node within a tree
Opaque message to effect a structural change on a target, which is likewise only known in an abstract...
typed symbolic and hash ID for asset-like position accounting.
Abstraction: a tangible element of the User Interface.
Concrete implementation to apply structural changes to hierarchical data structures.