Chain-Load: verify (and bugfix)
This commit is contained in:
parent
ed8d9939bd
commit
659441fa88
3 changed files with 234 additions and 31 deletions
|
|
@ -260,8 +260,10 @@ namespace lib {
|
|||
template<class SIG, class INI, typename...ARGS>
|
||||
LazyInit (std::function<SIG>& targetFunctor, INI&& initialiser, ARGS&& ...parentCtorArgs)
|
||||
: PAR(forward<ARGS> (parentCtorArgs)...)
|
||||
, pendingInit_{prepareInitialiser (targetFunctor, forward<INI> (initialiser))}
|
||||
{ }
|
||||
, pendingInit_{}
|
||||
{
|
||||
installInitialiser (targetFunctor, forward<INI> (initialiser));
|
||||
}
|
||||
|
||||
|
||||
LazyInit (LazyInit const& ref)
|
||||
|
|
|
|||
|
|
@ -340,13 +340,22 @@ namespace test{
|
|||
{
|
||||
return [theFun = forward<FUN> (fun2install)]
|
||||
(LazyDemo* self)
|
||||
{
|
||||
{ // this runs when init is actually performed....
|
||||
CHECK (self);
|
||||
self->fun = [self, chain = move(theFun)]
|
||||
(int i)
|
||||
{
|
||||
return chain (i + self->seed); // Note: binding to actual instance location
|
||||
};
|
||||
if (self->fun)
|
||||
// chain-up behind existing function
|
||||
self->fun = [self, prevFun = move(self->fun), nextFun = move(theFun)]
|
||||
(int i)
|
||||
{
|
||||
return nextFun (prevFun (i));
|
||||
};
|
||||
else
|
||||
// build new function chain, inject seed from object
|
||||
self->fun = [self, newFun = move(theFun)]
|
||||
(int i)
|
||||
{
|
||||
return newFun (i + self->seed); // Note: binding to actual instance location
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
|
|
@ -359,12 +368,20 @@ namespace test{
|
|||
}
|
||||
|
||||
template<typename FUN>
|
||||
LazyDemo(FUN&& someFun)
|
||||
LazyDemo (FUN&& someFun)
|
||||
: LazyInit{MarkDisabled()}
|
||||
, fun{}
|
||||
{
|
||||
installInitialiser(fun, buildInit (forward<FUN> (someFun)));
|
||||
}
|
||||
|
||||
template<typename FUN>
|
||||
LazyDemo&&
|
||||
attach (FUN&& someFun)
|
||||
{
|
||||
installInitialiser(fun, buildInit (forward<FUN> (someFun)));
|
||||
return move(*this);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -373,7 +390,9 @@ namespace test{
|
|||
* - the initialisation routine _adapts_ this function and links it with the current
|
||||
* object location; thus, invoking this function on a copy would crash / corrupt memory.
|
||||
* - however, as long as initialisation has not been triggered, LazyDemo instances can be
|
||||
* copied; they may even be assigned to existing instances, overwriting their state.
|
||||
* copied; they may even be assigned to existing instances, overwriting their state.
|
||||
* - a second given function will be chained behind the first one; this happens immediately
|
||||
* if the first function was already invoked (and this initialised)
|
||||
*/
|
||||
void
|
||||
verify_complexUsageWithCopy()
|
||||
|
|
@ -404,6 +423,21 @@ namespace test{
|
|||
CHECK (26 == d1.fun(22)); // seed value is picked up dynamically
|
||||
|
||||
VERIFY_ERROR (LIFECYCLE, LazyDemo dx{move(d1)} );
|
||||
|
||||
// attach a further function, to be chained-up
|
||||
d1.attach([](int i)
|
||||
{
|
||||
return i / 2;
|
||||
});
|
||||
CHECK (d1.isInit());
|
||||
CHECK (d1.seed == 3);
|
||||
CHECK (12 == d1.fun(21)); // 21+3+1=25 / 2
|
||||
CHECK (13 == d1.fun(22));
|
||||
CHECK (13 == d1.fun(23));
|
||||
d1.seed++;
|
||||
CHECK (14 == d1.fun(23)); // 23+4+1=28 / 2
|
||||
CHECK (14 == d1.fun(24));
|
||||
CHECK (15 == d1.fun(25));
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -97365,6 +97365,147 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node COLOR="#338800" CREATED="1700878177787" ID="ID_707719092" MODIFIED="1700878185308" TEXT="engaged / reject copy">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1700930546516" ID="ID_1564171170" MODIFIED="1700930756771" TEXT="chained / repeated init">
|
||||
<linktarget COLOR="#d33070" DESTINATION="ID_1564171170" ENDARROW="Default" ENDINCLINATION="-852;94;" ID="Arrow_ID_474620988" SOURCE="ID_582127020" STARTARROW="None" STARTINCLINATION="353;26;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1700930691509" ID="ID_1932503456" MODIFIED="1700930701095" TEXT="nach Erweiterung auf chained-Init"/>
|
||||
<node COLOR="#338800" CREATED="1700930772985" ID="ID_437187802" MODIFIED="1700936377561" TEXT="Fall-1 schrittweise ⟹ 2.Funktion wird direkt angewendet">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node COLOR="#435e98" CREATED="1700930810316" ID="ID_1951631206" MODIFIED="1700934641597" TEXT="SEGFAULT">
|
||||
<icon BUILTIN="broken-line"/>
|
||||
<node CREATED="1700930968706" ID="ID_112881994" MODIFIED="1700936360706" TEXT="vorheriger Testfall: verify_lazyInitialisation">
|
||||
<icon BUILTIN="forward"/>
|
||||
<node CREATED="1700931144507" ID="ID_1402058956" MODIFIED="1700931493280" TEXT="der testet (nur) die Basis-Funktionalität..."/>
|
||||
<node CREATED="1700932365874" ID="ID_1980358043" MODIFIED="1700932380251" TEXT="versuche noch einzugrenzen">
|
||||
<node CREATED="1700932383903" ID="ID_1672931837" MODIFIED="1700932392548" TEXT="das Verhalten ist probabilistisch"/>
|
||||
<node CREATED="1700932393247" ID="ID_1817539105" MODIFIED="1700932400889" TEXT="mit dem Debugger nicht reproduzierbar"/>
|
||||
<node CREATED="1700932402518" ID="ID_895380648" MODIFIED="1700932452565" TEXT="wenn man die letzten beiden Zeilen auskommentiert ⟶ Fehler verschwindet">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
//          CHECK (1 == invoked);
|
||||
</p>
|
||||
<p>
|
||||
//          CHECK (init);
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node CREATED="1700932454870" ID="ID_1214658102" MODIFIED="1700932500906" TEXT="nur die letzte Zeile auskommetiert ⟶ bad_function_call expcption (manchmal SEGFAULT)"/>
|
||||
</node>
|
||||
<node CREATED="1700932559871" ID="ID_291091970" MODIFIED="1700932592585">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
die neue <b><font color="#b80202">maybeInvoke</font></b>()
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
<icon BUILTIN="forward"/>
|
||||
<node COLOR="#82294c" CREATED="1700932694758" ID="ID_1897631554" MODIFIED="1700932717669" TEXT="return (*pendingDelegate) (location); // invoke to create new TargetFun">
|
||||
<font NAME="Monospaced" SIZE="12"/>
|
||||
<node CREATED="1700933021282" ID="ID_259468971" MODIFIED="1700933052441" TEXT="diese Zeile dürfte im Beispiel gar nicht laufen"/>
|
||||
<node CREATED="1700933053519" ID="ID_531104855" MODIFIED="1700933065606" TEXT="denn das ist die erste Initialisierung eines neuen Objekts"/>
|
||||
<node CREATED="1700933303016" ID="ID_202001537" MODIFIED="1700933307535" TEXT="Debugger">
|
||||
<node CREATED="1700933309785" ID="ID_793336245" MODIFIED="1700933321021" TEXT="im delegate-λ"/>
|
||||
<node CREATED="1700933322337" ID="ID_1721922743" MODIFIED="1700933339191" TEXT="capture previousInit">
|
||||
<node CREATED="1700933340351" ID="ID_455359128" MODIFIED="1700933402320" TEXT="ist korrupt">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
previousInit
|
||||
</p>
|
||||
<p>
|
||||
Details:<error reading variable: Cannot access memory at address 0x3000000030>
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node CREATED="1700933404336" ID="ID_606348307" MODIFIED="1700933415215" TEXT="get() zeigt auf eine Stack-Addresse (sollte Heap sein)"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1700932731640" ID="ID_360832756" MODIFIED="1700932762749" TEXT="⟹ Problem steckt im erweiterten Memory-Management für chained-initialiser"/>
|
||||
<node BACKGROUND_COLOR="#d5bb9b" COLOR="#fa002a" CREATED="1700932787977" ID="ID_1177559316" MODIFIED="1700934162408" TEXT="gedankenloser Schmuh : move (pendingInit_) .....">
|
||||
<icon BUILTIN="smiley-oh"/>
|
||||
<node CREATED="1700933651909" ID="ID_1160983607" MODIFIED="1700933990550" TEXT="was passiert bei move(shared_ptr)??">
|
||||
<arrowlink COLOR="#f01130" DESTINATION="ID_1523180887" ENDARROW="Default" ENDINCLINATION="-71;-11;" ID="Arrow_ID_1745949442" STARTARROW="None" STARTINCLINATION="155;12;"/>
|
||||
<node CREATED="1700934828648" ID="ID_831687284" MODIFIED="1700934902699" TEXT="nebenbei: im Code angeschaut">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
      __shared_ptr(__shared_ptr&& __r) noexcept
|
||||
</p>
|
||||
<p>
|
||||
      : _M_ptr(__r._M_ptr), _M_refcount()
|
||||
</p>
|
||||
<p>
|
||||
      {
|
||||
</p>
|
||||
<p>
|
||||
_M_refcount._M_swap(__r._M_refcount);
|
||||
</p>
|
||||
<p>
|
||||
__r._M_ptr = 0;
|
||||
</p>
|
||||
<p>
|
||||
      }
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
<node CREATED="1700934837739" ID="ID_777504264" MODIFIED="1700934845312" TEXT="ganz sauber: konstruiert ein neues Objekt"/>
|
||||
<node CREATED="1700934846062" ID="ID_1249336482" MODIFIED="1700934855657" TEXT="mit einem leeren Refcount-Subobjekt"/>
|
||||
<node CREATED="1700934856341" ID="ID_1904206411" MODIFIED="1700934867263" TEXT="und macht dann ein Swap mit dem Original-Refcount"/>
|
||||
<node CREATED="1700934881929" ID="ID_845376746" MODIFIED="1700934896555" TEXT="und setzt dann als Letztes beim Original den ptr auf NULL"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1700933862105" ID="ID_728350277" MODIFIED="1700934371231" TEXT="viel einfacher: wir sind hier im call-Stack vom Konstruktor">
|
||||
<arrowlink COLOR="#94385e" DESTINATION="ID_988517206" ENDARROW="Default" ENDINCLINATION="530;-26;" ID="Arrow_ID_622219569" STARTARROW="None" STARTINCLINATION="-527;27;"/>
|
||||
<icon BUILTIN="idea"/>
|
||||
<node CREATED="1700933903857" ID="ID_214804080" MODIFIED="1700933915431" TEXT="pendingInit_ ist noch garnicht konstruiert/initialisiert"/>
|
||||
<node CREATED="1700933916130" ID="ID_367591800" MODIFIED="1700933928260" TEXT="und diesen Zusand moven wir in das λ"/>
|
||||
<node CREATED="1700933953449" ID="ID_1523180887" MODIFIED="1700933986403" TEXT="works as designed">
|
||||
<linktarget COLOR="#f01130" DESTINATION="ID_1523180887" ENDARROW="Default" ENDINCLINATION="-71;-11;" ID="Arrow_ID_1745949442" SOURCE="ID_1160983607" STARTARROW="None" STARTINCLINATION="155;12;"/>
|
||||
<icon BUILTIN="smiley-oh"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#c8c0b6" CREATED="1700933934838" ID="ID_1439685001" MODIFIED="1700934189582" TEXT="Party!"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1700934610437" ID="ID_859515833" MODIFIED="1700934638430" TEXT="ein ganz banaler Programmierfehler">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
... kein Problem mit der Logik
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -97445,7 +97586,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<icon BUILTIN="idea"/>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1700795177255" ID="ID_1289910748" MODIFIED="1700856355486" TEXT="an beliebige Kopierbarkeit denken">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
<node CREATED="1700856368367" ID="ID_10148288" MODIFIED="1700856381041" TEXT="es spricht nichts dagegen, den Initialiser mehrfach anzuwenden"/>
|
||||
<node CREATED="1700856368367" ID="ID_10148288" MODIFIED="1700934263557" TEXT="es spricht nichts dagegen, den Initialiser mehrfach anzuwenden"/>
|
||||
<node CREATED="1700856381773" ID="ID_1768653625" MODIFIED="1700856395423" TEXT="genau deshalb bekommt er ja *self als Argument"/>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1700795186661" ID="ID_1743434660" MODIFIED="1700856347710" TEXT="der schleppt dann wohl leider einen shared_ptr mit rum">
|
||||
|
|
@ -97525,6 +97666,9 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node COLOR="#338800" CREATED="1700865829132" ID="ID_1420005046" MODIFIED="1700865850429" TEXT="shared_ptr nach Triggern der Initialisierung reset()">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1700930608396" ID="ID_1911462720" MODIFIED="1700930636539" TEXT="alten shared_ptr für Verkettung jeweils in das Delegate verschieben">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1700865861639" ID="ID_409549839" MODIFIED="1700865919942" TEXT="gegebenes Init-λ adaptieren">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
|
|
@ -97550,9 +97694,6 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<icon BUILTIN="messagebox_warning"/>
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1700871143583" ID="ID_1088454070" MODIFIED="1700878102782" TEXT="muß dann aber eine Setter-Funktion public machen">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1700876522892" ID="ID_199433026" MODIFIED="1700878099429" TEXT="brauche dann auch einen Leer-Init-Zustand">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1700878072770" ID="ID_1728628936" MODIFIED="1700878084969" TEXT="Prolbem: ctor-Signatur zweideutig">
|
||||
|
|
@ -97562,6 +97703,18 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1700871143583" ID="ID_1088454070" MODIFIED="1700934358632" TEXT="muß dann aber eine Setter-Funktion public machen">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1700934235151" ID="ID_988517206" MODIFIED="1700934456372" TEXT="Installieren des Initialisers nun stets über den Setter">
|
||||
<linktarget COLOR="#94385e" DESTINATION="ID_988517206" ENDARROW="Default" ENDINCLINATION="530;-26;" ID="Arrow_ID_622219569" SOURCE="ID_728350277" STARTARROW="None" STARTINCLINATION="-527;27;"/>
|
||||
<linktarget COLOR="#feccb9" DESTINATION="ID_988517206" ENDARROW="Default" ENDINCLINATION="-537;28;" ID="Arrow_ID_703877314" SOURCE="ID_1994110111" STARTARROW="None" STARTINCLINATION="-214;-11;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1700934478543" ID="ID_1596192488" MODIFIED="1700934519682" TEXT="elaborierte Init-Logik direkt aus der ctor-initialiser-List ist sowiso keine gute Idee">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
</node>
|
||||
<node CREATED="1700934521513" ID="ID_1817606797" MODIFIED="1700934538113" TEXT="und die default-Init eines shared_ptr ist extrem leichtgewichtig"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1700871279919" ID="ID_1126055663" MODIFIED="1700871683297">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
|
@ -97639,9 +97792,10 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1700883451009" ID="ID_1957619208" MODIFIED="1700883468235" TEXT="Analyse: wiederholte / kaskadierte Initialisierungen">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1700883475839" ID="ID_837624106" MODIFIED="1700883477453" TEXT="Ablauf">
|
||||
<node COLOR="#338800" CREATED="1700883451009" ID="ID_1957619208" MODIFIED="1700930513797" TEXT="Analyse: wiederholte / kaskadierte Initialisierungen">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node COLOR="#435e98" CREATED="1700883475839" ID="ID_837624106" MODIFIED="1700930507747" TEXT="Ablauf">
|
||||
<icon BUILTIN="info"/>
|
||||
<node CREATED="1700883822501" ID="ID_402007618" MODIFIED="1700883824872" TEXT="Fall-1">
|
||||
<node CREATED="1700883478738" ID="ID_1745053013" MODIFIED="1700883862198" TEXT="isInit() ⟼ true(leer) + kein Funktor"/>
|
||||
<node CREATED="1700883537958" ID="ID_1244902831" MODIFIED="1700883549760" TEXT="isInit() ⟼ false + Trap"/>
|
||||
|
|
@ -97659,7 +97813,8 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node CREATED="1700883563354" ID="ID_536028687" MODIFIED="1700883580135" TEXT="Trap ⟶ neuer Funktor"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1700883981242" ID="ID_476427708" MODIFIED="1700883983854" TEXT="Fall-Muster">
|
||||
<node COLOR="#435e98" CREATED="1700883981242" ID="ID_476427708" MODIFIED="1700930508721" TEXT="Fall-Muster">
|
||||
<icon BUILTIN="forward"/>
|
||||
<node CREATED="1700883997648" ID="ID_279106916" MODIFIED="1700884041366" TEXT="not pendingInit + kein Funktor ⟹ Fall-1"/>
|
||||
<node CREATED="1700884059833" ID="ID_1932722762" MODIFIED="1700884071728" TEXT="not pendingInit + Funktor ⟹ Fall-2">
|
||||
<node CREATED="1700884197594" ID="ID_1851874040" MODIFIED="1700884208296" TEXT="dieser Funktor wäre ein Vorläufer"/>
|
||||
|
|
@ -97669,13 +97824,14 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</node>
|
||||
<node CREATED="1700884114752" ID="ID_364127230" MODIFIED="1700884129803" TEXT="pendingInit + kein Funktor ⟹ LogicBroken"/>
|
||||
</node>
|
||||
<node CREATED="1700884471281" ID="ID_944993217" MODIFIED="1700884475692" TEXT="Lösung...">
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1700884476470" ID="ID_1258681625" MODIFIED="1700884494881" TEXT="minimal: sollte gemacht werden">
|
||||
<node COLOR="#338800" CREATED="1700884471281" ID="ID_944993217" MODIFIED="1700930497292" TEXT="Lösung...">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node COLOR="#435e98" CREATED="1700884476470" ID="ID_1258681625" MODIFIED="1700930485802" TEXT="minimal: sollte gemacht werden">
|
||||
<icon BUILTIN="yes"/>
|
||||
<node CREATED="1700884496384" ID="ID_169506932" MODIFIED="1700884505209" TEXT="vor Aufruf des Initialisers..."/>
|
||||
<node CREATED="1700884506445" ID="ID_14177401" MODIFIED="1700884522694" TEXT="den bestehenden Functor leer machen"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1700884537072" ID="ID_1176504809" MODIFIED="1700925243615" TEXT="erweitert: machbar?">
|
||||
<node COLOR="#435e98" CREATED="1700884537072" ID="ID_1176504809" MODIFIED="1700930488084" TEXT="erweitert: machbar?">
|
||||
<icon BUILTIN="help"/>
|
||||
<node CREATED="1700884615478" ID="ID_1008762319" MODIFIED="1700884620881" TEXT="Init-Verkettung">
|
||||
<node CREATED="1700884634923" ID="ID_1100836382" MODIFIED="1700884788061" TEXT="bestehenden pendingInit zuerst aufrufen">
|
||||
|
|
@ -97697,11 +97853,11 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node CREATED="1700884841856" ID="ID_1654607159" MODIFIED="1700884865645" TEXT="das Objekt ist »engaged«, d.h. darf nicht mehr bewegt werden"/>
|
||||
<node CREATED="1700884866732" ID="ID_1005926094" MODIFIED="1700884910994" TEXT="unter diesen Umständen ist gar keine lazy-Init notwendig"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1700885072177" ID="ID_1660971679" MODIFIED="1700885098097" TEXT="Antwort: ist ohne großen Aufwand machbar">
|
||||
<node COLOR="#435e98" CREATED="1700885072177" ID="ID_1660971679" MODIFIED="1700930490340" TEXT="Antwort: ist ohne großen Aufwand machbar">
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1700885100085" ID="ID_1294902012" MODIFIED="1700928226538" TEXT="operational">
|
||||
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1700885100085" ID="ID_1294902012" MODIFIED="1700930494083" TEXT="operational">
|
||||
<icon BUILTIN="list"/>
|
||||
<node CREATED="1700885105797" ID="ID_392736313" MODIFIED="1700885117623" TEXT="beim Aufruf zum Installieren...">
|
||||
<node CREATED="1700885126594" ID="ID_933835878" MODIFIED="1700885357053" TEXT="zuerst den Fall feststellen">
|
||||
|
|
@ -97723,13 +97879,13 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1700885399157" ID="ID_1052362467" MODIFIED="1700928254133" TEXT="Ergänzung der Init-Routine">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1700885425170" ID="ID_1390543220" MODIFIED="1700885449554" TEXT="Logik zur Fall-Erkennung">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node COLOR="#338800" CREATED="1700885399157" ID="ID_1052362467" MODIFIED="1700930526102" TEXT="Ergänzung der Init-Routine">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node COLOR="#338800" CREATED="1700885425170" ID="ID_1390543220" MODIFIED="1700930515720" TEXT="Logik zur Fall-Erkennung">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1700885455310" ID="ID_75201701" MODIFIED="1700885475092" TEXT="zusätzlich einen shared_ptr innerhalb vom Adapter vorsehen">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node COLOR="#338800" CREATED="1700885455310" ID="ID_75201701" MODIFIED="1700930517963" TEXT="zusätzlich einen shared_ptr innerhalb vom Adapter vorsehen">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node CREATED="1700885486066" ID="ID_1745928936" MODIFIED="1700885498658">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
|
@ -97784,9 +97940,20 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</richcontent>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1700885870078" ID="ID_1085520028" MODIFIED="1700885900667" TEXT="wenn es einen pendingInit gibt (⟹Fall-3) dann verschieben">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node COLOR="#338800" CREATED="1700885870078" ID="ID_1085520028" MODIFIED="1700930525033" TEXT="wenn es einen pendingInit gibt (⟹Fall-3) dann verschieben">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1700934390451" ID="ID_580868191" MODIFIED="1700934405730" TEXT="Vorraussetzung: der shared_ptr muß immer initialisiert sein">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1700934411512" ID="ID_1994110111" MODIFIED="1700934468459" TEXT="ist er aber nicht wenn wir aus dem Konstruktor aufrufen">
|
||||
<arrowlink COLOR="#feccb9" DESTINATION="ID_988517206" ENDARROW="Default" ENDINCLINATION="-537;28;" ID="Arrow_ID_703877314" STARTARROW="None" STARTINCLINATION="-214;-11;"/>
|
||||
<icon BUILTIN="smiley-oh"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1700930708239" ID="ID_582127020" MODIFIED="1700930761845" TEXT="Test: verify_complexUsageWithCopy">
|
||||
<arrowlink COLOR="#d33070" DESTINATION="ID_1564171170" ENDARROW="Default" ENDINCLINATION="-852;94;" ID="Arrow_ID_474620988" STARTARROW="None" STARTINCLINATION="353;26;"/>
|
||||
<icon BUILTIN="pencil"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
|
|||
Loading…
Reference in a new issue