From 38dd3a738ef83b7b5d4b8a075be5500ce416e946 Mon Sep 17 00:00:00 2001 From: Ichthyostega Date: Wed, 31 Jul 2024 19:20:44 +0200 Subject: [PATCH] Invocation: introduce optional output buffer Doing so directly seems to be a better solution than to inject an OutputBufferProvider; the latter will still be needed, yet will not be part of the regular weaving pattern, but used directly at top-level to obtain the output `BuffHandle`, which is then passed to the `Port::weave()` call --- src/steam/engine/proc-node.hpp | 4 +- src/steam/engine/turnout.hpp | 12 +- src/steam/engine/weaving-pattern-builder.hpp | 11 -- wiki/thinkPad.ichthyo.mm | 122 +++++++++---------- 4 files changed, 71 insertions(+), 78 deletions(-) diff --git a/src/steam/engine/proc-node.hpp b/src/steam/engine/proc-node.hpp index ee571ec1d..e091fe10a 100644 --- a/src/steam/engine/proc-node.hpp +++ b/src/steam/engine/proc-node.hpp @@ -55,6 +55,7 @@ #include "lib/several.hpp" #include +#include @@ -69,6 +70,7 @@ namespace engine { class ProcNode; // typedef ProcNode* PNode; using ProcNodeRef = std::reference_wrapper; + using OptionalBuff = std::optional; /////////////////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1367 : Rebuild the Node Invocation class Port @@ -76,7 +78,7 @@ namespace engine { public: virtual ~Port(); ///< this is an interface - virtual BuffHandle weave (TurnoutSystem&) =0; + virtual BuffHandle weave (TurnoutSystem&, OptionalBuff =std::nullopt) =0; }; using PortRef = std::reference_wrapper; diff --git a/src/steam/engine/turnout.hpp b/src/steam/engine/turnout.hpp index 604e7a98a..06407a713 100644 --- a/src/steam/engine/turnout.hpp +++ b/src/steam/engine/turnout.hpp @@ -442,11 +442,13 @@ namespace engine { } void - shed (Feed& feed) + shed (Feed& feed, OptionalBuff outBuff) { for (uint i=0; i providers; uint resultSlot{0}; - bool isOutput{false}; struct ServiceCtx { @@ -119,16 +118,6 @@ namespace engine { return move(*this); } - SimpleWeavingBuilder - markAsOutputNode() - { - maybeFillDefaultProviders (resultSlot+1); - ENSURE (providers.size() > resultSlot); - providers[resultSlot] = ctx.output; - this->isOutput = true; - return move(*this); - } - auto build() diff --git a/wiki/thinkPad.ichthyo.mm b/wiki/thinkPad.ichthyo.mm index ffb81cf96..662aaae2a 100644 --- a/wiki/thinkPad.ichthyo.mm +++ b/wiki/thinkPad.ichthyo.mm @@ -5609,9 +5609,7 @@ - - - +

Definition: speziell konfigurierte und verdrahtete Teil-Komponenten, @@ -5651,9 +5649,7 @@ - - - +

vorbereitete Grundstrukturen für immer wiederkehrende Setups @@ -5680,9 +5676,7 @@ - - - +

...denn das erscheint mir bodenständiger. @@ -6014,9 +6008,7 @@ - - - +

CSS genügt @@ -6484,9 +6476,7 @@ - - - +

...meint: @@ -7150,9 +7140,7 @@ - - - +

...by interpolation of some wildcards @@ -8516,9 +8504,7 @@ - - - +

m >>= f = \r -> let (x, s) = m r @@ -11623,9 +11609,7 @@ - - - +

Was ist Nav und was ist Iteration-control? @@ -16197,9 +16181,7 @@ - - - +

alloc = limitPerWindow(2) @@ -16223,9 +16205,7 @@ - - - +

im Asset-Panel der jeweiligen Gruppe hinzufügen @@ -16235,9 +16215,7 @@ - - - +

alloc = unlimited @@ -16259,9 +16237,7 @@ - - - +

alloc = limitPerWindow(1) @@ -16289,9 +16265,7 @@ - - - +

Voraussetzung: Anwendbarkeit erkennen @@ -51653,9 +51627,7 @@ - - - +

die Instanz kommt nicht in der Fixture-Queue an @@ -51668,9 +51640,7 @@ - - - +

der Umstand, daß Commands auch ausgeführt werdern können, @@ -51683,9 +51653,7 @@ - - - +

...denn ein Command geht dann in die Queue @@ -51719,9 +51687,7 @@ - - - +

...aus gutem Grund @@ -51759,9 +51725,7 @@ - - - +

aber sich mit einem Refcount verrückt machen..... @@ -51781,9 +51745,7 @@ - - - +

....künftige Weiterung: @@ -51799,9 +51761,7 @@ - - - +

da dieser Zugriff wirklich für jedes Command passiert, @@ -88916,10 +88876,36 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
+ + + + +

+ dieser würde dann nur von top-Level aus so erfolgen, womit der Spezialfall ganz natürlich ausgewählt wäre +

+ + +
+
+ + + + + +

+ ...d.h. daß man das Output-Protokoll hinter einem BufferProvider versteckt, um einen uniformen Zugriff zu ermöglichen. +

+ + +
+
+ + +
@@ -88999,9 +88985,10 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
- + + @@ -89083,6 +89070,19 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
+ + + + +

+ die Ausnahme überhaupt gar nicht über die Konfiguration/Verdrahtung einführen, sondern direkt in den Aufruf +

+ +
+ + + +