Invocation: now able to code verifications for the demo-network

Using a Node network with
 * two source nodes
 * one of them chained up linearly with a filter node
 * then on top a mix node to combine both chains

Can now verify the generated port specs and verify proper connections
at node level and at port level
This commit is contained in:
Fischlurch 2025-02-08 19:39:00 +01:00
parent 72d7986b5e
commit dbbdac02c4
4 changed files with 417 additions and 93 deletions

View file

@ -396,8 +396,8 @@ namespace engine {
connectLeadPort (ProcNode& leadNode, uint port)
{
uint knownEntry{0};
for (auto& lead : lib::IndexIter{_Par::leads_})
if (util::isSameObject (leadNode, lead))
for (auto& lead : lib::IndexIter{_Par::leads_}) // leads_ holds ref-wrappers
if (util::isSameObject (leadNode, lead.get()))
break;
else
++knownEntry;

View file

@ -308,7 +308,8 @@ namespace engine {
ProcNode& p{leads.front().get()};
buffer << "◁—"
<< procID(p).genNodeName() // show immediate predecessor
<< procID(p).genSrcSpec(leads); // and behind that recursively the source(s)
<< procID(p).genSrcSpec( // ...followed by it's source(s)
watch(p).leads());
}
return buffer.str();
}
@ -322,7 +323,7 @@ namespace engine {
explore(leads)
.expandAll([](ProcNode& n){ return explore(watch(n).leads()); }) // depth-first expand all predecessors
.filter ([](ProcNode& n){ return watch(n).isSrc(); }) // but retain only leafs (≙ source nodes)
.transform([](ProcNode& n){ return procID(n).nodeName_;}) // render the node-symbol of each src
.transform([](ProcNode& n){ return procID(n).nodeName_;}) // render the namespace and name of each src
.deduplicate()) // sort and deduplicate
+ "}";
}

View file

