39 #ifndef STAGE_CTRL_NEXUS_H 40 #define STAGE_CTRL_NEXUS_H 52 #include <unordered_map> 80 typedef std::unordered_map<EntryID, Tangible*, EntryID::UseEmbeddedHash> RoutingTable;
82 RoutingTable routingTable_;
94 auto entry = routingTable_.find (subject);
95 if (
entry == routingTable_.end())
99 entry->second->mark (mark);
110 for (
auto&
entry : routingTable_)
112 return routingTable_.size();
127 auto entry = routingTable_.find (subject);
128 if (
entry == routingTable_.end())
132 Tangible& target = *
entry->second;
134 applicator.consume (move(diff));
153 routingTable_[identity] = &newNode;
164 routingTable_.erase (node);
168 virtual operator string()
const 178 return routingTable_.size();
183 :
BusTerm(identity, uplink_to_CoreService)
189 ERROR (
stage,
"Some UI components are still connected to the backbone.");
Concrete implementation to apply structural changes to hierarchical data structures.
Generic Message with an embedded diff, to describe changes to model elements.
Abstraction: a tangible element of the User Interface.
connection point at the UI-Bus.
virtual bool mark(ID subject, GenNode const &mark) override
route mark messages down to the individual Tangible.
AnyPair entry(Query< TY > const &query, typename WrapReturn< TY >::Wrapper &obj)
helper to simplify creating mock table entries, wrapped correctly
virtual BusTerm & routeAdd(ID identity, Tangible &newNode) override
add a new down-link connection to the routing table
Any copy and copy construction prohibited.
typed symbolic and hash ID for asset-like position accounting.
Opaque message to effect a structural change on a target, which is likewise only known in an abstract...
Generic functions to build identification schemes.
Attachment point to the UI-Bus.
virtual size_t markAll(GenNode const &mark) override
broadcast a notification to all connected terminal nodes.
Mix-Ins to allow or prohibit various degrees of copying and cloning.
virtual bool change(ID subject, MutationMessage &&diff) override
direct a mutation message towards the indicated Tangible.
Lumiera GTK UI implementation root.
virtual void routeDetach(ID node) noexcept override
deactivate and remove a down-link route.
Central hub of the UI-Bus.
BusTerm(BusTerm &&)=default
may be moved, but not copied, due to the embedded identity
Lumiera error handling (C++ interface).
string instanceTypeID(const TY *const obj)
designation of an distinct object instance
Bare symbolic and hash ID used for accounting of asset like entries.
generic data element node within a tree
generic builder to apply a diff description to a given target data structure.