diff --git a/src/steam/engine/node-builder.hpp b/src/steam/engine/node-builder.hpp index e3c0320ec..43dbd367b 100644 --- a/src/steam/engine/node-builder.hpp +++ b/src/steam/engine/node-builder.hpp @@ -92,6 +92,7 @@ #include "steam/engine/proc-node.hpp" +#include "steam/engine/turnout.hpp" #include "lib/several-builder.hpp" #include "lib/nocopy.hpp" @@ -176,6 +177,7 @@ namespace engine { using PortData = DataBuilder; using LeadRefs = DataBuilder; + protected: PortData ports_; LeadRefs leads_; @@ -195,12 +197,8 @@ namespace engine { } - void //////////////////////////////////////////////////////////OOO return type - preparePort () - { - UNIMPLEMENTED ("recursively enter detailed setup of a single processing port"); -// return move(*this); - } + /** recursively enter detailed setup of a single processing port */ + PortBuilder preparePort (); /** @@ -245,7 +243,6 @@ namespace engine { , util::MoveOnly { public: - PortBuilder inSlots (uint s) { @@ -271,14 +268,36 @@ namespace engine { /****************************************************//** * Terminal: complete the Port wiring and return to the node level. */ - void //////////////////////////////////////////////////////////OOO return type + NodeBuilder completePort() { - UNIMPLEMENTED("finish and link-in port definition"); - } + //////////////////////////////////////////////////////////OOO finish port data setup here + return static_cast&&> (*this); + } // slice away the subclass + + private: + PortBuilder(NodeBuilder&& anchor) + { } + + friend PortBuilder NodeBuilder::preparePort(); }; + /** + * @remark while _logically_ this builder-function _descends_ into the + * definition of a port, for the implementation we _wrap_ the existing + * NodeBuilder and layer a PortBuilder subclass „on top“ — thereby shadowing + * the enclosed original builder temporarily; the terminal builder operation + * PortBuilder::completePort() will unwrap and return the original NodeBuilder. + */ + template + inline PortBuilder + NodeBuilder::preparePort () + { + return PortBuilder{move(*this)}; + } + + /** * Entrance point for building actual Render Node Connectivity (Level-2) * @note when using a custom allocator, the first follow-up builder function diff --git a/src/steam/engine/turnout.hpp b/src/steam/engine/turnout.hpp index 8245213e9..49f37348b 100644 --- a/src/steam/engine/turnout.hpp +++ b/src/steam/engine/turnout.hpp @@ -139,6 +139,7 @@ namespace engine { * the invocation sequence actually prepares to call the process function of this * ProcNode, a buffer table chunk is allocated by the StateProxy and wired in. */ +#if false /////////////////////////////////////////////////////////////////////////////////////////////////////////////UNIMPLEMENTED :: TICKET #1367 : Rebuild the Node Invocation struct Invocation : StateAdapter { @@ -213,6 +214,7 @@ namespace engine { virtual BuffHandle allocateBuffer (const lumiera::StreamType* ty) { return current_.allocateBuffer(ty); } }; +#endif /////////////////////////////////////////////////////////////////////////////////////////////////////////////UNIMPLEMENTED :: TICKET #1367 : Rebuild the Node Invocation /** @@ -251,6 +253,19 @@ namespace engine { }; /////////////////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1367 : Rebuild the Node Invocation + class Turnout + : public Port + //////////////////////////////OOO non-copyable? move-only?? + { + public: + + TurnoutSystem + enactTurnout() override + { + UNIMPLEMENTED ("generate next layer of the TurnoutSystem on the stack"); + } + }; + }}// namespace steam::engine diff --git a/wiki/thinkPad.ichthyo.mm b/wiki/thinkPad.ichthyo.mm index a09e7e603..041c5f1fc 100644 --- a/wiki/thinkPad.ichthyo.mm +++ b/wiki/thinkPad.ichthyo.mm @@ -381,9 +381,7 @@ - - - +

...weil es dadurch passieren könnte, @@ -483,9 +481,7 @@ - - - +

gemeint ist: keine volle bidirektionale Connection, @@ -504,9 +500,7 @@ - - - +

nur ein Tangible kann downlink-Nachrichten sinnvoll empfangen; @@ -1514,9 +1508,7 @@ - - - +

Habe nochmal alle Aufrufe im Einzelnen durchgeprüft @@ -2780,9 +2772,7 @@ - - - +

Removes @widget from @container. @widget must be inside @container. @@ -4328,9 +4318,7 @@ - - - +

Proc: SessionCommand @@ -4346,9 +4334,7 @@ - - - +

setzt aktivierten Dispatcher zwingend voraus @@ -4356,9 +4342,7 @@ - - - +

es genügt definitiv nicht, nur die Dispatcher-Komponente(Schnittstelle) erreichen zu können. @@ -6442,9 +6426,7 @@ - - - +

siehe guifacade.cpp @@ -9310,9 +9292,7 @@ - - - +

....und das ist alarmierend, @@ -27305,9 +27285,7 @@ - - - +

es läuft auf eine Sortier-Operation hinaus @@ -86379,7 +86357,8 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
- + + @@ -86788,7 +86767,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
- + @@ -86857,7 +86836,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
- + @@ -87391,10 +87370,9 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
- + - @@ -87538,8 +87516,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
nicht als template-template-Parameter...

- -
+ @@ -87547,8 +87524,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
...denn sonst wird man die ALO, INIT... - Parameter nicht los, sondern sie werden Teil des Builder-Typs (wir wollen aber, daß sie nur implizit in den Builder-Typ eingehen)

- -
+
@@ -87560,8 +87536,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
auf das muß sich der Builder abstützen, nicht auf den lib::SeveralBuilder oder dessen Policy

- - +
@@ -87571,8 +87546,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
...nicht versuchen, die beiden zu verbinden oder irgendwie durch default-Parameter ausdrücken

- -
+
@@ -87582,8 +87556,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
tja... und jedes nested template braucht ein Präfix "template <fun>" in der Syntax

- -
+
@@ -87617,6 +87590,24 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
+ + + + + + + + + + + + + + + + + + @@ -87639,8 +87630,8 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
- - + + @@ -87722,7 +87713,8 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
- + + @@ -87858,6 +87850,9 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
+ + +