Invocation: reconsider how layout of the FeedManifold is established
This is a first step towards the goal to introduce a ''parameter tuple'' into the `FeedManifold`. Doing so invalidates some of the previously taken decisions regarding the `FeedManifold`; at that time I was still under the impression of the old design from 2012, which called for a ''Buffer Table''. Now we are forced to allow for more leeway in the function definition; even more so, since the limitation to one single input and output Buffer type can be deemed unrealistic anyway. So why sticking to an array at all? ''Buffers could also be a tuple...'' Seemingly another reason why I used an array was the idea to somehow limit the number of template instances, by grouping them into a few number of array sizes, like 1,2,5 and 10. This idea falls short, since in reality it can not be avoided to have the processing function on the type signature anyway. Thus, the only point where the number of templates could be limited lies in the library plug-in, where this »processing function« is actually defined as an adapter.
This commit is contained in:
parent
991f0a31f4
commit
40d088c62f
3 changed files with 333 additions and 94 deletions
|
|
@ -405,7 +405,7 @@ namespace engine {
|
|||
auto
|
||||
PortBuilderRoot<POL,DAT>::invoke (StrView portSpec, FUN fun)
|
||||
{
|
||||
using WeavingBuilder_FUN = WeavingBuilder<POL, manifoldSiz<FUN>(), FUN>;
|
||||
using WeavingBuilder_FUN = WeavingBuilder<POL, FUN>;
|
||||
return PortBuilder<POL,DAT, WeavingBuilder_FUN>{move(*this), move(fun), portSpec};
|
||||
}
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -149,8 +149,8 @@ namespace engine {
|
|||
static_assert(_Fun<FUN>() , "something funktion-like required");
|
||||
static_assert(is_BinaryFun<FUN>() , "function with two arguments expected");
|
||||
|
||||
using ArgI = remove_reference_t<typename _Fun<FUN>::Args::List::Head>;
|
||||
using ArgO = remove_reference_t<typename _Fun<FUN>::Args::List::Tail::Head>;
|
||||
using SigI = remove_reference_t<typename _Fun<FUN>::Args::List::Head>;
|
||||
using SigO = remove_reference_t<typename _Fun<FUN>::Args::List::Tail::Head>;
|
||||
|
||||
template<class ARG>
|
||||
struct MatchBuffArray
|
||||
|
|
@ -164,36 +164,14 @@ namespace engine {
|
|||
enum{ SIZ = N };
|
||||
};
|
||||
|
||||
using BuffI = typename MatchBuffArray<ArgI>::Buff;
|
||||
using BuffO = typename MatchBuffArray<ArgO>::Buff;
|
||||
using BuffI = typename MatchBuffArray<SigI>::Buff;
|
||||
using BuffO = typename MatchBuffArray<SigO>::Buff;
|
||||
|
||||
enum{ FAN_I = MatchBuffArray<ArgI>::SIZ
|
||||
, FAN_O = MatchBuffArray<ArgO>::SIZ
|
||||
enum{ FAN_I = MatchBuffArray<SigI>::SIZ
|
||||
, FAN_O = MatchBuffArray<SigO>::SIZ
|
||||
, MAXSZ = std::max (uint(FAN_I), uint(FAN_O)) /////////////////////OOO required temporarily until the switch to tuples
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Pick a suitable size for the FeedManifold to accommodate the given function.
|
||||
* @remark only returning one of a small selection of sizes, to avoid
|
||||
* excessive generation of template instances.
|
||||
* @todo 10/24 this is a premature safety guard;
|
||||
* need to assess if there is actually a problem
|
||||
* (chances are that the optimiser absorbs most of the combinatoric complexity,
|
||||
* or that, to the contrary, other proliferation mechanisms cause more harm)
|
||||
*/
|
||||
template<class FUN>
|
||||
inline constexpr uint
|
||||
manifoldSiz()
|
||||
{
|
||||
using _F = _ProcFun<FUN>;
|
||||
auto constexpr bound = std::max (_F::FAN_I, _F::FAN_O);
|
||||
static_assert (bound <= 10,
|
||||
"Limitation of template instances exceeded");
|
||||
return bound < 3? bound
|
||||
: bound < 6? 5
|
||||
: 10;
|
||||
}
|
||||
}//(End)Introspection helpers.
|
||||
|
||||
|
||||
|
|
@ -221,8 +199,8 @@ namespace engine {
|
|||
|
||||
static_assert(FAN_I <= N and FAN_O <= N);
|
||||
|
||||
using ArrayI = std::array<BuffI*, FAN_I>;
|
||||
using ArrayO = std::array<BuffO*, FAN_O>;
|
||||
using ArrayI = typename _ProcFun<FUN>::SigI;
|
||||
using ArrayO = typename _ProcFun<FUN>::SigO;
|
||||
|
||||
|
||||
FUN process;
|
||||
|
|
@ -239,7 +217,7 @@ namespace engine {
|
|||
void
|
||||
connect (uint fanIn, uint fanOut)
|
||||
{
|
||||
REQUIRE (fanIn >= FAN_I and fanOut >= FAN_O);
|
||||
REQUIRE (fanIn == FAN_I and fanOut == FAN_O); //////////////////////////OOO this distinction is a left-over from the idea of fixed block sizes
|
||||
for (uint i=0; i<FAN_I; ++i)
|
||||
inParam[i] = & MAN::inBuff[i].template accessAs<BuffI>();
|
||||
for (uint i=0; i<FAN_O; ++i)
|
||||
|
|
@ -263,13 +241,13 @@ namespace engine {
|
|||
* employ more elaborate _invocation adapters_
|
||||
* specifically tailored to the library's needs.
|
||||
*/
|
||||
template<uint N, class FUN>
|
||||
template<class FUN>
|
||||
struct DirectFunctionInvocation
|
||||
: util::MoveOnly
|
||||
{
|
||||
using Manifold = FeedManifold<N>;
|
||||
enum{ MAX_SIZ = _ProcFun<FUN>::MAXSZ };
|
||||
using Manifold = FeedManifold<MAX_SIZ>;
|
||||
using Feed = SimpleFunctionInvocationAdapter<Manifold, FUN>;
|
||||
enum{ MAX_SIZ = N };
|
||||
|
||||
std::function<Feed()> buildFeed;
|
||||
|
||||
|
|
@ -346,8 +324,8 @@ namespace engine {
|
|||
|
||||
|
||||
|
||||
template<uint N, class FUN>
|
||||
using SimpleDirectInvoke = MediaWeavingPattern<DirectFunctionInvocation<N,FUN>>;
|
||||
template<class FUN>
|
||||
using SimpleDirectInvoke = MediaWeavingPattern<DirectFunctionInvocation<FUN>>;
|
||||
|
||||
|
||||
/**
|
||||
|
|
@ -364,12 +342,12 @@ namespace engine {
|
|||
* @tparam N maximum number of input and output slots
|
||||
* @tparam FUN function or invocation adapter to invoke
|
||||
*/
|
||||
template<class POL, uint N, class FUN>
|
||||
template<class POL, class FUN>
|
||||
struct WeavingBuilder
|
||||
: util::MoveOnly
|
||||
{
|
||||
using FunSpec = _ProcFun<FUN>;
|
||||
using TurnoutWeaving = Turnout<SimpleDirectInvoke<N,FUN>>;
|
||||
using TurnoutWeaving = Turnout<SimpleDirectInvoke<FUN>>;
|
||||
static constexpr SizMark<sizeof(TurnoutWeaving)> sizMark{};
|
||||
static constexpr uint FAN_I = FunSpec::FAN_I;
|
||||
static constexpr uint FAN_O = FunSpec::FAN_O;
|
||||
|
|
@ -423,7 +401,7 @@ namespace engine {
|
|||
while (cnt--)
|
||||
buffTypes.emplace_back([](BufferProvider& provider)
|
||||
{ return provider.getDescriptor<BU>(); });
|
||||
ENSURE (buffTypes.size() <= N);
|
||||
ENSURE (buffTypes.size() <= FAN_O);
|
||||
return move(*this);
|
||||
}
|
||||
|
||||
|
|
@ -474,9 +452,7 @@ namespace engine {
|
|||
outTypes.append (
|
||||
typeConstructor (providers[i++]));
|
||||
|
||||
ENSURE (leadPorts.size() <= N);
|
||||
ENSURE (leadPorts.size() == FunSpec::FAN_I);
|
||||
ENSURE (outTypes.size() <= N);
|
||||
ENSURE (outTypes.size() == FunSpec::FAN_O);
|
||||
|
||||
using PortDataBuilder = DataBuilder<POL, Port>;
|
||||
|
|
|
|||
|
|
@ -23290,9 +23290,7 @@
|
|||
</node>
|
||||
<node CREATED="1666485375028" ID="ID_282899643" MODIFIED="1666485530387" TEXT="DisplayFrame::getDisplayMetric()">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
...das ist in der Tat eine überflüssige Indirektion, die jedoch einen Storage-Slot einspart (weil die VTable ohnehin schon da ist). Man könnte sehr wohl schon im Interface CanvasHook einen Pointer auf eine DisplayMetric vorsehen
|
||||
|
|
@ -23849,9 +23847,7 @@
|
|||
<node CREATED="1565272911999" ID="ID_505692945" MODIFIED="1565272930138" TEXT="danach folgt eine vergrößernde Abstimmung"/>
|
||||
<node CREATED="1565272944612" ID="ID_559376631" MODIFIED="1582989776685">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
die Teilelemente <i>speichern</i> ihren Wert
|
||||
|
|
@ -24382,9 +24378,7 @@
|
|||
</node>
|
||||
<node CREATED="1583434172775" ID="ID_1444249960" MODIFIED="1583434412688" TEXT="Aufgabe ist, dieses orthogonal darzustellen">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
Rekursion ist immer doppelbödig:
|
||||
|
|
@ -25155,9 +25149,7 @@
|
|||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1612019625163" ID="ID_191145933" MODIFIED="1612019777333" TEXT="liegt vmtl. darin, daß wir uns grade in einem Draw()-Callback befinden">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
beim ersten Mal wird "nebenbei" festgestellt, daß das Track-Profil (noch)nicht existiert.
|
||||
|
|
@ -26367,9 +26359,7 @@
|
|||
<node CREATED="1576705483541" ID="ID_707363124" MODIFIED="1576705490984" TEXT="mit verschachtelten Sub-Tracks"/>
|
||||
<node CREATED="1576705491972" ID="ID_1199800790" MODIFIED="1576705509384" TEXT="verwenden des bestehenden Display-Code">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
soweit möglich ohne grundlegende Änderungen
|
||||
|
|
@ -28158,9 +28148,7 @@
|
|||
<icon BUILTIN="idea"/>
|
||||
<node CREATED="1677626302701" ID="ID_613709734" MODIFIED="1677626717065">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
<u><font color="#8323d6">Fall-1</font></u>: Font-Size ist absolut gegeben ⟹
|
||||
|
|
@ -30343,9 +30331,7 @@
|
|||
</node>
|
||||
<node COLOR="#338800" CREATED="1566407096905" ID="ID_489535600" MODIFIED="1576282358056" TEXT="Problem: rePack- der umschließenden Box">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
wenn man PACK_SHRINK setzt, dann weist die umschließende Box initial
|
||||
|
|
@ -31524,9 +31510,7 @@
|
|||
<node CREATED="1562854560779" ID="ID_1139882401" MODIFIED="1562854560779" TEXT="gobject_ ((make_a_copy && gobject) ? gtk_widget_path_copy(gobject) : gobject)"/>
|
||||
<node CREATED="1562854618581" ID="ID_1356580321" MODIFIED="1562854656348" TEXT="gtk_widget_path_copy (const GtkWidgetPath *path)">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<ul>
|
||||
<li>
|
||||
|
|
@ -34241,9 +34225,7 @@
|
|||
</node>
|
||||
<node CREATED="1584319394162" ID="ID_1919037634" MODIFIED="1584319465811" TEXT="wir wollen aber eine unnötige Doppel-Allokation pro Clip vermeiden">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
wenn man das naiv coden würde, dann würden wir für jeden Clip erst mal einen ClipData-Placeholder erzeugen, nur um dann, nach dem Empfangen des vollständigen Diff, diesen wieder zu deallozieren und dafür ein ClipWidget zu erzeugen...
|
||||
|
|
@ -36491,9 +36473,7 @@
|
|||
<node CREATED="1532789869240" ID="ID_752154716" MODIFIED="1561827465307" TEXT="gtk_key_snooper_install()">
|
||||
<node CREATED="1532790015889" ID="ID_1497534470" MODIFIED="1576282358029" TEXT="@deprecated: 3.4">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
@deprecated: 3.4: Key snooping should not be done. Events should  be handled by widgets
|
||||
|
|
@ -37690,9 +37670,7 @@
|
|||
<node CREATED="1616712031119" ID="ID_17685044" MODIFIED="1616712197269" TEXT="also "Clip-Move" vs "Clip-Attach" vs "Clip-Trim""/>
|
||||
<node CREATED="1616712201691" ID="ID_1586890794" MODIFIED="1616712288188" TEXT="denn es sind nicht so viele, daß eine zusätzliche Abstraktionsstufe gerechtfertig wäre">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
Und außerdem: die Wiederverwendung einer Implementierung z.B. für Dragging kann man per Vererbung oder per nested component lokal in der Implementierung regeln
|
||||
|
|
@ -38592,9 +38570,7 @@
|
|||
</node>
|
||||
<node CREATED="1619698681269" ID="ID_969574933" LINK="#ID_1202075896" MODIFIED="1666476922140">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
Name: <b>DisplayMetric</b>
|
||||
|
|
@ -38901,9 +38877,7 @@
|
|||
</html></richcontent>
|
||||
<node CREATED="1620406188961" ID="ID_1221022666" MODIFIED="1620406231393" TEXT="man kann ihn nicht einmal constexpr machen">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
...auch daran kann ich mich jetzt wieder erinnern...<br />Dann wäre nämlich das Handle nicht mehr kopierbar
|
||||
|
|
@ -39141,9 +39115,7 @@
|
|||
<icon BUILTIN="button_cancel"/>
|
||||
<node CREATED="1621095839443" ID="ID_995526022" MODIFIED="1621095889081" TEXT="Begründung: das Delta sollte im Gesten-Controller bereinigt werden">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
aber das von GDK gelieferte Delta hängt eben vom GDK-Window des widgets ab
|
||||
|
|
@ -89993,8 +89965,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
...während Ausgabepuffer zwar an der Stelle <i>committed</i> werden, aber »der« Ausgabepuffer wird noch nicht freigegeben, denn er ist ja Eingabepuffer der Nachfolger-Node
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1734137533539" ID="ID_253613495" MODIFIED="1734139667487" TEXT="beide Vorgänge müssen für einen In/Out-Buffer (in-place processing) unterbunden werden">
|
||||
<arrowlink COLOR="#e31763" DESTINATION="ID_1612398167" ENDARROW="Default" ENDINCLINATION="819;-857;" ID="Arrow_ID_166926203" STARTARROW="None" STARTINCLINATION="368;12;"/>
|
||||
|
|
@ -91343,6 +91314,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node CREATED="1734133537741" ID="ID_1672200590" MODIFIED="1734133557814" TEXT="(bisher:) zwei homogene Arrays"/>
|
||||
<node CREATED="1734134261731" ID="ID_1882489689" MODIFIED="1734134267038" TEXT="Varianten für Buffer">
|
||||
<node CREATED="1734134268698" ID="ID_735163966" MODIFIED="1734134273269" TEXT="nur Output"/>
|
||||
<node CREATED="1734188744367" ID="ID_318402472" MODIFIED="1734188751794" TEXT="heterogene Buffer-Typen"/>
|
||||
</node>
|
||||
<node CREATED="1734133572817" ID="ID_1508896644" MODIFIED="1734133584594" TEXT="zusätzlicher 1.Parameter">
|
||||
<node CREATED="1734133597805" ID="ID_1336464816" MODIFIED="1734133717178" TEXT="als beliebiger einzel-Wert">
|
||||
|
|
@ -91358,10 +91330,261 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node CREATED="1734133611115" ID="ID_140148557" MODIFIED="1734133616455" TEXT="als Tupel"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1734188779125" ID="ID_978315882" MODIFIED="1734188785169" TEXT="Fallunterscheidung">
|
||||
<node CREATED="1734188787125" ID="ID_1834748970" MODIFIED="1734188798681" TEXT="anhand der Arität">
|
||||
<node CREATED="1734188806962" ID="ID_390772438" MODIFIED="1734188832010" TEXT="tertiär: Zuordnung ist eindeutig">
|
||||
<node CREATED="1734189402282" ID="ID_1540995607" MODIFIED="1734189410440" TEXT="1:param"/>
|
||||
<node CREATED="1734189411779" ID="ID_496340085" MODIFIED="1734189416340" TEXT="2:input"/>
|
||||
<node CREATED="1734189418040" ID="ID_66062728" MODIFIED="1734189421913" TEXT="3:output"/>
|
||||
</node>
|
||||
<node CREATED="1734189445812" ID="ID_127959416" MODIFIED="1734189461003" TEXT="binär: zwei Fälle möglich">
|
||||
<node CREATED="1734189501078" ID="ID_1586417036" MODIFIED="1734189507320" TEXT="keine Parameter">
|
||||
<node CREATED="1734189523594" ID="ID_1532795879" MODIFIED="1734189528465" TEXT="1:input"/>
|
||||
<node CREATED="1734189532385" ID="ID_133166724" MODIFIED="1734189536506" TEXT="2:output"/>
|
||||
</node>
|
||||
<node CREATED="1734189508568" ID="ID_340518030" MODIFIED="1734189521240" TEXT="reine SourceNode">
|
||||
<node CREATED="1734189541335" ID="ID_58837735" MODIFIED="1734189545299" TEXT="1:param"/>
|
||||
<node CREATED="1734189547033" ID="ID_999171046" MODIFIED="1734189551353" TEXT="2:output"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1734189553822" ID="ID_371378428" MODIFIED="1734189613602" TEXT="unär: eindeutig SourceNode ohne Parameter">
|
||||
<node CREATED="1734189615374" ID="ID_989328103" MODIFIED="1734189620257" TEXT="1:output"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1734190083910" ID="ID_1977104281" MODIFIED="1734190090785" TEXT="Typ-Fälle">
|
||||
<node CREATED="1734190098316" ID="ID_555764595" MODIFIED="1734190109718" TEXT="zunächst ist eine Typ-Sequenz zu extrahieren"/>
|
||||
<node CREATED="1734190483904" ID="ID_1819780350" MODIFIED="1734190500562" TEXT="wenn alle Typen Pointer sind ⟹ Buffer"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1734191239971" ID="ID_114334831" MODIFIED="1734191249066" TEXT="Traits differenzieren">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1734191250817" ID="ID_1191066600" MODIFIED="1734191255564" TEXT="_ProcFun">
|
||||
<node CREATED="1734191297683" ID="ID_1345489513" MODIFIED="1734191301478" TEXT="Interface">
|
||||
<node CREATED="1734197766903" ID="ID_673979515" MODIFIED="1734197771095" TEXT="Sig">
|
||||
<node COLOR="#571c9a" CREATED="1734197197766" HGAP="33" ID="ID_591771944" MODIFIED="1734197816485" TEXT="komplette Funktions-Signatur" VSHIFT="3">
|
||||
<font NAME="SansSerif" SIZE="10"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1734197176174" ID="ID_1317605048" MODIFIED="1734197730300" TEXT="SigP">
|
||||
<node COLOR="#571c9a" CREATED="1734197197766" HGAP="25" ID="ID_387316898" MODIFIED="1734197855420" TEXT="erwarteter Signatur-Typ für Parameter" VSHIFT="3">
|
||||
<font NAME="SansSerif" SIZE="10"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1734197182853" ID="ID_301451402" MODIFIED="1734197730301" TEXT="SigI"/>
|
||||
<node CREATED="1734197187949" ID="ID_1412611110" MODIFIED="1734197730301" TEXT="SigO"/>
|
||||
<node CREATED="1734197176174" ID="ID_658600806" MODIFIED="1734197194774" TEXT="ArgP">
|
||||
<node COLOR="#571c9a" CREATED="1734197197766" HGAP="25" ID="ID_1706419734" MODIFIED="1734197278702" TEXT="Types<...>" VSHIFT="3">
|
||||
<font NAME="SansSerif" SIZE="10"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1734197182853" ID="ID_911130658" MODIFIED="1734197186496" TEXT="ArgI"/>
|
||||
<node CREATED="1734197187949" ID="ID_1356222325" MODIFIED="1734197191242" TEXT="ArgO"/>
|
||||
<node CREATED="1734197286103" ID="ID_1007382219" MODIFIED="1734197295522" TEXT="FAN_I">
|
||||
<node COLOR="#571c9a" CREATED="1734197197766" HGAP="25" ID="ID_1896822938" MODIFIED="1734197326334" TEXT="Konstanten (für Array-Def)" VSHIFT="3">
|
||||
<font NAME="SansSerif" SIZE="10"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1734197297083" ID="ID_1519265153" MODIFIED="1734197300389" TEXT="FAN_O"/>
|
||||
<node CREATED="1734197573721" ID="ID_934034330" MODIFIED="1734197589057" TEXT="SLOT_I">
|
||||
<node COLOR="#571c9a" CREATED="1734197197766" HGAP="25" ID="ID_1836695215" MODIFIED="1734197881325" TEXT="Slot-# der Funktion" VSHIFT="3">
|
||||
<font NAME="SansSerif" SIZE="10"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1734197580632" ID="ID_471999378" MODIFIED="1734197586731" TEXT="SLOT_O"/>
|
||||
<node CREATED="1734197463558" ID="ID_1084339659" MODIFIED="1734198442856" TEXT="hasInput() ≔ SLOT_I ≠ SLOT_O"/>
|
||||
<node CREATED="1734197436811" ID="ID_218618324" MODIFIED="1734198590894" TEXT="hasParam() ≔ 0 < SLOT_I">
|
||||
<node CREATED="1734198461292" HGAP="22" ID="ID_1230777508" MODIFIED="1734198560559" TEXT="(folgt implizit)" VSHIFT="3">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
...weil wir SLOT_I ≔ SLOT_O setzen (wichtig!), wenn es keinen Input gibt; es gibt nur zwei Fälle ohne Parameter, und die lsassen sich damit in diesen Test zusammenfassen
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1734197949703" ID="ID_614756914" MODIFIED="1734197958950" TEXT="in zwei Schritten umstellen">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1734197960677" ID="ID_928664533" MODIFIED="1734198014600" TEXT="Schritt-1 : neues Interface">
|
||||
<node CREATED="1734198655392" ID="ID_1607922853" MODIFIED="1734198689626" TEXT="kann ArgI|O sofort umbenennen ⟼ SigI|O">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
da es nur in Traits selber verwendet wird
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node COLOR="#5b280f" CREATED="1734210007691" ID="ID_824110488" MODIFIED="1734210121348" TEXT="dann ArrayI|O ebenfalls auf SigI|O zurückführen">
|
||||
<icon BUILTIN="button_cancel"/>
|
||||
<node CREATED="1734210123451" ID="ID_1200047403" MODIFIED="1734210132804" TEXT="besser später gleich ganz zurückbauen"/>
|
||||
<node CREATED="1734210134329" ID="ID_601691761" MODIFIED="1734210146556" TEXT="denn das einheitliche BuffI / BuffO fällt weg"/>
|
||||
</node>
|
||||
<node CREATED="1734210231821" ID="ID_1763909056" MODIFIED="1734210238791" TEXT="Parameter N zurückbauen">
|
||||
<node CREATED="1734210771451" ID="ID_577304307" MODIFIED="1734210825368" TEXT="etwas kniffelig...">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
denn im Moment wird der ja wirklich gebraucht, da die FeedManifold noch eine fixed-size-Allocaiton macht
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1734210827182" ID="ID_1319366507" MODIFIED="1734210848869" TEXT="erst mal »abhängen« und ein jeweils passendes Array direkt konstruieren"/>
|
||||
<node CREATED="1734210854384" ID="ID_249077721" MODIFIED="1734210868794" TEXT="dann auch das Array auf den Typ aus SigO | SigI schwenken">
|
||||
<node CREATED="1734210988102" ID="ID_1290179575" MODIFIED="1734210995425" TEXT="Assertions schärfen"/>
|
||||
<node CREATED="1734210996653" ID="ID_1230198498" MODIFIED="1734211181336" TEXT="nun FAN_I == leadPorts.size()"/>
|
||||
<node CREATED="1734211182900" ID="ID_419468849" MODIFIED="1734211201666" TEXT="und FAN_O == outTypes.size()"/>
|
||||
<node CREATED="1734211213967" ID="ID_700968343" MODIFIED="1734211234769" TEXT="das wird in terminaler BuilderOp ohnehin so sichergestellt"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1734197971763" ID="ID_1977596531" MODIFIED="1734197997067" TEXT="Schritt-2 : tatsächliche Flexibilität"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1734191257640" ID="ID_1241232500" MODIFIED="1734191262543" TEXT="_ParamFun"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1734133384146" ID="ID_250842155" MODIFIED="1734133516983" TEXT="Typ-Steuerung im Builder überarbeiten">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1734190947370" ID="ID_765080280" MODIFIED="1734191007258" TEXT="FeedManifold umstellen: std::array ⟼ tuple">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1734191532632" ID="ID_503276878" MODIFIED="1734191554354" TEXT="damit fällt eine starke strukturelle Einschränkung weg">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
<node CREATED="1734191556277" ID="ID_93980686" MODIFIED="1734191564434" TEXT="nicht klar ob das vorteilhaft ist"/>
|
||||
<node CREATED="1734191682679" ID="ID_1626382774" MODIFIED="1734191699892" TEXT="ich wollte mit dem einheitlichen N die Zahl der Template-Instanzen begrenzen">
|
||||
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1734191801095" ID="ID_438353051" MODIFIED="1734191897064" TEXT="Template-Bloat stellt tasächlich eine Gefahr dar">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1734191857809" ID="ID_1485766208" MODIFIED="1734191891221" TEXT="stelle aber fest: zusammen mit N geht überall der Typ FUN mit ein">
|
||||
<icon BUILTIN="clanbomber"/>
|
||||
</node>
|
||||
<node CREATED="1734192098399" ID="ID_1972074994" MODIFIED="1734192158004">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
das Template <b><font face="Monospaced">DirectFunctionInvocation<N,</font><font face="Monospaced" color="#c00606">FUN</font><font face="Monospaced">></font></b>  ist der Hebel
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="info"/>
|
||||
</node>
|
||||
<node CREATED="1734192172912" ID="ID_1482415574" MODIFIED="1734192186159" TEXT="⟹ bisher war diese Limitierung wirkungslos"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1734192187435" ID="ID_322033181" MODIFIED="1734196261814" TEXT="Erweiterung auf beliebigen Buffer-Mix ⟹ Limitierung grundsätzlich nicht haltbar">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
Und ich sehe keinerlei Basis, um einen beliebigen Buffer-Mix ausschließen zu können. Denn wir wollen <i>beliebige, nicht weiter bekannte Libraries</i> adaptieren können. Die einzige verbleibende Barriere ist FUN selber, denn das kann auch ein generischer Adapter aus dem Library-Plugin sein; jedoch <i>Vorgaben können wir keine machen. </i>
|
||||
</p>
|
||||
<p>
|
||||
<b><font color="#840c28">Jede mögliche Funktions-Signatur erzeugt eine separate Turnout-Instanz</font></b>
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
<icon BUILTIN="yes"/>
|
||||
<node BACKGROUND_COLOR="#d1aea3" COLOR="#523d5f" CREATED="1734193627969" ID="ID_1410642266" MODIFIED="1734193725381">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
das Media-Lib-Plugin is Problemzone und Ansatzpunkt bzgl <b>Template-Bloat</b>
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
<icon BUILTIN="bell"/>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1734194266853" HGAP="31" ID="ID_17132445" MODIFIED="1734194303269" TEXT="aber: auch Param-Funktor spielt nun eine Rolle..." VSHIFT="-6">
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1734193735891" ID="ID_1291324373" MODIFIED="1734193801830" TEXT="man könnte dort...">
|
||||
<node CREATED="1734193744090" ID="ID_224227606" MODIFIED="1734193795354" TEXT="Aufruf-Signaturen aggressiv vereinheitlichen"/>
|
||||
<node CREATED="1734193804568" ID="ID_1133557973" MODIFIED="1734193849964" TEXT="wenige generische Invocation-Adapter einsetzen">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
Trade-off: dafür dann eine runtime-Indirection
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1721238837562" HGAP="148" ID="ID_1378608706" MODIFIED="1734197120171" STYLE="bubble" TEXT="Hebel für später im Blick zu behalten" VSHIFT="44">
|
||||
<edge COLOR="#ff5d00" STYLE="sharp_linear"/>
|
||||
<arrowlink COLOR="#fe512a" DESTINATION="ID_1353514662" ENDARROW="Default" ENDINCLINATION="1101;-48;" ID="Arrow_ID_1188578396" STARTARROW="None" STARTINCLINATION="-832;60;"/>
|
||||
<arrowlink COLOR="#f94771" DESTINATION="ID_320753034" ENDARROW="None" ENDINCLINATION="1267;-43;" ID="Arrow_ID_735039883" STARTARROW="None" STARTINCLINATION="-749;52;"/>
|
||||
<icon BUILTIN="bell"/>
|
||||
<node CREATED="1721239003353" HGAP="17" ID="ID_611651911" MODIFIED="1734194192181" STYLE="fork" TEXT="Struktur des Mapping im konkreten Media-Lib-Plugin" VSHIFT="6">
|
||||
<font NAME="SansSerif" SIZE="8"/>
|
||||
</node>
|
||||
<node CREATED="1721239003353" ID="ID_1840265118" MODIFIED="1734196739366" STYLE="fork" TEXT="Einschränkung möglicher Parameter-Typen">
|
||||
<arrowlink COLOR="#ffce83" DESTINATION="ID_1544572814" ENDARROW="Default" ENDINCLINATION="503;27;" ID="Arrow_ID_551475375" STARTARROW="None" STARTINCLINATION="342;25;"/>
|
||||
<font NAME="SansSerif" SIZE="8"/>
|
||||
</node>
|
||||
<node CREATED="1721239003353" ID="ID_1794621311" MODIFIED="1734194181852" STYLE="fork" TEXT="Governance für diesen Belang?">
|
||||
<font NAME="SansSerif" SIZE="8"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1734199120857" ID="ID_1343294838" MODIFIED="1734199129917" TEXT="klären: was wird gespeichert?">
|
||||
<node CREATED="1734199131568" ID="ID_1360177084" MODIFIED="1734199142001" TEXT="aktuell speichern wir ein Array von BuffHandle"/>
|
||||
<node CREATED="1734199150589" ID="ID_974879606" MODIFIED="1734199175846" TEXT="das wird dann im invoke()-Aufruf übersetzt (⟼ dereferenziert)">
|
||||
<node CREATED="1734199263294" ID="ID_1017649830" MODIFIED="1734199276945" TEXT="hab dazu zusätzliche Storage im InvocationAdapter"/>
|
||||
<node CREATED="1734199278268" ID="ID_1094591472" MODIFIED="1734199295893" TEXT="ist zwar alles Stack — also optimierbar"/>
|
||||
<node COLOR="#5b280f" CREATED="1734199297478" ID="ID_1145567175" MODIFIED="1734199310989" TEXT="trotzdem überraschend!">
|
||||
<icon BUILTIN="stop-sign"/>
|
||||
<node CREATED="1734199478754" ID="ID_1130097864" MODIFIED="1734199501515" TEXT="außerdem machen wir da einen force-cast per UninitialisedStorage::accessAs<Buff*>"/>
|
||||
<node COLOR="#984394" CREATED="1734199540129" ID="ID_1311547067" MODIFIED="1734199718508" TEXT="dieser Code ist noch nicht wirklich gelaufen....">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
...denn exakt an dieser Stelle ist das Prototyping bis jetzt gescheitert ... wir konnten bisher nur eine „dämliche“ Dummy-Funktion binden; sobald eine <i>echte Dummy-Funktion</i> eingebunden werden sollte, bin ich darauf aufmerksam geworden, das eine solche Funktion zwangsläufig auch weitere Parameter brauchen wird, und nach einer weiteren, langen „Denk-Schleife“ bin ich hier wo ich grad bin
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1734199504590" ID="ID_1634729169" MODIFIED="1734199538866" TEXT="das „riecht“ nach einem Bug.....">
|
||||
<icon BUILTIN="broken-line"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#e0c0aa" COLOR="#bc9680" CREATED="1734199722245" ID="ID_1646832860" MODIFIED="1734199762689" TEXT="au Mann">
|
||||
<icon BUILTIN="smiley-oh"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1734209738024" ID="ID_312689837" MODIFIED="1734209751009" TEXT="Feststellung: es sind eigentlich zwei Schritte">
|
||||
<node CREATED="1734209753285" ID="ID_829825183" MODIFIED="1734209762244" TEXT="konkrete BuffHandle bekommen"/>
|
||||
<node CREATED="1734209764915" ID="ID_1757044461" MODIFIED="1734209805461" TEXT="diese in die von Funktion erwartete Datenstruktur mappen"/>
|
||||
<node CREATED="1734209809669" ID="ID_1176368122" MODIFIED="1734209820904" TEXT="das Mapping ist aber stets 1:1">
|
||||
<node CREATED="1734209895770" ID="ID_71007726" MODIFIED="1734209921242" TEXT="bis auf den Unterschied N vs FAN_I|O vs fanIn|Out"/>
|
||||
<node CREATED="1734209929895" ID="ID_1873459172" MODIFIED="1734209949347" TEXT="...was umso mehr zeigt daß dieser verschwinden sollte!">
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1734196584853" ID="ID_1949228582" MODIFIED="1734196598973" TEXT="Anordnung des Parameters für den Typ-Funktor bedenken">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1734196602500" ID="ID_1286582916" MODIFIED="1734196617685" TEXT="er sollte von der Funktion separierbar sein"/>
|
||||
<node CREATED="1734196618969" ID="ID_640106632" MODIFIED="1734196896465" TEXT="oder alternativ komplett von der Funktion abgeleitet">
|
||||
<linktarget COLOR="#7d7fd1" DESTINATION="ID_640106632" ENDARROW="Default" ENDINCLINATION="126;7;" ID="Arrow_ID_1055059428" SOURCE="ID_1457253482" STARTARROW="None" STARTINCLINATION="131;7;"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1734132967020" ID="ID_1354544776" MODIFIED="1734133516984" TEXT="Param-Tuple in FeedManifold aufnehmen">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
|
|
@ -91369,6 +91592,39 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1734133400400" ID="ID_1364724277" MODIFIED="1734141875620" TEXT="zusätzlichen Funktor für die Parameter akzeptieren">
|
||||
<arrowlink COLOR="#c0023e" DESTINATION="ID_1127056731" ENDARROW="Default" ENDINCLINATION="-1257;-48;" ID="Arrow_ID_1717201620" STARTARROW="None" STARTINCLINATION="-908;50;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1734196306235" ID="ID_1975026226" MODIFIED="1734196338552" TEXT="Funktor geht mit in den Turnout-Typ ein">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
<node CREATED="1734196346326" ID="ID_362452179" MODIFIED="1734196435265" TEXT="std::function hier kann Template-Bloat reduzieren">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
...insofern dann alle Fälle mit gleicher Signatur zusammenfallen; für die häufigsten Fälle (wie z.B. ein einziger int-Parameter) erwarte ich einen starken Hebel
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1734196763636" ID="ID_1457253482" MODIFIED="1734196896465" TEXT="tatsächliche Wirksamkeit hängt von realem Nutzen ab">
|
||||
<arrowlink COLOR="#7d7fd1" DESTINATION="ID_640106632" ENDARROW="Default" ENDINCLINATION="126;7;" ID="Arrow_ID_1055059428" STARTARROW="None" STARTINCLINATION="131;7;"/>
|
||||
<icon BUILTIN="hourglass"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1734196452272" HGAP="28" ID="ID_1812538453" MODIFIED="1734196932166" TEXT="bleibt jedoch trade-off — durchaus häufig aufgerufen" VSHIFT="-8">
|
||||
<icon BUILTIN="bell"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1721238837562" HGAP="148" ID="ID_1631533844" MODIFIED="1734197057405" STYLE="bubble" TEXT="weiterer Trade-off" VSHIFT="44">
|
||||
<edge COLOR="#ff5d00" STYLE="sharp_linear"/>
|
||||
<arrowlink COLOR="#fe512a" DESTINATION="ID_1353514662" ENDARROW="Default" ENDINCLINATION="1101;-48;" ID="Arrow_ID_147584569" STARTARROW="None" STARTINCLINATION="-832;60;"/>
|
||||
<icon BUILTIN="bell"/>
|
||||
<node CREATED="1721239003353" HGAP="17" ID="ID_252054004" MODIFIED="1734196548679" STYLE="fork" TEXT="Steuerung der Typwahl im Weaving-Pattern" VSHIFT="6">
|
||||
<font NAME="SansSerif" SIZE="8"/>
|
||||
</node>
|
||||
<node CREATED="1721239003353" ID="ID_1544572814" MODIFIED="1734196739366" STYLE="fork" TEXT="aber auch: Reduktion des Parameter-Typ-Universums">
|
||||
<linktarget COLOR="#ffce83" DESTINATION="ID_1544572814" ENDARROW="Default" ENDINCLINATION="503;27;" ID="Arrow_ID_551475375" SOURCE="ID_1840265118" STARTARROW="None" STARTINCLINATION="342;25;"/>
|
||||
<font NAME="SansSerif" SIZE="8"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1734133441531" ID="ID_109108903" MODIFIED="1734133509736" TEXT="Turnout-Sytem mit Storage implementieren">
|
||||
|
|
@ -92737,8 +92993,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
sollte <i>»im Prinzip«</i> auf das bestehende Schema aufgepflantzt werden
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="yes"/>
|
||||
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1734139617787" ID="ID_1074190304" MODIFIED="1734139649100" TEXT="Es gibt zwei Gefahrenstellen bzgl. Buffer-Lebenszyklus">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
|
|
@ -94278,9 +94533,9 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1734139914450" ID="ID_284201304" MODIFIED="1734141541281" TEXT="Steuerung der Parameter-Verarbeitung">
|
||||
<linktarget COLOR="#d90755" DESTINATION="ID_284201304" ENDARROW="Default" ENDINCLINATION="428;-33;" ID="Arrow_ID_1685749535" SOURCE="ID_1127056731" STARTARROW="None" STARTINCLINATION="-2201;158;"/>
|
||||
<linktarget COLOR="#a71e73" DESTINATION="ID_284201304" ENDARROW="Default" ENDINCLINATION="-170;12;" ID="Arrow_ID_170732865" SOURCE="ID_616768316" STARTARROW="None" STARTINCLINATION="150;11;"/>
|
||||
<linktarget COLOR="#c33786" DESTINATION="ID_284201304" ENDARROW="Default" ENDINCLINATION="-149;10;" ID="Arrow_ID_1396373869" SOURCE="ID_1184999563" STARTARROW="None" STARTINCLINATION="335;-34;"/>
|
||||
<linktarget COLOR="#d90755" DESTINATION="ID_284201304" ENDARROW="Default" ENDINCLINATION="428;-33;" ID="Arrow_ID_1685749535" SOURCE="ID_1127056731" STARTARROW="None" STARTINCLINATION="-2201;158;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1734139929944" ID="ID_1156222347" MODIFIED="1734140153468" TEXT="Steuerung von In/Out-Buffer Varianten">
|
||||
|
|
@ -96068,7 +96323,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node CREATED="1719968185473" ID="ID_1239704157" MODIFIED="1719968217280" TEXT="ein bestimmtes Resultat-BuffHandle wird weitergegeben und nicht geschlossen"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1719787368938" ID="ID_1123241919" MODIFIED="1728606826787" TEXT="freie Kombinatorik geschickt vermeiden">
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1719787368938" ID="ID_1123241919" MODIFIED="1734197007446" TEXT="freie Kombinatorik geschickt vermeiden">
|
||||
<arrowlink COLOR="#ff1551" DESTINATION="ID_1233624332" ENDARROW="Default" ENDINCLINATION="-1880;100;" ID="Arrow_ID_62498933" STARTARROW="None" STARTINCLINATION="4449;305;"/>
|
||||
<linktarget COLOR="#8d0757" DESTINATION="ID_1123241919" ENDARROW="Default" ENDINCLINATION="-491;33;" ID="Arrow_ID_771540131" SOURCE="ID_1412088712" STARTARROW="None" STARTINCLINATION="-327;758;"/>
|
||||
<icon BUILTIN="yes"/>
|
||||
|
|
@ -96076,6 +96331,10 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<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ü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>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1730486371054" HGAP="24" ID="ID_939499486" MODIFIED="1730487590452" TEXT="Node-Metadaten" VSHIFT="7">
|
||||
|
|
@ -97019,8 +97278,13 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<icon BUILTIN="bell"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1721238814245" ID="ID_1330725144" MODIFIED="1734139688131" TEXT="Aufgabe: Markierung und Spezialbehandlung für In/Out-Parameter">
|
||||
<linktarget COLOR="#fee2f8" DESTINATION="ID_1330725144" ENDARROW="Default" ENDINCLINATION="294;12;" ID="Arrow_ID_316718831" SOURCE="ID_194906054" STARTARROW="None" STARTINCLINATION="545;31;"/>
|
||||
<linktarget COLOR="#fe512a" DESTINATION="ID_1330725144" ENDARROW="Default" ENDINCLINATION="1101;-48;" ID="Arrow_ID_494242518" SOURCE="ID_1612398167" STARTARROW="None" STARTINCLINATION="-1703;73;"/>
|
||||
<linktarget COLOR="#fee2f8" DESTINATION="ID_1330725144" ENDARROW="Default" ENDINCLINATION="294;12;" ID="Arrow_ID_316718831" SOURCE="ID_194906054" STARTARROW="None" STARTINCLINATION="545;31;"/>
|
||||
<icon BUILTIN="bell"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1721238814245" ID="ID_1353514662" MODIFIED="1734197109463" TEXT="Aufgabe: Template-Bloat im Media-Lib-Plug-in beachten">
|
||||
<linktarget COLOR="#fe512a" DESTINATION="ID_1353514662" ENDARROW="Default" ENDINCLINATION="1101;-48;" ID="Arrow_ID_1188578396" SOURCE="ID_1378608706" STARTARROW="None" STARTINCLINATION="-832;60;"/>
|
||||
<linktarget COLOR="#fe512a" DESTINATION="ID_1353514662" ENDARROW="Default" ENDINCLINATION="1101;-48;" ID="Arrow_ID_147584569" SOURCE="ID_1631533844" STARTARROW="None" STARTINCLINATION="-832;60;"/>
|
||||
<icon BUILTIN="bell"/>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -97212,8 +97476,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
Folgeschäden eines redundanten Aufrufs zu bedenken
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1720574923303" ID="ID_284878377" MODIFIED="1720574930985" TEXT="Design und Code-Qualität">
|
||||
|
|
|
|||
Loading…
Reference in a new issue