Invocation: rearrange MediaWeavingPattern storage layout

...to create an ''access path for diagnostics'' and further evaluations
while ''bypassing the VTable.''

It is a well-known downside of specifically typed, highly optimisable
template-based code to create a dangerous leverage for generating spurious,
mostly identical virtual function instances added for secondary concerns.

Thus it is a consequence of this design choice, either to forego some diagnostic
and analytical possibilities, or to exploit ''other means'' for retrieving
internal data, which is needed for tangential purposes only. The solution
pursued hereby exploits similar layout of various ''weaving pattern''
template instances to create an ''access backdoor'' for use cases
beyond the primary performance-critical path.
This commit is contained in:
Fischlurch 2025-02-03 03:27:06 +01:00
parent ead494e465
commit bcdcb36615
5 changed files with 351 additions and 55 deletions

View file

@ -175,16 +175,18 @@ namespace engine {
*/
template<class INVO>
struct MediaWeavingPattern
: INVO
: util::NonCopyable
{
using Feed = typename INVO::Feed;
static_assert (_verify_usable_as_InvocationAdapter<Feed>());
Several<PortRef> leadPort;
Several<BuffDescr> outTypes;
Several<PortRef> leadPort_;
Several<BuffDescr> outTypes_;
uint resultSlot{0};
uint resultSlot_{0};
INVO prototype_;
/** forwarding-ctor to provide the detailed input/output connections */
template<typename...ARGS>
@ -192,28 +194,28 @@ namespace engine {
,Several<BuffDescr>&& dr
,uint resultIdx
,ARGS&& ...args)
: INVO{forward<ARGS>(args)...}
, leadPort{move(pr)}
, outTypes{move(dr)}
, resultSlot{resultIdx}
: leadPort_{move(pr)}
, outTypes_{move(dr)}
, resultSlot_{resultIdx}
, prototype_{forward<ARGS>(args)...}
{ }
Feed
mount (TurnoutSystem& turnoutSys)
{
ENSURE (leadPort.size() <= INVO::FAN_I);
ENSURE (outTypes.size() <= INVO::FAN_O);
return INVO::buildFeed (turnoutSys);
ENSURE (leadPort_.size() <= INVO::FAN_I);
ENSURE (outTypes_.size() <= INVO::FAN_O);
return prototype_.buildFeed (turnoutSys);
}
void
pull (Feed& feed, TurnoutSystem& turnoutSys)
{
if constexpr (Feed::hasInput())
for (uint i=0; i<leadPort.size(); ++i)
for (uint i=0; i<leadPort_.size(); ++i)
{
BuffHandle inputData = leadPort[i].get().weave (turnoutSys);
BuffHandle inputData = leadPort_[i].get().weave (turnoutSys);
feed.inBuff.createAt(i, move(inputData));
}
}
@ -221,11 +223,11 @@ namespace engine {
void
shed (Feed& feed, TurnoutSystem&, OptionalBuff outBuff)
{
for (uint i=0; i<outTypes.size(); ++i)
for (uint i=0; i<outTypes_.size(); ++i)
{
BuffHandle resultData =
i == resultSlot and outBuff? *outBuff
: outTypes[i].lockBuffer();
i == resultSlot_ and outBuff? *outBuff
: outTypes_[i].lockBuffer();
feed.outBuff.createAt(i, move(resultData));
}
feed.connect();
@ -241,20 +243,27 @@ namespace engine {
fix (Feed& feed, TurnoutSystem&)
{
if constexpr (Feed::hasInput())
for (uint i=0; i<leadPort.size(); ++i)
for (uint i=0; i<leadPort_.size(); ++i)
{
feed.inBuff[i].release();
}
for (uint i=0; i<outTypes.size(); ++i)
for (uint i=0; i<outTypes_.size(); ++i)
{
feed.outBuff[i].emit(); // state transition: data ready
if (i != resultSlot)
if (i != resultSlot_)
feed.outBuff[i].release();
}
ENSURE (resultSlot < INVO::FAN_O, "invalid result buffer configured.");
return feed.outBuff[resultSlot];
ENSURE (resultSlot_ < INVO::FAN_O, "invalid result buffer configured.");
return feed.outBuff[resultSlot_];
}
/** @internal expose data not dependent on the template params */
friend auto
_accessInternal(MediaWeavingPattern& patt)
{
return std::tie (patt.leadPort_, patt.outTypes_);
}
};

View file

@ -364,6 +364,14 @@ namespace engine {
turnoutSys.detachChainBlock(feed.block());
return *feed.outBuff;
}
/** @internal expose data not dependent on the template params */
friend auto
_accessInternal(ParamWeavingPattern& patt)
{
return std::tie (patt.delegatePort_);
}
};

View file

@ -108,6 +108,7 @@ namespace engine {
* combined and processed to yield the results; actually this implementation
* is assembled from several building blocks, in accordance to the specific
* situation as established by the _Builder_ for a given render node.
* @warning please ensure \ref _TurnoutDiagnostic remains _layout compatible_
*/
template<class PAT>
class Turnout
@ -143,6 +144,37 @@ namespace engine {
/**
* @internal »Backdoor« for diagnostic
* @warning must be kept **layout compatible** with Turnout
*/
template<class PAT>
class _TurnoutDiagnostic
: public Port
, public PAT
{
BuffHandle
weave (TurnoutSystem&, OptionalBuff =std::nullopt) override
{
throw err::Fatal{"Diagnostic class -- must not be invoked"};
}
public:
/**
* Access to internals of the _Weaving Pattern_ bypassing the VTable.
* @remark a huge number of different _Weaving Pattern instances_ will be created,
* as result of implementing render functionality by delegating to some
* external media processing library. Each time, a highly optimised and
* tailored instance of Turnout::weave() is generated. However, by all
* means we must avoid generating additional repetitive generic code,
* which is only used occasionally and for unit-testing.
* Rather, with the help of this »backdoor«, diagnostic code can exploit
* the similar basic layout of weaving pattern templates to gain access
* to some common infrastructure, notably the predecessor ports.
*/
};
}}// namespace steam::engine
#endif /*STEAM_ENGINE_TURNOUT_H*/

View file

@ -73,6 +73,7 @@ namespace test {
{
Time nomTime{rani(10'000),0}; // drive test with a random »nominal Time« <10s with ms granularity
TurnoutSystem invoker{nomTime}; // a time spec is mandatory, all further parameters are optional
////////////////////////////////OOO unfinished - demonstrate simple accesses to the TurnoutSystem
}

View file

@ -85267,7 +85267,9 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</body>
</html></richcontent>
</node>
<node CREATED="1735064599178" ID="ID_152831343" MODIFIED="1735064621219" TEXT="Konsequenz &#x27f9; Builder steuert Parameter via FeedPrototype"/>
<node CREATED="1735064599178" ID="ID_152831343" MODIFIED="1738549832859" TEXT="Konsequenz &#x27f9; Builder steuert Parameter via FeedPrototype">
<arrowlink COLOR="#476d81" DESTINATION="ID_335336619" ENDARROW="Default" ENDINCLINATION="1464;-35;" ID="Arrow_ID_1855832580" STARTARROW="None" STARTINCLINATION="417;0;"/>
</node>
<node CREATED="1735064622575" ID="ID_873434155" MODIFIED="1735323528683" TEXT="Ansatzpunkt auf dem Port-Builder">
<arrowlink COLOR="#8595a8" DESTINATION="ID_1218064070" ENDARROW="Default" ENDINCLINATION="-31;-184;" ID="Arrow_ID_1907314003" STARTARROW="None" STARTINCLINATION="-219;19;"/>
<node CREATED="1735064673697" ID="ID_1825450032" MODIFIED="1735064771303" TEXT="brauche Quer-Schwenk auf schon bestehendem (vollen) PortBuilder">
@ -94606,10 +94608,13 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<icon BUILTIN="smily_bad"/>
</node>
</node>
<node CREATED="1720652126344" ID="ID_1079595557" MODIFIED="1720652143498" TEXT="L&#xf6;sung-2 : auf dem Stack">
<node BACKGROUND_COLOR="#c8c0b6" CREATED="1720652126344" ID="ID_1079595557" MODIFIED="1738549482929" TEXT="L&#xf6;sung-2 : auf dem Stack">
<linktarget COLOR="#5698c3" DESTINATION="ID_1079595557" ENDARROW="Default" ENDINCLINATION="-7;22;" ID="Arrow_ID_163927740" SOURCE="ID_923963620" STARTARROW="None" STARTINCLINATION="-723;36;"/>
<icon BUILTIN="forward"/>
<node CREATED="1720652168706" ID="ID_61021108" MODIFIED="1720652178085" TEXT="dann mu&#xdf; er dort instantiiert werden"/>
<node CREATED="1720652904597" ID="ID_1630555344" MODIFIED="1720652921519" TEXT="z.B. von der mount()-Funktion"/>
<node CREATED="1720652181026" ID="ID_1177474866" MODIFIED="1720652198764" TEXT="und mu&#xdf; &#xfc;berall hin als Parameter mit durchgereicht werden"/>
<node CREATED="1738549490982" ID="ID_1949032708" MODIFIED="1738549500649" TEXT="Vorteil: explizit, klar und flexibel"/>
</node>
<node CREATED="1720652297556" ID="ID_99466681" MODIFIED="1720652307387" TEXT="L&#xf6;sung-3 : in einem speziellen Buffer">
<node CREATED="1720652348450" ID="ID_1289118401" MODIFIED="1720652831377" TEXT="w&#xfc;rde durchaus gehen (und zwar ohne Indirektion)">
@ -94649,9 +94654,8 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node CREATED="1720657118372" ID="ID_963823658" MODIFIED="1720657177004" TEXT="sie wird aber nur voll wirksam in Turnout::weave()"/>
</node>
</node>
<node BACKGROUND_COLOR="#c8c0b6" CREATED="1720657178980" ID="ID_347915086" MODIFIED="1736091833353" TEXT="L&#xf6;sung-5 : von FeedManifold erben">
<linktarget COLOR="#fffddd" DESTINATION="ID_347915086" ENDARROW="Default" ENDINCLINATION="3;42;" ID="Arrow_ID_1339344530" SOURCE="ID_305379370" STARTARROW="None" STARTINCLINATION="-126;5;"/>
<icon BUILTIN="forward"/>
<node CREATED="1720657178980" ID="ID_347915086" MODIFIED="1738549461852" TEXT="L&#xf6;sung-5 : von FeedManifold erben">
<linktarget COLOR="#fffddd" DESTINATION="ID_347915086" ENDARROW="Default" ENDINCLINATION="4;-18;" ID="Arrow_ID_1339344530" SOURCE="ID_305379370" STARTARROW="None" STARTINCLINATION="-124;-5;"/>
<node CREATED="1720657208504" ID="ID_1916344427" MODIFIED="1720657315474" TEXT="etwas eleganter da die Parameter-&#xdc;bergabe wegf&#xe4;llt">
<richcontent TYPE="NOTE"><html>
<head/>
@ -94664,7 +94668,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
<node CREATED="1720657316762" ID="ID_496227174" MODIFIED="1720657331723" TEXT="macht aber die Anforderungen f&#xfc;r den Lib-Adapter komplexer"/>
<node CREATED="1720657350412" ID="ID_305379370" MODIFIED="1720657899136" TEXT="man k&#xf6;nnte hier aber ggfs auch in ein Baukasten-System einsteigen">
<arrowlink COLOR="#fffddd" DESTINATION="ID_347915086" ENDARROW="Default" ENDINCLINATION="3;42;" ID="Arrow_ID_1339344530" STARTARROW="None" STARTINCLINATION="-126;5;"/>
<arrowlink COLOR="#fffddd" DESTINATION="ID_347915086" ENDARROW="Default" ENDINCLINATION="4;-18;" ID="Arrow_ID_1339344530" STARTARROW="None" STARTINCLINATION="-124;-5;"/>
<icon BUILTIN="idea"/>
<node CREATED="1720657389295" ID="ID_1877085698" MODIFIED="1720657407157" TEXT="eine gewisse Basis-Verdrahtung wird jeder Aufruf brauchen"/>
<node CREATED="1720657414308" ID="ID_1844002789" MODIFIED="1720706651721" TEXT="man w&#xfc;rde damit gleich auch den Standard-Fall dokumentieren">
@ -94673,6 +94677,22 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node CREATED="1720657429677" ID="ID_1435197133" MODIFIED="1720657454373" TEXT="der Lib-Adapter kann aber Spezialisierungen dar&#xfc;ber bauen"/>
<node CREATED="1720657457921" ID="ID_903330536" MODIFIED="1720657469544" TEXT="oder letztlich doch ganz anders vorgehen (es ist ja generischer Code)"/>
</node>
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1738549331204" ID="ID_1657309296" MODIFIED="1738549350873" TEXT="das war die L&#xf6;sung &#x27f6; und dann doch nicht">
<icon BUILTIN="forward"/>
<node CREATED="1738549355628" ID="ID_610852932" MODIFIED="1738549370202" TEXT="dieser Ansatz brachte den &#xbb;Durchbruch&#xab;"/>
<node CREATED="1738549371342" ID="ID_48209409" MODIFIED="1738549390368" TEXT="letztlich sind dann aber InvocationAdapter und FeedManifold verschmolzen"/>
<node CREATED="1738549391739" ID="ID_335336619" MODIFIED="1738549799591" TEXT="und gehen nun beide zusammen aus einem FeedPrototype hervor">
<linktarget COLOR="#476d81" DESTINATION="ID_335336619" ENDARROW="Default" ENDINCLINATION="1464;-35;" ID="Arrow_ID_1855832580" SOURCE="ID_152831343" STARTARROW="None" STARTINCLINATION="417;0;"/>
<linktarget COLOR="#4f6988" DESTINATION="ID_335336619" ENDARROW="Default" ENDINCLINATION="1514;0;" ID="Arrow_ID_1821666531" SOURCE="ID_322789953" STARTARROW="None" STARTINCLINATION="1033;0;"/>
<linktarget COLOR="#3f5f9a" DESTINATION="ID_335336619" ENDARROW="Default" ENDINCLINATION="493;21;" ID="Arrow_ID_1206921858" SOURCE="ID_1618027387" STARTARROW="None" STARTINCLINATION="470;0;"/>
</node>
<node CREATED="1738549416339" ID="ID_682224491" MODIFIED="1738550032719" TEXT="der Mix-in-Ansatz wurde dadurch letztlich &#xfc;berfl&#xfc;ssig (was gut ist)">
<linktarget COLOR="#4f5888" DESTINATION="ID_682224491" ENDARROW="Default" ENDINCLINATION="-1236;54;" ID="Arrow_ID_1568439843" SOURCE="ID_727715872" STARTARROW="None" STARTINCLINATION="760;-597;"/>
</node>
<node CREATED="1738549433742" ID="ID_923963620" MODIFIED="1738549488904" TEXT="und ich zog die Explizitheit eines Objekts auf dem Stack vor">
<arrowlink COLOR="#5698c3" DESTINATION="ID_1079595557" ENDARROW="Default" ENDINCLINATION="-7;22;" ID="Arrow_ID_163927740" STARTARROW="None" STARTINCLINATION="-723;36;"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#d41d27" CREATED="1720705953643" ID="ID_737601994" MODIFIED="1736091848893" TEXT="Problem: weitgehend offen und undefiniert">
@ -100726,7 +100746,9 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<linktarget COLOR="#0299c0" DESTINATION="ID_1127056731" ENDARROW="Default" ENDINCLINATION="-1257;-48;" ID="Arrow_ID_1717201620" SOURCE="ID_1364724277" STARTARROW="None" STARTINCLINATION="-908;50;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1736038966051" ID="ID_864062784" MODIFIED="1736038996147" TEXT="haben nun einen &#xbb;Feed Prototype&#xab; im MediaWeavingPattern eingebettet"/>
<node CREATED="1736038997423" ID="ID_1618027387" MODIFIED="1736039025215" TEXT="dieser enth&#xe4;lt die Bau-Anleitung f&#xfc;r die Feed-Manifold"/>
<node CREATED="1736038997423" ID="ID_1618027387" MODIFIED="1738549840837" TEXT="dieser enth&#xe4;lt die Bau-Anleitung f&#xfc;r die Feed-Manifold">
<arrowlink COLOR="#3f5f9a" DESTINATION="ID_335336619" ENDARROW="Default" ENDINCLINATION="493;21;" ID="Arrow_ID_1206921858" STARTARROW="None" STARTINCLINATION="470;0;"/>
</node>
<node CREATED="1736039026592" ID="ID_1929400746" MODIFIED="1736039037875" TEXT="und zus&#xe4;tzlich / optional einen Parameter-Functor"/>
<node CREATED="1736039039923" ID="ID_348395437" MODIFIED="1736039360054" TEXT="Au&#xdf;erdem wurde ein spezielles Param-Agent-Node-Schema definiert">
<arrowlink COLOR="#87a8af" DESTINATION="ID_736958022" ENDARROW="Default" ENDINCLINATION="72;477;" ID="Arrow_ID_699899530" STARTARROW="None" STARTINCLINATION="-1970;83;"/>
@ -100859,7 +100881,9 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<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="button_ok"/>
<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="1735070078355" ID="ID_322789953" MODIFIED="1738549822027" TEXT="...der wiederum in das MediaWeavingPattern eingebettet wird">
<arrowlink COLOR="#4f6988" DESTINATION="ID_335336619" ENDARROW="Default" ENDINCLINATION="1514;0;" ID="Arrow_ID_1821666531" STARTARROW="None" STARTINCLINATION="1033;0;"/>
</node>
<node CREATED="1735070096196" ID="ID_81762855" MODIFIED="1735070200862">
<richcontent TYPE="NODE"><html>
<head/>
@ -102799,10 +102823,10 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
<node CREATED="1736433458484" ID="ID_196820134" MODIFIED="1736433468453" TEXT="ID-Anteile">
<node COLOR="#435e98" CREATED="1736433469774" ID="ID_1116337144" MODIFIED="1736605160936" TEXT="procName"/>
<node COLOR="#435e98" CREATED="1736433474506" ID="ID_307816036" MODIFIED="1736605160936" TEXT="procSpec"/>
<node CREATED="1736433553250" ID="ID_1633133909" LINK="#ID_445490716" MODIFIED="1736632861665" TEXT="durch Parsen zug&#xe4;nglich">
<node CREATED="1736433561025" ID="ID_1814273505" MODIFIED="1736433564605" TEXT="Fan-in"/>
<node CREATED="1736433566073" ID="ID_1536576559" MODIFIED="1736433570315" TEXT="Fan-out"/>
<node CREATED="1736433573615" ID="ID_1578933185" MODIFIED="1736433580919" TEXT="Typ-Listen"/>
<node COLOR="#338800" CREATED="1736433553250" ID="ID_1633133909" LINK="#ID_445490716" MODIFIED="1738532425737" TEXT="durch Parsen zug&#xe4;nglich">
<node COLOR="#435e98" CREATED="1736433561025" ID="ID_1814273505" MODIFIED="1738532415899" TEXT="Fan-in"/>
<node COLOR="#435e98" CREATED="1736433566073" ID="ID_1536576559" MODIFIED="1738532415899" TEXT="Fan-out"/>
<node COLOR="#435e98" CREATED="1736433573615" ID="ID_1578933185" MODIFIED="1738532415899" TEXT="Typ-Listen"/>
</node>
</node>
<node CREATED="1736433714372" ID="ID_1214545070" MODIFIED="1736433730012" TEXT="konkrete Konfig">
@ -104811,7 +104835,7 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
<arrowlink COLOR="#a5075a" DESTINATION="ID_1997478599" ENDARROW="Default" ENDINCLINATION="-1987;137;" ID="Arrow_ID_830705993" STARTARROW="None" STARTINCLINATION="118;7;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1721238814245" HGAP="34" ID="ID_320753034" MODIFIED="1734197120171" TEXT="Gefahr f&#xfc;r Template-Bloat im Media-Lib-Plug-in" VSHIFT="-1">
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1721238814245" HGAP="34" ID="ID_320753034" MODIFIED="1738518749622" TEXT="Gefahr f&#xfc;r Template-Bloat im Media-Lib-Plug-in" VSHIFT="-1">
<linktarget COLOR="#f94771" DESTINATION="ID_320753034" ENDARROW="None" ENDINCLINATION="1267;-43;" ID="Arrow_ID_735039883" SOURCE="ID_1378608706" STARTARROW="None" STARTINCLINATION="-749;52;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
@ -104876,6 +104900,10 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
</p>
</body>
</html></richcontent>
<node CREATED="1738546791195" ID="ID_1427051818" MODIFIED="1738546843159" TEXT="hier zeigt sich eine Tendenz, Bedeutungen zu &#xfc;berladen"/>
<node CREATED="1738546821502" ID="ID_1638082833" MODIFIED="1738547768337" TEXT="Node-Metadaten sollen &#xbb;offene Rest-Probleme&#xab; l&#xf6;sen">
<arrowlink COLOR="#e6165b" DESTINATION="ID_34946402" ENDARROW="Default" ENDINCLINATION="908;-37;" ID="Arrow_ID_1661388795" STARTARROW="None" STARTINCLINATION="590;28;"/>
</node>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1721238837562" HGAP="14" ID="ID_286044031" MODIFIED="1730500771786" STYLE="bubble" TEXT="ungel&#xf6;st: Fehler-Diagnose" VSHIFT="7">
<richcontent TYPE="NOTE"><html>
@ -105346,7 +105374,7 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#338800" CREATED="1736632885429" ID="ID_1285666886" MODIFIED="1738516458294" TEXT="in Input / Output-Teil zerlegen">
<node COLOR="#338800" CREATED="1736632885429" FOLDED="true" ID="ID_1285666886" MODIFIED="1738517957788" TEXT="in Input / Output-Teil zerlegen">
<icon BUILTIN="button_ok"/>
<node CREATED="1736637886757" ID="ID_1642918073" MODIFIED="1736637912343" TEXT="Mist! mu&#xdf; Klammerung parsen"/>
<node CREATED="1736638440539" ID="ID_764410464" MODIFIED="1736638458389" TEXT="ja dann &#x2014; werden wir gliech parsen!">
@ -105434,7 +105462,7 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
</node>
<node COLOR="#338800" CREATED="1738332756317" ID="ID_908054156" MODIFIED="1738516455105" TEXT="Argument-Auswertung implementieren">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1738332766392" ID="ID_1638579640" MODIFIED="1738516477005" TEXT="Code-Anordnung">
<node COLOR="#435e98" CREATED="1738332766392" FOLDED="true" ID="ID_1638579640" MODIFIED="1738517942203" TEXT="Code-Anordnung">
<icon BUILTIN="yes"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1738332780351" ID="ID_1622923755" MODIFIED="1738335786356" TEXT="aus ProcNode.hpp heraushalten">
<icon BUILTIN="messagebox_warning"/>
@ -105479,7 +105507,7 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1738347634026" ID="ID_891035798" MODIFIED="1738449453574" TEXT="ArgumentModel anlegen">
<node COLOR="#338800" CREATED="1738347634026" FOLDED="true" ID="ID_891035798" MODIFIED="1738517932196" TEXT="ArgumentModel anlegen">
<linktarget COLOR="#578494" DESTINATION="ID_891035798" ENDARROW="Default" ENDINCLINATION="46;331;" ID="Arrow_ID_982442559" SOURCE="ID_1594772328" STARTARROW="None" STARTINCLINATION="13;-499;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#5b280f" CREATED="1738347643696" ID="ID_522386929" MODIFIED="1738347656236" TEXT="vector-Storage">
@ -105667,7 +105695,7 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1736632908578" ID="ID_1359149203" MODIFIED="1738510154732" TEXT="Argument-Token-Sequenz bereitstellen">
<node COLOR="#338800" CREATED="1736632908578" FOLDED="true" ID="ID_1359149203" MODIFIED="1738517955969" TEXT="Argument-Token-Sequenz bereitstellen">
<icon BUILTIN="button_ok"/>
<node COLOR="#5b280f" CREATED="1736633418536" FOLDED="true" ID="ID_1128683976" MODIFIED="1738280806304" TEXT="Regular-Expressions (nach Schema-F)">
<richcontent TYPE="NOTE"><html>
@ -105856,6 +105884,56 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1736445926470" ID="ID_968052606" MODIFIED="1736453621875" TEXT="Extended-Attributes / Zusatz-Qualifikator">
<linktarget COLOR="#a90b08" DESTINATION="ID_968052606" ENDARROW="Default" ENDINCLINATION="-139;-705;" ID="Arrow_ID_1420066310" SOURCE="ID_338610694" STARTARROW="None" STARTINCLINATION="-1107;159;"/>
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1738547010493" ID="ID_15264459" MODIFIED="1738547023525" TEXT="Achtung: mit Bedeutungen &#xfc;berladen">
<icon BUILTIN="messagebox_warning"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1738547026427" ID="ID_1373153153" MODIFIED="1738547113961">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
<i>Extended Attributes</i>&#160;sollen diverse anderweitige Beschr&#228;nkungen auffangen
</p>
</body>
</html>
</richcontent>
</node>
<node CREATED="1738547056214" ID="ID_34946402" MODIFIED="1738547768337" TEXT="Sie erm&#xf6;glichen eine initiale Festlegung ohne vollst&#xe4;ndige Kenntnis des Sachverhalts">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
Wenn ein komplexer Sachverhalt &#252;berhaupt erst erschlossen werden soll, durch das Aufbauen einer orientierenden Struktur, so mu&#223; ein Vorgriff gemacht werden, der leider nur in den seltensten F&#228;llen der Sache ad&#228;quat ist. Infolgedessen ist man dann an untaugliche Strukturen gebunden, deren Reparatur zu kostspielig w&#228;re. Stattdessen hilft man sich mit dar&#252;ber gelegten Layern, die Metadaten und erweiterte Attribute als Ankerpunkt verwenden
</p>
</body>
</html>
</richcontent>
<linktarget COLOR="#e6165b" DESTINATION="ID_34946402" ENDARROW="Default" ENDINCLINATION="908;-37;" ID="Arrow_ID_1661388795" SOURCE="ID_1638082833" STARTARROW="None" STARTINCLINATION="590;28;"/>
</node>
<node CREATED="1738547123718" HGAP="30" ID="ID_1111160527" MODIFIED="1738547687404" VSHIFT="-11">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
<u>Design-Paradoxon</u>: das Design besonders relevanter Funktionalit&#228;t ist selten ad&#228;quat
</p>
</body>
</html>
</richcontent>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1721238837562" HGAP="73" ID="ID_341926402" MODIFIED="1738548361793" STYLE="bubble" TEXT="&#xfc;berladen mit widerspr&#xfc;chlichen Bedeutungen" VSHIFT="28">
<edge COLOR="#ff5d00" STYLE="sharp_linear"/>
<arrowlink COLOR="#fe512a" DESTINATION="ID_1871507162" ENDARROW="Default" ENDINCLINATION="1101;-48;" ID="Arrow_ID_1710234227" STARTARROW="None" STARTINCLINATION="-877;51;"/>
<linktarget COLOR="#de3870" DESTINATION="ID_341926402" ENDARROW="Default" ENDINCLINATION="-31;45;" ID="Arrow_ID_529164217" SOURCE="ID_423467767" STARTARROW="None" STARTINCLINATION="-865;-25;"/>
<icon BUILTIN="idea"/>
<node CREATED="1721239003353" ID="ID_785237092" MODIFIED="1738548255872" STYLE="fork" TEXT="Metadaten / Extended Attributes sollen Neben-Probleme auffangen">
<font NAME="SansSerif" SIZE="8"/>
</node>
<node CREATED="1738548277074" ID="ID_290350772" MODIFIED="1738548315821" STYLE="fork" TEXT="damit wird Unm&#xf6;gliches und Widerspr&#xfc;chliches doch noch irgendwie erm&#xf6;glicht">
<edge COLOR="#ff5d00" STYLE="sharp_linear" WIDTH="thin"/>
<font NAME="SansSerif" SIZE="8"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1736453683669" ID="ID_1311023852" MODIFIED="1736453758988" TEXT="Repr&#xe4;sentation f&#xfc;r extended-attributes bereitstellen">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1736455022905" ID="ID_479685703" MODIFIED="1736455026740" TEXT="M&#xf6;glichkeiten">
@ -105907,13 +105985,20 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1736453699380" ID="ID_809402120" MODIFIED="1736453758989" TEXT="Konfigurations-API via Builder integrieren">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1736453783056" ID="ID_186513914" MODIFIED="1736453791543" TEXT="Schema f&#xfc;r dynamischen Dispatch">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1736453783056" ID="ID_186513914" MODIFIED="1738518068915" TEXT="Schema f&#xfc;r dynamischen Dispatch">
<arrowlink COLOR="#944855" DESTINATION="ID_1885873000" ENDARROW="Default" ENDINCLINATION="-553;27;" ID="Arrow_ID_1155704766" STARTARROW="None" STARTINCLINATION="-17;64;"/>
<icon BUILTIN="hourglass"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1736453849801" ID="ID_708185484" MODIFIED="1736453867637" TEXT="Definition und Einbindung von Zusatz-Funktionen">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1736517050324" ID="ID_962992559" MODIFIED="1736517067149" TEXT="ProcID stellt Funktions-Registry/Dispatch als Service bereit"/>
<node CREATED="1736517117210" ID="ID_1356796355" MODIFIED="1736517129532" TEXT="au&#xdf;erdem gibt es Kombinatoren f&#xfc;r Hash-IDs"/>
<node CREATED="1736517068377" ID="ID_931826770" MODIFIED="1736517136406" TEXT="aber Aufrufer ist allein f&#xfc;r die sinnvolle Verkn&#xfc;pfung verantwortlich">
<node CREATED="1738533130534" ID="ID_333532704" MODIFIED="1738533135893" TEXT="Funktionsweise">
<icon BUILTIN="info"/>
<node CREATED="1738533153237" ID="ID_1429654028" MODIFIED="1738533171127" TEXT="feste Zugangs-Funktion mit fester Signatur"/>
<node CREATED="1738533172235" ID="ID_511748278" MODIFIED="1738533190149" TEXT="Dispatcher sitzt dahinter, eingekapselt in eine Tranlation-Unit"/>
<node CREATED="1738533207318" ID="ID_316198674" MODIFIED="1738533228277" TEXT="Argument ProcID &#x27f6; Hash &#x27f6; hinten rum Funktion aufrufen"/>
</node>
<node CREATED="1736517068377" ID="ID_931826770" MODIFIED="1738533127365" TEXT="Aufrufer ist allein f&#xfc;r die sinnvolle Verkn&#xfc;pfung verantwortlich">
<icon BUILTIN="yes"/>
<node CREATED="1736517164778" ID="ID_1005387710" MODIFIED="1736517549085" TEXT="zwangsl&#xe4;ufig &#x2014; Interface-Mechanismen umgangen">
<richcontent TYPE="NOTE"><html>
@ -105965,31 +106050,179 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
<node CREATED="1736519225707" ID="ID_956380809" MODIFIED="1736519256762" TEXT="also ist die ProcID direkt mit den Informationsfunktionen involviert"/>
<node CREATED="1736519265390" ID="ID_1749861706" MODIFIED="1736519291830" TEXT="es k&#xf6;nnen Abk&#xfc;rzungs-M&#xf6;glichkeiten im Einzelfall ausgenutzt werden"/>
</node>
<node COLOR="#338800" CREATED="1738518563804" ID="ID_1982167930" MODIFIED="1738518580106" TEXT="schaffe vorerst mal direkte Storage f&#xfc;r einige Flags">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1736453873367" ID="ID_393745699" MODIFIED="1736453888482" TEXT="Dispatcher-Tables einrichten und bereitstellen">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1736564846036" ID="ID_991521203" MODIFIED="1736604103097" TEXT="Storage und Anordnung">
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1736564846036" ID="ID_991521203" MODIFIED="1738518012255" TEXT="Storage und Anordnung">
<icon BUILTIN="pencil"/>
<icon BUILTIN="hourglass"/>
<node COLOR="#5b280f" CREATED="1736564861858" ID="ID_966735363" MODIFIED="1736564872849" TEXT="erste Idee: statisch per Typ">
<icon BUILTIN="button_cancel"/>
<node CREATED="1736564888749" ID="ID_791051561" MODIFIED="1736564893537" TEXT="ist zwar pfiffig"/>
<node CREATED="1736564894477" ID="ID_1331364315" MODIFIED="1736564906159" TEXT="aber sp&#xe4;ter schwer zu handhaben"/>
<node CREATED="1736564907586" ID="ID_1394350344" MODIFIED="1736564919405" TEXT="irgendwie vermische ich jetzt die Ebenen"/>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1736564923289" ID="ID_1370096372" MODIFIED="1736604034106" TEXT="besser eine dedizierte HIlfskomponente verwenden">
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1736564923289" ID="ID_1370096372" MODIFIED="1738518107442" TEXT="besser eine dedizierte HIlfskomponente verwenden">
<icon BUILTIN="yes"/>
<node COLOR="#5011eb" CREATED="1736604040268" ID="ID_1751891794" MODIFIED="1736604075748" TEXT="lib::FunHashDispatch&lt;SIG&gt;">
<font NAME="Monospaced" SIZE="12"/>
</node>
<node COLOR="#338800" CREATED="1738518095187" ID="ID_545320723" MODIFIED="1738518101136" TEXT="einfacher FunHashDispatch_test l&#xe4;uft">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1738518021661" ID="ID_1885873000" MODIFIED="1738532696438" TEXT="Thema liegen lassen bis es tats&#xe4;chlich relevant wird">
<linktarget COLOR="#944855" DESTINATION="ID_1885873000" ENDARROW="Default" ENDINCLINATION="-553;27;" ID="Arrow_ID_1155704766" SOURCE="ID_186513914" STARTARROW="None" STARTINCLINATION="-17;64;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1736453901281" ID="ID_646916289" MODIFIED="1736453920374" TEXT="hierarchische Hash-Keys generieren">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1736453954937" ID="ID_1108446670" MODIFIED="1736453966483" TEXT="Diagnostik und Zusatz-Qualifikator">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1738518616069" ID="ID_1917274705" MODIFIED="1738518901249" TEXT="direkter verdeckter Dispatch">
<linktarget COLOR="#3144ba" DESTINATION="ID_1917274705" ENDARROW="Default" ENDINCLINATION="8;62;" ID="Arrow_ID_342324675" SOURCE="ID_1349914035" STARTARROW="None" STARTINCLINATION="-34;-45;"/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1738518633504" ID="ID_727347425" MODIFIED="1738518645548" TEXT="zur Kollaboration mit bekannten Implementierungs-Schemata">
<node CREATED="1738518646872" ID="ID_1922816356" MODIFIED="1738518652944" TEXT="MediaWeavngPattern"/>
<node CREATED="1738518667054" ID="ID_41394617" MODIFIED="1738518672705" TEXT="ParamWeavingPattern"/>
</node>
<node CREATED="1738518676774" ID="ID_1028179362" LINK="#ID_699338745" MODIFIED="1738518775488" TEXT="Zweck: vermeiden eines VTable-Eintrages f&#xfc;r sekund&#xe4;re Belange">
<icon BUILTIN="info"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1738547390230" HGAP="25" ID="ID_423467767" MODIFIED="1738548370680" STYLE="bubble" VSHIFT="-2">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
das ist ein gradezu absurdes Unterfangen,
</p>
<p>
den Konsequenzen des gew&#228;hlten Designs
</p>
<p>
zu entgehen....
</p>
</body>
</html>
</richcontent>
<arrowlink COLOR="#de3870" DESTINATION="ID_341926402" ENDARROW="Default" ENDINCLINATION="-31;45;" ID="Arrow_ID_529164217" STARTARROW="None" STARTINCLINATION="-865;-25;"/>
<icon BUILTIN="smiley-oh"/>
</node>
<node CREATED="1738547473366" ID="ID_1980568582" MODIFIED="1738547485577" TEXT="ich will ein leichtgewichtiges und optimiertes Design"/>
<node CREATED="1738547486679" ID="ID_1236589550" MODIFIED="1738547518511">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
aber all die damit ausgeschlossenen M&#246;glichkeiten
</p>
<p>
will ich dann doch auch noch haben...
</p>
</body>
</html>
</richcontent>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1738518837927" ID="ID_119086007" MODIFIED="1738533250362" TEXT="Dispatch auf Basis der Flags erm&#xf6;glichen">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1738533252216" ID="ID_395771530" MODIFIED="1738533271606" TEXT="funktioniert wie die generischen Dispatcher-Tables, nur fest-verdrahtet"/>
<node CREATED="1738533418442" ID="ID_1905552895" MODIFIED="1738533443165" TEXT="Es handelt sich um Informations-Funktionen &#x27f9; Zugang via ProcID"/>
<node CREATED="1738535524778" ID="ID_2361548" MODIFIED="1738535531249" TEXT="Dispatch hinter dem Zugang">
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1738535532721" ID="ID_230267714" MODIFIED="1738535546182" TEXT="Problem: habe dennoch eine Differenzierung zu &#xfc;berwinden">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1738535562285" ID="ID_1118497200" MODIFIED="1738535589454" TEXT="ich wei&#xdf; zwar jetzt z.B. da&#xdf; das Pattern &#xbb;Manifold&#xab; ist"/>
<node CREATED="1738535590806" ID="ID_1231646271" MODIFIED="1738535609458" TEXT="aber dennoch gibt es zig verschiedene Storage-Layouts">
<node CREATED="1738535610984" ID="ID_1726140591" MODIFIED="1738535619473" TEXT="leider liegt die FeedManifold vorne">
<node CREATED="1738548655151" ID="ID_1737977570" MODIFIED="1738550074388" TEXT="&#x27f9; Konsequenz: das ist zu &#xe4;ndern!">
<arrowlink COLOR="#535274" DESTINATION="ID_879823577" ENDARROW="Default" ENDINCLINATION="172;0;" ID="Arrow_ID_1583847739" STARTARROW="Default" STARTINCLINATION="172;0;"/>
<arrowlink COLOR="#65537a" DESTINATION="ID_727715872" ENDARROW="Default" ENDINCLINATION="191;-8;" ID="Arrow_ID_503466505" STARTARROW="None" STARTINCLINATION="-157;-252;"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1738535630923" ID="ID_225612311" MODIFIED="1738535640350" TEXT="und die hat flexibles Storage-Layout"/>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1738535758756" ID="ID_1713030298" MODIFIED="1738535786660" TEXT="also doch noch eine Art virtueller Dispatch notwendig?">
<icon BUILTIN="help"/>
<node CREATED="1738535795741" ID="ID_1328646607" MODIFIED="1738535825859" TEXT="z.B. ein Offset zur lib::Several-Storage im Objekt"/>
<node CREATED="1738535844527" ID="ID_1795314602" MODIFIED="1738535867860">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
oder ein Trampolin? aber auf Basis welcher <i>Laufzeit-Information?</i>
</p>
</body>
</html>
</richcontent>
</node>
<node CREATED="1738535887977" ID="ID_1858101323" MODIFIED="1738535910201" TEXT="RTTI? das w&#xe4;re dann eine VTable &#xbb;durch die HIntert&#xfc;r&#xab;"/>
<node COLOR="#5b280f" CREATED="1738548443595" ID="ID_1995564775" MODIFIED="1738548460221" TEXT="Aufpassen! das Unterfangen ist absurd">
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node CREATED="1738548487461" ID="ID_1252661720" MODIFIED="1738548545033" TEXT="Auf Stuktur-Kongruenz von Templates zur&#xfc;ckf&#xfc;hren">
<node CREATED="1738548546868" ID="ID_879823577" MODIFIED="1738548679951" TEXT="zus&#xe4;tzliche Einschr&#xe4;nkung: der konkruente Teil mu&#xdf; vorne liegen">
<linktarget COLOR="#535274" DESTINATION="ID_879823577" ENDARROW="Default" ENDINCLINATION="172;0;" ID="Arrow_ID_1583847739" SOURCE="ID_1737977570" STARTARROW="Default" STARTINCLINATION="172;0;"/>
</node>
<node CREATED="1738548590215" ID="ID_116345812" MODIFIED="1738548633404" TEXT="Abgest&#xfc;tzt auf low-Level memory-Layout"/>
</node>
</node>
<node CREATED="1738549919523" ID="ID_727715872" MODIFIED="1738550065466" TEXT="Feed-Manifold mu&#xdf; als Sub-Komponente hinten liegen">
<arrowlink COLOR="#4f5888" DESTINATION="ID_682224491" ENDARROW="Default" ENDINCLINATION="-1236;54;" ID="Arrow_ID_1568439843" STARTARROW="None" STARTINCLINATION="760;-597;"/>
<linktarget COLOR="#65537a" DESTINATION="ID_727715872" ENDARROW="Default" ENDINCLINATION="191;-8;" ID="Arrow_ID_503466505" SOURCE="ID_1737977570" STARTARROW="None" STARTINCLINATION="-157;-252;"/>
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1738550080458" ID="ID_747266264" MODIFIED="1738550094964" TEXT="der Code wird dadurch sogar klarer">
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node CREATED="1738552709748" ID="ID_751195601" MODIFIED="1738552716264" TEXT="Fragen der Code-Anordnung">
<node CREATED="1738552717851" ID="ID_908526926" MODIFIED="1738552724655" TEXT="brauche einen Low-Level-Accessor">
<node CREATED="1738552736209" ID="ID_1882145435" MODIFIED="1738552743647" TEXT="dieser mu&#xdf; eine ProcID auswerten"/>
<node CREATED="1738552744901" ID="ID_1314938956" MODIFIED="1738552763205" TEXT="und sich au&#xdf;erdem Zugang verschaffen zu Internas der Weaving-Pattern"/>
<node CREATED="1738552764381" ID="ID_1858078710" MODIFIED="1738552782990" TEXT="letztere m&#xfc;ssen diesen Zugang per friend-Klausel gestatten"/>
<node CREATED="1738553451159" ID="ID_1113348900" MODIFIED="1738553459220" TEXT="sehr einfach m&#xf6;glich per std::tie()"/>
</node>
<node CREATED="1738552789850" ID="ID_644134927" MODIFIED="1738552809755" TEXT="die Implementierung mu&#xdf; in eine zentrale Translation-Unit">
<node CREATED="1738552837650" ID="ID_752093610" MODIFIED="1738552856045" TEXT="dort m&#xfc;ssen die relevanten Weaving-Pattern-Templates includiert werden">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1738552858806" ID="ID_499744765" MODIFIED="1738552870057" TEXT="sie werden dann aber pseudo-instantiiert">
<icon BUILTIN="idea"/>
<node CREATED="1738552872971" ID="ID_256800788" MODIFIED="1738552881315" TEXT="mit minimalen Dummy-TemplateParametern"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1738552882437" ID="ID_771316935" MODIFIED="1738552911482" TEXT="und nur f&#xfc;r den Zweck eines Zugriffs per force-cast">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1738552811335" ID="ID_368510579" MODIFIED="1738554265379" TEXT="naheliegend &#x27f9; proc-node.cpp"/>
</node>
<node CREATED="1738554274264" ID="ID_1338521694" MODIFIED="1738554285164" TEXT="brauche Zugang analog zum Turnout">
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1738554286652" ID="ID_1902684381" MODIFIED="1738554316908" TEXT="aber keine Turnout-Instanz">
<icon BUILTIN="stop-sign"/>
<node CREATED="1738554325674" ID="ID_767810587" MODIFIED="1738554361577" TEXT="Emittieren der Turnout::weave()-Implementierung verhindern"/>
<node CREATED="1738554362767" ID="ID_611361455" MODIFIED="1738554377327" TEXT="brauche aber eine Layout-Kompatible Klasse"/>
</node>
<node CREATED="1738554382342" ID="ID_101038988" MODIFIED="1738554399656" TEXT="Wartbarkeit &#x27f9; mu&#xdf; direkt neben Turnout stehen">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1738554409011" ID="ID_905079961" MODIFIED="1738554415618" TEXT="class TurnoutDiagnostic"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1738518799268" ID="ID_1696634308" MODIFIED="1738518818558" TEXT="M&#xf6;glichkeit zum Setzen der Flags schaffen">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1738518819705" ID="ID_1851563907" MODIFIED="1738518836777" TEXT="Flags automatisch aus dem Node-Builder setzen f&#xfc;r passende Pattern">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
<node CREATED="1736454444496" ID="ID_1712779274" MODIFIED="1736454493950" TEXT="Korrektheit">
<arrowlink COLOR="#ce3644" DESTINATION="ID_1160836625" ENDARROW="Default" ENDINCLINATION="75;-69;" ID="Arrow_ID_298743045" STARTARROW="None" STARTINCLINATION="-76;15;"/>
@ -106005,15 +106238,19 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
</body>
</html></richcontent>
<arrowlink COLOR="#e5296f" DESTINATION="ID_1486436213" ENDARROW="Default" ENDINCLINATION="-752;56;" ID="Arrow_ID_351949496" STARTARROW="None" STARTINCLINATION="-733;0;"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1738518865571" ID="ID_1349914035" MODIFIED="1738518908673" TEXT="Zugriff realisiert durch &#xbb;verdeckten Dispatch&#xab;">
<arrowlink COLOR="#3144ba" DESTINATION="ID_1917274705" ENDARROW="Default" ENDINCLINATION="8;62;" ID="Arrow_ID_342324675" STARTARROW="None" STARTINCLINATION="-34;-45;"/>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1736454082544" ID="ID_1160836625" MODIFIED="1736454493950" TEXT="Test f&#xfc;r Metadaten-Verwaltung">
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1736454082544" ID="ID_1160836625" MODIFIED="1738518258829" TEXT="Test f&#xfc;r Metadaten-Verwaltung">
<arrowlink COLOR="#5387dc" DESTINATION="ID_15277358" ENDARROW="Default" ENDINCLINATION="-1313;202;" ID="Arrow_ID_1843979731" STARTARROW="None" STARTINCLINATION="-1286;110;"/>
<linktarget COLOR="#ce3644" DESTINATION="ID_1160836625" ENDARROW="Default" ENDINCLINATION="75;-69;" ID="Arrow_ID_298743045" SOURCE="ID_1712779274" STARTARROW="None" STARTINCLINATION="-76;15;"/>
<icon BUILTIN="flag-pink"/>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1736610754727" ID="ID_575487435" LINK="#ID_25381362" MODIFIED="1736629437629" TEXT="Grobstruktur zerlegen">
<icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1736610754727" ID="ID_575487435" LINK="#ID_25381362" MODIFIED="1738518268810" TEXT="Grobstruktur zerlegen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1736629324669" ID="ID_127221331" MODIFIED="1736629345486" TEXT="f&#xfc;hre noch Trennund in Node-Domain und Symbol ein">
<icon BUILTIN="button_ok"/>
</node>
@ -106026,15 +106263,20 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1738518284585" ID="ID_87127284" MODIFIED="1738518301786" TEXT="Fehlt noch: Qualifier aufgreifen">
<icon BUILTIN="bell"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1736610781361" ID="ID_1231919908" LINK="#ID_25381362" MODIFIED="1736611024747" TEXT="Argument-Listen parsen">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1736629449423" ID="ID_1820450120" MODIFIED="1736629456341" TEXT="werden grunds&#xe4;tzlich abgespalten">
</node>
<node COLOR="#338800" CREATED="1736610781361" ID="ID_1231919908" LINK="#ID_25381362" MODIFIED="1738518231270" TEXT="Argument-Listen parsen">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1736629449423" ID="ID_1820450120" MODIFIED="1738518251174" TEXT="werden grunds&#xe4;tzlich abgespalten">
<node CREATED="1738289004062" ID="ID_126365125" LINK="#ID_1594772328" MODIFIED="1738289050186" TEXT="Hinweis zur Anlage der Implementierung beachten">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1736632585878" ID="ID_919502124" MODIFIED="1736632594880" TEXT="zerlegen in Input und Output"/>
<node COLOR="#435e98" CREATED="1736632585878" ID="ID_919502124" MODIFIED="1738518251177" TEXT="zerlegen in Input und Output"/>
<node COLOR="#435e98" CREATED="1738518236792" ID="ID_856942777" MODIFIED="1738518251177" TEXT="Repetitionen ausfalten"/>
<node COLOR="#435e98" CREATED="1738518243986" ID="ID_246682675" MODIFIED="1738518251177" TEXT="Arit&#xe4;t ermitteln"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1736610789680" ID="ID_466994748" LINK="#ID_25381362" MODIFIED="1736611024747" TEXT="extended Attributes auswerten">
<icon BUILTIN="flag-yellow"/>
@ -106637,6 +106879,10 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
<linktarget COLOR="#fe512a" DESTINATION="ID_863330262" ENDARROW="Default" ENDINCLINATION="1101;-48;" ID="Arrow_ID_1306547654" SOURCE="ID_1021077233" STARTARROW="None" STARTINCLINATION="-816;65;"/>
<icon BUILTIN="idea"/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1721238814245" ID="ID_1871507162" MODIFIED="1738547694083" TEXT="Feststellung: Metadaten werden mit Bedeutungen &#xfc;berladen">
<linktarget COLOR="#fe512a" DESTINATION="ID_1871507162" ENDARROW="Default" ENDINCLINATION="1101;-48;" ID="Arrow_ID_1710234227" SOURCE="ID_341926402" STARTARROW="None" STARTINCLINATION="-877;51;"/>
<icon BUILTIN="idea"/>
</node>
</node>
<node BACKGROUND_COLOR="#e2caa2" COLOR="#990000" CREATED="1729956600896" ID="ID_988254887" MODIFIED="1729956915005" STYLE="fork" TEXT="Probleme">
<edge COLOR="#b14253" STYLE="sharp_linear"/>
@ -106754,11 +107000,11 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1736610744078" ID="ID_25381362" MODIFIED="1736629424535" TEXT="verify_ID_specification">
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1736610824003" ID="ID_1668456426" LINK="#ID_575487435" MODIFIED="1736611020835" TEXT="Definition einer ProcID">
<icon BUILTIN="flag-yellow"/>
<node COLOR="#338800" CREATED="1736610824003" ID="ID_1668456426" LINK="#ID_575487435" MODIFIED="1738518218666" TEXT="Definition einer ProcID">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1736610838882" ID="ID_1153713265" LINK="#ID_1231919908" MODIFIED="1736611020837" TEXT="Argument-Listen">
<icon BUILTIN="flag-yellow"/>
<node COLOR="#338800" CREATED="1736610838882" ID="ID_1153713265" LINK="#ID_1231919908" MODIFIED="1738518221120" TEXT="Argument-Listen">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1736610845136" ID="ID_1268032350" LINK="#ID_466994748" MODIFIED="1736611020836" TEXT="Qualifier / Attribute">
<icon BUILTIN="flag-yellow"/>