Invocation: look for ways how to build the Turnout

It seems we need a `WeavingPattern`-Builder, which obviously
must be rather flexible, since those patterns are to be composed
from several layers, which should be extensible within a given ''Domain Ontology''

So this seems to lead to a builder-DSL which creates »**onion layers**«
of builders, with the ability to extend and specialise the type on each layer.

''As it will be quite challenging to get this into usable shape,
it seems best to approach this step by step through prototyping...''
This commit is contained in:
Fischlurch 2024-07-15 01:25:38 +02:00
parent 95046489d2
commit 968bfb8fab
2 changed files with 122 additions and 46 deletions

View file

@ -394,6 +394,7 @@ namespace engine {
*/
template<uint N, class FUN>
struct Conf_DirectFunctionInvocation
//////////////////////////////OOO non-copyable? move-only??
{
using Manifold = FeedManifold<N>;
using Feed = SimpleFunctionInvocationAdapter<Manifold, FUN>;
@ -416,8 +417,7 @@ namespace engine {
using Storage = lib::UninitialisedStorage<X,CONF::MAX_SIZ>;
Storage<PortRef> leadPort;
Storage<BufferDescriptor> inDescr;
Storage<PortRef> leadPort;
Storage<BufferDescriptor> outDescr;
//////////////////////////////////////////OOO builder must set-up those descriptors
@ -483,6 +483,7 @@ namespace engine {
class Turnout
: public Port
, public PAT
//////////////////////////////OOO non-copyable? move-only??
{
using Feed = typename PAT::Feed;
public:
@ -503,6 +504,32 @@ namespace engine {
return feed.result();
}
};
/////////////////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1367 : Prototyping: how to assemble a Turnout
template<uint N, class FUN>
using SimpleDirectInvoke = SimpleWeavingPattern<Conf_DirectFunctionInvocation<N,FUN>>;
template<uint N, class FUN>
struct SimpleWeavingBuilder
: Turnout<SimpleDirectInvoke<N,FUN>>
{
SimpleWeavingBuilder
attachToLeadPort(ProcNode& lead, uint portNr)
{
ASSERT (this->fanIn < N);
PortRef leadPort; /////////////////////////////////////OOO TODO need Accessor on ProcNode!!!!!
this->leadPort.createAt(this->fanIn, leadPort)
++(this->fanIn);
return move(*this);
}
Turnout<SimpleDirectInvoke<N,FUN>>
build()
{
return move(*this);
}
};
/////////////////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1367 : (End)Prototyping: how to assemble a Turnout

View file

@ -1855,9 +1855,7 @@
<node CREATED="1535557111546" ID="ID_649935976" MODIFIED="1538263469668" TEXT="Label-Text als ctor param"/>
<node CREATED="1535557122205" ID="ID_1034248466" MODIFIED="1538263469668" TEXT="resize_toplevel (=true by default)">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
...ob beim Expand/Collapse das umschlie&#223;ende Widget resized werden soll
@ -1904,9 +1902,7 @@
</node>
<node CREATED="1535636297102" ID="ID_1966837488" MODIFIED="1535636338854">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
als <i>denjenigen</i>&#160;Container...
@ -1924,9 +1920,7 @@
<node CREATED="1535636640849" FOLDED="true" ID="ID_1629039815" MODIFIED="1561827464612" TEXT="con">
<node CREATED="1535636663334" ID="ID_1826518668" MODIFIED="1535636693159" TEXT="ordnet alle anderen Belange diesem Belang unter">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
ggfs m&#252;ssen alle anderen Funktionen nach unten delegieren
@ -2606,9 +2600,7 @@
<node CREATED="1534630176586" ID="ID_712401559" MODIFIED="1534630190996" TEXT="wird aber per Default auf hide() gemappt"/>
<node COLOR="#435e98" CREATED="1534634189347" ID="ID_146943890" MODIFIED="1534635809110">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
GTK-Konzepte: &quot;<b>Schlie&#223;en</b>&quot;
@ -3754,9 +3746,7 @@
<node CREATED="1538230675997" ID="ID_1672501842" MODIFIED="1538232718759" TEXT="br&#xe4;uchte eine C-Repr&#xe4;sentation f&#xfc;r BareEntryID"/>
<node CREATED="1538232816534" ID="ID_712541347" MODIFIED="1538232905703" TEXT="habe den Anspruch aber bereits aufgegeben">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
...und zwar an dem Punkt, an dem ich eine DiffMessage in das GUI schicke.
@ -5138,9 +5128,7 @@
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1538938751743" FOLDED="true" ID="ID_243888746" MODIFIED="1679361235146">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
&#187;die <b>Timeline</b>&#171;
@ -6921,9 +6909,7 @@
<icon BUILTIN="idea"/>
<node CREATED="1489544836757" ID="ID_1543872004" MODIFIED="1576282358132" TEXT="Ausf&#xfc;hrung abweisen">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
...stattdessen einen Fehler-Indikator ausl&#246;sen
@ -9458,9 +9444,7 @@
</node>
<node CREATED="1512250874420" ID="ID_407939641" MODIFIED="1512250969766" TEXT="aber zus&#xe4;tzlicher Code-Aufwand">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
und zwar in dem Moment, wo man die Layer zusammensetzt.
@ -80555,8 +80539,8 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1687302599709" ID="ID_1237500630" MODIFIED="1687302620405" TEXT="Render-Node-Invocation">
<icon BUILTIN="hourglass"/>
<node BACKGROUND_COLOR="#f6fed9" COLOR="#ff0000" CREATED="1687302599709" ID="ID_1237500630" MODIFIED="1720997870103" TEXT="Render-Node-Invocation">
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1687302631000" ID="ID_229742286" MODIFIED="1687302644211" TEXT="erster Enwurf von 2010">
<icon BUILTIN="info"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1713657957591" ID="ID_1023195884" MODIFIED="1713658011836" TEXT="#1363 reassess render node draft code">
@ -81057,11 +81041,11 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1713819879109" ID="ID_943908122" MODIFIED="1718843746703" TEXT="Entwurf und Aufbau">
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1713819879109" ID="ID_943908122" MODIFIED="1720997843192" TEXT="Entwurf und Aufbau">
<arrowlink COLOR="#c80a37" DESTINATION="ID_845562088" ENDARROW="Default" ENDINCLINATION="-130;10;" ID="Arrow_ID_66382855" STARTARROW="None" STARTINCLINATION="42;-31;"/>
<arrowlink COLOR="#fdd3b6" DESTINATION="ID_1102491970" ENDARROW="Default" ENDINCLINATION="-366;-51;" ID="Arrow_ID_1227159439" STARTARROW="None" STARTINCLINATION="30;255;"/>
<linktarget COLOR="#fde0ca" DESTINATION="ID_943908122" ENDARROW="Default" ENDINCLINATION="-1682;204;" ID="Arrow_ID_1115019309" SOURCE="ID_1278689110" STARTARROW="None" STARTINCLINATION="-1643;116;"/>
<icon BUILTIN="flag-yellow"/>
<icon BUILTIN="pencil"/>
<node CREATED="1713820093819" ID="ID_1401449333" MODIFIED="1713823888370" TEXT="Zugangsweg">
<icon BUILTIN="forward"/>
<node CREATED="1713820133641" ID="ID_888185703" MODIFIED="1718842764783" TEXT="Gliederung in drei Stufen">
@ -81081,8 +81065,8 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
<node CREATED="1713823582760" ID="ID_857212769" MODIFIED="1713823865318" TEXT="Kl&#xe4;rung: einfach &#x27f6; komplex">
<icon BUILTIN="yes"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1713823596151" ID="ID_252499492" MODIFIED="1713823821817" TEXT="Node-Grundstruktur">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1713823596151" ID="ID_252499492" MODIFIED="1720997896629" TEXT="Node-Grundstruktur">
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1714182997931" ID="ID_1800457140" MODIFIED="1714183006724" TEXT="Anforderungen">
<icon BUILTIN="yes"/>
<node CREATED="1714183028139" ID="ID_196869837" MODIFIED="1714183035818" TEXT="Node kennt N Vorl&#xe4;ufer">
@ -81210,7 +81194,8 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node CREATED="1715037797261" ID="ID_1888148655" MODIFIED="1715037803336" TEXT="Erzeugen einer Node">
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1715037797261" ID="ID_1888148655" MODIFIED="1720997902462" TEXT="Erzeugen einer Node">
<icon BUILTIN="pencil"/>
<node CREATED="1715037805125" ID="ID_1432652709" MODIFIED="1715037824459" TEXT="grunds&#xe4;tzlich: Konstrkution &#x2259; Verdrahtung">
<icon BUILTIN="idea"/>
</node>
@ -81579,7 +81564,8 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node CREATED="1719276014384" ID="ID_274182619" MODIFIED="1719276023591" TEXT="Entwurf syntaktische Struktur">
<node BACKGROUND_COLOR="#d1bcb3" CREATED="1719276014384" ID="ID_274182619" MODIFIED="1720997949542" TEXT="Entwurf syntaktische Struktur">
<icon BUILTIN="info"/>
<node CREATED="1719970599748" ID="ID_1299763307" MODIFIED="1720050731701" TEXT="in mehrere Level aufteilen">
<icon BUILTIN="yes"/>
<node CREATED="1719970637161" ID="ID_1950149667" MODIFIED="1720050731702" TEXT="Level-1 : direkte Instruktionen f&#xfc;r den Turnout-Aufruf">
@ -81594,9 +81580,9 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node CREATED="1720143873151" ID="ID_92747719" MODIFIED="1720143899547" TEXT="es werden nur gew&#xfc;nschte Produktions-Verbindungen spezifiziert"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1719970252027" ID="ID_1241897346" MODIFIED="1719971248624" TEXT="Builder-Schema">
<node BACKGROUND_COLOR="#f0e3c5" COLOR="#990000" CREATED="1719970252027" ID="ID_1241897346" MODIFIED="1720997987064" TEXT="Builder-Schema">
<linktarget COLOR="#b82d72" DESTINATION="ID_1241897346" ENDARROW="Default" ENDINCLINATION="-200;386;" ID="Arrow_ID_1194515432" SOURCE="ID_912277542" STARTARROW="None" STARTINCLINATION="-600;-89;"/>
<icon BUILTIN="flag-yellow"/>
<icon BUILTIN="pencil"/>
<node CREATED="1719971327507" ID="ID_1941686244" MODIFIED="1720050731701" TEXT="Level-2">
<node CREATED="1719970302300" ID="ID_87633601" MODIFIED="1719970332019" TEXT="Prinzip: 1:1 als Default + explizite Abweichung">
<icon BUILTIN="yes"/>
@ -81710,13 +81696,13 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1720177891586" ID="ID_1634202091" MODIFIED="1720177901196" TEXT="der Implementator dieses Glue-Code..."/>
<node CREATED="1720177901993" ID="ID_1005424545" MODIFIED="1720177946185" TEXT="braucht eine M&#xf6;glichkeit, jeden Eingabe-Parameter &#xbb;wiederzuerkennen&#xab;"/>
<node CREATED="1720177992858" ID="ID_981836838" MODIFIED="1720178378014" TEXT="Erl&#xe4;uterung....">
<node CREATED="1720177992858" ID="ID_981836838" MODIFIED="1720999220239" TEXT="Erl&#xe4;uterung....">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<ul>
<li>
in einem fr&#252;heren Build-Schritt wird festgestellt, welche Eingabeparameter eine Lib-Funktion braucht
in einem fr&#252;heren Build-Schritt wird festgestellt,<br />welche Eingabeparameter eine Lib-Funktion braucht
</li>
<li>
f&#252;r alle diese Eingabe-Parameter wird eine Quelle vorgemerkt
@ -81753,7 +81739,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
<node CREATED="1720178543387" ID="ID_1839001807" MODIFIED="1720178576252" TEXT="adaptInvocation&lt;ADA&gt;">
<node CREATED="1720178577432" ID="ID_438090694" MODIFIED="1720178597453" TEXT="ADA &#x2261; Typ der Invocation-Adapter Klasse"/>
<node CREATED="1720178598060" ID="ID_1951506826" MODIFIED="1720178673488">
<node CREATED="1720178598060" ID="ID_1951506826" MODIFIED="1720999561682">
<richcontent TYPE="NODE"><html>
<head/>
<body>
@ -81762,6 +81748,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</p>
</body>
</html></richcontent>
<arrowlink COLOR="#cd0172" DESTINATION="ID_668512282" ENDARROW="Default" ENDINCLINATION="-522;-42;" ID="Arrow_ID_1453353099" STARTARROW="None" STARTINCLINATION="651;43;"/>
<icon BUILTIN="forward"/>
</node>
<node CREATED="1720178620602" ID="ID_1754473259" MODIFIED="1720178640340" TEXT="und dann mit einer Referenz auf die FeedManifold aufgerufen"/>
@ -86933,8 +86920,11 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
<node CREATED="1719791285941" ID="ID_320104526" MODIFIED="1719791288952" TEXT="Verschaltung">
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1719791290189" ID="ID_606778127" MODIFIED="1719791319757" TEXT="Schema f&#xfc;r die FeedManifold noch nicht entscheidbar">
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1719791290189" ID="ID_606778127" MODIFIED="1720998971868" TEXT="Schema f&#xfc;r die FeedManifold vom Gebrauch abh&#xe4;ngig">
<icon BUILTIN="messagebox_warning"/>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1720998988665" ID="ID_522852777" MODIFIED="1720999010608" TEXT="mu&#xdf; mich durch Prototyping herantasten....">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1719791322472" ID="ID_258494217" LINK="#ID_656569241" MODIFIED="1719791358411" TEXT="ich wei&#xdf; nur: sie hat den Charakter einer Meta-Spec"/>
<node CREATED="1719791364810" ID="ID_881885593" MODIFIED="1719791369910" TEXT="zwei M&#xf6;glichkeiten">
<node CREATED="1719791370908" ID="ID_1842583216" MODIFIED="1719791566361" TEXT="orientiert sich an der umschlie&#xdf;enden Node">
@ -88109,8 +88099,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
ein <font face="Monospaced" color="#8a0606">emitBuffer()</font>&#160;erfolgen soll
</p>
</body>
</html>
</richcontent>
</html></richcontent>
<arrowlink COLOR="#3c3267" DESTINATION="ID_861820571" ENDARROW="Default" ENDINCLINATION="65;-527;" ID="Arrow_ID_1939934739" STARTARROW="None" STARTINCLINATION="1714;371;"/>
<node CREATED="1720995730036" ID="ID_578172689" MODIFIED="1720995740742" TEXT="bedeutet: nur f&#xfc;r die Ausgabeseite"/>
</node>
@ -88129,12 +88118,74 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1720622579250" ID="ID_474766411" MODIFIED="1720622685877" TEXT="Parameter-Strukturen im Turnout aufbauen">
<arrowlink COLOR="#942459" DESTINATION="ID_1611074620" ENDARROW="Default" ENDINCLINATION="-71;593;" ID="Arrow_ID_1297849942" STARTARROW="None" STARTINCLINATION="-1091;65;"/>
<icon BUILTIN="pencil"/>
<node CREATED="1720999599081" ID="ID_413237580" MODIFIED="1720999608586" TEXT="hierf&#xfc;r notwendig...">
<node CREATED="1720999613678" ID="ID_1098347489" MODIFIED="1720999621465" TEXT="Typ des Weaving-Pattern-Chain">
<node CREATED="1720999647911" ID="ID_455578970" MODIFIED="1720999650926" TEXT="base-CONF"/>
<node CREATED="1720999651654" ID="ID_523504674" MODIFIED="1720999657433" TEXT="Layer dar&#xfc;ber bauen"/>
</node>
<node CREATED="1720999757930" ID="ID_1449147191" MODIFIED="1720999764421" TEXT="dynamische Parametrisierung">
<node CREATED="1720999773568" ID="ID_1975133359" MODIFIED="1720999780554" TEXT="fanIn / fanOut festlegen"/>
<node CREATED="1720999791164" ID="ID_159386495" MODIFIED="1720999805478" TEXT="Lead-Port-Referenzen einf&#xfc;llen"/>
<node CREATED="1720999812160" ID="ID_1014249721" MODIFIED="1720999825402" TEXT="Ausgabe Buffer-Descriptoren konstruieren"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1720999952601" ID="ID_773939367" MODIFIED="1720999968167" TEXT="stelle fest: brauche einen Weaving-Pattern-Builder">
<icon BUILTIN="yes"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1721000066150" ID="ID_1111138525" MODIFIED="1721000102756" TEXT="auch dieses per Prototyping ausarbeiten">
<icon BUILTIN="yes"/>
<node CREATED="1721001272080" ID="ID_1644136965" MODIFIED="1721001278238" TEXT="mu&#xdf; irgendwie N festlegen"/>
<node CREATED="1721001278759" ID="ID_1598574377" MODIFIED="1721001291674" TEXT="weitere Schwierigkeit: die FUN initialisieren"/>
<node CREATED="1721001783958" ID="ID_671303341" MODIFIED="1721001800843" TEXT="m&#xf6;chte das eigentlich Schicht f&#xfc;r Schicht aufbauen">
<node CREATED="1721001804870" ID="ID_520221401" MODIFIED="1721001828433" TEXT="analog zum IterExplorer-Builder">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1721001829710" ID="ID_1175533988" MODIFIED="1721001854628" TEXT="&#x27f9; fortlaufend einen neuen Builder-Typ zur&#xfc;ckgeben"/>
</node>
<node CREATED="1721002518189" ID="ID_539153824" MODIFIED="1721002527069" TEXT="Lead-Ports einf&#xfc;llen">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1721002528188" ID="ID_1483660753" MODIFIED="1721002546307" TEXT="Ha! kann fanIn schrittweise hochz&#xe4;hlen">
<icon BUILTIN="idea"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1721002548302" ID="ID_1439228362" MODIFIED="1721002561328" TEXT="brauche Port-Accessor auf ProcNode">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1721002564319" ID="ID_566779431" MODIFIED="1721002578582" TEXT="Connectivity herausf&#xfc;hren">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1721002570214" ID="ID_1634824320" MODIFIED="1721002578582" TEXT="verwendet RefArray">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1720622703868" ID="ID_332813706" MODIFIED="1720622709065" TEXT="in Bausteine zerlegen">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1720999408569" ID="ID_253722349" MODIFIED="1720999419252" TEXT="dann aus diesem Konstrukt ein Builder-API ableiten">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1719970886798" ID="ID_718917982" MODIFIED="1719970979999" TEXT="createBuffers&lt;ILA&gt;(args....)"/>
<node CREATED="1720178543387" ID="ID_1390316493" MODIFIED="1720178576252" TEXT="adaptInvocation&lt;ADA&gt;">
<node CREATED="1720178577432" ID="ID_563185736" MODIFIED="1720178597453" TEXT="ADA &#x2261; Typ der Invocation-Adapter Klasse"/>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1720999461725" ID="ID_668512282" MODIFIED="1720999561683" TEXT="kl&#xe4;ren: wo/wie wird diese instantiiert?">
<linktarget COLOR="#cd0172" DESTINATION="ID_668512282" ENDARROW="Default" ENDINCLINATION="-522;-42;" ID="Arrow_ID_1453353099" SOURCE="ID_1951506826" STARTARROW="None" STARTINCLINATION="651;43;"/>
<icon BUILTIN="help"/>
<node CREATED="1720999894058" ID="ID_214293974" MODIFIED="1720999922585" TEXT="Instantiiert wird sie erst im Turnout::mount()"/>
<node CREATED="1720999923389" ID="ID_1583842175" MODIFIED="1720999949503">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
aber festgelegt wird sie <i>beim Bauen </i>des Turnout
</p>
</body>
</html>
</richcontent>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
@ -127521,8 +127572,7 @@ std::cout &lt;&lt; tmpl.render({&quot;what&quot;, &quot;World&quot;}) &lt;&lt; s
</li>
</ul>
</body>
</html>
</richcontent>
</html></richcontent>
</node>
</node>
<node CREATED="1719248978957" ID="ID_1526659438" MODIFIED="1719248990921" TEXT="BufferProvider">
@ -127556,8 +127606,7 @@ std::cout &lt;&lt; tmpl.render({&quot;what&quot;, &quot;World&quot;}) &lt;&lt; s
<u>Achtung</u>: <b>nicht</b>&#160;idempotent
</p>
</body>
</html>
</richcontent>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>