Invocation: introduce pattern data holder into NodeBuilder
- add an unspecified data holder type into the NodeBuilder - establish ability to cross-build a `NodeBuilder` with adapted data holder
This commit is contained in:
parent
b4aee6fba8
commit
0de7905444
3 changed files with 98 additions and 69 deletions
|
|
@ -128,10 +128,10 @@ namespace engine {
|
|||
using DataBuilder = lib::SeveralBuilder<I,E, POL::template Policy>;
|
||||
|
||||
|
||||
template<class POL>
|
||||
template<class POL, class DAT>
|
||||
class PortBuilderRoot;
|
||||
|
||||
template<class POL>
|
||||
template<class POL, class DAT = PatternDataAnchor>
|
||||
class NodeBuilder
|
||||
: util::MoveOnly
|
||||
{
|
||||
|
|
@ -139,16 +139,25 @@ namespace engine {
|
|||
using LeadRefs = DataBuilder<POL, ProcNodeRef>;
|
||||
|
||||
protected:
|
||||
PortData ports_;
|
||||
PortData ports_; ///////////////////////////////////////OOO obsolete and replaced by patternData_
|
||||
LeadRefs leads_;
|
||||
|
||||
DAT patternData_;
|
||||
|
||||
public:
|
||||
template<typename...INIT>
|
||||
NodeBuilder (INIT&& ...alloInit)
|
||||
: ports_{forward<INIT> (alloInit)...}
|
||||
: ports_{forward<INIT> (alloInit)...} /////////////OOO obsolete and replaced by patternData_
|
||||
, leads_{forward<INIT> (alloInit)...}
|
||||
{ }
|
||||
|
||||
template<class BUILD, uint siz, class D0>
|
||||
NodeBuilder (NodeBuilder<POL,D0>&& pred, BUILD&& entryBuilder)
|
||||
: ports_{} /////////////OOO obsolete and replaced by patternData_
|
||||
, leads_{move (pred.leads_)}
|
||||
, patternData_{move (pred.patternData_), forward<BUILD> (entryBuilder)}
|
||||
{ }
|
||||
|
||||
|
||||
NodeBuilder
|
||||
addLead (ProcNode const& lead)
|
||||
|
|
@ -159,7 +168,7 @@ namespace engine {
|
|||
|
||||
|
||||
/** recursively enter detailed setup of a single processing port */
|
||||
PortBuilderRoot<POL> preparePort();
|
||||
PortBuilderRoot<POL,DAT> preparePort();
|
||||
|
||||
|
||||
/**
|
||||
|
|
@ -200,12 +209,12 @@ namespace engine {
|
|||
|
||||
|
||||
|
||||
template<class POL>
|
||||
template<class POL, class DAT>
|
||||
class PortBuilderRoot
|
||||
: protected NodeBuilder<POL>
|
||||
: protected NodeBuilder<POL,DAT>
|
||||
{
|
||||
public:
|
||||
NodeBuilder<POL>
|
||||
NodeBuilder<POL,DAT>
|
||||
completePort()
|
||||
{
|
||||
static_assert(not sizeof(POL),
|
||||
|
|
@ -237,20 +246,20 @@ namespace engine {
|
|||
* the enclosed original builder temporarily; the terminal builder operation
|
||||
* PortBuilder::completePort() will unwrap and return the original NodeBuilder.
|
||||
*/
|
||||
template<class POL>
|
||||
inline PortBuilderRoot<POL>
|
||||
NodeBuilder<POL>::preparePort ()
|
||||
template<class POL, class DAT>
|
||||
inline PortBuilderRoot<POL, DAT>
|
||||
NodeBuilder<POL,DAT>::preparePort ()
|
||||
{
|
||||
return PortBuilderRoot<POL>{move(*this)};
|
||||
return PortBuilderRoot<POL,DAT>{move(*this)};
|
||||
}
|
||||
|
||||
|
||||
|
||||
template<class POL, class WAB>
|
||||
template<class POL, class DAT, class WAB>
|
||||
class PortBuilder
|
||||
: public PortBuilderRoot<POL>
|
||||
: public PortBuilderRoot<POL,DAT>
|
||||
{
|
||||
using _Par = PortBuilderRoot<POL>;
|
||||
using _Par = PortBuilderRoot<POL,DAT>;
|
||||
|
||||
WAB weavingBuilder_;
|
||||
|
||||
|
|
@ -310,13 +319,13 @@ namespace engine {
|
|||
/*************************************************************//**
|
||||
* Terminal: complete the Port wiring and return to the node level.
|
||||
*/
|
||||
NodeBuilder<POL>
|
||||
NodeBuilder<POL,DAT> ////////////////////////////////////////OOO need to extend and evolve the DAT parameter here
|
||||
completePort()
|
||||
{
|
||||
//////////////////////////////////////////////////////////OOO need to provide all links to lead nodes here
|
||||
weavingBuilder_.fillRemainingBufferTypes();
|
||||
_Par::ports_.append(weavingBuilder_.build());
|
||||
return static_cast<NodeBuilder<POL>&&> (*this);
|
||||
return static_cast<NodeBuilder<POL,DAT>&&> (*this);
|
||||
} // slice away the subclass
|
||||
|
||||
private:
|
||||
|
|
@ -326,17 +335,17 @@ namespace engine {
|
|||
, weavingBuilder_{forward<FUN> (fun)}
|
||||
{ }
|
||||
|
||||
friend class PortBuilderRoot<POL>;
|
||||
friend class PortBuilderRoot<POL,DAT>;
|
||||
};
|
||||
|
||||
|
||||
template<class POL>
|
||||
template<class POL, class DAT>
|
||||
template<typename FUN>
|
||||
auto
|
||||
PortBuilderRoot<POL>::invoke (FUN&& fun)
|
||||
PortBuilderRoot<POL,DAT>::invoke (FUN&& fun)
|
||||
{
|
||||
using WeavingBuilder_FUN = WeavingBuilder<POL, manifoldSiz<FUN>(), FUN>;
|
||||
return PortBuilder<POL, WeavingBuilder_FUN>{move(*this), forward<FUN> (fun)};
|
||||
return PortBuilder<POL,DAT, WeavingBuilder_FUN>{move(*this), forward<FUN> (fun)};
|
||||
}
|
||||
/*
|
||||
template<class POL>
|
||||
|
|
|
|||
|
|
@ -249,13 +249,19 @@ namespace engine {
|
|||
PAR::collectEntries (dataBuilder, cntElm+1, max (siz,maxSiz));
|
||||
buildEntry (dataBuilder);
|
||||
}
|
||||
|
||||
|
||||
PatternData(PAR&& predecessor, BUILD&& entryBuilder)
|
||||
: PAR{move (predecessor)}
|
||||
, buildEntry{move (entryBuilder)}
|
||||
{ }
|
||||
};
|
||||
|
||||
/**
|
||||
* Data recursion end: prime the port data storage
|
||||
* by reserving appropriate storage to hold all known Turnout elements.
|
||||
*/
|
||||
struct DimData
|
||||
struct PatternDataAnchor
|
||||
{
|
||||
template<class DAB>
|
||||
void
|
||||
|
|
@ -265,6 +271,7 @@ namespace engine {
|
|||
}
|
||||
};
|
||||
|
||||
|
||||
template<uint N, class FUN>
|
||||
using SimpleDirectInvoke = SimpleWeavingPattern<Conf_DirectFunctionInvocation<N,FUN>>;
|
||||
|
||||
|
|
|
|||
|
|
@ -8767,9 +8767,7 @@
|
|||
<icon BUILTIN="messagebox_warning"/>
|
||||
<node CREATED="1511455484027" ID="ID_548359395" MODIFIED="1511572072779" TEXT="unmittelbare Folge davon, daß wir den Typ des Expand-Funktors analysieren">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
_fun<FUN>::Sig scheitert
|
||||
|
|
@ -9158,9 +9156,7 @@
|
|||
<node CREATED="1512250807318" FOLDED="true" ID="ID_1268505006" MODIFIED="1512926191761" TEXT="das wären zwei Indirektionen pro Layer....">
|
||||
<node CREATED="1512250866126" ID="ID_739491519" MODIFIED="1512250917460" TEXT="zwar optimierbar">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
wir gehen davon aus,
|
||||
|
|
@ -9946,9 +9942,7 @@
|
|||
</node>
|
||||
<node CREATED="1512769179503" ID="ID_1053011981" MODIFIED="1512769198300">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
<i>jeder</i> Zugriff auf ein Sub-Objekt muß durch eine VTable
|
||||
|
|
@ -11291,9 +11285,7 @@
|
|||
</node>
|
||||
<node CREATED="1513891876365" ID="ID_39114883" MODIFIED="1513891928397" TEXT="Knackpunkt: Struktur muß schon da sein">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
...das heißt:
|
||||
|
|
@ -12614,9 +12606,7 @@
|
|||
</node>
|
||||
<node CREATED="1522809051096" ID="ID_1045087817" MODIFIED="1522809066884">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
ViewLocator <i>ruft</i> die DSL auf
|
||||
|
|
@ -14938,9 +14928,7 @@
|
|||
<node CREATED="1525565935350" ID="ID_252570354" MODIFIED="1525565950136" TEXT="Instanz-Limit"/>
|
||||
<node CREATED="1525565950988" ID="ID_1233385790" MODIFIED="1525567162939">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
kann dazu führen,
|
||||
|
|
@ -17893,9 +17881,7 @@
|
|||
</node>
|
||||
<node CREATED="1541088480846" ID="ID_6642470" MODIFIED="1576282358101" TEXT="Kopf proportional platzierbar">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
Vorgabe ist ein Fenster(=Intervall) und dessen Position relativ zum Widget-Start.
|
||||
|
|
@ -22797,9 +22783,7 @@
|
|||
<icon BUILTIN="idea"/>
|
||||
<node CREATED="1563019440558" ID="ID_1321598849" MODIFIED="1576282358088" TEXT="Scope-Insets">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
die Vertiefungen im Anzeige-Profil
|
||||
|
|
@ -49447,9 +49431,7 @@
|
|||
<font NAME="SansSerif" SIZE="14"/>
|
||||
<node CREATED="1582388650742" ID="ID_681444782" MODIFIED="1582388698969">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
»<b>Tangible</b>« : Basis
|
||||
|
|
@ -50053,9 +50035,7 @@
|
|||
<node CREATED="1481413462638" ID="ID_485427993" MODIFIED="1518487921090" TEXT="Problem: Backlink zum Nexus"/>
|
||||
<node CREATED="1481413470268" ID="ID_688303898" MODIFIED="1576282358006" TEXT="Nexus ist zu dem Zeitpunkt schon destruiert">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
Die Lösung für diese wecheslseitige Abhängigkeit
|
||||
|
|
@ -50566,9 +50546,7 @@
|
|||
<node CREATED="1455290807459" ID="ID_1222290895" MODIFIED="1518487921091" TEXT="muß Auszüge aus dieser Info schaffen"/>
|
||||
<node CREATED="1455290827193" ID="ID_1429808095" MODIFIED="1518487921091">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
nach <b>Perspektive</b>
|
||||
|
|
@ -50811,9 +50789,7 @@
|
|||
<icon BUILTIN="button_ok"/>
|
||||
<node CREATED="1488676827432" ID="ID_1354771185" MODIFIED="1576282357999" TEXT="Problem: air-Gap">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
...wegen
|
||||
|
|
@ -50930,9 +50906,7 @@
|
|||
</node>
|
||||
<node CREATED="1488936942317" ID="ID_222608258" MODIFIED="1488939548823">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
Proc: <b>CmdInstanceManager</b>
|
||||
|
|
@ -89750,7 +89724,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1728919724334" ID="ID_1429006329" MODIFIED="1728919748503" TEXT="Bleibt aber das Problem mit realloc()">
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1728919724334" ID="ID_1429006329" MODIFIED="1729477431404" TEXT="Bleibt aber das Problem mit realloc()">
|
||||
<arrowlink COLOR="#eb3d5e" DESTINATION="ID_1149896689" ENDARROW="Default" ENDINCLINATION="-34;-33;" ID="Arrow_ID_1718389433" STARTARROW="None" STARTINCLINATION="-192;14;"/>
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
<node CREATED="1728919780226" ID="ID_459933288" MODIFIED="1728920202861" TEXT="die »Hintertür« funktioniert nur für die aktuell neueste Allokation">
|
||||
|
|
@ -89766,8 +89740,10 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node CREATED="1728920206175" ID="ID_1988845099" MODIFIED="1728920273724" TEXT="aber der nested-Builder bewirkt verschachtelte Allokations-Anforderungen"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1728920314192" ID="ID_147357026" MODIFIED="1728920324731" TEXT="Lösungen">
|
||||
<icon BUILTIN="idea"/>
|
||||
<node CREATED="1728920326985" ID="ID_548153639" MODIFIED="1728920342770" TEXT="benötigte Anzahl zu Beginn verbindlich festsetzen"/>
|
||||
<node CREATED="1728920344206" ID="ID_337652041" MODIFIED="1728920686754" TEXT="trickreichen Aufruf, der alle Builder in einem Lauf abfeuert">
|
||||
<node COLOR="#5b280f" CREATED="1728920326985" ID="ID_548153639" MODIFIED="1729477474451" TEXT="benötigte Anzahl zu Beginn vom Client verbindlich festzusetzen">
|
||||
<icon BUILTIN="button_cancel"/>
|
||||
</node>
|
||||
<node CREATED="1728920344206" ID="ID_337652041" MODIFIED="1729477477113" TEXT="trickreichen Aufruf, der alle Builder in einem Lauf abfeuert">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
|
|
@ -89781,6 +89757,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</ul>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="forward"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -90037,8 +90014,9 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node CREATED="1729307392664" ID="ID_1001735525" MODIFIED="1729307415447" TEXT="Several<BuffDescr>"/>
|
||||
<node CREATED="1729307446488" ID="ID_457436977" MODIFIED="1729307460312" TEXT="N (Größe der Manifold)"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1729307494039" ID="ID_1819511988" MODIFIED="1729307810896" TEXT="Idee: Tail-rekursiver Builder-Aufruf?">
|
||||
<node COLOR="#5b280f" CREATED="1729307494039" ID="ID_1819511988" MODIFIED="1729477545927" TEXT="Idee: Tail-rekursiver Builder-Aufruf?">
|
||||
<icon BUILTIN="help"/>
|
||||
<icon BUILTIN="button_cancel"/>
|
||||
<node CREATED="1729307525576" ID="ID_1617175155" MODIFIED="1729307576310" TEXT="man würde damit die Dateninhalte auf dem Stack sammeln"/>
|
||||
<node CREATED="1729307669041" ID="ID_1469484154" MODIFIED="1729307806096" TEXT="allerdings muß dann auch die Port-Erzeugung Tail-rekursiv geschrieben werden">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
|
|
@ -90050,8 +90028,11 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node COLOR="#5b280f" CREATED="1729477530286" ID="ID_788048421" MODIFIED="1729477542975" TEXT="keine gute Idee">
|
||||
<icon BUILTIN="stop-sign"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1729307854949" ID="ID_556427565" MODIFIED="1729307889585" TEXT="Alternative: Dateninhalte auf dem Stack sammeln?">
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#990033" CREATED="1729307854949" ID="ID_556427565" MODIFIED="1729477618465" TEXT="Alternative: Dateninhalte auf dem Stack sammeln?">
|
||||
<icon BUILTIN="help"/>
|
||||
<node CREATED="1729307896503" ID="ID_195478436" MODIFIED="1729307957714" TEXT="ein Tupel (Several<PortRef>,Several<BuffDescr>, std::function, N)"/>
|
||||
<node CREATED="1729307966587" ID="ID_1262034001" MODIFIED="1729308011601" TEXT="man kann dann in einem Pass das max(N) finden und damit dimensionieren"/>
|
||||
|
|
@ -90069,6 +90050,10 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node COLOR="#5b280f" CREATED="1729434345618" ID="ID_31768721" MODIFIED="1729434364792" TEXT="damit wird diese Lösung ihärent redundant">
|
||||
<icon BUILTIN="stop-sign"/>
|
||||
</node>
|
||||
<node CREATED="1729477560424" ID="ID_1164894748" MODIFIED="1729477610889" TEXT="das führt zu einer Variante...">
|
||||
<arrowlink COLOR="#56638e" DESTINATION="ID_1796646662" ENDARROW="Default" ENDINCLINATION="138;-8;" ID="Arrow_ID_8244527" STARTARROW="None" STARTINCLINATION="246;23;"/>
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1729308176710" ID="ID_70235871" MODIFIED="1729308532647" TEXT="Wichtig: am Ende des PortBuilder' bereits eine Type-Erasure machen">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
|
|
@ -90108,8 +90093,8 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</node>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1729385699535" ID="ID_1823720040" MODIFIED="1729385709180" TEXT="Umstellung der Implementierung">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1729385821879" ID="ID_562398626" MODIFIED="1729385850635" TEXT="neues Interface für Build-Ergebnis schaffen">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1729385821879" ID="ID_562398626" MODIFIED="1729477924907" TEXT="neues Interface für Build-Ergebnis schaffen">
|
||||
<icon BUILTIN="yes"/>
|
||||
<node CREATED="1729385860586" ID="ID_1726006228" MODIFIED="1729385872581" TEXT="Zweck...">
|
||||
<node CREATED="1729385873337" ID="ID_1712688191" MODIFIED="1729385886298" TEXT="erzeuge eine Deque mit function-Objekten"/>
|
||||
<node CREATED="1729385887568" ID="ID_44692572" MODIFIED="1729385917344" TEXT="diese nehmen eine DataBuilder-Referenz als Argument"/>
|
||||
|
|
@ -90130,11 +90115,13 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</node>
|
||||
<node CREATED="1729386535588" ID="ID_288497913" MODIFIED="1729386568518" TEXT="ist lediglich eine Typedef + ein Consumer-Functor"/>
|
||||
</node>
|
||||
<node CREATED="1729386797044" ID="ID_1761275309" MODIFIED="1729386814097" TEXT="Builder-Closure vom WeavingBuilder entkoppeln">
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1729386797044" ID="ID_1761275309" MODIFIED="1729477910915" TEXT="Builder-Closure vom WeavingBuilder entkoppeln">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1729386815675" ID="ID_1416710632" MODIFIED="1729386828903" TEXT="WeavingBuilder lebt nur temporär auf dem Stack">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1729434130348" ID="ID_1796646662" MODIFIED="1729434165322" TEXT="muß size-Info weitergeben ⟹ Funktor allein genügt nicht">
|
||||
<linktarget COLOR="#56638e" DESTINATION="ID_1796646662" ENDARROW="Default" ENDINCLINATION="138;-8;" ID="Arrow_ID_8244527" SOURCE="ID_1164894748" STARTARROW="None" STARTINCLINATION="246;23;"/>
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
<node CREATED="1729435375920" ID="ID_232356982" MODIFIED="1729435650306" TEXT="damit bleibt nur eine rekursive funktionale Datenstruktur übrig">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
|
|
@ -90261,6 +90248,32 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1729476213539" ID="ID_1086673999" MODIFIED="1729477907340" TEXT="Weitergabe der Pattern-Daten">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1729476230116" ID="ID_632213709" MODIFIED="1729477873527" TEXT="sie müssen im NodeBuilder liegen">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node COLOR="#338800" CREATED="1729477632752" ID="ID_1978776650" MODIFIED="1729477655829" TEXT="muß dazu einen zweiten Typpatameter DAT überall durchschleifen">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1729477657086" ID="ID_1689496793" MODIFIED="1729477812614" TEXT="brauche einen copy-and-adapt-Konstruktur">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
...damit die terminale Methode des PortBuilders nun nicht mehr den originalen NodeBuilder per slice-copy extrahiert, sondern stattdessen eine angepaßte Variante erzeugen kann, bei der ein »Zwiebelschalen-Layer« um die PatternData gelegt wird, während alle weiteren Daten per move weitergeschoben werden
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1729477829436" ID="ID_669795504" MODIFIED="1729477870839" TEXT="PortBuilder::build() muß nun Build-Funktor erzeugen">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1729477875734" ID="ID_1268344411" MODIFIED="1729477903179" TEXT="Datenerzeugung über die Funktoren-Kette">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
|
|||
Loading…
Reference in a new issue