@ -128,7 +128,7 @@ namespace test {
auto src_op = [](int param, int* res){ *res = param; };
// A Node with two (source) ports
ProcNode n1{prepareNode("n1")
ProcNode n1s{prepareNode("srcA")
.preparePort()
.invoke("a(int)", src_op)
.setParam(5)
@ -141,19 +141,19 @@ namespace test {
// A node to add some "processing" to each data chain
auto add1_op = [](int* src, int* res){ *res = 1 + *src; };
ProcNode n2{prepareNode("n2")
ProcNode n1f{prepareNode("filterA")
.preparePort()
.invoke("+1(int)(int)", add1_op)
.connectLead(n1)
.connectLead(n1s)
.completePort()
.preparePort()
.invoke("+1(int)(int)", add1_op)
.connectLead(n1)
.connectLead(n1s)
.completePort()
.build()};
// Need a secondary source, this time with three ports
ProcNode n1b{prepareNode("n1b")
ProcNode n2s{prepareNode("srcB")
.preparePort()
.invoke("a(int)", src_op)
.setParam(7)
@ -174,36 +174,73 @@ namespace test {
// Wiring for the Mix, building up three ports
// Since the first source-chain has only two ports,
// for the third result port we'll re-use the second source
ProcNode n3{prepareNode("n2")
ProcNode mix{prepareNode("mix")
.preparePort()
.invoke("A.mix(int/2)(int)", mix_op)
.connectLead(n2)
.connectLead(n1b)
.invoke("a-mix(int/2)(int)", mix_op)
.connectLead(n1f)
.connectLead(n2s)
.completePort()
.preparePort()
.invoke("B.mix(int/2)(int)", mix_op)
.connectLead(n2)
.connectLead(n1b)
.invoke("b-mix(int/2)(int)", mix_op)
.connectLead(n1f)
.connectLead(n2s)
.completePort()
.preparePort()
.invoke("C.mix(int/2)(int)", mix_op)
.connectLeadPort(n2,1)
.connectLead(n1b)
.invoke("c-mix(int/2)(int)", mix_op)
.connectLeadPort(n1f,1)
.connectLead(n2s)
.completePort()
.build()};
SHOW_EXPR(watch(n1).getNodeSpec())
SHOW_EXPR(watch(n1).getPortSpec(0))
SHOW_EXPR(watch(n1).getPortSpec(1))
SHOW_EXPR(watch(n1.getPort(0)).getProcSpec())
SHOW_EXPR(watch(n1.getPort(0)).isSrc())
CHECK ( is_linked(n2).to(n1));
CHECK (not is_linked(n1b).to(n1));
// verify Node-level connectivity
CHECK ( is_linked(n1f).to(n1s));
CHECK (not is_linked(n2s).to(n1s));
CHECK (not is_linked(n3).to(n1));
CHECK ( is_linked(n3).to(n1b));
CHECK ( is_linked(n3).to(n2));
CHECK (not is_linked(mix).to(n1s));
CHECK ( is_linked(mix).to(n2s));
CHECK ( is_linked(mix).to(n1f));
CHECK (watch(n1s).leads().size() == 0 );
CHECK (watch(n1f).leads().size() == 1 );
CHECK (watch(n2s).leads().size() == 0 );
CHECK (watch(mix).leads().size() == 2 );
// verify Node and connectivity spec
CHECK (watch(n1s).getNodeSpec() == "srcA-◎"_expect );
CHECK (watch(n1f).getNodeSpec() == "filterA◁—srcA-◎"_expect );
CHECK (watch(n2s).getNodeSpec() == "srcB-◎"_expect );
CHECK (watch(mix).getNodeSpec() == "mix┉┉{srcA, srcB}"_expect);
// verify setup of th source nodes
CHECK (watch(n1s).ports().size() == 2 );
CHECK (watch(n1s).watchPort(0).isSrc());
CHECK (watch(n1s).watchPort(1).isSrc());
CHECK (watch(n1s).watchPort(0).getProcSpec() == "srcA.a(int)"_expect );
CHECK (watch(n1s).watchPort(1).getProcSpec() == "srcA.b(int)"_expect );
CHECK (watch(n1s).getPortSpec(0) == "srcA.a(int)"_expect );
CHECK (watch(n1s).getPortSpec(1) == "srcA.b(int)"_expect );
CHECK (watch(n2s).ports().size() == 3 );
CHECK (watch(n2s).watchPort(0).isSrc());
CHECK (watch(n2s).watchPort(1).isSrc());
CHECK (watch(n2s).watchPort(2).isSrc());
CHECK (watch(n2s).watchPort(0).getProcSpec() == "srcB.a(int)"_expect );
CHECK (watch(n2s).watchPort(1).getProcSpec() == "srcB.b(int)"_expect );
CHECK (watch(n2s).watchPort(2).getProcSpec() == "srcB.c(int)"_expect );
CHECK (watch(n2s).getPortSpec(0) == "srcB.a(int)"_expect );
CHECK (watch(n2s).getPortSpec(1) == "srcB.b(int)"_expect );
CHECK (watch(n2s).getPortSpec(2) == "srcB.c(int)"_expect );
// verify 2-chain
CHECK (watch(n1f).leads().size() == 1 );
CHECK (watch(n1f).ports().size() == 2 );
CHECK (watch(n1f).watchPort(0).srcPorts().size() == 1 );
CHECK (watch(n1f).watchLead(0).ports().size() == 2 );
CHECK (watch(n1f).watchLead(0).getNodeName() == "srcA"_expect);
CHECK (watch(n1f).watchPort(0).watchLead(0).getProcSpec() == "srcA.a(int)"_expect );
CHECK (watch(n1f).watchLead(0).watchPort(0).getProcSpec() == "srcA.a(int)"_expect );
CHECK (watch(n1f).watchPort(0).srcPorts()[0] == watch(n1f).watchLead(0).ports()[0]);
CHECK (watch(n1f).watchPort(1).srcPorts()[0] == watch(n1f).watchLead(0).ports()[1]);
}

View file

@ -92374,9 +92374,8 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node CREATED="1713823379083" ID="ID_673154392" LINK="#ID_888185703" MODIFIED="1736198140654" TEXT="die drei Stufen der Verschaltung">
<linktarget COLOR="#fe018a" DESTINATION="ID_673154392" ENDARROW="Default" ENDINCLINATION="3;-16;" ID="Arrow_ID_894402730" SOURCE="ID_1747091374" STARTARROW="None" STARTINCLINATION="-472;32;"/>
<icon BUILTIN="idea"/>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1718843482825" ID="ID_312625997" MODIFIED="1718843612302" TEXT="Nodes konstruieren und verschalten">
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1718843482825" ID="ID_312625997" MODIFIED="1738781709536" TEXT="Nodes konstruieren und bauen">
<icon BUILTIN="full-1"/>
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1718884503837" ID="ID_561930764" MODIFIED="1718884602859" TEXT="RefArray steht dem im Weg">
<arrowlink COLOR="#4a83b7" DESTINATION="ID_208674861" ENDARROW="Default" ENDINCLINATION="-781;83;" ID="Arrow_ID_1861027884" STARTARROW="None" STARTINCLINATION="-1002;-113;"/>
<icon BUILTIN="messagebox_warning"/>
@ -92535,8 +92534,9 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1719160250921" ID="ID_304611084" MODIFIED="1719160266012" TEXT="Ergebnis: gebraucht wird...">
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1719160250921" ID="ID_304611084" MODIFIED="1738781735066" TEXT="Ergebnis: gebraucht wird...">
<arrowlink COLOR="#785f51" DESTINATION="ID_1137038578" ENDARROW="Default" ENDINCLINATION="-176;1183;" ID="Arrow_ID_361217776" STARTARROW="Default" STARTINCLINATION="-429;-1581;"/>
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="forward"/>
<node CREATED="1719160274852" ID="ID_1366997301" MODIFIED="1719160281511" TEXT="ein Several&lt;Port&gt;">
<node CREATED="1719160369760" ID="ID_1815539399" MODIFIED="1719160384580" TEXT="hinter jedem Port liegt als Impl. eine Turnout-Instanz"/>
@ -92787,15 +92787,14 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</p>
</body>
</html></richcontent>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1719711275180" HGAP="33" ID="ID_105731741" MODIFIED="1719711304124" TEXT="Vorsicht: man k&#xf6;nnte diesen auch direkt inlinen?" VSHIFT="3">
<node BACKGROUND_COLOR="#b09684" COLOR="#990033" CREATED="1719711275180" HGAP="33" ID="ID_105731741" MODIFIED="1738781967098" TEXT="Vorsicht: man k&#xf6;nnte diesen auch direkt inlinen?" VSHIFT="3">
<icon BUILTIN="messagebox_warning"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1719764158370" ID="ID_1459507139" MODIFIED="1719764186583" TEXT="vorerst offene Frage">
<font NAME="SansSerif" SIZE="9"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1719764214797" ID="ID_1163433329" MODIFIED="1719783971156" TEXT="Kl&#xe4;rung WeavingPattern">
<arrowlink COLOR="#e00637" DESTINATION="ID_8397683" ENDARROW="Default" ENDINCLINATION="748;-69;" ID="Arrow_ID_1695197621" STARTARROW="None" STARTINCLINATION="59;422;"/>
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#5c4d6e" CREATED="1719764214797" ID="ID_1163433329" MODIFIED="1738781933567" TEXT="Kl&#xe4;rung WeavingPattern">
<arrowlink COLOR="#2a1e5c" DESTINATION="ID_8397683" ENDARROW="Default" ENDINCLINATION="748;-69;" ID="Arrow_ID_1695197621" STARTARROW="None" STARTINCLINATION="-569;72;"/>
<font NAME="SansSerif" SIZE="10"/>
<icon BUILTIN="hourglass"/>
</node>
</node>
<node CREATED="1733009832865" ID="ID_414612050" MODIFIED="1733009848120" TEXT="Dezember 24 : gehe wohl einen etwas anderen Weg">
@ -93299,13 +93298,13 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1718975949293" ID="ID_8397683" MODIFIED="1719784064096" TEXT="Weaving-Patterns &#x2014; welche Basis?">
<node BACKGROUND_COLOR="#9fabdb" COLOR="#36365b" CREATED="1718975949293" ID="ID_8397683" MODIFIED="1738782282528" TEXT="Weaving-Patterns &#x2014; welche Basis?">
<linktarget COLOR="#ad5890" DESTINATION="ID_8397683" ENDARROW="Default" ENDINCLINATION="-1667;-180;" ID="Arrow_ID_539070296" SOURCE="ID_208065994" STARTARROW="None" STARTINCLINATION="-368;1501;"/>
<linktarget COLOR="#73464f" DESTINATION="ID_8397683" ENDARROW="Default" ENDINCLINATION="-658;-271;" ID="Arrow_ID_1227431876" SOURCE="ID_1047998990" STARTARROW="None" STARTINCLINATION="-254;17;"/>
<linktarget COLOR="#e00637" DESTINATION="ID_8397683" ENDARROW="Default" ENDINCLINATION="748;-69;" ID="Arrow_ID_1695197621" SOURCE="ID_1163433329" STARTARROW="None" STARTINCLINATION="59;422;"/>
<linktarget COLOR="#ee113c" DESTINATION="ID_8397683" ENDARROW="Default" ENDINCLINATION="-362;29;" ID="Arrow_ID_543535373" SOURCE="ID_1619627824" STARTARROW="None" STARTINCLINATION="109;8;"/>
<linktarget COLOR="#2a1e5c" DESTINATION="ID_8397683" ENDARROW="Default" ENDINCLINATION="748;-69;" ID="Arrow_ID_1695197621" SOURCE="ID_1163433329" STARTARROW="None" STARTINCLINATION="-569;72;"/>
<linktarget COLOR="#3d57e5" DESTINATION="ID_8397683" ENDARROW="Default" ENDINCLINATION="-362;29;" ID="Arrow_ID_543535373" SOURCE="ID_1619627824" STARTARROW="None" STARTINCLINATION="258;19;"/>
<icon BUILTIN="help"/>
<node CREATED="1719790298955" HGAP="27" ID="ID_282329743" MODIFIED="1719790448961" TEXT="liefert die Spec f&#xfc;r das Anlegen der FeedManifold" VSHIFT="17">
<node COLOR="#435e98" CREATED="1719790298955" HGAP="27" ID="ID_282329743" MODIFIED="1738781799585" TEXT="liefert die Spec f&#xfc;r das Anlegen der FeedManifold" VSHIFT="17">
<icon BUILTIN="info"/>
<node CREATED="1719790552496" ID="ID_1623752112" MODIFIED="1719790672544" TEXT="Anzahl Ein / Aus">
<node CREATED="1719794473589" ID="ID_982062748" MODIFIED="1719794774066" TEXT="im allgemeinen notwendige Information">
@ -102034,8 +102033,8 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
<node CREATED="1736267134171" ID="ID_145839768" MODIFIED="1736267142436" TEXT="watch(Port)">
<node CREATED="1736267174444" ID="ID_1548126776" MODIFIED="1738691264629" TEXT="&#xbb;backdoor&#xab; &#x27f6; srcPorts()"/>
<node CREATED="1736267024072" ID="ID_1514661165" MODIFIED="1738708982922" TEXT="verify_connected(input#, Port&amp;)">
<linktarget COLOR="#fdf9be" DESTINATION="ID_1514661165" ENDARROW="Default" ENDINCLINATION="-451;40;" ID="Arrow_ID_1746815334" SOURCE="ID_1677497952" STARTARROW="None" STARTINCLINATION="-358;-43;"/>
<linktarget COLOR="#ffe4bc" DESTINATION="ID_1514661165" ENDARROW="None" ENDINCLINATION="148;-7;" ID="Arrow_ID_792010004" SOURCE="ID_1401668777" STARTARROW="Default" STARTINCLINATION="73;18;"/>
<linktarget COLOR="#fdf9be" DESTINATION="ID_1514661165" ENDARROW="Default" ENDINCLINATION="-451;40;" ID="Arrow_ID_1746815334" SOURCE="ID_1677497952" STARTARROW="None" STARTINCLINATION="-358;-43;"/>
</node>
</node>
</node>
@ -102636,7 +102635,8 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
<node CREATED="1730774260378" ID="ID_1141098746" MODIFIED="1730774271710" TEXT="und erst auf diesen getSrcSpec() anwenden"/>
</node>
</node>
<node COLOR="#338800" CREATED="1730774330224" ID="ID_1021456970" LINK="#ID_1359525383" MODIFIED="1738720522948" TEXT="mit komplexem Node-Tree testen">
<node COLOR="#338800" CREATED="1730774330224" ID="ID_1021456970" LINK="#ID_1359525383" MODIFIED="1739032275812" TEXT="mit komplexem Node-Tree testen">
<arrowlink COLOR="#549fc8" DESTINATION="ID_1447455924" ENDARROW="Default" ENDINCLINATION="317;-550;" ID="Arrow_ID_662270988" STARTARROW="None" STARTINCLINATION="1102;34;"/>
<linktarget COLOR="#407485" DESTINATION="ID_1021456970" ENDARROW="Default" ENDINCLINATION="174;12;" ID="Arrow_ID_995595429" SOURCE="ID_969672769" STARTARROW="None" STARTINCLINATION="135;-6;"/>
<icon BUILTIN="button_ok"/>
</node>
@ -103074,8 +103074,7 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1730821117360" ID="ID_887734089" MODIFIED="1736199388910" TEXT="komplexere Node-Trees">
<linktarget COLOR="#3e2e67" DESTINATION="ID_887734089" ENDARROW="Default" ENDINCLINATION="-520;56;" ID="Arrow_ID_448844357" SOURCE="ID_1898930555" STARTARROW="None" STARTINCLINATION="152;11;"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1730821117360" ID="ID_887734089" MODIFIED="1738780813039" TEXT="komplexere Node-Trees">
<linktarget COLOR="#3e2e67" DESTINATION="ID_887734089" ENDARROW="Default" ENDINCLINATION="-520;56;" ID="Arrow_ID_652403485" SOURCE="ID_21649970" STARTARROW="None" STARTINCLINATION="91;7;"/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1730827675866" ID="ID_97803520" MODIFIED="1730830237210" TEXT="Auspr&#xe4;gungen">
@ -103230,8 +103229,8 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1736215886054" ID="ID_1144604426" MODIFIED="1736215892285" TEXT="komplexe Verbindungen">
<icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1736215894301" ID="ID_1690108933" MODIFIED="1736261793942" TEXT="Node mit mehreren Ports">
<linktarget COLOR="#8f9395" DESTINATION="ID_1690108933" ENDARROW="Default" ENDINCLINATION="-673;69;" ID="Arrow_ID_603018030" SOURCE="ID_1250657715" STARTARROW="None" STARTINCLINATION="284;25;"/>
<node COLOR="#338800" CREATED="1736215894301" ID="ID_1690108933" MODIFIED="1738780918048" TEXT="Node mit mehreren Ports">
<linktarget COLOR="#8f9395" DESTINATION="ID_1690108933" ENDARROW="Default" ENDINCLINATION="-673;69;" ID="Arrow_ID_603018030" SOURCE="ID_1250657715" STARTARROW="None" STARTINCLINATION="421;37;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1736216011781" ID="ID_1584097136" MODIFIED="1736259267553" TEXT="compile-Fehler">
<icon BUILTIN="broken-line"/>
@ -103279,10 +103278,12 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1736215909227" ID="ID_1158388367" MODIFIED="1736261797410" TEXT="parallel gebaute Processing-Chains">
<node COLOR="#338800" CREATED="1736215909227" ID="ID_1158388367" MODIFIED="1738780841026" TEXT="parallel gebaute Processing-Chains">
<linktarget COLOR="#8f9395" DESTINATION="ID_1158388367" ENDARROW="Default" ENDINCLINATION="-374;28;" ID="Arrow_ID_1697873506" SOURCE="ID_1898930555" STARTARROW="None" STARTINCLINATION="453;35;"/>
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1736261798909" ID="ID_1935775336" MODIFIED="1736261815499" TEXT="Mix-Network aus zwei Source-Chains">
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1736261798909" ID="ID_1935775336" MODIFIED="1738780676729" TEXT="Mix-Network aus zwei Source-Chains">
<linktarget COLOR="#8f9395" DESTINATION="ID_1935775336" ENDARROW="Default" ENDINCLINATION="-426;31;" ID="Arrow_ID_1997145992" SOURCE="ID_1586899643" STARTARROW="None" STARTINCLINATION="653;49;"/>
<icon BUILTIN="pencil"/>
<node COLOR="#435e98" CREATED="1736261821538" ID="ID_964402891" MODIFIED="1736262967696" TEXT="au&#xdf;erdem: drei Ports &#x2014; mu&#xdf; eine Quelle also aufdoppeln">
<richcontent TYPE="NOTE"><html>
@ -103315,6 +103316,104 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1736262614480" ID="ID_527618200" MODIFIED="1738720089863" TEXT="generierte Verschaltung pr&#xfc;fen">
<arrowlink COLOR="#307df4" DESTINATION="ID_1980325374" ENDARROW="Default" ENDINCLINATION="208;11;" ID="Arrow_ID_777099443" STARTARROW="None" STARTINCLINATION="484;-30;"/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1738972428785" HGAP="22" ID="ID_931689451" MODIFIED="1738972446377" TEXT="im 2-Node-Chain" VSHIFT="10">
<node CREATED="1738972450981" ID="ID_1447455924" MODIFIED="1739032275812" TEXT="Node-Spec">
<linktarget COLOR="#549fc8" DESTINATION="ID_1447455924" ENDARROW="Default" ENDINCLINATION="317;-550;" ID="Arrow_ID_662270988" SOURCE="ID_1021456970" STARTARROW="None" STARTINCLINATION="1102;34;"/>
<node COLOR="#435e98" CREATED="1738972487025" ID="ID_580484363" MODIFIED="1739032196018" TEXT="Format sonderbar">
<icon BUILTIN="broken-line"/>
<node CREATED="1738972496759" ID="ID_1477523874" MODIFIED="1738972516557" TEXT="f&#xfc;r einen linearen-Chain hatte ich was spezielles programmiert"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1738972517628" ID="ID_604074406" MODIFIED="1739032187505" TEXT="Debugger &#x27f9; leads() hat size &#x2261; 2">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1738972550494" ID="ID_767364785" MODIFIED="1738972579138">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
das ist <font color="#cf1c1c">inhaltlich falsch</font>!
</p>
</body>
</html>
</richcontent>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#c81e08" CREATED="1739030627173" ID="ID_810230825" MODIFIED="1739030658053" TEXT="auch die Mix-Node hat 6 leads (statt 2)">
<icon BUILTIN="broken-line"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1738972590002" ID="ID_836261538" MODIFIED="1739032111733" TEXT="l&#xe4;uft da was im Node-Builder schief?">
<icon BUILTIN="help"/>
<node CREATED="1739032013385" ID="ID_1289269580" MODIFIED="1739032018026" TEXT="ja">
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1739032028832" ID="ID_1339572422" MODIFIED="1739032048217" TEXT="reference_wrapper ist keine Referenz"/>
<node CREATED="1739032049493" ID="ID_702099685" MODIFIED="1739032061790" TEXT="wird auch nicht von isSameObject() entpackt"/>
<node CREATED="1739032065755" ID="ID_667865172" MODIFIED="1739032165275">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
&#10233; jeder Lead erscheint als neu
</p>
</body>
</html>
</richcontent>
<arrowlink COLOR="#55ca66" DESTINATION="ID_1710618810" ENDARROW="Default" ENDINCLINATION="147;-25;" ID="Arrow_ID_255484303" STARTARROW="None" STARTINCLINATION="-322;25;"/>
<icon BUILTIN="broken-line"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1739032124523" ID="ID_1710618810" MODIFIED="1739032152031" TEXT="damit gefixt">
<linktarget COLOR="#55ca66" DESTINATION="ID_1710618810" ENDARROW="Default" ENDINCLINATION="147;-25;" ID="Arrow_ID_255484303" SOURCE="ID_667865172" STARTARROW="None" STARTINCLINATION="-322;25;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1739032198501" ID="ID_172420514" MODIFIED="1739033952110" TEXT="Verbesserungen am Format">
<icon BUILTIN="button_ok"/>
<node COLOR="#5b280f" CREATED="1739032288830" ID="ID_730213454" MODIFIED="1739034516454" TEXT="k&#xf6;nnte man den Proc-Namen ausgeben?">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<ul>
<li>
also ohne Namespace
</li>
<li>
daf&#252;r aber mit Qualifier
</li>
<li>
ohne Argumentlisten
</li>
</ul>
</body>
</html></richcontent>
<icon BUILTIN="help"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1739032383569" ID="ID_376511123" MODIFIED="1739032392603" TEXT="brauche dazu die richtige Proc-ID"/>
<node CREATED="1739032393783" ID="ID_1398416578" MODIFIED="1739032408857" TEXT="also die vom tats&#xe4;chlich verwendeten Vorg&#xe4;nger-Port"/>
<node COLOR="#5b280f" CREATED="1739034329196" ID="ID_589945353" MODIFIED="1739034932568" TEXT="Vorsicht: es ist eine Node-Spec">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
die Proc-ID ist hier nur der Implementierungs-Ort, weil es auf der Node selber gar keine entsprechende Einrichtung gibt&#160;&#8212;&#160;der Node-Name ist in die Proc-ID aufgedoppelt, um auch f&#252;r einen Port noch eine sinnvolle Diagnostik zu bieten; diese Redundanz nehme ich in Kauf (ist jeweils ein Pointer); im Gegenzug verzichte ich aber auf eine separate Node-ID, indem die Proc-ID hilfsweise auch die Node-Spec mit implemenitert
</p>
</body>
</html>
</richcontent>
<linktarget COLOR="#926d62" DESTINATION="ID_589945353" ENDARROW="Default" ENDINCLINATION="-971;0;" ID="Arrow_ID_1627818270" SOURCE="ID_1418989177" STARTARROW="None" STARTINCLINATION="1611;-213;"/>
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1739033839413" ID="ID_1129439849" MODIFIED="1739033948667" TEXT="single-Chain ist eine Spezialbehandlung">
<icon BUILTIN="yes"/>
<node CREATED="1739033865762" ID="ID_728888968" MODIFIED="1739033891151" TEXT="einfache Tail-Rekursion w&#xfc;rde die ganze Kette rendern"/>
<node CREATED="1739033892225" ID="ID_380722595" MODIFIED="1739033907152" TEXT="wir wollen aber nur einen Step &#x27f9; daher expliziter Aufruf"/>
<node COLOR="#338800" CREATED="1739033908285" ID="ID_1907464180" MODIFIED="1739033944242" TEXT="mu&#xdf; dann auch die Leads dieser Nachfolge-Node extrahieren">
<icon BUILTIN="forward"/>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1738972435247" ID="ID_918532740" MODIFIED="1738972439571" TEXT="an der Mix-Node"/>
</node>
<node COLOR="#5b280f" CREATED="1736262643100" ID="ID_1582622115" MODIFIED="1736262671755" TEXT="Aufruf wird erst im n&#xe4;chsten Beispiel getestet....">
<icon BUILTIN="stop-sign"/>
@ -104947,6 +105046,24 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1738782112689" HGAP="0" ID="ID_1941925898" MODIFIED="1738782338496" VSHIFT="9">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
<u>Fazit</u>: Weaving-Patterns
</p>
</body>
</html>
</richcontent>
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="forward"/>
<node CREATED="1738782137470" ID="ID_1230566" MODIFIED="1738782147437" TEXT="sind Templates"/>
<node CREATED="1738782148556" ID="ID_1863620407" MODIFIED="1738782158343" TEXT="werden direkt in eine Turnout-Implementierung eingebunden"/>
<node CREATED="1738782159371" ID="ID_929413702" MODIFIED="1738782182715" TEXT="werden vom NodeBuilder / WeavingBuilder parametrisiert anhand der Processing-Function"/>
<node CREATED="1738782223603" ID="ID_1512630640" MODIFIED="1738782239745" TEXT="definieren einen Feed-Datentyp, der jeweils auf dem Stack instantiiert wird"/>
<node CREATED="1738782194654" ID="ID_1045750323" MODIFIED="1738782214823" TEXT="bieten eine Implementierung f&#xfc;r jede der f&#xfc;nf &#xbb;Webe-Schritte&#xab;"/>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1730486371054" HGAP="24" ID="ID_939499486" MODIFIED="1730487590452" TEXT="Node-Metadaten" VSHIFT="7">
<icon BUILTIN="pencil"/>
@ -105091,6 +105208,7 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
</p>
</body>
</html></richcontent>
<arrowlink COLOR="#505c79" DESTINATION="ID_123376975" ENDARROW="Default" ENDINCLINATION="284;0;" ID="Arrow_ID_559023336" STARTARROW="Default" STARTINCLINATION="395;0;"/>
</node>
<node CREATED="1732847720160" ID="ID_767620063" LINK="#ID_1605389357" MODIFIED="1732847776920" TEXT="diese gibt abgek&#xfc;rzte Charakterisierung der Connectivity"/>
</node>
@ -105122,6 +105240,23 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
</body>
</html></richcontent>
</node>
<node CREATED="1739034632291" ID="ID_123376975" MODIFIED="1739034655047" TEXT="hier verzichte ich auf ein Rendering der Vorl&#xe4;ufer">
<linktarget COLOR="#505c79" DESTINATION="ID_123376975" ENDARROW="Default" ENDINCLINATION="284;0;" ID="Arrow_ID_559023336" SOURCE="ID_1974038856" STARTARROW="Default" STARTINCLINATION="395;0;"/>
<icon BUILTIN="yes"/>
<node CREATED="1739034673622" ID="ID_1418989177" MODIFIED="1739034932568" TEXT="das ist jetzt willk&#xfc;rlich..." VSHIFT="25">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
w&#228;re n&#228;mlich zus&#228;tzlicher Coding-Aufwand &#8212; und dabei weitgehend redundant
</p>
</body>
</html>
</richcontent>
<arrowlink COLOR="#926d62" DESTINATION="ID_589945353" ENDARROW="Default" ENDINCLINATION="-971;0;" ID="Arrow_ID_1627818270" STARTARROW="None" STARTINCLINATION="1611;-213;"/>
</node>
<node CREATED="1739034685324" ID="ID_593749304" MODIFIED="1739034697693" TEXT="Erfahrungen fehlen"/>
</node>
</node>
<node CREATED="1730508308461" ID="ID_1597023280" MODIFIED="1730508446212" TEXT="diese Informationen werden von Level-3 durchgereicht">
<richcontent TYPE="NOTE"><html>
@ -106673,27 +106808,27 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
<node CREATED="1721057428416" ID="ID_709482532" MODIFIED="1721057444074" TEXT="diese stellen ihrerseits eine Abstraktion/Indirektion dar"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1720285361113" ID="ID_1765678054" MODIFIED="1720285365141" TEXT="anlegen....">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1720285429230" ID="ID_1279225641" MODIFIED="1733427755281" TEXT="Entwuf: Level-2-Builder">
<node COLOR="#338800" CREATED="1720285361113" ID="ID_1765678054" MODIFIED="1738781284650" TEXT="anlegen....">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1720285429230" ID="ID_1279225641" MODIFIED="1738781282623" TEXT="Entwuf: Level-2-Builder">
<arrowlink COLOR="#375cde" DESTINATION="ID_1153319941" ENDARROW="Default" ENDINCLINATION="-499;56;" ID="Arrow_ID_619451066" STARTARROW="None" STARTINCLINATION="942;-77;"/>
<icon BUILTIN="flag-yellow"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1720285381774" ID="ID_1298904782" MODIFIED="1720454238961" TEXT="die Leads">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1720285385878" ID="ID_1429352134" MODIFIED="1720285436983" TEXT="die Ports">
<icon BUILTIN="flag-yellow"/>
<node COLOR="#338800" CREATED="1720285385878" ID="ID_1429352134" MODIFIED="1738781276483" TEXT="die Ports">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1720285394986" ID="ID_1425096400" MODIFIED="1720285436983" TEXT="Port-Impl &#x2259; Turnout">
<icon BUILTIN="flag-yellow"/>
<node COLOR="#338800" CREATED="1720285394986" ID="ID_1425096400" MODIFIED="1738781278712" TEXT="Port-Impl &#x2259; Turnout">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1733427700162" ID="ID_360146617" MODIFIED="1733427719971" TEXT="Turnout-System &#x2259; Mediator">
<icon BUILTIN="flag-yellow"/>
<node COLOR="#338800" CREATED="1733427700162" ID="ID_360146617" MODIFIED="1738781280519" TEXT="Turnout-System &#x2259; Mediator">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1718973873148" ID="ID_522658569" MODIFIED="1718978668919" TEXT="Anordnung im Code">
<node COLOR="#435e98" CREATED="1718973873148" ID="ID_522658569" MODIFIED="1738781648600" TEXT="Anordnung im Code">
<icon BUILTIN="yes"/>
<node CREATED="1718973890621" ID="ID_1277434827" MODIFIED="1718973901348" TEXT="ProcNode ist das high-level-Interface">
<node CREATED="1718973914503" ID="ID_126069350" MODIFIED="1718973927976" TEXT="impliziert auch das Port-Interface"/>
@ -106728,12 +106863,14 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
<node CREATED="1719621584920" ID="ID_640762366" MODIFIED="1719621598995" TEXT="...welche beim Bauen des Node-Network angelegt wurde"/>
</node>
</node>
<node CREATED="1718975849003" ID="ID_1545161094" MODIFIED="1718975858717" TEXT="die Node-Factory bleibt zun&#xe4;chst au&#xdf;en vor">
<node COLOR="#5b280f" CREATED="1718975849003" ID="ID_1545161094" MODIFIED="1738781635954" TEXT="die Node-Factory bleibt zun&#xe4;chst au&#xdf;en vor">
<icon BUILTIN="hourglass"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1718975861065" ID="ID_1907625416" MODIFIED="1718975870468" TEXT="diese geh&#xf6;rt ehr in den Kontext des Builders"/>
<node CREATED="1718975871248" ID="ID_522836015" MODIFIED="1718975888569" TEXT="die fa&#xdf;t die Schritte zusammen, die man auch explizit machen kann"/>
<node CREATED="1718975902428" ID="ID_1445965423" MODIFIED="1718975920749" TEXT="vorzugsweise gibt es einzelne Builder-Functions f&#xfc;r Turnout"/>
<node CREATED="1718975923921" ID="ID_620438698" MODIFIED="1718975932092" TEXT="hinzu kommt au&#xdf;erdem der AllocationCluster"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1719276278262" ID="ID_670231517" MODIFIED="1719276307022" TEXT="aber Node-Wiring kann jetzt schon angepa&#xdf;t werden">
<node COLOR="#435e98" CREATED="1719276278262" ID="ID_670231517" MODIFIED="1738780014719" TEXT="aber Node-Wiring kann jetzt schon angepa&#xdf;t werden">
<icon BUILTIN="yes"/>
<node CREATED="1719276313964" ID="ID_1044365702" MODIFIED="1719276352131" TEXT="nodewiring.hpp &#x27fc; nodewiring-obsolete.hpp"/>
<node CREATED="1719276447012" ID="ID_690909625" MODIFIED="1719276472197" TEXT="die bisherige WiringSituation dort einfach inlinen (bis wir sie wegwerfen)">
@ -106744,23 +106881,92 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
<icon BUILTIN="idea"/>
</node>
</node>
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1738781322874" ID="ID_810353007" MODIFIED="1738781594786" TEXT="Node-Factory wird es vmtl. gar nicht in dieser Form geben">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
Und zwar, weil die Rolle der Ablaufsteuerung grunds&#228;tzlich &#252;berdacht und reorientiert wurde: Der Engine-Code ist jetzt nicht mehr &#187;Tabellengetrieben&#171;, sondern besteht aus miteinander verwobenen Funktions-Closures. Damit wandert der wichtigste Teil dieser Steuerung in ein zuk&#252;nftig zu entwickelndes Library Plug-in (erneut f&#252;r jede Media-Handling Lib, wie z.B. FFmpeg).
</p>
<p>
Daher wird es keine zentrale Node-Factory als Abstraktionskomponente geben; vielmehr erwarte ich, da&#223; der Builder-Level-3 &#252;ber ein noch zu schaffendes API das Library Plug-in aktiviert, welches dann das API des NodeBuilders verwendet um einzelne Nodes zu konstruieren. Es l&#228;uft also auf ein relativ komplexes Wechselspiel zwischen den Builder-Leveln und der Delegation an das Library Plug-in hinaus. Letzteres kann n&#228;mlich nicht das Anlegen und Verschalten der Nodes &#252;bernehmen, aber mu&#223; die Funktion beisteuern und die dazu passende Node-Spec....
</p>
</body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1719625289258" ID="ID_831247737" MODIFIED="1719625437097" TEXT="brauche test-rand-ontology.hpp als Anker/Treiber">
</node>
<node COLOR="#435e98" CREATED="1719625289258" ID="ID_831247737" MODIFIED="1738781309679" TEXT="brauche test-rand-ontology.hpp als Anker/Treiber">
<arrowlink COLOR="#bf3d87" DESTINATION="ID_1834369403" ENDARROW="Default" ENDINCLINATION="-365;21;" ID="Arrow_ID_239565642" STARTARROW="None" STARTINCLINATION="129;-285;"/>
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1719783779996" ID="ID_1619627824" MODIFIED="1719783983226" TEXT="brauche L&#xf6;sung f&#xfc;r Weaving-Patterns">
<arrowlink COLOR="#ee113c" DESTINATION="ID_8397683" ENDARROW="Default" ENDINCLINATION="-362;29;" ID="Arrow_ID_543535373" STARTARROW="None" STARTINCLINATION="109;8;"/>
<node COLOR="#435e98" CREATED="1719783779996" ID="ID_1619627824" MODIFIED="1738782284928" TEXT="brauche L&#xf6;sung f&#xfc;r Weaving-Patterns">
<arrowlink COLOR="#3d57e5" DESTINATION="ID_8397683" ENDARROW="Default" ENDINCLINATION="-362;29;" ID="Arrow_ID_543535373" STARTARROW="None" STARTINCLINATION="258;19;"/>
<icon BUILTIN="yes"/>
<node BACKGROUND_COLOR="#c8c0b6" CREATED="1738779929348" HGAP="41" ID="ID_786475441" LINK="#ID_1941925898" MODIFIED="1738782395985" STYLE="bubble" VSHIFT="60">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
<u>L&#246;sung</u>: Weaving-Pattern wird unmittelbar Teil des Turnout
</p>
</body>
</html></richcontent>
</node>
<node CREATED="1738779740698" ID="ID_413919657" MODIFIED="1738779757158" TEXT="es haben sich zwei Basisf&#xe4;lle herauskristallisiert">
<node CREATED="1738779758631" ID="ID_3673779" MODIFIED="1738779769322" TEXT="&#xbb;Manifold&#xab;">
<node CREATED="1738779777133" ID="ID_1120533080" MODIFIED="1738779806420" TEXT="komplexe Verschaltung von Parametern, Inputs und Outputs"/>
<node CREATED="1738779810803" ID="ID_423460652" MODIFIED="1738779838854">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
verwendet einen Invocation-Adapter mit eingebetteter <font face="Monospaced"><b>FeedManifold</b></font>
</p>
</body>
</html></richcontent>
</node>
</node>
<node CREATED="1738779770246" ID="ID_422696376" MODIFIED="1738779774913" TEXT="&#xbb;Proxy&#xab;">
<node CREATED="1738779843972" ID="ID_1453619193" MODIFIED="1738779853278" TEXT="dekoriert eine bestehende Node"/>
<node CREATED="1738779854274" ID="ID_773418599" MODIFIED="1738779861909" TEXT="reicht die Invocation an diese durch"/>
</node>
</node>
<node CREATED="1738779867728" ID="ID_1775315041" MODIFIED="1738779874324" TEXT="Standard-Implementierungs-Templates">
<node CREATED="1738779875669" ID="ID_1272417538" MODIFIED="1738779884127" TEXT="media-weaving-pattern.hpp"/>
<node CREATED="1738779885094" ID="ID_275658125" MODIFIED="1738779892428" TEXT="param-weaving-pattern.hpp"/>
</node>
<node CREATED="1738779895217" ID="ID_1660912390" MODIFIED="1738779915377" TEXT="die M&#xf6;glichkeit weiterer Templates / Pattern bleibt explizit bestehen">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1719163109733" ID="ID_783205503" MODIFIED="1719163114999" TEXT="Translation-Units">
<node COLOR="#338800" CREATED="1719163143971" ID="ID_488227254" MODIFIED="1719163157663" TEXT="turnout-system.cpp">
<icon BUILTIN="button_ok"/>
<node CREATED="1719163184257" ID="ID_725523390" MODIFIED="1719163197208" TEXT="hierher kommen Detail-Implementierungen des Pull-Vorganges"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1719163151506" ID="ID_1426144215" MODIFIED="1719163160578" TEXT="proc-node.cpp">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1719163161701" ID="ID_234432358" MODIFIED="1719163182440" TEXT="hierher kommen alle Detail-Implementierungen f&#xfc;r das Processing selbst"/>
<node CREATED="1719163109733" ID="ID_783205503" MODIFIED="1719163114999" TEXT="Translation-Units">
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1719163143971" ID="ID_488227254" MODIFIED="1738779667204" TEXT="turnout-system.cpp">
<icon BUILTIN="help"/>
<node CREATED="1719163184257" ID="ID_725523390" MODIFIED="1719163197208" TEXT="hierher kommen Detail-Implementierungen des Pull-Vorganges"/>
<node CREATED="1738779669748" ID="ID_746090454" MODIFIED="1738779677518" TEXT="davon is nix &#xfc;berig geblieben"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1738779678555" ID="ID_1064823251" MODIFIED="1738779684604" TEXT="k&#xf6;nnte wegfallen">
<icon BUILTIN="flag-pink"/>
</node>
</node>
<node COLOR="#338800" CREATED="1719163151506" ID="ID_1426144215" MODIFIED="1738779726688" TEXT="proc-node.cpp">
<icon BUILTIN="button_ok"/>
<node COLOR="#5b280f" CREATED="1719163161701" ID="ID_234432358" MODIFIED="1738779641050" TEXT="hierher kommen alle Detail-Implementierungen f&#xfc;r das Processing selbst">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
Nein!
</p>
<p>
Da wir nun weitgehend auf explizite Typisierung und Templates setzen (Tupel als Argumente der Processing-Function), sind Detail-Implementierungen in den Spezialisierungen der Weaving-Pattern untergebracht, oder werden sogar als Funktoren aus dem Library-Plug-in eingebunden
</p>
</body>
</html>
</richcontent>
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1738779694408" ID="ID_447622421" MODIFIED="1738779714617" TEXT="hier ist die statische Proc-ID-Registry"/>
<node CREATED="1738779716244" ID="ID_1751023738" MODIFIED="1738779721742" TEXT="und Diagnose-Funktionen"/>
</node>
</node>
</node>
@ -106793,34 +106999,93 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1719181051848" ID="ID_710807643" MODIFIED="1736198513549" TEXT="Ziel f&#xfc;r diesen Testfall">
<icon BUILTIN="yes"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1719181203922" ID="ID_714901077" MODIFIED="1719182613749" TEXT="Nodes bauen">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1719181208787" ID="ID_1250657715" MODIFIED="1736216006059" TEXT="eine Quell-Node mit zwei Ports">
<arrowlink COLOR="#8f9395" DESTINATION="ID_1690108933" ENDARROW="Default" ENDINCLINATION="-673;69;" ID="Arrow_ID_603018030" STARTARROW="None" STARTINCLINATION="284;25;"/>
<node COLOR="#338800" CREATED="1719181203922" ID="ID_714901077" MODIFIED="1738780574677" TEXT="Nodes bauen">
<icon BUILTIN="button_ok"/>
<node CREATED="1719181208787" ID="ID_1250657715" MODIFIED="1738780918048" TEXT="eine Quell-Node mit zwei Ports">
<arrowlink COLOR="#8f9395" DESTINATION="ID_1690108933" ENDARROW="Default" ENDINCLINATION="-673;69;" ID="Arrow_ID_603018030" STARTARROW="None" STARTINCLINATION="421;37;"/>
<icon BUILTIN="full-1"/>
</node>
<node CREATED="1719181289558" ID="ID_1898930555" MODIFIED="1736199388910" TEXT="Node mit einem Lead und zwei Ports">
<arrowlink COLOR="#3e2e67" DESTINATION="ID_887734089" ENDARROW="Default" ENDINCLINATION="-520;56;" ID="Arrow_ID_448844357" STARTARROW="None" STARTINCLINATION="152;11;"/>
<node CREATED="1719181289558" ID="ID_1898930555" MODIFIED="1738780902454" TEXT="Node mit einem Lead und zwei Ports">
<arrowlink COLOR="#8f9395" DESTINATION="ID_1158388367" ENDARROW="Default" ENDINCLINATION="-374;28;" ID="Arrow_ID_1697873506" STARTARROW="None" STARTINCLINATION="453;35;"/>
<icon BUILTIN="full-2"/>
</node>
<node CREATED="1719181653608" ID="ID_1586899643" MODIFIED="1719182255048" TEXT="Node mit zwei Leads und drei Ports">
<node CREATED="1719181653608" ID="ID_1586899643" MODIFIED="1738780744126" TEXT="Node mit zwei Leads und drei Ports">
<arrowlink COLOR="#8f9395" DESTINATION="ID_1935775336" ENDARROW="Default" ENDINCLINATION="-426;31;" ID="Arrow_ID_1997145992" STARTARROW="None" STARTINCLINATION="653;49;"/>
<icon BUILTIN="full-3"/>
</node>
<node CREATED="1738780524383" ID="ID_755834249" MODIFIED="1738781207046">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
Tats&#228;chlich zeige ich nun alle drei Punkte
</p>
<p>
in einer einzigen Test-Node-Topologie
</p>
</body>
</html>
</richcontent>
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<ul>
<li>
nahezu identisch verwendet in NodeLink_test und NodeMeta_test
</li>
<li>
in letzterem befindet sich die ersch&#246;pfende Abdeckung der Diagnose / Verifikations-Tools
</li>
<li>
als Processing-Funktionen verwende ich in den ersten Schritten einfache Algebra-Funktionen
</li>
<li>
in NodeBase_test habe ich die Korrektheit des Aufrufs solcher einfachen Algebra im Detail verifiziert
</li>
</ul>
</body>
</html>
</richcontent>
<node CREATED="1738780543861" ID="ID_1280984212" MODIFIED="1738780555719" TEXT="Ein &#xbb;Mixer&#xab; mit Side-Chain"/>
<node CREATED="1738781041807" ID="ID_255215826" MODIFIED="1738781054076" TEXT="der Haupt-Chain hat nur zwei Ports"/>
<node CREATED="1738781055144" ID="ID_310569500" MODIFIED="1738781066942" TEXT="eine Seiten-Quelle mit drei Ports"/>
<node CREATED="1738781068079" ID="ID_1353238399" MODIFIED="1738781083193" TEXT="im Mixer mu&#xdf; dann eine Seite vom Haupt-chain aufgedoppelt werden"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1719182150605" ID="ID_126580500" MODIFIED="1719182613748" TEXT="pr&#xfc;fen...">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1719182162476" ID="ID_355546806" MODIFIED="1719182257696" TEXT="hinter jedem Port steckt ein markierter Turnout">
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1719182150605" ID="ID_126580500" MODIFIED="1738940208107" TEXT="pr&#xfc;fen...">
<icon BUILTIN="flag-pink"/>
<node COLOR="#5b280f" CREATED="1719182162476" ID="ID_355546806" MODIFIED="1738780309341" TEXT="hinter jedem Port steckt ein markierter Turnout">
<icon BUILTIN="full-1"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1738780311308" ID="ID_1951143650" MODIFIED="1738780322231" TEXT="das KANN ich nicht im Test verifizieren"/>
<node CREATED="1738780323171" ID="ID_1188981333" MODIFIED="1738780363192" TEXT="die Struktur der Implementierung wurde bewu&#xdf;t statisch verschaltet"/>
<node CREATED="1738780394573" ID="ID_1614420436" MODIFIED="1738780416642" TEXT="Turnout und FeedManifold sind nun bereits im Code in die Port-Implementierung eingebunden"/>
<node CREATED="1738780469159" ID="ID_1324945863" MODIFIED="1738780486457" TEXT="Auswahl der Template-Parameter ergibt sich aus der Signatur der Processing-Function">
<node CREATED="1738780497803" ID="ID_931555445" MODIFIED="1738780515644" TEXT="ansatzweise im NodeBase_test gezeigt">
<font NAME="SansSerif" SIZE="11"/>
</node>
<node CREATED="1719182222333" ID="ID_1242784088" MODIFIED="1719182302909" TEXT="Struktur der Manifold">
</node>
<node CREATED="1738780418075" ID="ID_1431577122" MODIFIED="1738780430546" TEXT="insofern gibt es (nur) die Garantie durch den Compiler"/>
</node>
<node CREATED="1738972363922" ID="ID_820093867" LINK="#ID_527618200" MODIFIED="1738972387678" TEXT="Verbindungen im Detail pr&#xfc;fen">
<node CREATED="1719182222333" ID="ID_1242784088" MODIFIED="1738972353510" TEXT="Verschaltung">
<icon BUILTIN="full-2"/>
<node CREATED="1719182335669" ID="ID_1034553119" MODIFIED="1719182463944" TEXT="jeder Turnout hat einen Quell-Port"/>
<node CREATED="1719182351192" ID="ID_1019047230" MODIFIED="1719182372167" TEXT="diese ensprechen den Ports des Lead"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1719182335669" ID="ID_1034553119" MODIFIED="1738781221667" TEXT="jeder Turnout hat einen Quell-Port">
<icon BUILTIN="flag-yellow"/>
</node>
<node CREATED="1719182383030" ID="ID_1714593159" MODIFIED="1719182633337" TEXT="Struktur der Manifold">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1719182351192" ID="ID_1019047230" MODIFIED="1738781224077" TEXT="diese ensprechen den Ports des Lead">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node CREATED="1719182383030" ID="ID_1714593159" MODIFIED="1738972357622" TEXT="Verschaltung">
<icon BUILTIN="full-3"/>
<node CREATED="1719182426384" ID="ID_161510177" MODIFIED="1719182472679" TEXT="jeder der drei Turnouts hat Quell-Port der auf einen der Leads f&#xfc;hrt"/>
<node CREATED="1719184331652" ID="ID_1422155228" MODIFIED="1719184361531" TEXT="die anderen sind jeweils belegt wie im Setup konfiguriert"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1719182426384" ID="ID_161510177" MODIFIED="1738781245527" TEXT="jeder der drei Turnouts hat Quell-Port der auf einen der Leads f&#xfc;hrt">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1719184331652" ID="ID_1422155228" MODIFIED="1738781248141" TEXT="die anderen sind jeweils belegt wie im Setup konfiguriert">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
</node>
</node>
@ -106874,10 +107139,11 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1736198558585" ID="ID_152257218" MODIFIED="1736198572914" TEXT="Bedeutung">
<icon BUILTIN="help"/>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1719163874339" ID="ID_1903655361" MODIFIED="1719163886249" TEXT="Interface? Implementierung?">
<node COLOR="#435e98" CREATED="1719163874339" ID="ID_1903655361" MODIFIED="1738779508620" TEXT="Interface? Implementierung?">
<icon BUILTIN="help"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1719163887600" ID="ID_337914836" MODIFIED="1719163900862" TEXT="urspr&#xfc;nglich sollte das mal von StateClosure erben">
<node COLOR="#5b280f" CREATED="1719163887600" ID="ID_337914836" MODIFIED="1738779467042" TEXT="urspr&#xfc;nglich sollte das mal von StateClosure erben">
<icon BUILTIN="info"/>
<icon BUILTIN="button_cancel"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1719163902717" ID="ID_1815065175" MODIFIED="1719163924443" TEXT="erscheit mir aber im Moment zweifelhaft (nicht klar was StateClosure noch soll....)">
<icon BUILTIN="messagebox_warning"/>
@ -106912,10 +107178,19 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
<node CREATED="1736198641765" ID="ID_236390246" MODIFIED="1736198686213" TEXT="das wird hinf&#xe4;llig &#x2014; und ohne sowas zerlegt man besser in einzel-Services">
<icon BUILTIN="yes"/>
</node>
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1738779472392" ID="ID_1489448209" MODIFIED="1738779519194" TEXT="Nun ist es eine Implementierungs-Struktur">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="forward"/>
</node>
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1738779490044" ID="ID_1546304398" MODIFIED="1738779519193" TEXT="Und ein Erweiterungs-Punkt">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="forward"/>
</node>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1719186031309" ID="ID_1908240557" MODIFIED="1719186091788" TEXT="kann man die Identit&#xe4;t eines Turnout feststellen?">
</node>
<node COLOR="#435e98" CREATED="1719186031309" ID="ID_1908240557" MODIFIED="1738782595456" TEXT="kann man die Identit&#xe4;t eines Turnout feststellen?">
<icon BUILTIN="help"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1730424622368" ID="ID_1606715255" MODIFIED="1730424665485" TEXT="ist nicht notwendig an die Node-ID gebunden, wohl aber an die Vorl&#xe4;ufer-Turnouts"/>
<node CREATED="1730424724953" ID="ID_1465368594" MODIFIED="1730424744993" TEXT="mu&#xdf; genau dann abweichen wenn die Berechnung f&#xfc;r den User sichtbar abweicht"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1730424832928" ID="ID_635779650" MODIFIED="1730424849856" TEXT="&#x27f9; kann keine automatische L&#xf6;sung sein">
@ -106949,6 +107224,17 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
<node CREATED="1730425603459" ID="ID_1645034941" MODIFIED="1730425876702" TEXT="die konkrete Form wird von Level-3 durchgereicht"/>
<node CREATED="1730425640342" ID="ID_980953176" MODIFIED="1730425779328" TEXT="mit diesem Term wird das Node-Symbol dekoriert"/>
</node>
<node CREATED="1738782435277" ID="ID_1771750440" MODIFIED="1738782543268" TEXT="der Grund-Typus der wichtigsten Turnouts ist als Flag in der ProcID hinterlegt">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
Das ist ein Kompromi&#223; und ein Trick, mit dem man (f&#252;r Test und Diagnose) doch noch <i>ein bischen hinter die Kulissen schauen</i>&#160;kann. Auf dieser Basis habe ich einen Accessor gebaut: PortDiagnostic::getSrcNodes()&#160;&#160;&#10236;&#160; <font face="Monospaced">lib::Several&lt;PortRef&gt;</font>
</p>
</body>
</html></richcontent>
</node>
<node CREATED="1738782567428" ID="ID_1616858827" MODIFIED="1738782589460" TEXT="ansonsten nein &#x2014; es ist eine opaque Objekt(Instanz)-Identit&#xe4;t"/>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1720293853511" ID="ID_812742662" MODIFIED="1729984903706" TEXT="wozu brauchen wir die NodeID?">
<linktarget COLOR="#a04a55" DESTINATION="ID_812742662" ENDARROW="Default" ENDINCLINATION="-535;46;" ID="Arrow_ID_1587975762" SOURCE="ID_1542786980" STARTARROW="None" STARTINCLINATION="125;23;"/>
@ -107057,7 +107343,7 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
<edge COLOR="#fe6f46"/>
<icon BUILTIN="full-3"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#5e0646" CREATED="1719964597362" ID="ID_704199650" MODIFIED="1736199303398" STYLE="bubble" TEXT="Code ausbauen">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#5e0646" CREATED="1719964597362" ID="ID_704199650" MODIFIED="1738779415758" STYLE="bubble" TEXT="Ende-zu-Ende-Aufruf">
<edge COLOR="#fe6f46"/>
<icon BUILTIN="full-4"/>
</node>