Invocation: integrate passing a parameter-functor into the NodeBuilder

This required some ''type massaging'' to construct the proper follow-up builder type;
other than that, all components work together as expected.

This can be demonstrated both in a direct setup and using the builder.
This commit is contained in:
Fischlurch 2024-12-26 21:42:32 +01:00
parent b46e21e24d
commit 52d2c47439
5 changed files with 294 additions and 100 deletions

View file

@ -350,6 +350,25 @@ namespace engine {
return move(*this);
}
/**
* Embed the explicitly given parameter-functor into the FeedPrototype,
* so that it will be called on each Node invocation to generate parameters
* to be passed into the actual processing function. The TurnoutSystem acts
* as source for the base coordinates, typically the _absolute nominal Time._
* @return adapted PortBuilder marked with the `FeedPrototype` holding \a PFX
*/
template<class PFX>
auto
attachParamFun (PFX paramFunctor)
{
using AdaptedWeavingBuilder = typename WAB::template Adapted<PFX>;
using AdaptedPortBuilder = PortBuilder<POL,DAT,AdaptedWeavingBuilder>;
//
return AdaptedPortBuilder{move(*this)
,weavingBuilder_.adaptParam (move (paramFunctor))
};
}
/*************************************************************//**
* Terminal: complete the Port wiring and return to the node level.

View file

@ -286,6 +286,28 @@ namespace engine {
, prototype_{move (adaptedPrototype)}
{ }
/** type builder for FeedPrototype adapted to another parameter-fun */
template<class PFX>
using AdaptedPrototype = typename PROT::template Adapted<PFX>;
template<class PFX>
using Adapted = WeavingBuilder<POL, AdaptedPrototype<PFX>>;
/** Adapt a parameter-functor into the _Feed Prototype,_
* so that it is invoked whenever a new `FeedManifold` is built.
* @return adapted WeavingBuilder marked with changed `FeedManifold` type.
*/
template<class PFX>
auto
adaptParam (PFX paramFunctor)
{
using AdaptedWeavingBuilder = Adapted<PFX>;
//
return AdaptedWeavingBuilder{move(*this)
,prototype_.moveAdapted (move (paramFunctor))
};
}
WeavingBuilder&&
attachToLeadPort (ProcNode& lead, uint portNr)
{

View file

@ -66,19 +66,32 @@ namespace test {
CHECK (watch(node).isSrc());
CHECK (watch(node).ports().size() == 1);
// Prepare setup to invoke such a Render Node...
CHECK (LIFE_AND_UNIVERSE_4EVER == invokeRenderNode (node));
}
/**
* @internal Helper for Render Node invocation
* - use a DiagnosticBufferProvider to allocate a result buffer
* - assuming that the Node internally does not allocate further buffers
* - pull from Port #0 of the given node, passing the \a nomTime as argument
* - expect the buffer to hold a single `uint` value after invocation
*/
uint
invokeRenderNode (ProcNode& theNode, Time nomTime =Time::ZERO)
{
BufferProvider& provider = DiagnosticBufferProvider::build();
BuffHandle buff = provider.lockBufferFor<long> (-55);
Time nomTime = Time::ZERO;
ProcessKey key{0};
uint port{0};
CHECK (-55 == buff.accessAs<long>());
// Trigger Node invocation...
buff = node.pull (port, buff, nomTime, key);
buff = theNode.pull (port, buff, nomTime, key);
CHECK (LIFE_AND_UNIVERSE_4EVER == buff.accessAs<uint>());
uint result = buff.accessAs<uint>();
buff.release();
return result;
}
@ -88,6 +101,18 @@ namespace test {
void
build_Node_fixedParam()
{
auto procFun = [](ushort param, uint* buff){ *buff = param; };
auto paramFun = [](TurnoutSystem&){ return LIFE_AND_UNIVERSE_4EVER; };
ProcNode node{prepareNode("Test")
.preparePort()
.invoke("fun()",procFun)
.attachParamFun(paramFun)
.completePort()
.build()};
CHECK (LIFE_AND_UNIVERSE_4EVER == invokeRenderNode (node));
UNIMPLEMENTED ("build node with fixed param");
}

View file

@ -17,10 +17,20 @@
#include "lib/test/run.hpp"
#include "steam/engine/proc-node.hpp"
#include "steam/engine/node-builder.hpp"
#include "steam/engine/weaving-pattern.hpp"
#include "steam/engine/turnout-system.hpp"
#include "steam/engine/turnout.hpp"
#include "steam/engine/diagnostic-buffer-provider.hpp"
#include "lib/several-builder.hpp"
#include "lib/test/diagnostic-output.hpp"/////////////////////TODO
//#include "lib/util.hpp"
//using std::string;
using lib::Several;
using lib::makeSeveral;
namespace steam {
@ -42,9 +52,56 @@ namespace test {
UNIMPLEMENTED ("render node pulling source data from vault");
}
/** @test feed parameter data to nodes */
/** @test demonstrate internal setup to invoke a simple output-only function,
* passing an additional invocation parameter generated from a parameter-functor
* - embed the processing-functor and parameter-functor into a FeedPrototype
* - construct the type of the »Weaving Pattern« to use for invocation
* - setup an empty wiring (output-only, thus no predecessor ports)
* - setup a single BuffDesrc for a result puffer to pass to the processing-functor
* - create a Turnout, which implements the Port interface, using the Weaving-Pattern
* - for the actual invocation, setup a TurnoutSystem, initialised with a nominal time
* - invoke the Port::weave() function and retrieve the result from the buffer.
* @remark this is a semi-integrated setup to demonstrate the interplay of the
* internal components within a Render Node, without the _outer shell_
* provided by the NodeBuilder and the ProcNode itself
*/
void
feedParam()
{
auto procFun = [](ushort param, uint* buff){ *buff = param; };
auto paramFun = [](TurnoutSystem&){ return LIFE_AND_UNIVERSE_4EVER; };
auto feedPrototype = FeedPrototype{move(procFun), move(paramFun)};
using Prototype = decltype(feedPrototype);
using WeavingPattern = MediaWeavingPattern<Prototype>;
using TurnoutWeaving = Turnout<WeavingPattern>;
BufferProvider& provider = DiagnosticBufferProvider::build();
Several<PortRef> noLeadPorts; // ◁————————— empty predecessor-port-sequence
Several<BuffDescr> outBuffDescr = makeSeveral({provider.getDescriptor<uint>()})
.build(); // ◁————————— a single output buffer to hold an `uint`
uint resultSlot{0};
TurnoutWeaving port{ProcID::describe ("SimpleNode","procFun()")
, move (noLeadPorts)
, move (outBuffDescr)
, resultSlot
, move (feedPrototype)
};
// setup for invocation...
Time nomTime =Time::ZERO;
TurnoutSystem turnoutSys{nomTime};
BuffHandle result = port.weave (turnoutSys); // ◁————————— paramFun invoked here, then procFun
CHECK (LIFE_AND_UNIVERSE_4EVER == result.accessAs<uint>());// and procFun wrote param-value into result buffer
result.release();
}
/** @test create extended parameter data for use in recursive Node invocation */
void
feedParamNode()
{
TODO ("implement the logic for the TurnoutSystem --> node-base-test.cpp");
TODO ("implement a simple Builder for ParamAgent-Node");

View file

@ -29011,9 +29011,7 @@
</node>
<node CREATED="1555807962932" ID="ID_378229584" MODIFIED="1557498707229" TEXT="bisher hat meine L&#xf6;sung aber grade den einen Vorteil, komplet &quot;ad hoc&quot; zu sein">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
d.h. man erzeugt in einem einzigen Aufruf den VerbPack f&#252;r eine Zielfunktion
@ -29382,9 +29380,7 @@
</node>
<node CREATED="1560612743655" ID="ID_926510331" MODIFIED="1576282358058" TEXT="andererseits ist die Storage schon da....">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
und bleibt anderweitig ungenutzt
@ -29708,9 +29704,7 @@
</node>
<node CREATED="1674247332612" ID="ID_421176912" MODIFIED="1674247406408" TEXT="14+12+82 = 108 sieht viel realistischer aus....">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
...und das w&#252;rde auch erkl&#228;ren, warum trotzdem die Zelle mit der Gl&#252;hbirne (=die direkten Controls) <i>&#252;berhaupt nicht aufgespreitzt </i>wird
@ -29945,9 +29939,7 @@
</body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
hier k&#246;nnen wir nicht exakt rechnen, weil aufsteigende Slopes kombiniert werden &#8212; und die Info dazu kennen wir nur beim Konstruieren des Profils. Daher &#252;bersch&#228;tzt diese H&#246;henangabe die Track-H&#246;he &#8212; bleibt zu sehen, ob das relevant wird
@ -30665,9 +30657,7 @@
<icon BUILTIN="button_cancel"/>
<node CREATED="1553911581890" ID="ID_1856936034" MODIFIED="1557498707229">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
das w&#228;re der <i>logisch richtige</i>&#160;Ort
@ -30956,9 +30946,7 @@
<node CREATED="1566394596499" ID="ID_1873797848" MODIFIED="1566394621437" TEXT="Fortschritts-Proze&#xdf; vs. Erfassen einer Idee"/>
<node CREATED="1566394624791" ID="ID_328891828" MODIFIED="1576282358052" TEXT="das gilt auch f&#xfc;r graphische Oberfl&#xe4;chen">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
die Idee einer graphischen Benutzeroberfl&#228;che hat sich &#252;ber die 60er / 70er-Jahre herausgebildet.
@ -31880,9 +31868,7 @@
</node>
<node COLOR="#435e98" CREATED="1561737065424" ID="ID_840108079" MODIFIED="1562843694504">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
Nein. Es ist ein G<b>D</b>K-Wrapper/Adapter
@ -32285,9 +32271,7 @@
<node CREATED="1564496645266" ID="ID_1195524517" MODIFIED="1564496648014" TEXT="aber">
<node CREATED="1564496671939" ID="ID_447845332" MODIFIED="1564496677574">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
g {
@ -82221,8 +82205,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
...also vor allem die Frage: wirft das jetzt alles &#252;ber den Haufen, kann man es au&#223;en anbauen, oder gar in bestehende Strukturen lediglich hinein-codieren?
</p>
</body>
</html>
</richcontent>
</html></richcontent>
</node>
<node CREATED="1735056823011" ID="ID_256116626" LINK="#ID_1150277906" MODIFIED="1735058896369" TEXT="habe dann aber &#xbb;Parametrisierbarkeit&#xab; als Anforderung nochmal grunds&#xe4;tzlich durchdacht">
<richcontent TYPE="NOTE"><html>
@ -82287,8 +82270,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
denn nun wird in der Regel erst mal aus dem PortBuilderRoot das Binding f&#252;r die Processing-Function angelegt &#10233; PortBuilder &#8212; und erst von dort gibt man dann Parameter an &#10233; modifizierter PortBuilder
</p>
</body>
</html>
</richcontent>
</html></richcontent>
</node>
<node CREATED="1735064779481" ID="ID_1880332085" MODIFIED="1735064805874" TEXT="mu&#xdf; Parametrisierung des eingebetteten WeavingBuilders heben / erg&#xe4;nzen"/>
</node>
@ -82353,9 +82335,51 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node CREATED="1728587027861" ID="ID_1530575925" MODIFIED="1728587061668" TEXT="connectLeadPort(ProcNode&amp;, p)"/>
<node CREATED="1728587063136" ID="ID_26296441" MODIFIED="1728587070363" TEXT="useLeadPort(p)"/>
</node>
<node CREATED="1735068628307" ID="ID_1218064070" MODIFIED="1735070937224" TEXT="Konfiguration f&#xfc;r Parameter">
<arrowlink COLOR="#3d55ca" DESTINATION="ID_470723577" ENDARROW="Default" ENDINCLINATION="-1255;-52;" ID="Arrow_ID_767774106" STARTARROW="None" STARTINCLINATION="464;45;"/>
<node CREATED="1735068628307" ID="ID_1218064070" MODIFIED="1735234502189" TEXT="Konfiguration f&#xfc;r Parameter">
<arrowlink COLOR="#3d55ca" DESTINATION="ID_470723577" ENDARROW="Default" ENDINCLINATION="-1255;-52;" ID="Arrow_ID_767774106" STARTARROW="None" STARTINCLINATION="289;1826;"/>
<linktarget COLOR="#8595a8" DESTINATION="ID_1218064070" ENDARROW="Default" ENDINCLINATION="-31;-184;" ID="Arrow_ID_1907314003" SOURCE="ID_873434155" STARTARROW="None" STARTINCLINATION="-201;17;"/>
<node CREATED="1735181285893" ID="ID_598324724" MODIFIED="1735234161386" TEXT="setParam(PAR)">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
<i>&#187;dropper-Funktion&#171;</i>&#160;verwenden, die einen fest hinterlegten Parameter-Wert f&#252;r jede Invocation in die FeedManifold setzt
</p>
</body>
</html>
</richcontent>
</node>
<node CREATED="1735181310482" ID="ID_222695945" MODIFIED="1735234327441" TEXT="retrieveParam(Accessor)">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
Parameter aus TurnoutSystem per Accessor abholen; ein solcher typ-sicherer Accessor kann &#252;ber das HeteroData-Framework generiert werden, welches als Storage mit verketteten, getypten Datenbl&#246;cken direkt in das TurnoutSystem eingebaut ist. In der Standard-Konfiguration enth&#228;lt so ein TurnoutSystem nur einen ersten Block mit den Invocation-Parameter (absoluteNominalTime und ein processKey). Daher ist diese API-Variante nur interessant, falls vorher schon per Parameter-Node ein erweiterter Datenblock mit zus&#228;tzlichen Parametern irgendwo auf den Stack gelegt wurde
</p>
</body>
</html></richcontent>
</node>
<node CREATED="1735181577102" ID="ID_1506571746" MODIFIED="1735234397711" TEXT="attachAutomation(AUTO)">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
<i>zeitbasierte Funktion</i>&#160;adaptieren, f&#252;r klassische Parameter-Automation.&#160;Der Zeit-Parameter ist dabei die <i>absolute-nominal-Time,</i>&#160; welche aus dem Render-Job stammt und im TurnoutSystem abgelegt ist
</p>
</body>
</html></richcontent>
</node>
<node CREATED="1735181611673" ID="ID_553777161" MODIFIED="1735234478556" TEXT="attachParamFun(FUN)">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
beliebiger Parameter-Funktor, der auf dem TurnoutSystem arbeitet und einen passenden Parameter-Wert produziert; Typisierung wird zur compile-Zeit gepr&#252;ft.
</p>
</body>
</html>
</richcontent>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1720146340213" ID="ID_1871545026" MODIFIED="1720230570516" TEXT="TODO: API f&#xfc;r Mapping">
<icon BUILTIN="flag-yellow"/>
@ -88993,7 +89017,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1733577283965" ID="ID_1305712041" MODIFIED="1734879309061" TEXT="feedParamNode">
<linktarget COLOR="#406cd3" DESTINATION="ID_1305712041" ENDARROW="Default" ENDINCLINATION="-218;836;" ID="Arrow_ID_1532472151" SOURCE="ID_1564169805" STARTARROW="None" STARTINCLINATION="-781;65;"/>
<icon BUILTIN="pencil"/>
<node CREATED="1733577319137" ID="ID_767292434" MODIFIED="1733577338773" TEXT="direkt-verkn&#xfc;pftes Test-Setup ohne Infrastruktur"/>
<node CREATED="1733577319137" ID="ID_767292434" MODIFIED="1735236539768" TEXT="halb-integriertes Test-Setup mit Node-Builder"/>
<node CREATED="1733577444940" ID="ID_494911945" MODIFIED="1733577551783" TEXT="Turnout-System f&#xfc;r den Parameter-Austausch">
<arrowlink COLOR="#406cd3" DESTINATION="ID_932666491" ENDARROW="Default" ENDINCLINATION="-128;9;" ID="Arrow_ID_983808840" STARTARROW="None" STARTINCLINATION="-353;-26;"/>
</node>
@ -91202,7 +91226,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
<node CREATED="1720572417472" ID="ID_1892978300" MODIFIED="1720572435945" TEXT="wenn das wirklich n&#xf6;tig wird (YAGNI)..."/>
<node CREATED="1720572436630" ID="ID_60200424" MODIFIED="1720572460182" TEXT="dann kann man immer noch ein spezielles Weaving-Pattern daf&#xfc;r aufbauen"/>
<node COLOR="#435e98" CREATED="1720572464914" ID="ID_1119846327" MODIFIED="1720737130419">
<node COLOR="#435e98" CREATED="1720572464914" ID="ID_1119846327" MODIFIED="1720572464914">
<richcontent TYPE="NODE"><html>
<head/>
<body>
@ -91955,9 +91979,9 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1734133384146" ID="ID_250842155" MODIFIED="1734755876291" TEXT="Typ-Steuerung im Builder &#xfc;berarbeiten">
<icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1734190947370" ID="ID_765080280" MODIFIED="1734725144619" TEXT="FeedManifold umstellen: std::array &#x27fc; tuple">
<node COLOR="#338800" CREATED="1734133384146" ID="ID_250842155" MODIFIED="1735245057838" TEXT="Typ-Steuerung im Builder &#xfc;berarbeiten">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1734190947370" FOLDED="true" ID="ID_765080280" MODIFIED="1735245088625" TEXT="FeedManifold umstellen: std::array &#x27fc; tuple">
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1734191532632" FOLDED="true" ID="ID_503276878" MODIFIED="1734661895753" TEXT="damit f&#xe4;llt eine starke strukturelle Einschr&#xe4;nkung weg">
<icon BUILTIN="messagebox_warning"/>
@ -92290,7 +92314,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1734276259404" ID="ID_814254927" MODIFIED="1734727667932" TEXT="Typ-Steuerung geht in die FeedManifold">
<node COLOR="#338800" CREATED="1734276259404" FOLDED="true" ID="ID_814254927" MODIFIED="1735245064779" TEXT="Typ-Steuerung geht in die FeedManifold">
<linktarget COLOR="#3f4fb7" DESTINATION="ID_814254927" ENDARROW="Default" ENDINCLINATION="48;-164;" ID="Arrow_ID_584314736" SOURCE="ID_1748820043" STARTARROW="None" STARTINCLINATION="-244;14;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#5b280f" CREATED="1734726665995" ID="ID_1538692458" MODIFIED="1734726948476" TEXT="(Zustand vorher: Steuerung &#xfc;ber Weaving-Pattern &#x27f9; inkonsistent)">
@ -92904,9 +92928,9 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1734739984644" HGAP="-128" ID="ID_366268182" MODIFIED="1734755313572" TEXT="Typ-Anpassungen aus dem Umbau der FeedManifold" VSHIFT="6">
<linktarget COLOR="#fe1573" DESTINATION="ID_366268182" ENDARROW="Default" ENDINCLINATION="-1176;63;" ID="Arrow_ID_39556747" SOURCE="ID_86160844" STARTARROW="None" STARTINCLINATION="-122;6;"/>
<icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1734739984644" HGAP="-128" ID="ID_366268182" MODIFIED="1735244961503" TEXT="Typ-Anpassungen aus dem Umbau der FeedManifold" VSHIFT="6">
<linktarget COLOR="#42c177" DESTINATION="ID_366268182" ENDARROW="Default" ENDINCLINATION="-1176;63;" ID="Arrow_ID_39556747" SOURCE="ID_86160844" STARTARROW="None" STARTINCLINATION="-122;6;"/>
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#ecdbc7" CREATED="1734740397311" ID="ID_1507739045" MODIFIED="1734740758439" STYLE="fork">
<richcontent TYPE="NODE"><html>
<head/>
@ -92931,10 +92955,10 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</html></richcontent>
<icon BUILTIN="forward"/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1734740640102" ID="ID_1102101096" MODIFIED="1734755323681" TEXT="kein direkter Zugriff auf FunSpec / _ProcFun oder sonstige Typ-Logik">
<node COLOR="#435e98" CREATED="1734740640102" ID="ID_1102101096" MODIFIED="1735244953990" TEXT="kein direkter Zugriff auf FunSpec / _ProcFun oder sonstige Typ-Logik">
<icon BUILTIN="yes"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1734740686846" ID="ID_1300454170" MODIFIED="1734755332494" TEXT="es gibt keinen einheitlichen Buffer-Typ mehr">
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1734740686846" FOLDED="true" ID="ID_1300454170" MODIFIED="1735244991308" TEXT="es gibt keinen einheitlichen Buffer-Typ mehr">
<icon BUILTIN="yes"/>
<node COLOR="#338800" CREATED="1734743815124" ID="ID_712364667" MODIFIED="1734755025852">
<richcontent TYPE="NODE"><html>
@ -93126,19 +93150,19 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1734738688196" ID="ID_1867270027" MODIFIED="1734739657681" TEXT="Port/Weaving-Builder mu&#xdf; nun Prototype-cross-Builder unterst&#xfc;tzen">
<linktarget COLOR="#f12245" DESTINATION="ID_1867270027" ENDARROW="Default" ENDINCLINATION="-744;28;" ID="Arrow_ID_569480662" SOURCE="ID_156789117" STARTARROW="None" STARTINCLINATION="-707;32;"/>
<icon BUILTIN="flag-yellow"/>
<node COLOR="#338800" CREATED="1734738688196" FOLDED="true" ID="ID_1867270027" MODIFIED="1735245081623" TEXT="Port/Weaving-Builder mu&#xdf; nun Prototype-cross-Builder unterst&#xfc;tzen">
<linktarget COLOR="#2297f1" DESTINATION="ID_1867270027" ENDARROW="Default" ENDINCLINATION="-744;28;" ID="Arrow_ID_569480662" SOURCE="ID_156789117" STARTARROW="None" STARTINCLINATION="-707;32;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1734738803365" ID="ID_764351741" MODIFIED="1734738888811" TEXT="das realisiert dann die Einbindung von Parameter-Funktoren">
<arrowlink COLOR="#4546d4" DESTINATION="ID_1166367446" ENDARROW="Default" ENDINCLINATION="-4;229;" ID="Arrow_ID_698609212" STARTARROW="None" STARTINCLINATION="62;-202;"/>
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1734739489040" ID="ID_1376996024" MODIFIED="1734739503822" TEXT="&#xc4;nderung: Prototype halten anstelle der Processing-Function">
<icon BUILTIN="flag-yellow"/>
<node COLOR="#338800" CREATED="1734739489040" ID="ID_1376996024" MODIFIED="1735245006078" TEXT="&#xc4;nderung: Prototype halten anstelle der Processing-Function">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1734877435220" ID="ID_600115804" MODIFIED="1734879501751" TEXT="Test im NodeBuilder_test">
<node COLOR="#338800" CREATED="1734877435220" ID="ID_600115804" MODIFIED="1735245069488" TEXT="Test im NodeBuilder_test">
<arrowlink COLOR="#406cd3" DESTINATION="ID_1383452569" ENDARROW="Default" ENDINCLINATION="-1339;91;" ID="Arrow_ID_1946653398" STARTARROW="None" STARTINCLINATION="-1035;100;"/>
<icon BUILTIN="flag-yellow"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
@ -93821,7 +93845,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1734731121493" FOLDED="true" ID="ID_620770826" MODIFIED="1734754350499" TEXT="Konstruktor DirectFunctionInvocation &#x27f6; neues Builder-API">
<node COLOR="#435e98" CREATED="1734731121493" FOLDED="true" ID="ID_620770826" MODIFIED="1735245036477" TEXT="Konstruktor DirectFunctionInvocation &#x27f6; neues Builder-API">
<icon BUILTIN="full-2"/>
<node BACKGROUND_COLOR="#ddd0b6" CREATED="1734731288131" HGAP="24" ID="ID_533282289" MODIFIED="1734739666626" TEXT="das ist ein Argument Pass-through im MediaWeavingPattern" VSHIFT="1">
<richcontent TYPE="NOTE"><html>
@ -93845,8 +93869,8 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<icon BUILTIN="idea"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1734738550502" ID="ID_156789117" MODIFIED="1734739657681" TEXT="Schritt-2 : cross-Builder-API in de Weaving-Builder hineinnehmen">
<arrowlink COLOR="#f12245" DESTINATION="ID_1867270027" ENDARROW="Default" ENDINCLINATION="-744;28;" ID="Arrow_ID_569480662" STARTARROW="None" STARTINCLINATION="-707;32;"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1734738550502" ID="ID_156789117" MODIFIED="1735245032397" TEXT="Schritt-2 : cross-Builder-API in de Weaving-Builder hineinnehmen">
<arrowlink COLOR="#2297f1" DESTINATION="ID_1867270027" ENDARROW="Default" ENDINCLINATION="-744;28;" ID="Arrow_ID_569480662" STARTARROW="None" STARTINCLINATION="-707;32;"/>
<icon BUILTIN="yes"/>
</node>
</node>
@ -93872,8 +93896,8 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<icon BUILTIN="full-5"/>
</node>
</node>
<node COLOR="#338800" CREATED="1734739954996" ID="ID_86160844" MODIFIED="1734831186623" TEXT="Typ-Anpassungen in den Weaving-Builder &#xfc;bernehmen">
<arrowlink COLOR="#fe1573" DESTINATION="ID_366268182" ENDARROW="Default" ENDINCLINATION="-1176;63;" ID="Arrow_ID_39556747" STARTARROW="None" STARTINCLINATION="-122;6;"/>
<node COLOR="#338800" CREATED="1734739954996" ID="ID_86160844" MODIFIED="1735244977781" TEXT="Typ-Anpassungen in den Weaving-Builder &#xfc;bernehmen">
<arrowlink COLOR="#42c177" DESTINATION="ID_366268182" ENDARROW="Default" ENDINCLINATION="-1176;63;" ID="Arrow_ID_39556747" STARTARROW="None" STARTINCLINATION="-122;6;"/>
<linktarget COLOR="#46476c" DESTINATION="ID_86160844" ENDARROW="Default" ENDINCLINATION="-72;-50;" ID="Arrow_ID_245251166" SOURCE="ID_62712804" STARTARROW="None" STARTINCLINATION="-128;6;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1734740175883" ID="ID_1540451" MODIFIED="1734754608354" TEXT="FeedPrototype explizit als Einstiegspunkt in das WeavingPattern">
@ -96941,8 +96965,9 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node CREATED="1735069829251" ID="ID_162016103" MODIFIED="1735069891462" TEXT="jetzt mehr oder weniger festgelegt auf das vereinfachte API-Schema">
<arrowlink COLOR="#596573" DESTINATION="ID_173220882" ENDARROW="Default" ENDINCLINATION="-96;5;" ID="Arrow_ID_940636281" STARTARROW="None" STARTINCLINATION="-238;-12;"/>
</node>
<node CREATED="1735069924196" ID="ID_470723577" MODIFIED="1735070937224" TEXT="Erg&#xe4;nzung: Parameter-Functor einf&#xfc;hren">
<linktarget COLOR="#3d55ca" DESTINATION="ID_470723577" ENDARROW="Default" ENDINCLINATION="-1255;-52;" ID="Arrow_ID_767774106" SOURCE="ID_1218064070" STARTARROW="None" STARTINCLINATION="464;45;"/>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1735069924196" ID="ID_470723577" MODIFIED="1735234502190" TEXT="Erg&#xe4;nzung: Parameter-Functor einf&#xfc;hren">
<linktarget COLOR="#3d55ca" DESTINATION="ID_470723577" ENDARROW="Default" ENDINCLINATION="-1255;-52;" ID="Arrow_ID_767774106" SOURCE="ID_1218064070" STARTARROW="None" STARTINCLINATION="289;1826;"/>
<icon BUILTIN="pencil"/>
<node CREATED="1735070066380" ID="ID_924587023" MODIFIED="1735070076918" TEXT="Dieser liegt im FeedPrototype"/>
<node CREATED="1735070078355" ID="ID_322789953" MODIFIED="1735070093472" TEXT="...der wiederum in das MediaWeavingPattern eingebettet wird"/>
<node CREATED="1735070096196" ID="ID_81762855" MODIFIED="1735070200862">
@ -96953,8 +96978,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
&#10233; also mu&#223; der WeavingBuilder <i>seine Typ-Parameter schwenken </i>k&#246;nnen
</p>
</body>
</html>
</richcontent>
</html></richcontent>
</node>
<node CREATED="1735070296999" ID="ID_1127764055" MODIFIED="1735070342009">
<richcontent TYPE="NODE"><html>
@ -96964,10 +96988,9 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
&#10233; und der ihn umschlie&#223;ende PortBuilder mu&#223; <i>diesen Schwenk mitgehen</i>
</p>
</body>
</html>
</richcontent>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1735071406908" ID="ID_41228375" MODIFIED="1735071452254" TEXT="komplexes Man&#xf6;ver &#x2014; wirklich notwendig?">
<node BACKGROUND_COLOR="#c8bcb6" COLOR="#6e0099" CREATED="1735071406908" ID="ID_41228375" MODIFIED="1735233422802" TEXT="komplexes Man&#xf6;ver &#x2014; wirklich notwendig?">
<icon BUILTIN="help"/>
<node CREATED="1735071458244" ID="ID_122075212" MODIFIED="1735071466991" TEXT="es liegt an dem Typ-basierten Ansatz">
<node CREATED="1735070983365" ID="ID_449846433" MODIFIED="1735071487956" TEXT="WeavingBuilder ist direkt auf FUN (processing-functor) typisiert"/>
@ -96987,8 +97010,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
schon das Ding mit <font face="Monospaced">PatternData</font>&#160;ist <i>grauenhaft</i>&#160;&#8212; und s'werd ois no fui schmlimma
</p>
</body>
</html>
</richcontent>
</html></richcontent>
<icon BUILTIN="smily_bad"/>
</node>
<node COLOR="#b80165" CREATED="1735074049579" ID="ID_915001534" MODIFIED="1735074428091" TEXT="einfach fressen &#x2014; geht doch...">
@ -97009,7 +97031,8 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="smiley-angry"/>
</node>
<node CREATED="1735073143945" ID="ID_1381147591" MODIFIED="1735073159419" TEXT="einen Paradigmen-Wechsel g&#xe4;be es aber nicht umsonst....">
<node COLOR="#5b280f" CREATED="1735073143945" FOLDED="true" ID="ID_1381147591" MODIFIED="1735232744666" TEXT="einen Paradigmen-Wechsel g&#xe4;be es aber nicht umsonst....">
<icon BUILTIN="clanbomber"/>
<node CREATED="1735073161567" ID="ID_230609721" MODIFIED="1735073219920" TEXT="Alternative w&#xe4;re: auf virtuellen heap-basiertes Detail-Build umstellen"/>
<node CREATED="1735073232645" ID="ID_1626158697" MODIFIED="1735073245555" TEXT="der Weaving-Builder w&#xfc;rde dadurch opaque">
<node CREATED="1735073257882" ID="ID_550679913" MODIFIED="1735073284442" TEXT="Port-Builder w&#xfc;rde nur noch ein klassisches OO-Interface benutzen"/>
@ -97050,7 +97073,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</html></richcontent>
</node>
<node CREATED="1735074010716" ID="ID_497894747" MODIFIED="1735074029461" TEXT="&#x27f9; bereits die delayed-build-&#x3bb; stellen eine partielle Type-Erasure dar"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1735076701058" ID="ID_1594497500" MODIFIED="1735076753244" TEXT="aber diese selbst m&#xfc;&#xdf;ten dann im voll expandierten Typ-Kontext liegen">
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1735076701058" FOLDED="true" ID="ID_1594497500" MODIFIED="1735232740551" TEXT="aber diese selbst m&#xfc;&#xdf;ten dann im voll expandierten Typ-Kontext liegen">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1735076808467" ID="ID_1987141221" MODIFIED="1735076827931" TEXT="das ist nur ein ganz schmales &#xbb;Fenster&#xab;"/>
<node CREATED="1735076958492" ID="ID_1923985971" MODIFIED="1735076984471" TEXT="bedeutet: der Builder-Funktor selber w&#xe4;re nochmal zu virtualisieren"/>
@ -97070,11 +97093,13 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<icon BUILTIN="smiley-neutral"/>
</node>
<node CREATED="1735077551417" ID="ID_702667838" MODIFIED="1735077575560" TEXT="w&#xe4;re dann in jedem Fall ein extern extrahiertes Konzept">
<node CREATED="1735077582283" ID="ID_1419937742" MODIFIED="1735077594733" TEXT="Idee: PatternPrototype">
<node COLOR="#5b280f" CREATED="1735077582283" ID="ID_1419937742" MODIFIED="1735232678111" TEXT="Idee: PatternPrototype">
<icon BUILTIN="idea"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1735077668360" ID="ID_1572740856" MODIFIED="1735077684410" TEXT="ein Prototype tr&#xe4;gt verdeckt den Zieltyp"/>
<node CREATED="1735077702715" ID="ID_106957283" MODIFIED="1735077739698" TEXT="auf dieses lassen sich &#xbb;monadische&#xab; Operationen anwenden"/>
<node CREATED="1735077817175" ID="ID_1781671844" MODIFIED="1735077828703" TEXT="am Ende erstellt man einen &#xbb;Dropper&#xab;"/>
<node COLOR="#5b280f" CREATED="1735077629430" ID="ID_1074716100" MODIFIED="1735087947887" TEXT="Implementiert als Monaden-PImpl-Closure">
<node COLOR="#5b280f" CREATED="1735077629430" FOLDED="true" ID="ID_1074716100" MODIFIED="1735232655233" TEXT="Implementiert als Monaden-PImpl-Closure">
<arrowlink COLOR="#8f0248" DESTINATION="ID_617959831" ENDARROW="Default" ENDINCLINATION="-297;13;" ID="Arrow_ID_1098066299" STARTARROW="None" STARTINCLINATION="-44;189;"/>
<icon BUILTIN="smiley-oh"/>
<icon BUILTIN="button_cancel"/>
@ -97208,8 +97233,7 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
aber das w&#228;re das <b>eigentliche Problem</b>
</p>
</body>
</html>
</richcontent>
</html></richcontent>
<linktarget COLOR="#e60333" DESTINATION="ID_241035152" ENDARROW="Default" ENDINCLINATION="10;109;" ID="Arrow_ID_933810453" SOURCE="ID_1041065646" STARTARROW="None" STARTINCLINATION="185;0;"/>
</node>
</node>
@ -97258,8 +97282,7 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
insofern hier n&#228;mlich bereits akzidentelle Komplexit&#228;t generiert wird
</p>
</body>
</html>
</richcontent>
</html></richcontent>
</node>
<node CREATED="1735088698388" ID="ID_83306944" MODIFIED="1735088798351" TEXT="sie gr&#xfc;ndet nicht in einer unterliegenden Natur der Sache">
<richcontent TYPE="NOTE"><html>
@ -97269,8 +97292,7 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
Man kann die Struktur zwar extrahieren, aber die extrahierte Version l&#228;&#223;t sich nicht sinnvoll in einfachereren Begriffen darstellen
</p>
</body>
</html>
</richcontent>
</html></richcontent>
</node>
<node CREATED="1735088715306" ID="ID_263857744" MODIFIED="1735088861764" TEXT="sie ist nur im speziellen Fall anwendbar und erh&#xf6;ht dessen Komplexit&#xe4;t">
<richcontent TYPE="NOTE"><html>
@ -97280,8 +97302,7 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
...insofern hier Komplexit&#228;t nicht durch eine Abstraktion reduziert wurde, sondern nur durch Modularisierbarkeit und Zwischenschritte beherrschbarer gemacht wird; aber dies wird durch Generieren zus&#228;tzlicher Komplexit&#228;t erkauft, was den Ansatz insgesamt in Frage stellt
</p>
</body>
</html>
</richcontent>
</html></richcontent>
</node>
</node>
</node>
@ -97289,7 +97310,7 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
</node>
</node>
</node>
<node CREATED="1735088890536" ID="ID_1912509930" MODIFIED="1735088910847">
<node COLOR="#435e98" CREATED="1735088890536" ID="ID_1912509930" MODIFIED="1735232777352">
<richcontent TYPE="NODE"><html>
<head/>
<body>
@ -97297,19 +97318,24 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
<u>Fazit</u>: <i>bite the bullet...</i>
</p>
</body>
</html>
</richcontent>
<node CREATED="1735088938963" ID="ID_526104668" MODIFIED="1735088951323" TEXT="im Grunde haben wir hier ein N x M - Kontext-Problem"/>
<node CREATED="1735088953058" ID="ID_214266111" MODIFIED="1735089069119" TEXT="so etwas l&#xe4;&#xdf;t sich nicht durch Virtualisierung einkapseln">
</html></richcontent>
<icon BUILTIN="forward"/>
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#99006e" CREATED="1735088938963" ID="ID_526104668" MODIFIED="1735232794532" TEXT="im Grunde haben wir hier ein N x M - Kontext-Problem"/>
<node COLOR="#5b280f" CREATED="1735088953058" ID="ID_214266111" MODIFIED="1735232812123" TEXT="so etwas l&#xe4;&#xdf;t sich nicht durch Virtualisierung einkapseln">
<arrowlink COLOR="#808b95" DESTINATION="ID_598416611" ENDARROW="Default" ENDINCLINATION="-413;31;" ID="Arrow_ID_278502135" STARTARROW="None" STARTINCLINATION="193;10;"/>
<icon BUILTIN="closed"/>
</node>
<node COLOR="#435e98" CREATED="1735088975232" ID="ID_679771852" MODIFIED="1735232966980" TEXT="Erweiterung des getypten Schemas erscheint dem gegen&#xfc;ber als das kleinere &#xdc;bel">
<arrowlink COLOR="#2f4dc3" DESTINATION="ID_1895704384" ENDARROW="Default" ENDINCLINATION="3;-33;" ID="Arrow_ID_768321284" STARTARROW="None" STARTINCLINATION="-86;3;"/>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1735088975232" ID="ID_679771852" MODIFIED="1735177124298" TEXT="Erweiterung des getypten Schemas erscheint dem gegen&#xfc;ber als das kleinere &#xdc;bel"/>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1735179976719" ID="ID_322289273" MODIFIED="1735186473122" TEXT="akzeptiert: das kleinste &#xdc;bel realisieren">
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1735180082021" ID="ID_1895704384" MODIFIED="1735186470454" TEXT="Umstellung im WeavingBuilder">
<icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1735180082021" ID="ID_1895704384" MODIFIED="1735244906941" TEXT="Umstellung im WeavingBuilder">
<linktarget COLOR="#2f4dc3" DESTINATION="ID_1895704384" ENDARROW="Default" ENDINCLINATION="3;-33;" ID="Arrow_ID_768321284" SOURCE="ID_679771852" STARTARROW="None" STARTINCLINATION="-86;3;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1735180095165" ID="ID_365437797" MODIFIED="1735186464181" TEXT="Funktion auf Prototype heben">
<icon BUILTIN="button_ok"/>
</node>
@ -97319,17 +97345,18 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
<node COLOR="#338800" CREATED="1735180141362" ID="ID_267016965" MODIFIED="1735187728844" TEXT="cross-ctor zum Wechsel des Prototype coden">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1735180184969" ID="ID_1122594888" MODIFIED="1735180355412" TEXT="builder-API: adaptParam (FUN)">
<icon BUILTIN="flag-yellow"/>
<node COLOR="#338800" CREATED="1735180184969" ID="ID_1122594888" MODIFIED="1735233392749" TEXT="builder-API: adaptParam (FUN)">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1735180359089" ID="ID_1172912698" MODIFIED="1735187755366" TEXT="Umstellung im PortBuilder">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1735180359089" ID="ID_1172912698" MODIFIED="1735244903164" TEXT="Umstellung im PortBuilder">
<icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1735181212051" ID="ID_125700986" MODIFIED="1735188770190" TEXT="cross-ctor zum Wechsel des WeavingBuilder">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1735181233629" ID="ID_1985191791" MODIFIED="1735181641405" TEXT="builder-API">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1735181233629" ID="ID_1985191791" MODIFIED="1735236214569" TEXT="builder-API">
<linktarget COLOR="#3c90e2" DESTINATION="ID_1985191791" ENDARROW="Default" ENDINCLINATION="-235;385;" ID="Arrow_ID_1852952623" SOURCE="ID_1227470787" STARTARROW="None" STARTINCLINATION="512;27;"/>
<icon BUILTIN="pencil"/>
<node CREATED="1735181285893" ID="ID_922294490" MODIFIED="1735181304690" TEXT="setParam(PAR)">
<node CREATED="1735181646685" HGAP="92" ID="ID_537303944" MODIFIED="1735181686682" TEXT="feste dropper-Funktion verwenden" VSHIFT="-1">
<font NAME="SansSerif" SIZE="10"/>
@ -97345,7 +97372,7 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
<font NAME="SansSerif" SIZE="10"/>
</node>
</node>
<node CREATED="1735181611673" ID="ID_55961674" MODIFIED="1735181622980" TEXT="attachParamFun(FUN)">
<node COLOR="#435e98" CREATED="1735181611673" ID="ID_55961674" MODIFIED="1735234025195" TEXT="attachParamFun(FUN)">
<node CREATED="1735181646685" HGAP="47" ID="ID_1130785304" MODIFIED="1735181798380" TEXT="beliebige Funktion auf TurnoutSystem" VSHIFT="-1">
<font NAME="SansSerif" SIZE="10"/>
</node>
@ -97353,6 +97380,23 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
</node>
</node>
</node>
<node CREATED="1735235825819" ID="ID_340685726" MODIFIED="1735235829758" TEXT="Testf&#xe4;lle">
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1735235055662" ID="ID_895934657" LINK="#ID_1383452569" MODIFIED="1735235856739" TEXT="Parameterbehandlung im Node-Builder">
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1735245149850" ID="ID_1185930169" MODIFIED="1735245179039" TEXT="&#xbb;Dropper&#xab; f&#xfc;r fest konfigurierte Parameter-Werte">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1735245164581" ID="ID_1648154346" MODIFIED="1735245175431" TEXT="Automations-Funktion &#xfc;ber die nominalTime">
<icon BUILTIN="hourglass"/>
</node>
</node>
<node COLOR="#338800" CREATED="1735235242744" ID="ID_387030013" LINK="#ID_1817704532" MODIFIED="1735244888823" TEXT="Node-Feed: Parameter Data">
<icon BUILTIN="button_ok"/>
<node CREATED="1735244535909" ID="ID_1449241849" MODIFIED="1735244566899" TEXT="hier einmal ein Turnout explizit &#x201e;zu Fu&#xdf;&#x201c; gebaut..."/>
<node CREATED="1735244568320" ID="ID_1640313609" MODIFIED="1735244582210" TEXT="...und auch direkt aufgerufen, ohne umschli&#xdf;ene ProcNode"/>
</node>
<node CREATED="1735235299769" ID="ID_1559115287" LINK="#ID_1305712041" MODIFIED="1735235841042" TEXT="Node-Feed: ParamNode &#x27f6; extraParams"/>
</node>
</node>
</node>
</node>
@ -97379,8 +97423,7 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
Das Pattern hei&#223;t jetzt auch MediaWeavingPattern und ist zum Standard geworden; der Build-Mechanismus im Port-Builder k&#246;nnte jedes <i>dazu kompatible Pattern</i>&#160;&#160;ebenfalls handhaben
</p>
</body>
</html>
</richcontent>
</html></richcontent>
</node>
</node>
<node CREATED="1728500461049" ID="ID_187214045" MODIFIED="1728500587071" TEXT="die Konvention ist : Turnout baut direkt auf WeavingPattern auf">
@ -97420,11 +97463,36 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1734139914450" ID="ID_284201304" MODIFIED="1734141541281" TEXT="Steuerung der Parameter-Verarbeitung">
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1734139914450" ID="ID_284201304" MODIFIED="1735245128858" TEXT="Steuerung der Parameter-Verarbeitung">
<linktarget COLOR="#d90755" DESTINATION="ID_284201304" ENDARROW="Default" ENDINCLINATION="428;-33;" ID="Arrow_ID_1685749535" SOURCE="ID_1127056731" STARTARROW="None" STARTINCLINATION="-2201;158;"/>
<linktarget COLOR="#a71e73" DESTINATION="ID_284201304" ENDARROW="Default" ENDINCLINATION="-170;12;" ID="Arrow_ID_170732865" SOURCE="ID_616768316" STARTARROW="None" STARTINCLINATION="150;11;"/>
<linktarget COLOR="#c33786" DESTINATION="ID_284201304" ENDARROW="Default" ENDINCLINATION="-149;10;" ID="Arrow_ID_1396373869" SOURCE="ID_1184999563" STARTARROW="None" STARTINCLINATION="335;-34;"/>
<icon BUILTIN="flag-yellow"/>
<icon BUILTIN="pencil"/>
<node CREATED="1735236115714" ID="ID_536087493" MODIFIED="1735236180383">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
erfolgt <i>als Teil der Konfiguration</i>&#160;eines Ports
</p>
</body>
</html>
</richcontent>
</node>
<node CREATED="1735236128667" ID="ID_1783311284" MODIFIED="1735236188426">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
also <i>nachdem</i>&#160;man den Processing-Functor gegeben hat
</p>
</body>
</html>
</richcontent>
</node>
<node CREATED="1735236141057" ID="ID_1227470787" MODIFIED="1735236224224" TEXT="feste oder dynamische Parameter werden unterst&#xfc;tzt">
<arrowlink COLOR="#3c90e2" DESTINATION="ID_1985191791" ENDARROW="Default" ENDINCLINATION="-235;385;" ID="Arrow_ID_1852952623" STARTARROW="None" STARTINCLINATION="512;27;"/>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1734139929944" ID="ID_1156222347" MODIFIED="1734140153468" TEXT="Steuerung von In/Out-Buffer Varianten">
<linktarget COLOR="#8f3ed0" DESTINATION="ID_1156222347" ENDARROW="Default" ENDINCLINATION="-157;11;" ID="Arrow_ID_143800943" SOURCE="ID_473579786" STARTARROW="None" STARTINCLINATION="326;-28;"/>
@ -97476,8 +97544,11 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
<font NAME="SansSerif" SIZE="11"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1733428913753" ID="ID_1660514427" MODIFIED="1734877053789" TEXT="FeedPrototype mit Param-Funktor">
<icon BUILTIN="flag-yellow"/>
<node COLOR="#338800" CREATED="1733428913753" ID="ID_1660514427" MODIFIED="1735245118188" TEXT="FeedPrototype mit Param-Funktor">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1735236037343" ID="ID_232252857" LINK="#ID_1507739045" MODIFIED="1735236098239" TEXT="erm&#xf6;glicht durch Umbau der FeedManifold">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1733428924098" ID="ID_616768316" MODIFIED="1734140026717" TEXT="diese per Builder erzeugen k&#xf6;nnen">
<arrowlink COLOR="#a71e73" DESTINATION="ID_284201304" ENDARROW="Default" ENDINCLINATION="-170;12;" ID="Arrow_ID_170732865" STARTARROW="None" STARTINCLINATION="150;11;"/>