diff --git a/src/steam/engine/turnout.hpp b/src/steam/engine/turnout.hpp
index 8455268ed..f047aff3a 100644
--- a/src/steam/engine/turnout.hpp
+++ b/src/steam/engine/turnout.hpp
@@ -72,6 +72,7 @@
//#include "lib/linked-elements.hpp"
//#include "lib/util-foreach.hpp"
//#include "lib/iter-adapter.hpp"
+#include "lib/meta/function.hpp"
//#include "lib/itertools.hpp"
//#include "lib/util.hpp"
@@ -253,6 +254,24 @@ namespace engine {
};
/////////////////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1367 : Rebuild the Node Invocation
+ /**
+ * Definition to emulate a _Concept_ for the *Invocation Adapter*.
+ * For each Proc-Asset, the corresponding Library Adapter must provide
+ * such adapters to access the input and result buffers and finally to
+ * invoke the processing functions from this library.
+ * - `connect(MAN&,fanIn,fanOut)` access the _Feed Manifold_ and link the buffers
+ * - `invoke()` invoke the processing function, passing the connected buffers
+ * @tparam MAN the concrete type of the Feed Manifold, holding an array with
+ * input and output _Buffer Handles_
+ */
+ template
die Closure eines Lambdas hängt am Kontext
@@ -877,9 +875,7 @@
konkret:
@@ -909,9 +905,7 @@
Debug: nur ein Element connected
@@ -961,9 +955,7 @@
weil die Abstraktion "UI-Element" eben grade
@@ -2321,9 +2313,7 @@
das Widget hat offensichtlich keine eigene graphische Repräsentation.
@@ -4034,9 +4024,7 @@
...indem der NotificatonService nun vom UI-Manager gemanaged wird :)
@@ -5940,9 +5928,7 @@
Name: WLink
@@ -8282,9 +8268,7 @@
aber es gibt Konsistenzchecks + Exceptions
@@ -11788,9 +11772,7 @@
vorläufige MInimal-Lösung
@@ -82223,6 +82205,35 @@ Date: Thu Apr 20 18:53:17 2023 +0200
das wäre KISS; man würde den gleichen Template-Parameter N heranziehen, der auch die FeedManifold steuert; dieser wird nach dem Schema »eins«, »zwei«, »viele« belegt. Zusätzlich gibt es für diesen Ansatz dann eine dynamische Spec über die tatsächliche Anzahl der Buffer In/Out (die stets <= N wäre)
Im einfachsten Fall wäre das genauso wie die erste Lösung, nur daß der Buffer nicht im Haupt-Objekt liegt (aber natürlich trotzdem im Allocation-Cluster). Allerdings gäbe es hier noch eine weitere, halb-dynamische Lösung: man würde explizit einen Buffer dynamisch allozieren (direkter Allokator-Aufruf, bei dem man die Anzahl Elemente angibt). Das läuft auf einen minimalistischen Spezial-Container hinaus, oder eine ScopedCollection mit Custom-Allocator, oder dann gleich die nächste Lösung....
...dies ist mit wenig Entwicklungs-Aufgand umzusetzen, erfordert dann aber trotzdem eine explizite Verdrahtung des Allocators und damit eine Vermischung zwischen Objekt-Konstruktion und Builder/Allocator.
+ Die FeedManifold hätte in diesem Fall einen zusätzlichen Platz für ein spezielles BuffHandle. Dieses müßte so konfiguriert werden, daß der Typ des InvocationAdapters und seine Konstruktions-Parameter in dem zugehörigen BufferDescriptor „versteckt“ sind. Trotzdem müßte man dann auch noch für den Aufruf nochmal eine Referenz der FeedManifold an die Funktionen des InvocationAdapters durchgeben +
+ + + ++ denn die FeedManifold wird als »eins«, »zwei«, »viele« parametrisiert, und nun kommen hier möglicherweise noch weitere Kombinationen hinzu; ich erwarte allerdings kein volles cartesisiches Produkt, da es i.d.R. einen Zusammenhang gibt zwischen der konkreten Funktion und der Anzahl der Buffer +
+ + + ++ meine Einschätzung: diese Kombinatorik ist unvermeidbar +
+ + + ++ die FeedManifold ist stets fester Bestandteil des InvocationAdapters +
+ + +