<map version="1.0.1">
<!-- To view this file, download free mind mapping software FreeMind from http://freemind.sourceforge.net -->
<node BACKGROUND_COLOR="#6666ff" CREATED="1434127882200" ID="ID_1452170048" MODIFIED="1680365898333" STYLE="fork" TEXT="Lumi">
<font NAME="SansSerif" SIZE="25"/>
<node CREATED="1434128046296" FOLDED="true" ID="ID_1900827283" MODIFIED="1679363052358" POSITION="right" TEXT="GUI">
<font BOLD="true" NAME="SansSerif" SIZE="14"/>
<node CREATED="1434128054470" HGAP="7" ID="ID_1166611516" MODIFIED="1557498707213" TEXT="Workflow" VSHIFT="-15">
<node CREATED="1455289597596" ID="ID_970065036" MODIFIED="1557498707213" TEXT="work site"/>
<node CREATED="1455289466261" ID="ID_273679080" MODIFIED="1557498707213" TEXT="PresentationState">
<node CREATED="1618494980292" ID="ID_1626014832" MODIFIED="1618494985867" TEXT="Anordnung">
<node CREATED="1618494998061" ID="ID_1125409607" MODIFIED="1618495002909" TEXT="top-level-Windows"/>
<node CREATED="1618495003597" ID="ID_1454902343" MODIFIED="1618495009282" TEXT="docking panels"/>
<node CREATED="1618495027486" ID="ID_1793800259" MODIFIED="1618495032901" TEXT="Layout / Aufteilung"/>
</node>
<node CREATED="1618495052150" ID="ID_1652649228" MODIFIED="1618495059502" TEXT="lokale Auspr&#xe4;gung">
<node CREATED="1618495060622" ID="ID_1081072599" MODIFIED="1618495064592" TEXT="expand / collapse"/>
<node CREATED="1618495065300" ID="ID_1443213129" MODIFIED="1618495072066" TEXT="Darstellungsmodi"/>
</node>
<node CREATED="1618495095336" ID="ID_1765572056" MODIFIED="1618495654883" TEXT="Thema: Interaction-State">
<arrowlink COLOR="#382ab9" DESTINATION="ID_1679641405" ENDARROW="Default" ENDINCLINATION="-962;-111;" ID="Arrow_ID_1636278357" STARTARROW="None" STARTINCLINATION="-502;101;"/>
</node>
</node>
<node CREATED="1487210691163" ID="ID_1259700796" MODIFIED="1557498707214" TEXT="konzeptioneller Rahmen">
<linktarget COLOR="#34dbd3" DESTINATION="ID_1259700796" ENDARROW="Default" ENDINCLINATION="473;607;" ID="Arrow_ID_114106295" SOURCE="ID_1430752735" STARTARROW="None" STARTINCLINATION="-1346;-1090;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<node CREATED="1487210978300" ID="ID_1502972928" MODIFIED="1557498707214" TEXT="Spot == wo wir sind"/>
<node CREATED="1487211011447" ID="ID_61564732" MODIFIED="1557498707214" TEXT="Work Site == wo wir sein k&#xf6;nnen"/>
<node CREATED="1487211200966" ID="ID_1565474518" MODIFIED="1557498707214" TEXT="Focus == Realisierung des Spot in einem ControlSystem"/>
<node CREATED="1487211243656" ID="ID_953924547" MODIFIED="1557498707214" TEXT="ControlSystem == Steuerungs-Paradigma">
<node CREATED="1487211263461" ID="ID_374086294" MODIFIED="1557498707214" TEXT="Maus / current element"/>
<node CREATED="1487211266901" ID="ID_306043379" MODIFIED="1557498707214" TEXT="Keyboard / Input Focus"/>
</node>
<node CREATED="1487211777687" ID="ID_577769257" MODIFIED="1557498707214" TEXT="Focus Path == kanonische Koordinaten innerhalb von einem UI Frame"/>
<node CREATED="1487211825857" ID="ID_883246945" MODIFIED="1557498707214" TEXT="UI Frame == top-level-Segment (konkret: WorkspaceWindow)"/>
<node CREATED="1487212066024" ID="ID_378199749" MODIFIED="1557498707214" TEXT="Spot Locator == das was navigiert wird, wenn sich der Spot bewegt"/>
</node>
</node>
<node CREATED="1477784761581" HGAP="72" ID="ID_854334914" MODIFIED="1679362096943" TEXT="Rahmen" VGAP="19" VSHIFT="-21">
<font NAME="SansSerif" SIZE="14"/>
<node BACKGROUND_COLOR="#fefc4e" COLOR="#351d75" CREATED="1481320580216" ID="ID_1418071897" MODIFIED="1679087560455" TEXT="vorantreiben">
<font BOLD="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node COLOR="#435e98" CREATED="1501776053522" FOLDED="true" ID="ID_664046169" MODIFIED="1557498707214" TEXT="R&#xfc;ckpfad Session -&gt; UI">
<node CREATED="1501776081782" ID="ID_1369579979" MODIFIED="1557498707214" TEXT="warum wichtig?">
<icon BUILTIN="help"/>
<node CREATED="1501776102419" ID="ID_1120643044" MODIFIED="1557498707214" TEXT="full circle"/>
<node CREATED="1501776110026" ID="ID_53068153" MODIFIED="1557498707214" TEXT="asynchron"/>
<node CREATED="1501776132767" ID="ID_1853082326" MODIFIED="1557498707214" TEXT="treibt Diff-System"/>
</node>
<node CREATED="1501776157116" ID="ID_198311058" MODIFIED="1557498707214" TEXT="wie">
<node CREATED="1501776171290" ID="ID_1964256208" MODIFIED="1557498707214" TEXT="Diffs in Proc erzeugen"/>
<node CREATED="1501776183817" ID="ID_415789885" MODIFIED="1557498707214" TEXT="an UiNotification schicken">
<arrowlink COLOR="#9292a1" DESTINATION="ID_1578367045" ENDARROW="Default" ENDINCLINATION="45;-124;" ID="Arrow_ID_1265828105" STARTARROW="None" STARTINCLINATION="389;0;"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1501940591109" FOLDED="true" ID="ID_1925240675" MODIFIED="1567875602930" TEXT="#1099 DemoGuiRoundtrip">
<arrowlink COLOR="#e5e53f" DESTINATION="ID_1007296291" ENDARROW="Default" ENDINCLINATION="-931;34;" ID="Arrow_ID_1440938291" STARTARROW="None" STARTINCLINATION="-7;605;"/>
<linktarget COLOR="#64bf95" DESTINATION="ID_1925240675" ENDARROW="Default" ENDINCLINATION="-664;1183;" ID="Arrow_ID_1404986843" SOURCE="ID_504220515" STARTARROW="None" STARTINCLINATION="821;0;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1501940627280" ID="ID_1675066241" MODIFIED="1557498707214" TEXT="Dummy-Code im UI"/>
<node CREATED="1501940632871" ID="ID_189611570" MODIFIED="1557498707214" TEXT="Dummy Proc-Command"/>
<node CREATED="1501940639479" ID="ID_1314787910" MODIFIED="1557498707214" TEXT="komplettes Ping-Pong"/>
</node>
<node COLOR="#435e98" CREATED="1481320590214" FOLDED="true" ID="ID_635303062" MODIFIED="1679361254765" TEXT="#1042 DummySessionConnection">
<arrowlink COLOR="#f9b709" DESTINATION="ID_1343270939" ENDARROW="Default" ENDINCLINATION="-36;-73;" ID="Arrow_ID_1867016690" STARTARROW="None" STARTINCLINATION="-34;70;"/>
<arrowlink COLOR="#f9b709" DESTINATION="ID_330280074" ENDARROW="Default" ENDINCLINATION="-37;-88;" ID="Arrow_ID_779644313" STARTARROW="None" STARTINCLINATION="-34;70;"/>
<arrowlink COLOR="#f9b709" DESTINATION="ID_791449946" ENDARROW="Default" ENDINCLINATION="-842;-559;" ID="Arrow_ID_1347689482" STARTARROW="None" STARTINCLINATION="-81;124;"/>
<arrowlink COLOR="#f9b709" DESTINATION="ID_1478381189" ENDARROW="Default" ENDINCLINATION="-1009;-357;" ID="Arrow_ID_1072548081" STARTARROW="None" STARTINCLINATION="-87;103;"/>
<icon BUILTIN="idea"/>
<node CREATED="1481320639544" ID="ID_1440497947" MODIFIED="1557498707214" TEXT="Singleton"/>
<node CREATED="1481320642455" ID="ID_1938045938" MODIFIED="1557498707214" TEXT="hat fake Session content"/>
<node CREATED="1481320650486" ID="ID_155238526" MODIFIED="1557498707214" TEXT="bietet fake Commands"/>
<node CREATED="1481320666196" ID="ID_1580591981" MODIFIED="1557498707214" TEXT="plus zugeh&#xf6;rige Diagnostik"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1531419217662" FOLDED="true" ID="ID_1622732481" MODIFIED="1557498707214" TEXT="#1147 establish UI start-up sequence">
<icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1538839140096" ID="ID_1491571377" MODIFIED="1582486086563" TEXT="#1145 define startup sequence">
<icon BUILTIN="button_ok"/>
<node CREATED="1538839163477" ID="ID_840651927" MODIFIED="1557498707214" TEXT="&quot;eigentlich&quot; schon erledigt">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
<node CREATED="1538839170700" ID="ID_172497653" MODIFIED="1582486080773" STYLE="fork">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <b><font color="#288d6e">TODO</font></b>: Infos zusammentragen und dokumentieren
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1538839205056" ID="ID_1118716259" LINK="https://lumiera.org/documentation/design/architecture/Subsystems.html" MODIFIED="1582486123173" TEXT="Lumiera Website -- Design-Sektion">
<icon BUILTIN="info"/>
</node>
</node>
<node COLOR="#338800" CREATED="1531419242634" ID="ID_1022049727" MODIFIED="1679086735170" TEXT="Interfaces hochfahren">
<arrowlink COLOR="#effa97" DESTINATION="ID_687951877" ENDARROW="Default" ENDINCLINATION="-340;-552;" ID="Arrow_ID_1500281313" STARTARROW="None" STARTINCLINATION="-258;28;"/>
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1531419250684" ID="ID_1850773836" MODIFIED="1679086514847" TEXT="Verbindungsstrukturen installieren">
<arrowlink COLOR="#fee998" DESTINATION="ID_176564515" ENDARROW="Default" ENDINCLINATION="-1211;-7367;" ID="Arrow_ID_157207334" STARTARROW="None" STARTINCLINATION="-617;103;"/>
<icon BUILTIN="hourglass"/>
<icon BUILTIN="pencil"/>
<node CREATED="1679086518956" ID="ID_1318591888" MODIFIED="1679086523839" TEXT="Grundlagen gel&#xf6;st"/>
<node CREATED="1679086524571" ID="ID_579336411" MODIFIED="1679086528462" TEXT="funktioniert bereits"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1679086529266" ID="ID_1925113808" MODIFIED="1679086548056" TEXT="einige Problempunkte / Fallen sind zu kl&#xe4;ren">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1523746656723" ID="ID_1022913151" MODIFIED="1667166830055" TEXT="#1140 UI Integration Testing">
<arrowlink COLOR="#eff1e5" DESTINATION="ID_435582808" ENDARROW="Default" ENDINCLINATION="-1920;189;" ID="Arrow_ID_1348453991" STARTARROW="None" STARTINCLINATION="498;45;"/>
<arrowlink COLOR="#eff1e5" DESTINATION="ID_406286329" ENDARROW="Default" ENDINCLINATION="-2304;344;" ID="Arrow_ID_1832343822" STARTARROW="None" STARTINCLINATION="498;45;"/>
<icon BUILTIN="hourglass"/>
</node>
</node>
<node CREATED="1538938685096" HGAP="138" ID="ID_511824194" MODIFIED="1679362063142" TEXT="gr&#xfc;nden" VSHIFT="42">
<font NAME="SansSerif" SIZE="17"/>
<icon BUILTIN="yes"/>
<icon BUILTIN="hourglass"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1477784793993" FOLDED="true" ID="ID_1868522177" MODIFIED="1679362320127" TEXT="Umbau">
<linktarget COLOR="#30bc74" DESTINATION="ID_1868522177" ENDARROW="Default" ENDINCLINATION="374;490;" ID="Arrow_ID_600425644" SOURCE="ID_707273464" STARTARROW="None" STARTINCLINATION="2009;200;"/>
<icon BUILTIN="hourglass"/>
<node COLOR="#338800" CREATED="1477784813895" ID="ID_1343270939" MODIFIED="1679362316058" TEXT="Model durch UI-Bus ersetzen">
<linktarget COLOR="#f9b709" DESTINATION="ID_1343270939" ENDARROW="Default" ENDINCLINATION="-36;-73;" ID="Arrow_ID_1867016690" SOURCE="ID_635303062" STARTARROW="None" STARTINCLINATION="-34;70;"/>
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1343270939" ENDARROW="Default" ENDINCLINATION="-197;638;" ID="Arrow_ID_1686519160" SOURCE="ID_202253849" STARTARROW="Default" STARTINCLINATION="-83;-1020;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1481320683706" FOLDED="true" ID="ID_1226263415" MODIFIED="1557498707215" TEXT="kl&#xe4;ren, wo der Bus aufgeh&#xe4;ngt wird">
<icon BUILTIN="button_ok"/>
<node CREATED="1481331063782" ID="ID_1606852933" MODIFIED="1557498707215" TEXT="Lifecycle-Frontend UI-Bus"/>
<node CREATED="1481331150275" ID="ID_814186655" MODIFIED="1557498707215" TEXT="CoreService als PImpl"/>
<node CREATED="1481333616753" ID="ID_709873899" MODIFIED="1557498707215" TEXT="Nexus ist Teil von CoreService"/>
<node CREATED="1481335769192" ID="ID_1335469664" MODIFIED="1557498707215" TEXT="Interface-Manager gleicherma&#xdf;en"/>
</node>
<node COLOR="#338800" CREATED="1481320693912" FOLDED="true" ID="ID_918908848" MODIFIED="1576282358165" TEXT="Lebenszyklus kl&#xe4;ren">
<icon BUILTIN="button_ok"/>
<node CREATED="1481332855167" ID="ID_362694314" MODIFIED="1557498707215">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <font color="#cf1445">AUA</font>: Henne oder Ei?
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1481332888362" ID="ID_85978592" MODIFIED="1576282358165" TEXT="Nexus braucht CoreService braucht Nexus...">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      denn:
    </p>
    <ul>
      <li>
        Nexus verwendet CoreService als &quot;upstream&quot;, um <i>alle sonstigen Nachriten</i>&#160;dorthin zuzustellen
      </li>
      <li>
        CoreService hat Nexus als Upstream, um mit dem restlichen System kommunizieren zu k&#246;nnen
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
<node CREATED="1481332999091" ID="ID_1793743943" MODIFIED="1557498707215" TEXT="Problem ist: ich wollte Nexus nicht speziell konstruieren"/>
<node CREATED="1481338218216" ID="ID_128336616" MODIFIED="1557498707215" TEXT="L&#xf6;sung">
<icon BUILTIN="button_ok"/>
<node CREATED="1481338222672" ID="ID_318056010" MODIFIED="1576282358165" TEXT="Bus-Term greift tats&#xe4;chlich nicht auf Uplink zu">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      gemeint ist: im ctor
    </p>
    <p>
      Es speichert nur die Referenz
    </p>
    <p>
      
    </p>
    <p>
      Ganz anders Model::Tangible: dieses registriert sich bei der Konstruktion
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1481338237550" ID="ID_781727426" MODIFIED="1557498707215" TEXT="kann also eine Referenz auf lokalen Speicher reinreichen"/>
<node CREATED="1481338295614" ID="ID_1811061645" MODIFIED="1576282358164" TEXT="Folglich mu&#xdf; Nexus lokal in CoreServices angesiedelt werden">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      oder anders herum,
    </p>
    <p>
      aber so herum macht es mehr Sinn
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="forward"/>
</node>
</node>
</node>
<node CREATED="1481335696027" ID="ID_785830602" MODIFIED="1557498707215" TEXT="Lebenszyklus generell unsauber">
<node CREATED="1481335709297" ID="ID_1340554881" MODIFIED="1557498707215" TEXT="Ticket #1048"/>
<node CREATED="1481335723887" ID="ID_689818706" MODIFIED="1557498707215" TEXT="GtkLumiera ist ein Singleton">
<icon BUILTIN="stop-sign"/>
</node>
<node CREATED="1481335735901" ID="ID_185489405" MODIFIED="1557498707215" TEXT="das lebt so viel zu lange">
<icon BUILTIN="smily_bad"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1481338348143" ID="ID_713195335" MODIFIED="1557498707215" TEXT="Entscheidung">
<icon BUILTIN="yes"/>
<node CREATED="1481338354702" ID="ID_1755264056" MODIFIED="1557498707215" TEXT="CoreServices ist das Lebenszyklus-PImpl"/>
<node CREATED="1481338363965" ID="ID_1656280824" MODIFIED="1557498707215" TEXT="wenn geschlossen, mu&#xdf; das ganze &#xfc;brige GUI schon tot sein"/>
<node CREATED="1481338393113" ID="ID_1854005469" MODIFIED="1557498707215" TEXT="Warn-Log hierf&#xfc;r eingebaut">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1481338408983" ID="ID_516483369" MODIFIED="1557498707215" TEXT="k&#xf6;nnte sp&#xe4;ter sogar eine Exception sein">
<icon BUILTIN="help"/>
</node>
<node CREATED="1484871442777" ID="ID_492545805" MODIFIED="1576282358164">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      CoreService hat <i>keine volle</i>&#160;Bus-Connection
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...das hab ich mir jetzt explizit so &#252;berlegt und es ist sinnvoll.
    </p>
    <p>
      Nur ein Tangible kann eine volle Bus-Connection haben, und das hei&#223;t,
    </p>
    <p>
      es kann downlink-Nachrichten bekommen. Dagegen hat CoreService lediglich ein &quot;freistehendes&quot;
    </p>
    <p>
      BusTerm, das damit Nachrichten an den Nexus schicken kann.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1481320699056" FOLDED="true" ID="ID_728332859" MODIFIED="1557498707216" TEXT="wo kommen die CoreServices hin?">
<icon BUILTIN="button_ok"/>
<node CREATED="1481338456152" ID="ID_266095129" MODIFIED="1557498707216" TEXT="sie leben im Objekt Ui-Bus"/>
<node CREATED="1481338465823" ID="ID_78520725" MODIFIED="1557498707216" TEXT="und zwar als PImpl"/>
<node CREATED="1481338478069" ID="ID_406101846" MODIFIED="1557498707216" TEXT="und UI-Bus lebt im lokalen scope von GtkLumiera::main()"/>
</node>
<node COLOR="#338800" CREATED="1481320759472" ID="ID_687951877" MODIFIED="1557498707216" TEXT="Interfaces &#xf6;ffnen">
<linktarget COLOR="#effa97" DESTINATION="ID_687951877" ENDARROW="Default" ENDINCLINATION="-340;-552;" ID="Arrow_ID_1500281313" SOURCE="ID_1022049727" STARTARROW="None" STARTINCLINATION="-258;28;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1481320765135" FOLDED="true" ID="ID_379585622" MODIFIED="1576282358163">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      UI: <b>GuiNotification</b>
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#51517b" DESTINATION="ID_379585622" ENDARROW="Default" ENDINCLINATION="-476;439;" ID="Arrow_ID_1616528570" SOURCE="ID_1324099152" STARTARROW="Default" STARTINCLINATION="-541;0;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1484792679322" HGAP="13" ID="ID_426218722" MODIFIED="1576282358163" TEXT="#1047 preliminary definition of GuiNotification facade" VSHIFT="-3">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      4/18 inzwischen hier alles gekl&#228;rt.
    </p>
    <p>
      Wartet nur noch auf proof-of-concept (DemoGuiRoundtrip)
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1493753178082" ID="ID_152757560" MODIFIED="1576282358163" TEXT="grunds&#xe4;tzliche Architektur gekl&#xe4;rt">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...h&#228;ngt am UI-Bus,
    </p>
    <p>
      aber nur via einfacher &quot;uplink&quot;-Verbindung
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1493753215852" ID="ID_1971120" MODIFIED="1557498707216" TEXT="gekl&#xe4;rt: wie kann man Shutdown implementieren">
<icon BUILTIN="help"/>
</node>
<node COLOR="#338800" CREATED="1493753249399" ID="ID_575609638" MODIFIED="1557498707216" TEXT="gekl&#xe4;rt: #1098 hand-Over in UI-Thread">
<icon BUILTIN="help"/>
</node>
<node COLOR="#338800" CREATED="1501776210069" ID="ID_228920906" MODIFIED="1557498707216" TEXT="gekl&#xe4;rt: konkrete Diff-Nachrichten">
<icon BUILTIN="help"/>
</node>
</node>
<node COLOR="#5c1010" CREATED="1501776256263" HGAP="21" ID="ID_1196529588" MODIFIED="1557498707216" TEXT="Bedeutung" VSHIFT="-11">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1501776296394" ID="ID_1578367045" MODIFIED="1557498707216" TEXT="R&#xfc;ckpfad Proc -&gt; UI">
<linktarget COLOR="#9292a1" DESTINATION="ID_1578367045" ENDARROW="Default" ENDINCLINATION="45;-124;" ID="Arrow_ID_1265828105" SOURCE="ID_415789885" STARTARROW="None" STARTINCLINATION="389;0;"/>
</node>
<node CREATED="1501776305305" ID="ID_1193603370" MODIFIED="1557498707216" TEXT="Abstraktion des GUI"/>
<node CREATED="1501776319543" ID="ID_641656399" MODIFIED="1557498707216">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Sicht <i>&quot;von unten&quot;</i>
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1538267608198" HGAP="39" ID="ID_181594780" MODIFIED="1561827464527" TEXT="pa&#xdf;t der Name" VSHIFT="21">
<icon BUILTIN="help"/>
<node COLOR="#435e98" CREATED="1533915343891" ID="ID_1650034681" MODIFIED="1538267897031" TEXT="&#xdc;berlegungen">
<icon BUILTIN="info"/>
<node CREATED="1533915353434" ID="ID_1231213592" MODIFIED="1533915424732" TEXT="ist mehr als &quot;notification&quot;?">
<icon BUILTIN="button_cancel"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1533915365545" ID="ID_892577975" MODIFIED="1538267801552" TEXT="ja -- aber vorerst nicht relevant">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1533915439279" ID="ID_285136109" MODIFIED="1533915452025" TEXT="Notification auf Architektur-Level"/>
</node>
<node CREATED="1533915371872" ID="ID_1003239787" MODIFIED="1533915380406" TEXT="GuiFeedback?">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1533915407171" ID="ID_728064464" MODIFIED="1533915412457" TEXT="GuiReaction">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1538263882239" ID="ID_1273122422" MODIFIED="1538263888584" TEXT="GuiResponse">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1533915454893" ID="ID_877610316" MODIFIED="1538267861452" TEXT="GuiNotification ist nicht schlecht">
<icon BUILTIN="yes"/>
<node CREATED="1533915472186" ID="ID_1748932158" MODIFIED="1533915479325" TEXT="GuiFeedback w&#xfc;rde auch gehen"/>
<node CREATED="1533915480649" ID="ID_846895155" MODIFIED="1533915485628" TEXT="aber klingt nicht so sch&#xf6;n"/>
<node CREATED="1533915486336" ID="ID_627537189" MODIFIED="1576282358162" TEXT="und ist doppeldeutig">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...es k&#246;nnte auch den Feedback des Users meinen
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1538267874378" ID="ID_1732454504" MODIFIED="1538267888571" TEXT="Umbenennen in GuiResponse">
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
<node CREATED="1484877839299" HGAP="33" ID="ID_957622878" MODIFIED="1557498707216" TEXT="Asynchrones Protokoll">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1484877856640" ID="ID_1256835676" MODIFIED="1557498707216" TEXT="bedenke: alle Aktionen m&#xfc;ssen in den Event-Thread"/>
<node CREATED="1484877868015" ID="ID_1612427727" MODIFIED="1557498707216" TEXT="&#xfc;ber die Rolle des GUI-Modells nachdenken!"/>
</node>
<node COLOR="#338800" CREATED="1481502305995" FOLDED="true" HGAP="33" ID="ID_1943234904" MODIFIED="1557498707216" TEXT="direkt vom UiManager betrieben" VSHIFT="-3">
<icon BUILTIN="button_ok"/>
<node CREATED="1481502320065" HGAP="-23" ID="ID_1298358905" MODIFIED="1557498707216" TEXT="bisher vom GuiRunner betrieben" VSHIFT="-26">
<icon BUILTIN="info"/>
<node CREATED="1481502327528" ID="ID_75293128" MODIFIED="1576282358162" TEXT="das ist ohnehin schlecht">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...weil es dadurch passieren k&#246;nnte,
    </p>
    <p>
      da&#223; die Konstruktion des GuiRunners schon scheitert, bevor der Rumpf des ctors aufgerufen wird.
    </p>
    <p>
      In einem solchen Fall wird leider auch der Rumpf des dtors nicht aufgerufen, wodurch das
    </p>
    <p>
      Term-Signal nicht ausgesendet w&#252;rde.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1481502335583" ID="ID_1245191241" MODIFIED="1557498707216" TEXT="Felder im GuiRunner sollten noexcept sein">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1484793048273" ID="ID_66499328" MODIFIED="1557498707216" TEXT="verschoben">
<arrowlink COLOR="#4072ad" DESTINATION="ID_1019455888" ENDARROW="Default" ENDINCLINATION="6;-96;" ID="Arrow_ID_693735378" STARTARROW="None" STARTINCLINATION="-105;33;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1484793113472" ID="ID_221612387" MODIFIED="1557498707216" TEXT="Lebenszyklus nochmal pr&#xfc;fen">
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1484797253856" ID="ID_226245696" MODIFIED="1575131660805" TEXT="GUI start sauber">
<linktarget COLOR="#77c1c5" DESTINATION="ID_226245696" ENDARROW="Default" ENDINCLINATION="-1683;73;" ID="Arrow_ID_532646791" SOURCE="ID_1843835835" STARTARROW="None" STARTINCLINATION="2799;341;"/>
<icon BUILTIN="broken-line"/>
<node CREATED="1484797307376" FOLDED="true" ID="ID_842106541" MODIFIED="1582493802070" TEXT="Abfolge">
<icon BUILTIN="info"/>
<node CREATED="1484797311008" ID="ID_424744338" MODIFIED="1557498707216" TEXT="GuiFacade::start"/>
<node CREATED="1484797337516" ID="ID_750979034" MODIFIED="1557498707216" TEXT="erzeugt unique_ptr&lt;GuiRunner&gt;"/>
<node CREATED="1484797370352" ID="ID_622906815" MODIFIED="1557498707216" TEXT="dieser hat GuiHandle als member">
<node CREATED="1484797379239" ID="ID_1948690926" MODIFIED="1557498707216" TEXT="l&#xe4;d Plugin"/>
<node CREATED="1484797399756" ID="ID_1084903350" MODIFIED="1557498707216" TEXT="ruft im ctor launchUi()"/>
</node>
<node CREATED="1484797429160" ID="ID_959278184" MODIFIED="1557498707216" TEXT="gtk-lumiera.cpp">
<node CREATED="1484797432999" ID="ID_1571358017" MODIFIED="1557498707216" TEXT="implementiert GUI-Plugin"/>
<node CREATED="1484797442686" ID="ID_83446606" MODIFIED="1557498707216" TEXT="launchUI -&gt; erzeugt GUI-Thread"/>
</node>
<node CREATED="1484797483865" ID="ID_159090609" MODIFIED="1557498707216" TEXT="GuiThread (==runGUI())">
<node CREATED="1484797502462" ID="ID_21819368" MODIFIED="1557498707216" TEXT="erzeugt GtkLumiera"/>
<node CREATED="1484797512341" ID="ID_57994807" MODIFIED="1557498707216" TEXT="ruft darauf run()">
<node CREATED="1501854771820" FOLDED="true" ID="ID_1849270384" MODIFIED="1582493797614" TEXT="erzeugt UI-Backbone">
<arrowlink COLOR="#577ca7" DESTINATION="ID_1734603717" ENDARROW="Default" ENDINCLINATION="-18;-71;" ID="Arrow_ID_1972220174" STARTARROW="None" STARTINCLINATION="-130;2;"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1544238872425" HGAP="71" ID="ID_478753729" MODIFIED="1557498707216" TEXT="hier kann ein ungesch&#xfc;tzter Fehler passieren" VSHIFT="-58">
<linktarget COLOR="#e02825" DESTINATION="ID_478753729" ENDARROW="Default" ENDINCLINATION="-3550;0;" ID="Arrow_ID_840138296" SOURCE="ID_1795051800" STARTARROW="None" STARTINCLINATION="-69;-346;"/>
<linktarget COLOR="#e02825" DESTINATION="ID_478753729" ENDARROW="Default" ENDINCLINATION="-3550;0;" ID="Arrow_ID_390741072" SOURCE="ID_138383314" STARTARROW="None" STARTINCLINATION="-1804;756;"/>
<icon BUILTIN="broken-line"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1544240822252" ID="ID_540724043" MODIFIED="1582493672224" TEXT="#1192 Lumiera hangs on failed GUI start">
<linktarget COLOR="#f12a42" DESTINATION="ID_540724043" ENDARROW="Default" ENDINCLINATION="-942;0;" ID="Arrow_ID_893876754" SOURCE="ID_14952077" STARTARROW="None" STARTINCLINATION="864;64;"/>
<icon BUILTIN="flag-yellow"/>
</node>
<node CREATED="1582493512018" ID="ID_1430216839" MODIFIED="1582493518909" TEXT="Problem definitiv noch nicht gel&#xf6;st"/>
<node CREATED="1582493520113" ID="ID_598389416" MODIFIED="1582493535283" TEXT="betrifft auch Fehler im ctor vom UI-Bus und UiManager">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1582493537671" ID="ID_1292210413" MODIFIED="1582493550078" TEXT="out of Memory!">
<icon BUILTIN="clanbomber"/>
</node>
</node>
</node>
</node>
<node CREATED="1484797517052" ID="ID_840628023" MODIFIED="1557498707216" TEXT="l&#xf6;st das sigTerm aus"/>
</node>
</node>
<node CREATED="1484797531482" HGAP="104" ID="ID_1734603717" MODIFIED="1557498707216" TEXT="GtkLumiera::run()" VSHIFT="26">
<linktarget COLOR="#577ca7" DESTINATION="ID_1734603717" ENDARROW="Default" ENDINCLINATION="-18;-71;" ID="Arrow_ID_1972220174" SOURCE="ID_1849270384" STARTARROW="None" STARTINCLINATION="-130;2;"/>
<node CREATED="1484797543593" HGAP="-5" ID="ID_143907787" MODIFIED="1557498707216" TEXT="erzeugt UiBus" VSHIFT="-19">
<arrowlink COLOR="#74869a" DESTINATION="ID_1916035717" ENDARROW="Default" ENDINCLINATION="-84;2;" ID="Arrow_ID_355694260" STARTARROW="None" STARTINCLINATION="0;49;"/>
</node>
<node CREATED="1501855022131" ID="ID_1152163957" MODIFIED="1557498707216" TEXT="erzeugt UiManager">
<node CREATED="1501855161616" ID="ID_1916035717" MODIFIED="1557498707216" TEXT="verdrahtet mit UiBus">
<linktarget COLOR="#74869a" DESTINATION="ID_1916035717" ENDARROW="Default" ENDINCLINATION="-84;2;" ID="Arrow_ID_355694260" SOURCE="ID_143907787" STARTARROW="None" STARTINCLINATION="0;49;"/>
</node>
<node CREATED="1501855107127" FOLDED="true" ID="ID_135398487" MODIFIED="1561827483823" TEXT="erzeugt GlobalCtx">
<node CREATED="1501855278529" ID="ID_1800772710" MODIFIED="1518487921042" TEXT="UiBus&amp;"/>
<node CREATED="1501855278529" ID="ID_146051630" MODIFIED="1518487921042" TEXT="UiManager&amp;"/>
<node CREATED="1501855278529" ID="ID_217835618" MODIFIED="1518487921042" TEXT="WindowLocator"/>
<node CREATED="1501855278529" ID="ID_1549587580" MODIFIED="1518487921042" TEXT="InteractionDirector"/>
<node CREATED="1501855278529" ID="ID_1835031486" MODIFIED="1518487921042" TEXT="interact::Wizard"/>
</node>
<node CREATED="1501855218496" ID="ID_958941481" MODIFIED="1557498707216" TEXT="bindet Men&#xfc;-Actions"/>
</node>
<node CREATED="1501855040016" ID="ID_1016475327" MODIFIED="1557498707216" TEXT="erstellt Hautpfenster"/>
<node CREATED="1501855050087" ID="ID_1167747758" MODIFIED="1557498707216" TEXT="startet Event-Loop">
<node CREATED="1501855083654" ID="ID_207237338" MODIFIED="1557498707216" TEXT="uiManager.performMainLoop()"/>
<node CREATED="1538264133989" FOLDED="true" ID="ID_310550142" MODIFIED="1561827483824" TEXT="installiert fa&#xe7;ade-Interfaces">
<node CREATED="1484797620495" ID="ID_1710248767" MODIFIED="1557498707216" TEXT="NotificationService"/>
<node CREATED="1538264160993" ID="ID_1729118785" MODIFIED="1557498707216" TEXT="DisplayService"/>
</node>
<node CREATED="1484797557383" ID="ID_637078214" MODIFIED="1557498707216" TEXT="Gtk-Kit::run()"/>
</node>
</node>
<node CREATED="1484797573701" ID="ID_162958920" MODIFIED="1557498707216" TEXT="UiBus">
<node CREATED="1484797576972" ID="ID_1159570219" MODIFIED="1557498707216" TEXT="erzeugt CoreService">
<node CREATED="1484871312594" ID="ID_1351400025" MODIFIED="1557498707216" TEXT="erbt zwar von BusTerm"/>
<node CREATED="1484871321473" ID="ID_112216780" MODIFIED="1576282358161" TEXT="hat aber keine connection">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      gemeint ist: keine volle bidirektionale Connection,
    </p>
    <p>
      denn CoreService ist kein Tangible. Das macht Sinn so, habe dar&#252;ber nachgedacht.
    </p>
    <p>
      
    </p>
    <p>
      Anmerkung: ein &quot;frestehendes&quot; BusTerm ist valide und zugelassen, es hat halt nur eine uplink-Connection.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1484871556194" ID="ID_1978811406" MODIFIED="1576282358161" TEXT="macht Sinn so">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      nur ein Tangible kann downlink-Nachrichten sinnvoll empfangen;
    </p>
    <p>
      es mu&#223; dazu auch jede Menge Methoden implementieren.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1484797584483" FOLDED="true" ID="ID_1316050570" MODIFIED="1561827483824" TEXT="dieser hat Member ">
<node CREATED="1484797623574" ID="ID_1754670675" MODIFIED="1557498707216" TEXT="Nexus"/>
<node CREATED="1538264091954" ID="ID_1287413267" MODIFIED="1557498707216" TEXT="StateManager"/>
</node>
</node>
</node>
</node>
<node CREATED="1501857011825" FOLDED="true" ID="ID_1201296805" MODIFIED="1582493803650" TEXT="Synchronisation">
<icon BUILTIN="info"/>
<node CREATED="1501857019737" ID="ID_1981037750" MODIFIED="1557498707216" TEXT="GuiSubsysDescriptor">
<node CREATED="1501857031391" ID="ID_1576806105" MODIFIED="1557498707216" TEXT="start h&#xe4;lt Lock">
<arrowlink COLOR="#31be34" DESTINATION="ID_1470293650" ENDARROW="Default" ENDINCLINATION="14;-46;" ID="Arrow_ID_681325673" STARTARROW="None" STARTINCLINATION="-84;0;"/>
</node>
<node CREATED="1501857073041" ID="ID_1936840706" MODIFIED="1557498707216" TEXT="erzeugt GuiRunner"/>
<node CREATED="1501857054324" ID="ID_907543967" MODIFIED="1557498707216" TEXT="reset facade-Pointer">
<linktarget COLOR="#4fa071" DESTINATION="ID_907543967" ENDARROW="Default" ENDINCLINATION="191;11;" ID="Arrow_ID_249160033" SOURCE="ID_1335129961" STARTARROW="None" STARTINCLINATION="134;-11;"/>
</node>
</node>
<node CREATED="1501857081496" ID="ID_1470293650" MODIFIED="1557498707216" TEXT="GuiRunner-ctor">
<linktarget COLOR="#31be34" DESTINATION="ID_1470293650" ENDARROW="Default" ENDINCLINATION="14;-46;" ID="Arrow_ID_681325673" SOURCE="ID_1576806105" STARTARROW="None" STARTINCLINATION="-84;0;"/>
<node CREATED="1501857138848" ID="ID_1487509134" MODIFIED="1557498707216" TEXT="l&#xe4;d Gui-Plugin"/>
<node CREATED="1501857152263" ID="ID_521610150" MODIFIED="1557498707216" TEXT="triggert auf diesem launchUI"/>
</node>
<node CREATED="1501857292596" ID="ID_453282087" MODIFIED="1557498707216" TEXT="Gui-Plugin-launchUI">
<node CREATED="1501857310890" ID="ID_1249679018" MODIFIED="1557498707216" TEXT="erzeugt UI-Thread"/>
<node CREATED="1501857327592" ID="ID_1036948610" MODIFIED="1557498707216" TEXT="dieser bindet an runGUI"/>
</node>
<node CREATED="1501857358387" ID="ID_807727617" MODIFIED="1557498707216" TEXT="runGUI">
<node CREATED="1501857365394" ID="ID_509238853" MODIFIED="1557498707217" TEXT="erzeugt GtkLumiera"/>
<node CREATED="1501857382808" ID="ID_1737939783" MODIFIED="1557498707217" TEXT="ruft darauf run() auf"/>
<node COLOR="#3f9476" CREATED="1501857391335" ID="ID_1248703286" MODIFIED="1557498707217" TEXT="nicht weiter synchronisiert">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
<node CREATED="1501857518526" ID="ID_837968815" MODIFIED="1557498707217" TEXT="Ende runGUI">
<node CREATED="1501857542075" ID="ID_767030758" MODIFIED="1557498707217" TEXT="aktiviert Term-Signal"/>
<node CREATED="1501857548922" ID="ID_1335129961" MODIFIED="1557498707217" TEXT="Lock auf GuiSubsysDescriptor">
<arrowlink COLOR="#4fa071" DESTINATION="ID_907543967" ENDARROW="Default" ENDINCLINATION="191;11;" ID="Arrow_ID_249160033" STARTARROW="None" STARTINCLINATION="134;-11;"/>
</node>
</node>
</node>
<node CREATED="1501857640582" ID="ID_1028796039" MODIFIED="1557498707217" TEXT="nach dem Subsys-Start">
<node CREATED="1501857649532" ID="ID_1041981988" MODIFIED="1557498707217" TEXT="l&#xe4;uft der UI-Thread">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1501857657707" ID="ID_35727639" MODIFIED="1557498707217">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      GtkLumiera <i>in Konstruktion</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1501857681920" ID="ID_473453255" MODIFIED="1557498707217">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      NotificationFacade <b>noch nicht offen</b>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1501857705277" ID="ID_1642619932" MODIFIED="1557498707217" TEXT="zuverl&#xe4;ssig">
<icon BUILTIN="idea"/>
<node CREATED="1501857709325" ID="ID_1889612043" MODIFIED="1557498707217" TEXT="entweder Start geht durch"/>
<node CREATED="1501857714988" ID="ID_158695659" MODIFIED="1557498707217" TEXT="oder scheitert und aktiviert Term-Signal"/>
</node>
</node>
<node CREATED="1501857864240" ID="ID_1721447002" MODIFIED="1557498707217" TEXT="UI-Bus">
<node CREATED="1501857867935" ID="ID_1896700254" MODIFIED="1557498707217" TEXT="Nexus vorhanden"/>
<node CREATED="1501857873711" ID="ID_1994626464" MODIFIED="1557498707217" TEXT="CoreService konstruiert"/>
<node CREATED="1501857903891" ID="ID_791583661" MODIFIED="1557498707217" TEXT="aber">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1501857907682" ID="ID_881624439" MODIFIED="1557498707217" TEXT="GTK_Loop mu&#xdf; (noch) nicht laufen"/>
<node CREATED="1501857924928" ID="ID_1224004206" MODIFIED="1557498707217" TEXT="InteractionDirector mu&#xdf; (noch) nicht connected sein"/>
</node>
</node>
<node CREATED="1501858109615" ID="ID_747885327" MODIFIED="1557498707217" TEXT="UI-Facaden">
<node COLOR="#435e98" CREATED="1501858114023" ID="ID_749414376" MODIFIED="1582487948670">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      m&#252;ssen <b>eigens</b>&#160;aktiviert werden
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#5365b7" DESTINATION="ID_749414376" ENDARROW="Default" ENDINCLINATION="-480;-31;" ID="Arrow_ID_1567070366" SOURCE="ID_99706930" STARTARROW="None" STARTINCLINATION="295;-51;"/>
<icon BUILTIN="yes"/>
<node CREATED="1501859757091" ID="ID_1507399957" MODIFIED="1557498707217" TEXT="eigenen Callback schaffen"/>
<node CREATED="1501859763155" ID="ID_428809729" MODIFIED="1557498707217" TEXT="generische Komponente schaffen?"/>
<node CREATED="1538264423814" ID="ID_647239893" MODIFIED="1557498707217" TEXT="gel&#xf6;st durch Instantiieren des Facade-RAII-Objektes"/>
</node>
<node CREATED="1501858134796" ID="ID_1622427478" MODIFIED="1557498707217" TEXT="nachdem die UI-Loop l&#xe4;uft">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1538264444419" ID="ID_1493499325" MODIFIED="1557498707217" TEXT="hier wechselseitige Abh&#xe4;ngigkeit">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1538264482902" ID="ID_838939814" MODIFIED="1557498707217" TEXT="Instantiiiere gui::ctrl::Facade im Stack-Frame von UiManager::performMainLoop()"/>
<node CREATED="1538264545797" ID="ID_1760435858" MODIFIED="1576282358160" TEXT="Synchronisation qua Dispatch">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      zwar sind die Fasaden offen, bevor die Main-Loop l&#228;uft,
    </p>
    <p>
      jedoch werden genau durch diese Fasaden alle Aktionen per Dispatch
    </p>
    <p>
      in die GTK-Loop &#252;bertragen. Und das kann nur <i>in der Loop selber</i>&#160; passieren.
    </p>
    <p>
      Ein zu fr&#252;her bzw. zu sp&#228;ter Aufruf <i>&quot;f&#228;llt einfach hinten runter&quot;</i>
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1582493579819" ID="ID_387023352" MODIFIED="1582493593279" TEXT="Fazit: noch nicht ganz">
<icon BUILTIN="bell"/>
<node CREATED="1582493598679" ID="ID_14952077" MODIFIED="1582493672224" TEXT="es gibt einen Race im Start-up (#1192)">
<arrowlink COLOR="#f12a42" DESTINATION="ID_540724043" ENDARROW="Default" ENDINCLINATION="-942;0;" ID="Arrow_ID_893876754" STARTARROW="None" STARTINCLINATION="864;64;"/>
</node>
<node CREATED="1582493675037" ID="ID_974783388" MODIFIED="1582493696790" TEXT="zus&#xe4;tzlich gibt es die L&#xfc;cke mit der noch nicht ge&#xf6;ffneten Facade">
<arrowlink COLOR="#d68361" DESTINATION="ID_590420902" ENDARROW="Default" ENDINCLINATION="314;0;" ID="Arrow_ID_1471960575" STARTARROW="None" STARTINCLINATION="109;5;"/>
<node COLOR="#ab7a47" CREATED="1617458903748" HGAP="36" ID="ID_603424020" MODIFIED="1617459170807" TEXT="unwahrscheinlich aber besteht weiterhin" VSHIFT="-1">
<edge COLOR="#b28c66"/>
</node>
</node>
<node CREATED="1582493784351" ID="ID_548491726" MODIFIED="1582493794113" TEXT="sonst ist die Synchronisation sauber">
<icon BUILTIN="idea"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1582493698042" ID="ID_306435149" MODIFIED="1582493720146" TEXT="trotzdem vertagt; sollte Subsystem-Runner &#xfc;berarbeiten">
<icon BUILTIN="hourglass"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1582493761032" ID="ID_117656877" LINK="https://issues.lumiera.org/ticket/1177" MODIFIED="1582493774585" TEXT=" #1177 Subsytem-Runner design rework ">
<icon BUILTIN="flag-yellow"/>
</node>
<node COLOR="#435e98" CREATED="1617459426438" ID="ID_1892682204" MODIFIED="1617459482615">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      verbleibende Probleme sind <i>&quot;marginal&quot;</i>&#160;und besser im Subsystem-Runner zu addressieren
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1484871163902" ID="ID_274722396" MODIFIED="1557498707217" TEXT="closeGuiModule (PImpl) hat Lock">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1484871188635" ID="ID_1922412139" MODIFIED="1557498707217" TEXT="Storage/Lebenzyklus des Term-Funktors (jetzt) OK">
<arrowlink COLOR="#68b4bb" DESTINATION="ID_375871642" ENDARROW="Default" ENDINCLINATION="-300;-60;" ID="Arrow_ID_896120556" STARTARROW="None" STARTINCLINATION="495;28;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1484793022924" HGAP="100" ID="ID_1019455888" MODIFIED="1557498707217" TEXT="neuer Facade-Kontext" VSHIFT="2">
<linktarget COLOR="#4072ad" DESTINATION="ID_1019455888" ENDARROW="Default" ENDINCLINATION="6;-96;" ID="Arrow_ID_693735378" SOURCE="ID_66499328" STARTARROW="None" STARTINCLINATION="-105;33;"/>
<icon BUILTIN="idea"/>
<node CREATED="1501866627055" ID="ID_1521184600" MODIFIED="1557498707217" TEXT="RAII-Stil"/>
<node CREATED="1501866591164" ID="ID_751026549" MODIFIED="1557498707217" TEXT="&#xf6;ffnet/schlie&#xdf;t die &#xf6;ffentlichen Interfaces"/>
</node>
<node COLOR="#7a2f10" CREATED="1481502251450" FOLDED="true" HGAP="96" ID="ID_1125529151" MODIFIED="1557498707217" TEXT="m&#xf6;glicher Race" VSHIFT="14">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1484797174890" ID="ID_986391148" MODIFIED="1557498707217" TEXT="triggerShutdown() kommt bevor GuiNotification offen ist">
<icon BUILTIN="info"/>
</node>
<node CREATED="1484797210597" ID="ID_1555304752" MODIFIED="1557498707217" TEXT="ist das &#xfc;berhaupt ein Problem">
<icon BUILTIN="help"/>
<node CREATED="1484797230051" ID="ID_590420902" MODIFIED="1557498707217" TEXT="ja, weil dann das GUI weiterl&#xe4;uft">
<linktarget COLOR="#d68361" DESTINATION="ID_590420902" ENDARROW="Default" ENDINCLINATION="314;0;" ID="Arrow_ID_1471960575" SOURCE="ID_974783388" STARTARROW="None" STARTINCLINATION="109;5;"/>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1501867017251" ID="ID_1980251688" MODIFIED="1557498707217" TEXT="...und der shutdown-Proze&#xdf; blockt"/>
</node>
<node CREATED="1481502257825" HGAP="24" ID="ID_232782099" MODIFIED="1576282358160" TEXT="Gefahr gering, aber gegeben" VSHIFT="11">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...weil unser Thread-Framework
    </p>
    <p>
      tats&#228;chlich <i>erzwingt,</i>&#160;da&#223; der neue Thrad zu laufen beginnt, bevor die
    </p>
    <p>
      startende Funktion zur&#252;ckkehrt.
    </p>
    <p>
      
    </p>
    <p>
      Daher k&#246;nnen wir zumindest annehmen, da&#223; die ganze Initialisierung
    </p>
    <p>
      bereits l&#228;uft, wenn die start()-Funktion mit true (Erfolg) zur&#252;ckkommt.
    </p>
    <p>
      
    </p>
    <p>
      Allerdings ist <i>definitiv</i>&#160;ein Race gegeben, und wenn
    </p>
    <p>
      direkt beim Starten anderer Subsysteme nach dem GUI etwas schiefl&#228;uft,
    </p>
    <p>
      dann kann der Shutdown-Proze&#223; den Start des GUI &#252;berholen.
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1484797646771" HGAP="38" ID="ID_1605520996" MODIFIED="1557498707217" TEXT="Ausgestaltung" VSHIFT="20">
<icon BUILTIN="button_ok"/>
<node CREATED="1501859455212" FOLDED="true" ID="ID_751494565" MODIFIED="1557498707217" TEXT="Lebenszyklus">
<icon BUILTIN="info"/>
<node COLOR="#435e98" CREATED="1484797663121" FOLDED="true" ID="ID_134980216" MODIFIED="1557498707217" TEXT="braucht Bus-Connection">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1484797863862" ID="ID_464230340" MODIFIED="1561827464529" TEXT="zum Controller machen?">
<icon BUILTIN="button_cancel"/>
<node CREATED="1484797872109" ID="ID_1877007933" MODIFIED="1518487921045" TEXT="Controller ist Tangible"/>
<node CREATED="1484797878364" ID="ID_93289471" MODIFIED="1518487921045" TEXT="hat damit automatisch BusTerm"/>
<node CREATED="1484799604429" ID="ID_1141687282" MODIFIED="1518487921045" TEXT="Design-Problem: sinnvolles Diff">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1484799625306" ID="ID_443020211" MODIFIED="1518487921045" TEXT="aus den Fingern saugen">
<icon BUILTIN="help"/>
</node>
<node CREATED="1484799634233" ID="ID_1600517820" MODIFIED="1518487921045" TEXT="nur implementation-reuse">
<icon BUILTIN="help"/>
</node>
<node CREATED="1484799675388" HGAP="29" ID="ID_228932182" MODIFIED="1518487921045" TEXT="Idee: Attribute?" VSHIFT="18">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1484876010871" ID="ID_175784507" MODIFIED="1576282358159" TEXT="Design-Problem: restliches Tangible-Protokoll">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      wirkt alles mehr oder weniger beliebig...
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1484875935505" ID="ID_1341415727" MODIFIED="1518487921046" TEXT="nein">
<icon BUILTIN="button_cancel"/>
</node>
</node>
<node COLOR="#338800" CREATED="1484875946312" ID="ID_271363232" MODIFIED="1561827464529" TEXT="ist ein BusTerm">
<icon BUILTIN="button_ok"/>
<node CREATED="1484875959342" ID="ID_1202046492" MODIFIED="1538268186367" TEXT="nur unidirektional zum Bus verbunden">
<icon BUILTIN="info"/>
</node>
<node CREATED="1484875968557" ID="ID_1406569407" MODIFIED="1518487921046" TEXT="ist hier genau angemessen">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1484875972588" ID="ID_1887863793" MODIFIED="1518487921046" TEXT="damit kann der Service mit dem UI reden">
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#338800" CREATED="1484799525344" FOLDED="true" ID="ID_640788614" MODIFIED="1561827464533" TEXT="mu&#xdf; sauber vom Nexus disconnecten">
<icon BUILTIN="button_ok"/>
<node COLOR="#ff0000" CREATED="1484799538686" ID="ID_1136883698" MODIFIED="1518487921046" TEXT="tut es nicht">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
<node CREATED="1484799551220" ID="ID_496503271" MODIFIED="1576282358158" TEXT="Fehlermeldung + Segfault">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      0000000937: ERR: core-service.hpp:111: worker_3: ~CoreService: Some UI components are still connected to the backbone.
    </p>
    <p>
      Speicherzugriffsfehler
    </p>
  </body>
</html></richcontent>
<node COLOR="#435e98" CREATED="1584932162467" ID="ID_813910229" MODIFIED="1584932190012" TEXT="inzwischen wohl gekl&#xe4;rt">
<icon BUILTIN="help"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1584932093080" ID="ID_1234616959" MODIFIED="1584932222621" TEXT="es gibt aber noch einen &#xe4;hnlichen Fehler....">
<arrowlink COLOR="#b183a2" DESTINATION="ID_535289114" ENDARROW="Default" ENDINCLINATION="-2880;0;" ID="Arrow_ID_1219325605" STARTARROW="None" STARTINCLINATION="1004;61;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1484800480472" ID="ID_1441013524" MODIFIED="1576282358158" TEXT="Sanity-Check in CoreService anpassen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...mu&#223; diejenigen Bus-Verbindungen abziehen, die von Members dieser Klasse stammen
    </p>
    <ul>
      <li>
        CoreService selber
      </li>
      <li>
        der NotificationService
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1484802745625" ID="ID_375871642" MODIFIED="1561827464537" TEXT="Heisenbug">
<linktarget COLOR="#68b4bb" DESTINATION="ID_375871642" ENDARROW="Default" ENDINCLINATION="-300;-60;" ID="Arrow_ID_896120556" SOURCE="ID_1922412139" STARTARROW="None" STARTINCLINATION="495;28;"/>
<icon BUILTIN="smily_bad"/>
<node CREATED="1484802752728" ID="ID_634426848" MODIFIED="1518487921046" TEXT="passiert beim Aufruf des TerminationHandle"/>
<node CREATED="1484802766966" ID="ID_370736554" MODIFIED="1518487921046">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      wenn ich per Value capture, dann gibts schon
    </p>
    <p>
      beim Start des GUI einen SEGFAULT
    </p>
    <p>
      
    </p>
    <p>
      Und noch schlimmer: im Debugger gibts keinen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#c80e33" CREATED="1484862058589" ID="ID_1640490030" MODIFIED="1533608413516" TEXT="Locking">
<icon BUILTIN="help"/>
<node COLOR="#338800" CREATED="1484865203945" ID="ID_1990023724" MODIFIED="1518487921046" TEXT="Locking in der GuiFacade ist korrekt">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1484865231878" ID="ID_1054093321" MODIFIED="1518487921046" TEXT="im Gui-Thread kein Locking notwendig"/>
<node CREATED="1484865243724" ID="ID_617730067" MODIFIED="1518487921046" TEXT="HA! das Lambda vom Threadstart">
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#338800" CREATED="1484865278999" ID="ID_1656236909" MODIFIED="1533608413518" TEXT="aufgekl&#xe4;rt">
<icon BUILTIN="button_ok"/>
<node CREATED="1484865298093" ID="ID_1797078596" MODIFIED="1518487921046">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      die <i>Closure</i>&#160;eines Lambdas h&#228;ngt am Kontext
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1484865316147" ID="ID_687373412" MODIFIED="1518487921047" TEXT="wenn ich den Thread mit Lambda starte..."/>
<node CREATED="1484865349366" ID="ID_652410738" MODIFIED="1518487921047" TEXT="betrifft den term-Functor intern"/>
<node CREATED="1484865513568" ID="ID_696204655" MODIFIED="1576282358157" TEXT="selbst wenn der Funktor selber per Value &#xfc;bergeben wird">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      konkret:
    </p>
    <p>
      der Kontext ist hier n&#228;mlich ein anderes Lambda, das dem Aufruf des GUI-Plugins mitgegeben wurde.
    </p>
    <p>
      Dagegen die alte L&#246;sung erzeugte an dieser Stelle einen Bind-Ausdruck, und das war offenbar genug,
    </p>
    <p>
      um nicht mehr von dem direkten Kontext abh&#228;ngig zu sein, in dem der Thread gestartet wurde.
    </p>
    <p>
      
    </p>
    <p>
      Denn dieser Kontext (auf dem Stack) ist nat&#252;rlich lange schon weg, wenn der Thread
    </p>
    <p>
      terminiert und dann tats&#228;chlich den Fuktor aufrufen m&#246;chte
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node CREATED="1484800741349" ID="ID_1156360682" MODIFIED="1518487921047">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Debug: nur <b>ein</b>&#160;Element connected
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="help"/>
<node CREATED="1484800781408" ID="ID_183164357" MODIFIED="1518487921047" TEXT="n&#xe4;mlich der NotificationService">
<icon BUILTIN="help"/>
</node>
<node COLOR="#338800" CREATED="1484875214137" ID="ID_977859942" MODIFIED="1518487921047" TEXT="nein: das ist genau OK">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1484875222128" ID="ID_1133941591" MODIFIED="1518487921047" TEXT="CoreService ist nicht bidirektional angebunden">
<icon BUILTIN="info"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1484876114521" ID="ID_1082250595" MODIFIED="1557498707217" TEXT="Protokoll zur Kommunikation">
<icon BUILTIN="info"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#4e0099" CREATED="1484876122960" ID="ID_31825421" MODIFIED="1560688098496" STYLE="fork" TEXT="UI-Bus nur im GUI-Thread">
<arrowlink COLOR="#6c5f80" DESTINATION="ID_489078622" ENDARROW="Default" ENDINCLINATION="712;-47;" ID="Arrow_ID_485145709" STARTARROW="None" STARTINCLINATION="1538;-37;"/>
<linktarget COLOR="#b7748e" DESTINATION="ID_31825421" ENDARROW="Default" ENDINCLINATION="560;150;" ID="Arrow_ID_1434676575" SOURCE="ID_935689465" STARTARROW="Default" STARTINCLINATION="587;44;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#338800" CREATED="1484876143949" ID="ID_558559630" MODIFIED="1561827464538" TEXT="mu&#xdf; Nachrichten explizit &#xfc;bergeben">
<icon BUILTIN="button_ok"/>
<node CREATED="1531583488816" ID="ID_928145965" MODIFIED="1531583491643" TEXT="Dispatcher"/>
<node CREATED="1531583492656" ID="ID_1195055295" MODIFIED="1531583502490" TEXT="Queue mit explizitem Mutex-Locking"/>
<node CREATED="1531583503318" ID="ID_40184396" MODIFIED="1531583517752" TEXT="UI-Thread signalisieren per Gtk::Dispatcher"/>
</node>
<node COLOR="#338800" CREATED="1484876154492" ID="ID_669377427" MODIFIED="1557498707217" TEXT="an Locking denken">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1484797900185" ID="ID_1895372084" MODIFIED="1561827464539" TEXT="Protokoll zum Schlie&#xdf;en">
<icon BUILTIN="button_cancel"/>
<node CREATED="1484797920846" ID="ID_472054508" MODIFIED="1518487921047" TEXT="sollte Nachricht auf dem Bus sein">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1484797928661" ID="ID_256413655" MODIFIED="1518487921047" TEXT="sollte in das bestehende Protokoll passen">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1501791850068" ID="ID_1334285372" MODIFIED="1518487921047" TEXT="pa&#xdf;t aber nicht wirklich">
<icon BUILTIN="stop-sign"/>
<node CREATED="1501791881175" ID="ID_361179647" MODIFIED="1518487921047" TEXT="jede L&#xf6;sung willk&#xfc;rlich"/>
<node CREATED="1501791876032" ID="ID_381137803" MODIFIED="1576282358157" TEXT="logisch unsinnig">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      weil die Abstraktion &quot;UI-Element&quot; eben grade
    </p>
    <p>
      die UI-internen Framework-Aspekte ausklammert.
    </p>
    <p>
      
    </p>
    <p>
      Die Elemente stellen eine Abbildung der Strukturen aus der <i>Session</i>&#160;dar,
    </p>
    <p>
      und ihre <i>&quot;Methoden&quot;</i>&#160;sind Commands auf der Session!
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
<node CREATED="1501859470962" ID="ID_99706930" MODIFIED="1557498707217">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      mu&#223; eigens <b>aktiviert</b>&#160;werden
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#5365b7" DESTINATION="ID_749414376" ENDARROW="Default" ENDINCLINATION="-480;-31;" ID="Arrow_ID_1567070366" STARTARROW="None" STARTINCLINATION="295;-51;"/>
<node CREATED="1501859557934" ID="ID_764787705" MODIFIED="1557498707217" TEXT="nach Start der UI-Loop"/>
<node CREATED="1501859566837" ID="ID_984712012" MODIFIED="1557498707217" TEXT="Verbindung zum CoreCtx">
<arrowlink COLOR="#4f547b" DESTINATION="ID_36527267" ENDARROW="Default" ENDINCLINATION="-424;-2038;" ID="Arrow_ID_134552555" STARTARROW="None" STARTINCLINATION="2547;286;"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1484797808349" FOLDED="true" HGAP="31" ID="ID_389264738" MODIFIED="1561827464542" TEXT="Notification-Funktionen" VSHIFT="11">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1501854084264" HGAP="-42" ID="ID_1333991907" MODIFIED="1538263469663" TEXT="allgemein...." VSHIFT="-60">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1501854094710" ID="ID_1146157818" MODIFIED="1538263469663" TEXT="Synchronisation">
<arrowlink COLOR="#a75677" DESTINATION="ID_1023343635" ENDARROW="Default" ENDINCLINATION="-317;-24;" ID="Arrow_ID_274836249" STARTARROW="None" STARTINCLINATION="-647;-66;"/>
</node>
<node CREATED="1501854114284" ID="ID_168912186" MODIFIED="1538263469663" TEXT="Lebenszyklus"/>
<node BACKGROUND_COLOR="#fefc4e" COLOR="#351d75" CREATED="1502411488645" FOLDED="true" ID="ID_1875294174" MODIFIED="1561827464544" TEXT="Fehler im UI">
<linktarget COLOR="#84b6b7" DESTINATION="ID_1875294174" ENDARROW="Default" ENDINCLINATION="1297;-64;" ID="Arrow_ID_245240331" SOURCE="ID_1177399909" STARTARROW="None" STARTINCLINATION="285;0;"/>
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="yes"/>
<node CREATED="1502411559060" ID="ID_1282973269" MODIFIED="1538263469663" TEXT="GTK nicht exception-safe">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1502411571690" ID="ID_878676751" MODIFIED="1538263469663" TEXT="aber was tun wenn....">
<icon BUILTIN="help"/>
<node CREATED="1503444108091" ID="ID_725326352" MODIFIED="1538263469663" TEXT="loggen und weitermachen"/>
<node CREATED="1503444117593" ID="ID_1115027114" MODIFIED="1538263469663" TEXT="loggen, Fehlerlog-Widget, weitermachen">
<icon BUILTIN="forward"/>
</node>
<node CREATED="1503444163706" ID="ID_577766875" MODIFIED="1538263469663" TEXT="UI-Reset"/>
<node CREATED="1503444173752" ID="ID_65458957" MODIFIED="1538263469663" TEXT="(emergency)-shutdown"/>
</node>
<node CREATED="1502411595263" ID="ID_58102462" MODIFIED="1538263469663" TEXT="Fallunterscheidung">
<node CREATED="1502411604054" ID="ID_1705249614" MODIFIED="1538263469663" TEXT="Fehler im Feedback/Notify harmlos">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1502411612700" ID="ID_1951009863" MODIFIED="1538263469663" TEXT="Diff darf nicht scheitern">
<node CREATED="1503670572980" ID="ID_599888416" MODIFIED="1538263469663" TEXT="einzige Ausnahme">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1503670585794" FOLDED="true" ID="ID_1806860698" MODIFIED="1561827483824" TEXT="speziellen Handler verwenden">
<arrowlink COLOR="#6d8097" DESTINATION="ID_376091136" ENDARROW="Default" ENDINCLINATION="129;8;" ID="Arrow_ID_206696117" STARTARROW="None" STARTINCLINATION="147;13;"/>
<icon BUILTIN="yes"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1504203543467" FOLDED="true" ID="ID_285166941" MODIFIED="1561827482903" TEXT="TODO">
<icon BUILTIN="bell"/>
<node CREATED="1504203570199" ID="ID_577706469" MODIFIED="1518487921048" TEXT="welche Fehler kann Diff-Anwendung werfen?">
<icon BUILTIN="help"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1504203562616" ID="ID_1637738213" MODIFIED="1518487921048" TEXT="in generischen Diff-Aufruf einbauen">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1503443968096" ID="ID_986919353" MODIFIED="1538263469663" TEXT="Implementierungs-Muster">
<node CREATED="1503443979619" ID="ID_1673104600" MODIFIED="1538263469663" TEXT="jedes einzelne Lambda in Fehlerhandler wrappen">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1503443999616" ID="ID_601042478" MODIFIED="1538263469663" TEXT="generischer Fehlerhandler im Invocation-Lambda">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1503670528386" ID="ID_376091136" MODIFIED="1538263469663" TEXT="generischer Chain-Fehlerhandler">
<arrowlink COLOR="#5e6d7f" DESTINATION="ID_1933339677" ENDARROW="Default" ENDINCLINATION="201;-32;" ID="Arrow_ID_1887448672" STARTARROW="None" STARTINCLINATION="-44;52;"/>
<linktarget COLOR="#6d8097" DESTINATION="ID_376091136" ENDARROW="Default" ENDINCLINATION="129;8;" ID="Arrow_ID_206696117" SOURCE="ID_1806860698" STARTARROW="None" STARTINCLINATION="147;13;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1484797813373" ID="ID_536855363" MODIFIED="1538840099146" TEXT="generische Nachricht">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1484797818780" ID="ID_354397333" MODIFIED="1561827464545" TEXT="state mark">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1484877574046" ID="ID_251939815" MODIFIED="1538263469663" TEXT="Error">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1484877577550" ID="ID_258243919" MODIFIED="1538263469663" TEXT="Note">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1504203488690" FOLDED="true" ID="ID_149796171" MODIFIED="1561827464547" TEXT="Fehlermeldungen">
<linktarget COLOR="#c19dc4" DESTINATION="ID_149796171" ENDARROW="Default" ENDINCLINATION="1300;76;" ID="Arrow_ID_451002492" SOURCE="ID_821848615" STARTARROW="None" STARTINCLINATION="1509;156;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1504203497529" ID="ID_1933339677" MODIFIED="1538839626771" TEXT="#1102 brauche Fehlerlog-Widget">
<linktarget COLOR="#5e6d7f" DESTINATION="ID_1933339677" ENDARROW="Default" ENDINCLINATION="201;-32;" ID="Arrow_ID_1887448672" SOURCE="ID_376091136" STARTARROW="None" STARTINCLINATION="-44;52;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1504203643550" ID="ID_764647453" MODIFIED="1538263469663" TEXT="via InteractionDirector ansprechen"/>
<node CREATED="1504203694423" ID="ID_812129962" MODIFIED="1538263469663">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Fehlerlog-Anzeige <i>vorl&#228;ufig irgendwo....</i>
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#7893b2" DESTINATION="ID_1745777873" ENDARROW="Default" ENDINCLINATION="-499;-464;" ID="Arrow_ID_1590510093" STARTARROW="None" STARTINCLINATION="808;0;"/>
</node>
<node CREATED="1533688453675" ID="ID_528918224" MODIFIED="1538263469663" TEXT="l&#xe4;ngerfristige L&#xf6;sung">
<arrowlink COLOR="#9c95b1" DESTINATION="ID_1972484306" ENDARROW="Default" ENDINCLINATION="-3826;-1250;" ID="Arrow_ID_1735504887" STARTARROW="None" STARTINCLINATION="2269;1167;"/>
<node CREATED="1533688464386" ID="ID_1583348838" MODIFIED="1538263469663" TEXT="Wizard erzeugt NotificationController"/>
<node CREATED="1533688486631" ID="ID_1186891962" MODIFIED="1538263469664" TEXT="dieser alloziert bei Bedarf ein Anzeige-Widget"/>
<node CREATED="1533688504805" ID="ID_882148786" MODIFIED="1538263469664" TEXT="welches dann in das Infobox-Panel platziert wird"/>
</node>
</node>
<node COLOR="#338800" CREATED="1504203511199" ID="ID_1027795869" MODIFIED="1538263469664" TEXT="Nachricht per UI-Bus senden">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1484797822403" FOLDED="true" HGAP="37" ID="ID_364545191" MODIFIED="1582487884518" TEXT="Diff" VSHIFT="8">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1502401930856" FOLDED="true" ID="ID_634125084" MODIFIED="1582487870878" TEXT="#1066 concept how to hand over diff messages">
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1502410099141" ID="ID_1388523431" MODIFIED="1538263469664" TEXT="unn&#xf6;tig: zwei Abstraktions-Typen">
<icon BUILTIN="stop-sign"/>
<node CREATED="1502410126058" ID="ID_30550435" MODIFIED="1538263469664" TEXT="MutationMessage"/>
<node CREATED="1502410130889" ID="ID_1402431306" MODIFIED="1538263469664" TEXT="DiffMessage"/>
</node>
<node CREATED="1502410149463" ID="ID_1909971032" MODIFIED="1538263469664" TEXT="Entscheidung f&#xfc;r DiffMessage">
<icon BUILTIN="yes"/>
<node CREATED="1502599977964" ID="ID_249258988" MODIFIED="1538263469664" TEXT="ist das bessere Konzept"/>
<node CREATED="1502599993338" ID="ID_1306432135" MODIFIED="1538263469664" TEXT="abstrahierter Iterator">
<icon BUILTIN="idea"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1502600004168" ID="ID_1865027243" MODIFIED="1538263469664" TEXT="aber Name &#xbb;MutationMessage&#xab; beibehalten">
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#338800" CREATED="1502410165980" ID="ID_1450795292" MODIFIED="1538263469664" TEXT="MutationMessage entfernen">
<icon BUILTIN="button_ok"/>
<node CREATED="1502410176619" ID="ID_1188430411" MODIFIED="1538263469664" TEXT="AbstractTangible_test umschreiben"/>
<node CREATED="1502410190737" ID="ID_1036564813" MODIFIED="1576282358156" TEXT="operator string() in DiffMessage &#xfc;bernehmen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...das ist n&#252;tzlich zur Diagnose,
    </p>
    <ul>
      <li>
        aber l&#228;&#223;t sich das &#252;berhaupt auf IterSource &#252;bertragen?
      </li>
      <li>
        war es &#252;berhaupt je gerechtferigt? zu starke Annahme &#252;ber den Diff-Erzeuger!
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="help"/>
</node>
<node CREATED="1502410328279" ID="ID_1577461232" MODIFIED="1538263469664" TEXT="Tree-Diff-Aplikator direkt in Nexus verschieben"/>
<node CREATED="1502410351284" ID="ID_845679527" MODIFIED="1538263469664" TEXT="BusTerm-API &#xe4;ndern"/>
</node>
</node>
<node CREATED="1484799660822" ID="ID_1288003894" MODIFIED="1538263469664" TEXT="TreeMutator binden">
<node CREATED="1502410730274" ID="ID_1631270974" MODIFIED="1538263469664" TEXT="passiert bisher in MutationMessage"/>
<node CREATED="1502410738992" ID="ID_1626925051" MODIFIED="1538263469664" TEXT="direkt in den Nexus verschieben">
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1484877585605" ID="ID_101718446" MODIFIED="1538263469664" TEXT="verwende MutationMessage">
<icon BUILTIN="yes"/>
<node CREATED="1502401956093" ID="ID_322700967" MODIFIED="1538263469664" TEXT="MutationMessage von DiffMessage erzeugen">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1502454601603" ID="ID_384770680" MODIFIED="1538263469664" TEXT="nein: MutationMessage wird &#xfc;berfl&#xfc;ssig">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1502401987033" ID="ID_1584846573" MODIFIED="1564495786621" TEXT="erfordert Festlegung der Natur der Diff Message">
<arrowlink COLOR="#bdbad3" DESTINATION="ID_89098030" ENDARROW="Default" ENDINCLINATION="600;-1189;" ID="Arrow_ID_554743885" STARTARROW="None" STARTINCLINATION="1459;870;"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1502402004383" ID="ID_1491065212" MODIFIED="1538263469664" TEXT="generisch bleiben?">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1502402012558" ID="ID_1846096533" MODIFIED="1538263469664" TEXT="IterSource verwenden">
<linktarget COLOR="#2579a2" DESTINATION="ID_1846096533" ENDARROW="Default" ENDINCLINATION="-5;149;" ID="Arrow_ID_896931950" SOURCE="ID_636092614" STARTARROW="None" STARTINCLINATION="158;5;"/>
<icon BUILTIN="forward"/>
<node CREATED="1502402691844" FOLDED="true" ID="ID_286774751" MODIFIED="1561827483824" TEXT="Diskussion">
<node CREATED="1502402022580" FOLDED="true" ID="ID_1661331763" MODIFIED="1561827482905" TEXT="Pro">
<node CREATED="1502402025820" ID="ID_1076820802" MODIFIED="1518487921050" TEXT="bestehende Framework"/>
<node CREATED="1502402031275" ID="ID_104571481" MODIFIED="1518487921050" TEXT="ownership management"/>
<node CREATED="1502402038690" ID="ID_921191865" MODIFIED="1518487921050" TEXT="schlankes Interface"/>
<node CREATED="1502402049305" ID="ID_20073652" MODIFIED="1518487921050" TEXT="eigentliche Diff-Erzeugung bleibt offen"/>
</node>
<node CREATED="1502402071222" FOLDED="true" ID="ID_905919540" MODIFIED="1561827482906" TEXT="Con">
<node CREATED="1502402075413" ID="ID_913770531" MODIFIED="1518487921050" TEXT="Komplexit&#xe4;t"/>
<node CREATED="1502402086268" FOLDED="true" ID="ID_380041258" MODIFIED="1561827469144" TEXT="zus&#xe4;tzliche Indirektion">
<node CREATED="1502402254582" ID="ID_218820320" MODIFIED="1518487921050" TEXT="DiffMutable beim Empf&#xe4;nger"/>
<node CREATED="1502402499053" ID="ID_587801464" MODIFIED="1518487921050" TEXT="TreeMutator beim Empf&#xe4;nger"/>
<node CREATED="1502402266284" ID="ID_1573858698" MODIFIED="1518487921050" TEXT="IterSource&lt;DiffStep&gt; beim Generator"/>
<node CREATED="1502402516275" ID="ID_334129744" MODIFIED="1518487921050">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ist schon <i>schlimm </i>genug....
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1502402213139" FOLDED="true" ID="ID_1233670694" MODIFIED="1561827469144" TEXT="nicht C-kompatibel">
<node CREATED="1502402286425" ID="ID_683015958" MODIFIED="1518487921051" TEXT="ja mei...">
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1502402291209" ID="ID_1962599608" MODIFIED="1518487921051" TEXT="aber k&#xf6;nnte SWIG-kompatibel sein">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...denn eigentlich geht es nur um ein einfaches Producer-Interface,
    </p>
    <p>
      das einen Element-Pointer durchreicht. Das einzige Problem, das ich sehe,
    </p>
    <p>
      ist, da&#223; hier <i>ownership </i>&#252;bertragen wird.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1502402370534" ID="ID_1923477219" MODIFIED="1518487921051" TEXT="es geht hier um C++ (Proc) &lt;-&gt; C++ (GUI)"/>
</node>
</node>
</node>
<node CREATED="1502402701106" FOLDED="true" ID="ID_510901772" MODIFIED="1561827483824" TEXT="Abw&#xe4;gung">
<icon BUILTIN="yes"/>
<node CREATED="1502402718496" ID="ID_1641881714" MODIFIED="1518487921051" TEXT="mir gef&#xe4;llt die L&#xf6;sung zum ownerhsip management"/>
<node CREATED="1502402735558" ID="ID_1883129099" MODIFIED="1518487921051" TEXT="halte das f&#xfc;r eine gute Implementierungs-Struktur..."/>
<node CREATED="1502402757163" ID="ID_1525377159" MODIFIED="1518487921051" TEXT="denn der Client ist quasi gezwungen, den Erzeugungs-Kontext herauszuabstrahieren"/>
<node CREATED="1502402778960" FOLDED="true" ID="ID_577811618" MODIFIED="1561827482906" TEXT="Indirektion/Komplexit&#xe4;t">
<node CREATED="1502402798909" ID="ID_813337624" MODIFIED="1518487921051" TEXT="z&#xe4;hlt nicht wirklich, denn.."/>
<node CREATED="1502402810620" ID="ID_439896117" MODIFIED="1518487921051" TEXT="mit dem Diff-Konzept habe ich das bereits akzeptiert">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      n&#228;mlich
    </p>
    <ul>
      <li>
        ein sehr theoretisches und anspruchsvolles Konzept
      </li>
      <li>
        der Zwang, das auf jedem Empf&#228;nger umzusetzen
      </li>
      <li>
        die hablseidene Trickserei mit der konkreten Puffergr&#246;&#223;e
      </li>
      <li>
        den double-dispatch im Diff-Framework selber
      </li>
      <li>
        das Variant-basierte GenNode-Framework
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node CREATED="1502402998859" ID="ID_1462873166" MODIFIED="1518487921051">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      das wird <i>sowiso</i>&#160;ein Desaster
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="smiley-oh"/>
</node>
</node>
<node CREATED="1502402830713" ID="ID_1666981219" MODIFIED="1518487921051" TEXT="was z&#xe4;hlt, ist die Entkoppelung"/>
</node>
</node>
</node>
<node CREATED="1502403145431" ID="ID_636092614" MODIFIED="1538263469664" TEXT="DiffMessage ist selber der Iterator">
<arrowlink COLOR="#2579a2" DESTINATION="ID_1846096533" ENDARROW="Default" ENDINCLINATION="-5;149;" ID="Arrow_ID_896931950" STARTARROW="None" STARTINCLINATION="158;5;"/>
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1484877658891" ID="ID_1855662071" MODIFIED="1538263469664" TEXT="Vorsicht: Storage / GUI-Thread">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1484877696486" ID="ID_476867583" MODIFIED="1538263469664" TEXT="wir m&#xfc;ssen jede Aktion in den Event-Thread &#xfc;bergeben"/>
<node CREATED="1484877711388" ID="ID_407918505" MODIFIED="1538263469664">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      das hei&#223;t, die Diff-<b>Implementierung</b>&#160;mu&#223; l&#228;nger leben
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1484877731337" ID="ID_1859059266" MODIFIED="1538263469664">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      faktisch erfolgt somit ein <b>Callback</b>&#160;aus einem anderen Thread
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1484877743992" ID="ID_680582075" MODIFIED="1538263469664">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      um das Diff zu <i>pullen</i>
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1502459141531" ID="ID_301431029" MODIFIED="1538263469665" TEXT="Refactoring">
<icon BUILTIN="button_ok"/>
<node CREATED="1502459182214" ID="ID_1601884743" MODIFIED="1538263469665" TEXT="MutationMessage wird &#xfc;berfl&#xfc;ssig">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1502459190477" ID="ID_102437369" MODIFIED="1538263469665" TEXT="DiffMessage &#xfc;bernimmt deren Rolle">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1502459198611" ID="ID_1739527989" MODIFIED="1538263469665" TEXT="aber DiffMessage wird umbenannt in MutationMessage">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1493753249399" HGAP="64" ID="ID_1023343635" MODIFIED="1561827464564" TEXT="#1098 hand-over in UI-Thread" VSHIFT="83">
<linktarget COLOR="#a75677" DESTINATION="ID_1023343635" ENDARROW="Default" ENDINCLINATION="-317;-24;" ID="Arrow_ID_274836249" SOURCE="ID_1146157818" STARTARROW="None" STARTINCLINATION="-647;-66;"/>
<linktarget COLOR="#84c6b8" DESTINATION="ID_1023343635" ENDARROW="Default" ENDINCLINATION="21;233;" ID="Arrow_ID_1372135725" SOURCE="ID_995145542" STARTARROW="None" STARTINCLINATION="237;0;"/>
<linktarget COLOR="#7caaa8" DESTINATION="ID_1023343635" ENDARROW="Default" ENDINCLINATION="2513;3565;" ID="Arrow_ID_1832047032" SOURCE="ID_489078622" STARTARROW="Default" STARTINCLINATION="2914;51;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1501804992301" ID="ID_1647263044" MODIFIED="1538263469665" TEXT="schedule event"/>
<node CREATED="1501804985286" ID="ID_320977714" MODIFIED="1538263469665" TEXT="GTK-Mechanismus">
<node CREATED="1501850591393" ID="ID_1831316800" MODIFIED="1538263469665" TEXT="Glib::Dispatcher"/>
<node CREATED="1501850603736" ID="ID_1030340631" MODIFIED="1538263469665" TEXT="im UI-Thread erzeugen und binden"/>
<node CREATED="1501850614630" ID="ID_196299293" MODIFIED="1538263469665" TEXT="emit() -&gt; event im UI-Thread"/>
</node>
<node COLOR="#435e98" CREATED="1501850632636" FOLDED="true" ID="ID_431682708" MODIFIED="1561827464567" TEXT="technische Probleme">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1501850684373" ID="ID_1688212376" MODIFIED="1576282358156" TEXT="ein Dispatcher pro Call">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      jede Facade-Funktion brauch einen Dispatcher
    </p>
    <p>
      Das wird eine ganze Me
    </p>
  </body>
</html></richcontent>
<node CREATED="1501850754827" ID="ID_314216229" MODIFIED="1538263469665" TEXT="jede Facade-Funktion brauch einen Dispatcher">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1501850863525" ID="ID_1439490807" MODIFIED="1538263469665" TEXT="das wird eine Menge"/>
<node CREATED="1501850867597" ID="ID_141225152" MODIFIED="1538263469665" TEXT="alle Dispatcher haben eine gemeinsame Queue"/>
<node CREATED="1501850880179" ID="ID_745997733" MODIFIED="1538263469665" TEXT="m&#xf6;gliche contention-Probleme"/>
</node>
<node CREATED="1501850690748" ID="ID_1995715844" MODIFIED="1538263469665" TEXT="Erzeugen der Dispatcher">
<node CREATED="1501850920950" ID="ID_1529426036" MODIFIED="1538263469665" TEXT="mu&#xdf; im UI-Thread erfolgen"/>
<node CREATED="1501850933596" ID="ID_620574396" MODIFIED="1538263469665">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <i>bevor</i>&#160;die Facade ge&#246;ffnet wir
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1501850677790" ID="ID_1195250454" MODIFIED="1538263469665" TEXT="Argument&#xfc;bergabe">
<node CREATED="1501850716049" ID="ID_104637334" MODIFIED="1538263469665" TEXT="emit() ist void(void)"/>
<node CREATED="1501850734414" ID="ID_994424125" MODIFIED="1538263469665">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      und arbeitet <i>asynchron</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1501850967855" ID="ID_859055846" MODIFIED="1538263469665">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Argument-Storage
    </p>
    <p>
      organisieren
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1501867225983" FOLDED="true" ID="ID_1121867075" MODIFIED="1538263469665">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      brauche dedizierten <b>Dispatcher</b>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
<node COLOR="#338800" CREATED="1501938738836" ID="ID_1257499857" MODIFIED="1561827464568" TEXT="Helper: CallQueue">
<icon BUILTIN="button_ok"/>
<node CREATED="1501938715247" ID="ID_1286525769" MODIFIED="1538263469666" TEXT="simplistic">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1501938699841" ID="ID_1077640328" MODIFIED="1538263469666" TEXT="std::function"/>
<node CREATED="1501938690626" ID="ID_353231581" MODIFIED="1538263469666" TEXT="thread safe queue"/>
<node CREATED="1501938705321" ID="ID_1924064403" MODIFIED="1538263469666" TEXT="lambdas f&#xfc;r Argument-binding"/>
</node>
<node COLOR="#338800" CREATED="1501938776839" ID="ID_1031878628" MODIFIED="1561827464569" TEXT="Convenience-Wrapper">
<icon BUILTIN="button_ok"/>
<node CREATED="1501939110138" ID="ID_203135379" MODIFIED="1538263469666" TEXT="Lambda konstruieren">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1501939132431" ID="ID_1400757157" MODIFIED="1538263469666" TEXT="Funktion zum Triggern">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1501939149837" ID="ID_1733976265" MODIFIED="1538263469666" TEXT="diese an Glib::Dispatcher binden">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1502404797300" ID="ID_1177399909" MODIFIED="1561827464570" TEXT="Exceptions fangen">
<arrowlink COLOR="#84b6b7" DESTINATION="ID_1875294174" ENDARROW="Default" ENDINCLINATION="1297;-64;" ID="Arrow_ID_245240331" STARTARROW="None" STARTINCLINATION="285;0;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1522935881957" HGAP="23" ID="ID_564244010" MODIFIED="1576282358155" TEXT="4/2018 was ist hier der Stand?" VSHIFT="16">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      kann mich so vague erinnern
    </p>
    <p>
      da&#223; hier zwar schon ein catch eingebaut war,
    </p>
    <p>
      aber noch <i>irgend ein Hund</i>&#160;begraben liegt
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="help"/>
</node>
<node COLOR="#435e98" CREATED="1531584775498" ID="ID_1901801971" MODIFIED="1576282358155" TEXT="7/2018 notification-Display fehlt noch">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...und insofern ist auch die Behandlung einer <b>Folge-Exception</b>&#160;noch offen
    </p>
    <p>
      Im Moment loggen wir nur ins textuelle Konsole-Log (NoBug)
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#22ed6f" DESTINATION="ID_1901801971" ENDARROW="Default" ENDINCLINATION="287;0;" ID="Arrow_ID_1609281182" SOURCE="ID_1545300987" STARTARROW="None" STARTINCLINATION="83;-25;"/>
<icon BUILTIN="yes"/>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1538263118645" ID="ID_944384957" MODIFIED="1576282358154" TEXT="9/2018 hinreichend behandelt">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Habe nochmal alle Aufrufe im Einzelnen durchgepr&#252;ft
    </p>
    <ul>
      <li>
        wenn schon das Einf&#252;gen des Funktors vor dem Dispatch wirft (out of memory),<br />dann bekommt der Aufrufer diese Exception, was typischerweise t&#246;dlich ist.<br />
      </li>
      <li>
        aber alles, was <i>innerhalb</i>&#160;dieses Funktors passiert, wird abgefangen und geloggt.<br />
      </li>
    </ul>
    <p>
      mehr erscheint mir nicht sinnvoll; <i>behandeln</i>&#160;kann man solche Fehler ohnehin nicht.<br /><br />
    </p>
  </body>
</html></richcontent>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1501939174506" ID="ID_504999068" MODIFIED="1561827464571" TEXT="in NotificationService integrieren">
<icon BUILTIN="button_ok"/>
<node CREATED="1502375098210" ID="ID_581509556" MODIFIED="1538263469666" STYLE="fork" TEXT="als PImpl">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1502375146395" ID="ID_144811928" MODIFIED="1538263469666" TEXT="CallQueue einrichten">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1502375120551" ID="ID_1281399419" MODIFIED="1538263469666" TEXT="Glib::Dispatcher verwenden">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1502375134501" ID="ID_1011463592" MODIFIED="1538263469666" STYLE="fork" TEXT="Aufrufe in Lamdas verpacken">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1502375294344" ID="ID_640199096" MODIFIED="1561827464572" TEXT="Spezialbehandlung f&#xfc;r Shutdown">
<icon BUILTIN="button_ok"/>
<node CREATED="1502375312469" ID="ID_1075926054" MODIFIED="1576282358153" TEXT="ironischerweise...">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...k&#246;nnte das am Ende nicht sinnvoll sein,
    </p>
    <p>
      speziell den UI-Shutdown-Trigger &#252;ber den neuen Mechanismus laufen zu lassen,
    </p>
    <p>
      obwohl jener doch genau der Anla&#223; war, diesen neuen Mechanismus zu bauen.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1502390322659" ID="ID_194166182" MODIFIED="1538263469666" TEXT="den neuen Dispatcher nutzen?">
<icon BUILTIN="help"/>
<node CREATED="1502390340193" FOLDED="true" ID="ID_1491902996" MODIFIED="1561827483824" TEXT="Con">
<icon BUILTIN="button_cancel"/>
<node CREATED="1502390353887" ID="ID_1015749080" MODIFIED="1518487921054">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      wenn die Queue voll ist
    </p>
    <p>
      wird erst alles Andere abgearbeitet
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1502390402273" ID="ID_929098721" MODIFIED="1518487921054">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      wenn UI-Thread blockt/verhungert,
    </p>
    <p>
      kommt der rettende Shutdown <i>gar nicht</i>&#160;durch
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1502390334890" FOLDED="true" ID="ID_1454460947" MODIFIED="1561827483824" TEXT="Pro">
<icon BUILTIN="button_ok"/>
<node CREATED="1502390463664" ID="ID_1786963429" MODIFIED="1518487921054" TEXT="einfach zu implementieren"/>
<node CREATED="1502390473567" ID="ID_1776620772" MODIFIED="1518487921054" TEXT="alle Glib::Dispatcher nutzen die gleiche Pipe"/>
<node CREATED="1502390485294" ID="ID_146294589" MODIFIED="1518487921054" TEXT="...d.h. echte Alternative m&#xfc;&#xdf;te aufwendig zu Fu&#xdf; programmiert werden"/>
</node>
</node>
<node CREATED="1502390572106" ID="ID_1872668444" MODIFIED="1679362063151" TEXT="zus&#xe4;tzlich noch eine Benachrichtigung">
<node CREATED="1502390583289" ID="ID_741614829" MODIFIED="1538263469666" TEXT="an die UI-Nachrichtenbox">
<icon BUILTIN="info"/>
</node>
<node CREATED="1502390886681" ID="ID_985994192" MODIFIED="1538263469666" TEXT="f&#xfc;hre Benachrichtiguns-Level ein">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1502390603674" ID="ID_125356908" MODIFIED="1538839473841" TEXT="#1102 : build a message display box in the UI">
<arrowlink COLOR="#8c8bae" DESTINATION="ID_1926586811" ENDARROW="Default" ENDINCLINATION="1539;60;" ID="Arrow_ID_1593124756" STARTARROW="None" STARTINCLINATION="-850;779;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1501939193031" HGAP="3" ID="ID_1045913810" MODIFIED="1679362063151" TEXT="Test" VSHIFT="20">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1501939204166" ID="ID_383444966" MODIFIED="1679362063151" TEXT="CallQueue_test">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1501946847700" ID="ID_1917302142" MODIFIED="1538263469666" TEXT="basic">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1501946852555" ID="ID_1617455971" MODIFIED="1538263469666" TEXT="mehrere">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1501946856587" ID="ID_1780067399" MODIFIED="1538263469666" TEXT="Stre&#xdf;">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#fefc4e" COLOR="#351d75" CREATED="1501939212693" ID="ID_1007296291" MODIFIED="1679362063151" TEXT="#1099 DemoGuiRoundtrip">
<linktarget COLOR="#e5e53f" DESTINATION="ID_1007296291" ENDARROW="Default" ENDINCLINATION="-931;34;" ID="Arrow_ID_1440938291" SOURCE="ID_1925240675" STARTARROW="None" STARTINCLINATION="-7;605;"/>
<linktarget COLOR="#f0eca5" DESTINATION="ID_1007296291" ENDARROW="Default" ENDINCLINATION="881;2029;" ID="Arrow_ID_1736540527" SOURCE="ID_1456159316" STARTARROW="None" STARTINCLINATION="765;-14;"/>
<linktarget COLOR="#ebf0a5" DESTINATION="ID_1007296291" ENDARROW="Default" ENDINCLINATION="-3154;1704;" ID="Arrow_ID_1091720734" SOURCE="ID_1098045534" STARTARROW="None" STARTINCLINATION="1220;0;"/>
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="idea"/>
<node CREATED="1501939235834" FOLDED="true" ID="ID_1160414548" MODIFIED="1561827483824" TEXT="Men&#xfc;-Eintrag">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1533402935579" ID="ID_263665767" MODIFIED="1533402958273" TEXT="erst mal Bang!-Button verwenden">
<icon BUILTIN="flag-yellow"/>
</node>
<node CREATED="1533402947233" ID="ID_1533593555" MODIFIED="1533402955562" TEXT="alles fest drahten">
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1501939240217" ID="ID_325602880" MODIFIED="1538263469667" TEXT="triggert Proc-Command"/>
<node CREATED="1501939252991" ID="ID_31140909" MODIFIED="1538263469667" TEXT="dieses sendet Mark zur&#xfc;ck"/>
<node CREATED="1501939263030" FOLDED="true" ID="ID_381890207" MODIFIED="1561827483824" TEXT="ein Widget im UI reagiert">
<node COLOR="#338800" CREATED="1533402866549" FOLDED="true" ID="ID_899369632" MODIFIED="1561827482906" TEXT="fest verdrahtete ID">
<icon BUILTIN="button_ok"/>
<node CREATED="1533688905326" ID="ID_709974587" MODIFIED="1538263469667" TEXT="geh&#xf6;rt dem NotificationController"/>
<node CREATED="1533688913996" ID="ID_33570780" MODIFIED="1538263469667">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <i>das</i>&#160;ist schon die endg&#252;ltige L&#246;sung
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1533688935962" FOLDED="true" ID="ID_1996006263" MODIFIED="1561827469144" TEXT="NotificationController">
<node CREATED="1533688944816" ID="ID_1273458647" MODIFIED="1538263469667" TEXT="wird vom Wizard gemanagt"/>
<node CREATED="1533688953399" ID="ID_1850034653" MODIFIED="1538263469667" TEXT="belegt ein Display-widget">
<arrowlink COLOR="#455086" DESTINATION="ID_396920290" ENDARROW="Default" ENDINCLINATION="-38;-97;" ID="Arrow_ID_729082861" STARTARROW="None" STARTINCLINATION="101;-7;"/>
</node>
</node>
<node COLOR="#338800" CREATED="1533771813324" FOLDED="true" ID="ID_930319427" MODIFIED="1561827469144" TEXT="wo ist die ID selber definiert">
<icon BUILTIN="help"/>
<node CREATED="1533911116328" ID="ID_1079600246" MODIFIED="1533911128764" TEXT="sie mu&#xdf; insgesamt reprouzierbar sein"/>
<node CREATED="1533911129424" ID="ID_659618402" MODIFIED="1533911139946" TEXT="zumindest innerhalb einer Program-Ausf&#xfc;hrung"/>
<node CREATED="1533911854871" FOLDED="true" HGAP="23" ID="ID_1953310668" MODIFIED="1561827469123" TEXT="Problem dabei" VSHIFT="11">
<node CREATED="1533911897569" ID="ID_1876551933" MODIFIED="1533911919154" TEXT="ID ist somit Teil des Interface"/>
<node CREATED="1533911919814" FOLDED="true" ID="ID_558535868" MODIFIED="1561827464588" TEXT="welches Interface?">
<node CREATED="1533915325903" FOLDED="true" ID="ID_1053391149" MODIFIED="1561827464588" TEXT="GuiNotification">
<node CREATED="1533915683535" ID="ID_1976057171" MODIFIED="1533915688561" TEXT="w&#xe4;re m&#xf6;glich"/>
<node CREATED="1533915689317" ID="ID_689429680" MODIFIED="1533915696616" TEXT="hat aber anderen Scope"/>
</node>
<node CREATED="1533915336757" ID="ID_1674509000" MODIFIED="1533915653847" TEXT="NotificationService">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1533915549928" FOLDED="true" ID="ID_1316198257" MODIFIED="1561827464588" TEXT="ErrorLogView">
<icon BUILTIN="button_cancel"/>
<node CREATED="1533915663705" ID="ID_1407115037" MODIFIED="1533915670027" TEXT="ist Implementation"/>
</node>
<node CREATED="1533915555871" FOLDED="true" ID="ID_1144697657" MODIFIED="1561827464588" TEXT="ErrorLog">
<node CREATED="1533915560942" ID="ID_981931913" MODIFIED="1533915564473" TEXT="w&#xfc;rde passen"/>
<node CREATED="1533915565111" ID="ID_779138620" MODIFIED="1533915568721" TEXT="gibts aber noch nicht"/>
<node CREATED="1533915569453" ID="ID_208285264" MODIFIED="1533915574145" TEXT="hat sonst keinen Inhalt"/>
</node>
<node CREATED="1533915576132" FOLDED="true" ID="ID_1784095931" MODIFIED="1561827464588" TEXT="Wizzard">
<icon BUILTIN="forward"/>
<node CREATED="1533915588283" ID="ID_909934131" MODIFIED="1533915603577">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Schlu&#223;folgerung: Wizzard <i>wird</i>&#160;ein Interface
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node CREATED="1533911886268" FOLDED="true" ID="ID_1414379746" MODIFIED="1561827464588" TEXT="ID storage">
<node CREATED="1534026768353" ID="ID_38337485" MODIFIED="1534026773780" TEXT="statisch extern"/>
<node CREATED="1534026775080" ID="ID_875112330" MODIFIED="1534026808983">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      in proc::asset::meta::<b><font color="#c01a1a">theErrorLog_ID</font></b>
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1534026821186" FOLDED="true" ID="ID_1959407299" MODIFIED="1561827464588" TEXT="dieses Interface f&#xfc;hlt sich irgendwie falsch an">
<linktarget COLOR="#c23581" DESTINATION="ID_1959407299" ENDARROW="Default" ENDINCLINATION="-34;0;" ID="Arrow_ID_1588328372" SOURCE="ID_1198718862" STARTARROW="Default" STARTINCLINATION="10;-26;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="smily_bad"/>
<node CREATED="1534026923108" ID="ID_1896057034" MODIFIED="1534026932095" TEXT="Wizzard hat jetzt eine statische Methode"/>
<node CREATED="1534026932891" ID="ID_1643129041" MODIFIED="1534026942685" TEXT="NotificationService mu&#xdf; die ansprechen"/>
<node CREATED="1534026943481" ID="ID_445720698" MODIFIED="1534026954859" TEXT="blo&#xdf; um eine &quot;hinten herum&quot; vereinbarte ID zu bekommen"/>
</node>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1533916387142" FOLDED="true" HGAP="-78" ID="ID_1746348489" MODIFIED="1561827469123" TEXT="Festlegung" VSHIFT="-6">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node CREATED="1533916393797" ID="ID_1198718862" MODIFIED="1534026961333" TEXT="Wizzard">
<arrowlink COLOR="#c23581" DESTINATION="ID_1959407299" ENDARROW="Default" ENDINCLINATION="-34;0;" ID="Arrow_ID_1588328372" STARTARROW="Default" STARTINCLINATION="10;-26;"/>
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
</node>
<node CREATED="1533916397565" FOLDED="true" ID="ID_1117749960" MODIFIED="1561827464588" TEXT="ErrorLog">
<arrowlink COLOR="#68788a" DESTINATION="ID_1121251191" ENDARROW="Default" ENDINCLINATION="-1644;0;" ID="Arrow_ID_146013003" STARTARROW="None" STARTINCLINATION="-4766;280;"/>
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1533916469971" ID="ID_802623301" MODIFIED="1533916472319" TEXT="in Proc"/>
<node CREATED="1533916473075" ID="ID_766768160" MODIFIED="1533916479190" TEXT="neu zu schaffen"/>
<node CREATED="1533916480282" ID="ID_1974491793" MODIFIED="1533916483670" TEXT="Platzhalter"/>
<node CREATED="1533916484785" ID="ID_537026197" MODIFIED="1533916497105" TEXT="(vorerst)">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1504200793444" FOLDED="true" ID="ID_340215113" MODIFIED="1561827482907" TEXT="mi&#xdf;brauche InfoBox">
<arrowlink COLOR="#f5dd67" DESTINATION="ID_19179662" ENDARROW="Default" ENDINCLINATION="743;-1563;" ID="Arrow_ID_1195014928" STARTARROW="None" STARTINCLINATION="-452;605;"/>
<linktarget COLOR="#e0d18d" DESTINATION="ID_340215113" ENDARROW="Default" ENDINCLINATION="-389;5426;" ID="Arrow_ID_1440864098" SOURCE="ID_622217667" STARTARROW="None" STARTINCLINATION="-1637;-8191;"/>
<icon BUILTIN="idea"/>
<node COLOR="#338800" CREATED="1504200974955" FOLDED="true" ID="ID_1182589184" MODIFIED="1561827469145" TEXT="neues Dock(Panel)">
<icon BUILTIN="button_ok"/>
<node CREATED="1522936169270" FOLDED="true" ID="ID_1991244597" MODIFIED="1561827469123" TEXT="vorl&#xe4;ufig eingeh&#xe4;ngt...">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...in den eigentlich kaputten DockManager
    </p>
  </body>
</html></richcontent>
<node CREATED="1533688853229" ID="ID_396920290" MODIFIED="1534508612332" TEXT="der NotificationHub (Controller) im Wizard erzeugt es">
<linktarget COLOR="#455086" DESTINATION="ID_396920290" ENDARROW="Default" ENDINCLINATION="-38;-97;" ID="Arrow_ID_729082861" SOURCE="ID_1850034653" STARTARROW="None" STARTINCLINATION="101;-7;"/>
</node>
<node CREATED="1533688860812" ID="ID_1631735052" MODIFIED="1533688874622" TEXT="direkt im aktiven WorkspaceWindow -&gt; PanelManager"/>
<node CREATED="1533688875242" ID="ID_708108999" MODIFIED="1533688887596" TEXT="solange bis Panel-Management umgebaut wird">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1534513356842" FOLDED="true" HGAP="34" ID="ID_1371608668" MODIFIED="1561827469123" TEXT="Begriffe kl&#xe4;ren...">
<arrowlink COLOR="#8a9dae" DESTINATION="ID_1031484560" ENDARROW="Default" ENDINCLINATION="1135;-5718;" ID="Arrow_ID_1369217030" STARTARROW="None" STARTINCLINATION="1238;-672;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1534513604257" ID="ID_724835920" MODIFIED="1534513612859" TEXT="Dock == DockArea"/>
<node CREATED="1534513617543" ID="ID_1874506167" MODIFIED="1534513631737" TEXT="DockItem == Panel"/>
</node>
<node CREATED="1533607995396" FOLDED="true" ID="ID_806494084" MODIFIED="1561827469123" TEXT="wieder das Problem: wie bekommt man&apos;s">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1533608171186" ID="ID_1446703192" MODIFIED="1533608449611" TEXT="#1104 how to instruct actions through panels">
<arrowlink COLOR="#9e99b7" DESTINATION="ID_1943521361" ENDARROW="Default" ENDINCLINATION="-1423;-376;" ID="Arrow_ID_779469840" STARTARROW="None" STARTINCLINATION="920;0;"/>
<icon BUILTIN="flag-yellow"/>
</node>
<node CREATED="1533608459780" ID="ID_1685349188" MODIFIED="1533608467039" TEXT="k&#xf6;nnen wir nicht sofort l&#xf6;sen"/>
<node CREATED="1533608471274" FOLDED="true" ID="ID_1700599331" MODIFIED="1561827464592" TEXT="aber m&#xfc;ssen der L&#xf6;sung vorgreifen">
<linktarget COLOR="#c1a9be" DESTINATION="ID_1700599331" ENDARROW="Default" ENDINCLINATION="123;115;" ID="Arrow_ID_399610434" SOURCE="ID_193790781" STARTARROW="None" STARTINCLINATION="282;-120;"/>
<icon BUILTIN="yes"/>
<node CREATED="1533608548408" ID="ID_154643654" MODIFIED="1533608602022" TEXT="man fragt einen Service: gib mir....">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      es ist schon bekannt, da&#223; dieser Service der <b>ViewLocator</b>&#160;sein wird,
    </p>
    <p>
      und da&#223; man ihn via <b>InteractionDirector</b>&#160;erreicht
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1533608609479" FOLDED="true" ID="ID_1375309708" MODIFIED="1561827464592" TEXT="Erzeugung">
<node CREATED="1533608626061" ID="ID_401916400" MODIFIED="1533608643287" TEXT="entweder aufgrund so einer Anfrage"/>
<node CREATED="1533608656121" ID="ID_448111831" MODIFIED="1533608669227" TEXT="oder explizit per User/Men&#xfc;-Aktion"/>
<node CREATED="1533608670271" ID="ID_216288706" MODIFIED="1533608678066" TEXT="oder generisch-fest-verdrahtet"/>
</node>
<node CREATED="1533608721200" FOLDED="true" ID="ID_724576502" MODIFIED="1561827464592" TEXT="Schlu&#xdf;folgerung">
<node CREATED="1533608737142" ID="ID_1087400544" MODIFIED="1533608752167" TEXT="der vollziehende Erzeuger braucht Zugang zum UI-Bus"/>
<node CREATED="1533608822826" ID="ID_1772827095" MODIFIED="1533608834604" TEXT="Schema zur reproduzierbaren ID-Generierung ist notwendig"/>
</node>
</node>
<node COLOR="#338800" CREATED="1534513723209" FOLDED="true" ID="ID_592805858" MODIFIED="1561827464592" TEXT="PanelManger liefert Panel">
<arrowlink COLOR="#99a7bd" DESTINATION="ID_1360472787" ENDARROW="Default" ENDINCLINATION="772;-6907;" ID="Arrow_ID_1137118362" STARTARROW="None" STARTINCLINATION="698;1616;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1534513739655" ID="ID_1688346556" MODIFIED="1534516101304" TEXT="Suche per Typ-ID">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1534516106942" ID="ID_1930444963" MODIFIED="1534516117582" TEXT="Referenz auf Panel zur&#xfc;ckliefern">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1534513747542" ID="ID_313486234" MODIFIED="1534513755681" TEXT="im Moment eine int-ID">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node COLOR="#338800" CREATED="1534513723209" FOLDED="true" ID="ID_1131466377" MODIFIED="1561827464592" TEXT="Zugang durch WindowLocator / PanelLocator">
<arrowlink COLOR="#aab7cb" DESTINATION="ID_1614049284" ENDARROW="Default" ENDINCLINATION="772;-6907;" ID="Arrow_ID_139428133" STARTARROW="None" STARTINCLINATION="676;1738;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1534520043319" ID="ID_1510680356" MODIFIED="1534520065894" TEXT="vorl&#xe4;ufige Implementierung">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1534520050783" ID="ID_193790781" MODIFIED="1534520115340" TEXT="greift vor auf ViewLocator">
<arrowlink COLOR="#c1a9be" DESTINATION="ID_1700599331" ENDARROW="Default" ENDINCLINATION="123;115;" ID="Arrow_ID_399610434" STARTARROW="None" STARTINCLINATION="282;-120;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
</node>
<node CREATED="1504203667130" FOLDED="true" HGAP="50" ID="ID_1745777873" MODIFIED="1561827469145" TEXT="vorl&#xe4;ufig Empf&#xe4;nger f&#xfc;r Fehler-Log" VSHIFT="2">
<arrowlink COLOR="#98a2c5" DESTINATION="ID_217810080" ENDARROW="Default" ENDINCLINATION="1891;-1228;" ID="Arrow_ID_1688804340" STARTARROW="None" STARTINCLINATION="-1261;74;"/>
<linktarget COLOR="#7893b2" DESTINATION="ID_1745777873" ENDARROW="Default" ENDINCLINATION="-499;-464;" ID="Arrow_ID_1590510093" SOURCE="ID_812129962" STARTARROW="None" STARTINCLINATION="808;0;"/>
<linktarget COLOR="#628195" DESTINATION="ID_1745777873" ENDARROW="Default" ENDINCLINATION="245;349;" ID="Arrow_ID_1743659141" SOURCE="ID_1981930639" STARTARROW="None" STARTINCLINATION="397;197;"/>
<icon BUILTIN="forward"/>
<node CREATED="1504203746239" ID="ID_697660682" MODIFIED="1538263469667" TEXT="Scroll-Pane">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1504203749815" FOLDED="true" ID="ID_1057483680" MODIFIED="1561827469123" STYLE="fork" TEXT="Textanzeige-Box">
<icon BUILTIN="button_ok"/>
<node CREATED="1504215911647" ID="ID_1066629131" MODIFIED="1538263469667" TEXT="GtkTextView"/>
<node CREATED="1504215958961" ID="ID_55797578" LINK="https://developer.gnome.org/gtkmm-tutorial/stable/sec-textview-buffer.html.en#textview-formatting" MODIFIED="1538263469667" TEXT="Formattierung">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1504219859389" FOLDED="true" ID="ID_653669269" MODIFIED="1538263469667" TEXT="Scrollen zum zuletzt eingef&#xfc;gten Text">
<arrowlink COLOR="#9bbabd" DESTINATION="ID_429138159" ENDARROW="Default" ENDINCLINATION="-1413;0;" ID="Arrow_ID_1025095859" STARTARROW="None" STARTINCLINATION="-1151;202;"/>
<icon BUILTIN="idea"/>
<node CREATED="1504220139416" ID="ID_1997485219" MODIFIED="1518487921054" TEXT="scroll_to(iterator) funktioniert nicht">
<icon BUILTIN="stop-sign"/>
</node>
<node CREATED="1504220198880" ID="ID_1877499848" MODIFIED="1518487921054" TEXT="mu&#xdf; Marke verwenden">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1504216221389" FOLDED="true" ID="ID_355253225" MODIFIED="1561827464612" TEXT="Marks">
<node CREATED="1504216224349" ID="ID_1372118244" MODIFIED="1538263469667" TEXT="was ist die &quot;insert&quot;-Mark?">
<icon BUILTIN="help"/>
</node>
<node CREATED="1504219835536" ID="ID_1720205947" MODIFIED="1538263469667" TEXT="der Text-Cursor">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node CREATED="1504203763606" ID="ID_877984616" MODIFIED="1538263469667" TEXT="in ein Widget verpacken">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1504203754175" FOLDED="true" ID="ID_580465154" MODIFIED="1561827469124" TEXT="Fehler-Level erkennen">
<arrowlink DESTINATION="ID_1459967459" ENDARROW="Default" ENDINCLINATION="-73;-253;" ID="Arrow_ID_424075973" STARTARROW="None" STARTINCLINATION="225;0;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1537754684692" FOLDED="true" HGAP="65" ID="ID_494305022" MODIFIED="1561827464612" TEXT="Rolle im API kl&#xe4;ren" VSHIFT="-12">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      brauchen wir diese zwischengeschaltete Methode <b>showMsg()</b>?
    </p>
    <p>
      w&#228;re es nicht sinnvoller, sie direkt auf das API zu heben?
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
<node CREATED="1538266114512" ID="ID_1994199296" MODIFIED="1538266139416" TEXT="Enum nur noch im NotificationService"/>
<node CREATED="1538266140789" ID="ID_965920969" MODIFIED="1538266163157" TEXT="Widget: drei einzelne API-Methoden"/>
<node CREATED="1538266165305" ID="ID_318361090" MODIFIED="1538266174884" TEXT="Controller: in Protokoll integriert"/>
</node>
</node>
<node COLOR="#338800" CREATED="1534725200588" FOLDED="true" ID="ID_871562482" MODIFIED="1561827469124" TEXT="Operationen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1534725109137" FOLDED="true" ID="ID_694776463" MODIFIED="1538756305396" TEXT="expand">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1534725397553" FOLDED="true" ID="ID_1072347956" MODIFIED="1561827464612" TEXT="collapsed-Repr&#xe4;sentation schaffen">
<icon BUILTIN="button_ok"/>
<node CREATED="1535554610295" ID="ID_1050608842" MODIFIED="1538263469668" TEXT="nur vorl&#xe4;ufige L&#xf6;sung">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#435e98" CREATED="1535629564615" FOLDED="true" ID="ID_1047933726" MODIFIED="1561827464612" TEXT="Gtk::Expander">
<arrowlink COLOR="#4561ae" DESTINATION="ID_1889724128" ENDARROW="Default" ENDINCLINATION="-1778;-100;" ID="Arrow_ID_219393455" STARTARROW="None" STARTINCLINATION="-6486;0;"/>
<icon BUILTIN="idea"/>
<node CREATED="1535557111546" ID="ID_649935976" MODIFIED="1538263469668" TEXT="Label-Text als ctor param"/>
<node CREATED="1535557122205" ID="ID_1034248466" MODIFIED="1538263469668" TEXT="resize_toplevel (=true by default)">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...ob beim Expand/Collapse das umschlie&#223;ende Widget resized werden soll
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#990000" CREATED="1535563193014" FOLDED="true" ID="ID_1551506828" MODIFIED="1538277321257" TEXT="Problem: dehnt sich nicht aus">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1535563256725" ID="ID_327777357" MODIFIED="1535563288805" TEXT="scrolled pane belegt nur minimal notwendigen Platz"/>
<node CREATED="1535563300695" ID="ID_862867674" MODIFIED="1535563311905" TEXT="egal ob initial zugeklappt (=default) oder aufgeklappt"/>
<node CREATED="1535563317214" ID="ID_201611533" MODIFIED="1535563330839" TEXT="egal in welcher Reihenfolge man es hinzuf&#xfc;gt"/>
<node CREATED="1535563334050" ID="ID_718726647" MODIFIED="1535563366331" TEXT="dagegen direkt im Frame dehnt sie sich aus"/>
</node>
<node COLOR="#338800" CREATED="1535629564615" ID="ID_228360739" MODIFIED="1538263469668" TEXT="L&#xf6;sung: Widget::property_expand()">
<arrowlink COLOR="#6277b2" DESTINATION="ID_860094095" ENDARROW="Default" ENDINCLINATION="-1778;-100;" ID="Arrow_ID_761942436" STARTARROW="None" STARTINCLINATION="-6486;0;"/>
<icon BUILTIN="info"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1535554640586" FOLDED="true" ID="ID_1376241476" MODIFIED="1561827464613" TEXT="essentiell: passiert im Parent-Widget">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>...wesentliches Struktur-Element:</p>
    <p>der Parent-Container ist f&#252;r das expand/collapse zust&#228;ndig</p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1535634032601" FOLDED="true" ID="ID_964641889" MODIFIED="1561827464613" TEXT="Design-Problem: sich expandieren">
<icon BUILTIN="button_ok"/>
<node CREATED="1535634116925" FOLDED="true" ID="ID_1129948550" MODIFIED="1561827464612" TEXT="Voraussetzung: unser Widget-Protokoll">
<node CREATED="1535634127852" ID="ID_317106359" MODIFIED="1538263469668" TEXT="enth&#xe4;lt eine expand()-Methode"/>
<node CREATED="1535636097808" ID="ID_1540209936" MODIFIED="1538263469668" TEXT="Unterschied Widget / Controller ?">
<icon BUILTIN="help"/>
</node>
</node>
<node CREATED="1535636169439" FOLDED="true" ID="ID_631287309" MODIFIED="1538263469668" TEXT="zwei Modelle denkbar">
<icon BUILTIN="yes"/>
<node CREATED="1535636219312" FOLDED="true" ID="ID_1940674226" MODIFIED="1561827464612" TEXT="Widget ist Expander">
<icon BUILTIN="full-1"/>
<node CREATED="1535636281176" ID="ID_232056866" MODIFIED="1535636470569" TEXT="w&#xe4;hle &quot;das Widget&quot; geeignet">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1535636297102" ID="ID_1966837488" MODIFIED="1535636338854">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      als <i>denjenigen</i>&#160;Container...
    </p>
    <p>
      ...der das <i>eigentliche</i>&#160;Widget expandieren kann
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1535636621140" FOLDED="true" ID="ID_1785708787" MODIFIED="1561827464612" TEXT="pro">
<node CREATED="1535636644385" ID="ID_976356089" MODIFIED="1535636649884" TEXT="elegantes Design"/>
<node CREATED="1535636650664" ID="ID_457403473" MODIFIED="1535636661234" TEXT="minimalistisch"/>
</node>
<node CREATED="1535636640849" FOLDED="true" ID="ID_1629039815" MODIFIED="1561827464612" TEXT="con">
<node CREATED="1535636663334" ID="ID_1826518668" MODIFIED="1535636693159" TEXT="ordnet alle anderen Belange diesem Belang unter">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ggfs m&#252;ssen alle anderen Funktionen nach unten delegieren
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1535636755202" ID="ID_507299995" MODIFIED="1535636897708" TEXT="kann grunds&#xe4;tzlich nicht alle F&#xe4;lle abdecken">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      wenn n&#228;mlich das &quot;Expandieren&quot; in einen weiter reichenden Zusammenhang integriert ist,
    </p>
    <p>
      wie z.B. Darstellung in verschiedenen Detailierungs-Graden, oder ein generelles
    </p>
    <p>
      Fokus-/Layout- Management <i>mehrerer</i>&#160;Komponenten zusammen
    </p>
    <p>
      
    </p>
    <p>
      Standard-Beispiel: Property-Panel
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1535636904118" FOLDED="true" ID="ID_489559609" MODIFIED="1561827464612" TEXT="Fazit">
<icon BUILTIN="button_cancel"/>
<node CREATED="1535636909262" ID="ID_1644409361" MODIFIED="1535636911657" TEXT="abgelehnt"/>
<node CREATED="1535636912365" ID="ID_298319841" MODIFIED="1535636929783" TEXT="da einfacher als die Essenz"/>
</node>
</node>
<node CREATED="1535636231135" FOLDED="true" ID="ID_913979725" MODIFIED="1561827464613" TEXT="Widget kennt Expander">
<icon BUILTIN="full-2"/>
<node CREATED="1535636486110" ID="ID_285628512" MODIFIED="1535636495891" TEXT="in Form eines Adapters">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1535636600599" ID="ID_103556348" MODIFIED="1535636618368" TEXT="der die &quot;expand/collapse&quot;-Funktionalit&#xe4;t abstrahiert"/>
<node CREATED="1535637406019" FOLDED="true" ID="ID_1125726861" MODIFIED="1561827464612" TEXT="erm&#xf6;glicht generische Impl">
<node CREATED="1535637416210" ID="ID_1038164215" MODIFIED="1535637424461" TEXT="Gegenwart des Adapters schaltet Feature ein"/>
<node CREATED="1535637441351" ID="ID_181377485" MODIFIED="1535637498835" TEXT="Standard-Adapter f&#xfc;r Gtk::Expander"/>
<node CREATED="1535637512597" ID="ID_1713615715" MODIFIED="1535637520896" TEXT="Parent-Container kann Adapter selber implementieren"/>
<node CREATED="1535637534163" ID="ID_1194572504" MODIFIED="1535637548308" TEXT="kann mit &quot;Reveal&quot;-Funktion kombiniert werden"/>
<node CREATED="1535638307459" ID="ID_1697210606" MODIFIED="1535638391524" TEXT="possibly to discover dynamically">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...wenn wir eine Mix-in -Implementierung w&#228;hlen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1535638228558" FOLDED="true" ID="ID_1027845785" MODIFIED="1561827464613" TEXT="Fazit">
<icon BUILTIN="button_ok"/>
<node CREATED="1535638234405" ID="ID_1845070371" MODIFIED="1535638250610" TEXT="komplex mit der Gefahr des Over-Engineering">
<icon BUILTIN="messagebox_warning"/>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1535638255138" ID="ID_591635299" MODIFIED="1535638276217" TEXT="erscheint trotzdem als die angemessene L&#xf6;sung">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="forward"/>
</node>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1535731363267" FOLDED="true" ID="ID_603236457" MODIFIED="1561827464613" TEXT="L&#xf6;sung">
<arrowlink COLOR="#5f8cc1" DESTINATION="ID_447101734" ENDARROW="Default" ENDINCLINATION="22;-23;" ID="Arrow_ID_272345450" STARTARROW="None" STARTINCLINATION="-97;-5;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1535731373978" ID="ID_182280315" MODIFIED="1538263469668" TEXT="Widget h&#xe4;lt einen Expander-Funktor"/>
<node CREATED="1535731402126" ID="ID_1177558244" MODIFIED="1538263469668" TEXT="damit ist eine Standard-Impl von Tangible::doExpand() m&#xf6;glich">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1535638412517" FOLDED="true" ID="ID_447101734" MODIFIED="1561827464613" TEXT="Adapter-Interfaces entwerfen">
<arrowlink COLOR="#709eaf" DESTINATION="ID_316446199" ENDARROW="Default" ENDINCLINATION="-354;-490;" ID="Arrow_ID_1105268233" STARTARROW="None" STARTINCLINATION="-3385;0;"/>
<linktarget COLOR="#5f8cc1" DESTINATION="ID_447101734" ENDARROW="Default" ENDINCLINATION="22;-23;" ID="Arrow_ID_272345450" SOURCE="ID_603236457" STARTARROW="None" STARTINCLINATION="-97;-5;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1535725900392" ID="ID_489679545" MODIFIED="1538263469668" TEXT="Expander">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1535725906647" ID="ID_1380126396" MODIFIED="1538263469668" TEXT="Revealer">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1535726065753" FOLDED="true" ID="ID_578786610" MODIFIED="1561827464613" TEXT="default-Impl doExpand()">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1535726077504" ID="ID_1806068721" MODIFIED="1538263469668" TEXT="pr&#xfc;fen: canExpand">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1535726086631" ID="ID_1753268128" MODIFIED="1538263469668" TEXT="Expander aufrufen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1535743810027" ID="ID_778321095" MODIFIED="1538263469668" TEXT="bestehende default-Impl aus Widget/Controller entfernen">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1535725923421" FOLDED="true" ID="ID_298871659" MODIFIED="1561827464613" TEXT="Expander geeignet verdrahten">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1535725940226" ID="ID_162482468" MODIFIED="1538263469668" TEXT="validiert das Design">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1535743705113" ID="ID_54369760" MODIFIED="1538263469668" TEXT="auch MockElm anpassen">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1535737902126" FOLDED="true" ID="ID_1001984094" MODIFIED="1561827464613" TEXT="Unit-Test">
<icon BUILTIN="button_ok"/>
<node CREATED="1535750033829" ID="ID_1808097547" MODIFIED="1538263469668" TEXT="AbstractTangible_test::markState()">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1535750110787" ID="ID_1169665466" MODIFIED="1538263469668" TEXT="tested implizit die neue default-Implementierung mit">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1534725101578" FOLDED="true" ID="ID_974315967" MODIFIED="1561827464613" TEXT="clearAll">
<icon BUILTIN="button_ok"/>
<node CREATED="1538277182898" ID="ID_1432000446" MODIFIED="1538277242242" TEXT="Marker-Tabelle leeren"/>
<node CREATED="1538277192232" ID="ID_94588950" MODIFIED="1538277241203" TEXT="Platzhalter-Zeile">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...um den Umstand zu dokumentieren,
    </p>
    <p>
      da&#223; hier ## Zeilen gel&#246;scht wurden
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#338800" CREATED="1534725131214" ID="ID_1479834475" MODIFIED="1538263469668" TEXT="addMsg">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1534725152139" FOLDED="true" ID="ID_887758432" MODIFIED="1538756202003" TEXT="addError">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1534725422454" FOLDED="true" ID="ID_1459967459" MODIFIED="1561827464614" TEXT="spezieller Markup">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1459967459" ENDARROW="Default" ENDINCLINATION="-73;-253;" ID="Arrow_ID_424075973" SOURCE="ID_580465154" STARTARROW="None" STARTINCLINATION="225;0;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1537571906634" FOLDED="true" ID="ID_1839759637" MODIFIED="1561827464614" TEXT="Tags anlegen">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1537571917625" FOLDED="true" ID="ID_1900926418" MODIFIED="1561827464614" TEXT="k&#xe4;ren: CSS?">
<icon BUILTIN="help"/>
<node COLOR="#435e98" CREATED="1535629564615" HGAP="43" ID="ID_1432671260" MODIFIED="1538263469668" TEXT="GTK-Styling, CSS f&#xfc;r Custom-Widgets" VSHIFT="-35">
<arrowlink COLOR="#6277b2" DESTINATION="ID_1174884362" ENDARROW="Default" ENDINCLINATION="-2315;-45;" ID="Arrow_ID_380937946" STARTARROW="None" STARTINCLINATION="-7413;0;"/>
<icon BUILTIN="info"/>
</node>
<node CREATED="1537661752104" ID="ID_373027917" MODIFIED="1538263469668" TEXT="wohl nicht so einfach"/>
<node COLOR="#338800" CREATED="1537661764454" FOLDED="true" ID="ID_1004400727" MODIFIED="1561827464613" TEXT="Untersuchen per Inspector">
<icon BUILTIN="info"/>
<node CREATED="1538707192879" ID="ID_253847354" MODIFIED="1538707208726" TEXT="jedes Tag ist einzeln in der Objekt-Hierarchie vorhanden"/>
<node CREATED="1538707176081" ID="ID_1239285032" MODIFIED="1538707284654">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      erscheint <b>definitiv nicht</b>&#160;als CSS-Node
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#338800" CREATED="1537661787387" FOLDED="true" ID="ID_20967740" MODIFIED="1561827464614" TEXT="vorl&#xe4;ufig hart verdrahten">
<icon BUILTIN="button_ok"/>
<node CREATED="1537752420235" ID="ID_922959985" MODIFIED="1538263469668" TEXT="Funktion zum Populieren der Tag-Table"/>
<node CREATED="1537752434280" ID="ID_1053927695" MODIFIED="1538263469669" TEXT="k&#xf6;nnte in den StyleManager wandern">
<arrowlink COLOR="#b3a9c1" DESTINATION="ID_758790930" ENDARROW="Default" ENDINCLINATION="96;-5;" ID="Arrow_ID_1283375190" STARTARROW="None" STARTINCLINATION="-17;39;"/>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1537571928143" ID="ID_221069673" MODIFIED="1538263469669" TEXT="Tag f&#xfc;r Warnung">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1537571934143" ID="ID_447258227" MODIFIED="1538263469669" TEXT="Tag f&#xfc;r Fehler">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1537571949893" ID="ID_328949056" MODIFIED="1538263469669" TEXT="Tags zuweisen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1537571956436" ID="ID_1806243350" MODIFIED="1538587722314" TEXT="Tags entfernen">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1806243350" ENDARROW="Default" ENDINCLINATION="294;-15;" ID="Arrow_ID_52974407" SOURCE="ID_383201596" STARTARROW="None" STARTINCLINATION="294;-15;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1534725501467" FOLDED="true" ID="ID_1420459325" MODIFIED="1538587929492" TEXT="Bookmark speichern">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1537535919147" FOLDED="true" ID="ID_1338221225" MODIFIED="1561827464614" TEXT="Technologie">
<icon BUILTIN="info"/>
<node CREATED="1537535925874" FOLDED="true" ID="ID_196796680" MODIFIED="1561827464614" TEXT="Tag / TagTable">
<icon BUILTIN="button_cancel"/>
<node CREATED="1537535939265" ID="ID_1176049085" MODIFIED="1538263469669" TEXT="geht nicht"/>
<node CREATED="1537535943840" ID="ID_694044876" MODIFIED="1538263469669" TEXT="man kann nicht nach Tags suchen"/>
<node CREATED="1537536772568" ID="ID_332685872" MODIFIED="1538263469669" TEXT="(Suchen kann man auf dem Iterator)"/>
</node>
<node CREATED="1537536783583" FOLDED="true" ID="ID_883754303" MODIFIED="1561827464614" TEXT="Mark verwenden">
<icon BUILTIN="forward"/>
<node CREATED="1537536791477" ID="ID_1332288045" MODIFIED="1538263469669" TEXT="mu&#xdf; Index daf&#xfc;r selber pflegen"/>
<node CREATED="1537536808627" ID="ID_609351839" MODIFIED="1538263469669" TEXT="kann dann direkt zur Mark springen"/>
<node CREATED="1537536819657" ID="ID_1987418184" MODIFIED="1538263469669" TEXT="wird durch Edits/Insterts nicht gest&#xf6;rt">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1537571771685" FOLDED="true" ID="ID_1198199438" MODIFIED="1561827464614" TEXT="ErrorIndex">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1537571794801" FOLDED="true" ID="ID_1255966338" MODIFIED="1561827464614" TEXT="einf&#xfc;gen">
<icon BUILTIN="button_ok"/>
<node CREATED="1538581675841" ID="ID_914012802" MODIFIED="1538581695036" TEXT="Problem: brauche Anfangs und Endpunkt">
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#338800" CREATED="1538581696238" ID="ID_579972167" MODIFIED="1538581705246" TEXT="speichere ein Paar von Marken">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1538581570783" FOLDED="true" ID="ID_1599117331" MODIFIED="1561827464614" TEXT="Problem: Ende wandert mit...">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...das liegt vermutlich daran, da&#223; ich die zweite Marke mit &quot;right gravity&quot; einf&#252;ge,
    </p>
    <p>
      aber eben am absoluten Ende des Buffers. Damit wird sie hinter jeder Einf&#252;gung bleiben
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
<node CREATED="1538585387424" ID="ID_151756918" MODIFIED="1538585442447" TEXT="Trick: erst abschlie&#xdf;enden Zeilenumbruch">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1538585409653" ID="ID_584738161" MODIFIED="1538585447421">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...dann Einf&#252;gestelle <i>davor</i>&#160;platzieren
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1537571882918" FOLDED="true" ID="ID_620353485" MODIFIED="1561827464614" TEXT="reorganisieren">
<icon BUILTIN="button_cancel"/>
<node CREATED="1538586059134" ID="ID_5616537" MODIFIED="1538586065889" TEXT="besser wegwerfen und neu bauen"/>
</node>
</node>
</node>
<node CREATED="1537537333987" FOLDED="true" ID="ID_667263409" MODIFIED="1561827464614" TEXT="&#xdc;bersicht">
<icon BUILTIN="button_ok"/>
<node CREATED="1537537339011" FOLDED="true" ID="ID_1759202815" MODIFIED="1561827464614" TEXT="L&#xf6;sung">
<icon BUILTIN="help"/>
<node CREATED="1537537345410" ID="ID_1560200040" MODIFIED="1538263469669" TEXT="Toolbar verwenden?">
<icon BUILTIN="help"/>
</node>
<node CREATED="1537537353105" ID="ID_409330854" MODIFIED="1538263469669" TEXT="ButtonBox verwenden?">
<icon BUILTIN="help"/>
</node>
<node CREATED="1537571223088" ID="ID_1186576760" MODIFIED="1538263469669" TEXT="erst mal gar nicht">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      YAGNI
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1537571240500" FOLDED="true" ID="ID_1601115005" MODIFIED="1538756163375" TEXT="nur &gt;&gt; (n&#xe4;chster Fehler)">
<icon BUILTIN="hourglass"/>
<node CREATED="1537571669683" ID="ID_196982892" MODIFIED="1538263469669" TEXT="wenn es Fehler gibt"/>
<node CREATED="1537571681249" ID="ID_1273769655" MODIFIED="1538263469669" TEXT="wenn es mehr Zeilen gibt"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1538756156811" ID="ID_27239439" MODIFIED="1538756161793" TEXT="YAGNI">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#338800" CREATED="1537572133580" ID="ID_671753441" MODIFIED="1538756131546" TEXT="Button: clear Errors">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1537572142139" ID="ID_1644572130" MODIFIED="1538756133431" TEXT="Button: clear all">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1537531676045" FOLDED="true" ID="ID_548104404" MODIFIED="1561827464615" TEXT="addWarning">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1537531682564" ID="ID_1510582702" MODIFIED="1538263469669" TEXT="nur speziell ausgezeichnete Meldung">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1534725142756" FOLDED="true" ID="ID_343395831" MODIFIED="1538756206590" TEXT="clearInfoMsg">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1538581145248" ID="ID_643768128" MODIFIED="1538581206025" TEXT="neuen TextBuffer anlegen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1538581157502" ID="ID_1715975641" MODIFIED="1538581204913" TEXT="nur die Fehler-Eintr&#xe4;ge &#xfc;bertragen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1538581168092" ID="ID_404563793" MODIFIED="1538581204032" TEXT="dabei auch einen neuen Mark-Index populieren">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1538581183986" ID="ID_147260284" MODIFIED="1538581203099" TEXT="Alten gegen Neuen austauschen">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1534725160618" FOLDED="true" ID="ID_1981616896" MODIFIED="1538756208941" TEXT="turnError_into_InfoMsg">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1534725575098" ID="ID_383201596" MODIFIED="1538587760128" TEXT="Markup reduzieren">
<arrowlink DESTINATION="ID_1806243350" ENDARROW="Default" ENDINCLINATION="294;-15;" ID="Arrow_ID_52974407" STARTARROW="None" STARTINCLINATION="294;-15;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1534725587112" ID="ID_31905080" MODIFIED="1538587763137" TEXT="Bookmarks entfernen">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1534725180543" FOLDED="true" ID="ID_1442607312" MODIFIED="1538756210290" TEXT="triggerFlash">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1534725283337" FOLDED="true" ID="ID_1256364821" MODIFIED="1561827464615" TEXT="farbigen Rahmen">
<icon BUILTIN="button_ok"/>
<node CREATED="1534725366734" ID="ID_951505172" MODIFIED="1538618155829" TEXT="verwende zus&#xe4;tzliche Klasse">
<arrowlink COLOR="#877796" DESTINATION="ID_758790930" ENDARROW="Default" ENDINCLINATION="315;0;" ID="Arrow_ID_564282272" STARTARROW="None" STARTINCLINATION="649;0;"/>
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1538707399447" FOLDED="true" ID="ID_1845737933" MODIFIED="1561827464615" TEXT="Rahmen auch auf Kind-Objekte setzen">
<icon BUILTIN="button_ok"/>
<node CREATED="1538707420444" ID="ID_334911121" MODIFIED="1538707474258" TEXT="denn nur so erscheint er z.B. bei einem TextView">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      das Widget hat offensichtlich keine eigene graphische Repr&#228;sentation.
    </p>
    <p>
      dieser Fall d&#252;rfte h&#228;ufiger auftreten
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1538618157537" FOLDED="true" ID="ID_1728464265" MODIFIED="1561827464615" TEXT="Problem: kaputtes Stylesheet">
<icon BUILTIN="button_ok"/>
<node CREATED="1538618179734" ID="ID_1693288014" MODIFIED="1538618198551" TEXT="das Lumiera-eigene Stylesheet funktioniert praktisch gar nicht mehr"/>
<node CREATED="1538618201035" ID="ID_1034140537" MODIFIED="1538618349191" TEXT="...seitdem die Engine &apos;Adwaitha&apos; nicht mehr gefunden wird">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ca 2014 finde ich einige Blog-Eintr&#228;ge, da&#223; jetzt keine Theming-Engine mehr notwendig ist,
    </p>
    <p>
      weil man alles per CSS machen kann. Seit Jessie findet GTK die Engine nicht mehr,
    </p>
    <p>
      obwohl das Standard-Theme-Paket installiert ist.
    </p>
    <p>
      
    </p>
    <p>
      Dummerweise funktioniert nun aber auch das &#220;bersteuern mit unseren Farben nicht mehr
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#338800" CREATED="1538707301511" FOLDED="true" ID="ID_265456880" MODIFIED="1561827464615" TEXT="vorl&#xe4;ufig gel&#xf6;st">
<icon BUILTIN="button_ok"/>
<node CREATED="1538707313237" ID="ID_1871755466" MODIFIED="1538707323542" TEXT="Theming-Engine nicht mehr notwendig"/>
<node CREATED="1538707324276" ID="ID_876477218" MODIFIED="1538707360310" TEXT="alternatives Erg&#xe4;nzungs-Stylesheet angelegt">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...welches ich zusammen mit meinem
    </p>
    <p>
      normalen 'light' destkop-theme verwenden kann
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1534725292080" FOLDED="true" ID="ID_1462887421" MODIFIED="1561827464615" TEXT="timeout setzen">
<icon BUILTIN="button_ok"/>
<node CREATED="1538590120545" ID="ID_1847571040" MODIFIED="1538590128908" TEXT="Glib::timeout nutzen"/>
<node CREATED="1538590129616" ID="ID_9828219" MODIFIED="1538590145185" TEXT="analog zum Ctor InteractionDirector">
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#338800" CREATED="1538590112698" FOLDED="true" ID="ID_360284784" MODIFIED="1561827464616" TEXT="generisch anlegen">
<icon BUILTIN="button_ok"/>
<node CREATED="1538591568439" FOLDED="true" ID="ID_1863162820" MODIFIED="1561827464615" TEXT="Idee: Flasher">
<icon BUILTIN="idea"/>
<node CREATED="1538591875574" ID="ID_701299048" MODIFIED="1538592020697" TEXT="mu&#xdf; von Gtk::Widget erben">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1538591734386" FOLDED="true" ID="ID_1790046084" MODIFIED="1561827464615" TEXT="void flash()">
<node CREATED="1538591895692" ID="ID_954326123" MODIFIED="1538591904679" TEXT="installiert Glib::timeout"/>
<node CREATED="1538591905458" ID="ID_817752728" MODIFIED="1538591950857" TEXT="f&#xfc;gt CSS-Klasse hinzu"/>
</node>
<node CREATED="1538591750359" FOLDED="true" ID="ID_1546318660" MODIFIED="1561827464615" TEXT="void flashback()">
<node CREATED="1538591954100" ID="ID_248197618" MODIFIED="1538591969766" TEXT="vom Timeout aufgerufen"/>
<node CREATED="1538591970498" ID="ID_1898943385" MODIFIED="1538591977037" TEXT="entfernt CSS-Klasse"/>
</node>
</node>
<node CREATED="1538592070125" FOLDED="true" ID="ID_30810203" MODIFIED="1561827464615" TEXT="Varianten">
<icon BUILTIN="button_cancel"/>
<node CREATED="1538592125238" FOLDED="true" ID="ID_1673239146" MODIFIED="1561827464615" TEXT="hat WLink auf target-widget">
<node CREATED="1538592323691" ID="ID_567150569" MODIFIED="1538592333222" TEXT="lebt irgendwo als Member"/>
<node CREATED="1538592438724" ID="ID_1623451463" MODIFIED="1538592446455" TEXT="mu&#xdf; explizit mit dem Target verbunden werden"/>
</node>
<node CREATED="1538592135452" FOLDED="true" ID="ID_526442862" MODIFIED="1561827464615" TEXT="freischwebende selbsterhaltende Heap-Allokation">
<node CREATED="1538592277209" ID="ID_1333427334" MODIFIED="1538592290619" TEXT="flashback() endet mit Suizid"/>
<node CREATED="1538592450338" ID="ID_1611670382" MODIFIED="1538592470811" TEXT="Memory-Leak wenn flashback() ausbleibt"/>
</node>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1538592473055" FOLDED="true" ID="ID_1323523600" MODIFIED="1561827464615" TEXT="Beschlu&#xdf;: Mixin-Design">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node CREATED="1538606819103" ID="ID_404941112" MODIFIED="1538607019739" TEXT="Balance">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      denn dieses Design gibt die beste Balance zwischen den Belangen
    </p>
    <ul>
      <li>
        kein zus&#228;tzlicher Speicherbedarf
      </li>
      <li>
        Callback ist automatisch abgesichert (sigc::mem_fun auf Trackable)
      </li>
      <li>
        kann direkt auf das Styling des Parent zugreifen
      </li>
    </ul>
    <p>
      Einziger Nachteil ist die etwas verwirrende Schreibweise des dekorierten Typs
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1538607106686" ID="ID_1879979063" MODIFIED="1538607368158" TEXT="z.B: FlashDeco&lt;Gtk::TextView&gt;"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1534722011622" FOLDED="true" ID="ID_232472679" MODIFIED="1538756217350" TEXT="revealYourself">
<linktarget COLOR="#76a4ad" DESTINATION="ID_232472679" ENDARROW="Default" ENDINCLINATION="94;307;" ID="Arrow_ID_634173548" SOURCE="ID_898428560" STARTARROW="None" STARTINCLINATION="859;27;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1535726017256" FOLDED="true" ID="ID_899234988" MODIFIED="1561827464616" TEXT="default-Impl doReveal()">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1535726035309" ID="ID_1034773573" MODIFIED="1538263469670" TEXT="pr&#xfc;fen canReveal">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1535726053483" ID="ID_628118697" MODIFIED="1538263469670" TEXT="Revealer aufrufen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1535743810027" ID="ID_1786165843" MODIFIED="1538263469670" TEXT="bestehende default-Impl aus Widget/Controller entfernen">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1534722062911" ID="ID_1134044414" MODIFIED="1538263469670" TEXT="braucht Parent-Link">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1534722073526" ID="ID_1428186731" MODIFIED="1538263469670" TEXT="parent.reveal(this)">
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#338800" CREATED="1535725982021" FOLDED="true" ID="ID_858097581" MODIFIED="1561827464616" TEXT="Revealer geeignet verdrahten">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1535743705113" ID="ID_267884906" MODIFIED="1538263469670" TEXT="auch MockElm anpassen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1535743754227" ID="ID_1964115972" MODIFIED="1538263469670" TEXT="doReveal(ID) API entfernen">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1535737911365" FOLDED="true" ID="ID_79619425" MODIFIED="1561827464616" TEXT="Unit-Test: AbtractTangible_test erweitern">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1535815055702" ID="ID_493114230" MODIFIED="1538263469670" TEXT="EventLog: Problem mit Backtracking">
<arrowlink COLOR="#80b3ba" DESTINATION="ID_1041148737" ENDARROW="Default" ENDINCLINATION="-1705;-7489;" ID="Arrow_ID_1257144480" STARTARROW="None" STARTINCLINATION="838;114;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1537320168170" ID="ID_1213843922" MODIFIED="1538263469670" TEXT="danach l&#xe4;&#xdf;t sich die gew&#xfc;nschte Log-Bedingung formulieren">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1535756076321" FOLDED="true" ID="ID_1044092797" MODIFIED="1561827464616" TEXT="konkret was machen, damit man die Funktion sehen kann">
<linktarget COLOR="#58c39d" DESTINATION="ID_1044092797" ENDARROW="Default" ENDINCLINATION="169;308;" ID="Arrow_ID_1805058492" SOURCE="ID_1726008784" STARTARROW="None" STARTINCLINATION="890;-197;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1537461362558" ID="ID_1738911844" MODIFIED="1538263469670" TEXT="Idee: ggfs minimiertes DockItem wiederherstellen">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1537499243954" FOLDED="true" ID="ID_971802810" MODIFIED="1561827464616" TEXT="versuche mal Panel::show(true)">
<icon BUILTIN="help"/>
<node COLOR="#338800" CREATED="1537499275630" FOLDED="true" ID="ID_1288942046" MODIFIED="1561827464616" TEXT="verdrahtet in den Revealer">
<icon BUILTIN="button_ok"/>
<node CREATED="1537499313305" ID="ID_1086105877" MODIFIED="1538263469670" TEXT="von ErrorLogDisplay"/>
<node CREATED="1537499333798" ID="ID_57237574" MODIFIED="1538263469670" TEXT="verdrahtet in InfoboxPanel::getLog()"/>
</node>
<node CREATED="1537499267335" ID="ID_608745909" MODIFIED="1538574682605" TEXT="keine Ahnung ob das was bewirkt...">
<icon BUILTIN="help"/>
</node>
<node COLOR="#338800" CREATED="1538574348519" FOLDED="true" ID="ID_1605278639" MODIFIED="1538574397921" TEXT="funktioniert">
<icon BUILTIN="button_ok"/>
<node CREATED="1538574378707" ID="ID_1292635888" MODIFIED="1538574394169" TEXT="es erzeugt ein neues freischwebendes Panel">
<icon BUILTIN="info"/>
</node>
<node CREATED="1538574380386" ID="ID_1693045801" MODIFIED="1538574388709" TEXT="sofern das Panel vorher geschlossen wurde"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1537661799354" FOLDED="true" ID="ID_758790930" MODIFIED="1561827469124" TEXT="Style-Manager vorsehen">
<arrowlink COLOR="#8f81b2" DESTINATION="ID_407535546" ENDARROW="Default" ENDINCLINATION="3769;-2728;" ID="Arrow_ID_1203118148" STARTARROW="None" STARTINCLINATION="-1594;0;"/>
<linktarget COLOR="#b3a9c1" DESTINATION="ID_758790930" ENDARROW="Default" ENDINCLINATION="96;-5;" ID="Arrow_ID_1283375190" SOURCE="ID_1053927695" STARTARROW="None" STARTINCLINATION="-17;39;"/>
<linktarget COLOR="#877796" DESTINATION="ID_758790930" ENDARROW="Default" ENDINCLINATION="315;0;" ID="Arrow_ID_564282272" SOURCE="ID_951505172" STARTARROW="None" STARTINCLINATION="649;0;"/>
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1538588393995" HGAP="214" ID="ID_828368967" MODIFIED="1538589740205" TEXT="#1168 : find a way to manage style of custom extended UI elements" VSHIFT="19">
<icon BUILTIN="flag-yellow"/>
</node>
<node COLOR="#435e98" CREATED="1538588393995" FOLDED="true" HGAP="212" ID="ID_47427991" MODIFIED="1538589740205" TEXT="geeignetes Aufrufmuster schon mal angelegt" VSHIFT="-1">
<icon BUILTIN="button_ok"/>
<node CREATED="1538588510003" ID="ID_217668977" MODIFIED="1538588519598" TEXT="anscheinend geht hier nix per CSS"/>
<node CREATED="1538588520377" ID="ID_178600292" MODIFIED="1538588531044" TEXT="daher: Tags per Name einf&#xfc;gen"/>
<node CREATED="1538588531824" ID="ID_1287551637" MODIFIED="1538588544522" TEXT="Tags zentral populieren"/>
</node>
</node>
<node COLOR="#338800" CREATED="1538746635373" FOLDED="true" ID="ID_1501747643" MODIFIED="1561827469124" TEXT="Error-Flag (Zustand)">
<linktarget COLOR="#87a5af" DESTINATION="ID_1501747643" ENDARROW="Default" ENDINCLINATION="54;212;" ID="Arrow_ID_512060720" SOURCE="ID_1074988560" STARTARROW="None" STARTINCLINATION="788;93;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1538746644284" ID="ID_1672227402" MODIFIED="1538746653979" TEXT="wenn ein Error-Eintrag im Index steht">
<icon BUILTIN="info"/>
</node>
<node COLOR="#338800" CREATED="1538746666721" ID="ID_9727272" MODIFIED="1538747828042" TEXT="Pr&#xe4;dikat zur Erkennung">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1538746673144" ID="ID_1324190008" MODIFIED="1538747829912" TEXT="Signal welcehs bei Status-&#xc4;nderung triggert">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1538746726849" FOLDED="true" ID="ID_1790025982" MODIFIED="1561827464617" TEXT="Buttons im InfoboxPanel steuern (Proof-of-Concept)">
<icon BUILTIN="button_ok"/>
<node CREATED="1538751082832" ID="ID_783222361" MODIFIED="1538756010539" TEXT="mu&#xdf; initialen Zustand schedulen">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1538756013358" ID="ID_1905873400" MODIFIED="1538756056312" TEXT="denn show_all() stellt Aktionen in die Event-Queue">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1533689031860" HGAP="97" ID="ID_657232437" MODIFIED="1679362063151" TEXT="Implementierung" VSHIFT="9">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1533689046050" ID="ID_32330448" MODIFIED="1538263469670" TEXT="ErrorLog-Widget">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1533689055601" FOLDED="true" ID="ID_335901895" MODIFIED="1561827482907" TEXT="InfoboxPanel anlegen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1534523190695" FOLDED="true" ID="ID_1941760302" MODIFIED="1561827469145" TEXT="ErrorLog bei Bedarf belegen">
<arrowlink COLOR="#88a8b3" DESTINATION="ID_1806645586" ENDARROW="Default" ENDINCLINATION="-186;-20;" ID="Arrow_ID_948128706" STARTARROW="None" STARTINCLINATION="4;109;"/>
<linktarget COLOR="#7ca8bc" DESTINATION="ID_1941760302" ENDARROW="Default" ENDINCLINATION="-1967;5936;" ID="Arrow_ID_192358692" SOURCE="ID_329149746" STARTARROW="None" STARTINCLINATION="670;0;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1534523686836" ID="ID_1130300208" MODIFIED="1534524660559" TEXT="per smart-ptr halten">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1534523712521" FOLDED="true" ID="ID_1958771642" MODIFIED="1561827469124" TEXT="access-API">
<icon BUILTIN="button_ok"/>
<node CREATED="1534523785342" ID="ID_1532375846" MODIFIED="1534524656476" TEXT="L&#xf6;schen nicht vorgesehen">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1534523790798" ID="ID_497989103" MODIFIED="1534523799758" TEXT="man kann ja das Panel schlie&#xdf;en">
<icon BUILTIN="idea"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534523721263" ID="ID_830255345" MODIFIED="1534523747373" TEXT="zuklappbar">
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1533689065976" FOLDED="true" ID="ID_1456563113" MODIFIED="1561827482907" TEXT="NotificationController im Wizzard ansiedeln">
<icon BUILTIN="full-1"/>
<node CREATED="1533768795377" FOLDED="true" ID="ID_377710833" MODIFIED="1561827469145" TEXT="wirklich ein eigenst&#xe4;ndiger Controller??">
<icon BUILTIN="help"/>
<node CREATED="1533768892227" ID="ID_1131924142" MODIFIED="1538263469670" TEXT="ja, macht Sinn">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      weil so sichergestellt ist, da&#223; er stets existiert,
    </p>
    <p>
      und er trotzdem vom konkreten Widget entkoppelt bleibt
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1533768930822" ID="ID_1792377980" MODIFIED="1538263469670">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      besserer Name: <b>NotificationHub</b>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1533769126436" FOLDED="true" ID="ID_1000961938" MODIFIED="1561827469145" TEXT="wohin?">
<icon BUILTIN="button_ok"/>
<node CREATED="1533769130987" ID="ID_220812854" MODIFIED="1538263469671" TEXT="ctrl">
<icon BUILTIN="forward"/>
</node>
<node CREATED="1533769133802" ID="ID_643904873" MODIFIED="1538263469671" TEXT="interact">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1533769137338" ID="ID_918339492" MODIFIED="1538263469671" TEXT="workspace">
<icon BUILTIN="button_cancel"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1533689076590" ID="ID_321096443" MODIFIED="1538263469671" TEXT="mit Bus verdrahten und ID global konstant definieren">
<icon BUILTIN="full-2"/>
</node>
<node COLOR="#435e98" CREATED="1533689098787" FOLDED="true" ID="ID_191346591" MODIFIED="1561827482908" TEXT="Empfangs-Logik im NotificationHub (Controller)">
<icon BUILTIN="full-3"/>
<node COLOR="#338800" CREATED="1534119968325" FOLDED="true" ID="ID_1630503080" MODIFIED="1561827469145" TEXT="Einrichtung">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1534336479160" FOLDED="true" ID="ID_203145360" MODIFIED="1561827469124" TEXT="Link zum Widget herstellen">
<arrowlink COLOR="#a66b86" DESTINATION="ID_1326202399" ENDARROW="Default" ENDINCLINATION="279;-1333;" ID="Arrow_ID_664593340" STARTARROW="None" STARTINCLINATION="-1296;0;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1534334830126" ID="ID_932140820" MODIFIED="1538263469671" TEXT="als Funktor konfiguriert">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1534334822288" ID="ID_1305015272" MODIFIED="1538263469671" TEXT="Allozieren">
<arrowlink COLOR="#726b86" DESTINATION="ID_1806645586" ENDARROW="Default" ENDINCLINATION="232;27;" ID="Arrow_ID_246715972" STARTARROW="None" STARTINCLINATION="180;-21;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1533689120536" ID="ID_1806645586" MODIFIED="1538708596522" TEXT="View belegen">
<linktarget COLOR="#88a8b3" DESTINATION="ID_1806645586" ENDARROW="Default" ENDINCLINATION="-186;-20;" ID="Arrow_ID_948128706" SOURCE="ID_1941760302" STARTARROW="None" STARTINCLINATION="4;109;"/>
<linktarget COLOR="#726b86" DESTINATION="ID_1806645586" ENDARROW="Default" ENDINCLINATION="232;27;" ID="Arrow_ID_246715972" SOURCE="ID_1305015272" STARTARROW="None" STARTINCLINATION="180;-21;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#990000" CREATED="1533689125583" FOLDED="true" ID="ID_1077285383" MODIFIED="1561827469124" TEXT="mit close-signal verdrahten">
<icon BUILTIN="stop-sign"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1534629989468" FOLDED="true" ID="ID_1497889519" MODIFIED="1561827464626" TEXT="close-Signal gibtsned">
<icon BUILTIN="broken-line"/>
<node CREATED="1534630165971" ID="ID_783988097" MODIFIED="1534630171687" TEXT="nur Fenster haben signal_delete_event"/>
<node CREATED="1534630176586" ID="ID_712401559" MODIFIED="1534630190996" TEXT="wird aber per Default auf hide() gemappt"/>
<node COLOR="#435e98" CREATED="1534634189347" ID="ID_146943890" MODIFIED="1534635809110">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      GTK-Konzepte: &quot;<b>Schlie&#223;en</b>&quot;
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#6f7ab9" DESTINATION="ID_1900017952" ENDARROW="Default" ENDINCLINATION="-2264;0;" ID="Arrow_ID_1220603071" STARTARROW="None" STARTINCLINATION="-6278;0;"/>
<icon BUILTIN="info"/>
</node>
</node>
<node CREATED="1534630195728" FOLDED="true" ID="ID_1711320497" MODIFIED="1561827464627" TEXT="was brauche ich?">
<node CREATED="1534630216909" FOLDED="true" ID="ID_1211516480" MODIFIED="1561827464626">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      wenn Log-Anzeige <i>verworfen</i>&#160;wird
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="forward"/>
<node CREATED="1534630507190" ID="ID_1710219381" MODIFIED="1534630516168" TEXT="aus dem umschlie&#xdf;enden Container entfernt"/>
<node CREATED="1534630517045" ID="ID_435686246" MODIFIED="1534630526167" TEXT="und dann wirklich zerst&#xf6;rt, nicht nur verborgen"/>
<node CREATED="1534630526995" ID="ID_626097783" MODIFIED="1534630535742" TEXT="zugeh&#xf6;riges Model wird ebenfalls zerst&#xf6;rt"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534630538178" FOLDED="true" ID="ID_706923205" MODIFIED="1534726744532" TEXT="wenn Docking-Panel geschlossen wird">
<icon BUILTIN="messagebox_warning"/>
<node COLOR="#338800" CREATED="1534630581532" FOLDED="true" ID="ID_333724082" MODIFIED="1561827464627" TEXT="herausfinden ob und was passiert">
<icon BUILTIN="button_ok"/>
<node CREATED="1534636016460" ID="ID_16558042" MODIFIED="1534636022815" TEXT="vom Code her nicht klar"/>
<node CREATED="1534636023499" ID="ID_1133271303" MODIFIED="1534636030757" TEXT="k&#xf6;nnte kaputt sein"/>
<node CREATED="1534636033826" FOLDED="true" ID="ID_1327331647" MODIFIED="1561827464627" TEXT="theoretisch....">
<node CREATED="1534636038545" ID="ID_20267823" MODIFIED="1534636076288" TEXT="sollte das Panel aus seinem Container genommen werden"/>
<node CREATED="1534636077660" ID="ID_1153072337" MODIFIED="1534636097661" TEXT="und der Container (=DockItem) sollte daraufhin dieses Kind (=Panel) verbergen"/>
<node CREATED="1534636098937" ID="ID_684477198" MODIFIED="1534636108035" TEXT="jedenfalls w&#xe4;re das die normale GTK-Logik"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534636118486" ID="ID_1396783317" MODIFIED="1534636136704" TEXT="TODO: empirisch herausfinden">
<icon BUILTIN="hourglass"/>
</node>
</node>
<node CREATED="1534630593946" FOLDED="true" ID="ID_332877746" MODIFIED="1561827464627" TEXT="Einstiegspunkt: PanelManager">
<icon BUILTIN="idea"/>
<node CREATED="1534630686134" ID="ID_1763470642" MODIFIED="1534630687561" TEXT="PanelManager::removePanel"/>
<node CREATED="1534630698524" ID="ID_170868004" MODIFIED="1534630699432" TEXT="delete panel;"/>
<node CREATED="1534630922134" FOLDED="true" ID="ID_1602014175" MODIFIED="1561827464627" TEXT="komisch...">
<node CREATED="1534630926326" ID="ID_1520511750" MODIFIED="1534630932161" TEXT="Panel erbt von VBox"/>
<node CREATED="1534630932821" ID="ID_669390115" MODIFIED="1534630940399" TEXT="h&#xe4;lt nur eine Referenz auf das DockItem"/>
<node CREATED="1534631014841" ID="ID_997149684" MODIFIED="1534631085070" TEXT="dieser Code ist gegenw&#xe4;rtig auskommentiert">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      er ist n&#228;mlich auch aufgerufen worden, nachdem die GTK-Loop bereits beendet war.
    </p>
    <p>
      Dieser Code hat fr&#252;her C-m&#228;&#223;ig direkt die GObjects manipuliert (Anfangs hatten wir nur GDL, nicht GDLmm)
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1534630941563" ID="ID_701586360" MODIFIED="1534631013681" TEXT="Code im dtor entfernt das Panel aus dem DockItem">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Erl&#228;uterung: DockItem ist ein 1-elementiger GTK-Container,
    </p>
    <p>
      der sichtbare Inhalt liegt in diesem Container. Bei uns ist das das Panel.
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1534632167588" FOLDED="true" ID="ID_482488418" MODIFIED="1561827464627" TEXT="gtk_container_remove">
<node CREATED="1534632172396" ID="ID_1415075917" MODIFIED="1534632183158" TEXT="&#xe4;ndert nichts am Sichtbarkeits-Status"/>
<node CREATED="1534632183818" ID="ID_1537037393" MODIFIED="1534632194005" TEXT="aber erniedrigt den Refcount"/>
<node CREATED="1534632290500" ID="ID_1165360257" MODIFIED="1534632304077" TEXT="emittiert das signal_remove auf dem Container"/>
<node CREATED="1534632195136" ID="ID_1692600031" MODIFIED="1534632241155" TEXT="Intersssanter Kommentar: man sollte direkt zerst&#xf6;ren">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Removes @widget from @container. @widget must be inside @container.
    </p>
    <p>
      Note that @container will own a reference to @widget, and that this
    </p>
    <p>
      may be the last reference held; so removing a widget from its&#160;&#160;&#160;&#160;&#160;
    </p>
    <p>
      container can destroy that widget. If you want to use @widget&#160;&#160;&#160;&#160;&#160;
    </p>
    <p>
      again, you need to add a reference to it before removing it from&#160;&#160;
    </p>
    <p>
      a container, using g_object_ref(). If you don&#8217;t want to use @widget
    </p>
    <p>
      again it&#8217;s usually more efficient to simply destroy it directly&#160;&#160;&#160;
    </p>
    <p>
      using gtk_widget_destroy() since this will remove it from the&#160;&#160;&#160;&#160;&#160;
    </p>
    <p>
      container and help break any circular reference count cycles.&#160;&#160;&#160;&#160;&#160;
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1534632585779" FOLDED="true" ID="ID_1472646683" MODIFIED="1561827464627" TEXT="gtk_widget_destroy">
<node CREATED="1534632595042" ID="ID_818220639" MODIFIED="1534632609779" TEXT="macht praktisch nix"/>
<node CREATED="1534632593098" FOLDED="true" ID="ID_1924038071" MODIFIED="1561827464627" TEXT="g_object_run_dispose">
<node CREATED="1534632642379" ID="ID_1189983629" MODIFIED="1534632650014" TEXT="macht nur Memory-Management"/>
</node>
<node CREATED="1534632859518" ID="ID_738187804" MODIFIED="1534632873272" TEXT="aufgerufen von : gtk_container_destroy">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
<node CREATED="1534636163120" FOLDED="true" ID="ID_1102539072" MODIFIED="1561827464627" TEXT="explizites Destroy-Signal bauen">
<icon BUILTIN="button_cancel"/>
<node CREATED="1534636203306" ID="ID_1590219615" MODIFIED="1534636301238" TEXT="wird nicht vom Framework bereitgestellt">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      das ist das Fazit meiner Untersuchung.
    </p>
    <p>
      &quot;destroy&quot; ist kein relevantes Konzept f&#252;r GTK. Es gibt nur show()/hide().
    </p>
    <p>
      
    </p>
    <p>
      Also m&#252;ssen wir <i>explizit</i>
    </p>
    <ul>
      <li>
        eine Destroy-Signal bauen
      </li>
      <li>
        daf&#252;r sorgen, da&#223; das Infobox-Panel das auch aufruft
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1534636462287" ID="ID_1581893176" MODIFIED="1534721195248" TEXT="eigenes SigC Signal bereitstellen"/>
<node CREATED="1534636486123" ID="ID_1855036791" MODIFIED="1535814840374" TEXT="w&#xfc;rde vom ErrorLog-dtor aufgerufen"/>
<node CREATED="1534721236063" ID="ID_1398832202" MODIFIED="1534721247336" TEXT="das w&#xe4;re eine private Konvention">
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#338800" CREATED="1534721249117" ID="ID_997317939" MODIFIED="1534721572753" TEXT="....dann ist WLink genauso gut">
<arrowlink COLOR="#69b2a9" DESTINATION="ID_1471234946" ENDARROW="Default" ENDINCLINATION="37;-44;" ID="Arrow_ID_1612034198" STARTARROW="None" STARTINCLINATION="-209;0;"/>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1534721400696" FOLDED="true" ID="ID_1935193271" MODIFIED="1561827469124" TEXT="jeder Zugriff pr&#xfc;ft WLink">
<icon BUILTIN="button_ok"/>
<node CREATED="1534721417590" ID="ID_1471234946" MODIFIED="1538263469671" STYLE="fork" TEXT="das er&#xfc;brigt Verwalten eines eigenen Signales">
<linktarget COLOR="#69b2a9" DESTINATION="ID_1471234946" ENDARROW="Default" ENDINCLINATION="37;-44;" ID="Arrow_ID_1612034198" SOURCE="ID_997317939" STARTARROW="None" STARTINCLINATION="-209;0;"/>
</node>
<node COLOR="#338800" CREATED="1534729080597" ID="ID_1547931497" MODIFIED="1538263469671" TEXT="Code durchgesehen: alle Zugriffe sauber">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      entweder sie laufen &#252;ber den Getter,
    </p>
    <p>
      oder sie pr&#252;fen den Zustand und machen nichts, wenn das Widget nicht da ist
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1534721435740" FOLDED="true" ID="ID_1066281960" MODIFIED="1561827464627" TEXT="Konvention: Fehlerlog-Widget zerst&#xf6;ren">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...und nicht blo&#223; inaktiv schalten.
    </p>
  </body>
</html></richcontent>
<node COLOR="#338800" CREATED="1534721528967" ID="ID_1984401497" MODIFIED="1538778232908" TEXT="verifizieren">
<arrowlink DESTINATION="ID_1360416196" ENDARROW="Default" ENDINCLINATION="417;34;" ID="Arrow_ID_1337668046" STARTARROW="None" STARTINCLINATION="-454;-9;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1534721523435" ID="ID_679085788" MODIFIED="1538263469671" TEXT="dokumentieren">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1534721512505" ID="ID_1260021418" MODIFIED="1538778245658" TEXT="sofern es im Panel lebt, passiert das automatisch">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1533689146501" FOLDED="true" ID="ID_1371087868" MODIFIED="1561827469124" TEXT="bei Bedarf anzeigen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1534636343111" FOLDED="true" ID="ID_1922277957" MODIFIED="1561827464629" TEXT="ebenfalls explizit zu bauen">
<icon BUILTIN="button_ok"/>
<node CREATED="1534636352398" ID="ID_435790811" MODIFIED="1538263469671" TEXT="&#xe4;hnliche Lage wie bei Destroy">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      GTK bietet nur Anzeigen von top-down:
    </p>
    <ul>
      <li>
        show_all() auf Containern zeigt rekursiv alle Kinder
      </li>
      <li>
        show() zeigt nur ein bestimmtes Widget
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1534636369107" ID="ID_898428560" MODIFIED="1538574657332" TEXT="reveal / revealYourself">
<arrowlink COLOR="#76a4ad" DESTINATION="ID_232472679" ENDARROW="Default" ENDINCLINATION="94;307;" ID="Arrow_ID_634173548" STARTARROW="None" STARTINCLINATION="859;27;"/>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1534636377938" FOLDED="true" ID="ID_64685935" MODIFIED="1561827464629" TEXT="Lumiera-Framework: Revealer">
<icon BUILTIN="yes"/>
<node COLOR="#338800" CREATED="1537499427673" ID="ID_671371282" MODIFIED="1538263469671" TEXT="#1162 helper abstractions for generic widgets">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node CREATED="1534721937152" FOLDED="true" ID="ID_1396835945" MODIFIED="1561827464629" TEXT="macht aber nicht der Controller">
<icon BUILTIN="yes"/>
<node CREATED="1534721946351" ID="ID_1570295012" MODIFIED="1538263469671" TEXT="typisches OO-Design"/>
<node CREATED="1534721955070" ID="ID_1390682663" MODIFIED="1538263469671" TEXT="der Controller ruft nur getWidget().reveal() auf">
<linktarget COLOR="#7691b1" DESTINATION="ID_1390682663" ENDARROW="Default" ENDINCLINATION="-71;33;" ID="Arrow_ID_1469414604" SOURCE="ID_558411855" STARTARROW="None" STARTINCLINATION="109;16;"/>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node CREATED="1533689138950" FOLDED="true" ID="ID_580572298" MODIFIED="1561827469125" TEXT="status-Flag">
<icon BUILTIN="button_cancel"/>
<node CREATED="1534722574441" FOLDED="true" ID="ID_558411855" MODIFIED="1561827464630" TEXT="delegiert an Widget">
<arrowlink COLOR="#7691b1" DESTINATION="ID_1390682663" ENDARROW="Default" ENDINCLINATION="-71;33;" ID="Arrow_ID_1469414604" STARTARROW="None" STARTINCLINATION="109;16;"/>
<icon BUILTIN="stop-sign"/>
<node COLOR="#338800" CREATED="1534722791268" ID="ID_1074988560" MODIFIED="1538747845155" TEXT="Error-State">
<arrowlink COLOR="#87a5af" DESTINATION="ID_1501747643" ENDARROW="Default" ENDINCLINATION="54;212;" ID="Arrow_ID_512060720" STARTARROW="None" STARTINCLINATION="788;93;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1534722566362" FOLDED="true" HGAP="29" ID="ID_202753412" MODIFIED="1561827464630" TEXT="sichtbar" VSHIFT="-18">
<icon BUILTIN="button_ok"/>
<node CREATED="1538756263572" ID="ID_1046625699" MODIFIED="1538756268712" TEXT="durch Button-Aktivierung"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1534119979555" FOLDED="true" ID="ID_1159164748" MODIFIED="1561827469146" TEXT="Controller-Interface">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1534120150458" FOLDED="true" ID="ID_1083026482" MODIFIED="1561827469125" TEXT="Expander">
<icon BUILTIN="button_ok"/>
<node CREATED="1534120150459" ID="ID_1182032725" MODIFIED="1538263469672" TEXT="&quot;Allocate Widget if necessary, expand widget&quot;">
<icon BUILTIN="info"/>
</node>
<node COLOR="#338800" CREATED="1535752333217" ID="ID_332486075" MODIFIED="1538263469672" TEXT="geeignet verdrahten f&#xfc;r Delegation">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1535752347574" ID="ID_883461261" MODIFIED="1538263469672" TEXT="Expander im ErrorLog widget verwenden">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1534120150459" FOLDED="true" ID="ID_1466610963" MODIFIED="1561827469125" TEXT="doRevealYourself()">
<icon BUILTIN="button_ok"/>
<node CREATED="1534120150460" ID="ID_1726008784" MODIFIED="1538574623534">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <b><font color="#3d51ac">L&#246;sung</font></b>: delegiere &#252;ber zwei Stufen...
    </p>
    <p>
      Neue <b>Revealer</b>-Komponente bindet einen Funktor
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#58c39d" DESTINATION="ID_1044092797" ENDARROW="Default" ENDINCLINATION="169;308;" ID="Arrow_ID_1805058492" STARTARROW="None" STARTINCLINATION="890;-197;"/>
</node>
</node>
<node COLOR="#338800" CREATED="1534120150457" FOLDED="true" ID="ID_1499287865" MODIFIED="1561827469125" TEXT="doReset()">
<icon BUILTIN="button_ok"/>
<node CREATED="1534120150458" ID="ID_1390376483" MODIFIED="1538277278304" TEXT="&quot;Clear log contents, collapse widget, clear error state&quot;">
<icon BUILTIN="info"/>
</node>
</node>
<node COLOR="#338800" CREATED="1534120150462" FOLDED="true" ID="ID_1528884346" MODIFIED="1561827469125" TEXT="doMsg(text)">
<icon BUILTIN="button_ok"/>
<node CREATED="1534120150462" ID="ID_1226643824" MODIFIED="1538263469672" TEXT="&quot;Possibly allocate Widget, place text into its buffer. No need to expand&quot;">
<icon BUILTIN="info"/>
</node>
</node>
<node COLOR="#338800" CREATED="1534120150463" FOLDED="true" ID="ID_183847307" MODIFIED="1561827469125" TEXT="doClearMsg()">
<icon BUILTIN="button_ok"/>
<node CREATED="1534120150463" ID="ID_1378278687" MODIFIED="1538263469672" TEXT="&quot;remove all mere information messages&quot;">
<icon BUILTIN="info"/>
</node>
</node>
<node COLOR="#338800" CREATED="1534120150463" FOLDED="true" ID="ID_1967851591" MODIFIED="1561827469125" TEXT="doErr(text)">
<icon BUILTIN="button_ok"/>
<node CREATED="1534120150463" ID="ID_764543121" MODIFIED="1538263469672">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <ul>
      <li>
        Set error state.
      </li>
      <li>
        Allocate Widget if necessary
      </li>
      <li>
        expand widget
      </li>
      <li>
        place error message into its buffer&quot;
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
</node>
<node COLOR="#338800" CREATED="1534120150464" FOLDED="true" ID="ID_1675673289" MODIFIED="1561827469125" TEXT="doClearErr()">
<icon BUILTIN="button_ok"/>
<node CREATED="1534120150465" ID="ID_1858186015" MODIFIED="1538263469673" TEXT="&quot;clear error state. If widget exists, turn all error entries into mere information entries&quot;">
<icon BUILTIN="info"/>
</node>
</node>
<node COLOR="#338800" CREATED="1537531617621" FOLDED="true" ID="ID_447071799" MODIFIED="1561827469125" TEXT="doMark()">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1537531624828" ID="ID_52936917" MODIFIED="1538587791541" TEXT="Spezialbehandlung + Chain, um die Warnungs State-marks abzugreifen">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1534120150465" FOLDED="true" ID="ID_1862649971" MODIFIED="1561827469125" TEXT="doFlash()">
<icon BUILTIN="button_ok"/>
<node CREATED="1534120150465" ID="ID_222097969" MODIFIED="1538263469673">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      &quot;If widget exists: expand it, trigger its flash function (paint with timeout).
    </p>
    <p>
      <b><font color="#951c1c">TODO</font></b>&#160;also doRevealYourself.&quot;
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1534334029619" ID="ID_1981930639" MODIFIED="1538756282446" TEXT="ErrorLogView vorl&#xe4;ufig...">
<arrowlink COLOR="#628195" DESTINATION="ID_1745777873" ENDARROW="Default" ENDINCLINATION="245;349;" ID="Arrow_ID_1743659141" STARTARROW="None" STARTINCLINATION="397;197;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1533689164394" ID="ID_405297881" MODIFIED="1538708568344" TEXT="in NotificationService integrieren">
<icon BUILTIN="full-4"/>
</node>
<node COLOR="#435e98" CREATED="1533689225658" ID="ID_662017160" MODIFIED="1679362063151" TEXT="Pling! -Button">
<icon BUILTIN="full-5"/>
<node COLOR="#338800" CREATED="1533689235200" FOLDED="true" ID="ID_1760873318" MODIFIED="1567875759269" TEXT="non-modal TestControl">
<linktarget COLOR="#57b762" DESTINATION="ID_1760873318" ENDARROW="Default" ENDINCLINATION="-989;0;" ID="Arrow_ID_782679142" SOURCE="ID_994953692" STARTARROW="None" STARTINCLINATION="-756;-143;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1537836495530" FOLDED="true" ID="ID_182389429" MODIFIED="1561827469125" TEXT="per Men&#xfc;eintrag &#xf6;ffnen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1537841662854" ID="ID_451055929" MODIFIED="1538263469673" TEXT="Men&#xfc;eintrag im Hilfe-Men&#xfc;">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1537841672261" ID="ID_1740266874" MODIFIED="1538263469673" TEXT="wird gemanaged vom Wizard">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1537836597844" FOLDED="true" ID="ID_1217826524" MODIFIED="1561827469125" TEXT="Konstrukt wie im Tutorial">
<icon BUILTIN="button_ok"/>
<node CREATED="1537836612210" ID="ID_225351262" LINK="https://developer.gnome.org/gtkmm-tutorial/stable/sec-about-dialog.html.en#aboutdialog-example" MODIFIED="1538263469673" TEXT="non-modal about dialog">
<icon BUILTIN="info"/>
</node>
<node CREATED="1537838250303" FOLDED="true" ID="ID_1190002074" MODIFIED="1538263469673" TEXT="ist ein sub-window besser">
<icon BUILTIN="button_cancel"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1537838265916" FOLDED="true" ID="ID_920100816" MODIFIED="1561827464644" TEXT="wie?">
<icon BUILTIN="help"/>
<node CREATED="1537838337960" ID="ID_1900235846" MODIFIED="1537838337960" TEXT="set_transient_for (Window&amp; parent)"/>
<node CREATED="1537838432423" FOLDED="true" ID="ID_1065922306" MODIFIED="1561827464644" TEXT="set_type_hint (Gdk::WindowTypeHint hint)">
<node CREATED="1537838435238" ID="ID_1301145489" MODIFIED="1537838439809" TEXT="nicht klar ob relevant"/>
</node>
<node CREATED="1537838544449" ID="ID_1666779438" LINK="https://developer.gnome.org/gtkmm/3.22/classGtk_1_1Window.html#a1f70b3c35e8c477ab3c1f9503a37a6a1" MODIFIED="1537838555867" TEXT="set_modal (bool modal=true)"/>
<node CREATED="1537838781593" MODIFIED="1537838781593" TEXT="property_destroy_with_parent ()"/>
</node>
<node CREATED="1537841505883" ID="ID_1112461783" MODIFIED="1537841514485" TEXT="geht wohl, ist aber etwas umst&#xe4;ndlich"/>
</node>
<node COLOR="#435e98" CREATED="1537841516945" FOLDED="true" ID="ID_1578548739" MODIFIED="1561827464644" TEXT="Dialog-Basisklasse non-modal">
<icon BUILTIN="idea"/>
<node COLOR="#338800" CREATED="1537841531352" ID="ID_1190471518" MODIFIED="1538263469674" TEXT="hat eigene Konstruktoren, die den Dialog non-modal machen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1537841543886" ID="ID_59238198" MODIFIED="1538263469674" TEXT="regelt schon automatisch das Verh&#xe4;ltnis zum Vaterfenster">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1537846114160" FOLDED="true" ID="ID_1907327221" MODIFIED="1561827464644" TEXT="Vorbild: Joel&apos;s PreferencesDialog">
<icon BUILTIN="idea"/>
<node COLOR="#338800" CREATED="1537848007082" ID="ID_1014258603" MODIFIED="1538263469674" TEXT="Notebook">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1537848010330" ID="ID_1307971717" MODIFIED="1538263469674" TEXT="Seite einf&#xfc;gen f&#xfc;r #1099">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1537846129846" FOLDED="true" ID="ID_984655666" MODIFIED="1561827464644" TEXT="mu&#xdf; nur noch non-modal sein...">
<icon BUILTIN="button_ok"/>
<node CREATED="1537847939155" ID="ID_1465508298" MODIFIED="1538263469674" TEXT="einfach per Gtk::DialogFlags">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1537847979886" ID="ID_1956886110" MODIFIED="1538263469674" TEXT="DIALOG_DESTROY_WITH_PARENT"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1537836550411" FOLDED="true" ID="ID_899229612" MODIFIED="1561827469126" TEXT="h&#xe4;ngt (passiv) am UI-Bus">
<icon BUILTIN="button_ok"/>
<node CREATED="1537848045781" ID="ID_766784189" MODIFIED="1538263469674" TEXT="analog zum NotificationService">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1537848056915" ID="ID_64593877" MODIFIED="1538263469674" TEXT="globals.uiBus_.getAccessPoint()">
<icon BUILTIN="info"/>
</node>
</node>
<node COLOR="#338800" CREATED="1537961550200" FOLDED="true" ID="ID_226231657" MODIFIED="1561827469126" TEXT="setup f&#xfc;r Notebook-Widget">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1537961568746" ID="ID_1553519505" MODIFIED="1538263469674" TEXT="Prototyp f&#xfc;r generischen Helper">
<arrowlink COLOR="#6ea8be" DESTINATION="ID_591860371" ENDARROW="Default" ENDINCLINATION="1162;51;" ID="Arrow_ID_1534615646" STARTARROW="None" STARTINCLINATION="-185;836;"/>
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#338800" CREATED="1537836522950" ID="ID_87203159" MODIFIED="1538263469674" TEXT="Radiobuttons">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1537834955977" ID="ID_556296967" MODIFIED="1538263469674" TEXT="Argument-Textbox">
<arrowlink COLOR="#19f524" DESTINATION="ID_1072038781" ENDARROW="Default" ENDINCLINATION="-7;-200;" ID="Arrow_ID_746117643" STARTARROW="None" STARTINCLINATION="94;0;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1537836579647" FOLDED="true" ID="ID_951515368" MODIFIED="1561827469126" TEXT="Pling!">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1537972817468" FOLDED="true" ID="ID_443954725" MODIFIED="1538263469674" TEXT="direkt den UI-Bus ansprechen">
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1537973078631" ID="ID_476903403" MODIFIED="1537973140285" TEXT="*** first tangible action sent via UI-Bus ***">
<font NAME="SansSerif" SIZE="28"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#338800" CREATED="1537848127378" ID="ID_1206004" MODIFIED="1538263469674" TEXT="Argument-Werte abgreifen">
<arrowlink COLOR="#47ebbb" DESTINATION="ID_1745090225" ENDARROW="Default" ENDINCLINATION="119;0;" ID="Arrow_ID_372783230" STARTARROW="None" STARTINCLINATION="-10;35;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1533689243871" FOLDED="true" ID="ID_1745090225" MODIFIED="1561827469146" TEXT="triggert Dummy-Command">
<linktarget COLOR="#47ebbb" DESTINATION="ID_1745090225" ENDARROW="Default" ENDINCLINATION="119;0;" ID="Arrow_ID_372783230" SOURCE="ID_1206004" STARTARROW="None" STARTINCLINATION="-10;35;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1538220904703" FOLDED="true" HGAP="46" ID="ID_1997338106" MODIFIED="1561827469126" TEXT="definieren..." VSHIFT="31">
<icon BUILTIN="yes"/>
<node COLOR="#338800" CREATED="1538220944278" ID="ID_1508594379" MODIFIED="1538263469674" TEXT="test_meta_displayInfo">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1538220949651" ID="ID_1282771011" MODIFIED="1538263469674" TEXT="test_meta_markError">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1538220955266" ID="ID_1011451863" MODIFIED="1538263469674" TEXT="test_meta_markNote">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1538220961641" ID="ID_1936475731" MODIFIED="1538263469674" TEXT="test_meta_markAction">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1533689255174" FOLDED="true" ID="ID_821013695" MODIFIED="1561827469146" TEXT="Aufruf via Notification_Facade">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1537835197558" FOLDED="true" ID="ID_1477928890" MODIFIED="1561827469126" TEXT="displayInfo">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1537977715375" ID="ID_26283848" MODIFIED="1538263469675" TEXT="INFO">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1537977721054" ID="ID_1182006449" MODIFIED="1538263469675" TEXT="WARN">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1537977723454" ID="ID_484673349" MODIFIED="1538263469675" TEXT="ERROR">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1537835015601" FOLDED="true" ID="ID_1684094906" MODIFIED="1561827469126" TEXT="direkte Bus-Aufrufe">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1537835220978" ID="ID_1439086949" MODIFIED="1538263469675" TEXT="markError">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1537835228018" ID="ID_1420898810" MODIFIED="1538263469675" TEXT="markNote">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1537835741000" FOLDED="true" ID="ID_1072038781" MODIFIED="1561827464648" TEXT="mark">
<linktarget COLOR="#19f524" DESTINATION="ID_1072038781" ENDARROW="Default" ENDINCLINATION="-7;-200;" ID="Arrow_ID_746117643" SOURCE="ID_556296967" STARTARROW="None" STARTINCLINATION="94;0;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1537835767228" ID="ID_400466516" MODIFIED="1538263469675" TEXT="FLASH">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1537835848674" ID="ID_1915433481" MODIFIED="1538263469675" TEXT="REVEAL">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1538239665856" FOLDED="true" ID="ID_518505874" MODIFIED="1538574272012" TEXT="EXPAND">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1538281532767" ID="ID_1335570495" MODIFIED="1538365732115" TEXT="Fehler: mu&#xdf; eigens separate GenNode bauen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...weil der Payload-Typ f&#252;r diesen Aufruf bool ist,
    </p>
    <p>
      und nicht string wie f&#252;r alle anderen state marks
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#338800" CREATED="1538281608933" FOLDED="true" ID="ID_584897977" MODIFIED="1561827464648" TEXT="mu&#xdf; bool parsen...">
<icon BUILTIN="button_ok"/>
<node CREATED="1538281635897" FOLDED="true" ID="ID_562945035" MODIFIED="1561827464647" TEXT="lexical_cast geht nicht">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      k
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_cancel"/>
<node CREATED="1538281655774" ID="ID_1847834965" MODIFIED="1538281662977" TEXT="kann nur 1 und 0"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1538281664349" FOLDED="true" ID="ID_1454517361" MODIFIED="1538441787807" TEXT="interessanter Folgefehler">
<icon BUILTIN="broken-line"/>
<node CREATED="1538281691097" FOLDED="true" ID="ID_1911272932" MODIFIED="1561827464645" TEXT="exception killt ProcDispatcher (das ist OK)">
<icon BUILTIN="full-1"/>
<node CREATED="1538316932460" FOLDED="true" ID="ID_532178252" MODIFIED="1561827464645" TEXT="warum l&#xe4;uft das &#xfc;ber HandlingPattern?">
<icon BUILTIN="button_ok"/>
<node CREATED="1538316947954" ID="ID_299870867" MODIFIED="1538316961132" TEXT="dachte, wir rufen Dummy-Commands direkt auf"/>
<node CREATED="1538317636429" ID="ID_555373711" MODIFIED="1538317640326" TEXT="tun wir auch">
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1538317641621" ID="ID_1808679252" MODIFIED="1538317662923" TEXT="aber proc::Command verwendet Default-Pattern">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1538316971295" FOLDED="true" ID="ID_1865988337" MODIFIED="1561827464645" TEXT="Abgreifen der Fehler-Info">
<node CREATED="1538316982046" ID="ID_252583984" MODIFIED="1538317000205" STYLE="fork" TEXT="im std::exception-Handler">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1538317002019" FOLDED="true" ID="ID_957898086" MODIFIED="1561827464645" TEXT="lumiera::Error">
<icon BUILTIN="forward"/>
<node CREATED="1538356729852" FOLDED="true" ID="ID_435503551" MODIFIED="1538356803291" TEXT="wird die cause korrekt &#xfc;bernommen?">
<icon BUILTIN="button_ok"/>
<node CREATED="1538356756336" ID="ID_342508440" MODIFIED="1538356782737" TEXT="ja... works as designed">
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1538356761143" ID="ID_1729059066" MODIFIED="1538356797681">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Konzept ist <i>nicht</i>, sie gleich in die description zu &#252;bernehmen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
</node>
<node COLOR="#338800" CREATED="1538317075985" FOLDED="true" ID="ID_712272839" MODIFIED="1538365661558" TEXT="Problem: lumiera Error-Flag &#xfc;bernimmt nur lokale description">
<linktarget COLOR="#c4588d" DESTINATION="ID_712272839" ENDARROW="Default" ENDINCLINATION="577;63;" ID="Arrow_ID_428347507" SOURCE="ID_313278942" STARTARROW="None" STARTINCLINATION="341;0;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1538317102405" ID="ID_1770156379" MODIFIED="1538317106320" TEXT="und die ist hier leer"/>
<node CREATED="1538317107765" ID="ID_1730697631" MODIFIED="1538317122431" TEXT="sollte unsere what()-Methode nutzen"/>
<node CREATED="1538317157966" FOLDED="true" ID="ID_600719509" MODIFIED="1561827464645" TEXT="Problem: Storage">
<node CREATED="1538317171852" FOLDED="true" ID="ID_1284960080" MODIFIED="1561827464645" TEXT="verwende Symbol">
<icon BUILTIN="button_cancel"/>
<node CREATED="1538317176347" ID="ID_1919150970" MODIFIED="1538317201070" TEXT="wat soll der jeiz">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      das System ist ohnehin schon anget&#246;tet
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1538317544954" ID="ID_1154202054" MODIFIED="1538317573410">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      keines! Impl verwendet <b>strdup</b>()
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1538318187819" FOLDED="true" ID="ID_870746075" MODIFIED="1538365651376" TEXT="Problem: ExecResult nicht ausgewertet">
<icon BUILTIN="button_ok"/>
<node CREATED="1538318216016" ID="ID_1444888451" MODIFIED="1538318226226" TEXT="Exception wird nicht ausgeworfen"/>
<node CREATED="1538318227150" ID="ID_956176289" MODIFIED="1538318230994" TEXT="Loop l&#xe4;uft weiter"/>
<node CREATED="1538318231726" FOLDED="true" ID="ID_373021764" MODIFIED="1561827464645" TEXT="aber Error-State ist gesetzt">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1538319081491" FOLDED="true" ID="ID_599527376" MODIFIED="1561827464645" TEXT="das ist ein Logik-Fehler">
<linktarget COLOR="#e54f84" DESTINATION="ID_599527376" ENDARROW="Default" ENDINCLINATION="-9;283;" ID="Arrow_ID_1159234155" SOURCE="ID_1536519871" STARTARROW="None" STARTINCLINATION="411;-47;"/>
<icon BUILTIN="yes"/>
<node CREATED="1538319099993" ID="ID_1362819933" MODIFIED="1538319118146" TEXT="da Exception in einem ExecResult gespeicher ist"/>
<node CREATED="1538319119398" ID="ID_1062993543" MODIFIED="1538319129753" TEXT="...gilt sie nicht mehr als &quot;schwebend&quot;"/>
<node CREATED="1538319130725" ID="ID_1118929704" MODIFIED="1538319141433" TEXT="der Aufrufer hat volle Freiheit, sie zu ignorieren">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node CREATED="1538318997502" ID="ID_1664562023" MODIFIED="1538319007145" TEXT="wacht nach max-timeout (f&#xfc;r Builder auf)"/>
<node CREATED="1538319008117" FOLDED="true" ID="ID_73040538" MODIFIED="1561827464645" TEXT="unser Object-Monitor pr&#xfc;ft beim Aufwachen den Error-state">
<node CREATED="1538319150290" ID="ID_313278942" MODIFIED="1538319185279" TEXT="und wirft hier nur noch die verk&#xfc;rzte Description aus">
<arrowlink COLOR="#c4588d" DESTINATION="ID_712272839" ENDARROW="Default" ENDINCLINATION="577;63;" ID="Arrow_ID_428347507" STARTARROW="None" STARTINCLINATION="341;0;"/>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1538319193716" ID="ID_1785359217" MODIFIED="1538319206846" TEXT="...das erkl&#xe4;rt, warum wir die Ursache nicht sehen"/>
</node>
</node>
<node CREATED="1538319456089" FOLDED="true" ID="ID_342927310" MODIFIED="1538365654527" TEXT="Problem: Handler im ProcDispatcher behandelt nur LumieraException speziell">
<icon BUILTIN="button_ok"/>
<node CREATED="1538319495420" ID="ID_39746243" MODIFIED="1538319501623" TEXT="das stellt zwar hier kein Problem dar"/>
<node CREATED="1538319502331" ID="ID_1092806315" MODIFIED="1538319511413" TEXT="und es ist noch der unspezifische Handler da"/>
<node CREATED="1538319512146" ID="ID_672632423" MODIFIED="1538319533231" TEXT="aber: problem.what() geht verloren bei std::exception">
<icon BUILTIN="forward"/>
</node>
<node COLOR="#338800" CREATED="1538319535006" ID="ID_403817336" MODIFIED="1538365635663" TEXT="Fix: Handler kann genausogut auf std::exception abstellen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...denn wir verwenden das Lumiera-Exception-API gar nicht
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node CREATED="1538281708919" FOLDED="true" ID="ID_1611370738" MODIFIED="1561827464646" TEXT="error state ist gesetzt">
<icon BUILTIN="full-2"/>
<node CREATED="1538319670284" ID="ID_1536519871" MODIFIED="1538319694106" TEXT="gekl&#xe4;rt warum">
<arrowlink COLOR="#e54f84" DESTINATION="ID_599527376" ENDARROW="Default" ENDINCLINATION="-9;283;" ID="Arrow_ID_1159234155" STARTARROW="None" STARTINCLINATION="411;-47;"/>
</node>
<node CREATED="1538319701680" ID="ID_1856422179" MODIFIED="1538319729311" TEXT="...und beim Trigger ist er schon nicht mehr gesetzt">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      der Handler im ProcDispatcher sorgt daf&#252;r
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1538281715646" FOLDED="true" ID="ID_1541383645" MODIFIED="1561827464646" TEXT="emergency shutdown">
<icon BUILTIN="full-3"/>
<node CREATED="1538320876787" FOLDED="true" ID="ID_1528655784" MODIFIED="1561827464646" TEXT="Subsystem-Shutdown">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1538320884769" FOLDED="true" ID="ID_707965628" MODIFIED="1538365685651" TEXT="Problem: re-entrance Bug">
<icon BUILTIN="hourglass"/>
<node CREATED="1538320904127" FOLDED="true" ID="ID_1958182633" MODIFIED="1561827464646" TEXT="shutdownAll() ruft indirekt/rekursiv sigTerm()">
<node COLOR="#435e98" CREATED="1538321043388" ID="ID_1860084270" MODIFIED="1538348459443" TEXT="fragt sich, warum">
<icon BUILTIN="help"/>
</node>
<node CREATED="1538321059074" FOLDED="true" ID="ID_1754741024" MODIFIED="1561827464646" TEXT="Vermutung: degeneriertes Subsystem">
<node CREATED="1538321102148" ID="ID_862751524" MODIFIED="1538321102148">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...welches keinen separaten Thread aufruft....?
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1538321104964" ID="ID_990799680" MODIFIED="1538321198833" TEXT="...und daher das Lock auf dem Subsystem-Runner bekommt">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1538348464066" ID="ID_1973011292" MODIFIED="1538348489286" TEXT="genau so isses (...und ich hatte vor Jahren schon ein Ticket aufgemacht)">
<icon BUILTIN="smiley-neutral"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1538348427367" ID="ID_1696230148" MODIFIED="1538348438054" TEXT="#814 subsystem-runner: re-entrance in triggerShutdown">
<icon BUILTIN="flag-yellow"/>
</node>
<node CREATED="1538320933291" ID="ID_573672353" MODIFIED="1538320975419" TEXT="removeall auf Collection, die grade iteriert wird">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      n&#228;mlich im shutdownAll() weiter oben im Stack
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1538320996027" FOLDED="true" ID="ID_1914116148" MODIFIED="1561827464646" TEXT="STL verh&#xe4;lt sich hier anscheinend gutm&#xfc;tig">
<icon BUILTIN="idea"/>
<node CREATED="1538348518843" ID="ID_613222856" MODIFIED="1538348551658" TEXT="zwar wird einer Iteration ggfs das aktuelle Element &quot;unter den F&#xfc;&#xdf;en&quot; weggezogen..."/>
<node CREATED="1538348553006" ID="ID_1259043030" MODIFIED="1538348566936" TEXT="so da&#xdf; dann die n&#xe4;chste Iteration das &#xfc;bern&#xe4;chste Element bearbeitet"/>
<node CREATED="1538348577763" ID="ID_830173416" MODIFIED="1538348597359">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      aber <i>genau der andere Thread,</i>&#160;der das gemacht hat...
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1538348598352" ID="ID_1090786435" MODIFIED="1538348613234" TEXT="iteriert als n&#xe4;chstes ebenfalls &#xfc;ber alle Subsysteme"/>
<node CREATED="1538348625836" ID="ID_507678251" MODIFIED="1538348638230" TEXT="Fazit: Killen bis zur ersch&#xf6;pfung"/>
<node CREATED="1538348639034" ID="ID_1799262325" MODIFIED="1538348644065" TEXT="l&#xe4;uft">
<icon BUILTIN="ksmiletris"/>
</node>
</node>
</node>
<node CREATED="1538322674991" FOLDED="true" ID="ID_371763142" MODIFIED="1538365689019" TEXT="Problem: triggerShutdown nicht wasserdicht">
<icon BUILTIN="button_cancel"/>
<node CREATED="1538322708227" FOLDED="true" ID="ID_1994833744" MODIFIED="1561827464646" TEXT="kann sterben">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1538322737871" ID="ID_513027050" MODIFIED="1538322769742" TEXT="wenn Exceptions auftreten">
<icon BUILTIN="info"/>
</node>
<node CREATED="1538322751893" ID="ID_812762539" MODIFIED="1538322767299" TEXT="z.B. wenn Gui-Facade schon zu ist">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1538322721289" ID="ID_156783463" MODIFIED="1538322775541" TEXT="dann l&#xe4;uft das aufrufende sigTerm nicht zuende">
<icon BUILTIN="broken-line"/>
</node>
<node CREATED="1538359359513" FOLDED="true" ID="ID_874296398" MODIFIED="1561827464646" TEXT="Nein kein Problem">
<icon BUILTIN="forward"/>
<node CREATED="1538359370815" ID="ID_104358783" MODIFIED="1538359518690" TEXT="das Subsystem-Protokoll verlangt noexcept">
<icon BUILTIN="info"/>
</node>
<node CREATED="1538359382397" ID="ID_1054464710" MODIFIED="1538359515533" TEXT="alle bekannten triggerShutdown sind so gekennzeichnet">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1538359397915" ID="ID_446614054" MODIFIED="1538359507892" TEXT="und wenn trotzdem eine Exception fliegt...">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...dann sind wir sofort tot und das wird billigend in Kauf genommen.
    </p>
    <p>
      So ist das tats&#228;chlich implementiert im Falle vom OutputDirector.
    </p>
    <p>
      Der startet n&#228;mlich einen Thread erst als Supervisor f&#252;r den Shutdown.
    </p>
    <p>
      Wenn das nun <i>wirklich</i>&#160;fehlschl&#228;gt, bleibt uns sinnvollerweise nur noch die Selbstmord-Option
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="ksmiletris"/>
</node>
</node>
</node>
</node>
<node CREATED="1538357436900" FOLDED="true" ID="ID_1015844071" MODIFIED="1561827464646" TEXT="der ganze Subsystem-Runner sollte &#xfc;berarbeitet werden">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1538357457297" ID="ID_1518496949" MODIFIED="1538357462577" TEXT="#1177 Subsytem-Runner design rework">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
<node CREATED="1538281733340" ID="ID_1326729675" MODIFIED="1538281765434" TEXT="f&#xe4;hrt das GUI runter">
<icon BUILTIN="full-4"/>
</node>
<node CREATED="1538281741419" FOLDED="true" ID="ID_1964821489" MODIFIED="1561827464647">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ein <b>ZombieCheck</b>&#160;spricht an
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="full-5"/>
<node COLOR="#435e98" CREATED="1538281782245" FOLDED="true" ID="ID_888818129" MODIFIED="1561827464646" TEXT="welcher...">
<icon BUILTIN="help"/>
<node CREATED="1538326229581" ID="ID_687910017" MODIFIED="1538326243254" TEXT="mit dem Debugger nicht zu fassen...."/>
<node COLOR="#338800" CREATED="1538326244075" ID="ID_362650638" MODIFIED="1538365389966" TEXT="Aufgabe: Zobmie-ID statisch speichern">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1538365422252" FOLDED="true" ID="ID_1782663880" MODIFIED="1561827464646" TEXT="Offender = ClassLock&lt;gui::interact::LocationQuery&gt;">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      0000001180: INFO: subsystem-runner.hpp:208: worker_3: sigTerm: Subsystem 'Lumiera GTK GUI' terminated.
    </p>
    <p>
      0000001181: NOTICE: appstate.cpp:170: thread_1: maybeWait: Shutting down Lumiera...
    </p>
    <p>
      0000001182: ALERT: appstate.cpp:174: thread_1: maybeWait: Triggering emergency exit...
    </p>
    <p>
      0000001243: WARNING: interfaceregistry.c:199: thread_1: lumiera_interfaceregistry_bulkremove_interfaces: ENTRY NOT FOUND in interfaceregistry at clean-up of interface lumieraorg_Gui, instance lumieraorg_GuiStarterPlugin
    </p>
    <p>
      
    </p>
    <p>
      (lumiera:9719): Gtk-CRITICAL **: gtk_widget_is_drawable: assertion 'GTK_IS_WIDGET (widget)' failed
    </p>
    <p>
      
    </p>
    <p>
      (lumiera:9719): Pango-CRITICAL **: pango_layout_get_cursor_pos: assertion 'index &gt;= 0 &amp;&amp; index &lt;= layout-&gt;length' failed
    </p>
    <p>
      0000001293: ERR: error-exception.cpp:185: worker_3: lumiera_unexpectedException: ### Lumiera halted due to an unexpected Error ###
    </p>
    <p>
      
    </p>
    <p>
      ### Lumiera halted due to an unexpected Error ###
    </p>
    <p>
      
    </p>
    <p>
      
    </p>
    <p>
      +++ Caught Exception LUMIERA_ERROR_LIFECYCLE:Lifecycle assumptions violated
    </p>
    <p>
      
    </p>
    <p>
      0000001298: ERR: error-exception.cpp:196: worker_3: lumiera_unexpectedException: +++ caught error::LumieraError&lt;error::LUMIERA_ERROR_FATAL, error::LumieraError&lt;error::LUMIERA_ERROR_LOGIC, Error&gt; &gt;
    </p>
    <p>
      0000001298! ERR: error-exception.cpp:196: worker_3: lumiera_unexpectedException: +++ messg: Sorry, Lumiera encountered an internal error.
    </p>
    <p>
      0000001298! ERR: error-exception.cpp:196: worker_3: lumiera_unexpectedException: +++ descr: LUMIERA_ERROR_LIFECYCLE:Lifecycle assumptions violated (Already deceased object called out of order during Application shutdown. Lumiera Policy violated: Dependencies must not be used from destructors. Offender = ClassLock&lt;gui::interact::LocationQuery, s).
    </p>
    <p>
      0000001299: ERR: error-exception.cpp:212: worker_3: lumiera_unexpectedException: last registered error was....
    </p>
    <p>
      0000001299! ERR: error-exception.cpp:212: worker_3: lumiera_unexpectedException: LUMIERA_ERROR_LIFECYCLE:Lifecycle assumptions violated
    </p>
    <p>
      Abgebrochen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
<node CREATED="1538365543884" ID="ID_534885692" MODIFIED="1538365573259" TEXT="man beachte auch die zwei GTK-Assertions nach dem GUI-Shutdown">
<icon BUILTIN="forward"/>
</node>
<node CREATED="1538365584159" ID="ID_998255150" MODIFIED="1538365599464" TEXT="wieso l&#xe4;uft da noch GUI-code??"/>
<node CREATED="1538437336885" ID="ID_1889101831" MODIFIED="1538437644906" TEXT="Beobachtung: worker_3 == GUI-Thread gewesen">
<arrowlink COLOR="#d21052" DESTINATION="ID_1886197899" ENDARROW="Default" ENDINCLINATION="38;-127;" ID="Arrow_ID_274941451" STARTARROW="None" STARTINCLINATION="-156;4;"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1538281788117" FOLDED="true" ID="ID_1747014683" MODIFIED="1561827464647" TEXT="wie konnte das passieren....">
<icon BUILTIN="help"/>
<icon BUILTIN="yes"/>
<node CREATED="1538436917958" ID="ID_1974415924" MODIFIED="1538436933975" TEXT="sehr wahrscheinlich ein lib::Depend&lt;LocationQuery&gt;"/>
<node CREATED="1538436940187" FOLDED="true" ID="ID_691937310" MODIFIED="1561827464646" TEXT="in Frage kommen....">
<node CREATED="1538436955585" ID="ID_508170245" MODIFIED="1538436971250" TEXT="ViewLocator::locResolver_"/>
<node CREATED="1538437006170" ID="ID_282885180" MODIFIED="1538437018876" TEXT="UILocationSolver::getLocationQuery"/>
<node CREATED="1538437047572" FOLDED="true" ID="ID_230833452" MODIFIED="1561827464646" TEXT="LocationQuery::service">
<node CREATED="1538437082776" ID="ID_184252441" MODIFIED="1538437093282" TEXT="lebt in ui-coord-resolver.cpp"/>
</node>
<node CREATED="1538437140312" FOLDED="true" ID="ID_1998433336" MODIFIED="1561827464646" TEXT="InteractionDirector::navigator_">
<node CREATED="1538437158909" ID="ID_1706438738" MODIFIED="1538437159929" TEXT="= lib::DependInject&lt;LocationQuery&gt;::ServiceInstance&lt;Navigator&gt;"/>
</node>
</node>
<node CREATED="1538437605225" FOLDED="true" ID="ID_1886197899" MODIFIED="1561827464647" TEXT="Verdacht: dtor-Race">
<arrowlink COLOR="#e24165" DESTINATION="ID_1236741743" ENDARROW="Default" ENDINCLINATION="-145;6;" ID="Arrow_ID_1521104972" STARTARROW="None" STARTINCLINATION="-19;77;"/>
<linktarget COLOR="#d21052" DESTINATION="ID_1886197899" ENDARROW="Default" ENDINCLINATION="38;-127;" ID="Arrow_ID_274941451" SOURCE="ID_1889101831" STARTARROW="None" STARTINCLINATION="-156;4;"/>
<icon BUILTIN="idea"/>
<node CREATED="1538437664345" FOLDED="true" ID="ID_1713946380" MODIFIED="1561827464647" TEXT="Szenario">
<node CREATED="1538437672401" ID="ID_1788050505" MODIFIED="1538437844014" TEXT="Gui: sigTerm aufgerufen">
<icon BUILTIN="full-1"/>
</node>
<node CREATED="1538437682015" ID="ID_1413705214" MODIFIED="1538437846332" TEXT="letztes Subsys -&gt; r&#xe4;umt alle Subsysteme weg">
<icon BUILTIN="full-2"/>
</node>
<node CREATED="1538437706876" ID="ID_1187411887" MODIFIED="1538437848750" TEXT="main-Thread wacht auf">
<icon BUILTIN="full-3"/>
</node>
<node CREATED="1538437715874" ID="ID_691753107" MODIFIED="1538437851846" TEXT="verl&#xe4;&#xdf;t main() und entl&#xe4;d das Plug-In">
<icon BUILTIN="full-4"/>
</node>
<node CREATED="1538437741751" ID="ID_510852039" MODIFIED="1538437854073" TEXT="das zerst&#xf6;rt die statische Factory">
<icon BUILTIN="full-5"/>
</node>
<node CREATED="1538437749950" ID="ID_1236741743" MODIFIED="1538440181061" TEXT="Gui-Thread kehr aus sigTerm zur&#xfc;ck und ruft ~UiManager()">
<linktarget COLOR="#e24165" DESTINATION="ID_1236741743" ENDARROW="Default" ENDINCLINATION="-145;6;" ID="Arrow_ID_1521104972" SOURCE="ID_1886197899" STARTARROW="None" STARTINCLINATION="-19;77;"/>
<icon BUILTIN="full-6"/>
</node>
<node CREATED="1538437785489" ID="ID_1853884803" MODIFIED="1538437858984" TEXT="indirekt deregistriert InteractionDirector den Service">
<icon BUILTIN="full-7"/>
</node>
<node CREATED="1538437812598" FOLDED="true" ID="ID_407685604" MODIFIED="1561827464647" TEXT="DependInject::Service::shutdown() greift sich das Lock">
<icon BUILTIN="full-8"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1538437831603" ID="ID_822519118" MODIFIED="1538437839823" TEXT="BOOM">
<icon BUILTIN="clanbomber"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1538440214523" FOLDED="true" HGAP="1" ID="ID_390044012" MODIFIED="1561827464647" TEXT="Umbau daraufhin" VSHIFT="21">
<icon BUILTIN="button_ok"/>
<node CREATED="1538440224730" ID="ID_973914173" MODIFIED="1538440241131" TEXT="sigTerm-Aufruf aus der run()-Methode herausziehen"/>
<node CREATED="1538440242999" ID="ID_815144668" MODIFIED="1538440276578">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ..damit ~GtkLumiera() garantiert <i>vorher</i>&#160;aufgerufen wird
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1538440332187" FOLDED="true" HGAP="-48" ID="ID_393079011" MODIFIED="1561827464647" TEXT="Treffer, versenkt" VSHIFT="27">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node COLOR="#435e98" CREATED="1538440346730" ID="ID_1456330609" MODIFIED="1538440482615" TEXT="Fehler ist verschwunden">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      0000001028: INFO: proc-dispatcher.cpp:301: worker_2: processCommands: +++ dispatch Command(&quot;test_meta_markAction&quot;) {exec}
    </p>
    <p>
      0000001029: INFO: proc-dispatcher.cpp:306: worker_2: processCommands: +++ --------&gt;&gt;&gt; bang!
    </p>
    <p>
      0000001031: WARNING: handling-pattern.cpp:90: worker_2: invoke: Invocation of Command(&quot;test_meta_markAction&quot;) {exec} failed: bad lexical cast: source type value could not be interpreted as target
    </p>
    <p>
      0000001052: INFO: proc-dispatcher.cpp:159: worker_2: ~DispatcherLoop: Proc-Dispatcher stopped.
    </p>
    <p>
      0000001053: INFO: subsystem-runner.hpp:208: worker_2: sigTerm: Subsystem 'Session' terminated.
    </p>
    <p>
      0000001054: WARNING: subsystem-runner.hpp:209: worker_2: sigTerm: Irregular shutdown caused by: LUMIERA_ERROR_LOGIC:internal logic broken (Command execution failed: LUMIERA_ERROR_EXTERNAL:failure in external service -- caused by: bad lexical cast: source type value could not be interpreted as target).
    </p>
    <p>
      0000001090: TODO: output-director.cpp:136: worker_4: bringDown: actually bring down the output generation
    </p>
    <p>
      0000001091: INFO: subsystem-runner.hpp:208: worker_2: sigTerm: Subsystem 'Dummy-Player' terminated.
    </p>
    <p>
      0000001092: NOTICE: notification-service.cpp:158: worker_2: triggerGuiShutdown: @GUI: shutdown triggered with explanation 'Application shutdown'....
    </p>
    <p>
      0000001111: NOTICE: notification-service.cpp:158: worker_2: triggerGuiShutdown: @GUI: shutdown triggered with explanation 'Application shutdown'....
    </p>
    <p>
      0000001119: INFO: subsystem-runner.hpp:208: worker_4: sigTerm: Subsystem 'PlayOut' terminated.
    </p>
    <p>
      0000001120: NOTICE: notification-service.cpp:158: worker_4: triggerGuiShutdown: @GUI: shutdown triggered with explanation 'Application shutdown'....
    </p>
    <p>
      0000001128: INFO: display-service.hpp:147: worker_3: ~DisplayService: Display service dying...
    </p>
    <p>
      
    </p>
    <p>
      (lumiera:12160): Gtk-CRITICAL **: gtk_widget_is_drawable: assertion 'GTK_IS_WIDGET (widget)' failed
    </p>
    <p>
      
    </p>
    <p>
      (lumiera:12160): Pango-CRITICAL **: pango_layout_get_cursor_pos: assertion 'index &gt;= 0 &amp;&amp; index &lt;= layout-&gt;length' failed
    </p>
    <p>
      0000001160: INFO: workspace-window.cpp:53: worker_3: ~WorkspaceWindow: Closing workspace window...
    </p>
    <p>
      
    </p>
    <p>
      (lumiera:12160): Gdl-CRITICAL **: gdl_dock_master_get_controller: assertion 'master != NULL' failed
    </p>
    <p>
      
    </p>
    <p>
      (lumiera:12160): Gdl-CRITICAL **: gdl_dock_master_get_controller: assertion 'master != NULL' failed
    </p>
    <p>
      
    </p>
    <p>
      (lumiera:12160): Gdl-CRITICAL **: gdl_dock_master_get_controller: assertion 'master != NULL' failed
    </p>
    <p>
      
    </p>
    <p>
      (lumiera:12160): Gdl-CRITICAL **: gdl_dock_master_get_controller: assertion 'master != NULL' failed
    </p>
    <p>
      0000001167: INFO: subsystem-runner.hpp:208: worker_3: sigTerm: Subsystem 'Lumiera GTK GUI' terminated.
    </p>
    <p>
      0000001175: NOTICE: appstate.cpp:170: thread_1: maybeWait: Shutting down Lumiera...
    </p>
    <p>
      0000001176: ALERT: appstate.cpp:174: thread_1: maybeWait: Triggering emergency exit...
    </p>
    <p>
      0000001237: WARNING: interfaceregistry.c:199: thread_1: lumiera_interfaceregistry_bulkremove_interfaces: ENTRY NOT FOUND in interfaceregistry at clean-up of interface lumieraorg_Gui, instance lumieraorg_GuiStarterPlugin
    </p>
    <p>
      (hiv)~/devel/lumi-$
    </p>
    <p>
      (hiv)~/devel/lumi-$
    </p>
    <p>
      (hiv)~/devel/lumi-$ echo $?
    </p>
    <p>
      2
    </p>
    <p>
      (hiv)~/devel/lumi-$
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
<node COLOR="#338800" CREATED="1538440505597" ID="ID_1015433202" MODIFIED="1538440524651" TEXT="#1178 Zombie race in GUI Subsystem shutdown">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1538441813086" ID="ID_431066008" MODIFIED="1538533883011" TEXT="neue Hilfsfunktion in util.hpp">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1538533891029" ID="ID_1886289594" MODIFIED="1538533896858" TEXT="Test hierf&#xfc;r">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1537835859576" ID="ID_968868056" MODIFIED="1538263469675" TEXT="CLEAR_ERR">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1537835874382" ID="ID_252957072" MODIFIED="1538263469675" TEXT="CLEAR_MSG">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1537835880405" ID="ID_992909467" MODIFIED="1538263469675" TEXT="RESET">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1537835889996" ID="ID_5762574" MODIFIED="1538263469675" TEXT="GenNode">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1538230509179" FOLDED="true" HGAP="22" ID="ID_657255465" MODIFIED="1538263469675" TEXT="Problem ID-&#xdc;bergabe" VSHIFT="14">
<icon BUILTIN="button_cancel"/>
<node CREATED="1538230525641" ID="ID_1999133642" MODIFIED="1538230536846" TEXT="wieder mal das Schei&#xdf; Interface-System">
<icon BUILTIN="smiley-angry"/>
</node>
<node CREATED="1538230675997" ID="ID_1672501842" MODIFIED="1538232718759" TEXT="br&#xe4;uchte eine C-Repr&#xe4;sentation f&#xfc;r BareEntryID"/>
<node CREATED="1538232816534" ID="ID_712541347" MODIFIED="1538232905703" TEXT="habe den Anspruch aber bereits aufgegeben">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...und zwar an dem Punkt, an dem ich eine DiffMessage in das GUI schicke.
    </p>
    <p>
      DiffMessage repr&#228;sentiert einen f&#252;r den User verdeckten Callback
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1538234760471" ID="ID_1256781554" MODIFIED="1538234766447" TEXT="#1175 consider EntryID as external entity ID">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1534721737507" FOLDED="true" ID="ID_1467431829" MODIFIED="1561827482908" TEXT="verifizieren">
<icon BUILTIN="full-6"/>
<node COLOR="#338800" CREATED="1538234826126" ID="ID_1989018475" MODIFIED="1538263469675" TEXT="Round-Trip &#xfc;ber Thrad-Grenzen hinweg">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1538234843916" ID="ID_1672079020" MODIFIED="1538263469675" TEXT="Argument-&#xdc;bergabe per Kopie">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1534721764680" ID="ID_237796687" MODIFIED="1538777025274" TEXT="Belegen der View">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1538747863296" ID="ID_1171544173" MODIFIED="1538777026741" TEXT="Reaktion auf Error-state">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1534721772238" ID="ID_130695962" MODIFIED="1538777041184" TEXT="Verbinden mit bestehendem InfoboxPanel">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1534721811969" ID="ID_1320259895" MODIFIED="1538777615902" TEXT="auch in einerm anderen Fenster">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1534721785596" ID="ID_1517054985" MODIFIED="1538777054390" TEXT="Erzeugen eines neuen InfoboxPanels">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1534721819264" ID="ID_1360416196" MODIFIED="1538778252025" TEXT="Panel durch Ersetzung zerst&#xf6;ren">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1360416196" ENDARROW="Default" ENDINCLINATION="417;34;" ID="Arrow_ID_1337668046" SOURCE="ID_1984401497" STARTARROW="None" STARTINCLINATION="-454;-9;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1537531073966" FOLDED="true" ID="ID_973305985" MODIFIED="1561827469146" TEXT="Funktionen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1537531078757" ID="ID_605735534" MODIFIED="1538708629270" TEXT="Reset">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1537531084396" ID="ID_648584085" MODIFIED="1538708616965" TEXT="Meldung ausgeben">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1537531543495" ID="ID_1813117782" MODIFIED="1538708618921" TEXT="Warnung anzeigen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1537531109361" ID="ID_1483169066" MODIFIED="1538708620397" TEXT="Fehler ausgeben">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1537531089012" ID="ID_1427238207" MODIFIED="1538708630612" TEXT="alle Meldungen entfernen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1537531153739" ID="ID_538123549" MODIFIED="1538708632010" TEXT="Fehler in Meldungen verwandeln">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1537531160298" ID="ID_1717013245" MODIFIED="1538708633930" TEXT="Flash">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1537532006073" FOLDED="true" HGAP="-92" ID="ID_135756255" MODIFIED="1561827483825" TEXT="Neben-Nutzen" VSHIFT="15">
<icon BUILTIN="button_ok"/>
<node CREATED="1537532035141" ID="ID_188521578" MODIFIED="1538263469676" TEXT="NotificationService">
<icon BUILTIN="info"/>
</node>
<node COLOR="#338800" CREATED="1537532041420" ID="ID_1545300987" MODIFIED="1538263469676" TEXT="Implementierung komplettieren">
<arrowlink COLOR="#22ed6f" DESTINATION="ID_1901801971" ENDARROW="Default" ENDINCLINATION="287;0;" ID="Arrow_ID_1609281182" STARTARROW="None" STARTINCLINATION="83;-25;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1537532447549" ID="ID_821848615" MODIFIED="1538263469676" TEXT="Fehleranzeige-Funktion">
<arrowlink COLOR="#c19dc4" DESTINATION="ID_149796171" ENDARROW="Default" ENDINCLINATION="1300;76;" ID="Arrow_ID_451002492" STARTARROW="None" STARTINCLINATION="1509;156;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1537532456004" ID="ID_1700828304" MODIFIED="1538839492410" TEXT="dokumentieren und Ticket #1047 schlie&#xdf;en">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1538836931857" ID="ID_438461567" MODIFIED="1538839523006" TEXT="#1174 kann auch geschlossen werden">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      #1174 UI self diagnostics window
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1484797684438" FOLDED="true" HGAP="21" ID="ID_932852399" MODIFIED="1576282358153" TEXT="GUI-Shutdown implementieren" VSHIFT="13">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      bisher k&#246;nnen wir das GUI nur <i>aktiv intern</i>&#160;schlie&#223;en,
    </p>
    <p>
      indem wir ein GTK-Signal erzeugen, das das Hauptfenster schlie&#223;t
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
<node CREATED="1485116867963" ID="ID_1146024699" MODIFIED="1518487921054" TEXT="bisher kann man nur das Fenster schlie&#xdf;en">
<icon BUILTIN="info"/>
<node CREATED="1485116884925" ID="ID_296160451" MODIFIED="1518487921055" TEXT="wie funktioniert das?">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="help"/>
</node>
<node CREATED="1485116901507" ID="ID_1272809751" MODIFIED="1518487921055" TEXT="WindowManager">
<node COLOR="#338800" CREATED="1485126609878" ID="ID_649614174" MODIFIED="1518487921055" TEXT="#1064 investigate WindowManager lifecycle">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1485116921072" ID="ID_1191743111" MODIFIED="1518487921055" TEXT="close Action"/>
</node>
<node CREATED="1484797749237" ID="ID_1654016697" MODIFIED="1518487921055" TEXT="wie kann man GTK-UI explizit schlie&#xdf;en?">
<icon BUILTIN="help"/>
</node>
<node CREATED="1501777017858" ID="ID_842367237" MODIFIED="1518487921055" TEXT="wer macht das in unserem GUI?">
<arrowlink DESTINATION="ID_599315721" ENDARROW="Default" ENDINCLINATION="-137;-12;" ID="Arrow_ID_1743989671" STARTARROW="None" STARTINCLINATION="-18;215;"/>
<icon BUILTIN="help"/>
</node>
<node COLOR="#763434" CREATED="1484797766035" ID="ID_1740926324" MODIFIED="1561827464658" TEXT="wie signalisieren wir das">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="help"/>
<node CREATED="1501781461059" ID="ID_1041497316" MODIFIED="1518487921055" TEXT="wie den UiManager erreichen?">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1501781776041" ID="ID_1345710498" MODIFIED="1518487921055" TEXT="magische Nachricht?">
<icon BUILTIN="button_cancel"/>
<node CREATED="1501782361331" ID="ID_1281813611" MODIFIED="1518487921055" TEXT="an wen addressieren?">
<icon BUILTIN="help"/>
</node>
<node CREATED="1501782381185" ID="ID_427836826" MODIFIED="1518487921055" TEXT="mu&#xdf; sinnvoll sein">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1501782399454" ID="ID_1238852873" MODIFIED="1518487921055" TEXT="InteractionDirector"/>
<node CREATED="1501784310336" ID="ID_455705917" MODIFIED="1533608413540" TEXT="was f&#xfc;r eine Nachricht?">
<icon BUILTIN="help"/>
<node CREATED="1501784324670" ID="ID_202531654" MODIFIED="1567875686498" TEXT="mu&#xdf; in das Protokoll passen"/>
<node CREATED="1501784333946" ID="ID_238263434" MODIFIED="1518487921055" TEXT="sollte nicht willk&#xfc;rlich sein"/>
<node CREATED="1501804506790" ID="ID_985808643" MODIFIED="1518487921055" TEXT="gibts nicht">
<icon BUILTIN="stop-sign"/>
</node>
</node>
</node>
<node CREATED="1501781769834" ID="ID_1836544616" MODIFIED="1518487921055" TEXT="direktes Wiring?">
<icon BUILTIN="button_ok"/>
<node CREATED="1501866473852" ID="ID_1346430403" MODIFIED="1518487921055" TEXT="direkt den UiManager aufrufen"/>
<node CREATED="1501866480963" ID="ID_361033579" MODIFIED="1518487921055" TEXT="dazu die NotificationFacade verschoben"/>
<node CREATED="1501866494441" ID="ID_540781053" MODIFIED="1518487921055" TEXT="wird jetzt vom UiManager gemanaged"/>
</node>
</node>
<node CREATED="1501792024717" ID="ID_1914400893" MODIFIED="1518487921055" TEXT="wer ist &quot;wir&quot;?">
<node CREATED="1501792033763" ID="ID_1293774586" MODIFIED="1518487921055" TEXT="der Subsystem-Lebenszyklus"/>
<node CREATED="1501792041586" ID="ID_1326580750" MODIFIED="1518487921055" TEXT="sonst geht das Niemanden was an!">
<icon BUILTIN="yes"/>
<node CREATED="1501792062904" ID="ID_181717876" MODIFIED="1518487921055" TEXT="Subsysteme sind autark"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1501792086244" ID="ID_233471026" MODIFIED="1576282358152" TEXT="wir wollen keine globale Ebene">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...das war genau der Kern der &quot;Plugin-Debatte&quot;.
    </p>
    <p>
      Eine solche globale, flache, dynamisch gebundene Ebene
    </p>
    <p>
      klingt nach <i>wahnsinnigen M&#246;glichkeiten</i>, aber nur solange, bis man sich
    </p>
    <p>
      eine einzige Funktion konkret durchdenkt: es l&#228;uft auf Spaghetti-Code hinaus
    </p>
  </body>
</html></richcontent>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1501804804734" HGAP="52" ID="ID_1925973923" MODIFIED="1561827464660" TEXT="Mechanismus zum Schlie&#xdf;en" VSHIFT="6">
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1484797911392" ID="ID_286857196" MODIFIED="1531585120208" TEXT="geeigneten Mechanisums definieren">
<linktarget COLOR="#872666" DESTINATION="ID_286857196" ENDARROW="Default" ENDINCLINATION="-684;0;" ID="Arrow_ID_1606936924" SOURCE="ID_405470138" STARTARROW="Default" STARTINCLINATION="1461;0;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1502410904331" ID="ID_995145542" MODIFIED="1531584054722" TEXT="brauche Dispatch in UI event-Thread">
<arrowlink COLOR="#84c6b8" DESTINATION="ID_1023343635" ENDARROW="Default" ENDINCLINATION="21;233;" ID="Arrow_ID_1372135725" STARTARROW="None" STARTINCLINATION="237;0;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#338800" CREATED="1501804850624" ID="ID_1451522246" MODIFIED="1518487921055" TEXT="Zugang zum UiManager">
<icon BUILTIN="button_ok"/>
<node CREATED="1502375214162" ID="ID_267170664" MODIFIED="1518487921055" TEXT="durch direkte Verdrahtung">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1502375221129" ID="ID_368784036" MODIFIED="1576282358152" TEXT="dies m&#xf6;glich machen...">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...indem der NotificatonService nun vom UI-Manager gemanaged wird :)
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1488419591265" HGAP="65" ID="ID_471609909" MODIFIED="1538840175237" VSHIFT="70">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      zieht komplett-Umbau
    </p>
    <p>
      des Gui-top-Level nach sich
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#851358" DESTINATION="ID_548720270" ENDARROW="Default" ENDINCLINATION="-663;-614;" ID="Arrow_ID_325703166" STARTARROW="None" STARTINCLINATION="1110;608;"/>
<icon BUILTIN="messagebox_warning"/>
<node COLOR="#338800" CREATED="1485118623744" FOLDED="true" HGAP="23" ID="ID_392996871" MODIFIED="1561827464668" TEXT="#1032 use gtk::Application instead of gtk::Main" VSHIFT="11">
<arrowlink COLOR="#ae1856" DESTINATION="ID_206480879" ENDARROW="Default" ENDINCLINATION="715;0;" ID="Arrow_ID_926482654" STARTARROW="Default" STARTINCLINATION="134;383;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1485118668802" ID="ID_575152579" MODIFIED="1518487921055" TEXT="WindowManager verwendet gtk::Main"/>
<node CREATED="1485118677425" ID="ID_1952311126" MODIFIED="1518487921055" TEXT="genau, um die Applikation runterzufahren"/>
<node CREATED="1485124031945" ID="ID_329247026" MODIFIED="1518487921055" TEXT="Gtk::Application">
<node CREATED="1485124038768" ID="ID_764043255" MODIFIED="1518487921055" TEXT="ist kein Singleton"/>
<node CREATED="1485124046775" ID="ID_505212945" MODIFIED="1518487921055" TEXT="hat keinen public ctor"/>
<node CREATED="1485124052149" ID="ID_799710500" MODIFIED="1518487921055" TEXT="mit create erstellt -&gt; smart ptr"/>
<node CREATED="1485124063732" ID="ID_1584553859" MODIFIED="1532795708774" TEXT="erbt von Gio::Application">
<node CREATED="1485124070131" ID="ID_1720443251" MODIFIED="1518487921055" TEXT="wrappt g_application"/>
</node>
</node>
<node CREATED="1485124084465" ID="ID_660066920" MODIFIED="1518487921055" TEXT="how-to">
<icon BUILTIN="help"/>
<node CREATED="1485124094936" ID="ID_1446212765" MODIFIED="1533608413545" TEXT="offiziell">
<node CREATED="1485124098920" ID="ID_1783958965" MODIFIED="1518487921055" TEXT="auto app = Application::create"/>
<node CREATED="1485124111806" ID="ID_231977368" MODIFIED="1518487921055" TEXT="app-&gt;run"/>
</node>
<node CREATED="1485124120220" ID="ID_1639025787" MODIFIED="1533608413546" TEXT="von Application erben">
<icon BUILTIN="help"/>
<node CREATED="1485124129436" ID="ID_1540860407" MODIFIED="1518487921055" TEXT="laut Quellcode spricht nichts dagegen"/>
<node CREATED="1485124142178" ID="ID_1048261084" MODIFIED="1576282358151" TEXT="man sollte aber keine Methoden &#xfc;berschreiben">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...nur eine <i>heuristische </i>Vermutung von mir
    </p>
    <p>
      st&#252;tzt sich auf folgenden Quellcode
    </p>
    <p>
      
    </p>
    <p>
      Application::Application(const Glib::ustring&amp; application_id, Gio::ApplicationFlags flags)
    </p>
    <p>
      :
    </p>
    <p>
      &#160;&#160;// Mark this class as non-derived to allow C++ vfuncs to be skipped.
    </p>
    <p>
      &#160;&#160;//Note that GApplication complains about &quot;&quot; but allows NULL (0), so we avoid passing &quot;&quot;.
    </p>
    <p>
      &#160;&#160;Glib::ObjectBase(0),
    </p>
    <p>
      &#160;&#160;Gio::Application(Glib::ConstructParams(custom_class_init(), &quot;application_id&quot;, (application_id.empty() ? 0 : application_id.c_str()), &quot;flags&quot;, GApplicationFlags(flags), static_cast&lt;char*&gt;(0))),
    </p>
    <p>
      &#160;&#160;m_argc(0),
    </p>
    <p>
      &#160;&#160;m_argv(0)
    </p>
    <p>
      {
    </p>
    <p>
      &#160;&#160;gtk_init(0, 0);
    </p>
    <p>
      }
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node CREATED="1485124284856" ID="ID_473768869" MODIFIED="1518487921055" TEXT="Windows selber managen">
<icon BUILTIN="help"/>
<node CREATED="1485124296582" ID="ID_628648705" MODIFIED="1518487921055" TEXT="gtk::Application verwaltet Fensterliste"/>
<node CREATED="1485124305157" ID="ID_1632068669" MODIFIED="1518487921055" TEXT="schlie&#xdf;t sich automatisch, wenn das letzte Fenster zu ist"/>
<node CREATED="1485124315795" ID="ID_178656069" MODIFIED="1518487921055" TEXT="unser WindowManager macht das Gleiche"/>
</node>
<node COLOR="#435e98" CREATED="1533303793015" ID="ID_1636078216" MODIFIED="1533306062548" TEXT="Infos zu Gtk::Main, Gtk::Application und Gio::Application">
<arrowlink COLOR="#677ab7" DESTINATION="ID_782313223" ENDARROW="Default" ENDINCLINATION="-981;-106;" ID="Arrow_ID_1912776282" STARTARROW="None" STARTINCLINATION="-2111;0;"/>
<font BOLD="true" NAME="SansSerif" SIZE="13"/>
<icon BUILTIN="info"/>
</node>
<node CREATED="1493754789137" FOLDED="true" ID="ID_1903744710" MODIFIED="1582487817557" TEXT="kommt mir komisch vor">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1493754799439" ID="ID_288205807" MODIFIED="1518487921055" TEXT="das &quot;riecht&quot; nach Framework"/>
<node CREATED="1493754808373" ID="ID_998804989" MODIFIED="1533608413546" TEXT="&quot;wir machen bequem alles f&#xfc;r Sie&quot;">
<node CREATED="1493759500422" ID="ID_378870766" MODIFIED="1518487921055" TEXT="macht mir Angst">
<icon BUILTIN="smily_bad"/>
</node>
<node CREATED="1493759504742" FOLDED="true" ID="ID_1800184805" MODIFIED="1561827483825" TEXT="Kontrollverlust">
<node CREATED="1493759564302" ID="ID_409429771" MODIFIED="1518487921055" TEXT="undurchsichtig"/>
<node CREATED="1493759572261" ID="ID_1741586689" MODIFIED="1518487921055" TEXT="mehrere Ebenen von Frameworks &#xfc;bereinander"/>
<node CREATED="1493759581123" ID="ID_1296466414" MODIFIED="1518487921055" TEXT="ich traue den Gnome-Leuten nicht &#xfc;ber den Weg"/>
</node>
</node>
<node CREATED="1493754820476" ID="ID_608560419" MODIFIED="1533608413548" TEXT="brauche ich &#xfc;berhaupt eine Gtk::Application">
<icon BUILTIN="help"/>
<node CREATED="1493756483852" ID="ID_1428028027" MODIFIED="1518487921055" TEXT="naja, man kann GTK zu Fu&#xdf; verwenden"/>
<node CREATED="1493756499745" ID="ID_633405815" MODIFIED="1518487921055" TEXT="aber gtk::Application zeigt, wie"/>
<node CREATED="1493759629357" FOLDED="true" ID="ID_1297670007" MODIFIED="1561827483825" TEXT="gtk::Application">
<node CREATED="1493759644755" ID="ID_224674022" MODIFIED="1518487921056" TEXT="ist eine Window-Liste"/>
<node CREATED="1493759717704" ID="ID_697856504" MODIFIED="1518487921056" TEXT="initialisiert GTK, GLib, GIO"/>
<node CREATED="1493759649754" ID="ID_898599245" MODIFIED="1518487921056" TEXT="schlie&#xdf;t, wenn letztes Fenster zu"/>
<node CREATED="1493759699387" ID="ID_1249589577" MODIFIED="1518487921056" TEXT="single application Instance"/>
<node CREATED="1493759656913" ID="ID_658938675" MODIFIED="1518487921056" TEXT="Desktop-Integration"/>
</node>
<node CREATED="1493759747148" ID="ID_1721295375" MODIFIED="1518487921056" TEXT="das kann ich doch zu Fu&#xdf; auch machen">
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1495215099003" ID="ID_1971256545" MODIFIED="1533608413550" TEXT="brauche ich &#xfc;berhaupt eine Gio::Application">
<icon BUILTIN="help"/>
<node CREATED="1495215111775" ID="ID_1003964020" MODIFIED="1518487921056" TEXT="initialisiert das Framework"/>
<node CREATED="1495215119685" ID="ID_1761204495" MODIFIED="1518487921056" TEXT="stellt eine dBus-Verbindung her"/>
<node CREATED="1495215129564" FOLDED="true" ID="ID_973272722" MODIFIED="1561827483825" TEXT="ist eine gio::ActionGroup">
<node CREATED="1495215149281" ID="ID_1774523135" MODIFIED="1518487921056" TEXT="man kann Aktionen hinzuf&#xfc;gen"/>
<node CREATED="1495215164279" ID="ID_1315941470" MODIFIED="1518487921056" TEXT="diese Arbeitet mit einem ApplicationWindow zusammen"/>
<node CREATED="1495215177478" ID="ID_250116811" MODIFIED="1518487921056" TEXT="beachte: nicht GtkWindow, sondern ApplicationWindow (Subclass)"/>
</node>
<node CREATED="1495215193500" FOLDED="true" ID="ID_503299515" MODIFIED="1561827483825" TEXT="Zweck (Vermutung)">
<node CREATED="1495215209066" ID="ID_1153171656" MODIFIED="1518487921056" TEXT="Desktop-Integration"/>
<node CREATED="1495215214824" ID="ID_1385031644" MODIFIED="1518487921056" TEXT="Grenzen der Applikation aufweichen"/>
<node CREATED="1495215221624" ID="ID_297065945" MODIFIED="1518487921056" TEXT="Aktionen direkt in den Desktiop integrieren"/>
</node>
<node CREATED="1495215237213" ID="ID_745229887" MODIFIED="1518487921056" TEXT="nichts von dem ist f&#xfc;r uns relevant, manches davon st&#xf6;rt">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1495218672747" HGAP="-13" ID="ID_1786316132" MODIFIED="1518487921056" TEXT="Beschlu&#xdf;" VSHIFT="15">
<icon BUILTIN="yes"/>
<node COLOR="#2f1d56" CREATED="1495218684994" ID="ID_101574501" MODIFIED="1518487921056" TEXT="vorerst defensiv vorgehen">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
<node COLOR="#338800" CREATED="1533325503372" ID="ID_1815764983" MODIFIED="1533325787563" TEXT="nochmal gr&#xfc;ndlich &#xfc;berpr&#xfc;ft und dokumentiert">
<arrowlink COLOR="#70dcb9" DESTINATION="ID_889790361" ENDARROW="Default" ENDINCLINATION="1185;0;" ID="Arrow_ID_1988524020" STARTARROW="Default" STARTINCLINATION="-2084;0;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1495218699712" ID="ID_1332523704" MODIFIED="1533325519569" TEXT="den Code aus Gtk::Main in unsere Codebasis &#xfc;bernehmen">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1495218714230" ID="ID_1371091843" MODIFIED="1533608413552" TEXT="Vorsicht mit Action / ActionGroup">
<node CREATED="1495218731435" ID="ID_1744881610" MODIFIED="1518487921056" TEXT="noch nicht deprecated"/>
<node CREATED="1495218744961" ID="ID_97034293" MODIFIED="1518487921056" TEXT="aber Abl&#xf6;sung durch Gio::SimpleAction geplant"/>
<node CREATED="1495218770694" ID="ID_644528853" MODIFIED="1518487921056" TEXT="Warnung: mit dem neuen Gtk::ApplicationWindow verkoppelt">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1485130302095" FOLDED="true" HGAP="28" ID="ID_506541774" MODIFIED="1561827464676" TEXT="neuer UiManager" VSHIFT="14">
<icon BUILTIN="button_ok"/>
<node CREATED="1485452508180" ID="ID_549617075" MODIFIED="1518487921056" TEXT="ist front-end daf&#xfc;r">
<icon BUILTIN="button_cancel"/>
<node CREATED="1485130321924" ID="ID_46787934" MODIFIED="1518487921056" TEXT="Funktion umziehen"/>
<node CREATED="1485130328324" ID="ID_874057448" MODIFIED="1518487921056" TEXT="umschreiben auf gtk::Application"/>
<node CREATED="1485130336235" ID="ID_125642886" MODIFIED="1518487921056" TEXT="Application-Objekt durchgeben"/>
<node CREATED="1485130355377" ID="ID_175334188" MODIFIED="1518487921056" TEXT="Zugriff f&#xfc;r NotificationFacade erm&#xf6;glichen"/>
</node>
<node CREATED="1485452536138" ID="ID_599315721" MODIFIED="1518487921056" TEXT="wird daf&#xfc;r zust&#xe4;ndig">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_599315721" ENDARROW="Default" ENDINCLINATION="-137;-12;" ID="Arrow_ID_1743989671" SOURCE="ID_842367237" STARTARROW="None" STARTINCLINATION="-18;215;"/>
<linktarget COLOR="#667e90" DESTINATION="ID_599315721" ENDARROW="None" ENDINCLINATION="41;328;" ID="Arrow_ID_1963473410" SOURCE="ID_1478388503" STARTARROW="Default" STARTINCLINATION="943;-58;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1493762472175" ID="ID_964179569" MODIFIED="1518487921056" TEXT="verwendet Fenster-Liste"/>
<node COLOR="#435e98" CREATED="1493762490205" ID="ID_869056268" MODIFIED="1538778695808" TEXT="alle noch offenen Fenster verbergen">
<arrowlink COLOR="#543c6f" DESTINATION="ID_159568066" ENDARROW="Default" ENDINCLINATION="489;-554;" ID="Arrow_ID_373486067" STARTARROW="None" STARTINCLINATION="-762;-46;"/>
<icon BUILTIN="help"/>
</node>
<node CREATED="1493762498476" ID="ID_1290148687" MODIFIED="1518487921056" TEXT="direkt gtk_main_quit aufrufen">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1493762556755" HGAP="34" ID="ID_651403872" MODIFIED="1533608413552" TEXT="siehe" VSHIFT="16">
<node CREATED="1493762559339" ID="ID_742529116" MODIFIED="1518487921056" TEXT="altes Gtk::Main::quit"/>
<node CREATED="1493762568266" ID="ID_902609710" MODIFIED="1518487921056" TEXT="Gio::Application::quit"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1493762951293" HGAP="69" ID="ID_1772990353" MODIFIED="1518487921056" TEXT="Entscheidung">
<icon BUILTIN="yes"/>
<node CREATED="1493762968018" ID="ID_1056007574" MODIFIED="1518487921056" TEXT="brauchen wir ein Application GObject?">
<icon BUILTIN="help"/>
</node>
<node CREATED="1493762987751" ID="ID_236361713" MODIFIED="1533304173000" TEXT="Gtk::Main funktioniert ohne">
<arrowlink COLOR="#469fa6" DESTINATION="ID_1120787097" ENDARROW="Default" ENDINCLINATION="1725;-6805;" ID="Arrow_ID_433910583" STARTARROW="None" STARTINCLINATION="821;0;"/>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1493763356907" ID="ID_981398529" MODIFIED="1533608413553" TEXT="aber">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1493763398798" ID="ID_760049978" MODIFIED="1518487921056" TEXT="Gtk::Main ist deprecated"/>
<node CREATED="1493763393720" ID="ID_112295077" MODIFIED="1518487921056" TEXT="wohin entwickelt sich GTK?"/>
</node>
<node CREATED="1493768460811" ID="ID_1862271811" MODIFIED="1533608413553" TEXT="Alternativen">
<node CREATED="1493768465482" ID="ID_1159523698" MODIFIED="1518487921056" TEXT="gtk_main aufrufen">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1493768484007" ID="ID_384827553" MODIFIED="1582487797600" TEXT="von einem Gio::Application ableiten">
<arrowlink COLOR="#6d7495" DESTINATION="ID_1476863246" ENDARROW="Default" ENDINCLINATION="1126;-247;" ID="Arrow_ID_1941890495" STARTARROW="None" STARTINCLINATION="-373;28;"/>
<icon BUILTIN="button_cancel"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1493770418552" HGAP="68" ID="ID_346412093" MODIFIED="1518487921056" TEXT="Schritte" VSHIFT="37">
<linktarget COLOR="#8091a3" DESTINATION="ID_346412093" ENDARROW="Default" ENDINCLINATION="-205;193;" ID="Arrow_ID_824195065" SOURCE="ID_1810145809" STARTARROW="None" STARTINCLINATION="430;0;"/>
<icon BUILTIN="idea"/>
<node CREATED="1493770423008" ID="ID_124348052" MODIFIED="1518487921056" TEXT="erst mal Gtk::Main hierher schieben">
<icon BUILTIN="full-1"/>
</node>
<node CREATED="1495215269657" ID="ID_850682198" MODIFIED="1518487921056" TEXT="Implementierung aus Gtk::Main &#xfc;bernemen">
<icon BUILTIN="full-2"/>
</node>
<node CREATED="1493770431607" ID="ID_117937910" MODIFIED="1518487921056" TEXT="(bei Bedarf) sp&#xe4;ter dann durch Gio::Application ersetzen">
<icon BUILTIN="full-3"/>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1481320772830" FOLDED="true" HGAP="21" ID="ID_1607125695" MODIFIED="1561827464681" VSHIFT="11">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Proc: <b>SessionCommand</b>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1481320843596" ID="ID_7225903" MODIFIED="1518487921056" TEXT="definieren">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1481767553542" ID="ID_1936508244" MODIFIED="1518487921056" TEXT="Eigenschaften">
<icon BUILTIN="info"/>
<node CREATED="1481768183970" ID="ID_1887870402" MODIFIED="1518487921056" TEXT="ist offizielle Session-Schnittstelle"/>
<node CREATED="1481768211951" ID="ID_287828489" MODIFIED="1576282358151">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      setzt <i>aktivierten</i>&#160;Dispatcher <font color="#6e080d">zwingend</font>&#160;voraus
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      es gen&#252;gt definitiv nicht, nur die Dispatcher-Komponente(Schnittstelle) erreichen zu k&#246;nnen.
    </p>
    <p>
      Jede Operation, die &#252;ber dieses externe Interface bereitsteht, ben&#246;tigt zur Implementierung
    </p>
    <p>
      eine aktiv laufende Dispatcher-Queue.
    </p>
    <p>
      
    </p>
    <p>
      Daher macht es Sinn, den Interface-Lebenszyklus ganz starr an den Disspatcher zu binden
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1481768341149" ID="ID_1200042703" MODIFIED="1576282358150" TEXT="implizite Bindung an eine Session-Instanz">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...und zwar wirklich sehr implizit,
    </p>
    <p>
      n&#228;mlich &#252;ber die Identit&#228;t (IDs) der Command-Parameter.
    </p>
    <p>
      Das hei&#223;t, ein eingehendes Command pa&#223;t nur zu einer bestimmten Session-Instanz,
    </p>
    <p>
      was zwar jederzeit (via statisches/internes Session-API) verifizierbar ist, jedoch nicht offensichtlich
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1481768566167" ID="ID_702026185" MODIFIED="1576282358149" TEXT="kann jederzeit asynchron geschlossen werden">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      das folgt einfach aus den logischen Eigenschaften der beteiligten Komponenten,
    </p>
    <p>
      welche eben autonom sind.
    </p>
    <p>
      
    </p>
    <p>
      Das hei&#223;t im Klartext, alle Clients m&#252;ssen darauf vorbereitet sein, da&#223; diese Schnittstelle
    </p>
    <p>
      <i>jederzeit</i>&#160;wegbrechen kann, was dann hei&#223;t, da&#223; irgend ein Aufruf eine Exception wirft
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1481320847724" FOLDED="true" HGAP="42" ID="ID_545146501" MODIFIED="1582487700785" TEXT="wo ansiedeln" VSHIFT="-6">
<icon BUILTIN="help"/>
<node CREATED="1481509901926" ID="ID_1612540786" MODIFIED="1518487921056" TEXT="in proc::control"/>
<node CREATED="1481767522123" ID="ID_789146708" MODIFIED="1518487921056">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      wer besitzt die
    </p>
    <p>
      Implementierung
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="help"/>
<node CREATED="1481767563781" ID="ID_1894117297" MODIFIED="1518487921056" TEXT="Subsystem">
<icon BUILTIN="button_cancel"/>
<node CREATED="1481767649426" ID="ID_1806364059" MODIFIED="1518487921056" TEXT="pro">
<node CREATED="1481767653785" ID="ID_65381960" MODIFIED="1518487921056" TEXT="offensichtlich"/>
<node CREATED="1481767700299" ID="ID_1163247183" MODIFIED="1518487921056" TEXT="logisch"/>
</node>
<node CREATED="1481767665231" ID="ID_141423591" MODIFIED="1518487921056" TEXT="con">
<node CREATED="1481767681797" ID="ID_1133339398" MODIFIED="1576282358149" TEXT="fragiler Lebenszyklus">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      meint: zwei gekoppelte Statusvariable
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1481767706906" ID="ID_815807707" MODIFIED="1518487921057" TEXT="bekomme dort Zustand"/>
<node CREATED="1481767720576" ID="ID_714877064" MODIFIED="1518487921057" TEXT="mu&#xdf; dort Locking verwenden"/>
<node CREATED="1481767711033" ID="ID_232055384" MODIFIED="1518487921057" TEXT="bekomme dort Fehlerbehandlung"/>
</node>
</node>
<node CREATED="1481767579130" ID="ID_191292506" MODIFIED="1518487921057" TEXT="Dispatcher">
<icon BUILTIN="help"/>
<node CREATED="1481767748180" ID="ID_549036367" MODIFIED="1518487921057" TEXT="pro">
<node CREATED="1481767761027" ID="ID_949448369" MODIFIED="1518487921057" TEXT="ist die offizielle Schnittstelle"/>
<node CREATED="1481767864069" ID="ID_47595319" MODIFIED="1518487921057" TEXT="kann Service-Impl direkt verdrahten"/>
</node>
<node CREATED="1481767758347" ID="ID_1773256683" MODIFIED="1518487921057" TEXT="con">
<node CREATED="1481767797062" ID="ID_1542908203" MODIFIED="1518487921057">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      mu&#223; alle Operationen durchschleifen
    </p>
    <p>
      oder mu&#223; PImpl als Interface exponieren
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1481767831105" ID="ID_1351930491" MODIFIED="1576282358148" TEXT="fragiler Lebenszyklus">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      meint: zwei gekoppelte Statusvariable
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node CREATED="1481767581619" ID="ID_1364443356" MODIFIED="1518487921057" TEXT="DispatcherLoop">
<linktarget COLOR="#4aff51" DESTINATION="ID_1364443356" ENDARROW="Default" ENDINCLINATION="10;30;" ID="Arrow_ID_870320696" SOURCE="ID_1152351588" STARTARROW="Default" STARTINCLINATION="-221;-88;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1481767877379" ID="ID_1139131626" MODIFIED="1518487921057" TEXT="pro">
<node CREATED="1481767893969" ID="ID_1688865092" MODIFIED="1518487921057" TEXT="kann dort dediziertes Interface nutzen"/>
<node CREATED="1481767924909" ID="ID_438801896" MODIFIED="1518487921057" TEXT="alle Operationen passieren dort"/>
<node CREATED="1481767961616" ID="ID_1097715033" MODIFIED="1518487921057" TEXT="Lebenszyklus == RAII">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1481769041800" ID="ID_1026761428" MODIFIED="1518487921057" TEXT="ausschlaggebend">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1481769052246" ID="ID_628010771" MODIFIED="1518487921057" TEXT="gutes Design"/>
</node>
<node CREATED="1481768131609" ID="ID_600248646" MODIFIED="1518487921057" TEXT="Locking schon da"/>
</node>
<node CREATED="1481768014089" ID="ID_1260583976" MODIFIED="1518487921057" TEXT="con">
<node CREATED="1481768019848" ID="ID_1155187340" MODIFIED="1518487921057">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Shutdown <i>tricky</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1481768075481" ID="ID_795971368" MODIFIED="1518487921057" TEXT="in der Implementierung versteckt"/>
</node>
</node>
</node>
</node>
<node CREATED="1481320850779" FOLDED="true" HGAP="45" ID="ID_1632600003" MODIFIED="1582487705118" TEXT="hochfahren" VSHIFT="-3">
<icon BUILTIN="button_ok"/>
<node CREATED="1481509921211" FOLDED="true" ID="ID_1515469097" MODIFIED="1582487687161">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Session-Subsystem implementieren <font color="#c60814">(#318)</font>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1481599413419" HGAP="34" ID="ID_673133356" MODIFIED="1576282358148" TEXT="Ticket #318" VSHIFT="-7">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ....das ist schon mehr ein Meta-Ticket,
    </p>
    <p>
      und es h&#228;ngt wohl zu viel darunter, um es gleich ganz abschlie&#223;en zu k&#246;nnen.
    </p>
    <p>
      Aber ich <i>akzeptiere</i>&#160;es und verwende es jetzt als Treiber
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1483473104426" ID="ID_1606817357" MODIFIED="1483747983243" TEXT="#701 Session interface Support facility">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1483473212107" ID="ID_600424316" MODIFIED="1512926191669" TEXT="#699 entrance to session subsystem">
<icon BUILTIN="button_ok"/>
<node CREATED="1483748003185" ID="ID_1342405777" MODIFIED="1483748021355" TEXT="sollte das auch tats&#xe4;chlich mal in Betrieb setzen">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1483748023934" ID="ID_535793074" MODIFIED="1483753100683" TEXT="Session ab jetzt in main() hochfahren...">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1483473153851" ID="ID_868700871" MODIFIED="1512926191670" TEXT="#1049 draft SessionLoop component">
<icon BUILTIN="button_ok"/>
<node CREATED="1483642220941" ID="ID_517844262" MODIFIED="1483645251383" TEXT="integrate API functions for enqueuing commands">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1483642220941" ID="ID_775655275" MODIFIED="1483645257684" TEXT="integrate actual command queue">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1483642220941" ID="ID_704571897" MODIFIED="1483648766529" TEXT="care for waking (notification) from sleep state">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1483642220940" ID="ID_1519554797" MODIFIED="1483654058917" TEXT="care for syncing the disabled state">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1483642220941" ID="ID_377776032" MODIFIED="1483746849507" TEXT="deadlock safeguard">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node CREATED="1482464327133" HGAP="51" ID="ID_996095134" MODIFIED="1512926191671" TEXT="was es ist" VSHIFT="-2">
<icon BUILTIN="help"/>
<node CREATED="1482464377831" ID="ID_1028012453" MODIFIED="1482464390602">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <i>ist nicht</i>&#160;&quot;die Session
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1482464332981" ID="ID_1523357281" MODIFIED="1482464350688" TEXT="Session Subsystem == Session Dispatcher Loop Thread">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1482464414721" ID="ID_490065319" MODIFIED="1482464436563" TEXT="verwaltet Command-Queue"/>
<node CREATED="1482464436919" ID="ID_64274402" MODIFIED="1482464442042" TEXT="f&#xfc;hrt Commands aus"/>
<node CREATED="1482464442438" ID="ID_1339868449" MODIFIED="1482464449049" TEXT="startet den Builder"/>
</node>
<node CREATED="1481599421021" FOLDED="true" ID="ID_461768132" MODIFIED="1582487678249" TEXT="Locking kl&#xe4;ren">
<icon BUILTIN="button_ok"/>
<node CREATED="1481684383530" ID="ID_236117" MODIFIED="1512926191672" TEXT="zwei unabh&#xe4;ngige Locks">
<icon BUILTIN="yes"/>
<node CREATED="1481684391921" ID="ID_138369898" MODIFIED="1576282358147" TEXT="Front-End">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      das Lock sorgt hier f&#252;r konsistenten Zustand und Sichtbarkeit (memory barrier)
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1481684394544" ID="ID_1314197501" MODIFIED="1576282358147" TEXT="Back-End">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Lock ist hier das Dispatcher-Lock
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1481599468712" ID="ID_1273965744" MODIFIED="1512926191672" TEXT="Vorsicht beim Anhalten (Deadlock-Gefahr)">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1483477519974" ID="ID_1731425552" MODIFIED="1483477535864" TEXT="Term-Signal k&#xf6;nnte blocken">
<icon BUILTIN="help"/>
</node>
<node COLOR="#338800" CREATED="1483484052785" ID="ID_667055412" MODIFIED="1483581561638" TEXT="Race beim runningLoop_.reset()">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1483490459499" ID="ID_1006586365" MODIFIED="1483581568462" TEXT="Thread will sich selbst reapen ==&gt; Deadlock">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1483581573147" ID="ID_989149672" MODIFIED="1512926191673" TEXT="durch Umbau gel&#xf6;st">
<icon BUILTIN="info"/>
<node CREATED="1483490316758" ID="ID_1734989824" MODIFIED="1483581603244" TEXT="nur das Term-Signal kann DispatcherLoop deleten">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1483581605968" ID="ID_227347532" MODIFIED="1483581655738" TEXT="mu&#xdf; das &#xe4;u&#xdf;ere Lock auf ProcDispatcher verwenden"/>
<node CREATED="1483581657849" ID="ID_1078225675" MODIFIED="1483581670643" TEXT="damit sind konkurrierende Zugriffe auf die Loop geblockt"/>
<node CREATED="1483581671183" ID="ID_186079754" MODIFIED="1483581680474" TEXT="und danach ist der PImpl bereits auf NULL gesetzt"/>
<node CREATED="1483581583411" ID="ID_650761020" MODIFIED="1483581594997" TEXT="thread join ist &#xfc;berfl&#xfc;ssig"/>
<node CREATED="1483581640739" ID="ID_560356092" MODIFIED="1483581652445" TEXT="das Objekt wird in einem tail-call gel&#xf6;scht"/>
<node CREATED="1483581682701" ID="ID_747399934" MODIFIED="1483581695879" TEXT="dieser callback selber vewrwendet nur Werte vom Stack"/>
<node CREATED="1483581696443" ID="ID_373783285" MODIFIED="1483581733454" TEXT="daher kann das Objekt gefahrlos &quot;sich selber l&#xf6;schen&quot;">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node CREATED="1482464502542" ID="ID_284397306" MODIFIED="1531584182082" TEXT="Vorsicht beim Schlie&#xdf;en der Session">
<arrowlink COLOR="#5a97df" DESTINATION="ID_1378897740" ENDARROW="Default" ENDINCLINATION="2126;95;" ID="Arrow_ID_1446486242" STARTARROW="None" STARTINCLINATION="2592;-81;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1481599430804" HGAP="19" ID="ID_1105415989" MODIFIED="1512926191673" TEXT="Forwarding-Operationen implementieren" VSHIFT="10">
<icon BUILTIN="button_ok"/>
<node CREATED="1481686902156" ID="ID_1526215617" MODIFIED="1481686910633" TEXT="aktivieren /deaktivieren">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1481686911938" ID="ID_17287395" MODIFIED="1483581788279" TEXT="stoppen">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1481599594399" ID="ID_1017459823" MODIFIED="1512926191674" TEXT="entscheiden, wer die Session &#xf6;ffnet">
<icon BUILTIN="button_ok"/>
<node CREATED="1481686982097" ID="ID_1925999031" MODIFIED="1576282358146" TEXT="passiert on demand">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...wenn jemand zugreift
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1481599603757" ID="ID_812618450" MODIFIED="1481599612320" TEXT="Operation auf dem SessionManager"/>
<node CREATED="1481599612812" ID="ID_1970476027" MODIFIED="1481599618598" TEXT="der ist Singleton"/>
<node CREATED="1481599626194" ID="ID_1815350592" MODIFIED="1481599638105" TEXT="wenn Session &#xf6;ffnet, wird der Dispatcher aktiviert">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1481687005813" ID="ID_1108477992" MODIFIED="1576282358146" TEXT="Entscheidung: Sesion-lifecycle und Dispatcher sind unabh&#xe4;ngig">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      grundlegende Design-Enscheidung
    </p>
    <ul>
      <li>
        wir haben Komponenten mit Dependency-Injection
      </li>
      <li>
        da beide Komponenten nur nach ihren eigenen Hinsichten funktionieren,<br />wird das System insgesamt einfacher
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#338800" CREATED="1483581821347" HGAP="13" ID="ID_1893571865" MODIFIED="1512926191674" TEXT="Review Lebenszyklus" VSHIFT="8">
<icon BUILTIN="button_ok"/>
<node CREATED="1483581829682" ID="ID_1563520696" MODIFIED="1483581904481" TEXT="alle Subsys-Operationen auf Semantik durchgepr&#xfc;ft">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1483581852071" ID="ID_1139549600" MODIFIED="1483581902223" TEXT="1/2017: Locking und Concurrency erscheint sauber behandelt">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1481510231986" HGAP="23" ID="ID_45803267" MODIFIED="1561827464694" TEXT="dort SessionCommandService instantiieren" VSHIFT="4">
<icon BUILTIN="button_ok"/>
<node CREATED="1481769089234" ID="ID_1152351588" MODIFIED="1518487921057" TEXT="lebt in der DispatcherLoop">
<arrowlink COLOR="#4aff51" DESTINATION="ID_1364443356" ENDARROW="Default" ENDINCLINATION="10;30;" ID="Arrow_ID_870320696" STARTARROW="Default" STARTINCLINATION="-221;-88;"/>
<icon BUILTIN="info"/>
</node>
<node CREATED="1481769144226" ID="ID_1609251574" MODIFIED="1518487921057" TEXT="mu&#xdf; Service-API extrahieren">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1481777039358" ID="ID_395609084" MODIFIED="1518487921057" TEXT="Shutdown sauber regeln">
<icon BUILTIN="button_ok"/>
<node CREATED="1481777054755" ID="ID_1551225439" MODIFIED="1518487921057">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      mu&#223; SessionCommandService schlie&#223;en
    </p>
    <p>
      <i>bevor</i>&#160;die Dispatcher-loop angehalten wird
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
<node CREATED="1481778397600" ID="ID_1997192349" MODIFIED="1518487921057" TEXT="bereits wenn Anhalten signalisiert wird"/>
<node CREATED="1481778409942" ID="ID_100284739" MODIFIED="1518487921057" TEXT="zur Sicherheit nochmal im dtor"/>
</node>
<node CREATED="1481777114203" ID="ID_1156396729" MODIFIED="1518487921057" TEXT="Lock, um Deadlock zu vermeiden"/>
<node CREATED="1481777122306" ID="ID_1506554988" MODIFIED="1518487921057" TEXT="alles im dtor  -&gt; noexcept"/>
<node CREATED="1481777210447" ID="ID_1392452935" MODIFIED="1576282358145" TEXT="sicherstellen da&#xdf; shutdown nicht blockt">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      1/2017 Review durchgef&#252;hrt und Logik &#252;berarbeitet.
    </p>
    <p>
      Einziger Risikofaktor ist nun, wenn beim Schlie&#223;en des SessionCommand-Intertfaces
    </p>
    <p>
      oder beim Signalisieren an den Thread eine Exception fliegt; denn dann loggen wir zwar,
    </p>
    <p>
      aber die Shutdown-R&#252;ckmeldung kommt u.U niemals an, und damit bleiben wir
    </p>
    <p>
      am Ende von main() einfach h&#228;ngen.
    </p>
    <p>
      
    </p>
    <p>
      <i>Ich halte diese F&#228;lle aber f&#252;r in der Praxis nicht relevant,</i>&#160; und verzichte daher auf eine Spezialbehandlung
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#5a97df" DESTINATION="ID_1789585729" ENDARROW="Default" ENDINCLINATION="3225;0;" ID="Arrow_ID_1930701586" STARTARROW="None" STARTINCLINATION="2096;-122;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node CREATED="1481510244184" ID="ID_1521406724" MODIFIED="1518487921057" TEXT="kann dann in CoreService einfach &#xfc;ber die .facade() zugreifen">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1483748175610" HGAP="31" ID="ID_73597248" MODIFIED="1518487921057" VSHIFT="16">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Einfachen Aufruf
    </p>
    <p>
      implementieren
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1483748214772" ID="ID_1642552563" MODIFIED="1518487921057" TEXT="#1046 Preliminary Definition of SessionCommand facade">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1483748231330" ID="ID_1962213649" MODIFIED="1518487921057" TEXT="soll hierzu sehen, da&#xdf; ein einfacher Aufruf wirklich klappt">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1483748323014" FOLDED="true" ID="ID_1031176077" MODIFIED="1582487641495" TEXT="Nachrichten vom UI-Bus entnehmen">
<icon BUILTIN="button_ok"/>
<icon BUILTIN="help"/>
<node COLOR="#520262" CREATED="1483908814960" HGAP="34" ID="ID_430949603" MODIFIED="1561827464699" TEXT="Design sinnvoll?" VSHIFT="6">
<linktarget COLOR="#b694bf" DESTINATION="ID_430949603" ENDARROW="Default" ENDINCLINATION="178;425;" ID="Arrow_ID_1062305149" SOURCE="ID_329609486" STARTARROW="Default" STARTINCLINATION="-629;-2354;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="help"/>
<node CREATED="1483908894494" ID="ID_1854211202" MODIFIED="1518487921057" TEXT="Proc-Commands...">
<node CREATED="1483908919274" ID="ID_184360294" MODIFIED="1518487921057" TEXT="k&#xf6;nnte man direkt aufrufen"/>
<node CREATED="1483908982889" ID="ID_758147179" MODIFIED="1518487921057" TEXT="sind bereits ein Handle"/>
</node>
<node CREATED="1483909157290" ID="ID_1197073738" MODIFIED="1518487921057" TEXT="via UI-Bus">
<node CREATED="1483909161170" ID="ID_159742986" MODIFIED="1518487921057" TEXT="bleibt ein synchroner Aufruf"/>
<node CREATED="1483909179088" ID="ID_926171934" MODIFIED="1518487921057" TEXT="Command(Handle) auf beiden Seiten"/>
<node CREATED="1483909223058" ID="ID_582886428" MODIFIED="1518487921057" TEXT="Argument-Marshalling">
<node CREATED="1483909253550" ID="ID_824110666" MODIFIED="1518487921057" TEXT="umst&#xe4;ndlich, mehrstufig"/>
<node CREATED="1483909263620" ID="ID_1628441605" MODIFIED="1518487921057" TEXT="erzwingt mehrfache Indirektion"/>
<node CREATED="1483909333227" ID="ID_473681935" MODIFIED="1518487921057" TEXT="Umpacken -&gt; Record -&gt; Tuple -&gt; function"/>
</node>
<node CREATED="1483909386820" ID="ID_311424247" MODIFIED="1518487921057" TEXT="mehrfache Indirektion">
<node CREATED="1483909440437" ID="ID_1792180060" MODIFIED="1518487921057" TEXT="Variant-Record VTable"/>
<node CREATED="1483909459226" ID="ID_1352346417" MODIFIED="1518487921057" TEXT="Bus-Term VTable"/>
<node CREATED="1483909468913" ID="ID_1209442982" MODIFIED="1518487921058" TEXT="Command-Handler double dispatch"/>
<node CREATED="1483909488622" ID="ID_856721427" MODIFIED="1518487921058" TEXT="Argument-Auswertung double dispatch"/>
<node CREATED="1483909496110" ID="ID_1500666281" MODIFIED="1518487921058" TEXT="Command-Functor invocation VTable"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1483909585362" HGAP="1" ID="ID_1047452263" MODIFIED="1538840272769" TEXT="mu&#xdf; sich noch rechtfertigen" VSHIFT="11">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="yes"/>
<node CREATED="1483909605879" ID="ID_1463483386" MODIFIED="1518487921058" TEXT="war eine Design-Wahl auf Verdacht">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1483909613670" ID="ID_223762457" MODIFIED="1518487921058" TEXT="erzwingt Trennung im Planen und Denken"/>
<node CREATED="1483909679605" ID="ID_1627582396" MODIFIED="1518487921058" TEXT="k&#xf6;nnte Verallgemeinerungen im UI generieren"/>
<node CREATED="1483909714201" ID="ID_1677179961" MODIFIED="1518487921058" TEXT="k&#xf6;nnte UI-Abl&#xe4;ufe abstrakt testbar machen"/>
</node>
</node>
<node CREATED="1483755303243" HGAP="86" ID="ID_1425274731" MODIFIED="1518487921058" TEXT="Brauche Command-Handler" VSHIFT="11">
<icon BUILTIN="button_ok"/>
<node CREATED="1483755317105" ID="ID_775818551" MODIFIED="1518487921058" TEXT="ist ein Visitor"/>
<node CREATED="1483755320136" ID="ID_1343109260" MODIFIED="1561827464703" TEXT="Knackpunkt: Command-ID">
<node CREATED="1483755331671" ID="ID_1913103415" MODIFIED="1518487921058" TEXT="wird im Visitor gebraucht">
<node CREATED="1483909964935" ID="ID_991182613" MODIFIED="1518487921058">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      will sagen: <i>in </i>den Visitor-Methoden-Implementierungen
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1483909984005" ID="ID_590392737" MODIFIED="1518487921058">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <i>aber</i>&#160;ist nicht auf dem Visitor-Interface darstellbar
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1483910035326" ID="ID_366990653" MODIFIED="1533608413554" TEXT="latentes Design-Problem">
<icon BUILTIN="idea"/>
<node CREATED="1483910047148" ID="ID_1870862761" MODIFIED="1518487921058" TEXT="Design Rec&lt;GenNode&gt;"/>
<node CREATED="1483910056243" ID="ID_967619584" MODIFIED="1518487921058" TEXT="da Record eine Payload ist"/>
<node CREATED="1483910117819" ID="ID_117939525" MODIFIED="1576282358145" TEXT="man k&#xf6;nnte....">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ....&#252;ber einen GenNode-Visitor nachdenken
    </p>
    <p>
      <b>aber</b>
    </p>
    <ul>
      <li>
        nicht jetzt
      </li>
      <li>
        das Problem m&#252;&#223;te mehrfach auftreten
      </li>
      <li>
        k&#246;nnte zu Switch-On-Type-programming f&#252;hren
      </li>
    </ul>
  </body>
</html></richcontent>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
</node>
</node>
<node CREATED="1483755341814" ID="ID_254491480" MODIFIED="1518487921058" TEXT="Instanz-Management fraglich">
<node CREATED="1483909934891" ID="ID_1608078388" MODIFIED="1518487921058" TEXT="nicht wirklich relevant"/>
<node CREATED="1483909940506" ID="ID_262925518" MODIFIED="1518487921058" TEXT="effektiv nur Stack-Storage"/>
</node>
<node CREATED="1483755347949" ID="ID_4176562" MODIFIED="1518487921058" TEXT="Performance-&#xdc;berlegungen">
<node CREATED="1483909826690" ID="ID_1903951356" MODIFIED="1518487921058" TEXT="nicht wirklich schlimm">
<icon BUILTIN="smiley-neutral"/>
</node>
<node CREATED="1483909832385" ID="ID_136936347" MODIFIED="1518487921058" TEXT="Storage ist lokal"/>
<node CREATED="1483909836992" ID="ID_238373170" MODIFIED="1518487921058" TEXT="VTable ist vorbereitet"/>
<node CREATED="1483909866844" ID="ID_83144371" MODIFIED="1518487921058" TEXT="aber: double-dispatch">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1483755360196" ID="ID_514688462" MODIFIED="1518487921058" TEXT="Nachrichten kommen ohne bestimmte Ordnung an"/>
</node>
</node>
<node CREATED="1483910254385" FOLDED="true" HGAP="88" ID="ID_267402281" MODIFIED="1582487629892" TEXT="Command-Instanz-Management" VSHIFT="-8">
<icon BUILTIN="messagebox_warning"/>
<icon BUILTIN="help"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1483910266799" ID="ID_86909318" MODIFIED="1518487921058" TEXT="wie funktioniert&apos;s?">
<icon BUILTIN="help"/>
</node>
<node CREATED="1483910289396" ID="ID_1014786685" MODIFIED="1518487921058" TEXT="Prototyp-Pattern"/>
<node CREATED="1483910293827" ID="ID_1957585594" MODIFIED="1518487921058" TEXT="irgendjemand...">
<node CREATED="1483910333137" ID="ID_1304876612" MODIFIED="1518487921058" TEXT="mu&#xdf; Command-Definitionen Klonen"/>
<node CREATED="1483910306458" ID="ID_601011326" MODIFIED="1518487921058" TEXT="und dabei IDs generieren / dekorieren"/>
</node>
<node CREATED="1483911060894" ID="ID_1204552049" MODIFIED="1518487921058" TEXT="wer">
<icon BUILTIN="help"/>
<node CREATED="1483911069277" ID="ID_277421164" MODIFIED="1518487921058" TEXT="InteractionStateManager">
<node CREATED="1483911145898" ID="ID_897832170" MODIFIED="1518487921058" TEXT="eigentlich nur opaque Command-IDs"/>
<node CREATED="1483911161248" ID="ID_283380145" MODIFIED="1518487921058" TEXT="aber: wei&#xdf; wann neue Interaktion beginnt"/>
</node>
<node CREATED="1483911091314" ID="ID_842914123" MODIFIED="1518487921058" TEXT="SessionCommandService">
<node CREATED="1483911181669" ID="ID_1397857321" MODIFIED="1518487921058" TEXT="sitzt schon in Proc"/>
<node CREATED="1483911194940" ID="ID_485403998" MODIFIED="1518487921058" TEXT="&quot;nat&#xfc;rlich&quot; nah am Command-Framework"/>
<node CREATED="1483911208546" ID="ID_380202969" MODIFIED="1518487921058" TEXT="wei&#xdf; aber nichts von Interaktionen"/>
</node>
</node>
<node CREATED="1483921000340" HGAP="-60" ID="ID_1814046433" MODIFIED="1518487921058" VSHIFT="31">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <i>Idee:</i>&#160;Zusammenarbeit
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
<node CREATED="1483921070115" ID="ID_398046799" MODIFIED="1518487921058" TEXT="Prototyp-Service"/>
<node CREATED="1483921132114" ID="ID_1652398711" MODIFIED="1518487921058" TEXT="liefert dekorierte Command-ID"/>
<node CREATED="1483921149368" ID="ID_1028150245" MODIFIED="1518487921058" TEXT="im GUI nur noch Command-IDs"/>
<node CREATED="1483924872930" ID="ID_242219866" MODIFIED="1582487507380">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...das w&#228;re eine <b>Protokoll-Erweiterung</b>
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#8ba05e" DESTINATION="ID_242219866" ENDARROW="Default" ENDINCLINATION="1170;1204;" ID="Arrow_ID_1617518648" SOURCE="ID_1479669922" STARTARROW="None" STARTINCLINATION="3617;-1097;"/>
<node CREATED="1582487470565" ID="ID_323975519" MODIFIED="1582487479759" TEXT="teilweise umgesetzt"/>
<node CREATED="1582487480467" ID="ID_1883804803" MODIFIED="1582487486597" TEXT="Deokrieren von Command-IDs"/>
<node CREATED="1582487487266" ID="ID_1888880877" MODIFIED="1582487494285" TEXT="weitergehende Ideen verworfen">
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node CREATED="1483927472385" HGAP="30" ID="ID_774425061" MODIFIED="1582487441000" VSHIFT="13">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      letztlich verworfen; siehe Ticket <font color="#c52a05">#1058</font>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_cancel"/>
</node>
</node>
</node>
<node CREATED="1483755390640" HGAP="66" ID="ID_1882657994" MODIFIED="1538840301236" TEXT="Vorlage" VSHIFT="-1">
<icon BUILTIN="info"/>
<node CREATED="1483755399334" ID="ID_582834462" MODIFIED="1518487921058" TEXT="AbstractTangible_test">
<node CREATED="1483755406254" ID="ID_1800773105" MODIFIED="1518487921058" TEXT="hat inline-Visitor"/>
<node CREATED="1483755445984" ID="ID_468077802" MODIFIED="1518487921058" TEXT="aber Command-ID fest gedrahtet">
<icon BUILTIN="smily_bad"/>
</node>
</node>
<node CREATED="1483755412605" ID="ID_220502028" MODIFIED="1518487921058" TEXT="BusTerm_test">
<node CREATED="1483755417932" ID="ID_1696122428" MODIFIED="1518487921058" TEXT="verwendet Hanlder vom Test-Nexus"/>
<node CREATED="1483755428354" ID="ID_1619772942" MODIFIED="1518487921058" TEXT="der verwendet bereits komplettes Argument-Binding">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1483924890656" HGAP="-45" ID="ID_815841886" MODIFIED="1518487921058" TEXT="Implementierung" VSHIFT="22">
<icon BUILTIN="button_ok"/>
<node CREATED="1483924900583" ID="ID_12753464" MODIFIED="1518487921058" TEXT="banal">
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1483924903190" ID="ID_1436586014" MODIFIED="1576282358144" TEXT="wenn man das Design akzeptiert">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...das hei&#223;t,
    </p>
    <p>
      die mehrfachen Indirektionen und das Ein-/Auspacken der Argumente
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node COLOR="#338800" CREATED="1483927552823" HGAP="-160" ID="ID_458362835" MODIFIED="1538840308219" TEXT="Unit-Test" VSHIFT="24">
<icon BUILTIN="button_ok"/>
<node CREATED="1484294389310" ID="ID_100306048" MODIFIED="1518487921058" TEXT="direkter Aufruf der Facade">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1484294397597" ID="ID_1461153044" MODIFIED="1518487921058" TEXT="Aufruf &#xfc;ber Nachrichten + Visitor">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1484294409827" ID="ID_1014781174" MODIFIED="1518487921058" TEXT="massiv-paralleler Aufruf">
<icon BUILTIN="button_ok"/>
<node CREATED="1484377327032" ID="ID_1461940140" MODIFIED="1518487921058" TEXT="war eine interessante &#xdc;bung...">
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1484377336983" ID="ID_823071776" MODIFIED="1518487921058" TEXT="Hilfsmittel f&#xfc;r Thread/Familien-IDs">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1484377358324" ID="ID_1280997474" MODIFIED="1518487921059" TEXT="in der Tat">
<icon BUILTIN="idea"/>
<node CREATED="1484377383249" ID="ID_1422297147" MODIFIED="1518487921059" TEXT="Commands &#xfc;berholen sich"/>
<node CREATED="1484377389056" ID="ID_930164551" MODIFIED="1518487921059" TEXT="Command instanzen d&#xfc;rfen nicht geshared werden">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1483748340524" ID="ID_841368846" MODIFIED="1518487921059" TEXT="API-Funktionen aufrufen">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1482464658193" FOLDED="true" HGAP="-14" ID="ID_726798260" MODIFIED="1561827464711" TEXT="Ausgestaltung" VSHIFT="29">
<icon BUILTIN="button_ok"/>
<node CREATED="1482465840843" FOLDED="true" ID="ID_818984499" MODIFIED="1582487750838" TEXT="Entwurf">
<icon BUILTIN="stop-sign"/>
<node CREATED="1482464676366" ID="ID_1064506750" MODIFIED="1518487921059" TEXT="bekommt Nachrichten vom UI-Bus">
<node CREATED="1482464755404" ID="ID_213932356" MODIFIED="1518487921059" TEXT="entnimmt Argument"/>
<node CREATED="1482464758148" ID="ID_545671857" MODIFIED="1518487921059" TEXT="triggert sofort"/>
<node CREATED="1492205571235" ID="ID_166892291" MODIFIED="1576282358143" TEXT="Zukunft: partiell schlie&#xdf;en">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      es w&#228;re denkbar, an dieser Stelle
    </p>
    <p>
      unvollst&#228;ndige Argument-Tupel zu akzeptieren
    </p>
    <p>
      und die Argumente von links her zu schlie&#223;en (currying)
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1482464696668" ID="ID_1191503480" MODIFIED="1518487921059" TEXT="m&#xfc;ssen in Command-Objekte &#xfc;bersetzt werden"/>
<node CREATED="1482464712474" ID="ID_1386285986" MODIFIED="1518487921059" TEXT="Interface sollte noch GenNodes nehmen"/>
<node CREATED="1482464719513" ID="ID_1003624750" MODIFIED="1518487921059" TEXT="aber synchron die Commands beziehen"/>
<node CREATED="1482464730783" ID="ID_1225624791" MODIFIED="1518487921059" TEXT="damit Exceptions sofort fliegen"/>
</node>
<node CREATED="1484377470133" FOLDED="true" HGAP="35" ID="ID_62981197" MODIFIED="1582487752710" TEXT="Weiterungen" VSHIFT="11">
<icon BUILTIN="hourglass"/>
<node CREATED="1484377485339" ID="ID_414407137" MODIFIED="1518487921059" TEXT="Commands mit verschiedener Priorit&#xe4;t"/>
<node CREATED="1484377503465" ID="ID_72812588" MODIFIED="1518487921059" TEXT="Commands aggregieren"/>
<node CREATED="1484377535829" ID="ID_488242691" MODIFIED="1518487921059" TEXT="Verwerfen von Commands"/>
<node CREATED="1484377546779" ID="ID_1097356179" MODIFIED="1518487921059" TEXT="Command-ID - Typ"/>
</node>
<node COLOR="#435e98" CREATED="1482465854513" HGAP="26" ID="ID_1477532018" MODIFIED="1538840324244" TEXT="Widerspruch zu Tangible " VSHIFT="12">
<icon BUILTIN="broken-line"/>
<node CREATED="1482465965660" ID="ID_1945056449" MODIFIED="1518487921059" TEXT="Tangible::prepareCommand"/>
<node CREATED="1482466012484" ID="ID_283758092" MODIFIED="1518487921059" TEXT="verwendet InvocationTrail">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1482466021562" ID="ID_620393388" MODIFIED="1518487921059" TEXT="dieser wird direkt mit Command erzeugt">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1482466509953" ID="ID_565604124" MODIFIED="1576282358143" TEXT="...dient der Sicherheit">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      denn es erzwingt,
    </p>
    <p>
      da&#223; die betreffenden Commands schon erzeugt und registriert sein m&#252;ssen,
    </p>
    <p>
      wenn in der UI ein InvocationTrail angelegt wird.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1482466104359" ID="ID_235553653" MODIFIED="1518487921059" TEXT="speichert aber eigentlich nur die Cmd-ID">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1492443474996" HGAP="21" ID="ID_440734267" MODIFIED="1518487921059" TEXT="Schlu&#xdf;folgerung: direkter Aufruf mit Cmd-ID gen&#xfc;gt" VSHIFT="10">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1482466197707" ID="ID_832611965" MODIFIED="1518487921059">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Architektur-Entscheidung
    </p>
    <p>
      <i>kann offen bleiben</i>
    </p>
  </body>
</html></richcontent>
<node CREATED="1482466246933" ID="ID_870716233" MODIFIED="1518487921059" TEXT="h&#xe4;ngt von der Verwendung ab"/>
<node CREATED="1482466260627" ID="ID_1708185529" MODIFIED="1518487921059" TEXT="wie Commands im UI gebunden werden"/>
<node CREATED="1482466271713" ID="ID_1519273419" MODIFIED="1518487921059" TEXT="Nur IDs gehen &#xfc;ber die Leitung">
<icon BUILTIN="info"/>
</node>
<node CREATED="1482466587807" ID="ID_135147405" MODIFIED="1518487921059">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      reine ID-Wirtschaft <i>w&#228;re m&#246;glich</i>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1482466285359" ID="ID_1077952925" MODIFIED="1518487921059" TEXT="Zugriff auf proc::control::Command is OK">
<icon BUILTIN="yes"/>
<node COLOR="#c0425f" CREATED="1482466320947" ID="ID_431246960" MODIFIED="1518487921059" TEXT="Grundsatz-Entscheidung">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1482466328482" ID="ID_1223809722" MODIFIED="1518487921059" TEXT="GUI darf von unteren Layern abh&#xe4;ngen">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
<node CREATED="1482466347767" ID="ID_755953852" MODIFIED="1518487921059" TEXT="C++ ist das ma&#xdf;gebliche Ausdrucksmedium">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1482466368068" ID="ID_149410251" MODIFIED="1518487921059" TEXT="und nicht irgend ein abstraktes CLI-Binding">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1481320870369" HGAP="17" ID="ID_454465129" MODIFIED="1557498707217" TEXT="Rolle des &quot;Model&quot; kl&#xe4;ren" VSHIFT="20">
<icon BUILTIN="forward"/>
<node CREATED="1484882430390" HGAP="56" ID="ID_836665320" MODIFIED="1557498707217" TEXT="Diff-Nachrichten" VSHIFT="-23">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1484882437421" ID="ID_1948154354" MODIFIED="1557498707217" TEXT="#1066 concept to pass diff messages">
<icon BUILTIN="flag-yellow"/>
</node>
<node CREATED="1484882477368" ID="ID_224140586" MODIFIED="1557498707217" TEXT="Probleme">
<node CREATED="1484882480568" ID="ID_1399902588" MODIFIED="1557498707217" TEXT="unbekannter Quelltyp"/>
<node CREATED="1484882487911" ID="ID_651657111" MODIFIED="1557498707217" TEXT="Storage-Management"/>
<node CREATED="1484882493501" ID="ID_935689465" MODIFIED="1557498707217" TEXT="&#xdc;bergabe in den Event-Thread">
<arrowlink COLOR="#b7748e" DESTINATION="ID_31825421" ENDARROW="Default" ENDINCLINATION="560;150;" ID="Arrow_ID_1434676575" STARTARROW="Default" STARTINCLINATION="587;44;"/>
</node>
<node CREATED="1484882506156" ID="ID_1297602514" MODIFIED="1557498707217" TEXT="Callback aus dem Event-Thread"/>
</node>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1538840339858" ID="ID_304902509" MODIFIED="1557498707217" TEXT="es gibt kein Model im klassischen Sinn">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node CREATED="1477784829157" ID="ID_1998357180" MODIFIED="1662053420334" TEXT="Icon-Laden modernisieren">
<linktarget COLOR="#b73b74" DESTINATION="ID_1998357180" ENDARROW="Default" ENDINCLINATION="-1444;146;" ID="Arrow_ID_373354654" SOURCE="ID_264004203" STARTARROW="None" STARTINCLINATION="-586;-482;"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1662052083304" ID="ID_1536704401" MODIFIED="1662052109690">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Stock-IDs sind <font color="#e94312" face="Monospaced">@deprecated</font>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1662052322319" ID="ID_1280255371" MODIFIED="1662052382908" TEXT="Implementierung: im UiManager">
<arrowlink COLOR="#864e7a" DESTINATION="ID_297910960" ENDARROW="Default" ENDINCLINATION="-843;-48;" ID="Arrow_ID_154615679" STARTARROW="None" STARTINCLINATION="695;60;"/>
</node>
</node>
<node CREATED="1477784821925" ID="ID_1871474250" MODIFIED="1557498707217" TEXT="Styling aufr&#xe4;umen">
<node CREATED="1477784846162" ID="ID_1164942946" MODIFIED="1557498707217" TEXT="siehe Info zum CssProvider">
<arrowlink COLOR="#a9b4c1" DESTINATION="ID_1810760662" ENDARROW="Default" ENDINCLINATION="1600;-25;" ID="Arrow_ID_1610122569" STARTARROW="None" STARTINCLINATION="-840;95;"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1538938570760" HGAP="57" ID="ID_1165433334" MODIFIED="1679362063150" TEXT="Neubau" VSHIFT="41">
<font NAME="SansSerif" SIZE="16"/>
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1538938751743" FOLDED="true" ID="ID_243888746" MODIFIED="1679361235146">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      &#187;die <b>Timeline</b>&#171;
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="hourglass"/>
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1477784813895" ID="ID_330280074" MODIFIED="1567875934606">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <u>Aufgabe</u>: <i><font size="4" color="#821b58">populate timeline</font></i>
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#f9b709" DESTINATION="ID_330280074" ENDARROW="Default" ENDINCLINATION="-37;-88;" ID="Arrow_ID_779644313" SOURCE="ID_635303062" STARTARROW="None" STARTINCLINATION="-34;70;"/>
<linktarget COLOR="#6db0a6" DESTINATION="ID_330280074" ENDARROW="Default" ENDINCLINATION="-770;358;" ID="Arrow_ID_690602400" SOURCE="ID_1435888336" STARTARROW="None" STARTINCLINATION="1193;46;"/>
<icon BUILTIN="flag-yellow"/>
<node COLOR="#338800" CREATED="1538942842294" ID="ID_1752483939" MODIFIED="1587220691511" TEXT="minimalen Diff f&#xfc;r eine Timeline">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1538942872402" ID="ID_932408081" MODIFIED="1561827464711" TEXT="Panel wird erzeugt">
<icon BUILTIN="button_ok"/>
<node CREATED="1553902314962" ID="ID_1100232681" MODIFIED="1553902322907" TEXT="vorl&#xe4;ufige Platzhalter-Implementierung"/>
<node CREATED="1553902329566" ID="ID_149032705" MODIFIED="1576282358142" TEXT="PanelLocator">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      8/2018 there is some overlap with the (not yet fully functional)&#160;
    </p>
    <p>
      ViewLocator in the InteractionDirector. Right now, PanelLocator&#160;&#160;
    </p>
    <p>
      fills some gaps here and offers preliminary solutions for some&#160;&#160;&#160;
    </p>
    <p>
      lookup and allocation tasks ultimately to be performed on a more&#160;
    </p>
    <p>
      abstract level through the ViewSpec-DSL. This corresponds to the&#160;
    </p>
    <p>
      observation, that PanelLocator and WindowLocator are somewhat&#160;&#160;&#160;&#160;
    </p>
    <p>
      tangled currently. The goal is to turn them into access services,
    </p>
    <p>
      and shift the allocation logic to the aforementioned higher level.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1553902425206" ID="ID_908225698" MODIFIED="1576282358142" TEXT="verwendet im Hintergrund noch den alten PanelManager">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...der aber irgendwann (demn&#228;chst in diesem Theater) umgebaut/zur&#252;ckgebaut werden soll
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#338800" CREATED="1538942878609" ID="ID_689625343" MODIFIED="1557498707218" TEXT="Timeline-Tab wird belegt">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1538942890792" ID="ID_642469734" MODIFIED="1587220691511" TEXT="hat einen Track">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1538942901590" ID="ID_758238752" MODIFIED="1587220691511" TEXT="ein Clip erscheint">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1538943061633" ID="ID_1972040317" MODIFIED="1557498707218" TEXT="minimale Feedback-Aktionen">
<icon BUILTIN="hourglass"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1538943095252" ID="ID_1784185766" MODIFIED="1557498707218" TEXT="drag clip">
<arrowlink COLOR="#fbd7b5" DESTINATION="ID_1472064878" ENDARROW="Default" ENDINCLINATION="-1443;-151;" ID="Arrow_ID_1918638969" STARTARROW="None" STARTINCLINATION="1644;332;"/>
<icon BUILTIN="pencil"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1538943104651" ID="ID_948012732" MODIFIED="1557498707218" TEXT="delete clip">
<icon BUILTIN="hourglass"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1539525762357" ID="ID_401544840" MODIFIED="1557498707218" TEXT="Test-Infrastruktur">
<icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1539525774683" ID="ID_800878475" MODIFIED="1557498707218" TEXT="neuer Tab im TestControl">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1539525811238" ID="ID_257363214" MODIFIED="1557498707218" TEXT="Buttons / Commands">
<icon BUILTIN="flag-yellow"/>
<node COLOR="#338800" CREATED="1539525817565" ID="ID_609053758" MODIFIED="1557498707218" TEXT="Sequence-1">
<icon BUILTIN="button_ok"/>
<node CREATED="1539525949443" ID="ID_1576521954" MODIFIED="1557498707218" STYLE="fork" TEXT="einfacher Standardfall">
<icon BUILTIN="info"/>
</node>
<node COLOR="#338800" CREATED="1539554145649" ID="ID_1360223401" MODIFIED="1557498707218" TEXT="Diff anlegen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1539564584429" ID="ID_1716609826" MODIFIED="1557498707218" TEXT="Root-Track">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1539564589548" ID="ID_1561391207" MODIFIED="1586612902058" TEXT="zwei Clips darin">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1539525933590" ID="ID_1481796996" MODIFIED="1586612902609" TEXT="Sequence-2">
<icon BUILTIN="button_ok"/>
<node CREATED="1539525938045" ID="ID_940685408" MODIFIED="1557498707218" TEXT="komplex geschachtelt">
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1624020679822" ID="ID_1951868587" MODIFIED="1624020697138" TEXT="mehrere Clips">
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1539525972400" ID="ID_1975832820" MODIFIED="1557498707218" TEXT="Testdaten-Verwaltung">
<icon BUILTIN="flag-yellow"/>
<node COLOR="#338800" CREATED="1539525981879" ID="ID_1137936334" MODIFIED="1557498707218" TEXT="DummySessionConnection etablieren #1042">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1539525998157" ID="ID_1482744929" MODIFIED="1557498707218" TEXT="Diff-tee">
<icon BUILTIN="flag-pink"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1539526035136" ID="ID_1859459942" MODIFIED="1557498707218" TEXT="Daten-Dump">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1539528791316" ID="ID_130694385" MODIFIED="1679087465382" TEXT="#1014 populate timeline">
<arrowlink COLOR="#4989d4" DESTINATION="ID_1661495339" ENDARROW="Default" ENDINCLINATION="143;-11;" ID="Arrow_ID_184610773" STARTARROW="None" STARTINCLINATION="93;0;"/>
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1539528779894" ID="ID_1661495339" MODIFIED="1679087491842" TEXT="#1016 GUI timeline layout structure">
<linktarget COLOR="#4989d4" DESTINATION="ID_1661495339" ENDARROW="Default" ENDINCLINATION="143;-11;" ID="Arrow_ID_184610773" SOURCE="ID_130694385" STARTARROW="None" STARTINCLINATION="93;0;"/>
<icon BUILTIN="hourglass"/>
<icon BUILTIN="pencil"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1538940061190" ID="ID_1231562526" MODIFIED="1679087423123" TEXT="Timeline Panel bauen">
<arrowlink COLOR="#fec680" DESTINATION="ID_712786561" ENDARROW="Default" ENDINCLINATION="-1077;-98;" ID="Arrow_ID_433721169" STARTARROW="None" STARTINCLINATION="860;206;"/>
<icon BUILTIN="hourglass"/>
<icon BUILTIN="button_ok"/>
<icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1538940061190" ID="ID_1375216048" MODIFIED="1557498707218" TEXT="verankern im InteractonDirector">
<arrowlink COLOR="#fec680" DESTINATION="ID_810032444" ENDARROW="Default" ENDINCLINATION="-451;-531;" ID="Arrow_ID_1378803021" STARTARROW="None" STARTINCLINATION="345;28;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1538941158698" ID="ID_513093052" MODIFIED="1557498707218" TEXT="vorl&#xe4;ufiger Allokator">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1538941253181" ID="ID_1144811315" MODIFIED="1557498707218" TEXT="multi-Tab-Anzeige">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1538940061190" ID="ID_1325225528" MODIFIED="1557498707218" TEXT="Aktion re-Locate">
<arrowlink COLOR="#fec680" DESTINATION="ID_1992201258" ENDARROW="Default" ENDINCLINATION="-784;-81;" ID="Arrow_ID_126634995" STARTARROW="None" STARTINCLINATION="651;0;"/>
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1538940061190" ID="ID_977311190" MODIFIED="1557498707218" TEXT="Aktion re-Populate">
<arrowlink COLOR="#fec680" DESTINATION="ID_501539344" ENDARROW="Default" ENDINCLINATION="-1280;-81;" ID="Arrow_ID_938812574" STARTARROW="None" STARTINCLINATION="335;22;"/>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node COLOR="#338800" CREATED="1538939781588" FOLDED="true" ID="ID_1327960211" MODIFIED="1679087404467" TEXT="Timeline Widget bauen">
<arrowlink COLOR="#7d91d6" DESTINATION="ID_1613745412" ENDARROW="Default" ENDINCLINATION="-63;-32;" ID="Arrow_ID_1377777978" STARTARROW="None" STARTINCLINATION="-144;16;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1538941097739" ID="ID_368023009" MODIFIED="1679087363046" TEXT="Klassen anlegen und verdrahten">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1538941119416" ID="ID_1730845721" MODIFIED="1561827464711" TEXT="Panel">
<icon BUILTIN="hourglass"/>
<node CREATED="1553904058976" ID="ID_1691737302" MODIFIED="1553904063506" TEXT="vorl&#xe4;ufig"/>
<node CREATED="1553904064045" ID="ID_243039089" MODIFIED="1553904072649" TEXT="wartet noch auf Umbau PanelManager"/>
</node>
<node COLOR="#338800" CREATED="1538941122447" ID="ID_1577513149" MODIFIED="1557498707218" TEXT="Widget">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1538941130390" ID="ID_813480105" MODIFIED="1557498707218" TEXT="Controller">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1538941132710" ID="ID_878237612" MODIFIED="1611914013999" TEXT="Presenter">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1538940061190" ID="ID_693425928" MODIFIED="1679087373385" TEXT="Timeline-Controller bauen">
<arrowlink COLOR="#fec680" DESTINATION="ID_391329400" ENDARROW="Default" ENDINCLINATION="-1077;-98;" ID="Arrow_ID_1839172502" STARTARROW="None" STARTINCLINATION="407;0;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1538940061190" ID="ID_1570849604" MODIFIED="1679087375814" TEXT="Presenter bauen">
<arrowlink COLOR="#fec680" DESTINATION="ID_1306244096" ENDARROW="Default" ENDINCLINATION="-1077;-98;" ID="Arrow_ID_951723874" STARTARROW="None" STARTINCLINATION="407;0;"/>
<arrowlink COLOR="#fec680" DESTINATION="ID_834517953" ENDARROW="Default" ENDINCLINATION="-1077;-98;" ID="Arrow_ID_483670351" STARTARROW="None" STARTINCLINATION="407;0;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1538939792267" ID="ID_1104238784" MODIFIED="1679087400777" TEXT="Pr&#xe4;sentation bauen">
<icon BUILTIN="hourglass"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1538940061190" ID="ID_758873433" MODIFIED="1679087392224" TEXT="Layout-Control">
<arrowlink COLOR="#fec680" DESTINATION="ID_562532566" ENDARROW="Default" ENDINCLINATION="-1077;-98;" ID="Arrow_ID_130009025" STARTARROW="None" STARTINCLINATION="611;93;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1538940061190" ID="ID_1131206858" MODIFIED="1679087394262" TEXT="konkrete Anzeige">
<arrowlink COLOR="#fec680" DESTINATION="ID_1999928728" ENDARROW="Default" ENDINCLINATION="-1077;-98;" ID="Arrow_ID_506785204" STARTARROW="None" STARTINCLINATION="368;125;"/>
<arrowlink COLOR="#fec680" DESTINATION="ID_1240926804" ENDARROW="Default" ENDINCLINATION="-1142;35;" ID="Arrow_ID_435369727" STARTARROW="None" STARTINCLINATION="394;108;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1624027332115" ID="ID_1575894780" MODIFIED="1679084608014" TEXT="Fork-Heads darstellen">
<arrowlink COLOR="#fec680" DESTINATION="ID_530086217" ENDARROW="Default" ENDINCLINATION="-1511;-125;" ID="Arrow_ID_1923188182" STARTARROW="None" STARTINCLINATION="1147;124;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1624027322054" ID="ID_416633797" MODIFIED="1679087382174" TEXT="Timeline-Canvas darstellen">
<arrowlink COLOR="#fec680" DESTINATION="ID_457526663" ENDARROW="Default" ENDINCLINATION="-1077;-98;" ID="Arrow_ID_1979848335" STARTARROW="None" STARTINCLINATION="709;70;"/>
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1624027591203" ID="ID_632606530" MODIFIED="1679087388212" TEXT="Clips darstellen">
<arrowlink COLOR="#fec680" DESTINATION="ID_1240926804" ENDARROW="Default" ENDINCLINATION="-1077;-98;" ID="Arrow_ID_1799878244" STARTARROW="None" STARTINCLINATION="933;139;"/>
<icon BUILTIN="hourglass"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1538938796825" ID="ID_1428561726" MODIFIED="1557498707218">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      &#187;der <b>Viewer</b>&#171;
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="hourglass"/>
</node>
<node CREATED="1538938835228" ID="ID_1454224639" MODIFIED="1557498707218" TEXT="&#xbb;Properties&#xab;">
<icon BUILTIN="hourglass"/>
</node>
<node CREATED="1538938838779" ID="ID_112266805" MODIFIED="1557498707218" TEXT="&#xbb;Assets&#xab;">
<icon BUILTIN="hourglass"/>
</node>
<node CREATED="1538938942294" ID="ID_59353951" MODIFIED="1557498707218" TEXT="&#xbb;Hilfe&#xab;">
<icon BUILTIN="hourglass"/>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1665345185616" FOLDED="true" ID="ID_101940844" MODIFIED="1665345203007" TEXT="Gestaltung">
<font NAME="SansSerif" SIZE="16"/>
<node CREATED="1665345228705" ID="ID_1925832789" MODIFIED="1665345233401" TEXT="Erscheinungsbild">
<node CREATED="1665345276391" ID="ID_1994007828" MODIFIED="1665345283311" TEXT="Grunds&#xe4;tzliches">
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1665345284722" ID="ID_1079113450" MODIFIED="1665345322919">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      &#187;professionell&#171; bedeutet: <b>unaufdringlich</b>&#160;und <b>klar</b>
    </p>
  </body>
</html></richcontent>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1665345366992" ID="ID_121066086" MODIFIED="1665345388417" TEXT="Langfristig anlegen &#x2014; sinnvolle Neuerungen aufnehmen"/>
</node>
<node CREATED="1665345516616" ID="ID_381359824" MODIFIED="1665345520495" TEXT="Design-Aufgaben">
<node CREATED="1665345521627" ID="ID_1001028233" MODIFIED="1665345524962" TEXT="Themes">
<node CREATED="1665345537216" ID="ID_1252537015" MODIFIED="1665345553041" TEXT="Eigenst&#xe4;ndiges Theme">
<node CREATED="1665345555462" ID="ID_38945127" MODIFIED="1665345585015" TEXT="Grundentscheidungen">
<node CREATED="1665345645842" ID="ID_1301597547" MODIFIED="1665345659773" TEXT="Stilmuster: Medien-Arbeit"/>
<node CREATED="1665345660936" ID="ID_161658053" MODIFIED="1665345670197" TEXT="halb abgedunkelt">
<node CREATED="1665345679342" ID="ID_865100875" MODIFIED="1665345695734" TEXT="Schrift grunds&#xe4;tzlich schwarz"/>
<node CREATED="1665345697475" ID="ID_636671195" MODIFIED="1665345714885" TEXT="dunkel genug, damit Inhalte hervortreten"/>
</node>
</node>
</node>
<node CREATED="1665345526106" ID="ID_1461752003" MODIFIED="1665346437138" TEXT="Integration Desktop-Themes">
<arrowlink COLOR="#5284c5" DESTINATION="ID_441937774" ENDARROW="Default" ENDINCLINATION="-1007;-1223;" ID="Arrow_ID_1036308053" STARTARROW="None" STARTINCLINATION="-344;581;"/>
<node CREATED="1665345607216" ID="ID_1511504840" MODIFIED="1665345609635" TEXT="hell"/>
<node CREATED="1665345610391" ID="ID_527297290" MODIFIED="1665345612315" TEXT="dunkel"/>
</node>
</node>
<node CREATED="1665345726447" ID="ID_1745324854" MODIFIED="1665345733936" TEXT="Grafik-Elemente">
<node CREATED="1665345734862" ID="ID_1876392387" MODIFIED="1665802081759" TEXT="Basis-Icons">
<arrowlink COLOR="#8487c2" DESTINATION="ID_1034074054" ENDARROW="Default" ENDINCLINATION="-757;-939;" ID="Arrow_ID_186260230" STARTARROW="None" STARTINCLINATION="-258;57;"/>
<node CREATED="1665345747229" ID="ID_354372547" MODIFIED="1665345789624" TEXT="m&#xf6;glichst eigenen Basis-Satz verwenden">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...damit wir nicht der extremen Variabilit&#228;t f&#252;r Desktop-Icons unterliegen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1665345798270" ID="ID_194586692" MODIFIED="1665345807889" TEXT="Standard-Aktionen aber vom Desktiop">
<node CREATED="1665345812836" ID="ID_1218015983" MODIFIED="1665345840211" TEXT="New, Open, Save, Undo/Redo, Clipboard"/>
</node>
<node CREATED="1665345851063" ID="ID_1597996676" MODIFIED="1665345875776" TEXT="Charakter-Zeichen">
<node COLOR="#338800" CREATED="1665346240663" ID="ID_1763162264" MODIFIED="1665346249075" TEXT="Lumiera-Logo">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1665345876873" FOLDED="true" ID="ID_1015286402" MODIFIED="1665802131501" TEXT="Placement-Icon">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="forward"/>
<node CREATED="1665345929580" ID="ID_60603155" MODIFIED="1665802111894" TEXT="unterstreicht den Grundcharakter von Lumiera"/>
<node CREATED="1665345968399" ID="ID_540465051" MODIFIED="1665802111894" TEXT="soll pervasiv verwendet werden">
<node CREATED="1665346130257" ID="ID_858257568" MODIFIED="1665802111894" TEXT="f&#xfc;r alle &quot;strukturellen&quot; Verwendungen"/>
<node COLOR="#435e98" CREATED="1665345985124" ID="ID_1904965684" MODIFIED="1665855410112" TEXT="&#x27f9; integriert in ElementBoxWidget">
<arrowlink COLOR="#6681be" DESTINATION="ID_178231784" ENDARROW="Default" ENDINCLINATION="-1422;-171;" ID="Arrow_ID_287037902" STARTARROW="None" STARTINCLINATION="626;53;"/>
</node>
</node>
<node COLOR="#338800" CREATED="1665346164380" ID="ID_219154210" MODIFIED="1665802111894" TEXT="Gestaltung als Emblem">
<icon BUILTIN="button_ok"/>
<node CREATED="1665346202240" ID="ID_417992919" MODIFIED="1665802111894" TEXT="mehrdeutig"/>
<node CREATED="1665346191201" ID="ID_341321105" MODIFIED="1665802111894" TEXT="pr&#xe4;gnant"/>
<node CREATED="1665346199033" ID="ID_437888137" MODIFIED="1665802111894" TEXT="abstrakt"/>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1665346273206" ID="ID_947650361" MODIFIED="1665346298608" TEXT="Aktivit&#xe4;ts-Anzeige">
<icon BUILTIN="hourglass"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1665346300639" ID="ID_860259459" MODIFIED="1665346327196" TEXT="Idee: das &#xbb;Auge&#xab;-Icon von Joel Holdsworth">
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#338800" CREATED="1665346287044" FOLDED="true" ID="ID_748668128" MODIFIED="1665855636691" TEXT="Expander und Men&#xfc;">
<icon BUILTIN="button_ok"/>
<node CREATED="1665348077444" ID="ID_488652048" MODIFIED="1665801857144" TEXT="Idee">
<icon BUILTIN="idea"/>
<node CREATED="1665348091322" ID="ID_1073825658" MODIFIED="1665348096120" TEXT="Dreieck als Pfeil"/>
<node CREATED="1665348096802" ID="ID_1569524261" MODIFIED="1665348109205" TEXT="wahlweise aufw&#xe4;rts, abw&#xe4;rts oder rechts gedreht"/>
</node>
<node COLOR="#338800" CREATED="1665348136916" FOLDED="true" ID="ID_759870258" MODIFIED="1665802054607" TEXT="Ausf&#xfc;hrung">
<icon BUILTIN="button_ok"/>
<node CREATED="1665348145307" ID="ID_102563036" MODIFIED="1665348150902" TEXT="erhaben ohne Rahmen">
<node CREATED="1665348443628" ID="ID_1447716255" MODIFIED="1665348455285" TEXT="2px Kontur abgedunkelt"/>
<node CREATED="1665348457668" ID="ID_48846452" MODIFIED="1665348470750" TEXT="Glanzlicht aufgehellt im Inneren"/>
<node CREATED="1665348472343" ID="ID_1076446520" MODIFIED="1665348498629" TEXT="Inset-Kontur sub-Pixel"/>
</node>
<node CREATED="1665348212810" ID="ID_373482856" MODIFIED="1665348225676" TEXT="Rahmen symmetrisch f&#xfc;llen">
<node CREATED="1665348226825" ID="ID_1659240915" MODIFIED="1665349953403" TEXT="+3px Gehrung"/>
<node CREATED="1665348267595" ID="ID_1466240766" MODIFIED="1665348436848" TEXT="+2px Schatten"/>
</node>
<node CREATED="1665350012213" ID="ID_1923573190" MODIFIED="1665363524296" TEXT="m&#xf6;glichst nur mit Transparenz arbeiten">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...damit das Icon in verschiedenstem Kontext gleicherma&#223;en funktioniert
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1665363525484" ID="ID_1637269112" MODIFIED="1665363834236" TEXT="m&#xfc;hsam... will nicht recht">
<icon BUILTIN="stop-sign"/>
<node CREATED="1665363537099" ID="ID_1774949023" MODIFIED="1665363547270" TEXT="das Icon ist mi 16x16px verdammt klein"/>
<node CREATED="1665363548141" ID="ID_1303573631" MODIFIED="1665363566155" TEXT="vermutlich wollte ich viel zu viel">
<icon BUILTIN="smiley-oh"/>
<node CREATED="1665363577646" ID="ID_1126441793" MODIFIED="1665363583905" TEXT="sowohl Rahmen"/>
<node CREATED="1665363584493" ID="ID_1440525144" MODIFIED="1665363588024" TEXT="alsauch Glanzlicht"/>
<node CREATED="1665363588708" ID="ID_195148225" MODIFIED="1665363595255" TEXT="und ein Inset"/>
</node>
<node COLOR="#435e98" CREATED="1665363605996" ID="ID_491620065" MODIFIED="1665363830324" TEXT="vereinfachen....?">
<icon BUILTIN="yes"/>
<node CREATED="1665363705644" ID="ID_1138426529" MODIFIED="1665363714032" TEXT="gro&#xdf;z&#xfc;gige Fl&#xe4;che"/>
<node CREATED="1665363714710" ID="ID_938502860" MODIFIED="1665363752976" TEXT="alle zus&#xe4;tzlichen Tricks weglassen...">
<arrowlink COLOR="#406f78" DESTINATION="ID_1971428167" ENDARROW="Default" ENDINCLINATION="27;-48;" ID="Arrow_ID_1069676467" STARTARROW="None" STARTINCLINATION="-197;15;"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1665363649940" ID="ID_1971428167" MODIFIED="1665799112395" TEXT="in der Applikation gar nicht so schlecht">
<linktarget COLOR="#406f78" DESTINATION="ID_1971428167" ENDARROW="Default" ENDINCLINATION="27;-48;" ID="Arrow_ID_1069676467" SOURCE="ID_938502860" STARTARROW="None" STARTINCLINATION="-197;15;"/>
<icon BUILTIN="idea"/>
<node COLOR="#338800" CREATED="1665363758814" ID="ID_1752890921" MODIFIED="1665799109913" TEXT="jetzt mal nur ein einfaches Innen-Symbol (Dreieck) versuchen">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1665363793568" ID="ID_34619055" MODIFIED="1665799109920" TEXT="und die Schatten auf den Gehrungen zur&#xfc;cknehmen">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1665363810022" ID="ID_816374371" MODIFIED="1665799109920" TEXT="und daf&#xfc;r noch einen drop-Shadow dazubauen">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1665801881413" ID="ID_856020386" MODIFIED="1665855536788" TEXT="Ergebnis: rein plastisch, gl&#xe4;nzend, scharf">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      letztlich bin ich davon abgekommen, einen <i>gezeichneten </i>Pfeil zu integrieren; auch die Insets habe ich aufgegeben, dadurch wird das Design stringenter. Die Hervorhebung erfolgt nur durch ein Glanzlicht oben links, im Zusammenspiel mit den 2px Gehrungen und einem zus&#228;tzlichen Schatten an der Kehle der Gehrung
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="forward"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1665855301858" ID="ID_446507732" MODIFIED="1665855630056" TEXT="vielleicht etwas zu hell geraten?">
<linktarget COLOR="#f27d99" DESTINATION="ID_446507732" ENDARROW="Default" ENDINCLINATION="356;501;" ID="Arrow_ID_1734621230" SOURCE="ID_1045883941" STARTARROW="None" STARTINCLINATION="225;17;"/>
<icon BUILTIN="help"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1665800212205" ID="ID_726081290" MODIFIED="1665800217512" TEXT="Richtlinien">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node CREATED="1665800359809" FOLDED="true" ID="ID_1618186555" MODIFIED="1665801587336" TEXT="SVG sauber halten">
<arrowlink COLOR="#4660c4" DESTINATION="ID_1598706179" ENDARROW="Default" ENDINCLINATION="-1583;-200;" ID="Arrow_ID_1296361422" STARTARROW="Default" STARTINCLINATION="-2177;271;"/>
<icon BUILTIN="yes"/>
<node CREATED="1665800366152" ID="ID_1831328523" MODIFIED="1665800384165" TEXT="__Icon_TEMPLATE verwenden"/>
<node CREATED="1665800390503" ID="ID_465047171" MODIFIED="1665800417246" TEXT="Stacking-Order stets gleich (kleiner &#x2023;&#x2023; gr&#xf6;&#xdf;er)"/>
<node CREATED="1665800464019" ID="ID_1053244575" MODIFIED="1665800476310" TEXT="stets gruppieren und sinnvoll gliedern"/>
<node CREATED="1665800420413" ID="ID_1816161542" MODIFIED="1665800429423" TEXT="IDs der Hauptgruppen benennen"/>
<node CREATED="1665800481228" ID="ID_1358268582" MODIFIED="1665800494158" TEXT="Transformationen anwenden">
<node CREATED="1665800496063" ID="ID_547172174" MODIFIED="1665801184257" TEXT="Problem: Gruppen und Filter">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Inkscape wendet Transformationen normalerweise nur auf Blatt-Elemente direkt an; sonst f&#252;gt es ein &quot;transform&quot;-Element ein; dieses ist eine Matrix f&#252;r homogene Koordinaten.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1665800514028" ID="ID_1925132136" MODIFIED="1665801292480" TEXT="Filter deaktivieren">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      wenn man den Filter entfernt / auf Null dreht (Blur), dann wendet Inkscape die Transformation an
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1665800503910" ID="ID_1120591972" MODIFIED="1665801294931" TEXT="Gruppen aufl&#xf6;sen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      wenn man die Gruppe aufl&#246;st, wendet Inkscape die Transformation auf jedes Einzelelement an, und schiebt eine inverse Transformation in alle referenzierten Gradienten
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1665801312049" ID="ID_904420529" MODIFIED="1665801548562" TEXT="Styles kann man bisweilen vereinfachen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...und Inkscape wird das erhalten, solange man die betr. Features nicht wieder aktiviert. Im Besonderen kann man
    </p>
    <ul>
      <li>
        alle &quot;Stroke&quot;-Features entfernen, wenn der Stroke deaktiviert ist
      </li>
      <li>
        opacity:1 weglassen
      </li>
      <li>
        diverse Vector-Filter und display-styles weglassen (wenn sie auf dem default-Wert stehen)
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1665801453869" ID="ID_416037424" MODIFIED="1665801551225" TEXT="numerisch vers&#xe4;ubern">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1665801466126" ID="ID_1192263503" MODIFIED="1665801482470" TEXT="bedingt durch Transformationen werden Kreise oft zu Ellipsen"/>
<node CREATED="1665801487210" ID="ID_991962556" MODIFIED="1665801525411" TEXT="Transparenzen, Opacity und Graustufen driften auch bisweilen weg"/>
</node>
<node CREATED="1665801531178" ID="ID_704543645" MODIFIED="1665801537800" TEXT="nicht &#xfc;bertreiben">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1665800221636" ID="ID_1388153957" MODIFIED="1665801591668" TEXT="plastische Modellierung nur mit Transparenz">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1665800287403" ID="ID_1441434972" MODIFIED="1665800301597" TEXT="Farben">
<node CREATED="1665800302682" ID="ID_1441318458" MODIFIED="1665800316090" TEXT="als Schmuck-Farben"/>
<node CREATED="1665800316735" ID="ID_337763174" MODIFIED="1665800336568" TEXT="als subtile T&#xf6;nung"/>
</node>
<node CREATED="1665801624247" ID="ID_738176993" MODIFIED="1665801755873" TEXT="Hinting und Scharfzeichnen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      das ist Handarbeit und erfordert Erfahrung
    </p>
    <ul>
      <li>
        wichtige Formen auf eine Grid-Linie verschieben
      </li>
      <li>
        Gewicht exakt vertikaler/horizontaler Linien beachten
      </li>
      <li>
        scharfzeichnen mit einer sub-Pixel-Linie mit komplement&#228;rem Helligkeitswert
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node CREATED="1665801812606" ID="ID_437217153" MODIFIED="1665801844475" TEXT="1-2 Pixel &#xbb;Luft&#xab; lassen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      notwendig, damit Hinting, Scharfzeichnen und drop-Shaddows funktionieren
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node CREATED="1665345893180" ID="ID_980730763" MODIFIED="1665345897350" TEXT="custom-drawing">
<node CREATED="1665345898401" ID="ID_1689490488" MODIFIED="1665345902340" TEXT="Timeline">
<node CREATED="1665345910140" ID="ID_1049224098" MODIFIED="1665345922135" TEXT="Farben aus normalem Stylesheet &quot;fischen&quot;"/>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1665345451709" ID="ID_959477781" MODIFIED="1665345455640" TEXT="Verhaltensmuster">
<node CREATED="1665346345101" ID="ID_1210725333" MODIFIED="1665346349840" TEXT="Einsatz von Farben"/>
<node CREATED="1665346350340" ID="ID_1916831615" MODIFIED="1665346353523" TEXT="Animationen"/>
</node>
<node CREATED="1665345501421" ID="ID_412402750" MODIFIED="1665345503833" TEXT="Methode"/>
</node>
</node>
<node CREATED="1534336252375" FOLDED="true" HGAP="216" ID="ID_1755017021" MODIFIED="1679362496041" TEXT="Hilfsmittel" VSHIFT="6">
<node CREATED="1534336320373" ID="ID_708892482" MODIFIED="1557498707218" TEXT="Grundbausteine">
<node CREATED="1537659522174" ID="ID_1583657425" MODIFIED="1679362063142" TEXT="primary widgets">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <b>Definition</b>: komplexe Widget-Strukturen,
    </p>
    <p>
      welche nur einmal in dieser speziellen Konfiguration exisiteren,
    </p>
    <p>
      und dabei eine zentrale Rolle im UI spielen.
    </p>
    <p>
      
    </p>
    <p>
      <u>Beispiel</u>:
    </p>
    <ul>
      <li>
        Timeline
      </li>
      <li>
        Property-Grid
      </li>
    </ul>
  </body>
</html></richcontent>
<node CREATED="1537659866783" ID="ID_1613745412" MODIFIED="1557498707218" TEXT="Timeline">
<linktarget COLOR="#7d91d6" DESTINATION="ID_1613745412" ENDARROW="Default" ENDINCLINATION="-63;-32;" ID="Arrow_ID_1377777978" SOURCE="ID_1327960211" STARTARROW="None" STARTINCLINATION="-144;16;"/>
</node>
<node CREATED="1537659870415" ID="ID_1181375258" MODIFIED="1557498707218" TEXT="Property-Grid"/>
</node>
<node CREATED="1537659527741" ID="ID_856745741" MODIFIED="1679362063141" TEXT="building blocks">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <b>Definition</b>: speziell konfigurierte und verdrahtete Teil-Komponenten,
    </p>
    <p>
      welche wiederholt an verschiedensten Stellen im UI eingesetzt werden,
    </p>
    <p>
      und sich dort jeweils konsistent und uniform verhalten.
    </p>
    <p>
      <u>Beispiel</u>:
    </p>
    <ul>
      <li>
        Timecode-Widget
      </li>
      <li>
        Placement-Widget
      </li>
    </ul>
  </body>
</html></richcontent>
<node CREATED="1538583873795" ID="ID_1515056203" MODIFIED="1557498707218" TEXT="spezifisch">
<node CREATED="1537659880597" ID="ID_1214109906" MODIFIED="1557498707218" TEXT="Timecode"/>
<node CREATED="1537659890292" ID="ID_1230379898" MODIFIED="1557498707218" TEXT="Placement"/>
</node>
<node CREATED="1538583877106" ID="ID_1825646582" MODIFIED="1557498707218" TEXT="generisch">
<node CREATED="1538583886065" FOLDED="true" ID="ID_217810080" MODIFIED="1557498707218" TEXT="ErrorLogView">
<linktarget COLOR="#98a2c5" DESTINATION="ID_217810080" ENDARROW="Default" ENDINCLINATION="1891;-1228;" ID="Arrow_ID_1688804340" SOURCE="ID_1745777873" STARTARROW="None" STARTINCLINATION="-1261;74;"/>
<node CREATED="1538583894072" ID="ID_1836686899" MODIFIED="1557498707218" TEXT="Gtk::TextView + Mark-Index">
<arrowlink COLOR="#3251a9" DESTINATION="ID_243616989" ENDARROW="Default" ENDINCLINATION="-2060;-1360;" ID="Arrow_ID_794678010" STARTARROW="None" STARTINCLINATION="-3506;-148;"/>
<icon BUILTIN="info"/>
</node>
</node>
</node>
</node>
<node CREATED="1537961656982" ID="ID_1251358269" MODIFIED="1576282358140" TEXT="frameworks">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      vorbereitete Grundstrukturen f&#252;r immer wiederkehrende Setups
    </p>
  </body>
</html></richcontent>
<node CREATED="1537961734956" ID="ID_345535043" MODIFIED="1567875424269" TEXT="Notebook-Widget">
<linktarget COLOR="#7895b6" DESTINATION="ID_345535043" ENDARROW="Default" ENDINCLINATION="-60;247;" ID="Arrow_ID_81056795" SOURCE="ID_18019089" STARTARROW="None" STARTINCLINATION="382;0;"/>
<node CREATED="1537961776184" ID="ID_167848646" MODIFIED="1537961791126" TEXT="Problematik">
<icon BUILTIN="forward"/>
<node CREATED="1537961797061" ID="ID_104206298" MODIFIED="1537961806159" TEXT="extrem viele Komponenten-Widgets"/>
<node CREATED="1537961807436" ID="ID_1420879044" MODIFIED="1537961819742" TEXT="Namenskollisionen zwischen Pages"/>
<node CREATED="1537961832009" ID="ID_380956030" MODIFIED="1537961842907" TEXT="Boilerplate-Code goes Spaghetti"/>
</node>
<node CREATED="1537961848735" ID="ID_1187685583" MODIFIED="1537961889952" TEXT="L&#xf6;sungs-Ideen">
<icon BUILTIN="idea"/>
<node CREATED="1537961860374" ID="ID_933681325" MODIFIED="1537961871080" TEXT="managing container"/>
<node CREATED="1537961872836" ID="ID_1674501396" MODIFIED="1537961884942" TEXT="builder lambda"/>
</node>
<node COLOR="#338800" CREATED="1537961894394" ID="ID_1253130867" MODIFIED="1537969684728" TEXT="Prototyp">
<icon BUILTIN="button_ok"/>
<node CREATED="1537961917592" ID="ID_591860371" MODIFIED="1537962293792" TEXT="im TestControl">
<linktarget COLOR="#6ea8be" DESTINATION="ID_591860371" ENDARROW="Default" ENDINCLINATION="1162;51;" ID="Arrow_ID_1534615646" SOURCE="ID_1553519505" STARTARROW="None" STARTINCLINATION="-185;836;"/>
</node>
<node CREATED="1537961950003" ID="ID_1083792924" MODIFIED="1576282358140" TEXT="Schema &quot;managing container&quot;">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...denn das erscheint mir bodenst&#228;ndiger.
    </p>
    <p>
      GUI-Programmierung mu&#223; bodenst&#228;ding bleiben,
    </p>
    <p>
      man gewinnt hier nichts durch blendende Abstraktionen.
    </p>
    <p>
      
    </p>
    <p>
      Ich hoffe, da&#223; der Hilfscontainer <i>nahezu transparent </i>gemacht werden kann.
    </p>
    <p>
      Und der Rest sollte so <i>vertraut</i>&#160;aussehen, da&#223; es selbsterkl&#228;rend wird.
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1534336335963" ID="ID_1176525116" MODIFIED="1557498707218" TEXT="Werkzeug">
<node COLOR="#338800" CREATED="1534334810537" FOLDED="true" ID="ID_1326202399" MODIFIED="1561827464715" TEXT="Link zum Widget">
<linktarget COLOR="#a66b86" DESTINATION="ID_1326202399" ENDARROW="Default" ENDINCLINATION="279;-1333;" ID="Arrow_ID_664593340" SOURCE="ID_203145360" STARTARROW="None" STARTINCLINATION="-1296;0;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1534334914667" ID="ID_511749457" MODIFIED="1534436573129" TEXT="smart-Ref">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1534334939159" ID="ID_1853703071" MODIFIED="1534436570387" TEXT="leer konstruierbar">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1534334944207" ID="ID_1989000221" MODIFIED="1534342998767" TEXT="bool testbar">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1534334964700" ID="ID_1509791330" MODIFIED="1534343003956" TEXT="dereferenzierbar">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1534335220066" ID="ID_132223755" MODIFIED="1534388600416" TEXT="target anbinden">
<icon BUILTIN="button_ok"/>
<node CREATED="1534335240246" ID="ID_1480460700" MODIFIED="1534336108969" TEXT="sigc::trackable">
<icon BUILTIN="info"/>
</node>
<node COLOR="#338800" CREATED="1534336110858" ID="ID_280796006" MODIFIED="1534388602201" TEXT="connect()">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1534336116617" ID="ID_1274372728" MODIFIED="1534388603779" TEXT="clear()">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1534335253941" ID="ID_269300171" MODIFIED="1534388596484" TEXT="magisch kopierbar">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1534336069415" ID="ID_1775411301" MODIFIED="1534337958030">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Name: <b>WLink</b>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1534336127895" HGAP="21" ID="ID_352867763" MODIFIED="1534436566889" TEXT="WLink_test" VSHIFT="9">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1534340031277" ID="ID_506504727" MODIFIED="1534341378412" TEXT="test-dummy-trackable">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1534340016027" ID="ID_109515645" MODIFIED="1534388606258" TEXT="verify_standardUsage">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1534340023288" ID="ID_1266509201" MODIFIED="1534388607832" TEXT="verify_reconnect">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1534340028094" ID="ID_1406183687" MODIFIED="1534388609833" TEXT="verify_copy">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534436582390" ID="ID_880451727" MODIFIED="1534436621371" TEXT="nur EX_SANE">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1534436589806" ID="ID_1530771493" MODIFIED="1534436645751" TEXT="unter der Annahme, da&#xdf; sigc::trackable EX_SANE ist">
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534436609323" ID="ID_1966799512" MODIFIED="1534436641103" TEXT="nicht wirklich gepr&#xfc;ft">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1567875279032" FOLDED="true" ID="ID_740945922" MODIFIED="1679361296393" TEXT="Test-Hilfsmittel">
<icon BUILTIN="go"/>
<node CREATED="1567875285952" ID="ID_979231150" MODIFIED="1567875288691" TEXT="TestControl"/>
<node COLOR="#435e98" CREATED="1567875664340" ID="ID_994953692" MODIFIED="1567875770727">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <b>TestControl</b>&#160;Dialogbox
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#57b762" DESTINATION="ID_1760873318" ENDARROW="Default" ENDINCLINATION="-989;0;" ID="Arrow_ID_782679142" STARTARROW="None" STARTINCLINATION="-756;-143;"/>
<node CREATED="1567875290021" ID="ID_286133902" MODIFIED="1567875757319" TEXT="ein non-modaler Dialog"/>
<node CREATED="1567875314411" ID="ID_26242186" MODIFIED="1567875341444" TEXT="erreichbar im Wizard | Men&#xfc; &quot;help&quot; &gt; &quot;self tests...&quot;"/>
<node CREATED="1567875342584" ID="ID_18019089" MODIFIED="1576282358139" TEXT="hat ein Notebook mit diversen Tabs...">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...welche ad hoc mit beil&#228;ufig geschriebenem Debug/Test-Code belegt werden
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#7895b6" DESTINATION="ID_345535043" ENDARROW="Default" ENDINCLINATION="-60;247;" ID="Arrow_ID_81056795" STARTARROW="None" STARTINCLINATION="382;0;"/>
</node>
<node COLOR="#435e98" CREATED="1567875433443" ID="ID_1033273101" MODIFIED="1567875940590" TEXT="TestControl-Tabs">
<icon BUILTIN="info"/>
<node CREATED="1567875526281" ID="ID_504220515" MODIFIED="1567875602930" TEXT="Tab-1: #1099 : Nachrichten via ProcDispatcher und UI-Bus senden an das ErrorLogDisplay">
<arrowlink COLOR="#64bf95" DESTINATION="ID_1925240675" ENDARROW="Default" ENDINCLINATION="-664;1183;" ID="Arrow_ID_1404986843" STARTARROW="None" STARTINCLINATION="821;0;"/>
</node>
<node CREATED="1567875813488" ID="ID_1435888336" MODIFIED="1567875934606" TEXT="Tab-2: #1014 : &#xbb;populate Timeline&#xab;  &#x2015; generiert Dummy-Timelines f&#xfc;r das GUI">
<arrowlink COLOR="#6db0a6" DESTINATION="ID_330280074" ENDARROW="Default" ENDINCLINATION="-770;358;" ID="Arrow_ID_690602400" STARTARROW="None" STARTINCLINATION="1193;46;"/>
<node CREATED="1567876207795" HGAP="44" ID="ID_320559885" MODIFIED="1567876244788" TEXT="kann jetzt auch beliebige mark()-Nachricht senden" VSHIFT="25">
<linktarget COLOR="#687584" DESTINATION="ID_320559885" ENDARROW="Default" ENDINCLINATION="-28;61;" ID="Arrow_ID_1133205207" SOURCE="ID_1232074573" STARTARROW="Default" STARTINCLINATION="206;0;"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1567876056816" ID="ID_1341115014" MODIFIED="1575131552362" TEXT="UIBus::mark - Nachricht an beliebiges Element senden">
<linktarget COLOR="#54bbd6" DESTINATION="ID_1341115014" ENDARROW="Default" ENDINCLINATION="-3095;0;" ID="Arrow_ID_547692411" SOURCE="ID_1701413392" STARTARROW="None" STARTINCLINATION="1167;0;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1567876176943" ID="ID_1120090317" MODIFIED="1567876185194" TEXT="schnell geschriebener Debug/Test-Code"/>
<node CREATED="1567876185972" ID="ID_1232074573" MODIFIED="1567876244788" TEXT="im Moment mal eben auf Tab-2 vom TestControl eingeh&#xe4;ngt">
<arrowlink COLOR="#687584" DESTINATION="ID_320559885" ENDARROW="Default" ENDINCLINATION="-28;61;" ID="Arrow_ID_1133205207" STARTARROW="Default" STARTINCLINATION="206;0;"/>
</node>
</node>
</node>
</node>
<node CREATED="1534336325916" ID="ID_762624766" MODIFIED="1661695557878" TEXT="Bindeglieder">
<node CREATED="1661695565675" ID="ID_1782348054" MODIFIED="1661695571623" TEXT="UI-Koordinaten"/>
<node CREATED="1661695572958" ID="ID_913092890" MODIFIED="1661695581265" TEXT="Docking"/>
<node CREATED="1661695582329" ID="ID_42645093" MODIFIED="1661695594438" TEXT="Pop-up-Men&#xfc;s"/>
<node CREATED="1661695595096" ID="ID_1811221630" MODIFIED="1661695602731" TEXT="Property-Box-Connection"/>
</node>
<node CREATED="1537659082073" ID="ID_986070389" MODIFIED="1557498707218" TEXT="Schema">
<node CREATED="1618677634680" ID="ID_1029801853" MODIFIED="1618677651554" TEXT="Konventionen">
<font NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node CREATED="1618677661972" ID="ID_1188964744" MODIFIED="1618677666928" TEXT="GTK-Datentypen">
<node CREATED="1618677671271" ID="ID_1068107778" MODIFIED="1618677684903" TEXT="Unterscheidung Framework-nah">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1618677686257" ID="ID_144011796" MODIFIED="1618677697439" TEXT="Framework-naher Code verwendet GTK-Datentypen">
<node CREATED="1618677785956" ID="ID_472749737" MODIFIED="1618677813236" TEXT="GString f&#xfc;r UI-Labels"/>
<node CREATED="1618677813944" ID="ID_389115801" MODIFIED="1618678210573" TEXT="gdouble f&#xfc;r Screen-Koordinaten">
<linktarget COLOR="#798bb0" DESTINATION="ID_389115801" ENDARROW="Default" ENDINCLINATION="1665;148;" ID="Arrow_ID_267819706" SOURCE="ID_1287724015" STARTARROW="None" STARTINCLINATION="2440;141;"/>
</node>
</node>
<node CREATED="1618677699359" ID="ID_1890482479" MODIFIED="1618677716892" TEXT="Aber: GObject ist zu vermeiden wannimmer m&#xf6;glich">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1618677723026" ID="ID_910079217" MODIFIED="1618677755632" TEXT="keine Sprache &#xfc;ber der Sprache schaffen">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1618677765275" ID="ID_1013650167" MODIFIED="1618677775137" TEXT="die Ausdrucksmittel von C++ sind gut genug"/>
</node>
</node>
</node>
<node CREATED="1537659311850" ID="ID_741254991" MODIFIED="1557498707218" TEXT="Struktur">
<node CREATED="1618677865801" ID="ID_708518061" MODIFIED="1618678028294" TEXT="Innere Struktur: Struktur-Schemata">
<arrowlink COLOR="#86889b" DESTINATION="ID_974158229" ENDARROW="Default" ENDINCLINATION="-381;-944;" ID="Arrow_ID_1816207037" STARTARROW="None" STARTINCLINATION="1299;101;"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1537659316321" FOLDED="true" ID="ID_1046162234" MODIFIED="1679361287682" TEXT="Style">
<icon BUILTIN="bell"/>
<node CREATED="1537660235757" ID="ID_1679504678" MODIFIED="1679362063137" TEXT="Leitlinie">
<node CREATED="1537660241420" ID="ID_1559839657" MODIFIED="1557498707218" TEXT="m&#xf6;glichst generisch belassen"/>
<node CREATED="1537660355669" ID="ID_407535546" MODIFIED="1557498707218" TEXT="zentrale Palette f&#xfc;r Extra-Auszeichnungen">
<linktarget COLOR="#8f81b2" DESTINATION="ID_407535546" ENDARROW="Default" ENDINCLINATION="3769;-2728;" ID="Arrow_ID_1203118148" SOURCE="ID_758790930" STARTARROW="None" STARTINCLINATION="-1594;0;"/>
<node CREATED="1537661251763" ID="ID_896084387" MODIFIED="1557498707218" TEXT="virtuelle Widget-Struktur"/>
<node CREATED="1537661267561" ID="ID_1282505273" MODIFIED="1557498707218" TEXT="systematisch organisiert"/>
<node CREATED="1537661279344" ID="ID_635630811" MODIFIED="1557498707219" TEXT="wird bei Bedarf abgefragt"/>
<node CREATED="1537661322914" ID="ID_165076190" MODIFIED="1557498707219" TEXT="per synthetisiertem Widget-Path"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1678573145778" ID="ID_529832770" MODIFIED="1678576114059">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <font size="5">Style-Scheme</font>&#160;for Lumiera
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#8b1d60" DESTINATION="ID_281557130" ENDARROW="Default" ENDINCLINATION="-986;-81;" ID="Arrow_ID_1840161927" STARTARROW="None" STARTINCLINATION="-625;67;"/>
<icon BUILTIN="yes"/>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1678573175156" ID="ID_1210386404" MODIFIED="1678573180188" TEXT="entwickeln...">
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1538588393995" ID="ID_1149076483" MODIFIED="1678573209829">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      #1168 : find a way to manage style of
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;custom extended UI elements
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="flag-yellow"/>
<node COLOR="#338800" CREATED="1678575013546" HGAP="59" ID="ID_1275966904" MODIFIED="1678575229481" TEXT="L&#xf6;sungsansatz per Prototyp best&#xe4;tigt" VSHIFT="21">
<arrowlink COLOR="#40a5bc" DESTINATION="ID_1949200690" ENDARROW="Default" ENDINCLINATION="-2003;-104;" ID="Arrow_ID_398104912" STARTARROW="None" STARTINCLINATION="2327;166;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node CREATED="1678576263610" ID="ID_1861505787" MODIFIED="1678576267709" TEXT="Spezialit&#xe4;ten">
<node COLOR="#435e98" CREATED="1678576309372" ID="ID_650016552" MODIFIED="1678576514278" TEXT="CSS-Styling der Timeline">
<arrowlink COLOR="#5f7783" DESTINATION="ID_1232986902" ENDARROW="Default" ENDINCLINATION="2218;-176;" ID="Arrow_ID_691307229" STARTARROW="None" STARTINCLINATION="7697;843;"/>
<icon BUILTIN="info"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1561898940013" ID="ID_1812249534" MODIFIED="1561898964578" TEXT="Aufgabe: globaler Layout-Manager">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1561898713460" ID="ID_44229333" MODIFIED="1561899095357" TEXT="Aufgabe: Theming/Styling unserer speziellen UI-Elemente">
<linktarget COLOR="#7339d4" DESTINATION="ID_44229333" ENDARROW="Default" ENDINCLINATION="-1147;0;" ID="Arrow_ID_61031233" SOURCE="ID_1426731428" STARTARROW="None" STARTINCLINATION="797;0;"/>
<linktarget COLOR="#555080" DESTINATION="ID_44229333" ENDARROW="Default" ENDINCLINATION="-1124;49;" ID="Arrow_ID_1040482296" SOURCE="ID_1068573244" STARTARROW="None" STARTINCLINATION="808;-134;"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1666378011037" ID="ID_134472006" MODIFIED="1666378421971" TEXT="#1252 Timeline display-evaluation-pass">
<arrowlink COLOR="#735667" DESTINATION="ID_1896159832" ENDARROW="Default" ENDINCLINATION="68;-547;" ID="Arrow_ID_672337506" STARTARROW="None" STARTINCLINATION="1091;68;"/>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1538695838262" ID="ID_407627538" MODIFIED="1557498707219" TEXT="lumiera-(light|dark)-theme-complement.css">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node CREATED="1538695878400" ID="ID_1937289801" MODIFIED="1557498707219" TEXT="wir liefern Stylesheets zur Erg&#xe4;nzung des System-Themas">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1538695897046" ID="ID_382934959" MODIFIED="1557498707219" TEXT="als w&#xe4;hlbare Alternative zu unserem Applikations-Stylesheet"/>
<node CREATED="1538695912900" ID="ID_161292075" MODIFIED="1557498707219" TEXT="diese enthalten nur die minimal notwendigen Erg&#xe4;nzungen">
<icon BUILTIN="yes"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1538702238122" ID="ID_1439139961" MODIFIED="1557498707219" TEXT="#1170 care for interplay with light, dark and high contrast themes">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1538696008591" ID="ID_441937774" MODIFIED="1679362063137" TEXT="Lumiera Stylesheet">
<linktarget COLOR="#5284c5" DESTINATION="ID_441937774" ENDARROW="Default" ENDINCLINATION="-1007;-1223;" ID="Arrow_ID_1036308053" SOURCE="ID_1461752003" STARTARROW="None" STARTINCLINATION="-344;581;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<icon BUILTIN="flag"/>
<node CREATED="1538696023165" ID="ID_698985788" MODIFIED="1557498707219" TEXT="lumiera.css"/>
<node CREATED="1538696026884" ID="ID_1880901613" MODIFIED="1557498707219" TEXT="wir liefern unser eigenes Applikations-Stylesheet">
<icon BUILTIN="idea"/>
<node CREATED="1538696052161" ID="ID_1715392243" MODIFIED="1557498707219" TEXT="abgeleitet vom Ardour-Stylesheet">
<arrowlink DESTINATION="ID_1918479292" ENDARROW="Default" ENDINCLINATION="132;0;" ID="Arrow_ID_146898233" STARTARROW="None" STARTINCLINATION="74;-5;"/>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1538696060808" ID="ID_82400982" MODIFIED="1557498707219" TEXT="seinerzeit von Joel Holdsworth">
<icon BUILTIN="info"/>
</node>
<node CREATED="1538696069551" ID="ID_1095339421" MODIFIED="1557498707219" TEXT="dezenter Meda-Application look">
<icon BUILTIN="yes"/>
</node>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1538696238952" ID="ID_1693017073" MODIFIED="1557498707219" TEXT="Portierung GTK2 -&gt; CSS (GTK3)">
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1538696262533" ID="ID_472703036" MODIFIED="1557498707219" TEXT="2014 rudiment&#xe4;r, dann steckengeblieben">
<icon BUILTIN="bell"/>
</node>
<node CREATED="1538696307615" ID="ID_1918479292" MODIFIED="1557498707219" TEXT="was macht eigentlich Ardour heute?">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1918479292" ENDARROW="Default" ENDINCLINATION="132;0;" ID="Arrow_ID_146898233" SOURCE="ID_1715392243" STARTARROW="None" STARTINCLINATION="74;-5;"/>
<icon BUILTIN="help"/>
<node CREATED="1538699094129" HGAP="61" ID="ID_1901117568" MODIFIED="1557498707219" TEXT="B&#xe4;&#xe4;&#xe4;h! GTK-2 verwenden" VSHIFT="3">
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1538702167475" ID="ID_1067979840" MODIFIED="1557498707219" TEXT="#1023 Lumiera GTK stylesheet">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1538710332658" ID="ID_584658644" MODIFIED="1557498707219" TEXT="Bugfixes...">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1538710354271" ID="ID_79614027" MODIFIED="1557498707219" TEXT="inherit verwenden">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1538710363741" ID="ID_1130951877" MODIFIED="1557498707219" TEXT="Widget-Namen korrekt schreiben">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1538710376229" ID="ID_806378376" MODIFIED="1557498707219" TEXT="in GTK-2 war das z.B. GtkWindow">
<icon BUILTIN="info"/>
</node>
<node CREATED="1538710388956" ID="ID_17203500" MODIFIED="1557498707219" TEXT="in GTK-3 entspricht das window">
<icon BUILTIN="forward"/>
</node>
<node CREATED="1538710407602" ID="ID_1860886507" MODIFIED="1576282358138" TEXT="Regel...">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      den Klassennamen ohne das Namespace-Pr&#228;fix &quot;GTK&quot;, und alles lower case.
    </p>
    <p>
      Im Zweifelsfall den GTK+ Inspector verwenden!
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
<node CREATED="1538696355832" ID="ID_1442093424" MODIFIED="1557498707219" TEXT="Probleme">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1538696365447" ID="ID_721732470" MODIFIED="1557498707219" TEXT="Theming-Engine">
<icon BUILTIN="stop-sign"/>
<node CREATED="1538696371086" ID="ID_1893037783" MODIFIED="1557498707219" TEXT="wir hatten Clearlooks. Gibts nicht mehr">
<icon BUILTIN="info"/>
</node>
<node CREATED="1538696393835" ID="ID_1157806021" MODIFIED="1557498707219" TEXT="ersatzweise Adwaita, Gibts auch nicht mehr">
<icon BUILTIN="button_cancel"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1538696429774" ID="ID_1862679821" LINK="https://web.archive.org/web/20180829072234/https://blogs.gnome.org/mclasen/2014/06/13/a-new-default-theme-for-gtk/" MODIFIED="1557498707219" TEXT="das ganze Konzept ist obsolet">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="stop-sign"/>
</node>
<node COLOR="#338800" CREATED="1538696720743" ID="ID_50558236" MODIFIED="1576282358138" TEXT="ersatzlos entfernt">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      CSS gen&#252;gt
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1538696756026" ID="ID_67620335" MODIFIED="1557498707219" TEXT="Interferenz mit dem System-Thema">
<icon BUILTIN="pencil"/>
<node CREATED="1538696777327" ID="ID_1226163317" MODIFIED="1557498707219" TEXT="Problem: repetitive Definitionen"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1538696788838" ID="ID_12898010" LINK="https://stackoverflow.com/q/52655725/444796" MODIFIED="1557498707219" TEXT="auf Stackoverflow gefragt">
<icon BUILTIN="help"/>
</node>
<node CREATED="1538696930403" HGAP="38" ID="ID_280002018" MODIFIED="1557498707219" TEXT="Idee: &quot;inherit&quot; auf h&#xf6;chster Ebene" VSHIFT="3">
<icon BUILTIN="idea"/>
<node CREATED="1538696962271" ID="ID_46020871" MODIFIED="1557498707219" TEXT="unser Stylesheet hat GTK_STYLE_PROVIDER_PRIORITY_APPLICATION"/>
<node CREATED="1538696988803" ID="ID_1662822982" MODIFIED="1576282358137">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      f&#252;ge <i>m&#246;glichst hoch</i>&#160;in der Hierarchie Regeln ein,
    </p>
    <p>
      die ein property auf den Wert '<font face="Monospaced"><b>inherit</b></font>' setzten
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      z.B. in den Block mit den &quot;default-Regeln&quot;
    </p>
    <p>
      &#160;&#160;* {
    </p>
    <p>
      &#160;&#160;&#160;&#160;color:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;inherit; /* by default inherit content colour from parent widget */
    </p>
    <p>
      &#160;&#160;&#160;&#160;background-color: inherit;
    </p>
    <p>
      }
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1538697207110" ID="ID_415528083" MODIFIED="1557498707219" TEXT="border korrekt/geschickt setzen">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
<node CREATED="1665346468548" ID="ID_1034074054" MODIFIED="1665802081759" TEXT="Icon-Management">
<linktarget COLOR="#8487c2" DESTINATION="ID_1034074054" ENDARROW="Default" ENDINCLINATION="-757;-939;" ID="Arrow_ID_186260230" SOURCE="ID_1876392387" STARTARROW="None" STARTINCLINATION="-258;57;"/>
<node CREATED="1665346474211" ID="ID_465159869" MODIFIED="1665346622225" TEXT="Icon-Designs per Inkscape">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      beruht auf der sehr sinnigen Einrichtung von Joel Holdsworth
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#668497" DESTINATION="ID_1174319279" ENDARROW="Default" ENDINCLINATION="-533;-310;" ID="Arrow_ID_1274211300" STARTARROW="None" STARTINCLINATION="-2393;215;"/>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1665346844754" ID="ID_719864598" MODIFIED="1665346909386" TEXT="Thema: Icon-Namen">
<arrowlink COLOR="#7f668c" DESTINATION="ID_127382457" ENDARROW="Default" ENDINCLINATION="629;-31;" ID="Arrow_ID_1767981957" STARTARROW="None" STARTINCLINATION="560;80;"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1485126385235" FOLDED="true" HGAP="38" ID="ID_548720270" MODIFIED="1679362194689" TEXT="top-Level" VSHIFT="11">
<linktarget COLOR="#851358" DESTINATION="ID_548720270" ENDARROW="Default" ENDINCLINATION="-663;-614;" ID="Arrow_ID_325703166" SOURCE="ID_471609909" STARTARROW="None" STARTINCLINATION="1110;608;"/>
<font NAME="SansSerif" SIZE="13"/>
<icon BUILTIN="bell"/>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1485126400233" FOLDED="true" ID="ID_885004423" MODIFIED="1678459235306" TEXT="unsauberes Design">
<icon BUILTIN="messagebox_warning"/>
<icon BUILTIN="pencil"/>
<node CREATED="1485126410424" ID="ID_1158773288" MODIFIED="1557498707219" TEXT="wir haben mehrere Fenster">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1485126418431" ID="ID_1145950660" MODIFIED="1557498707219" TEXT="GtkLumiera sollte kein Singleton sein">
<arrowlink COLOR="#80b3ef" DESTINATION="ID_164246989" ENDARROW="Default" ENDINCLINATION="-42;-74;" ID="Arrow_ID_401425747" STARTARROW="None" STARTINCLINATION="387;0;"/>
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1485549610040" ID="ID_699947133" MODIFIED="1557498707219" TEXT="Aktionen f&#xfc;r jedes top-level Window repliziert">
<icon BUILTIN="pencil"/>
<node CREATED="1485549646739" ID="ID_1714638860" MODIFIED="1557498707219" TEXT="Abh&#xe4;ngigkeit vom Fenster identifizieren"/>
<node CREATED="1485549666424" ID="ID_1909892697" MODIFIED="1557498707219" TEXT="generisch machen"/>
<node CREATED="1485549672943" ID="ID_1716269299" MODIFIED="1557498707219" TEXT="Aktionen in UiManager verschieben"/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1485126429445" ID="ID_832156304" MODIFIED="1678459243180" TEXT="aufr&#xe4;umen">
<icon BUILTIN="yes"/>
<node COLOR="#338800" CREATED="1485126506699" ID="ID_1776936645" MODIFIED="1679087617717" TEXT="#1067 rearrange GUI Application top-level">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1485126573818" ID="ID_206480879" MODIFIED="1557498707219" TEXT="#1032 use gtk::Application instead of gtk::Main">
<arrowlink COLOR="#ae182e" DESTINATION="ID_1476863246" ENDARROW="Default" ENDINCLINATION="283;-164;" ID="Arrow_ID_1851148216" STARTARROW="Default" STARTINCLINATION="481;0;"/>
<linktarget COLOR="#ae1856" DESTINATION="ID_206480879" ENDARROW="Default" ENDINCLINATION="715;0;" ID="Arrow_ID_926482654" SOURCE="ID_392996871" STARTARROW="Default" STARTINCLINATION="134;383;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1485126609878" ID="ID_815018040" MODIFIED="1557498707219" TEXT="#1064 investigate WindowManager lifecycle">
<icon BUILTIN="button_ok"/>
<node CREATED="1493752896125" ID="ID_1471478347" MODIFIED="1557498707219" TEXT="erledigt"/>
<node CREATED="1493752899224" ID="ID_83018735" MODIFIED="1557498707219" TEXT="WindowManager war gar nicht so wichtig"/>
<node CREATED="1493752906736" ID="ID_1191055389" MODIFIED="1557498707219" TEXT="er ist jetzt nur noch eine Fenster-Liste"/>
<node CREATED="1504368788471" ID="ID_1811705494" MODIFIED="1557498707219" TEXT="und die hei&#xdf;t jetzt WindowLocator"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1485550950793" ID="ID_50100583" MODIFIED="1557498707219" TEXT="#1048 rectify UI Lifecycle">
<icon BUILTIN="hourglass"/>
<node COLOR="#338800" CREATED="1485550968230" ID="ID_164246989" MODIFIED="1557498707219" TEXT="GtkLumiera darf kein Singleton mehr sein">
<linktarget COLOR="#80b3ef" DESTINATION="ID_164246989" ENDARROW="Default" ENDINCLINATION="-42;-74;" ID="Arrow_ID_401425747" SOURCE="ID_1145950660" STARTARROW="None" STARTINCLINATION="387;0;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1485561982971" ID="ID_287757293" MODIFIED="1557498707219" TEXT="Blocker entfernen">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1485562029644" ID="ID_1022779645" MODIFIED="1557498707219" TEXT="wieder das Problem mit dem BInden der Actions">
<arrowlink COLOR="#a9b4c1" DESTINATION="ID_530209145" ENDARROW="Default" ENDINCLINATION="-17;-195;" ID="Arrow_ID_626063593" STARTARROW="None" STARTINCLINATION="9;270;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#338800" CREATED="1493846161963" ID="ID_358400969" MODIFIED="1557498707219" TEXT="durch fortgesetztes Refactoring gel&#xf6;st">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1485550992299" ID="ID_1685125156" MODIFIED="1557498707219" TEXT="es blocken">
<icon BUILTIN="button_ok"/>
<node CREATED="1485550999762" ID="ID_249139218" MODIFIED="1557498707219" TEXT="WindowManager">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1485551007297" ID="ID_1398242341" MODIFIED="1557498707219" TEXT="Project &amp; Controller">
<icon BUILTIN="button_cancel"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1493853541747" ID="ID_689819683" MODIFIED="1557498707219" TEXT="TODO">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1493853548739" ID="ID_949985796" MODIFIED="1576282358137" TEXT="Project &amp; Controller restlos entfernen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...wartet noch darauf,
    </p>
    <p>
      da&#223; die alte, obsolete Timeline zur&#252;ckgebaut ist
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="hourglass"/>
</node>
<node CREATED="1493853590149" ID="ID_1075149702" MODIFIED="1576282358136" TEXT="Race beim triggerShutdown">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      siehe guifacade.cpp
    </p>
    <p>
      Problem ist: wenn das triggerShutdown kommt,
    </p>
    <p>
      bevor die Notification-Facade ge&#246;ffnet werden konnte
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1504191345606" ID="ID_1249897876" MODIFIED="1557498707220" TEXT="#1026 cleanup PanelManager">
<linktarget COLOR="#ce6b5f" DESTINATION="ID_1249897876" ENDARROW="Default" ENDINCLINATION="1299;0;" ID="Arrow_ID_1635700276" SOURCE="ID_1335931102" STARTARROW="Default" STARTINCLINATION="-1412;-1014;"/>
<linktarget COLOR="#e1a169" DESTINATION="ID_1249897876" ENDARROW="Default" ENDINCLINATION="-636;0;" ID="Arrow_ID_446871395" SOURCE="ID_125942292" STARTARROW="None" STARTINCLINATION="-311;562;"/>
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1504193029907" ID="ID_1020871440" MODIFIED="1557498707220" TEXT="#1104 how to instruct actions through panels">
<linktarget COLOR="#806893" DESTINATION="ID_1020871440" ENDARROW="Default" ENDINCLINATION="-3;460;" ID="Arrow_ID_412107208" SOURCE="ID_1943521361" STARTARROW="Default" STARTINCLINATION="-618;-18;"/>
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1529235342511" ID="ID_1922506931" MODIFIED="1557498707220">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <b>Aufgabe</b>: docking panels global
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#b0466a" DESTINATION="ID_629544763" ENDARROW="Default" ENDINCLINATION="-849;-1967;" ID="Arrow_ID_1826422316" STARTARROW="None" STARTINCLINATION="690;23;"/>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node CREATED="1485551018975" ID="ID_1865473127" MODIFIED="1557498707220" TEXT="obsoletes Project &amp; Controller">
<node CREATED="1485551030086" ID="ID_1052165402" MODIFIED="1557498707220" TEXT="in GtkLumiera definiert"/>
<node CREATED="1485551035413" ID="ID_1861899005" MODIFIED="1557498707220" TEXT="tats&#xe4;chlich im Panel (Basisklasse) gespeichert"/>
<node CREATED="1485551056834" ID="ID_538186909" MODIFIED="1557498707220" TEXT="tats&#xe4;chlich nur im alten TimelinePannel gebraucht"/>
<node COLOR="#338800" CREATED="1485551067353" ID="ID_1684200224" MODIFIED="1557498707220" TEXT="&#xdc;bergangsl&#xf6;sung">
<icon BUILTIN="button_ok"/>
<node CREATED="1485551080687" ID="ID_405147511" MODIFIED="1557498707220" TEXT="als Felder dort">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1485551085454" ID="ID_472031977" MODIFIED="1557498707220" TEXT="ist ohnehin defunkt">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1485551096445" ID="ID_258972556" MODIFIED="1557498707220" TEXT="dann Parameter entfernen"/>
</node>
</node>
<node COLOR="#ae1856" CREATED="1485126686643" ID="ID_405470138" MODIFIED="1557498707220" TEXT="sauberer Shutdown">
<arrowlink COLOR="#872666" DESTINATION="ID_286857196" ENDARROW="Default" ENDINCLINATION="-684;0;" ID="Arrow_ID_1606936924" STARTARROW="Default" STARTINCLINATION="1461;0;"/>
<node CREATED="1502411273154" HGAP="57" ID="ID_1087419686" MODIFIED="1557498707220" TEXT="komplett?" VSHIFT="39">
<icon BUILTIN="help"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1493762490205" ID="ID_159568066" MODIFIED="1557498707220" TEXT="alle noch offenen Fenster verbergen">
<linktarget COLOR="#543c6f" DESTINATION="ID_159568066" ENDARROW="Default" ENDINCLINATION="489;-554;" ID="Arrow_ID_373486067" SOURCE="ID_869056268" STARTARROW="None" STARTINCLINATION="-762;-46;"/>
<icon BUILTIN="bell"/>
<node CREATED="1495234856782" ID="ID_1605922951" MODIFIED="1557498707220" TEXT="machen wir bisher nicht"/>
<node CREATED="1495234865717" ID="ID_1261122199" MODIFIED="1557498707220" TEXT="ist das notwendig?"/>
<node CREATED="1538588192126" ID="ID_1032145387" MODIFIED="1576282358136" TEXT="wohl nicht">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      wenn die GTK-Loop angehalten wird,
    </p>
    <p>
      dann koppelt sich GTK anscheinend auch
    </p>
    <p>
      automatisch vom Window-Manager ab.
    </p>
    <p>
      
    </p>
    <p>
      Jedenfalls habe ich nun schon mehrfach den Shutdown &quot;von unten&quot; getriggert,
    </p>
    <p>
      und es wurden alle Fenster geschlossen.
    </p>
    <p>
      
    </p>
    <p>
      Allerdings habe ich an der Stelle immer noch GTK-Assertions
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1485463620403" ID="ID_40172420" MODIFIED="1557498707220" TEXT="zentralen UiManager einf&#xfc;hren">
<arrowlink COLOR="#667b93" DESTINATION="ID_1698853761" ENDARROW="Default" ENDINCLINATION="19;-86;" ID="Arrow_ID_1952755524" STARTARROW="None" STARTINCLINATION="-290;0;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1485126441508" HGAP="32" ID="ID_1227132808" MODIFIED="1557498707220" TEXT="GtkLumiera" VSHIFT="-26">
<icon BUILTIN="button_ok"/>
<node CREATED="1485454326827" ID="ID_1493501410" MODIFIED="1557498707220" TEXT="Applikation == Lebenszyklus">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="info"/>
</node>
<node CREATED="1485463515929" ID="ID_785456397" MODIFIED="1557498707220" TEXT="f&#xfc;r die Verdrahtung zust&#xe4;ndig"/>
<node CREATED="1485463525736" ID="ID_1608786246" MODIFIED="1557498707220" TEXT="h&#xe4;lt alle zentralen Komponenten"/>
<node CREATED="1493846135327" ID="ID_832439809" MODIFIED="1557498707220" TEXT="initialisiert und startet Backbone"/>
<node CREATED="1485463537111" ID="ID_929585985" MODIFIED="1557498707220" TEXT="wird nie selber direkt angesprochen"/>
</node>
<node COLOR="#435e98" CREATED="1485126457025" FOLDED="true" ID="ID_1698853761" MODIFIED="1557498707220" TEXT="ctrl::UiManager">
<linktarget COLOR="#667b93" DESTINATION="ID_1698853761" ENDARROW="Default" ENDINCLINATION="19;-86;" ID="Arrow_ID_1952755524" SOURCE="ID_40172420" STARTARROW="None" STARTINCLINATION="-290;0;"/>
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="idea"/>
<node CREATED="1485454242368" ID="ID_482639947" MODIFIED="1557498707220" TEXT="Hub f&#xfc;r Framework">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="info"/>
</node>
<node CREATED="1485454284961" ID="ID_940728768" MODIFIED="1557498707220" TEXT="es gibt nur einen">
<icon BUILTIN="yes"/>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1485454375917" ID="ID_1935695209" MODIFIED="1557498707220" TEXT="erbt von Gtk::UiManager">
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#435e98" CREATED="1533303793015" ID="ID_433225506" MODIFIED="1557498707220" TEXT="Infos zu Gtk::Main, Gtk::Application und Gio::Application">
<arrowlink COLOR="#677ab7" DESTINATION="ID_782313223" ENDARROW="Default" ENDINCLINATION="-1088;-39;" ID="Arrow_ID_234165792" STARTARROW="None" STARTINCLINATION="-2111;0;"/>
<font BOLD="true" NAME="SansSerif" SIZE="13"/>
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1485457021805" ID="ID_1476863246" MODIFIED="1582487797600" TEXT="Gtk::UiManager ist deprecated">
<linktarget COLOR="#6d7495" DESTINATION="ID_1476863246" ENDARROW="Default" ENDINCLINATION="1126;-247;" ID="Arrow_ID_1941890495" SOURCE="ID_384827553" STARTARROW="None" STARTINCLINATION="-373;28;"/>
<linktarget COLOR="#ae182e" DESTINATION="ID_1476863246" ENDARROW="Default" ENDINCLINATION="283;-164;" ID="Arrow_ID_1851148216" SOURCE="ID_206480879" STARTARROW="Default" STARTINCLINATION="481;0;"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1493768617653" ID="ID_292624709" MODIFIED="1557498707220" TEXT="f&#xe4;llt anscheinend ersatzlos weg"/>
<node CREATED="1493768625564" ID="ID_1620270152" MODIFIED="1557498707220" TEXT="Verdacht: stattdessen Gtk::Application"/>
<node CREATED="1495218227391" ID="ID_1156276489" MODIFIED="1576282358135" TEXT="Beschlu&#xdf;: vorerst Gtk::Action / ActionGroup weiter verwenden">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <u>Begr&#252;ndung</u>:
    </p>
    <p>
      Das neue System ist anscheinend fest integriert in Gio::Application.
    </p>
    <p>
      Mir ist nicht klar, wieso ein Fenster/Widget das Interface Gio::Actionable implementieren mu&#223;.
    </p>
    <p>
      Ich werde den Verdacht nicht los, da&#223; hier das Ziel verfolgt wird, eine &quot;Action&quot; von den
    </p>
    <p>
      Grenzen der Applikation zu befreien und direkt in den Desktop zu integrieren.
    </p>
    <p>
      Mit Desktop ist nat&#252;rlich der Gnome-Desktop gemeint. Was diesen Verdacht best&#228;rkt,
    </p>
    <p>
      ist, da&#223; Gio::Application sofort auch gleich eine dBus-Verbindung hochf&#228;hrt.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1485457105010" HGAP="49" ID="ID_202831328" MODIFIED="1557498707220" TEXT="neuer Weg" VSHIFT="21">
<icon BUILTIN="info"/>
<node CREATED="1485457108425" ID="ID_152284167" MODIFIED="1557498707220" TEXT="man erzeugt Gio::SimpleActionGroup"/>
<node CREATED="1485457141853" ID="ID_1841602685" MODIFIED="1557498707220" TEXT="man f&#xfc;gt diese dem Fenster hinzu"/>
</node>
</node>
<node CREATED="1485454243767" HGAP="43" ID="ID_3699127" MODIFIED="1563020397025" TEXT="Zweck: konsistentes UI" VSHIFT="-4">
<node CREATED="1485454248335" ID="ID_623536019" MODIFIED="1557498707220" TEXT="globales Men&#xfc;"/>
<node CREATED="1485454259637" ID="ID_432211008" MODIFIED="1557498707220" TEXT="globale Toolbar"/>
<node CREATED="1485454252789" ID="ID_310049457" MODIFIED="1557498707220" TEXT="globale Aktionen"/>
<node CREATED="1485454263876" ID="ID_543704434" MODIFIED="1557498707220" TEXT="globale Keybindings"/>
</node>
<node CREATED="1493768943479" ID="ID_374108201" MODIFIED="1557498707220" TEXT="Plan">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1493768946415" ID="ID_880915214" MODIFIED="1557498707220" TEXT="das ist die UI-Main-Klasse">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1493768959324" ID="ID_873679558" MODIFIED="1557498707220" TEXT="sollte dann...">
<node CREATED="1493768965036" ID="ID_1457175098" MODIFIED="1557498707220" TEXT="das erste Fenster &#xf6;ffnen"/>
<node CREATED="1493768972691" ID="ID_1810145809" MODIFIED="1557498707220" TEXT="die GTK-Loop starten">
<arrowlink COLOR="#8091a3" DESTINATION="ID_346412093" ENDARROW="Default" ENDINCLINATION="-205;193;" ID="Arrow_ID_824195065" STARTARROW="None" STARTINCLINATION="430;0;"/>
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1493768980361" ID="ID_1478388503" MODIFIED="1557498707220" TEXT="das UI herunnterfahren">
<arrowlink COLOR="#667e90" DESTINATION="ID_599315721" ENDARROW="None" ENDINCLINATION="41;328;" ID="Arrow_ID_1963473410" STARTARROW="Default" STARTINCLINATION="943;-58;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1563020429008" ID="ID_873763889" MODIFIED="1678461929265" TEXT="Delegate herausgel&#xf6;st: UIStyle">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <ul>
      <li>
        soll einmal der &#187;StyleManager&#171; werden
      </li>
      <li>
        baut Stand 2019 auf bestehender Funktionalit&#228;t von Joel Holdsworth auf...
      </li>
    </ul>
  </body>
</html></richcontent>
<arrowlink COLOR="#6179b8" DESTINATION="ID_8715605" ENDARROW="Default" ENDINCLINATION="-946;80;" ID="Arrow_ID_1659593372" STARTARROW="None" STARTINCLINATION="-1586;131;"/>
</node>
</node>
<node CREATED="1563020384655" ID="ID_1309805657" MODIFIED="1563020388552" TEXT="Aufgaben">
<node COLOR="#338800" CREATED="1678461987037" ID="ID_1506722948" MODIFIED="1678462126447" TEXT="verwaltet den &#xbb;top-level-Kontext&#xab;">
<arrowlink COLOR="#47a98e" DESTINATION="ID_576215675" ENDARROW="Default" ENDINCLINATION="-431;-49;" ID="Arrow_ID_162897615" STARTARROW="None" STARTINCLINATION="-633;50;"/>
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1563020407852" ID="ID_1512492571" MODIFIED="1678462193702">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Style / CSS &#10230; delegiert an <b>UiStyle</b>
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#454571" DESTINATION="ID_280366952" ENDARROW="Default" ENDINCLINATION="234;-533;" ID="Arrow_ID_1461427805" STARTARROW="None" STARTINCLINATION="748;60;"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1489460861250" FOLDED="true" HGAP="91" ID="ID_771159819" MODIFIED="1679361759804" TEXT="globaler Kontext" VSHIFT="-26">
<font NAME="SansSerif" SIZE="15"/>
<icon BUILTIN="idea"/>
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#a03232" CREATED="1485549049388" FOLDED="true" ID="ID_530209145" MODIFIED="1679087971773" TEXT="Problem: Aktionen binden">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      das ist ein gaaaanz gro&#223;es Strategisches Thema; vor 2023 hatte ich schon mehrfach versucht, <i>es zu fassen</i>&#160;&#8212; <font color="#982e2e">das ist mir aber bisher nicht gelungen</font>, und deshalb wartet es.... &#8987;
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#a9b4c1" DESTINATION="ID_530209145" ENDARROW="Default" ENDINCLINATION="-17;-195;" ID="Arrow_ID_626063593" SOURCE="ID_1022779645" STARTARROW="None" STARTINCLINATION="9;270;"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1485549075929" ID="ID_1887127861" MODIFIED="1518487921060" TEXT="spezifische Aktionen">
<node CREATED="1485549803366" ID="ID_1969698948" MODIFIED="1518487921060" TEXT="Fenster-Bindung">
<node CREATED="1485549810780" ID="ID_71301392" MODIFIED="1518487921060" TEXT="Pop-Ups brauchen ein Vater-Fenster"/>
<node CREATED="1485549828450" ID="ID_1089795419" MODIFIED="1518487921060">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      eigentlich wollen wir <i>&quot;das aktuelle&quot;</i>
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#375a84" DESTINATION="ID_1041890737" ENDARROW="Default" ENDINCLINATION="177;-181;" ID="Arrow_ID_373431525" STARTARROW="None" STARTINCLINATION="245;-68;"/>
</node>
</node>
</node>
<node CREATED="1485902627783" HGAP="42" ID="ID_88029282" MODIFIED="1561827464724" VSHIFT="-13">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      L&#246;sung: <i><font color="#27754d">schwebende Bindung</font></i>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
<node CREATED="1485902684454" ID="ID_1435239012" MODIFIED="1518487921060" TEXT="Eventgetriebene Oberfl&#xe4;che"/>
<node CREATED="1485902692556" ID="ID_1729615218" MODIFIED="1518487921060" TEXT="wird einmal verdrahtet"/>
<node CREATED="1485902722360" ID="ID_1003456982" MODIFIED="1518487921060">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      arbeitet dann <i>freischwebend</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1485902750053" ID="ID_34756513" MODIFIED="1518487921060" TEXT="zentrales Bindeglied">
<node CREATED="1485902762284" ID="ID_1542199290" MODIFIED="1518487921060" TEXT="kennt die Applikation"/>
<node CREATED="1485902774201" ID="ID_354078562" MODIFIED="1518487921060" TEXT="kennt den Windowmanager"/>
<node CREATED="1485902783201" ID="ID_609776597" MODIFIED="1518487921060" TEXT="kennt einen Operations-Controller"/>
<node CREATED="1485902809813" ID="ID_648457506" MODIFIED="1518487921060" TEXT="kennt den UI-Bus"/>
<node CREATED="1485902794479" ID="ID_1389010579" MODIFIED="1518487921060" TEXT="und ggffs weitere"/>
</node>
<node CREATED="1485902832698" HGAP="48" ID="ID_1440190469" MODIFIED="1518487921060" TEXT="genau dies ist der InteractionDirector" VSHIFT="14">
<arrowlink COLOR="#798eba" DESTINATION="ID_362749694" ENDARROW="Default" ENDINCLINATION="-218;-590;" ID="Arrow_ID_757867749" STARTARROW="None" STARTINCLINATION="15;121;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1485902945474" HGAP="-2" ID="ID_269152626" MODIFIED="1576282358134" TEXT="L&#xf6;sungs-Detail: dynamisch koppeln" VSHIFT="19">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...meint:
    </p>
    <p>
      wir m&#252;ssen zur Aufrufzeit einer Aktion
    </p>
    <p>
      an den aktuellen Kontext ankoppeln k&#246;nnen.
    </p>
    <p>
      
    </p>
    <p>
      Das hei&#223;t, der UiManager mu&#223; im Stande sein,
    </p>
    <p>
      diesen &quot;aktuellen Kontext&quot; irgendwo <i>aufzufischen</i>
    </p>
  </body>
</html></richcontent>
<node CREATED="1485903041262" ID="ID_997327941" MODIFIED="1518487921060" TEXT="Fokus"/>
<node COLOR="#338800" CREATED="1485903046613" ID="ID_1041890737" MODIFIED="1518487921060" TEXT="aktuelles Fenster">
<linktarget COLOR="#375a84" DESTINATION="ID_1041890737" ENDARROW="Default" ENDINCLINATION="177;-181;" ID="Arrow_ID_373431525" SOURCE="ID_1089795419" STARTARROW="None" STARTINCLINATION="245;-68;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1485903652236" ID="ID_1692258488" MODIFIED="1518487921060" TEXT="WindowLocator">
<icon BUILTIN="idea"/>
<node CREATED="1504368706988" ID="ID_362723210" MODIFIED="1518487921060" TEXT="h&#xe4;lt Liste der Fenster"/>
<node CREATED="1485903658300" ID="ID_1048329186" MODIFIED="1518487921060" TEXT="durchsuchen..."/>
</node>
<node CREATED="1485904084947" ID="ID_64462533" MODIFIED="1518487921060" TEXT="Gtk::Window"/>
<node CREATED="1485904064949" ID="ID_313273027" MODIFIED="1518487921060" TEXT="property_has_focus">
<icon BUILTIN="help"/>
</node>
<node CREATED="1485904072812" ID="ID_829657223" MODIFIED="1518487921060" TEXT="property_is_active">
<icon BUILTIN="help"/>
</node>
<node CREATED="1487039156100" ID="ID_1966427611" MODIFIED="1518487921060" TEXT="implementiert durch den WindowLocator">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1487039170930" ID="ID_1408455006" MODIFIED="1518487921060" TEXT="Actions wei&#xdf;, da&#xdf; es dort implemieriert ist">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node COLOR="#6979a7" CREATED="1489460657437" HGAP="101" ID="ID_674641985" MODIFIED="1518487921060" TEXT="Einsicht: Problem verschiebt sich" VSHIFT="-20">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="idea"/>
<node CREATED="1489460707774" ID="ID_1580714352" MODIFIED="1518487921060" TEXT="Actions wird ein reiner Binde-Kontext"/>
<node CREATED="1489460736370" ID="ID_794231700" MODIFIED="1518487921060" TEXT="delegiert wird an einen globalen controller"/>
<node CREATED="1489460756271" ID="ID_392157120" MODIFIED="1518487921060">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <i>dort </i>wird der Kontext aufgegriffen
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#338800" CREATED="1485917582383" HGAP="163" ID="ID_394170572" MODIFIED="1518487921061" TEXT="Struktur" VSHIFT="-30">
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1485917587927" ID="ID_891876702" MODIFIED="1518487921061" TEXT="wohin kommen jetzt die Funktionen, die gebunden werden">
<icon BUILTIN="help"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1485917597429" ID="ID_713875638" MODIFIED="1518487921061" TEXT="auf welche Sub-Komponenten wird referenziert">
<icon BUILTIN="help"/>
</node>
<node CREATED="1486063810921" ID="ID_719539281" MODIFIED="1518487921061" TEXT="Zweck">
<icon BUILTIN="info"/>
<node CREATED="1486063816320" ID="ID_151179000" MODIFIED="1518487921061" TEXT="ist ein Builder"/>
<node CREATED="1486063819992" ID="ID_445639565" MODIFIED="1518487921061" TEXT="ist eine Closure"/>
<node CREATED="1486063831790" ID="ID_328966967" MODIFIED="1518487921061" TEXT="mu&#xdf; blo&#xdf; am Leben bleiben"/>
<node CREATED="1486063841293" ID="ID_1675242982" MODIFIED="1518487921061" TEXT="hat nach Init nichts mehr zu tun"/>
</node>
<node COLOR="#435e98" CREATED="1486063858283" HGAP="42" ID="ID_130675776" MODIFIED="1561827464726" TEXT="ist Impl-Detail" VSHIFT="5">
<icon BUILTIN="yes"/>
<node CREATED="1486063886407" ID="ID_1294385692" MODIFIED="1518487921061" TEXT="sollte aus den weitverbreiteten Header-Includes raus"/>
<node CREATED="1486063911188" ID="ID_1391435276" MODIFIED="1576282358134" TEXT="gegenw&#xe4;rtig Member im UiManager">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...und der wird in der Tat an vielen Stellen includiert
    </p>
    <p>
      und verwendet, und das ist auch gut so
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#435e98" CREATED="1486063950103" FOLDED="true" ID="ID_57649689" MODIFIED="1538871966591" TEXT="zwei Modelle">
<icon BUILTIN="info"/>
<node CREATED="1486063954062" ID="ID_1174765379" MODIFIED="1561827464726" TEXT="Actions wird insgesamt ein PImpl">
<icon BUILTIN="button_ok"/>
<node CREATED="1486064137014" ID="ID_926465478" MODIFIED="1518487921061" TEXT="ist einfach umzusetzen"/>
<node CREATED="1486064142037" ID="ID_836065841" MODIFIED="1518487921061" TEXT="f&#xfc;hrt zu einer doppelten Indirektion"/>
<node CREATED="1486064289857" ID="ID_806073517" MODIFIED="1518487921061" TEXT="macht Registrierung der Aktionen einfach"/>
<node CREATED="1486064322909" ID="ID_89838152" MODIFIED="1518487921061" TEXT="vermischt die Themen">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1486064333076" ID="ID_622214749" MODIFIED="1518487921061" TEXT="Aufbauen des Men&#xfc;s"/>
<node CREATED="1486064337363" ID="ID_551504727" MODIFIED="1518487921061" TEXT="Closure f&#xfc;r die Einzel-Aktionen"/>
</node>
<node CREATED="1486064454451" ID="ID_744832983" MODIFIED="1518487921061" TEXT="Aber genau diese Vermischun macht das Registrieren einfach"/>
</node>
<node CREATED="1486063968868" ID="ID_830826934" MODIFIED="1561827464728" TEXT="Actions hat einen ActionGroup-PImpl">
<icon BUILTIN="button_cancel"/>
<node CREATED="1486063991065" ID="ID_1575759747" MODIFIED="1518487921061" TEXT="man kann von ActionGroup erben">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1486064395051" ID="ID_1668165644" MODIFIED="1518487921061" TEXT="Risiko: Umstellung auf Gio::Action">
<node CREATED="1486064404410" ID="ID_1844104863" MODIFIED="1518487921061" TEXT="zwingend erforderlich"/>
<node CREATED="1486064408841" ID="ID_630946690" MODIFIED="1518487921061" TEXT="in GTK-4 gibt es keine Gtk::Action mehr">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1486063996776" ID="ID_784656430" MODIFIED="1518487921061" TEXT="ist zwar nicht vorgesehen...">
<node CREATED="1486064082093" ID="ID_1957105401" MODIFIED="1518487921061" TEXT="das ist eindeutig"/>
<node CREATED="1486064085605" ID="ID_614915424" MODIFIED="1518487921061" TEXT="es gibt eine statische create-Funktion"/>
<node CREATED="1486064099915" ID="ID_247043577" MODIFIED="1518487921061" TEXT="und die macht einen Gtk::ref_ptr"/>
<node CREATED="1486064111241" ID="ID_1562595756" MODIFIED="1518487921061" TEXT="AUTSCH: ich will einen unique_ptr"/>
</node>
<node CREATED="1486064004143" ID="ID_1825804537" MODIFIED="1518487921061" TEXT="....aber geht">
<icon BUILTIN="help"/>
<node CREATED="1486064188334" ID="ID_1128646481" MODIFIED="1518487921061" TEXT="theoretisch ja"/>
<node CREATED="1486064209092" ID="ID_340165076" MODIFIED="1518487921061" TEXT="aber am Ende will der UiManager einen ref_ptr ActionGroup"/>
<node CREATED="1486064221954" ID="ID_429209345" MODIFIED="1518487921061" TEXT="da sollte man sich besser raushalten">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1486064237832" ID="ID_529050138" MODIFIED="1518487921061" TEXT="w&#xe4;re sch&#xf6;n aber nicht ratsam">
<icon BUILTIN="button_cancel"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1486064478968" ID="ID_1610028838" MODIFIED="1679362063136" TEXT="Umbau">
<icon BUILTIN="button_ok"/>
<node CREATED="1486064487215" ID="ID_195778340" MODIFIED="1518487921061" TEXT="Actions wird PImpl">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1486064493614" ID="ID_566562539" MODIFIED="1518487921061" TEXT="Actions wird Header-only">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1486064503229" ID="ID_1200627448" MODIFIED="1518487921061" TEXT="alle wildcard-Includes weg">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node CREATED="1487039062273" ID="ID_956599122" MODIFIED="1679362063136" TEXT="Zust&#xe4;ndigkeit">
<icon BUILTIN="yes"/>
<node CREATED="1487039071039" ID="ID_1884426258" MODIFIED="1518487921061" TEXT="Herstellen des Hauptmen&#xfc;s"/>
<node CREATED="1487039079759" ID="ID_471335369" MODIFIED="1518487921061" TEXT="Binden der Aktionen"/>
<node CREATED="1487039084285" ID="ID_555104373" MODIFIED="1518487921061" TEXT="Closure f&#xfc;r die Aktionen"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1487039098836" ID="ID_199078620" MODIFIED="1518487921061" TEXT="ggfs: Exceptions fangen">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node CREATED="1487039113306" ID="ID_1405514231" MODIFIED="1679362063136" TEXT="Einbindung">
<icon BUILTIN="button_ok"/>
<node CREATED="1487039118001" ID="ID_244074852" MODIFIED="1518487921061" TEXT="globaler Kontext"/>
<node CREATED="1487039125984" ID="ID_622974182" MODIFIED="1518487921061" TEXT="wei&#xdf;, welche Aktion wohin zu delegieren ist"/>
</node>
</node>
<node COLOR="#338800" CREATED="1488422770096" FOLDED="true" HGAP="56" ID="ID_53463593" MODIFIED="1561827464731" TEXT="#1085 solve setup of top-level menu actions" VSHIFT="-17">
<icon BUILTIN="button_ok"/>
<node CREATED="1488423688763" ID="ID_1950800234" MODIFIED="1679362063136" TEXT="UI-Komponenten">
<node CREATED="1488423702977" ID="ID_292894978" MODIFIED="1575050390351" TEXT="TimelinePane">
<arrowlink COLOR="#a1543e" DESTINATION="ID_1753722831" ENDARROW="Default" ENDINCLINATION="1192;-274;" ID="Arrow_ID_912757548" STARTARROW="None" STARTINCLINATION="408;-90;"/>
</node>
<node CREATED="1488423705729" ID="ID_610872163" MODIFIED="1518487921061" TEXT="AssetPane"/>
<node CREATED="1488423709704" ID="ID_14713871" MODIFIED="1518487921061" TEXT="ViewerPane"/>
</node>
<node CREATED="1488423740012" ID="ID_874330545" MODIFIED="1679362063136" TEXT="Lifecycle-Aktionen">
<node CREATED="1488423747187" ID="ID_1351717245" MODIFIED="1679362063136" TEXT="UI schlie&#xdf;en">
<node CREATED="1492965765319" ID="ID_581436031" MODIFIED="1518487921061" TEXT="wird schon geforwarded"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1492965770197" ID="ID_1619347643" MODIFIED="1518487921061" TEXT="noch zu implementieren">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
<node CREATED="1488423714584" ID="ID_1439137871" MODIFIED="1679362063136" TEXT="Session-Aktionen">
<icon BUILTIN="button_ok"/>
<node CREATED="1488423760105" ID="ID_1527724040" MODIFIED="1679362063136" TEXT="Speichern">
<node CREATED="1488492373919" ID="ID_1898515568" MODIFIED="1518487921061" TEXT="snapshot-Kommando an Session senden"/>
<node CREATED="1488494870418" ID="ID_1929432332" MODIFIED="1576282358133" TEXT="TODO: InvocationTrail">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Njet
    </p>
    <p>
      InvocationTrail ist tot
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#338800" CREATED="1488566247742" ID="ID_254774965" MODIFIED="1518487921061" TEXT="mu&#xdf; doch die Architktur kl&#xe4;ren">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1488423763585" ID="ID_968726788" MODIFIED="1518487921061" TEXT="Schlie&#xdf;en"/>
<node CREATED="1488494907118" ID="ID_1932633471" MODIFIED="1679362063136" TEXT="Speichern-Als">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1488494891600" ID="ID_1996245412" MODIFIED="1518487921061" TEXT="Session-Setup-UI schaffen">
<icon BUILTIN="hourglass"/>
</node>
</node>
<node CREATED="1492965880399" ID="ID_1722391032" MODIFIED="1679362063136" TEXT="editSetup">
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1492965890037" ID="ID_1388211591" MODIFIED="1518487921061" TEXT="Konfigurations-UI schaffen">
<icon BUILTIN="hourglass"/>
</node>
</node>
<node CREATED="1488492153109" ID="ID_1243726860" MODIFIED="1518487921061">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      generisches <i>&#214;ffnen</i>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1488423720319" FOLDED="true" ID="ID_1455353650" MODIFIED="1561827464734" TEXT="Sequence-Aktionen">
<linktarget COLOR="#58379a" DESTINATION="ID_1455353650" ENDARROW="Default" ENDINCLINATION="111;202;" ID="Arrow_ID_1092382782" SOURCE="ID_1392812297" STARTARROW="None" STARTINCLINATION="100;-9;"/>
<icon BUILTIN="hourglass"/>
<node CREATED="1489461756655" ID="ID_1625364312" MODIFIED="1679362063136" TEXT="neue Sequenz">
<icon BUILTIN="button_ok"/>
<node CREATED="1489461773213" ID="ID_344390825" MODIFIED="1576282358133" TEXT="als Treiber verwenden">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...um die Entwicklung des Designs zu erzwingen
    </p>
    <p>
      und den Teufelskreis zu durchbrechen!
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1489461838228" ID="ID_283502486" MODIFIED="1518487921061" TEXT="im InteractionDirector">
<icon BUILTIN="info"/>
</node>
<node CREATED="1489461843747" ID="ID_1499714490" MODIFIED="1679362063136" TEXT="die Command-ID beziehen">
<icon BUILTIN="forward"/>
<node CREATED="1489461856042" ID="ID_1097689316" MODIFIED="1518487921061" TEXT="bedingt Command-ID">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1489461862937" ID="ID_1649764088" MODIFIED="1518487921061" TEXT="bedingt Command-Definition">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1489544225984" ID="ID_1436775081" MODIFIED="1679362063136" TEXT="Triggern">
<icon BUILTIN="forward"/>
<node CREATED="1489544261547" ID="ID_1624183619" MODIFIED="1679362063136" TEXT="wer">
<icon BUILTIN="help"/>
<node CREATED="1489544403984" ID="ID_1230750297" MODIFIED="1518487921062" TEXT="&quot;ein UI-Element&quot;">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
<node CREATED="1489544439187" ID="ID_1231587220" MODIFIED="1518487921062" TEXT="Beispiel: Toolbar-Button"/>
<node CREATED="1489544452034" ID="ID_745673239" MODIFIED="1518487921062" TEXT="Beispiel: Kontextmen&#xfc;-Eintrag"/>
<node CREATED="1489544513577" ID="ID_128032926" MODIFIED="1518487921062" TEXT="Beispiel: Aktion per Keybinding"/>
<node CREATED="1489544524128" ID="ID_1668808893" MODIFIED="1518487921062" TEXT="Beispiel: Signal drag-n-drop"/>
</node>
<node CREATED="1489544268018" ID="ID_452323402" MODIFIED="1679362063136" TEXT="was">
<icon BUILTIN="help"/>
<node CREATED="1489544652414" ID="ID_1351449548" MODIFIED="1518487921062" TEXT="lokal bekannt"/>
<node CREATED="1489544640288" ID="ID_1518540017" MODIFIED="1518487921062" TEXT="fest verdrahtet"/>
<node CREATED="1489544659597" ID="ID_1444251202" MODIFIED="1518487921062" TEXT="ggfs. Auswahl aus kleiner Menge"/>
</node>
<node CREATED="1489544717333" ID="ID_1695877485" MODIFIED="1679362063136" TEXT="falls">
<icon BUILTIN="help"/>
<node CREATED="1489544722261" ID="ID_1263012116" MODIFIED="1518487921062" TEXT="ausf&#xfc;hrbar"/>
<node CREATED="1489544725860" ID="ID_1167910092" MODIFIED="1518487921062" TEXT="d.h. aktiviert"/>
<node CREATED="1489544826383" ID="ID_166753518" MODIFIED="1679362063136" TEXT="zwei verschiedene Effekte">
<icon BUILTIN="idea"/>
<node CREATED="1489544836757" ID="ID_1543872004" MODIFIED="1576282358132" TEXT="Ausf&#xfc;hrung abweisen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...stattdessen einen Fehler-Indikator ausl&#246;sen
    </p>
    <p>
      (Beispiel &quot;in-point fehlt&quot;)
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1489544910395" ID="ID_82086808" MODIFIED="1576282358132" TEXT="enable Action">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...das ist eine Reaktion,
    </p>
    <p>
      die von einem managing Ui-Element ausgef&#252;hrt wird,
    </p>
    <p>
      aber von einem externen State-Change getriggert wird
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
<node CREATED="1492461164005" ID="ID_301986256" MODIFIED="1518487921062" TEXT="Argumente">
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1492461170141" ID="ID_740147771" MODIFIED="1518487921062" TEXT="der Anker">
<icon BUILTIN="hourglass"/>
<node CREATED="1492965703927" ID="ID_1023878270" MODIFIED="1518487921062" TEXT="auf sp&#xe4;ter vertagt">
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1492965711791" ID="ID_965013716" MODIFIED="1518487921062" TEXT="&#x27fa; InteractionControl"/>
</node>
<node CREATED="1492461179404" ID="ID_1843144262" MODIFIED="1518487921062" TEXT="die neue Sequenz">
<node CREATED="1492461186562" ID="ID_357158955" MODIFIED="1576282358131" TEXT="ID mu&#xdf; gesendet werden">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      damit UNDO funktionieren kann,
    </p>
    <p>
      m&#252;ssen wir schon beim capture wissen,
    </p>
    <p>
      welches Objekt (ID) hinzugef&#252;gt werden wird.
    </p>
    <p>
      Denn sonst m&#252;&#223;ten wir uns den gegenw&#228;rtigen Inhalt speichern
    </p>
    <p>
      und das w&#228;re unsinnig.
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1492461260360" ID="ID_118202238" MODIFIED="1518487921062" TEXT="EntryID">
<icon BUILTIN="help"/>
</node>
</node>
</node>
</node>
<node CREATED="1492965734610" ID="ID_17105090" MODIFIED="1518487921062" TEXT="neuer Track">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1489461946997" HGAP="-10" ID="ID_1526466868" MODIFIED="1576282358131" TEXT="direkt von den Lambdas aus delegieren" VSHIFT="7">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      wir k&#246;nnen den gr&#246;&#223;ten Teil dieser Einzeiler-Funktionen loswerden,
    </p>
    <p>
      da es nur darum geht, via globalCtx auf den passenden Controller zuzugreifen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#338800" CREATED="1485898796393" ID="ID_1217726538" MODIFIED="1561827464735" TEXT="#1069 how to refer to the current window">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1492965823743" ID="ID_729520839" MODIFIED="1518487921062" TEXT="grunds&#xe4;tzlich gel&#xf6;st">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1492965830381" ID="ID_1556963629" MODIFIED="1518487921062" TEXT="globalCtx -&gt; find active window">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#990000" CREATED="1492965845115" ID="ID_1375700494" MODIFIED="1523752843329" TEXT="TODO Panel-Aktionen">
<arrowlink DESTINATION="ID_1176492517" ENDARROW="Default" ENDINCLINATION="-68;-316;" ID="Arrow_ID_1083220093" STARTARROW="None" STARTINCLINATION="550;-23;"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1492965914018" ID="ID_1134955241" MODIFIED="1518487921062" TEXT="UNIMPLEMENTED"/>
<node CREATED="1493852058451" ID="ID_1074189286" MODIFIED="1518487921062" TEXT="war schon seit 2009 deaktiviert"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1493852066930" ID="ID_715367457" MODIFIED="1518487921062" TEXT="das ganze Konzept mu&#xdf; &#xfc;berarbeitet werden">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1485555902731" ID="ID_55451880" MODIFIED="1518487921062" TEXT="#1070 how to bind session commands into UI actions">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1489191725382" ID="ID_1332782754" MODIFIED="1518487921062" TEXT="gr&#xf6;&#xdf;eres Thema">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1489191732869" ID="ID_1031180144" MODIFIED="1518487921062" TEXT="nicht sofort zu l&#xf6;sen"/>
<node CREATED="1489191744764" ID="ID_898481930" MODIFIED="1518487921062" TEXT="aber Grundlagen legen">
<arrowlink COLOR="#606d94" DESTINATION="ID_346158251" ENDARROW="Default" ENDINCLINATION="671;0;" ID="Arrow_ID_726918944" STARTARROW="None" STARTINCLINATION="1012;0;"/>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1492461289101" ID="ID_1507239589" MODIFIED="1518487921062" TEXT="Frage: Objekt-Referenzen">
<arrowlink COLOR="#8e2a4d" DESTINATION="ID_1909730752" ENDARROW="Default" ENDINCLINATION="190;-96;" ID="Arrow_ID_1543429248" STARTARROW="None" STARTINCLINATION="-103;109;"/>
<icon BUILTIN="help"/>
<node CREATED="1492461304231" ID="ID_1680959339" MODIFIED="1518487921062" TEXT="LuidH"/>
<node CREATED="1492461306898" ID="ID_94770054" MODIFIED="1518487921062" TEXT="EntryID"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1492463479663" ID="ID_1909730752" MODIFIED="1518487921062" TEXT="#1096 passing object IDs">
<arrowlink COLOR="#8e2a4d" DESTINATION="ID_938886823" ENDARROW="Default" ENDINCLINATION="-367;31;" ID="Arrow_ID_265571961" STARTARROW="None" STARTINCLINATION="-367;31;"/>
<linktarget COLOR="#8e2a4d" DESTINATION="ID_1909730752" ENDARROW="Default" ENDINCLINATION="190;-96;" ID="Arrow_ID_1543429248" SOURCE="ID_1507239589" STARTARROW="None" STARTINCLINATION="-103;109;"/>
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1485549081728" FOLDED="true" ID="ID_1122969153" MODIFIED="1679087809377" TEXT="globale Aktionen">
<arrowlink COLOR="#824f68" DESTINATION="ID_826011549" ENDARROW="Default" ENDINCLINATION="-872;-1178;" ID="Arrow_ID_1373278707" STARTARROW="Default" STARTINCLINATION="911;271;"/>
<icon BUILTIN="hourglass"/>
<node CREATED="1488419973349" ID="ID_1855791702" MODIFIED="1518487921062" TEXT="brauche ein Konzept">
<icon BUILTIN="yes"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1679087725579" ID="ID_1392812297" MODIFIED="1679087800628" TEXT="zun&#xe4;chst zur&#xfc;ckgestellt">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...das k&#246;nnen wir erst dann sinnvoll angehen, wenn die Application-Core weiter ausgereift ist
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#58379a" DESTINATION="ID_1455353650" ENDARROW="Default" ENDINCLINATION="111;202;" ID="Arrow_ID_1092382782" STARTARROW="None" STARTINCLINATION="100;-9;"/>
<icon BUILTIN="hourglass"/>
</node>
<node CREATED="1488419979868" ID="ID_474441211" MODIFIED="1518487921062" TEXT="InteractionDirector">
<arrowlink COLOR="#5e4463" DESTINATION="ID_362749694" ENDARROW="Default" ENDINCLINATION="-57;-739;" ID="Arrow_ID_1847127764" STARTARROW="None" STARTINCLINATION="73;95;"/>
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="forward"/>
<node CREATED="1488419993090" ID="ID_1039124749" MODIFIED="1518487921062" TEXT="wird Dreh- und Angelpunkt">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1488420003752" ID="ID_1927319278" MODIFIED="1518487921062" TEXT="l&#xf6;st auch das Model-Root-Problem">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1488420014959" ID="ID_1816556929" MODIFIED="1518487921062" TEXT="war insofern sinnvoller Umweg">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1485909456513" HGAP="55" ID="ID_576215675" MODIFIED="1678459579082" TEXT="top-level-Verdrahtung" VSHIFT="1">
<arrowlink COLOR="#8c95b2" DESTINATION="ID_36527267" ENDARROW="Default" ENDINCLINATION="138;-548;" ID="Arrow_ID_1284182756" STARTARROW="None" STARTINCLINATION="883;143;"/>
<linktarget COLOR="#47a98e" DESTINATION="ID_576215675" ENDARROW="Default" ENDINCLINATION="-431;-49;" ID="Arrow_ID_162897615" SOURCE="ID_1506722948" STARTARROW="None" STARTINCLINATION="-633;50;"/>
<linktarget COLOR="#23d63e" DESTINATION="ID_576215675" ENDARROW="Default" ENDINCLINATION="-930;90;" ID="Arrow_ID_638247395" SOURCE="ID_546190730" STARTARROW="None" STARTINCLINATION="801;59;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1485909560027" ID="ID_1949656657" MODIFIED="1518487921062" TEXT="baut den UI-Rahen auf"/>
<node CREATED="1485909491412" ID="ID_1205077540" MODIFIED="1518487921062" TEXT="macht die Applikation betriebsbereit">
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#435e98" CREATED="1486942467620" FOLDED="true" HGAP="151" ID="ID_1761000392" MODIFIED="1518487921062" TEXT="Alternativen" VSHIFT="14">
<icon BUILTIN="help"/>
<node CREATED="1486942493208" ID="ID_805305597" MODIFIED="1561827464738" TEXT="alles via InteractionDirector">
<icon BUILTIN="button_cancel"/>
<node CREATED="1486944032334" ID="ID_1959218653" MODIFIED="1518487921062" TEXT="er macht ohnehin fast alles">
<icon BUILTIN="smily_bad"/>
</node>
<node CREATED="1486944056595" ID="ID_423413011" MODIFIED="1518487921062" TEXT="Actions wird eine leere H&#xfc;lle">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1486944064506" ID="ID_712470482" MODIFIED="1518487921062" TEXT="baut das Men&#xfc;"/>
<node CREATED="1486944068985" ID="ID_1074291755" MODIFIED="1518487921062" TEXT="stellt die Closures bereit"/>
<node CREATED="1486944075456" ID="ID_1851635277" MODIFIED="1518487921062" TEXT="k&#xf6;nnte Exceptions fangen"/>
<node CREATED="1486944081143" ID="ID_310163833" MODIFIED="1518487921062" TEXT="...ist das wirklich so schlecht?">
<icon BUILTIN="help"/>
</node>
</node>
<node CREATED="1487034056153" ID="ID_1455538166" MODIFIED="1518487921062" TEXT="Rein aus dem Bauch heraus....">
<icon BUILTIN="stop-sign"/>
<node CREATED="1487034063408" ID="ID_1251347399" MODIFIED="1518487921062">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      das <i>verschiebt</i>&#160;das Problem nur
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1487034078974" ID="ID_796487731" MODIFIED="1518487921062" TEXT="verletzt das single responsibility pattern"/>
</node>
</node>
<node CREATED="1486942523724" ID="ID_843953045" MODIFIED="1561827464741" TEXT="globalen Kontext einf&#xfc;hren">
<icon BUILTIN="forward"/>
<node CREATED="1486942614400" ID="ID_872912875" MODIFIED="1518487921062" TEXT="Action-Definition &quot;wei&#xdf;&quot; wer das konkret machen kann"/>
<node CREATED="1486943522965" ID="ID_244569580" MODIFIED="1518487921062" TEXT="konkret...">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1486943529763" ID="ID_186058004" MODIFIED="1518487921062" TEXT="WindowLocator">
<node CREATED="1486943536354" ID="ID_1414688651" MODIFIED="1518487921062" TEXT="neues Fenster"/>
<node CREATED="1486943539809" ID="ID_443462243" MODIFIED="1518487921062" TEXT="Fenster schlie&#xdf;en"/>
<node CREATED="1486943765530" ID="ID_1741627821" MODIFIED="1518487921062" TEXT="show Panel xyz"/>
<node CREATED="1486943555279" ID="ID_1864984187" MODIFIED="1518487921062" TEXT="m&#xf6;glicherweise: gehe zu"/>
</node>
<node CREATED="1486943607120" ID="ID_372751802" MODIFIED="1518487921062" TEXT="InteractionDirector">
<node CREATED="1486943922541" ID="ID_1681514542" MODIFIED="1518487921062" TEXT="Quit Lumiera"/>
<node CREATED="1486943614039" ID="ID_1857002831" MODIFIED="1518487921062" TEXT="Session schlie&#xdf;en/&#xf6;ffnen/speichern"/>
<node CREATED="1486943634229" ID="ID_423286018" MODIFIED="1518487921062" TEXT="Einstieg in...">
<node CREATED="1486943640004" ID="ID_1474901789" MODIFIED="1518487921062" TEXT="Preferences"/>
<node CREATED="1486943643179" ID="ID_1263689486" MODIFIED="1518487921062" TEXT="Assets"/>
<node CREATED="1486943645554" ID="ID_357680575" MODIFIED="1518487921062" TEXT="Timeline"/>
</node>
<node CREATED="1486943674287" ID="ID_1380296040" MODIFIED="1518487921062" TEXT="kontextabh&#xe4;ngig">
<node CREATED="1486943681046" ID="ID_1415550100" MODIFIED="1518487921062" TEXT="Render"/>
<node CREATED="1486943683198" ID="ID_510577218" MODIFIED="1518487921062" TEXT="add Sequence"/>
<node CREATED="1486943691228" ID="ID_684917844" MODIFIED="1518487921062" TEXT="add Track"/>
<node CREATED="1486943854214" ID="ID_382166589" MODIFIED="1518487921062" TEXT="new Viewer"/>
</node>
</node>
<node CREATED="1486943969999" ID="ID_499822898" MODIFIED="1518487921063" TEXT="Meta-Belange">
<node CREATED="1486943974590" ID="ID_233678784" MODIFIED="1518487921063" TEXT="Hilfe"/>
<node CREATED="1486944977005" ID="ID_1548991554" MODIFIED="1518487921063" TEXT="Wizzards"/>
<node CREATED="1533687508760" ID="ID_1331912107" MODIFIED="1533687523000" TEXT="Fehlerlog (notification display)"/>
<node CREATED="1486943976942" ID="ID_1215823743" MODIFIED="1518487921063" TEXT="Navigation">
<node CREATED="1486944958215" ID="ID_175734210" MODIFIED="1518487921063" TEXT="ist wohl ein eigener Controller"/>
<node CREATED="1486944947297" ID="ID_572583322" MODIFIED="1518487921063" TEXT="h&#xe4;ngt aber mit InteractionDirector zusammen"/>
<node CREATED="1486944966679" ID="ID_185137660" MODIFIED="1518487921063" TEXT="k&#xf6;nnte ein Kind von diesem sein...."/>
</node>
</node>
</node>
</node>
<node CREATED="1486942533939" ID="ID_1309437882" MODIFIED="1518487921063" TEXT="einzelne Closures explizit">
<icon BUILTIN="button_cancel"/>
<node CREATED="1486942574333" ID="ID_189848820" MODIFIED="1518487921063" TEXT="das l&#xe4;uft auf ein Delegate hinaus"/>
<node CREATED="1486942583053" ID="ID_1367249768" MODIFIED="1518487921063" TEXT="...und das w&#xe4;re der InteractionDirector"/>
</node>
</node>
<node CREATED="1487034156380" HGAP="29" ID="ID_1632778987" MODIFIED="1518487921063" TEXT="globaler Kontext" VSHIFT="11">
<icon BUILTIN="yes"/>
<node CREATED="1487034162275" ID="ID_28375182" MODIFIED="1518487921063" TEXT="wenige, eng zusammenarbeitende Objekte"/>
<node CREATED="1487034172393" ID="ID_1167812745" MODIFIED="1518487921063" TEXT="...von denen doch jedes seine Aufgabe hat"/>
<node CREATED="1487034180712" ID="ID_1371598611" MODIFIED="1518487921063" TEXT="und jedes genau wei&#xdf;, was die andern k&#xf6;nnen"/>
</node>
</node>
<node BACKGROUND_COLOR="#fefc4e" COLOR="#351d75" CREATED="1504393149140" FOLDED="true" HGAP="38" ID="ID_48107354" MODIFIED="1561827464745" TEXT="Addressierung" VSHIFT="55">
<arrowlink COLOR="#4f5d91" DESTINATION="ID_974158229" ENDARROW="Default" ENDINCLINATION="383;-2505;" ID="Arrow_ID_1832380552" STARTARROW="None" STARTINCLINATION="-730;103;"/>
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="pencil"/>
<node CREATED="1504393160466" ID="ID_450547493" MODIFIED="1541547317746" TEXT="globales Addre&#xdf;-Schema">
<node CREATED="1504393168946" ID="ID_390425361" MODIFIED="1518487921063" TEXT="Model-Typen"/>
<node CREATED="1504393177712" ID="ID_1686403667" MODIFIED="1518487921063" TEXT="View-Deskriptor">
<node CREATED="1504393184608" ID="ID_792210197" MODIFIED="1518487921063" TEXT="Strategy"/>
<node CREATED="1504834023671" ID="ID_1906244318" MODIFIED="1518487921063" TEXT="konfiguriert">
<node CREATED="1504834102408" ID="ID_1248837242" MODIFIED="1518487921063" TEXT="Layout/Verhalten"/>
<node CREATED="1504393188615" ID="ID_1397553997" MODIFIED="1518487921063" TEXT="Verhaltensmuster f&#xfc;r Component-Views">
<arrowlink COLOR="#5e819b" DESTINATION="ID_686917529" ENDARROW="Default" ENDINCLINATION="-89;-122;" ID="Arrow_ID_1067086551" STARTARROW="None" STARTINCLINATION="-322;62;"/>
<icon BUILTIN="info"/>
</node>
</node>
</node>
<node CREATED="1504833678189" ID="ID_173722644" MODIFIED="1518487921063" TEXT="Einstiegspunkt">
<arrowlink COLOR="#717686" DESTINATION="ID_65709251" ENDARROW="Default" ENDINCLINATION="-8;-209;" ID="Arrow_ID_1510990213" STARTARROW="None" STARTINCLINATION="92;95;"/>
<node CREATED="1504833683333" ID="ID_583036636" MODIFIED="1544329029063" TEXT="Component View">
<arrowlink COLOR="#92a9df" DESTINATION="ID_1717772756" ENDARROW="Default" ENDINCLINATION="-1346;-3359;" ID="Arrow_ID_1986148222" STARTARROW="None" STARTINCLINATION="385;845;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
<node CREATED="1504833695107" ID="ID_1686159038" MODIFIED="1518487921063" TEXT="in einem Panel zu finden"/>
</node>
</node>
<node CREATED="1519356802243" HGAP="67" ID="ID_1415516084" MODIFIED="1538871866274" TEXT="Komponenten-Zugriff" VSHIFT="12">
<node CREATED="1504393221051" ID="ID_938886823" MODIFIED="1518487921063" TEXT="wie bekommt man eine Objekt-ID?">
<linktarget COLOR="#8e2a4d" DESTINATION="ID_938886823" ENDARROW="Default" ENDINCLINATION="-367;31;" ID="Arrow_ID_265571961" SOURCE="ID_1909730752" STARTARROW="None" STARTINCLINATION="-367;31;"/>
</node>
<node CREATED="1519356887367" ID="ID_1139603062" MODIFIED="1519356897033" TEXT="wie findet man den Ort einer Komponente?"/>
<node CREATED="1519356901933" ID="ID_596521684" MODIFIED="1519356913407" TEXT="Verh&#xe4;ltnis ID / Ort">
<node CREATED="1519356920083" ID="ID_723456910" MODIFIED="1519356926342" TEXT="sind orthogonale Schemata">
<node CREATED="1519357047993" ID="ID_1706134856" MODIFIED="1541547248389" TEXT="ID = globale Identit&#xe4;t">
<arrowlink COLOR="#6b83a8" DESTINATION="ID_1585676322" ENDARROW="Default" ENDINCLINATION="828;-65;" ID="Arrow_ID_174361092" STARTARROW="None" STARTINCLINATION="1067;-74;"/>
</node>
<node CREATED="1519357060599" ID="ID_975802429" MODIFIED="1519357070810" TEXT="Ort = Topologie + Typ">
<node CREATED="1519357081868" ID="ID_1484266304" MODIFIED="1519357090975" TEXT="Ortsnamen sind generisch"/>
<node CREATED="1519357091795" ID="ID_68008128" MODIFIED="1519357096374" TEXT="sie werden lokal verstanden"/>
<node CREATED="1519357097154" ID="ID_377787861" MODIFIED="1519357212192" TEXT="lokal als Typangaben interpretiert">
<arrowlink COLOR="#2b4283" DESTINATION="ID_778018274" ENDARROW="Default" ENDINCLINATION="-1752;0;" ID="Arrow_ID_1022345699" STARTARROW="None" STARTINCLINATION="795;544;"/>
</node>
</node>
</node>
<node CREATED="1519356955358" ID="ID_1568727351" MODIFIED="1519356966058" TEXT="ID wird in den Ort eingepflantzt">
<icon BUILTIN="yes"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1519357006055" ID="ID_1652172363" MODIFIED="1519357017238" TEXT="R&#xfc;ckaufl&#xf6;sung ID -&gt; Ort">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
<node CREATED="1506175115772" FOLDED="true" HGAP="318" ID="ID_1448696607" MODIFIED="1561827464751" VSHIFT="64">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <b>UI-Koordinaten </b>(UICoord)
    </p>
  </body>
</html></richcontent>
<cloud COLOR="#e7d6c4"/>
<linktarget COLOR="#535189" DESTINATION="ID_1448696607" ENDARROW="Default" ENDINCLINATION="-391;179;" ID="Arrow_ID_1194909838" SOURCE="ID_342577636" STARTARROW="None" STARTINCLINATION="691;-200;"/>
<icon BUILTIN="info"/>
<node CREATED="1506175332288" ID="ID_1487048178" MODIFIED="1506175335441" TEXT="immutable"/>
<node CREATED="1506175325136" ID="ID_569191479" MODIFIED="1506175331436" TEXT="kopierbare Werte"/>
<node CREATED="1506175344846" ID="ID_1787806028" MODIFIED="1506175357976" TEXT="Tupel von Literalen"/>
<node CREATED="1506175395879" ID="ID_1249891322" MODIFIED="1506175400362" TEXT="Bedeutungs-Varianten">
<node CREATED="1506175488451" ID="ID_134646571" MODIFIED="1506175559083" TEXT="Anker"/>
<node CREATED="1506175405502" ID="ID_468711419" MODIFIED="1506175417680" TEXT="explizit / wildcard"/>
<node CREATED="1506175444505" ID="ID_971546375" MODIFIED="1506175448772" TEXT="bekannt / unbekannt"/>
<node CREATED="1506175493954" ID="ID_1571215800" MODIFIED="1506175949153" TEXT="gedeckt / m&#xf6;glich / unm&#xf6;glich"/>
</node>
<node CREATED="1506175969603" HGAP="58" ID="ID_1322989755" MODIFIED="1506181196817" TEXT="Auswertung" VSHIFT="43">
<node CREATED="1506175980946" ID="ID_1635470067" MODIFIED="1506175983965" TEXT="stateless">
<node CREATED="1506176104177" ID="ID_379934022" MODIFIED="1506176107452" TEXT="Traversierung"/>
<node CREATED="1506176108473" ID="ID_241520424" MODIFIED="1506176114467" TEXT="Interpretation"/>
<node CREATED="1506176114984" ID="ID_332155493" MODIFIED="1506176117235" TEXT="Abgleich"/>
</node>
<node CREATED="1506175984577" HGAP="25" ID="ID_610939878" MODIFIED="1506957372981" TEXT="im Resolver" VSHIFT="-1">
<arrowlink COLOR="#65759f" DESTINATION="ID_1878859300" ENDARROW="Default" ENDINCLINATION="-439;-594;" ID="Arrow_ID_68163828" STARTARROW="None" STARTINCLINATION="307;351;"/>
<node CREATED="1506176010590" ID="ID_901285927" MODIFIED="1506176067906" TEXT="Kontext-Infos">
<node CREATED="1506176024596" ID="ID_1050302466" MODIFIED="1506176028175" TEXT="Aktuelles Fenster"/>
<node CREATED="1506176028787" ID="ID_1768321192" MODIFIED="1506176037158" TEXT="existierende">
<node CREATED="1506176038098" ID="ID_543075741" MODIFIED="1506176039621" TEXT="Fenster"/>
<node CREATED="1506176040161" ID="ID_685895986" MODIFIED="1506176041845" TEXT="Panels"/>
<node CREATED="1506176043073" ID="ID_670302946" MODIFIED="1506176044853" TEXT="Views"/>
<node CREATED="1506176045465" ID="ID_6996325" MODIFIED="1506176046820" TEXT="Tabs"/>
</node>
</node>
<node CREATED="1506176077269" ID="ID_1123330267" MODIFIED="1506176086486" TEXT="Kontext ist zu kapseln">
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1506180744136" HGAP="-8" ID="ID_1053983304" MODIFIED="1506180750564" TEXT="Operationen" VSHIFT="34">
<node CREATED="1506180752094" ID="ID_532619019" MODIFIED="1506181105657" TEXT="Query">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1506180752094" ID="ID_509982542" MODIFIED="1506180752094" TEXT="locally decidable">
<node CREATED="1506180752095" ID="ID_1152353258" MODIFIED="1506180752095" TEXT="explicitness"/>
<node CREATED="1506180752095" ID="ID_482556645" MODIFIED="1506180752095" TEXT="presence"/>
</node>
<node CREATED="1506180752096" ID="ID_320263447" MODIFIED="1506180752096" TEXT="contextual predications">
<node CREATED="1506180752096" ID="ID_837824348" MODIFIED="1506180752096" TEXT="anchorage">
<node CREATED="1506180752097" ID="ID_456798717" MODIFIED="1576282358130" TEXT="explicitly anchored">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...and this anchorage can be covered and backed by the currently existing UI configuration
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1506180752098" ID="ID_1971122985" MODIFIED="1576282358130" TEXT="can be a anchored">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...by interpolation of some wildcards
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1506180752099" ID="ID_1588059901" MODIFIED="1576282358129" TEXT="incomplete">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...need to be extended to allow anchoring
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1506180752099" ID="ID_1331064451" MODIFIED="1506180752099" TEXT="impossible to anchor"/>
</node>
<node CREATED="1506180752099" ID="ID_1327313624" MODIFIED="1506180752099" TEXT="coverage">
<node CREATED="1506180752099" ID="ID_1861096545" MODIFIED="1533608413554" TEXT="Prereq: need to anchored">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1506180752099" ID="ID_1260046910" MODIFIED="1506180752099" TEXT="explicitly"/>
<node CREATED="1506180752100" ID="ID_1853688132" MODIFIED="1506180752100" TEXT="by interpolation"/>
<node CREATED="1506180752100" ID="ID_1093737813" MODIFIED="1506180752100" TEXT="by extension of incomplete"/>
</node>
<node CREATED="1506180752100" ID="ID_1925372021" MODIFIED="1506180752100" TEXT="completely covered"/>
<node CREATED="1506180752100" ID="ID_1969020445" MODIFIED="1533608413555" TEXT="partially covered">
<node CREATED="1506180752100" ID="ID_1998116592" MODIFIED="1506180752100" TEXT="test only"/>
<node CREATED="1506180752101" ID="ID_1458219980" MODIFIED="1506180752101" TEXT="yield uncovered extension part"/>
</node>
<node CREATED="1506180752101" ID="ID_398264250" MODIFIED="1506180752101" TEXT="possible to cover completely"/>
<node CREATED="1506180752101" ID="ID_622219519" MODIFIED="1506180752101" TEXT="impossible to cover"/>
</node>
</node>
</node>
<node CREATED="1506180752101" ID="ID_346716510" MODIFIED="1506181115210" TEXT="Mutate">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1506180752101" ID="ID_1235660281" MODIFIED="1506180752101" TEXT="anchoring">
<node CREATED="1506180752101" ID="ID_888532646" MODIFIED="1506180752101" TEXT="by interpolating the given spec"/>
<node CREATED="1506180752102" ID="ID_1762786822" MODIFIED="1506180752102" TEXT="by interpolation and extension of the given spec"/>
</node>
<node CREATED="1506180752102" ID="ID_478035492" MODIFIED="1576282358129" TEXT="covering">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      we may construct the covered part of a given spec, including automatic anchoring.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1506180752102" ID="ID_1444275949" MODIFIED="1506180752102" TEXT="navigating">
<node CREATED="1506180752102" ID="ID_1839478635" MODIFIED="1506181147267" TEXT="Prereq">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1506180752103" ID="ID_183872472" MODIFIED="1506180752103" TEXT="needs to be anchored"/>
<node CREATED="1506180752103" ID="ID_238142563" MODIFIED="1506180752103" TEXT="needs to be completely covered"/>
</node>
<node CREATED="1506180752103" ID="ID_1985524064" MODIFIED="1576282358128" TEXT="starting point">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      navigate to the real UI component
    </p>
    <p>
      designated by the given coordinate spec
    </p>
  </body>
</html></richcontent>
<node CREATED="1506180752103" ID="ID_1926205805" MODIFIED="1506180752103" TEXT="ascend"/>
<node CREATED="1506180752103" ID="ID_1087218713" MODIFIED="1533608413555" TEXT="descend to an existing child">
<node CREATED="1506180752103" ID="ID_908880124" MODIFIED="1506180752103" TEXT="by matching name"/>
<node CREATED="1506180752104" ID="ID_1484420566" MODIFIED="1506180752104" TEXT="by index number"/>
</node>
<node CREATED="1506180752104" ID="ID_534962278" MODIFIED="1506180752104" TEXT="extend the path by  ...creates uncovered extension sequence"/>
<node CREATED="1506180752104" ID="ID_552405160" MODIFIED="1576282358128" TEXT="create suitable children">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...halten wir besser raus aus diesem Design.
    </p>
    <p>
      Denn es w&#252;rde st&#228;rkere Annahmen &#252;ber die &quot;Zielelemente&quot; erforderlich machen,
    </p>
    <p>
      und diese dann doch wieder in ein Korsett zw&#228;ngen. Im Moment (10/17) habe ich
    </p>
    <p>
      stark den Verdacht, da&#223; wir das nur in wenigen Spezialf&#228;llen brauchen werden,
    </p>
    <p>
      und dann kann man es auch extern belassen.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_cancel"/>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1504393295097" ID="ID_65709251" MODIFIED="1561827464760" TEXT="wie erreicht man einen ComponentView?">
<arrowlink COLOR="#524f7b" DESTINATION="ID_385011645" ENDARROW="Default" ENDINCLINATION="353;-22;" ID="Arrow_ID_186523581" STARTARROW="None" STARTINCLINATION="1270;350;"/>
<linktarget COLOR="#717686" DESTINATION="ID_65709251" ENDARROW="Default" ENDINCLINATION="-8;-209;" ID="Arrow_ID_1510990213" SOURCE="ID_173722644" STARTARROW="None" STARTINCLINATION="92;95;"/>
<icon BUILTIN="pencil"/>
<node CREATED="1522939988823" ID="ID_727558614" MODIFIED="1522939999257" TEXT="Antwort...">
<icon BUILTIN="info"/>
<node CREATED="1522940008276" ID="ID_1983743908" MODIFIED="1522940013511" TEXT="&#xfc;ber den ViewLocator"/>
<node CREATED="1522940014267" ID="ID_707843808" MODIFIED="1522940023254" TEXT="der bietet eine Zugriffs-Funktion pro Type"/>
<node CREATED="1522940023865" ID="ID_1335645863" MODIFIED="1522940040003" TEXT="und was diese macht, ist per ViewSpec-DSL definiert"/>
</node>
<node CREATED="1504457221429" ID="ID_7304477" MODIFIED="1518487921063" TEXT="Problem: Kopplung">
<node CREATED="1504457233178" ID="ID_999730208" MODIFIED="1518487921063" TEXT="ViewLocator an PanelLocator"/>
<node CREATED="1504457251520" ID="ID_799090381" MODIFIED="1518487921063" TEXT="leaks out into the Strategy"/>
</node>
<node CREATED="1504458201898" FOLDED="true" ID="ID_486407658" MODIFIED="1518487921063" TEXT="L&#xf6;sungen">
<node CREATED="1504458207889" ID="ID_287209177" MODIFIED="1522939882022" TEXT="lokal definierte Zugriffsfunktionen">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1522939868519" ID="ID_574994725" MODIFIED="1522939885468" TEXT="in eine DSL eingebettet">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1504458229743" ID="ID_1174387567" MODIFIED="1522939863979" TEXT="ENUM und lokaler Switch">
<icon BUILTIN="button_cancel"/>
</node>
</node>
<node CREATED="1504458255403" FOLDED="true" HGAP="41" ID="ID_246632028" MODIFIED="1576282358127" TEXT="F&#xe4;lle" VSHIFT="9">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...was f&#252;r verschiedene Arten von Zugriff
    </p>
    <p>
      sind denkbar und m&#252;ssen in der Strategy konfigurierbar sein?
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
<node CREATED="1504458488876" ID="ID_800753364" MODIFIED="1518487921063" TEXT="Ort">
<node CREATED="1504458802042" ID="ID_300193794" MODIFIED="1518487921063" TEXT="expliziter Ort (global)"/>
<node CREATED="1504458809745" ID="ID_142530354" MODIFIED="1518487921063" TEXT="bestimtes Panel (pro Fenster)"/>
<node CREATED="1504458863986" ID="ID_1423034932" MODIFIED="1518487921063" TEXT="aktuelle Gruppe"/>
</node>
<node CREATED="1504458495043" ID="ID_1488124165" MODIFIED="1518487921063" TEXT="Zahl">
<node CREATED="1504458543877" ID="ID_1146489911" MODIFIED="1518487921063" TEXT="nur einer">
<node CREATED="1504458550796" ID="ID_193440091" MODIFIED="1518487921063" TEXT="global (alle Fenster)"/>
<node CREATED="1504458558307" ID="ID_1626706609" MODIFIED="1518487921063" TEXT="pro Fenster"/>
</node>
<node CREATED="1504458603213" ID="ID_1266508735" MODIFIED="1518487921063" TEXT="viele">
<node CREATED="1504458606052" ID="ID_1545836853" MODIFIED="1518487921063" TEXT="begrenzte Zahl">
<node CREATED="1504458697520" ID="ID_1784843227" MODIFIED="1518487921063" TEXT="immer pro Gruppe"/>
<node CREATED="1504479134100" ID="ID_631162736" MODIFIED="1518487921063" TEXT="Limit an die Gruppe gebunden">
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1504458702640" ID="ID_943045771" MODIFIED="1518487921063" TEXT="unlimitiert"/>
</node>
</node>
<node CREATED="1504459120824" ID="ID_342577636" MODIFIED="1518487921063" TEXT="UI-Koordinaten">
<arrowlink COLOR="#535189" DESTINATION="ID_1448696607" ENDARROW="Default" ENDINCLINATION="-391;179;" ID="Arrow_ID_1194909838" STARTARROW="None" STARTINCLINATION="691;-200;"/>
<node CREATED="1504479456449" ID="ID_959239388" MODIFIED="1518487921063">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      m&#246;gliche
    </p>
    <p>
      Komponenten
    </p>
  </body>
</html></richcontent>
<node CREATED="1504462874221" ID="ID_437025243" MODIFIED="1518487921063" TEXT="[optional] top-level Fenster"/>
<node CREATED="1504462888107" ID="ID_121049221" MODIFIED="1518487921063" TEXT="[optional] Perspektive"/>
<node CREATED="1504462891394" ID="ID_1138854843" MODIFIED="1518487921063" TEXT="Panel"/>
<node CREATED="1504463020913" ID="ID_808284638" MODIFIED="1518487921063" TEXT="[optional] Gruppe"/>
<node CREATED="1504463028384" ID="ID_1928250888" MODIFIED="1518487921063" TEXT="View-ID"/>
</node>
<node CREATED="1504479185405" HGAP="50" ID="ID_50865654" MODIFIED="1575131533888" TEXT="abgeleitet aus Fokus-Koordinaten" VSHIFT="15">
<arrowlink COLOR="#a9a5cd" DESTINATION="ID_150523428" ENDARROW="Default" ENDINCLINATION="1417;-3062;" ID="Arrow_ID_1485937133" STARTARROW="None" STARTINCLINATION="1030;-46;"/>
<icon BUILTIN="info"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1506175078553" FOLDED="true" HGAP="97" ID="ID_1154523344" MODIFIED="1561827464775" TEXT="Implementierung" VSHIFT="29">
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1506262853956" HGAP="-86" ID="ID_652224508" MODIFIED="1679362063135" TEXT="Design-Fragen" VSHIFT="-3">
<icon BUILTIN="hourglass"/>
<node CREATED="1506262880944" ID="ID_1951800292" MODIFIED="1518487921063" TEXT="Mutability">
<node CREATED="1506262901774" ID="ID_732818888" MODIFIED="1518487921063" TEXT="immutable == gut?">
<icon BUILTIN="help"/>
<node CREATED="1506262939753" ID="ID_1096602096" MODIFIED="1518487921063" TEXT="sind 8 Zeiger &quot;schwergewichtig&quot;?"/>
<node CREATED="1506262985930" ID="ID_1947259139" MODIFIED="1518487921063" TEXT="was konkret will man verhindern?">
<icon BUILTIN="help"/>
</node>
</node>
<node CREATED="1506263520707" ID="ID_1446434847" MODIFIED="1518487921063" TEXT="wozu &#xc4;ndern?">
<node CREATED="1506263529922" ID="ID_1129266280" MODIFIED="1518487921063" TEXT="Definition zusammenstellen"/>
<node CREATED="1506263537721" ID="ID_1617312199" MODIFIED="1518487921063" TEXT="Pfad-Navigation">
<arrowlink COLOR="#726f7d" DESTINATION="ID_1755700140" ENDARROW="Default" ENDINCLINATION="15;-43;" ID="Arrow_ID_1791940371" STARTARROW="None" STARTINCLINATION="-110;6;"/>
</node>
</node>
</node>
<node CREATED="1506263379070" HGAP="34" ID="ID_1755700140" MODIFIED="1518487921063" VSHIFT="28">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      wie funktioniert
    </p>
    <p>
      Pfad-Navigation?
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#726f7d" DESTINATION="ID_1755700140" ENDARROW="Default" ENDINCLINATION="15;-43;" ID="Arrow_ID_1791940371" SOURCE="ID_1617312199" STARTARROW="None" STARTINCLINATION="-110;6;"/>
<icon BUILTIN="help"/>
<node CREATED="1506263421552" ID="ID_1410083594" MODIFIED="1518487921063" TEXT="Idee: Wrapper">
<node CREATED="1506263427287" ID="ID_190906360" MODIFIED="1518487921063" TEXT="&#xbb;path navigator&#xab;"/>
<node CREATED="1506263442430" ID="ID_126065663" MODIFIED="1518487921063" TEXT="friend oder Subklasse"/>
</node>
<node CREATED="1506263465075" ID="ID_1873282209" MODIFIED="1518487921063" TEXT="Problem: Kontext">
<node CREATED="1506263472658" ID="ID_557885064" MODIFIED="1518487921063" TEXT="Navigation ist nicht beliebig"/>
<node CREATED="1506263486160" ID="ID_643453258" MODIFIED="1518487921063" TEXT="mu&#xdf; f&#xfc;r jeden Schritt Kontext abfragen"/>
<node CREATED="1507923810917" ID="ID_1300680611" MODIFIED="1518487921063" TEXT="Delegations-API">
<node CREATED="1507923825938" ID="ID_248121468" MODIFIED="1518487921063" TEXT="Kontext-Anfragen"/>
<node CREATED="1507923832289" ID="ID_1141152218" MODIFIED="1518487921063" TEXT="vom konkreten UI implementiert"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1507939232775" FOLDED="true" ID="ID_314635923" MODIFIED="1518487921063" TEXT="Problem: Binden auf den Kontext">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1507939270618" ID="ID_1505797299" MODIFIED="1518487921063" TEXT="abstrakte Struktur -&gt; konkrete Widgets"/>
<node CREATED="1507939279761" ID="ID_250590373" MODIFIED="1518487921063" TEXT="keine nat&#xfc;rliche Introspektion gegeben"/>
<node CREATED="1507939312860" HGAP="78" ID="ID_444535530" MODIFIED="1576282358127" TEXT="Analyse" VSHIFT="7">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      habe diese Analyse 2017/2018 ein St&#252;ck weit vorangetrieben.
    </p>
    <p>
      Ergebnis war die Schaffung von UI-Koordinaten und die ViewSpec-DSL
    </p>
    <p>
      
    </p>
    <p>
      Damit ist das Thema aber bei Weitem noch nicht ausgesch&#246;pft,
    </p>
    <p>
      jedoch gen&#252;gend aufgeschlossen, um die konkrete Implementierung fortzusetzen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="hourglass"/>
<node CREATED="1507939326250" ID="ID_1890759249" MODIFIED="1518487921063" TEXT="Aufgaben">
<node CREATED="1507939400248" ID="ID_1464418318" MODIFIED="1518487921063" TEXT="einem Pfad folgen">
<arrowlink COLOR="#7d375a" DESTINATION="ID_721718509" ENDARROW="Default" ENDINCLINATION="166;0;" ID="Arrow_ID_1170204247" STARTARROW="None" STARTINCLINATION="96;-13;"/>
<arrowlink COLOR="#7d375a" DESTINATION="ID_235303811" ENDARROW="Default" ENDINCLINATION="155;0;" ID="Arrow_ID_1900802893" STARTARROW="None" STARTINCLINATION="155;0;"/>
</node>
<node CREATED="1507939407943" ID="ID_721718509" MODIFIED="1518487921063" TEXT="eine Position konstituieren">
<linktarget COLOR="#7d375a" DESTINATION="ID_721718509" ENDARROW="Default" ENDINCLINATION="166;0;" ID="Arrow_ID_1170204247" SOURCE="ID_1464418318" STARTARROW="None" STARTINCLINATION="96;-13;"/>
</node>
<node CREATED="1507939427445" ID="ID_235303811" MODIFIED="1518487921064" TEXT="Kinder finden">
<linktarget COLOR="#7d375a" DESTINATION="ID_235303811" ENDARROW="Default" ENDINCLINATION="155;0;" ID="Arrow_ID_1900802893" SOURCE="ID_1464418318" STARTARROW="None" STARTINCLINATION="155;0;"/>
</node>
<node CREATED="1507939433916" ID="ID_1018540556" MODIFIED="1533608413556" TEXT="Kinder erzeugen">
<icon BUILTIN="button_cancel"/>
<node CREATED="1508109233808" ID="ID_816587529" MODIFIED="1518487921064" TEXT="erfordert gemeinsames Interface"/>
<node CREATED="1508109252574" ID="ID_1185099286" MODIFIED="1518487921064">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      betrachte ich als <i>ungesund</i>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="ksmiletris"/>
</node>
</node>
</node>
<node CREATED="1507939846405" ID="ID_789410975" MODIFIED="1518487921064" TEXT="konkrete Probleme">
<node CREATED="1507939859100" ID="ID_860523933" MODIFIED="1533608413557" TEXT="wer bin &quot;ich&quot;?">
<icon BUILTIN="help"/>
<node CREATED="1507939956606" ID="ID_406843936" MODIFIED="1561827464791" TEXT="was ist gegeben?">
<icon BUILTIN="help"/>
<node CREATED="1508017024459" ID="ID_604601896" MODIFIED="1518487921064" TEXT="stets ein kompletter Zugangs-Pfad">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1507939970349" ID="ID_714349147" MODIFIED="1561827464791" TEXT="in welcher Form ist es gegeben?">
<icon BUILTIN="help"/>
<node CREATED="1508016915761" ID="ID_1202508530" MODIFIED="1518487921064" TEXT="konkretes Objekt"/>
<node CREATED="1508016919857" ID="ID_437710115" MODIFIED="1518487921064" TEXT="UI-Koordinaten per Lookup"/>
</node>
</node>
<node CREATED="1507939869906" ID="ID_223198097" MODIFIED="1533608413572" STYLE="fork" TEXT="wo bin &quot;ich&quot;?">
<icon BUILTIN="help"/>
<node CREATED="1507940000057" ID="ID_1526112208" MODIFIED="1518487921064">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      eine <i>reverse resolution</i>
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1508016549578" ID="ID_526260275" MODIFIED="1518487921064">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <b>zentrales</b>&#160;Problem
    </p>
  </body>
</html></richcontent>
<font NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1508016569551" ID="ID_250033067" MODIFIED="1561827464791" TEXT="zwei L&#xf6;sungsans&#xe4;tze">
<node CREATED="1508016575359" FOLDED="true" ID="ID_1494737189" MODIFIED="1561827483825" TEXT="Ort ist bekannt">
<node CREATED="1508016623480" ID="ID_66450805" MODIFIED="1518487921064" TEXT="Element speichert seine UICoord"/>
<node CREATED="1508016658684" ID="ID_116864327" MODIFIED="1518487921064" TEXT="globaler Index beim Erstellen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...der beim Erstellen des Elements
    </p>
    <p>
      mit den zu diesem Zeitpunkt bekannten UI-Korrdinaten best&#252;ckt wird
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1508016602867" FOLDED="true" ID="ID_1861393889" MODIFIED="1561827483825" TEXT="Ort kann entdeckt werden">
<node CREATED="1508016710621" ID="ID_194767769" MODIFIED="1518487921064" TEXT="Element kennt seinen Vater"/>
<node CREATED="1508016741377" ID="ID_1796475231" MODIFIED="1518487921064" TEXT="(GObject) Introspektion"/>
</node>
</node>
</node>
<node CREATED="1507939914076" ID="ID_109277608" MODIFIED="1533608413577" TEXT="was gilt als &quot;Kind&quot;?">
<icon BUILTIN="help"/>
<node CREATED="1507940046234" ID="ID_577613088" MODIFIED="1561827464792">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      auf welche Eigenschaften
    </p>
    <p>
      st&#252;tzen wir uns?
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="help"/>
<node CREATED="1508017106368" FOLDED="true" ID="ID_896661508" MODIFIED="1561827483825" TEXT="UI-Element">
<icon BUILTIN="button_cancel"/>
<node CREATED="1508017111959" ID="ID_484448099" MODIFIED="1518487921064" TEXT="nein"/>
<node CREATED="1508017121582" ID="ID_1052512660" MODIFIED="1518487921064" TEXT="denn: Fenster, Panels,..."/>
</node>
<node CREATED="1508017134709" FOLDED="true" ID="ID_881948528" MODIFIED="1561827483826" TEXT="Navigierbarkeit">
<node CREATED="1508017225544" ID="ID_1003735159" MODIFIED="1518487921064" TEXT="abstrakt">
<icon BUILTIN="help"/>
</node>
<node CREATED="1508017228080" ID="ID_1185322365" MODIFIED="1518487921064" TEXT="per Interface">
<icon BUILTIN="help"/>
</node>
</node>
<node CREATED="1508017200476" FOLDED="true" ID="ID_1519289713" MODIFIED="1561827483826" TEXT="gar keine">
<node CREATED="1508017203419" ID="ID_1168589916" MODIFIED="1518487921064" TEXT="generische Programmierung!">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node CREATED="1508017409096" ID="ID_1088456751" MODIFIED="1561827464793" TEXT="was ist hier ein &quot;Element&quot;?">
<icon BUILTIN="help"/>
<node CREATED="1508017614565" ID="ID_825986555" MODIFIED="1518487921064" TEXT="bleibt abstrakt">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1508017621148" ID="ID_945496558" MODIFIED="1518487921064" TEXT="man kann etwas damit machen"/>
</node>
</node>
<node CREATED="1507939927035" ID="ID_461225915" MODIFIED="1533608413581">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      wer bestimmt,
    </p>
    <p>
      was &quot;Kind&quot; ist?
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="help"/>
<node CREATED="1507940112890" ID="ID_1195951242" MODIFIED="1518487921064" TEXT="der Bedarf??"/>
<node CREATED="1507940120425" ID="ID_338582582" MODIFIED="1518487921064" TEXT="der Erzeuger??"/>
</node>
</node>
<node CREATED="1508016417180" ID="ID_1611707918" MODIFIED="1518487921064" TEXT="use cases">
<node CREATED="1508016430306" ID="ID_192114274" MODIFIED="1533608413582" TEXT="ViewSpec">
<node CREATED="1508018634766" ID="ID_749934346" MODIFIED="1518487921064" TEXT="View allozieren"/>
<node CREATED="1508018640309" ID="ID_1078510800" MODIFIED="1518487921064" TEXT="View-Instanz per Gattung"/>
</node>
<node CREATED="1508016469685" ID="ID_115506070" MODIFIED="1533608413582" TEXT="change WorkSite">
<node CREATED="1508018713267" ID="ID_778872885" MODIFIED="1518487921064" TEXT="WorkSite verlagern / mitf&#xfc;hren"/>
<node CREATED="1508018720562" ID="ID_187314256" MODIFIED="1518487921064" TEXT="zu anderer WorkSite gehen"/>
</node>
</node>
</node>
<node CREATED="1508020233586" HGAP="41" ID="ID_1791370781" MODIFIED="1518487921064" TEXT="Fazit" VSHIFT="16">
<node CREATED="1508020253223" ID="ID_1259200744" MODIFIED="1518487921064" TEXT="Problem zerlegen">
<node CREATED="1508020258670" ID="ID_95147852" MODIFIED="1518487921064" TEXT="reverse resolution"/>
<node CREATED="1508020270709" ID="ID_1200125105" MODIFIED="1533608413583" TEXT="Kinder finden">
<node CREATED="1508020280683" ID="ID_646056653" MODIFIED="1518487921064" TEXT="fest verdrahtet f&#xfc;r top-level"/>
<node CREATED="1508020286443" ID="ID_515525549" MODIFIED="1518487921064" TEXT="Interface f&#xfc;r lokal"/>
</node>
</node>
<node CREATED="1508020411538" ID="ID_544888156" MODIFIED="1518487921064" TEXT="Navigation">
<node CREATED="1508020417633" ID="ID_1963411977" MODIFIED="1518487921064" TEXT="arbeitet nur auf UI-Koordinaten"/>
<node CREATED="1508020433719" ID="ID_1645971492" MODIFIED="1518487921064" TEXT="die dahinterliegenden Strukturen bleiben opaque"/>
<node CREATED="1508020450445" ID="ID_1822545447" MODIFIED="1533608413584" TEXT="mit dem Ergebnis">
<node CREATED="1508020465443" ID="ID_1921466133" MODIFIED="1518487921064" TEXT="kann man dann einen View erzeugen"/>
<node CREATED="1508020489583" ID="ID_1140824323" MODIFIED="1518487921064" TEXT="oder ein Element (bekannten Typs) bekommen"/>
<node CREATED="1508020551095" ID="ID_798942495" MODIFIED="1518487921064">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      oder den <b>Spot</b>&#160;verschieben
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1508020731399" HGAP="9" ID="ID_1043748115" MODIFIED="1518487921064" VSHIFT="49">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      verbleibende
    </p>
    <p>
      Probleme
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1508020782977" ID="ID_825574354" MODIFIED="1518487921064" TEXT="konkretes Element -&gt; WorkSite"/>
<node CREATED="1508020790888" ID="ID_774784602" MODIFIED="1518487921064" TEXT="&#xbb;reveal yourself&#xab;"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1506181068556" ID="ID_749871444" MODIFIED="1561827464797" TEXT="UICoord">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1506181721910" ID="ID_1680105436" MODIFIED="1515555740881" TEXT="Folge von Symbolen">
<icon BUILTIN="button_ok"/>
<node CREATED="1506263953722" ID="ID_1293486815" MODIFIED="1506831482410" TEXT="Basis-Abstraktion">
<icon BUILTIN="info"/>
</node>
<node COLOR="#338800" CREATED="1506263960121" ID="ID_381874562" MODIFIED="1506831498373" TEXT="PathArray">
<icon BUILTIN="button_ok"/>
<node CREATED="1506301404246" ID="ID_458341734" MODIFIED="1506301409177" TEXT="Impl-Layout">
<node CREATED="1506301410525" ID="ID_176098837" MODIFIED="1506301414840" TEXT="Rekursiv"/>
<node CREATED="1506301415548" ID="ID_212757263" MODIFIED="1506301419912" TEXT="chunk-wise"/>
</node>
<node CREATED="1506301421612" FOLDED="true" ID="ID_572376877" MODIFIED="1506301426568" TEXT="Meta-Problem">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1506301428698" ID="ID_1290675306" MODIFIED="1533608413585" TEXT="Parameter-Pack zerlegen">
<icon BUILTIN="button_ok"/>
<node CREATED="1506301435826" ID="ID_1852582857" MODIFIED="1506301447508" TEXT="ersten Teil in ein std::array"/>
<node CREATED="1506301448288" ID="ID_1083459556" MODIFIED="1506301457058" TEXT="zweiten Teil rekursiv..."/>
</node>
<node CREATED="1506301468830" ID="ID_291609200" MODIFIED="1533608413586" TEXT="L&#xf6;sungen">
<icon BUILTIN="button_ok"/>
<node CREATED="1506301476836" ID="ID_1339982909" MODIFIED="1561827464797" TEXT="Stackoverflow">
<icon BUILTIN="idea"/>
<node CREATED="1506301629128" ID="ID_1265747852" LINK="https://stackoverflow.com/questions/14261183/how-to-make-generic-computations-over-heterogeneous-argument-packs-of-a-variadic" MODIFIED="1506301640408" TEXT="Param-Pack-Library"/>
<node CREATED="1506301658388" ID="ID_284261237" LINK="https://stackoverflow.com/users/1932150/andy-prowl" MODIFIED="1506301669997" TEXT="von Andy Prowl"/>
<node CREATED="1506302060966" ID="ID_37516099" LINK="https://stackoverflow.com/questions/16821654/splitting-argpack-in-half/16980937#16980937" MODIFIED="1506302137771" TEXT="einfache L&#xf6;sung: split Pack in half"/>
<node CREATED="1506302079276" ID="ID_539701222" LINK="https://stackoverflow.com/users/2361316/joe" MODIFIED="1506302087043" TEXT="von User Joe"/>
<node CREATED="1506303631812" ID="ID_1461128808" LINK="https://stackoverflow.com/questions/5484930/split-variadic-template-arguments/20814644#20814644" MODIFIED="1506303806992" TEXT="direkt initializer_list verwenden"/>
<node CREATED="1506303644395" ID="ID_1907242246" LINK="https://stackoverflow.com/users/2684539/jarod42" MODIFIED="1506303675990" TEXT="von user Jarod42 12/2013"/>
</node>
<node CREATED="1506301674594" ID="ID_573792630" MODIFIED="1561827464798" TEXT="Boost.fusion verwenden">
<icon BUILTIN="button_cancel"/>
<node CREATED="1506301681345" ID="ID_1364627462" MODIFIED="1506301687084" TEXT="Param-Pack in Tupel"/>
<node CREATED="1506301687720" ID="ID_1178221359" MODIFIED="1506301696419" TEXT="Tupel mit Boost.fustion manipulieren"/>
<node CREATED="1506301696911" FOLDED="true" ID="ID_1626810109" MODIFIED="1561827483826" TEXT="Compiler optimiert Tupel weg">
<node CREATED="1506301725107" ID="ID_1409951481" MODIFIED="1506301731668" TEXT="Tupel von Referenzen"/>
<node CREATED="1506301713285" ID="ID_703461640" MODIFIED="1506301719136" TEXT="GCC und Clang"/>
<node CREATED="1506301719660" ID="ID_1581101665" MODIFIED="1506301722999" TEXT="in Release-Builds"/>
</node>
</node>
<node CREATED="1506301773341" ID="ID_515001314" MODIFIED="1561827464799" TEXT="Entscheidung">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1506301780644" FOLDED="true" ID="ID_143930610" MODIFIED="1561827483826" TEXT="Boost.fustion abgelehnt">
<icon BUILTIN="yes"/>
<node CREATED="1506301789546" ID="ID_322419894" MODIFIED="1506301792558" TEXT="verwendet MPL"/>
<node CREATED="1506301793130" ID="ID_1764621800" MODIFIED="1506301797158" TEXT="verwendet Boost.tuple"/>
<node CREATED="1506301797721" ID="ID_1580459971" MODIFIED="1506301801941" TEXT="generell undurchsichtig"/>
<node CREATED="1506301802865" ID="ID_1127036077" MODIFIED="1506301816915" TEXT="erfordert hohes Abstraktionsniveau"/>
</node>
<node COLOR="#338800" CREATED="1506301834493" FOLDED="true" ID="ID_52512330" MODIFIED="1561827483826" TEXT="selber schreiben anhand Beispiel">
<icon BUILTIN="button_ok"/>
<node CREATED="1506723689710" ID="ID_454128552" MODIFIED="1506723762301" TEXT="Mini-Framework">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1506723694704" ID="ID_649123940" MODIFIED="1506723759877" TEXT="meta::pickArg">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1506723699774" ID="ID_748812841" MODIFIED="1506723757331" TEXT="meta::pickInit">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1506723746120" ID="ID_154958112" MODIFIED="1506723790105" TEXT="unit-test dazu">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      VariadicArgumentPicker_test
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1506831455771" ID="ID_1302634711" MODIFIED="1506831476337" TEXT="Normalisierung">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1506831461738" ID="ID_1629539998" MODIFIED="1506831477640" TEXT="Unit-Test der Grenzf&#xe4;lle">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1506887647152" ID="ID_1069521621" MODIFIED="1506887654873" TEXT="String representation">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1506906671372" ID="ID_458222870" MODIFIED="1506919618620" TEXT="Builder">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1506906657270" ID="ID_1234040290" MODIFIED="1506906687339" TEXT="builder functions">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1506906664501" ID="ID_1257993809" MODIFIED="1506919612697" TEXT="mutator functions">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1506181727069" ID="ID_467120404" MODIFIED="1506984539619" TEXT="lokale Pr&#xe4;dikate">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1506181744939" ID="ID_1731446951" MODIFIED="1506984286100" TEXT="present">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1506181747466" ID="ID_1522805946" MODIFIED="1506984288444" TEXT="wildcard">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1506181783173" ID="ID_306479120" MODIFIED="1506984294555" TEXT="explicit">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1506984533458" ID="ID_373226509" MODIFIED="1506984536986" TEXT="complete">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1506181770783" ID="ID_295392903" MODIFIED="1506984530019" TEXT="incomplete">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1506181073556" ID="ID_1878859300" MODIFIED="1561827464810" TEXT="Resolver">
<linktarget COLOR="#65759f" DESTINATION="ID_1878859300" ENDARROW="Default" ENDINCLINATION="-439;-594;" ID="Arrow_ID_68163828" SOURCE="ID_610939878" STARTARROW="None" STARTINCLINATION="307;351;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1506181794428" ID="ID_333406817" MODIFIED="1518487921064" TEXT="Setup">
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1506181800067" ID="ID_196802981" MODIFIED="1518487921065" TEXT="Wiring">
<icon BUILTIN="hourglass"/>
<node CREATED="1515209567856" ID="ID_1008245035" MODIFIED="1518487921065" TEXT="warten auf reales UI..."/>
<node COLOR="#338800" CREATED="1515891216245" ID="ID_1439162441" MODIFIED="1518487921065" TEXT="Verh&#xe4;ltnis von ViewLocator und Navigator kl&#xe4;ren">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1515891241785" ID="ID_1731852581" MODIFIED="1522939281894" TEXT="Komponenten-Zugriffe in ViewLocator">
<icon BUILTIN="hourglass"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1515891256616" ID="ID_1103868933" MODIFIED="1522939298316" TEXT="Baum-Abstraktion im Navigator">
<icon BUILTIN="hourglass"/>
</node>
<node COLOR="#338800" CREATED="1517508494036" ID="ID_490078637" MODIFIED="1522937686153" TEXT="LocationSolver integrieren">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1506181802699" ID="ID_582767851" MODIFIED="1518487921065" TEXT="Test-Setup">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1508537003861" FOLDED="true" ID="ID_846599209" MODIFIED="1531584013547" TEXT="Semantik">
<icon BUILTIN="button_ok"/>
<node CREATED="1508537010868" ID="ID_484491629" MODIFIED="1508537050161">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      welche Operationen
    </p>
    <p>
      sind wirklich notwendig
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="help"/>
</node>
<node CREATED="1508537057661" ID="ID_1582824657" MODIFIED="1561827464811" TEXT="was hei&#xdf;t &quot;covern&quot;?">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1508538092061" ID="ID_731131821" MODIFIED="1508538096663" TEXT="komplett/partiell?"/>
<node CREATED="1508538108338" ID="ID_1403158284" MODIFIED="1508625730742" TEXT="so gut wie m&#xf6;glich">
<icon BUILTIN="forward"/>
<node CREATED="1508625742468" ID="ID_511236910" MODIFIED="1508625745864" TEXT="kann partiell sein"/>
<node CREATED="1508625746667" ID="ID_1562464707" MODIFIED="1508625757806" TEXT="endet aber stets mit einem expliziten Element"/>
</node>
<node CREATED="1508538113098" ID="ID_415701605" MODIFIED="1508625772283" TEXT="eine Covfefe ermitteln">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1509323422183" FOLDED="true" ID="ID_1262448971" MODIFIED="1561827464815" TEXT="feine Punkte...">
<icon BUILTIN="yes"/>
<node CREATED="1509323432989" ID="ID_1373680102" MODIFIED="1509323467821" TEXT="per default nur bei expliziten Pfaden">
<node CREATED="1509323478248" ID="ID_101102957" MODIFIED="1509323487630" TEXT="vollst&#xe4;ndig (f&#xe4;ngt mit Window an)"/>
<node CREATED="1509323473576" ID="ID_193021518" MODIFIED="1509323477588" TEXT="keine Wildcards"/>
<node CREATED="1509323560821" ID="ID_294426477" MODIFIED="1509323871911" TEXT="in dem Fall ist anchern und covern &#xe4;quivalent">
<icon BUILTIN="idea"/>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1509323573047" ID="ID_263907664" MODIFIED="1529076269308" TEXT="covern: meint total">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1509323496205" ID="ID_231710474" MODIFIED="1509323516558" TEXT="m&#xf6;glich">
<node CREATED="1509323517362" ID="ID_1758863955" MODIFIED="1509323518982" TEXT="ankern"/>
<node CREATED="1509323520018" ID="ID_895622034" MODIFIED="1533608413593" TEXT="covern">
<node CREATED="1514747986164" ID="ID_825407732" MODIFIED="1514747988957" TEXT="total"/>
<node CREATED="1514747959935" ID="ID_1468731328" MODIFIED="1514747964178" TEXT="partiell"/>
<node CREATED="1514747965047" ID="ID_662883062" MODIFIED="1514747969250" TEXT="maximal partiell"/>
<node CREATED="1514747970239" ID="ID_1657718025" MODIFIED="1514747982281" TEXT="partiell lokal maximal"/>
</node>
<node CREATED="1509323523193" ID="ID_1088301010" MODIFIED="1533608413593" TEXT="ist nicht das gleiche">
<icon BUILTIN="idea"/>
<node CREATED="1509323532816" ID="ID_1206148872" MODIFIED="1576282358126" TEXT="covern kann scheitern">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...denn wir verlangen, da&#223; wir nach dem Interpolieren &#252;ber eine L&#252;cke
    </p>
    <p>
      immer noch <i>mindestens ein explizt gegebenes</i>&#160;Element im Pfad haben,
    </p>
    <p>
      welches auch von der UI-Topologie best&#228;tigt wird.
    </p>
    <p>
      Grund: wir wollen vermeiden, abschlie&#223;ende Wildcards <i>blo&#223; irgendwie</i>&#160;zu binden
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1509323537479" ID="ID_1638614197" MODIFIED="1576282358126" TEXT="und trotzedm einen Anker finden">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      n&#228;mlich wenn der Pfad mit einem explizit gegebenen Pr&#228;fix anf&#228;ngt,
    </p>
    <p>
      dann aber Wildcards enth&#228;lt, die nicht nach den versch&#228;rften Bedingungen gecovert werden k&#246;nnen.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1509323760466" ID="ID_446881733" MODIFIED="1576282358125" TEXT="oder eben doch komplett im Widerspruch zum UI stehen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      beispielsweise
    </p>
    <ul>
      <li>
        wenn schon das Pr&#228;fix nicht pa&#223;t
      </li>
      <li>
        wenn das erste Element nach dem Gap nirgends im realen UI in der tiefe existiert
      </li>
      <li>
        wenn mehr Wildcards da sind, als restliche Tiefe zum Matchen
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1514748024287" ID="ID_85844536" MODIFIED="1533608413595" TEXT="ist partielle Covfefe sinnvoll">
<icon BUILTIN="help"/>
<node CREATED="1514748049396" ID="ID_844123386" MODIFIED="1514748079005" TEXT="sch&#xf6;n/herausfordernd zu implementieren">
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1514748059827" ID="ID_494930397" MODIFIED="1514748074221" TEXT="aber: ist das jemals eine praktische Fragestellung?">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1515209459887" ID="ID_1673897385" MODIFIED="1515209521230">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      letzten Endes war es nahezu gleich schwer zu implementieren,
    </p>
    <p>
      aber von der Aufruf-Logik her einfacher, stets nach partieller zu suchen
    </p>
    <p>
      und totale Coverage nur nachtr&#228;glich durch L&#228;ngenvergleich festzustellen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node CREATED="1514748348924" ID="ID_1348653545" MODIFIED="1514748355135" TEXT="zustandsbehafted">
<node CREATED="1514748356627" ID="ID_1208345503" MODIFIED="1514748364398" TEXT="Resolver h&#xe4;lt letzte Coverage"/>
<node CREATED="1514748365274" ID="ID_576090166" MODIFIED="1514748371885" TEXT="diese kann partiell oder total sein"/>
<node COLOR="#990000" CREATED="1514748372690" ID="ID_1144080891" MODIFIED="1515209444769" TEXT="es kann mehrere L&#xf6;sungen geben">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1508537087378" ID="ID_548549576" MODIFIED="1561827464817" TEXT="Wildcards interpolieren">
<icon BUILTIN="button_ok"/>
<node CREATED="1514328942052" ID="ID_638910432" MODIFIED="1514328949331" TEXT="&#xbb;pathResolution&#xab;"/>
<node CREATED="1514328906513" ID="ID_627709808" MODIFIED="1514328914500" TEXT="Matching-Algo mit Backtracking"/>
<node CREATED="1514328993397" ID="ID_593456636" MODIFIED="1514329001856" TEXT="Bedeutung">
<node CREATED="1514329005195" ID="ID_1796584977" MODIFIED="1533608413596" TEXT="firstWindow">
<node CREATED="1514329012442" ID="ID_1189771196" MODIFIED="1514329021597" TEXT="das formal erste Fenster"/>
<node CREATED="1514329025856" ID="ID_1596613154" MODIFIED="1514329034363" TEXT="typischerweise das zuerst ge&#xf6;ffnete"/>
</node>
<node CREATED="1514329036159" ID="ID_1686905211" MODIFIED="1533608413597" TEXT="currentWindow">
<node CREATED="1514329041046" ID="ID_880415056" MODIFIED="1514329055544" TEXT="das Fenster mit Fokus"/>
<node CREATED="1514329066515" ID="ID_1719764918" MODIFIED="1514329080026">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      wo der <i>Spot</i>&#160;ist
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1514329081745" ID="ID_1158924252" MODIFIED="1533608413598" TEXT="&apos;*&apos;">
<node CREATED="1514329106294" ID="ID_1601049546" MODIFIED="1514329116032" TEXT="innere Elemente in einer UICorrd-spec"/>
<node CREATED="1514329119084" ID="ID_898086495" MODIFIED="1514329219306" TEXT="match gegen existierende UI-Elemente..."/>
<node CREATED="1514329219990" ID="ID_490418392" MODIFIED="1514329226489" TEXT="so da&#xdf; sich maximale Coverage ergibt"/>
</node>
</node>
</node>
<node CREATED="1508538286962" ID="ID_500149908" MODIFIED="1508538294950" TEXT="eine gemeinsame Basis-Operation">
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#338800" CREATED="1508539139418" FOLDED="true" ID="ID_1665843572" MODIFIED="1518487921065" TEXT="Operationen">
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1508540055241" ID="ID_565736574" MODIFIED="1522937702499" TEXT="Konventionen">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node CREATED="1508540093004" ID="ID_277252077" MODIFIED="1576282358124" TEXT="Kinder-IDs sind eindeutig">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Innerhalb einer Kinder-Folge gibt es keine duplikaten IDs.
    </p>
    <p>
      Das hei&#223;t, es gen&#252;gt, den ersten Match zu nehmen.
    </p>
    <p>
      <b>Warnung</b>: diese Konvention ist besonders t&#252;ckisch,
    </p>
    <p>
      denn eine Verletzung kann weithin unbemerkt bleiben
    </p>
  </body>
</html></richcontent>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1508540106274" ID="ID_1727085652" MODIFIED="1576282358124" TEXT="ID-Literale existeren dauerhaft">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      der Resolver macht kein Memory-Management,
    </p>
    <p>
      sondern speichert einfach Zeiger.
    </p>
    <p>
      Es wird erwartet, da&#223; diese g&#252;ltig bleiben,
    </p>
    <p>
      solange irgend jemand auf den Resolver oder den
    </p>
    <p>
      daraus resultierenden Pfad zugreift
    </p>
  </body>
</html></richcontent>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1508540153564" ID="ID_165161640" MODIFIED="1576282358123" TEXT="UI stabil w&#xe4;hrend der Auswertung">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      die Topologie, aber auch der Fokus-Zustand
    </p>
    <p>
      &#228;ndern sich nicht w&#228;hrend der <i>aktiven Lebensdauer</i>&#160;eines Resolvers
    </p>
    <p>
      Hierbei ist <i>aktive Lebensdauer</i>&#160;wie bei einem Iterator zu verstehen.
    </p>
  </body>
</html></richcontent>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1508540198326" ID="ID_720643889" MODIFIED="1576282358123" TEXT="Konventionen werden nicht verifiziert">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      aber es gibt Konsistenzchecks + Exceptions
    </p>
    <p>
      wenn die Auswertung aufgrund einer gebrochenen Konvention entgleist
    </p>
  </body>
</html></richcontent>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#338800" CREATED="1508539143849" ID="ID_1632791283" MODIFIED="1561827464818" TEXT="path-resolution">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1508539152568" ID="ID_153711822" MODIFIED="1515120963483" TEXT="Beschreibung">
<icon BUILTIN="button_ok"/>
<node CREATED="1508539226014" ID="ID_1714773115" MODIFIED="1576282358122" TEXT="informell...">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Tiefensuche &#252;ber die reale UI-Topologie
    </p>
    <p>
      Ziel ist, den Pfad <i>bestm&#246;glich</i>&#160;zu covern
    </p>
    <p>
      Es gilt die erste maximal abdeckende L&#246;sung
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1508539330312" ID="ID_67492497" MODIFIED="1508539911843" TEXT="bewegt nur Suchmarken">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1508539350382" ID="ID_585593926" MODIFIED="1533608413598" TEXT="Ergebnis">
<icon BUILTIN="info"/>
<node CREATED="1508539582959" ID="ID_54646462" MODIFIED="1515120947568" TEXT="Anchor == Literal">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1508539633800" ID="ID_471699110" MODIFIED="1576282358122" TEXT="coverDepth (Zahl)">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Tiefe, bis zu der dieser Pfad gedeckt ist.
    </p>
    <p>
      Sofern der Pfad bereits explizit ist, gen&#252;gt diese Info allein
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1508539644775" ID="ID_186144507" MODIFIED="1576282358121" TEXT="[optional] explizite Coverage">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      heap-allozierter expliziter Pfad.
    </p>
    <ul>
      <li>
        wird notwendig, wenn *this wildcards enth&#228;lt
      </li>
      <li>
        L&#246;sung wird unter Alternativen ausgew&#228;hlt (nach maximaler Tiefe)
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1508539156879" ID="ID_1086207992" MODIFIED="1515037663165" TEXT="Layered Evaluation">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1508539857115" ID="ID_1186310701" MODIFIED="1514330270783" TEXT="state: L&#xf6;sungs-Cache">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1508539879600" ID="ID_1527439493" MODIFIED="1515037657130" TEXT="Auswertungs-Frame (TreeExplorer)">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1514748701222" ID="ID_1571444662" MODIFIED="1515037660962" TEXT="Varianten partiell/total">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1508539166878" ID="ID_1751192686" MODIFIED="1515209410401" TEXT="Testf&#xe4;lle">
<arrowlink COLOR="#715b79" DESTINATION="ID_1362494392" ENDARROW="Default" ENDINCLINATION="-578;-16;" ID="Arrow_ID_1072715196" STARTARROW="None" STARTINCLINATION="477;0;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1508539191283" ID="ID_1571889765" MODIFIED="1561827464819" TEXT="anchor">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1508540643163" ID="ID_600567923" MODIFIED="1515287569776" TEXT="trivial: Anker-Literal setzen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1508540736254" ID="ID_531471348" MODIFIED="1515287568184" TEXT="incomplete: path-resolution machen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1508540764667" ID="ID_772420189" MODIFIED="1515287566905" TEXT="scheitert: Anchor == bottom">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1508540811196" ID="ID_841748634" MODIFIED="1515287563969" TEXT="Ergebnis: Window-Komponente setzen">
<icon BUILTIN="button_ok"/>
<node CREATED="1515287545795" ID="ID_1277908675" MODIFIED="1515287556163" TEXT="aber nur wenn ankerbar">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1515287557121" ID="ID_610935487" MODIFIED="1515287561833" TEXT="sonst: kein Effekt">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1508539195258" ID="ID_1044429952" MODIFIED="1525124214766" TEXT="cover">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1508540823475" ID="ID_793410656" MODIFIED="1561827464824" TEXT="path-resolution ausf&#xfc;hren">
<icon BUILTIN="button_ok"/>
<node CREATED="1509475490890" ID="ID_1616720086" MODIFIED="1518487921065" TEXT="rekursiv"/>
<node CREATED="1509475495057" ID="ID_27489504" MODIFIED="1518487921065" TEXT="Aufruf mit ResolutionState"/>
<node CREATED="1509475548066" ID="ID_1051318433" MODIFIED="1518487921065" TEXT="jede gefundene L&#xf6;sung &quot;abwerfen&quot;"/>
<node CREATED="1509475609338" ID="ID_142146721" MODIFIED="1518487921065" TEXT="erweitere Variante von drillDown()">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#435e98" CREATED="1509475823750" FOLDED="true" ID="ID_1076784903" MODIFIED="1533608413600" TEXT="Problem: LocationQuery verwenden">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1509475849931" ID="ID_313015724" MODIFIED="1518487921065" TEXT="der Baum ist nicht direkt zug&#xe4;nglich"/>
<node CREATED="1509475856514" ID="ID_759555189" MODIFIED="1518487921065" TEXT="geht dann &#xfc;berhaupt eine rekursive impl?">
<icon BUILTIN="help"/>
</node>
<node CREATED="1509475946414" ID="ID_815740043" MODIFIED="1518487921065" TEXT="mu&#xdf; die Child-Iteratoren nutzen"/>
<node CREATED="1509475966459" ID="ID_1480938627" MODIFIED="1518487921065" TEXT="ineffizient; steigt jedesmal neu von der Wurzel ab"/>
<node CREATED="1509476108672" ID="ID_609074970" MODIFIED="1561827464825" TEXT="Kern des Problems">
<icon BUILTIN="info"/>
<node CREATED="1509476118647" ID="ID_1491799749" MODIFIED="1518487921065" TEXT="habe Auswertungs-Zustand"/>
<node CREATED="1509476126793" ID="ID_1463784807" MODIFIED="1518487921065" TEXT="ist mit dem Baum verwoben"/>
<node CREATED="1509476133741" ID="ID_1273043633" MODIFIED="1518487921065" TEXT="der Baum ist aber Implementierungs-Detail"/>
</node>
<node CREATED="1509476154258" ID="ID_930376282" MODIFIED="1535891788152" TEXT="m&#xf6;gliche L&#xf6;sungen">
<icon BUILTIN="idea"/>
<node CREATED="1509476160585" ID="ID_171588117" MODIFIED="1509476184594" TEXT="Zustand opaque verpacken"/>
<node CREATED="1509476185182" ID="ID_613038974" MODIFIED="1509476196153" TEXT="Callback &#xfc;ber den Baum transportieren"/>
<node CREATED="1509476197413" ID="ID_768936647" MODIFIED="1514328778025">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Ha! das ist eine <b>Monade</b>!!!!!1!11!
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="smiley-neutral"/>
</node>
<node CREATED="1509481823391" FOLDED="true" ID="ID_1204466073" MODIFIED="1561827483826" TEXT="IterExplorer nutzen?">
<icon BUILTIN="button_cancel"/>
<node CREATED="1509481841493" FOLDED="true" ID="ID_125946562" MODIFIED="1561827482909" TEXT="depthFirst">
<node CREATED="1509481848292" ID="ID_9233559" MODIFIED="1509481858671" TEXT="verwendet selber einen IterStack"/>
<node CREATED="1509481859522" ID="ID_828467130" MODIFIED="1509481866022" TEXT="packt die Quellsequenz dorthin um"/>
</node>
<node CREATED="1509481873976" FOLDED="true" ID="ID_1335669968" MODIFIED="1561827482909" TEXT="RecursiveExhaustingEvaluation">
<node CREATED="1509481895254" ID="ID_205898550" MODIFIED="1509481900897" TEXT="mit eigenem Buffer-Template"/>
<node CREATED="1509481901461" ID="ID_1119216150" MODIFIED="1509481908384" TEXT="mit eigener explorer-Funktion"/>
</node>
<node CREATED="1509481972452" FOLDED="true" ID="ID_1796930306" MODIFIED="1561827482909" TEXT="RecursiveSelfIntegration">
<node CREATED="1509481981834" ID="ID_312626846" MODIFIED="1509481990157" TEXT="mu&#xdf; dann eigenen Sequenz-Typ verwenden"/>
<node CREATED="1509481991033" ID="ID_321192742" MODIFIED="1509482002172" TEXT="dieser implementiert die re-Integration selber"/>
</node>
<node CREATED="1509482005743" FOLDED="true" ID="ID_156318392" MODIFIED="1561827482910" TEXT="eigenen Combinator">
<node CREATED="1509482018302" ID="ID_1911533794" MODIFIED="1509482027640" TEXT="d.h. IterExplorer selber nutzen"/>
<node CREATED="1509482028205" ID="ID_1589522162" MODIFIED="1509482039271" TEXT="die Logik steckt im eigenen Combinator"/>
</node>
</node>
<node CREATED="1535891975603" ID="ID_1860662881" MODIFIED="1535892401183" TEXT="neuer Anlauf: nochmal ein IterExplorer-Design">
<arrowlink COLOR="#27998e" DESTINATION="ID_137835978" ENDARROW="Default" ENDINCLINATION="-521;-801;" ID="Arrow_ID_1873000120" STARTARROW="None" STARTINCLINATION="-1866;98;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1509495634766" ID="ID_422767906" MODIFIED="1561827464836" TEXT="Zusammenspiel">
<icon BUILTIN="info"/>
<node CREATED="1509491594115" FOLDED="true" ID="ID_214903834" MODIFIED="1561827483826" TEXT="was tr&#xe4;gt LocationQuery bei?">
<icon BUILTIN="help"/>
<node CREATED="1509491778083" ID="ID_1393727273" MODIFIED="1509491782470" TEXT="den Ort im Baum"/>
<node CREATED="1509491783058" ID="ID_885705202" MODIFIED="1509491786782" TEXT="dort Kinder finden"/>
</node>
<node CREATED="1509495646276" FOLDED="true" ID="ID_167277646" MODIFIED="1561827483826" TEXT="was tr&#xe4;gt der Resolver bei?">
<icon BUILTIN="help"/>
<node CREATED="1509495661042" ID="ID_653601777" MODIFIED="1509495669717" TEXT="den zu interpolierenden Pfad"/>
<node CREATED="1509495680255" ID="ID_280205397" MODIFIED="1509495708216" TEXT="die Entscheidung, einem Zweig zu folgen"/>
</node>
<node CREATED="1509500182205" FOLDED="true" ID="ID_265529571" MODIFIED="1561827483826" TEXT="wie wird die L&#xf6;sung gebildet?">
<icon BUILTIN="help"/>
<node CREATED="1509500778214" FOLDED="true" ID="ID_205493443" MODIFIED="1561827482910" TEXT="immer wenn ein Zweig ausgesch&#xf6;pft ist">
<node CREATED="1509500789749" ID="ID_900618811" MODIFIED="1509500797807" TEXT="keine Kind-Knoten mehr"/>
<node CREATED="1509500798284" ID="ID_1913555098" MODIFIED="1509500806342" TEXT="der leitende Pfad ist am Ende"/>
<node CREATED="1509500810530" ID="ID_429187382" MODIFIED="1509500819205" TEXT="und wir haben einen Match"/>
</node>
<node CREATED="1509500824008" ID="ID_131979876" MODIFIED="1509500843970" TEXT="dann den aktuellen Pfad von der Wurzel &quot;abwerfen&quot;"/>
</node>
<node CREATED="1509500882017" FOLDED="true" ID="ID_1192819328" MODIFIED="1561827483826" TEXT="Problem: Backtracking">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1509500892895" ID="ID_1418393701" MODIFIED="1509500898746" TEXT="ein Problem der Repr&#xe4;sentation"/>
<node CREATED="1509500905589" ID="ID_583193934" MODIFIED="1509500921375" TEXT="mu&#xdf; zu einem fr&#xfc;heren, partiell gebildeten Pfad zur&#xfc;ckkehren"/>
<node CREATED="1509500998401" FOLDED="true" ID="ID_566603059" MODIFIED="1561827482910" TEXT="Pfade sind vorw&#xe4;rts verlinkt">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1509501075699" ID="ID_41890562" MODIFIED="1509501075699">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...aber im Moment der L&#246;sung brauche ich den Pfad aufw&#228;rts.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1509501086314" ID="ID_1462237553" MODIFIED="1509501086314">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Das hei&#223;t, wir m&#252;ssen ihn bereits im Aufrufkontext bereit liegen haben
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1509579787378" ID="ID_1598679407" MODIFIED="1509579802379" TEXT="...oder ihn aus diesem Kontext rekonstruieren k&#xf6;nnen">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1509580020810" ID="ID_602529711" MODIFIED="1509580027551" TEXT="COW">
<icon BUILTIN="forward"/>
</node>
</node>
</node>
<node CREATED="1509581231027" FOLDED="true" HGAP="73" ID="ID_1779465547" MODIFIED="1561827483827" TEXT="m&#xf6;glicher Ablauf" VSHIFT="18">
<node CREATED="1509581241161" ID="ID_1629692107" MODIFIED="1509915202592" TEXT="UICoordResolver pullt Ergebnis(se)">
<icon BUILTIN="forward"/>
</node>
<node BACKGROUND_COLOR="#b4d1df" CREATED="1509581679727" FOLDED="true" HGAP="39" ID="ID_501629316" MODIFIED="1561827482910" STYLE="bubble" TEXT="f&#xfc;r alle Kinder" VSHIFT="7">
<arrowlink COLOR="#00ff9c" DESTINATION="ID_1294975373" ENDARROW="Default" ENDINCLINATION="8;66;" ID="Arrow_ID_1807409316" STARTARROW="None" STARTINCLINATION="93;38;"/>
<linktarget COLOR="#acf267" DESTINATION="ID_501629316" ENDARROW="Default" ENDINCLINATION="60;-81;" ID="Arrow_ID_1837883373" SOURCE="ID_1856901364" STARTARROW="None" STARTINCLINATION="126;-77;"/>
<linktarget COLOR="#17dde7" DESTINATION="ID_501629316" ENDARROW="Default" ENDINCLINATION="98;-46;" ID="Arrow_ID_1045905988" SOURCE="ID_574087782" STARTARROW="None" STARTINCLINATION="108;-138;"/>
<linktarget COLOR="#172fd9" DESTINATION="ID_501629316" ENDARROW="Default" ENDINCLINATION="25;50;" ID="Arrow_ID_901660904" SOURCE="ID_1687957458" STARTARROW="None" STARTINCLINATION="8;-10;"/>
<node BACKGROUND_COLOR="#e1e1b6" CREATED="1509581375103" FOLDED="true" ID="ID_1294975373" MODIFIED="1561827469147" TEXT="(node, depth) -&gt; match?">
<linktarget COLOR="#00ff9c" DESTINATION="ID_1294975373" ENDARROW="Default" ENDINCLINATION="8;66;" ID="Arrow_ID_1807409316" SOURCE="ID_501629316" STARTARROW="None" STARTINCLINATION="93;38;"/>
<icon BUILTIN="help"/>
<node CREATED="1509581419506" FOLDED="true" ID="ID_956022061" MODIFIED="1561827469126" TEXT="ja">
<node CREATED="1509581675560" ID="ID_17975640" MODIFIED="1514742893143" TEXT="depth+1">
<icon BUILTIN="full-1"/>
</node>
<node BACKGROUND_COLOR="#e1e1b6" CREATED="1509581999829" FOLDED="true" ID="ID_195154621" MODIFIED="1525124214781" TEXT="Rekursion?">
<icon BUILTIN="full-2"/>
<icon BUILTIN="help"/>
<node CREATED="1509582024610" ID="ID_1856901364" MODIFIED="1509834445909" TEXT="ja">
<arrowlink COLOR="#acf267" DESTINATION="ID_501629316" ENDARROW="Default" ENDINCLINATION="60;-81;" ID="Arrow_ID_1837883373" STARTARROW="None" STARTINCLINATION="126;-77;"/>
</node>
<node CREATED="1509582031809" FOLDED="true" ID="ID_1594605893" MODIFIED="1525124214781" TEXT="nein">
<node CREATED="1509582078939" HGAP="23" ID="ID_171156109" MODIFIED="1514742898612" TEXT="Abwurf" VSHIFT="-5">
<arrowlink COLOR="#2648cc" DESTINATION="ID_1359435447" ENDARROW="Default" ENDINCLINATION="273;37;" ID="Arrow_ID_1082519062" STARTARROW="None" STARTINCLINATION="361;48;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="full-1"/>
</node>
<node BACKGROUND_COLOR="#b4d1df" CREATED="1509582092777" HGAP="29" ID="ID_574087782" MODIFIED="1514743247011" TEXT="Backtracking" VSHIFT="2">
<arrowlink COLOR="#17dde7" DESTINATION="ID_501629316" ENDARROW="Default" ENDINCLINATION="98;-46;" ID="Arrow_ID_1045905988" STARTARROW="None" STARTINCLINATION="108;-138;"/>
<linktarget COLOR="#0199e1" DESTINATION="ID_574087782" ENDARROW="Default" ENDINCLINATION="-11;18;" ID="Arrow_ID_514933005" SOURCE="ID_1742427454" STARTARROW="None" STARTINCLINATION="115;15;"/>
<icon BUILTIN="full-2"/>
</node>
</node>
</node>
</node>
<node CREATED="1509581428177" FOLDED="true" ID="ID_593473991" MODIFIED="1561827469126" TEXT="nein">
<node CREATED="1509582401976" ID="ID_1742427454" MODIFIED="1514743247011" TEXT="Zweig widerlegt">
<arrowlink COLOR="#0199e1" DESTINATION="ID_574087782" ENDARROW="Default" ENDINCLINATION="-11;18;" ID="Arrow_ID_514933005" STARTARROW="None" STARTINCLINATION="115;15;"/>
</node>
</node>
</node>
</node>
<node CREATED="1509582914509" ID="ID_1359435447" MODIFIED="1509915433218" TEXT="yield">
<linktarget COLOR="#2648cc" DESTINATION="ID_1359435447" ENDARROW="Default" ENDINCLINATION="273;37;" ID="Arrow_ID_1082519062" SOURCE="ID_171156109" STARTARROW="None" STARTINCLINATION="361;48;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
<node CREATED="1509582922140" ID="ID_1687957458" MODIFIED="1510272742518">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Puffer ab Tiefe
    </p>
    <p>
      vom Pfad initialisieren
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#172fd9" DESTINATION="ID_501629316" ENDARROW="Default" ENDINCLINATION="25;50;" ID="Arrow_ID_901660904" STARTARROW="None" STARTINCLINATION="8;-10;"/>
</node>
</node>
<node CREATED="1509583164196" FOLDED="true" HGAP="45" ID="ID_1054378844" MODIFIED="1561827483827" VSHIFT="18">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      monadische L&#246;sung
    </p>
    <p>
      m&#246;glich?
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="help"/>
<node CREATED="1509583603442" FOLDED="true" ID="ID_1654046432" MODIFIED="1561827482910" TEXT="Aufgabe">
<node CREATED="1509583606241" ID="ID_1229235682" MODIFIED="1509583612828" TEXT="brauche explore-Funktion"/>
<node CREATED="1509583629367" ID="ID_911265983" MODIFIED="1509583641832" TEXT="element  -&gt; zu betrachtende Kinder"/>
<node CREATED="1509583710276" FOLDED="true" ID="ID_76982043" MODIFIED="1561827469147" TEXT="Teilaufgaben">
<node CREATED="1509583754350" ID="ID_304891578" MODIFIED="1509583763832" TEXT="element -&gt; match?"/>
<node CREATED="1509583855993" ID="ID_1587235171" MODIFIED="1509583889120" TEXT="ja! -&gt; m&#xf6;gliche Kinder"/>
</node>
<node CREATED="1509583973681" FOLDED="true" ID="ID_1318889619" MODIFIED="1561827469147" TEXT="Problem: tern&#xe4;re Antwort">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1509583985008" ID="ID_396388554" MODIFIED="1509583991099" TEXT="akzeptiert"/>
<node CREATED="1509583991903" ID="ID_236836502" MODIFIED="1509583994178" TEXT="widerlegt"/>
<node CREATED="1509583994814" ID="ID_1069105045" MODIFIED="1509583998658" TEXT="unentschieden"/>
</node>
</node>
<node CREATED="1510266814301" FOLDED="true" ID="ID_1831665335" MODIFIED="1561827482911" TEXT="Ansatz">
<node CREATED="1510266817500" FOLDED="true" ID="ID_1438980093" MODIFIED="1561827469147" TEXT="3 Layer verwenden">
<icon BUILTIN="idea"/>
<node CREATED="1510266845712" FOLDED="true" ID="ID_1058798631" MODIFIED="1561827469126" TEXT="depthFirstExpandable">
<node CREATED="1510340746785" ID="ID_1049791542" MODIFIED="1510340774700">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <i>echte</i>&#160;Expand-Funktion notwendig
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1510340942183" ID="ID_1468499222" MODIFIED="1510340946922" TEXT="tree expansion"/>
<node CREATED="1510340919370" ID="ID_1835064492" MODIFIED="1510340941074" TEXT="hidden state"/>
</node>
<node CREATED="1510267240714" FOLDED="true" ID="ID_1928917413" MODIFIED="1561827469127" TEXT="pathMatcher">
<node CREATED="1510340991536" ID="ID_551863450" MODIFIED="1510341006225" TEXT="Zustands-Tupel -&gt; Zustands-Tupel"/>
<node CREATED="1510341122678" ID="ID_628465315" MODIFIED="1510341137973" TEXT="Mehrwert durch Abstraktion">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1510341114343" ID="ID_1967053947" MODIFIED="1510341117354" TEXT="Zustandsmaschine"/>
</node>
<node CREATED="1510267258015" FOLDED="true" ID="ID_858567040" MODIFIED="1561827469127" TEXT="solutionIter">
<node CREATED="1510341147323" ID="ID_224167359" MODIFIED="1510341162916" TEXT="Filter-Iterator"/>
<node CREATED="1510341163528" ID="ID_1640768302" MODIFIED="1510341167036" TEXT="fischt nach L&#xf6;sungen"/>
</node>
</node>
<node CREATED="1510341362957" FOLDED="true" ID="ID_1499495468" MODIFIED="1561827469147" TEXT="wirklich monadisch?">
<linktarget COLOR="#80c6b3" DESTINATION="ID_1499495468" ENDARROW="Default" ENDINCLINATION="-1812;12745;" ID="Arrow_ID_673178727" SOURCE="ID_1502143527" STARTARROW="None" STARTINCLINATION="4133;-10665;"/>
<node CREATED="1510341374332" ID="ID_483481416" MODIFIED="1511572072346" TEXT="naja...">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      mathematische Monaden sind viel mehr...
    </p>
    <p>
      Im Besonderen sind es Typen h&#246;herer Ordnung,
    </p>
    <p>
      also mehr als blo&#223; parametrisierte Typen (Templates)!
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1510341461168" ID="ID_862729714" MODIFIED="1510341472426" TEXT="Insofern Iterator == Monade"/>
<node CREATED="1510342283759" FOLDED="true" ID="ID_196604339" MODIFIED="1561827469127" TEXT="als Pipeline realisieren?">
<node CREATED="1510342309372" ID="ID_1423589544" MODIFIED="1510342448222" TEXT="M a &gt;&gt;= (a -&gt; M b) &gt;&gt;= (b -&gt; M c)">
<icon BUILTIN="info"/>
</node>
<node CREATED="1510342375691" FOLDED="true" ID="ID_433622803" MODIFIED="1525124214795" TEXT="hier w&#xe4;re dann...">
<node CREATED="1510342421653" ID="ID_864357466" MODIFIED="1510342428524" TEXT="M der IterExplorer"/>
<node CREATED="1510342385970" ID="ID_1170551187" MODIFIED="1510342397060" TEXT="a eine treePositon"/>
<node CREATED="1510342397768" ID="ID_297412873" MODIFIED="1510342405283" TEXT="b das Zustands-Tupel"/>
<node CREATED="1510342405871" ID="ID_302307398" MODIFIED="1510342408770" TEXT="c eine L&#xf6;sung"/>
</node>
<node CREATED="1510342662644" FOLDED="true" ID="ID_1670214510" MODIFIED="1525124214795" TEXT="geht nur wenn....">
<node CREATED="1510342668115" ID="ID_858941678" MODIFIED="1511572072407">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      alles mit <i>einer</i>&#160;Form des IterExplorer machbar ist
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...da IterExplorer einen Template-Template-Parameter nimmt,
    </p>
    <p>
      ist er eigentlich ein Meta-Template, und es gibt diverse
    </p>
    <p>
      Auspr&#228;gungen, die alle subtile Seiteneffekte ausnutzen....
    </p>
    <p>
      ...was nicht grade zur Verst&#228;ndlichkeit des Ganzen beitr&#228;gt
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1510342763622" ID="ID_1851343313" MODIFIED="1510357653178">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      das <i>Fortschreiten der Berechnung</i>&#160;dargestellt werden kann
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1510357676862" FOLDED="true" ID="ID_1057287927" MODIFIED="1512926193412" TEXT="das hei&#xdf;t...">
<node CREATED="1510357692028" ID="ID_42511341" MODIFIED="1510357698567" TEXT="wie werden aus einem a mehrere b?"/>
<node CREATED="1510357699299" ID="ID_1428784920" MODIFIED="1510357734578" TEXT="wie kann ein b ein expandiertes a erzeugen?"/>
</node>
</node>
<node CREATED="1510365403358" FOLDED="true" ID="ID_672047484" MODIFIED="1525124214796" TEXT="klingt machbar.....">
<node CREATED="1510365427291" FOLDED="true" ID="ID_176946796" MODIFIED="1512926193412" TEXT="RecursiveSelfIntegration verwenden?">
<icon BUILTIN="button_cancel"/>
<node CREATED="1510365513975" ID="ID_355146506" MODIFIED="1510365524666" TEXT="Problem: keine klassische Monade"/>
<node CREATED="1510365525470" ID="ID_1084258268" MODIFIED="1510365538264" TEXT="ResultIter -&gt; ResultIter"/>
<node CREATED="1510427098600" ID="ID_576903384" MODIFIED="1510438602569" TEXT="Layering nicht Teil des Schemas"/>
<node CREATED="1510427352926" ID="ID_805227666" MODIFIED="1510427370156">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Problem: Layer sind <i>verkoppelt</i>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1510365437834" FOLDED="true" ID="ID_134006075" MODIFIED="1512926193412" TEXT="Default-combinator verwenden">
<icon BUILTIN="button_cancel"/>
<node CREATED="1510365447736" ID="ID_268132850" MODIFIED="1510365460367">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      dann aber als <b>State Monad</b>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1510365950652" FOLDED="true" ID="ID_978128618" MODIFIED="1512926193407" TEXT="State Monad">
<icon BUILTIN="info"/>
<node CREATED="1510365961732" ID="ID_1589378310" MODIFIED="1510365980084" TEXT="return x = \s -&gt; (x, s) "/>
<node CREATED="1510365961733" FOLDED="true" ID="ID_188006936" MODIFIED="1512926191735">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      m &gt;&gt;= f = \r -&gt; let (x, s) = m r
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;in (f x) s
    </p>
  </body>
</html></richcontent>
<node CREATED="1510366044023" ID="ID_72536689" MODIFIED="1510366073855" TEXT="Argument: ein State r"/>
<node CREATED="1510366074110" ID="ID_689602412" MODIFIED="1510366201735" TEXT="wende Basis-Monade auf r an">
<icon BUILTIN="full-1"/>
</node>
<node CREATED="1510366106215" ID="ID_1509841383" MODIFIED="1510366206135" TEXT="wende f auf den Ergebnis-Wert x an">
<icon BUILTIN="full-2"/>
</node>
<node CREATED="1510366161399" ID="ID_854251162" MODIFIED="1510366222663">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      wende die resultierende State-Monade
    </p>
    <p>
      auf den Zwischenzustand x aus (1) an
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="full-3"/>
</node>
</node>
</node>
<node CREATED="1510438509930" ID="ID_895147065" MODIFIED="1510438624934" TEXT="Problem: State Monad ist Funktor, kein Iterator">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1510940573235" ID="ID_953854216" MODIFIED="1510940586348" TEXT="IterExploer pa&#xdf;t nicht so recht">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="forward"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1510446221317" HGAP="52" ID="ID_1590483406" MODIFIED="1535892751360" VSHIFT="42">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      sind Monaden
    </p>
    <p>
      wirklich hilfreich?
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#b26c7a" DESTINATION="ID_1955430588" ENDARROW="Default" ENDINCLINATION="-343;-748;" ID="Arrow_ID_920121069" STARTARROW="None" STARTINCLINATION="-38;43;"/>
<icon BUILTIN="help"/>
</node>
<node CREATED="1510446985581" FOLDED="true" HGAP="7" ID="ID_1266495962" MODIFIED="1561827469127" VSHIFT="44">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      alternatives
    </p>
    <p>
      Ziel
    </p>
  </body>
</html></richcontent>
<node CREATED="1510446995819" ID="ID_23846908" MODIFIED="1510447602718" TEXT="Baukasten-System">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1510447001691" FOLDED="true" ID="ID_139960047" MODIFIED="1525124214796" TEXT="von den Monaden">
<node CREATED="1510447022711" ID="ID_261759287" MODIFIED="1510447030010" TEXT="Idee der Pipeline"/>
<node CREATED="1510447582219" ID="ID_776956172" MODIFIED="1510447592222" TEXT="beliebige Kombinierbarkeit"/>
<node CREATED="1510447030766" ID="ID_1117150634" MODIFIED="1510447044624" TEXT="eigentliche Operation parametrisierbar"/>
</node>
<node CREATED="1510447061138" FOLDED="true" ID="ID_1016093231" MODIFIED="1525124214796" TEXT="Basis: State-Iterator">
<node CREATED="1510447071969" ID="ID_509550363" MODIFIED="1510447075852" TEXT="ist opaque"/>
<node CREATED="1510447076776" ID="ID_1106188456" MODIFIED="1510447096209" TEXT="yield -&gt; Wert oder Marker"/>
<node CREATED="1510447097509" ID="ID_1527567894" MODIFIED="1510447108696" TEXT="iterate -&gt; Proze&#xdf;-Schritt"/>
</node>
<node CREATED="1510447482473" FOLDED="true" ID="ID_232445241" MODIFIED="1525124214797" TEXT="Aufgaben">
<node CREATED="1510447488864" ID="ID_585404918" MODIFIED="1510447497779" TEXT="wie die &quot;Operation&quot; integrieren"/>
<node CREATED="1510447506901" ID="ID_1653596769" MODIFIED="1510447517655" TEXT="Unterschied Explore / Transform"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1510540265979" FOLDED="true" HGAP="17" ID="ID_1160853986" MODIFIED="1561827469147" VSHIFT="26">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Fazit:
    </p>
    <p>
      brauche...
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#406878" DESTINATION="ID_845080696" ENDARROW="Default" ENDINCLINATION="-88;-61;" ID="Arrow_ID_409690433" STARTARROW="None" STARTINCLINATION="-374;6;"/>
<icon BUILTIN="yes"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1510540282280" FOLDED="true" ID="ID_304955672" MODIFIED="1561827469127" STYLE="fork" TEXT="Baum-Explorer">
<icon BUILTIN="info"/>
<node CREATED="1510540409159" ID="ID_1790409069" MODIFIED="1512797263191" TEXT="wiederverwendbarer Baustein"/>
<node CREATED="1510540682809" FOLDED="true" ID="ID_1860662906" MODIFIED="1525124214797" TEXT="konfiguriert mit">
<node CREATED="1510540689329" ID="ID_678279547" MODIFIED="1512797263191" TEXT="expand-Funktion"/>
<node CREATED="1510540693760" ID="ID_137650742" MODIFIED="1512797263191" TEXT="transform-Funktion"/>
</node>
<node CREATED="1510540500403" FOLDED="true" ID="ID_494812399" MODIFIED="1525124214797" TEXT="expandierbar">
<node CREATED="1510540735386" ID="ID_94152805" MODIFIED="1512797263191" TEXT="zus&#xe4;tzliche API-Operation"/>
<node CREATED="1510540740977" ID="ID_1864011655" MODIFIED="1512797263191" TEXT="ersetzt aktuellen Knoten durch seine Kinder"/>
<node CREATED="1510939295181" ID="ID_454143909" MODIFIED="1512797263191">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      das impliziert <i>grunds&#228;tzlich</i>&#160;einen <b>Stack</b>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1510540417614" FOLDED="true" ID="ID_169601267" MODIFIED="1525124214797" TEXT="iterierbar">
<node CREATED="1510541064485" ID="ID_15321736" MODIFIED="1512797263192" TEXT="jedes Element geht durch den Transformer"/>
<node CREATED="1510541092114" ID="ID_1514360017" MODIFIED="1512797263192" TEXT="das ist die neue Einsicht">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1510939495862" FOLDED="true" ID="ID_1918069733" MODIFIED="1525124214797" TEXT="Monade?">
<icon BUILTIN="help"/>
<node CREATED="1510939532689" FOLDED="true" ID="ID_608280633" MODIFIED="1512926193412" TEXT="konventionelle L&#xf6;sung">
<icon BUILTIN="button_cancel"/>
<node CREATED="1510939567867" ID="ID_1799788775" MODIFIED="1512797263192" TEXT="expand: S -&gt; S"/>
<node CREATED="1510939642250" ID="ID_456598029" MODIFIED="1512797263192" TEXT="S = opaque state"/>
<node CREATED="1510939675821" ID="ID_71307720" MODIFIED="1512797263192" TEXT="eigentliche Erweiterung ist in S implementiert"/>
<node CREATED="1510939688075" ID="ID_872154531" MODIFIED="1512797263192" TEXT="expand() reicht also nur einen Aufruf weiter"/>
<node CREATED="1510939702170" ID="ID_699246805" MODIFIED="1512797263192" TEXT="Implementierung erfordert Seiteneffekt auf S"/>
<node CREATED="1510939778231" ID="ID_763925317" MODIFIED="1512797263192" TEXT="S mu&#xdf; auf die Verwendung im Baum-Explorer vorbereitet sein"/>
<node CREATED="1510940187687" ID="ID_349334428" MODIFIED="1512797263192" TEXT="triviale Implementierung kan sehr effizient sein"/>
</node>
<node CREATED="1510939552942" FOLDED="true" ID="ID_510344823" MODIFIED="1512926193412" TEXT="modadische L&#xf6;sung">
<icon BUILTIN="button_ok"/>
<node CREATED="1510939598175" ID="ID_1272498716" MODIFIED="1512797263192" TEXT="expand: S -&gt; BaumExplorer&lt;S&gt;"/>
<node CREATED="1510939845662" ID="ID_581825327" MODIFIED="1512797263192" TEXT="S = opaque State"/>
<node CREATED="1510939856845" ID="ID_1492383135" MODIFIED="1512797263192" TEXT="Erweiterungs-Mechanismus im Baum-Explorer implementiert"/>
<node CREATED="1510939940275" ID="ID_767766017" MODIFIED="1512797263192">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      expand() ruft eine vorbereitete Parametrisierung
    </p>
    <p>
      &#160;f&#252;r diesen Expand-Mechanismus auf
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1510940053626" ID="ID_865181855" MODIFIED="1512797263192" TEXT="S kann Wertsemantik (aber auch Referenz-Semantik) haben"/>
<node CREATED="1510940088149" ID="ID_791410014" MODIFIED="1512797263192" TEXT="S mu&#xdf; nicht speziell vorbereitet sein (nur konstruierbar)"/>
<node CREATED="1510940199342" ID="ID_1423687617" MODIFIED="1512797263192" TEXT="man zahlt immer den Overhead f&#xfc;r den Stack im Baum-Explorer">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...selbst wenn man ihn f&#252;r eine triviale Implementierung
    </p>
    <p>
      eigentlich &#252;berhaupt nicht braucht.
    </p>
    <p>
      
    </p>
    <p>
      Das kann zwar zu einem gewissen Grad abgemildert werden,
    </p>
    <p>
      indem man einen speziellen <i>Inline-Stack mit Heap-Overflow</i>&#160;nutzt
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1510939517499" ID="ID_1100296394" MODIFIED="1512797263192" TEXT="das ist eine Weichenstellung">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node CREATED="1510540333481" FOLDED="true" ID="ID_1605100271" MODIFIED="1561827469127" TEXT="Rekursive Zustandsauswertung">
<node CREATED="1510541206810" ID="ID_1795866831" MODIFIED="1510541211885" TEXT="bindet Schritt-Funktion"/>
<node CREATED="1510970252162" ID="ID_1591961626" MODIFIED="1510970261786" TEXT="Layered Iterator Evaluation"/>
<node CREATED="1510970268485" ID="ID_1500401518" MODIFIED="1510970288103" TEXT="m&#xf6;glicherweise fest vorkonfigurierbarer Builder hierf&#xfc;r">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1510540399304" FOLDED="true" ID="ID_300971395" MODIFIED="1561827469127" TEXT="Filter">
<node CREATED="1510541335201" ID="ID_1717169058" MODIFIED="1510541339780" TEXT="fischt nach L&#xf6;sungen"/>
<node CREATED="1513473625110" ID="ID_267118379" MODIFIED="1513473632137" TEXT="kann die Auswertung treiben">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1510941382478" FOLDED="true" ID="ID_667413818" MODIFIED="1561827483827" TEXT="generische L&#xf6;sung">
<icon BUILTIN="button_ok"/>
<node CREATED="1510941425200" FOLDED="true" ID="ID_1773303405" MODIFIED="1561827482911" TEXT="Vorgabe">
<icon BUILTIN="yes"/>
<node CREATED="1510941397907" ID="ID_993148577" MODIFIED="1512955809672" TEXT="zun&#xe4;chst als abstrakter Baustein">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1510941406978" ID="ID_1048232110" MODIFIED="1512955812834" TEXT="sp&#xe4;ter mit IterExplorer verschmelzen">
<icon BUILTIN="bell"/>
</node>
</node>
<node COLOR="#338800" CREATED="1510941455667" FOLDED="true" ID="ID_1945607867" MODIFIED="1561827482911" TEXT="Builder">
<icon BUILTIN="button_ok"/>
<node CREATED="1511054840038" FOLDED="true" ID="ID_18464349" MODIFIED="1561827469147" TEXT="brauch ich am Ende &#xfc;berhaupt einen builder">
<icon BUILTIN="help"/>
<node CREATED="1512955693493" ID="ID_622618029" MODIFIED="1512955706852">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <i>ich </i>brauche ihn nicht
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1512955707636" ID="ID_398975798" MODIFIED="1512955789085" TEXT="aber bestehendes Verhalten ist gef&#xe4;hrlich">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      die Builder-Operationen moven den bisherigen Iterator-compound weg.
    </p>
    <p>
      <i>Ich k&#246;nnte mir vorstellen, </i>da&#223; das einen naiven User ziemlich schockiert....
    </p>
    <p>
      
    </p>
    <p>
      L&#246;sung w&#228;re, das Iterator-API erst nach einem expliziten terminalen Aufruf freizuschalten
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1512955715434" ID="ID_1973548871" MODIFIED="1512955720444" TEXT="also: sp&#xe4;termal">
<icon BUILTIN="bell"/>
</node>
</node>
<node CREATED="1512278433500" FOLDED="true" ID="ID_1806674229" MODIFIED="1561827469148" TEXT="TreeExplorer fungiert als Builder">
<icon BUILTIN="yes"/>
<node CREATED="1512278445042" ID="ID_205794467" MODIFIED="1512278456012" TEXT="wird jeweils on top dar&#xfc;bergebaut"/>
<node CREATED="1512278456672" ID="ID_488770369" MODIFIED="1512278462388" TEXT="wird in jedem Schritt gestrippt"/>
</node>
</node>
<node COLOR="#338800" CREATED="1510941463562" FOLDED="true" ID="ID_845080696" MODIFIED="1561827482911" TEXT="TreeExplorer">
<linktarget COLOR="#406878" DESTINATION="ID_845080696" ENDARROW="Default" ENDINCLINATION="-88;-61;" ID="Arrow_ID_409690433" SOURCE="ID_1160853986" STARTARROW="None" STARTINCLINATION="-374;6;"/>
<linktarget COLOR="#585e9d" DESTINATION="ID_845080696" ENDARROW="Default" ENDINCLINATION="-23;161;" ID="Arrow_ID_402051988" SOURCE="ID_1359727169" STARTARROW="None" STARTINCLINATION="138;6;"/>
<linktarget COLOR="#83dfc7" DESTINATION="ID_845080696" ENDARROW="Default" ENDINCLINATION="-1109;3887;" ID="Arrow_ID_1645152965" SOURCE="ID_30857289" STARTARROW="None" STARTINCLINATION="2051;-176;"/>
<linktarget COLOR="#8ad3a5" DESTINATION="ID_845080696" ENDARROW="Default" ENDINCLINATION="-230;134;" ID="Arrow_ID_253437970" SOURCE="ID_137835978" STARTARROW="None" STARTINCLINATION="-387;0;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1511571446467" FOLDED="true" ID="ID_1778455053" MODIFIED="1561827469148" TEXT="expand-Operation">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1511227813712" FOLDED="true" ID="ID_1961708112" MODIFIED="1561827469128" TEXT="Fall-1">
<icon BUILTIN="button_ok"/>
<node CREATED="1511227821087" ID="ID_143800006" MODIFIED="1511227823932" TEXT="monadisch"/>
<node CREATED="1511227824495" ID="ID_669725928" MODIFIED="1511227836441" TEXT="Val -&gt; Iter(Val)"/>
</node>
<node COLOR="#338800" CREATED="1511227861867" FOLDED="true" ID="ID_1021264891" MODIFIED="1561827469128" TEXT="Fall-2 ">
<icon BUILTIN="button_ok"/>
<node CREATED="1511227870346" ID="ID_707253800" MODIFIED="1511228200055" TEXT="verzahnte Implementierung"/>
<node CREATED="1511227975028" FOLDED="true" ID="ID_1383529442" MODIFIED="1525124214806" TEXT="Sub-F&#xe4;lle">
<node CREATED="1511227902005" ID="ID_867168618" MODIFIED="1511228200056" TEXT="Core -&gt; Iter(Val)"/>
<node CREATED="1511227917971" ID="ID_1274261467" MODIFIED="1511228200056" TEXT="Core -&gt; Core"/>
<node CREATED="1511227925202" ID="ID_211547168" MODIFIED="1511228200056" TEXT="Iter(Val) -&gt; Iter(Val)"/>
<node CREATED="1511227944392" ID="ID_1244265850" MODIFIED="1511228200056" TEXT="Iter(Val) -&gt; Core"/>
</node>
<node CREATED="1511227985314" FOLDED="true" ID="ID_723642910" MODIFIED="1525124214806" TEXT="Problem">
<node CREATED="1511227994153" ID="ID_1055820971" MODIFIED="1511228200056" TEXT="nicht jede Kombi ist valide"/>
<node CREATED="1511228014599" ID="ID_817679403" MODIFIED="1511572072623" TEXT="&quot;Zugriff auf Core&quot; kann nicht abstrahiert werden">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      weil...
    </p>
    <ul>
      <li>
        sich zwar die Logik syntaktisch anschreiben l&#228;&#223;t
      </li>
      <li>
        aber beide Zweige u.U nicht auf den gleichen Typ hinauslaufen
      </li>
      <li>
        und erst in der Anwendung dieses Ausdruckes werden die Typen gleichgestellt
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node CREATED="1511827033449" ID="ID_1528489344" MODIFIED="1511827073310" TEXT="L&#xf6;sung: Funktions-Komposition mit getemplatetem operator()">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1511228184223" FOLDED="true" HGAP="26" ID="ID_1701796180" MODIFIED="1561827469128" TEXT="Vereinigung" VSHIFT="23">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1511228210268" ID="ID_268486334" MODIFIED="1511228224230" TEXT="im Fall-1 m&#xfc;ssen wir operator* anwenden"/>
<node CREATED="1511228226946" FOLDED="true" ID="ID_1853550246" MODIFIED="1525124214806" TEXT="im Fall-2 m&#xfc;ssen wir einen Core-Typ konstruieren">
<node CREATED="1511228291778" ID="ID_1396258052" MODIFIED="1511228302748" TEXT="und zwar einen, den die Funktion nehmen kann"/>
<node CREATED="1511228303552" ID="ID_833606136" MODIFIED="1511228313746" TEXT="Vorsicht, kann auch eine Referenz sein!">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1511228361960" ID="ID_757059750" MODIFIED="1511402807191" TEXT="wie bringt man das syntaktisch auf eine einzige Linie??">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="help"/>
</node>
<node CREATED="1511402785895" FOLDED="true" ID="ID_1409331699" MODIFIED="1525124214806" TEXT="L&#xf6;sungsidee: generisches Lambda">
<icon BUILTIN="idea"/>
<node CREATED="1511402832809" ID="ID_844588469" MODIFIED="1511402843611" TEXT="wird einmal auf der initialen Quelle aufgerufen"/>
<node CREATED="1511402844151" ID="ID_504070749" MODIFIED="1511402854442" TEXT="oder dann auf einem der Sub-Iteratoren auf dem Stack"/>
<node CREATED="1511402855174" ID="ID_386377958" MODIFIED="1511402861001" TEXT="beides k&#xf6;nnen unterschiedliche Typen sein"/>
<node CREATED="1511402861613" ID="ID_1536434222" MODIFIED="1511402872072" TEXT="solange der expandFunktor beide akzeptiert...."/>
</node>
<node CREATED="1511455454190" FOLDED="true" ID="ID_1384978479" MODIFIED="1525124214806" TEXT="Problem: kein generischer Expand-Functor">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1511455484027" ID="ID_548359395" MODIFIED="1511572072779" TEXT="unmittelbare Folge davon, da&#xdf; wir den Typ des Expand-Funktors analysieren">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      _fun&lt;FUN&gt;::Sig scheitert
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
<node CREATED="1511455502648" ID="ID_1704619802" MODIFIED="1511455566686">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      das ist aber <i>unpraktisch</i>....
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="smily_bad"/>
</node>
<node CREATED="1511455513119" ID="ID_128446946" MODIFIED="1511572072789" TEXT="denn grade Iterator-Typen kennt der Benutzer typischerweise nicht">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ....also ist es gradezu nat&#252;rlich,
    </p>
    <p>
      einen Expand-Funktor als generisches Lambda zu schreiben!
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1511455607914" FOLDED="true" HGAP="56" ID="ID_1866082603" MODIFIED="1512926193412" TEXT="Untersuchung" VSHIFT="39">
<icon BUILTIN="button_cancel"/>
<node CREATED="1511455644829" FOLDED="true" ID="ID_1545300823" MODIFIED="1512926193407" TEXT="ist generisches Labmda detektierbar?">
<icon BUILTIN="help"/>
<node CREATED="1511482195487" ID="ID_954120351" MODIFIED="1511482198474" TEXT="jein"/>
<node CREATED="1511482200510" ID="ID_714363558" MODIFIED="1511482216359" TEXT="man kann nur einen Funktionsoperator erkennen"/>
<node CREATED="1511482216971" ID="ID_1806534330" MODIFIED="1511482240548" TEXT="nicht aber, wenn ein Solcher mehrere Overloads hat oder ein Template ist"/>
</node>
<node CREATED="1511455664043" FOLDED="true" ID="ID_1966980711" MODIFIED="1512926193407" TEXT="kann man Fallback-Mechanismus bauen?">
<icon BUILTIN="help"/>
<node CREATED="1511455698398" FOLDED="true" ID="ID_91244603" MODIFIED="1512926191747" TEXT="wenn generisch...">
<icon BUILTIN="idea"/>
<node CREATED="1511455705149" ID="ID_1094783485" MODIFIED="1511455710889" TEXT="dann versuche"/>
<node CREATED="1511455711525" ID="ID_1584168712" MODIFIED="1511455721127" TEXT="(a) mit dem Value-Type ins Argument"/>
<node CREATED="1511455721907" ID="ID_312038081" MODIFIED="1511455730558" TEXT="(b) mit dem Iterator-Typ ins Argument"/>
</node>
<node CREATED="1511482247535" FOLDED="true" ID="ID_487969118" MODIFIED="1512926191747" TEXT="geht nicht">
<icon BUILTIN="broken-line"/>
<node CREATED="1511482254927" ID="ID_1687625403" MODIFIED="1511482263673" TEXT="zwar funktionieren die Positiv-F&#xe4;lle"/>
<node CREATED="1511482264405" ID="ID_1003171577" MODIFIED="1511482304307">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      aber eine falsche Template-Instantiierung
    </p>
    <p>
      ist ein <i>Compile</i>-Fehler, kein <i>Substitutions</i>-Fehler
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1511482367184" FOLDED="true" ID="ID_1569720883" MODIFIED="1512926193413" TEXT="bleibt nur...">
<icon BUILTIN="pencil"/>
<node CREATED="1511482374415" FOLDED="true" ID="ID_554184880" MODIFIED="1512926193408" TEXT="maximal ein Versuch">
<icon BUILTIN="yes"/>
<node CREATED="1511482446317" ID="ID_951810826" MODIFIED="1511482457247" TEXT="entweder der Typ der Funktion ist bestimmbar"/>
<node CREATED="1511482457978" ID="ID_564239157" MODIFIED="1511482493455">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      oder man f&#228;llt auf <i>eine</i>&#160;m&#246;gliche Substitution zur&#252;ck
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1511482495719" ID="ID_327135583" MODIFIED="1511482510962">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...und wenn die Scheitert, ist das ein <b>compile</b>-Fehler
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1511482393172" ID="ID_1538766965" MODIFIED="1511572072839" TEXT="das w&#xe4;re dann: den Iterator zu verwenden">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      denn das ist der sinnvollste Fall f&#252;r ein generisches Lambda
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
<node CREATED="1511571955951" FOLDED="true" HGAP="-20" ID="ID_189622415" MODIFIED="1561827469128" TEXT="zOMG: saukomplex" VSHIFT="13">
<icon BUILTIN="smily_bad"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1511572016775" ID="ID_664087042" MODIFIED="1511572067881" TEXT="selbst beim Schreiben steig ich nicht mehr durch">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ....und das ist alarmierend,
    </p>
    <p>
      denn Debugging ist mindestens doppelt so schwer...
    </p>
  </body>
</html></richcontent>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="clanbomber"/>
</node>
<node COLOR="#338800" CREATED="1511578305427" ID="ID_1738957205" MODIFIED="1511578318339" TEXT="alle technischen Details in die Traits">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1511578319810" ID="ID_1918720180" MODIFIED="1511578585730" TEXT="unterst&#xfc;tzte Varianten dokumentieren">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1511578330448" ID="ID_1808038526" MODIFIED="1512955467937" TEXT="alle unterst&#xfc;tzten Varianten im Test abdecken">
<arrowlink COLOR="#5d68b6" DESTINATION="ID_1298407683" ENDARROW="Default" ENDINCLINATION="-53;-200;" ID="Arrow_ID_1214344498" STARTARROW="None" STARTINCLINATION="-292;0;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1511827103749" FOLDED="true" ID="ID_1699316886" MODIFIED="1561827469148" TEXT="transform-Operation">
<icon BUILTIN="button_ok"/>
<node CREATED="1511827249561" ID="ID_794510302" MODIFIED="1511827265634" TEXT="strikt nach Dekorator-Pattern"/>
<node CREATED="1511827337686" FOLDED="true" ID="ID_1214119488" MODIFIED="1561827469128" TEXT="bestehendern TransformIter verwenden?">
<node CREATED="1511827584523" ID="ID_1921395634" MODIFIED="1511827600541" TEXT="nein: wir m&#xfc;ssen von der Core erben">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1511827606968" ID="ID_732051224" MODIFIED="1511827652784" TEXT="aber das Konzept mit dem Result-Holder wiederverwenden">
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1511827717353" FOLDED="true" ID="ID_244629150" MODIFIED="1561827469128" TEXT="Frage: kann man mit ADL &#xfc;berlagern?">
<icon BUILTIN="help"/>
<node CREATED="1511827732399" ID="ID_1358685038" MODIFIED="1511827746408" TEXT="wenn ja: dann m&#xfc;&#xdf;te man nur yield neu implementieren"/>
<node CREATED="1511831100013" FOLDED="true" ID="ID_446486349" MODIFIED="1525124214811" TEXT="ich denke ja...">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1511831114987" ID="ID_371812401" LINK="http://en.cppreference.com/w/cpp/language/adl" MODIFIED="1511831149604" TEXT="ADL findet diverse Kandidaten"/>
<node CREATED="1511831122138" ID="ID_237063151" LINK="http://en.cppreference.com/w/cpp/language/overload_resolution" MODIFIED="1511831139496" TEXT="die Kandidaten werden geRANKt, u.A. nach Vererbung"/>
</node>
</node>
<node CREATED="1511831658137" FOLDED="true" ID="ID_295934398" MODIFIED="1561827469128" TEXT="Dekorator-Ansatz">
<icon BUILTIN="forward"/>
<node CREATED="1512262147649" FOLDED="true" ID="ID_1592901896" MODIFIED="1525124214812" TEXT="Dekorator auf Core">
<icon BUILTIN="button_cancel"/>
<node CREATED="1512262162366" ID="ID_1471773970" MODIFIED="1512262276131" TEXT="kann direkt Core -&gt; Core verarbeiten">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1511831681334" FOLDED="true" ID="ID_1182010965" MODIFIED="1512926193413" TEXT="Unterscheidung nach Parent (per Trait)">
<node CREATED="1511831718105" FOLDED="true" ID="ID_758057732" MODIFIED="1512926193408" TEXT="Parent == state-core">
<node CREATED="1511831731159" ID="ID_1581545445" MODIFIED="1511831735258" TEXT="direkt verwenden"/>
<node CREATED="1511831735870" ID="ID_461566244" MODIFIED="1511831743057" TEXT="bietet bereits die Extension points"/>
</node>
<node CREATED="1511831745237" FOLDED="true" ID="ID_1286724784" MODIFIED="1512926193408" TEXT="Parent == IterableDecorator&lt;Core&gt;">
<node CREATED="1511831773833" ID="ID_1367782989" MODIFIED="1511831783948" TEXT="IterableDecorator wegstrippen"/>
<node CREATED="1511831784823" ID="ID_764863277" MODIFIED="1511831794354" TEXT="Core direkt verwenden (slicing move)"/>
</node>
<node CREATED="1511831840336" FOLDED="true" ID="ID_1853594905" MODIFIED="1512926193408" TEXT="Parent == Lumiera Iterator ">
<node CREATED="1511831893369" ID="ID_1403568713" MODIFIED="1511837159071" TEXT="WrappedIteratorCore dazwischenschieben"/>
</node>
<node CREATED="1511831940346" FOLDED="true" ID="ID_441709942" MODIFIED="1512926193408" TEXT="Resultat: Parent ist stets state-core">
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1512259489938" ID="ID_1357405758" MODIFIED="1512259684029" TEXT="Zweifelhalft">
<linktarget COLOR="#fe2e57" DESTINATION="ID_1357405758" ENDARROW="Default" ENDINCLINATION="1323;-81;" ID="Arrow_ID_550770884" SOURCE="ID_1503180090" STARTARROW="None" STARTINCLINATION="-1297;0;"/>
<icon BUILTIN="yes"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1512259502594" ID="ID_1761695302" MODIFIED="1512259525410" TEXT="sieht nach unn&#xf6;tig verkompliziertem Design aus">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
<node CREATED="1512262200009" FOLDED="true" ID="ID_1921211925" MODIFIED="1512926193413" TEXT="f&#xfc;hrt zu unn&#xf6;tig komplexem Design">
<icon BUILTIN="button_cancel"/>
<node CREATED="1512262213016" ID="ID_1547313420" MODIFIED="1512262221626" TEXT="wir haben jetzt &quot;zwei Schienen&quot;"/>
<node CREATED="1512262222470" ID="ID_589647672" MODIFIED="1512262236880" TEXT="und es ist nicht mehr klar, was die Quelle ist"/>
</node>
</node>
<node CREATED="1512262251706" FOLDED="true" ID="ID_1480384220" MODIFIED="1525124214812" TEXT="Dekorator auf Iterator">
<node CREATED="1512262291085" FOLDED="true" ID="ID_1532344112" MODIFIED="1512926193413" TEXT="f&#xfc;r jeden Layer">
<node CREATED="1512262299476" ID="ID_102544445" MODIFIED="1512262325001">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      TreeExplorer per <i>slicing move</i>&#160;entfernen
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1512262331008" ID="ID_287760536" MODIFIED="1512262346625" TEXT="enthaltenen SrcIter dekorieren -&gt; Core"/>
<node CREATED="1512262347637" ID="ID_1683477051" MODIFIED="1512262371854" TEXT="erneut einen TreeExplorer dar&#xfc;ber adaptieren"/>
</node>
<node CREATED="1512262480339" FOLDED="true" ID="ID_62641165" MODIFIED="1512926193413" TEXT="Problem: Parent-Auswahl">
<node CREATED="1512262491362" ID="ID_1646804403" MODIFIED="1512262505036" TEXT="wir k&#xf6;nnen beliebig verschachteln"/>
<node CREATED="1512262505760" ID="ID_534073442" MODIFIED="1512262514890" TEXT="der Trait k&#xf6;nnte eine tiefere Schicht greifen"/>
<node CREATED="1512262516143" FOLDED="true" ID="ID_1514197178" MODIFIED="1512926193408" TEXT="L&#xf6;sung">
<node CREATED="1512262521070" ID="ID_1457239407" MODIFIED="1512262528041" TEXT="geht nur in diesem limitierten Kontext"/>
<node CREATED="1512262528836" ID="ID_879672594" MODIFIED="1512262550733" TEXT="Core bekommt Vorfahrt"/>
<node CREATED="1512262584301" ID="ID_387075989" MODIFIED="1512262598534" TEXT="Folge: Alle Layer m&#xfc;ssen neue Core produzieren">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1511918986936" FOLDED="true" ID="ID_667088953" MODIFIED="1561827469128" TEXT="Konstrukt">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1511919003054" FOLDED="true" ID="ID_1728459315" MODIFIED="1525124214812" TEXT="Aufsetz-Punkt">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1511919032171" FOLDED="true" ID="ID_737737817" MODIFIED="1512926193413" TEXT="Problem Parent::Iterator">
<icon BUILTIN="button_ok"/>
<node CREATED="1511919050960" ID="ID_1621131204" MODIFIED="1512256810082" TEXT="grunds&#xe4;tzliches Problem jedes Iterator-Dekorators">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      wir haben bisher viel zu naiv angenommen,
    </p>
    <p>
      da&#223; der parent-Iterator immer auch ein TreeExploer ist.
    </p>
    <p>
      
    </p>
    <p>
      Dem ist nicht so, ab dem Moment, wo wir mehrere Decorator-Layer haben!!
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1511920447698" ID="ID_1780310210" MODIFIED="1511920468027" TEXT="gesucht: der Iterator, von dem wir Werte beziehen"/>
<node CREATED="1512010545747" ID="ID_1907550" MODIFIED="1512010612995" TEXT="Idee: das ist genau das, was _TreeExplorerTraits leistet">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1512010566105" ID="ID_1750414732" MODIFIED="1512010610681" TEXT="Umbenennung: _DecoratorTraits">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1512010575367" FOLDED="true" ID="ID_736035875" MODIFIED="1512926193408" TEXT="soll k&#xfc;nftig zwei F&#xe4;lle unterst&#xfc;tzen">
<icon BUILTIN="button_cancel"/>
<node CREATED="1512010586173" ID="ID_1016627565" MODIFIED="1512010597616" TEXT="Finde parent-Iterator"/>
<node CREATED="1512010598540" FOLDED="true" ID="ID_771604715" MODIFIED="1512926191759" TEXT="Finde parent-Core">
<icon BUILTIN="button_cancel"/>
<node CREATED="1512271542268" ID="ID_1668978885" MODIFIED="1512271546128" TEXT="war keine gute Idee"/>
</node>
</node>
<node CREATED="1512271554250" FOLDED="true" ID="ID_6017634" MODIFIED="1512926193408" TEXT="gel&#xf6;st durch stets regelm&#xe4;&#xdf;igen Aufbau der Dekorator-Kette">
<node CREATED="1512271577423" ID="ID_1273633642" MODIFIED="1512271590865" TEXT="TreeExplorer wird gestrippt"/>
<node CREATED="1512271591477" ID="ID_1932230950" MODIFIED="1512271605470" TEXT="Konsequenz: unmittelbare Src == Lumiera Iterator stets">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1511837060201" FOLDED="true" ID="ID_88038793" MODIFIED="1512926193413" TEXT="brauche WrappedIteratorCore">
<icon BUILTIN="button_ok"/>
<node CREATED="1512010365276" ID="ID_956716570" MODIFIED="1512010370631" TEXT="verpackt einen Iterator"/>
<node CREATED="1512010371291" ID="ID_563900951" MODIFIED="1512010383805" TEXT="bietet die ExtensionPoints einer State-Core"/>
</node>
</node>
<node COLOR="#338800" CREATED="1511837027405" FOLDED="true" ID="ID_233806852" MODIFIED="1525124214812" TEXT="Argument-Detektor-Magie">
<icon BUILTIN="button_ok"/>
<node CREATED="1511837039180" ID="ID_1296099637" MODIFIED="1512278401909" TEXT="ganz analog zur expand-Operation">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1511837047810" FOLDED="true" ID="ID_684902103" MODIFIED="1512926193414" TEXT="kann man die Traits wiederverwenden?">
<node CREATED="1512179380102" ID="ID_657845891" MODIFIED="1512179382618" TEXT="schaut gut aus"/>
<node CREATED="1512182255367" FOLDED="true" ID="ID_1818058437" MODIFIED="1512926193409" TEXT="Funktor-Argument">
<node CREATED="1512182288514" ID="ID_1838064094" MODIFIED="1512182295010" TEXT="bestehende Impl verwenden">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1512182296169" ID="ID_770503153" MODIFIED="1512182333744" TEXT="mu&#xdf; Info aus dem Funktor gewinnen">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1512182308255" FOLDED="true" ID="ID_215116122" MODIFIED="1512271761209" TEXT="komme mit generischem Lambda in den Value-Zweig">
<linktarget COLOR="#a83e54" DESTINATION="ID_215116122" ENDARROW="Default" ENDINCLINATION="351;347;" ID="Arrow_ID_891457048" SOURCE="ID_23118252" STARTARROW="None" STARTINCLINATION="683;0;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1512182336428" ID="ID_1075031476" MODIFIED="1512271631969" TEXT="WTF??">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1512182366016" FOLDED="true" ID="ID_146727217" MODIFIED="1512926191761">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Aufrufpunkt: <b>invokeTransformation</b>()
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      In instantiation of 'lib::{anonymous}::_ExpansionTraits&lt;FUN, SRC&gt;::Res lib::{anonymous}::_ExpansionTraits&lt;FUN, SRC&gt;::Functor::operator()(ARG&amp;) [with ARG = long int; FUN = lib::test::IterTreeExplorer_test::verify_transformOperation()::&lt;lambda(auto:2)&gt;&amp;; SRC = lib::iter_explorer::IterableDecorator&lt;long int, lib::iter_explorer::WrappedIteratorCore&lt;lib::TreeExplorer&lt;lib::iter_explorer::StlRange&lt;std::vector&lt;long int&gt;&amp;&gt; &gt; &gt; &gt;; lib::{anonymous}::_ExpansionTraits&lt;FUN, SRC&gt;::Res = std::basic_string&lt;char&gt;]':
    </p>
    <p>
      
    </p>
    <p>
      src/lib/iter-tree-explorer.hpp:426:50: error: no match for call to '(std::function&lt;std::basic_string&lt;char&gt;(lib::iter_explorer::IterableDecorator&lt;long int, lib::iter_explorer::WrappedIteratorCore&lt;lib::TreeExplorer&lt;lib::iter_explorer::StlRange&lt;std::vector&lt;long int&gt;&amp;&gt; &gt; &gt; &gt;&amp;)&gt;) (long int&amp;)'
    </p>
  </body>
</html></richcontent>
<node CREATED="1512182627492" FOLDED="true" ID="ID_900469807" MODIFIED="1512926191761" TEXT="ARG = long">
<node CREATED="1512182636875" ID="ID_995259969" MODIFIED="1512182643174" TEXT="mu&#xdf; von yield stammen"/>
<node CREATED="1512183058625" ID="ID_1212399223" MODIFIED="1512183084458" TEXT="wir stehen in Transformer&lt;COR..."/>
<node CREATED="1512183107627" ID="ID_1096980589" MODIFIED="1512183113342" TEXT="with COR = lib::iter_explorer::WrappedIteratorCore&lt;lib::TreeExplorer..."/>
<node CREATED="1512183054810" ID="ID_1399207561" MODIFIED="1512183133267" TEXT="typename IT::reference yield(WrappedIteratorCore const&amp;)"/>
<node CREATED="1512183140886" ID="ID_549090759" MODIFIED="1512183150825" TEXT="IT = TreeExplorer"/>
<node CREATED="1512183151693" ID="ID_621724350" MODIFIED="1512183166319" TEXT="IT::reference == long&amp;"/>
</node>
<node CREATED="1512182644930" FOLDED="true" ID="ID_772628629" MODIFIED="1512926191761" TEXT="was ist SRC?">
<node CREATED="1512182682149" ID="ID_1240670384" MODIFIED="1512182695423" TEXT="IterableDecorator&lt;long, WrappedIteratorCore&lt;...."/>
<node CREATED="1512182696579" ID="ID_1928279872" MODIFIED="1512182724615">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      also IterableDecorator aufgesetzt auf die Core <i>im</i>&#160;Transformer
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1512182741053" FOLDED="true" ID="ID_142258086" MODIFIED="1512926191761" TEXT="Vermutung">
<icon BUILTIN="button_ok"/>
<node CREATED="1512182747492" FOLDED="true" ID="ID_1749262679" MODIFIED="1512926191761" TEXT="SRC ist korrekt">
<node COLOR="#338800" CREATED="1512182891904" ID="ID_391517148" MODIFIED="1512182895697" TEXT="best&#xe4;tigt">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1512182897327" ID="ID_131392784" MODIFIED="1512182918440" TEXT="_ExpansionTraits haben den vorhandenen SrcIterator genommen"/>
<node CREATED="1512182919148" ID="ID_1915639648" MODIFIED="1512182927165" TEXT="genauso wie sie sollen!">
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node COLOR="#338800" CREATED="1512182752899" ID="ID_1075110241" MODIFIED="1512182940147" TEXT="wir sind im Iterator-Zweig, da generisches Lambda">
<icon BUILTIN="idea"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1512182770497" ID="ID_301580428" MODIFIED="1512182786929" TEXT="also ist das ARG das Problem">
<icon BUILTIN="forward"/>
</node>
</node>
</node>
</node>
<node CREATED="1512183184560" FOLDED="true" ID="ID_1174618775" MODIFIED="1512926191762" TEXT="Anpassungs-Logik fehlt">
<icon BUILTIN="button_ok"/>
<node CREATED="1512183196119" ID="ID_1543276489" MODIFIED="1512183210239" TEXT="hatte nur den Sonnenschein-Fall gecodet">
<icon BUILTIN="smiley-angry"/>
</node>
<node CREATED="1512183218675" FOLDED="true" ID="ID_293046899" MODIFIED="1512271754033" TEXT="brauche Adapter um yield">
<icon BUILTIN="button_cancel"/>
<node CREATED="1512183306032" ID="ID_710747972" MODIFIED="1512183310819" TEXT="normalerweise 1:1"/>
<node CREATED="1512183311551" FOLDED="true" ID="ID_783747294" MODIFIED="1512926191761" TEXT="aber je nach Funktion...">
<node CREATED="1512183380565" ID="ID_1649641461" MODIFIED="1512183407885" TEXT="auf Core heben"/>
<node CREATED="1512183408546" ID="ID_1438983384" MODIFIED="1512183418596" TEXT="oder sogar auf SrcIter heben"/>
</node>
<node CREATED="1512250716674" ID="ID_1607046573" MODIFIED="1512250752714" TEXT="nein, das w&#xfc;rde das ganze System aufdoppeln">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1512250754085" FOLDED="true" ID="ID_1665621288" MODIFIED="1512926191762" TEXT="warum &#xfc;berhaupt zwei Systeme?">
<icon BUILTIN="help"/>
<node CREATED="1512250771874" ID="ID_59094155" MODIFIED="1512250776853" TEXT="theoretisch k&#xf6;nnte man...."/>
<node CREATED="1512250778322" ID="ID_52171581" MODIFIED="1512250802562" TEXT="immer wieder in einen WrappedIteratorCore einpacken"/>
<node CREATED="1512250807318" FOLDED="true" ID="ID_1268505006" MODIFIED="1512926191761" TEXT="das w&#xe4;ren zwei Indirektionen pro Layer....">
<node CREATED="1512250866126" ID="ID_739491519" MODIFIED="1512250917460" TEXT="zwar optimierbar">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      wir gehen davon aus,
    </p>
    <p>
      da&#223; der Optimizer solche inline-Accessor-Funktionen
    </p>
    <p>
      ohnehin restlos wegoptimieren wird
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1512250874420" ID="ID_407939641" MODIFIED="1512250969766" TEXT="aber zus&#xe4;tzlicher Code-Aufwand">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      und zwar in dem Moment, wo man die Layer zusammensetzt.
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1512250977247" FOLDED="true" ID="ID_363861413" MODIFIED="1512926191762" TEXT="letztlich egal, also automatisch Konverter einf&#xfc;gen">
<icon BUILTIN="button_cancel"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1512259544994" ID="ID_702123443" MODIFIED="1512259564650" TEXT="Problem: mu&#xdf; auf Iterator hochkasten">
<icon BUILTIN="clanbomber"/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1512259576702" ID="ID_1668053426" MODIFIED="1512259606959" TEXT="Problem: Fehl-Match auf tiefer liegende Core">
<icon BUILTIN="clanbomber"/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1512259608498" ID="ID_1503180090" MODIFIED="1512259684029" TEXT="versautes Design">
<arrowlink COLOR="#fe2e57" DESTINATION="ID_1357405758" ENDARROW="Default" ENDINCLINATION="1323;-81;" ID="Arrow_ID_550770884" STARTARROW="None" STARTINCLINATION="-1297;0;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="17"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1512262620480" ID="ID_967757075" MODIFIED="1512262626861" TEXT="Design aufgegeben">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node CREATED="1512183706657" FOLDED="true" ID="ID_1135345978" MODIFIED="1512271747585" TEXT="oder: dritter Zweig in ArgAcessor?">
<icon BUILTIN="button_cancel"/>
<node CREATED="1512251027232" ID="ID_755375196" MODIFIED="1512251042682" TEXT="soll also universell die F&#xe4;lle adaptieren k&#xf6;nnen"/>
<node CREATED="1512251172916" FOLDED="true" ID="ID_378084629" MODIFIED="1512926191762" TEXT="Entscheidung: StateCore wird bevorzugt">
<icon BUILTIN="button_cancel"/>
<node CREATED="1512251214046" ID="ID_1353274464" MODIFIED="1512251270499" TEXT="Konsequenz: alle Layer m&#xfc;ssen StateCore sein">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...denn wenn mal ein Layer &quot;nur&quot; Iterator w&#228;re,
    </p>
    <p>
      dann k&#246;nnte es eine Kombination geben, die einen solchen Layer &#252;bersrpingt
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1512251276054" ID="ID_236669144" MODIFIED="1512251283329" TEXT="Kurzschlu&#xdf; Core -&gt; Core"/>
</node>
<node CREATED="1512251305810" ID="ID_737982099" MODIFIED="1512271742802" TEXT="Iterator nur, wenn Quelle keine Core ist">
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node COLOR="#338800" CREATED="1512271698231" ID="ID_1260885042" MODIFIED="1512271712854" TEXT="gel&#xf6;st durch Bereinigung des Design">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1512007357412" FOLDED="true" ID="ID_1659237225" MODIFIED="1512926193414" TEXT="was bedeutet ein generisches Lambda?">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="help"/>
<node CREATED="1512010394800" ID="ID_930446802" MODIFIED="1512010402763" TEXT="analog zu expand handhaben">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1512010405199" ID="ID_810102842" MODIFIED="1512010424574" TEXT="Konsequenz: auch Transform kann auf Iteratoren arbeiten">
<icon BUILTIN="forward"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1512179383254" FOLDED="true" ID="ID_1554412479" MODIFIED="1525124214812" TEXT="mu&#xdf; value_type from Funktor gewinnen">
<icon BUILTIN="button_ok"/>
<node CREATED="1512181398331" ID="ID_1715550480" MODIFIED="1512181407142" TEXT="value_type rebinden"/>
<node CREATED="1512181407778" ID="ID_782984508" MODIFIED="1512181425706" TEXT="generischen Helper von IterAdapter">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1512181416881" ID="ID_229445720" MODIFIED="1512181423185" TEXT="verallgemeinern, rund machen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1512183524170" FOLDED="true" ID="ID_1697656461" MODIFIED="1512926193414" TEXT="TODO: isStringLike in meta/traits.hpp">
<icon BUILTIN="button_ok"/>
<node CREATED="1512183546319" ID="ID_1699019563" MODIFIED="1512183561888" TEXT="warum geht &quot;basically&quot; bis auf den Pointer?"/>
<node CREATED="1512183562621" ID="ID_57742709" MODIFIED="1512183571160" TEXT="logisch w&#xe4;re nur bis zur Referenz"/>
<node CREATED="1512183572244" ID="ID_1399145205" MODIFIED="1512183587645" TEXT="denn: string* ist nix String-artiges!!!"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1511837279715" FOLDED="true" ID="ID_1694539348" MODIFIED="1561827469148" TEXT="filter-Operation">
<icon BUILTIN="button_ok"/>
<node CREATED="1511837285306" FOLDED="true" ID="ID_928417859" MODIFIED="1561827469128" TEXT="der Vollst&#xe4;ndigkeit halber">
<node CREATED="1511837296921" ID="ID_151298846" MODIFIED="1511837304547" TEXT="ist zwar redundant zu den Itertools"/>
<node CREATED="1511837305410" ID="ID_1979322634" MODIFIED="1511837324464" TEXT="treeExplorer k&#xf6;nnte Itertools abl&#xf6;sen">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#338800" CREATED="1511837329140" FOLDED="true" ID="ID_1963360740" MODIFIED="1561827469129" TEXT="billige Implementierung nach Schema-F">
<icon BUILTIN="button_ok"/>
<node CREATED="1511837338643" ID="ID_1734683995" MODIFIED="1511837344590" TEXT="bestehende Dekorator-Technik"/>
<node CREATED="1511837345226" ID="ID_991593174" MODIFIED="1511837351797" TEXT="bestehende Funktor-Argument-Traits"/>
</node>
<node COLOR="#338800" CREATED="1512523892775" FOLDED="true" ID="ID_673112014" MODIFIED="1561827469129" TEXT="Knackpunkt">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1512523897422" ID="ID_1007287631" MODIFIED="1512606862773" TEXT="pullFilter">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1512523905005" ID="ID_1286045611" MODIFIED="1512523921543" TEXT="wie &quot;ausgewertet&quot; merken?">
<icon BUILTIN="help"/>
</node>
<node CREATED="1512606810364" FOLDED="true" ID="ID_1956085441" MODIFIED="1525124214814" STYLE="fork" TEXT="garnicht">
<icon BUILTIN="yes"/>
<node CREATED="1512606816571" ID="ID_1603234787" MODIFIED="1512606853200" TEXT="mit INVARIANTE arbeiten">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1512606823682" ID="ID_1935971404" MODIFIED="1512606853200" TEXT="erfordert vorauseilendes Pullen">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1514747001446" FOLDED="true" ID="ID_127783087" MODIFIED="1561827469148" TEXT="scheduled-expand">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1514747011989" ID="ID_108671176" MODIFIED="1514827156021" TEXT="neuer Layer">
<linktarget COLOR="#455b75" DESTINATION="ID_108671176" ENDARROW="Default" ENDINCLINATION="-973;135;" ID="Arrow_ID_1758556486" SOURCE="ID_836777766" STARTARROW="None" STARTINCLINATION="959;0;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1514747015924" ID="ID_174806510" MODIFIED="1514827157932" TEXT="bool-flag">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1514747019740" ID="ID_1271277454" MODIFIED="1514827160424" TEXT="klinkt sich in iterNext ein">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1514747033674" FOLDED="true" ID="ID_690243302" MODIFIED="1561827469129" TEXT="auf API herausf&#xfc;hren">
<icon BUILTIN="button_cancel"/>
<node CREATED="1514827186488" ID="ID_43343693" MODIFIED="1514827189500" TEXT="nicht notwendig"/>
<node CREATED="1514827202646" ID="ID_981896608" MODIFIED="1514827218316" TEXT="hijacked the existing expandChildren()">
<icon BUILTIN="ksmiletris"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1512363846804" FOLDED="true" ID="ID_1346062807" MODIFIED="1561827469148" TEXT="auto-expand">
<icon BUILTIN="button_ok"/>
<node CREATED="1512844658352" ID="ID_1411659026" MODIFIED="1512844688077" TEXT="einfache Auspr&#xe4;gung">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...nur was billig ist,
    </p>
    <p>
      denn im Moment brauchen wir das &#252;berhaupt nicht
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1512844696922" FOLDED="true" ID="ID_396632754" MODIFIED="1561827469129" TEXT="zus&#xe4;tzlicher Dekorator">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...setzt eigentliche Expand-Operation darunter voraus
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
<node CREATED="1512861383695" ID="ID_837026008" MODIFIED="1512861394833" TEXT="setzt direkt auf drunterliegender State Core auf"/>
<node CREATED="1512861401133" ID="ID_930964397" MODIFIED="1512861421774" TEXT="ersetzt nur eine der State-Core-Operationen"/>
<node CREATED="1512861424976" ID="ID_1203553918" MODIFIED="1512861431277" TEXT="sehr einfach, da Typ gleich bleibt"/>
</node>
<node COLOR="#338800" CREATED="1512844727150" FOLDED="true" ID="ID_706634236" MODIFIED="1561827469129" TEXT="expandAll">
<icon BUILTIN="button_ok"/>
<node CREATED="1512844742788" ID="ID_1270260953" MODIFIED="1512844748479" TEXT="expandChildren verz&#xf6;gert"/>
<node CREATED="1512844749235" ID="ID_1344028360" MODIFIED="1512844759661" TEXT="ausgel&#xf6;st durch Iteration"/>
<node CREATED="1512861437832" ID="ID_922141164" MODIFIED="1512861464189" TEXT="iterate() durch expandChildren() ersetzt">
<icon BUILTIN="forward"/>
</node>
</node>
<node CREATED="1512844733549" FOLDED="true" ID="ID_1055588501" MODIFIED="1561827469129" TEXT="expandLeaf">
<icon BUILTIN="button_cancel"/>
<node CREATED="1512844769176" ID="ID_1306087014" MODIFIED="1512844774891" TEXT="expandChildren eager"/>
<node CREATED="1512844775893" ID="ID_781402390" MODIFIED="1512844784866" TEXT="sofort erstes Kind liefern"/>
<node CREATED="1512844785526" ID="ID_244222856" MODIFIED="1512844788897" TEXT="rekursiv"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1512872529062" FOLDED="true" ID="ID_1993110543" MODIFIED="1525124214817" TEXT="geht nicht einfach">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1512872546187" FOLDED="true" ID="ID_633024773" MODIFIED="1512926193414" TEXT="Problem: Blatt erkennen">
<node CREATED="1512872574000" ID="ID_262264527" MODIFIED="1512872587090" TEXT="m&#xfc;&#xdf;te auf dem letzten Ergebnis stehen bleiben"/>
<node CREATED="1512872560761" ID="ID_1013659640" MODIFIED="1512872573339" TEXT="expandChildren() geht einfach weiter"/>
</node>
<node CREATED="1512872618801" FOLDED="true" ID="ID_1769639916" MODIFIED="1512926193414" TEXT="nur in Expander selber implementierbar">
<icon BUILTIN="idea"/>
<node CREATED="1512872646574" ID="ID_419478495" MODIFIED="1512872658944" TEXT="eager feed"/>
<node CREATED="1512872676162" ID="ID_1452543628" MODIFIED="1512872683205" TEXT="sofort weiter expanden"/>
<node CREATED="1512872684337" ID="ID_90684575" MODIFIED="1512872695451" TEXT="aber am Ende nicht weiterschalten"/>
</node>
<node CREATED="1512875104589" FOLDED="true" ID="ID_477086316" MODIFIED="1512926193414" TEXT="Frage: sinnvoll?">
<icon BUILTIN="help"/>
<node COLOR="#338800" CREATED="1512875141521" ID="ID_152225336" MODIFIED="1512875149513" TEXT="versuchshalber mal eingebaut">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1512875161638" ID="ID_681111567" MODIFIED="1512875181807" TEXT="ist es die zus&#xe4;tzliche Komplexit&#xe4;t wert?">
<icon BUILTIN="help"/>
</node>
</node>
</node>
<node CREATED="1512951786574" FOLDED="true" ID="ID_1699122692" MODIFIED="1525124214817" TEXT="erfordert Umbau des Expanders">
<icon BUILTIN="stop-sign"/>
<node CREATED="1512951797493" ID="ID_1560754078" MODIFIED="1512951806384" TEXT="brauche verschiedene Auswertungs-Strategien"/>
<node CREATED="1512951807371" ID="ID_1239289160" MODIFIED="1512951840907" TEXT="mu&#xdf; f&#xfc;r diesen Fall selbst&#xe4;ndig terminieren"/>
<node CREATED="1512951841703" ID="ID_815720383" MODIFIED="1512951903322" TEXT="&quot;komplett entfaltet&quot; wird zur Invariante">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...also Programmierung analog zum Filter
    </p>
    <ul>
      <li>
        sofort aus dem Konstruktor heraus die Invariante etablieren
      </li>
      <li>
        nach jedem Iterations-Schritt die Invariante erneut wiederherstellen
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1512951913398" FOLDED="true" ID="ID_488089119" MODIFIED="1525124214817" TEXT="Komplexit&#xe4;t im Moment nicht gerechtfertigt">
<icon BUILTIN="yes"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1512951939794" ID="ID_516260277" MODIFIED="1512951952752" TEXT="Monaden sind gef&#xe4;hrlich">
<icon BUILTIN="smiley-angry"/>
</node>
<node CREATED="1512951955616" ID="ID_529939230" MODIFIED="1512951965123" TEXT="sie verleiten zu Glasperlen-Spielen"/>
<node CREATED="1512951978101" ID="ID_489027143" MODIFIED="1512952012416" TEXT="Leitlinie f&#xfc;r gutes Design">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      der Natur der Dinge folgen,
    </p>
    <p>
      nicht den technischen M&#246;glichkeiten
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="forward"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1512363286920" FOLDED="true" ID="ID_1420123769" MODIFIED="1561827469149" TEXT="Zusammenspiel">
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1512844805995" FOLDED="true" ID="ID_927486947" MODIFIED="1561827469129" TEXT="single-val">
<icon BUILTIN="help"/>
<node CREATED="1512844821609" ID="ID_478047650" MODIFIED="1512844824644" TEXT="man k&#xf6;nnte...."/>
<node CREATED="1512844825280" ID="ID_1599364674" MODIFIED="1512844833243" TEXT="einzelne Werte in einen Iterator &quot;heben&quot;"/>
<node CREATED="1512844833952" ID="ID_1979934919" MODIFIED="1512844840138" TEXT="sinnvoll nur in der Expand-Funktion"/>
<node CREATED="1512951745988" ID="ID_1788253058" MODIFIED="1512951758010" TEXT="vorerst nicht weiterverfolgt">
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node COLOR="#338800" CREATED="1512363297486" FOLDED="true" ID="ID_531127457" MODIFIED="1561827469129" TEXT="re-evaluate">
<linktarget COLOR="#5a92a2" DESTINATION="ID_531127457" ENDARROW="Default" ENDINCLINATION="385;167;" ID="Arrow_ID_556443427" SOURCE="ID_579206895" STARTARROW="None" STARTINCLINATION="844;55;"/>
<icon BUILTIN="button_ok"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1512363369036" FOLDED="true" ID="ID_134602126" MODIFIED="1525124214820" TEXT="Problem Quell-&#xc4;nderung">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1512363380411" ID="ID_1008917631" MODIFIED="1512363473668" TEXT="expandChildren &#xe4;ndert aktuellen Gehalt der Quelle">
<icon BUILTIN="info"/>
</node>
<node COLOR="#338800" CREATED="1512363397897" ID="ID_1178182932" MODIFIED="1512521936459" TEXT="aber downstream reagiert (bisher) nur auf iterate()">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1512363421797" ID="ID_1732504592" MODIFIED="1512521966101" TEXT="Folge: geCacheter Wert aus Transformer &#xfc;berdeckt">
<font NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="broken-line"/>
</node>
</node>
<node CREATED="1512363518944" FOLDED="true" HGAP="38" ID="ID_1189860266" MODIFIED="1525124214820" TEXT="L&#xf6;sungsidee" VSHIFT="11">
<icon BUILTIN="idea"/>
<node CREATED="1512363525815" ID="ID_108313040" MODIFIED="1512363819912" TEXT="Hook, auf den alle reagieren">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
<node CREATED="1512439571337" FOLDED="true" ID="ID_1930899435" MODIFIED="1512926193414" TEXT="Analyse">
<icon BUILTIN="info"/>
<node CREATED="1512363586327" FOLDED="true" ID="ID_594917391" MODIFIED="1512926193409" TEXT="TreeExplorer wird Update-Manager">
<icon BUILTIN="button_cancel"/>
<node CREATED="1512439586771" ID="ID_1378758194" MODIFIED="1512439588983" TEXT="geht nicht"/>
<node CREATED="1512439589594" ID="ID_1211811605" MODIFIED="1512439628493" TEXT="Transformer rufen sich wechselseitig">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ....und dann k&#246;nnten diese Transformer in der Kette
    </p>
    <p>
      nicht mehr die expandChildren aufrufen
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1512439636532" FOLDED="true" ID="ID_443920458" MODIFIED="1512926193409" TEXT="refresh()-Call im internen API">
<icon BUILTIN="button_cancel"/>
<node CREATED="1512439680078" ID="ID_795639412" MODIFIED="1512439682641" TEXT="geht nicht"/>
<node CREATED="1512439683710" ID="ID_82602719" MODIFIED="1512439807833" TEXT="ohne VTable k&#xf6;nnen wir niemals von Parent -&gt; Subklasse aufrufen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...das hei&#223;t, es ist nicht m&#246;glich,
    </p>
    <p>
      da&#223; ein Layer irgendwo in der Mitte einen solchen generischen Hook aufruft.
    </p>
    <p>
      Es sei denn, man speichert einen Funktion-Pointer in der Basis,
    </p>
    <p>
      oder nimmt eben gleich eine virtuelle Funktion.
    </p>
    <p>
      
    </p>
    <p>
      Das ist aber hier aus grunds&#228;tzlichen &#220;berlegungen heraus keine Option
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1512439832865" FOLDED="true" ID="ID_1782781235" MODIFIED="1512926193409" TEXT="anderes Iterator-API">
<icon BUILTIN="button_cancel"/>
<node CREATED="1512439845112" ID="ID_751119405" MODIFIED="1512439849499" TEXT="geht nicht"/>
<node CREATED="1512439850087" ID="ID_1018141727" MODIFIED="1512440143615">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      das IterStateWrapper-API ist <i>optimal</i>
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      unter der Annahme, da&#223; wir beim <b>Lumiera Forward Iterator</b>&#160;- Konzept bleiben
    </p>
    <p>
      
    </p>
    <p>
      -- das hei&#223;t, beliebig oft yield, und Iterations-Ende per bool()-Test
    </p>
    <p>
      
    </p>
    <p>
      Unter dieser Annahme kommt yield stets vor iterNext (wenn &#252;berhaupt).
    </p>
    <p>
      Und yield mu&#223; (a) einen Status liefern, (b) einen Wert liefern.
    </p>
    <p>
      Einziger Ausweg w&#228;re, wie das IterAdapter macht, einen Pointer rauszugeben.
    </p>
    <p>
      Das ist eigentlich keine gute L&#246;sung, weil die Implementierung dann sehr tricky wird.
    </p>
    <p>
      Siehe IterAdapter als absto&#223;endes Beispiel.
    </p>
    <p>
      Und als weitere Alternative bleibt nur die Einf&#252;hrung von State, und das bedeutet,
    </p>
    <p>
      sich im Iterator oder in der Implementierung irgendwo noch eine zus&#228;tzliche bool-Flag zu speichern.
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1512440148015" FOLDED="true" ID="ID_1475512070" MODIFIED="1512926193409" TEXT="Einzige L&#xf6;sung">
<icon BUILTIN="yes"/>
<node CREATED="1512440158486" ID="ID_1167307993" MODIFIED="1512440175103" TEXT="alle Layer, die darauf angewiesen sind...."/>
<node CREATED="1512440175931" ID="ID_808598503" MODIFIED="1512440193040">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      implementieren ebenfalls <b>expandChildren</b>()
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1512440216070" FOLDED="true" ID="ID_1808232294" MODIFIED="1525124214820" TEXT="Konsequenz der Analyse">
<icon BUILTIN="button_ok"/>
<node CREATED="1512440223221" ID="ID_741091948" MODIFIED="1512512823480" TEXT="warum verwenden wir &#xfc;berhaupt ADL-Funktionen??">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1512440238859" ID="ID_1975957673" MODIFIED="1512440262159" TEXT="wir brauchen hier gar keinen &quot;Extension Point&quot;">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ganz anders als bei IterAdapter, wo das Sinn macht...
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1512440263551" ID="ID_1524108340" MODIFIED="1512440285896" TEXT="Dagegen k&#xf6;nnte die &quot;state core&quot; sehr wohl genau dieses API exponieren."/>
<node CREATED="1512440286772" FOLDED="true" ID="ID_535994508" MODIFIED="1512926193414" TEXT="wir brauchen deshalb nicht gleich ein Interface einf&#xfc;hren">
<icon BUILTIN="idea"/>
<node CREATED="1512440307185" ID="ID_1513737160" MODIFIED="1512440431319" TEXT="weil das doch nicht gecheckt werden kann">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...ohne da&#223; die Funktionen auch virtuell sind,
    </p>
    <p>
      k&#246;nnen wir nicht sicherstellen
    </p>
    <ul>
      <li>
        da&#223; die hereingereichte Implementierung die Funktionen &#252;berschreibt
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node CREATED="1512440341573" ID="ID_1804763032" MODIFIED="1512440348845" TEXT="wir k&#xf6;nnen bis 2020 warten...">
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1512440360194" ID="ID_1554793680" MODIFIED="1512440375486" TEXT="es ist n&#xe4;mlich ein Concept"/>
</node>
<node COLOR="#338800" CREATED="1512516448421" ID="ID_980580862" MODIFIED="1512516469297" TEXT="Umstellen aller bestehenden IterstateWrapper">
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#338800" CREATED="1512516493271" FOLDED="true" HGAP="14" ID="ID_1713522306" MODIFIED="1525124214820" TEXT="Implementierung" VSHIFT="7">
<icon BUILTIN="button_ok"/>
<node CREATED="1512516499478" ID="ID_1331925282" MODIFIED="1512516507112" TEXT="f&#xfc;hre Base-Layer ein"/>
<node CREATED="1512516508341" ID="ID_1894692287" MODIFIED="1512516517207" TEXT="dieser konsumiert die nach unten durchtereichten Aufrufe"/>
<node CREATED="1512516517915" ID="ID_1224748245" MODIFIED="1512516534101" TEXT="einzelne Layer k&#xf6;nne bei Bedarf ebenfalls diese Ketten-Aufrufe implementieren"/>
<node CREATED="1512516534761" FOLDED="true" ID="ID_111530510" MODIFIED="1512926193414" TEXT="speziell expandChildren()">
<node CREATED="1512516543648" ID="ID_1021495966" MODIFIED="1512516558578" TEXT="transformer mu&#xdf; daraufhin seinen Cache wegwerfen"/>
<node CREATED="1512516567076" ID="ID_647647031" MODIFIED="1512516587342" TEXT="filter mu&#xdf; daraufhin erneut filter-pull ausf&#xfc;hren"/>
</node>
<node CREATED="1512516613614" FOLDED="true" ID="ID_1415224184" MODIFIED="1512926193415">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Konzept funktioniert nicht
    </p>
    <p>
      aus processing-Function
    </p>
    <p>
      innen heraus
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1512516629180" ID="ID_1157813472" MODIFIED="1512516672998" TEXT="oh wie traurig">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      will sagen, das ist ja auch eine durchgeknallte Idee....
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="smiley-oh"/>
</node>
<node CREATED="1512516682701" ID="ID_1471867999" MODIFIED="1512516706422">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      wenn eine Funktion <i>in</i>&#160;einem Layer expanded
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1512516708649" ID="ID_474656011" MODIFIED="1512516797884" TEXT="dann mu&#xdf; sie sich zwischen Vater oder 1.Kind entscheiden">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...d.h, entweder man gibt aus dem Functor das zur&#252;ck,
    </p>
    <p>
      was <i>vor</i>&#160;dem expand anstand (=der Vater), oder man verwirft diesen
    </p>
    <p>
      und liefert das, was nach dem expand erscheind
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1512516799653" ID="ID_589615050" MODIFIED="1512516811504" TEXT="nicht als Fehler bewertet">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1512516814507" ID="ID_347481974" MODIFIED="1512516819130" TEXT="eigentlich logisch">
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node CREATED="1512794157617" FOLDED="true" ID="ID_1639627950" MODIFIED="1512926193415" TEXT="Problem mit IterSource">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1512794166904" ID="ID_614780435" LINK="http://issues.lumiera.org/ticket/1125" MODIFIED="1512794180867" TEXT="Design-Mismatch">
<icon BUILTIN="info"/>
</node>
<node CREATED="1512794183629" ID="ID_783686672" MODIFIED="1512794297194" TEXT="inzwischen ein Workaround">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <ul>
      <li>
        asIterSource() verwendet ein eigenes Interface, um diesen call an die Implementierung durchzureichen
      </li>
      <li>
        in dieses Interface habe ich nun einen R&#252;ckgabewert eingebaut
      </li>
      <li>
        damit kann ich das IterSource-Front-End refreshen
      </li>
      <li>
        trotzdem h&#228;sslich...
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1513293471929" FOLDED="true" ID="ID_1115016372" MODIFIED="1561827469130" TEXT="chained expansion">
<icon BUILTIN="stop-sign"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1513293488863" FOLDED="true" ID="ID_263549307" MODIFIED="1525124214820" TEXT="logisches Problem mit layered expansion">
<linktarget COLOR="#9c5265" DESTINATION="ID_263549307" ENDARROW="Default" ENDINCLINATION="189;145;" ID="Arrow_ID_1920033917" SOURCE="ID_1013175212" STARTARROW="None" STARTINCLINATION="1219;0;"/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1513293497774" ID="ID_115807287" MODIFIED="1513293568808" TEXT="der unterste Expander nivelliert die Baumstruktur"/>
<node CREATED="1513293570748" ID="ID_34081800" MODIFIED="1513293626048" TEXT="dar&#xfc;ber gesetzte Expander bekommen das Schlie&#xdf;en des nested scope nicht mit"/>
<node CREATED="1513293655896" ID="ID_1685869664" MODIFIED="1513293665067" TEXT="dies konterkariert das Bestreben nach Abstraktion"/>
</node>
<node CREATED="1513293768322" FOLDED="true" ID="ID_1803494848" MODIFIED="1525124214820" TEXT="Idee: slave Expander">
<icon BUILTIN="idea"/>
<node CREATED="1513293775257" ID="ID_1165347300" MODIFIED="1513293781468" TEXT="registriert sich als Listener"/>
<node CREATED="1513293782224" ID="ID_1860640469" MODIFIED="1513293845843" TEXT="geht mit expand / backtrack mit"/>
<node CREATED="1513293889809" FOLDED="true" ID="ID_277229668" MODIFIED="1525124214820" TEXT="Wirkung unklar">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1513293901848" FOLDED="true" ID="ID_1292422466" MODIFIED="1525124214820" TEXT="Modell-1">
<node CREATED="1513293916558" ID="ID_1801870591" MODIFIED="1513293922177" TEXT="hat selber einen Stack"/>
<node CREATED="1513293941227" ID="ID_1085854477" MODIFIED="1513293947030" TEXT="erzeugt kopierten Zustand"/>
</node>
<node CREATED="1513293910591" FOLDED="true" ID="ID_308120385" MODIFIED="1525124214820" TEXT="Modell-2">
<node CREATED="1513293959848" ID="ID_227867197" MODIFIED="1513293968451" TEXT="reine Callbacks"/>
<node CREATED="1513293996403" ID="ID_770475649" MODIFIED="1513294007637" TEXT="2.Callback zum Schlie&#xdf;en notwendig"/>
</node>
</node>
<node CREATED="1513395781003" ID="ID_1245121355" MODIFIED="1513395835329" TEXT="Problem: wie anschlie&#xdf;en?">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      an welcher Stelle wird diese Mechanik
    </p>
    <p>
      an einen bestehenden Iterator angeschlossen
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#5f7b87" DESTINATION="ID_618831184" ENDARROW="Default" ENDINCLINATION="0;-100;" ID="Arrow_ID_1648666133" STARTARROW="None" STARTINCLINATION="-110;0;"/>
</node>
</node>
<node CREATED="1513395693887" FOLDED="true" ID="ID_618831184" MODIFIED="1525124214820" TEXT="Design">
<linktarget COLOR="#5f7b87" DESTINATION="ID_618831184" ENDARROW="Default" ENDINCLINATION="0;-100;" ID="Arrow_ID_1648666133" SOURCE="ID_1245121355" STARTARROW="None" STARTINCLINATION="-110;0;"/>
<node CREATED="1513395706469" ID="ID_708077102" MODIFIED="1513395716207" TEXT="expliziter Chain-Zustand"/>
<node CREATED="1513395719139" ID="ID_1788966028" MODIFIED="1513395732164" TEXT="wird aus dem expandable-Iter erzeugt"/>
<node CREATED="1513395734449" ID="ID_1906327703" MODIFIED="1513395755674" TEXT="entfaltet sich per Stack mit Backtracking"/>
<node CREATED="1513395756646" ID="ID_1845114720" MODIFIED="1513395771104" TEXT="Entfaltungs-Funktor"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1513294052460" FOLDED="true" ID="ID_803702364" MODIFIED="1525124214820" TEXT="Technik">
<icon BUILTIN="help"/>
<node CREATED="1513294056627" ID="ID_1384622700" MODIFIED="1513294063006" TEXT="Listener-Interface"/>
<node CREATED="1513294065442" ID="ID_1460481832" MODIFIED="1513294078644" TEXT="Listener als Decorator-chain"/>
<node CREATED="1513294087167" ID="ID_936833682" MODIFIED="1513294097217" TEXT="BaseAdapter wird Informations-Hub"/>
<node CREATED="1513395621816" FOLDED="true" ID="ID_1622086178" MODIFIED="1525124214820" TEXT="Problem: virtuelle Calls">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1513395629375" ID="ID_698225511" MODIFIED="1513395640418" TEXT="mu&#xdf; nun &quot;downstream&quot; aufrufen"/>
<node CREATED="1513395641293" ID="ID_1382186294" MODIFIED="1513395660295" TEXT="bedingt Funktor oder VTable"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1513395667562" ID="ID_1022574173" MODIFIED="1513395685159" TEXT="widerspricht bisherigen Design-Zielen">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1513395862384" FOLDED="true" HGAP="-59" ID="ID_992596886" MODIFIED="1525124214821" TEXT="vorerst nicht weiter verfolgt" VSHIFT="4">
<icon BUILTIN="yes"/>
<node CREATED="1513395903962" ID="ID_1252615834" MODIFIED="1513395908990" TEXT="relativ komplex"/>
<node CREATED="1513395909914" ID="ID_866089441" MODIFIED="1513395921284" TEXT="Notwendigkeit nicht klar"/>
<node CREATED="1513395922513" ID="ID_1683537911" MODIFIED="1513396040896" TEXT="k&#xf6;nnte aber sehr sinnvoll werden">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Stichwort HierarchyOrientationIndicator
    </p>
    <p>
      
    </p>
    <p>
      ...will sagen, bin nun schon mehrfach in dieses Problem gelaufen,
    </p>
    <p>
      nachdem ich dachte, alles so sch&#246;n gel&#246;st zu haben.
    </p>
    <p>
      Das Problem ist, da&#223; eben auch der <i>Konsument</i>&#160;irgendwie
    </p>
    <p>
      von den verschachtelten Strukturen mit gesteuert wird.
    </p>
    <p>
      Das Ergebnis ist eben nicht rein linear.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1513395931727" ID="ID_1852380231" MODIFIED="1513395937842" TEXT="erst mal Erfahrungen sammeln"/>
<node CREATED="1513395939502" FOLDED="true" ID="ID_1752199055" MODIFIED="1525124214820" TEXT="und direkt die Baum-Tiefe durchgeben">
<linktarget COLOR="#75c4c1" DESTINATION="ID_1752199055" ENDARROW="Default" ENDINCLINATION="653;643;" ID="Arrow_ID_1536391130" SOURCE="ID_1466307579" STARTARROW="None" STARTINCLINATION="1299;33;"/>
<icon BUILTIN="yes"/>
<node CREATED="1513396293343" ID="ID_861758487" MODIFIED="1513396293343">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...das ist n&#228;mlich der triviale Workaround
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1513396299238" ID="ID_1740583889" MODIFIED="1513396343855" TEXT="noch besser: diese auf das ChildExpandableSource-Interface legen!">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1513396353871" ID="ID_1928833267" MODIFIED="1513396385476" TEXT="das k&#xf6;nnte tats&#xe4;chlich eine echte pragmatische Alternative sein!">
<icon BUILTIN="ksmiletris"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1513447925593" FOLDED="true" ID="ID_1239682661" MODIFIED="1561827469130" TEXT="expansion depth">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1513447947870" ID="ID_328146397" MODIFIED="1513448183232" TEXT="nach au&#xdf;en zug&#xe4;nglich machen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1513447956069" FOLDED="true" ID="ID_1345517957" MODIFIED="1525124214821" TEXT="Problem: mu&#xdf; daf&#xfc;r korrekt sein">
<icon BUILTIN="button_ok"/>
<node CREATED="1513447967084" ID="ID_476332936" MODIFIED="1513447978718" TEXT="d.h. mu&#xdf; die logische Tiefe widerspiegeln"/>
<node CREATED="1513447979450" ID="ID_224439756" MODIFIED="1513448250249" TEXT="...auch wenn der Vater bereits ersch&#xf6;pft ist">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      wir hatten bisher eine auto-Aufr&#228;um-Routine in iterNext(),
    </p>
    <p>
      welche dazu f&#252;hrt, da&#223; ein ersch&#246;pfter Vater sofort wegger&#228;umt wird,
    </p>
    <p>
      noch bevor wir dazu kommen, die Kinder zu pushen
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#338800" CREATED="1513448002247" FOLDED="true" ID="ID_804459643" MODIFIED="1525124214821" TEXT="L&#xf6;sung">
<linktarget COLOR="#63b5aa" DESTINATION="ID_804459643" ENDARROW="Default" ENDINCLINATION="456;372;" ID="Arrow_ID_1606709369" SOURCE="ID_1181955496" STARTARROW="None" STARTINCLINATION="1446;0;"/>
<icon BUILTIN="idea"/>
<node CREATED="1513448017406" ID="ID_753765398" MODIFIED="1513448275095" TEXT="iterNext aufspalten"/>
<node CREATED="1513448019398" ID="ID_1143482463" MODIFIED="1513448026224" TEXT="Invariante explizit machen"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1513990803915" FOLDED="true" ID="ID_292438102" MODIFIED="1561827469130" TEXT="IterSource-Integration">
<linktarget COLOR="#659fa4" DESTINATION="ID_292438102" ENDARROW="Default" ENDINCLINATION="853;414;" ID="Arrow_ID_1802135668" SOURCE="ID_1529167083" STARTARROW="None" STARTINCLINATION="674;0;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1513990840253" ID="ID_923982542" MODIFIED="1514050246345" TEXT="wrapper und Iterator bauen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1513990851580" ID="ID_1445466432" MODIFIED="1514081134408" TEXT="Traits erweitern">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1513990858787" ID="ID_1444097417" MODIFIED="1514081138141" TEXT="Funktor erweitern">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1511837384749" FOLDED="true" ID="ID_274979743" MODIFIED="1561827469149" TEXT="asIterSource">
<icon BUILTIN="button_ok"/>
<node CREATED="1512621242778" FOLDED="true" ID="ID_695969017" MODIFIED="1561827469130" TEXT="Eigenschaften">
<icon BUILTIN="info"/>
<node CREATED="1511837396075" ID="ID_1916743569" MODIFIED="1511837401078" TEXT="abschlie&#xdf;ender Dekorator"/>
<node CREATED="1511837401738" ID="ID_289320579" MODIFIED="1511837414204" TEXT="verpackt hinter OO-Interface mit virtuellen Funktionen"/>
<node CREATED="1511837421967" ID="ID_906113750" MODIFIED="1511837433914" TEXT="automatische Heap-Storage"/>
</node>
<node COLOR="#338800" CREATED="1512621260992" FOLDED="true" ID="ID_611871784" MODIFIED="1561827469130" TEXT="erweitertes Interface">
<icon BUILTIN="button_ok"/>
<node COLOR="#990000" CREATED="1512621268527" FOLDED="true" ID="ID_1388034155" MODIFIED="1525124214825" TEXT="wie bauen?">
<icon BUILTIN="help"/>
<node CREATED="1512711450864" ID="ID_1595268563" MODIFIED="1512711455248" TEXT="sollte simpel sein"/>
<node CREATED="1512711430770" ID="ID_217126119" MODIFIED="1512711446628" TEXT="mit builder-Funktion die Baseclass initialisieren"/>
</node>
<node COLOR="#990000" CREATED="1512621274166" FOLDED="true" ID="ID_1452751365" MODIFIED="1525124214825" TEXT="wie expand() an die Quelle weitergeben?">
<icon BUILTIN="help"/>
<node CREATED="1512711382889" ID="ID_1913647489" MODIFIED="1512711393299" TEXT="mu&#xdf; virtuelle methode sein"/>
<node CREATED="1512711396279" ID="ID_633403108" MODIFIED="1512769358637" TEXT="also: mu&#xdf; IterSource erweitern">
<arrowlink COLOR="#b92b64" DESTINATION="ID_1665958887" ENDARROW="Default" ENDINCLINATION="65;-99;" ID="Arrow_ID_1257583135" STARTARROW="None" STARTINCLINATION="-371;-34;"/>
</node>
<node CREATED="1512711404526" ID="ID_17184885" MODIFIED="1512711414688" TEXT="IterSource steckt im shared_ptr"/>
<node CREATED="1512711415324" ID="ID_1951957730" MODIFIED="1512711423975" TEXT="also mu&#xdf; Front-End einen downcast machen"/>
</node>
<node COLOR="#338800" CREATED="1512711462926" FOLDED="true" ID="ID_1665958887" MODIFIED="1525124214825" TEXT="IterSource erweitern">
<linktarget COLOR="#b92b64" DESTINATION="ID_1665958887" ENDARROW="Default" ENDINCLINATION="65;-99;" ID="Arrow_ID_1257583135" SOURCE="ID_633403108" STARTARROW="None" STARTINCLINATION="-371;-34;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#b60303" CREATED="1512711475196" HGAP="15" ID="ID_899953833" MODIFIED="1512769566817" TEXT="Diamond of Death ?!!" VSHIFT="23">
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#338800" CREATED="1512711573727" FOLDED="true" ID="ID_1346721743" MODIFIED="1512926193415" TEXT="TODO: virtuelle inheritance nachlesen">
<icon BUILTIN="button_ok"/>
<node CREATED="1512769100530" ID="ID_547968053" MODIFIED="1512769116100" TEXT="vitual mu&#xdf; direkt unter der Basis erfolgen"/>
<node CREATED="1512769116952" ID="ID_1359676759" MODIFIED="1512769124770" TEXT="virtual mu&#xdf; dort in allen Zweigen verwendet werden"/>
<node CREATED="1512769133350" ID="ID_609049064" MODIFIED="1512769142944" TEXT="andernfalles bekommen wir mehrere Sub-Objekte der Basisklasse"/>
</node>
<node CREATED="1512711613841" FOLDED="true" ID="ID_1594826715" MODIFIED="1512926193415" STYLE="fork" TEXT="Kosten? zus&#xe4;tzlicher VTable-Pointer?">
<node CREATED="1512711638574" ID="ID_1769096857" MODIFIED="1512769458120" TEXT="k&#xf6;nnte verschmerzbar sein">
<icon BUILTIN="help"/>
</node>
<node CREATED="1512769160218" ID="ID_155388893" MODIFIED="1512769462006" TEXT="Kosten kommen vom Memory-Layout">
<icon BUILTIN="info"/>
</node>
<node CREATED="1512769179503" ID="ID_1053011981" MODIFIED="1512769198300">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <i>jeder</i>&#160;Zugriff auf ein Sub-Objekt mu&#223; durch eine VTable
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1512769199597" ID="ID_1928524017" MODIFIED="1512769227486">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Stichwort: <b>virtual base offset</b>
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#5229a2" CREATED="1512769231648" ID="ID_925551162" LINK="http://web.archive.org/web/20160413064252/http://www.phpcompiler.org/articles/virtualinheritance.html" MODIFIED="1512769289609" TEXT="Beschreibung der GCC-Implementierung">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1512711586005" FOLDED="true" ID="ID_652398650" MODIFIED="1512926193415" TEXT="vielleicht kein Problem, da wir explizit casten">
<node CREATED="1512769376605" ID="ID_1401491527" MODIFIED="1512769512216" TEXT="ja, workaround">
<arrowlink COLOR="#7c89a1" DESTINATION="ID_813779439" ENDARROW="Default" ENDINCLINATION="178;-25;" ID="Arrow_ID_1765195063" STARTARROW="None" STARTINCLINATION="23;85;"/>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1512769383980" ID="ID_415336941" MODIFIED="1512769397102" TEXT="den Zusammenhang nicht im Interface ausdr&#xfc;cken"/>
<node CREATED="1512769398050" ID="ID_1821068883" MODIFIED="1512769409404" TEXT="zusatz-Feature &quot;extendChildren&quot; in separates Interface"/>
</node>
<node COLOR="#2b3cb9" CREATED="1512769068942" ID="ID_1398747892" LINK="https://stackoverflow.com/questions/47722508/cost-of-virtual-inheritance-from-an-interface" MODIFIED="1512769090329" TEXT="Frage auf Stackoverflow gepostet">
<icon BUILTIN="info"/>
</node>
<node CREATED="1512769478607" HGAP="-17" ID="ID_813779439" MODIFIED="1512769512216" TEXT="setze den Workaround um" VSHIFT="28">
<linktarget COLOR="#7c89a1" DESTINATION="ID_813779439" ENDARROW="Default" ENDINCLINATION="178;-25;" ID="Arrow_ID_1765195063" SOURCE="ID_1401491527" STARTARROW="None" STARTINCLINATION="23;85;"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1512782185739" FOLDED="true" HGAP="21" ID="ID_787592346" MODIFIED="1525124214825" TEXT="deepCopy()" VSHIFT="13">
<icon BUILTIN="button_cancel"/>
<node CREATED="1512782196185" FOLDED="true" ID="ID_730992497" MODIFIED="1512926193415" TEXT="sinnvoll?">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="help"/>
<node CREATED="1512782214975" ID="ID_1723806811" MODIFIED="1512782227225" TEXT="Kopie des Iterator Front-End"/>
<node CREATED="1512782228405" ID="ID_1929504787" MODIFIED="1512782239591" TEXT="aber gleiches IterSource Back-End"/>
</node>
<node CREATED="1512782243187" FOLDED="true" ID="ID_836129726" MODIFIED="1512926193416" TEXT="machbar?">
<node CREATED="1512782248162" FOLDED="true" ID="ID_1374048285" MODIFIED="1512926193409" TEXT="analog zu expandChildren">
<icon BUILTIN="idea"/>
<node CREATED="1512782411812" ID="ID_123602287" MODIFIED="1512782418183" TEXT="deepCopy wird virtual function"/>
<node CREATED="1512782418987" ID="ID_1515367406" MODIFIED="1512782431453" TEXT="Implementierung klont und baut neue IterSource"/>
<node CREATED="1512782435761" ID="ID_299702661" MODIFIED="1512782444278" TEXT="ja das w&#xe4;re machbar">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1512782259136" FOLDED="true" ID="ID_1896672181" MODIFIED="1512926193409" TEXT="einigerma&#xdf;en technisch...">
<node CREATED="1512782296798" ID="ID_347250455" MODIFIED="1512782320932" TEXT="es m&#xfc;&#xdf;te sich PackagedTreeExplorerSource selbst bauen k&#xf6;nnen"/>
<node CREATED="1512782329311" ID="ID_1917918946" MODIFIED="1512782351304" TEXT="au&#xdf;erdem m&#xfc;&#xdf;te nun das ChildExpandableSource auf VAL getemplated werden"/>
<node CREATED="1512782382056" ID="ID_657754771" MODIFIED="1512782393002" TEXT="und der ganze Build-Ausdruck wird auf mehrere Klassen verteilt"/>
<node CREATED="1512782393902" ID="ID_1809708776" MODIFIED="1512782398528" TEXT="ned schee">
<icon BUILTIN="smily_bad"/>
</node>
</node>
<node CREATED="1512782476707" FOLDED="true" ID="ID_1058031222" MODIFIED="1512926193410" TEXT="fragw&#xfc;rdig....">
<node CREATED="1512782485498" ID="ID_1399160841" MODIFIED="1512782495540" TEXT="normalerweise sind Iteratoren nicht re-startbar"/>
<node CREATED="1512782496417" ID="ID_1935883418" MODIFIED="1512782502387" TEXT="wir k&#xf6;nnten sie sogar move-only machen"/>
<node CREATED="1512782505231" ID="ID_1563966686" MODIFIED="1512782514850" TEXT="und der Pipeline-Builder ist bequem"/>
<node CREATED="1512782515966" ID="ID_4691119" MODIFIED="1512782523832" TEXT="also im Zwefel neu bauen"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1512782275078" ID="ID_14348211" MODIFIED="1512782286709" TEXT="im Moment nicht notwendig">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1512621185490" FOLDED="true" ID="ID_1611878074" MODIFIED="1561827469130" TEXT="Probleme">
<icon BUILTIN="button_ok"/>
<node CREATED="1512621202688" FOLDED="true" ID="ID_57740660" MODIFIED="1525124214825" TEXT="durchreichen der Basis-Konstruktoren">
<icon BUILTIN="info"/>
<node CREATED="1512706139167" FOLDED="true" ID="ID_1731306892" MODIFIED="1512926193416" TEXT="Basis-Copy-Konstruktoren werden nicht geerbt">
<node CREATED="1512706158004" ID="ID_958479010" MODIFIED="1512706289090" TEXT="nicht in C++14">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...da gibt es eine explizite Ausnahme-Regel.
    </p>
    <p>
      Die Copy-Konstruktoren werden aus der Kandidaten-Menge entfernt.
    </p>
    <p>
      
    </p>
    <p>
      Grund ist, da&#223; die default-Initialisierung der Member-Felder noch nicht hinrechend gekl&#228;rt war.
    </p>
    <p>
      C++17 holt das nach
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1512706162921" ID="ID_601609235" MODIFIED="1512706394332" TEXT="ab C++17 ist das anders">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...dort wird einfach on-demand in der Basisklasse nachgeschaut.
    </p>
    <p>
      Wenn dabei ein Basis-Copy-Ctor gezogen wird, dann wird eben default-Init f&#252;r die Felder im abgeleiteten Objekt gemacht.
    </p>
    <p>
      Es gibt dann eine neue, explizite Regel, die verhindert, da&#223; zuf&#228;llig ein aus der Basis geerbter Ctor
    </p>
    <p>
      die Signatur eines Copy-ctors &#252;berdeckt
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1512706405155" ID="ID_1013782130" MODIFIED="1512706515474">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Allerdings gen&#252;gt es, dies an <i>einer</i>&#160;Stelle in der Kette zu erg&#228;nzen
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...und zwar genau dort, wo erstmals ein Basis-Objekt akzeptiert wird.
    </p>
    <p>
      Das ist bei uns im BaseAdapter, also der ersten Ebene &#252;ber dem zu initialisierenden Basis-Objekt.
    </p>
    <p>
      Alle anderen Layer dar&#252;ber reichen dann korrekt mit dem geerbten Ctor diese Initialisierung nach Unten.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1512706516628" ID="ID_1092840037" MODIFIED="1512706656273">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      &#252;brigens ist es im IterSource&lt;T&gt;::iterator <i>nicht</i>&#160; notwendig
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...das war nur ein unn&#246;tiger Fix nach dem Gie&#223;kannen-Prinzip.
    </p>
    <p>
      
    </p>
    <p>
      Denn dieser Iterator soll niemals mit einem Basis-Objekt initialisiert werden,
    </p>
    <p>
      sondern stets von der IterSource-Builder-Funktion konstruiert.
    </p>
    <p>
      Und wenn man selber keinen Ctor in eine Klasse schreibt, sondern nur ctor-erbt,
    </p>
    <p>
      dann werden auch die Copy-Konstruktoren korrekt automatisch generiert.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1512621222901" FOLDED="true" ID="ID_701320194" MODIFIED="1525124214825" TEXT="bad function call">
<icon BUILTIN="button_ok"/>
<node CREATED="1512621654283" ID="ID_1975194377" MODIFIED="1512621667489" TEXT="passiert im FIlter-Iterator-Test">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1512621668449" ID="ID_369576813" MODIFIED="1512705931292" TEXT="hab ich einen schon funktionierenden Test gebrochen?">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="help"/>
</node>
<node CREATED="1512705938426" FOLDED="true" ID="ID_483656941" MODIFIED="1512926193416" TEXT="nein: der Test-Code war kaputt">
<icon BUILTIN="ksmiletris"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1512705974765" ID="ID_1628672101" MODIFIED="1512706019739" TEXT="Vorsicht: der Builder macht move!">
<icon BUILTIN="clanbomber"/>
</node>
<node CREATED="1512706022079" ID="ID_118572066" MODIFIED="1512706045943" TEXT="d.h. die lokale Variable im Test war danach kaputt..."/>
<node CREATED="1512706051907" ID="ID_133885955" MODIFIED="1512706067900" TEXT="in der vorherigen Version fehlte nur irgendwo in der Kette ein move-ctor"/>
<node CREATED="1512706069104" ID="ID_596682451" MODIFIED="1512706085953" TEXT="und deshalb ist nicht aufgefallen, da&#xdf; das Objekt schon tot war"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1512787530248" FOLDED="true" ID="ID_1415286168" MODIFIED="1525124214826" TEXT="IterSource design mismatch">
<icon BUILTIN="hourglass"/>
<node CREATED="1512788814147" ID="ID_499062281" MODIFIED="1512788850106" TEXT="versteckt gecachete Auswertung im Pos-Pointer">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1512788851294" FOLDED="true" ID="ID_185134520" MODIFIED="1512926193416" TEXT="hat nur zwei Iteration-control-Funtkionen">
<node CREATED="1512788924908" ID="ID_1786665760" MODIFIED="1512788936838" TEXT="vmtl. von Java inspiriert">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1512788878042" ID="ID_1218734139" MODIFIED="1512788887877" TEXT="rein logisch sollten es 3 sein"/>
<node CREATED="1512788911973" ID="ID_565612331" MODIFIED="1512788919552" TEXT="denn check() != yield()"/>
</node>
<node CREATED="1512788944977" FOLDED="true" ID="ID_1974205271" MODIFIED="1512926193416" TEXT="Konequenz">
<node CREATED="1512788955751" ID="ID_1249769782" MODIFIED="1512788975537" TEXT="Zustand nach letztem iterate() wird verschleppt"/>
<node CREATED="1512788976389" ID="ID_409716481" MODIFIED="1512788989639" TEXT="der Pos-Pointer zeigt irgendwo in die Implementierung"/>
<node CREATED="1512788990467" ID="ID_1029092512" MODIFIED="1512788998757" TEXT="erzeugt ungesunde Koppelung"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1512789824290" FOLDED="true" ID="ID_283479652" MODIFIED="1512926193416" TEXT="Beschlu&#xdf;">
<icon BUILTIN="yes"/>
<node CREATED="1512789836161" ID="ID_1758704874" MODIFIED="1512789845955" TEXT="Design von IterSource ist nicht in Ordnung"/>
<node CREATED="1512789847183" ID="ID_1699957562" MODIFIED="1512789865193" TEXT="es sollte sich am &quot;state core&quot;-Schema orientieren"/>
<node CREATED="1512789870516" ID="ID_1318870340" LINK="http://issues.lumiera.org/ticket/1125" MODIFIED="1512794035043">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Ticket machen: <font color="#b90736">#1125</font>
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#7f5f85" DESTINATION="ID_1318870340" ENDARROW="Default" ENDINCLINATION="867;50;" ID="Arrow_ID_1918593298" SOURCE="ID_1066396845" STARTARROW="None" STARTINCLINATION="483;0;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1512358595283" FOLDED="true" ID="ID_1526405052" MODIFIED="1561827469149" TEXT="piggyback?">
<icon BUILTIN="stop-sign"/>
<node CREATED="1512358616584" ID="ID_1041373923" MODIFIED="1512358662699" TEXT="&quot;k&#xf6;nnte mal praktisch sein&quot;">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
<node CREATED="1512358626607" FOLDED="true" ID="ID_853537387" MODIFIED="1561827469130" TEXT="hab die Idee schon lange">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...da&#223; man ein Ding komplett in einen Iterator packt,
    </p>
    <p>
      und dieser es dann auch managed
    </p>
  </body>
</html></richcontent>
<node CREATED="1512358864343" FOLDED="true" ID="ID_1251747225" MODIFIED="1525124214828">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ist das <font color="#9e1124">#190</font>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_cancel"/>
<node CREATED="1512358896258" ID="ID_62377324" MODIFIED="1512358945435" TEXT="nein das ist was anderes">
<icon BUILTIN="stop-sign"/>
</node>
<node CREATED="1512358903177" ID="ID_1427111206" MODIFIED="1512358940471" TEXT="das w&#xe4;re OpaqueHolder heute">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1512358931774" ID="ID_1681797535" MODIFIED="1512358937271" TEXT="plus etwas Magie">
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node CREATED="1512358965657" ID="ID_816120367" MODIFIED="1512359005565" TEXT="trotzdem... auch IterSnapshot">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...ist partiell diese Idee.
    </p>
    <p>
      Nur auch das auf einem etwas anderem Level,
    </p>
    <p>
      und immer mit einem Heap-allozierten vector
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1512358632486" ID="ID_1795551304" MODIFIED="1512358640785" TEXT="aber keine konkrete Anwendung"/>
<node CREATED="1512358649900" FOLDED="true" ID="ID_1625666992" MODIFIED="1561827469130" TEXT="w&#xe4;re hier billig zu haben">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1513473578677" ID="ID_834217894" MODIFIED="1513473581168" TEXT="ja..."/>
<node CREATED="1513473581876" ID="ID_1304656331" MODIFIED="1513473586811" TEXT="bei Bedarf">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1510941467586" FOLDED="true" ID="ID_381928532" MODIFIED="1561827482920" TEXT="TreeExplorer_test">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1510969031378" FOLDED="true" ID="ID_1678287752" MODIFIED="1561827469149" TEXT="verify_wrappedIterator();">
<icon BUILTIN="button_ok"/>
<node CREATED="1511054727547" ID="ID_328168347" MODIFIED="1511054858441" TEXT="Problem: mu&#xdf; Iterator-Arten unterscheiden">
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#338800" CREATED="1511054740579" FOLDED="true" ID="ID_776471136" MODIFIED="1561827469130" TEXT="StateCore direkt verwenden">
<icon BUILTIN="button_ok"/>
<node CREATED="1511054762608" ID="ID_1129026084" MODIFIED="1511054793514" TEXT="mu&#xdf; IterStateWrapper unterst&#xfc;tzen">
<icon BUILTIN="info"/>
</node>
<node COLOR="#338800" CREATED="1511054775616" ID="ID_1071927856" MODIFIED="1511054795068" TEXT="Metafuntkion um Erweiterungspunkte zu erkennen">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1511054800851" ID="ID_186154206" MODIFIED="1511054827673" TEXT="Lumiera-Iterator verwenden">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1511054810307" ID="ID_418847335" MODIFIED="1511227734539" TEXT="Range-iter um STL -iterable legen">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1510969031379" FOLDED="true" ID="ID_1298407683" MODIFIED="1561827469149" TEXT="verify_expandOperation();">
<linktarget COLOR="#5d68b6" DESTINATION="ID_1298407683" ENDARROW="Default" ENDINCLINATION="-53;-200;" ID="Arrow_ID_1214344498" SOURCE="ID_1808038526" STARTARROW="None" STARTINCLINATION="-292;0;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1511227813712" FOLDED="true" ID="ID_942570698" MODIFIED="1561827469131" TEXT="Fall-1">
<icon BUILTIN="button_ok"/>
<node CREATED="1511227821087" ID="ID_1644135845" MODIFIED="1511571551953" TEXT="monadisch / funktional">
<icon BUILTIN="info"/>
</node>
<node COLOR="#338800" CREATED="1511571810531" ID="ID_84419798" MODIFIED="1511571819891" TEXT="Val -&gt; Core">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1511227824495" ID="ID_1299746114" MODIFIED="1511731959295" TEXT="Val -&gt; Iter&lt;Val&gt;">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1511571834032" ID="ID_1315469399" MODIFIED="1511754060610" TEXT="Val -&gt; collection&lt;Val&gt;">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1511227861867" FOLDED="true" ID="ID_1821706302" MODIFIED="1561827469131" TEXT="Fall-2 ">
<icon BUILTIN="button_ok"/>
<node CREATED="1511227870346" ID="ID_797579225" MODIFIED="1511571541045" TEXT="verzahnte Implementierung">
<icon BUILTIN="info"/>
</node>
<node CREATED="1511227975028" FOLDED="true" ID="ID_1769405758" MODIFIED="1525124214840" TEXT="Sub-F&#xe4;lle">
<node COLOR="#338800" CREATED="1511227917971" ID="ID_200983707" MODIFIED="1511571722416" TEXT="Core&amp; -&gt; Core">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1511227902005" ID="ID_1992381343" MODIFIED="1511754553025" TEXT="Core -&gt; Iter&lt;Val&gt;">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1511571746395" FOLDED="true" ID="ID_1199592659" MODIFIED="1512926193416" TEXT="generisches Lambda">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1511227944392" ID="ID_881609766" MODIFIED="1511571897315" TEXT="Iter&lt;Val&gt;&amp; -&gt; Core">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1511227925202" ID="ID_290152631" MODIFIED="1511755056399" TEXT="Iter&lt;Val&gt; -&gt; Iter&lt;Val&gt;">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1510969031379" FOLDED="true" ID="ID_358406634" MODIFIED="1561827469149" TEXT="verify_transformOperation();">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1511835550655" ID="ID_1305788204" MODIFIED="1512276390701" TEXT="Transformer(Iter&lt;Core&gt;)">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1511835603751" ID="ID_6147833" MODIFIED="1512276267722" TEXT="Transformer(Iter&lt;Val&gt;)">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1511835716176" ID="ID_1407397782" MODIFIED="1512276211354" TEXT="Transformer mit Seiteneffekt">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1511835691963" FOLDED="true" ID="ID_175353270" MODIFIED="1561827469131" TEXT="Transform: generic Lambda">
<icon BUILTIN="button_ok"/>
<node CREATED="1512181454244" ID="ID_23118252" MODIFIED="1512271778125" TEXT="AUA: warum wird hier ein Value als Arguement &#xfc;bergeben">
<arrowlink COLOR="#a83e54" DESTINATION="ID_215116122" ENDARROW="Default" ENDINCLINATION="351;347;" ID="Arrow_ID_891457048" STARTARROW="None" STARTINCLINATION="683;0;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="help"/>
</node>
<node COLOR="#338800" CREATED="1512181480616" FOLDED="true" ID="ID_1099744034" MODIFIED="1525124214840" TEXT="Beobachtung: move in join">
<icon BUILTIN="button_ok"/>
<node CREATED="1512181493551" ID="ID_1834475937" MODIFIED="1512181507297" TEXT="Bei &#xdc;bergabe in stringify() fehlt std::forward"/>
<node CREATED="1512181508053" ID="ID_1058623354" MODIFIED="1512181516343" TEXT="transformIterator strippt die Referenz"/>
<node CREATED="1512181517955" ID="ID_517823516" MODIFIED="1512181526366" TEXT="aus LValue wird RValue"/>
<node CREATED="1512181527834" ID="ID_1446020077" MODIFIED="1512181535898" TEXT="Peng">
<icon BUILTIN="clanbomber"/>
</node>
<node CREATED="1512181547263" FOLDED="true" ID="ID_1700050621" MODIFIED="1512926193416" TEXT="Aufkl&#xe4;ren: warum wird Referenz gestrippt">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1512349360360" ID="ID_1400970540" MODIFIED="1512349365789" TEXT="vmtl Programmierfehler"/>
<node CREATED="1512349367230" ID="ID_1844975610" MODIFIED="1512349379887" TEXT="IterTool braucht den Typ des Basis-Iterators"/>
<node CREATED="1512349380643" ID="ID_1515581078" MODIFIED="1512349403999">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      versehentlich wurde <i>auch der</i>&#160;an std::forward gegeben
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1512349405280" ID="ID_1121668073" MODIFIED="1512349446256" TEXT="war nachweislich eine echte Fehlfunktion">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      habs mit FormatUtils_test bewiesen
    </p>
    <p>
      Dazu in NumIter einen explizit tracenden move-ctor eingebaut
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1512181592137" FOLDED="true" ID="ID_1472433606" MODIFIED="1512926193417" TEXT="im Ergebnis folgenlos, aber gef&#xe4;hrlich">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      weil der Aufruf von join(&amp;&amp;) selber wasserdicht ist
    </p>
    <p>
      D.h. er frisst keine Werte.
    </p>
    <p>
      Deshalb f&#228;llt dieses doppelte Problem nicht auf
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
<node CREATED="1512349447978" ID="ID_1467669966" MODIFIED="1512349453141" TEXT="und zwar wegen util::join"/>
<node CREATED="1512349454562" ID="ID_1337232290" MODIFIED="1512349470555" TEXT="dieses hat --versehentlich-- eine Kopie zu viel gemacht"/>
<node CREATED="1512349471143" ID="ID_540600531" MODIFIED="1512349476953" TEXT="Hurrgha!!!!!">
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node COLOR="#338800" CREATED="1512349501091" ID="ID_1425293642" MODIFIED="1512349506090" TEXT="beide defekte gefixt">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1512355552695" ID="ID_1326048469" MODIFIED="1512355578832" TEXT="Beobachtung: ItemWrapper unterst&#xfc;tzt kein move">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1511835901999" FOLDED="true" ID="ID_1717235881" MODIFIED="1561827469131" TEXT="Transform: Core&amp; -&gt; irgendwas">
<icon BUILTIN="help"/>
<node CREATED="1512276512313" ID="ID_725756500" MODIFIED="1512276517860" TEXT="sollte theoretisch m&#xf6;glich sein"/>
<node CREATED="1512276524111" ID="ID_453994757" MODIFIED="1512276583587" TEXT="nicht sonderlich sinnvoll">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...weil man den konkreten Typ der Core kennen mu&#223;
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#338800" CREATED="1512276518472" ID="ID_1860559214" MODIFIED="1512278316412" TEXT="per Testfall dokumentiert">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1510969031379" FOLDED="true" ID="ID_722056043" MODIFIED="1561827469149" TEXT="verify_combinedExpandTransform();">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1512363192308" FOLDED="true" ID="ID_1913090689" MODIFIED="1561827469131" TEXT="expand &#xfc;ber Transformer hinweg">
<icon BUILTIN="button_ok"/>
<node CREATED="1512363626338" ID="ID_1302720848" MODIFIED="1512363637547" TEXT="funktioniert out-of-the-Box">
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1512363638640" ID="ID_67728054" MODIFIED="1512363645997" TEXT="naja fast">
<icon BUILTIN="smiley-oh"/>
</node>
</node>
<node COLOR="#338800" CREATED="1512363210130" FOLDED="true" ID="ID_480959271" MODIFIED="1561827469131" TEXT="expand aus manipulierendem Transformer">
<icon BUILTIN="button_ok"/>
<node CREATED="1512363649158" ID="ID_1152388495" MODIFIED="1512363655383" TEXT="ebenso">
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1512522106792" ID="ID_1499481842" MODIFIED="1512522120926" TEXT="naja fast noch fastiger">
<icon BUILTIN="smiley-neutral"/>
</node>
<node COLOR="#338800" CREATED="1512363659085" ID="ID_1079241242" MODIFIED="1512521919442" TEXT="TODO output CHECK">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1512363228751" ID="ID_579206895" MODIFIED="1512516921091" TEXT="Problem: re-evaluate nach expand">
<arrowlink COLOR="#5a92a2" DESTINATION="ID_531127457" ENDARROW="Default" ENDINCLINATION="385;167;" ID="Arrow_ID_556443427" STARTARROW="None" STARTINCLINATION="844;55;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1511836579562" FOLDED="true" ID="ID_1718741335" MODIFIED="1561827469150" TEXT="verify_FilterIterator();">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1512523719350" ID="ID_351021178" MODIFIED="1512606882124" TEXT="einfaches Pr&#xe4;dikat">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1512523726885" ID="ID_282579718" MODIFIED="1512608271472" TEXT="konsumieren bis leer">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1512523773559" FOLDED="true" ID="ID_917494688" MODIFIED="1561827469131" TEXT="Pr&#xe4;dikat&lt;Core&gt;">
<icon BUILTIN="button_ok"/>
<node CREATED="1512609324903" ID="ID_1654303504" MODIFIED="1512609343982" TEXT="kann an den Vorg&#xe4;ngern vorbeitunneln">
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node COLOR="#338800" CREATED="1512523783318" ID="ID_1808219280" MODIFIED="1512611989218" TEXT="Pr&#xe4;dikat&lt;Iter&gt; (generisch)">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1512523810946" ID="ID_461047497" MODIFIED="1512612006569" TEXT="... mit expand()">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1512612008548" ID="ID_13525358" MODIFIED="1512612041105" TEXT="...und Seiteneffekt">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1512612015283" ID="ID_1560717932" MODIFIED="1512612042056" TEXT="...und geklontem Zustand">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1512612027105" ID="ID_739092273" MODIFIED="1512612042905" TEXT="...und nachtr&#xe4;glich hinzugef&#xfc;gtem Layer">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#2b7d95" CREATED="1512612043592" ID="ID_1719204676" MODIFIED="1512612065051" TEXT="...es lebe die Komplexit&#xe4;t">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node COLOR="#338800" CREATED="1511836589393" FOLDED="true" ID="ID_54165230" MODIFIED="1561827469150" TEXT="verify_asIterSource();">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1512620990860" ID="ID_167384287" MODIFIED="1512789972907" TEXT="einfach verpacken">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1512620997827" ID="ID_173233581" MODIFIED="1512789974436" TEXT="erzeugte source erneut verpacken">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1512621101645" ID="ID_1982135306" MODIFIED="1512789977343" TEXT="Polymorphie: verschiedene Pipelines">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      verschiedendste Pipeline-Konstruktionen
    </p>
    <p>
      k&#246;nnen nun hinter dem gleichen Interface sitzen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1512621116947" FOLDED="true" ID="ID_1907769466" MODIFIED="1561827469131" TEXT="durchgeschleifte expandChildren()-Operation">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1512787465929" ID="ID_1053911863" MODIFIED="1512788738307" TEXT="Bug!">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1512787549870" ID="ID_1969077394" MODIFIED="1512789984536" TEXT="wieder mal kein refresh nach expandChildren()">
<icon BUILTIN="info"/>
</node>
<node COLOR="#338800" CREATED="1512788719640" ID="ID_1066396845" LINK="http://issues.lumiera.org/ticket/1125" MODIFIED="1512794080241" TEXT="TODO: Design-Mismatch -&gt; Ticket">
<arrowlink COLOR="#7f5f85" DESTINATION="ID_1318870340" ENDARROW="Default" ENDINCLINATION="867;50;" ID="Arrow_ID_1918593298" STARTARROW="None" STARTINCLINATION="483;0;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1512621383815" FOLDED="true" ID="ID_1705587551" MODIFIED="1561827469131" TEXT="Problem: shallow copy">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      rein ein Problem mit der Test-Fixture.
    </p>
    <p>
      Da die Quelle nun von einem shared-ptr gehalten wird,
    </p>
    <p>
      erzeugt eine Kopie des Iterator-Front-End
    </p>
    <p>
      nun nicht mehr eine Kopie des ganzen Zustandes.
    </p>
    <p>
      
    </p>
    <p>
      das w&#228;re aber bequem f&#252;r den Test.
    </p>
    <p>
      <u>Frage</u>: ist das &#252;berhaupt eine gute Idee, vom Design her??
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1512711333823" ID="ID_1629518942" MODIFIED="1512711345303" TEXT="Idee: deepCopy bieten">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1512789897080" ID="ID_1862531344" MODIFIED="1512789900649" TEXT="njet">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1512789907575" ID="ID_1220260137" MODIFIED="1512789914778" TEXT="ist nur ein Problem in Tests etc."/>
<node CREATED="1512789946314" ID="ID_1425696979" MODIFIED="1512789953964" TEXT="widerspricht dem Iteratoren-Konzept"/>
</node>
</node>
<node COLOR="#338800" CREATED="1513990814361" FOLDED="true" ID="ID_306902168" MODIFIED="1561827469150" TEXT="verify_IterSource()">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1513990873545" ID="ID_1789456983" MODIFIED="1514050256867" TEXT="einfache Iteration">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1514081155455" ID="ID_1538736368" MODIFIED="1514081182820" TEXT="Iteration ohne storage management">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1513990880600" ID="ID_1730629901" MODIFIED="1514081152728" TEXT="Iteration + Expansion">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1514747089115" FOLDED="true" ID="ID_1696559217" MODIFIED="1561827469150" TEXT="verify_scheduledExpansion">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1514747105248" ID="ID_952786179" MODIFIED="1514824954671" TEXT="setup wie child expansion">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1514747112048" ID="ID_1206186653" MODIFIED="1514827171677" TEXT="wird aber erst bei Iteration vollzogen">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1510969031379" FOLDED="true" ID="ID_1327871737" MODIFIED="1561827469150" TEXT="verify_depthFirstExploration();">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1512844598906" ID="ID_933777340" MODIFIED="1512861473722" TEXT="expand incl Parent">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1512952896394" FOLDED="true" ID="ID_501441857" MODIFIED="1561827469132" TEXT="Beispiel mit Tuple als Zwischenwert">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1512952911249" ID="ID_302553275" MODIFIED="1512952934726" TEXT="Funktion mit Tuple-Wert l&#xe4;&#xdf;t sich nicht binden">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1512952922127" ID="ID_748691821" MODIFIED="1512955609419" TEXT="Unsinn im Tuple-Helper identifiziert">
<arrowlink COLOR="#408281" DESTINATION="ID_568101334" ENDARROW="Default" ENDINCLINATION="-136;7;" ID="Arrow_ID_1210920107" STARTARROW="None" STARTINCLINATION="-417;0;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#338800" CREATED="1512952846993" FOLDED="true" HGAP="71" ID="ID_568101334" MODIFIED="1525124214841" TEXT="TupleHelper_test broken" VSHIFT="111">
<linktarget COLOR="#408281" DESTINATION="ID_568101334" ENDARROW="Default" ENDINCLINATION="-136;7;" ID="Arrow_ID_1210920107" SOURCE="ID_748691821" STARTARROW="None" STARTINCLINATION="-417;0;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1512952975600" FOLDED="true" ID="ID_1282921475" MODIFIED="1525124214840" TEXT="Types&lt;tuple&lt;TYPES...&gt;&gt;">
<node CREATED="1512952994765" ID="ID_1028880050" MODIFIED="1512953023243" TEXT="wurde automatisch gehoben auf Types&lt;TYPES...&gt;">
<icon BUILTIN="info"/>
</node>
<node CREATED="1512953008628" ID="ID_105420180" MODIFIED="1512953018858" TEXT="ziemlich dumme Idee">
<icon BUILTIN="smiley-neutral"/>
</node>
</node>
<node CREATED="1512953639277" FOLDED="true" ID="ID_93632445" MODIFIED="1525124214841" TEXT="broken sind...">
<icon BUILTIN="info"/>
<node CREATED="1512953663356" FOLDED="true" ID="ID_587022650" MODIFIED="1525124214840" TEXT="Tup1        :">
<node CREATED="1512953639278" ID="ID_1100197404" MODIFIED="1512954771519" TEXT="TUPLE-&lt;1&gt;-&lt;3&gt;-&lt;5&gt;-">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1512953639278" ID="ID_894542190" MODIFIED="1512954775187" TEXT="TUPLE-&lt;tuple&lt;Num&lt;1&gt;, Num&lt;3&gt;, Num&lt;5&gt; &gt;&gt;-">
<icon BUILTIN="button_cancel"/>
</node>
</node>
<node CREATED="1512953674962" FOLDED="true" ID="ID_1880760198" MODIFIED="1525124214840" TEXT="T_L1        :">
<node CREATED="1512953639278" ID="ID_1929044147" MODIFIED="1512954778777" TEXT="TUPLE-&lt;1&gt;-&lt;3&gt;-&lt;5&gt;-">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1512953639278" ID="ID_1790615976" MODIFIED="1512954785530" TEXT="TUPLE-&lt;tuple&lt;Num&lt;1&gt;, Num&lt;3&gt;, Num&lt;5&gt; &gt;&gt;-">
<icon BUILTIN="button_cancel"/>
</node>
</node>
<node CREATED="1512953684233" FOLDED="true" ID="ID_608070908" MODIFIED="1525124214840" TEXT="Seq1        :">
<node CREATED="1512953639279" ID="ID_1741392154" MODIFIED="1512955031447" TEXT="-&lt;1&gt;-&lt;3&gt;-&lt;5&gt;-">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1512953639279" ID="ID_213667790" MODIFIED="1512955034003" TEXT="-&lt;tuple&lt;Num&lt;1&gt;, Num&lt;3&gt;, Num&lt;5&gt; &gt;&gt;-">
<icon BUILTIN="button_cancel"/>
</node>
</node>
<node CREATED="1512953692712" FOLDED="true" ID="ID_690443382" MODIFIED="1525124214840" TEXT="Prepend        :">
<node CREATED="1512953639279" ID="ID_1949823809" MODIFIED="1512954789660" TEXT="TUPLE-&lt;i&gt;-&lt;1&gt;-&lt;3&gt;-&lt;5&gt;-">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1512953639279" ID="ID_1268362964" MODIFIED="1512954792261" TEXT="TUPLE-&lt;tuple&lt;int, Num&lt;1&gt;, Num&lt;3&gt;, Num&lt;5&gt; &gt;&gt;-">
<icon BUILTIN="button_cancel"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1512953030113" FOLDED="true" HGAP="21" ID="ID_227944051" MODIFIED="1525124214841" TEXT="bestehenden Code in Commands gefixt" VSHIFT="12">
<icon BUILTIN="button_ok"/>
<node CREATED="1512953037928" ID="ID_1081876156" MODIFIED="1512953052337" TEXT="verwende nun explizite Rebinding-Metafunktion"/>
<node CREATED="1512955051435" ID="ID_1397072837" MODIFIED="1512955062645" TEXT="weitere Fehler im Test-Diagnose-Code">
<icon BUILTIN="ksmiletris"/>
</node>
</node>
</node>
</node>
<node COLOR="#990000" CREATED="1512844615941" ID="ID_1111018492" MODIFIED="1512952089605" TEXT="auto expand to leafs">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#990000" CREATED="1512844628403" ID="ID_926180284" MODIFIED="1513217015005" TEXT="Heben von single values">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="button_cancel"/>
</node>
</node>
<node COLOR="#338800" CREATED="1510969031379" FOLDED="true" ID="ID_842384656" MODIFIED="1561827469150" TEXT="demonstrate_LayeredEvaluation();">
<icon BUILTIN="button_ok"/>
<node CREATED="1513035990902" FOLDED="true" ID="ID_1647713519" MODIFIED="1561827469132" TEXT="Zweck">
<icon BUILTIN="info"/>
<node CREATED="1513035997493" ID="ID_1010963261" MODIFIED="1513036010287" TEXT="vorbereitender Finger&#xfc;bung f&#xfc;r UI-Coord-Matching"/>
<node CREATED="1513036021682" ID="ID_979180127" MODIFIED="1513036042627" TEXT="demonstriert Arbeiten auf opaque Daten"/>
<node CREATED="1513036050278" ID="ID_1967927817" MODIFIED="1513036064144" TEXT="demonstriert Algo in Layern"/>
</node>
<node CREATED="1513036074899" FOLDED="true" ID="ID_1736020922" MODIFIED="1561827469132" TEXT="Vorgaben">
<icon BUILTIN="yes"/>
<node CREATED="1513036079426" ID="ID_1465268489" MODIFIED="1513036093852" TEXT="Text-Fixture so einfach wie m&#xf6;glich"/>
<node CREATED="1513036109158" ID="ID_142686199" MODIFIED="1513036128095" TEXT="es wird tats&#xe4;chlich etwas Baum-artig gesucht"/>
<node CREATED="1513036128988" ID="ID_1461134959" MODIFIED="1513036135063" TEXT="das Ergebnis ist verifizierbar"/>
</node>
<node CREATED="1513036196163" FOLDED="true" ID="ID_994330749" MODIFIED="1561827469132" TEXT="Idee-1">
<icon BUILTIN="idea"/>
<node CREATED="1513036205114" ID="ID_792801416" MODIFIED="1513036214764" TEXT="zuf&#xe4;llige Zahlenfolge wiederfinden"/>
<node CREATED="1513036215559" ID="ID_971330002" MODIFIED="1513036250591" TEXT="...indem man in N Permutationen hintereinander sucht"/>
<node CREATED="1513036284727" FOLDED="true" ID="ID_1614652691" MODIFIED="1525124214841" TEXT="brauche...">
<icon BUILTIN="forward"/>
<node CREATED="1513036309324" ID="ID_1342792562" MODIFIED="1513036336740" TEXT="Folge von N (zuf&#xe4;lligen) Zahlen"/>
<node CREATED="1513036452217" ID="ID_526681708" MODIFIED="1513036460131" TEXT="permutierte, iterierbare Kopie dieser"/>
<node CREATED="1513036690929" ID="ID_956797377" LINK="http://en.cppreference.com/w/cpp/algorithm/random_shuffle" MODIFIED="1513036739059">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      siehe <font color="#4423e3"><b>std::shuffle</b></font>
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1513036568505" FOLDED="true" ID="ID_1862649545" MODIFIED="1525124214841" TEXT="Kritik">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1513128587329" ID="ID_1360317308" MODIFIED="1513202754508" TEXT="Ergebnis nicht klar erkennbar"/>
<node CREATED="1513036574968" ID="ID_7224449" MODIFIED="1513036580732" TEXT="ist nicht wirklich ein Baum"/>
<node CREATED="1513202756258" ID="ID_397395434" MODIFIED="1513202760717" TEXT="kein Backtracking"/>
</node>
</node>
<node CREATED="1513128368566" FOLDED="true" ID="ID_405602924" MODIFIED="1561827469132" TEXT="Idee-2">
<icon BUILTIN="idea"/>
<node CREATED="1513128409745" ID="ID_784629005" MODIFIED="1513128419748" TEXT="naive Primfaktor-Zerlegung"/>
<node CREATED="1513129988151" FOLDED="true" ID="ID_1967188076" MODIFIED="1525124214841" TEXT="brauche...">
<icon BUILTIN="forward"/>
<node CREATED="1513129996990" ID="ID_276407850" MODIFIED="1513130019831" TEXT="Baum-artige Darstellung einer repetitiven Berechnung"/>
<node CREATED="1513130020747" ID="ID_308365494" MODIFIED="1513130093541" TEXT="die nicht so verworren ist, da&#xdf; sie sofort abschreckt"/>
</node>
<node CREATED="1513131251047" FOLDED="true" ID="ID_1217476327" MODIFIED="1525124214841" TEXT="Kritik">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1513131259926" ID="ID_1015392046" MODIFIED="1513131271729" TEXT="Verfahren ist komplett deterministisch"/>
<node CREATED="1513131272956" ID="ID_1394088821" MODIFIED="1513131285590" TEXT="kein Grund, expandChildren() von au&#xdf;en aufzurufen"/>
</node>
</node>
<node CREATED="1513206569503" FOLDED="true" ID="ID_729219891" MODIFIED="1561827469132" TEXT="Idee-3">
<arrowlink COLOR="#374d84" DESTINATION="ID_570463763" ENDARROW="Default" ENDINCLINATION="2;-39;" ID="Arrow_ID_1149883114" STARTARROW="None" STARTINCLINATION="0;47;"/>
<icon BUILTIN="idea"/>
<node CREATED="1513206594428" ID="ID_678047423" MODIFIED="1513206615387">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      vorgegebene Zahlenfolge<br />in untendlichem Zufalls-Baum finden
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1513206650964" FOLDED="true" ID="ID_973791239" MODIFIED="1525124214841" TEXT="brauche...">
<icon BUILTIN="forward"/>
<node CREATED="1513206662290" ID="ID_250120880" MODIFIED="1513206691338" TEXT="unendlichen Zufalls-Wald"/>
<node CREATED="1513206692190" ID="ID_1442303873" MODIFIED="1513206708352" TEXT="zuf&#xe4;llige Kind-sequenzen"/>
<node CREATED="1513206709484" ID="ID_1659632018" MODIFIED="1513206720390" TEXT="die nicht sicher zum Erfolg f&#xfc;hren"/>
</node>
<node CREATED="1513206872518" FOLDED="true" ID="ID_1422148890" MODIFIED="1525124214841" TEXT="wichtig">
<icon BUILTIN="yes"/>
<node CREATED="1513206889508" ID="ID_436020243" MODIFIED="1513206900054" TEXT="Trennung zwischen Baum und Suche"/>
<node CREATED="1513207103464" ID="ID_919723140" MODIFIED="1513207144478" TEXT="durchgehender Zustand in der Suche"/>
<node CREATED="1513207165088" ID="ID_529012246" MODIFIED="1513207191511" TEXT="Nichtdeterminismus, aber 99.9999% Erfolgs-Chancen"/>
</node>
</node>
<node COLOR="#338800" CREATED="1513218546828" FOLDED="true" HGAP="-37" ID="ID_570463763" MODIFIED="1561827469132" TEXT="konkret..." VSHIFT="37">
<linktarget COLOR="#374d84" DESTINATION="ID_570463763" ENDARROW="Default" ENDINCLINATION="2;-39;" ID="Arrow_ID_1149883114" SOURCE="ID_729219891" STARTARROW="None" STARTINCLINATION="0;47;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1513218561938" ID="ID_1431731183" MODIFIED="1513473294567" TEXT="randomTree bauen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1513218569000" ID="ID_973922179" MODIFIED="1513473296220" TEXT="Zustands-Typ bauen">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1513218582175" FOLDED="true" ID="ID_1963772553" MODIFIED="1525124214842" TEXT="Probleme">
<icon BUILTIN="messagebox_warning"/>
<node COLOR="#338800" CREATED="1513218627121" FOLDED="true" ID="ID_1077327965" MODIFIED="1513473496041" TEXT="Bottom-Error">
<arrowlink COLOR="#179a76" DESTINATION="ID_474013760" ENDARROW="Default" ENDINCLINATION="513;33;" ID="Arrow_ID_1289625747" STARTARROW="None" STARTINCLINATION="426;-150;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1513218635200" ID="ID_418877787" MODIFIED="1513218650010" TEXT="beim Materialisieren der Random-Target-Sequenz"/>
</node>
<node COLOR="#338800" CREATED="1513218664652" FOLDED="true" ID="ID_606716798" MODIFIED="1513476731235" TEXT="join kopiert einmal zu viel">
<icon BUILTIN="button_ok"/>
<node CREATED="1513218677962" ID="ID_533421172" MODIFIED="1513218685429" TEXT="Ha! in der For-Schleife"/>
<node CREATED="1513218687113" ID="ID_108639825" MODIFIED="1513218698203" TEXT="der Iter ist benannt, also wird kopiert"/>
<node CREATED="1513218699103" FOLDED="true" ID="ID_645074355" MODIFIED="1525124214841" TEXT="ENABLE_IN_STD_FOR_LOOP">
<icon BUILTIN="help"/>
<node CREATED="1513218716941" ID="ID_1490164328" MODIFIED="1513476644166" TEXT="ist das so korrekt?">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="help"/>
</node>
<node CREATED="1513476644949" ID="ID_1188646042" MODIFIED="1513476648032" TEXT="ich denke schon"/>
<node CREATED="1513476649092" ID="ID_1643873286" MODIFIED="1513476698904">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      man kann move(iter) verwenden,
    </p>
    <p>
      wenn man konsumieren m&#246;chte
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1513476700629" ID="ID_316067173" MODIFIED="1513476716421" TEXT="...oder eine handgeschriebene FOR-Schleife">
<font NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node COLOR="#338800" CREATED="1513218727603" ID="ID_1592038855" MODIFIED="1513476627801" TEXT="while-Schleife verwenden">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1513219035419" FOLDED="true" ID="ID_1033553745" MODIFIED="1513473487443" TEXT="pr&#xfc;fen: default constructible state core">
<icon BUILTIN="button_ok"/>
<node CREATED="1513219271307" ID="ID_474013760" MODIFIED="1513284051101" TEXT="hier liegt der Hund begraben">
<linktarget COLOR="#179a76" DESTINATION="ID_474013760" ENDARROW="Default" ENDINCLINATION="513;33;" ID="Arrow_ID_1289625747" SOURCE="ID_1077327965" STARTARROW="None" STARTINCLINATION="426;-150;"/>
<icon BUILTIN="ksmiletris"/>
</node>
<node COLOR="#338800" CREATED="1513219330467" ID="ID_37372305" MODIFIED="1513284091448" TEXT="default-konstruierte RandomSeq mu&#xdf; leer sein!">
<font NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1513473427921" FOLDED="true" ID="ID_530629075" MODIFIED="1525124214841" TEXT="Algo-State ist nicht default-constructible">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="idea"/>
<node CREATED="1513473445287" ID="ID_482215181" MODIFIED="1513473460312" TEXT="aber man man kommt damit &#xfc;ber die Runden"/>
<node CREATED="1513473461140" ID="ID_9651434" MODIFIED="1513473477134" TEXT="solange man den resultierenden Iterator nicht default-konstruiert"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1513283787640" FOLDED="true" ID="ID_1300399860" MODIFIED="1513476755527" TEXT="Protokoll-pop funktioniert nicht">
<icon BUILTIN="stop-sign"/>
<node CREATED="1513283807613" ID="ID_711568006" MODIFIED="1513283821335" TEXT="ersch&#xf6;pfter Kind-Iter wird nicht wegger&#xe4;umt"/>
<node CREATED="1513283822323" ID="ID_1993626666" MODIFIED="1513283848220" TEXT="Folge: es wird auf dem letzten Element weitergez&#xe4;hlt"/>
<node CREATED="1513283849472" FOLDED="true" ID="ID_1522104923" MODIFIED="1525124214841" TEXT="Aber der Basis-Iter (Datenquelle) funktioniert korrekt">
<node CREATED="1513283998356" ID="ID_265634850" MODIFIED="1513284011958" TEXT="deshalb funktioniert der Basis-Algo halbwegs"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1513284012947" ID="ID_968932002" MODIFIED="1513476746547" TEXT="aber kein korrekte Backtracking">
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1513284021720" ID="ID_591353215" MODIFIED="1513476751387" TEXT="und das Protokoll geht out-of sync">
<icon BUILTIN="info"/>
</node>
</node>
<node CREATED="1513283870965" FOLDED="true" ID="ID_372321627" MODIFIED="1525124214842" TEXT="Verdacht: wieder IterSrource schuld">
<icon BUILTIN="button_cancel"/>
<node CREATED="1513283882027" ID="ID_835741483" MODIFIED="1513283887198" TEXT="iterate hinter Ende"/>
<node CREATED="1513283888099" ID="ID_418628311" MODIFIED="1513283895629" TEXT="h&#xe4;tte den Pointer auf NULL setzen m&#xfc;ssen"/>
<node CREATED="1513286352195" ID="ID_613044101" MODIFIED="1513286362260" TEXT="nein, das ist es nicht">
<icon BUILTIN="stop-sign"/>
</node>
<node CREATED="1513286365209" ID="ID_1245783923" MODIFIED="1513286383453" TEXT="dataSrc poppt ja transparent...">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1513286396525" FOLDED="true" ID="ID_1013175212" MODIFIED="1525124214842" TEXT="Logisches Problem mit layered expand">
<arrowlink COLOR="#9c5265" DESTINATION="ID_263549307" ENDARROW="Default" ENDINCLINATION="189;145;" ID="Arrow_ID_1920033917" STARTARROW="None" STARTINCLINATION="1219;0;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="clanbomber"/>
<node CREATED="1513286420386" ID="ID_32133695" MODIFIED="1513286442066" TEXT="oberer Layer bekommt Ende der Quell-Folge nicht mit"/>
<node CREATED="1513286442822" ID="ID_1310607126" MODIFIED="1513286465873" TEXT="...und macht daher endlos mit den Kindern weiter">
<icon BUILTIN="broken-line"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1513396403408" FOLDED="true" ID="ID_1034289731" MODIFIED="1525124214842" TEXT="pragmatischer Workaround">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1513396411416" ID="ID_1466307579" MODIFIED="1513401380676" TEXT="Tiefe &#xfc;ber ChildExpandableSource durchgeben">
<arrowlink COLOR="#75c4c1" DESTINATION="ID_1752199055" ENDARROW="Default" ENDINCLINATION="653;643;" ID="Arrow_ID_1536391130" STARTARROW="None" STARTINCLINATION="1299;33;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1513401151507" FOLDED="true" ID="ID_1181955496" MODIFIED="1525124214842" TEXT="Protokoll aber immer noch nicht korrekt implementiert">
<arrowlink COLOR="#63b5aa" DESTINATION="ID_804459643" ENDARROW="Default" ENDINCLINATION="456;372;" ID="Arrow_ID_1606709369" STARTARROW="None" STARTINCLINATION="1446;0;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1513401162242" ID="ID_147162782" MODIFIED="1513401173005" TEXT="push am Ende"/>
<node CREATED="1513401192358" ID="ID_91552039" MODIFIED="1513401294410" TEXT="Beispiel &quot;FAVSU&quot;">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      rLet(40878 &lt; 18446744073709551615) &#8594; S
    </p>
    <p>
      |&#8623;| S ... 40878
    </p>
    <p>
      rLet(40879 &lt; 18446744073709551615) &#8594; F
    </p>
    <p>
      |!| expand 40879
    </p>
    <p>
      rLet(0 &lt; 4) &#8594; A
    </p>
    <p>
      rLet(40880 &lt; 18446744073709551615) &#8594; Q
    </p>
    <p>
      |.| A --&gt;&gt; 40879
    </p>
    <p>
      |!| expand 40879
    </p>
    <p>
      rLet(0 &lt; 4) &#8594; F
    </p>
    <p>
      rLet(1 &lt; 4) &#8594; N
    </p>
    <p>
      |.| F --&gt;&gt; 40879
    </p>
    <p>
      |&#8623;| F ... 40879
    </p>
    <p>
      rLet(1 &lt; 4) &#8594; W
    </p>
    <p>
      |&#8623;| W ... 40879-0-1
    </p>
    <p>
      rLet(2 &lt; 4) &#8594; N
    </p>
    <p>
      |&#8623;| N ... 40879-0-2
    </p>
    <p>
      rLet(3 &lt; 4) &#8594; T
    </p>
    <p>
      |&#8623;| T ... 40879-0-3
    </p>
    <p>
      rLet(4 &lt; 4) &#8594; F
    </p>
    <p>
      |&#8623;| N ... 40879-1
    </p>
    <p>
      rLet(2 &lt; 4) &#8594; F
    </p>
    <p>
      |&#8623;| F ... 40879-2
    </p>
    <p>
      rLet(3 &lt; 4) &#8594; A
    </p>
    <p>
      |!| expand 40879-3
    </p>
    <p>
      rLet(0 &lt; 4) &#8594; J
    </p>
    <p>
      rLet(4 &lt; 4) &#8594; Y
    </p>
    <p>
      |.| J --&gt;&gt; 40879-3
    </p>
    <p>
      |&#8623;| J ... 40879-3
    </p>
    <p>
      rLet(1 &lt; 4) &#8594; H
    </p>
    <p>
      |&#8623;| H ... 40879-4
    </p>
    <p>
      rLet(2 &lt; 4) &#8594; H
    </p>
    <p>
      |&#8623;| H ... 40879-5
    </p>
    <p>
      rLet(3 &lt; 4) &#8594; F
    </p>
    <p>
      |&#8623;| F ... 40879-6
    </p>
    <p>
      rLet(4 &lt; 4) &#8594; V
    </p>
    <p>
      |&#8623;| Q ... 40880
    </p>
    <p>
      rLet(40881 &lt; 18446744073709551615) &#8594; A
    </p>
    <p>
      |&#8623;| A ... 40881
    </p>
    <p>
      rLet(40882 &lt; 18446744073709551615) &#8594; X
    </p>
    <p>
      |&#8623;| X ... 40882
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1513401185198" ID="ID_933999759" MODIFIED="1513473212036" TEXT="Z&#xe4;hler l&#xe4;uft weiter">
<icon BUILTIN="info"/>
</node>
<node CREATED="1513473196754" ID="ID_570569140" MODIFIED="1513473207824" TEXT="L&#xf6;sung: depth()-Infromation nutzen">
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#338800" CREATED="1513447822247" ID="ID_1725576262" MODIFIED="1513448159466" TEXT="jetzt scheint&apos;s zu funktionieren...">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      rLet(77943 &lt; 18446744073709551615) &#8594; R
    </p>
    <p>
      |&#8623;| R ... 77943
    </p>
    <p>
      rLet(77944 &lt; 18446744073709551615) &#8594; X
    </p>
    <p>
      |!| expand 77944
    </p>
    <p>
      rLet(0 &lt; 4) &#8594; U
    </p>
    <p>
      rLet(77945 &lt; 18446744073709551615) &#8594; I
    </p>
    <p>
      |.| U --&gt;&gt; 77944-0
    </p>
    <p>
      |&#8623;| U ... 77944-0
    </p>
    <p>
      rLet(1 &lt; 4) &#8594; X
    </p>
    <p>
      |!| expand 77944-1
    </p>
    <p>
      rLet(0 &lt; 4) &#8594; K
    </p>
    <p>
      rLet(2 &lt; 4) &#8594; Z
    </p>
    <p>
      |.| K --&gt;&gt; 77944-1-0
    </p>
    <p>
      |!| expand 77944-1-0
    </p>
    <p>
      rLet(0 &lt; 4) &#8594; V
    </p>
    <p>
      rLet(1 &lt; 4) &#8594; Y
    </p>
    <p>
      |.| V --&gt;&gt; 77944-1-0-0
    </p>
    <p>
      |&#8623;| V ... 77944-1-0-0
    </p>
    <p>
      rLet(1 &lt; 4) &#8594; I
    </p>
    <p>
      |&#8623;| I ... 77944-1-0-1
    </p>
    <p>
      rLet(2 &lt; 4) &#8594; I
    </p>
    <p>
      |&#8623;| I ... 77944-1-0-2
    </p>
    <p>
      rLet(3 &lt; 4) &#8594; Z
    </p>
    <p>
      |!| expand 77944-1-0-3
    </p>
    <p>
      rLet(0 &lt; 4) &#8594; Q
    </p>
    <p>
      rLet(4 &lt; 4) &#8594; X
    </p>
    <p>
      |.| Q --&gt;&gt; 77944-1-0-3-0
    </p>
    <p>
      |&#8623;| Q ... 77944-1-0-3-0
    </p>
    <p>
      rLet(1 &lt; 4) &#8594; M
    </p>
    <p>
      Protocol of the search: 77944-1-0-3-1
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1510941646050" ID="ID_596422747" MODIFIED="1535892395441" TEXT="expandable ChildIter">
<linktarget COLOR="#283b63" DESTINATION="ID_596422747" ENDARROW="Default" ENDINCLINATION="66;49;" ID="Arrow_ID_1521598219" SOURCE="ID_1408571420" STARTARROW="Default" STARTINCLINATION="94;-19;"/>
<linktarget COLOR="#786296" DESTINATION="ID_596422747" ENDARROW="Default" ENDINCLINATION="278;120;" ID="Arrow_ID_1919142695" SOURCE="ID_115330701" STARTARROW="None" STARTINCLINATION="952;148;"/>
<linktarget COLOR="#236375" DESTINATION="ID_596422747" ENDARROW="Default" ENDINCLINATION="-1080;23;" ID="Arrow_ID_1748772698" SOURCE="ID_463934766" STARTARROW="None" STARTINCLINATION="-1002;-57;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1510941655360" ID="ID_1359727169" MODIFIED="1514292297209" TEXT="verwendet TreeExplorer">
<arrowlink COLOR="#585e9d" DESTINATION="ID_845080696" ENDARROW="Default" ENDINCLINATION="-23;161;" ID="Arrow_ID_402051988" STARTARROW="None" STARTINCLINATION="138;6;"/>
<icon BUILTIN="info"/>
</node>
<node COLOR="#338800" CREATED="1510941661615" ID="ID_463290050" MODIFIED="1514292291295" TEXT="verpackt in IterSource">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1513561602173" FOLDED="true" HGAP="180" ID="ID_760843174" MODIFIED="1561827483827" TEXT="Design" VSHIFT="29">
<icon BUILTIN="button_ok"/>
<node CREATED="1513560607636" FOLDED="true" ID="ID_774099115" MODIFIED="1561827482920" TEXT="expand -- wie?">
<icon BUILTIN="help"/>
<node CREATED="1513560618698" ID="ID_471382650" MODIFIED="1513560638771" TEXT="Brauche Navigations-Zustand"/>
<node CREATED="1513560639504" ID="ID_1901070791" MODIFIED="1513560645283" TEXT="eine Position im Baum"/>
<node CREATED="1513560646014" ID="ID_812625308" MODIFIED="1513560649570" TEXT="implementation defined"/>
<node CREATED="1513560650614" ID="ID_127083955" MODIFIED="1513560657793" TEXT="mu&#xdf; dort Kind-iterieren k&#xf6;nnen"/>
</node>
<node CREATED="1513561422541" FOLDED="true" ID="ID_1500554436" MODIFIED="1561827482920" TEXT="was ist depth()?">
<arrowlink COLOR="#62326e" DESTINATION="ID_1709677569" ENDARROW="Default" ENDINCLINATION="-209;-29;" ID="Arrow_ID_894748806" STARTARROW="Default" STARTINCLINATION="43;132;"/>
<linktarget COLOR="#9493b7" DESTINATION="ID_1500554436" ENDARROW="Default" ENDINCLINATION="91;103;" ID="Arrow_ID_811314610" SOURCE="ID_937539446" STARTARROW="None" STARTINCLINATION="-39;0;"/>
<icon BUILTIN="help"/>
<node CREATED="1513561437011" ID="ID_263179318" MODIFIED="1513561443415" TEXT="absolut oder relativ"/>
<node CREATED="1513561451138" FOLDED="true" ID="ID_1617286796" MODIFIED="1561827469150" TEXT="absolut">
<node CREATED="1513561456016" ID="ID_1274246203" MODIFIED="1513561465683" TEXT="Tiefe im Gesamt-Baum"/>
<node CREATED="1513561467719" ID="ID_339272046" MODIFIED="1513561480090" TEXT="startet am Aufsetz-Punkt"/>
<node CREATED="1513561484277" ID="ID_1051233845" MODIFIED="1513561491224" TEXT="kein Aufstieg dar&#xfc;ber m&#xf6;glich"/>
</node>
<node CREATED="1513561492668" FOLDED="true" ID="ID_600604579" MODIFIED="1561827469150" TEXT="relativ">
<node CREATED="1513561497003" ID="ID_860544223" MODIFIED="1513561508950" TEXT="expandChildren-Level"/>
<node CREATED="1513561509754" ID="ID_1041068517" MODIFIED="1513561522123" TEXT="startet mit 0 f&#xfc;r normalen ChildIterator"/>
<node CREATED="1513561531383" ID="ID_442154302" MODIFIED="1513561547728" TEXT="Match-Algo mu&#xdf; start-Offset verwalten und draufschlagen"/>
</node>
</node>
<node COLOR="#338800" CREATED="1513561577840" FOLDED="true" HGAP="63" ID="ID_260039139" MODIFIED="1561827482920" TEXT="Struktur Navigations-Zustand" VSHIFT="22">
<icon BUILTIN="button_ok"/>
<node CREATED="1513561744004" ID="ID_937539446" MODIFIED="1513961543467" TEXT="h&#xe4;ngt ab von relativ/absolut?">
<arrowlink COLOR="#9493b7" DESTINATION="ID_1500554436" ENDARROW="Default" ENDINCLINATION="91;103;" ID="Arrow_ID_811314610" STARTARROW="None" STARTINCLINATION="-39;0;"/>
<icon BUILTIN="help"/>
</node>
<node CREATED="1513561681235" FOLDED="true" ID="ID_671830446" MODIFIED="1561827469151" TEXT="relativ =&gt; Node-Ref gen&#xfc;gt">
<icon BUILTIN="help"/>
<node COLOR="#338800" CREATED="1513561715590" ID="ID_1509891681" MODIFIED="1513859782028" TEXT="nein">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1513561717958" ID="ID_333457131" MODIFIED="1513561721993" TEXT="Sonderfall Perspektive"/>
<node CREATED="1513859759850" ID="ID_799120258" MODIFIED="1513859771462" TEXT="Grunds&#xe4;tzlich kann es Sonderf&#xe4;lle geben">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1513561916554" ID="ID_1130596381" MODIFIED="1513561945359" TEXT="(node&amp;, depth)">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1513562001015" FOLDED="true" ID="ID_1952968226" MODIFIED="1561827469151" TEXT="zuz&#xfc;glich konkretem Kind-Iterator">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1513564476303" FOLDED="true" ID="ID_718816032" MODIFIED="1561827469133" TEXT="Problem: Typ">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1513564486206" ID="ID_586028205" MODIFIED="1513564495520" TEXT="Typ ist nicht uniform"/>
<node CREATED="1513564496228" ID="ID_559674728" MODIFIED="1513564503503" TEXT="wird erst hinter IterSource konform"/>
<node CREATED="1513564546974" ID="ID_301275475" MODIFIED="1513887480560" TEXT="wirklich relevantes Problem">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...weil es mutma&#223;lich
    </p>
    <p>
      im realen UI in &#228;hnlicher Form auch auftreten wird:
    </p>
    <p>
      die Menge der Top-Level-Fenster ist eben etwas anderes,
    </p>
    <p>
      als die Menge der Tracks in der Timeline.
    </p>
    <p>
      
    </p>
    <p>
      Erst nach einer Transformation wird daraus eine Menge von Strings
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1513859299432" FOLDED="true" ID="ID_1668202627" MODIFIED="1525124214849" TEXT="Minimal-Forderungen">
<icon BUILTIN="info"/>
<node CREATED="1513859392644" ID="ID_368154471" MODIFIED="1513859402742" TEXT="Verh&#xe4;ltnis von Original zu Expanded"/>
<node CREATED="1513859408489" ID="ID_1040511060" MODIFIED="1513859645105" TEXT="Expanded::yield mu&#xdf; kompatibel zu Original::yield sein">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1513859477704" FOLDED="true" ID="ID_1667428111" MODIFIED="1525124214849">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Expand-Funktor hat <i>einen</i>&#160;R&#252;ckgabe-Typ
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="forward"/>
<node CREATED="1513859590489" ID="ID_1305886859" MODIFIED="1513859654062" TEXT="das ist die st&#xe4;rkste Limitierung">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
<node CREATED="1513859609438" ID="ID_1238327119" MODIFIED="1513859619487" TEXT="nicht Referenz-kompatibel">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1513859597904" ID="ID_35135467" MODIFIED="1513859623114" TEXT="Wert-Kopie-kompatibel">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
</node>
<node CREATED="1513864109584" FOLDED="true" HGAP="58" ID="ID_363837528" MODIFIED="1561827469133" TEXT="gesucht ist...." VSHIFT="-10">
<icon BUILTIN="info"/>
<node CREATED="1513864121911" ID="ID_137778872" MODIFIED="1513864124330" TEXT="State-Core"/>
<node CREATED="1513864125110" FOLDED="true" ID="ID_102689213" MODIFIED="1525124214849" TEXT="(node&amp;, depth)">
<node CREATED="1513864147403" ID="ID_1713142534" MODIFIED="1513864154086" TEXT="wegen Spezial-Behandlung"/>
<node CREATED="1513864155194" ID="ID_173512509" MODIFIED="1513864163093" TEXT="an die Kinder rankommen"/>
</node>
<node CREATED="1513864167704" FOLDED="true" ID="ID_1035755808" MODIFIED="1525124214849" TEXT="aktuelle-Kind-Iteratrion">
<node CREATED="1513864226776" ID="ID_744083786" MODIFIED="1513864232132" TEXT="fester Typ"/>
<node CREATED="1513864232744" ID="ID_856825900" MODIFIED="1513864245898" TEXT="variablel wegen Spezial-Behandlung"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1513864247318" ID="ID_522758461" MODIFIED="1513889050556" TEXT="Widerspruch">
<icon BUILTIN="broken-line"/>
</node>
</node>
<node CREATED="1513864213482" ID="ID_1903636205" MODIFIED="1513864220098" TEXT="keine zus&#xe4;tzliche Allokation">
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1513889026175" FOLDED="true" ID="ID_1644294386" MODIFIED="1561827469133" TEXT="L&#xf6;sungs-M&#xf6;glichkeiten">
<node CREATED="1513889102196" ID="ID_583394337" MODIFIED="1513890986515" TEXT="zweimal VTable">
<linktarget COLOR="#3c6aa0" DESTINATION="ID_583394337" ENDARROW="Default" ENDINCLINATION="313;-25;" ID="Arrow_ID_387579532" SOURCE="ID_1469033836" STARTARROW="None" STARTINCLINATION="309;-7;"/>
</node>
<node CREATED="1513889145935" FOLDED="true" ID="ID_1909411263" MODIFIED="1525124214849" TEXT="protokoll-basierter Iterator">
<node CREATED="1513889759051" ID="ID_1243725514" MODIFIED="1513889793242" TEXT="analog zu IterAdapter"/>
<node CREATED="1513889793879" ID="ID_1469033836" MODIFIED="1513890986515" TEXT="braucht aber Funktions-Zeiger">
<arrowlink COLOR="#3c6aa0" DESTINATION="ID_583394337" ENDARROW="Default" ENDINCLINATION="313;-25;" ID="Arrow_ID_387579532" STARTARROW="None" STARTINCLINATION="309;-7;"/>
</node>
<node CREATED="1513890876028" ID="ID_1863789470" MODIFIED="1513890944145" TEXT="oder gemeinsame Datenstruktur">
<arrowlink COLOR="#3b69a0" DESTINATION="ID_1440266471" ENDARROW="Default" ENDINCLINATION="299;33;" ID="Arrow_ID_141537663" STARTARROW="None" STARTINCLINATION="258;0;"/>
</node>
</node>
<node CREATED="1513889813876" ID="ID_1440266471" MODIFIED="1513890944145" TEXT="Abstraktion via Datenstruktur">
<linktarget COLOR="#3b69a0" DESTINATION="ID_1440266471" ENDARROW="Default" ENDINCLINATION="299;33;" ID="Arrow_ID_141537663" SOURCE="ID_1863789470" STARTARROW="None" STARTINCLINATION="258;0;"/>
</node>
<node CREATED="1513890469187" FOLDED="true" ID="ID_572634197" MODIFIED="1525124214850" TEXT="Expander vor IterSource setzen">
<node CREATED="1513891132026" HGAP="30" ID="ID_1902519381" MODIFIED="1513891279623" TEXT="Stack of IterSources" VSHIFT="13">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1513891253569" FOLDED="true" ID="ID_972377662" MODIFIED="1525124214850" TEXT="Bauformen">
<node CREATED="1513891231085" ID="ID_1187042759" MODIFIED="1513891239903" TEXT="aus zwei TreeExplorern zusammengesetzt"/>
<node CREATED="1513891240587" ID="ID_1455962854" MODIFIED="1513891250606" TEXT="in das IterSource-Interface integriert"/>
</node>
</node>
</node>
</node>
<node CREATED="1513891620064" FOLDED="true" HGAP="-78" ID="ID_393488703" MODIFIED="1561827469151" TEXT="Diskussion" VSHIFT="10">
<icon BUILTIN="forward"/>
<node CREATED="1513891660578" FOLDED="true" ID="ID_1557026848" MODIFIED="1561827469133" TEXT="heterogener Baum">
<node CREATED="1513891666641" ID="ID_84511927" MODIFIED="1513891673373" TEXT="erzwingt Abstraktion"/>
<node CREATED="1513891674913" ID="ID_1300876479" MODIFIED="1513891696041" TEXT="erzgingt Platzhalter f&#xfc;r &quot;Position&quot;"/>
</node>
<node CREATED="1513891739920" FOLDED="true" ID="ID_1279255374" MODIFIED="1561827469133" TEXT="Meta-Datenstruktur == Reflection">
<node CREATED="1513891751766" ID="ID_1061575112" MODIFIED="1513891760585" TEXT="mu&#xdf; nicht per se schlecht sein"/>
<node CREATED="1513891771979" ID="ID_1279317536" MODIFIED="1513891793738">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <i>wenn</i>&#160;es sie g&#228;be <i>k&#246;nnte</i>&#160;man sie hier nutzen
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1513891804199" FOLDED="true" ID="ID_992579634" MODIFIED="1525124214857" TEXT="Ideen">
<node CREATED="1513891809406" ID="ID_397605243" MODIFIED="1513891818033" TEXT="GTK-Widget-Container"/>
<node CREATED="1513891818933" ID="ID_1781581570" MODIFIED="1513891823696" TEXT="GObject"/>
<node CREATED="1513891825708" ID="ID_1596653216" MODIFIED="1513891848885" TEXT="gui::model::Tangible"/>
</node>
<node CREATED="1513891876365" ID="ID_39114883" MODIFIED="1513891928397" TEXT="Knackpunkt: Struktur mu&#xdf; schon da sein">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...das hei&#223;t:
    </p>
    <p>
      diese Struktur mu&#223; bereits beim Aufbauen des GUI
    </p>
    <p>
      nebenbei mit aufgebaut werden, und &#252;ber alle
    </p>
    <p>
      mutierenden Aktionen hinweg automatisch konsistent bleiben
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#37417e" CREATED="1513891943436" ID="ID_1217718033" MODIFIED="1513891970693" TEXT="ist mir unsympatisch">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="smily_bad"/>
</node>
</node>
<node CREATED="1513892821757" ID="ID_812339590" MODIFIED="1513892833608" TEXT="Navigation allein erzwingt schon VTable"/>
<node CREATED="1513893044279" FOLDED="true" ID="ID_1996211433" MODIFIED="1561827469133" TEXT="Nav und IterSource verschmelzen">
<icon BUILTIN="idea"/>
<node CREATED="1513893027482" ID="ID_1061106814" MODIFIED="1513893042316" TEXT="minimales Design"/>
<node CREATED="1513893243100" FOLDED="true" ID="ID_622400006" MODIFIED="1525124214857" TEXT="Cursor-Interface">
<node CREATED="1513893512792" ID="ID_254466319" MODIFIED="1513893533977" TEXT="Iteration: next sibling"/>
<node CREATED="1513893536957" ID="ID_1831743270" MODIFIED="1513893551318" TEXT="Up: zum Vater"/>
<node CREATED="1513893552050" ID="ID_917117587" MODIFIED="1513893567173" TEXT="expand: Kind-Navigator"/>
<node CREATED="1513893589742" ID="ID_487266516" MODIFIED="1513893601664" TEXT="yield: Knoten-ID"/>
<node CREATED="1513893602348" ID="ID_1276818073" MODIFIED="1513893611167" TEXT="path: konstruiere UI-Coord"/>
</node>
<node CREATED="1513961350296" ID="ID_1067031793" MODIFIED="1513961358138" TEXT="TreeExplorer k&#xf6;nnte sowas unterst&#xfc;tzen..."/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1513893637863" FOLDED="true" ID="ID_1710637822" MODIFIED="1525124214857" TEXT="sch&#xf6;n aber fragw&#xfc;rdig">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1513893645254" ID="ID_111789267" MODIFIED="1513893649713" TEXT="YAGNI"/>
<node CREATED="1513893653949" ID="ID_201919603" MODIFIED="1513893660896" TEXT="Up erfordert Backlink"/>
<node CREATED="1513893682521" ID="ID_1477689037" MODIFIED="1513893811288">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <i>m&#246;glicherwese</i>&#160;aber notwendig
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...will sagen
    </p>
    <p>
      wenn ich mir heute so die Situation vorstelle,
    </p>
    <p>
      k&#246;nnte es darauf hinauslaufen, da&#223; man das braucht.
    </p>
    <p>
      Und zwar, zumindest die Eigenschaft, von gegebenem Element
    </p>
    <p>
      die Koordinaten zu ermitteln.
    </p>
    <p>
      
    </p>
    <p>
      Das ist aber dann <i>pratkisch auch schon</i>&#160;eine &quot;Up&quot;-Funktion,
    </p>
    <p>
      selbst wenn man sie nur indirekt implementiert
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node CREATED="1513893841787" FOLDED="true" ID="ID_588599089" MODIFIED="1561827469133">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <i>vorl&#228;ufige</i>&#160;MInimal-L&#246;sung
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
<node CREATED="1513893858089" ID="ID_1090821912" MODIFIED="1513893873067" TEXT="nur Expander nach au&#xdf;en ziehen"/>
<node CREATED="1513893873983" ID="ID_926734576" MODIFIED="1513893886449" TEXT="und fest als &quot;Iterator&quot;-Klasse definieren"/>
<node CREATED="1513894301013" FOLDED="true" ID="ID_1705515857" MODIFIED="1525124214858" TEXT="aktuell">
<node CREATED="1513893940206" ID="ID_1268073991" MODIFIED="1513893969869">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <i>bis jetzt</i>&#160;kommen wir ohne <b>Pos</b>-Abstraktion aus
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1513893892581" ID="ID_447708501" MODIFIED="1513893978568">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      das <b>Nav</b>-Interface k&#246;nnte daraus entstehen
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1513893916705" ID="ID_1837000174" MODIFIED="1513894531402" TEXT="als nested-Interface von LocationQuery"/>
</node>
<node COLOR="#177d54" CREATED="1513894057318" FOLDED="true" HGAP="19" ID="ID_1657702066" MODIFIED="1535891921460" TEXT="Weiterungen..." VSHIFT="28">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="idea"/>
<node CREATED="1513894072292" ID="ID_550737261" MODIFIED="1513894085095" TEXT="die n&#xe4;chsten Schritte w&#xe4;ren....">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1513894141899" ID="ID_210080543" MODIFIED="1513894154501" TEXT="IterSource control-API umbauen"/>
<node CREATED="1513894156185" ID="ID_1081040201" MODIFIED="1513894165924" TEXT="spezielle StateCore f&#xfc;r IterSource"/>
<node CREATED="1513894173999" ID="ID_1818551612" MODIFIED="1513894187080" TEXT="...damit das breiter API aus Funktoren zug&#xe4;nglich wird"/>
<node CREATED="1513894188668" ID="ID_910323938" MODIFIED="1513894200942" TEXT="TreeExplorer erkennt IterSource"/>
<node CREATED="1513894240293" ID="ID_1730534731" MODIFIED="1513894256719" TEXT="Expander kann expand-Funktor in VTable nutzen"/>
</node>
</node>
</node>
</node>
<node CREATED="1513961595678" FOLDED="true" HGAP="101" ID="ID_66715685" MODIFIED="1561827482921" TEXT="Beschlu&#xdf;" VSHIFT="26">
<icon BUILTIN="yes"/>
<node CREATED="1513961667045" ID="ID_688351481" MODIFIED="1513962278992" TEXT="nur Verwenden von bestehenden Bausteinen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      es werden jetzt keine weiteren Features f&#252;r TreeExplorer gebaut....
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1513961683154" ID="ID_1803800382" MODIFIED="1513961693725" TEXT="Expander kommt vor das IterSource-Interface"/>
<node CREATED="1513962370870" ID="ID_1858133966" MODIFIED="1513962394590" TEXT="in einen komplett generischen Iterator-Typ"/>
<node CREATED="1514086892237" ID="ID_1709677569" MODIFIED="1514087030296" TEXT="depth() bleibt vorerst relativ">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...mal sehen, ob wir jemals daran ansto&#223;en...
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#62326e" DESTINATION="ID_1709677569" ENDARROW="Default" ENDINCLINATION="-209;-29;" ID="Arrow_ID_894748806" SOURCE="ID_1500554436" STARTARROW="Default" STARTINCLINATION="43;132;"/>
</node>
<node CREATED="1513961696753" FOLDED="true" ID="ID_1159003711" MODIFIED="1561827469151" TEXT="unsch&#xf6;n aber zukunftsweisend...">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1513961791716" FOLDED="true" ID="ID_996099359" MODIFIED="1561827469134" TEXT="zus&#xe4;tzliche Heap-Alloc f&#xfc;r jedes Expand">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      gemeint ist,
    </p>
    <p>
      <i>zus&#228;tzlich</i>&#160;zu dem Eintrag im Stack,
    </p>
    <p>
      der ohnehin selbst Heap-alloziert ist
    </p>
  </body>
</html></richcontent>
<node CREATED="1513961961661" FOLDED="true" ID="ID_96700718" MODIFIED="1525124214858" TEXT="Ziel w&#xe4;re...">
<node CREATED="1513962003719" ID="ID_432597650" MODIFIED="1513962013743" TEXT="nur ein shared_ptr"/>
<node CREATED="1513961972116" ID="ID_135060444" MODIFIED="1513961978462" TEXT="nur ein Heap-Block"/>
<node CREATED="1513961979106" ID="ID_1816600166" MODIFIED="1513961984765" TEXT="inilne+overflow"/>
</node>
<node CREATED="1513962016229" FOLDED="true" ID="ID_328900065" MODIFIED="1525124214858" TEXT="Relevanz sp&#xe4;ter untersuchen">
<icon BUILTIN="yes"/>
<node CREATED="1513962043170" ID="ID_156284138" MODIFIED="1513962051989" TEXT="dazu mu&#xdf; das GUI weitgehend ausprogrammiert sein"/>
<node CREATED="1513962052808" ID="ID_1434970767" MODIFIED="1513962062555" TEXT="dann kann man das Nutzuns-Pattern extrahieren"/>
<node CREATED="1513962063639" ID="ID_1542094830" MODIFIED="1513962069898" TEXT="und dann druch Messung &#xfc;berpr&#xfc;fen"/>
</node>
</node>
<node CREATED="1513961838174" ID="ID_579783999" MODIFIED="1513962463112" TEXT="Verh&#xe4;ltnis der VTable-APIs noch unklar">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Was ist <b>Nav</b>&#160;und was ist <b>Iteration-control</b>?
    </p>
    <p>
      Ist es sinnvoll, beide in einem gemeinsamen API zu haben,
    </p>
    <p>
      oder delegieren wir besser?
    </p>
    <p>
      Was sind die Kosten daf&#252;r?
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1513961620603" FOLDED="true" ID="ID_1014293898" MODIFIED="1561827483827" TEXT="Implementierung">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1513962702097" FOLDED="true" ID="ID_1829231358" MODIFIED="1561827482921" TEXT="Iterator-Typ konstruieren">
<arrowlink COLOR="#1d3877" DESTINATION="ID_989478065" ENDARROW="Default" ENDINCLINATION="33;-151;" ID="Arrow_ID_1500458185" STARTARROW="Default" STARTINCLINATION="-102;2;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1513966648491" FOLDED="true" ID="ID_558045889" MODIFIED="1561827469151" TEXT="Anforderungen">
<node CREATED="1513962999465" ID="ID_677650141" MODIFIED="1513963008827" TEXT="ist nicht mehr IterSource&lt;String&gt;::iterator"/>
<node CREATED="1513963010239" ID="ID_1755646553" MODIFIED="1513963023753" TEXT="baut auf einem Sub-Interface von IterSource auf"/>
<node CREATED="1513963030333" ID="ID_540171697" MODIFIED="1513963048414" TEXT="delegiert an den WrappedLumieraIterator f&#xfc;r Konstruktion"/>
<node CREATED="1513963055921" ID="ID_598702105" MODIFIED="1513963075090" TEXT="exponiert das expandChildren()"/>
</node>
<node CREATED="1513966658753" FOLDED="true" ID="ID_1038653404" MODIFIED="1561827469151" TEXT="Konstrukt">
<node CREATED="1513966673608" FOLDED="true" ID="ID_343053579" MODIFIED="1561827469134" TEXT="auf IterExploreSource aufbauen?">
<icon BUILTIN="button_cancel"/>
<node CREATED="1513966727648" ID="ID_538128057" MODIFIED="1513966744402" TEXT="das Interface wird in der Implementierung druchgreicht"/>
<node CREATED="1513966745134" ID="ID_1575558282" MODIFIED="1513966751273" TEXT="man kommt da nicht ohne weiteres ran"/>
<node CREATED="1513966752029" ID="ID_852127426" MODIFIED="1513966770086" TEXT="genau die expand() und depth() wird gar nicht gebraucht"/>
<node CREATED="1513966793087" ID="ID_1973470560" MODIFIED="1513966803775" TEXT="das w&#xe4;re Implementation-reuse">
<icon BUILTIN="stop-sign"/>
</node>
<node CREATED="1513966770770" ID="ID_1037405328" MODIFIED="1513966791882" TEXT="wir bauen gar nicht darauf auf">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1513966690757" FOLDED="true" ID="ID_335317868" MODIFIED="1561827469134" TEXT="direkt IterSource::iterator reimplementieren">
<icon BUILTIN="button_ok"/>
<node CREATED="1513966814204" ID="ID_1477637829" MODIFIED="1513966818232" TEXT="ist halt l&#xe4;stig"/>
<node CREATED="1513966819268" ID="ID_725108588" MODIFIED="1513966823134" TEXT="hier aber wohl einfacher"/>
<node CREATED="1513966826779" ID="ID_806221726" MODIFIED="1513966853280" TEXT="k&#xf6;nnte blueprint sein??">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      IterSource mu&#223; insgesamt besser erweiterbar werden....
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1513980929860" FOLDED="true" ID="ID_1710959906" MODIFIED="1561827469134" TEXT="Alternativen?">
<icon BUILTIN="help"/>
<node CREATED="1513980747077" FOLDED="true" ID="ID_458778699" MODIFIED="1525124214861" TEXT="IterExploreSource geschickt nutzen">
<icon BUILTIN="button_cancel"/>
<node CREATED="1513980786024" ID="ID_906988400" MODIFIED="1513980803442" TEXT="front-End ist IterExploreSource, ohne Wenn und Aber"/>
<node CREATED="1513980816020" ID="ID_1544667042" MODIFIED="1513980839954">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      der Expander sitzt nun doch <i>dahinter,</i>&#160;in der Implementierung
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1513980949474" ID="ID_884281761" MODIFIED="1513980956209" TEXT="damit wieder zwei VTables">
<icon BUILTIN="stop-sign"/>
</node>
</node>
</node>
</node>
<node CREATED="1513981063250" FOLDED="true" HGAP="29" ID="ID_1701586789" MODIFIED="1561827469151" TEXT="Builder" VSHIFT="7">
<icon BUILTIN="idea"/>
<node CREATED="1513981080616" ID="ID_75384138" MODIFIED="1513981107456" TEXT="bekommt TreeStructureNavigator *"/>
<node CREATED="1513981138280" ID="ID_878429069" MODIFIED="1513981146075" TEXT="baut darauf den IterSource::iterator"/>
<node CREATED="1513981147519" ID="ID_1838710944" MODIFIED="1513981198132" TEXT="setzt darauf einen TreeExplorer auf"/>
<node CREATED="1513981205567" ID="ID_1678344039" MODIFIED="1513981213954" TEXT="stattet diesen mit einem Expander aus"/>
<node CREATED="1513981215822" ID="ID_1059471923" MODIFIED="1513981236247" TEXT="welcher das TreeStructureNavigator-Interface nutzt"/>
<node CREATED="1513981274958" ID="ID_895258746" MODIFIED="1513981289179">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      das Ergebnis ist der <b>konkrete Iterator-Typ</b>
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1513962712192" FOLDED="true" ID="ID_357363842" MODIFIED="1561827482921" TEXT="festlegen, wo die VTable ist">
<icon BUILTIN="button_ok"/>
<node CREATED="1513978430367" ID="ID_616991569" MODIFIED="1513978446605" TEXT="Nav und Iter">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1513978427353" ID="ID_110999881" MODIFIED="1513978443627" TEXT="TreeStructureNavigator">
<icon BUILTIN="info"/>
</node>
</node>
<node COLOR="#338800" CREATED="1513986023498" FOLDED="true" ID="ID_1413967372" MODIFIED="1561827482921" TEXT="Integration mit TreeExplorer">
<icon BUILTIN="button_ok"/>
<node CREATED="1513986032290" FOLDED="true" ID="ID_1427647343" MODIFIED="1561827469151" TEXT="Problem: Zugang zur IterSource">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1513986054199" ID="ID_1239076586" MODIFIED="1513986063345" TEXT="bisher: protected im IterSource::iterator"/>
<node CREATED="1513986114902" ID="ID_1775644602" MODIFIED="1513986130220" TEXT="&quot;riecht&quot; nach einem generellen Problem">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="clanbomber"/>
</node>
<node CREATED="1513986064509" FOLDED="true" ID="ID_1794003959" MODIFIED="1561827469134" TEXT="nun m&#xfc;&#xdf;te man...">
<node CREATED="1513986085162" ID="ID_1791331544" MODIFIED="1513986090214" TEXT="von au&#xdf;en daran kommen"/>
<node CREATED="1513986090946" ID="ID_668980524" MODIFIED="1513986103340" TEXT="und auch noch downcasten auf TreeStructureNavigator"/>
</node>
<node CREATED="1513988678091" FOLDED="true" ID="ID_787175675" MODIFIED="1561827469134" TEXT="Pragmatismus-Trip">
<icon BUILTIN="idea"/>
<node CREATED="1513988687617" ID="ID_1652718385" MODIFIED="1513988692411" TEXT="nicht jetzt l&#xf6;sen">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1513988694704" ID="ID_1570679085" MODIFIED="1513988710933" TEXT="das w&#xe4;re ein Komplett-Umbau von IterSource">
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#174e54" CREATED="1513988715838" ID="ID_1398933111" MODIFIED="1513989057765" TEXT="stattdessen: Vorentwurf auf die gr&#xfc;ne Wiese">
<arrowlink COLOR="#1f9aa8" DESTINATION="ID_1242119956" ENDARROW="Default" ENDINCLINATION="87;-111;" ID="Arrow_ID_662359263" STARTARROW="None" STARTINCLINATION="-259;16;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="licq"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1513988744665" FOLDED="true" HGAP="27" ID="ID_1242119956" MODIFIED="1561827469152" TEXT="vorl&#xe4;ufige IterSource-Integration" VSHIFT="12">
<linktarget COLOR="#1f9aa8" DESTINATION="ID_1242119956" ENDARROW="Default" ENDINCLINATION="87;-111;" ID="Arrow_ID_662359263" SOURCE="ID_1398933111" STARTARROW="None" STARTINCLINATION="-259;16;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1513988930537" ID="ID_594152265" MODIFIED="1513992353318" TEXT="kann selbst&#xe4;ndig Iterator-Front-End bauen">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1513988952901" ID="ID_1668656742" MODIFIED="1513992356071" TEXT="dieses Front-End hat Zugang zum konkreten Sub-Interface">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1513988974179" ID="ID_900695722" MODIFIED="1513992358833" TEXT="Funktoren k&#xf6;nnen dieses Sub-Interface akzeptieren und liefern">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1513989030587" ID="ID_1529167083" MODIFIED="1514082163308" TEXT="TreeExplorer &#xfc;bernimmt / wrappt / packt aus">
<arrowlink COLOR="#659fa4" DESTINATION="ID_292438102" ENDARROW="Default" ENDINCLINATION="853;414;" ID="Arrow_ID_1802135668" STARTARROW="None" STARTINCLINATION="674;0;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1513962765760" FOLDED="true" ID="ID_795911284" MODIFIED="1561827482921" TEXT="Demo-Impl mit GenNode-Tree">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1514153936376" ID="ID_10587919" MODIFIED="1514153997161" TEXT="brauche neuen Builder">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1514153943993" ID="ID_1604846560" MODIFIED="1514153996307" TEXT="Sub-Interface dazwischenschieben">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1514153999177" FOLDED="true" ID="ID_1077665588" MODIFIED="1561827469152" TEXT="Child-Expansion">
<linktarget COLOR="#477889" DESTINATION="ID_1077665588" ENDARROW="Default" ENDINCLINATION="-191;0;" ID="Arrow_ID_1839260012" SOURCE="ID_1352163554" STARTARROW="None" STARTINCLINATION="277;0;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1514257085356" FOLDED="true" ID="ID_1953942552" MODIFIED="1561827469134" TEXT="AUA: wieder Problem mit IterSource">
<icon BUILTIN="messagebox_warning"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1514257106679" ID="ID_639495082" MODIFIED="1514257205927" TEXT="Design kaputt">
<icon BUILTIN="broken-line"/>
</node>
<node CREATED="1514257118263" ID="ID_1711832615" MODIFIED="1514257127032" TEXT="nur der Iterator kennt &quot;aktuelles Element&quot;"/>
<node CREATED="1514257127740" ID="ID_1443037774" MODIFIED="1514257143638" TEXT="via IterSource-Interface kommt man da nicht ran"/>
</node>
<node COLOR="#338800" CREATED="1514257226775" ID="ID_813552503" MODIFIED="1514260900863" TEXT="workaround: mitlauschen...">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Wire-Tap-Implementierung
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1514261162634" FOLDED="true" ID="ID_551533507" MODIFIED="1561827469135" TEXT="funktioniert noch nicht...">
<linktarget COLOR="#bd4043" DESTINATION="ID_551533507" ENDARROW="Default" ENDINCLINATION="-143;214;" ID="Arrow_ID_327266711" SOURCE="ID_732935391" STARTARROW="None" STARTINCLINATION="86;-19;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1514291726371" ID="ID_126077844" MODIFIED="1514291734531" TEXT="war harmlos...">
<icon BUILTIN="ksmiletris"/>
</node>
<node COLOR="#338800" CREATED="1514291737914" ID="ID_480408923" MODIFIED="1514291802409" TEXT="kein grunds&#xe4;tzliches Problem">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1514291747624" FOLDED="true" ID="ID_1328105733" MODIFIED="1525124214866" TEXT="nur ein logischer Programmier-Fehler">
<icon BUILTIN="info"/>
<node CREATED="1514291765589" ID="ID_1350779896" MODIFIED="1514291778528" TEXT="(tree,depth) ist eine Art Koordinate hier"/>
<node CREATED="1514291781156" ID="ID_1324645338" MODIFIED="1514291796321">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      das hei&#223;t, depth ist <i>aktuelle</i>&#160;Tiefe!
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1510941577099" FOLDED="true" ID="ID_394904963" MODIFIED="1533608413635" TEXT="Implementierung">
<linktarget COLOR="#653655" DESTINATION="ID_394904963" ENDARROW="Default" ENDINCLINATION="606;374;" ID="Arrow_ID_1674594671" SOURCE="ID_286375730" STARTARROW="None" STARTINCLINATION="863;77;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1510941687588" ID="ID_601914095" MODIFIED="1518487921065" TEXT="beispielhaft f&#xfc;r GenNode umsetzen">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1510941740069" ID="ID_1408571420" MODIFIED="1561827464929" TEXT="erweiterter ChildIter">
<arrowlink COLOR="#283b63" DESTINATION="ID_596422747" ENDARROW="Default" ENDINCLINATION="66;49;" ID="Arrow_ID_1521598219" STARTARROW="Default" STARTINCLINATION="94;-19;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1513560671819" ID="ID_989478065" MODIFIED="1514292039775" TEXT="Interface umstellen">
<linktarget COLOR="#1d3877" DESTINATION="ID_989478065" ENDARROW="Default" ENDINCLINATION="33;-151;" ID="Arrow_ID_1500458185" SOURCE="ID_1829231358" STARTARROW="Default" STARTINCLINATION="-102;2;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1513560680562" ID="ID_634877617" MODIFIED="1514154023415" TEXT="TreeExplorer-Ausdr&#xfc;cke">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1513560690440" ID="ID_122153660" MODIFIED="1514154026278" TEXT="Spezial-Behandlung f&#xfc;r Perspektive">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1514154062952" FOLDED="true" ID="ID_1352163554" MODIFIED="1561827483827" TEXT="Child-Expansion">
<arrowlink COLOR="#477889" DESTINATION="ID_1077665588" ENDARROW="Default" ENDINCLINATION="-191;0;" ID="Arrow_ID_1839260012" STARTARROW="None" STARTINCLINATION="277;0;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1514260922259" FOLDED="true" HGAP="37" ID="ID_1286151530" MODIFIED="1561827482921" TEXT="Test..." VSHIFT="25">
<arrowlink COLOR="#525e89" DESTINATION="ID_113366695" ENDARROW="Default" ENDINCLINATION="125;-4;" ID="Arrow_ID_1734399897" STARTARROW="None" STARTINCLINATION="-10;85;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1514261132830" ID="ID_1081488387" MODIFIED="1514292004576" TEXT="einfache Kinder">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1514261125623" ID="ID_109806241" MODIFIED="1514261139062" TEXT="depth wird hochgez&#xe4;hlt">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1514291864080" ID="ID_1213636271" MODIFIED="1514291872824" TEXT="&quot;child exploration&quot;">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1514261117856" FOLDED="true" ID="ID_732935391" MODIFIED="1561827469152" TEXT="Perspektive: klappt nicht">
<arrowlink COLOR="#bd4043" DESTINATION="ID_551533507" ENDARROW="Default" ENDINCLINATION="-143;214;" ID="Arrow_ID_327266711" STARTARROW="None" STARTINCLINATION="86;-19;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="broken-line"/>
<node CREATED="1514291947981" ID="ID_271670446" MODIFIED="1514291954120" TEXT="kein wikliches Problem"/>
<node CREATED="1514291954732" ID="ID_1642614412" MODIFIED="1514291964167" TEXT="nur ein Logik-Fehler beim Coden"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1510941748388" HGAP="38" ID="ID_209463158" MODIFIED="1561827464932" TEXT="Zustands-Layer" VSHIFT="1">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1514333524247" FOLDED="true" ID="ID_1136271037" MODIFIED="1561827483827" TEXT="Zustand umfa&#xdf;t...">
<icon BUILTIN="info"/>
<node CREATED="1514333554411" ID="ID_1337747593" MODIFIED="1514333618358" TEXT="target (Pattern) const&amp;"/>
<node CREATED="1514333705095" ID="ID_709075863" MODIFIED="1514898052783" TEXT="coverage (Builder)"/>
<node CREATED="1514333719613" FOLDED="true" ID="ID_256774095" MODIFIED="1561827482921" TEXT="navigator">
<node CREATED="1514333779158" ID="ID_1595920355" MODIFIED="1514333782280" TEXT="current ID"/>
<node CREATED="1514333767470" ID="ID_1575075730" MODIFIED="1514898072757" TEXT="depth"/>
</node>
<node CREATED="1514333825991" ID="ID_541168831" MODIFIED="1514898080652" TEXT="isSolution (implizit)"/>
</node>
<node COLOR="#338800" CREATED="1514338393316" FOLDED="true" ID="ID_1224653593" MODIFIED="1561827483827" TEXT="f&#xfc;r jedes Element...">
<icon BUILTIN="button_ok"/>
<node CREATED="1514338471073" FOLDED="true" ID="ID_1000829527" MODIFIED="1561827482921" STYLE="bubble" TEXT="target[depth] ==?">
<edge COLOR="#5b5ea6"/>
<node CREATED="1514338493135" FOLDED="true" ID="ID_1691944473" MODIFIED="1561827469152" TEXT="Ausgang wenn...">
<node CREATED="1514340242945" ID="ID_150794139" MODIFIED="1514908827230" TEXT="target zuende"/>
<node CREATED="1514340273349" ID="ID_1117812340" MODIFIED="1514908827230" TEXT="kein match"/>
<node BACKGROUND_COLOR="#e2f2c8" CREATED="1514340293010" ID="ID_108821287" MODIFIED="1514908880409">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ist <i>keine </i>L&#246;sung
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1514338508292" FOLDED="true" ID="ID_1940839257" MODIFIED="1561827469152" TEXT="sonst">
<node CREATED="1514338551790" ID="ID_76414417" MODIFIED="1514908827232" TEXT="wildcard -&gt; setzen"/>
<node CREATED="1514338597880" ID="ID_413282334" MODIFIED="1514908827232" TEXT="match -&gt; setzen"/>
<node CREATED="1514341358818" ID="ID_1685868652" MODIFIED="1514908827233" TEXT="covered := depth()"/>
<node CREATED="1514338641730" ID="ID_878171387" MODIFIED="1514908827233" TEXT="scheduleExpansion()"/>
<node BACKGROUND_COLOR="#e2f2c8" CREATED="1514827974184" ID="ID_1774080036" MODIFIED="1514908873138">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ist <i>partielle </i>L&#246;sung
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node CREATED="1514908723845" ID="ID_1051709102" MODIFIED="1514908732301" TEXT="filtern auf L&#xf6;sung">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
</node>
<node COLOR="#338800" CREATED="1514828322209" FOLDED="true" HGAP="447" ID="ID_868482472" MODIFIED="1561827483828" TEXT="Implementierung" VSHIFT="24">
<icon BUILTIN="button_ok"/>
<node CREATED="1514828365236" ID="ID_596741108" MODIFIED="1514828377582" TEXT="per Seiteneffekt auf den privaten Resolver-state"/>
<node CREATED="1514828408694" ID="ID_360791024" MODIFIED="1514828619139">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <i>Ergebnis-Ausgabe </i>ist die jeweilige m&#246;gliche Coverage
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1514847720759" FOLDED="true" ID="ID_831358447" MODIFIED="1561827482922" TEXT="Struktur">
<node CREATED="1514847726158" FOLDED="true" ID="ID_460639525" MODIFIED="1561827469152" TEXT="wo brauche ich Builder?">
<node CREATED="1514847747979" ID="ID_710804937" MODIFIED="1514847782198" TEXT="target ist ein Builder, wird aber nicht ge&#xe4;ndert">
<icon BUILTIN="smily_bad"/>
</node>
<node CREATED="1514847769184" ID="ID_567857702" MODIFIED="1514847778011" TEXT="neue Coverage mu&#xdf; ge&#xe4;ndert werden">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1514847804652" FOLDED="true" ID="ID_1778000574" MODIFIED="1561827469152" TEXT="sind Builder sinnvoll?">
<node CREATED="1514847810723" ID="ID_468954134" MODIFIED="1514847816622" TEXT="gegenw&#xe4;rtig nicht klar"/>
<node CREATED="1514847817306" ID="ID_417284469" MODIFIED="1514847833963" TEXT="UICoord soll immutable sein">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1514847837399" FOLDED="true" ID="ID_198877050" MODIFIED="1561827469135" TEXT="Problem Normalisierung">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1514847847398" ID="ID_1538721674" MODIFIED="1514847856905" TEXT="Builder-Funktionen k&#xf6;nnen denormalisieren"/>
<node CREATED="1514847857748" ID="ID_1388054576" MODIFIED="1514847876837" TEXT="der Matching-Algo verl&#xe4;&#xdf;t sich auf die Normalisierung">
<icon BUILTIN="clanbomber"/>
</node>
<node CREATED="1514847882601" ID="ID_1468209152" MODIFIED="1514847895570" TEXT="beim Verlassen eines Builders ist erneut zu normalisieren">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node CREATED="1514847919164" FOLDED="true" ID="ID_1457973741" MODIFIED="1561827469152" TEXT="spezieller Manipulations-Builder">
<icon BUILTIN="button_ok"/>
<node CREATED="1514847939937" ID="ID_1183828033" MODIFIED="1514847949844" TEXT="erlaubt punktweise Manipulation"/>
<node CREATED="1514847950576" ID="ID_1211653233" MODIFIED="1514850848636" TEXT="normalisiert automatisch beim Abholen des Ergebnisses"/>
</node>
</node>
<node COLOR="#338800" CREATED="1514942333406" FOLDED="true" ID="ID_1235716633" MODIFIED="1561827482922" TEXT="Ankern unvollst&#xe4;ndiger Pfade">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1514942350940" ID="ID_1658536334" MODIFIED="1515034261027" TEXT="erweitertes Verst&#xe4;ndnis von &quot;Wildcard&quot;">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1515031418282" ID="ID_1390320369" MODIFIED="1515034265977" TEXT="Anker im Match ber&#xfc;cksichtigen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1514942365034" ID="ID_1911438770" MODIFIED="1515034279431" TEXT="nebenbei Anker aktualisieren">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1514942372976" ID="ID_1541868169" MODIFIED="1515034395295" TEXT="feststellen, ob coverage real oder m&#xf6;glich">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...insofern wir nur eine (partielle) L&#246;sung signalisieren,
    </p>
    <p>
      wenn wir einen <i>direkten</i>&#160;Match erziehlen.
    </p>
    <p>
      Ein wildcard-Match f&#252;hrt nur dazu, da&#223; wir zu den Kindern absteigen,
    </p>
    <p>
      aber z&#228;hlt erst mal f&#252;r sich nicht als L&#246;sung
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1517508915741" ID="ID_974516393" MODIFIED="1518750409200">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Support f&#252;r <i>elided</i>&#160;element
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#7e9da8" DESTINATION="ID_796216711" ENDARROW="Default" ENDINCLINATION="989;-91;" ID="Arrow_ID_925245331" STARTARROW="None" STARTINCLINATION="199;-5;"/>
<linktarget COLOR="#91a7b5" DESTINATION="ID_974516393" ENDARROW="Default" ENDINCLINATION="-759;53;" ID="Arrow_ID_862004765" SOURCE="ID_140988955" STARTARROW="None" STARTINCLINATION="1590;41;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1514897795054" FOLDED="true" ID="ID_1126804251" MODIFIED="1561827482922" TEXT="Erweiterung: verschiedne Filter">
<icon BUILTIN="hourglass"/>
<node CREATED="1515034405447" ID="ID_1908721517" MODIFIED="1515034409410" TEXT="YAGNI"/>
<node CREATED="1515034414286" ID="ID_216901407" MODIFIED="1515034430396" TEXT="kann mir jetzt keinen wirklichen Nutzen daf&#xfc;r vorstellen">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
</node>
</node>
<node CREATED="1514339655585" FOLDED="true" ID="ID_20763657" MODIFIED="1561827483828" TEXT="brauche">
<icon BUILTIN="forward"/>
<node CREATED="1514339665248" ID="ID_1142507602" MODIFIED="1514339776889" TEXT="low-level-Operation">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <ul>
      <li>
        nur f&#252;r internen Gebrauch
      </li>
      <li>
        protected im Builder
      </li>
    </ul>
  </body>
</html></richcontent>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
<node COLOR="#338800" CREATED="1514339673519" FOLDED="true" ID="ID_1697551113" MODIFIED="1561827482922" TEXT="writeAt">
<icon BUILTIN="button_ok"/>
<node CREATED="1514339689469" ID="ID_686921797" MODIFIED="1514339694112" TEXT="erweitert bei Bedarf"/>
<node CREATED="1514339695220" ID="ID_1819447572" MODIFIED="1514339700103" TEXT="&#xfc;berschreibt Position"/>
<node CREATED="1514339700955" ID="ID_503690023" MODIFIED="1514339717876" TEXT="k&#xfc;rzt/&#xe4;ndert sonst nix"/>
</node>
<node COLOR="#338800" CREATED="1514746187370" FOLDED="true" ID="ID_989083906" MODIFIED="1561827482923" TEXT="Problem der partiellen Covfefe">
<icon BUILTIN="button_ok"/>
<node CREATED="1514746268280" FOLDED="true" ID="ID_1650861625" MODIFIED="1561827469152" TEXT="totale Coverage ist einfach">
<node CREATED="1514746278542" ID="ID_638094416" MODIFIED="1514746296223">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      L&#246;sungen m&#252;ssen
    </p>
    <p>
      am Ende des Patterns liegen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1514746306619" ID="ID_1050824210" MODIFIED="1514746324227" TEXT="&#xfc;berall partielle L&#xf6;sungen m&#xf6;glich"/>
<node CREATED="1514746345078" ID="ID_1469851869" MODIFIED="1514746354935" TEXT="wir wissen nicht, ob expand &#xfc;berhaupt geht"/>
<node CREATED="1514746367418" ID="ID_1714254434" MODIFIED="1514827781975" TEXT="L&#xf6;sungsidee: partielle L&#xf6;sungen filtern">
<arrowlink COLOR="#426785" DESTINATION="ID_43243557" ENDARROW="Default" ENDINCLINATION="156;-113;" ID="Arrow_ID_977247001" STARTARROW="None" STARTINCLINATION="-109;6;"/>
<icon BUILTIN="idea"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1514747333011" FOLDED="true" ID="ID_1334730598" MODIFIED="1561827469152" TEXT="Rekursion f&#xe4;llt weg">
<font NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="yes"/>
<node CREATED="1514747381652" ID="ID_798538712" MODIFIED="1514747385435" TEXT="super genital">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
<node CREATED="1514747405345" ID="ID_1406501979" MODIFIED="1514747435945" TEXT="jetzt strukturell lazy">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1514746923713" FOLDED="true" ID="ID_1928999977" MODIFIED="1561827482923" TEXT="scheduleExpansion">
<icon BUILTIN="button_ok"/>
<node CREATED="1514746932144" ID="ID_1456732951" MODIFIED="1514897708074" TEXT="neue TreeExplorer-Operation"/>
<node CREATED="1514746940111" ID="ID_899254883" MODIFIED="1514897708074" TEXT="sieht eine child-Expansion bei n&#xe4;chster Iteration vor">
<icon BUILTIN="info"/>
</node>
<node COLOR="#338800" CREATED="1514746959580" ID="ID_836777766" MODIFIED="1514897708074" TEXT="eigener Layer notwendig, mit bool-Flag">
<arrowlink COLOR="#455b75" DESTINATION="ID_108671176" ENDARROW="Default" ENDINCLINATION="-973;135;" ID="Arrow_ID_1758556486" STARTARROW="None" STARTINCLINATION="959;0;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1510941754211" HGAP="36" ID="ID_996085388" MODIFIED="1561827464963" TEXT="Filter-Layer" VSHIFT="-1">
<icon BUILTIN="button_ok"/>
<node CREATED="1514747460122" ID="ID_1735380227" MODIFIED="1514908757875" TEXT="fischt nach tats&#xe4;chlichen L&#xf6;sungen">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1514747470624" ID="ID_43243557" MODIFIED="1514827781975" TEXT="erm&#xf6;glicht partielle und maximale L&#xf6;sungen">
<linktarget COLOR="#426785" DESTINATION="ID_43243557" ENDARROW="Default" ENDINCLINATION="156;-113;" ID="Arrow_ID_977247001" SOURCE="ID_1714254434" STARTARROW="None" STARTINCLINATION="-109;6;"/>
</node>
<node CREATED="1514747496973" FOLDED="true" ID="ID_1992822141" MODIFIED="1561827483828" TEXT="F&#xe4;lle">
<linktarget COLOR="#7e90a1" DESTINATION="ID_1992822141" ENDARROW="Default" ENDINCLINATION="0;56;" ID="Arrow_ID_26195276" SOURCE="ID_1556354374" STARTARROW="Default" STARTINCLINATION="-20;-69;"/>
<node CREATED="1514747500948" ID="ID_849508712" MODIFIED="1515031494705" TEXT="erste totale L&#xf6;sung">
<icon BUILTIN="hourglass"/>
</node>
<node CREATED="1514747506516" ID="ID_1823650567" MODIFIED="1515031497729" TEXT="alle totalen L&#xf6;sungen">
<icon BUILTIN="hourglass"/>
</node>
<node CREATED="1514747511683" ID="ID_1711746734" MODIFIED="1515031538639" TEXT="erste maximale partielle L&#xf6;sung">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1514747534880" ID="ID_668507058" MODIFIED="1515031542774" TEXT="alle maximalen partiellen L&#xf6;sungen">
<icon BUILTIN="hourglass"/>
</node>
<node CREATED="1514747542535" FOLDED="true" ID="ID_1475644253" MODIFIED="1561827482923" TEXT="alle lokal maximalen partiellen L&#xf6;sungen">
<icon BUILTIN="hourglass"/>
<node CREATED="1514747562436" ID="ID_1216946339" MODIFIED="1514747569143" TEXT="am Ende einer Gl&#xfc;cksstr&#xe4;ne"/>
<node CREATED="1514747652752" ID="ID_694825695" MODIFIED="1514747659603" TEXT="etwas kniffelig zu implementieren"/>
<node CREATED="1514747694763" ID="ID_1088990348" MODIFIED="1514747707037" TEXT="letztlich &#xe4;hnlich wie globale Maximums-Suche"/>
<node CREATED="1514747709400" ID="ID_556979975" MODIFIED="1514747724946" TEXT="lediglich das Maximum wird zur&#xfc;ckgesetzt"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1514829169777" HGAP="32" ID="ID_331008637" MODIFIED="1561827464965" TEXT="Integration" VSHIFT="10">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1514829220907" FOLDED="true" ID="ID_1488508113" MODIFIED="1561827483828" TEXT="zun&#xe4;chst Algo f&#xfc;r partielle Coverage bauen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1514829338427" ID="ID_623381151" MODIFIED="1515034463168" TEXT="Zustandstyp">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1514829343538" FOLDED="true" ID="ID_61753442" MODIFIED="1561827482923" TEXT="Transformer auf Zustand">
<icon BUILTIN="button_cancel"/>
<node CREATED="1514850791535" ID="ID_1339395363" MODIFIED="1514850794763" TEXT="nicht notwendig"/>
<node CREATED="1514850795678" ID="ID_497352305" MODIFIED="1514850803482" TEXT="Zustand per Seiteneffekt">
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#338800" CREATED="1514829349585" ID="ID_1389488008" MODIFIED="1515034463168" TEXT="Algo-Kern">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1514829353681" ID="ID_62480447" MODIFIED="1515034463168" TEXT="einfachster Filter">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1514829412249" FOLDED="true" ID="ID_1641757769" MODIFIED="1561827483828" TEXT="Einbindung Resolution-State">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1514829452692" ID="ID_1692090746" MODIFIED="1515034463169" TEXT="nested Class">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1514829466506" ID="ID_1652951449" MODIFIED="1515034463169" TEXT="low-level writeAt">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1514829511716" ID="ID_747113559" MODIFIED="1515034463169" TEXT="Pipeline-Builder wie?">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1514829532945" ID="ID_1664484116" MODIFIED="1515034463169" TEXT="Ergebnis-Abruf">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#990000" CREATED="1514829238960" FOLDED="true" ID="ID_1556354374" MODIFIED="1576282358121" TEXT="Varianten definieren">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      YAGNI
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#7e90a1" DESTINATION="ID_1992822141" ENDARROW="Default" ENDINCLINATION="0;56;" ID="Arrow_ID_26195276" STARTARROW="Default" STARTINCLINATION="-20;-69;"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1514942095070" ID="ID_815761690" MODIFIED="1515034463169" TEXT="default: ermitteln der maximalen partiellen Coverage">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1514942111347" ID="ID_1991949921" MODIFIED="1515034463169" TEXT="die maximale L&#xf6;sung ist totale Coverage, wenn m&#xf6;glich">
<icon BUILTIN="yes"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1514942171091" ID="ID_1193370362" MODIFIED="1515034463169" TEXT="sp&#xe4;ter/bei Bedarf: alle L&#xf6;sungen">
<icon BUILTIN="hourglass"/>
</node>
<node CREATED="1515034212096" ID="ID_1153983253" MODIFIED="1515034463169" TEXT="vermutlich garnicht notwendig">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
</node>
<node COLOR="#338800" CREATED="1514848454621" FOLDED="true" ID="ID_472406160" MODIFIED="1561827483828" TEXT="std::swap f&#xfc;r UICoord">
<icon BUILTIN="button_ok"/>
<node CREATED="1514848818421" ID="ID_26529397" MODIFIED="1515206142953" TEXT="vermutlich (fast) nix zu tun">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <ul>
      <li>
        die Standard-Implementierung von std::swap macht einen Dreiecks-Move
      </li>
      <li>
        wir haben effiziente Move-Konstruktoren
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node COLOR="#338800" CREATED="1514848861831" FOLDED="true" ID="ID_297570158" MODIFIED="1561827482923" TEXT="noexcept() bedenken">
<icon BUILTIN="button_ok"/>
<node CREATED="1515206011718" ID="ID_1572220372" MODIFIED="1515206130684" TEXT="std::Array hat impliziten move-ctor">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1515206027308" ID="ID_1973328661" MODIFIED="1515206127344" TEXT="mu&#xdf; Konstruktor von lib::Literal noexcept machen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1515206107418" ID="ID_97679310" MODIFIED="1515206126419" TEXT="move-Ctors von Extension (f&#xfc;r PathArray) noexcept machen">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1514848874005" ID="ID_751821458" MODIFIED="1515034463169" TEXT="PathArray: move effizienter als swap">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node COLOR="#338800" CREATED="1514829244384" FOLDED="true" ID="ID_174527898" MODIFIED="1561827483828" TEXT="API umstellen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1514942071848" ID="ID_642968204" MODIFIED="1515034463169" TEXT="totale Coverage wird default">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1514942216013" ID="ID_1147733516" MODIFIED="1515034537518" TEXT="Pr&#xe4;dikate spiegeln stets den Zustand der UI-Coord">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...und nicht den <i>m&#246;glichen</i>&#160;Zustand.
    </p>
    <p>
      Denn f&#252;r letzteren gibt es die &quot;canXX&quot;-Pr&#228;dikate
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1514943888969" ID="ID_1634332467" MODIFIED="1515034463169" TEXT="m&#xf6;glichen Anker nebenbei ermitteln">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1510941766817" HGAP="13" ID="ID_1117346518" MODIFIED="1561827464970" TEXT="Testf&#xe4;lle" VSHIFT="29">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1513477873206" ID="ID_939423021" MODIFIED="1518487921065" TEXT="definieren was abzudecken ist...">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1513478153511" ID="ID_1826394146" MODIFIED="1518487921065" TEXT="bisherige ChildIter-Testf&#xe4;lle">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1514260998192" ID="ID_113366695" MODIFIED="1518487921065" TEXT="einmal child-Expansion">
<linktarget COLOR="#525e89" DESTINATION="ID_113366695" ENDARROW="Default" ENDINCLINATION="125;-4;" ID="Arrow_ID_1734399897" SOURCE="ID_1286151530" STARTARROW="None" STARTINCLINATION="-10;85;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#3b5a89" CREATED="1514292065333" FOLDED="true" ID="ID_1133433583" MODIFIED="1576282358120" TEXT="Frage: expliziter Test f&#xfc;r path resolution?">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      macht es Sinn, daf&#252;r einen expliziten Testfall zu konstruieren,
    </p>
    <p>
      oder verfangen wir uns da sofort zu sehr in der Implementierungs-Technik?
    </p>
  </body>
</html></richcontent>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="help"/>
<node CREATED="1514329257785" ID="ID_1871812757" MODIFIED="1518487921065" TEXT="Nein">
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1514329280718" ID="ID_674722968" MODIFIED="1518487921065" TEXT="sonst m&#xfc;ssen wir die BlackBox &#xf6;ffnen">
<icon BUILTIN="smily_bad"/>
</node>
<node CREATED="1514329261217" ID="ID_1909490994" MODIFIED="1518487921065" TEXT="die Testf&#xe4;lle f&#xfc;r Coverage-Mutation gen&#xfc;gen">
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1514329328840" FOLDED="true" HGAP="35" ID="ID_1362494392" MODIFIED="1561827483829" TEXT="Abzudecken ist...." VSHIFT="4">
<linktarget COLOR="#715b79" DESTINATION="ID_1362494392" ENDARROW="Default" ENDINCLINATION="-578;-16;" ID="Arrow_ID_1072715196" SOURCE="ID_1751192686" STARTARROW="None" STARTINCLINATION="477;0;"/>
<linktarget COLOR="#4b5c8d" DESTINATION="ID_1362494392" ENDARROW="Default" ENDINCLINATION="398;572;" ID="Arrow_ID_82261909" SOURCE="ID_1688800613" STARTARROW="None" STARTINCLINATION="1404;115;"/>
<icon BUILTIN="yes"/>
<node COLOR="#338800" CREATED="1514329411197" FOLDED="true" ID="ID_1637267494" MODIFIED="1561827482923" TEXT="Trivial-Fall: bestehenden Pfad finden">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1514329441136" ID="ID_359779455" MODIFIED="1518487921065" TEXT="mit unvollst&#xe4;ndiger Coverage">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1514329450807" ID="ID_211306404" MODIFIED="1518487921065" TEXT="mit &#xdc;berhang">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1515114713029" FOLDED="true" ID="ID_424458820" MODIFIED="1561827482923" TEXT="Ankern">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1514745345018" ID="ID_1229106293" MODIFIED="1518487921065" TEXT="fehlender Anker allein">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1515114721228" ID="ID_1329702278" MODIFIED="1518487921065" TEXT="fehlender Anker">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1515114740273" FOLDED="true" ID="ID_224432926" MODIFIED="1561827482923" TEXT="interpolieren">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1514329498169" ID="ID_259096801" MODIFIED="1518487921065" TEXT="einfache L&#xfc;cke schlie&#xdf;en">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1514329504776" ID="ID_1411396073" MODIFIED="1518487921065" TEXT="doppelte L&#xfc;cke schlie&#xdf;en">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1514329542594" ID="ID_959715297" MODIFIED="1518487921065" TEXT="fehlenden Anker interpolieren">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1514745294579" ID="ID_576780085" MODIFIED="1518487921065" TEXT="fehlender Anker und folgende L&#xfc;cke">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1514329555505" ID="ID_1508437078" MODIFIED="1518487921065" TEXT="fehlender Anker plus zweite L&#xfc;cke">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1517509311733" ID="ID_796216711" MODIFIED="1518750402160" TEXT="Anker+elided plus L&#xfc;cke schlie&#xdf;en">
<linktarget COLOR="#7e9da8" DESTINATION="ID_796216711" ENDARROW="Default" ENDINCLINATION="989;-91;" ID="Arrow_ID_925245331" SOURCE="ID_974516393" STARTARROW="None" STARTINCLINATION="199;-5;"/>
<linktarget COLOR="#4b5cab" DESTINATION="ID_796216711" ENDARROW="Default" ENDINCLINATION="-145;942;" ID="Arrow_ID_570641462" SOURCE="ID_1542036736" STARTARROW="None" STARTINCLINATION="383;78;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1517509541382" FOLDED="true" ID="ID_1722401650" MODIFIED="1561827469153">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      realer Pfad endet mit elided <i>nach</i>&#160;Wildcard
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
<node CREATED="1518752249648" ID="ID_221401224" MODIFIED="1518752257211" TEXT="erst wollte ich das ausschlie&#xdf;en"/>
<node CREATED="1518752257871" ID="ID_1394674174" MODIFIED="1518752269436" TEXT="denke jetzt aber, das soll so sein">
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#338800" CREATED="1517509325755" ID="ID_208496330" MODIFIED="1518758436086" TEXT="Anker+elided gilt als partial coverage">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1514329861519" FOLDED="true" ID="ID_946875811" MODIFIED="1561827482924" TEXT="Scheitern">
<icon BUILTIN="button_ok"/>
<node CREATED="1514329465117" FOLDED="true" ID="ID_1304144230" MODIFIED="1561827469153" TEXT="trailing Wildcards scheitern">
<icon BUILTIN="button_cancel"/>
<node CREATED="1515120863655" ID="ID_1222552441" MODIFIED="1518487921065" TEXT="werden stets schon vom Konstrukor bereinigt"/>
<node COLOR="#338800" CREATED="1515120874318" ID="ID_282902710" MODIFIED="1518487921065">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      kann jedoch demonstrieren,
    </p>
    <p>
      da&#223; der Algorithmus solche L&#246;sungen verwirft
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1514329890564" ID="ID_723199137" MODIFIED="1518487921065" TEXT="realer Pfad endet vor Wildcards">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1514329901562" ID="ID_1644217459" MODIFIED="1518487921065" TEXT="realer Pfad endet b&#xfc;ndig mit Wildcards">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1514329925895" ID="ID_257945525" MODIFIED="1518487921066" TEXT="mismatch auf erstem festen element">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1514329932501" ID="ID_1190347841" MODIFIED="1518487921066" TEXT="mismatch direkt hinter zweiter L&#xfc;cke">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1514330003204" ID="ID_443318342" MODIFIED="1518487921066" TEXT="mismatch wg. verschobenem (matchendem) Element">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1514330049166" ID="ID_1096135763" MODIFIED="1518487921066" TEXT="Ankern scheitert">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1514329636838" FOLDED="true" ID="ID_815146070" MODIFIED="1561827482924" TEXT="L&#xf6;sungs-Auswahl">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1514329649868" ID="ID_1490593624" MODIFIED="1518487921066" TEXT="erste von zwei &#xe4;quivalenten L&#xf6;sungen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1514329715859" ID="ID_734262382" MODIFIED="1518487921066" TEXT="gr&#xf6;&#xdf;ere Coverage durch l&#xe4;ngeres, festes Postifix">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1514329773739" ID="ID_1790993462" MODIFIED="1518487921066" TEXT="gr&#xf6;&#xdf;ere L&#xf6;sung wird sp&#xe4;ter gefunden">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1514329784090" ID="ID_976931684" MODIFIED="1518487921066" TEXT="gr&#xf6;&#xdf;ere L&#xf6;sung als mittlere von dreien">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1514329806999" ID="ID_787741094" MODIFIED="1518487921066" TEXT="gr&#xf6;&#xdf;te L&#xf6;sung zuerst">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1518051827562" FOLDED="true" ID="ID_126260279" MODIFIED="1561827482924" TEXT="partielle coverage mit Rest">
<linktarget COLOR="#647a94" DESTINATION="ID_126260279" ENDARROW="Default" ENDINCLINATION="-70;102;" ID="Arrow_ID_1703739591" SOURCE="ID_1400256094" STARTARROW="None" STARTINCLINATION="417;-7;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1518051858813" ID="ID_712764658" MODIFIED="1518487921066" TEXT="Erfolg: alles explizit, teilweise gecovert">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1518051877651" ID="ID_931862394" MODIFIED="1518487921066" TEXT="Erfolg: L&#xfc;cke schlie&#xdf;en, Rest erhalten">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1518051909942" ID="ID_1891019118" MODIFIED="1518487921066" TEXT="Scheitern: kann L&#xfc;cke nicht schlie&#xdf;en">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1518051925316" ID="ID_766944591" MODIFIED="1518487921066" TEXT="Scheitern: Rest enth&#xe4;lt noch Wildcards">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1508540835505" ID="ID_191493714" MODIFIED="1561827464979" TEXT="Zustand">
<icon BUILTIN="button_ok"/>
<node CREATED="1514748438984" ID="ID_84241950" MODIFIED="1518487921066" TEXT="reflektiert letzte L&#xf6;sung"/>
<node CREATED="1514748445520" ID="ID_728061293" MODIFIED="1518487921066" TEXT="*this = move (Coverage)"/>
<node COLOR="#338800" CREATED="1514748450687" ID="ID_919694647" MODIFIED="1533608413663" TEXT="default: total">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1514748463645" ID="ID_2814761" MODIFIED="1518487921066" TEXT="TODO: &#xe4;ndern">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1514748505488" ID="ID_947047856" MODIFIED="1576282358120" TEXT="TODO: API umstellen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      neue Einsicht 31.12.17
    </p>
    <p>
      totale Coverage ist das, was man naiverweise erwartet.
    </p>
    <p>
      Also sollte <i>das</i>&#160;auf dem API der default sein
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1518052051947" ID="ID_1272905286" MODIFIED="1561827464979" TEXT="coverPartially">
<linktarget COLOR="#50546a" DESTINATION="ID_1272905286" ENDARROW="Default" ENDINCLINATION="394;1164;" ID="Arrow_ID_396720500" SOURCE="ID_1447232325" STARTARROW="None" STARTINCLINATION="1558;-33;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1518052100828" ID="ID_1400256094" MODIFIED="1518143014344" TEXT="funktioniert analog zu cover()">
<arrowlink COLOR="#647a94" DESTINATION="ID_126260279" ENDARROW="Default" ENDINCLINATION="-70;102;" ID="Arrow_ID_1703739591" STARTARROW="None" STARTINCLINATION="417;-7;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1518052123401" ID="ID_969568669" MODIFIED="1518143010646" TEXT="&#xfc;bernimmt &#xfc;bersch&#xfc;ssigen Rest">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1518052149982" ID="ID_1099521506" MODIFIED="1518143007944" TEXT="sicherstellen, da&#xdf; keine Wildcards verbleiben">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1515451105808" ID="ID_1323377531" MODIFIED="1561827464980" TEXT="extend">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1515451117055" ID="ID_602743049" MODIFIED="1515451126326" TEXT="durch explizit gegebenes Suffix">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1515451127221" ID="ID_130067342" MODIFIED="1515460212289" TEXT="durch (partielle) UI-Coord spec">
<linktarget COLOR="#4f6f95" DESTINATION="ID_130067342" ENDARROW="Default" ENDINCLINATION="544;89;" ID="Arrow_ID_992203487" SOURCE="ID_1736775031" STARTARROW="None" STARTINCLINATION="704;0;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1515455194222" ID="ID_1550640486" MODIFIED="1533608413663" TEXT="brauche (nun doch) overwrite">
<icon BUILTIN="yes"/>
<node CREATED="1515455204572" ID="ID_538708318" MODIFIED="1515455215023" TEXT="im UI-Coord-Builder ansiedeln"/>
<node CREATED="1515455215779" ID="ID_1744879837" MODIFIED="1515455225131" TEXT="protected....">
<icon BUILTIN="smiley-neutral"/>
</node>
</node>
<node CREATED="1515455238808" ID="ID_1864948105" MODIFIED="1515460226143" TEXT="Fehlerbehandlung: &#xdc;berlapp finden">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1508538883715" FOLDED="true" ID="ID_506584428" MODIFIED="1531584013560" TEXT="Basis: LocationQuery">
<icon BUILTIN="button_ok"/>
<node CREATED="1508538979935" ID="ID_1139910958" MODIFIED="1576282358119" TEXT="immer explizit">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...das hei&#223;t: keine Wildcards, keine pseudo-Specs (currentWindow)
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1508539089208" ID="ID_1071949477" MODIFIED="1508539131769" TEXT="Query">
<icon BUILTIN="info"/>
<node COLOR="#338800" CREATED="1508619321957" ID="ID_1269390045" MODIFIED="1508717810127" TEXT="anchor">
<icon BUILTIN="button_ok"/>
<node CREATED="1508619329420" ID="ID_360997488" MODIFIED="1508619334447" TEXT="in: expliziter Pfad"/>
<node CREATED="1508619335131" ID="ID_327874233" MODIFIED="1576282358119" TEXT="out: Anker-Literal">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Zweck ist vor allem, meta-Specs wie firstWindow, currentWindow aufzul&#246;sen
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#338800" CREATED="1508539108398" ID="ID_681619275" MODIFIED="1509319949242" TEXT="coverage">
<icon BUILTIN="button_ok"/>
<node CREATED="1508539968020" ID="ID_64225559" MODIFIED="1508539972951" TEXT="in: expliziter Pfad"/>
<node CREATED="1508539973587" ID="ID_822140715" MODIFIED="1508539984350" TEXT="out: Tiefe(Zahl)"/>
</node>
<node COLOR="#338800" CREATED="1508539115533" ID="ID_1048456515" MODIFIED="1509319964032" TEXT="child Iteration">
<icon BUILTIN="button_ok"/>
<node CREATED="1508539986290" ID="ID_821465952" MODIFIED="1508539992221" TEXT="in: expliziter Pfad"/>
<node CREATED="1508539992944" ID="ID_1384353532" MODIFIED="1509319961089" TEXT="out: IterSource&lt;Literal&gt;"/>
<node CREATED="1514330179052" ID="ID_1033437899" MODIFIED="1514330186823" TEXT="mit expandChildren()-Operation"/>
</node>
</node>
<node CREATED="1509319992204" HGAP="60" ID="ID_258976142" MODIFIED="1576282358118" TEXT="prototypische Implementierung...." VSHIFT="21">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...verwendet einen GenNode-Tree
    </p>
    <p>
      als Repr&#228;sentation des real-existierenden UI
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1506957414370" ID="ID_848105210" MODIFIED="1518487921066">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Integration ViewLocator
    </p>
    <p>
      Resolver / Navigator
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#3f4b87" DESTINATION="ID_848105210" ENDARROW="Default" ENDINCLINATION="-1260;542;" ID="Arrow_ID_1760927309" SOURCE="ID_1256149179" STARTARROW="None" STARTINCLINATION="1244;-591;"/>
<icon BUILTIN="help"/>
<node CREATED="1515884080567" ID="ID_1610510897" MODIFIED="1518487921066" TEXT="Frage der Abh&#xe4;ngigkeit">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1515884093053" ID="ID_578386223" MODIFIED="1518487921066" TEXT="k&#xf6;nnte zyklisch sein">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
<node CREATED="1515884156717" ID="ID_1719646750" MODIFIED="1518487921066" TEXT="ViewLocator">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1515884167067" ID="ID_252275651" MODIFIED="1518487921066" TEXT="Einzel-Zugang"/>
<node CREATED="1515884183937" ID="ID_1146786067" MODIFIED="1518487921066" TEXT="explizit per Typ"/>
<node CREATED="1515884193464" ID="ID_680693474" MODIFIED="1533608413664">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      aber auch: <b>Resolver</b>
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#3b6680" DESTINATION="ID_680693474" ENDARROW="Default" ENDINCLINATION="-178;8;" ID="Arrow_ID_1157808975" SOURCE="ID_1356241564" STARTARROW="None" STARTINCLINATION="98;0;"/>
<font NAME="SansSerif" SIZE="12"/>
<node CREATED="1515884215165" ID="ID_1855078495" MODIFIED="1518487921066" TEXT="baut auf DSL auf"/>
<node CREATED="1515884220428" ID="ID_513230162" MODIFIED="1518487921066" TEXT="Struktur-Regeln"/>
<node CREATED="1515884235658" ID="ID_1028909961" MODIFIED="1518487921066" TEXT="finden oder zeugen"/>
</node>
<node CREATED="1515885720655" ID="ID_1092683882" MODIFIED="1533608413665" TEXT="b&#xfc;ndelt low-level-Zugang">
<linktarget COLOR="#8c98a0" DESTINATION="ID_1092683882" ENDARROW="Default" ENDINCLINATION="-155;0;" ID="Arrow_ID_1761525173" SOURCE="ID_150080053" STARTARROW="None" STARTINCLINATION="-156;6;"/>
<node CREATED="1515885728374" ID="ID_152777185" MODIFIED="1533685424812" TEXT="Bezug auf GlobalCtx">
<node CREATED="1515885839951" ID="ID_123309845" MODIFIED="1518487921066" TEXT="f&#xfc;r WindowLocator"/>
<node CREATED="1515885847767" ID="ID_1781347382" MODIFIED="1518487921066" TEXT="f&#xfc;r PanelManager"/>
<node CREATED="1515885855014" ID="ID_1634512088" MODIFIED="1518487921066" TEXT="f&#xfc;r LocationQuery">
<arrowlink COLOR="#8c98a0" DESTINATION="ID_150080053" ENDARROW="Default" ENDINCLINATION="198;0;" ID="Arrow_ID_1806083846" STARTARROW="None" STARTINCLINATION="10;48;"/>
</node>
</node>
<node CREATED="1515885751787" ID="ID_1669926039" MODIFIED="1518487921066" TEXT="indirekt zyklisch">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1515885762754" ID="ID_657098401" MODIFIED="1576282358118" TEXT="ist OK">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      die Regel ist:
    </p>
    <p>
      Bei zyklischen Abh&#228;ngigkeiten erfolgt der Ringschlu&#223;
    </p>
    <p>
      an einer Stelle &#252;ber eine allgemeine Abstraktion
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node CREATED="1515884935318" ID="ID_1231381049" MODIFIED="1518487921066" TEXT="Navigator">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1515884949013" ID="ID_562171495" MODIFIED="1518487921066" TEXT="nur lesend"/>
<node CREATED="1515884972018" ID="ID_105092644" MODIFIED="1518487921066" TEXT="leistet Baum-Abstraktion"/>
<node CREATED="1515884955620" ID="ID_1330012545" MODIFIED="1518487921066" TEXT="manipuliert Zustand, nicht Struktur"/>
<node CREATED="1515885006181" ID="ID_150080053" MODIFIED="1518487921066">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      implementiert <b>LocationQuery</b>
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#8c98a0" DESTINATION="ID_1092683882" ENDARROW="Default" ENDINCLINATION="-155;0;" ID="Arrow_ID_1761525173" STARTARROW="None" STARTINCLINATION="-156;6;"/>
<linktarget COLOR="#8c98a0" DESTINATION="ID_150080053" ENDARROW="Default" ENDINCLINATION="198;0;" ID="Arrow_ID_1806083846" SOURCE="ID_1634512088" STARTARROW="None" STARTINCLINATION="10;48;"/>
</node>
</node>
</node>
<node CREATED="1515891291587" HGAP="42" ID="ID_1000521247" MODIFIED="1518487921066" TEXT="Design" VSHIFT="11">
<node CREATED="1515891297466" ID="ID_1885414397" MODIFIED="1518487921066" TEXT="Komponenten sind nach Themen geschnitten"/>
<node CREATED="1515891308057" ID="ID_89499528" MODIFIED="1518487921066" TEXT="Zyklen werden &#xfc;ber abstrakte Interfaces gef&#xfc;hrt"/>
<node CREATED="1515891349731" ID="ID_1663035567" MODIFIED="1518487921066" TEXT="ViewLocator &quot;generiert nebenbei&quot; die DSL-Token">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1506175097367" ID="ID_1442345755" MODIFIED="1561827465011" TEXT="ViewSpec-DSL">
<arrowlink COLOR="#b45c5a" DESTINATION="ID_686917529" ENDARROW="Default" ENDINCLINATION="-468;-196;" ID="Arrow_ID_1955094318" STARTARROW="None" STARTINCLINATION="360;85;"/>
<linktarget COLOR="#6a8499" DESTINATION="ID_1442345755" ENDARROW="Default" ENDINCLINATION="-1029;85;" ID="Arrow_ID_1191206769" SOURCE="ID_1844877136" STARTARROW="None" STARTINCLINATION="426;-63;"/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1515877499720" HGAP="-59" ID="ID_1283126436" MODIFIED="1518487921066" TEXT="Basis" VSHIFT="29">
<node CREATED="1515877527300" ID="ID_1356241564" MODIFIED="1518487921066" TEXT="ist Teil des ViewLocators">
<arrowlink COLOR="#3b6680" DESTINATION="ID_344392695" ENDARROW="Default" ENDINCLINATION="-269;-228;" ID="Arrow_ID_408957918" STARTARROW="Default" STARTINCLINATION="-858;0;"/>
<arrowlink COLOR="#3b6680" DESTINATION="ID_680693474" ENDARROW="Default" ENDINCLINATION="-178;8;" ID="Arrow_ID_1157808975" STARTARROW="None" STARTINCLINATION="98;0;"/>
</node>
<node CREATED="1515877545642" ID="ID_1723275956" MODIFIED="1518487921066" TEXT="lebt in der Implementierung"/>
<node CREATED="1515877577414" ID="ID_664776417" MODIFIED="1576282358117" TEXT="Bausteine sind sichtbar...">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...als Namespace-globale Variable mit externer Linkage
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#435e98" CREATED="1523117792890" ID="ID_1972679538" MODIFIED="1576282358117" TEXT="Effizienz m&#xe4;&#xdf;ig/unkritisch">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Ein Lookup-Vorgang ist schon ehr aufwendig,
    </p>
    <p>
      jedoch harmlos im Vergleich zu einer einzigen Frame-Berechnung.
    </p>
    <ul>
      <li>
        im ersten Schritt machen wir eine Tiefensuche potentiell &#252;ber die ganze UI-Topologie
      </li>
      <li>
        im zweiten Schritt wiederholen wir noch mal den Abstiegspfad zur L&#246;sung des ersten Schrittes
      </li>
    </ul>
    <p>
      Grunds&#228;tzlich gilt hier die Einsch&#228;tzung: <b>Klarheit der Schnittstelle hat Vorrang</b>
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#abc5e4" DESTINATION="ID_1210359211" ENDARROW="Default" ENDINCLINATION="-217;-87;" ID="Arrow_ID_1226100946" STARTARROW="None" STARTINCLINATION="-187;427;"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#338800" CREATED="1506181855132" ID="ID_787628963" MODIFIED="1522939107508" TEXT="ViewSpec">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1506181868898" ID="ID_1852393086" MODIFIED="1531584013566" TEXT="Resolver">
<icon BUILTIN="button_ok"/>
<node CREATED="1515634532968" ID="ID_1968327718" MODIFIED="1518487921066" TEXT="Abrufen der UI-Coord triggert Resolver">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#2b46b7" CREATED="1515631590595" FOLDED="true" ID="ID_1454085887" MODIFIED="1529076581800" TEXT="wie mit ViewLocator-Service verdrahten?">
<arrowlink COLOR="#614483" DESTINATION="ID_1252372720" ENDARROW="Default" ENDINCLINATION="-203;-10;" ID="Arrow_ID_1759099248" STARTARROW="Default" STARTINCLINATION="-373;-23;"/>
<icon BUILTIN="help"/>
<node CREATED="1522809043561" ID="ID_1735397574" MODIFIED="1522809050105" TEXT="gar nicht direkt">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
<node CREATED="1522809051096" ID="ID_1045087817" MODIFIED="1522809066884">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ViewLocator <i>ruft</i>&#160;die DSL auf
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1522809068294" ID="ID_1952538901" MODIFIED="1522809098365" TEXT="LocatorSpec in der DSL hat ein Depend&lt;UILocationSolver&gt;"/>
<node CREATED="1522809099593" ID="ID_627167110" MODIFIED="1522809142602">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...welcher wiederum von ViewLocator <i>betrieben</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1522809144347" ID="ID_1903702867" MODIFIED="1522809145703" TEXT="und mit Navigator als LocationQuery hinterlegt ist"/>
<node CREATED="1522809146618" ID="ID_827431936" MODIFIED="1522809154977" TEXT="ois kloar?">
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node COLOR="#338800" CREATED="1515631616944" ID="ID_700537003" MODIFIED="1518487921066" TEXT="verbinden mit Navigator als LocationQuery-Implementierung">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1515631646108" ID="ID_1553855476" MODIFIED="1518840394020" TEXT="UICoordResolver erzeugen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1515979648475" FOLDED="true" HGAP="38" ID="ID_350272872" MODIFIED="1561827465016" TEXT="Funktionsweise der &quot;Resolution&quot; kl&#xe4;ren" VSHIFT="1">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1515980158112" ID="ID_1744041635" MODIFIED="1522939070606" TEXT="der Reihe nach pr&#xfc;fen">
<icon BUILTIN="info"/>
</node>
<node COLOR="#338800" CREATED="1515979664353" ID="ID_1353761382" MODIFIED="1533608413665" TEXT="was hei&#xdf;t &quot;existing&quot;?">
<icon BUILTIN="help"/>
<node CREATED="1515979750382" ID="ID_598253186" MODIFIED="1518487921067" TEXT="darf nicht neu erzeugt werden">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1515979791512" ID="ID_1473589676" MODIFIED="1518487921067" TEXT="Gegensatz: View ggfs an bekannter Stelle erzeugen"/>
<node CREATED="1515979803503" ID="ID_397957162" MODIFIED="1561827465017" TEXT="Schlu&#xdf;folgerung">
<icon BUILTIN="forward"/>
<node CREATED="1516909893778" ID="ID_659065678" MODIFIED="1518487921067" TEXT="&quot;existing&quot; &#x27fa;  total coverage"/>
<node CREATED="1516909908686" ID="ID_1886532442" MODIFIED="1518487921067" TEXT="&quot;create&quot; &#x27fa;  can cover"/>
</node>
</node>
<node CREATED="1515980170359" ID="ID_1820091983" MODIFIED="1518487921067" TEXT="L&#xf6;sung erfordert wenigstens partielle coverage"/>
<node CREATED="1515982274106" ID="ID_1283888757" MODIFIED="1533608413666" TEXT="Problem: Match erm&#xf6;glichen">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1515982295663" ID="ID_208797931" MODIFIED="1518487921067" TEXT="der View-Name fehlt noch"/>
<node CREATED="1515982302678" ID="ID_1579006450" MODIFIED="1518487921067" TEXT="nicht existierende Parents"/>
<node CREATED="1515982330139" ID="ID_176314830" MODIFIED="1518487921067" TEXT="Perspective == egal"/>
</node>
<node COLOR="#990000" CREATED="1515982375397" FOLDED="true" ID="ID_773035469" MODIFIED="1533608413667" STYLE="fork" TEXT="Fallback &quot;wenn alles scheitert&quot;?">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1516910666253" ID="ID_1056732886" MODIFIED="1518487921067" TEXT="Misconfig"/>
<node CREATED="1516910669357" ID="ID_1129354200" MODIFIED="1518487921067" TEXT="fataler Fehler"/>
<node CREATED="1516910673110" ID="ID_436584221" MODIFIED="1561827465017" TEXT="Regel mu&#xdf; Fallback enthalten">
<icon BUILTIN="yes"/>
<node CREATED="1516910710727" ID="ID_1042011734" MODIFIED="1518487921067" TEXT="warum?"/>
<node CREATED="1516910736388" ID="ID_1267411576" MODIFIED="1518487921067" TEXT="Principle of least surprise"/>
<node CREATED="1516910715343" ID="ID_1721041331" MODIFIED="1576282358116" TEXT="sonst default f&#xfc;r den default">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      sonst bekommen wir eine versteckte
    </p>
    <p>
      zweite hart-gecodete Fallback-Konfig
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1516147992493" FOLDED="true" HGAP="24" ID="ID_4925227" MODIFIED="1533608413668" TEXT="wie wird das Zielobjekt selber bestimmt?" VSHIFT="-1">
<icon BUILTIN="help"/>
<node CREATED="1516148029148" ID="ID_1974346974" MODIFIED="1561827465018" TEXT="M&#xf6;glichkeiten">
<node CREATED="1516148034899" ID="ID_1675414085" MODIFIED="1518487921067" TEXT="explizit anschreiben"/>
<node CREATED="1516148048121" ID="ID_1850664922" MODIFIED="1518487921067" TEXT="aus letzter gegebener Komponente ableiten"/>
<node CREATED="1516909656846" ID="ID_1429663106" MODIFIED="1518487921067" TEXT="aus Typ ableiten und fehlende Parents erg&#xe4;nzen"/>
</node>
<node CREATED="1516148091716" ID="ID_1815243780" MODIFIED="1561827465018" TEXT="Anforderungen">
<icon BUILTIN="info"/>
<node CREATED="1516148107065" ID="ID_389475040" MODIFIED="1518487921067" TEXT="Name-ID des Elements bestimmbar"/>
<node CREATED="1516148118064" FOLDED="true" ID="ID_541058997" MODIFIED="1561827483829" TEXT="Coverage feststellbar">
<node CREATED="1516148128790" FOLDED="true" ID="ID_739368723" MODIFIED="1561827482924" TEXT="partiell">
<node CREATED="1516148133085" ID="ID_325513379" MODIFIED="1518487921067" TEXT="ein nicht-Wildcard darunter mu&#xdf; schon existieren"/>
<node CREATED="1516148144267" ID="ID_1074912934" MODIFIED="1518487921067" TEXT="Problem: Perspektive"/>
</node>
<node CREATED="1516148152938" FOLDED="true" ID="ID_1439081992" MODIFIED="1561827482924" TEXT="total">
<node CREATED="1516148156514" ID="ID_323573839" MODIFIED="1518487921067" TEXT="Komponente selber mu&#xdf; spezifiziert sein"/>
<node CREATED="1516148172864" ID="ID_1611427093" MODIFIED="1518487921067" TEXT="erst dann kann man Match &#xfc;berhaupt pr&#xfc;fen"/>
</node>
</node>
<node CREATED="1516148185461" FOLDED="true" ID="ID_1903672954" MODIFIED="1561827483829" TEXT="Konsequenz">
<icon BUILTIN="forward"/>
<node CREATED="1516148190821" ID="ID_1390287231" MODIFIED="1518487921067" TEXT="Koordinaten-Erg&#xe4;nzung mu&#xdf; im Locator erfolgen"/>
<node CREATED="1516909726125" ID="ID_1451248007" MODIFIED="1518487921067">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <b>existing()</b>&#160;sollte <i>default</i>&#160;sein und <b>create()</b>&#160;explizit anzufordern
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      weil der gr&#246;&#223;te Teil aller real anzugebenden Regel-Klauseln
    </p>
    <p>
      von der Bedeutung her &quot;existing&quot; meint
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1516912422576" ID="ID_1350672682" MODIFIED="1518487921067" TEXT="create() tritt normalerweise auf der letzten Regel auf"/>
<node CREATED="1516912433647" ID="ID_1102539904" MODIFIED="1518487921067" TEXT="das k&#xf6;nnte redundant sein, ist aber klarer so"/>
<node CREATED="1516910880176" ID="ID_1842572487" MODIFIED="1518487921067" TEXT="create() kann scheitern"/>
<node CREATED="1516910885938" FOLDED="true" ID="ID_348346243" MODIFIED="1561827482924" TEXT="abschlie&#xdf;ende create()-Regel">
<node CREATED="1516910927252" ID="ID_219541480" MODIFIED="1518487921067" TEXT="sollte failsafe sein"/>
<node CREATED="1516910928914" ID="ID_698619582" MODIFIED="1518487921067" TEXT="d.h. stets realisierbar"/>
<node CREATED="1516910936185" ID="ID_1449340119" MODIFIED="1518487921067" TEXT="modulo Perspektive"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1516916455847" ID="ID_1054137561" MODIFIED="1561827465025" TEXT="Ergebnis">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node CREATED="1516916468901" ID="ID_1527047531" MODIFIED="1518487921067">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <i>komplett definierter</i>&#160;Pfad incl Zielobjekt
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1516916496673" ID="ID_1162890109" MODIFIED="1518487921067">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ggfs wird <i>h&#246;chstes ein abschlie&#223;endes</i>&#160;Element hinzugef&#252;gt
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1516916543155" ID="ID_458920753" MODIFIED="1518487921067">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      dieser Pfad ist stets <i>anchored</i>&#160;und <i>partially covered</i>
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node COLOR="#48639d" CREATED="1516916096887" FOLDED="true" HGAP="32" ID="ID_319974456" MODIFIED="1533608413676" TEXT="zu kl&#xe4;ren...." VSHIFT="8">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1516916105462" ID="ID_1576570507" MODIFIED="1561827465026" TEXT="ist die Semantik of canCover() ausreichend?">
<icon BUILTIN="button_ok"/>
<node CREATED="1517011522978" ID="ID_1745637631" MODIFIED="1518487921067" TEXT="im Prinzip ja">
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1517011530017" ID="ID_1904091651" MODIFIED="1518487921067" TEXT="Sonderbehandlung Perspektive notwendig"/>
</node>
<node COLOR="#338800" CREATED="1516916140785" ID="ID_1667593991" MODIFIED="1561827465027" TEXT="wie umschiffen wir konkret das Problem mit der Perspektive?">
<icon BUILTIN="button_ok"/>
<node CREATED="1517011709672" FOLDED="true" ID="ID_755188751" MODIFIED="1561827483829" TEXT="Problem ist...">
<icon BUILTIN="info"/>
<node CREATED="1517011717447" ID="ID_1098719627" MODIFIED="1518487921067" TEXT="da&#xdf; es typischerweise nur eine Perspektive gibt">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      zwar k&#246;nnte es (sp&#228;ter mal) sein,
    </p>
    <p>
      da&#223; wir mehrere Perspektiven gleichzeitig in die UI-Topologie abbilden...
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1517011727918" ID="ID_1678474222" MODIFIED="1518487921067" TEXT="und man daher typischerweise diese in der Spec weglassen m&#xf6;chte">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...weil die Perspektive eigentlich als <i>etwas Orthogonales</i>&#160;empfunden wird,
    </p>
    <p>
      das nicht dirket zur &quot;harten&quot; Topologie geh&#246;rt, sondern vielmehr bestehende Elemente umgruppiert.
    </p>
    <p>
      Andererseits m&#246;chte man eben doch manchmal eine View-Spec eigens auf eine bestimmte Perspektive beschr&#228;nken,
    </p>
    <p>
      und deshalb habe ich die Perspektive zu den UI-Koordinaten hinzugenommen
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1517011745635" ID="ID_1001739741" MODIFIED="1518487921067" TEXT="aber dies einen Wildcard zur Folge hat, der eine L&#xf6;sung verhindern kann">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...und zwar genau dann, wenn bereits die n&#228;chste Komponente unterhalb der Perspektive,
    </p>
    <p>
      also das Pannel, nicht oder nicht in dieser Form existiert, also erzeugt werden m&#252;&#223;te.
    </p>
    <p>
      Unser Kriterium f&#252;r L&#246;sungen jedoch verlangt mindestens einen Match jenseits der Wildcards,
    </p>
    <p>
      um den Match eindeutig zu machen.
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1517012023926" FOLDED="true" ID="ID_836827160" MODIFIED="1561827483829" TEXT="mehre M&#xf6;glichkeiten">
<icon BUILTIN="idea"/>
<node CREATED="1517012160083" FOLDED="true" ID="ID_485906589" MODIFIED="1561827482924" TEXT="currentPerspective()">
<icon BUILTIN="button_cancel"/>
<node CREATED="1517012171313" ID="ID_736089446" MODIFIED="1518487921067" TEXT="weiteres Pr&#xe4;dikat"/>
<node CREATED="1517012228857" ID="ID_308230619" MODIFIED="1518487921067" TEXT="mu&#xdf; explizit in der Spec stehen"/>
<node CREATED="1517012184768" ID="ID_165605510" MODIFIED="1518487921067" TEXT="wird durch das gew&#xe4;hlte Fenster gebunden"/>
<node CREATED="1517012202061" ID="ID_910880935" MODIFIED="1518487921067" TEXT="Name ist unbefriedigend"/>
<node CREATED="1517012253638" ID="ID_154854590" MODIFIED="1518487921067" TEXT="sprengt die bisherige Implementierung"/>
</node>
<node CREATED="1517012313269" FOLDED="true" ID="ID_1391847315" MODIFIED="1561827482925" TEXT="Wildcard-Erkennung manipulieren">
<icon BUILTIN="button_cancel"/>
<node CREATED="1517012327796" ID="ID_1970065087" MODIFIED="1518487921068" TEXT="wenn Perspektive der letzte Wildcard ist"/>
<node CREATED="1517012337771" ID="ID_1231541108" MODIFIED="1518487921068" TEXT="...dann z&#xe4;hlt das nicht mehr als Wildcard"/>
<node CREATED="1517012358240" ID="ID_813053802" MODIFIED="1518487921068" TEXT="und wird folglich gebunden und als L&#xf6;sung geliefert"/>
<node CREATED="1517012382901" FOLDED="true" ID="ID_273084853" MODIFIED="1561827469153" TEXT="Pro">
<node CREATED="1517012386556" ID="ID_391025327" MODIFIED="1518487921068" TEXT="funktioniert zuverl&#xe4;ssig">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...sofern es stets eine Perspektive geben mu&#223;
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1517012407785" ID="ID_420210882" MODIFIED="1518487921068" TEXT="leicht auf den bestehenden Algo aufzupflanzen"/>
</node>
<node CREATED="1517012430454" FOLDED="true" ID="ID_347958929" MODIFIED="1561827469153" TEXT="Contra">
<node CREATED="1517012434342" ID="ID_421366317" MODIFIED="1518487921068" TEXT="magisch"/>
<node CREATED="1517012444100" ID="ID_936293863" MODIFIED="1518487921068" TEXT="Funktionsweise nicht leicht zu durchschauen"/>
</node>
</node>
<node CREATED="1517012475424" FOLDED="true" ID="ID_1174371180" MODIFIED="1561827482925" TEXT="element elided">
<icon BUILTIN="button_ok"/>
<node CREATED="1517012497909" ID="ID_1850562402" MODIFIED="1518487921068" TEXT="neuer spezieller Wildcard"/>
<node CREATED="1517012527593" ID="ID_1563301573" MODIFIED="1518487921068" TEXT="wird behandelt wie direkter Match"/>
<node CREATED="1517012749682" ID="ID_616699299" MODIFIED="1518487921068" TEXT="kann ggfs in mehreren Zweigen matchen"/>
<node CREATED="1517012770456" ID="ID_1332721436" MODIFIED="1518487921068" TEXT="k&#xf6;nnte vom DSL-Handler bei Bedarf injiziert werden">
<linktarget COLOR="#d55642" DESTINATION="ID_1332721436" ENDARROW="Default" ENDINCLINATION="-121;7;" ID="Arrow_ID_1616643867" SOURCE="ID_1238726037" STARTARROW="None" STARTINCLINATION="81;-10;"/>
</node>
<node CREATED="1517012855604" FOLDED="true" ID="ID_1313395113" MODIFIED="1561827469153" TEXT="Pro">
<node CREATED="1517012861315" ID="ID_1630656396" MODIFIED="1518487921068" TEXT="war ohnehin vorgesehen und notwendig">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...und zwar zwingend notwendig, weil es (viele) Views geben wird,
    </p>
    <p>
      welche keine mehrfachen TABs unterst&#252;tzen. In solchen F&#228;llen brauchen wir
    </p>
    <p>
      ein Konstrukt, mit dem sich eine Ebene im Baum &#252;berspringen l&#228;&#223;t
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1517012879513" ID="ID_391823235" MODIFIED="1518487921068" TEXT="mu&#xdf; sowiso noch nachimplementiert werden">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <i>&quot;mu&#223;&quot;</i>&#160;ist relativ, denn mit den bisherigen Anforderungen
    </p>
    <p>
      h&#228;tte es gen&#252;gt, den &quot;elided&quot;-Platzhalter nur in den konkreten UI-Koordinaten
    </p>
    <p>
      zu verwenden, und ihn dann jeweils per Wildcard zu matchen (was automatisch passiert,
    </p>
    <p>
      einfach wenn die betreffende Komponente in der Angabe fehlt)
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1517012889559" ID="ID_1411847979" MODIFIED="1518487921068" TEXT="f&#xfc;gt sich organisch in die Implementierung ein">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Die korrekte Semantik f&#228;llt uns hier wirklich in den Scho&#223;,
    </p>
    <p>
      es ist nur eine weitere Zeile in dem Test, ob ein Match vorliegt
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1517012992353" FOLDED="true" ID="ID_1397586437" MODIFIED="1561827469153" TEXT="Contra">
<node CREATED="1517012996289" ID="ID_251225300" MODIFIED="1518487921068" TEXT="magisch und subtil"/>
<node CREATED="1517013001144" ID="ID_711459982" MODIFIED="1518487921068" TEXT="zwei verschiedene Wildcards">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      wobei einer, n&#228;mlich '*' sehr offensichtlich und bekannt ist,
    </p>
    <p>
      w&#228;hrend der andere (eben dieses '.' == elided) eigens erkl&#228;rt werden mu&#223;
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1517013053265" ID="ID_1569479466" MODIFIED="1518487921068" TEXT="gewisses Mi&#xdf;brauchs-Potential">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...weil es eigentlich ein Wildcard ist,
    </p>
    <p>
      aber vom gesamten sonstigen Algorithmus nicht als Wildcard behandelt wird.
    </p>
    <p>
      Damit kann man alle Einschr&#228;nkungen unterlaufen
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1517013164050" ID="ID_623452791" MODIFIED="1518487921068" TEXT="mehrfach-L&#xf6;sungen nicht offensichtlich">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Korrekter Gebrauch setzt eigentlich voraus,
    </p>
    <p>
      da&#223; es an dieser Stelle auch tats&#228;chlich &quot;gar nichts&quot; oder nur &quot;ein stets festes Element&quot; gibt.
    </p>
    <p>
      F&#252;r die Perspektive ist das (nach jetztiger Planung) stets gegeben.
    </p>
    <p>
      
    </p>
    <p>
      Wenn man allerdings diese Bedingung verletzt, dann matcht der &quot;elided&quot;-Platzhalter
    </p>
    <p>
      in mehreren alternativen Zweigen wie ein Wildcard, und es h&#228;ngt dann von
    </p>
    <p>
      zuf&#228;lligen Umst&#228;nden ab, ob man die erwartete L&#246;sung bekommt
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
<node CREATED="1517013731613" ID="ID_1238726037" MODIFIED="1518487921068" TEXT="besste L&#xf6;sung offensichtlich....">
<arrowlink COLOR="#d55642" DESTINATION="ID_1332721436" ENDARROW="Default" ENDINCLINATION="-121;7;" ID="Arrow_ID_1616643867" STARTARROW="None" STARTINCLINATION="81;-10;"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#338800" CREATED="1516916210656" ID="ID_1339759450" MODIFIED="1561827465032" TEXT="wie ermitteln wir das zu erzeugende Suffix des Pfades?">
<icon BUILTIN="button_ok"/>
<node CREATED="1517016683468" ID="ID_174913733" MODIFIED="1518487921068" TEXT="&quot;create()&quot;-Fall &#x27f9; partiallyCovered()">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1517016762625" ID="ID_320463832" MODIFIED="1518487921068" TEXT="...m&#xfc;&#xdf;te diese Info an den Allocator weitergeben"/>
<node CREATED="1517016781198" FOLDED="true" ID="ID_1556601725" MODIFIED="1561827483829" TEXT="Idee: Allocator nimmt UI-Coord-Resolver?">
<icon BUILTIN="button_cancel"/>
<node CREATED="1517018164354" ID="ID_308763864" MODIFIED="1518487921068" TEXT="w&#xfc;rde theoretisch gehen...">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      blo&#223; w&#252;rde sich die Signatur der DSL-Bausteine &#228;ndern:
    </p>
    <p>
      Allocator = std::function&lt;UICoord(UICoordResolver)&gt;;
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1517018171153" ID="ID_912683774" MODIFIED="1518487921068" TEXT="wird ziemlich technisch in der Implementierung">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...denn Reolver ist ein UICoord::Builder und als Solcher non-copyable.
    </p>
    <p>
      Also w&#252;rde das ganze Gefrickel mit Referenzen losgehen,
    </p>
    <p>
      in einem St&#252;ck Metaprogramming-Code, das ohnenhin schon ziemlich &quot;dicht&quot; ist....
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1517018198398" ID="ID_986073860" MODIFIED="1518487921068" TEXT="sonst mu&#xdf; man halt noch mal traversieren">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Der Punkt ist: das ist eine reine Lauzeit/Effzienz-&#220;berlegung.
    </p>
    <p>
      
    </p>
    <p>
      Nachdem das Pfad-Matching in der DSL f&#252;r die Location die passende L&#246;sung gew&#228;hlt hat,
    </p>
    <p>
      w&#228;re -- im UICoordResolver eben -- auch schon die effektive Coverage bekannt.
    </p>
    <p>
      Da aber unser API nach (reinen) UI-Coord verlangt, werden diese aus der berechneten L&#246;sung
    </p>
    <p>
      herausbewegt. Und der Allokator mu&#223; sich dann erneut einen UICoordResolver bauen,
    </p>
    <p>
      oder zumindest das LocationQuery-Interface bem&#252;hen, welches dann nochmal den Baum
    </p>
    <p>
      traversiert um die Coverage festzustellen.
    </p>
    <ul>
      <li>
        Ja, das kostet und ist verschwenderisch...
      </li>
      <li>
        und Ja, vermutlich sind die paar CPU-Zyklen komplett egal
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node CREATED="1517018183472" ID="ID_1424416822" MODIFIED="1518487921068" TEXT="als Optimierung auf sp&#xe4;ter vertagt...">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      das ist der klassische Fall, wo man wegen einer solchen Optimierung
    </p>
    <p>
      sich ein Interface versaut und ziemliche zus&#228;tzliche Komplexit&#228;ten an Bord zieht.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#338800" CREATED="1517018624028" ID="ID_701345322" MODIFIED="1518487921068" TEXT="Antwort: gar nicht, wir berechnen das neu">
<icon BUILTIN="forward"/>
</node>
</node>
<node COLOR="#338800" CREATED="1518658487899" ID="ID_1831478029" MODIFIED="1561827465033" TEXT="wie k&#xf6;nnen Regeln auf den Anwendungs-Kontext Bezug nehmen?">
<linktarget COLOR="#967ea6" DESTINATION="ID_1831478029" ENDARROW="Default" ENDINCLINATION="-800;514;" ID="Arrow_ID_162294902" SOURCE="ID_986224819" STARTARROW="None" STARTINCLINATION="693;-50;"/>
<icon BUILTIN="button_cancel"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1518658506857" ID="ID_589229909" MODIFIED="1518658523711" TEXT="das Problem &quot;asset Tab&quot;">
<icon BUILTIN="messagebox_warning"/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1518658837468" ID="ID_744795602" MODIFIED="1518658861070" TEXT="invertiert die logischen Abh&#xe4;ngigkeiten">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="broken-line"/>
</node>
<node CREATED="1518658902747" FOLDED="true" ID="ID_976555378" MODIFIED="1576282358116" TEXT="entspricht der Unifikation in Logik-Programmierung">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...insofern auch dort
    </p>
    <p>
      die jeweilige generische Regel parametrisiert / instantiiert wird
    </p>
    <p>
      gegen den Kontext, mit dem sie matchen soll
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
<node CREATED="1518762048186" ID="ID_1857576258" MODIFIED="1518762055013" TEXT="m&#xf6;chte ich eigentlich nicht einf&#xfc;hren"/>
<node CREATED="1518762055881" ID="ID_1976334061" MODIFIED="1518762100381" TEXT="vorerst nicht weiter verfolgt">
<icon BUILTIN="yes"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1518746009058" ID="ID_1800549154" MODIFIED="1518830352525" TEXT="#1130 allow view location by similar kind">
<arrowlink COLOR="#77546e" DESTINATION="ID_1501187790" ENDARROW="Default" ENDINCLINATION="447;-339;" ID="Arrow_ID_437325251" STARTARROW="None" STARTINCLINATION="486;0;"/>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node CREATED="1518659028202" ID="ID_1880101392" MODIFIED="1518659037749" TEXT="betrifft eigentlich auch currentWindow()"/>
<node CREATED="1518659526767" ID="ID_839916178" MODIFIED="1518742936572" TEXT="&#x27f9; ist Variablen-Bindung und Funktionsauswertung">
<arrowlink COLOR="#8e6e9e" DESTINATION="ID_1208480183" ENDARROW="Default" ENDINCLINATION="-458;-16;" ID="Arrow_ID_504124124" STARTARROW="None" STARTINCLINATION="-600;49;"/>
</node>
</node>
<node COLOR="#48639d" CREATED="1516916599018" ID="ID_809925267" MODIFIED="1561827465034" TEXT="wie genau mu&#xdf; die Aufrufschnittstelle aussehen?">
<icon BUILTIN="help"/>
<node CREATED="1517084001346" FOLDED="true" ID="ID_101484926" MODIFIED="1561827483830" TEXT="bekannter Ausgangspunkt">
<node CREATED="1517083926212" FOLDED="true" ID="ID_1898315920" MODIFIED="1561827482925" TEXT="location">
<node CREATED="1517021261097" ID="ID_127451793" MODIFIED="1518487921068" TEXT="wird von der Umwandlung in UICoord getrieben"/>
<node CREATED="1517084031198" FOLDED="true" ID="ID_120792277" MODIFIED="1561827469153" TEXT="braucht">
<node CREATED="1517021285330" ID="ID_38597538" MODIFIED="1518487921068" TEXT="LocationQuery"/>
<node CREATED="1517084112371" ID="ID_769147946" MODIFIED="1518487921068" TEXT="Name bzw. Typ des Elements"/>
</node>
</node>
<node CREATED="1517084049228" FOLDED="true" ID="ID_919406389" MODIFIED="1561827482925" TEXT="allocation">
<node CREATED="1517084052451" ID="ID_1249788788" MODIFIED="1518487921068" TEXT="konsumiert Ergebnis von location"/>
<node CREATED="1517084617710" FOLDED="true" ID="ID_1812571482" MODIFIED="1561827469153" TEXT="braucht">
<node CREATED="1517084621814" FOLDED="true" ID="ID_1163837563" MODIFIED="1561827469135" TEXT="LocationQuery">
<node CREATED="1517084626949" FOLDED="true" ID="ID_73780971" MODIFIED="1525124214917" TEXT="um die Multiplicity-Constraints zu pr&#xfc;fen">
<node CREATED="1517084664528" ID="ID_749914799" MODIFIED="1518487921068" TEXT="wir traversieren / matchen erneut"/>
<node CREATED="1517084673487" ID="ID_114406974" MODIFIED="1518487921068" TEXT="Optimierung w&#xe4;re ein View-Index">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      das ist eine typische, rein lokale Optimierung (Speicher vs CPU)
    </p>
    <p>
      Ein solcher View-Index sollte dann ebenfalls via LocationQuery exponiert werden
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1517084780368" ID="ID_438448516" MODIFIED="1518487921068" TEXT="um das zu erzeugende Pfad-Suffix zu finden"/>
</node>
<node CREATED="1517084832201" FOLDED="true" ID="ID_1256502240" MODIFIED="1561827469135" TEXT="ViewLocator">
<node CREATED="1517084844456" ID="ID_1565019572" MODIFIED="1518487921068" TEXT="um auf die eigentlichen Elemente durchzugreifen"/>
<node CREATED="1517084853574" ID="ID_654820561" MODIFIED="1518487921068" TEXT="um die Erzeugung anzusto&#xdf;en"/>
</node>
</node>
</node>
</node>
<node CREATED="1517085201199" FOLDED="true" ID="ID_857446188" MODIFIED="1561827483830" TEXT="Problem: Name/Typ">
<node CREATED="1517085219749" FOLDED="true" ID="ID_1532208378" MODIFIED="1561827482925" TEXT="mu&#xdf; das DSL-API ge&#xe4;ndert werden?">
<icon BUILTIN="help"/>
<node CREATED="1517085233491" ID="ID_30019292" MODIFIED="1518487921068" TEXT="location auch ein Funktor?"/>
<node CREATED="1517085244625" ID="ID_413721839" MODIFIED="1518487921068" TEXT="nimmt jeweils den konkreten Typ"/>
<node CREATED="1517504908529" FOLDED="true" ID="ID_1809382464" MODIFIED="1561827469154" TEXT="Unterschied zum Allocator">
<icon BUILTIN="idea"/>
<node CREATED="1517504917464" ID="ID_708832973" MODIFIED="1518487921068">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      es gibt <i>nur einen</i>&#160;&quot;Locator&quot;
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1517504936349" ID="ID_554771782" MODIFIED="1518487921068" TEXT="aber viele Allocatoren"/>
<node CREATED="1517504985135" ID="ID_1830919763" MODIFIED="1518487921068" TEXT="keine partielle Funktor-Applikation notwendig">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1517505012763" ID="ID_1291355818" MODIFIED="1518487921068" TEXT="man kann es fest auscoden">
<icon BUILTIN="ksmiletris"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1517505097399" FOLDED="true" ID="ID_294737534" MODIFIED="1561827482925" TEXT="Konsequenz: Locator wird zum Funktor">
<icon BUILTIN="button_ok"/>
<node CREATED="1517505142369" ID="ID_940906263" MODIFIED="1518487921068" TEXT="wird weiterhin initialisiert mit einer UI-Coord"/>
<node CREATED="1517508084435" ID="ID_536404927" MODIFIED="1518487921068" TEXT="baut daraus eine LocationRule (embedded delegate)"/>
<node CREATED="1517505168030" ID="ID_570287604" MODIFIED="1518487921068" STYLE="fork" TEXT="delegiert L&#xf6;sung an LocationSolver (PImpl)">
<arrowlink COLOR="#7999a3" DESTINATION="ID_1733459677" ENDARROW="Default" ENDINCLINATION="460;0;" ID="Arrow_ID_1447990036" STARTARROW="None" STARTINCLINATION="-15;211;"/>
</node>
<node CREATED="1517505262305" ID="ID_1820737013" MODIFIED="1518487921068" TEXT="ODER erg&#xe4;nzt diesen"/>
<node CREATED="1517505271712" ID="ID_454259889" MODIFIED="1518487921068" TEXT="Aufruf -&gt; solve -&gt; expliziter Pfad"/>
</node>
<node CREATED="1517505121564" ID="ID_880504673" MODIFIED="1518487921068" TEXT="Aufruf &#xe4;ndert sich">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1517505406390" FOLDED="true" ID="ID_799191936" MODIFIED="1561827483830" TEXT="DSL-Anwendung">
<icon BUILTIN="info"/>
<node CREATED="1517505438209" FOLDED="true" ID="ID_1991447613" MODIFIED="1561827482925" TEXT="Schritt 1">
<icon BUILTIN="full-1"/>
<node CREATED="1517505518247" ID="ID_1212835768" MODIFIED="1518487921068" TEXT="locate(typID)"/>
<node CREATED="1517505532484" FOLDED="true" ID="ID_192986712" MODIFIED="1561827469154" TEXT="liefert Pfad">
<node CREATED="1517505555066" ID="ID_286561451" MODIFIED="1518487921069" TEXT="komplettiert"/>
<node CREATED="1517505557977" ID="ID_1809908136" MODIFIED="1518487921069" TEXT="partially covered"/>
</node>
</node>
<node CREATED="1517505442593" FOLDED="true" ID="ID_164467382" MODIFIED="1561827482925" TEXT="Schritt 2">
<icon BUILTIN="full-2"/>
<node CREATED="1517505573687" ID="ID_197290428" MODIFIED="1518487921069" TEXT="allocate(pfad)"/>
<node CREATED="1517505580870" ID="ID_1902973372" MODIFIED="1518487921069" TEXT="mutiert ggfs das UI"/>
<node CREATED="1517505599515" FOLDED="true" ID="ID_1414969254" MODIFIED="1561827469154" TEXT="liefert Pfad">
<node CREATED="1517505605363" ID="ID_1831975809" MODIFIED="1518487921069" TEXT="zeigt auf gew&#xfc;nschtes Element"/>
<node CREATED="1523750537195" ID="ID_1546579450" MODIFIED="1523750551293" TEXT="hat ggfs die typID/Namens-ID dekoriert"/>
<node CREATED="1517505614937" ID="ID_262899447" MODIFIED="1518487921069" TEXT="totally covered"/>
</node>
</node>
</node>
</node>
<node COLOR="#48639d" CREATED="1516916611433" ID="ID_1887578617" MODIFIED="1561827465044" TEXT="welche zus&#xe4;tzlichen Services werden ben&#xf6;tigt?">
<icon BUILTIN="help"/>
<node CREATED="1517021372159" FOLDED="true" ID="ID_841350723" MODIFIED="1561827483830" TEXT="location">
<node CREATED="1518840121972" ID="ID_989066633" MODIFIED="1522938419001">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ein <b>LocationSolver</b>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1517021326957" ID="ID_20403834" MODIFIED="1522938411626">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <b>LocationQuery</b>&#160;qua Navigator
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1517021298929" ID="ID_621970077" MODIFIED="1518487921069">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...die es <i>hinten herum</i>&#160;bekommt
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1517021389028" FOLDED="true" ID="ID_1240883488" MODIFIED="1561827483830" TEXT="Allocator">
<node CREATED="1517021395067" ID="ID_1609814715" MODIFIED="1518487921069" TEXT="die konkreten Allokatoren"/>
<node CREATED="1517021415017" ID="ID_1692689619" MODIFIED="1522938396840">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      sehen <b>ViewLocator</b>-API
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1517013926947" HGAP="247" ID="ID_1823688859" MODIFIED="1533685136952" TEXT="fehlende Implementierung..." VSHIFT="26">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1517013976676" ID="ID_614348470" MODIFIED="1533608413693" TEXT="&quot;elided&quot; als Wildcard behandeln">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1517013994137" ID="ID_140988955" MODIFIED="1518762169701" TEXT="einbauen (EInzeiler)">
<arrowlink COLOR="#91a7b5" DESTINATION="ID_974516393" ENDARROW="Default" ENDINCLINATION="-759;53;" ID="Arrow_ID_862004765" STARTARROW="None" STARTINCLINATION="1590;41;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1517014001792" ID="ID_1542036736" MODIFIED="1518762171655" TEXT="Testf&#xe4;lle nachtragen">
<arrowlink COLOR="#4b5cab" DESTINATION="ID_796216711" ENDARROW="Default" ENDINCLINATION="-145;942;" ID="Arrow_ID_570641462" STARTARROW="None" STARTINCLINATION="383;78;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#990000" CREATED="1518658696759" FOLDED="true" ID="ID_68856104" MODIFIED="1533608413694">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Regel-Parametrisierung
    </p>
    <p>
      Kontextualisierung
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#e46465" DESTINATION="ID_68856104" ENDARROW="Default" ENDINCLINATION="74;449;" ID="Arrow_ID_110301671" SOURCE="ID_1208480183" STARTARROW="None" STARTINCLINATION="-232;7;"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1518658759567" ID="ID_1257805922" MODIFIED="1561827465048" TEXT="wie?">
<node CREATED="1517014036148" ID="ID_1650726696" MODIFIED="1518487921069" TEXT="on the fly">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1517014040147" ID="ID_144379993" MODIFIED="1518743268543" TEXT="beim Erzeugen des Resolvers"/>
</node>
<node CREATED="1518658744024" ID="ID_1009975119" MODIFIED="1561827465049" TEXT="Zweck">
<node COLOR="#338800" CREATED="1517014013207" FOLDED="true" ID="ID_1843964714" MODIFIED="1561827483830" TEXT="automatisches Injizieren von &quot;elided&quot;">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1518743292259" ID="ID_1943028471" MODIFIED="1518839525198" TEXT="das machen wir trotzdem">
<arrowlink COLOR="#595f8d" DESTINATION="ID_1516856737" ENDARROW="Default" ENDINCLINATION="302;0;" ID="Arrow_ID_241747952" STARTARROW="None" STARTINCLINATION="697;-153;"/>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1518743303177" ID="ID_1758602660" MODIFIED="1518743321547" TEXT="...und zwar direkt im LocationSolver"/>
</node>
<node CREATED="1518658412982" FOLDED="true" ID="ID_1860407174" MODIFIED="1561827483830" TEXT="L&#xf6;sung f&#xfc;r &quot;asset Tab&quot;">
<icon BUILTIN="hourglass"/>
<node CREATED="1518745809189" ID="ID_334346990" MODIFIED="1518746202442" TEXT="hier geht es um einen subtilen Punkt im Gebrauch des UI-Raumes">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Man m&#246;chte, da&#223; f&#252;r spezielle Sub-Elemente,
    </p>
    <p>
      die aus einem fremden Kontext heraus ge&#246;ffnet werden,
    </p>
    <p>
      zun&#228;chst versucht wird, einen irgendwo im UI schon bestehenden TAB
    </p>
    <p>
      f&#252;r speziell diesen Element-Typ wiederzuverwenden; das erlaubt dem User,
    </p>
    <p>
      sich einen Platz f&#252;r sehr spezielle Sachen beiseite zu setzen.
    </p>
    <p>
      
    </p>
    <p>
      z.B. sehr spezielle Assets oder ein virtueller Clip.
    </p>
    <p>
      
    </p>
    <p>
      Erst wenn so ein Ort nicht gefunden wird, m&#246;chte man auf einen
    </p>
    <p>
      generischen Ort zur&#252;ckfallen, und erst als letzte default-L&#246;sung
    </p>
    <p>
      im aktuellen Fenster einen v&#246;llig neuen UI-Elementkontext schaffen.
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#2c4580" DESTINATION="ID_334346990" ENDARROW="Default" ENDINCLINATION="242;0;" ID="Arrow_ID_1968525556" SOURCE="ID_1219364679" STARTARROW="None" STARTINCLINATION="78;0;"/>
</node>
<node CREATED="1518745834329" ID="ID_877601312" MODIFIED="1518745855890" TEXT="nicht klar, ob es gerechtfertigt ist, hierf&#xfc;r solche Komplexit&#xe4;ten zu schaffen"/>
<node CREATED="1518745857950" ID="ID_1572087161" MODIFIED="1518745944379" TEXT="wenn sollte man es besser explizit als Spezialfall hart-coden">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...statt die gesamte Matching-Engine mit einer Art
    </p>
    <p>
      halbgaren Unifikation aufzubrezln
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1518745906400" ID="ID_958966084" MODIFIED="1518745914960" TEXT="wildMatch() in ui-coord-resolver.cpp">
<icon BUILTIN="forward"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1518746009058" FOLDED="true" ID="ID_43313184" MODIFIED="1561827482926" TEXT="#1130 allow view location by similar kind">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1518762071967" FOLDED="true" ID="ID_1501187790" MODIFIED="1561827469154" TEXT="ggfs partielle L&#xf6;sung?">
<linktarget COLOR="#77546e" DESTINATION="ID_1501187790" ENDARROW="Default" ENDINCLINATION="447;-339;" ID="Arrow_ID_437325251" SOURCE="ID_1800549154" STARTARROW="None" STARTINCLINATION="486;0;"/>
<icon BUILTIN="hourglass"/>
<node CREATED="1518830375356" ID="ID_580870700" MODIFIED="1518830460134">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <i>nur eingeschr&#228;nkt</i>&#160;auf die TypID?
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="help"/>
</node>
<node CREATED="1518830433876" FOLDED="true" ID="ID_486080918" MODIFIED="1561827469135" TEXT="Flag, um diese vor Matching injizieren">
<icon BUILTIN="idea"/>
<node CREATED="1518830500331" ID="ID_314535087" MODIFIED="1518830531395">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Preprocessing beim <i>Anlegen</i>&#160;der Klausel
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1518830545773" ID="ID_533394110" MODIFIED="1518830552887" TEXT="setzt spezielle Syntax in Flag um"/>
<node CREATED="1518830581200" ID="ID_1879545754" MODIFIED="1518830625478" TEXT="Flag &#x27f9; aktuelle typID wird als Term angeh&#xe4;ngt"/>
<node CREATED="1518830626306" ID="ID_1109967783" MODIFIED="1518830635572" TEXT="...und mu&#xdf; somit schon existieren"/>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1518660243382" HGAP="32" ID="ID_1951597669" MODIFIED="1561827465053" TEXT="technischer Ansatz" VSHIFT="-2">
<node CREATED="1518660484501" FOLDED="true" ID="ID_1142230788" MODIFIED="1561827483830" TEXT="Pattern umschreiben">
<node CREATED="1518660561314" ID="ID_719818438" MODIFIED="1518660568165" TEXT="sehr leicht zu implementieren"/>
<node CREATED="1518660569273" ID="ID_357095507" MODIFIED="1518660615103" TEXT="verwirrend/magisch/manipulativ"/>
<node CREATED="1518660696792" FOLDED="true" ID="ID_90938050" MODIFIED="1561827482926" TEXT="verschwenderisch">
<node CREATED="1518660724012" ID="ID_471630453" MODIFIED="1518660730367" TEXT="zus&#xe4;tzlicher Pass"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1518660732051" ID="ID_595304644" MODIFIED="1518738065908" TEXT="f&#xfc;r ein selten verwendetes Feature">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="broken-line"/>
</node>
</node>
</node>
<node CREATED="1518660504026" FOLDED="true" ID="ID_923980639" MODIFIED="1561827483830" TEXT="Matcher/Unifizierer">
<node CREATED="1518660781261" ID="ID_1851856047" MODIFIED="1518660789479" TEXT="sitzt im Solver selber"/>
<node CREATED="1518660790596" ID="ID_869512309" MODIFIED="1518660793175" TEXT="logisch korrekt"/>
<node CREATED="1518660795403" FOLDED="true" ID="ID_1080152835" MODIFIED="1561827482926" TEXT="erfordert Abstraktion">
<node CREATED="1518660845588" ID="ID_1526822574" MODIFIED="1518660850327" TEXT="Definitionsaufwand"/>
<node CREATED="1518660851035" ID="ID_1271437627" MODIFIED="1518660856798" TEXT="Einrichtungs-Aufwand"/>
<node CREATED="1518660857434" ID="ID_1501111250" MODIFIED="1518660906191" TEXT="komplex f&#xfc;r Test einzurichten"/>
</node>
<node CREATED="1518742996348" ID="ID_328356111" MODIFIED="1518743006606" TEXT="von der Ebene der Sprache her schwer zu verstehen"/>
<node CREATED="1518743012337" ID="ID_1220573120" MODIFIED="1518743054926">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      bleibt dem Charakter nach <i>imperativ</i>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="broken-line"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1518743065930" HGAP="79" ID="ID_1989234578" MODIFIED="1561827465059" TEXT="vorerst abgelehnt" VSHIFT="21">
<icon BUILTIN="stop-sign"/>
<node CREATED="1518743153214" ID="ID_513041431" MODIFIED="1518743159705" TEXT="keine der L&#xf6;sungen wirklich attraktiv"/>
<node CREATED="1518743167708" ID="ID_1748977650" MODIFIED="1518743186813" TEXT="sprengt gewisserma&#xdf;en den Ansatz eines reinen Matchers"/>
<node CREATED="1518743192305" ID="ID_1134364758" MODIFIED="1518743222705" TEXT="wenn man wirkliche Unifikation will  &#x27f9;  Resolution-Engine nehmen"/>
<node CREATED="1518743226772" FOLDED="true" ID="ID_1108128377" MODIFIED="1561827483830" TEXT="DSL-Entwurf nochmal angeschaut....">
<node CREATED="1518743248497" ID="ID_1219364679" MODIFIED="1518745996865" TEXT="Feature kann weitgehend umgangen werden">
<arrowlink COLOR="#2c4580" DESTINATION="ID_334346990" ENDARROW="Default" ENDINCLINATION="242;0;" ID="Arrow_ID_1968525556" STARTARROW="None" STARTINCLINATION="78;0;"/>
</node>
<node CREATED="1518743254401" ID="ID_1218065629" MODIFIED="1518743258377" TEXT="YAGNI">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1517505328936" FOLDED="true" ID="ID_406973235" MODIFIED="1533608413702" TEXT="Umbauen Locator in Functor">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1517505339663" ID="ID_470503309" MODIFIED="1561827465064" TEXT="DSL-Header restrukturieren">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1517507830918" FOLDED="true" ID="ID_1112334086" MODIFIED="1561827483831" TEXT="Locator analog zu Allocator definieren">
<icon BUILTIN="button_ok"/>
<node CREATED="1519355684307" FOLDED="true" ID="ID_336676610" MODIFIED="1561827482926">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      was <i>ist</i>&#160;der Locator?
    </p>
  </body>
</html></richcontent>
<node CREATED="1519355702409" ID="ID_609593004" MODIFIED="1520205015753" TEXT="eine LocationRule">
<icon BUILTIN="forward"/>
</node>
<node CREATED="1519355709376" ID="ID_142286917" MODIFIED="1519355717530" TEXT="mit Aufruf-Mechanismus"/>
</node>
<node CREATED="1519357904845" FOLDED="true" ID="ID_691482201" MODIFIED="1561827482926" TEXT="Verwendungs-Schema">
<icon BUILTIN="yes"/>
<node CREATED="1519357910532" FOLDED="true" ID="ID_1670200821" MODIFIED="1561827469154" TEXT="komplett symmetrisch?">
<icon BUILTIN="button_cancel"/>
<node CREATED="1519357919770" ID="ID_1959314257" MODIFIED="1519357951259" TEXT="zus&#xe4;tzliche Art der Location?">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1519357938272" ID="ID_446182371" MODIFIED="1519357948252" TEXT="Location-Builder">
<icon BUILTIN="button_cancel"/>
</node>
</node>
<node CREATED="1519357953550" FOLDED="true" ID="ID_1286263958" MODIFIED="1561827469154" TEXT="eine Ebene heben">
<icon BUILTIN="button_ok"/>
<node CREATED="1519357991409" ID="ID_994090473" MODIFIED="1519357999947" TEXT="Bauen per Zuweisung"/>
<node CREATED="1519358000671" ID="ID_49826255" MODIFIED="1519358015345" TEXT="Aufruf mit Typ-ID-Argument"/>
</node>
</node>
<node COLOR="#338800" CREATED="1519358138988" FOLDED="true" ID="ID_1481930885" MODIFIED="1561827482926" TEXT="DSL-Mechanik">
<icon BUILTIN="button_ok"/>
<node CREATED="1519358154386" ID="ID_1810798001" MODIFIED="1519358201550" TEXT="Allocator wird durch Zuweisen der AlocSpec generiert">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1519358178623" ID="ID_517547970" MODIFIED="1519442398323" TEXT="beim Locator fehlt ein entsprechendes Gegenst&#xfc;ck">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1519359156410" FOLDED="true" ID="ID_1786241256" MODIFIED="1561827469154" TEXT="Idee">
<icon BUILTIN="idea"/>
<node CREATED="1519359176855" ID="ID_853060191" MODIFIED="1519359192777">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      der <i>Level</i>&#160;im UI ist noch offen
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1519359193821" ID="ID_588596170" MODIFIED="1519359234665" STYLE="fork" TEXT="das k&#xf6;nnte Argument eines Builders sein"/>
<node CREATED="1519359239735" FOLDED="true" ID="ID_988890391" MODIFIED="1561827469135" TEXT="konkret......">
<node CREATED="1519438604809" ID="ID_313142617" MODIFIED="1519438615852" TEXT="L&#xf6;sevorgang mu&#xdf; den Ziel-Level kennen"/>
<node CREATED="1519438617271" ID="ID_1310079168" MODIFIED="1519438673926">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <i>fast immer</i>&#160;ist das aber UIC_VIEW
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      im Moment f&#228;llt mir &#252;berhaupt keine Ausnahme ein
    </p>
    <p>
      aber man soll niemals nie sagen;
    </p>
    <p>
      
    </p>
    <p>
      jedenfalls ist der LocationSolver komplett generisch geschrieben,
    </p>
    <p>
      w&#228;re ja auch d&#228;mlich, den auf einen Level festzunageln
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1519439848624" FOLDED="true" ID="ID_1356890401" MODIFIED="1525124214959">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      kann man den Level <i>erschlie&#223;en?</i>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_cancel"/>
<node CREATED="1519439872572" ID="ID_1387780581" MODIFIED="1519439914138" TEXT="fast, aber leider nein">
<icon BUILTIN="smily_bad"/>
</node>
<node CREATED="1519439893089" ID="ID_350245814" MODIFIED="1519440011427" TEXT="nicht wenn alle Pattern gleich lang sind">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      es ist nicht klar, ob die pattern bereits das fragliche View-Element mit einschlie&#223;en,
    </p>
    <p>
      oder ob das View-Element noch angeh&#228;ngt werden soll. Diese Variation ist essentiell,
    </p>
    <p>
      um Regeln auszudr&#252;cken, die explizit nur eine schon existierende UI-Komponente greifen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
</node>
<node CREATED="1519440039302" FOLDED="true" ID="ID_779685706" MODIFIED="1525124214959" TEXT="folglich...">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="forward"/>
<node CREATED="1519440044629" ID="ID_433141744" MODIFIED="1519442714991" TEXT="mu&#xdf; der Level entweder aus der DSL kommen">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1519440054651" ID="ID_1512334426" MODIFIED="1519442712213" TEXT="oder er mu&#xdf; &#xfc;ber den Typ gecodet sein">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1519442682549" ID="ID_1285145089" MODIFIED="1519442708878" TEXT="oder explizit beim Aufruf mitgegeben">
<icon BUILTIN="button_cancel"/>
</node>
</node>
</node>
</node>
<node CREATED="1519437341366" FOLDED="true" ID="ID_1400629217" MODIFIED="1561827469154" TEXT="Alternativen">
<node CREATED="1519437362523" ID="ID_1967120024" MODIFIED="1519440122737" STYLE="bubble">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      auto locate = matchView(
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;panel(&quot;blah&quot;)
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;or currentWindow().panel(&quot;blubb&quot;).create() )
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1519437509655" ID="ID_241024117" MODIFIED="1519442360056" STYLE="bubble">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      LocatorSpec&lt;UIC_VIEW&gt; locate = panel(&quot;blah&quot;)
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;or currentWindow().panel(&quot;blubb&quot;).create()
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1519437756333" ID="ID_565391583" MODIFIED="1519440134474" STYLE="bubble">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ViewSpec locate = panel(&quot;blah&quot;)
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;or currentWindow().panel(&quot;blubb&quot;).create()
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1519440138712" FOLDED="true" ID="ID_861550710" MODIFIED="1561827469154" TEXT="Entscheidung">
<icon BUILTIN="yes"/>
<node CREATED="1519440157310" FOLDED="true" ID="ID_1912054433" MODIFIED="1561827469136" TEXT="ziehe die letzte Variante als Standard-Fall vor">
<node CREATED="1519440168660" ID="ID_1954754744" MODIFIED="1519440288338" TEXT="weil sie am unscheinbarsten ist">
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1519440271318" ID="ID_436275698" MODIFIED="1519440283871" TEXT="auch wenn dadurch die Definitionen etwas schief werden">
<icon BUILTIN="smily_bad"/>
</node>
</node>
<node CREATED="1519440180978" FOLDED="true" ID="ID_42017722" MODIFIED="1561827469136" TEXT="die vorletzte Variante ist die eigentliche Definition">
<node CREATED="1519440198016" ID="ID_650838793" MODIFIED="1519440207306" TEXT="und ViewSpec ein Typ-Alias"/>
<node CREATED="1519440208487" ID="ID_1465224504" MODIFIED="1519440222184" TEXT="analog f&#xfc;r PanelSpec, WindowSpec"/>
</node>
<node CREATED="1519440250849" ID="ID_800018525" MODIFIED="1519440267084" TEXT="die Asymetrie in der DSL-Definition nehme ich in Kauf">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node CREATED="1519355735012" ID="ID_241646491" MODIFIED="1519355793090" TEXT="wo entsteht die LocationRule?">
<arrowlink COLOR="#647b96" DESTINATION="ID_1664602603" ENDARROW="Default" ENDINCLINATION="1374;300;" ID="Arrow_ID_947721778" STARTARROW="None" STARTINCLINATION="298;36;"/>
</node>
</node>
<node COLOR="#338800" CREATED="1517507566761" FOLDED="true" ID="ID_839496495" MODIFIED="1561827483831">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Anwendung <i>delegiert</i>&#160;an einen Serivce
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
<node CREATED="1522807009051" ID="ID_578310400" MODIFIED="1522807052395">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      f&#252;r <i>LocationQuery</i>
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#2c5db0" DESTINATION="ID_578310400" ENDARROW="Default" ENDINCLINATION="52;3;" ID="Arrow_ID_808786860" SOURCE="ID_704863615" STARTARROW="None" STARTINCLINATION="52;3;"/>
</node>
<node CREATED="1522807024217" ID="ID_704863615" MODIFIED="1522807052394">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      f&#252;r <i>LocationSolver</i>
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#2c5db0" DESTINATION="ID_578310400" ENDARROW="Default" ENDINCLINATION="52;3;" ID="Arrow_ID_808786860" STARTARROW="None" STARTINCLINATION="52;3;"/>
</node>
</node>
<node COLOR="#338800" CREATED="1519355422807" FOLDED="true" ID="ID_1718427051" MODIFIED="1561827483831" TEXT="Service-Zugang regeln">
<icon BUILTIN="button_ok"/>
<node CREATED="1520221913300" FOLDED="true" ID="ID_906905" MODIFIED="1561827482926" TEXT="Design?">
<icon BUILTIN="help"/>
<node CREATED="1520221927138" FOLDED="true" ID="ID_782466951" MODIFIED="1561827469155" TEXT="hintenrum injizieren">
<arrowlink COLOR="#3391c4" DESTINATION="ID_1058958215" ENDARROW="Default" ENDINCLINATION="356;0;" ID="Arrow_ID_1958186293" STARTARROW="None" STARTINCLINATION="40;166;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1520222029276" ID="ID_1305200988" MODIFIED="1520222040102" TEXT="magisch"/>
<node CREATED="1520222040762" ID="ID_1805401030" MODIFIED="1520222046261" TEXT="statefull (Singleton)"/>
<node CREATED="1520222046905" ID="ID_1622261658" MODIFIED="1520222079625" TEXT="Test wird verwirrend"/>
<node COLOR="#338800" CREATED="1522806901418" ID="ID_1922399331" MODIFIED="1522806952792" TEXT="Sch&#xf6;ne L&#xf6;sung: lib::Depend">
<arrowlink COLOR="#3390b9" DESTINATION="ID_871055051" ENDARROW="Default" ENDINCLINATION="-128;-126;" ID="Arrow_ID_1437440702" STARTARROW="None" STARTINCLINATION="-21;26;"/>
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node CREATED="1520221939552" FOLDED="true" ID="ID_1782927241" MODIFIED="1561827469155" TEXT="mit Aufruf mitgeben">
<icon BUILTIN="button_cancel"/>
<node CREATED="1520221963005" ID="ID_1864632806" MODIFIED="1520221965097" TEXT="sauber"/>
<node CREATED="1520221971275" ID="ID_1783955125" MODIFIED="1520222023640" TEXT="gradlinig zu testen"/>
<node CREATED="1520221965972" ID="ID_610476428" MODIFIED="1520221970496" TEXT="einfach zu implementieren"/>
<node CREATED="1520221985682" FOLDED="true" ID="ID_589257049" MODIFIED="1561827469136" TEXT="gef&#xe4;llt mir trotzdem nicht">
<icon BUILTIN="smily_bad"/>
<node CREATED="1520222097723" ID="ID_435762794" MODIFIED="1520222108581" TEXT="weil es die Abstraktion der DSL bricht"/>
<node CREATED="1520222137669" ID="ID_497050094" MODIFIED="1520222152007" TEXT="weil es logisch nichts mit dem query-Aufruf zu tun hat"/>
<node CREATED="1520222159722" ID="ID_462075011" MODIFIED="1520222170981" TEXT="weil es asymetrisch zur Allokation ist"/>
<node CREATED="1520222178063" ID="ID_1483417403" MODIFIED="1520222192305" TEXT="weil es ein Implementierungsdetail auf dem API ist"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1522804403692" FOLDED="true" ID="ID_281326685" MODIFIED="1561827482926" TEXT="globale Variable zur&#xfc;ckbauen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1522804419777" ID="ID_631271577" MODIFIED="1522806858336" TEXT="locationQuery">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1522804436623" ID="ID_968463465" MODIFIED="1522804473410" TEXT="view-locator.cpp">
<icon BUILTIN="info"/>
</node>
</node>
<node COLOR="#338800" CREATED="1520721753927" FOLDED="true" ID="ID_1564232821" MODIFIED="1561827482927" TEXT="DependencyFactory verwenden">
<icon BUILTIN="button_ok"/>
<node CREATED="1520721767005" ID="ID_364557801" MODIFIED="1522806969961" TEXT="dazu mu&#xdf; diese erst mal ausgebaut werden">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1522806971408" ID="ID_747664714" MODIFIED="1522806984381" TEXT="tja, das waren 14 Tage Arbeit....">
<icon BUILTIN="smiley-neutral"/>
</node>
<node COLOR="#338800" CREATED="1520721792978" ID="ID_871055051" MODIFIED="1522806952792" TEXT="#1086 unify Depend singleton and instance management">
<arrowlink COLOR="#7188b5" DESTINATION="ID_451964727" ENDARROW="Default" ENDINCLINATION="2227;-4042;" ID="Arrow_ID_1654818003" STARTARROW="None" STARTINCLINATION="775;393;"/>
<linktarget COLOR="#3390b9" DESTINATION="ID_871055051" ENDARROW="Default" ENDINCLINATION="-128;-126;" ID="Arrow_ID_1437440702" SOURCE="ID_1922399331" STARTARROW="None" STARTINCLINATION="-21;26;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1522804252041" FOLDED="true" HGAP="-15" ID="ID_557569003" MODIFIED="1561827469155" TEXT="Verdrahtung einrichten" VSHIFT="61">
<icon BUILTIN="button_ok"/>
<node CREATED="1522804312832" ID="ID_1841038371" MODIFIED="1522804485667" STYLE="fork" TEXT="InteractionDirector -&gt; Navigator == Service LocationQuery"/>
<node CREATED="1522804344916" ID="ID_456601994" MODIFIED="1522804392465" TEXT="ViewLocator -&gt; UILocationSolver == Service"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1517507576168" FOLDED="true" ID="ID_700127725" MODIFIED="1561827483831" TEXT="LocationClause">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1517507586447" ID="ID_170204980" MODIFIED="1518487921069" TEXT="eingebettete UI-Coord">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1517507596445" ID="ID_386656276" MODIFIED="1518487921069" TEXT="zus&#xe4;tzliche Flags">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1518312817798" ID="ID_473624624" MODIFIED="1518487921069">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Schreibweise f&#252;r <i>create Clauses</i>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1517505346701" ID="ID_1733459677" MODIFIED="1561827465086" TEXT="LocationSolver einf&#xfc;hren">
<linktarget COLOR="#7999a3" DESTINATION="ID_1733459677" ENDARROW="Default" ENDINCLINATION="460;0;" ID="Arrow_ID_1447990036" SOURCE="ID_570287604" STARTARROW="None" STARTINCLINATION="-15;211;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1517505662323" ID="ID_1295083929" MODIFIED="1518487921069" TEXT="baut auf LocationQuery auf">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1517505700422" ID="ID_387055301" MODIFIED="1518487921069" TEXT="erweiterte solve()-Methode">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1517505717508" FOLDED="true" ID="ID_636863312" MODIFIED="1561827483831" TEXT="Framework f&#xfc;r mehrere Klauseln">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1517506971514" ID="ID_1227765715" MODIFIED="1518487921069" TEXT="Iterator(LocationClause const&amp;)">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1517508131749" FOLDED="true" ID="ID_1527522188" MODIFIED="1561827482927" TEXT="LocationRule">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1517508155177" ID="ID_1404330274" MODIFIED="1518487921069" TEXT="vector(LocationClause (values))">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1517508205555" ID="ID_1524544821" MODIFIED="1518487921069" TEXT="Iterator daraus generieren">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1517508218889" ID="ID_360290307" MODIFIED="1518487921069" TEXT="Alternative anf&#xfc;gen">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1517505737977" FOLDED="true" ID="ID_606655578" MODIFIED="1561827483831" TEXT="L&#xf6;sungsmechanismus">
<arrowlink COLOR="#8b9e9d" DESTINATION="ID_1945600026" ENDARROW="None" ENDINCLINATION="341;-39;" ID="Arrow_ID_360373706" STARTARROW="Default" STARTINCLINATION="-302;83;"/>
<linktarget COLOR="#8b9e9d" DESTINATION="ID_606655578" ENDARROW="Default" ENDINCLINATION="-152;43;" ID="Arrow_ID_1433975114" SOURCE="ID_783849930" STARTARROW="None" STARTINCLINATION="213;-13;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1517507636416" ID="ID_1159293904" MODIFIED="1518487921069" TEXT="f&#xfc;r jede Klausel...">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1517506994783" ID="ID_1943710017" MODIFIED="1518487921069" TEXT="baut jeweils UICorrdResolver">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1518658805744" FOLDED="true" ID="ID_1208480183" MODIFIED="1561827482927" TEXT="Kontext-Bindung">
<arrowlink COLOR="#e46465" DESTINATION="ID_68856104" ENDARROW="Default" ENDINCLINATION="74;449;" ID="Arrow_ID_110301671" STARTARROW="None" STARTINCLINATION="-232;7;"/>
<linktarget COLOR="#8e6e9e" DESTINATION="ID_1208480183" ENDARROW="Default" ENDINCLINATION="-458;-16;" ID="Arrow_ID_504124124" SOURCE="ID_839916178" STARTARROW="None" STARTINCLINATION="-600;49;"/>
<linktarget COLOR="#b78791" DESTINATION="ID_1208480183" ENDARROW="Default" ENDINCLINATION="-1240;134;" ID="Arrow_ID_831550289" SOURCE="ID_481219776" STARTARROW="None" STARTINCLINATION="1654;0;"/>
<icon BUILTIN="stop-sign"/>
<node CREATED="1518659629689" ID="ID_666680369" MODIFIED="1518659660281" TEXT="L&#xf6;se-Funktion bekommt Kontext"/>
<node CREATED="1518660033466" ID="ID_1879301424" MODIFIED="1518660044053" TEXT="jede Klausel wird vorbehandelt"/>
<node CREATED="1518660206867" ID="ID_1357657997" MODIFIED="1518660237412">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      technische L&#246;sug <i>diskutierbar</i>
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...will sagen,
    </p>
    <p>
      man kann das erheblich tief und generisch ausbauen
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1518742862470" ID="ID_588911138" MODIFIED="1518742880332" TEXT="YAGNI">
<font BOLD="true" NAME="SansSerif" SIZE="13"/>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node COLOR="#338800" CREATED="1518762499749" FOLDED="true" ID="ID_214794727" MODIFIED="1561827482927">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Perspective <i>elided</i>
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#8eacb9" DESTINATION="ID_214794727" ENDARROW="Default" ENDINCLINATION="-653;0;" ID="Arrow_ID_1678351989" SOURCE="ID_606433871" STARTARROW="None" STARTINCLINATION="1400;0;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1518762520034" ID="ID_1516856737" MODIFIED="1518839506876" TEXT="hier automatisch injizieren">
<linktarget COLOR="#595f8d" DESTINATION="ID_1516856737" ENDARROW="Default" ENDINCLINATION="302;0;" ID="Arrow_ID_241747952" SOURCE="ID_1943028471" STARTARROW="None" STARTINCLINATION="697;-153;"/>
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1518762547918" ID="ID_1868672591" MODIFIED="1518762557041" TEXT="nur f&#xfc;r create()-Klauseln"/>
<node CREATED="1518762532376" ID="ID_720810877" MODIFIED="1518762565908" TEXT="pragmatische L&#xf6;sung, statt voller Unifikation">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1518838263050" FOLDED="true" ID="ID_443518928" MODIFIED="1561827469155" TEXT="Implementierung">
<node CREATED="1518838267457" ID="ID_943649771" MODIFIED="1518838276599" TEXT="als pre-Processing im Solver">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1518838283262" FOLDED="true" ID="ID_238691976" MODIFIED="1561827469136" TEXT="wie Pattern modifizieren?">
<node CREATED="1518838298468" ID="ID_753244692" MODIFIED="1518838305407" TEXT="mu&#xdf; &#xfc;berschreiben">
<icon BUILTIN="smily_bad"/>
</node>
<node CREATED="1518838306835" FOLDED="true" ID="ID_1187474816" MODIFIED="1525124214993" TEXT="overwrite ist protected">
<icon BUILTIN="yes"/>
<node CREATED="1518838316762" ID="ID_375483047" MODIFIED="1518838388905" TEXT="aus gutem Grund">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...denn durch overwrite kann man denormalisierte Pattern erzeugen.
    </p>
    <p>
      Also mu&#223; jeder Anwender dieser Funktion sicherstellen, da&#223; dies
    </p>
    <p>
      entweder nicht passieren kann, oder explizit normalise() aufrufen.
    </p>
  </body>
</html></richcontent>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
<node CREATED="1518838372771" ID="ID_1787971906" MODIFIED="1518838384249" TEXT="das soll in der Schachtel bleiben">
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#338800" CREATED="1518838394663" ID="ID_1070204465" MODIFIED="1518839504321" TEXT="der Resolver mu&#xdf; das f&#xfc;r uns machen">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1517507036433" ID="ID_921121750" MODIFIED="1518487921069" TEXT="zieht die Antwort bei ersem Erfolg">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1518051766018" ID="ID_1447232325" MODIFIED="1518487921069" TEXT="brauche neue Resolver-Primitive">
<arrowlink COLOR="#50546a" DESTINATION="ID_1272905286" ENDARROW="Default" ENDINCLINATION="394;1164;" ID="Arrow_ID_396720500" STARTARROW="None" STARTINCLINATION="1558;-33;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1518055049276" FOLDED="true" ID="ID_1963190796" MODIFIED="1561827482927" TEXT="Fallunterscheidung">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1518055059890" FOLDED="true" ID="ID_1240967474" MODIFIED="1561827469155" TEXT="Standard: totale Coverage!">
<icon BUILTIN="button_ok"/>
<node CREATED="1518055394000" ID="ID_1230502265" MODIFIED="1518487921069" TEXT="alles bis auf Komponente selber mu&#xdf; best&#xe4;tigt sein">
<icon BUILTIN="info"/>
</node>
<node CREATED="1518215016983" ID="ID_643091836" MODIFIED="1518487921069" TEXT="ggfs anzuh&#xe4;ngende KOmponente nicht Teil der L&#xf6;sung"/>
</node>
<node COLOR="#338800" CREATED="1518055089510" FOLDED="true" ID="ID_1374209563" MODIFIED="1561827469155" TEXT="Create-Fall">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1518055442607" ID="ID_93235547" MODIFIED="1518487921069" TEXT="partielle coverage erlauben">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1518055453981" FOLDED="true" ID="ID_1927049673" MODIFIED="1561827469136" TEXT="Frage: totale Neuerzeugung unterst&#xfc;tzen?">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...das w&#252;rde bedeuten, da&#223; man sogar ein neues Hauptfenster erzeugt.
    </p>
    <p>
      Also in diesem Fall w&#252;rde &#252;berhaupt nichts mit dem existierenden UI matchen...
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="help"/>
<node CREATED="1518145517036" ID="ID_272248384" MODIFIED="1518487921069" TEXT="ja">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1518145521684" ID="ID_17194778" MODIFIED="1518487921069" TEXT="ungedeckter Pfad mu&#xdf; explizit sein">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1518055400412" ID="ID_1517580371" MODIFIED="1518487921069">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Komponente <i>falls n&#246;tig</i>&#160;anh&#228;ngen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1518215051242" FOLDED="true" ID="ID_1984395087" MODIFIED="1561827469155" TEXT="Ablauf-Logik">
<icon BUILTIN="button_ok"/>
<node CREATED="1518213040236" FOLDED="true" ID="ID_1048898871" MODIFIED="1561827469136" STYLE="bubble" TEXT="L&#xe4;ngenbeschrenkung">
<node BACKGROUND_COLOR="#b6c6f7" CREATED="1518213142062" ID="ID_1389235831" MODIFIED="1518487921069" TEXT="next"/>
</node>
<node CREATED="1518213047987" ID="ID_1894250137" MODIFIED="1518487921069" STYLE="bubble" TEXT="Klausel l&#xf6;sen"/>
<node BACKGROUND_COLOR="#efedc4" CREATED="1518213057553" FOLDED="true" ID="ID_1840655064" MODIFIED="1561827469136" STYLE="bubble" TEXT="Standard/Create?">
<arrowlink COLOR="#4976b7" DESTINATION="ID_1713281564" ENDARROW="Default" ENDINCLINATION="-214;-32;" ID="Arrow_ID_1015037061" STARTARROW="None" STARTINCLINATION="-133;64;"/>
<node CREATED="1518213079183" FOLDED="true" ID="ID_533214872" MODIFIED="1525124214993" TEXT="Standard">
<node BACKGROUND_COLOR="#efedc4" CREATED="1518213086862" FOLDED="true" ID="ID_6239293" MODIFIED="1525124214993" TEXT="totalyCovered?">
<node CREATED="1518213134767" FOLDED="true" ID="ID_775708906" MODIFIED="1525124214993" TEXT="nein?">
<node BACKGROUND_COLOR="#b6c6f7" CREATED="1518213142062" ID="ID_1245747447" MODIFIED="1518487921069" TEXT="next"/>
</node>
<node CREATED="1518213159380" FOLDED="true" ID="ID_213462597" MODIFIED="1525124214993" TEXT="ja?">
<node CREATED="1518213162419" ID="ID_109286322" MODIFIED="1518487921070" TEXT="ggfs Elmnt anhngn"/>
<node BACKGROUND_COLOR="#efbab6" CREATED="1518213219564" ID="ID_1188365373" MODIFIED="1518487921070" TEXT="move(Solution)"/>
</node>
</node>
</node>
<node CREATED="1518213235362" FOLDED="true" ID="ID_977251605" MODIFIED="1525124214994" TEXT="Create">
<node BACKGROUND_COLOR="#efedc4" CREATED="1518213253255" FOLDED="true" ID="ID_1769779207" MODIFIED="1525124214994" TEXT="not empty?">
<node CREATED="1518213302080" FOLDED="true" ID="ID_1846077322" MODIFIED="1525124214993" TEXT="ja?">
<node CREATED="1518213162419" ID="ID_51616856" MODIFIED="1518487921070" TEXT="ggfs Elmnt anhngn"/>
<node BACKGROUND_COLOR="#efbab6" CREATED="1518213219564" ID="ID_1352698993" MODIFIED="1518487921070" TEXT="move(Solution)"/>
</node>
<node CREATED="1518213331788" FOLDED="true" ID="ID_1239103431" MODIFIED="1525124214994" TEXT="nein?">
<node BACKGROUND_COLOR="#efedc4" CREATED="1518213337332" FOLDED="true" ID="ID_901388238" MODIFIED="1525124214994" TEXT="Klausel explizit?">
<node BACKGROUND_COLOR="#efbab6" CREATED="1518213440630" ID="ID_1608293138" MODIFIED="1518213851674" STYLE="bubble" TEXT="copy(Klausel)">
<edge COLOR="#808080" STYLE="bezier" WIDTH="thin"/>
</node>
<node CREATED="1518213451860" FOLDED="true" ID="ID_1678375217" MODIFIED="1525124214993" TEXT="Wildcards">
<node BACKGROUND_COLOR="#b6c6f7" CREATED="1518213469114" ID="ID_239069612" MODIFIED="1518487921070" TEXT="next"/>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1518145595274" FOLDED="true" ID="ID_1539200142" MODIFIED="1561827482927" TEXT="in jedem Fall korrekte L&#xe4;nge sicherstellen">
<icon BUILTIN="button_ok"/>
<node CREATED="1518212471553" FOLDED="true" ID="ID_1821401889" MODIFIED="1561827469155" TEXT="Frage: wann?">
<node CREATED="1518212565636" ID="ID_1223770753" MODIFIED="1518487921070" TEXT="L&#xf6;sen einer zu kurzen Klausel bringt nix">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...weil wir keinen Zustand sammeln
    </p>
    <p>
      und daher jede Klausel von Grund auf neu l&#246;sen.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1518212627092" ID="ID_1184420038" MODIFIED="1518487921070" TEXT="...also kann man die sofort wegsortieren"/>
</node>
<node CREATED="1518212670854" FOLDED="true" ID="ID_1003923585" MODIFIED="1561827469155" TEXT="Frage: zu lange Klauseln?">
<icon BUILTIN="stop-sign"/>
<node CREATED="1518212721599" ID="ID_1131508916" MODIFIED="1518487921070" TEXT="...w&#xe4;ren nachtr&#xe4;glich unter Ziel-Level zu k&#xfc;rzen">
<icon BUILTIN="info"/>
</node>
<node CREATED="1518212683340" ID="ID_1968312736" MODIFIED="1518487921070">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <i>k&#246;nnte</i>&#160;man zulassen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="hourglass"/>
</node>
<node CREATED="1518212772256" ID="ID_1238641704" MODIFIED="1518487921070" TEXT="YAGNI">
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1518212791566" FOLDED="true" ID="ID_1644096915" MODIFIED="1561827469156" TEXT="Ergebnis">
<icon BUILTIN="forward"/>
<node CREATED="1518212828593" ID="ID_351911326" MODIFIED="1518487921070" TEXT="gegeben: depth, auf welcher Zielelement aufgesetzt wird">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
<node CREATED="1518212871379" ID="ID_451555590" MODIFIED="1518487921070" TEXT="len &gt;= depth"/>
<node CREATED="1518212959895" ID="ID_930933486" MODIFIED="1518487921070" TEXT="len &lt;= depth+1"/>
</node>
</node>
<node COLOR="#338800" CREATED="1518145778249" FOLDED="true" ID="ID_462394658" MODIFIED="1561827482927" TEXT="F&#xe4;lle geschickt zusammenfassen (duplikate Aktionen)">
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#efedc4" CREATED="1518213086862" FOLDED="true" ID="ID_1713281564" MODIFIED="1561827469156" STYLE="bubble">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      not empty? UND
    </p>
    <p>
      Create ODER totalyCovered?
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#4976b7" DESTINATION="ID_1713281564" ENDARROW="Default" ENDINCLINATION="-214;-32;" ID="Arrow_ID_1015037061" SOURCE="ID_1840655064" STARTARROW="None" STARTINCLINATION="-133;64;"/>
<node CREATED="1518213159380" FOLDED="true" ID="ID_1113830798" MODIFIED="1561827469137" TEXT="ja?">
<node CREATED="1518213162419" ID="ID_621215851" MODIFIED="1518487921070" TEXT="ggfs Elmnt anhngn"/>
<node BACKGROUND_COLOR="#efbab6" CREATED="1518213219564" ID="ID_1128021646" MODIFIED="1518487921070" TEXT="move(Solution)"/>
</node>
<node CREATED="1518213134767" FOLDED="true" ID="ID_679511688" MODIFIED="1561827469137" TEXT="nein?">
<node BACKGROUND_COLOR="#efedc4" CREATED="1518213337332" FOLDED="true" ID="ID_1046262927" MODIFIED="1525124214998" TEXT="Create UND Klausel explizit?">
<node CREATED="1518214337116" FOLDED="true" ID="ID_1397265252" MODIFIED="1525124214998" TEXT="ja">
<node BACKGROUND_COLOR="#efbab6" CREATED="1518213440630" ID="ID_343251054" MODIFIED="1518213851674" STYLE="bubble" TEXT="copy(Klausel)">
<edge COLOR="#808080" STYLE="bezier" WIDTH="thin"/>
</node>
</node>
<node CREATED="1518213451860" FOLDED="true" ID="ID_1801836476" MODIFIED="1525124214998" TEXT="sonst">
<node BACKGROUND_COLOR="#b6c6f7" CREATED="1518213469114" ID="ID_955201730" MODIFIED="1518487921070" TEXT="next"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1517507082826" ID="ID_1177191870" MODIFIED="1518487921070" TEXT="R&#xfc;ckgabe per Value">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1517505737977" FOLDED="true" ID="ID_1981924615" MODIFIED="1561827483831" TEXT="Unit-Test">
<arrowlink COLOR="#465888" DESTINATION="ID_957265584" ENDARROW="Default" ENDINCLINATION="351;-62;" ID="Arrow_ID_1922023705" STARTARROW="None" STARTINCLINATION="-226;69;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1518312788963" ID="ID_1715641481" MODIFIED="1518487921070" TEXT="brauche Setup">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1518312794346" FOLDED="true" ID="ID_98359518" MODIFIED="1561827482927" TEXT="Schreibweise f&#xfc;r create-Klauseln im Test">
<icon BUILTIN="button_ok"/>
<node CREATED="1518317872064" ID="ID_230463403" MODIFIED="1518487921070" TEXT="verwende normale Koordinaten-Notation">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1518317892197" ID="ID_20769359" MODIFIED="1518487921070" TEXT="forward-Definition des Konversionsoperators"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1519347191513" ID="ID_1058958215" MODIFIED="1561827465124" TEXT="Zugang zum LocationSolver">
<arrowlink COLOR="#33a0d6" DESTINATION="ID_1459009906" ENDARROW="Default" ENDINCLINATION="766;0;" ID="Arrow_ID_393354619" STARTARROW="None" STARTINCLINATION="-338;0;"/>
<linktarget COLOR="#3391c4" DESTINATION="ID_1058958215" ENDARROW="Default" ENDINCLINATION="356;0;" ID="Arrow_ID_1958186293" SOURCE="ID_782466951" STARTARROW="None" STARTINCLINATION="40;166;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1519347295051" ID="ID_846050459" MODIFIED="1522808896717" TEXT="im realen UI">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1519347289508" FOLDED="true" ID="ID_723600288" MODIFIED="1561827483831" TEXT="setup f&#xfc;r Unit-Test">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1522883291235" ID="ID_543936991" MODIFIED="1522883304073" TEXT="GenNodeLocationQuery">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1522883297346" ID="ID_1901671292" MODIFIED="1522883303346" TEXT="darauf aufbauender Mock">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1519347266311" ID="ID_1347610352" MODIFIED="1561827465125" TEXT="Funktor-Anwendung implementieren">
<icon BUILTIN="button_ok"/>
<node CREATED="1522808910387" ID="ID_900668862" MODIFIED="1522808936078" TEXT="war Watschn-einfach">
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1522808920794" ID="ID_93861490" MODIFIED="1522808948322" TEXT="nachdem ich 14 Tage lang das DI-Framework umgebaut habe">
<icon BUILTIN="smiley-oh"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1517506090553" HGAP="59" ID="ID_1416624438" MODIFIED="1531584013571" TEXT="UILocationSolver" VSHIFT="-20">
<icon BUILTIN="button_ok"/>
<node CREATED="1517506104183" ID="ID_798223993" MODIFIED="1522808764330" STYLE="fork" TEXT="ansiedeln im ViewLocator">
<node CREATED="1522808738035" ID="ID_1951089115" MODIFIED="1522808764329" TEXT="als Service exportieren"/>
<node CREATED="1522808746394" ID="ID_1564866088" MODIFIED="1522808764329" TEXT="selber mit dem Navigator hinterlegt"/>
</node>
<node COLOR="#338800" CREATED="1517506116502" ID="ID_1945600026" MODIFIED="1522808819872" TEXT="#1127 UILocationSolver">
<linktarget COLOR="#8b9e9d" DESTINATION="ID_1945600026" ENDARROW="None" ENDINCLINATION="341;-39;" ID="Arrow_ID_360373706" SOURCE="ID_606655578" STARTARROW="Default" STARTINCLINATION="-302;83;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1517506590574" ID="ID_1459009906" MODIFIED="1522808712178" TEXT="hinten herum verdrahten">
<linktarget COLOR="#33a0d6" DESTINATION="ID_1459009906" ENDARROW="Default" ENDINCLINATION="766;0;" ID="Arrow_ID_393354619" SOURCE="ID_1058958215" STARTARROW="None" STARTINCLINATION="-338;0;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1517508464896" ID="ID_877224411" MODIFIED="1522938360510" TEXT="generische Aufruf-Schnittstelle">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1517506116502" ID="ID_957265584" MODIFIED="1518487921070" TEXT="eigenst&#xe4;ndiger Unit-Test">
<arrowlink COLOR="#465888" DESTINATION="ID_718086573" ENDARROW="Default" ENDINCLINATION="-185;-461;" ID="Arrow_ID_1844529849" STARTARROW="None" STARTINCLINATION="-598;29;"/>
<linktarget COLOR="#465888" DESTINATION="ID_957265584" ENDARROW="Default" ENDINCLINATION="351;-62;" ID="Arrow_ID_1922023705" SOURCE="ID_1981924615" STARTARROW="None" STARTINCLINATION="-226;69;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1506181864011" ID="ID_615395774" MODIFIED="1518487921070" TEXT="Alternativen">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1515631663265" ID="ID_1149231463" MODIFIED="1518487921070" TEXT="ODER-Operator">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1517970584075" ID="ID_1155445128" MODIFIED="1533608413740" TEXT="Syntax / DSL-Technik">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1517970606791" ID="ID_1375091296" MODIFIED="1561827465125" TEXT="Operatoren haben feste Pr&#xe4;zedenz">
<node CREATED="1517970623613" ID="ID_271068747" MODIFIED="1518487921070" TEXT="OR bindet st&#xe4;rker als Zuweisung"/>
<node CREATED="1517970650217" ID="ID_1384466296" MODIFIED="1518487921070" TEXT="LocationSpec = ( UICoord::Builder || UICoord)"/>
</node>
<node CREATED="1517970828105" ID="ID_803913203" MODIFIED="1561827465126" TEXT="m&#xf6;gliche Alternativen">
<icon BUILTIN="info"/>
<node CREATED="1517970849142" FOLDED="true" ID="ID_1434826323" MODIFIED="1561827483831" TEXT="Komma-Operator verwenden">
<icon BUILTIN="button_cancel"/>
<node CREATED="1517970857389" ID="ID_815195379" MODIFIED="1518487921070" TEXT="bindet schw&#xe4;cher als Zuweisung"/>
<node CREATED="1517970865180" ID="ID_349717845" MODIFIED="1518487921070" TEXT="wird folglich auf LocationSpec definiert"/>
<node CREATED="1517971057730" ID="ID_1385090987" MODIFIED="1518487921070" TEXT="somit einfach zu implementieren"/>
<node CREATED="1517971070856" ID="ID_1569393703" MODIFIED="1518487921070" TEXT="sauber aus Sicht der Code-Organisation"/>
<node CREATED="1517971082198" ID="ID_821482262" MODIFIED="1518487921070" TEXT="aber semantisch irref&#xfc;hrend">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Komma hei&#223;t &quot;and then&quot; in der Logikprogrammierung
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="smily_bad"/>
</node>
</node>
<node CREATED="1517970882714" FOLDED="true" ID="ID_1615423213" MODIFIED="1561827483832" TEXT="Builder mu&#xdf; bereits mit OR umgehen k&#xf6;nnen">
<icon BUILTIN="button_cancel"/>
<node CREATED="1517971040980" ID="ID_1600012363" MODIFIED="1518487921070" TEXT="vermischt die Themen">
<icon BUILTIN="smily_bad"/>
</node>
<node CREATED="1517971023823" ID="ID_1961997914" MODIFIED="1518487921070" TEXT="verkehrt die Definitions-Reihenfolge"/>
</node>
<node CREATED="1517970999466" FOLDED="true" ID="ID_1299498209" MODIFIED="1561827483832" TEXT="freier OR-Operator im DSL-Kontext definiert">
<linktarget COLOR="#55618e" DESTINATION="ID_1299498209" ENDARROW="Default" ENDINCLINATION="115;1000;" ID="Arrow_ID_1706569145" SOURCE="ID_1413272427" STARTARROW="None" STARTINCLINATION="561;-39;"/>
<node CREATED="1517971299201" ID="ID_1350388784" MODIFIED="1518487921070" TEXT="Builder || UICoord  -&gt; LocationRule(LocationClause) . add(LocationClause)"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1519355632354" ID="ID_1664602603" MODIFIED="1533608413744" TEXT="wo entsteht die LocationRule?">
<linktarget COLOR="#647b96" DESTINATION="ID_1664602603" ENDARROW="Default" ENDINCLINATION="1374;300;" ID="Arrow_ID_947721778" SOURCE="ID_241646491" STARTARROW="None" STARTINCLINATION="298;36;"/>
<icon BUILTIN="help"/>
<node CREATED="1519355656423" ID="ID_1547517953" MODIFIED="1561827465128" TEXT="in der LocationSpec">
<node CREATED="1520207968932" ID="ID_1172076522" MODIFIED="1520207982341" TEXT="wenn eine einfache Ortsangabe gegeben ist"/>
<node CREATED="1520208008190" ID="ID_874779146" MODIFIED="1520208019664" TEXT="dann wird aus dem Builder inline eine LocationClause gemacht"/>
</node>
<node CREATED="1519355666797" ID="ID_1270620528" MODIFIED="1561827465128" TEXT="vor der LocationSpec">
<node CREATED="1520207985113" ID="ID_372230629" MODIFIED="1520208000019" TEXT="wenn mehrere Angaben per OR verbunden werden"/>
<node CREATED="1520208026027" ID="ID_409650611" MODIFIED="1520208035510" TEXT="dann passiert die Umwandlung bereits im operator OR"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1518312758758" ID="ID_675085959" MODIFIED="1518835387835" TEXT="Schreibweise f&#xfc;r create-Klauseln">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1515631675752" ID="ID_1586757410" MODIFIED="1518835393496" TEXT="Repr&#xe4;sentation als Liste von UICoord">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1515631690390" ID="ID_783849930" MODIFIED="1518835396708" TEXT="&quot;committed choice&quot; L&#xf6;sungsmechanismus">
<arrowlink COLOR="#8b9e9d" DESTINATION="ID_606655578" ENDARROW="Default" ENDINCLINATION="-152;43;" ID="Arrow_ID_1433975114" STARTARROW="None" STARTINCLINATION="213;-13;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1506181842670" ID="ID_229712638" MODIFIED="1518487921070" TEXT="Allocator">
<icon BUILTIN="flag-yellow"/>
<node COLOR="#338800" CREATED="1515631726569" ID="ID_1252372720" MODIFIED="1529076581800" TEXT="wie mit ViewLocator-Service verdrahten?">
<linktarget COLOR="#614483" DESTINATION="ID_1252372720" ENDARROW="Default" ENDINCLINATION="-203;-10;" ID="Arrow_ID_1759099248" SOURCE="ID_1454085887" STARTARROW="Default" STARTINCLINATION="-373;-23;"/>
<icon BUILTIN="help"/>
<node CREATED="1515803834302" ID="ID_1965813896" MODIFIED="1518487921070" TEXT="&#xfc;berhaupt nicht auf DSL-Ebene"/>
<node CREATED="1515803844276" ID="ID_512581752" MODIFIED="1518487921070">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      nur &quot;hinten herum&quot; &#252;ber die verwendete <b>LocationQuery</b>
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1515631909081" ID="ID_1875881401" MODIFIED="1518487921071" TEXT="Aufrufe auf ViewLocator-API &#xfc;bersetzen">
<icon BUILTIN="flag-yellow"/>
<node COLOR="#338800" CREATED="1523118005620" ID="ID_1743128010" MODIFIED="1529076770399" TEXT="kl&#xe4;ren: auf welches API nun wirklich">
<linktarget COLOR="#74d8d6" DESTINATION="ID_1743128010" ENDARROW="Default" ENDINCLINATION="205;0;" ID="Arrow_ID_1437087367" SOURCE="ID_539031017" STARTARROW="None" STARTINCLINATION="205;0;"/>
<linktarget COLOR="#ef9f88" DESTINATION="ID_1743128010" ENDARROW="Default" ENDINCLINATION="-2099;1258;" ID="Arrow_ID_175864704" SOURCE="ID_1335551290" STARTARROW="Default" STARTINCLINATION="-20;-1838;"/>
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1529076725873" HGAP="102" ID="ID_995038834" MODIFIED="1529076865273" TEXT="Es ist das ElementAccess-API" VSHIFT="-7">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1529076845081" HGAP="113" ID="ID_1049440738" MODIFIED="1529076871065" TEXT="&quot;irgendwo&quot; gibts dazu das ElemAccessDir" VSHIFT="-30">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1523117208251" FOLDED="true" HGAP="27" ID="ID_1210359211" MODIFIED="1561827465133" TEXT="ist das nicht furchbar verschwenderisch...?" VSHIFT="4">
<linktarget COLOR="#abc5e4" DESTINATION="ID_1210359211" ENDARROW="Default" ENDINCLINATION="-217;-87;" ID="Arrow_ID_1226100946" SOURCE="ID_1972679538" STARTARROW="None" STARTINCLINATION="-187;427;"/>
<icon BUILTIN="help"/>
<node CREATED="1523117293583" ID="ID_1129944871" MODIFIED="1523117297666" TEXT="schrittweise...">
<node CREATED="1523117228552" ID="ID_11867965" MODIFIED="1523117242297" TEXT="wir verwenden erst einen Resolver"/>
<node CREATED="1523117242910" ID="ID_260255550" MODIFIED="1523117250656" TEXT="dabei wird der Pfad aufgedr&#xf6;selt"/>
<node CREATED="1523117251365" ID="ID_1344883302" MODIFIED="1523117269374" TEXT="dann das Ergebnis in einen neuen Pfad kopiert"/>
<node CREATED="1523117269970" ID="ID_1283489925" MODIFIED="1523117277269" TEXT="und dieser mu&#xdf; dann wieder aufgedr&#xf6;selt werden"/>
<node CREATED="1523117278161" ID="ID_1145162087" MODIFIED="1523117288019" TEXT="um das das Ergebnis auch umzusetzen"/>
</node>
<node CREATED="1523117332841" ID="ID_58827305" MODIFIED="1523117335261" TEXT="effektiv">
<node CREATED="1523117336257" ID="ID_1661836054" MODIFIED="1523117354618" TEXT="zwei Traversierungen der realen UI-Struktur"/>
<node CREATED="1523117355966" ID="ID_901586822" MODIFIED="1533608413745" TEXT="die sich unterscheiden">
<node CREATED="1523117363405" ID="ID_415134573" MODIFIED="1523117377647" TEXT="die erste ist eine depth-first Suche (aufwendig)"/>
<node CREATED="1523117378307" ID="ID_228369164" MODIFIED="1523117399516" TEXT="die zweite steigt zum L&#xf6;sungspunkt der ersten nochmal ab"/>
<node CREATED="1523117436451" ID="ID_1526973711" MODIFIED="1523117445502" TEXT="und baut dort i.d.R weitere Elemente an"/>
</node>
</node>
<node CREATED="1523117416901" ID="ID_666361594" MODIFIED="1523117419705" TEXT="Optimierung">
<node CREATED="1523117421189" ID="ID_1083685803" MODIFIED="1523117433679" TEXT="den vollen Kontext von der L&#xf6;sung zur zweiten Traversierung durchreichen"/>
<node CREATED="1523117477813" ID="ID_5382937" MODIFIED="1533608413745" TEXT="Problem... nicht alles sind L&#xf6;sungen">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1523117488172" ID="ID_1947043295" MODIFIED="1523117492743" TEXT="es gibt zwei F&#xe4;lle"/>
<node CREATED="1523117493427" ID="ID_391352800" MODIFIED="1523117501086" TEXT="nur in einem Fall wird eine L&#xf6;sung konstruiert"/>
<node CREATED="1523117501722" ID="ID_1104653648" MODIFIED="1523117510604" TEXT="im anderen Fall wird der Pfad direkt interpretiert"/>
</node>
<node CREATED="1523117563481" ID="ID_1561615666" MODIFIED="1533608413746" TEXT="Einspar-Potential">
<node CREATED="1523117578175" ID="ID_17072072" MODIFIED="1523117605679" TEXT="erneuter Einstieg"/>
<node CREATED="1523117606179" ID="ID_1306679723" MODIFIED="1523117618878" TEXT="i.d.R. Window - Panel - View"/>
<node CREATED="1523117625392" ID="ID_1699581450" MODIFIED="1523117630964" TEXT="vermutlich gering gegen&#xfc;ber Suche"/>
</node>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1523117634200" ID="ID_249271137" MODIFIED="1523117761784" TEXT="Fazit">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node CREATED="1523117637807" ID="ID_1136409597" MODIFIED="1523117654081" TEXT="Optimierungs-Gewinn nicht offensichtlich, vermutlich gering"/>
<node CREATED="1523117656380" ID="ID_375543215" MODIFIED="1523117676286" TEXT="Optimierung w&#xfc;rde die Schnittstelle komplex machen"/>
<node CREATED="1523117678010" ID="ID_988976556" MODIFIED="1523117691307" TEXT="die Schnittstelle ist ohnehin schon nicht leicht zu verstehen"/>
<node CREATED="1523117735746" ID="ID_1310906003" MODIFIED="1523117755013">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      klassischer Fall von &#187;<b>premature optimisation</b>&#171;
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1519354320645" FOLDED="true" ID="ID_431727101" MODIFIED="1519354329172" TEXT="Verh&#xe4;ltnis zur DSL">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1519354355113" ID="ID_1466028228" MODIFIED="1519354361395" TEXT="die Aloc-Specs delegieren"/>
<node CREATED="1519354365423" ID="ID_1473090391" MODIFIED="1519354379881" TEXT="jede Aloc-Speck entspricht einem Service"/>
<node COLOR="#435e98" CREATED="1519354380677" ID="ID_1029266700" MODIFIED="1529076963809" TEXT="wer bietet diesen Service?">
<icon BUILTIN="help"/>
<node CREATED="1519355147108" ID="ID_1615393259" MODIFIED="1533608413746" TEXT="in Frage kommen">
<icon BUILTIN="info"/>
<node CREATED="1519355157603" ID="ID_1219922150" MODIFIED="1519355160662" TEXT="ViewLocator"/>
<node CREATED="1519355161347" ID="ID_560748249" MODIFIED="1519355167270" TEXT="Navigator"/>
<node CREATED="1519355186551" ID="ID_1807778011" MODIFIED="1519355191106" TEXT="PanelManager"/>
</node>
<node CREATED="1519355289985" ID="ID_239681113" MODIFIED="1519355336332" TEXT="ViewLocator == Dispatcher">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="idea"/>
</node>
<node COLOR="#990000" CREATED="1519355201077" HGAP="31" ID="ID_539031017" MODIFIED="1529076927655" VSHIFT="13">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      wer interpretiert
    </p>
    <p>
      UI-Koordinaten
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#74d8d6" DESTINATION="ID_1743128010" ENDARROW="Default" ENDINCLINATION="205;0;" ID="Arrow_ID_1437087367" STARTARROW="None" STARTINCLINATION="205;0;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="help"/>
</node>
<node CREATED="1529076931278" ID="ID_1289639668" MODIFIED="1533608413746" TEXT="ElemAccessDir">
<icon BUILTIN="forward"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1529076946755" ID="ID_104892802" MODIFIED="1529076957961" TEXT="derzeit noch nicht implementierbar">
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1519354420343" HGAP="28" ID="ID_17801598" MODIFIED="1533685336238" TEXT="Varianten" VSHIFT="21">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1519354443485" ID="ID_1474832227" MODIFIED="1533608413747" TEXT="always create">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1519354760313" ID="ID_321705251" MODIFIED="1561827465133" TEXT="Umgang mit Duplikaten">
<linktarget COLOR="#807e9b" DESTINATION="ID_321705251" ENDARROW="Default" ENDINCLINATION="127;-96;" ID="Arrow_ID_1030149985" SOURCE="ID_1792932496" STARTARROW="None" STARTINCLINATION="390;-188;"/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1519354813458" ID="ID_168710453" MODIFIED="1519354818789" TEXT="beiseite schieben"/>
<node CREATED="1519354819473" ID="ID_996615547" MODIFIED="1519354824572" TEXT="Tab innerhalb erzeugen"/>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1519354769960" ID="ID_778018274" MODIFIED="1533685343441" TEXT="Festlegung: was sind die Namen?">
<linktarget COLOR="#2b4283" DESTINATION="ID_778018274" ENDARROW="Default" ENDINCLINATION="-1752;0;" ID="Arrow_ID_1022345699" SOURCE="ID_377787861" STARTARROW="None" STARTINCLINATION="795;544;"/>
<linktarget COLOR="#5260a0" DESTINATION="ID_778018274" ENDARROW="Default" ENDINCLINATION="-1217;51;" ID="Arrow_ID_597388409" SOURCE="ID_266745032" STARTARROW="None" STARTINCLINATION="686;0;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node CREATED="1519357238119" ID="ID_490731063" MODIFIED="1519357248970" TEXT="Namen sind Platzhalter-Symbole"/>
<node CREATED="1519357249702" ID="ID_1135871152" MODIFIED="1519357313101">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      um eine <i>Position</i>&#160;zu kennzeichnen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1519357262332" ID="ID_1067286247" MODIFIED="1519357267471" TEXT="sie sind generisch"/>
<node CREATED="1519357271642" ID="ID_693336166" MODIFIED="1519357284653" TEXT="werden lokal verstanden"/>
<node CREATED="1519357285265" ID="ID_1314676655" MODIFIED="1529077188628" TEXT="Schl&#xfc;ssel-Schlo&#xdf;-Prinzip">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1519354459978" ID="ID_1281610608" MODIFIED="1519354465459" TEXT="create or retrieve">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1519354633610" ID="ID_205066693" MODIFIED="1533608413750" TEXT="welches Limit ist notwendig?">
<icon BUILTIN="help"/>
<node CREATED="1519354649560" ID="ID_1983794575" MODIFIED="1561827465134" TEXT="globales Limit">
<node CREATED="1519354660903" ID="ID_1601244663" MODIFIED="1519354670073" TEXT="Suche mit Z&#xe4;hlen"/>
<node CREATED="1519354670949" ID="ID_803401695" MODIFIED="1519354673249" TEXT="Registry"/>
</node>
<node CREATED="1519354677373" ID="ID_1968452476" MODIFIED="1561827465134" TEXT="pro Fenster">
<node CREATED="1519354685828" ID="ID_966759751" MODIFIED="1519354691638" TEXT="genau wie global"/>
</node>
<node CREATED="1519354697578" ID="ID_1780825164" MODIFIED="1561827465134" TEXT="pro Endpunkt">
<node CREATED="1519354849469" ID="ID_1792932496" MODIFIED="1523752503840" TEXT="Variante des create-Mechanismus">
<arrowlink COLOR="#807e9b" DESTINATION="ID_321705251" ENDARROW="Default" ENDINCLINATION="127;-96;" ID="Arrow_ID_1030149985" STARTARROW="None" STARTINCLINATION="390;-188;"/>
</node>
<node CREATED="1519354723262" ID="ID_1902026620" MODIFIED="1519354929283" TEXT="erbt dessen m&#xf6;gliche Auspr&#xe4;gung"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1506181875481" ID="ID_941513985" MODIFIED="1518487921071" TEXT="AllocatorSpec">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1515631937958" FOLDED="true" ID="ID_1051141312" MODIFIED="1561827465140" TEXT="partielle Funktions-Applikation">
<icon BUILTIN="button_ok"/>
<node CREATED="1515725638196" ID="ID_919161877" MODIFIED="1525124215003" TEXT="geht das generisch...?">
<icon BUILTIN="help"/>
<node CREATED="1515725146909" ID="ID_1363811781" MODIFIED="1515725162527" TEXT="lib::meta::func::PApply"/>
<node CREATED="1515725168850" ID="ID_612007718" MODIFIED="1515725199322" TEXT="analog zum applyLast() helper"/>
<node CREATED="1515725368856" ID="ID_194935085" MODIFIED="1515725407815" TEXT="PApply&lt;SIG, ARGS&gt;::bindBack"/>
<node CREATED="1515725202278" ID="ID_1268597725" MODIFIED="1515725220567" TEXT="&quot;restliche Argumente&quot; abgreifen"/>
<node CREATED="1515725440814" ID="ID_848138398" MODIFIED="1515725457544" TEXT="daraus Funktion fabrizieren, welche diese akzeptiert"/>
<node CREATED="1515725468723" ID="ID_1514420105" MODIFIED="1515725488084" TEXT="keine klassische partielle Applikation..."/>
<node CREATED="1515725488928" ID="ID_1084170574" MODIFIED="1515725505066" TEXT="sonder eine Art non-Standard currying"/>
</node>
<node CREATED="1515725713155" ID="ID_1250695567" MODIFIED="1525124215004" TEXT="w&#xfc;rde schon gehen...">
<icon BUILTIN="idea"/>
<node CREATED="1515725719930" ID="ID_746038986" MODIFIED="1515725729012" TEXT="Aber man bekommt komplexere AlocSpec-Typen"/>
<node CREATED="1515726089841" ID="ID_527144420" MODIFIED="1576282358115" TEXT="der harte (technische) Teil ist bereits implementiert...">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      n&#228;mlich in lib::meta::func::PApply::bindBack
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1515725834771" ID="ID_403863327" MODIFIED="1515725871768" TEXT="variadisch Template-Argumente">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1515725847329" ID="ID_1980343962" MODIFIED="1515725874461" TEXT="Wichtig: im ctor (Builder) statisch asserten">
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#338800" CREATED="1515726221600" ID="ID_1657507656" MODIFIED="1525124215006" TEXT="Implementierung">
<icon BUILTIN="button_ok"/>
<node CREATED="1515726234742" ID="ID_95404514" MODIFIED="1533608413752" TEXT="Prinzip">
<node CREATED="1515726238061" ID="ID_1475189544" MODIFIED="1515726244416" TEXT="ctor nimmt beliebige Funktion"/>
<node CREATED="1515726245124" ID="ID_914794335" MODIFIED="1515726258014" TEXT="zerlegt und verifiziert Signatur"/>
<node CREATED="1515726258819" ID="ID_1930194336" MODIFIED="1561827465140" TEXT="generiert ein Lambda">
<node CREATED="1515726634601" ID="ID_41891466" MODIFIED="1515726639664" TEXT="geht das?">
<icon BUILTIN="help"/>
</node>
<node CREATED="1515726644600" ID="ID_1701085444" MODIFIED="1576282358115" TEXT="C++14">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      // generic lambda, operator() is a template with one parameter
    </p>
    <p>
      auto vglambda = [](auto printer) {
    </p>
    <p>
      &#160;&#160;&#160;&#160;return [=](auto&amp;&amp;... ts) // generic lambda, ts is a parameter pack
    </p>
    <p>
      &#160;&#160;&#160;&#160;{
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;printer(std::forward&lt;decltype(ts)&gt;(ts)...);
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;return [=] { printer(ts...); }; // nullary lambda (takes no parameters)
    </p>
    <p>
      &#160;&#160;&#160;&#160;};
    </p>
    <p>
      };
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node COLOR="#ef5d2b" CREATED="1515726754041" ID="ID_315893428" LINK="http://en.cppreference.com/w/cpp/language/lambda" MODIFIED="1515726793618" TEXT="cppreference..."/>
<node COLOR="#ef5d2b" CREATED="1515726774055" ID="ID_1076829685" LINK="https://stackoverflow.com/questions/25885893/how-to-create-a-variadic-generic-lambda" MODIFIED="1515726793620" TEXT="stackoverflow..."/>
</node>
<node CREATED="1515726268721" ID="ID_243053845" MODIFIED="1515726329213" TEXT="welches intern PApply aufruft"/>
</node>
<node CREATED="1515732350136" ID="ID_1294398139" MODIFIED="1533608413754" TEXT="technisch....">
<node COLOR="#a41e57" CREATED="1515732356319" HGAP="25" ID="ID_1071937152" MODIFIED="1515800950319" TEXT="Problem: generisches Lambda in std::function binden">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="broken-line"/>
</node>
<node CREATED="1515732383331" ID="ID_1688687565" MODIFIED="1515797049652">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Vermutung: mu&#223; Lambda <b>instantiieren</b>...
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1515797030493" ID="ID_973074141" MODIFIED="1561827465141" TEXT="Nein: es ist wohl ehr der R&#xfc;ckgabetyp">
<icon BUILTIN="button_ok"/>
<node CREATED="1515798991747" ID="ID_1053457138" MODIFIED="1515799030345" TEXT="Allocator erbt nur von function"/>
<node CREATED="1515799031197" ID="ID_516020279" MODIFIED="1515799045183" TEXT="Lambda liefert aber nur UICoord(UICoord)"/>
<node CREATED="1515799046027" ID="ID_1437287913" MODIFIED="1515799056910" TEXT="L&#xf6;sung: Allocator als reine Typedef">
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#338800" CREATED="1515801302955" ID="ID_208115762" MODIFIED="1561827465141" TEXT="Argument-&#xdc;bergabe">
<icon BUILTIN="button_ok"/>
<node CREATED="1515801313185" ID="ID_1411407565" MODIFIED="1515801322004" TEXT="Funktor bis in die Closure per Move"/>
<node CREATED="1515801324016" ID="ID_814347755" MODIFIED="1515801353352" TEXT="Closure an PApply per const&amp;  --&gt;  Binder erzeugen"/>
<node CREATED="1515801355124" ID="ID_1735797839" MODIFIED="1515801393059" TEXT="Lambda: Argumente in das Argument-Tupel per Move"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1515631948148" ID="ID_1460703660" MODIFIED="1518487921071" TEXT="Funktor generieren">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1515633963179" FOLDED="true" HGAP="-9" ID="ID_423312626" MODIFIED="1518487921071" TEXT="konkrete Bausteine" VSHIFT="34">
<icon BUILTIN="flag-yellow"/>
<node COLOR="#4d316d" CREATED="1515633990048" ID="ID_750345391" MODIFIED="1518487921071" TEXT="komplett auf abstrakter Ebene zu implementieren">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#435e98" CREATED="1515634030562" ID="ID_662195926" MODIFIED="1522939171648" TEXT="Frage: geht das wirklich?">
<icon BUILTIN="help"/>
<node CREATED="1522939129671" ID="ID_905794690" MODIFIED="1522939133057" TEXT="Ja"/>
<node CREATED="1522939133701" ID="ID_1855483555" MODIFIED="1522939138277" TEXT="fast">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1522939141372" ID="ID_767946441" MODIFIED="1522939169486" TEXT="wenn man &quot;Dependencies&quot; zul&#xe4;&#xdf;t">
<icon BUILTIN="idea"/>
<node CREATED="1522939154049" ID="ID_1331034331" MODIFIED="1522939163621" TEXT="LocationSolver"/>
<node CREATED="1522939164281" ID="ID_1465185092" MODIFIED="1522939166651" TEXT="Navigator"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1515634054990" HGAP="44" ID="ID_146987308" MODIFIED="1518487921071" TEXT="Struktur-L&#xf6;sung" VSHIFT="19">
<icon BUILTIN="flag-yellow"/>
<node COLOR="#338800" CREATED="1515634166656" ID="ID_760459550" MODIFIED="1518743424687" TEXT="UI-Coord-Builder">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1515634180942" ID="ID_1485314989" MODIFIED="1518487921071" TEXT="praktisch schon da">
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node COLOR="#990000" CREATED="1515634197876" ID="ID_731095389" MODIFIED="1518743462219" TEXT="Problem Asset-Tab...">
<icon BUILTIN="button_cancel"/>
<node CREATED="1515634208379" ID="ID_1341895683" MODIFIED="1518487921071" TEXT="Vermutung: auf backing service angewiesen"/>
<node CREATED="1518659373972" ID="ID_1782316588" MODIFIED="1518659386753" TEXT="ist eine Kontext-Auswertung/Bindung">
<icon BUILTIN="idea"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1518659396385" ID="ID_986224819" MODIFIED="1518659504863" TEXT="in den L&#xf6;sungsmechanismus zu integrieren">
<arrowlink COLOR="#967ea6" DESTINATION="ID_1831478029" ENDARROW="Default" ENDINCLINATION="-800;514;" ID="Arrow_ID_162294902" STARTARROW="None" STARTINCLINATION="693;-50;"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1515634249365" ID="ID_498582439" MODIFIED="1518487921071" TEXT="Allokator-Strategien">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1515634282345" ID="ID_788516837" MODIFIED="1518487921071" TEXT="kl&#xe4;ren, wer sie umsetzt">
<icon BUILTIN="yes"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1523752547477" ID="ID_1121433532" MODIFIED="1533608413756" TEXT="limitAllocation">
<icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1523752559939" ID="ID_597346628" MODIFIED="1529079670933" TEXT="umsetzen auf ElementAccess-API">
<linktarget COLOR="#97cad5" DESTINATION="ID_597346628" ENDARROW="Default" ENDINCLINATION="126;9;" ID="Arrow_ID_89575203" SOURCE="ID_1979012219" STARTARROW="None" STARTINCLINATION="567;-16;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1525567190247" ID="ID_42079899" MODIFIED="1561827465141" TEXT="Problem: API noch nicht vollst&#xe4;ndig">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1525567207940" FOLDED="true" HGAP="76" ID="ID_1154047307" MODIFIED="1561827483832" TEXT="wirklich zwei Zugriffe?" VSHIFT="-9">
<icon BUILTIN="help"/>
<node CREATED="1525567242728" ID="ID_408728922" MODIFIED="1525567256385" TEXT="Finden / Allozieren">
<icon BUILTIN="full-1"/>
</node>
<node CREATED="1525567257934" ID="ID_756598430" MODIFIED="1525567271113" TEXT="Zugang zu diesem Element">
<icon BUILTIN="full-2"/>
</node>
<node CREATED="1525567314774" FOLDED="true" HGAP="-80" ID="ID_1634864230" MODIFIED="1561827482928" TEXT="warum?" VSHIFT="65">
<edge STYLE="linear"/>
<node CREATED="1525567347850" ID="ID_314618181" MODIFIED="1525567352685" TEXT="DSL sauber halten"/>
<node CREATED="1525567353825" ID="ID_729394034" MODIFIED="1525567362044" TEXT="Element-Access erfordert Visitor"/>
<node CREATED="1525567420608" ID="ID_1865194597" MODIFIED="1525567450407" TEXT="erscheint sinnvoll vom API her">
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1525567432127" ID="ID_1190994966" MODIFIED="1528992332480" TEXT="aber d&#xe4;mlich in der Implementierung">
<icon BUILTIN="smily_bad"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1525567474513" FOLDED="true" HGAP="136" ID="ID_492657286" MODIFIED="1561827483832" TEXT="ElementAccess-API umbauen" VSHIFT="5">
<icon BUILTIN="button_ok"/>
<node CREATED="1529016810234" FOLDED="true" ID="ID_190701762" MODIFIED="1561827482928" TEXT="M&#xf6;glichkeiten">
<node CREATED="1528988155980" FOLDED="true" ID="ID_425314989" MODIFIED="1561827469156" TEXT="Variante-1">
<icon BUILTIN="full-1"/>
<node CREATED="1528988234950" ID="ID_1668042554" MODIFIED="1528988252512" TEXT="UI-Coord zur&#xfc;ckliefern"/>
<node CREATED="1528988263818" ID="ID_480404928" MODIFIED="1529016940289" TEXT="Element-Cache?"/>
<node CREATED="1529016904083" ID="ID_1517114370" MODIFIED="1529016934839" TEXT="API erweitern"/>
</node>
<node CREATED="1528988317699" FOLDED="true" ID="ID_1560503454" MODIFIED="1561827469156" TEXT="Variante-2 ">
<icon BUILTIN="full-2"/>
<node CREATED="1528988340425" ID="ID_1706382791" MODIFIED="1528988354569" TEXT="keine Erzeugung / Allokation"/>
<node CREATED="1528988355802" ID="ID_523121546" MODIFIED="1528988365328" TEXT="ElementAccess = reine Zugriffsfunktion"/>
<node CREATED="1528988379946" ID="ID_131306130" MODIFIED="1528988391702" TEXT="brauche anderweitige Abstraktion"/>
<node CREATED="1528988369596" ID="ID_1174830872" MODIFIED="1528988376583" TEXT="Allokator erzeugt anderweitig"/>
</node>
<node CREATED="1529016988678" FOLDED="true" ID="ID_1209500762" MODIFIED="1561827469156" TEXT="Variante-3">
<icon BUILTIN="full-3"/>
<node CREATED="1529017028938" ID="ID_359770283" MODIFIED="1529017068647" TEXT="Opaque Location Representation"/>
<node CREATED="1529017070019" ID="ID_57519695" MODIFIED="1529017101538" TEXT="Allocator-API darauf umstellen"/>
<node CREATED="1529017279135" ID="ID_707219104" MODIFIED="1529017285322" TEXT="(down)cast-Mechanismus"/>
</node>
<node CREATED="1529018080237" FOLDED="true" ID="ID_776753961" MODIFIED="1561827469156" TEXT="Variante-3b">
<icon BUILTIN="full-4"/>
<node CREATED="1529018093267" ID="ID_389715312" MODIFIED="1529018099078" TEXT="Hybrid-L&#xf6;sung"/>
<node CREATED="1529018100234" ID="ID_1628139323" MODIFIED="1529018119792">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      als <i>Subklasse</i>&#160;von UICoord
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1529018125015" ID="ID_740978949" MODIFIED="1529018137465" TEXT="f&#xfc;gt den Variant-Record und den Konverter hinzu"/>
</node>
</node>
<node CREATED="1529016854248" FOLDED="true" HGAP="37" ID="ID_1664191705" MODIFIED="1561827482928" TEXT="Abw&#xe4;gung" VSHIFT="5">
<node CREATED="1529016871262" ID="ID_957194065" MODIFIED="1529017825322" TEXT="Variante-2 verschiebt das Problem">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...denn das eigentliche Problem ist,
    </p>
    <p>
      da&#223; ich noch keinerlei Implementierung schreiben kann.
    </p>
    <p>
      Mithin schiebe ich mir Platzhalter von der linken in die rechte Tasche
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1529017693432" ID="ID_70956393" MODIFIED="1529018209759" TEXT="Variante-3 verwendet zwei Repr&#xe4;sentationen f&#xfc;r die gleiche Sache">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      und zwar f&#252;r die abstrahierte GUI-Location
    </p>
    <ul>
      <li>
        einmal symbolisch als UI-Koordinaten
      </li>
      <li>
        einmal opaque als eingekapselte L&#246;sung
      </li>
    </ul>
    <p>
      Und sowas ist verwirrend und verlockt gradezu, die Schachtel aufzumachen
    </p>
    <p>
      und an der Implementierung zu kleben
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1529018409007" ID="ID_1460094266" MODIFIED="1529018714798" TEXT="Variante-3b w&#xe4;re nur interessant als eigenst&#xe4;ndige Entit&#xe4;t">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...was <i>bis jetzt</i>&#160;nicht gegeben ist!
    </p>
    <p>
      Bis jetzt haben wir einen &quot;Durchlauf-Erhitzer&quot;: letztlich will man nur die Referenz
    </p>
    <p>
      auf das GUI-Element haben, und die dazwischenliegende symbolische Schicht
    </p>
    <p>
      dient nur der Konfiguration und L&#246;sungs-Suche.
    </p>
    <p>
      
    </p>
    <p>
      Wenn allerdings sp&#228;ter mal diese <b>UILocation</b>&#160;== bereits decodierte UI-Koordinaten
    </p>
    <p>
      ein eigenst&#228;ndiges Token wird, welches &#252;ber mehrere Schnittstellen hinweg geschoben wird,
    </p>
    <p>
      <i>dann und nur dann</i>&#160;w&#252;rde die zus&#228;tzliche API-Komplexit&#228;t Sinn machen.
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1529019621707" FOLDED="true" ID="ID_537306231" MODIFIED="1561827469156" TEXT="Beschlu&#xdf;">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node CREATED="1529019899294" ID="ID_514740736" MODIFIED="1529065532532" TEXT="Variante-3b wird als Option f&#xfc;r sp&#xe4;ter festgehalten"/>
<node CREATED="1529019931210" ID="ID_963819454" MODIFIED="1529065532532" TEXT="Variante-1 mit API-Erweiterung ist naheliegend"/>
<node CREATED="1529019962989" ID="ID_1964052993" MODIFIED="1529065532532">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      die <b>verfickte</b>&#160;Performance wird ignoriert
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1529073415777" FOLDED="true" HGAP="19" ID="ID_834523571" MODIFIED="1561827482928" TEXT="L&#xf6;sung" VSHIFT="12">
<icon BUILTIN="button_ok"/>
<node CREATED="1529073429723" FOLDED="true" ID="ID_100395564" MODIFIED="1561827469156" TEXT="Funktion locate_or_create()">
<node CREATED="1529073456407" ID="ID_838325275" MODIFIED="1529073466881" TEXT="macht Zugriff und erzeugt ggfs neu"/>
<node CREATED="1529073467710" ID="ID_149127263" MODIFIED="1529073477217" TEXT="gibt UICoord::Builder nach unten"/>
<node CREATED="1529073477988" ID="ID_1842592627" MODIFIED="1529073484271" TEXT="dieser wird dort ggfs umgeschrieben"/>
<node CREATED="1529073485027" ID="ID_1766613398" MODIFIED="1529073496141" TEXT="gibt nur UICoord zur&#xfc;ck"/>
</node>
<node CREATED="1529073497945" FOLDED="true" ID="ID_1104671546" MODIFIED="1561827469157" TEXT="Funktion access()">
<node CREATED="1529073503466" ID="ID_1047392798" MODIFIED="1529073510052" TEXT="darf niemals neu erzeugen"/>
<node CREATED="1529073510904" ID="ID_403151375" MODIFIED="1529073549243" TEXT="navigiert den vorbereiten Pfad nochmal hinunter">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ....jaaaaa, das ist verschwenderisch
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1529073559905" ID="ID_1370869277" MODIFIED="1529073571068" TEXT="liefert nun aber den verpackten Ergebnis-Zeiger"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1523752571241" ID="ID_1806352950" MODIFIED="1523752593134" TEXT="Anzahl Instanzen herausfinden">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1529079675765" ID="ID_1441903624" MODIFIED="1529079695630" TEXT="Limit erzwingen">
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1515634076196" HGAP="-17" ID="ID_1380959703" MODIFIED="1518487921071" TEXT="Implementierung" VSHIFT="20">
<icon BUILTIN="hourglass"/>
<node CREATED="1515634129061" ID="ID_1554987217" MODIFIED="1518487921071" TEXT="locate">
<node CREATED="1515634129062" ID="ID_1263439663" MODIFIED="1518487921071" TEXT="firstWindow"/>
<node CREATED="1515634129062" ID="ID_935490983" MODIFIED="1518487921071" TEXT="currentWindow"/>
<node CREATED="1515634129062" ID="ID_115783898" MODIFIED="1518487921071" TEXT="perspective(id)"/>
<node CREATED="1515634129062" ID="ID_353316788" MODIFIED="1518487921071" TEXT="panel(id)"/>
<node CREATED="1515634129062" ID="ID_1180499191" MODIFIED="1518487921071" TEXT="existingPanel(id)"/>
<node CREATED="1515634129062" ID="ID_67330452" MODIFIED="1518487921071" TEXT="existingGroup WIP 9/17 not clear if possible"/>
</node>
<node CREATED="1515634129062" ID="ID_1198810867" MODIFIED="1518487921071" TEXT="alloc">
<node CREATED="1515634129063" ID="ID_299053476" MODIFIED="1518487921071" TEXT="unlimited"/>
<node CREATED="1515634129063" ID="ID_125752214" MODIFIED="1518487921071" TEXT="onlyOne"/>
<node CREATED="1515634129063" ID="ID_1164137116" MODIFIED="1518487921071" TEXT="limitPerWindow(cnt)"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1522940095319" HGAP="-87" ID="ID_257633825" MODIFIED="1522940111813" TEXT="Aufruf einbinden" VSHIFT="-1">
<icon BUILTIN="pencil"/>
<node CREATED="1522940113349" ID="ID_378188810" MODIFIED="1522940183464" TEXT="in ViewLocator">
<icon BUILTIN="info"/>
</node>
<node COLOR="#338800" CREATED="1522940118628" ID="ID_356408235" MODIFIED="1523752865657" TEXT="auf Typ getemplated">
<icon BUILTIN="button_ok"/>
<node CREATED="1523750592900" ID="ID_266745032" MODIFIED="1529079925485" TEXT="&quot;viewID&quot; ist erst mal eine Typ-ID">
<arrowlink COLOR="#5260a0" DESTINATION="ID_778018274" ENDARROW="Default" ENDINCLINATION="-1217;51;" ID="Arrow_ID_597388409" STARTARROW="None" STARTINCLINATION="686;0;"/>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1523750621640" ID="ID_776549392" MODIFIED="1529076554000" TEXT="wird aber ggfs noch dekoriert (wg. Multiplizit&#xe4;t)">
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#338800" CREATED="1522940124932" FOLDED="true" ID="ID_636475854" MODIFIED="1525564213845" TEXT="Aufruf-Mechanismus">
<icon BUILTIN="button_ok"/>
<node CREATED="1522940151016" ID="ID_254319466" MODIFIED="1525564207503" TEXT="Strategy/Spezialisierungen in id-scheme.hpp">
<icon BUILTIN="info"/>
</node>
<node CREATED="1522940161655" ID="ID_1905184084" MODIFIED="1522940166466" TEXT="pro Typ spezialisiert">
<node COLOR="#338800" CREATED="1523752892269" ID="ID_1603142051" MODIFIED="1533608413761" TEXT="Problem: Instanzen">
<icon BUILTIN="button_ok"/>
<node CREATED="1523752902739" ID="ID_1018267741" MODIFIED="1523752943957" TEXT="statische Felder gehen nicht ohne Weiteres">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1523752911010" ID="ID_1174940020" MODIFIED="1523752930531" TEXT="...also brauchen wir Instanzen der Deskriptoren"/>
<node CREATED="1523752932735" ID="ID_225005955" MODIFIED="1525564117580" TEXT="Familie von Meyer&apos;s Singletons"/>
<node CREATED="1525564118640" ID="ID_327931353" MODIFIED="1525564137811" TEXT="lebt in view-spec-dsl.hpp (inline)">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node CREATED="1522940167125" ID="ID_980922327" MODIFIED="1522940174904" TEXT="h&#xe4;lt die konkrete ViewSpec-DSL"/>
</node>
<node COLOR="#338800" CREATED="1525564232321" FOLDED="true" ID="ID_46755801" MODIFIED="1529079723225" TEXT="konkrete Allokator-Strategien verdrahten">
<icon BUILTIN="button_ok"/>
<node CREATED="1525564255702" ID="ID_645519559" MODIFIED="1525564259768" TEXT="hinten rum">
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1525564261653" ID="ID_1979012219" MODIFIED="1525564307309" TEXT="Interface ElementAccess">
<arrowlink COLOR="#97cad5" DESTINATION="ID_597346628" ENDARROW="Default" ENDINCLINATION="126;9;" ID="Arrow_ID_89575203" STARTARROW="None" STARTINCLINATION="567;-16;"/>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1525565917296" ID="ID_174717640" MODIFIED="1525565932959" TEXT="Problem: resultierende UI-Coord">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1525565935350" ID="ID_252570354" MODIFIED="1525565950136" TEXT="Instanz-Limit"/>
<node CREATED="1525565950988" ID="ID_1233385790" MODIFIED="1525567162939">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      kann dazu f&#252;hren,
    </p>
    <p>
      da&#223; etwas Bestehendes zur&#252;ckgeliefert wird
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="broken-line"/>
</node>
<node COLOR="#338800" CREATED="1529079727758" ID="ID_288941017" MODIFIED="1529079742349" TEXT="L&#xf6;sung gefunden: ElementAccess gibt UICoord zur&#xfc;ck">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1522940203377" ID="ID_1539937928" MODIFIED="1522940298042" TEXT="Testabdeckung">
<arrowlink COLOR="#4c8891" DESTINATION="ID_1745396406" ENDARROW="Default" ENDINCLINATION="-828;-41;" ID="Arrow_ID_1830310728" STARTARROW="None" STARTINCLINATION="250;35;"/>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
<node CREATED="1506181908037" FOLDED="true" HGAP="-29" ID="ID_1925951134" MODIFIED="1518487921071" TEXT="Test" VSHIFT="21">
<icon BUILTIN="prepare"/>
<node CREATED="1506181922767" ID="ID_1642380411" MODIFIED="1518487921071" TEXT="UICoord_test">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1506182009518" ID="ID_138248232" MODIFIED="1518487921071" TEXT="verify_basics">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1506182009519" ID="ID_1637725534" MODIFIED="1518487921071" TEXT="verify_builder">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1506182009519" ID="ID_542761230" MODIFIED="1518487921071" TEXT="verify_comparisons">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1506984579372" ID="ID_1752757359" MODIFIED="1518487921071" TEXT="verify_localPredicates">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1506984614487" ID="ID_380908645" MODIFIED="1561827465158" TEXT="UICoordResolver_test">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1506984645745" ID="ID_244163155" MODIFIED="1518487921071" TEXT="verify_simpleUsage">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1506984645747" FOLDED="true" ID="ID_517262443" MODIFIED="1531584013579" TEXT="verify_backingQuery">
<icon BUILTIN="button_ok"/>
<node CREATED="1508809610790" ID="ID_1860790851" MODIFIED="1512926191814" TEXT="Builder-Syntax war falsch">
<icon BUILTIN="button_ok"/>
<node CREATED="1508809620762" ID="ID_236111511" MODIFIED="1508809630860" TEXT="mu&#xdf; die Attribute-Collection nutzen"/>
<node CREATED="1508809631448" ID="ID_956153388" MODIFIED="1508809644482" TEXT="Builder wohl noch nie f&#xfc;r diesen Fall verwendet"/>
<node CREATED="1508809645470" ID="ID_1846245702" MODIFIED="1508809656617" TEXT="erlaube Move-Initialisierung"/>
</node>
<node CREATED="1508809657253" ID="ID_108704029" MODIFIED="1512926191815" TEXT="Segfault">
<icon BUILTIN="button_ok"/>
<node CREATED="1508809662036" ID="ID_1522595538" MODIFIED="1508809674479" TEXT="sehe zwar die drei Window-Elemente"/>
<node CREATED="1508809674994" ID="ID_1781272984" MODIFIED="1533608413762" TEXT="aber die ID-Strings sind komisch">
<node CREATED="1508809684338" ID="ID_1268163778" MODIFIED="1508809688341" TEXT="erster String ist &quot;&quot;"/>
<node CREATED="1508809688881" ID="ID_1836564528" MODIFIED="1508809700115" TEXT="zweiter String hat richtigen Anfang..."/>
<node CREATED="1508809700919" ID="ID_733585050" MODIFIED="1508809716393" TEXT="aber wird mit nachfolgendem M&#xfc;ll angezeigt"/>
<node CREATED="1508809719165" ID="ID_1506398379" MODIFIED="1509064569893" TEXT="Segfault beim Initialisieren des Ergebnisses f&#xfc;r extractKey"/>
</node>
<node CREATED="1508809741418" ID="ID_1013369537" MODIFIED="1509070755705" TEXT="Verdacht: irgendwo move mit dangling storage?"/>
<node CREATED="1509070756935" ID="ID_1331980374" MODIFIED="1576282358114" TEXT="nein! Nur eine Referenz vom Temporary">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...merke
    </p>
    <p>
      die Spezialbehandlung f&#252;r const&amp; gilt nur, wenn wir direkt auch diesen Typ nehmen.
    </p>
    <p>
      Im vorliegenden fall wird aber der conversion-Operator aufgerufen, um den Initializser zu erzeugen.
    </p>
    <p>
      Daher denkt der Compiler, er kann das Ursprungsobjekt jezt wergwerfen.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node CREATED="1509142651113" ID="ID_99734013" MODIFIED="1512926191818">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Spezialbehandlung
    </p>
    <p>
      Perspektive
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
<node CREATED="1509143055036" ID="ID_810015478" MODIFIED="1576282358114" TEXT="absichtlich unorthogonal repr&#xe4;sentiert">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...um zu pr&#252;fen, ob das allgemeine Design
    </p>
    <p>
      mit solchen Asymetrien umgehen kann,
    </p>
    <p>
      welche ziemlich sicher noch viel mehr
    </p>
    <p>
      bei der Navigation in einem realen GUI auftreten
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1509143404342" ID="ID_708195081" MODIFIED="1533608413762" TEXT="drillDown aufbohren">
<icon BUILTIN="ksmiletris"/>
<node CREATED="1509143431491" ID="ID_1535839304" MODIFIED="1509143436685" TEXT="Pfad normal weiterverarbeiten"/>
<node CREATED="1509143437202" ID="ID_1489524396" MODIFIED="1509143442917" TEXT="aber Abstieg im Baum manipulieren"/>
<node CREATED="1509143453151" ID="ID_373632759" MODIFIED="1561827465158" TEXT="speziell...">
<node CREATED="1509143459519" FOLDED="true" ID="ID_1727095948" MODIFIED="1561827483832" TEXT="existenz-Check l&#xe4;uft anders">
<node CREATED="1509143492194" ID="ID_835507213" MODIFIED="1509143513852" TEXT="getType und stringvergleich"/>
<node CREATED="1509143514352" ID="ID_730111393" MODIFIED="1509143519963" TEXT="statt hasAttribute"/>
</node>
<node CREATED="1509143469429" ID="ID_1414723485" MODIFIED="1509143481984" TEXT="keinen Abstiegs-Schritt machen"/>
</node>
<node CREATED="1509143542611" ID="ID_114168871" MODIFIED="1576282358113" TEXT="Schwein gehabt, rekursiv programmiert">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...und ich hab mir letzte Woche noch solche Vorw&#252;rfe gemacht,
    </p>
    <p>
      da&#223; ich mich wieder mal &quot;akademisch&quot; verspielt habe.... :-P
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node CREATED="1509151268071" ID="ID_38582779" MODIFIED="1533608413764" TEXT="getChildren aufbohren">
<icon BUILTIN="button_ok"/>
<node CREATED="1509151285749" ID="ID_1826645914" MODIFIED="1509287428715" TEXT="eigentlich einfach">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1509287527705" ID="ID_1588631568" MODIFIED="1509287562960" TEXT="mu&#xdf; blo&#xdf; in einem Fall explizit was anderes liefern..."/>
<node CREATED="1509287541919" ID="ID_58868223" MODIFIED="1509287552668" TEXT="Aua! Iterator ist im weg">
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#338800" CREATED="1509151289637" ID="ID_892381116" MODIFIED="1561827465159" TEXT="brauche singletonIter">
<icon BUILTIN="button_ok"/>
<node CREATED="1509151296292" ID="ID_1050274308" MODIFIED="1509151411655" TEXT="liefert ein einziges Element"/>
<node CREATED="1509151305602" ID="ID_452317335" MODIFIED="1509287419861" TEXT="als IterSource verpackt">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1509151309866" ID="ID_1109789284" MODIFIED="1576282358112" TEXT="sollte es als als Basis iter implementieren">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...und die IterSource dann nur &#252;ber WrapIter definieren.
    </p>
    <p>
      Schichten-Prinzip...
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1509151381113" ID="ID_779657015" MODIFIED="1509151411655" TEXT="brauche ItemWrapper f&#xfc;r beliebiges Element"/>
<node CREATED="1509151390495" ID="ID_947844248" MODIFIED="1509285129251" TEXT="Idee: TransformIter aufbohren">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1509285130478" ID="ID_1391664155" MODIFIED="1509285142156" TEXT="direkt coden ist am klarsten">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1506984645748" FOLDED="true" ID="ID_1254044275" MODIFIED="1531584013581" TEXT="verify_queryAnchor">
<icon BUILTIN="button_ok"/>
<node CREATED="1513477632318" ID="ID_1636138355" MODIFIED="1515209155590" TEXT="setzt PathResolution voraus">
<icon BUILTIN="info"/>
<node COLOR="#338800" CREATED="1513477685935" ID="ID_115330701" MODIFIED="1515209146174" TEXT="brauche layered pull-Evaluation">
<arrowlink COLOR="#786296" DESTINATION="ID_596422747" ENDARROW="Default" ENDINCLINATION="278;120;" ID="Arrow_ID_1919142695" STARTARROW="None" STARTINCLINATION="952;148;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1513477772387" ID="ID_1207553398" MODIFIED="1515209119633" TEXT="neu implementierter ChildIter">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1513477790161" ID="ID_286375730" MODIFIED="1515209148753" TEXT="PathResolution implementieren">
<arrowlink COLOR="#653655" DESTINATION="ID_394904963" ENDARROW="Default" ENDINCLINATION="606;374;" ID="Arrow_ID_1674594671" STARTARROW="None" STARTINCLINATION="863;77;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1513477954730" ID="ID_1541867154" MODIFIED="1513478089188" TEXT="F&#xe4;lle...">
<icon BUILTIN="info"/>
<node COLOR="#338800" CREATED="1513477957584" ID="ID_862780828" MODIFIED="1515209246199" TEXT="Explizit: window(&quot;window-1&quot;).persp(&quot;perspective-A&quot;)">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1513477957585" ID="ID_992417953" MODIFIED="1515209244400" TEXT="Gibtsned: window(&quot;windows&quot;);">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1513477957586" ID="ID_1927496001" MODIFIED="1515209242711" TEXT="contextual state: firstWindow();">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1513477957586" ID="ID_519256473" MODIFIED="1515209240701" TEXT="context-relativ: currentWindow().persp(&quot;perspective-B&quot;);">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1513477957586" ID="ID_1636269470" MODIFIED="1533608413765" TEXT="context-relativ-unl&#xf6;sbar: currentWindow().panel(&quot;panelY&quot;);">
<icon BUILTIN="button_ok"/>
<node CREATED="1515209222726" ID="ID_959307669" MODIFIED="1515209232972" TEXT="aber ankerbar!">
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#338800" CREATED="1513477957586" ID="ID_1247686548" MODIFIED="1515209175737" TEXT="partiell-interpolierbar: view(&quot;someView&quot;);">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node CREATED="1506984645748" FOLDED="true" ID="ID_670536416" MODIFIED="1518487921071" TEXT="verify_queryCoverage">
<icon BUILTIN="stop-sign"/>
<node CREATED="1515209280278" ID="ID_959372189" MODIFIED="1518487921071" TEXT="sinnlos, da man das Ergebnis nicht sieht"/>
<node CREATED="1515209292804" ID="ID_907780055" MODIFIED="1523750073991" TEXT="ansonsten redundant zur Mutation"/>
</node>
<node COLOR="#338800" CREATED="1506984645748" FOLDED="true" ID="ID_1171284706" MODIFIED="1531584013583" TEXT="verify_mutateAnchor">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1515287623841" ID="ID_11774693" MODIFIED="1518487921071" TEXT="explizit verankert: &#xe4;ndert sich nix">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1515287648717" ID="ID_293459284" MODIFIED="1518487921071" TEXT="firstWindow explizit machen">
<icon BUILTIN="button_ok"/>
<node CREATED="1515291045220" ID="ID_907726638" MODIFIED="1518487921071" TEXT="...selbst wenn sonst nicht l&#xf6;sbar">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1515287660188" ID="ID_811260333" MODIFIED="1518487921071" TEXT="currentWindow explizit machen">
<icon BUILTIN="button_ok"/>
<node CREATED="1515291071497" ID="ID_913736296" MODIFIED="1518487921071" TEXT="...und tr&#xe4;gt auch zur L&#xf6;sung bei">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1515287665939" ID="ID_525267705" MODIFIED="1518487921071" TEXT="l&#xf6;sbare coverage">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1515287701126" ID="ID_1257691503" MODIFIED="1533608413765" TEXT="noch nicht berechnet: errechnen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1515291242698" ID="ID_512594119" MODIFIED="1518487921071" TEXT="mu&#xdf; re-normalisieren">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1515291264591" ID="ID_250465802" MODIFIED="1561827465160" TEXT="sollte dann coverDepth neu errechnen">
<icon BUILTIN="button_cancel"/>
<node CREATED="1515305853681" ID="ID_1757724837" MODIFIED="1515305908431" TEXT="nicht notwendig">
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1515305858184" FOLDED="true" ID="ID_1728979618" MODIFIED="1561827483832">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      das ist <i>immer</i>&#160;schon korrekt erledigt
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
<node CREATED="1515305886989" ID="ID_877994644" MODIFIED="1515305894383" TEXT="entweder der Beginn ist explizit"/>
<node CREATED="1515305895307" ID="ID_371777501" MODIFIED="1515305899622" TEXT="oder wir haben eine L&#xf6;sung"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1515287694871" ID="ID_953283273" MODIFIED="1533608413767" TEXT="schon berechnet: eintragen">
<icon BUILTIN="button_ok"/>
<node CREATED="1515291343277" ID="ID_1704851738" MODIFIED="1518487921071" TEXT="explizites Cover machen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1515291350332" ID="ID_219986282" MODIFIED="1561827465161" TEXT="neue coverDepth mu&#xdf; sichtbar werden">
<icon BUILTIN="button_ok"/>
<node CREATED="1515298565483" ID="ID_719457405" MODIFIED="1515298571802" TEXT="Autsch">
<icon BUILTIN="smily_bad"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1515298572994" FOLDED="true" ID="ID_1082678541" MODIFIED="1561827483832" TEXT="Denkfehler im Builder-Konzept!">
<icon BUILTIN="broken-line"/>
<node CREATED="1515298602326" ID="ID_13919667" MODIFIED="1515298692557" TEXT="R&#xfc;ckgabe ist Value...">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...und das hei&#223;t.
    </p>
    <p>
      ein Value wird auch sofort konstruiert,
    </p>
    <p>
      egal, ob man den dann gleich wegwirft.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1515298698849" ID="ID_1957524269" MODIFIED="1515298709411" TEXT="Objekt wird nach erstem Aufruf tats&#xe4;chlich zerst&#xf6;rt"/>
</node>
<node COLOR="#338800" CREATED="1515298710952" ID="ID_167586553" MODIFIED="1515298806412" TEXT="L&#xf6;sung: &amp;&amp; zur&#xfc;ckgeben">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1515298722702" FOLDED="true" ID="ID_273407473" MODIFIED="1561827483832" TEXT="k&#xf6;nnte gef&#xe4;hrlich sein">
<icon BUILTIN="bell"/>
<node CREATED="1515298735548" ID="ID_966210103" MODIFIED="1515298746799" TEXT="Stichwort: Sequence Points"/>
<node CREATED="1515298747531" ID="ID_1013710090" MODIFIED="1515298752254" TEXT="im Debugger beobachtet"/>
<node CREATED="1515298753074" ID="ID_5305718" MODIFIED="1515298776867" TEXT="Builder-Syntax scheint zu funktionieren, wie erwartet"/>
<node CREATED="1515298777551" ID="ID_1384914895" MODIFIED="1515298789593" TEXT="explizite Aufruf-Syntax ebenso"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1515287717092" ID="ID_459525933" MODIFIED="1518487921071" TEXT="nicht coverbar: &#xe4;ndert sich nix">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1506984645748" ID="ID_1688800613" MODIFIED="1518487921071" TEXT="verify_mutateCoverage">
<arrowlink COLOR="#4b5c8d" DESTINATION="ID_1362494392" ENDARROW="Default" ENDINCLINATION="398;572;" ID="Arrow_ID_82261909" STARTARROW="None" STARTINCLINATION="1404;115;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1506984645748" FOLDED="true" ID="ID_768385613" MODIFIED="1531584013584" TEXT="verify_mutateExtend">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1515449655380" ID="ID_1282321814" MODIFIED="1518487921071" TEXT="expliziten Pfad erweitern">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1515450991631" ID="ID_1736775031" MODIFIED="1518487921071" TEXT="Pfad durch partielle UI-Coord erweitern">
<arrowlink COLOR="#4f6f95" DESTINATION="ID_130067342" ENDARROW="Default" ENDINCLINATION="544;89;" ID="Arrow_ID_992203487" STARTARROW="None" STARTINCLINATION="704;0;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1515451047192" ID="ID_554336668" MODIFIED="1525124215016" TEXT="erweitern scheitert wegen &#xdc;berlapp">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1515455278659" ID="ID_1749331083" MODIFIED="1515555648076" TEXT="pr&#xe4;ziser Anschlu&#xdf; funktioniert">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1515455289417" ID="ID_228177396" MODIFIED="1515555650682" TEXT="&#xdc;berlapp == 1 scheitert">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1515455296784" ID="ID_957569216" MODIFIED="1533608413769" TEXT="sinnvolle Fehlermeldung">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1515456807297" ID="ID_940232878" MODIFIED="1515555654366" TEXT="ausgehend von expliziter Spec">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1515456817248" ID="ID_631326169" MODIFIED="1515555656365" TEXT="ausgehend von berechneter Coverage-L&#xf6;sung">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1515449669446" ID="ID_1747646759" MODIFIED="1518487921071" TEXT="partially covered erweitern">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1515449719015" ID="ID_979130061" MODIFIED="1518487921071" TEXT="unl&#xf6;sbar -&gt; truncate">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1515449727142" ID="ID_1936618724" MODIFIED="1518487921071" TEXT="coverage kann dadurch anwachsen">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1517506145618" ID="ID_718086573" MODIFIED="1561827465169" TEXT="UILocationSolver_test">
<linktarget COLOR="#465888" DESTINATION="ID_718086573" ENDARROW="Default" ENDINCLINATION="-185;-461;" ID="Arrow_ID_1844529849" SOURCE="ID_957265584" STARTARROW="None" STARTINCLINATION="-598;29;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1517506161024" ID="ID_21333166" MODIFIED="1518487921071" TEXT="Verdrahtung mit Test/Dummy-UI">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1517506256691" ID="ID_360871736" MODIFIED="1518487921071" TEXT="einfaches Anwendungs-Beispiel">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1517506268969" FOLDED="true" ID="ID_1285475519" MODIFIED="1531584013587" TEXT="theoretische Grenzf&#xe4;lle">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1518220727527" ID="ID_935687591" MODIFIED="1518762392404" TEXT="leere Regel">
<icon BUILTIN="button_ok"/>
<node CREATED="1518220764202" ID="ID_1551836374" MODIFIED="1518762392404" TEXT="geht nicht">
<icon BUILTIN="broken-line"/>
</node>
<node COLOR="#338800" CREATED="1518220767426" ID="ID_1678897927" MODIFIED="1518762392404" TEXT="aber eine leere Klausel geht">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1518221630349" ID="ID_748354557" MODIFIED="1518762392404" TEXT="leere Klausel plus andere">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1518220806629" ID="ID_1877537399" MODIFIED="1518762392404" TEXT="zu kurze Regel">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1518220812132" ID="ID_1855700910" MODIFIED="1518762392404" TEXT="zu lange Regel">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1518221033294" ID="ID_379081230" MODIFIED="1531584013588" TEXT="Anfrage auf Window">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1518221041493" ID="ID_1938682325" MODIFIED="1518762392404" TEXT="existierend">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1518221057362" ID="ID_1276841328" MODIFIED="1518762392404" TEXT="generisch">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1518221047172" ID="ID_899404932" MODIFIED="1518762392404" TEXT="nicht existierend">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1518221069089" ID="ID_834357218" MODIFIED="1518762392404" TEXT="nicht existierend / create">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1518221069089" ID="ID_1759153588" MODIFIED="1518762392404" TEXT=" existierend / create">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1518221096237" ID="ID_1538354349" MODIFIED="1531584013588" TEXT="Anfrage auf Perspektive">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1518221103372" ID="ID_4661652" MODIFIED="1518762392404" TEXT="existierend">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1518221109227" ID="ID_357379201" MODIFIED="1518762392404" TEXT="elided">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1518221115123" ID="ID_444249560" MODIFIED="1518762392404" TEXT="nicht exisitierend">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1518221121450" ID="ID_1105449946" MODIFIED="1518762392404" TEXT="nichte existierend / create">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1518221188121" ID="ID_541455871" MODIFIED="1518762392404" TEXT="Anfrage auf (tiefen) Pfad">
<icon BUILTIN="button_ok"/>
<node CREATED="1518221206998" ID="ID_1900776687" MODIFIED="1533608413770" TEXT="komplett explizit">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1518221213277" ID="ID_1744618018" MODIFIED="1518762392404" TEXT="covered">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1518221239058" ID="ID_1778260898" MODIFIED="1518762392404" TEXT="covered / create">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1518221217997" ID="ID_1478390273" MODIFIED="1518762392404" TEXT="partially covered">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1518221217997" ID="ID_789039729" MODIFIED="1518762392404" TEXT="partially covered / create">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1518221264143" ID="ID_676167818" MODIFIED="1518762392404" TEXT="uncovered">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1518221267862" ID="ID_637617629" MODIFIED="1518762392404" TEXT="uncovered / create">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1518221321054" ID="ID_1884750439" MODIFIED="1533608413771" TEXT="Wildcard">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1518221328398" ID="ID_771962346" MODIFIED="1518762392404" TEXT="covered">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1518221342140" ID="ID_1533800638" MODIFIED="1518762392404" TEXT="covered ohne Endelement">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1518221353130" ID="ID_786771733" MODIFIED="1518762392404" TEXT="create aber komplett existierend">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1518221365785" ID="ID_812801272" MODIFIED="1518762392404" TEXT="create ohne Endelement">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1518221374663" ID="ID_1846464761" MODIFIED="1518762392404" TEXT="partially covered">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1518221380231" ID="ID_378548083" MODIFIED="1518762392404" TEXT="partially covered / create">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1518221386438" ID="ID_864741660" MODIFIED="1518762392404" TEXT="uncovered">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1518221398668" ID="ID_1119602753" MODIFIED="1518762392404" TEXT="uncovered / create">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node CREATED="1518221447093" ID="ID_1048302687" MODIFIED="1518762392404" TEXT="zwei Klauseln">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1518221466779" ID="ID_1934359283" MODIFIED="1518762392404" TEXT="beide erf&#xfc;llbar">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1518221482345" ID="ID_867150257" MODIFIED="1518762392404" TEXT="erste unerf&#xfc;llbar">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1518221509805" ID="ID_1191463024" MODIFIED="1533608413771" TEXT="erste create">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1518221525891" ID="ID_395077893" MODIFIED="1518762392404" TEXT="erf&#xfc;llbar">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1518221539089" ID="ID_1046962094" MODIFIED="1518762392404" TEXT="nicht erf&#xfc;llbar">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1518221571021" ID="ID_1917057944" MODIFIED="1533608413772" TEXT="zweite create">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1518221582347" ID="ID_1796461457" MODIFIED="1518762392404" TEXT="erste erf&#xfc;llbar">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1518221587275" ID="ID_1141416112" MODIFIED="1518762392404" TEXT="zweite erf&#xfc;llbar">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1518221593034" ID="ID_1276221189" MODIFIED="1518762392404" TEXT="auch zweite unerf&#xfc;llbar">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1517506289222" FOLDED="true" ID="ID_1250541940" MODIFIED="1531584013594" TEXT="praktische Standard-F&#xe4;lle">
<icon BUILTIN="button_ok"/>
<node CREATED="1518575724831" ID="ID_712009155" MODIFIED="1518579539092" TEXT="Idee">
<icon BUILTIN="idea"/>
<node CREATED="1518575730894" ID="ID_24825251" MODIFIED="1518575750656">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      nur <i>einen Satz</i>&#160;Klauseln
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1518575751651" ID="ID_1423547228" MODIFIED="1518575765468" TEXT="stattdessen den Test-&quot;Baum&quot; variieren"/>
<node CREATED="1518575766889" ID="ID_1639479655" MODIFIED="1518575777979" TEXT="damit die Situationen der realen Regeln nachbilden"/>
<node CREATED="1518575779991" ID="ID_1194432520" MODIFIED="1518575791081" TEXT="und beweisen, da&#xdf; die Ergebnisse eindeutig sind"/>
</node>
<node COLOR="#338800" CREATED="1518579541832" ID="ID_512680632" MODIFIED="1518579550376" TEXT="flexibles Test-Setup hierf&#xfc;r">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1518221768370" ID="ID_958994214" MODIFIED="1518487921072" TEXT="match by">
<node COLOR="#338800" CREATED="1518223023735" ID="ID_1788599676" MODIFIED="1518739354202" TEXT="pespective + panel">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1518223029399" ID="ID_1184092341" MODIFIED="1518739356121" TEXT="generic window + existing panel">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1518223039229" ID="ID_427870686" MODIFIED="1518739358673" TEXT="panel alone">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#990000" CREATED="1518223101637" ID="ID_481219776" MODIFIED="1518742835910" TEXT="wildcard view + specific tab">
<arrowlink COLOR="#b78791" DESTINATION="ID_1208480183" ENDARROW="Default" ENDINCLINATION="-1240;134;" ID="Arrow_ID_831550289" STARTARROW="None" STARTINCLINATION="1654;0;"/>
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#338800" CREATED="1518223107508" ID="ID_254700276" MODIFIED="1518742616988" TEXT="wildcard panel + view appended">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1518223136888" ID="ID_373048163" MODIFIED="1518487921072" TEXT="create match">
<node COLOR="#338800" CREATED="1518223141623" ID="ID_1610919464" MODIFIED="1518742653179" TEXT="on wildcard">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1518223149750" ID="ID_1733413613" MODIFIED="1533608413772" TEXT="on wildcard fail">
<icon BUILTIN="button_ok"/>
<node CREATED="1518742624742" ID="ID_1245433967" MODIFIED="1518742630585" TEXT="implizit mitgetestet">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1518742642180" ID="ID_194206742" MODIFIED="1518742648655" TEXT="....indem die n&#xe4;chste Regel zieht"/>
</node>
<node COLOR="#338800" CREATED="1518223044301" ID="ID_1476637837" MODIFIED="1533608413772" TEXT="generic window + panel create">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1518762440997" ID="ID_606433871" MODIFIED="1518840066703" TEXT="ggfs auto-elided?">
<arrowlink COLOR="#8eacb9" DESTINATION="ID_214794727" ENDARROW="Default" ENDINCLINATION="-653;0;" ID="Arrow_ID_1678351989" STARTARROW="None" STARTINCLINATION="1400;0;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1518223201375" ID="ID_1794858276" MODIFIED="1518742656811" TEXT="complete create">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1506182023288" FOLDED="true" ID="ID_1539184761" MODIFIED="1523118243889" STYLE="fork" TEXT="ViewSpecDSL_test">
<arrowlink COLOR="#43667c" DESTINATION="ID_1234019560" ENDARROW="Default" ENDINCLINATION="-338;-1489;" ID="Arrow_ID_839730277" STARTARROW="None" STARTINCLINATION="-530;453;"/>
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1506182077694" ID="ID_839824654" MODIFIED="1523053425474" TEXT="verify_basicProperties">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1515633695710" ID="ID_1540478220" MODIFIED="1523053425474" TEXT="aus standardUsage ablzuleiten"/>
<node CREATED="1515633710396" ID="ID_335824710" MODIFIED="1523053425474" TEXT="spezifiziert die formalen Basis-Eigenschaften"/>
</node>
<node COLOR="#338800" CREATED="1506182037003" ID="ID_439307131" MODIFIED="1523053425474" TEXT="verify_standardUsage">
<icon BUILTIN="button_ok"/>
<node CREATED="1515633645885" ID="ID_1659749577" MODIFIED="1523053425474" TEXT="einfaches Dummy-Setup"/>
<node CREATED="1515633651212" ID="ID_704575529" MODIFIED="1523053425474" TEXT="erlaubt, die Strukturen zu bauen"/>
<node CREATED="1515633658483" ID="ID_149158343" MODIFIED="1523053425474" TEXT="l&#xe4;uft ohne die UI-Backbone">
<icon BUILTIN="yes"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1506182087462" ID="ID_47070993" MODIFIED="1523053425474" TEXT="verify_alternatives">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1515633722883" ID="ID_9454050" MODIFIED="1523053425474" TEXT="rein technische Erweiterung"/>
<node CREATED="1515633737905" ID="ID_1500220475" MODIFIED="1523053425474" TEXT="Auswahl der ersten &quot;passenden&quot; L&#xf6;sung"/>
<node CREATED="1515633770884" ID="ID_861669562" MODIFIED="1523053425474" TEXT="Dummy: GenNodeLocationQuery anstelle eines realen UI"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1522940227022" ID="ID_1745396406" MODIFIED="1523746775368" TEXT="verify_genericInvocation">
<linktarget COLOR="#4c8891" DESTINATION="ID_1745396406" ENDARROW="Default" ENDINCLINATION="-828;-41;" ID="Arrow_ID_1830310728" SOURCE="ID_1539937928" STARTARROW="None" STARTINCLINATION="250;35;"/>
<icon BUILTIN="flag-yellow"/>
<node COLOR="#435e98" CREATED="1523746830877" ID="ID_179614354" MODIFIED="1523746850828" TEXT="Ziel ist ein Komponenten-Integrationstest">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1523727045276" ID="ID_1873415671" MODIFIED="1523727056587" TEXT="Problem: wie testen ohne UI-Context?">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1523727057907" ID="ID_465631036" MODIFIED="1576282358112" TEXT="Ausweg">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...denn irgendwann wird's l&#228;cherlich mit der Unit-Testerei.
    </p>
    <p>
      Oder zumindest Hexagonal.
    </p>
    <p>
      Bedingt durch die ganzen rausgezogenen Interfaces hat jetzt bereits ViewLocator &#252;berhaupt keinen Gehalt mehr.
    </p>
    <p>
      Wenn ich jetzt auch noch die einzige verbleibende Methode rausziehe, um sie testen zu k&#246;nnen,
    </p>
    <p>
      drehe ich mich komplett im Kreis. Schlie&#223;lich kann ich diese Methode ja, genau genommen,
    </p>
    <p>
      im Moment auch noch nicht wirklich testen, aus genau den gleichen Gr&#252;nden,
    </p>
    <p>
      warum ViewLocator so nebul&#246;s bleibt: <b>es gibt noch kein Lumiera GUI</b>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
<node CREATED="1523746796508" ID="ID_1839059733" MODIFIED="1523746796508" TEXT="Aufruf nur nachbauen"/>
<node CREATED="1523746798210" ID="ID_1076120435" MODIFIED="1523746818187" TEXT="Fake-DSL-Definitionen verwenden"/>
</node>
<node COLOR="#435e98" CREATED="1523749882439" ID="ID_1150944546" MODIFIED="1529079882713" TEXT="Schritt-1">
<icon BUILTIN="full-1"/>
<node CREATED="1523749910106" ID="ID_542105863" MODIFIED="1523750022741" TEXT="einfache direkte Erzeugung von einem View">
<icon BUILTIN="info"/>
</node>
<node COLOR="#338800" CREATED="1523749925224" ID="ID_1469440140" MODIFIED="1529079888021" TEXT="minimale Verifikation">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1523749888005" ID="ID_1904054486" MODIFIED="1523749907772" TEXT="Schritt-2">
<icon BUILTIN="full-2"/>
<node CREATED="1523749931480" ID="ID_1388717184" MODIFIED="1523750026436" TEXT="komplexere Fake-DSL">
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1523749938023" ID="ID_873547886" MODIFIED="1529079897790" TEXT="Alternativen und wirkliche L&#xf6;sung">
<icon BUILTIN="hourglass"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1523749952356" ID="ID_1622746609" MODIFIED="1523749963165" TEXT="Schritt-3">
<icon BUILTIN="full-3"/>
<node CREATED="1523749968914" ID="ID_998334237" MODIFIED="1523750029454" TEXT="Test-Mock verwendet GenNode-Tree-Repr&#xe4;sentation">
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1523749987776" ID="ID_1752498971" MODIFIED="1523750010189" TEXT="Allokations-Mechanismus genauer spezifizieren">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1523750001990" ID="ID_1324123993" MODIFIED="1523750009285" TEXT="Allokation konkret abdecken">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1523746600925" HGAP="1" ID="ID_435582808" MODIFIED="1523746656723" VSHIFT="36">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Das urspr&#252;ngliche Ziel f&#252;r diesen Test
    </p>
    <p>
      ist in unserem Test-Framework <b>nicht realisierbar</b>
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#eff1e5" DESTINATION="ID_435582808" ENDARROW="Default" ENDINCLINATION="-1920;189;" ID="Arrow_ID_1348453991" SOURCE="ID_1022913151" STARTARROW="None" STARTINCLINATION="498;45;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node CREATED="1523746659654" ID="ID_1299891788" MODIFIED="1523746698882" TEXT="Das Ziel war: alle konkreten Standard-F&#xe4;lle durchspielen">
<icon BUILTIN="info"/>
</node>
<node CREATED="1523746674939" ID="ID_1008453652" MODIFIED="1523746693800" TEXT="dies erfordert, die realen WIdgets zu instantiieren">
<icon BUILTIN="broken-line"/>
</node>
<node CREATED="1523746704479" ID="ID_462392796" MODIFIED="1576282358111" TEXT="...und das ist ausgeschlossen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <u>Policy</u>: Unit-Tests d&#252;rfen keine GTK-Abh&#228;ngigkeit haben
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#435e98" CREATED="1523748895111" ID="ID_613307109" MODIFIED="1523748953311" TEXT="sp&#xe4;ter mal....">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="idea"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1523748900655" ID="ID_1768095597" MODIFIED="1667166529999" TEXT="#1140 UI integration tests">
<icon BUILTIN="hourglass"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1523748905725" ID="ID_748849132" MODIFIED="1667166529999" TEXT="#1141 verify UI default view allocation">
<icon BUILTIN="hourglass"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1667166492738" ID="ID_1938503803" MODIFIED="1667166529999" TEXT="#1257 provide test-session for GUI">
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1504479724869" HGAP="-123" ID="ID_637855369" MODIFIED="1518487921072" TEXT="Darstellung" VSHIFT="10">
<icon BUILTIN="forward"/>
<node CREATED="1504479769415" HGAP="45" ID="ID_115454468" MODIFIED="1518487921072" TEXT="Ma&#xdf;stab" VSHIFT="-13">
<icon BUILTIN="yes"/>
<node CREATED="1504479773327" ID="ID_874044841" MODIFIED="1518487921072" TEXT="mu&#xdf; lesbar sein"/>
<node CREATED="1504479778086" ID="ID_1867364946" MODIFIED="1518487921072" TEXT="wichtige F&#xe4;lle abbilden"/>
<node CREATED="1504479801683" ID="ID_1408830980" MODIFIED="1518487921072" TEXT="Implementierung">
<node CREATED="1504479807066" ID="ID_1318651039" MODIFIED="1518487921072" TEXT="m&#xe4;&#xdf;ig komplex"/>
<node CREATED="1504479813553" ID="ID_141842675" MODIFIED="1576282358111" TEXT="ehr effizient">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <ul>
      <li>
        wird m&#228;&#223;ig h&#228;ufig aufgerufen
      </li>
      <li>
        beim &quot;&#214;ffnen&quot; und zur Navigation
      </li>
      <li>
        im Interaktions-Kontext
      </li>
      <li>
        keinen Speicherdruck erzeugen
      </li>
    </ul>
  </body>
</html></richcontent>
<arrowlink COLOR="#8e79a4" DESTINATION="ID_1229791291" ENDARROW="Default" ENDINCLINATION="16;-93;" ID="Arrow_ID_277133142" STARTARROW="None" STARTINCLINATION="133;0;"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1504479933641" FOLDED="true" ID="ID_686917529" MODIFIED="1561827465183" TEXT="DSL">
<cloud COLOR="#dac6a1"/>
<linktarget COLOR="#5e819b" DESTINATION="ID_686917529" ENDARROW="Default" ENDINCLINATION="-89;-122;" ID="Arrow_ID_1067086551" SOURCE="ID_1397553997" STARTARROW="None" STARTINCLINATION="-322;62;"/>
<linktarget COLOR="#b45c5a" DESTINATION="ID_686917529" ENDARROW="Default" ENDINCLINATION="-468;-196;" ID="Arrow_ID_1955094318" SOURCE="ID_1442345755" STARTARROW="None" STARTINCLINATION="360;85;"/>
<icon BUILTIN="idea"/>
<node CREATED="1504479939664" ID="ID_1158508729" MODIFIED="1518487921072" TEXT="Term-Schreibweise"/>
<node CREATED="1504479950607" ID="ID_118638432" MODIFIED="1518487921072" TEXT="generiert Funktoren/Closures"/>
<node CREATED="1504480019182" ID="ID_1190390221" MODIFIED="1518487921072" TEXT="Problem: encapsulation">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1504480041315" ID="ID_535241643" MODIFIED="1518487921072" TEXT="DSL-Ausdr&#xfc;cke stehen in globalem Header"/>
<node CREATED="1504480172697" ID="ID_858936833" MODIFIED="1518487921073" TEXT="tats&#xe4;chlich nur im ViewLocator zu interpretieren"/>
</node>
<node CREATED="1504480237649" FOLDED="true" HGAP="15" ID="ID_1076181034" MODIFIED="1518487921073" TEXT="Variation der Diff-Verben?" VSHIFT="11">
<icon BUILTIN="idea"/>
<node CREATED="1504480255374" ID="ID_869593955" MODIFIED="1518487921073" TEXT="Token + Argument"/>
<node CREATED="1504480260373" ID="ID_236748610" MODIFIED="1518487921073" TEXT="Funktor gebunden"/>
<node CREATED="1504480266909" ID="ID_1626606623" MODIFIED="1518487921073" TEXT="...an Interpreter">
<node CREATED="1504480363968" ID="ID_1701584915" MODIFIED="1518487921073" TEXT="legt die g&#xfc;ltien Verben fest"/>
<node CREATED="1504480371070" ID="ID_505779360" MODIFIED="1518487921073" TEXT="ist ein Interface"/>
<node CREATED="1504480375006" ID="ID_1380298925" MODIFIED="1518487921073" STYLE="fork" TEXT="=&gt; double-dispatch">
<arrowlink COLOR="#6b768e" DESTINATION="ID_1191902349" ENDARROW="Default" ENDINCLINATION="28;-22;" ID="Arrow_ID_1105816510" STARTARROW="None" STARTINCLINATION="113;3;"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1504962176894" FOLDED="true" ID="ID_1173896337" MODIFIED="1518487921073" TEXT="Sprachdesign...?">
<icon BUILTIN="button_ok"/>
<node CREATED="1504962191564" ID="ID_967497234" MODIFIED="1518487921073" TEXT="Basis">
<node CREATED="1504962330154" ID="ID_242817654" MODIFIED="1518487921073" TEXT="Zuweisung eines Tokens"/>
<node CREATED="1504962335321" ID="ID_1453600135" MODIFIED="1518487921073" TEXT="Token liegt als Konstante definiert vor"/>
<node CREATED="1504962353566" ID="ID_665223755" MODIFIED="1518487921073" TEXT="insgeheim ist das Token ein Funktor"/>
</node>
<node CREATED="1504962218409" ID="ID_1024382518" MODIFIED="1518487921073" TEXT="Eigenschaften">
<node CREATED="1504962376172" ID="ID_1142953512" MODIFIED="1518487921073" TEXT="geringe Komplexit&#xe4;t"/>
<node CREATED="1504962382427" ID="ID_931743673" MODIFIED="1518487921073" TEXT="Token k&#xf6;nnen konstante Parameter nehmen"/>
<node CREATED="1504962405768" ID="ID_1340772990" MODIFIED="1518487921073" TEXT="einseitg Implementierungs-gebunden"/>
<node CREATED="1504962420549" ID="ID_553833506" MODIFIED="1518487921073" TEXT="ben&#xf6;tigt explizite Typedefs"/>
</node>
<node CREATED="1504962222248" ID="ID_1699830751" MODIFIED="1518487921073" TEXT="Implementierung">
<node CREATED="1504962230111" ID="ID_1779805843" MODIFIED="1518487921073" TEXT="interne DSL"/>
<node CREATED="1504962233718" ID="ID_949042440" MODIFIED="1518487921073" TEXT="ist opaque"/>
<node CREATED="1504962251844" ID="ID_1229791291" MODIFIED="1518487921073" TEXT="Effizienz">
<linktarget COLOR="#8e79a4" DESTINATION="ID_1229791291" ENDARROW="Default" ENDINCLINATION="16;-93;" ID="Arrow_ID_277133142" SOURCE="ID_141842675" STARTARROW="None" STARTINCLINATION="133;0;"/>
<node CREATED="1504831930030" ID="ID_1191902349" MODIFIED="1533608413773" TEXT="double dispatch?">
<linktarget COLOR="#6b768e" DESTINATION="ID_1191902349" ENDARROW="Default" ENDINCLINATION="28;-22;" ID="Arrow_ID_1105816510" SOURCE="ID_1380298925" STARTARROW="None" STARTINCLINATION="113;3;"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1504832179925" ID="ID_878950103" MODIFIED="1518487921073" TEXT="w&#xe4;re akzeptabel"/>
<node CREATED="1504831934790" ID="ID_1800843653" MODIFIED="1576282358110" TEXT="aber etwas &#xfc;bertrieben...">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...es ist im Rahmen;
    </p>
    <p>
      denn wir akzeptieren <i>double dispatch</i>&#160;sogar in der Diff-Anwendung,
    </p>
    <p>
      welche viel h&#228;ufiger l&#228;uft, als dieser View-Zugriff hier.
    </p>
    <p>
      
    </p>
    <p>
      Allerdings, die <i>doppelte</i>&#160;Indirektion ist nicht grunds&#228;tzlich notwendig hier,
    </p>
    <p>
      da wir nur einen einzigen Anwendungsfall haben. Die zweite Indirektion in jedem Aufruf
    </p>
    <p>
      bewirkt nur eine Entkoppelung vom Implementierungs-Kontext
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1504832266793" ID="ID_1279692021" MODIFIED="1533608413774" TEXT="einfache Funktoren?">
<icon BUILTIN="button_ok"/>
<node CREATED="1504832394952" ID="ID_85672659" MODIFIED="1518487921073">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      wir brauchen keine <i>Token</i>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1504832413997" ID="ID_439230153" MODIFIED="1576282358110" TEXT="namentlich bekannte Definitionen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ....anders als im Diff-Framework
    </p>
    <p>
      senden wir hier keine beliebigen Nachrichten,
    </p>
    <p>
      sondern interpretieren jeweils nur eine einzige feste Konfiguration
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1504832476365" ID="ID_799285654" MODIFIED="1518487921073" TEXT="mit der Implementierungsfunktion initialisiert"/>
<node CREATED="1504832511688" ID="ID_673872785" MODIFIED="1518487921073" TEXT="Voraussetzung: sinnvolle Primitive">
<arrowlink COLOR="#b16174" DESTINATION="ID_879982156" ENDARROW="Default" ENDINCLINATION="154;-219;" ID="Arrow_ID_1853267431" STARTARROW="None" STARTINCLINATION="-401;0;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1504832752113" ID="ID_1801527547" MODIFIED="1518487921073" TEXT="Struktur">
<node CREATED="1504832762680" HGAP="68" ID="ID_879982156" MODIFIED="1518487921073" TEXT="Primitive" VSHIFT="-16">
<cloud COLOR="#ebd5a6"/>
<linktarget COLOR="#b16174" DESTINATION="ID_879982156" ENDARROW="Default" ENDINCLINATION="154;-219;" ID="Arrow_ID_1853267431" SOURCE="ID_673872785" STARTARROW="None" STARTINCLINATION="-401;0;"/>
<icon BUILTIN="pencil"/>
<node CREATED="1504884422206" ID="ID_1738943559" MODIFIED="1518487921073" TEXT="Anforderungen">
<node CREATED="1504884432700" ID="ID_1124930479" MODIFIED="1533608413776" TEXT="wir brauchen">
<node CREATED="1504884465448" ID="ID_158939863" MODIFIED="1518487921073" TEXT="schlie&#xdf;lich.... Aufruf an den PanelManager"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1504884487533" ID="ID_1578364370" MODIFIED="1561827465183" TEXT="Art des Aufrufes">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1504885358585" ID="ID_1662504157" MODIFIED="1518487921073" TEXT="erzeuge neu in Panel(coord)"/>
<node CREATED="1504885435351" ID="ID_1583789854" MODIFIED="1518487921073" TEXT="ersetze in Panel(coord)"/>
<node CREATED="1504885503118" ID="ID_883040433" MODIFIED="1518487921073" TEXT="entferne view(ID) aus Panel(coord)"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1504885554399" ID="ID_1868485493" MODIFIED="1561827465183">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <i>Allokator</i>&#160;pro Typ
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1504885680095" FOLDED="true" ID="ID_1828531407" MODIFIED="1561827483832" TEXT="sicherstellen">
<node CREATED="1504885686470" ID="ID_450596618" MODIFIED="1518487921073" TEXT="-- nix --"/>
<node CREATED="1504885692389" ID="ID_735840491" MODIFIED="1518487921073" TEXT="global einer"/>
<node CREATED="1504885708291" ID="ID_304260062" MODIFIED="1518487921073" TEXT="limit pro Fenster"/>
</node>
<node CREATED="1504886385928" ID="ID_894995512" MODIFIED="1518487921073" TEXT="Koordinaten finden...">
<arrowlink COLOR="#21428c" DESTINATION="ID_660502374" ENDARROW="Default" ENDINCLINATION="30;-48;" ID="Arrow_ID_900798705" STARTARROW="None" STARTINCLINATION="158;0;"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1504886036743" ID="ID_1013293844" MODIFIED="1561827465184" TEXT="UI-Koordinaten">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1504886051389" ID="ID_1177567162" MODIFIED="1518487921073" TEXT="Tupel {Fenster, Perspektive, Panel, Gruppe, Pfad}"/>
<node CREATED="1504886084393" ID="ID_28488269" MODIFIED="1576282358109" TEXT="optionale Komponenten">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...wir brauchen eine Repr&#228;sentation,
    </p>
    <p>
      um auszudr&#252;cken, da&#223; gewissen Angaben ausgelassen wurden
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1504886119604" ID="ID_206635297" MODIFIED="1518487921073" TEXT="komplexes Thema">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1504885799423" FOLDED="true" ID="ID_660502374" MODIFIED="1561827483833" TEXT="coordinate resolver">
<linktarget COLOR="#21428c" DESTINATION="ID_660502374" ENDARROW="Default" ENDINCLINATION="30;-48;" ID="Arrow_ID_900798705" SOURCE="ID_894995512" STARTARROW="None" STARTINCLINATION="158;0;"/>
<node CREATED="1504885810485" FOLDED="true" ID="ID_822801746" MODIFIED="1561827482928" TEXT="Fenster">
<node CREATED="1504885841193" ID="ID_202708982" MODIFIED="1518487921073" TEXT="by ID"/>
<node CREATED="1504885820724" ID="ID_1450511748" MODIFIED="1518487921073" TEXT="erstes"/>
<node CREATED="1504885827803" ID="ID_1198849275" MODIFIED="1518487921073" TEXT="aktuelles"/>
</node>
<node CREATED="1504885855551" ID="ID_812520157" MODIFIED="1518487921073" TEXT="match Perspektive"/>
<node CREATED="1504885875884" FOLDED="true" ID="ID_1808427553" MODIFIED="1561827482928" TEXT="Panel">
<node CREATED="1504885879652" ID="ID_1434158169" MODIFIED="1518487921073" TEXT="hasPanel(Window)"/>
<node CREATED="1504885976847" ID="ID_290757972" MODIFIED="1518487921073" TEXT="createPanel"/>
</node>
<node CREATED="1504886006459" FOLDED="true" ID="ID_1307875760" MODIFIED="1561827482928" TEXT="group">
<node CREATED="1504886010442" ID="ID_1660557914" MODIFIED="1518487921073" TEXT="panel has group"/>
</node>
</node>
<node CREATED="1505420642387" ID="ID_9234158" MODIFIED="1522937622171" TEXT="UI-Koordinaten Builder-DSL">
<icon BUILTIN="idea"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node CREATED="1504886210096" ID="ID_1980896942" MODIFIED="1533608413780" TEXT="locate -&gt;">
<node CREATED="1504886227678" ID="ID_1936525982" MODIFIED="1518487921073" TEXT="existiert | machbar | unm&#xf6;glich"/>
<node CREATED="1504959598053" ID="ID_952692651" MODIFIED="1518487921073" TEXT="Zielkoordinaten"/>
</node>
<node CREATED="1504959603212" ID="ID_627664382" MODIFIED="1533608413780" TEXT="alloc -&gt;">
<node CREATED="1504959659068" ID="ID_389794808" MODIFIED="1518487921073" TEXT="allocator(Zielkoordinaten, managementScope, limit)"/>
<node CREATED="1504959829510" ID="ID_570145960" MODIFIED="1518487921073" TEXT="POST: neuer / alter View unter Zielkoordinaten erreichbar"/>
<node CREATED="1504959871472" ID="ID_864423184" MODIFIED="1518487921073" TEXT="ggfs rekonfigurieren..."/>
</node>
<node CREATED="1504961752279" ID="ID_361507996" MODIFIED="1533608413780" TEXT="Signaturen">
<node CREATED="1504961759077" ID="ID_627682268" MODIFIED="1518487921073" TEXT="locate: UICoord"/>
<node CREATED="1504961784098" ID="ID_268457753" MODIFIED="1518487921073" TEXT="count: UICoord(UICoord)"/>
</node>
</node>
<node CREATED="1504962005981" ID="ID_1955013070" MODIFIED="1518487921073" TEXT="Spec.locate">
<node CREATED="1504962498963" ID="ID_1263067927" MODIFIED="1518487921073" TEXT="firstWindow"/>
<node CREATED="1504962486589" ID="ID_246663472" MODIFIED="1518487921073" TEXT="currentWindow"/>
<node CREATED="1504962506970" ID="ID_726895192" MODIFIED="1518487921073" TEXT="perspective(id)"/>
<node CREATED="1504962522800" ID="ID_224266262" MODIFIED="1518487921074" TEXT="panel(id)"/>
<node CREATED="1504962530335" ID="ID_465095301" MODIFIED="1518487921074" TEXT="existingPanel(id)"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1504962643384" ID="ID_1610178620" MODIFIED="1533608413781" TEXT="existingGroup">
<icon BUILTIN="help"/>
<node CREATED="1504962664781" ID="ID_261278011" MODIFIED="1518487921074" TEXT="ist das implementierbar?"/>
<node CREATED="1504962671884" ID="ID_583107872" MODIFIED="1518487921074" TEXT="braucht verdeckten Parameter"/>
</node>
</node>
<node CREATED="1504962013068" ID="ID_1352068125" MODIFIED="1518487921074" TEXT="Spec.alloc">
<node CREATED="1504962685443" ID="ID_663273997" MODIFIED="1518487921074" TEXT="unlimited"/>
<node CREATED="1504962692881" ID="ID_261391829" MODIFIED="1518487921074" TEXT="onlyOne"/>
<node CREATED="1504962700536" ID="ID_1061344108" MODIFIED="1518487921074" TEXT="limitPerWindow(cnt)"/>
</node>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1506034501537" FOLDED="true" ID="ID_262802757" MODIFIED="1561827465188" TEXT="TODO">
<icon BUILTIN="flag-pink"/>
<node CREATED="1506034518068" ID="ID_1413583873" MODIFIED="1518487921074" TEXT="ViewSpecDSL wird f&#xfc;r Location Spec zust&#xe4;ndig"/>
<node CREATED="1506034529729" ID="ID_1906856590" MODIFIED="1518487921074" TEXT="Keine Generics mehr notwendig"/>
<node CREATED="1506034536976" ID="ID_760545085" MODIFIED="1522937397270" TEXT="locationSpec ist direkt eine UICoord">
<icon BUILTIN="button_cancel"/>
<node CREATED="1506114845775" ID="ID_98017975" MODIFIED="1518487921074" TEXT="mu&#xdf; DSL-Elemente unterst&#xfc;tzen"/>
<node CREATED="1506034566805" ID="ID_726919191" MODIFIED="1533608413782" TEXT="ODER-Behandlung wandert in UICoord">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1515632006668" ID="ID_1085098385" MODIFIED="1518487921074" TEXT="wirklich?">
<icon BUILTIN="broken-line"/>
</node>
<node CREATED="1515632050143" ID="ID_1858706501" MODIFIED="1518487921074">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Alternative: wrap UI-Coord,
    </p>
    <p>
      thin augmentation layer
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1506114863020" ID="ID_1749053457" MODIFIED="1518487921074" TEXT="Problem: existingPanel(id)">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1522937399796" ID="ID_257379896" MODIFIED="1522937420005" TEXT="locationSpec wrappt">
<node CREATED="1522937421353" ID="ID_1526265712" MODIFIED="1522937428532" TEXT="LocationRule"/>
<node CREATED="1522937429384" ID="ID_159014153" MODIFIED="1522937437674" TEXT="Satz von Einzelregeln"/>
<node CREATED="1522937438358" ID="ID_1221727561" MODIFIED="1522937444145" TEXT="jede von diesen ist ein UICoord"/>
</node>
<node CREATED="1506120453114" ID="ID_1626834388" MODIFIED="1518487921074" TEXT="abgek&#xfc;rzte Schreibweise f&#xfc;r Allocator-Spec"/>
<node CREATED="1506034548376" ID="ID_36109866" MODIFIED="1522937474269" TEXT="count -&gt; umbenennen in alloc">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1522937492519" ID="ID_996676171" MODIFIED="1522937502079" TEXT="generischen Aufrufmechanismus kl&#xe4;ren">
<icon BUILTIN="pencil"/>
</node>
</node>
<node CREATED="1504833110793" ID="ID_10881417" MODIFIED="1518487921074" TEXT="Ausdr&#xfc;cke">
<node CREATED="1504833126079" FOLDED="true" ID="ID_286801467" MODIFIED="1561827465196" TEXT="konkret">
<cloud COLOR="#e6d0a4"/>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="pencil"/>
<node CREATED="1504833146196" ID="ID_278904211" MODIFIED="1533608413783" TEXT="Timeline">
<node CREATED="1504833174961" ID="ID_1294462811" MODIFIED="1518487921074" TEXT="im Timeline-Panel der Gruppe hinzuf&#xfc;gen"/>
<node CREATED="1504882791007" ID="ID_1520721786" MODIFIED="1518487921074">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      alloc = unlimited
    </p>
    <p>
      locate = panel(timeline)
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1504833569692" ID="ID_1069272084" MODIFIED="1533608413809" TEXT="Viewer">
<node CREATED="1504834559240" ID="ID_423545167" MODIFIED="1518487921074" TEXT="nur ein einziger(global)"/>
<node CREATED="1504883102734" ID="ID_81147050" MODIFIED="1518487921074">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      alloc = onlyOne
    </p>
    <p>
      locate = external(beamer)
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;or perspective(mediaView).panel(viewer)
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;or existingPanel(viewer)
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;or firstWindow().panel(viewer)
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1504834569831" ID="ID_1909335075" MODIFIED="1518487921074" TEXT="maximal 2 Viewer Panel"/>
<node CREATED="1504883107916" ID="ID_1351734300" MODIFIED="1518487921074">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      alloc = limitPerWindow(2)
    </p>
    <p>
      locate = perspective(edit).existingPanel(viewer)
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;or currentWindow().existingPanel(viewer)
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;or existingPanel(viewer)
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;or panel(viewer)
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1504833572687" ID="ID_715257949" MODIFIED="1533608413811" TEXT="(Asset)Bin">
<node CREATED="1504834228100" ID="ID_189081279" MODIFIED="1518487921074">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      im Asset-Panel der <i>jeweiligen</i>&#160;Gruppe hinzuf&#252;gen
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1504883110076" ID="ID_199732103" MODIFIED="1518487921074">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      alloc = unlimited
    </p>
    <p>
      locate = currentWindow().perspective(edit).existingPanel(asset).existingGroup()
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;or perspective(asset)panel(asset)
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;or firstWindow().panel(asset)
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1504833574246" ID="ID_1680764695" MODIFIED="1533608413812" TEXT="FehlerLog">
<node CREATED="1504834859584" ID="ID_693499241" MODIFIED="1518487921074" TEXT="im aktuellen Infobox-Panel"/>
<node CREATED="1504883112068" ID="ID_308640581" MODIFIED="1518487921074">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      alloc = limitPerWindow(1)
    </p>
    <p>
      locate = currentWindow().existingPanel(infobox)
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;or firstWindow().panel(infobox)
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1504833575700" ID="ID_1341951504" MODIFIED="1533608413812" TEXT="Playcontrol">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1504883115283" ID="ID_236325043" MODIFIED="1518487921075" TEXT="?">
<icon BUILTIN="help"/>
</node>
</node>
</node>
<node CREATED="1504880643748" ID="ID_1148134938" MODIFIED="1518487921075" TEXT="Design">
<node CREATED="1504880653395" ID="ID_110525549" MODIFIED="1518487921075" TEXT="Regel-artig"/>
<node CREATED="1504880660666" ID="ID_959703053" MODIFIED="1533608413814" TEXT="mit Pr&#xe4;zedenz">
<node CREATED="1504880672873" ID="ID_355744291" MODIFIED="1518487921075" TEXT="Liste von Definitionen"/>
<node CREATED="1504880685783" ID="ID_1363213536" MODIFIED="1518487921075" TEXT="vom Speziellsten zum Allgemeinen"/>
<node CREATED="1504880722394" ID="ID_1620814124" MODIFIED="1561827465196">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Voraussetzung: <i>Anwendbarkeit</i>&#160;erkennen
    </p>
  </body>
</html></richcontent>
<node CREATED="1515632134915" ID="ID_1701452111" MODIFIED="1518487921075" TEXT="UICoordResolver kann das">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1504881079778" FOLDED="true" ID="ID_1944767932" MODIFIED="1518487921075" TEXT="Form">
<node CREATED="1504881091345" ID="ID_453622973" MODIFIED="1518487921075" TEXT="Menge von Spezifikationen"/>
<node CREATED="1504881104919" ID="ID_1302649814" MODIFIED="1518487921075" TEXT="diese sind inh&#xe4;rent getypt"/>
<node CREATED="1504881124612" ID="ID_41842721" MODIFIED="1518487921075" TEXT="Spezifikation per Zuweisung"/>
<node CREATED="1504881139794" FOLDED="true" ID="ID_1982949721" MODIFIED="1518487921075" TEXT="zugewiesener Ausdruck ist passend getypt">
<node CREATED="1506120341257" ID="ID_1629432417" MODIFIED="1533608413815" TEXT="Loaction-Spec">
<node CREATED="1506120349336" ID="ID_1516960868" MODIFIED="1518487921075" TEXT="Menge von UI-Koordinaten"/>
<node CREATED="1506120361846" ID="ID_1024931059" MODIFIED="1518487921075" TEXT="unterst&#xfc;tzt Alternativen"/>
<node CREATED="1506120367605" ID="ID_1489367458" MODIFIED="1518487921075" TEXT="w&#xe4;hlt den ersten anwendbaren"/>
</node>
<node CREATED="1506120374116" ID="ID_1552148308" MODIFIED="1533608413815" TEXT="Allocator-Def">
<node CREATED="1506120380940" ID="ID_1553891423" MODIFIED="1518487921075" TEXT="ein Funktor UICorrd(UIcoord)"/>
<node CREATED="1506120391506" ID="ID_1217740236" MODIFIED="1518487921075" TEXT="Semantik: nimmt Spec und erzeugt konkretes Ziel"/>
<node CREATED="1506120410863" ID="ID_1205747223" MODIFIED="1561827465197" TEXT="Allocaotor-Specs">
<node CREATED="1506120420910" ID="ID_6299376" MODIFIED="1518487921075" TEXT="Hilfs-Tokens"/>
<node CREATED="1506120425773" ID="ID_195710124" MODIFIED="1518487921075" TEXT="partielle Funktionsanwendung">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
<node CREATED="1504881149417" ID="ID_178442113" MODIFIED="1518487921075" TEXT="Alternativen">
<node CREATED="1504881193043" FOLDED="true" ID="ID_1759689335" MODIFIED="1533608413816" TEXT="Komma-Operator">
<icon BUILTIN="button_cancel"/>
<node CREATED="1504881756073" ID="ID_1341009121" MODIFIED="1518487921075" TEXT="niedrigere Pr&#xe4;zedenz als ="/>
<node CREATED="1504882453091" ID="ID_870917199" MODIFIED="1561827465198" TEXT="damit sehr einfach zu implementieren">
<icon BUILTIN="idea"/>
<node CREATED="1504882554718" ID="ID_744764331" MODIFIED="1518487921075" TEXT="weil auf dem DSL-Proxy"/>
<node CREATED="1504882560202" ID="ID_1190541919" MODIFIED="1518487921075" TEXT="egal, wenn beide Seiten der Zuweisung DSL sind"/>
<node CREATED="1504882584218" ID="ID_790570102" MODIFIED="1518487921075">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      was hier <i>vielleicht</i>&#160;der Fall sein k&#246;nnte
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1504882467714" ID="ID_759428035" MODIFIED="1518487921075" TEXT="bedeutet &quot;and then&quot; in Logik-Programmierung">
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node CREATED="1504881197490" ID="ID_1696182789" MODIFIED="1533608413818" TEXT="Oder-Operator">
<icon BUILTIN="button_ok"/>
<node CREATED="1504882423975" ID="ID_884614259" MODIFIED="1518487921075" TEXT="h&#xf6;here Pr&#xe4;zedenz als ="/>
<node CREATED="1504882434846" ID="ID_1018309959" MODIFIED="1561827465198" TEXT="zwei Alternativen">
<arrowlink COLOR="#1f6dc8" DESTINATION="ID_986692736" ENDARROW="Default" ENDINCLINATION="-13;-31;" ID="Arrow_ID_1057642367" STARTARROW="None" STARTINCLINATION="88;6;"/>
<node CREATED="1504882621302" ID="ID_1942501913" MODIFIED="1518487921075" TEXT="or"/>
<node CREATED="1504882633268" ID="ID_1285507370" MODIFIED="1518487921075" TEXT="|"/>
</node>
<node CREATED="1504882529890" ID="ID_233096485" MODIFIED="1561827465198" TEXT="semantisch klar">
<icon BUILTIN="yes"/>
<node CREATED="1504882657576" ID="ID_986692736" MODIFIED="1518487921075" TEXT="beide Alternativen bieten">
<linktarget COLOR="#1f6dc8" DESTINATION="ID_986692736" ENDARROW="Default" ENDINCLINATION="-13;-31;" ID="Arrow_ID_1057642367" SOURCE="ID_1018309959" STARTARROW="None" STARTINCLINATION="88;6;"/>
</node>
<node CREATED="1504882665519" ID="ID_590443599" MODIFIED="1518487921075" TEXT="numerische Auswertung auszuschlie&#xdf;en">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node COLOR="#990000" CREATED="1517970380222" ID="ID_1663499246" MODIFIED="1561827465199" TEXT="trickreich zu implementieren">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1517970403323" ID="ID_676104700" MODIFIED="1518487921075" TEXT="...wofern &#xfc;berhaupt m&#xf6;glich"/>
<node CREATED="1517970410690" ID="ID_1716625175" MODIFIED="1576282358109" TEXT="Problem sind die LocationClauses">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      wir haben nicht einfach UI-Coordinaten als DSl-Elemente,
    </p>
    <p>
      sondern einzelne Klauseln, die allerdings jeweils eine UI-Coord wrappen.
    </p>
    <p>
      
    </p>
    <p>
      Wenn man jedoch, rein syntaktisch zu schreiben beginnt &quot;UICoord::window()&quot;
    </p>
    <p>
      dann bekommt man einen UICoord::Builder&#160;&#160;und das ist noch keine Klausel!
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="broken-line"/>
</node>
<node COLOR="#281977" CREATED="1517971193343" ID="ID_1413272427" MODIFIED="1518487921075" TEXT="vielleicht mit freiem OR-Operator?">
<arrowlink COLOR="#55618e" DESTINATION="ID_1299498209" ENDARROW="Default" ENDINCLINATION="115;1000;" ID="Arrow_ID_1706569145" STARTARROW="None" STARTINCLINATION="561;-39;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="help"/>
</node>
<node COLOR="#338800" CREATED="1522937551446" ID="ID_1652249088" MODIFIED="1522937563222" TEXT="genau dieses + implizite Umwandlung">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1504831421266" ID="ID_1792240475" MODIFIED="1518487921075" TEXT="Zweck und Ziel">
<icon BUILTIN="info"/>
<node CREATED="1504831462636" ID="ID_252411082" MODIFIED="1518487921075" TEXT="Verhaltensmuster in ein Layout einbringen"/>
<node CREATED="1504831510806" ID="ID_834114445" MODIFIED="1518487921075" TEXT="zun&#xe4;chst sind Layouts eine fest vorgegeben"/>
<node CREATED="1504831537746" ID="ID_692369391" MODIFIED="1518487921075" TEXT="sp&#xe4;ter k&#xf6;nnte das user-Konfigurierbar werden">
<node CREATED="1504831564095" ID="ID_1860813217" MODIFIED="1518487921075" TEXT="per Einrichtungs UI"/>
<node CREATED="1504831577317" ID="ID_1281872136" MODIFIED="1518487921075" TEXT="als textuelle Konfiguration"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1523019202064" FOLDED="true" HGAP="-88" ID="ID_1224438713" MODIFIED="1561827465213" TEXT="Low-Level-Zugriff" VSHIFT="93">
<arrowlink COLOR="#48678b" DESTINATION="ID_435980488" ENDARROW="Default" ENDINCLINATION="-1768;-2819;" ID="Arrow_ID_689216354" STARTARROW="Default" STARTINCLINATION="309;919;"/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1523023060481" ID="ID_1061103814" MODIFIED="1523023064036" TEXT="Zweck">
<node CREATED="1523020311838" ID="ID_118722698" MODIFIED="1523020315553" TEXT="Bindeglied">
<node CREATED="1523020317117" ID="ID_36029855" MODIFIED="1523020327967" TEXT="UI-Koordinaten"/>
<node CREATED="1523020328651" ID="ID_57107983" MODIFIED="1523020334087" TEXT="Component Views"/>
<node CREATED="1523020334770" ID="ID_1169326637" MODIFIED="1523020339014" TEXT="konkrete Widgets"/>
</node>
<node CREATED="1523023241752" ID="ID_1541233512" MODIFIED="1523023254890">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Schicht <i>unter</i>&#160;dem ViewLocator
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1523023256246" ID="ID_1600604589" MODIFIED="1523023271295" TEXT="UI-Koordinaten -&gt;">
<node CREATED="1523023272292" ID="ID_81266590" MODIFIED="1523023288805" TEXT="konkretes Element erreichen"/>
<node CREATED="1523023289345" ID="ID_625415004" MODIFIED="1523023295980" TEXT="konkretes Element erzeugen"/>
</node>
</node>
<node CREATED="1523028361507" ID="ID_393788551" MODIFIED="1523028366222" TEXT="Abstraktion">
<node CREATED="1523028367338" ID="ID_204804362" MODIFIED="1523051167969" TEXT="ElementAccess">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
</node>
<node CREATED="1523028460629" ID="ID_683539946" MODIFIED="1523028462433" TEXT="Service">
<node CREATED="1523028463213" ID="ID_795295203" MODIFIED="1523030738854" TEXT="lib::Depend&lt;ElementAccess&gt;"/>
<node CREATED="1523030678458" ID="ID_1970353135" MODIFIED="1523030681637" TEXT="mockbar"/>
</node>
<node CREATED="1523055325343" ID="ID_1512953348" MODIFIED="1523055328331" TEXT="Dienste">
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1523055329159" ID="ID_1316858206" MODIFIED="1523055337404" TEXT="noch nicht wirklich klar">
<icon BUILTIN="clanbomber"/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1523118112181" HGAP="58" ID="ID_1335551290" MODIFIED="1523118278708" TEXT="noch nicht klar, wer diesen Dienst bieten kann" VSHIFT="2">
<arrowlink COLOR="#ef9f88" DESTINATION="ID_1743128010" ENDARROW="Default" ENDINCLINATION="-2099;1258;" ID="Arrow_ID_175864704" STARTARROW="Default" STARTINCLINATION="-20;-1838;"/>
<icon BUILTIN="flag-pink"/>
</node>
<node CREATED="1523055339293" ID="ID_805375580" MODIFIED="1523055357236" TEXT="erst mal ein Hilfsmittel f&#xfc;r das Design">
<icon BUILTIN="idea"/>
<node CREATED="1523055360002" ID="ID_1183834156" MODIFIED="1523055363894" TEXT="yet another abstraction"/>
</node>
</node>
</node>
<node CREATED="1523059565187" ID="ID_685856143" MODIFIED="1523059569334" TEXT="Implementierung">
<node COLOR="#435e98" CREATED="1523059570619" FOLDED="true" ID="ID_1720611397" MODIFIED="1525124215025" TEXT="Problem: Typisierung">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1523059593831" ID="ID_1175935224" MODIFIED="1576282358108" TEXT="will mich nicht auf eine Basisklasse festlegen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      model::Tangible ist sch&#246;n,
    </p>
    <p>
      aber ich wei&#223; nicht, ob das nicht zu eingeschr&#228;nkt ist.
    </p>
    <p>
      Beispielsweise werden Panel oder WorkspaceWindow ganz sicher keine Tangibles sein,
    </p>
    <p>
      aber es k&#246;nnte durchaus sein, da&#223; man auf sie generisch zugreifen m&#246;chte
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1523059669693" ID="ID_11075132" MODIFIED="1523227985279" STYLE="fork" TEXT="lib::AccessCasted">
<icon BUILTIN="button_cancel"/>
<node CREATED="1523227992122" ID="ID_1284848955" MODIFIED="1523227996485" TEXT="geht nicht direkt"/>
<node CREATED="1523227997217" ID="ID_82006262" MODIFIED="1523228003188" TEXT="void* hat kein RTTI"/>
<node CREATED="1523228003896" ID="ID_1572923964" MODIFIED="1523228016741" TEXT="es gibt keine gemeinsame Basisklasse">
<icon BUILTIN="broken-line"/>
</node>
</node>
<node CREATED="1523229374586" ID="ID_1962044591" MODIFIED="1523229381985" TEXT="sigc::trackable">
<icon BUILTIN="button_cancel"/>
<node CREATED="1523229383305" ID="ID_1786273483" MODIFIED="1523229392595" TEXT="hat kein RTTI"/>
<node CREATED="1523229393567" ID="ID_1067337253" MODIFIED="1523229403706" TEXT="wohl bewu&#xdf;te Design-Entscheidung"/>
</node>
<node CREATED="1523228995279" ID="ID_924400738" MODIFIED="1523229065936" TEXT="mu&#xdf; mich wohl auf eine Menge von Basis-Typen festlegen">
<icon BUILTIN="smily_bad"/>
<node CREATED="1523229075403" ID="ID_808081590" MODIFIED="1523229080671" TEXT="model::Tangible"/>
<node CREATED="1523229081683" ID="ID_766417564" MODIFIED="1523229084838" TEXT="Gtk::Widget"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1523059717622" FOLDED="true" ID="ID_598506387" MODIFIED="1525124215028" TEXT="Grundstruktur">
<icon BUILTIN="info"/>
<node CREATED="1523059685611" ID="ID_1274858318" MODIFIED="1523059711165" TEXT="es gibt bereits lib::Result">
<arrowlink COLOR="#fdfbd7" DESTINATION="ID_673181142" ENDARROW="Default" ENDINCLINATION="-862;-131;" ID="Arrow_ID_956072053" STARTARROW="None" STARTINCLINATION="-678;66;"/>
<icon BUILTIN="idea"/>
<node CREATED="1523222317789" ID="ID_223201063" MODIFIED="1523222325262" TEXT="ist ein Either-Typ">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1523222326668" ID="ID_1906453858" MODIFIED="1523222336646" TEXT="bietet bereits bool-Abfrage / Exception"/>
<node CREATED="1523222338258" ID="ID_1400754551" MODIFIED="1523224303183" TEXT="pa&#xdf;t perfekt">
<arrowlink COLOR="#97db97" DESTINATION="ID_1568226158" ENDARROW="Default" ENDINCLINATION="226;0;" ID="Arrow_ID_26754858" STARTARROW="None" STARTINCLINATION="277;-10;"/>
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node CREATED="1523224208591" FOLDED="true" ID="ID_1896914767" MODIFIED="1523225015564" TEXT="geht&apos;s noch einfacher?">
<icon BUILTIN="button_cancel"/>
<node CREATED="1523224222477" ID="ID_769675431" MODIFIED="1523224258636" TEXT="reinen Pointer liefern?"/>
<node CREATED="1523224259839" ID="ID_1984912464" MODIFIED="1576282358108" TEXT="wer braucht Fehler?">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Zwei F&#228;lle sind hier zu unterscheiden:
    </p>
    <ol>
      <li>
        der gew&#252;nschte Wert existiert nicht, und das ist auch das Ergebnis der Anfrage
      </li>
      <li>
        es liegt eine Fehleinsch&#228;tzung der Situation vor, insofern fest mit einem Ergebnis gerechnet wurde
      </li>
    </ol>
    <p>
      In Fall-1 wird man eine bool-Abfrage machen wollen, und man kann auch mit einer false-Antwort umgehen. In Fall-2 dagegen bleibt nur noch der Tod. Und davon ist im Regelfall nicht auszugehen. Im Moment sehe ich Fall-2 als den <b>standard-use-Case</b>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1523224898647" ID="ID_1600596253" MODIFIED="1576282358107" TEXT="zwei nicht-kongruente F&#xe4;lle">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <ul>
      <li>
        im Fall-1 wei&#223; der Client, da&#223; er pr&#252;fen mu&#223;
      </li>
      <li>
        im Fall-2 marschiert der Client einfach durch
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node CREATED="1523224938633" ID="ID_1168693432" MODIFIED="1523225005333" TEXT="SEGFAULT droht">
<icon BUILTIN="messagebox_warning"/>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1523224949440" ID="ID_1408830480" MODIFIED="1523224963825" TEXT="Option/Maybe-Typ notwendig">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1523059729276" ID="ID_117320755" MODIFIED="1523059751029" TEXT="sollte auf die Struktur von LocationQuery hinauslaufen"/>
<node CREATED="1523059751905" ID="ID_345254237" MODIFIED="1523059757668" TEXT="aber mit zus&#xe4;tzlichen Operationen...."/>
</node>
<node CREATED="1523118465853" ID="ID_1546860746" MODIFIED="1523118472608" TEXT="Differenzierung">
<node CREATED="1523118474171" ID="ID_96237584" MODIFIED="1523118480758" TEXT="verschiedene Typen von Aufgaben">
<node CREATED="1523118482458" ID="ID_1606478842" MODIFIED="1523118484694" TEXT="Zugriff"/>
<node CREATED="1523118485802" ID="ID_1745902381" MODIFIED="1523118494781" TEXT="Zugriff + Erzeugen"/>
<node CREATED="1523118498760" ID="ID_290260966" MODIFIED="1523118517809" TEXT="multiplicity kontrollieren"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1523205852655" ID="ID_101568597" MODIFIED="1523205860142" TEXT="Zugriffs-Mechanik">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1523222428901" ID="ID_1793979710" MODIFIED="1523222512561" TEXT="ein rekursiver drill-Down">
<icon BUILTIN="hourglass"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1523222444467" ID="ID_770319889" MODIFIED="1523222512562" TEXT="der Endpunkt wird zug&#xe4;nglich gemacht">
<icon BUILTIN="hourglass"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1523222481262" ID="ID_1485862182" MODIFIED="1523222512562" TEXT="allerdings nur zur Anwendung einer Strategie">
<icon BUILTIN="hourglass"/>
</node>
</node>
<node COLOR="#338800" CREATED="1523222204556" ID="ID_1018012203" MODIFIED="1525124215030" TEXT="Ergebnis-Ausgabe">
<icon BUILTIN="button_ok"/>
<node CREATED="1523222214579" ID="ID_1568226158" MODIFIED="1576282358106" STYLE="fork" TEXT="Feststellung: keine Status-R&#xfc;ckmeldung">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      das mag &#252;berraschend klingen,
    </p>
    <p>
      aber in der (zu erwartenden) Nutzsituation interessiert sich <i>keine Sau</i>&#160;daf&#252;r,
    </p>
    <p>
      was denn nun konkret gemacht wurde, um den Dienst zu erbringen.
    </p>
    <p>
      Die einzig interessante Information ist, ob es <b>gelungen</b>&#160;ist
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#97db97" DESTINATION="ID_1568226158" ENDARROW="Default" ENDINCLINATION="226;0;" ID="Arrow_ID_26754858" SOURCE="ID_1400754551" STARTARROW="None" STARTINCLINATION="277;-10;"/>
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1523222380124" FOLDED="true" ID="ID_1101595897" MODIFIED="1561827465216" TEXT="mu&#xdf; pr&#xfc;fen, ob der Cast m&#xf6;glich ist">
<icon BUILTIN="button_ok"/>
<node CREATED="1523229139923" ID="ID_636796034" MODIFIED="1531584013596" TEXT="Variant?">
<icon BUILTIN="forward"/>
<node COLOR="#338800" CREATED="1523229483619" ID="ID_1116388815" MODIFIED="1523587648174" TEXT="wohl einzige L&#xf6;sung?">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#6c2525" CREATED="1523232748878" ID="ID_153055029" MODIFIED="1523587755516" TEXT="AUA --- geht auch nicht ohne Weiteres">
<icon BUILTIN="broken-line"/>
<node CREATED="1523232788680" ID="ID_849117954" MODIFIED="1523232797628" TEXT="&#xc4;ndert nix am Grundproblem">
<icon BUILTIN="smily_bad"/>
</node>
<node CREATED="1523232798911" ID="ID_351873038" MODIFIED="1523232810481" TEXT="AccessCasted f&#xfc;r Zieltyp"/>
<node CREATED="1523232811805" ID="ID_577095101" MODIFIED="1523232886443" TEXT="l&#xe4;&#xdf;t sich nur bei kompatiblem Basistyp &#xfc;berhaupt instantiieren">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1523232888115" ID="ID_800807629" MODIFIED="1523232908023">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      aber genau das ist hier jeweils nur <i>in einem Fall</i>&#160;gegeben
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1523232932724" ID="ID_386898631" MODIFIED="1533608413821" TEXT="Runtime-Compiletime-Problem">
<node CREATED="1523232945043" ID="ID_45452812" MODIFIED="1523232954053" TEXT="erst zur Laufzeit wissen wir, was zur&#xfc;ckkommt"/>
<node CREATED="1523233007258" ID="ID_1076174983" MODIFIED="1523233019060" TEXT="aber zur Compilezeit m&#xfc;ssen wir schon den Cast vorbereiten"/>
</node>
<node COLOR="#338800" CREATED="1523233031479" ID="ID_1135973571" MODIFIED="1533608413821" TEXT="Idee: Visitor spezialisieren">
<linktarget COLOR="#3f6796" DESTINATION="ID_1135973571" ENDARROW="Default" ENDINCLINATION="-62;1;" ID="Arrow_ID_290291364" SOURCE="ID_1510464943" STARTARROW="None" STARTINCLINATION="8;-34;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1523233049316" ID="ID_278890079" MODIFIED="1523396787384" TEXT="er implementiert &#xfc;berhaupt nur den Fall, der geht">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1523587774453" ID="ID_887720572" MODIFIED="1523587792039" TEXT="in allen anderen F&#xe4;llen bleibt der Result-Proxy leer"/>
</node>
</node>
<node CREATED="1523229496001" ID="ID_190653452" MODIFIED="1523229516738" TEXT="bedeutet...">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1523229517523" ID="ID_1510464943" MODIFIED="1523587856731" TEXT="Variant-Visitor">
<arrowlink COLOR="#3f6796" DESTINATION="ID_1135973571" ENDARROW="Default" ENDINCLINATION="-62;1;" ID="Arrow_ID_290291364" STARTARROW="None" STARTINCLINATION="8;-34;"/>
</node>
<node CREATED="1523587686010" ID="ID_533196954" MODIFIED="1523587697908" TEXT="trickreiches Metaprogramming"/>
<node CREATED="1523229519846" ID="ID_307916731" MODIFIED="1523229533208" TEXT="Einschr&#xe4;nkungen f&#xfc;r die Test-Dummies"/>
</node>
</node>
<node CREATED="1523229147593" ID="ID_1510668106" MODIFIED="1523229476684" TEXT="if-else-Kaskade?">
<icon BUILTIN="button_cancel"/>
</node>
</node>
<node CREATED="1523225025493" ID="ID_1731501078" MODIFIED="1523225070764" TEXT="der interne Aufruf kann einen Pointer liefern">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1523225052314" ID="ID_271482556" MODIFIED="1523587734563" TEXT="die Aufrufschnittstelle stellt NULL-Check sicher">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node CREATED="1523053331956" ID="ID_563797148" MODIFIED="1523053334615" TEXT="Test">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1523053336219" ID="ID_1234019560" MODIFIED="1525124215034" TEXT="ElementAccess_test">
<linktarget COLOR="#43667c" DESTINATION="ID_1234019560" ENDARROW="Default" ENDINCLINATION="-338;-1489;" ID="Arrow_ID_839730277" SOURCE="ID_1539184761" STARTARROW="None" STARTINCLINATION="-530;453;"/>
<icon BUILTIN="hourglass"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1523118534675" ID="ID_669651266" MODIFIED="1523663819813" TEXT="Mock-Implementierung">
<icon BUILTIN="pencil"/>
<node CREATED="1523118577557" ID="ID_1246038265" MODIFIED="1523118589479" TEXT="Mock-Prinzip">
<icon BUILTIN="help"/>
<node CREATED="1523118591395" ID="ID_1571065062" MODIFIED="1523118636465" TEXT="vorgefertigter Response">
<icon BUILTIN="full-1"/>
<node CREATED="1523118640980" ID="ID_866333439" MODIFIED="1523118644680" TEXT="billig"/>
<node CREATED="1523118645363" ID="ID_620926078" MODIFIED="1523118650798" TEXT="bringt mit jetzt schnell weiter"/>
</node>
<node CREATED="1523118600186" ID="ID_1717703636" MODIFIED="1523118638974" TEXT="emulierte Auswertung">
<icon BUILTIN="full-2"/>
<node CREATED="1523118604809" ID="ID_224206639" MODIFIED="1523118612228" TEXT="GenNodeLocationQuery aufbohren?"/>
<node CREATED="1523118613096" ID="ID_169844591" MODIFIED="1523118623074" TEXT="== Vorarbeit f&#xfc;r die sp&#xe4;tere Implementierung"/>
</node>
</node>
<node COLOR="#338800" CREATED="1523663840577" ID="ID_1523982995" MODIFIED="1523670899095" TEXT="Mock-Widget-Erzeugung">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1523663862182" ID="ID_937721725" MODIFIED="1523670907629" TEXT="besser in die Mock-Service-Impl verlegen">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1523663880731" ID="ID_1244735047" MODIFIED="1523670903598" TEXT="von dort nachpr&#xfc;fbar machen">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1523118660882" ID="ID_1452843558" MODIFIED="1523725214734" TEXT="Testf&#xe4;lle">
<icon BUILTIN="hourglass"/>
<node COLOR="#338800" CREATED="1523205670160" ID="ID_649704431" MODIFIED="1523663805752" TEXT="einfacher Zugriff auf existierendes Objekt">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1523205706547" ID="ID_210608554" MODIFIED="1523670915381" TEXT="Zugriff auf Parent-Ebene, ein Kind-Knoten wird erzeugt">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1523205752509" ID="ID_212194424" MODIFIED="1523205775730" TEXT="partielle oder komplette Erzeugung eines Pfades">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1523205740998" ID="ID_1828083346" MODIFIED="1523205777745" TEXT="Limitierte Erzeugung von Kindern">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1523725217249" ID="ID_168041841" MODIFIED="1523725232375" TEXT="bleibt halbfertig liegen">
<icon BUILTIN="yes"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1523726928069" ID="ID_1480266497" MODIFIED="1523726945723" TEXT="#1036 low-level Access implementieren">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1523055378032" ID="ID_406286329" MODIFIED="1525124215035" TEXT="Test-Hilfsmittel">
<linktarget COLOR="#eff1e5" DESTINATION="ID_406286329" ENDARROW="Default" ENDINCLINATION="-2304;344;" ID="Arrow_ID_1832343822" SOURCE="ID_1022913151" STARTARROW="None" STARTINCLINATION="498;45;"/>
<font NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="hourglass"/>
<node CREATED="1523055393950" ID="ID_62932320" MODIFIED="1523055412955" TEXT="TestElementAccess">
<icon BUILTIN="forward"/>
</node>
<node CREATED="1523055422074" ID="ID_1765892157" MODIFIED="1523055430229" TEXT="Fake-Implementierung des Interfaces">
<node CREATED="1523055519972" ID="ID_52044142" MODIFIED="1523055528879" TEXT="k&#xf6;nnte sich mal zu einem Test-Framework auswachsen"/>
<node CREATED="1523055529443" ID="ID_567387345" MODIFIED="1523055536280" TEXT="...aber nicht jetzt">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1523055431649" ID="ID_1190698125" MODIFIED="1523055442076" TEXT="kein GTK dahinter">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="yes"/>
<node CREATED="1523055476638" ID="ID_1252887483" MODIFIED="1523055485333" TEXT="verwende Marker-Dummy-Typen"/>
<node CREATED="1523055489736" ID="ID_1578213763" MODIFIED="1523055499219" TEXT="um polymorphen und generischen Zugang zu pr&#xfc;fen"/>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1489777673022" HGAP="-43" ID="ID_873069403" MODIFIED="1557498707220" TEXT="Zugang zu Proc-Commands" VSHIFT="34">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1489777702971" HGAP="125" ID="ID_1780068142" MODIFIED="1557498707220" TEXT="Framework mu&#xdf; geschaffen werden" VSHIFT="-42">
<icon BUILTIN="yes"/>
<node COLOR="#338800" CREATED="1489777783120" ID="ID_1439783231" MODIFIED="1557498707220" TEXT="Protokoll f&#xfc;r den Zugang">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1489777837120" ID="ID_466927949" MODIFIED="1557498707220" TEXT="Ort f&#xfc;r Command-Definitionen"/>
<node COLOR="#338800" CREATED="1489777846095" ID="ID_1401258681" MODIFIED="1575131582794" TEXT="Design Proc-Command-Framework vorantreiben">
<arrowlink COLOR="#352c7d" DESTINATION="ID_1622574347" ENDARROW="Default" ENDINCLINATION="-461;-3358;" ID="Arrow_ID_1512127407" STARTARROW="None" STARTINCLINATION="1819;0;"/>
<font NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1489777738462" ID="ID_733673713" MODIFIED="1557498707220" TEXT="angebunden an den InteractionDirector"/>
<node CREATED="1489777748748" ID="ID_1098831130" MODIFIED="1557498707220" TEXT="statisches Front-End: CmdAccessor"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1486763185746" FOLDED="true" HGAP="33" ID="ID_362749694" MODIFIED="1557498707220" TEXT="InteractionDirector" VSHIFT="21">
<arrowlink COLOR="#3b4877" DESTINATION="ID_700485676" ENDARROW="Default" ENDINCLINATION="430;-874;" ID="Arrow_ID_454081114" STARTARROW="Default" STARTINCLINATION="-170;534;"/>
<linktarget COLOR="#798eba" DESTINATION="ID_362749694" ENDARROW="Default" ENDINCLINATION="-218;-590;" ID="Arrow_ID_757867749" SOURCE="ID_1440190469" STARTARROW="None" STARTINCLINATION="15;121;"/>
<linktarget COLOR="#5e4463" DESTINATION="ID_362749694" ENDARROW="Default" ENDINCLINATION="-57;-739;" ID="Arrow_ID_1847127764" SOURCE="ID_474441211" STARTARROW="None" STARTINCLINATION="73;95;"/>
<linktarget COLOR="#683c5b" DESTINATION="ID_362749694" ENDARROW="Default" ENDINCLINATION="-394;0;" ID="Arrow_ID_1979576517" SOURCE="ID_113005643" STARTARROW="None" STARTINCLINATION="-24;-159;"/>
<linktarget COLOR="#1b3863" DESTINATION="ID_362749694" ENDARROW="Default" ENDINCLINATION="-518;1012;" ID="Arrow_ID_959577029" SOURCE="ID_735655054" STARTARROW="Default" STARTINCLINATION="-376;-568;"/>
<icon BUILTIN="pencil"/>
<node CREATED="1486763268223" ID="ID_199328732" MODIFIED="1557498707220" TEXT="nicht der Meister">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
<node CREATED="1486763278189" ID="ID_330558344" MODIFIED="1557498707220" TEXT="aber ein zentrales Bindeglied"/>
<node CREATED="1486763287244" ID="ID_1712681910" MODIFIED="1557498707220" TEXT="zwei Welten">
<node CREATED="1486763292028" ID="ID_1224392598" MODIFIED="1557498707220" TEXT="Modell-struktur == Hierarchie"/>
<node CREATED="1486763303066" ID="ID_1274975607" MODIFIED="1557498707220" TEXT="Interaktion == Fokus und Kontext"/>
</node>
<node CREATED="1486763350764" ID="ID_1309124609" MODIFIED="1557498707220" TEXT="Aufgaben">
<icon BUILTIN="yes"/>
<node CREATED="1486763355739" ID="ID_745725927" MODIFIED="1557498707220" TEXT="Bindung f&#xfc;r Aktionen bereitstellen"/>
<node CREATED="1488566356774" FOLDED="true" ID="ID_969011841" MODIFIED="1557498707220" TEXT="Ankerpunkt zum Bilden der Commands">
<arrowlink COLOR="#706a9a" DESTINATION="ID_1461875887" ENDARROW="Default" ENDINCLINATION="-923;-789;" ID="Arrow_ID_457540370" STARTARROW="None" STARTINCLINATION="867;304;"/>
<node CREATED="1488566405248" ID="ID_355508260" MODIFIED="1557498707220" TEXT="auffinden der Command-IDs">
<node CREATED="1489191528425" ID="ID_1331796226" MODIFIED="1582931241668" TEXT="Neuer Service hierf&#xfc;r in Proc">
<arrowlink COLOR="#584d79" DESTINATION="ID_341428100" ENDARROW="Default" ENDINCLINATION="1864;-1272;" ID="Arrow_ID_879741123" STARTARROW="None" STARTINCLINATION="769;78;"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1488677809297" ID="ID_1520540731" MODIFIED="1557498707220" TEXT="Problem: Zugang / Wiring">
<arrowlink DESTINATION="ID_850989325" ENDARROW="Default" ENDINCLINATION="183;-575;" ID="Arrow_ID_1002016515" STARTARROW="None" STARTINCLINATION="624;264;"/>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node CREATED="1488566427445" ID="ID_567418101" MODIFIED="1557498707220" TEXT="InteractionStateManager">
<node CREATED="1488566447466" ID="ID_1978593319" MODIFIED="1557498707220" TEXT="h&#xe4;ngen darunter"/>
<node CREATED="1488566452538" ID="ID_1569803797" MODIFIED="1557498707220" TEXT="werden transient gebilet"/>
</node>
</node>
<node CREATED="1486763376960" ID="ID_1618020758" MODIFIED="1557498707220" TEXT="Zugang zu den Timelines">
<node COLOR="#338800" CREATED="1480694550601" FOLDED="true" ID="ID_810032444" MODIFIED="1557498707220" TEXT="Timeline injizieren">
<linktarget COLOR="#fec680" DESTINATION="ID_810032444" ENDARROW="Default" ENDINCLINATION="-451;-531;" ID="Arrow_ID_1378803021" SOURCE="ID_1375216048" STARTARROW="None" STARTINCLINATION="345;28;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1539141031692" ID="ID_224638279" MODIFIED="1557498707220" TEXT="Aufruf aus dem TreeMutator-Binding"/>
<node COLOR="#338800" CREATED="1539141043842" FOLDED="true" ID="ID_1475393315" MODIFIED="1557498707220" TEXT="brauche Allocator f&#xfc;r Timelines">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1539141064760" ID="ID_807914812" MODIFIED="1557498707220" TEXT="wo Service ansiedeln">
<icon BUILTIN="help"/>
<node CREATED="1539394478891" ID="ID_1478223120" MODIFIED="1557498707220" TEXT="analog zum Error-Log"/>
<node CREATED="1539394483610" ID="ID_847301374" MODIFIED="1557498707221" TEXT="vorl&#xe4;ufig: WindowLocator -&gt; PanelLoactor"/>
</node>
<node COLOR="#338800" CREATED="1539141076630" ID="ID_399959646" MODIFIED="1557498707221" TEXT="Auspr&#xe4;gung / Platzierung festlegen">
<icon BUILTIN="button_ok"/>
<node CREATED="1539388923323" ID="ID_585499856" MODIFIED="1557498707221" TEXT="Frage: wann wird eine Timeline im GUI repr&#xe4;sentiert?">
<arrowlink COLOR="#c8a1fe" DESTINATION="ID_430199880" ENDARROW="Default" ENDINCLINATION="-629;0;" ID="Arrow_ID_1293894659" STARTARROW="None" STARTINCLINATION="-505;56;"/>
<node CREATED="1539389169498" ID="ID_1287197830" MODIFIED="1557498707221" TEXT="immer?"/>
<node CREATED="1539389172250" ID="ID_1511105173" MODIFIED="1557498707221" TEXT="nur machmal?"/>
<node CREATED="1539389178833" ID="ID_1726056610" MODIFIED="1557498707221" TEXT="wer entscheidet?"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1539389184120" ID="ID_1773551633" MODIFIED="1557498707221" TEXT="vorl&#xe4;ufig: immer">
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1539389396443" ID="ID_1588695969" MODIFIED="1557498707221" TEXT="Konsequenz: Inaktiv == reine UI-Logik">
<node CREATED="1539389417033" ID="ID_1789060953" MODIFIED="1557498707221" TEXT="Schlie&#xdf;en eines Tab"/>
<node CREATED="1539389434086" ID="ID_1428746299" MODIFIED="1557498707221" TEXT="mu&#xdf; das Widget zerst&#xf6;ren"/>
<node CREATED="1539389442477" ID="ID_803437655" MODIFIED="1557498707221" TEXT="TimelineGui wird inaktiv"/>
</node>
<node COLOR="#338800" CREATED="1539394521229" ID="ID_1457306650" MODIFIED="1557498707221" TEXT="den Rest &#xfc;berlassen wir dem TimelinePanel">
<arrowlink COLOR="#6bb2d4" DESTINATION="ID_50363803" ENDARROW="Default" ENDINCLINATION="381;11;" ID="Arrow_ID_1031630897" STARTARROW="None" STARTINCLINATION="-27;76;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1539141131742" ID="ID_1557130599" MODIFIED="1557498707221" TEXT="WLink baut TimelineWidget und verdrahtet Controller">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1539141115961" ID="ID_50363803" MODIFIED="1557498707221" TEXT="TimelineWidget installieren">
<arrowlink COLOR="#7882c8" DESTINATION="ID_1510868551" ENDARROW="Default" ENDINCLINATION="-587;-51;" ID="Arrow_ID_206932394" STARTARROW="None" STARTINCLINATION="-699;0;"/>
<linktarget COLOR="#6bb2d4" DESTINATION="ID_50363803" ENDARROW="Default" ENDINCLINATION="381;11;" ID="Arrow_ID_1031630897" SOURCE="ID_1457306650" STARTARROW="None" STARTINCLINATION="-27;76;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#990000" CREATED="1539141189855" ID="ID_1121710933" MODIFIED="1557498707221" TEXT="Achtung: GUI lebt woanders...">
<arrowlink COLOR="#732647" DESTINATION="ID_385121370" ENDARROW="Default" ENDINCLINATION="93;-27;" ID="Arrow_ID_384022851" STARTARROW="None" STARTINCLINATION="-2;36;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1539258904290" FOLDED="true" ID="ID_803293419" MODIFIED="1557498707221" TEXT="hier ein Platzhalter">
<icon BUILTIN="yes"/>
<node CREATED="1539258936270" FOLDED="true" ID="ID_966612516" MODIFIED="1557498707221" TEXT="was ist eine Timeline hier?">
<node CREATED="1539261019926" ID="ID_566230935" MODIFIED="1557498707221" TEXT="Empfangs-Gegenstelle"/>
<node CREATED="1539261038923" ID="ID_1048882319" MODIFIED="1557498707221" TEXT="diffMutable">
<node CREATED="1539261161651" ID="ID_833363023" MODIFIED="1557498707221" TEXT="forwarding">
<arrowlink DESTINATION="ID_1657820556" ENDARROW="Default" ENDINCLINATION="36;0;" ID="Arrow_ID_149841651" STARTARROW="None" STARTINCLINATION="36;0;"/>
</node>
</node>
<node CREATED="1539261148341" ID="ID_1657820556" MODIFIED="1557498707221" TEXT="Zugang zum UI-Widget">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1657820556" ENDARROW="Default" ENDINCLINATION="36;0;" ID="Arrow_ID_149841651" SOURCE="ID_833363023" STARTARROW="None" STARTINCLINATION="36;0;"/>
</node>
<node CREATED="1539261050602" ID="ID_1069671492" MODIFIED="1557498707221" TEXT="Lebenszyklus-Proxy">
<node CREATED="1539261081830" ID="ID_1986320634" MODIFIED="1557498707221" TEXT="zerst&#xf6;rt UI-Repr&#xe4;sentation kaskadierend"/>
<node CREATED="1539261110498" ID="ID_98327658" MODIFIED="1557498707221" TEXT="wird zum reine Platzhalter wenn UI-Widget verschwindet"/>
</node>
</node>
<node CREATED="1539258947005" ID="ID_1624061939" MODIFIED="1557498707221" TEXT="Thema: Slave-Timeline (vertagt)">
<arrowlink COLOR="#bfb5ce" DESTINATION="ID_1028434909" ENDARROW="Default" ENDINCLINATION="-1311;-1012;" ID="Arrow_ID_1339464508" STARTARROW="None" STARTINCLINATION="505;-47;"/>
<icon BUILTIN="hourglass"/>
</node>
<node COLOR="#338800" CREATED="1539262387431" FOLDED="true" ID="ID_385121370" MODIFIED="1557498707221" TEXT="TimelineGui">
<linktarget COLOR="#732647" DESTINATION="ID_385121370" ENDARROW="Default" ENDINCLINATION="93;-27;" ID="Arrow_ID_384022851" SOURCE="ID_1121710933" STARTARROW="None" STARTINCLINATION="-2;36;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1539262834731" ID="ID_1647910407" MODIFIED="1557498707221" TEXT="basiert auf WLink">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1539262840962" ID="ID_1624846094" MODIFIED="1557498707221" TEXT="delegiert diffMutable">
<arrowlink DESTINATION="ID_1352270227" ENDARROW="Default" ENDINCLINATION="117;0;" ID="Arrow_ID_1672775567" STARTARROW="None" STARTINCLINATION="117;0;"/>
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1539262860719" ID="ID_113907558" MODIFIED="1557498707221" TEXT="ist ein smart-ptr&lt;TimelineWidget&gt;">
<icon BUILTIN="info"/>
</node>
<node COLOR="#338800" CREATED="1539382633847" ID="ID_376948699" MODIFIED="1557498707221" TEXT="h&#xe4;llt die Timeline-ID bereit">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1539270786646" FOLDED="true" ID="ID_1019344552" MODIFIED="1557498707221" TEXT="delegierenden Mutator implementieren">
<icon BUILTIN="button_ok"/>
<node CREATED="1539270801572" ID="ID_1535443502" MODIFIED="1557498707221" TEXT="f&#xfc;r InteractionDirector">
<node CREATED="1539270491013" ID="ID_1136748343" MODIFIED="1576203555715" TEXT="Problem der korrekten Diff-Struktur">
<arrowlink COLOR="#cbada9" DESTINATION="ID_1555798999" ENDARROW="Default" ENDINCLINATION="1135;-119;" ID="Arrow_ID_46239762" STARTARROW="None" STARTINCLINATION="-408;50;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1539382792997" ID="ID_1411304100" MODIFIED="1557498707221" TEXT="im Diff mu&#xdf; jeweils die Root-Track-ID mitkommen"/>
</node>
<node COLOR="#435e98" CREATED="1539270808827" FOLDED="true" ID="ID_1352270227" MODIFIED="1557498707221" TEXT="f&#xfc;r TimelineGui">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1352270227" ENDARROW="Default" ENDINCLINATION="117;0;" ID="Arrow_ID_1672775567" SOURCE="ID_1624846094" STARTARROW="None" STARTINCLINATION="117;0;"/>
<node COLOR="#435e98" CREATED="1539294555064" HGAP="45" ID="ID_1365984217" MODIFIED="1557498707221" TEXT="Problem: diff ignorieren" VSHIFT="23">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1539294576338" ID="ID_485684974" MODIFIED="1557498707221" TEXT="kann das auftreten....?">
<icon BUILTIN="help"/>
<node CREATED="1539294589200" ID="ID_1206613848" MODIFIED="1557498707221" TEXT="ja">
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1539294594367" ID="ID_451112886" MODIFIED="1576282358106" TEXT="wenn InteractionDirector selber ein Diff empf&#xe4;ngt...">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...welches in eine Kind-Timeline absteigt,
    </p>
    <p>
      welche gegenw&#228;rtig im GUI nicht existiert
    </p>
    <p>
      und daher auf &quot;inaktiv&quot; geschaltet ist.
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1539294678444" ID="ID_934706379" MODIFIED="1557498707221" TEXT="TreeMutator scheitert per Default">
<icon BUILTIN="broken-line"/>
</node>
<node COLOR="#338800" CREATED="1539294698801" FOLDED="true" ID="ID_1533611583" MODIFIED="1561827465218" TEXT="also brauche ich einen /dev/null-Mutator">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1539294727470" ID="ID_1958316881" MODIFIED="1539299017213" TEXT="speziellen Binding-Layer fabrizieren">
<icon BUILTIN="button_ok"/>
<node CREATED="1539294807066" ID="ID_1137741867" MODIFIED="1539294809654" TEXT="wie?"/>
<node CREATED="1539294812306" ID="ID_1564927840" MODIFIED="1539302566302" TEXT="mu&#xdf; das Standard-Mapping anschauen">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
<node CREATED="1539294846845" ID="ID_1839295475" MODIFIED="1539294935855" TEXT="TreeDiffMutatorBinding">
<icon BUILTIN="info"/>
<node CREATED="1539294859537" ID="ID_637091190" MODIFIED="1539294928138" TEXT="__expect_further_elements -&gt; immer true">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1539294892879" ID="ID_642349797" MODIFIED="1539294931009" TEXT="__expect_end_of_scope -&gt; auch immer true">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1539294909749" ID="ID_1965063755" MODIFIED="1539294918319" TEXT="Impl in tree-diff.cpp">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1539294950567" ID="ID_1321971857" MODIFIED="1539298935822" TEXT="alle F&#xe4;lle durchklappern">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1539302456636" ID="ID_809868228" MODIFIED="1539302478177" TEXT="Idee: mit anderen Layern kombinieren...">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#435e98" CREATED="1539302481080" ID="ID_126724611" MODIFIED="1576282358105" TEXT="static_assertion">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...damit es nicht versehentlich &#252;ber einen anderen Layer gelegt wird,
    </p>
    <p>
      welchen es dann &#252;berdecken und au&#223;er Gefecht setzen w&#252;rde.
    </p>
    <p>
      
    </p>
    <p>
      Habe verifiziert, da&#223; diese Assertion tats&#228;chlich greift
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1539294743739" ID="ID_1596076772" MODIFIED="1539294758145" TEXT="Builder().ignoreAll()">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1539294760464" ID="ID_1376112641" MODIFIED="1539302371782" TEXT="DiffIgnoreChanges_test">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1539298953819" ID="ID_1706428916" MODIFIED="1539298972769" TEXT="leerer TreeMutator produziert Fehler">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1539298974312" ID="ID_986781359" MODIFIED="1539298992271" TEXT="BlackHoleMutation fri&#xdf;t alles">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1539298993222" ID="ID_647799125" MODIFIED="1539302373522" TEXT="Kombinieren mit speziellem Overlay">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1486763385591" ID="ID_6651258" MODIFIED="1557498707221" TEXT="Zugang zum Asset-Management"/>
<node CREATED="1486763391862" ID="ID_1568245541" MODIFIED="1557498707221" TEXT="Zugang zur Konfiguration"/>
<node CREATED="1486763408780" ID="ID_520762274" MODIFIED="1557498707221" TEXT="Zugang zum persistenten Interface-State"/>
<node CREATED="1504371285442" ID="ID_634013434" MODIFIED="1557498707221" TEXT="Allokation von ComponentViews">
<arrowlink DESTINATION="ID_948587913" ENDARROW="Default" ENDINCLINATION="87;-34;" ID="Arrow_ID_1863964331" STARTARROW="None" STARTINCLINATION="157;10;"/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1486768073223" FOLDED="true" HGAP="38" ID="ID_1457876217" MODIFIED="1561827465223" TEXT="konkret" VSHIFT="16">
<icon BUILTIN="hourglass"/>
<node CREATED="1486768080502" ID="ID_1759740464" MODIFIED="1518487921076" TEXT="Binde-Kontext f&#xfc;r globale Aktionen"/>
<node CREATED="1486768086869" ID="ID_173538981" MODIFIED="1518487921076" TEXT="Idee/Konzept f&#xfc;r kontextabh&#xe4;ngige Aktionen">
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1487119208622" ID="ID_728171298" MODIFIED="1518487921076" TEXT="Analyse anhand einiger Beispiele">
<icon BUILTIN="pencil"/>
<node CREATED="1488419440935" ID="ID_802346253" MODIFIED="1518487921076" TEXT="add Sequence">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1488419450812" ID="ID_179687468" MODIFIED="1518487921076" TEXT="add Track">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1487119230659" ID="ID_651577067" MODIFIED="1518487921076">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Frage: wieviel Interaction Control
    </p>
    <p>
      m&#252;ssen wir sofort jetzt implementieren
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="help"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1487208182655" ID="ID_1220225827" MODIFIED="1518487921076">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      brauche ein <i>aktuelles</i>&#160;Modell-Element
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1487208211131" ID="ID_31351462" MODIFIED="1518487921076" TEXT="...und ein Konzept, wie man das gewinnen kann">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1487208260557" ID="ID_1057793058" MODIFIED="1518487921076" TEXT="und wer daf&#xfc;r zust&#xe4;ndig sein wird">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1493852906845" HGAP="24" ID="ID_1176492517" MODIFIED="1533684335148" TEXT="siehe auch #1097 clarify the role of the panels in the UI" VSHIFT="9">
<arrowlink COLOR="#636eac" DESTINATION="ID_429407869" ENDARROW="Default" ENDINCLINATION="650;-595;" ID="Arrow_ID_1361390047" STARTARROW="None" STARTINCLINATION="1465;0;"/>
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1176492517" ENDARROW="Default" ENDINCLINATION="-68;-316;" ID="Arrow_ID_1083220093" SOURCE="ID_1375700494" STARTARROW="None" STARTINCLINATION="550;-23;"/>
<icon BUILTIN="forward"/>
</node>
</node>
<node CREATED="1504193112577" ID="ID_1851236797" MODIFIED="1518487921076">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Problem: Zusammenarbeit
    </p>
    <p>
      mit docking panels
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1504193163264" ID="ID_1943521361" MODIFIED="1533608449611" TEXT="#1104 how to instruct actions through panels">
<arrowlink COLOR="#806893" DESTINATION="ID_1020871440" ENDARROW="Default" ENDINCLINATION="-3;460;" ID="Arrow_ID_412107208" STARTARROW="Default" STARTINCLINATION="-618;-18;"/>
<arrowlink COLOR="#b37033" DESTINATION="ID_945788817" ENDARROW="None" ENDINCLINATION="-255;-86;" ID="Arrow_ID_61914" STARTARROW="Default" STARTINCLINATION="-618;-18;"/>
<linktarget COLOR="#9e99b7" DESTINATION="ID_1943521361" ENDARROW="Default" ENDINCLINATION="-1423;-376;" ID="Arrow_ID_779469840" SOURCE="ID_1446703192" STARTARROW="None" STARTINCLINATION="920;0;"/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1533608904623" HGAP="23" ID="ID_1433582308" MODIFIED="1533608919938" TEXT="Anforderungen" VSHIFT="-13">
<icon BUILTIN="yes"/>
<node CREATED="1533608945321" ID="ID_585599427" MODIFIED="1533608961747" TEXT="Zugang via ViewLocator"/>
<node CREATED="1533608737142" ID="ID_752377318" MODIFIED="1533608980481" TEXT="der ausf&#xfc;hrende View-Erzeuger braucht Zugang zum UI-Bus"/>
<node CREATED="1533608822826" ID="ID_1500698931" MODIFIED="1533608834604" TEXT="Schema zur reproduzierbaren ID-Generierung ist notwendig">
<node CREATED="1533609015728" ID="ID_808376623" MODIFIED="1533609027770" TEXT="der nominelle Typ ergibt sich aus der Art der View"/>
<node CREATED="1533609029094" ID="ID_1039386191" MODIFIED="1533609047527" TEXT="der Symbol-Teil der ID mu&#xdf; vorhersagbar sein"/>
<node CREATED="1533609056050" ID="ID_1606983628" MODIFIED="1533609064701" TEXT="oder explizit anzufordern"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1504193392483" ID="ID_912677550" MODIFIED="1518487921076" TEXT="PanelManager mu&#xdf; umgeschrieben werden">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1504193400426" ID="ID_1575758873" MODIFIED="1518487921076" TEXT="PanelManager mu&#xdf; umgezogen werden">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1504193443636" ID="ID_1002171467" MODIFIED="1518487921076" TEXT="Abstraktion herausdestilieren">
<arrowlink COLOR="#4f6595" DESTINATION="ID_385011645" ENDARROW="Default" ENDINCLINATION="377;-49;" ID="Arrow_ID_1185839720" STARTARROW="None" STARTINCLINATION="-267;66;"/>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
<node CREATED="1488672665626" ID="ID_590886664" MODIFIED="1518487921076" TEXT="Grundlagen f&#xfc;r Command-handling"/>
<node CREATED="1487313769425" ID="ID_728232011" MODIFIED="1518487921076">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Grundlagen f&#252;r <b>InteractionControl</b>
    </p>
  </body>
</html></richcontent>
<node CREATED="1488419854029" ID="ID_932507511" MODIFIED="1566955621428" TEXT="erst mal: Konzept">
<arrowlink COLOR="#715f85" DESTINATION="ID_329609486" ENDARROW="Default" ENDINCLINATION="-368;-2533;" ID="Arrow_ID_575977434" STARTARROW="None" STARTINCLINATION="1641;-256;"/>
<icon BUILTIN="help"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1487313191100" ID="ID_1619021408" MODIFIED="1561827465228" TEXT="Fazit(TODO)">
<icon BUILTIN="hourglass"/>
<node CREATED="1487313203254" ID="ID_573801539" MODIFIED="1518487921076" TEXT="Klassen anlegen">
<icon BUILTIN="button_ok"/>
<node CREATED="1487313231355" ID="ID_1566121505" MODIFIED="1518487921076" TEXT="WorkSite">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1487313293850" ID="ID_1237669879" MODIFIED="1518487921076" TEXT="WorkSiteTrail">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1487313234714" ID="ID_1600517388" MODIFIED="1518487921076" TEXT="SpotLocator">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1487313246333" ID="ID_1397075016" MODIFIED="1518487921076" TEXT="FocusTracker">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1487313253432" ID="ID_1727250153" MODIFIED="1518487921076" TEXT="Navigator">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1487313374879" ID="ID_604164603" MODIFIED="1518487921076" TEXT="UiState">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1487313454220" FOLDED="true" ID="ID_640048374" MODIFIED="1518487921076" TEXT="Abgriff in CoreServices">
<icon BUILTIN="button_ok"/>
<node CREATED="1487313462963" ID="ID_342355040" MODIFIED="1518487921076" TEXT="injizieren">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1487313475593" ID="ID_951423078" MODIFIED="1518487921076" TEXT="&#xfc;ber Lifecycle nachdenken">
<icon BUILTIN="button_ok"/>
<node CREATED="1487472682881" ID="ID_1575753680" MODIFIED="1518487921076" TEXT="UI-Bus zuerst"/>
<node CREATED="1487472687641" ID="ID_731426548" MODIFIED="1518487921076" TEXT="dann Ui-Manager -&gt; InteractionDirector -&gt; Ui-State"/>
<node CREATED="1487472711453" ID="ID_759583421" MODIFIED="1518487921076" TEXT="beim Zerst&#xf6;ren von GtkLumiera">
<node CREATED="1487472720476" ID="ID_1676214656" MODIFIED="1518487921076" TEXT="sollte die Event-Loop bereits beendet sein"/>
<node CREATED="1487472730667" ID="ID_1826692985" MODIFIED="1518487921076" TEXT="k&#xf6;nnen aber noch Fenster existieren"/>
<node CREATED="1487472757439" ID="ID_977443666" MODIFIED="1518487921076">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      wird der Link zwischen CoreService und UI-State <i>dangling</i>
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#659ba4" DESTINATION="ID_977443666" ENDARROW="None" ENDINCLINATION="552;26;" ID="Arrow_ID_1335141107" SOURCE="ID_1261936534" STARTARROW="Default" STARTINCLINATION="462;0;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1487472781532" ID="ID_957134114" MODIFIED="1518487921076" TEXT="kurz darauf wird auch CoreService + Nexus zerst&#xf6;rt"/>
</node>
<node CREATED="1487472971330" ID="ID_81364279" MODIFIED="1518487921076" TEXT="grunds&#xe4;tzliches Shutdown-Problem">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1487472987984" ID="ID_1443542622" MODIFIED="1518487921076" TEXT="aber harmlos">
<icon BUILTIN="button_ok"/>
<node CREATED="1487472993439" ID="ID_310404379" MODIFIED="1518487921076" TEXT="unter der Annahme, da&#xdf; das UI wirklich single-threaded l&#xe4;uft"/>
<node CREATED="1487473004949" ID="ID_1092623141" MODIFIED="1518487921076" TEXT="wenn wir die Garantie haben, da&#xdf; die Event-Loop nichts mehr macht"/>
<node CREATED="1487473038377" ID="ID_393673106" MODIFIED="1576282358105" TEXT="Policy: kein Tangible darf im dtor mit dem UI-Bus reden">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...mit der Ausnahme des Automatismus,
    </p>
    <p>
      der es selbst vom Bus abkoppelt
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node CREATED="1487475679257" ID="ID_1700311138" MODIFIED="1518487921076" TEXT="wir injizieren anders herum">
<icon BUILTIN="forward"/>
<node CREATED="1487475695910" ID="ID_1341876014" MODIFIED="1518487921076" TEXT="StateManager als sub-Service"/>
<node CREATED="1487475711092" ID="ID_838045301" MODIFIED="1518487921076" TEXT="geh&#xf6;rt CoreService"/>
<node CREATED="1487475720363" ID="ID_693101732" MODIFIED="1518487921076" TEXT="l&#xe4;uft immer"/>
<node CREATED="1487475723771" ID="ID_959927308" MODIFIED="1518487921076" TEXT="wird in UiState injiziert"/>
<node CREATED="1487475738369" ID="ID_1261936534" MODIFIED="1518487921076" TEXT="harmloses Problem beseitigt">
<arrowlink COLOR="#659ba4" DESTINATION="ID_977443666" ENDARROW="None" ENDINCLINATION="552;26;" ID="Arrow_ID_1335141107" STARTARROW="Default" STARTINCLINATION="462;0;"/>
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node COLOR="#338800" CREATED="1487475796409" ID="ID_49608905" MODIFIED="1518487921076" TEXT="StateRecorder nun angeschlossen">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1487313659680" ID="ID_1420397002" MODIFIED="1518487921076" TEXT="FocusTap">
<node CREATED="1487313668423" ID="ID_1248049801" MODIFIED="1518487921076" TEXT="Signal in model::Tangible"/>
<node CREATED="1487313680053" ID="ID_1563882406" MODIFIED="1518487921076" TEXT="Methode zum Installieren"/>
<node CREATED="1487313691644" ID="ID_1797207964" MODIFIED="1518487921076" TEXT="Verbindung zum FocusTracker herstellen (automatisch)"/>
<node CREATED="1487313717368" ID="ID_1638145586" MODIFIED="1518487921076" TEXT="entsprechend auch in WorkplaceWindow"/>
</node>
<node CREATED="1487313566901" ID="ID_268630370" MODIFIED="1518487921076" TEXT="Methoden">
<node CREATED="1487313570932" ID="ID_1733821258" MODIFIED="1518487921076" TEXT="getCurrentWorkSite"/>
<node CREATED="1487313578555" ID="ID_671600782" MODIFIED="1518487921076" TEXT="getCurrentMO">
<node CREATED="1487313612063" ID="ID_1795028934" MODIFIED="1518487921076" TEXT="ggfs.sinnvollen Dummy hier"/>
</node>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1487461242609" ID="ID_164538059" MODIFIED="1557498707221" TEXT="Struktur">
<node CREATED="1487461304560" ID="ID_349728972" MODIFIED="1557498707221" TEXT="betreibt">
<node CREATED="1487273437019" ID="ID_1653934212" MODIFIED="1557498707221" TEXT="Navigator">
<node CREATED="1515879320297" ID="ID_1194515598" MODIFIED="1557498707221" TEXT="(abstrahierte) Baum-Struktur"/>
<node CREATED="1506957512565" ID="ID_1256149179" MODIFIED="1557498707221" TEXT="dient als Resolver">
<arrowlink COLOR="#3f4b87" DESTINATION="ID_848105210" ENDARROW="Default" ENDINCLINATION="-1260;542;" ID="Arrow_ID_1760927309" STARTARROW="None" STARTINCLINATION="1244;-591;"/>
<linktarget COLOR="#5068a8" DESTINATION="ID_1256149179" ENDARROW="Default" ENDINCLINATION="-104;99;" ID="Arrow_ID_1490250373" SOURCE="ID_650732591" STARTARROW="None" STARTINCLINATION="225;-6;"/>
</node>
</node>
<node CREATED="1487270206369" ID="ID_1888334597" MODIFIED="1557498707221" TEXT="SpotLocator"/>
<node CREATED="1487275297855" ID="ID_898365328" MODIFIED="1557498707221" TEXT="FocusTracker"/>
<node CREATED="1504368969990" ID="ID_948587913" MODIFIED="1557498707221" TEXT="ViewLocator">
<arrowlink COLOR="#9da9b7" DESTINATION="ID_344392695" ENDARROW="Default" ENDINCLINATION="-96;-128;" ID="Arrow_ID_17315740" STARTARROW="None" STARTINCLINATION="-94;5;"/>
<linktarget COLOR="#a9b4c1" DESTINATION="ID_948587913" ENDARROW="Default" ENDINCLINATION="87;-34;" ID="Arrow_ID_1863964331" SOURCE="ID_634013434" STARTARROW="None" STARTINCLINATION="157;10;"/>
<node CREATED="1504370345039" ID="ID_1018366676" MODIFIED="1557498707221" TEXT="Service"/>
<node CREATED="1504373189956" ID="ID_1625042163" MODIFIED="1557498707221" TEXT="intern direkt verdrahtet mit dem PanelLocator"/>
<node CREATED="1504370354446" ID="ID_1714266927" MODIFIED="1557498707221" TEXT="findet, ggfs alloziert einen ComponentView"/>
</node>
</node>
<node CREATED="1487461353681" ID="ID_1117222917" MODIFIED="1557498707221" TEXT="Modell">
<node CREATED="1487461361688" ID="ID_1787396394" MODIFIED="1557498707221" TEXT="Attrib">
<node CREATED="1487461413145" ID="ID_816848691" MODIFIED="1557498707221" TEXT="ctrl::UiState">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_816848691" ENDARROW="Default" ENDINCLINATION="111;0;" ID="Arrow_ID_792016162" SOURCE="ID_1032977850" STARTARROW="None" STARTINCLINATION="111;0;"/>
</node>
<node CREATED="1488492205990" ID="ID_1793304375" MODIFIED="1557498707221" TEXT="AssetController"/>
</node>
<node CREATED="1488492229939" ID="ID_996547800" MODIFIED="1557498707221" TEXT="Children">
<node CREATED="1488492233826" ID="ID_1743746426" MODIFIED="1557498707221" TEXT="Timelines"/>
</node>
</node>
<node CREATED="1487461436006" ID="ID_1721976078" MODIFIED="1557498707221" TEXT="Kooperation">
<node CREATED="1487461440509" ID="ID_1663368282" MODIFIED="1557498707221" TEXT="CoreService">
<node CREATED="1487461456739" ID="ID_1032977850" MODIFIED="1557498707221" TEXT="delegiert UiState">
<arrowlink DESTINATION="ID_816848691" ENDARROW="Default" ENDINCLINATION="111;0;" ID="Arrow_ID_792016162" STARTARROW="None" STARTINCLINATION="111;0;"/>
</node>
</node>
<node CREATED="1487461476736" ID="ID_912393863" MODIFIED="1557498707221" TEXT="Actions">
<node CREATED="1487461484935" ID="ID_951148221" MODIFIED="1557498707221" TEXT="Kontext f&#xfc;r globale Aktionen"/>
</node>
</node>
</node>
<node CREATED="1506956798915" HGAP="-73" ID="ID_1897228503" MODIFIED="1557498707221" TEXT="Services" VSHIFT="32">
<node CREATED="1506956866802" ID="ID_652269096" MODIFIED="1557498707221" TEXT="Navigator">
<node CREATED="1507935433543" ID="ID_239254800" MODIFIED="1557498707221">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      in <i>generischer UI-Struktur</i>&#160;bewegen
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1507935461787" ID="ID_1244300168" MODIFIED="1557498707221" TEXT="bietet command-and-query-Interface"/>
<node CREATED="1507935474273" ID="ID_650732591" MODIFIED="1557498707221" TEXT="dient als (Pfad-)Resolver f&#xfc;r UI-Coord">
<arrowlink COLOR="#5068a8" DESTINATION="ID_1256149179" ENDARROW="Default" ENDINCLINATION="-104;99;" ID="Arrow_ID_1490250373" STARTARROW="None" STARTINCLINATION="225;-6;"/>
</node>
<node CREATED="1507935538409" ID="ID_1407528424" MODIFIED="1557498707221" TEXT="st&#xfc;tzt sich auf ViewLocator ab">
<arrowlink COLOR="#89919c" DESTINATION="ID_344392695" ENDARROW="Default" ENDINCLINATION="90;-49;" ID="Arrow_ID_1845784021" STARTARROW="None" STARTINCLINATION="-22;31;"/>
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1504368969990" ID="ID_344392695" MODIFIED="1557498707221" TEXT="ViewLocator">
<linktarget COLOR="#3b6680" DESTINATION="ID_344392695" ENDARROW="Default" ENDINCLINATION="-269;-228;" ID="Arrow_ID_408957918" SOURCE="ID_1356241564" STARTARROW="Default" STARTINCLINATION="-858;0;"/>
<linktarget COLOR="#9da9b7" DESTINATION="ID_344392695" ENDARROW="Default" ENDINCLINATION="-96;-128;" ID="Arrow_ID_17315740" SOURCE="ID_948587913" STARTARROW="None" STARTINCLINATION="-94;5;"/>
<linktarget COLOR="#89919c" DESTINATION="ID_344392695" ENDARROW="Default" ENDINCLINATION="90;-49;" ID="Arrow_ID_1845784021" SOURCE="ID_1407528424" STARTARROW="None" STARTINCLINATION="-22;31;"/>
<linktarget COLOR="#7c8aa8" DESTINATION="ID_344392695" ENDARROW="Default" ENDINCLINATION="-676;143;" ID="Arrow_ID_1224269755" SOURCE="ID_869653682" STARTARROW="None" STARTINCLINATION="641;-106;"/>
<linktarget COLOR="#7f97bd" DESTINATION="ID_344392695" ENDARROW="Default" ENDINCLINATION="-977;81;" ID="Arrow_ID_1627222173" SOURCE="ID_1747666798" STARTARROW="None" STARTINCLINATION="1159;303;"/>
<node CREATED="1504387078950" ID="ID_1433555277" MODIFIED="1557498707221" TEXT="bietet Komponenten-Management">
<node CREATED="1504387105363" ID="ID_631730744" MODIFIED="1557498707221" TEXT="neue Komponente"/>
<node CREATED="1504387110866" ID="ID_879632055" MODIFIED="1557498707221" TEXT="Komponente l&#xf6;schen"/>
<node CREATED="1504387189744" ID="ID_934669703" MODIFIED="1557498707221" TEXT="notwendig f&#xfc;r Kind-Mutation">
<icon BUILTIN="info"/>
</node>
<node CREATED="1504368969990" ID="ID_1346454848" MODIFIED="1557498707221" TEXT="impl delegiert an den PanelLocator">
<linktarget COLOR="#7c8aa8" DESTINATION="ID_1346454848" ENDARROW="Default" ENDINCLINATION="22;11;" ID="Arrow_ID_1776804306" SOURCE="ID_1606296935" STARTARROW="Default" STARTINCLINATION="313;-14;"/>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node CREATED="1506956871401" ID="ID_1817966830" MODIFIED="1557498707221" TEXT="SpotLocator"/>
<node CREATED="1506956892303" ID="ID_238906242" MODIFIED="1557498707221" TEXT="FocusTracker"/>
</node>
</node>
<node CREATED="1485126466520" FOLDED="true" ID="ID_717310004" MODIFIED="1557498707221" TEXT="WindowManager" VSHIFT="34">
<icon BUILTIN="button_cancel"/>
<node CREATED="1485457325724" ID="ID_1954589768" MODIFIED="1557498707221" TEXT="nur f&#xfc;r die Hauptfenster zust&#xe4;ndig"/>
<node CREATED="1485457328043" ID="ID_1787642462" MODIFIED="1576282358104" TEXT="wir haben kein ApplicationWindow">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...denn das ist das vereinfachte Setup f&#252;r &quot;einfache&quot; Applikationen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1485457370310" ID="ID_1931452525" MODIFIED="1557498707221" TEXT="GtkWindow sind v&#xf6;llig ausreichend"/>
<node CREATED="1485546285407" ID="ID_1129769291" MODIFIED="1557498707221">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      mu&#223; kein <b>Manager</b>&#160;sein
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1485546319434" ID="ID_1592361314" MODIFIED="1557498707222" TEXT="macht nur eine Sache">
<icon BUILTIN="idea"/>
<node CREATED="1485546325993" ID="ID_1335197005" MODIFIED="1557498707222" TEXT="n&#xe4;mlich eine Liste der Fenster verwalten"/>
<node CREATED="1504368623492" ID="ID_1993615747" MODIFIED="1557498707222" TEXT="und Zugang zu diesen Fenster bieten"/>
</node>
<node CREATED="1485546344471" ID="ID_582242471" MODIFIED="1557498707222" TEXT="WindowLocator">
<arrowlink DESTINATION="ID_298060478" ENDARROW="Default" ENDINCLINATION="25;-40;" ID="Arrow_ID_683571287" STARTARROW="None" STARTINCLINATION="-62;0;"/>
<icon BUILTIN="forward"/>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1485546396952" FOLDED="true" ID="ID_298060478" MODIFIED="1557498707222" TEXT="WindowLocator">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_298060478" ENDARROW="Default" ENDINCLINATION="25;-40;" ID="Arrow_ID_683571287" SOURCE="ID_582242471" STARTARROW="None" STARTINCLINATION="-62;0;"/>
<icon BUILTIN="hourglass"/>
<icon BUILTIN="bell"/>
<node CREATED="1485546400807" ID="ID_1118405222" MODIFIED="1557498707222" TEXT="macht, was vom gro&#xdf;en Manager &#xfc;brig blieb"/>
<node CREATED="1485546425452" ID="ID_1088557274" MODIFIED="1557498707222" TEXT="wird von GtkLumiera gehalten und verdrahtet"/>
<node CREATED="1485548669665" ID="ID_285796853" MODIFIED="1557498707222" TEXT="Problem: wie erreichbar?">
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1485548702476" ID="ID_1295550090" MODIFIED="1557498707222" TEXT="Aufgabe: new_window">
<icon BUILTIN="flag-yellow"/>
</node>
<node CREATED="1485548713610" ID="ID_1984416789" MODIFIED="1557498707222" TEXT="wird als Action verdrahtet">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1485548727401" ID="ID_1344937285" MODIFIED="1557498707222" TEXT="was ist die Closure">
<icon BUILTIN="help"/>
</node>
</node>
<node CREATED="1538942597728" ID="ID_539326328" MODIFIED="1557498707222" TEXT="globale Aktionen">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1480694550601" ID="ID_1992201258" MODIFIED="1557498707222" TEXT="re-locate Timeline View">
<linktarget COLOR="#fec680" DESTINATION="ID_1992201258" ENDARROW="Default" ENDINCLINATION="-784;-81;" ID="Arrow_ID_126634995" SOURCE="ID_1325225528" STARTARROW="None" STARTINCLINATION="651;0;"/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1538942638306" ID="ID_1819831711" MODIFIED="1557498707222" TEXT="View f&#xfc;r ein (weiterhin) bestehendes Model-Element in ein anderes Fenster umziehen">
<icon BUILTIN="info"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1504193329508" FOLDED="true" ID="ID_629544763" MODIFIED="1561827465241" TEXT="Aufgabe: docking panels">
<linktarget COLOR="#b0466a" DESTINATION="ID_629544763" ENDARROW="Default" ENDINCLINATION="-849;-1967;" ID="Arrow_ID_1826422316" SOURCE="ID_1922506931" STARTARROW="None" STARTINCLINATION="690;23;"/>
<linktarget COLOR="#d65a8e" DESTINATION="ID_629544763" ENDARROW="Default" ENDINCLINATION="-176;0;" ID="Arrow_ID_232994989" SOURCE="ID_196345177" STARTARROW="None" STARTINCLINATION="-162;-93;"/>
<icon BUILTIN="pencil"/>
<node CREATED="1504193340786" ID="ID_751993082" MODIFIED="1518487921077" TEXT="PanelLocator hier integrieren">
<icon BUILTIN="button_ok"/>
<node CREATED="1504370542909" ID="ID_1318769916" MODIFIED="1518487921077" TEXT="Query-Front-end"/>
<node CREATED="1504371342426" ID="ID_1606296935" MODIFIED="1534517606904" TEXT="wird ben&#xf6;tigt vom ViewLocator (InteractionDirector)">
<arrowlink COLOR="#7c8aa8" DESTINATION="ID_1346454848" ENDARROW="Default" ENDINCLINATION="22;11;" ID="Arrow_ID_1776804306" STARTARROW="Default" STARTINCLINATION="313;-14;"/>
<arrowlink COLOR="#546195" DESTINATION="ID_1633069135" ENDARROW="Default" ENDINCLINATION="-329;-257;" ID="Arrow_ID_1665485418" STARTARROW="None" STARTINCLINATION="273;0;"/>
</node>
<node CREATED="1504370524687" ID="ID_816760158" MODIFIED="1518487921077" TEXT="PanelManager in den einzelnen Fenstern"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534510952804" HGAP="21" ID="ID_1335931102" MODIFIED="1534511409140" TEXT="#1026 cleanup PanelManager" VSHIFT="1">
<arrowlink COLOR="#ce6b5f" DESTINATION="ID_1249897876" ENDARROW="Default" ENDINCLINATION="1299;0;" ID="Arrow_ID_1635700276" STARTARROW="Default" STARTINCLINATION="-1412;-1014;"/>
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534510993903" ID="ID_1287156693" MODIFIED="1534511005821" TEXT="M&#xfc;llhaufen">
<icon BUILTIN="clanbomber"/>
</node>
<node CREATED="1534515750767" HGAP="258" ID="ID_1360472787" MODIFIED="1534519968433" TEXT="bestehende Anforderungen" VSHIFT="-4">
<linktarget COLOR="#99a7bd" DESTINATION="ID_1360472787" ENDARROW="Default" ENDINCLINATION="772;-6907;" ID="Arrow_ID_1137118362" SOURCE="ID_592805858" STARTARROW="None" STARTINCLINATION="698;1616;"/>
<icon BUILTIN="info"/>
<node CREATED="1534515787114" ID="ID_1305719148" MODIFIED="1534515800828" TEXT="Standard-Ausstattung mit Panels in jedem Fenster erzeugen"/>
<node CREATED="1534515801632" ID="ID_1919529189" MODIFIED="1534515823721" TEXT="Panel-Description-Index verwenden"/>
<node CREATED="1534515812439" ID="ID_1980530420" MODIFIED="1534515817842" TEXT="Liste aller Panels verwalten"/>
<node CREATED="1534515834947" ID="ID_510158797" MODIFIED="1534515927180" TEXT="gew&#xfc;nschtes Panel anzeigen, ggfs erstellen">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_510158797" ENDARROW="Default" ENDINCLINATION="104;0;" ID="Arrow_ID_161519533" SOURCE="ID_819902852" STARTARROW="None" STARTINCLINATION="83;0;"/>
<linktarget COLOR="#a9b4c1" DESTINATION="ID_510158797" ENDARROW="Default" ENDINCLINATION="68;0;" ID="Arrow_ID_970402595" SOURCE="ID_747338376" STARTARROW="None" STARTINCLINATION="89;0;"/>
</node>
<node CREATED="1534515873606" ID="ID_819902852" MODIFIED="1534515892457" TEXT="Referenz auf ein Panel beziehen">
<arrowlink DESTINATION="ID_510158797" ENDARROW="Default" ENDINCLINATION="104;0;" ID="Arrow_ID_161519533" STARTARROW="None" STARTINCLINATION="83;0;"/>
</node>
<node CREATED="1534515905714" ID="ID_747338376" MODIFIED="1534515927180" TEXT="Men&#xfc;-Aktionen: bestimmtes Panel anzeigen">
<arrowlink DESTINATION="ID_510158797" ENDARROW="Default" ENDINCLINATION="68;0;" ID="Arrow_ID_970402595" STARTARROW="None" STARTINCLINATION="89;0;"/>
</node>
<node CREATED="1534515935653" ID="ID_1660813925" MODIFIED="1534516000145" TEXT="Panel durch ein Panel anderen Typs ersetzen"/>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1534510983624" ID="ID_1587195721" MODIFIED="1534511031983" TEXT="setzt Konzept voraus">
<arrowlink COLOR="#202e48" DESTINATION="ID_1526164022" ENDARROW="Default" ENDINCLINATION="7;-78;" ID="Arrow_ID_1840345516" STARTARROW="None" STARTINCLINATION="-84;65;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1529240056019" HGAP="33" ID="ID_1526164022" MODIFIED="1534511028176" TEXT="#1144 refactor dock handling" VSHIFT="-6">
<linktarget COLOR="#202e48" DESTINATION="ID_1526164022" ENDARROW="Default" ENDINCLINATION="7;-78;" ID="Arrow_ID_1840345516" SOURCE="ID_1587195721" STARTARROW="None" STARTINCLINATION="-84;65;"/>
<icon BUILTIN="flag-yellow"/>
<node COLOR="#435e98" CREATED="1534511467567" HGAP="37" ID="ID_358403014" MODIFIED="1534512921306" TEXT="M&#xf6;glichkeiten der libGDL" VSHIFT="19">
<arrowlink COLOR="#39478f" DESTINATION="ID_833641481" ENDARROW="Default" ENDINCLINATION="-1307;0;" ID="Arrow_ID_214595057" STARTARROW="None" STARTINCLINATION="-2073;0;"/>
<font BOLD="true" NAME="SansSerif" SIZE="13"/>
<icon BUILTIN="info"/>
</node>
<node CREATED="1533609225355" ID="ID_1031484560" MODIFIED="1534513589857" TEXT="Definitionen festlegen">
<linktarget COLOR="#8a9dae" DESTINATION="ID_1031484560" ENDARROW="Default" ENDINCLINATION="1135;-5718;" ID="Arrow_ID_1369217030" SOURCE="ID_1371608668" STARTARROW="None" STARTINCLINATION="1238;-672;"/>
<node CREATED="1533609236849" ID="ID_429407869" MODIFIED="1533684335148" TEXT="was ist ein Panel?">
<linktarget COLOR="#636eac" DESTINATION="ID_429407869" ENDARROW="Default" ENDINCLINATION="650;-595;" ID="Arrow_ID_1361390047" SOURCE="ID_1176492517" STARTARROW="None" STARTINCLINATION="1465;0;"/>
<icon BUILTIN="yes"/>
<node CREATED="1533609255486" ID="ID_540986387" MODIFIED="1533609275839" TEXT="identifizierbarer Teilraum im UI"/>
<node CREATED="1533609277164" ID="ID_1581083802" MODIFIED="1533609290461" TEXT="ID ist Benennung + Typ"/>
<node CREATED="1533609292426" ID="ID_50953202" MODIFIED="1533609315339" TEXT="Typ legt aber auch teilw. die Platzierung/Pr&#xe4;sentation fest"/>
<node CREATED="1533609332484" ID="ID_68265965" MODIFIED="1533609346342" TEXT="Panel selber ist &quot;substanzlos&quot;">
<node CREATED="1533609349730" ID="ID_1199787724" MODIFIED="1533609376170" TEXT="es wird durch seinen Inhalt mit geschaffen"/>
<node CREATED="1533609378773" ID="ID_896598248" MODIFIED="1533609383161" TEXT="Fallunterscheidung">
<node CREATED="1533609385005" HGAP="22" ID="ID_323786393" MODIFIED="1533609406631" TEXT="instruiert">
<node CREATED="1533609411841" ID="ID_1992759255" MODIFIED="1533609416652" TEXT="View-Anforderung"/>
<node CREATED="1533609417360" ID="ID_1927712425" MODIFIED="1533609433146" TEXT="die ViewSpect-DSL bestimmt, in welchem Panel er erzeugt wird"/>
</node>
<node CREATED="1533609393060" ID="ID_1618346972" MODIFIED="1533609401687" TEXT="per UI-Aktion erzeugt">
<node CREATED="1533609456899" ID="ID_1800763961" MODIFIED="1533609480660" TEXT="erzugt Panel mit seinem Standard-Inhalt (gem&#xe4;&#xdf; Panel-Typ)"/>
<node CREATED="1533609484543" ID="ID_381189275" MODIFIED="1533609505632" TEXT="dieser Standard-Inhalt wird generisch/per-default generiert"/>
</node>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1529235573383" HGAP="36" ID="ID_1156887553" MODIFIED="1529235603008" TEXT="Aufteilen" VSHIFT="9">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node CREATED="1529235578053" ID="ID_1913662480" MODIFIED="1529235582697" TEXT="lokale UI-Mechanik">
<node CREATED="1531407468053" ID="ID_56121895" MODIFIED="1531407487128" TEXT="DockArea">
<icon BUILTIN="idea"/>
<node CREATED="1531407492468" ID="ID_1972848436" MODIFIED="1531407498111" TEXT="Neue Entit&#xe4;t"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1531407498771" ID="ID_579294659" MODIFIED="1531414297601" TEXT="bestehenden Code porten">
<icon BUILTIN="pencil"/>
<node CREATED="1531414268783" ID="ID_1591679803" MODIFIED="1531414276500" TEXT="PanelManager macht bisher alles">
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1531414277462" ID="ID_438558819" MODIFIED="1531414290061" TEXT="bestehenden Code nachvollziehen">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1531414284237" ID="ID_242501935" MODIFIED="1531414288949" TEXT="sauber neu coden">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
<node CREATED="1531407473064" ID="ID_1423333582" MODIFIED="1531407481582" TEXT="Einbindung der libGDL">
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1529235583621" ID="ID_627187553" MODIFIED="1529235589904" TEXT="&#xfc;bergreifende Steuerung">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1529240710412" HGAP="79" ID="ID_1137103744" MODIFIED="1529240803601" TEXT="Kontroll-Struktur einrichten" VSHIFT="-15">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1529240725545" ID="ID_1633069135" MODIFIED="1534517606904" TEXT="PanelLocator">
<linktarget COLOR="#546195" DESTINATION="ID_1633069135" ENDARROW="Default" ENDINCLINATION="-329;-257;" ID="Arrow_ID_1665485418" SOURCE="ID_1606296935" STARTARROW="None" STARTINCLINATION="273;0;"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1529240729817" ID="ID_899357717" MODIFIED="1529240766068" TEXT="h&#xe4;lt Kontakt zu allen Docks">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1529240757677" ID="ID_1894889790" MODIFIED="1529240766845" TEXT="Lebenszyklus-Signale">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1534519634333" ID="ID_298940282" MODIFIED="1534519643957" TEXT="vorl&#xe4;ufig">
<icon BUILTIN="bell"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1534519645420" ID="ID_1509280168" MODIFIED="1576282358104" TEXT="&#xfc;bernimmt Funktionen vom ViewLocator">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...weil ich Stand 8/2018 nicht im Stande bin,
    </p>
    <p>
      den ViewLocator wirklich soweit fertig zu coden, da&#223; er schon einsetzbar ist.
    </p>
    <p>
      Problem ist die ganze abstrahierte Widget-Access-Schicht, die sich erst sinnvoll bauen l&#228;&#223;t,
    </p>
    <p>
      wenn es schon wirkliche und funktionierende Widgets im System gibt.
    </p>
  </body>
</html></richcontent>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1534515750767" FOLDED="true" ID="ID_1614049284" MODIFIED="1561827465242" TEXT="Panel-Lookup/Allocation">
<linktarget COLOR="#aab7cb" DESTINATION="ID_1614049284" ENDARROW="Default" ENDINCLINATION="772;-6907;" ID="Arrow_ID_139428133" SOURCE="ID_1131466377" STARTARROW="None" STARTINCLINATION="676;1738;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1534520212473" ID="ID_172585735" MODIFIED="1534526235983" TEXT="durch alle WorkspaceWindows iterieren">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1534520223304" ID="ID_605426716" MODIFIED="1534526241279" TEXT="jeden lokalen PanelManager fragen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1534520258251" ID="ID_634139165" MODIFIED="1534526246434" TEXT="wenn nicht gefunden, dann erzeugen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1534520271354" ID="ID_1722998809" MODIFIED="1576282358103" TEXT="PanelManager: reine Anfrage">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...bisher erzeugt die lookup-Operation automatisch
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1534520304493" ID="ID_1795676672" MODIFIED="1534522378245" TEXT="wo erzeugen?">
<icon BUILTIN="help"/>
<node CREATED="1534520344584" ID="ID_637468747" MODIFIED="1534520371103" TEXT="im primary window">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1534520354510" ID="ID_1031648158" MODIFIED="1534520366567" TEXT="im aktuellen Fenster">
<icon BUILTIN="forward"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1534520233134" ID="ID_1625789153" MODIFIED="1534522425348" TEXT="typsicheres Front-end vorschalten">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1529240774003" ID="ID_1594029670" MODIFIED="1529240795457" TEXT="Zugriff auf Dock-Master">
<icon BUILTIN="help"/>
</node>
</node>
</node>
</node>
<node CREATED="1504193354056" FOLDED="true" ID="ID_385011645" MODIFIED="1518487921077">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <b>Abstraktion</b>&#160;zur Steuerung schaffen
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#524f7b" DESTINATION="ID_385011645" ENDARROW="Default" ENDINCLINATION="353;-22;" ID="Arrow_ID_186523581" SOURCE="ID_65709251" STARTARROW="None" STARTINCLINATION="1270;350;"/>
<linktarget COLOR="#4f6595" DESTINATION="ID_385011645" ENDARROW="Default" ENDINCLINATION="377;-49;" ID="Arrow_ID_1185839720" SOURCE="ID_1002171467" STARTARROW="None" STARTINCLINATION="-267;66;"/>
<node CREATED="1504307876270" HGAP="80" ID="ID_714147133" MODIFIED="1518487921077" TEXT="Anforderungen" VSHIFT="-7">
<node CREATED="1504307921993" ID="ID_774956517" MODIFIED="1518487921077" TEXT="bestimmtes Element...">
<node CREATED="1504307933535" ID="ID_220451742" MODIFIED="1518487921077" TEXT="ansprechen">
<node CREATED="1504308372668" ID="ID_1978317777" MODIFIED="1518487921077" TEXT="Referenz f&#xfc;r direkte Aufrufe"/>
<node CREATED="1504308379891" ID="ID_829774303" MODIFIED="1518487921077" TEXT="ID f&#xfc;r UI-Bus-Kommunikation"/>
</node>
<node CREATED="1504307929599" ID="ID_1927494491" MODIFIED="1518487921077" TEXT="neu erzeugen"/>
<node CREATED="1504307954292" ID="ID_1658958044" MODIFIED="1518487921077" TEXT="l&#xf6;schen"/>
</node>
<node CREATED="1504308024282" ID="ID_1154461573" MODIFIED="1518487921077">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      wie <i>bestimmt?</i>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="help"/>
<node CREATED="1504308038873" ID="ID_1384201938" MODIFIED="1518487921077" TEXT="es gibt nur eines"/>
<node CREATED="1504308044016" ID="ID_1655384159" MODIFIED="1518487921077" TEXT="von bestimmter Art"/>
<node CREATED="1504308073444" ID="ID_1584894553" MODIFIED="1518487921077" TEXT="Typ + ID"/>
<node CREATED="1504308256876" ID="ID_733625102" MODIFIED="1518487921077" TEXT="Problem: View-Instanzen">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1504308268370" ID="ID_1644215776" MODIFIED="1518487921077" TEXT="wie die ID festlegen?">
<icon BUILTIN="help"/>
</node>
<node CREATED="1504308288056" ID="ID_919032583" MODIFIED="1518487921077" TEXT="wer wei&#xdf; von diesen Instanzen?">
<icon BUILTIN="help"/>
</node>
<node CREATED="1504308295190" ID="ID_981780857" MODIFIED="1518487921077" TEXT="wie werden sie im Model dargestellt?">
<icon BUILTIN="help"/>
</node>
</node>
<node CREATED="1504308325682" ID="ID_168204060" MODIFIED="1518487921077" TEXT="wer verfolgt die Lebensdauer?">
<icon BUILTIN="help"/>
</node>
</node>
</node>
<node CREATED="1504479018947" HGAP="185" ID="ID_88064796" MODIFIED="1518487921078" TEXT="folgt aus dem View-Zugriff" VSHIFT="11">
<icon BUILTIN="idea"/>
<node CREATED="1531412797044" ID="ID_251560954" MODIFIED="1531412802639" TEXT="gebraucht wird...">
<node CREATED="1531412841422" ID="ID_701193023" MODIFIED="1531412940797" TEXT="Panel platzieren">
<node CREATED="1531412942145" ID="ID_1174626592" MODIFIED="1531412950131" TEXT="Panel in Fenster"/>
<node CREATED="1531412950839" ID="ID_1293555405" MODIFIED="1531413115821" TEXT="nur eine DockArea pro Fenster"/>
<node CREATED="1531413165251" ID="ID_1180700051" MODIFIED="1531413181908" TEXT="Panel hat Platzierungs-Default"/>
<node CREATED="1531413538025" ID="ID_1625813136" MODIFIED="1531413544964" TEXT="kann dann aber rearrangiert werden">
<node CREATED="1531413554415" ID="ID_1325622114" MODIFIED="1531413562449" TEXT="GDL selber ist sehr flexibel"/>
<node CREATED="1531413563662" ID="ID_329874195" MODIFIED="1531413568089" TEXT="kann mehrfach schachteln"/>
<node CREATED="1531413571197" ID="ID_1093029020" MODIFIED="1531413577359" TEXT="und Tabbed Notebooks bilden"/>
</node>
<node CREATED="1531413758804" ID="ID_914627458" MODIFIED="1531413769750" TEXT="Details des Platzierungs-Verhaltens">
<node CREATED="1531413770770" ID="ID_484369837" MODIFIED="1531413795844" TEXT="noch nicht klar">
<icon BUILTIN="messagebox_warning"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1531413774745" ID="ID_1438103076" MODIFIED="1531413792505" TEXT="mehrere gleichartige Panel?">
<icon BUILTIN="help"/>
<node CREATED="1531413838456" ID="ID_1565164486" MODIFIED="1531413845763" TEXT="nebeneinander einf&#xfc;gen?"/>
<node CREATED="1531413846704" ID="ID_157037460" MODIFIED="1531413852418" TEXT="ineinander einf&#xfc;gen?"/>
</node>
</node>
</node>
<node CREATED="1531413901368" ID="ID_375388369" MODIFIED="1531413905347" TEXT="Panel wiederherstellen">
<node CREATED="1531413950369" ID="ID_518996776" MODIFIED="1531413959020" TEXT="gegeben: Menge von UI-Koordinaten"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1531413980270" ID="ID_1914402851" MODIFIED="1531413994427" TEXT="Frage: was genau kann GDL wiederherstellen?">
<icon BUILTIN="help"/>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1504194145622" ID="ID_511626836" MODIFIED="1518487921078" TEXT="Addressieren einzelner Kind-Komponenten"/>
</node>
</node>
<node CREATED="1563020429008" FOLDED="true" ID="ID_8715605" MODIFIED="1678461929265">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <b>UIStyle</b>: der &#187;<u><font color="#2f297a">StyleManager</font></u>&#171;
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#6179b8" DESTINATION="ID_8715605" ENDARROW="Default" ENDINCLINATION="-946;80;" ID="Arrow_ID_1659593372" SOURCE="ID_873763889" STARTARROW="None" STARTINCLINATION="-1586;131;"/>
<icon BUILTIN="forward"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1537743634839" ID="ID_390066923" MODIFIED="1563020438839" TEXT="#1169 Style Manager">
<icon BUILTIN="flag-yellow"/>
</node>
<node CREATED="1563020456445" ID="ID_134906113" MODIFIED="1563020474783" TEXT="Stand 2019: weitgehend Funktionen von Joel Holdsworth"/>
<node CREATED="1678460345115" ID="ID_354436354" MODIFIED="1678460348702" TEXT="Aufgaben">
<node CREATED="1563020407852" ID="ID_280366952" MODIFIED="1678462193702" TEXT="Style / CSS">
<linktarget COLOR="#454571" DESTINATION="ID_280366952" ENDARROW="Default" ENDINCLINATION="234;-533;" ID="Arrow_ID_1461427805" SOURCE="ID_1512492571" STARTARROW="None" STARTINCLINATION="748;60;"/>
<linktarget COLOR="#4369a6" DESTINATION="ID_280366952" ENDARROW="Default" ENDINCLINATION="-566;432;" ID="Arrow_ID_1332353653" SOURCE="ID_1339380234" STARTARROW="None" STARTINCLINATION="-931;-99;"/>
<node CREATED="1563019888259" FOLDED="true" ID="ID_1755242650" MODIFIED="1678462202854" TEXT="UiManager: CSS-Pfad bereitstellen">
<linktarget COLOR="#4b31cd" DESTINATION="ID_1755242650" ENDARROW="Default" ENDINCLINATION="-1211;105;" ID="Arrow_ID_847790641" SOURCE="ID_331912016" STARTARROW="Default" STARTINCLINATION="-1782;0;"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1562844888515" ID="ID_1004783054" MODIFIED="1678460298646" TEXT="#1171 investigate virtual widget path">
<icon BUILTIN="forward"/>
<node COLOR="#338800" CREATED="1563020407043" ID="ID_1465497201" MODIFIED="1678460384399" TEXT="Proof-of-Concept im Zusammenhang mit #1201">
<arrowlink COLOR="#2a7734" DESTINATION="ID_121593395" ENDARROW="Default" ENDINCLINATION="1608;-100;" ID="Arrow_ID_1114940878" STARTARROW="None" STARTINCLINATION="1991;114;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1563020493385" ID="ID_393380948" MODIFIED="1563020503179" TEXT="publiziert via Advice-System"/>
<node CREATED="1563020504983" ID="ID_743553538" MODIFIED="1563020535783" TEXT="Topics">
<node CREATED="1563020586598" ID="ID_71417902" MODIFIED="1563020586598" TEXT="style(trackBody)"/>
</node>
<node CREATED="1563020595314" HGAP="39" ID="ID_517868337" MODIFIED="1575052603900" TEXT="CSS-Pfad initial">
<linktarget COLOR="#3976e4" DESTINATION="ID_517868337" ENDARROW="Default" ENDINCLINATION="-1204;103;" ID="Arrow_ID_1481718697" SOURCE="ID_1653425334" STARTARROW="None" STARTINCLINATION="928;72;"/>
<node CREATED="1563020651779" ID="ID_64689753" MODIFIED="1563020660375" TEXT="wenn sich das erste TimelineWidget meldet"/>
<node CREATED="1563020662916" ID="ID_87556518" MODIFIED="1563020678127" TEXT="von diesem den konkreten Pfad zum BodyCanvasWidget beziehen"/>
<node CREATED="1563020681159" ID="ID_1474481449" MODIFIED="1563020687466" TEXT="diesen Pfad virtuell ausbauen">
<node CREATED="1563020689334" ID="ID_1244087719" MODIFIED="1563020703963" TEXT="Knoten: fork.timeline"/>
</node>
<node CREATED="1563020712094" ID="ID_363709831" MODIFIED="1563020720694" TEXT="Gtk::StyleKontext damit populieren"/>
<node CREATED="1563020723228" ID="ID_710572596" MODIFIED="1563020736448" TEXT="und per Advice-Provision publizieren">
<node CREATED="1563022011347" ID="ID_1677449627" MODIFIED="1563022020514" TEXT="nur beim ersten Mal">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1563022850037" ID="ID_1908316447" MODIFIED="1575240116524" TEXT="kann das Advice-System das?">
<arrowlink COLOR="#1dba57" DESTINATION="ID_1996378025" ENDARROW="Default" ENDINCLINATION="3933;-460;" ID="Arrow_ID_1546347584" STARTARROW="None" STARTINCLINATION="2753;244;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1563020737596" ID="ID_79793328" MODIFIED="1563020874158" TEXT="Ablauf/Timings">
<icon BUILTIN="info"/>
<node CREATED="1563020748317" ID="ID_1777148552" MODIFIED="1563020773686" TEXT="getriggert von InteractionDirector::injectTimeline()"/>
<node CREATED="1563020775222" ID="ID_234951225" MODIFIED="1563020785721" TEXT="zu dem Zeitpunkt ist das TimelineWidget komplett konstruiert"/>
<node CREATED="1563020786593" ID="ID_306641433" MODIFIED="1563020795432" TEXT="und in der &#xfc;bergordneten TimelinePane verankter"/>
<node CREATED="1563020796267" ID="ID_714522948" MODIFIED="1563020804769" TEXT="aber noch nicht realisiert / gezeichnet"/>
<node CREATED="1563020808469" ID="ID_1476613816" MODIFIED="1563020824176" TEXT="der Advice wird fr&#xfc;hestens beim ersten draw()-Aufruf gebraucht"/>
<node CREATED="1563020836874" ID="ID_729790149" MODIFIED="1563020858525" TEXT="der Advice wird beim Shutdown des globalen UI-Kontext zur&#xfc;ckgezogen"/>
<node COLOR="#435e98" CREATED="1563020825077" ID="ID_1941111431" MODIFIED="1563020864694" TEXT="garantiert wasserdicht">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node CREATED="1563020603946" ID="ID_717062852" MODIFIED="1563020609158" TEXT="aktualisiert">
<icon BUILTIN="hourglass"/>
<node CREATED="1563020611154" ID="ID_1878310069" MODIFIED="1563020617763" TEXT="7/2019 noch gar nicht"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1563020618619" ID="ID_1265253347" MODIFIED="1563020633923" TEXT="Plan: beim Laden eines neuen Stylesheet">
<icon BUILTIN="bell"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1662052275502" ID="ID_297910960" MODIFIED="1665346725923" TEXT="Icons verwalten / Ressourcen bereitstellen">
<linktarget COLOR="#864e7a" DESTINATION="ID_297910960" ENDARROW="Default" ENDINCLINATION="-843;-48;" ID="Arrow_ID_154615679" SOURCE="ID_1280255371" STARTARROW="None" STARTINCLINATION="695;60;"/>
<icon BUILTIN="hourglass"/>
<node CREATED="1662151277190" ID="ID_1508158518" MODIFIED="1662151299801" TEXT="bestehender Code">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...stammt im Kern noch von Joel Holdsworth &lt; 2012
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
<node CREATED="1662151302627" ID="ID_442009739" MODIFIED="1662151321940" TEXT="verwendet einen &quot;Suchpfad&quot; aus der Lumiera setup.ini"/>
<node CREATED="1662151324313" ID="ID_1725316253" MODIFIED="1662151341612" TEXT="normalerweise $ORIGIN/gui  sowie $ORIGIN/gui/icons"/>
<node CREATED="1662151365635" ID="ID_1658097871" MODIFIED="1662151366575" TEXT="UiStyle::registerStockItems()"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1662151474747" ID="ID_127382457" MODIFIED="1662151477893" TEXT="#1030 : use &quot;icon names&quot; instead of Gtk::StockItem">
<linktarget COLOR="#7f668c" DESTINATION="ID_127382457" ENDARROW="Default" ENDINCLINATION="629;-31;" ID="Arrow_ID_1767981957" SOURCE="ID_719864598" STARTARROW="None" STARTINCLINATION="560;80;"/>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1485555987832" ID="ID_313705636" MODIFIED="1557498707222" TEXT="Wiring">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1485555999110" ID="ID_376092703" MODIFIED="1557498707222" TEXT="top-level macht GtkLumiera im ctor"/>
<node CREATED="1485556011260" ID="ID_1618308499" MODIFIED="1557498707222" TEXT="backlink zum Manager"/>
<node CREATED="1486943522965" FOLDED="true" ID="ID_36527267" MODIFIED="1557498707222" TEXT="top-level-Kontext">
<linktarget COLOR="#4f547b" DESTINATION="ID_36527267" ENDARROW="Default" ENDINCLINATION="-424;-2038;" ID="Arrow_ID_134552555" SOURCE="ID_984712012" STARTARROW="None" STARTINCLINATION="2547;286;"/>
<linktarget COLOR="#8c95b2" DESTINATION="ID_36527267" ENDARROW="Default" ENDINCLINATION="138;-548;" ID="Arrow_ID_1284182756" SOURCE="ID_576215675" STARTARROW="None" STARTINCLINATION="883;143;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<node COLOR="#338800" CREATED="1678459444870" ID="ID_546190730" MODIFIED="1678459579081" TEXT="UI-top-Level wird direkt verdrahtet">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...d.h. &#8222;konventionell&#8220;, per ctor-Parameter
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#23d63e" DESTINATION="ID_576215675" ENDARROW="Default" ENDINCLINATION="-930;90;" ID="Arrow_ID_638247395" STARTARROW="None" STARTINCLINATION="801;59;"/>
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1488494592496" ID="ID_1586259377" MODIFIED="1557498707222" TEXT="UI-Bus"/>
<node CREATED="1488494579346" ID="ID_1182508289" MODIFIED="1557498707222" TEXT="UiManager"/>
<node CREATED="1486943529763" ID="ID_1188971928" MODIFIED="1557498707222" TEXT="WindowLocator"/>
<node CREATED="1486943607120" ID="ID_1101577688" MODIFIED="1557498707222" TEXT="InteractionDirector">
<node CREATED="1486943922541" ID="ID_646168152" MODIFIED="1557498707222" TEXT="Entspricht Model Root"/>
<node CREATED="1486943614039" ID="ID_1354424043" MODIFIED="1557498707222" TEXT="AssetController"/>
<node CREATED="1486943634229" ID="ID_1217772313" MODIFIED="1557498707222" TEXT="Kinder: Timelines">
<node CREATED="1486943640004" ID="ID_1237613626" MODIFIED="1557498707222" TEXT="Preferences"/>
<node CREATED="1486943643179" ID="ID_463409583" MODIFIED="1557498707222" TEXT="Assets"/>
<node CREATED="1486943645554" ID="ID_1803125679" MODIFIED="1557498707222" TEXT="Timeline"/>
</node>
<node CREATED="1488494646129" HGAP="34" ID="ID_1817005014" MODIFIED="1694441025296" TEXT="&#x2925; f&#xfc;r InteractionControl" VSHIFT="11">
<node CREATED="1488494665798" ID="ID_1228864928" MODIFIED="1557498707222" TEXT="SpotLocator"/>
<node CREATED="1488494689843" ID="ID_1519420241" MODIFIED="1557498707222" TEXT="Navigator"/>
<node CREATED="1488494692802" ID="ID_1706374538" MODIFIED="1557498707222" TEXT="FocusTracker"/>
</node>
</node>
<node CREATED="1486943969999" ID="ID_1823284637" MODIFIED="1557498707222" TEXT="Wizzard">
<node CREATED="1533688038820" ID="ID_70134302" MODIFIED="1576202124808" TEXT="Fehlerlog (notification display)">
<linktarget COLOR="#a9aac1" DESTINATION="ID_70134302" ENDARROW="Default" ENDINCLINATION="-1984;0;" ID="Arrow_ID_1885125683" SOURCE="ID_361019548" STARTARROW="None" STARTINCLINATION="807;-66;"/>
</node>
<node CREATED="1486943974590" ID="ID_1603501979" MODIFIED="1557498707222" TEXT="Hilfe (Website?)"/>
<node CREATED="1486944977005" ID="ID_811162889" MODIFIED="1557498707222" TEXT="kontextsensitive Hilfe"/>
<node CREATED="1488494783190" ID="ID_1886731977" MODIFIED="1557498707222" TEXT="Assistenten"/>
<node CREATED="1488494785774" ID="ID_167814846" MODIFIED="1557498707222" TEXT="About"/>
</node>
</node>
<node COLOR="#338800" CREATED="1488422770096" ID="ID_286551569" MODIFIED="1557498707222" TEXT="#1085 solve setup of top-level menu actions">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1485556027322" FOLDED="true" ID="ID_196345177" MODIFIED="1557498707222" TEXT="Problem: Docking panels">
<arrowlink COLOR="#d65a8e" DESTINATION="ID_629544763" ENDARROW="Default" ENDINCLINATION="-176;0;" ID="Arrow_ID_232994989" STARTARROW="None" STARTINCLINATION="-162;-93;"/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1485556037465" ID="ID_1657490812" MODIFIED="1557498707222" TEXT="brauchen typischerweise eine Querverbindung"/>
<node CREATED="1485556046703" ID="ID_50463095" MODIFIED="1557498707222" TEXT="geht das &#xfc;ber den Bus alleine?">
<icon BUILTIN="help"/>
<node CREATED="1504386565227" ID="ID_889188219" MODIFIED="1557498707222" TEXT="nein">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1504386568907" ID="ID_792633121" MODIFIED="1557498707222" TEXT="Referenz notwendig"/>
</node>
<node CREATED="1485556056206" ID="ID_509456873" MODIFIED="1557498707222" TEXT="...sonst mu&#xdf; der PanelManager helfen">
<icon BUILTIN="yes"/>
<node CREATED="1504386527936" ID="ID_307889825" MODIFIED="1557498707222" TEXT="mu&#xdf; ID finden k&#xf6;nnen"/>
<node CREATED="1504386535447" ID="ID_426578263" MODIFIED="1557498707222" TEXT="brauche Service zum Erzeugen/L&#xf6;schen"/>
<node CREATED="1504386595679" ID="ID_1383687482" MODIFIED="1576282358103" TEXT="Mutation: brauche Model-Platzhalter">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      das Diff wird auf den Platzhalter angewendet
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1504386636074" ID="ID_1996752633" MODIFIED="1576282358102" TEXT="automatisches Management von&#xf6;ten">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      wenn das Diff ein Element aus einer Kind-Menge <i>wegfallen l&#228;&#223;t,</i>
    </p>
    <p>
      dann mu&#223; dieses automatisch deregistriert werden
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1504371342426" ID="ID_869653682" MODIFIED="1557498707222">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      vermittelt &#252;ber den <b>ViewLocator</b>&#160;(InteractionDirector)
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#7c8aa8" DESTINATION="ID_344392695" ENDARROW="Default" ENDINCLINATION="-676;143;" ID="Arrow_ID_1224269755" STARTARROW="None" STARTINCLINATION="641;-106;"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1488677721565" FOLDED="true" ID="ID_850989325" MODIFIED="1557498707222" TEXT="Problem: Zugang">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_850989325" ENDARROW="Default" ENDINCLINATION="183;-575;" ID="Arrow_ID_1002016515" SOURCE="ID_1520540731" STARTARROW="None" STARTINCLINATION="624;264;"/>
<linktarget COLOR="#9f5680" DESTINATION="ID_850989325" ENDARROW="Default" ENDINCLINATION="211;189;" ID="Arrow_ID_1007188680" SOURCE="ID_827179653" STARTARROW="None" STARTINCLINATION="963;-965;"/>
<icon BUILTIN="flag-pink"/>
<node CREATED="1488677729388" ID="ID_764102285" MODIFIED="1557498707222" TEXT="grunds&#xe4;tziches Problem">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1488678069565" ID="ID_346104238" MODIFIED="1557498707222" TEXT="explizite Verdrahtung scheidet aus"/>
<node CREATED="1488678077236" ID="ID_1536759032" MODIFIED="1557498707222" TEXT="klassisches Inversion-Of-Control">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1488678106024" ID="ID_1242521430" MODIFIED="1557498707222" TEXT="access by name">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
</node>
<node CREATED="1488677737419" ID="ID_1621219441" MODIFIED="1557498707222" TEXT="einfach gel&#xf6;st f&#xfc;r top-Level">
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1488677751537" ID="ID_75445042" MODIFIED="1557498707222" TEXT="schwierig f&#xfc;r Widgets">
<icon BUILTIN="smily_bad"/>
<node COLOR="#338800" CREATED="1520721624161" ID="ID_1714114896" MODIFIED="1557498707222" TEXT="DependencyFactory">
<arrowlink COLOR="#5c71a3" DESTINATION="ID_451964727" ENDARROW="Default" ENDINCLINATION="767;-2073;" ID="Arrow_ID_1454095581" STARTARROW="None" STARTINCLINATION="1892;380;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1520721630328" ID="ID_1547268458" MODIFIED="1557498707222" TEXT="wir haben schon eine L&#xf6;sung f&#xfc;r Singletons"/>
<node CREATED="1520721638143" ID="ID_1691402961" MODIFIED="1557498707222" TEXT="diese kann auf Services erweitert werden"/>
<node CREATED="1520721647670" ID="ID_1649501241" MODIFIED="1557498707222" TEXT="sollte auch L&#xf6;sung f&#xfc;r Tests beinhalten"/>
</node>
</node>
<node CREATED="1533688118209" ID="ID_143545012" MODIFIED="1557498707222" TEXT="Use cases">
<node CREATED="1533688144038" ID="ID_745583947" MODIFIED="1557498707222" TEXT="bekannte dedizierte Services">
<node CREATED="1533688177913" FOLDED="true" ID="ID_1972484306" MODIFIED="1561827465244" TEXT="Fehlerlog">
<linktarget COLOR="#9c95b1" DESTINATION="ID_1972484306" ENDARROW="Default" ENDINCLINATION="-3826;-1250;" ID="Arrow_ID_1735504887" SOURCE="ID_528918224" STARTARROW="None" STARTINCLINATION="2269;1167;"/>
<node CREATED="1533688203118" ID="ID_1499180551" MODIFIED="1533688211792" TEXT="angesprochen via UI-Bus"/>
<node CREATED="1533688212380" ID="ID_1473874751" MODIFIED="1533688216672" TEXT="hat eine global bekannte ID"/>
<node CREATED="1533688218380" ID="ID_1933065721" MODIFIED="1533688232662" TEXT="ist ein Controller">
<node CREATED="1533688634514" ID="ID_1485276432" MODIFIED="1533688640867" TEXT="NotificationController"/>
<node CREATED="1533688235977" ID="ID_242586172" MODIFIED="1533688243228" TEXT="wird verwaltet vom Wizard"/>
<node CREATED="1533688244128" ID="ID_1500614464" MODIFIED="1533688252139" TEXT="wird von diesem an den Bus angebunden"/>
<node CREATED="1533688254935" ID="ID_1266070525" MODIFIED="1533688263201" TEXT="ist nicht notwendig sichtbar"/>
<node CREATED="1533688263837" ID="ID_132068126" MODIFIED="1533688274600" TEXT="greift sich ein delegate-Display">
<node CREATED="1533688280947" ID="ID_1196135465" MODIFIED="1533688286918" TEXT="im Infobox-Panel"/>
<node CREATED="1533688287890" ID="ID_425331660" MODIFIED="1533688294453" TEXT="alloziert per ViewLocator"/>
</node>
</node>
<node CREATED="1533688318950" ID="ID_995283229" MODIFIED="1533688332784" TEXT="macht bei Bedarf ein Widget sichtbar">
<node CREATED="1533688335907" ID="ID_111071026" MODIFIED="1533688351621" TEXT="vorl&#xe4;ufig: Infobox anzeigen"/>
<node CREATED="1533688352161" ID="ID_1123594451" MODIFIED="1533688365595" TEXT="sp&#xe4;ter: nur Warnlampe blinken">
<node CREATED="1533688366799" ID="ID_1664513873" MODIFIED="1533688369651" TEXT="wie in Ardour"/>
<node CREATED="1533688370311" ID="ID_395456237" MODIFIED="1533688381209" TEXT="nur bei schwerwiegenden Problemen aufploppen"/>
</node>
</node>
</node>
</node>
<node CREATED="1533688162891" ID="ID_781003637" MODIFIED="1557498707222" TEXT="ein Kind in einen bekannten Ort pflanzen"/>
</node>
</node>
<node COLOR="#338800" CREATED="1486520281897" FOLDED="true" ID="ID_827558797" MODIFIED="1557498707222" TEXT="Problem: zwei Inseln" VSHIFT="16">
<arrowlink COLOR="#5d6386" DESTINATION="ID_1847844548" ENDARROW="Default" ENDINCLINATION="35;-168;" ID="Arrow_ID_1483178089" STARTARROW="Default" STARTINCLINATION="-2;95;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1486520289382" ID="ID_1944158920" MODIFIED="1557498707222" TEXT="CoreService + UI-Bus"/>
<node CREATED="1486520303173" ID="ID_306583765" MODIFIED="1557498707222" TEXT="UiManager, Actions etc"/>
<node CREATED="1486521232144" HGAP="44" ID="ID_1816242514" MODIFIED="1557498707222" TEXT="Fragen" VSHIFT="16">
<icon BUILTIN="help"/>
<node CREATED="1486521810252" ID="ID_728134375" MODIFIED="1557498707222" TEXT="wer verk&#xf6;rpert den Sesison-Root?">
<icon BUILTIN="help"/>
</node>
<node CREATED="1486521250790" ID="ID_447470270" MODIFIED="1557498707222" TEXT="haben wir einen globalen Controller?">
<icon BUILTIN="help"/>
</node>
<node CREATED="1486521269531" ID="ID_1633937799" MODIFIED="1557498707222" TEXT="was ist das Modell des globalen Controllers?">
<icon BUILTIN="help"/>
</node>
<node CREATED="1486521285069" ID="ID_410780953" MODIFIED="1557498707222" TEXT="wie h&#xe4;ngt das mit persistentem UI-State zusammen?">
<icon BUILTIN="help"/>
</node>
<node CREATED="1486521317725" ID="ID_1502356505" MODIFIED="1557498707222" TEXT="welche Aktionen l&#xf6;st der globale Controller aus?">
<icon BUILTIN="help"/>
</node>
<node CREATED="1486521369166" ID="ID_1068454326" MODIFIED="1557498707222" TEXT="wie werden die mit dem Men&#xfc; verbunden?">
<icon BUILTIN="help"/>
</node>
<node CREATED="1486521449835" ID="ID_236689642" MODIFIED="1557498707222" TEXT="wo h&#xe4;ngt der InvocationStateManager?">
<icon BUILTIN="help"/>
</node>
<node CREATED="1486521478792" ID="ID_235720883" MODIFIED="1557498707222" TEXT="wie redet man mit dem InvocationStateManager?">
<icon BUILTIN="help"/>
</node>
<node CREATED="1486521492102" ID="ID_339608490" MODIFIED="1557498707222" TEXT="kann man Fragen via Bus stellen?">
<icon BUILTIN="help"/>
</node>
<node CREATED="1486521526105" ID="ID_1872187260" MODIFIED="1557498707222" TEXT="nutzen wir das Advice-System?">
<icon BUILTIN="help"/>
</node>
<node CREATED="1486521980109" ID="ID_1036025143" MODIFIED="1557498707222" TEXT="wer beendet das UI?">
<icon BUILTIN="help"/>
</node>
</node>
<node CREATED="1486751116251" HGAP="140" ID="ID_113005643" MODIFIED="1557498707222" VSHIFT="61">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Br&#252;cke: <i>gemeinsamer</i>&#160;Controller
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#683c5b" DESTINATION="ID_362749694" ENDARROW="Default" ENDINCLINATION="-394;0;" ID="Arrow_ID_1979576517" STARTARROW="None" STARTINCLINATION="-24;-159;"/>
<node CREATED="1486751221990" ID="ID_563286868" MODIFIED="1557498707223" TEXT="ist Bindeglied f&#xfc;r globale Aktionen"/>
<node CREATED="1486751233315" ID="ID_1611855815" MODIFIED="1557498707223" TEXT="verk&#xf6;rpert den Model-Root"/>
<node CREATED="1486751248097" ID="ID_1313868100" MODIFIED="1557498707223" TEXT="ist Vollmitglied am Bus"/>
</node>
</node>
</node>
<node CREATED="1485126481023" ID="ID_943652445" MODIFIED="1557498707223" TEXT="pro Fenster">
<node CREATED="1485126488981" ID="ID_1346100835" MODIFIED="1557498707223" TEXT="WorkspaceWindow"/>
<node CREATED="1485126494621" ID="ID_923407468" MODIFIED="1557498707223" TEXT="PanelManager"/>
</node>
</node>
</node>
<node CREATED="1476376882857" HGAP="193" ID="ID_1420903777" MODIFIED="1557498707223" TEXT="Kern-Elemente" VSHIFT="-34">
<font NAME="SansSerif" SIZE="14"/>
<node CREATED="1480639237820" HGAP="-42" ID="ID_138717265" MODIFIED="1557498707223" TEXT="Bausteine" VSHIFT="-11">
<node CREATED="1480639254498" ID="ID_601165955" MODIFIED="1557498707223" TEXT="Placement"/>
<node CREATED="1480639279591" ID="ID_887618627" MODIFIED="1557498707223" TEXT="Timecode"/>
<node CREATED="1480639276064" ID="ID_1418536459" MODIFIED="1557498707223" TEXT="Fader"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1541089187808" FOLDED="true" ID="ID_368245484" MODIFIED="1666368514934" TEXT="ElementBoxWidget">
<linktarget COLOR="#f6cca4" DESTINATION="ID_368245484" ENDARROW="Default" ENDINCLINATION="-599;39;" ID="Arrow_ID_1199047781" SOURCE="ID_1032237384" STARTARROW="None" STARTINCLINATION="-698;-271;"/>
<linktarget COLOR="#f6cca4" DESTINATION="ID_368245484" ENDARROW="Default" ENDINCLINATION="-599;39;" ID="Arrow_ID_703893400" SOURCE="ID_1437927701" STARTARROW="None" STARTINCLINATION="42;-316;"/>
<linktarget COLOR="#406d5c" DESTINATION="ID_368245484" ENDARROW="Default" ENDINCLINATION="-469;652;" ID="Arrow_ID_264431308" SOURCE="ID_485594461" STARTARROW="None" STARTINCLINATION="-1674;133;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1541095743511" ID="ID_96949358" MODIFIED="1661616404971" TEXT="#1185 ElementBoxWidget">
<linktarget COLOR="#541915" DESTINATION="ID_96949358" ENDARROW="Default" ENDINCLINATION="-1458;130;" ID="Arrow_ID_1319876475" SOURCE="ID_1038790770" STARTARROW="None" STARTINCLINATION="818;-68;"/>
<icon BUILTIN="hourglass"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1661616390134" ID="ID_416292634" MODIFIED="1661616398305" TEXT="#1219 draft framework for ElementBoxWidget">
<icon BUILTIN="flag-yellow"/>
<node COLOR="#338800" CREATED="1664029665088" ID="ID_1662487522" MODIFIED="1666316031015" TEXT="grunds&#xe4;tzlich verwendbar als Custom-Widget-Basisklasse">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1664029678375" ID="ID_653676253" MODIFIED="1664029703892" TEXT="Erweiterungspunkt f&#xfc;r nach Zeit geeichter Ausdehnung vorhanden">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1664029710578" ID="ID_305388477" MODIFIED="1664029721290" TEXT="Erweiterungspunkt f&#xfc;r Content-Renderer-Framework angelegt">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1664029748803" ID="ID_1871953284" MODIFIED="1664029762517" TEXT="Label mit Name-ID und Standard-Icon">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1664029766091" ID="ID_114718570" MODIFIED="1664029869992" TEXT="nicht notwendig....">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node CREATED="1664029774074" ID="ID_759551039" MODIFIED="1664029785708" TEXT="Pop-Up-Men&#xfc;(s)"/>
<node CREATED="1664029786417" ID="ID_969568366" MODIFIED="1664029794056" TEXT="Integration mit Placement-Editor"/>
<node CREATED="1664029794831" ID="ID_438082684" MODIFIED="1664029806526" TEXT="Expand/Collapse-Mechanismus"/>
<node CREATED="1664029817508" ID="ID_1473132270" MODIFIED="1664029823930" TEXT="konkretes Typ-Management"/>
<node CREATED="1664029807640" ID="ID_365033048" MODIFIED="1664029816608" TEXT="konkrete Content-Renderer"/>
<node CREATED="1664029840817" ID="ID_1206826425" MODIFIED="1664029866386" TEXT="dynamic Head-Placement"/>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1664132799979" ID="ID_1304690112" MODIFIED="1664133192469" TEXT="#1239 consider Policy Based Design for ElementBoxWidget">
<linktarget COLOR="#8d81ac" DESTINATION="ID_1304690112" ENDARROW="Default" ENDINCLINATION="654;32;" ID="Arrow_ID_1945811186" SOURCE="ID_1356714491" STARTARROW="None" STARTINCLINATION="942;-96;"/>
<icon BUILTIN="hourglass"/>
</node>
<node CREATED="1541087843514" ID="ID_1798999985" MODIFIED="1557498707223" TEXT="weit verbreiteter Grundbaustein">
<icon BUILTIN="idea"/>
<node CREATED="1541087865477" ID="ID_1163649496" MODIFIED="1557498707223" TEXT="f&#xfc;r Marker"/>
<node CREATED="1541087870503" ID="ID_1325112319" MODIFIED="1557498707223" TEXT="abridged Clip"/>
<node CREATED="1541087879886" ID="ID_979570785" MODIFIED="1557498707223" TEXT="Effekt-Balken"/>
<node CREATED="1541087988423" ID="ID_1910744352" MODIFIED="1557498707223" TEXT="Elemente in den Bins"/>
<node CREATED="1541088003117" ID="ID_1033651238" MODIFIED="1557498707223" TEXT="Track-Heads"/>
<node CREATED="1541088007644" ID="ID_613037557" MODIFIED="1557498707223" TEXT="Clip-Placement und Name"/>
</node>
<node CREATED="1541088033426" ID="ID_1557673770" MODIFIED="1557498707223" TEXT="besteht aus drei Komponenten">
<icon BUILTIN="info"/>
<node CREATED="1541088065655" ID="ID_1906795297" MODIFIED="1557498707223" TEXT="ein Icon"/>
<node CREATED="1541088069333" ID="ID_387176460" MODIFIED="1557498707223" TEXT="ein Men&#xfc;-Knopf"/>
<node CREATED="1541088076739" ID="ID_1484330559" MODIFIED="1557498707223" TEXT="ein Text-Label"/>
</node>
<node CREATED="1541088109169" ID="ID_12349251" MODIFIED="1557498707223" TEXT="Eigenschaften">
<node CREATED="1541088143435" ID="ID_1434785926" MODIFIED="1557498707223" TEXT="Icon einfach vorw&#xe4;hlbar">
<node CREATED="1541089389797" ID="ID_311117611" MODIFIED="1557498707223" TEXT="Placement"/>
<node CREATED="1541089394205" ID="ID_1611263820" MODIFIED="1557498707223" TEXT="Stock"/>
</node>
<node CREATED="1541088360999" ID="ID_1860524548" MODIFIED="1557498707223" TEXT="horizontale Ausdehnung steuerbar">
<node CREATED="1541088395516" ID="ID_122658669" MODIFIED="1576282358102" TEXT="nat&#xfc;rlich">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      d.h. das Widget unternimmt selber nichts, und &#252;berl&#228;&#223;t GTK die Gr&#246;&#223;enbestimmung
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1541088402105" ID="ID_857510555" MODIFIED="1576282358101" TEXT="feste L&#xe4;ngenvorgabe">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      d.h. das Text-Label bekommt ggfs. eine L&#228;ngenbeschr&#228;nkung.
    </p>
    <p>
      Und sonst wird der K&#246;rper/Hintergrund ausgedehnt
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#a9b4c1" DESTINATION="ID_857510555" ENDARROW="Default" ENDINCLINATION="390;43;" ID="Arrow_ID_817703923" SOURCE="ID_153982067" STARTARROW="None" STARTINCLINATION="474;-38;"/>
</node>
<node CREATED="1541088480846" ID="ID_6642470" MODIFIED="1576282358101" TEXT="Kopf proportional platzierbar">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Vorgabe ist ein Fenster(=Intervall) und dessen Position relativ zum Widget-Start.
    </p>
    <p>
      Das Widget bestimmt daraus selbst&#228;ndig
    </p>
    <ul>
      <li>
        wie das Fenster relativ zu seiner eigenen Ausdehnung liegt (Logik von Intervallen ist komplex!)
      </li>
      <li>
        ob es im Besonderen in seinem Inneren liegt, und proportional wo
      </li>
      <li>
        und w&#228;hlt dem entsprechend die Platzierung des &quot;Kopf&quot;-Handles (Icon+Label)
      </li>
    </ul>
    <p>
      Das Resultat ist, da&#223; der Kopf dynamisch und proportional mitrollt,
    </p>
    <p>
      &#228;hnlich wie das Handle einer Scrollbar. Damit bleibt der Kopf
    </p>
    <p>
      stets zugreifbar, und gibt einen Hinweis auf die Gesamtlage.
    </p>
    <p>
      <b>Sehr wichtig</b>&#160;f&#252;r die Anzeige von <b>langen Clips</b>&#160;und Effekten.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1541095770851" ID="ID_1856155420" MODIFIED="1557498707223" TEXT="#1186 proportional Head placement">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
<node CREATED="1541089256961" ID="ID_1928362240" MODIFIED="1557498707223" TEXT="der Body  kann optoinal ein anderes Widget halten"/>
<node CREATED="1541089279788" ID="ID_798853169" MODIFIED="1557498707223" TEXT="Standard-Verdrahtung">
<node CREATED="1541089452455" ID="ID_1363384956" MODIFIED="1557498707223" TEXT="Icon == Placement">
<node CREATED="1541089459079" ID="ID_1295238871" MODIFIED="1557498707223" TEXT="Klick auf Placement"/>
<node CREATED="1541089468035" ID="ID_1760862573" MODIFIED="1557498707223" TEXT="f&#xfc;hrt in den Placement-Editor"/>
<node CREATED="1541089480558" ID="ID_562547203" MODIFIED="1557498707223" TEXT="kann Pop-Up sein, oder im Property-Grid"/>
</node>
<node CREATED="1541089502918" ID="ID_1500762782" MODIFIED="1557498707223" TEXT="nur ein (gemeinsames) Binding">
<node CREATED="1541089526108" ID="ID_1032155020" MODIFIED="1557498707223" TEXT="Signal"/>
</node>
<node CREATED="1541089531186" ID="ID_1668113871" MODIFIED="1557498707223" TEXT="zwei Bindings">
<node CREATED="1541089538704" ID="ID_454635570" MODIFIED="1557498707223" TEXT="Icon-Signal"/>
<node CREATED="1541089542345" ID="ID_1226950315" MODIFIED="1557498707223" TEXT="Arrow-Signal"/>
</node>
<node CREATED="1541089600063" ID="ID_1799506646" MODIFIED="1557498707223" TEXT="Expander mit Arrow verbunden"/>
<node CREATED="1541089613961" ID="ID_857454578" MODIFIED="1557498707223" TEXT="jedes Binding kann d&#xfc;rch ein Pop-Up-Men&#xfc; ersetzt werden"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1625072684078" FOLDED="true" ID="ID_1863177537" MODIFIED="1625072724798" TEXT="als CustomWidget realisieren">
<linktarget COLOR="#f6e1c2" DESTINATION="ID_1863177537" ENDARROW="Default" ENDINCLINATION="-366;30;" ID="Arrow_ID_1412423566" SOURCE="ID_1875608147" STARTARROW="None" STARTINCLINATION="-2400;-277;"/>
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1624118406176" ID="ID_589554755" MODIFIED="1664836982291" TEXT="Festlegungen">
<icon BUILTIN="yes"/>
<icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1624118413444" FOLDED="true" ID="ID_525135958" MODIFIED="1625072535770" TEXT="Basis-Widget">
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1624118429389" ID="ID_875793943" MODIFIED="1664836954095" TEXT="Ansatzpunkte">
<icon BUILTIN="idea"/>
<node CREATED="1624118435548" ID="ID_683607951" MODIFIED="1624118442679" TEXT="es ist ein Container"/>
<node CREATED="1624118448617" ID="ID_855361232" MODIFIED="1624118458532" TEXT="es funktioniert analog wie ein Gtk::Frame"/>
<node CREATED="1624118530287" ID="ID_1198328917" MODIFIED="1624118546896" TEXT="aber es hat auch Verhalten wie eine Gtk::Box"/>
<node CREATED="1624118488100" ID="ID_1709129346" MODIFIED="1624118551677" TEXT="es hat feste Kind-Elemente plus ein w&#xe4;hlbares Content-Widget"/>
</node>
<node CREATED="1625069073522" ID="ID_1232660529" MODIFIED="1625070765303" TEXT="M&#xf6;glichkeiten">
<icon BUILTIN="info"/>
<node CREATED="1625069082685" ID="ID_1397995115" MODIFIED="1625070771572" TEXT="Gtk::Bin">
<icon BUILTIN="button_cancel"/>
<node CREATED="1625069092758" ID="ID_402763047" MODIFIED="1625069101883" TEXT="abstrakte Basisklasse"/>
<node CREATED="1625069102548" ID="ID_1617772051" MODIFIED="1625069113063" TEXT="kann ein Kind-Widget halten"/>
<node CREATED="1625069113915" ID="ID_153758398" MODIFIED="1625069125077" TEXT="kann f&#xfc;r dieses ein Label hinzuf&#xfc;gen">
<node CREATED="1625070050530" ID="ID_903940935" MODIFIED="1625070054889" TEXT="aber nur ein textuell"/>
<node CREATED="1625070055598" ID="ID_403424864" MODIFIED="1625070058809" TEXT="oder ein Bitmap"/>
</node>
<node CREATED="1625070065123" ID="ID_1597717716" MODIFIED="1625070075262" TEXT="f&#xfc;r alles weitere mu&#xdf; man sich selber in das draw() reinh&#xe4;ngen"/>
</node>
<node CREATED="1625069187289" ID="ID_872591254" MODIFIED="1625070774327" TEXT="Gtk::Frame">
<icon BUILTIN="forward"/>
<node CREATED="1625069192432" ID="ID_709423265" MODIFIED="1625069203664" TEXT="macht eigentlich exakt was wir brauchen"/>
<node CREATED="1625069204446" ID="ID_47523093" MODIFIED="1625069786876" TEXT="aber etwas &#xbb;fest verdrahtet&#xab;">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <ul>
      <li>
        es hat nur genau ein Label
      </li>
      <li>
        f&#252;r dieses Label kann man nur den Text angeben
      </li>
      <li>
        auch der Frame wird praktisch &quot;schl&#252;sselfertig&quot; bereitgestellt
      </li>
    </ul>
  </body>
</html></richcontent>
<node CREATED="1625069345843" ID="ID_184340763" MODIFIED="1625069366548" TEXT="aber optional kann man ein LabelWidget verwenden"/>
<node CREATED="1625069370600" ID="ID_1171321554" MODIFIED="1625069378659" TEXT="und das Alignment ist gut steuerbar">
<node CREATED="1625069794391" ID="ID_873265878" MODIFIED="1625069810266" TEXT="horizontale Position"/>
<node CREATED="1625069810952" ID="ID_1320642493" MODIFIED="1625069816840" TEXT="Label relativ zum Frame">
<node CREATED="1625069836370" ID="ID_1994693951" MODIFIED="1625069850491" TEXT="steuert indirekt ob der Frame unterbrochen wird"/>
</node>
</node>
</node>
<node CREATED="1625069860086" ID="ID_190251401" MODIFIED="1625069890868" TEXT="offene Punkte">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1625069893018" ID="ID_1485806735" MODIFIED="1625069898845" TEXT="Zusammenspiel mit dem Theme">
<node CREATED="1625069902209" ID="ID_415033973" MODIFIED="1625069919149" TEXT="alle lieben den flachen Stil">
<icon BUILTIN="smily_bad"/>
</node>
<node CREATED="1625069931093" ID="ID_1105083016" MODIFIED="1625069942833" TEXT="es kann passieren, da&#xdf; der Frame unsichtbar ist"/>
</node>
<node CREATED="1625069979972" ID="ID_426678553" MODIFIED="1625069994216" TEXT="Overlays und custom drawing"/>
</node>
</node>
<node CREATED="1625070116748" ID="ID_848351976" MODIFIED="1625070768379" TEXT="Gtk::Layout">
<icon BUILTIN="hourglass"/>
<node CREATED="1625070136274" ID="ID_104505251" MODIFIED="1625070160572">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      das hei&#223;t: weitgehend <i>custom drawing</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1625070617312" ID="ID_916760742" MODIFIED="1625070638385" TEXT="die komplexe Anordnung w&#xe4;re leicht zu realisieren, incl Overlays"/>
<node CREATED="1625070640413" ID="ID_1387457523" MODIFIED="1625070725403" TEXT="Gefahr: h&#xf6;herer interner Verwaltungsaufwand">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1625070686998" ID="ID_751700152" MODIFIED="1625070725416" TEXT="Gefahr: spezieller Anzeigecode wird rasch komplex">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
<node CREATED="1625070776368" ID="ID_458451861" MODIFIED="1625070789467" TEXT="Beschlu&#xdf;: mit Gtk::Frame anfangen...">
<icon BUILTIN="yes"/>
<node CREATED="1625070800382" ID="ID_745380101" MODIFIED="1625070836175" TEXT="mit geschickter Parametrisierung k&#xf6;nnte das sogar auf Dauer die L&#xf6;sung sein"/>
<node CREATED="1625070967367" ID="ID_584171745" MODIFIED="1625070976257" TEXT="f&#xfc;r den Inhalt bleiben wir flexibel">
<node CREATED="1625070978909" ID="ID_1566586463" MODIFIED="1625071001086" TEXT="Frame mu&#xdf; nah am Rand liegen"/>
<node CREATED="1625071002410" ID="ID_1625945732" MODIFIED="1625071018403" TEXT="...dann k&#xf6;nnen wir alle Overlays per Gtk::Layout-Child handhaben"/>
<node CREATED="1625071050555" ID="ID_1277840158" MODIFIED="1625071065981" TEXT="alternativ blo&#xdf; ein Gtk::Canvas (Wellenform)"/>
<node CREATED="1625071114066" ID="ID_1417509025" MODIFIED="1625071118604" TEXT="oder ein Gtk::Image"/>
<node CREATED="1625071125657" ID="ID_27403748" MODIFIED="1625071134499" TEXT="oder ein Video-Player-Widget"/>
<node CREATED="1625071135319" ID="ID_778840777" MODIFIED="1625071140731" TEXT="oder ein Gtk::TextView"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1625072797631" ID="ID_841790569" MODIFIED="1666367871002" TEXT="Basis-Eigenschaften">
<icon BUILTIN="yes"/>
<node CREATED="1625072864330" ID="ID_438468634" MODIFIED="1625072878647" TEXT="Ausdehnung fest vorgebbar">
<node CREATED="1625072881602" ID="ID_1324969264" MODIFIED="1625072892300" TEXT="mu&#xdf; sich dieser Vorgabe flexibel anpassen k&#xf6;nnen"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1625073121818" ID="ID_1588690810" MODIFIED="1625073648828" TEXT="Baukasten-System">
<icon BUILTIN="info"/>
<node COLOR="#338800" CREATED="1625073160693" ID="ID_741459865" MODIFIED="1666367854233" TEXT="Icon">
<icon BUILTIN="button_ok"/>
<node CREATED="1625073209509" ID="ID_1647215892" MODIFIED="1625073216705" TEXT="Knopf mit Ein/Aus-Funktion"/>
<node CREATED="1625073252395" ID="ID_1887674930" MODIFIED="1625073270866" TEXT="Placement mit Placement-Properties"/>
<node CREATED="1625073397733" ID="ID_252893466" MODIFIED="1625073403209" TEXT="Typ-Icon"/>
<node COLOR="#435e98" CREATED="1664546626719" ID="ID_482244613" MODIFIED="1666367845862" TEXT="Varianten">
<linktarget COLOR="#5559e6" DESTINATION="ID_482244613" ENDARROW="Default" ENDINCLINATION="-920;179;" ID="Arrow_ID_1621895884" SOURCE="ID_303509395" STARTARROW="None" STARTINCLINATION="226;27;"/>
<icon BUILTIN="yes"/>
<node CREATED="1664546651860" ID="ID_54475262" MODIFIED="1664546667097" TEXT="das Grundmuster ist unver&#xe4;nderbar fixiert"/>
<node CREATED="1664546675817" ID="ID_1608209700" MODIFIED="1664546690747" TEXT="das erste Icon wird nach Presentation-Intent belegt">
<node CREATED="1664546694038" ID="ID_375518756" MODIFIED="1664546699722" TEXT="default: Placement"/>
<node CREATED="1664546700429" ID="ID_1871717245" MODIFIED="1664546714656" TEXT="Bin-Item: Typ-Icon"/>
</node>
<node CREATED="1664546716995" ID="ID_1893051713" MODIFIED="1664546729304" TEXT="das zweite Icon ist entweder ein Men&#xfc;, oder ein Expander">
<node CREATED="1664546774836" ID="ID_1104234333" MODIFIED="1664548057947" TEXT="Men&#xfc; == normales Kontext-Men&#xfc;">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...das hei&#223;t, der Men&#252;-Button ist dann nur <i>pro forma </i>da, und bietet eine Fl&#228;che, auf der man zuverl&#228;ssig dieses Men&#252; trifft; letzteres ist relevant f&#252;r eine Anzeige in Listen und Bins, bei der ansonsten die Ausdehnung des Widgets stark reduziert ist. Ein Klick auf das Name-Label hat eine andere Funktion (n&#228;mlich Editieren des Namens). Ein Weiterer Aspekt ist die Drag-Geste: es ist denkbar, diese auf dem Men&#252;-Button <i>nicht</i>&#160;zu starten (wobei allerdings zu bedenken ist, das Ziehen auch noch an weitere Voraussetzungen zu kn&#252;pfen, z.B. einen Modifiere, oder den Umstand, da&#223; das Objekt auch selektiert ist)
    </p>
  </body>
</html></richcontent>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1664546786666" ID="ID_418065847" MODIFIED="1664546893122" TEXT="links-Klick">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Ja, wir wollen das alte Blender-Modell: Selektion mit rechts, Aktion mit links
    </p>
  </body>
</html></richcontent>
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1664546793973" ID="ID_79262414" MODIFIED="1664546802948" TEXT="auch auf dem freien Hintergrund"/>
</node>
<node CREATED="1664546805728" ID="ID_162637423" MODIFIED="1664547883294" TEXT="Expander typischerweise f&#xfc;r Timeline-Content">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      in diesem Fall ist das dann eine Art Toggle-Button, d.h. er wechselt auch seine Gestalt
    </p>
  </body>
</html></richcontent>
<node CREATED="1664546823853" ID="ID_1235252109" MODIFIED="1664546831232" TEXT="dann verdrahtet mit Tangible"/>
<node CREATED="1664546831980" ID="ID_1813900014" MODIFIED="1664547929394">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      das <i>verdr&#228;ngt lediglich </i>das Kontext-Men&#252;
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...denn das Kontext-Men&#252; soll auf dem ganzen Widget liegen (und konkurriert &#252;brigens mit der Drag-Geste)
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1625073420073" ID="ID_1610907627" MODIFIED="1625073651531" TEXT="Expander">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1625073503359" ID="ID_795687889" MODIFIED="1625073650316" TEXT="Label mit intelligentem Inhalt">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1625073544225" ID="ID_714674809" MODIFIED="1625073574690" TEXT="ID-Nummer"/>
<node CREATED="1625073613360" ID="ID_881063614" MODIFIED="1625073620611" TEXT="erg&#xe4;nzende Beschreibung"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1625073654626" ID="ID_1873888723" MODIFIED="1625073685735" TEXT="Content-Schema">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1625073669648" ID="ID_1387633826" MODIFIED="1625073684495" TEXT="Hintergrund in Marker-Farbe">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1625073693037" ID="ID_800072798" MODIFIED="1625073713363" TEXT="konfigurierbarer Renderer">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1625073746174" ID="ID_978569677" MODIFIED="1625073749633" TEXT="Overlays">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1625073757173" ID="ID_1408901221" MODIFIED="1625073764844" TEXT="Resize-Ecken">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1625073766170" ID="ID_1361820852" MODIFIED="1625073794056" TEXT="horizontal gebundene Positions-Marker">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1625073626910" ID="ID_874230795" MODIFIED="1625073647305" TEXT="Kontext-Men&#xfc; bereitstellen">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1625073639178" ID="ID_103540197" MODIFIED="1625073646355" TEXT="Verbindung zu einer Property-Box">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1625075636602" ID="ID_1335603093" MODIFIED="1625075658764" TEXT="standardisierte Status-Reaktionen">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1612620683850" ID="ID_1290975013" MODIFIED="1664548424931" TEXT="auszuarbeiten....">
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1625075258497" ID="ID_1793264120" MODIFIED="1666367882488" TEXT="Steuerung des Darstellungs-Verhaltens">
<icon BUILTIN="hourglass"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1625075337795" ID="ID_873107891" MODIFIED="1625075355499" TEXT="Analyse">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1625075422300" ID="ID_1618347962" MODIFIED="1625075428886" TEXT="was ist flexibel?">
<arrowlink COLOR="#758d9c" DESTINATION="ID_1956334148" ENDARROW="Default" ENDINCLINATION="-821;-507;" ID="Arrow_ID_1964102997" STARTARROW="None" STARTINCLINATION="48;358;"/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1625075536956" ID="ID_1129688450" MODIFIED="1625075544135" TEXT="expanded vs collapsed"/>
<node CREATED="1625075675850" ID="ID_1669027675" MODIFIED="1625075700208" TEXT="Status-Anzeige-Elemente">
<node CREATED="1625075772886" ID="ID_181698364" MODIFIED="1625075778071" TEXT="m&#xfc;ssen kombinierbar sein"/>
<node CREATED="1625075778875" ID="ID_888134732" MODIFIED="1625075798044" TEXT="konkret...">
<node CREATED="1625075799440" ID="ID_402285439" MODIFIED="1625075801836" TEXT="Fehler"/>
<node CREATED="1625075802531" ID="ID_1393529935" MODIFIED="1625075807091" TEXT="Warnung"/>
<node CREATED="1625075807920" ID="ID_212997652" MODIFIED="1625075819771" TEXT="Aktivit&#xe4;t"/>
<node CREATED="1625075828060" ID="ID_193924085" MODIFIED="1625075831264" TEXT="Gesperrt"/>
</node>
</node>
<node CREATED="1625075575855" ID="ID_7348918" MODIFIED="1625075584153" TEXT="ScollWindowPos">
<node CREATED="1654445417792" ID="ID_503426913" MODIFIED="1654445428132" TEXT="internes Layout pa&#xdf;t sich an..."/>
<node CREATED="1654445429888" ID="ID_1772582519" MODIFIED="1654445484446" TEXT="Zweck: visueller Hinweis auf die ScrollWindowPos">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ScrollWindowPos == wo befindet sich das Scroll-Window (sichtbarer Ausschnitt) innerhalb eines gr&#246;&#223;eren Intervalles, welches vom Widget dargestellt wird
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1625075342643" ID="ID_1177317250" MODIFIED="1625075354429" TEXT="Design-Entscheidungen">
<icon BUILTIN="yes"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1625075347837" ID="ID_1633859495" MODIFIED="1664029945723" TEXT="dynamic composition in ctor">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node CREATED="1664029957465" ID="ID_1547703834" MODIFIED="1664029964884" TEXT="also nicht komplett statisch/typesafe"/>
<node CREATED="1664029965728" ID="ID_420276641" MODIFIED="1664029974907" TEXT="aber einmal per Builder verdrahtet"/>
<node CREATED="1664029975919" ID="ID_1939158808" MODIFIED="1664030049366" TEXT="dynamic sanity checks">
<arrowlink COLOR="#404289" DESTINATION="ID_293134573" ENDARROW="Default" ENDINCLINATION="175;-873;" ID="Arrow_ID_1989504612" STARTARROW="None" STARTINCLINATION="768;94;"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1612620568330" ID="ID_1826613475" MODIFIED="1664494458140" TEXT="Problem: feste Gr&#xf6;&#xdf;en-Vorgabe">
<linktarget COLOR="#6fb9c8" DESTINATION="ID_1826613475" ENDARROW="Default" ENDINCLINATION="1266;110;" ID="Arrow_ID_1550601686" SOURCE="ID_351516626" STARTARROW="None" STARTINCLINATION="2230;117;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1625072904888" ID="ID_373040535" MODIFIED="1625072974106" TEXT="pa&#xdf;t nicht recht in den Gtk-Standard">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...denn GTK geht von einer fixen Mindestgr&#246;&#223;e aus, einem Allocation-Request und dann einer Platzzuteilung
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#435e98" CREATED="1625075098065" FOLDED="true" HGAP="75" ID="ID_740164704" MODIFIED="1663977387429" TEXT="Frage: wo mu&#xdf; man anpassen...." VSHIFT="-5">
<edge COLOR="#a56a6a"/>
<arrowlink COLOR="#796ba9" DESTINATION="ID_1143769023" ENDARROW="Default" ENDINCLINATION="-733;-40;" ID="Arrow_ID_1215170372" STARTARROW="None" STARTINCLINATION="-1892;158;"/>
<icon BUILTIN="help"/>
<node CREATED="1663977162683" ID="ID_948579259" MODIFIED="1663977175076" TEXT="dazu mu&#xdf; man den Layout-Allokations-Mechanismus verstehen"/>
<node CREATED="1663977179224" ID="ID_1440569490" MODIFIED="1663977197290" TEXT="die Standard-Implementierung ist eine Kette von Aggregation und Delegation"/>
<node BACKGROUND_COLOR="#d5d1ef" COLOR="#435e98" CREATED="1663976907423" ID="ID_1507590849" MODIFIED="1663977378741" TEXT="Fazit">
<arrowlink COLOR="#6b229a" DESTINATION="ID_1503005110" ENDARROW="Default" ENDINCLINATION="-1806;-166;" ID="Arrow_ID_1347071203" STARTARROW="None" STARTINCLINATION="-2004;582;"/>
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="info"/>
<node CREATED="1663976912732" ID="ID_1628642843" MODIFIED="1663976935956" TEXT="direkt bei den get_preferred-VFuncs ansetzen"/>
<node CREATED="1663976936598" ID="ID_538084170" MODIFIED="1663976947659" TEXT="Standard-Impl delegiert und aggregiert hier nur"/>
<node CREATED="1663976948910" ID="ID_665707543" MODIFIED="1663976964397" TEXT="die Basiswerte stammen aus der CSS-Auswertung"/>
<node CREATED="1663976973787" ID="ID_1501027418" MODIFIED="1663977503034" TEXT="also drei Schritte">
<arrowlink COLOR="#505398" DESTINATION="ID_763928282" ENDARROW="Default" ENDINCLINATION="-708;-358;" ID="Arrow_ID_1762163985" STARTARROW="None" STARTINCLINATION="-29;281;"/>
<node CREATED="1663976978882" ID="ID_1756884177" MODIFIED="1663977086920" TEXT="Basis-Impl aufrufen &#x27f9; holt Standard-Layout von CSS">
<icon BUILTIN="full-1"/>
</node>
<node CREATED="1663976986201" ID="ID_280056674" MODIFIED="1663977065627" TEXT="Abgleich, Manipulation, Ausblenden &#x27f9; bis Constraint erf&#xfc;llt">
<icon BUILTIN="full-2"/>
</node>
<node CREATED="1663977014990" ID="ID_696754346" MODIFIED="1663977067787" TEXT="dann schlie&#xdf;lich den vordefinierten Size-Constraint zur&#xfc;ckliefern">
<icon BUILTIN="full-3"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1661557586218" FOLDED="true" ID="ID_859822896" MODIFIED="1666367808161" TEXT="Zeitangabe in Ausdehnung umsetzen">
<arrowlink COLOR="#7479c0" DESTINATION="ID_1343110314" ENDARROW="Default" ENDINCLINATION="-766;-1697;" ID="Arrow_ID_712594873" STARTARROW="None" STARTINCLINATION="520;37;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1661557875471" ID="ID_339780782" MODIFIED="1666367752575" TEXT="API im CanvasHook">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1661557894284" ID="ID_58216896" MODIFIED="1661557909598" TEXT="&#x27f9; dann m&#xfc;&#xdf;te es hookable sein..."/>
<node COLOR="#435e98" CREATED="1661557910685" ID="ID_709773431" MODIFIED="1666367524129" TEXT="Alternativen?">
<icon BUILTIN="help"/>
<node CREATED="1666367514311" ID="ID_1178111441" MODIFIED="1666367521823" TEXT="generisches API einf&#xfc;hren">
<icon BUILTIN="button_cancel"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1666367490994" ID="ID_636187892" MODIFIED="1666367724504" TEXT="Pull per &#x3bb;">
<linktarget COLOR="#4e4fc1" DESTINATION="ID_636187892" ENDARROW="Default" ENDINCLINATION="-34;579;" ID="Arrow_ID_1572846735" SOURCE="ID_1159408504" STARTARROW="None" STARTINCLINATION="61;-374;"/>
<icon BUILTIN="forward"/>
<node COLOR="#338800" CREATED="1666367543907" ID="ID_859364136" LINK="#ID_953567994" MODIFIED="1666367732555" TEXT="proof-of-Concept: ClipWidget"/>
<node COLOR="#435e98" CREATED="1666367735326" ID="ID_148248231" MODIFIED="1666367745247" TEXT="L&#xf6;sung sieht sauber aus">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1661557959964" HGAP="149" ID="ID_1683748982" MODIFIED="1666367798594" TEXT="Wann/wozu?" VSHIFT="2">
<icon BUILTIN="help"/>
<node CREATED="1661558025450" ID="ID_153982067" MODIFIED="1661558059696" TEXT="im Modus &quot;feste L&#xe4;ngenvorgabe&quot;">
<arrowlink DESTINATION="ID_857510555" ENDARROW="Default" ENDINCLINATION="390;43;" ID="Arrow_ID_817703923" STARTARROW="None" STARTINCLINATION="474;-38;"/>
</node>
<node CREATED="1666367765333" ID="ID_1429653928" MODIFIED="1666367779043" TEXT="anpassen nach jeder Zoom-&#xc4;nderung"/>
<node CREATED="1666367783710" ID="ID_1991615628" MODIFIED="1666367796499" TEXT="ggfs auch Vorgaben zur H&#xf6;he vorsehen">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1625075206250" ID="ID_721261085" MODIFIED="1625075212634" TEXT="Strukturen aufbauen">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1625075275103" ID="ID_1622786444" MODIFIED="1664836999132" TEXT="Konstruktor">
<icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1625075282830" ID="ID_1730704998" MODIFIED="1664494473359" TEXT="mini-DSL f&#xfc;r die Konfigurations-Varianten schaffen">
<icon BUILTIN="button_ok"/>
<node CREATED="1654445954424" FOLDED="true" ID="ID_1720484280" MODIFIED="1661558650010" TEXT="1.Ansatz: explizit">
<icon BUILTIN="button_cancel"/>
<node CREATED="1654445618173" ID="ID_1315147546" MODIFIED="1654445654111" TEXT="Icon per vordefinierter Spec">
<node CREATED="1654445665127" ID="ID_579106767" MODIFIED="1654445667994" TEXT="TOGGLE"/>
<node CREATED="1654445668679" ID="ID_459682437" MODIFIED="1654445672029" TEXT="PLACEMENT"/>
<node CREATED="1654445697299" ID="ID_1904059530" MODIFIED="1654445701143" TEXT="TYPE_VIDEO"/>
<node CREATED="1654445702115" ID="ID_910973152" MODIFIED="1654445719157" TEXT="TYPE_AUDIO"/>
<node CREATED="1654445720120" ID="ID_929230990" MODIFIED="1654445722442" TEXT="....">
<node CREATED="1654445723463" ID="ID_1294993319" MODIFIED="1654445734936" TEXT="hier bewu&#xdf;t &quot;flach&quot; anfangen">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node CREATED="1654445976060" ID="ID_245045599" MODIFIED="1654446070433" TEXT="Expander"/>
<node CREATED="1654446071737" ID="ID_1388489184" MODIFIED="1654446081995" TEXT="Menu einbinden"/>
<node CREATED="1654446105991" ID="ID_1589646798" MODIFIED="1654446111272" TEXT="Placement einbinden">
<node CREATED="1654446112410" ID="ID_1144219107" MODIFIED="1654446126479" TEXT="Frage: wie referenziert?">
<icon BUILTIN="help"/>
</node>
</node>
<node CREATED="1654446135374" ID="ID_1745476469" MODIFIED="1654446169327" TEXT="Content">
<node CREATED="1654446170127" ID="ID_161101124" MODIFIED="1654446175702" TEXT="Hintergrundfarbe"/>
<node CREATED="1654446176506" ID="ID_1198030114" MODIFIED="1654446183237" TEXT="speziellen Renderer einbinden"/>
</node>
</node>
<node CREATED="1654447175801" FOLDED="true" ID="ID_130925250" MODIFIED="1661558654675" TEXT="2.Ansatz: intentional">
<icon BUILTIN="forward"/>
<node CREATED="1654447205213" ID="ID_360701766" MODIFIED="1654447213879" TEXT="man gibt einen Pr&#xe4;sentationsstil vor"/>
<node CREATED="1654447241576" ID="ID_17226608" MODIFIED="1654447262732" TEXT="sowie einen Typ und einen Inhalts-Stil"/>
<node CREATED="1654447896151" ID="ID_1043723877" MODIFIED="1654447900359" TEXT="Schema">
<node CREATED="1654447901661" ID="ID_988465077" MODIFIED="1654448124509" TEXT="Kind">
<node CREATED="1654447908464" ID="ID_1051744069" MODIFIED="1654447973665" TEXT="MARK">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ein Marker, ein Pin, Position,....
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1654447915277" ID="ID_605454519" MODIFIED="1654448000114" TEXT="SPAN">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      repr&#228;sentiert einen benannten Zeit-Bereich:
    </p>
    <ul>
      <li>
        Range-Mark
      </li>
      <li>
        Effekt
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node CREATED="1654447918320" ID="ID_518830573" MODIFIED="1654448078388" TEXT="ITEM">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Eintrag in einer Liste oder Asset in einer Sammlung;
    </p>
    <p>
      hier erfolgt Pr&#228;sentation nach <i>nat&#252;rlicher Gr&#246;&#223;e</i>, ggfs mit L&#228;ngenbeschr&#228;nkung...
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1654447921187" ID="ID_513954235" MODIFIED="1654448113829" TEXT="CONTENT">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Ein Mini-Container mit Placement, Name und einem Inhalts-Renderer
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1654448125537" ID="ID_1395529796" MODIFIED="1654448128455" TEXT="Type">
<node CREATED="1654448130558" ID="ID_1241445967" MODIFIED="1654448134530" TEXT="Art des Objekts">
<node CREATED="1654448141757" ID="ID_950634267" MODIFIED="1654448144148" TEXT="VIDEO"/>
<node CREATED="1654448145019" ID="ID_1438778701" MODIFIED="1654448147368" TEXT="AUDIO"/>
<node CREATED="1654448148172" ID="ID_619152561" MODIFIED="1654448153007" TEXT="EFFECT"/>
<node CREATED="1654448154480" ID="ID_1428501909" MODIFIED="1654448287941" TEXT="LABEL">
<node CREATED="1654448495868" ID="ID_278262506" MODIFIED="1662037668001" TEXT="oder MARKER?">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Terminologie nicht klar...
    </p>
    <p>
      ...was hab ich bei den Kind-Elementen vom Track gemacht?
    </p>
    <p>
      &#10233; die hei&#223;en auch &#187;Marker&#171;
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1661896412054" ID="ID_1438729609" MODIFIED="1662037625910" TEXT="&quot;Marker&quot; dr&#xfc;ckt den Intent besser aus">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1662037631505" ID="ID_242913609" MODIFIED="1662037676913" TEXT="Aber das Objekt ist besser als &#xbb;Label&#xab; beschrieben">
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1654448789732" ID="ID_816398160" MODIFIED="1654450396327" TEXT="RULER">
<icon BUILTIN="hourglass"/>
<node CREATED="1654448804617" ID="ID_1155659692" MODIFIED="1654448839461" TEXT="dient nur zur Dartellung von Bereichen + Marken"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1654450398063" ID="ID_1951922896" MODIFIED="1654450407871" TEXT="Relevanz noch nicht klar">
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node CREATED="1654449069944" ID="ID_1055078998" MODIFIED="1654449100179" TEXT="GROUP">
<node CREATED="1654449075116" ID="ID_1577967123" MODIFIED="1654449097158" TEXT="ein Element das andere Elemente stukturiert"/>
</node>
</node>
<node CREATED="1654448849843" ID="ID_1484299794" MODIFIED="1654448862165" TEXT="impliziert ein Standard-Layout">
<node CREATED="1654448872908" ID="ID_257526761" MODIFIED="1654448894394" TEXT="VIDEO / AUDIO : Placement und Content"/>
<node CREATED="1654448969802" ID="ID_1936666898" MODIFIED="1654448981191" TEXT="EFFECT: Placement aber kein Content"/>
<node CREATED="1654449021075" ID="ID_1709293733" MODIFIED="1654449037283" TEXT="LABEL: es geht nur um den Namen"/>
<node CREATED="1654449123375" ID="ID_167073471" MODIFIED="1654449138312" TEXT="RULER: hier wird ein oder mehrere (Zeit)Bereiche markiert"/>
<node CREATED="1654449140080" ID="ID_785172025" MODIFIED="1654449151119" TEXT="GROUP: Placement + Grid-Content"/>
</node>
</node>
<node CREATED="1654449181597" ID="ID_1379040287" MODIFIED="1654449618220" TEXT="Qualifier">
<node CREATED="1654449673650" ID="ID_1156591730" MODIFIED="1654449696235" TEXT="Wunsch: offene Erg&#xe4;nzung mit weiteren Parametern"/>
<node CREATED="1654449697703" ID="ID_1842181934" MODIFIED="1661721298137" TEXT="analog zu algebraischen Datentypen">
<icon BUILTIN="yes"/>
<node CREATED="1654449709778" ID="ID_1842345806" MODIFIED="1654449715002" TEXT="pr&#xe4;dikat-artiger Term"/>
<node CREATED="1654449716467" ID="ID_1816176358" MODIFIED="1654449724831" TEXT="aber mit Compile-Time safety"/>
<node COLOR="#435e98" CREATED="1661640883263" ID="ID_606322224" MODIFIED="1661721271303" TEXT="ist das m&#xf6;glich?">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <i>Ja,</i>&#160;und zwar sogar ziemlich <i>einfach und lesbar...</i>&#160;
    </p>
    <p>
      auch wenn ich mal wieder einen ganzen Tag gebraucht habe, um diese paar Zeilen Code auszuknobeln
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="help"/>
<node CREATED="1661640991591" ID="ID_1210145081" MODIFIED="1661641017079" TEXT="Idee: Funktor auf einen Konfiguration-Record anwenden">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1661641024133" ID="ID_610957557" MODIFIED="1661721177675" TEXT="in eine Library-Implementierung verpacken (mix-in)">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1661721182726" ID="ID_1592354346" MODIFIED="1661721188107" TEXT="Dest / Demo">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1661721308152" ID="ID_1192772963" MODIFIED="1661721429475" TEXT="Konsequenz: brauche eine build()-Funktion zur Validation">
<arrowlink COLOR="#c63166" DESTINATION="ID_293134573" ENDARROW="Default" ENDINCLINATION="64;-83;" ID="Arrow_ID_543159170" STARTARROW="None" STARTINCLINATION="-313;15;"/>
<icon BUILTIN="yes"/>
<node CREATED="1661721330773" ID="ID_335266282" MODIFIED="1661721341869" TEXT="denn dieses Konzept wenden die Funktoren blindlings an"/>
<node CREATED="1661721342572" ID="ID_1569355841" MODIFIED="1661721355870" TEXT="es mu&#xdf; dann eigens gepr&#xfc;ft werden, ob diese Einstellungen konsistent sind"/>
</node>
</node>
<node CREATED="1654449966426" ID="ID_100214768" MODIFIED="1654449972509" TEXT="Zweck">
<icon BUILTIN="idea"/>
<node CREATED="1654450318381" ID="ID_350844868" MODIFIED="1654450326861" TEXT="Detail-Differenzierungen durchreichen"/>
<node CREATED="1654450327871" ID="ID_210552013" MODIFIED="1654450333640" TEXT="spezielleres Icon"/>
<node CREATED="1654450336155" ID="ID_949035541" MODIFIED="1654450342340" TEXT="Varianten beim Binding"/>
<node CREATED="1654450361629" ID="ID_876813319" MODIFIED="1654450385555" TEXT="Puffer f&#xfc;r sp&#xe4;tere Erg&#xe4;nzungen und Weiterentwicklung"/>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1625075301830" FOLDED="true" ID="ID_792792003" MODIFIED="1679088238251" TEXT="M&#xf6;glichkeiten vordefinierter Ausstattung">
<icon BUILTIN="hourglass"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1661721385054" ID="ID_229098374" MODIFIED="1664837009375" TEXT="Framework anlegen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1661721522872" ID="ID_1721632208" MODIFIED="1662051074564" TEXT="ENUMs">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1661721389797" ID="ID_96735997" MODIFIED="1662051077177" TEXT="Qualifier">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1661721393893" ID="ID_293134573" MODIFIED="1664837010799" TEXT="Validierungs-Funktion">
<linktarget COLOR="#404289" DESTINATION="ID_293134573" ENDARROW="Default" ENDINCLINATION="175;-873;" ID="Arrow_ID_1989504612" SOURCE="ID_1939158808" STARTARROW="None" STARTINCLINATION="768;94;"/>
<linktarget COLOR="#c63166" DESTINATION="ID_293134573" ENDARROW="Default" ENDINCLINATION="64;-83;" ID="Arrow_ID_543159170" SOURCE="ID_1192772963" STARTARROW="None" STARTINCLINATION="-313;15;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1662051084085" ID="ID_906734828" MODIFIED="1664668205361">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <font face="Monospaced">ElementBoxWidget::Config::<b>buildLayoutStrategy</b>(</font><font color="#2d40af" face="Monospaced">ElementBoxWidget</font><font face="Monospaced">&amp;)</font>
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1664837017382" ID="ID_1774424476" MODIFIED="1664837035511" TEXT="hier Entscheidung &#xfc;ber den Layout-Typ">
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1661896735138" ID="ID_1956334148" MODIFIED="1679088230561" TEXT="Darstellungs-Varianten">
<linktarget COLOR="#758d9c" DESTINATION="ID_1956334148" ENDARROW="Default" ENDINCLINATION="-821;-507;" ID="Arrow_ID_1964102997" SOURCE="ID_1618347962" STARTARROW="None" STARTINCLINATION="48;358;"/>
<icon BUILTIN="hourglass"/>
<node CREATED="1661897283192" ID="ID_981716930" MODIFIED="1661897305658" TEXT="natural-size vs. time-extension">
<node CREATED="1661897836550" ID="ID_855148084" MODIFIED="1661897851456" TEXT="Standard-Breite + Platz gem&#xe4;&#xdf; Label"/>
<node CREATED="1661897852332" ID="ID_1972489184" MODIFIED="1661897874317" TEXT="nimmt eine bestimmte, geeichte L&#xe4;nge ein"/>
</node>
<node CREATED="1661897434780" ID="ID_527434032" MODIFIED="1661897445710" TEXT="ruler vs. content">
<node CREATED="1661897884248" ID="ID_123509205" MODIFIED="1661897894398" TEXT="nur ein Balken, auf dem das Label platziert ist"/>
<node CREATED="1661897895098" ID="ID_730907328" MODIFIED="1661897906945" TEXT="oder ein Container mit Inhalts-Darstellung"/>
</node>
<node CREATED="1661897677379" ID="ID_1139847619" MODIFIED="1661897684638" TEXT="Placement vs Type-Icon">
<node CREATED="1661897909029" ID="ID_1339555856" MODIFIED="1661897948418" TEXT="Placement-UI; Men&#xfc; per Rechts-click auf den Content"/>
<node CREATED="1661897950823" ID="ID_307552216" MODIFIED="1661898035463" TEXT="Type-Icon &#xf6;ffnet Men&#xfc;"/>
</node>
<node CREATED="1661897791060" ID="ID_745130106" MODIFIED="1661897799999" TEXT="Expander vs Details">
<node CREATED="1661898047850" ID="ID_655139501" MODIFIED="1661898068517" TEXT="Expander auf/ab klappt Anzeige auf"/>
<node CREATED="1661898071047" ID="ID_1263290203" MODIFIED="1661898088744" TEXT="Detail-Pfeil &#xf6;ffnet Property-Box"/>
</node>
</node>
<node COLOR="#338800" CREATED="1662074862784" ID="ID_1262449587" MODIFIED="1662074946153" TEXT="Support f&#xfc;r CSS-styling">
<icon BUILTIN="button_ok"/>
<node CREATED="1662074874623" ID="ID_89564608" MODIFIED="1662074885181" TEXT="verwende den Gtk-Inspector">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1662074886207" ID="ID_1586325013" MODIFIED="1662074920204" TEXT="Klasse .background &#x27f9; Hintergrund undurchsichtig"/>
<node CREATED="1662074921529" ID="ID_1811056856" MODIFIED="1662074940890" TEXT="Widgets benennen &#x27f9; im CSS als #name (ID) ansprechbar"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1666316047026" ID="ID_1796374049" MODIFIED="1679088250326" TEXT="Widget-Struktur">
<icon BUILTIN="button_ok"/>
<node CREATED="1666316060213" ID="ID_1152183779" MODIFIED="1666316068920" TEXT="verwendet ein Sub-Widget als Label">
<node CREATED="1666316070268" ID="ID_695985659" MODIFIED="1666316075503" TEXT="class IDLabel"/>
<node CREATED="1666316078131" ID="ID_1171906205" MODIFIED="1666316092903" TEXT="dieses bildet die charakteristische Triple-Struktur">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1666316099067" ID="ID_781968330" MODIFIED="1666316117414" TEXT="Funktionalit&#xe4;t zur Anpassung an size-constraint">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1666316122109" ID="ID_1084456020" MODIFIED="1666366890443" TEXT="erzeugt einen undurchsichtigen Hintergrund">
<icon BUILTIN="button_ok"/>
<icon BUILTIN="hourglass"/>
<node COLOR="#338800" CREATED="1666316168044" ID="ID_875996468" MODIFIED="1666366863733" TEXT="L&#xf6;sung: CSS-Klasse .background">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1666317118953" ID="ID_204505026" MODIFIED="1666366866847" TEXT="L&#xf6;sung: Styling auf der (sichtbaren) EventBox">
<icon BUILTIN="hourglass"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1665969462522" ID="ID_1425589285" MODIFIED="1666368691150" TEXT="Medien-Typ in CSS-Styles umsetzen">
<arrowlink COLOR="#b46465" DESTINATION="ID_405495257" ENDARROW="Default" ENDINCLINATION="-539;-35;" ID="Arrow_ID_742470916" STARTARROW="None" STARTINCLINATION="-274;362;"/>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1666316190604" ID="ID_519294969" MODIFIED="1666366924396" TEXT="packt Content in eine Gtk::EventBox">
<linktarget COLOR="#526674" DESTINATION="ID_519294969" ENDARROW="Default" ENDINCLINATION="1268;576;" ID="Arrow_ID_860609088" SOURCE="ID_387720838" STARTARROW="None" STARTINCLINATION="-1409;-62;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1666316757672" ID="ID_869966472" MODIFIED="1666366920557" TEXT="verwendet ein sichtbares GdkWindow behind_child">
<icon BUILTIN="info"/>
</node>
<node CREATED="1666316737650" ID="ID_354756036" MODIFIED="1666366917942" TEXT="schafft M&#xf6;glichkeit, den Hintergrund einzuf&#xe4;rben">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1666316803445" ID="ID_431972258" MODIFIED="1666366907656" TEXT="dient als Parent-Window f&#xfc;r Widgets mit eigenem Window">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1666316815184" ID="ID_1495596367" MODIFIED="1666366904297" TEXT="damit normale Event-Propagierung m&#xf6;glich">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1666316924338" ID="ID_492711320" MODIFIED="1666316935588" TEXT="Anordnung">
<node COLOR="#338800" CREATED="1666316936962" ID="ID_1057903927" MODIFIED="1666366928981" TEXT="erbt direkt von Gtk::EventBox">
<icon BUILTIN="button_ok"/>
<node CREATED="1666316958230" ID="ID_1048866675" MODIFIED="1666316981759" TEXT="damit ist die Event-Verdrahtung f&#xfc;r abgeleitete Klassen sichtbar"/>
</node>
<node COLOR="#338800" CREATED="1666316984594" ID="ID_1504629263" MODIFIED="1666366930475" TEXT="verwendet Gtk::Frame als Kind">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1666316993672" ID="ID_827533347" MODIFIED="1666317106925" TEXT="Child-handling-API weiterleiten">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1666317058231" ID="ID_217426878" MODIFIED="1666317080067" TEXT="damit es sich wie ein Container verh&#xe4;lt..."/>
<node CREATED="1666317080989" ID="ID_1257628334" MODIFIED="1666317104078" TEXT="dieses Verhalten aber an den Inhalt vom Gtk::Frame weitergibt"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1662051984940" ID="ID_974876977" MODIFIED="1662051988957" TEXT="Icon verwalten">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1662051990492" ID="ID_264004203" MODIFIED="1662052527424" TEXT="Verwaltung vordefinierter Icons">
<arrowlink COLOR="#b73b74" DESTINATION="ID_1998357180" ENDARROW="Default" ENDINCLINATION="-1444;146;" ID="Arrow_ID_373354654" STARTARROW="None" STARTINCLINATION="-586;-482;"/>
<icon BUILTIN="help"/>
<node CREATED="1662247852505" ID="ID_685267801" MODIFIED="1662247866746" TEXT="wird relevant mit Gtk-4">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1662247868126" ID="ID_487747089" MODIFIED="1662247880210" TEXT="vorerst m&#xf6;glichst das bestehende System nutzen">
<icon BUILTIN="yes"/>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#210f69" CREATED="1664548449268" ID="ID_303509395" MODIFIED="1664548735480" TEXT="Design-Prinzipien">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <ul>
      <li>
        festes Schema aus zwei Icons
      </li>
      <li>
        nur die Art der Icons wird ausgewechselt
      </li>
      <li>
        beide Icons sind Buttons und l&#246;sen f&#252;hren eine Steuer-Aktion aus (keine direkte Manipulation)
      </li>
      <li>
        der erste Button f&#252;hrt immer in den Placement-Editor, der so etwas wie eine Property-Box darstellt (ggfs als Pop-Up, ggfs in einem Pannel-Grid)
      </li>
      <li>
        der zweite Button &#246;ffnet entweder das normale Pop-up-Men&#252; (das auf <b>Linksklick</b>&#160;liegt), oder er bet&#228;tigt den Expander
      </li>
    </ul>
  </body>
</html></richcontent>
<arrowlink COLOR="#5559e6" DESTINATION="ID_482244613" ENDARROW="Default" ENDINCLINATION="-920;179;" ID="Arrow_ID_1621895884" STARTARROW="None" STARTINCLINATION="226;27;"/>
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1664548762473" ID="ID_1889891499" MODIFIED="1664548771120" TEXT="Icons belegen">
<icon BUILTIN="hourglass"/>
<node COLOR="#338800" CREATED="1664548773656" ID="ID_1911341239" MODIFIED="1664553930837" TEXT="M&#xf6;glichkeit f&#xfc;r zwei Icon-Button vorsehen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1664548786932" ID="ID_1354120525" MODIFIED="1664553936475" TEXT="Konfigurierbarkeit gew&#xe4;hrleisten">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1662241779699" ID="ID_178231784" MODIFIED="1665855497333" TEXT="#1236 Placement-Icon">
<linktarget COLOR="#6681be" DESTINATION="ID_178231784" ENDARROW="Default" ENDINCLINATION="-1422;-171;" ID="Arrow_ID_287037902" SOURCE="ID_1904965684" STARTARROW="None" STARTINCLINATION="626;53;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1662241785372" ID="ID_1501125340" MODIFIED="1665855504959" TEXT="Men&#xfc;/Expander-Icon">
<icon BUILTIN="button_ok"/>
<node CREATED="1665855546746" ID="ID_1649379892" MODIFIED="1665855568834" TEXT="sieht vorerst ordentlich aus"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1665855569555" ID="ID_1045883941" MODIFIED="1665855630056" TEXT="ist aber vielleicht etwas zu hell geraten">
<arrowlink COLOR="#f27d99" DESTINATION="ID_446507732" ENDARROW="Default" ENDINCLINATION="356;501;" ID="Arrow_ID_1734621230" STARTARROW="None" STARTINCLINATION="225;17;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1666367000884" ID="ID_1552390941" MODIFIED="1666367099475" TEXT="sieht mehr wie ein &quot;play&quot;-Button aus...">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...und das ist vielleicht sogar eine gute Idee: Lumiera k&#246;nnte die M&#246;glichkeit bieten, jedwedes Element eigens f&#252;r sich darzustellen oder zu inspizieren, transient und ohne Seiteneffekte
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1662241925929" ID="ID_217944947" MODIFIED="1664136727535" TEXT="horizontale Ausdehnung">
<icon BUILTIN="pencil"/>
<node CREATED="1663945598778" ID="ID_1866891133" MODIFIED="1663945862337" TEXT="Ansatz">
<icon BUILTIN="idea"/>
<node CREATED="1663945603065" ID="ID_1792803134" MODIFIED="1663945629088" TEXT="Mechanismus zur Gr&#xf6;&#xdf;enbeschr&#xe4;nkung auf dem Haupt-Widget"/>
<node CREATED="1663945637397" ID="ID_1469516364" MODIFIED="1663945650908" TEXT="erforderliche Ausdehnung der Kind-Elemente feststellen"/>
<node CREATED="1663945651910" ID="ID_897434501" MODIFIED="1663945668859" TEXT="Kind-Elemente ggfs verbergen"/>
<node CREATED="1663945669814" ID="ID_1057659827" MODIFIED="1663945692748">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ver&#228;nderte Men&#252;-Steuerung bei derartiger <i>Degradierung</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1663945712608" ID="ID_1162263503" MODIFIED="1663945819361" TEXT="minimal-Ausdehung per API bereitstellen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      das bedeutet: es ist Aufgabe eines &#252;bergeordneten Layout-Managers, dann auch ein <i>reduziertes Display</i>&#160;zu schalten; das ElementBoxWidget kann davon ausgehen, den minimal ben&#246;tigten Platz auch zu bekommen (size request)
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#338800" CREATED="1663977435805" FOLDED="true" ID="ID_763928282" MODIFIED="1666370194656" TEXT="L&#xf6;sungs-Mechanismus GTK+CSS">
<linktarget COLOR="#505398" DESTINATION="ID_763928282" ENDARROW="Default" ENDINCLINATION="-708;-358;" ID="Arrow_ID_1762163985" SOURCE="ID_1501027418" STARTARROW="None" STARTINCLINATION="-29;281;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1664036044208" ID="ID_1165985409" MODIFIED="1666369956106" TEXT="#1235 draft solution for size-constrained widgets">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1664486479334" ID="ID_1175352945" MODIFIED="1666369958878" TEXT="Fazit: Widget liefert den Constraint als minimal und als natural request">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1664486499547" ID="ID_1517909946" MODIFIED="1664486599158" TEXT="CSS mu&#xdf; daf&#xfc;r sorgen, da&#xdf; dem nichts hinzugef&#xfc;gt wird">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      im Besonderen keine Border!
    </p>
    <p>
      Das ist auch genau ein Argument, warum wir auf Gtk::Frame aufsetzen &#8212; damit ist der Frame n&#228;mlich ins <i>Innere des Widget</i>&#160;verlagert, und das Label liegt on-top und grenzt an den Rand an.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
<node COLOR="#338800" CREATED="1664668298178" ID="ID_1102642211" LINK="#ID_1853406335" MODIFIED="1664674552382" TEXT="geeignete Selektoren vorsehen">
<arrowlink COLOR="#543f8c" DESTINATION="ID_696787535" ENDARROW="Default" ENDINCLINATION="-344;-15;" ID="Arrow_ID_1626542451" STARTARROW="None" STARTINCLINATION="560;45;"/>
<arrowlink COLOR="#4482cb" DESTINATION="ID_1131035647" ENDARROW="Default" ENDINCLINATION="1109;-797;" ID="Arrow_ID_860130995" STARTARROW="None" STARTINCLINATION="394;586;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#4f4398" CREATED="1666370148380" ID="ID_910686792" LINK="#ID_1266679575" MODIFIED="1666370185149" TEXT="L&#xf6;sung funktioniert im Prototyp">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
</node>
</node>
<node COLOR="#338800" CREATED="1664027101386" FOLDED="true" ID="ID_325165287" MODIFIED="1664494902370" TEXT="erforderliche Ausdehnung feststellen">
<icon BUILTIN="button_ok"/>
<node CREATED="1664027121220" ID="ID_1123910943" MODIFIED="1664027234710" TEXT="f&#xfc;r das ElementBoxWidget stets in Pixel">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      das ist eine Design/Architektur-Entscheidung; ein generisches Widget soll noch nicht mit dem speziellen Belang einer Eichung in Zeiteinheiten belastet werden; dies hat dann jeweils ins abgeleiteten Klassen zu erfolgen, so z.B im Clip-Widget
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1664027274328" ID="ID_1533967380" MODIFIED="1664494894900" TEXT="Interaktionsmuster der Schnittstelle">
<icon BUILTIN="yes"/>
<node COLOR="#435e98" CREATED="1664027342687" FOLDED="true" ID="ID_987588934" MODIFIED="1664494887246" TEXT="Analyse">
<icon BUILTIN="info"/>
<node CREATED="1664027374909" ID="ID_1916479707" MODIFIED="1664027563708" TEXT="Information wird von den GTK-Callbacks ben&#xf6;tigt">
<icon BUILTIN="info"/>
</node>
<node COLOR="#435e98" CREATED="1664027389923" FOLDED="true" ID="ID_1208852991" MODIFIED="1664494880330" TEXT="sie ist also berets zur Initialisierung (oder kurz danach) erforderlich">
<icon BUILTIN="yes"/>
<node COLOR="#435e98" CREATED="1664027420141" ID="ID_217473035" MODIFIED="1664494566272" TEXT="wann und wie werden die Callbacks aufgerufen?">
<linktarget COLOR="#4285bf" DESTINATION="ID_217473035" ENDARROW="Default" ENDINCLINATION="-989;57;" ID="Arrow_ID_1041626932" SOURCE="ID_945958753" STARTARROW="None" STARTINCLINATION="260;-42;"/>
<icon BUILTIN="help"/>
</node>
<node CREATED="1664027451687" ID="ID_26942945" MODIFIED="1664027457671" TEXT="Vermutung...">
<node CREATED="1664027458520" ID="ID_53350409" MODIFIED="1664027468099" TEXT="aus dem Event-Handling"/>
<node CREATED="1664027505881" ID="ID_102723884" MODIFIED="1664027518260" TEXT="als Folge einer &quot;invalidation&quot;"/>
</node>
<node COLOR="#338800" CREATED="1664027526879" ID="ID_849843415" MODIFIED="1664494543169" TEXT="an der konkreten Implementierung beobachten">
<icon BUILTIN="button_ok"/>
<node CREATED="1664152872453" ID="ID_1559151133" MODIFIED="1664152874424" TEXT="korrekt"/>
<node CREATED="1664152875229" ID="ID_1591242265" MODIFIED="1664152886391" TEXT="definitiv aus der Event-Loop"/>
<node CREATED="1664152887076" ID="ID_1667743717" MODIFIED="1664152893950" TEXT="und nicht aus dem Widget-ctor"/>
</node>
<node COLOR="#435e98" CREATED="1664494523077" ID="ID_509196294" MODIFIED="1664494548030" TEXT="die Implementierung der GTK Layout-Engine stellt das sicher">
<icon BUILTIN="idea"/>
<node CREATED="1664494602946" ID="ID_1093994466" MODIFIED="1664494618443" TEXT="zum &quot;mapping&quot; des Widgets wird die size-Allocation ermittelt"/>
<node CREATED="1664494619248" ID="ID_1432947442" MODIFIED="1664494782463" TEXT="hierf&#xfc;r gibt es nur wenige Standard-Implementierungen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <ul>
      <li>
        die wichtigste Implementierung ist in <b>gtk_widget_size_allocate_with_baseline</b>; sie wird von fast allen Containern verwendet, um ihre Kinder zu allozieren
      </li>
      <li>
        top-level Windows, Dialogboxen und Menu-Items verwenden ihre eigene Implementierung
      </li>
      <li>
        Gtk::Layout hat ebenfalls eine vereinfachte Variante: diese geht von dem <b>minimal_size</b>&#160;des Widgets aus!
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node CREATED="1664494784130" ID="ID_710050245" MODIFIED="1664494808538" TEXT="Alle diese werden nach dem ctor aber vor dem ersten &quot;draw&quot; aufgerufen"/>
<node CREATED="1664494810334" ID="ID_1899633587" MODIFIED="1664494830787" TEXT="au&#xdf;erdem werden sie bei jedem Fokus-Wechsel aufgerufen"/>
<node CREATED="1664494863383" ID="ID_402498612" MODIFIED="1664494874185" TEXT="danach erfolgt ein set_allocation"/>
</node>
</node>
<node CREATED="1664027626370" ID="ID_244953029" MODIFIED="1664027646110" TEXT="eine falsche Angabe f&#xfc;hrt zu (vor&#xfc;bergehend) falschem Layout"/>
<node CREATED="1664027651294" ID="ID_1669994961" MODIFIED="1664028901505" TEXT="&#xbb;push&#xab; bedeutet...">
<icon BUILTIN="button_cancel"/>
<node CREATED="1664027665253" ID="ID_940658024" MODIFIED="1664027681994" TEXT="das API ist einfach und die Verwendung nat&#xfc;rlich"/>
<node CREATED="1664027684394" ID="ID_220726069" MODIFIED="1664027717150" TEXT="der Nutzer mu&#xdf; sich an ein Protokoll halten"/>
<node CREATED="1664027718941" ID="ID_319058319" MODIFIED="1664027737327" TEXT="falls die Info schon im ctor notwendig ist..."/>
<node CREATED="1664027738275" ID="ID_1665189390" MODIFIED="1664027747373" TEXT="...dann braucht man zwei verschiedene APIs">
<node CREATED="1664027751780" ID="ID_57107088" MODIFIED="1664027759172" TEXT="Initiale Spec"/>
<node CREATED="1664027760042" ID="ID_296144190" MODIFIED="1664027767514" TEXT="Setter f&#xfc;r sp&#xe4;tere &#xc4;nderung"/>
</node>
<node CREATED="1664027848116" ID="ID_1337478070" MODIFIED="1664027863406" TEXT="invalidation / redraw ergeben sich nebenbei (im Setter)"/>
</node>
<node CREATED="1664027866247" ID="ID_981182676" MODIFIED="1664028904533" TEXT="&#xbb;pull&#xab; bedeutet...">
<icon BUILTIN="forward"/>
<node CREATED="1664027887399" ID="ID_1658293889" MODIFIED="1664027910527" TEXT="der Nutzer mu&#xdf; zwei Getter-&#x3bb; bereitstellen"/>
<node CREATED="1664027980946" ID="ID_1814840612" MODIFIED="1664028017505" TEXT="diese sind aber nur notwendig, falls constrained extension gew&#xfc;nscht"/>
<node CREATED="1664028024900" ID="ID_1409117153" MODIFIED="1664028235700" TEXT="dieses komplexe API k&#xf6;nnte durch die ctor-DSL verst&#xe4;ndlich gemacht werden">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...insofern dann die Beschr&#228;nkung der Ausdehnung einzig dadurch aktiviert werden kann, da&#223; man ein geeignetes Verb angibt, welches diese beiden Lambda als Argument nimmt
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1664028265740" ID="ID_414167652" MODIFIED="1664028312456" TEXT="der Zugriff erfolgt nat&#xfc;rlich, transparent und on-demand">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...und ich mu&#223; die Frage, wann genau diese Info bezogen wird, &#252;berhaupt nicht kl&#228;ren
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1664028318861" ID="ID_1910143460" MODIFIED="1664028491553" TEXT="jede Metrik-&#xc4;nderung mu&#xdf; dem Widget &#xfc;ber ein separates API eigens gePUSHt werden">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      wobei letztlich nur ein queue_resize erfolgen mu&#223;; es k&#246;nnte also sein, da&#223; daf&#252;r der Aufruf einer bestehenden GTK-Funktion gen&#252;gt
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1664028417616" ID="ID_743592439" MODIFIED="1664028542302" TEXT="idealerweise l&#xe4;&#xdf;t sich das jedoch &#xfc;ber den Parent-Container automatisieren">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...unter der Annahme, da&#223; letzlich eine &quot;invalidation&quot; des Widgets gen&#252;gt, lie&#223;e sich das elegant l&#246;sen, indem der Canvas-Container insgesamt &quot;invalidated&quot; wird.
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1664028546726" ID="ID_1159408504" MODIFIED="1664028775997" TEXT="Enscheidung: &#xbb;pull&#xab;-API">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      In Summe viel eleganter.
    </p>
    <ul>
      <li>
        das Dokumentations-Problem wird durch die DSL gel&#246;st
      </li>
      <li>
        die &quot;Invalidation&quot; sollte sich aus dem Parent-Container ergeben
      </li>
      <li>
        damit bleiben hier praktisch keine Probleme mehr &#252;brig
      </li>
      <li>
        Redundanz im DSL-API ist nicht wirklich ein Problem; Kind=CONTENT impliziert nicht notwendig auch ein geeichtes Display
      </li>
      <li>
        ansonsten sollte dieser Ansatz komplett transparent funktionieren, und d&#252;rfte weniger fragil sein
      </li>
    </ul>
  </body>
</html></richcontent>
<arrowlink COLOR="#4e4fc1" DESTINATION="ID_636187892" ENDARROW="Default" ENDINCLINATION="-34;579;" ID="Arrow_ID_1572846735" STARTARROW="None" STARTINCLINATION="61;-374;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1664028782841" ID="ID_1596292708" MODIFIED="1664152807960" TEXT="Implementierung der Schnittstelle">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1664028797404" ID="ID_1421736344" MODIFIED="1664152806643" TEXT="die &#x3bb; speichern">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1664028811314" ID="ID_1790496772" MODIFIED="1664152804500" TEXT="die H&#xf6;hen-Angabe optional machen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1664028833680" ID="ID_822885755" MODIFIED="1664136676337" TEXT="Pr&#xe4;dikat: Erkennung size-constrained">
<linktarget COLOR="#fff78b" DESTINATION="ID_822885755" ENDARROW="Default" ENDINCLINATION="-71;5;" ID="Arrow_ID_502040558" SOURCE="ID_10961106" STARTARROW="None" STARTINCLINATION="67;7;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1664028974965" ID="ID_1683239335" MODIFIED="1664152835281" TEXT="Weiche in den Layout-Callbacks">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1664028987763" ID="ID_10961106" MODIFIED="1664152816917" TEXT="beruht auf dem Pr&#xe4;dikat">
<arrowlink COLOR="#fff78b" DESTINATION="ID_822885755" ENDARROW="Default" ENDINCLINATION="-71;5;" ID="Arrow_ID_502040558" STARTARROW="None" STARTINCLINATION="67;7;"/>
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1664029083790" ID="ID_1708491997" MODIFIED="1664152834413" TEXT="Antwort der Callbacks implementieren">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1664029105419" ID="ID_1976797471" MODIFIED="1664152823165" TEXT="entweder per &#x3bb;">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1664029112435" ID="ID_82095109" MODIFIED="1664136681131" TEXT="oder die Basis-Impl verwenden">
<arrowlink COLOR="#6873c6" DESTINATION="ID_986565985" ENDARROW="Default" ENDINCLINATION="31;1;" ID="Arrow_ID_1518071893" STARTARROW="None" STARTINCLINATION="-102;26;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1664029128360" ID="ID_986565985" MODIFIED="1664136684354" TEXT="Aufruf der Basis-Impl vorsehen">
<linktarget COLOR="#6873c6" DESTINATION="ID_986565985" ENDARROW="Default" ENDINCLINATION="31;1;" ID="Arrow_ID_1518071893" SOURCE="ID_82095109" STARTARROW="None" STARTINCLINATION="-102;26;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1664029223580" ID="ID_825294836" MODIFIED="1664136733333" TEXT="Framework zur Steuerung der Ausdehnung">
<icon BUILTIN="pencil"/>
<node COLOR="#435e98" CREATED="1664029250424" ID="ID_1097443082" MODIFIED="1664836823192" TEXT="hier erst mal nur das Fundament legen">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1664029267136" ID="ID_1383671067" MODIFIED="1664029355911" TEXT="zwei Themen">
<icon BUILTIN="idea"/>
<node COLOR="#338800" CREATED="1664029340460" ID="ID_1398837731" MODIFIED="1664836798961" TEXT="Ausdehnung des Labels steuern">
<icon BUILTIN="button_ok"/>
<node CREATED="1664031831907" ID="ID_701574899" MODIFIED="1664031980972" TEXT="Problem: reaktiv getriggert">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Bedingt durch das Aufrufschema k&#246;nnen wir nicht zu Beginn steuernd eingreifen, sondern wir k&#246;nnen nur erkennen, wenn das Sub-Widget (aus welchen Gr&#252;nden auch immer) den extension-constraint verletzt. Und wir bekommen keine direkten Wirkfaktoren in die Hand (weil sich die Ausdehnung aus einem komplexen Zusammenspiel von Font, Pixelgr&#246;&#223;e und Styles ergibt)
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#338800" CREATED="1664035985288" ID="ID_1514029086" MODIFIED="1664836806242" TEXT="#1238 hide ElementBoxWidget label to meet size constraint">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1664032709767" FOLDED="true" ID="ID_89148369" MODIFIED="1664834444524" TEXT="einfache L&#xf6;sung: per Seiteneffekt verbergen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1664032721142" ID="ID_999001948" MODIFIED="1664313668307" TEXT="geht das?">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...das hei&#223;t...
    </p>
    <ul>
      <li>
        der GTK-Lyout-Callback wird aufgerufen
      </li>
      <li>
        er ruft die btr. Callbacks der Kinder auf, um deren <i>nat&#252;rliche Gr&#246;&#223;e</i>&#160;zu ermitteln
      </li>
      <li>
        wenn die Kinder nicht in den vorhandenen Platz passen, werden sie manipuliert oder verborgen
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="help"/>
<node COLOR="#435e98" CREATED="1664152924415" FOLDED="true" ID="ID_1883395520" MODIFIED="1664313655185" TEXT="funktioniert nicht zuverl&#xe4;asig">
<icon BUILTIN="broken-line"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1664152946955" ID="ID_5147112" MODIFIED="1664152961325" TEXT="beim 1.Aufruf sind die Allocationen noch allesamt 0"/>
<node CREATED="1664152963036" ID="ID_1568702731" MODIFIED="1664152994857" TEXT="es gibt sp&#xe4;ter bei jedem Focus-Wechsel einen Aufruf"/>
<node CREATED="1664152996461" ID="ID_1521476415" MODIFIED="1664308648349" TEXT="der verbirgt dann auch korrekt das Label-Widget"/>
<node CREATED="1664308676289" ID="ID_1647971325" MODIFIED="1664308701317" TEXT="aber das passiert dann eben zu sp&#xe4;t &#x2014; die initiale Anzeige ist falsch">
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#435e98" CREATED="1664153044266" FOLDED="true" ID="ID_175410634" MODIFIED="1664236010809" TEXT="und das Debugging per cout gibt Hexzahlen aus">
<icon BUILTIN="broken-line"/>
<node CREATED="1664235646216" ID="ID_1679047596" MODIFIED="1664236010445" TEXT="Ursache waren naiv verwendete stream-Manipulatoren">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Die meisten IOS-Stream-Manipulatoren sind &#187;sticky&#171;, d.h. sie ver&#228;ndern per Seiteneffekt den Zustand im jeweiligen ostream. Ich hatte eine Methode zum Ausgeben einer Addresse, eingebaut im to-String-Framework, und diese hat std::output auf Hex-Ausgabe umgeschaltet. Erstaunlich da&#223; ich das jahrelang nicht gemerkt habe!
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1664235664755" ID="ID_1756013187" MODIFIED="1664235705945" TEXT="RAII-Helper-Klasse, die ostream-Format-Zustand speichern und restaurieren kann">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1664235714143" ID="ID_1375500060" MODIFIED="1664235720200" TEXT="mit Test abgedeckt">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1664235720902" ID="ID_558625134" MODIFIED="1664235875234" TEXT="Bug in format-obj.cpp damit gefixt">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1664313591898" ID="ID_1408861050" MODIFIED="1664313653715" TEXT="Probleme aufgekl&#xe4;rt">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <ul>
      <li>
        Zufallszahl wurde re-evaluiert im callback
      </li>
      <li>
        darf nicht die Allokation verwenden, sondern stattdessen das Kind nach seiner preferred_size fragen
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1664308707648" ID="ID_1988489591" MODIFIED="1664308984611" TEXT="Untersuchung mit Trace-Print">
<icon BUILTIN="info"/>
<node CREATED="1664308730228" ID="ID_964535587" MODIFIED="1664308762363" TEXT="zum Zeitpunkt der Alloc-Zuteilung haben die nested-children noch keine Allokation"/>
<node CREATED="1664308866802" ID="ID_993068829" MODIFIED="1664308941471" TEXT="die Alloc-Zuteiltung f&#xfc;r die Kiner passiert irgendwann sp&#xe4;ter">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...was normalerweise ja auch irrelevant ist, denn per Voraussetzung sollte ein Container die Werte von seinen Kindern bereits bei seiner initialen Meldung ber&#252;cksichtigt haben
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1664308771838" ID="ID_263801875" MODIFIED="1664308782506" TEXT="deshalb wird der Constraint initial immer erf&#xfc;llt"/>
</node>
<node COLOR="#435e98" CREATED="1664308954262" FOLDED="true" ID="ID_1280341553" MODIFIED="1664313708451" TEXT="Problem: wie erfahren wir den Bedarf der Kinder?">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1664309487207" ID="ID_787731711" MODIFIED="1664309508504" TEXT="man k&#xf6;nnte die get_preferred_*-Funktionen aufrufen"/>
<node CREATED="1664309544264" ID="ID_1683308991" MODIFIED="1664309560656" TEXT="wie geht denn die Implementierung von GTK vor?">
<node CREATED="1664309851614" ID="ID_1826397011" MODIFIED="1664309859201" TEXT="Beispiel Gtk::Frame"/>
<node CREATED="1664309859981" ID="ID_1769727317" MODIFIED="1664309861000" TEXT="gtk_widget_get_preferred_width">
<node CREATED="1664309926372" ID="ID_1300086457" MODIFIED="1664309930855" TEXT="gtksizerequest.c"/>
</node>
<node CREATED="1664309950440" ID="ID_1543575708" MODIFIED="1664309951372" TEXT="gtk_widget_compute_size_for_orientation"/>
<node CREATED="1664310005913" ID="ID_856747886" MODIFIED="1664310007318" TEXT="gtk_widget_query_size_for_orientation"/>
<node CREATED="1664310069177" ID="ID_667553135" MODIFIED="1664310070644" TEXT="widget_class-&gt;get_preferred_width">
<node CREATED="1664310105612" ID="ID_863371349" MODIFIED="1664310110172" TEXT="gtk_frame_get_preferred_width">
<icon BUILTIN="forward"/>
</node>
<node CREATED="1664310126129" ID="ID_519479957" MODIFIED="1664310128423" TEXT="gtk_css_gadget_get_preferred_size"/>
</node>
<node CREATED="1664310467699" ID="ID_1970422819" MODIFIED="1664311129407" TEXT="das CSS Gadget ist Zukunft">
<icon BUILTIN="stop-sign"/>
<node CREATED="1664310476354" ID="ID_1555596776" MODIFIED="1664310481829" TEXT="&quot;next gen widgets&quot;"/>
<node CREATED="1664310482704" ID="ID_915376669" MODIFIED="1664311133350" TEXT="aber aktuell noch nicht nach Gtkmm gemapped">
<icon BUILTIN="closed"/>
</node>
<node CREATED="1664310512341" ID="ID_1313597088" MODIFIED="1664311136031" TEXT="widget-&gt;priv-&gt;gadget">
<icon BUILTIN="closed"/>
</node>
</node>
</node>
<node CREATED="1664310586763" ID="ID_64937663" MODIFIED="1664313705215" TEXT="Gtk::Widget::get_preferred_size(Requistion, Requisition)">
<arrowlink COLOR="#2080c0" DESTINATION="ID_117097226" ENDARROW="Default" ENDINCLINATION="108;6;" ID="Arrow_ID_766467833" STARTARROW="None" STARTINCLINATION="-29;46;"/>
<icon BUILTIN="idea"/>
<node CREATED="1664310599964" ID="ID_751138081" MODIFIED="1664310626241" TEXT="das ist eine Abk&#xfc;rzug &#xfc;ber die preferred_-Funtkionen plus den Layout-Trend"/>
<node COLOR="#338800" CREATED="1664311100685" ID="ID_1082035208" MODIFIED="1664311120569" TEXT="und liefert bereits zu Beginn die korrekten Werte">
<icon BUILTIN="forward"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1664313525651" ID="ID_117097226" MODIFIED="1664313699335">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <b>Fazit</b>: ja die L&#246;sung <font color="#6206ae">funktioniert</font>&#160;und erscheint stabil
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#2080c0" DESTINATION="ID_117097226" ENDARROW="Default" ENDINCLINATION="108;6;" ID="Arrow_ID_766467833" SOURCE="ID_64937663" STARTARROW="None" STARTINCLINATION="-29;46;"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1664152748537" ID="ID_1604673752" MODIFIED="1664152775554" TEXT="besser: on_size_allocate  verwenden">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1664404663320" FOLDED="true" ID="ID_1822441152" MODIFIED="1664494935891" TEXT="minimal-size einf&#xfc;hren">
<icon BUILTIN="button_cancel"/>
<node CREATED="1664404674695" ID="ID_1745650030" MODIFIED="1664404686405" TEXT="Minimum sollte die Ausdehnung des Icon sein">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1664404687461" ID="ID_464093874" MODIFIED="1664404789460" TEXT="size_request und minimal-size werden von GTK nicht wirklich verwendet">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...daher scheidet die offensichtliche einfache L&#246;sung aus: n&#228;mlich einen size-request in der Gr&#246;&#223;e des Icon zu setzen...
    </p>
    <p>
      Stattdessen m&#252;ssen wir dieses Minimum explizit in die Verarbeitung des size-Constraint einarbeiten, und dabe auf der <i>natural-size</i>&#160;des Icon aufbauen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="clanbomber"/>
</node>
<node CREATED="1664404791911" ID="ID_1038149541" MODIFIED="1664486283099">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Nein! minimal und natural size <b>sollten gleich sein</b>
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#bed1fd" DESTINATION="ID_1768206919" ENDARROW="Default" ENDINCLINATION="-2510;160;" ID="Arrow_ID_1173769741" STARTARROW="None" STARTINCLINATION="-2083;106;"/>
<icon BUILTIN="stop-sign"/>
<node CREATED="1664486239918" ID="ID_393871048" MODIFIED="1664486273354" TEXT="unser size-constraint sollte auf beide gleicherma&#xdf;en wirken">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1664486285336" ID="ID_1824223190" MODIFIED="1664486318819" TEXT="die allermeisten Container gehen von natural_size aus">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1664486295583" ID="ID_375004402" MODIFIED="1664486313154" TEXT="aber (relevant!) Gtk::Layout geht von minimal_width aus">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1664486326706" ID="ID_23033105" MODIFIED="1664486428143" TEXT="strikt an die logische Bedeutung halten">
<icon BUILTIN="idea"/>
<node CREATED="1664486342176" ID="ID_1766841402" MODIFIED="1664486354403" TEXT="minimal: &quot;the minimum a widget neets to work properly&quot;"/>
<node CREATED="1664486355182" ID="ID_1887502358" MODIFIED="1664486366330" TEXT="in unserem Fall ist das der Size-constraint"/>
<node CREATED="1664486367173" ID="ID_203408708" MODIFIED="1664486380447" TEXT="und das Widget mu&#xdf; dann intern daf&#xfc;r sorgen, da&#xdf; es seinen Content da reinbekommt"/>
<node CREATED="1664486398329" ID="ID_1798174878" MODIFIED="1664486423313" TEXT="GTK wird selber niemals ein Widget &quot;stauchen&quot;">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      wenn, dann mu&#223; man das dynamisch implementieren...
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1664027420141" FOLDED="true" ID="ID_969143327" MODIFIED="1664312508858" TEXT="f&#xfc;hrt das zu einem re-Draw?">
<linktarget COLOR="#4272bf" DESTINATION="ID_969143327" ENDARROW="Default" ENDINCLINATION="-1003;96;" ID="Arrow_ID_190980327" SOURCE="ID_945958753" STARTARROW="None" STARTINCLINATION="260;-42;"/>
<icon BUILTIN="help"/>
<node CREATED="1664312511033" ID="ID_1716799052" MODIFIED="1664312589370" TEXT="wahrscheinlich Nein">
<icon BUILTIN="forward"/>
</node>
<node CREATED="1664312522879" ID="ID_568381694" MODIFIED="1664312946309" TEXT="denn der erste Draw erfolgt nach der Zuteilung einer Allokation">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      zwar machen wir im Ctor zuletzt ein show_all(), welches dann erst diese Layout-Berechnung anst&#246;&#223;t. Aber zum Zeitpunkt der Allokations-Zuteilung f&#252;r das Container-Widget (ElementBox selber) haben die nested-children noch keine Allokation bekommen; zwar gelten sie schon als &quot;mapped&quot; und &quot;realized&quot;, aber offensichtlich f&#252;hrt eine &#196;nderung des visible()-Status dazu, da&#223; das damit ausgeblendete Kind-Widget schon gleich gar nicht gezeichnet wird
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1664312590502" ID="ID_694110716" MODIFIED="1664312697424" TEXT="definitiv: keine erneute Layout-Berechnung und Allokation">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ersichtlich aus Trace-Meldungen, welche ich zur Analyse in den get_preferred_*-Funktionen und beim Setzen der Allokation hatte. Auch auf dem Kind-Elementen sehe ich keine erneuten Aufrufe
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1664313319325" ID="ID_1660318028" MODIFIED="1664313502546" TEXT="aber: nach dem hide() liefert die umschlie&#xdf;ende Box sofort angepa&#xdf;te preferred_size">
<arrowlink COLOR="#fcf2bc" DESTINATION="ID_611179505" ENDARROW="Default" ENDINCLINATION="-47;-40;" ID="Arrow_ID_96952850" STARTARROW="None" STARTINCLINATION="36;39;"/>
<icon BUILTIN="idea"/>
<node CREATED="1664721403567" ID="ID_1984818373" MODIFIED="1664721416232" TEXT="das w&#xe4;re ein weiterer Ansatzpunkt"/>
<node CREATED="1664721417261" ID="ID_264816651" MODIFIED="1672763811783" TEXT="die Widgets k&#xf6;nnen die Situation &quot;proben&quot;"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1664033098675" FOLDED="true" ID="ID_617752641" MODIFIED="1664836791921" TEXT="differenziertere L&#xf6;sung evaluieren">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1664721239543" ID="ID_958938237" MODIFIED="1664834954143" TEXT="Ansatz: Komponenten schritweise verbergen">
<arrowlink COLOR="#f8fecd" DESTINATION="ID_611179505" ENDARROW="None" ENDINCLINATION="-198;-9;" ID="Arrow_ID_990474269" STARTARROW="Default" STARTINCLINATION="202;13;"/>
<icon BUILTIN="idea"/>
<node COLOR="#435e98" CREATED="1664721613355" HGAP="38" ID="ID_100250479" MODIFIED="1664834929101" TEXT="L&#xf6;sungs-Mechanik?" VSHIFT="-26">
<icon BUILTIN="help"/>
<node BACKGROUND_COLOR="#0d5b57" COLOR="#63cb95" CREATED="1664723304392" FOLDED="true" ID="ID_351577212" MODIFIED="1664723403946" STYLE="bubble" TEXT="Logik">
<edge COLOR="#52c44c" STYLE="linear"/>
<font BOLD="true" NAME="SansSerif" SIZE="15"/>
<node COLOR="#33565a" CREATED="1664723420339" HGAP="38" ID="ID_1605718107" MODIFIED="1664727861369" TEXT="Handlungsbedarf?" VSHIFT="39">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      BEDINGUNG: Constraint &lt; Vollgr&#246;&#223;e
    </p>
    <ul>
      <li>
        Vollgr&#246;&#223;e ist im Widget gespeichert und wird nach Text&#228;nderung ermittelt (&#8227;damit implizit auch initial)
      </li>
    </ul>
  </body>
</html></richcontent>
<arrowlink COLOR="#76fe43" DESTINATION="ID_793769798" ENDARROW="Default" ENDINCLINATION="15;-39;" ID="Arrow_ID_1548203404" STARTARROW="None" STARTINCLINATION="-3;6;"/>
<font NAME="SansSerif" SIZE="10"/>
</node>
<node COLOR="#33565a" CREATED="1664723834064" HGAP="35" ID="ID_793769798" MODIFIED="1664727861369" TEXT="erf&#xfc;llt(cH)?" VSHIFT="26">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      BEDINUNG: cH&#160;&gt; aktuelleH&#246;he
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#76fe43" DESTINATION="ID_793769798" ENDARROW="Default" ENDINCLINATION="15;-39;" ID="Arrow_ID_1548203404" SOURCE="ID_1605718107" STARTARROW="None" STARTINCLINATION="-3;6;"/>
<font NAME="SansSerif" SIZE="10"/>
<node COLOR="#33565a" CREATED="1664724142663" ID="ID_212862875" MODIFIED="1664727540444" TEXT="Nein &#x27f9; alles ausblenden &#x25a3;">
<font NAME="SansSerif" SIZE="10"/>
</node>
<node COLOR="#33565a" CREATED="1664725209295" ID="ID_657215999" MODIFIED="1664727540444" TEXT="Ja &#x27f9;  pr&#xfc;fen...">
<arrowlink COLOR="#76fe43" DESTINATION="ID_1918462068" ENDARROW="Default" ENDINCLINATION="5;-16;" ID="Arrow_ID_1055241213" STARTARROW="None" STARTINCLINATION="-45;7;"/>
<font NAME="SansSerif" SIZE="10"/>
</node>
</node>
<node COLOR="#33565a" CREATED="1664725271351" HGAP="38" ID="ID_1918462068" MODIFIED="1664727540441" TEXT="erf&#xfc;llt(cW)?" VSHIFT="-10">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      BEDINUNG: cW&#160;&gt; aktuelleWeite
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#76fe43" DESTINATION="ID_1918462068" ENDARROW="Default" ENDINCLINATION="5;-16;" ID="Arrow_ID_1055241213" SOURCE="ID_657215999" STARTARROW="None" STARTINCLINATION="-45;7;"/>
<font NAME="SansSerif" SIZE="10"/>
<node COLOR="#33565a" CREATED="1664725445271" ID="ID_1506234286" MODIFIED="1664727540444" TEXT="Nein &#x27f9; reduzieren!">
<font NAME="SansSerif" SIZE="10"/>
<node COLOR="#33565a" CREATED="1664725557464" ID="ID_1964737255" MODIFIED="1664727540443" TEXT="reduce(Name)? &#x27f9; &#x25a3;">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      BEDINGUNG: &#916;Name &gt; goal
    </p>
    <ul>
      <li>
        Hilfsfunktion reduce(Name) : kann im Extremfall den Namen ausblenden
      </li>
    </ul>
  </body>
</html></richcontent>
<font NAME="SansSerif" SIZE="10"/>
</node>
<node COLOR="#33565a" CREATED="1664725557464" ID="ID_827509447" MODIFIED="1664727540443" TEXT="reduce(Menu)? &#x27f9; &#x25a3;">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      BEDINGUNG: &#916;Menu &gt; goal
    </p>
    <ul>
      <li>
        Hilfsfunktion reduce(Menu) : kann das Men&#252; ggfs ausblenden und liefert das dadurch erzielte Delta
      </li>
    </ul>
  </body>
</html></richcontent>
<font NAME="SansSerif" SIZE="10"/>
</node>
<node COLOR="#33565a" CREATED="1664725557464" ID="ID_76551672" MODIFIED="1664727540443" TEXT="reduce(Icon) &#x25a3;">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Hier kein Test mehr notwendig; mehr als alles ausblenden k&#246;nnen wir nicht
    </p>
  </body>
</html></richcontent>
<font NAME="SansSerif" SIZE="10"/>
</node>
</node>
<node COLOR="#33565a" CREATED="1664725508319" ID="ID_348137834" MODIFIED="1664727540442" TEXT="Ja &#x27f9; einblenden?">
<font NAME="SansSerif" SIZE="10"/>
<node COLOR="#33565a" CREATED="1664726003283" ID="ID_991077863" MODIFIED="1664727540443" TEXT="show(Icon)?  Nein &#x27f9; &#x25a3;">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Mehrstufige Pr&#252;fung mit Hysterese (um Flackern zu vermeiden)...
    </p>
    <ul>
      <li>
        rechnerische Pr&#252;fung: Nominalgr&#246;&#223;e Icon + Hysterese &lt; cW <i>und ebenso </i>&lt; cH
      </li>
      <li>
        danach: Icon einblenden und reale Gr&#246;&#223;e ermitteln und gegen Constraint checken
      </li>
    </ul>
  </body>
</html></richcontent>
<font NAME="SansSerif" SIZE="10"/>
</node>
<node COLOR="#33565a" CREATED="1664726003283" ID="ID_1754814316" MODIFIED="1664727540443" TEXT="show(Menu)?  Nein &#x27f9; &#x25a3;">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      auch hier mehrstufige Pr&#252;fung mit Hysterese...
    </p>
  </body>
</html></richcontent>
<font NAME="SansSerif" SIZE="10"/>
</node>
<node COLOR="#33565a" CREATED="1664726003283" ID="ID_249986815" MODIFIED="1664727540442" TEXT="show(Name)?  &#x25a3;">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      auch hier mehrstufige Pr&#252;fung...
    </p>
    <ul>
      <li>
        zun&#228;chst rechnerisch...
      </li>
      <ul>
        <li>
          in der ersten (einfachen) Version wird gegen die nominelle Gesamtgr&#246;&#223;e gepr&#252;ft + Hysterese
        </li>
        <li>
          in der (geplanten) Vollversion pr&#252;fen wir gegen die Icon-Gr&#246;&#223;e + Hysterese, und unterstellen, da&#223; sich der Name dann hinreichend k&#252;rzen kann
        </li>
      </ul>
      <li>
        danach wird der Name eingeblendet und reduce(Name) aufgerufen; sollte dies scheitern, mu&#223; eine Warnung und Assertion-Failure erfolgen, da die Logik sonst zwangsl&#228;ufig in ein Schleife mit permanentem Flackern l&#228;uft!
      </li>
    </ul>
  </body>
</html></richcontent>
<font NAME="SansSerif" SIZE="10"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1664727903654" FOLDED="true" HGAP="47" ID="ID_479783297" MODIFIED="1664836779699" TEXT="Implementierung" VSHIFT="-4">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1664766812799" ID="ID_806792302" MODIFIED="1664767612419" TEXT="weitgehend in lokalen Funktionen implementierbar">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#435e98" CREATED="1664766835991" ID="ID_325959824" MODIFIED="1664767606249" TEXT="redundante Gr&#xf6;&#xdf;en-Ermittlung in der Kette">
<icon BUILTIN="clanbomber"/>
<node CREATED="1664766851269" ID="ID_1929258813" MODIFIED="1664767130682" TEXT="habe hier Bedenken wegen der Performance">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <font color="#b1058d"><i>premature optimisation</i></font>??
    </p>
    <p>
      Normalwerweise funktionieren alle unsere GUIs trotzdem schnell genug.<br />Aber hier wollen wir diese Sequenz hunderte Mal f&#252;r jeden Fokus-Wechsel machen...
    </p>
    <p>
      
    </p>
    <p>
      <b>Problematisch</b>&#160;ist, da&#223; hier &#252;ber zwei Ebenen hinweg und &#252;ber zwei mal zwei virtuelle Calls gegangen wird
    </p>
    <ul>
      <li>
        wir springen jeweils in eine non-inline-Funktion auf Gtkmm
      </li>
      <li>
        diese delegiert auf eine non-inline-Funktion in Gtk+
      </li>
      <li>
        und diese nutzt u.U zwei drei virtuelle Callbacks (Layout-Trend, Haupt-Dimension, sekund&#228;re Dimension)
      </li>
      <li>
        und jeder dieser Callbacks wir ein weiteres Mal von Gtkmm durch eine vtable dispatched
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node CREATED="1664767140485" ID="ID_428399436" MODIFIED="1664767217656" TEXT="vor allem die wieder-einblenden-Sequenz ist gef&#xe4;hrlich">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...denn sie wird f&#252;r jeden Fokuswechsel und f&#252;r jeden erfolglosen Versuch erneut durchlaufen, und zwar in den meisten F&#228;llen (Label) bis zum 3.Schritt, nur um dann zu merken, da&#223; eben doch nichts mehr rauszuholen ist.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1664767237232" ID="ID_871917652" MODIFIED="1664767375307" TEXT="leider arbeiten hier die mog&#xf6;ichen Paddings gegen uns">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      wenn das Stylesheet eben doch zus&#228;tzliche Paddings definiert, dann geht die Rechnung nicht auf, da sie auf den required-sizes der Kind-Widgets beruht, und daher (mit Paddings) zu optimistisch ist. Daher <i>m&#252;ssen wir zwingend</i>&#160;nach einem versuchten wieder-Einblenden die <i>reale Ausdehnung des ganzen IDLabel </i>ermitteln und gegen die Constraints pr&#252;fen. Bei der Verkleinerung ist das nicht der Fall, denn da wirken die wegfallenden Paddings als zus&#228;tzlicher &quot;Bonus&quot;.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1664767377647" ID="ID_482878586" MODIFIED="1664767538685" TEXT="Verwende ein &#x3bb; mit Seiteneffekt">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Damit mu&#223; ich nach jedem Schritt nur einmal die Gr&#246;&#223;e neu ermitteln; diese Werte schlagen dann aus dem &#955; per Seiteneffekt auf die Variablen des umschlie&#223;enden Scope durch. Das &#955; selber ist &quot;scheinbar&quot; nur eine Pr&#252;f-Funktion, und wird als Solche an die Hilfsfunktionen gegeben. Nicht sch&#246;n, aber auch nicht wirklich gef&#228;hrlich, da sich alles in einem lokalen Namespace abspielt. Habe eine Warnung im Code hinterlassen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#338800" CREATED="1664767619949" ID="ID_1351254549" MODIFIED="1664834924277" TEXT="Test">
<icon BUILTIN="button_ok"/>
<node CREATED="1664767649344" ID="ID_408352584" MODIFIED="1664767655318" TEXT="kein Crash">
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1664767638298" ID="ID_212652160" MODIFIED="1664767648612" TEXT="Ausblenden des Label funktioniert"/>
<node COLOR="#435e98" CREATED="1664767657871" ID="ID_599051282" MODIFIED="1664834531310" TEXT="Ausblenden der Icons funktioniert nicht">
<icon BUILTIN="broken-line"/>
<node COLOR="#435e98" CREATED="1664834459501" ID="ID_1315620982" MODIFIED="1664834529415" TEXT="war nur ein Klammerungs-Fehler">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Assignment-Operatoren binden weniger stark als Wertevergleiche, daher ist er immer nach dem ersten Reduktionsschritt ausgestiegen
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#338800" CREATED="1664834532931" ID="ID_60942393" MODIFIED="1664834557153" TEXT="Zus&#xe4;tzlicher Check ob Icon schon wieder eingeblendet ist">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1664834558009" ID="ID_1531756128" MODIFIED="1664834595460" TEXT="redundante Pr&#xfc;fung beim Name-Label unvermeidbar">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1664834635582" ID="ID_611375985" MODIFIED="1664834740525">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...weil der Constraint ja <i>gelockert </i>sein k&#246;nnte
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      das hei&#223;t, wenn das Label schon eingeblendet ist, aber nun zus&#228;tzlicher Platz verf&#252;gbar wird; deshalb d&#252;rfen wir hier bei einem bereits eingeblendeten Label nicht pauschal aussteigen, sondern m&#252;ssen jedesmal die ganze Pr&#252;fung machen
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1664834597364" ID="ID_988500213" MODIFIED="1664834784457" TEXT="ist aber nur schlimm solange wir das Label nicht k&#xfc;rzen k&#xf6;nnen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      weil in dem Fall jedesmal das Label wieder ausgeblendet wird, und dazu insgesamt drei mal die requested_width ermittelt werden mu&#223;
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1664834616551" ID="ID_1590264446" MODIFIED="1664834836962" TEXT="in der Endversion wird uns die Hysterese sch&#xfc;tzen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...unter der Annahme, da&#223; das K&#252;rzen ggfs.auch verl&#228;ngern kann, und damit schon relativ nahe am verf&#252;gbaren Platz ist. Dann verhindert die Hysterese, da&#223; nochmal gepr&#252;ft wird
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1664834846850" ID="ID_1842010427" MODIFIED="1664834875522" TEXT="das Caching bekannter Constraints k&#xf6;nnte sehr relevant sein. Unbedingt pr&#xfc;fen!"/>
</node>
</node>
<node COLOR="#338800" CREATED="1664834911721" ID="ID_433069881" MODIFIED="1664836773505" TEXT="ansonsten verh&#xe4;lt sich der Code jetzt wie intendiert">
<linktarget COLOR="#2db81a" DESTINATION="ID_433069881" ENDARROW="Default" ENDINCLINATION="366;20;" ID="Arrow_ID_1166896363" SOURCE="ID_1294234975" STARTARROW="None" STARTINCLINATION="301;14;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1664033207476" ID="ID_1973707010" MODIFIED="1664721283088" TEXT="Weiterf&#xfc;hrende Idee: Label dynamisch k&#xfc;rzen">
<icon BUILTIN="idea"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1664769914851" ID="ID_816204048" MODIFIED="1664769938381" TEXT="#1242 shorten ID-Label text to fit into size constraints">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1664027420141" FOLDED="true" ID="ID_891209068" MODIFIED="1664836788731" TEXT="kann man den Label-Text &#xe4;ndern und sieht sofort eine &#xc4;nderung auf dem Layout-Callback?">
<linktarget COLOR="#4265bf" DESTINATION="ID_891209068" ENDARROW="Default" ENDINCLINATION="-836;28;" ID="Arrow_ID_120092077" SOURCE="ID_945958753" STARTARROW="None" STARTINCLINATION="260;-42;"/>
<icon BUILTIN="help"/>
<node CREATED="1664313375789" ID="ID_611179505" MODIFIED="1664313504665" TEXT="zumindest nach hide() ist sofort die prefered_size angepa&#xdf;t">
<linktarget COLOR="#fcf2bc" DESTINATION="ID_611179505" ENDARROW="Default" ENDINCLINATION="-47;-40;" ID="Arrow_ID_96952850" SOURCE="ID_1660318028" STARTARROW="None" STARTINCLINATION="36;39;"/>
<linktarget COLOR="#f8fecd" DESTINATION="ID_611179505" ENDARROW="None" ENDINCLINATION="-198;-9;" ID="Arrow_ID_990474269" SOURCE="ID_958938237" STARTARROW="Default" STARTINCLINATION="202;13;"/>
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1664543738587" ID="ID_418832883" MODIFIED="1664836412493" TEXT="Experiment durchf&#xfc;hren">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1664543750721" ID="ID_1515243070" MODIFIED="1664836391654">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <font face="Monospaced">setName(cuString&amp;)</font>&#160;implementieren
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1664543863364" ID="ID_1704098172" MODIFIED="1664836402142" TEXT="Test-Manipulationsfunktion">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1664543973587" ID="ID_1411171343" MODIFIED="1664836399572" TEXT="Verb &quot;manip&quot;"/>
<node COLOR="#435e98" CREATED="1664543988561" ID="ID_622195313" MODIFIED="1664836399571" TEXT="manipuliert die zuletzt erzeugte Box"/>
<node COLOR="#435e98" CREATED="1664543997192" ID="ID_332394972" MODIFIED="1664836399570" TEXT="setzt einen neuen Random-String"/>
</node>
<node COLOR="#338800" CREATED="1664544020621" ID="ID_1995553965" MODIFIED="1664836410800" TEXT="Verhalten per Dump-msg beobachten">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1664836698977" ID="ID_1294234975" MODIFIED="1664836773505" TEXT="ist nebenbei ein weiterer erfolgreicher Test f&#xfc;r die Layout-Logik">
<arrowlink COLOR="#2db81a" DESTINATION="ID_433069881" ENDARROW="Default" ENDINCLINATION="366;20;" ID="Arrow_ID_1166896363" STARTARROW="None" STARTINCLINATION="301;14;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1664836417335" ID="ID_683250227" MODIFIED="1664836426079" TEXT="Fazit">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="info"/>
<node CREATED="1664836427405" ID="ID_1030484461" MODIFIED="1664836664800" TEXT="&#xc4;nderungen wirken sich sofort auf die get_preferred_*() -Funktionen aus">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1664836480317" ID="ID_1978427776" MODIFIED="1664836667109" TEXT="aber nur wenn das Widget visible ist">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1664836489848" ID="ID_625722238" MODIFIED="1664836671391" TEXT="man mu&#xdf; also ggfs. show_all() aufrufen">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1672763989377" ID="ID_898557963" MODIFIED="1672764024762" TEXT="Layout-Anpassungen sollte man also machen...">
<icon BUILTIN="yes"/>
<node CREATED="1672764001658" ID="ID_1513659794" MODIFIED="1672764011021" TEXT="in den get_preferred_*-VFunks"/>
<node CREATED="1672764011872" ID="ID_779540257" MODIFIED="1672764022227" TEXT="im on_size_allocate-Callback"/>
</node>
<node CREATED="1664836501374" ID="ID_915287836" MODIFIED="1672764716013" TEXT="Kein Problem: Layout-Handling-Code l&#xe4;uft vor dem n&#xe4;chsten DRAW">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <ul>
      <li>
        Alle solchen UI-Aktionen kommen aus dem Event-Thread.
      </li>
      <li>
        Jede &#196;nderung der Visibility zieht eine resize-Kalkulation nach sich
      </li>
      <li>
        dabei werden unsere Hooks aufgerufen, stellen die &#196;nderung fest, und setzten ggfs. visible = false
      </li>
      <li>
        Ergebnis: keinerlei sichtbarer Effekt (es sei denn, der Text wird tats&#228;chlich angezeigt)
      </li>
    </ul>
  </body>
</html></richcontent>
<linktarget COLOR="#738fa6" DESTINATION="ID_915287836" ENDARROW="Default" ENDINCLINATION="-35;506;" ID="Arrow_ID_1564122490" SOURCE="ID_327539453" STARTARROW="None" STARTINCLINATION="1322;71;"/>
<icon BUILTIN="forward"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1664033233729" ID="ID_73562728" MODIFIED="1664033252543" TEXT="ggfs &#xdc;bersetzungs-Faktor im Advice-System ablegen">
<icon BUILTIN="hourglass"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1664728069849" ID="ID_458393482" MODIFIED="1664728428510" TEXT="Performance der Anzeigelogik beobachten">
<arrowlink COLOR="#675f90" DESTINATION="ID_1113493685" ENDARROW="Default" ENDINCLINATION="144;-94;" ID="Arrow_ID_314973122" STARTARROW="None" STARTINCLINATION="-577;39;"/>
<icon BUILTIN="bell"/>
</node>
</node>
<node COLOR="#338800" CREATED="1664033337194" FOLDED="true" ID="ID_142928718" MODIFIED="1664674849781" TEXT="Label-Komponente anlegen">
<arrowlink COLOR="#feebc1" DESTINATION="ID_1075411565" ENDARROW="Default" ENDINCLINATION="-16;-582;" ID="Arrow_ID_957764469" STARTARROW="None" STARTINCLINATION="-606;54;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1664033348579" ID="ID_575467306" MODIFIED="1664553856140" TEXT="erst mal als gruppiertes Sub-Widget extrahieren">
<icon BUILTIN="yes"/>
<node COLOR="#338800" CREATED="1664544131446" ID="ID_448994253" MODIFIED="1664553853255" TEXT="der Box-Container">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1664544138573" ID="ID_334656865" MODIFIED="1664553854357" TEXT="plus die Size-Handling-Logik">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1664553879483" ID="ID_923634948" MODIFIED="1664674831082" TEXT="Buttons sind zu gro&#xdf;">
<icon BUILTIN="broken-line"/>
<node COLOR="#338800" CREATED="1664668329069" ID="ID_696787535" MODIFIED="1664674548169" TEXT="Anforderung: mu&#xdf; diese Buttons &quot;greifen&quot; k&#xf6;nnen">
<linktarget COLOR="#543f8c" DESTINATION="ID_696787535" ENDARROW="Default" ENDINCLINATION="-344;-15;" ID="Arrow_ID_1626542451" SOURCE="ID_1102642211" STARTARROW="None" STARTINCLINATION="560;45;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1664674559510" ID="ID_1604472823" MODIFIED="1664674623071" TEXT="Untersuchung...">
<icon BUILTIN="idea"/>
<node CREATED="1664674569649" ID="ID_892636850" MODIFIED="1664674628657" TEXT="zwei Ursachen">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1664674575884" ID="ID_1453761517" MODIFIED="1664674589737" TEXT="alle Buttons haben ein min-width und min-height"/>
<node CREATED="1664674590960" ID="ID_1398294801" MODIFIED="1664674608939" TEXT="zumindest image-button hat auch ein Padding (4px bei mir)"/>
</node>
<node COLOR="#338800" CREATED="1664674677718" ID="ID_692056808" MODIFIED="1664674712628" TEXT="Style-Regeln">
<icon BUILTIN="button_ok"/>
<node CREATED="1664674687597" ID="ID_1042549380" MODIFIED="1664674693955" TEXT="unset-Regel auf: .idlabel .image-button"/>
<node CREATED="1664674699611" ID="ID_1706886045" MODIFIED="1664674710229" TEXT="minimales Padding auf das Icon"/>
</node>
</node>
<node COLOR="#338800" CREATED="1664544186535" ID="ID_272598573" MODIFIED="1664553847453" TEXT="Auslegung der Icons per Strategy steuerbar machen">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1664033361175" ID="ID_314954032" MODIFIED="1664544103011" TEXT="k&#xf6;nnte sp&#xe4;ter mal eigenst&#xe4;ndiges Custom-Widget werden">
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1664029346619" ID="ID_1680520179" MODIFIED="1664031788262" TEXT="Ausdehnung an den Content-Render weitergeben">
<arrowlink COLOR="#5d8bc2" DESTINATION="ID_1572928176" ENDARROW="Default" ENDINCLINATION="74;-5;" ID="Arrow_ID_1521837627" STARTARROW="None" STARTINCLINATION="15;42;"/>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1664054650065" ID="ID_402860624" MODIFIED="1664054657328" TEXT="Konfiguration der Layout-Steuerung">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1664054365436" ID="ID_74006008" MODIFIED="1664054707374" TEXT="Shared Strategy">
<linktarget COLOR="#fde2be" DESTINATION="ID_74006008" ENDARROW="Default" ENDINCLINATION="6;128;" ID="Arrow_ID_1045794051" SOURCE="ID_1399625126" STARTARROW="None" STARTINCLINATION="-266;36;"/>
<icon BUILTIN="flag-yellow"/>
<node COLOR="#435e98" CREATED="1664055105139" ID="ID_594735349" MODIFIED="1664136644965" TEXT="sind mehrfache Indirektionen ein Problem?">
<icon BUILTIN="help"/>
<node CREATED="1664055185035" ID="ID_1386788488" MODIFIED="1664055198439" TEXT="wir h&#xe4;tten konkrete Clip-delegates">
<icon BUILTIN="idea"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1664055199606" ID="ID_1356714491" MODIFIED="1664133207079" TEXT="also doch policy based design?">
<arrowlink COLOR="#8d81ac" DESTINATION="ID_1304690112" ENDARROW="Default" ENDINCLINATION="654;32;" ID="Arrow_ID_1945811186" STARTARROW="None" STARTINCLINATION="942;-96;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="help"/>
<node CREATED="1664055305064" ID="ID_794765074" MODIFIED="1664055318882" TEXT="dann m&#xfc;&#xdf;te ElementBoxWidget von der Strategy erben"/>
<node CREATED="1664055333428" ID="ID_383670287" MODIFIED="1664055344687" TEXT="denn GTK verwendet bereits die VTable zur Differenzierung"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1664055432842" ID="ID_217414794" MODIFIED="1664055487432" TEXT="Keine Panik!">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1664055442553" ID="ID_94790418" MODIFIED="1664055480281">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Unterscheidung <i>resize</i>&#160;&#10234; <i>rerender</i>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1664055520691" ID="ID_1052240865" MODIFIED="1664055540263" TEXT="Resize &#x27f9; mu&#xdf; Anzahl der (realisierten) Widgets limitieren"/>
<node CREATED="1664055541961" ID="ID_1385566332" MODIFIED="1664055595693" TEXT="reRender &#x27f9; bereits festgelegte Konfiguration + berechnetes Content-Pixmap"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1664060239692" ID="ID_1617851912" MODIFIED="1664060250875" TEXT="also doch erst mal &quot;bodenst&#xe4;ndig&quot; beginnen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Aua!
    </p>
    <p>
      f&#228;llt mir schwer... ich sehe andauernd die sp&#228;teren Probleme
    </p>
  </body>
</html></richcontent>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1664054377646" ID="ID_309729651" MODIFIED="1664054397978" TEXT="nur eine Instanz pro Render-Methode">
<icon BUILTIN="yes"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1664054422047" ID="ID_1277984931" MODIFIED="1664054478616" TEXT="f&#xfc;r konkrete Darstellung wird ein Ausf&#xfc;hrungskontext erstellt">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1664054437613" ID="ID_409457601" MODIFIED="1664054479672" TEXT="Aufgabe: Ownership/Allokation f&#xfc;r diesen Kontext">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node CREATED="1664055065995" ID="ID_1022541607" MODIFIED="1664055102548" TEXT="nur eine Instanz pro konkrete Layout-Konfiguration(insgesamt)">
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1664055731547" ID="ID_1438169680" MODIFIED="1664136751044" TEXT="Daten der individuellen Instanz">
<icon BUILTIN="info"/>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1664055752785" ID="ID_1076715259" MODIFIED="1664055785130">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Analyse: welche <i>beweglichen Teile </i>gibt es &#252;berhaupt?
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="help"/>
</node>
<node CREATED="1664055792657" ID="ID_444290772" MODIFIED="1664055812602" TEXT="nameID">
<node CREATED="1664055813925" ID="ID_911900339" MODIFIED="1664055832455" TEXT="steckt dann im konkreten Clip-Widget"/>
<node CREATED="1664055833899" ID="ID_802603191" MODIFIED="1664055854529" TEXT="aufgedoppelt im Label-Widget-Content">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1664056044104" ID="ID_637592114" MODIFIED="1664056050520" TEXT="nicht zwangsl&#xe4;ufig">
<icon BUILTIN="stop-sign"/>
</node>
<node CREATED="1664056051832" ID="ID_528560555" MODIFIED="1664056323292" TEXT="m&#xf6;glicherweise die human-readable-Form">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...die name-ID mu&#223; eindeutig sein (modulo Objekt-Typ), weil allein daraus eine EntryID zu konstruieren ist, verm&#246;ge deren die Kommunikation &#252;ber den Bus gesteuert wird. Daher ist es denkbar, da&#223; die User [optional] eine mnemonische Form definieren wollen, und diese steht dann im Label-Widget. Und noch etwas: der Label-Text wird ggfs. zur Anzeige gek&#252;rzt, also mu&#223; irgendwo der Basis-Text stehen (es sei denn, man holt sich den via Request &#252;ber den Bus)
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node CREATED="1664055888396" ID="ID_926506496" MODIFIED="1664055891599" TEXT="expander">
<node CREATED="1664055910665" ID="ID_209252458" MODIFIED="1664055945904" TEXT="&#x3bb;-Binding auf eine konkrete Controller-Instanz"/>
</node>
<node CREATED="1664055998046" ID="ID_298956950" MODIFIED="1664056000233" TEXT="placement">
<node CREATED="1664056001597" ID="ID_1442530188" MODIFIED="1664056035412" TEXT="nur ein ID-Binding (&#x27f9; ergibt sich aus Name-ID)"/>
<node CREATED="1664056374416" ID="ID_316046833" MODIFIED="1664057693354" TEXT="(auch) hier ergibt sich die Notwendigkeit eines re-Populations-Diff">
<arrowlink COLOR="#fec2a0" DESTINATION="ID_501539344" ENDARROW="Default" ENDINCLINATION="-1291;-991;" ID="Arrow_ID_189200159" STARTARROW="None" STARTINCLINATION="-1328;59;"/>
</node>
</node>
<node CREATED="1664059454965" ID="ID_223766358" MODIFIED="1664059458062" TEXT="extension">
<node CREATED="1664059464264" ID="ID_1408566346" MODIFIED="1664059479665" TEXT="[optional] constraint auf die Ausdehnung des Widget"/>
<node CREATED="1664059513545" ID="ID_540642643" MODIFIED="1664059533917" TEXT="zum Einen das L&#xf6;sungs-Schema (&#x3bb;)"/>
<node CREATED="1664059545013" ID="ID_12537442" MODIFIED="1664059564982" TEXT="au&#xdf;erdem konkret...">
<node CREATED="1664059565714" ID="ID_49571341" MODIFIED="1664059570221" TEXT="das Canvas-Attachment"/>
<node CREATED="1664059571305" ID="ID_1576639126" MODIFIED="1664059589554" TEXT="die zeitliche Ausdehnung des Clip"/>
</node>
</node>
<node CREATED="1664059631345" ID="ID_710374893" MODIFIED="1664059636180" TEXT="content-Renderer">
<node CREATED="1664059679707" ID="ID_1826707626" MODIFIED="1664059710722" TEXT="Name-ID gen&#xfc;gt &#x27f9; Zugang zum konkreten Medium via Steam"/>
<node CREATED="1664059758792" ID="ID_665980098" MODIFIED="1664059964811" TEXT="[nur tempor&#xe4;r] laufende Renderer-Instanz">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      analog wie ein Player; w&#228;hrend das Content-Rendering l&#228;uft mu&#223; der Clip eine Registrierung in einem zust&#228;ndigen OutputManager aufrechterhalten, um die berechneten Pixmaps dann entgegenzunehmen
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1664059979870" ID="ID_1021249462" MODIFIED="1664060176885" TEXT="Information zu den vorhandenen Pixmaps, sowie deren Bedeutung">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...wir speichern ganz sicher nicht ein Mini-Bild f&#252;r jeden Frame eines Video, sondern brauchen hier wohl eine Art lokales Caching; das hei&#223;t, die Pixmaps f&#252;r einen aktiven Bereich plus eine gewisse Umgebung sind direkt greifbar im GUI. Dieses Caching ist aber nur ein 1st-Level, denn wir wollen den (als sehr elaboriert konzipierten) globalen Frame-Cache auch f&#252;r diesen Zweck mitbenutzen; schlie&#223;lich d&#252;rften diese Vorschaubilder die h&#228;ufigsten laufenden Rendervorg&#228;nge sein...
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1664060277055" ID="ID_319446276" MODIFIED="1664136766596" TEXT="Strategy als lokales Front-End anlegen">
<icon BUILTIN="pencil"/>
<node CREATED="1664060308706" ID="ID_346748114" MODIFIED="1664060333637" TEXT="gruppiert die w&#xe4;hlbaren Detail-Strategien und Binding-&#x3bb;"/>
<node CREATED="1664060335335" ID="ID_210836901" MODIFIED="1664060373437" TEXT="h&#xe4;lt die Informationen f&#xfc;r den Zugang zu den individuellen Instanz-Werten"/>
<node CREATED="1664060379716" ID="ID_853921300" MODIFIED="1664060395210" TEXT="und zwar insofern diese zur Verwendung der generischen Strategy notwendig sind"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1664030148144" FOLDED="true" ID="ID_1938112956" MODIFIED="1664030157478" TEXT="Framework f&#xfc;r Content-Renderer">
<linktarget COLOR="#f6e1c2" DESTINATION="ID_1938112956" ENDARROW="Default" ENDINCLINATION="-1219;85;" ID="Arrow_ID_1826503668" SOURCE="ID_596408518" STARTARROW="None" STARTINCLINATION="-2360;-214;"/>
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1664036078380" ID="ID_750958309" MODIFIED="1664036087161" TEXT="#1237 Design for Content Renderer framework">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1665870246870" ID="ID_1369666337" MODIFIED="1665870264462" TEXT="Anforderungs-Analyse">
<icon BUILTIN="info"/>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1665870269397" ID="ID_184617933" MODIFIED="1665870282612" TEXT="was braucht ElementBoxWidget?">
<icon BUILTIN="help"/>
<node CREATED="1665870390267" ID="ID_1292247563" MODIFIED="1665870468628" TEXT="&#xbb;die Box&#xab; : ein Container">
<node CREATED="1665870476554" ID="ID_567789239" MODIFIED="1665870487537" TEXT="&#xfc;berspannt eine Hintergrund-Fl&#xe4;che"/>
<node CREATED="1665870488690" ID="ID_610765229" MODIFIED="1665870505519" TEXT="ben&#xf6;tigt generelles Styling">
<node CREATED="1665870540741" ID="ID_596126312" MODIFIED="1665870553794" TEXT="Ankerpunkt: Klasse auf dem Haupt-Widget"/>
<node CREATED="1665870613181" ID="ID_1999333910" MODIFIED="1665870634461" TEXT="+eine bekannte Tag-ID zum Binden der CSS-Regeln"/>
</node>
</node>
<node CREATED="1665870683123" ID="ID_334958667" MODIFIED="1665870691416" TEXT="(optional) ein Kind-Widget">
<node CREATED="1665870701225" ID="ID_1109457189" MODIFIED="1665870734944">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      default == keines &#10233; <i><font color="#501f7e">leer</font></i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1665870805291" ID="ID_1283442162" MODIFIED="1665870815346" TEXT="ein Canvas">
<node CREATED="1665870818719" ID="ID_1999412105" MODIFIED="1665870828436" TEXT="kann darauf symbolischen Platzhalter zeichnen"/>
<node CREATED="1665870829902" ID="ID_1414104811" MODIFIED="1665870843608" TEXT="kann darauf &#xbb;Content&#xab; darstellen"/>
<node CREATED="1665870844007" ID="ID_1925501138" MODIFIED="1665871130732" TEXT="kann daran weitere Widgets anh&#xe4;ngen">
<linktarget COLOR="#3d3c58" DESTINATION="ID_1925501138" ENDARROW="Default" ENDINCLINATION="2;45;" ID="Arrow_ID_1045895165" SOURCE="ID_1660585525" STARTARROW="None" STARTINCLINATION="-7;-30;"/>
<node CREATED="1665870898550" ID="ID_264682173" MODIFIED="1665870903026" TEXT="Icon(s)"/>
<node CREATED="1665870903899" ID="ID_75342195" MODIFIED="1665870929870" TEXT="Text-Labels und Text-Felder"/>
<node CREATED="1665870930770" ID="ID_749692462" MODIFIED="1665870936278" TEXT="Steuerelemente"/>
<node CREATED="1665870937525" ID="ID_378196536" MODIFIED="1665870954394" TEXT="ElementBoxWidget(s)"/>
<node CREATED="1665870956006" ID="ID_1051993844" MODIFIED="1665871003940" TEXT="Timeline-artiger nested Content"/>
</node>
</node>
<node CREATED="1665871022157" ID="ID_178239069" MODIFIED="1665871030472" TEXT="weitere Alternativen?">
<node CREATED="1665871047978" ID="ID_1660585525" MODIFIED="1665871130732" TEXT="k&#xf6;nnte Widgets direkt einbinden">
<arrowlink COLOR="#3d3c58" DESTINATION="ID_1925501138" ENDARROW="Default" ENDINCLINATION="2;45;" ID="Arrow_ID_1045895165" STARTARROW="None" STARTINCLINATION="-7;-30;"/>
</node>
<node CREATED="1665871160235" ID="ID_247576641" MODIFIED="1665871348368" TEXT="derzeit nur hypothetischer Nutzen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...es w&#252;rde sich um irgendwelche ausgefallenen Use-Cases handeln, und das direkte Anheften der Kind-Widgets w&#252;rde dann Overhead sparen, gegen&#252;ber einem Canvas; weiterer Vorteil w&#228;re der direkte <i>push-back </i>f&#252;r die Allokation von Screen-Extension (was allerdings im Falle eines size-constrained Widget dann wieder ein Nachteil w&#228;re)
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node CREATED="1665871377691" ID="ID_1824259652" MODIFIED="1665871382745" TEXT="ein Inhalts-Handle">
<node CREATED="1665871386532" ID="ID_647005980" MODIFIED="1665871407866">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      weil ElementBoxWidget selbst keine <i>&quot;business logic&quot; </i>bereitstellt
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1665871536271" ID="ID_1978073457" MODIFIED="1665871567831" TEXT="dieses Handle wird aber nur an den Content-Renderer durchgereicht"/>
</node>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1665871606904" ID="ID_1501688207" MODIFIED="1665871618313" TEXT="was ist f&#xfc;r bestimmten Content bereitzustellen?">
<icon BUILTIN="help"/>
<node CREATED="1665871626252" ID="ID_251889202" MODIFIED="1665871631909" TEXT="eine Strategy"/>
<node CREATED="1665871737765" ID="ID_1798687465" MODIFIED="1665871745120" TEXT="(optional) ein Kind-Widget">
<node CREATED="1665871862769" ID="ID_442590072" MODIFIED="1665871886917" TEXT="Modell-A">
<node CREATED="1665871888408" ID="ID_752938606" MODIFIED="1665871897155" TEXT="Kind-Widget ist immer ein Canvas"/>
<node CREATED="1665871898095" ID="ID_51898797" MODIFIED="1665871912673" TEXT="dieser wird direkt von ElementBox kontrolliert"/>
<node CREATED="1665871949152" ID="ID_1240018305" MODIFIED="1665871982138" TEXT="ein zus&#xe4;tzlicher &quot;Renderer&quot; operiert auf diesem Canvas"/>
</node>
<node CREATED="1665871984835" ID="ID_1759333514" MODIFIED="1665874483095" TEXT="Modell-B">
<linktarget COLOR="#90c8e3" DESTINATION="ID_1759333514" ENDARROW="Default" ENDINCLINATION="44;114;" ID="Arrow_ID_1003572490" SOURCE="ID_1156085708" STARTARROW="None" STARTINCLINATION="-104;-18;"/>
<node CREATED="1665871991892" ID="ID_104574738" MODIFIED="1665872003189" TEXT="das Kind-Widget ist eigenst&#xe4;ndig"/>
<node CREATED="1665872106235" ID="ID_1051979214" MODIFIED="1665872117349" TEXT="es bietet Hooks an...">
<node CREATED="1665872129240" ID="ID_1784194423" MODIFIED="1665872322049" TEXT="f&#xfc;r die Layout-Steuerung">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <ul>
      <li>
        Aushandeln der ben&#246;tigten Extension
      </li>
      <li>
        &#196;ndern der Detailtiefe (expand / collapse)
      </li>
      <li>
        Setzen einer Ausdehnungs-Vorgabe
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node CREATED="1665872631421" ID="ID_102284502" MODIFIED="1665872716207" TEXT="f&#xfc;r das lokale pop-up-Men&#xfc;">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...welches u.U. zwar vom ElementBoxWidget aus eingebunden wird, aber eigentlich auf die Inhalts-Ebene delegiert
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1665873885491" ID="ID_131672642" MODIFIED="1665873982614" TEXT="f&#xfc;r Pivot-Content">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...wobei das eigentlich nur f&#252;r den <i>einfachen Use-Case </i>relevant ist; denn im Falle eines komplexen Content-Containers wird die Steuerung, in welche der Container ohnehin eingebunden sein mu&#223; (z.B. der Clip-Controller) wohl auf direktem Wege agieren, ohne durch das ElementBox-Widget zu gehen
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1665872518404" ID="ID_536642669" MODIFIED="1665872555004" TEXT="Struktur-Enscheidungen">
<icon BUILTIN="yes"/>
<node CREATED="1665872959841" ID="ID_1538590156" MODIFIED="1665874432390" TEXT="ElementBoxWidget nur als Container anlegen">
<arrowlink COLOR="#4664b9" DESTINATION="ID_482907124" ENDARROW="Default" ENDINCLINATION="-136;-5;" ID="Arrow_ID_1958020561" STARTARROW="None" STARTINCLINATION="183;12;"/>
<arrowlink COLOR="#4664b9" DESTINATION="ID_637712334" ENDARROW="Default" ENDINCLINATION="17;-78;" ID="Arrow_ID_1498361777" STARTARROW="None" STARTINCLINATION="188;12;"/>
</node>
<node CREATED="1665872986764" ID="ID_1471519235" MODIFIED="1665873002758" TEXT="es gibt zwei grundverschiedene usage-Patterns">
<node CREATED="1665873005177" ID="ID_1711206809" MODIFIED="1665873013892" TEXT="Labels und einfacher Content">
<node CREATED="1665873056661" ID="ID_1303900519" MODIFIED="1665873075779" TEXT="hier weitgehende Standardisierung und Automatisierung gew&#xfc;nscht"/>
<node CREATED="1665873092646" ID="ID_764903267" MODIFIED="1665873111767" TEXT="reduziert sich auf ein Label + einen pop-up-Menu-Provider"/>
<node CREATED="1665873149175" ID="ID_329681558" MODIFIED="1665873228305" TEXT="(optional) Pivot-Content">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Ein Stichwort, eine (ggfs. dynamische) Kurzinformation, ein pivot-Frame als Erkennungszeichen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1665873014720" ID="ID_321549471" MODIFIED="1665873024963" TEXT="Clips bzw. Content-Container">
<node CREATED="1665873235907" ID="ID_438342430" MODIFIED="1665873254132" TEXT="hier soll sich das ElementBoxWidget m&#xf6;glichst passiv verhalten"/>
<node CREATED="1665873270653" ID="ID_340799218" MODIFIED="1665873303819">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      es gibt <i>anderswo </i>einen dedizierten &quot;Content Controller&quot;
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node CREATED="1665873423045" ID="ID_615133783" MODIFIED="1665873440786" TEXT="das Thema &#xbb;temporale Extension&#xab; ist (nat&#xfc;rlich) problematisch">
<node CREATED="1665873457525" ID="ID_482907124" MODIFIED="1665873562628" TEXT="denn das ElementBoxWidget soll selber in die Zeit-Umrechnung nicht involviert sein">
<linktarget COLOR="#4664b9" DESTINATION="ID_482907124" ENDARROW="Default" ENDINCLINATION="-136;-5;" ID="Arrow_ID_1958020561" SOURCE="ID_1538590156" STARTARROW="None" STARTINCLINATION="183;12;"/>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1665873578728" ID="ID_1319825496" MODIFIED="1665873612116" TEXT="folglich pollt es eine Pixel-Ausdehnung und dr&#xfc;ckt die an den Content-Provider weiter"/>
<node CREATED="1665873632653" ID="ID_1586810839" MODIFIED="1665873651822" TEXT="ohne an diesen auch einen inhaltlichen Link oder eine Layout-Strategie weiterzureichen"/>
</node>
<node CREATED="1665873457525" ID="ID_637712334" MODIFIED="1665874432391" TEXT="aufgrund der disparaten Use-Cases....">
<linktarget COLOR="#4664b9" DESTINATION="ID_637712334" ENDARROW="Default" ENDINCLINATION="17;-78;" ID="Arrow_ID_1498361777" SOURCE="ID_1538590156" STARTARROW="None" STARTINCLINATION="188;12;"/>
<node CREATED="1665874438345" ID="ID_1156085708" MODIFIED="1665874490650" TEXT="kommt nur Modell-B f&#xfc;r das Kind-Widget in Frage">
<arrowlink COLOR="#90c8e3" DESTINATION="ID_1759333514" ENDARROW="Default" ENDINCLINATION="44;114;" ID="Arrow_ID_1003572490" STARTARROW="None" STARTINCLINATION="-104;-18;"/>
<node CREATED="1665874929814" ID="ID_103158499" MODIFIED="1665874947504">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      und zwar wegen der <i>Separation of Concerns</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1665874948313" ID="ID_293802012" MODIFIED="1665874962785" TEXT="(leider spricht n&#xe4;mlich alles Andere ehr f&#xfc;r Modell-A....)"/>
</node>
<node CREATED="1665874513335" ID="ID_284819629" MODIFIED="1665874526768" TEXT="Modell-A l&#xe4;&#xdf;t sich wohl als ein Spezialfall deuten">
<node CREATED="1665874544130" ID="ID_1578446031" MODIFIED="1665874578715">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      und <i><u>das</u></i>&#160;w&#228;re der <i>eigentliche Fall </i>f&#252;r einen <b>Content-Renderer</b>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1665874586541" ID="ID_1266044104" MODIFIED="1665874598322" TEXT="dieser ist demnach immer ein spezielles Canvas-Widget"/>
</node>
</node>
<node CREATED="1665874965521" ID="ID_1819243067" MODIFIED="1665874975801" TEXT="Allokation">
<node CREATED="1665875003260" ID="ID_1160344881" MODIFIED="1665875034082" TEXT="Modell-A : ElementBox enth&#xe4;lt immer ein Canvas-Widget"/>
<node CREATED="1665874978212" ID="ID_1828608585" MODIFIED="1665875001778" TEXT="Modell-B : Allokation des Kind-Widget mu&#xdf; woanders erfolgen">
<node CREATED="1665875077974" ID="ID_1931734833" MODIFIED="1665875087061" TEXT="ElementBox &#xfc;bernimmt keine Ownership"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1665875088220" ID="ID_734939153" LINK="#ID_1042919827" MODIFIED="1675385118681" TEXT="Lifecycle ist zu gew&#xe4;hrleisten">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      das Kind-Widget mu&#223; ElementBox &#252;berleben; und das bedeutet, es mu&#223; ein Sibling sein... (problematisch f&#252;r die Struktur vom ClipWidget, es sei denn, man macht ElementBox dort zu einem Member &#8212; was allerdings wiederum der Anforderung widerspricht, da&#223; das Clip-Delegate direkt ein Widget ist und sich darstellen kann)
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1665875444841" ID="ID_544669077" MODIFIED="1665875454532" TEXT="Kompromi&#xdf;...">
<node CREATED="1665875461707" ID="ID_194337480" MODIFIED="1665875478696" TEXT="Allokation InPlaceBuffer"/>
<node CREATED="1665875492299" ID="ID_629065329" MODIFIED="1665875511676" TEXT="aber die Strategy definiert die konkrete Widget-Klasse"/>
</node>
<node CREATED="1665875537501" ID="ID_1656529505" MODIFIED="1665875748844" TEXT="der &#xbb;Renderer&#xab; dagegen w&#xe4;re stets eine globale Komponente">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...w&#252;rde also z.B. als Meyer's Singleton bereitgestellt, und m&#252;&#223;te den konkreten Kontext f&#252;r jeden Aufruf zugereicht bekommen; auch die <i>Render-Vorg&#228;nge </i>k&#246;nnte man als Pool darstellen, denn es macht ohnehin keinen Sinn, alle Clips auf einmal zu rendern; wenn ein Render-Vorgang beendet ist, bleibt nur noch ein Buffer-Handle &#252;brig f&#252;r das resultierende Pixmap
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1665875357440" ID="ID_320528707" MODIFIED="1665875382101" TEXT="&#x27f9; Zwischenfazit: neige nun doch wieder Modell-A zu">
<node CREATED="1665875384897" ID="ID_132968061" MODIFIED="1665875408194" TEXT="aber sollte die Encapsulation aus Modell-B &#xfc;bernehmen"/>
<node CREATED="1665875408990" ID="ID_1304861189" MODIFIED="1665875430814" TEXT="d.h. ElementBox kontrolliert eben diesen Canvas doch nicht direkt"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1664030163430" ID="ID_1789916626" MODIFIED="1664030172407" TEXT="Design: Interface-Komponente">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1664030181011" ID="ID_741977554" MODIFIED="1664030201167" TEXT="Steuerung via ctor-DSL pr&#xfc;fen">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1665868480820" ID="ID_954980728" MODIFIED="1665868517693" TEXT="Typ + Presentation Intent &#x27f9; Content renderer(Strategy) installieren"/>
<node CREATED="1665868541647" ID="ID_761057997" MODIFIED="1665874907453" TEXT="+ zus&#xe4;tzlich konkrete Name-ID &#x27f9; Aufrufkontext f&#xfc;r konkreten Render-Vorgang"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1664030206720" ID="ID_1572928176" MODIFIED="1664031781637" TEXT="Analyse zum Thema: Zeit/Ausdehnung">
<linktarget COLOR="#5d8bc2" DESTINATION="ID_1572928176" ENDARROW="Default" ENDINCLINATION="74;-5;" ID="Arrow_ID_1521837627" SOURCE="ID_1680520179" STARTARROW="None" STARTINCLINATION="15;42;"/>
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1664050286058" ID="ID_1762124621" MODIFIED="1664050305208" TEXT="Vorsicht: Overhead">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1664050307047" ID="ID_1064025353" MODIFIED="1664050317347" TEXT="Flyweight-Pattern?">
<icon BUILTIN="idea"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1664054365436" ID="ID_1399625126" MODIFIED="1664054741234" TEXT="Shared Strategy">
<arrowlink COLOR="#fde2be" DESTINATION="ID_74006008" ENDARROW="Default" ENDINCLINATION="6;128;" ID="Arrow_ID_1045794051" STARTARROW="None" STARTINCLINATION="-266;36;"/>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1665969213838" ID="ID_405495257" MODIFIED="1665969529899" TEXT="Anzeige-Strategy konfigurieren f&#xfc;r Medien-Typ">
<linktarget COLOR="#b46465" DESTINATION="ID_405495257" ENDARROW="Default" ENDINCLINATION="-539;-35;" ID="Arrow_ID_742470916" SOURCE="ID_1425589285" STARTARROW="None" STARTINCLINATION="-274;362;"/>
<linktarget COLOR="#f76d6f" DESTINATION="ID_405495257" ENDARROW="Default" ENDINCLINATION="-268;17;" ID="Arrow_ID_1695054562" SOURCE="ID_1851529218" STARTARROW="None" STARTINCLINATION="-225;-219;"/>
<linktarget COLOR="#e36874" DESTINATION="ID_405495257" ENDARROW="Default" ENDINCLINATION="-2189;115;" ID="Arrow_ID_127305949" SOURCE="ID_207274074" STARTARROW="None" STARTINCLINATION="928;-50;"/>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1664030240987" ID="ID_1818560319" MODIFIED="1664030267363" TEXT="Verwendung ohne Content-Renderer">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1664030268583" ID="ID_161979546" MODIFIED="1664030302799" TEXT="das ist der Regelfall">
<icon BUILTIN="yes"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1664030284814" ID="ID_1970065313" MODIFIED="1664030295541" TEXT="hierf&#xfc;r geeigneten CSS-Selector vorsehen">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1664548844498" ID="ID_1075411565" MODIFIED="1664548893098" TEXT="Label-Komponente weiterentwickeln">
<linktarget COLOR="#feebc1" DESTINATION="ID_1075411565" ENDARROW="Default" ENDINCLINATION="-16;-582;" ID="Arrow_ID_957764469" SOURCE="ID_142928718" STARTARROW="None" STARTINCLINATION="-606;54;"/>
<icon BUILTIN="hourglass"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1661703437825" ID="ID_1401386216" MODIFIED="1661703453368" TEXT="proportional Head placement">
<icon BUILTIN="hourglass"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1661703477179" ID="ID_1739233114" MODIFIED="1661703485808" TEXT="#1186 proportional Head placement">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1661703490282" ID="ID_1702374688" MODIFIED="1661703511348" TEXT="als sub-Komponente anlegen">
<icon BUILTIN="yes"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1661703520158" ID="ID_1872452150" MODIFIED="1661703524686" TEXT="Unit-Test schreiben">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1661703532196" ID="ID_170724374" MODIFIED="1661703542907" TEXT="anfangs Platzhalter-Implementierung">
<icon BUILTIN="flag-yellow"/>
</node>
<node COLOR="#435e98" CREATED="1661703645714" ID="ID_247022344" MODIFIED="1661704606196" TEXT="Entscheidung: Pixel oder zeitbasiert?">
<icon BUILTIN="help"/>
<node CREATED="1661703679376" ID="ID_1132759558" MODIFIED="1661704522137" TEXT="Pixel">
<icon BUILTIN="button_cancel"/>
<node CREATED="1661703686271" ID="ID_876601888" MODIFIED="1661704164479" TEXT="L&#xe4;nge und Fenster-Spec einheitlich in Pixeln">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      hierbei ist...
    </p>
    <p>
      <u>L&#228;nge</u>: die <i>horizontale</i>&#160;Ausdehnung in der <i>zeitartigen Dimension</i>
    </p>
    <p>
      <u>Fenster</u>: die Position und L&#228;nge eines Anzeige-Fensters im Verh&#228;ltnis zur L&#228;nge
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
<node CREATED="1661703733113" ID="ID_1280505961" MODIFIED="1661704551822" TEXT="Angaben m&#xfc;ssen angepa&#xdf;t werden">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...wannimmersich die Display-Metrik &#228;ndert (bei jeder Zoom-Anpassung!)
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#c14b62" DESTINATION="ID_844385062" ENDARROW="Default" ENDINCLINATION="192;0;" ID="Arrow_ID_418259958" STARTARROW="Default" STARTINCLINATION="192;0;"/>
<icon BUILTIN="stop-sign"/>
</node>
<node CREATED="1661703818006" ID="ID_1356134223" MODIFIED="1661703862455" TEXT="keine Verbindung zum Layoutmanager notwendig">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Naja, stimmt nicht wirklich, denn Pixel-Angaben m&#252;ssen angepa&#223;t werden, also besteht faktisch eine Verbindung
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_cancel"/>
</node>
</node>
<node CREATED="1661703682724" ID="ID_258332905" MODIFIED="1661704522143" TEXT="Zeit">
<icon BUILTIN="button_cancel"/>
<node CREATED="1661703897467" ID="ID_1062096597" MODIFIED="1661704080771" TEXT="L&#xe4;nge und Fenster-Spec in Timeline-Zeit">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      egal ob nun absolut oder relativ, aber die Lumiera Time-Koordinaten sind gemein. Das ist nicht die &#187;wall clock time&#171;
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
<node CREATED="1661704028802" ID="ID_844385062" MODIFIED="1661704576860" TEXT="Entscheidungen m&#xfc;ssen nach Layoutwechsel erneut getroffen werden">
<arrowlink COLOR="#c14b4e" DESTINATION="ID_674852170" ENDARROW="Default" ENDINCLINATION="130;0;" ID="Arrow_ID_971214477" STARTARROW="None" STARTINCLINATION="130;0;"/>
<linktarget COLOR="#c14b62" DESTINATION="ID_844385062" ENDARROW="Default" ENDINCLINATION="192;0;" ID="Arrow_ID_418259958" SOURCE="ID_1280505961" STARTARROW="Default" STARTINCLINATION="192;0;"/>
</node>
<node CREATED="1661704046831" ID="ID_1429751432" MODIFIED="1661704592099" TEXT="das Widget braucht Pixel-Angaben &#x27f9; &#xdc;bersetzungs-Mechanismus">
<icon BUILTIN="closed"/>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1661703881189" ID="ID_1847710987" MODIFIED="1661721501719" TEXT="proportional">
<icon BUILTIN="forward"/>
<node CREATED="1661704175885" ID="ID_1381922176" MODIFIED="1661704361482" TEXT="die gesamte Positionierungs-Logik arbeitet mit Verh&#xe4;ltniszahlen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...wobei der Datentyp dieser Verh&#228;ltniszahlen noch w&#228;hlbar ist
    </p>
    <ul>
      <li>
        k&#246;nnte ein Floating-point sein (float w&#252;rde eigentlich gen&#252;gen)
      </li>
      <li>
        k&#246;nnte ein <i>rational</i>&#160;sein mit kleinen Integerzahlen
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node CREATED="1661704193107" ID="ID_279484931" MODIFIED="1661704240383" TEXT="Bezugspunkt k&#xf6;nnte sein">
<icon BUILTIN="idea"/>
<node CREATED="1661704212873" ID="ID_1162803069" MODIFIED="1661704237529" TEXT="(absolut) eine Einheits-Zeit">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1661704217016" ID="ID_910021722" MODIFIED="1661704233921" TEXT="(relativ) die L&#xe4;nge des Widget">
<icon BUILTIN="forward"/>
</node>
</node>
<node CREATED="1661704403383" ID="ID_674852170" MODIFIED="1661704558666" TEXT="jeder Layoutwechsel &#xe4;ndert die relative Fenster-Spec &#x27f9; Neuauswertung">
<linktarget COLOR="#c14b4e" DESTINATION="ID_674852170" ENDARROW="Default" ENDINCLINATION="130;0;" ID="Arrow_ID_971214477" SOURCE="ID_844385062" STARTARROW="None" STARTINCLINATION="130;0;"/>
</node>
<node CREATED="1661704490787" ID="ID_1576808360" MODIFIED="1661704596118" TEXT="(nur) Client mu&#xdf; die absolute L&#xe4;nge wissen">
<icon BUILTIN="forward"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1661703561288" ID="ID_1074390800" MODIFIED="1661703581358" TEXT="endg&#xfc;ltige Implementierung">
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1661558691874" ID="ID_1119666560" MODIFIED="1661558709710" TEXT="Kontext-Anbindung planen...">
<icon BUILTIN="hourglass"/>
<node CREATED="1661558725419" ID="ID_903216053" MODIFIED="1661558736509" TEXT="Zeit/Gr&#xf6;&#xdf;en-&#xdc;bersetzung"/>
<node CREATED="1661558740744" ID="ID_629101835" MODIFIED="1661558746908" TEXT="Placement-Editor"/>
<node CREATED="1661558748136" ID="ID_450211999" MODIFIED="1661558766073" TEXT="Anbindung an ein Tangible">
<node CREATED="1661558767493" ID="ID_984314368" MODIFIED="1661558783560" TEXT="offen lassen: ist es selber ein Tangible?">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1664032772511" ID="ID_1018439357" MODIFIED="1664032782461" TEXT="Untersuchungen">
<icon BUILTIN="hourglass"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1664032818869" ID="ID_945958753" MODIFIED="1664494574785" TEXT="GTK-Interna">
<arrowlink COLOR="#4285bf" DESTINATION="ID_217473035" ENDARROW="Default" ENDINCLINATION="-989;57;" ID="Arrow_ID_1041626932" STARTARROW="None" STARTINCLINATION="260;-42;"/>
<arrowlink COLOR="#4272bf" DESTINATION="ID_969143327" ENDARROW="Default" ENDINCLINATION="-1003;96;" ID="Arrow_ID_190980327" STARTARROW="None" STARTINCLINATION="260;-42;"/>
<arrowlink COLOR="#4265bf" DESTINATION="ID_891209068" ENDARROW="Default" ENDINCLINATION="-836;28;" ID="Arrow_ID_120092077" STARTARROW="None" STARTINCLINATION="260;-42;"/>
<icon BUILTIN="hourglass"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#793f70" CREATED="1664728013606" FOLDED="true" ID="ID_1113493685" MODIFIED="1664730778937" TEXT="Performance-on-scale">
<linktarget COLOR="#675f90" DESTINATION="ID_1113493685" ENDARROW="Default" ENDINCLINATION="144;-94;" ID="Arrow_ID_314973122" SOURCE="ID_458393482" STARTARROW="None" STARTINCLINATION="-577;39;"/>
<linktarget COLOR="#652a49" DESTINATION="ID_1113493685" ENDARROW="Default" ENDINCLINATION="-1026;116;" ID="Arrow_ID_977109999" SOURCE="ID_46750178" STARTARROW="None" STARTINCLINATION="-985;55;"/>
<linktarget COLOR="#652a49" DESTINATION="ID_1113493685" ENDARROW="Default" ENDINCLINATION="-1026;116;" ID="Arrow_ID_1663742451" SOURCE="ID_499807590" STARTARROW="None" STARTINCLINATION="-985;55;"/>
<icon BUILTIN="bell"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1664730454742" ID="ID_898331208" MODIFIED="1664730461480" TEXT="#1240 evaluate performance of ElementBoxWidget">
<icon BUILTIN="flag-yellow"/>
</node>
<node CREATED="1664728161348" ID="ID_541577601" MODIFIED="1664728171859" TEXT="Speicherbedarf">
<node CREATED="1664728182417" ID="ID_787168469" MODIFIED="1664728197093" TEXT="Speichern der Maximalgr&#xf6;&#xdf;e"/>
<node CREATED="1664728197911" ID="ID_238915264" MODIFIED="1664728205283" TEXT="Speichern des vollst&#xe4;ndigen Label-Textes"/>
<node CREATED="1664728207952" ID="ID_1837798110" MODIFIED="1664728236438" TEXT="Speichern des vorhergehenden Constraints"/>
</node>
<node CREATED="1664728246927" ID="ID_502396500" MODIFIED="1664728250323" TEXT="Laufzeit">
<node CREATED="1664728261343" ID="ID_1345184412" MODIFIED="1664728285571" TEXT="Laufzeit incl Ein/Ausblenden (aller Widgets)"/>
<node CREATED="1664728287779" ID="ID_382936001" MODIFIED="1664728325578" TEXT="Laufzeit mit/ohne Pr&#xfc;fung redundanter Constraints"/>
<node CREATED="1664728326686" ID="ID_724874601" MODIFIED="1664728340360" TEXT="Laufzeit mit/ohne Pr&#xfc;fung der Maximalausdehnung"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1654445541606" ID="ID_520455096" MODIFIED="1678403536238" TEXT="Integrieren">
<icon BUILTIN="hourglass"/>
<icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1654445546655" FOLDED="true" ID="ID_1539832096" MODIFIED="1675394835906" TEXT="einfaches ElementBoxWidget...">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1654445564395" ID="ID_1890406032" MODIFIED="1675394803481" TEXT="testhalber in der HeaderPane unterbringen">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1675394806931" ID="ID_1282996631" MODIFIED="1675394828787" TEXT="funktioniert auf Anhieb"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1675394821061" ID="ID_443844677" MODIFIED="1675394826892" TEXT="scheee....">
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node COLOR="#338800" CREATED="1654445580312" ID="ID_271330163" MODIFIED="1662051966664" TEXT="testhalber an den Track-Canvas anheften">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1662051865093" ID="ID_586574609" MODIFIED="1662051953551" TEXT="Ausl&#xf6;sen via TestControll &#xd83e;&#xdc32; mark-Message">
<node CREATED="1662051911095" ID="ID_544118617" MODIFIED="1662051953551" TEXT="&quot;mark&quot;"/>
<node CREATED="1662051916686" ID="ID_1007131481" MODIFIED="1662051953551" TEXT="1.Feld: ID der Timeline"/>
<node CREATED="1662051923037" ID="ID_863517485" MODIFIED="1662051953551" TEXT="2.Feld: magischer Name &quot;box&quot;"/>
<node COLOR="#338800" CREATED="1662051939243" ID="ID_1354069914" MODIFIED="1662051953551" TEXT="funzt">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1662051893903" ID="ID_783944635" MODIFIED="1662051953551" TEXT="Impl: TrackPresenter::attachElementBox()">
<icon BUILTIN="idea"/>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1666370244648" ID="ID_306927735" MODIFIED="1675387511544" TEXT="testhalber als Effekt in Ruler legen">
<arrowlink COLOR="#b12c6e" DESTINATION="ID_613160281" ENDARROW="Default" ENDINCLINATION="-858;-29;" ID="Arrow_ID_1531249433" STARTARROW="None" STARTINCLINATION="-361;27;"/>
<icon BUILTIN="hourglass"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1675387513273" ID="ID_866696752" MODIFIED="1675387528379" TEXT="wartet auf: #1270 define CanvasHook for ruler tracks"/>
</node>
</node>
<node COLOR="#338800" CREATED="1654445594924" FOLDED="true" ID="ID_1266679575" MODIFIED="1666367207990" TEXT="Clip auf ElementBoxWidget umstellen">
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1665969365831" ID="ID_149648314" MODIFIED="1665971950293" TEXT="Design-Probleme">
<linktarget COLOR="#ff5268" DESTINATION="ID_149648314" ENDARROW="Default" ENDINCLINATION="2;21;" ID="Arrow_ID_441789889" SOURCE="ID_500624074" STARTARROW="None" STARTINCLINATION="-196;23;"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1665969380429" ID="ID_438117560" MODIFIED="1665969431276" TEXT="ElementBoxWidget ist &quot;ctor-zentrisch&quot;">
<icon BUILTIN="info"/>
</node>
<node CREATED="1665969406938" ID="ID_964851207" MODIFIED="1665969425517" TEXT="aber Diff liefert viele Aspekte erst sp&#xe4;ter">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1665969444163" ID="ID_1678945295" MODIFIED="1665969448288" TEXT="betrifft...">
<node CREATED="1665969449092" ID="ID_1852745838" MODIFIED="1665969452839" TEXT="den Clip-Namen">
<node CREATED="1665969454987" ID="ID_1388522515" MODIFIED="1665969456935" TEXT="die ID"/>
<node CREATED="1665969457547" ID="ID_1136164363" MODIFIED="1665969461166" TEXT="den lesbaren Namen"/>
</node>
<node CREATED="1665969462522" ID="ID_1851529218" MODIFIED="1665969529899">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      den <i>Medien-Typ</i>
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#f76d6f" DESTINATION="ID_405495257" ENDARROW="Default" ENDINCLINATION="-268;17;" ID="Arrow_ID_1695054562" STARTARROW="None" STARTINCLINATION="-225;-219;"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1665971884155" FOLDED="true" ID="ID_1832121467" MODIFIED="1665971971444" TEXT="ansonsten &quot;fast&quot; nichts zu tun">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1665971894646" ID="ID_1038999615" MODIFIED="1665971943555" TEXT="ElementBoxWidget als Basisklasse">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1665971906399" ID="ID_500624074" MODIFIED="1665971950292" TEXT="die ctor-DSL einbinden">
<arrowlink COLOR="#ff5268" DESTINATION="ID_149648314" ENDARROW="Default" ENDINCLINATION="2;21;" ID="Arrow_ID_441789889" STARTARROW="None" STARTINCLINATION="-196;23;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1665971952866" ID="ID_953567994" MODIFIED="1665971966677" TEXT="f&#xfc;r den size-constraint: von push auf pull umstellen">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1665971975191" FOLDED="true" ID="ID_1645965443" MODIFIED="1666286274777" TEXT="size-constraint-Code wird zu fr&#xfc;h aufgerufen">
<icon BUILTIN="broken-line"/>
<node CREATED="1665972027480" ID="ID_1481599747" MODIFIED="1665972094845">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <font color="#f12b4f"><b>ASSERTION</b></font>&#160;: widget mu&#223; bereits realized sein
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      0000001052: INFO: steam-dispatcher.cpp:301: worker_2: processCommands: +++ dispatch Command(&quot;test_fake_injectSequence_1&quot;) {exec}
    </p>
    <p>
      0000001053: INFO: steam-dispatcher.cpp:306: worker_2: processCommands: +++ --------&gt;&gt;&gt; bang!
    </p>
    <p>
      0000001055: TODO: dummy-session-connection.cpp:259: worker_2: applyCopy: build internal diagnostic data structure, apply a copy of the message
    </p>
    <p>
      0000001060: TODO: track-body.cpp:93: worker_3: setTrackName: is the track name of any relevance for the TrackBody widget?
    </p>
    <p>
      0000001061: INFO: ui-style.cpp:145: worker_3: prepareStyleContext: Body-CSS: path=window.background box.vertical box[2/3].horizontal widget[2/2] widget paned.vertical widget box.vertical notebook[1/1].frame paned.horizontal.timeline__page.timeline box.vertical.timeline__body.timeline fork.timeline__fork
    </p>
    <p>
      0000001062: INFO: ui-style.cpp:154: worker_3: prepareStyleContext: RulerCSS: path=window.background box.vertical box[2/3].horizontal widget[2/2] widget paned.vertical widget box.vertical notebook[1/1].frame paned.horizontal.timeline__page.timeline box.vertical.timeline__body.timeline fork.timeline__fork frame.timeline__ruler
    </p>
    <p>
      Clip:: hsize=25
    </p>
    <p>
      Clip:: hsize=50
    </p>
    <p>
      Clip:: hsize=25
    </p>
    <p>
      0000001085: ASSERTION: element-box-widget.cpp:327: worker_3: imposeSizeConstraint: (label_.get_realized()) ElementBoxWidget layout constraint imposed on widget not yet realized by GTK
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
<node COLOR="#435e98" CREATED="1665972100310" ID="ID_1747925228" MODIFIED="1666285341589" TEXT="seltsam? in den bisherigen Experimenten war das nie ein Problem">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...denn ich ging von der Annahme aus, da&#223; dieser Code erst im nachfolgenden draw()-Event aufgerufen wird; und diese Annahme hatte sich bisher stets best&#228;tigt, obwohl im ctor von ElementBox direkt ein show_all() aufgerufen wird
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="help"/>
<node CREATED="1666285192130" ID="ID_1871565379" MODIFIED="1666285218266" TEXT="diese Experimente haben nur ein freistehendes Widget erstellt"/>
<node CREATED="1666285219022" ID="ID_302141230" MODIFIED="1666285226609" TEXT="und dann sofort angezeigt"/>
<node CREATED="1666285228583" ID="ID_1205342322" MODIFIED="1666285243030" TEXT="und dann erst durch das n&#xe4;chste Experiment vergr&#xf6;&#xdf;ert oder verkleinert"/>
<node CREATED="1666285244355" ID="ID_1478837494" MODIFIED="1666285373268" TEXT="insofern waren diese Experimente noch zu vereinfacht...">
<arrowlink COLOR="#bc8db2" DESTINATION="ID_616953706" ENDARROW="Default" ENDINCLINATION="109;-4;" ID="Arrow_ID_1798465605" STARTARROW="None" STARTINCLINATION="269;13;"/>
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1665972186386" ID="ID_1077613088" MODIFIED="1666286272226" TEXT="per Debugger zu untersuchen">
<icon BUILTIN="yes"/>
<node CREATED="1666053399781" ID="ID_1669190642" MODIFIED="1666053539901" TEXT="schwierig....">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...kann nicht recht erkennen, woher der call kommt.
    </p>
    <p>
      Klar ist nur, die Objekte sind schon konstruiert aber die neue Timeline noch nicht angezeigt; genauer kann man sogar sagen, der Fehler tritt erst auf, wenn das GUI sichtbar werden soll, denn wenn ich sofort in den Konstruktoren Breakpoints setze, und damit dann zum Eclipse-Fenster wechsle, tritt die AssertionFailure nicht auf, solange bis man dem Lumiera-Fenster wieder den Fokus gibt
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1666284884372" ID="ID_1055383793" MODIFIED="1666285096886">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      liegt an der <i>inkrementellen Natur</i>&#160;der Layout-Zuteilung
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1666284904368" ID="ID_1996100999" MODIFIED="1666284943639" TEXT="nach Erstellen der Clips liegen mehrere Events in der Queue"/>
<node CREATED="1666284945010" ID="ID_1390825899" MODIFIED="1666285354320" TEXT="das folgt aus dem schrittweisen Aufspielen des Diff...">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1666284979905" ID="ID_435939391" MODIFIED="1666284988311" TEXT="der Diff wird auf Einmal gesendet"/>
<node CREATED="1666284988711" ID="ID_1944889144" MODIFIED="1666284996640" TEXT="und auch auf Einmal in den UI-Thread zugestellt"/>
<node CREATED="1666284997558" ID="ID_929855789" MODIFIED="1666285046065" TEXT="aber das Anwenden estellt erst halb-leere Container"/>
<node CREATED="1666285046869" ID="ID_925433658" MODIFIED="1666285057773" TEXT="setzt dann Zeiten und Namen"/>
<node CREATED="1666285058499" ID="ID_1175866676" MODIFIED="1666285084060">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      und danach feuert der <i>StructuralChange</i>-Listener
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1666285269465" ID="ID_616953706" MODIFIED="1666285373268" TEXT="&#x27f9; Konsequenz: draw-Events gefolgt von mehreren resize-Events">
<linktarget COLOR="#bc8db2" DESTINATION="ID_616953706" ENDARROW="Default" ENDINCLINATION="109;-4;" ID="Arrow_ID_1798465605" SOURCE="ID_1478837494" STARTARROW="None" STARTINCLINATION="269;13;"/>
</node>
</node>
<node CREATED="1666286169242" ID="ID_1143284469" MODIFIED="1666286222589" TEXT="Einschr&#xe4;nkung kann wegfallen">
<icon BUILTIN="yes"/>
<node CREATED="1666286191972" ID="ID_616576732" MODIFIED="1666286216556" TEXT="ASSERTION gar nicht notwendig">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1666286198651" ID="ID_513481742" MODIFIED="1666286219025" TEXT="der Code funktioniert n&#xe4;mlich auch im halb-realisierten Zustand">
<icon BUILTIN="info"/>
</node>
<node CREATED="1666286233294" ID="ID_1774329269" MODIFIED="1666286266184" TEXT="visible &#x27f9; liefert Gr&#xf6;&#xdf;e | not visible &#x27f9; Gr&#xf6;&#xdf;e = 0">
<icon BUILTIN="forward"/>
</node>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1666286511402" FOLDED="true" ID="ID_901100748" MODIFIED="1666308082637" TEXT="Constraint-handling versagt u.U f&#xfc;r das Label">
<icon BUILTIN="broken-line"/>
<node COLOR="#435e98" CREATED="1666286569009" ID="ID_571211770" MODIFIED="1666367130923" TEXT="Beispiel: Clip-1 : Duration 1s">
<icon BUILTIN="forward"/>
<node CREATED="1666286612844" ID="ID_1960027917" MODIFIED="1666286659485" TEXT="die Icons werden ausgeblendet">
<icon BUILTIN="broken-line"/>
</node>
<node CREATED="1666286619572" ID="ID_111104208" MODIFIED="1666286649529" TEXT="aber das Text-Label ist sichtbar">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1666286629675" ID="ID_178314716" MODIFIED="1666286646133" TEXT="und der Text schreibt &#xfc;ber das Ende hinaus">
<icon BUILTIN="broken-line"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1666286588511" ID="ID_1014622465" MODIFIED="1666308061322" TEXT="Untersuchung">
<icon BUILTIN="yes"/>
<node CREATED="1666307200947" ID="ID_712219112" MODIFIED="1666307460841" TEXT="Verdacht: setCaption() manipuliert visibility">
<icon BUILTIN="button_cancel"/>
<node CREATED="1666307233042" ID="ID_1411306141" MODIFIED="1666307262873" TEXT="...und w&#xfc;rde dadurch das differenzierte, partielle Verbergen st&#xf6;ren"/>
<node CREATED="1666307264414" ID="ID_594632089" MODIFIED="1666307445275" TEXT="&#x27f9; sollte den tats&#xe4;chlichen visibility-Status wiederherstellen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      nach dem Setzen eines neuen Label-Texts m&#252;ssen wir die L&#228;nge des IDLabel erneut ausmessen, und dazu m&#252;ssen alle seine Komponenten vorr&#252;bergehend visible() gesetzt werden; hatte bisher darauf gesetzt, da&#223; der size-constraint-Algo dann von selber wieder auf den richtigen Status kommt...
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1666307446440" ID="ID_165108662" MODIFIED="1666307458008" TEXT="aber das bewirkt rein gar nix">
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1666307466288" ID="ID_1621773970" MODIFIED="1666307492593" TEXT="Hilfe... was passiert hier &#x2014; Kontrollverlust">
<icon BUILTIN="smily_bad"/>
<node CREATED="1666307500030" ID="ID_999771663" MODIFIED="1666307518501" TEXT="alle Caption-Setter auskommentiert"/>
<node CREATED="1666307519219" ID="ID_757987414" MODIFIED="1666307528695" TEXT="der komische Text ist immer noch da"/>
<node CREATED="1666307529508" ID="ID_990701944" MODIFIED="1666307578878" TEXT="und auch der Size-Constraint ist sonderbar(falsch)">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      H&#246;he nur 16px, obwohl doch das Icon mindestens 18px braucht (incl.Border), und das get_required_height() diesen Wert eigentlich liefern sollte
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#db10ad" CREATED="1666307585634" ID="ID_1666781450" MODIFIED="1666307620469" TEXT="AUA!!">
<icon BUILTIN="smiley-oh"/>
<node CREATED="1666307623237" ID="ID_1740179483" MODIFIED="1666307643118" TEXT="ClipWidget ruft immer noch Frame::set_label() auf"/>
<node CREATED="1666307644363" ID="ID_1158991887" MODIFIED="1666307653429" TEXT="ja in der Tat, die Funktion ist noch sichtbar"/>
<node CREATED="1666307654257" ID="ID_662041930" MODIFIED="1666307709729" TEXT="sie schie&#xdf;t unser tolles Custom IDLabel ins Nirvana">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      und schaltet den Frame wieder zur&#252;ck auf ein Text-Label, das nat&#252;rlich dann in keinster Weise der size-Constraint-Kontrolle unterliegt
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1666308020848" ID="ID_1559858341" MODIFIED="1666308033677" TEXT="puh das war aber gut versteckt">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
<node COLOR="#338800" CREATED="1666308048044" ID="ID_1668793880" MODIFIED="1666308056987" TEXT="dann besser diese Setter &#xfc;berdecken">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1666308065995" ID="ID_1843697802" MODIFIED="1666308081223" TEXT="Fazit: hat gar nicht versagt...">
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1666286684491" FOLDED="true" ID="ID_825575865" MODIFIED="1666367282400" TEXT="Clip-Dragging funktioniert nur eingeschr&#xe4;nkt">
<icon BUILTIN="broken-line"/>
<node CREATED="1666286711357" ID="ID_118648001" MODIFIED="1666286724325" TEXT="wohl ein Event-Handling-Problem">
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#435e98" CREATED="1666286731340" ID="ID_306299052" MODIFIED="1666367153546" TEXT="Dragging auf den Container spricht &#xfc;berhaupt nicht an">
<icon BUILTIN="broken-line"/>
<node COLOR="#435e98" CREATED="1666286814794" ID="ID_507527806" MODIFIED="1666367151520" TEXT="anscheinend wird der Event-Handler gar nicht aufgerufen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...den eingebauten Debug-Meldungen zufolge zu urteilen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1666313907945" ID="ID_2075291" MODIFIED="1666314192593" TEXT="man mu&#xdf; da wohl erst etwas einrichten">
<arrowlink COLOR="#7788e0" DESTINATION="ID_775914278" ENDARROW="Default" ENDINCLINATION="-1021;-87;" ID="Arrow_ID_632223489" STARTARROW="None" STARTINCLINATION="-1049;77;"/>
<node CREATED="1666315741368" ID="ID_581715301" MODIFIED="1666315759423" TEXT="und die Voraussetzung: man braucht ein zugeordnetes GdkWindow"/>
<node CREATED="1666315760552" ID="ID_491760379" MODIFIED="1666315831393" TEXT="Diagnose: Gtk::Frame hat kein Window">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      get_has_window()&#160;&#160;&#10132; <font face="Monospaced" color="#6c13de">false</font>
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#435e98" CREATED="1666316633184" ID="ID_387720838" MODIFIED="1666367275837" TEXT="&#x27f9; Konsequenz: EventBox im ElementBoxWidget fest einrichten">
<arrowlink COLOR="#526674" DESTINATION="ID_519294969" ENDARROW="Default" ENDINCLINATION="1268;576;" ID="Arrow_ID_860609088" STARTARROW="None" STARTINCLINATION="-1409;-62;"/>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1666286786740" ID="ID_100457080" MODIFIED="1666286890547" TEXT="Dragging auf die Buttons nur mit mittlerer/rechter Maustaste">
<icon BUILTIN="idea"/>
<node CREATED="1666286833126" ID="ID_645351939" MODIFIED="1666286935400" TEXT="bei Links-Klick spricht der Event-Handler gar nicht an">
<icon BUILTIN="info"/>
</node>
<node CREATED="1666286902148" ID="ID_716610692" MODIFIED="1666286932721" TEXT="das ist aber genau so korrekt">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      per default greift sich ein Button ja den links-Klick, und das soll auch so sein!
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#338800" CREATED="1666367167006" ID="ID_314408274" MODIFIED="1666367197804" TEXT="allein das Einf&#xfc;hren der Gtk::EventBox hat dieses Problem komplett und sauber gel&#xf6;st">
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node COLOR="#338800" CREATED="1666452411624" ID="ID_998825618" MODIFIED="1675897301157" TEXT="Display-Metrik im TimelineLayout verankern">
<arrowlink COLOR="#525d93" DESTINATION="ID_1827001710" ENDARROW="Default" ENDINCLINATION="873;-869;" ID="Arrow_ID_892468806" STARTARROW="None" STARTINCLINATION="-1738;113;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1666367210627" ID="ID_922603771" MODIFIED="1666367245412" TEXT="Umstellung erfolgreich">
<icon BUILTIN="button_ok"/>
<node CREATED="1666367222167" ID="ID_130129636" MODIFIED="1666367225553" TEXT="sieht sauber aus"/>
<node CREATED="1666367226358" ID="ID_967912847" MODIFIED="1666367235416" TEXT="reagiert korrekt auf L&#xe4;ngenbeschr&#xe4;nkung"/>
<node CREATED="1666367236236" ID="ID_1153020202" MODIFIED="1666367243679" TEXT="erzeugt keinerlei Assertions mehr"/>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1661695361415" ID="ID_1615822639" MODIFIED="1661695374805" TEXT="Integration mit Pop-up-Men&#xfc;/Framework">
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1666369999741" ID="ID_1289871763" MODIFIED="1666370009341" TEXT="weiter ausbauen...">
<icon BUILTIN="hourglass"/>
<node CREATED="1666370017462" ID="ID_1120283579" MODIFIED="1666370022975" TEXT="CSS-Styles steuern">
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1666370024371" ID="ID_1853406335" MODIFIED="1666370067320" TEXT="definierte CSS-Selektoren">
<icon BUILTIN="info"/>
<node CREATED="1664669909170" HGAP="54" ID="ID_353257786" MODIFIED="1664670075595" TEXT="frame#element.elementbox" VSHIFT="-10">
<edge COLOR="#493d57" STYLE="linear"/>
<node CREATED="1664670077106" ID="ID_23637100" MODIFIED="1664670080590" TEXT="box#idlabel">
<node CREATED="1664670436370" ID="ID_169682858" MODIFIED="1664670440905" TEXT=".idlabel"/>
<node CREATED="1664671305061" ID="ID_1650353361" MODIFIED="1664671309328" TEXT="Kinder...">
<node CREATED="1664671310329" ID="ID_96245401" MODIFIED="1664671312682" TEXT=".idlabel__icon"/>
<node CREATED="1664671313875" ID="ID_858160172" MODIFIED="1664671319782" TEXT=".idlabel__menu"/>
<node CREATED="1664671320674" ID="ID_19239170" MODIFIED="1664671325085" TEXT=".idlabel__name"/>
</node>
<node CREATED="1664670133617" ID="ID_1907146399" MODIFIED="1664670140958" TEXT=".elementbox__idlabel">
<node CREATED="1664670252291" ID="ID_423384579" MODIFIED="1664670271427" TEXT="Achtung: nur wenn in einer ElementBox">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
<node CREATED="1664670174435" ID="ID_54680565" MODIFIED="1664670179225" TEXT="zus&#xe4;tzlich...">
<node CREATED="1664670194762" ID="ID_1459999893" MODIFIED="1664670202630" TEXT=".elementbox--video"/>
<node CREATED="1664670203554" ID="ID_471735544" MODIFIED="1664670210996" TEXT=".elementbox--audio"/>
</node>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1480639267600" ID="ID_671046048" MODIFIED="1557498707223" TEXT="Clip"/>
<node CREATED="1480639365715" ID="ID_743867283" MODIFIED="1557498707223" TEXT="Bin"/>
</node>
<node CREATED="1480639327169" HGAP="36" ID="ID_700485676" MODIFIED="1557498707223" TEXT="Root" VSHIFT="-2">
<linktarget COLOR="#3b4877" DESTINATION="ID_700485676" ENDARROW="Default" ENDINCLINATION="430;-874;" ID="Arrow_ID_454081114" SOURCE="ID_362749694" STARTARROW="Default" STARTINCLINATION="-170;534;"/>
<node CREATED="1504459308239" HGAP="47" ID="ID_247672235" MODIFIED="1557498707223" TEXT="Assets" VSHIFT="-26">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
</node>
<node CREATED="1504459300720" ID="ID_1860702149" MODIFIED="1557498707223" TEXT="Einstellungen"/>
<node CREATED="1504459315798" ID="ID_888900532" MODIFIED="1557498707223" TEXT="Zugang zum Model">
<arrowlink COLOR="#3c5879" DESTINATION="ID_1847844548" ENDARROW="Default" ENDINCLINATION="-41;-263;" ID="Arrow_ID_1586720666" STARTARROW="None" STARTINCLINATION="41;-1;"/>
</node>
</node>
<node CREATED="1476376913589" HGAP="42" ID="ID_1887326939" MODIFIED="1557498707223" TEXT="Timeline" VSHIFT="-17">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1477599995452" FOLDED="true" HGAP="10" ID="ID_97568136" MODIFIED="1557498707223" TEXT="Bestandteile" VSHIFT="-4">
<icon BUILTIN="info"/>
<node CREATED="1476377043180" ID="ID_1179709828" MODIFIED="1557498707223" TEXT="Head">
<node CREATED="1476377067729" ID="ID_896843893" MODIFIED="1557498707223" TEXT="Patchbay"/>
<node CREATED="1476377071072" ID="ID_745594295" MODIFIED="1557498707223" TEXT="in-sync with body"/>
</node>
<node CREATED="1476377048043" ID="ID_994927647" MODIFIED="1557498707223" TEXT="Body">
<node CREATED="1476377078839" ID="ID_331565543" MODIFIED="1557498707223" TEXT="the Fork">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
<node CREATED="1476377087942" ID="ID_26794000" MODIFIED="1557498707223" TEXT="expandable"/>
</node>
<node CREATED="1476377059386" ID="ID_363001687" MODIFIED="1557498707223" TEXT="Control">
<node CREATED="1476377117290" ID="ID_179386424" MODIFIED="1557498707223" TEXT="scolling"/>
<node CREATED="1480694668090" ID="ID_792729651" MODIFIED="1557498707223" TEXT="TimelineWidget">
<node CREATED="1480694675624" ID="ID_1512443419" MODIFIED="1557498707223" TEXT="Einstiegspunkt"/>
<node CREATED="1480694679232" ID="ID_1344733448" MODIFIED="1557498707223">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      sets f&#252;r <b>eine feste</b>&#160;session::Timeline
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1480694854057" HGAP="32" ID="ID_577309407" MODIFIED="1557498707223" TEXT="TimelinePane" VSHIFT="7">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1480694860696" ID="ID_1847844548" MODIFIED="1557498707223" TEXT="h&#xe4;ngt am Model-Root">
<linktarget COLOR="#5d6386" DESTINATION="ID_1847844548" ENDARROW="Default" ENDINCLINATION="35;-168;" ID="Arrow_ID_1483178089" SOURCE="ID_827558797" STARTARROW="Default" STARTINCLINATION="-2;95;"/>
<linktarget COLOR="#3c5879" DESTINATION="ID_1847844548" ENDARROW="Default" ENDINCLINATION="-41;-263;" ID="Arrow_ID_1586720666" SOURCE="ID_888900532" STARTARROW="None" STARTINCLINATION="41;-1;"/>
<icon BUILTIN="yes"/>
<node CREATED="1504459404130" ID="ID_1800175742" MODIFIED="1557498707223" TEXT="InteractionDirector verwaltet Platzhalter"/>
<node CREATED="1504459419584" ID="ID_1339072222" MODIFIED="1557498707223" TEXT="in der TimelinePane leben die zugeh&#xf6;rigen Widgets"/>
<node CREATED="1504459462330" ID="ID_791513915" MODIFIED="1557498707223">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Verwaltung <i>autmatisch</i>&#160;via ViewLocator -&gt; PanelLocator
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1480694897443" ID="ID_402490324" MODIFIED="1557498707223" TEXT="verwaltet die Timelines"/>
<node CREATED="1480694918056" ID="ID_789731200" MODIFIED="1557498707223">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      es gibt eine <i>EmptyTimeline</i>
    </p>
  </body>
</html></richcontent>
<node CREATED="1480694930990" ID="ID_1289595423" MODIFIED="1557498707223" TEXT="interface == Widget"/>
</node>
</node>
<node CREATED="1480694624879" HGAP="37" ID="ID_1678741068" MODIFIED="1557498707223" TEXT="TimelineController" VSHIFT="21">
<node CREATED="1480694630302" ID="ID_10965216" MODIFIED="1557498707223" TEXT="hat das Sagen"/>
<node CREATED="1480694652219" ID="ID_1232910852" MODIFIED="1557498707223" TEXT="Widget wird passiv"/>
</node>
</node>
</node>
<node CREATED="1477600006370" FOLDED="true" ID="ID_1328755612" MODIFIED="1557498707223" TEXT="Konzept">
<icon BUILTIN="info"/>
<node CREATED="1504387810549" ID="ID_599967369" MODIFIED="1557498707223" TEXT="Identit&#xe4;t">
<node CREATED="1504387825051" ID="ID_281718898" MODIFIED="1557498707223" TEXT="eine View pro Model-Komponente"/>
<node CREATED="1504387834601" ID="ID_798058080" MODIFIED="1557498707223" TEXT="Slave-Views kaskadiert">
<icon BUILTIN="idea"/>
<node CREATED="1504387844840" ID="ID_1591380172" MODIFIED="1557498707223" TEXT="TimelineView verwaltet eigene Sklaven"/>
<node CREATED="1504387856919" ID="ID_198003145" MODIFIED="1557498707224" TEXT="nach au&#xdf;en hin transparent"/>
<node CREATED="1504387865853" ID="ID_519067212" MODIFIED="1557498707224" TEXT="delegiert automatisch"/>
</node>
<node CREATED="1504387896417" ID="ID_1112793361" MODIFIED="1557498707224" TEXT="EntryID&lt;Timeline&gt;"/>
</node>
<node CREATED="1477600020776" ID="ID_955842824" MODIFIED="1557498707224" TEXT="Einteilung"/>
<node CREATED="1477600027128" ID="ID_1592196047" MODIFIED="1557498707224" TEXT="Handhabung">
<node CREATED="1477600041886" ID="ID_1241593972" MODIFIED="1557498707224" TEXT="User"/>
<node CREATED="1477600044069" ID="ID_217967290" MODIFIED="1557498707224" TEXT="technisch">
<node COLOR="#435e98" CREATED="1477600126514" ID="ID_1433799303" MODIFIED="1561827465248" TEXT="grunds&#xe4;tzlich....">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1477600134217" ID="ID_1352260964" MODIFIED="1576282358100" TEXT="wie viel selber machen?">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Frage ist, wie viel des Verhaltens programmieren wir selber explizit aus,
    </p>
    <p>
      und welchen Teil des Verhaltens &#252;berlassen wir GTK
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="help"/>
</node>
<node CREATED="1477600216950" ID="ID_1935952349" MODIFIED="1518487921079" TEXT="focus">
<node CREATED="1477600231756" ID="ID_1744616929" MODIFIED="1518487921079" TEXT="Tabbing">
<node CREATED="1477600258865" ID="ID_112614309" MODIFIED="1518487921079" TEXT="GTK &#xfc;berlassen">
<icon BUILTIN="help"/>
</node>
<node CREATED="1477600275118" ID="ID_1701392398" MODIFIED="1518487921079" TEXT="Ordnung explizit setzen">
<icon BUILTIN="help"/>
</node>
<node CREATED="1477600285685" ID="ID_195435447" MODIFIED="1518487921079" TEXT="effektiv unterbinden">
<icon BUILTIN="help"/>
</node>
</node>
<node CREATED="1477600234036" ID="ID_957445675" MODIFIED="1518487921079" TEXT="Navigation">
<node CREATED="1477600335934" ID="ID_1021991791" MODIFIED="1518487921079" TEXT="r&#xe4;umliche Metapher"/>
<node CREATED="1477600353036" ID="ID_529949426" MODIFIED="1518487921079" TEXT="brauche Orts-Repr&#xe4;sentation">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node CREATED="1477600385264" ID="ID_734925174" MODIFIED="1518487921079" TEXT="Darstellung">
<node CREATED="1477600397934" ID="ID_224014088" MODIFIED="1518487921079" TEXT="GTK alles geben">
<icon BUILTIN="help"/>
</node>
<node CREATED="1477600402110" ID="ID_375405149" MODIFIED="1518487921079" TEXT="nur eine aktuelle Auswahl">
<icon BUILTIN="help"/>
</node>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1541858017069" HGAP="7" ID="ID_1165638730" MODIFIED="1541858026121" TEXT="Fazit" VSHIFT="5">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node CREATED="1541858031423" ID="ID_1183173385" MODIFIED="1576282358100">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <i>Standard</i>&#160;UI-Mechanik &#252;berlassen wir GTK
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...und das hei&#223;t, wir betreiben ggfs sogar erheblichen Aufwand,
    </p>
    <p>
      um Standard-Mechanik auch &#252;ber die Standard-Mechanismen abzubilden.
    </p>
    <p>
      Aus Gr&#252;nden der Konsistenz und Zukunftsf&#228;higkeit
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1541858088132" ID="ID_303565989" MODIFIED="1576282358099">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      unser <b>InteractionControl</b>&#160;ist eine Zwischenschicht
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      InteractionControl
    </p>
    <ul>
      <li>
        ist ein eigenst&#228;ndiges Framework in der Obhut des InteractionDirector
      </li>
      <li>
        lauscht und empf&#228;ngt die Benutzer-Events zweiten Grades (nicht absolut low-level Pixel und Mausbewegung)
      </li>
      <li>
        erzeugt Trigger, auf die die normale UI-Mechanik reagiert (z.B. setzt den Fokus, scrollt)
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1477600431489" ID="ID_741336406" MODIFIED="1561827465248" TEXT="gtk::Layout">
<icon BUILTIN="forward"/>
<node CREATED="1477600442792" ID="ID_143840935" MODIFIED="1518487921079" TEXT="ist das offizielle Canvas-Control"/>
<node CREATED="1477600450463" ID="ID_293636936" MODIFIED="1518487921079" TEXT="scheint sehr m&#xe4;chtig"/>
<node CREATED="1477600454470" ID="ID_1255426760" MODIFIED="1518487921079" TEXT="ist ein gtk::Container"/>
</node>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1479678484210" FOLDED="true" ID="ID_1561971595" MODIFIED="1557498707224" TEXT="Struktur">
<icon BUILTIN="pencil"/>
<node CREATED="1479678496272" ID="ID_807567871" LINK="file:///home/hiv/devel/lumi/wiki/renderengine.html#GuiTimelineWidgetStructure" MODIFIED="1557498707224" TEXT="Analyse">
<node CREATED="1479678503071" ID="ID_806149006" MODIFIED="1576282358098" TEXT="Grid bringt nix">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Das war zwar schon meine Bauchgef&#252;hl,
    </p>
    <p>
      habe aber sicherheitshalber diese Analyse nochmal gemacht.
    </p>
    <p>
      Details im&#160;&#160;TiddlyWiki....
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1479678634213" ID="ID_432405176" MODIFIED="1557498707224" TEXT="rekursive Struktur schaffen">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1479678509822" ID="ID_915690336" MODIFIED="1557498707224" TEXT="Scrolling ist notwendig speziell"/>
<node CREATED="1479678717961" ID="ID_946163885" MODIFIED="1666448945214" TEXT="ist ein top-Level-Widget">
<node CREATED="1479678723576" ID="ID_666987913" MODIFIED="1557498707224" TEXT="Layout Grundmuster: zweigeteilt"/>
<node CREATED="1479678736655" ID="ID_1313901406" MODIFIED="1666449894104" TEXT="Service-Interface: DisplayManager">
<icon BUILTIN="idea"/>
<node CREATED="1666449011536" ID="ID_1899624895" MODIFIED="1666449022436" TEXT="gesteuert vom TimelineController"/>
<node CREATED="1666448989358" ID="ID_975440536" MODIFIED="1666450191353" TEXT="Hintergrund-Implementierung: TimelineLayout">
<arrowlink COLOR="#4c445e" DESTINATION="ID_426582453" ENDARROW="Default" ENDINCLINATION="-16;-29;" ID="Arrow_ID_1677833273" STARTARROW="None" STARTINCLINATION="-80;5;"/>
</node>
<node CREATED="1666449028556" ID="ID_1698685222" MODIFIED="1666449045090" TEXT="Koordiniert die Anzeige f&#xfc;r die ganze TimelinePane"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1666449046546" ID="ID_1275285489" MODIFIED="1666449073667" TEXT="(davon kann es aber mehrere geben)">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      also bitte nicht mit statischen Globals arbeiten!
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
</node>
<node CREATED="1480723110777" HGAP="24" ID="ID_1197860604" MODIFIED="1679088318143" TEXT="Kontrollstruktur" VSHIFT="7">
<icon BUILTIN="pencil"/>
<icon BUILTIN="hourglass"/>
<node CREATED="1480723136861" ID="ID_839909208" MODIFIED="1561151251774" TEXT="Einstiegspunkt">
<arrowlink COLOR="#8d8ba5" DESTINATION="ID_1295897045" ENDARROW="Default" ENDINCLINATION="534;-456;" ID="Arrow_ID_150397161" STARTARROW="None" STARTINCLINATION="440;114;"/>
<node CREATED="1666449980712" ID="ID_1809581731" MODIFIED="1666450343013" TEXT="TimelinePane erzeugt...">
<arrowlink COLOR="#3f3a50" DESTINATION="ID_420419439" ENDARROW="Default" ENDINCLINATION="-47;-3;" ID="Arrow_ID_970542864" STARTARROW="None" STARTINCLINATION="-37;0;"/>
</node>
<node CREATED="1480723144188" HGAP="31" ID="ID_420419439" MODIFIED="1666450343013" TEXT="TimelineWidget" VSHIFT="10">
<linktarget COLOR="#3f3a50" DESTINATION="ID_420419439" ENDARROW="Default" ENDINCLINATION="-47;-3;" ID="Arrow_ID_970542864" SOURCE="ID_1809581731" STARTARROW="None" STARTINCLINATION="-37;0;"/>
<node CREATED="1666450105721" ID="ID_426582453" MODIFIED="1666450189897" TEXT="unique-ptr &#x2794; TimelineLayout">
<linktarget COLOR="#4c445e" DESTINATION="ID_426582453" ENDARROW="Default" ENDINCLINATION="-16;-29;" ID="Arrow_ID_1677833273" SOURCE="ID_975440536" STARTARROW="None" STARTINCLINATION="-80;5;"/>
</node>
<node CREATED="1666450198571" ID="ID_24486297" MODIFIED="1666450207211" TEXT="unique-ptr &#x2794; TimelineController">
<node CREATED="1666450210672" ID="ID_1592122110" MODIFIED="1666450285747" TEXT="&#x2259;Tangible"/>
<node CREATED="1666450215299" ID="ID_989517522" MODIFIED="1666450222555" TEXT="h&#xe4;llt Sub-Collections">
<node CREATED="1666450231766" ID="ID_1034848356" MODIFIED="1666450235961" TEXT="markers_"/>
<node CREATED="1666450236790" ID="ID_1918436254" MODIFIED="1666450269863" TEXT="fork_ (&#x2254;Tracks)"/>
</node>
</node>
</node>
</node>
<node CREATED="1480723200765" ID="ID_1498754065" MODIFIED="1557498707224" TEXT="aktiv">
<node CREATED="1480723223938" ID="ID_1057816659" MODIFIED="1557498707224" TEXT="UI-Mechanik">
<node CREATED="1480723246207" ID="ID_988556037" MODIFIED="1557498707224" TEXT="Scrollen"/>
<node CREATED="1480723270492" ID="ID_1057899601" MODIFIED="1557498707224" TEXT="Zoomen"/>
<node CREATED="1480723288521" ID="ID_238022948" MODIFIED="1557498707224" TEXT="Navigieren">
<node CREATED="1480723291697" ID="ID_486282572" MODIFIED="1557498707224" TEXT="delegiert"/>
<node CREATED="1480723296128" ID="ID_681787776" MODIFIED="1557498707224" TEXT="timeline::NavigatorWidget"/>
</node>
<node CREATED="1480723797453" ID="ID_451406554" MODIFIED="1557498707224" TEXT="Benachrichtigungen"/>
</node>
<node CREATED="1480723989315" ID="ID_1314277524" MODIFIED="1557498707224" TEXT="zentral">
<node CREATED="1480724166868" ID="ID_1338884424" MODIFIED="1557498707224" TEXT="Struktur&#xe4;nderung">
<node CREATED="1480724385214" ID="ID_1913904871" MODIFIED="1557498707224" TEXT="DiffMutable bieten">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1480724171371" ID="ID_410013238" MODIFIED="1557498707224" TEXT="Struktur&#xe4;nderung vorbereiten">
<node CREATED="1480724215437" ID="ID_1953691654" MODIFIED="1557498707224" TEXT="Kontextmen&#xfc;"/>
<node CREATED="1480724317120" ID="ID_1898649980" MODIFIED="1557498707224" TEXT="Fokus + Befehl / Taste"/>
<node CREATED="1480724346548" ID="ID_200646693" MODIFIED="1557498707224" TEXT="markieren + Kommando schicken">
<icon BUILTIN="forward"/>
</node>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1480724417722" HGAP="55" ID="ID_940232384" MODIFIED="1557498707224" TEXT="drei M&#xf6;glichkeiten" VSHIFT="5">
<icon BUILTIN="forward"/>
<node CREATED="1480724450958" FOLDED="true" ID="ID_493402962" MODIFIED="1561827465249" TEXT="Widget is Tangible">
<icon BUILTIN="button_cancel"/>
<node CREATED="1480724706739" ID="ID_1043502336" MODIFIED="1518487921080" TEXT="kann dann direkt Notifications implementieren"/>
<node CREATED="1480724724585" ID="ID_576219568" MODIFIED="1518487921080" TEXT="mu&#xdf; f&#xfc;r alle Struktur&#xe4;nderungen delegieren"/>
<node CREATED="1480724738583" ID="ID_403933116" MODIFIED="1518487921080" TEXT="Achtung: Tangible is noncopyable">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1480724761876" ID="ID_335451126" MODIFIED="1576282358098" TEXT="wegen BusTerm">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      braucht feste Speicher-Addresse
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1480724781801" ID="ID_198046255" MODIFIED="1518487921080" TEXT="folglich: nicht in STL-Container">
<icon BUILTIN="stop-sign"/>
</node>
</node>
</node>
<node CREATED="1480724461860" ID="ID_865875607" MODIFIED="1561827465249" TEXT="Controller is Tangible">
<linktarget COLOR="#1017b1" DESTINATION="ID_865875607" ENDARROW="Default" ENDINCLINATION="-67;4;" ID="Arrow_ID_1321400081" SOURCE="ID_1683703083" STARTARROW="Default" STARTINCLINATION="-78;4;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1480724851312" ID="ID_1653680733" MODIFIED="1576282358097" TEXT="erzeugt R&#xfc;ckbezug f&#xfc;r Notifications">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ..d.h. der Controller mu&#223; wieder auf das Widget zugreifen
    </p>
    <p>
      und sei es auch blo&#223; &#252;ber ein Interface!
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1480724910096" ID="ID_874781354" MODIFIED="1518487921080" TEXT="kann direkt das View-Modell manipulieren"/>
<node CREATED="1480724927814" ID="ID_1912287440" MODIFIED="1518487921080" TEXT="ist nicht direkt erreichbar">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1480724935397" ID="ID_1279073903" MODIFIED="1518487921080" TEXT="Modell-Vater mu&#xdf; DiffMutable sehen">
<arrowlink COLOR="#2817aa" DESTINATION="ID_550796340" ENDARROW="Default" ENDINCLINATION="129;0;" ID="Arrow_ID_1199115828" STARTARROW="None" STARTINCLINATION="129;0;"/>
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1480724468283" ID="ID_1683703083" MODIFIED="1561827465250" TEXT="expose DiffMutable">
<arrowlink COLOR="#1017b1" DESTINATION="ID_865875607" ENDARROW="Default" ENDINCLINATION="-67;4;" ID="Arrow_ID_1321400081" STARTARROW="Default" STARTINCLINATION="-78;4;"/>
<icon BUILTIN="idea"/>
<node CREATED="1480724983774" ID="ID_845297603" MODIFIED="1518487921080" TEXT="hei&#xdf;t: Manipulation au&#xdf;erhalb des Diff-Systems"/>
<node CREATED="1480725000029" ID="ID_1586514211" MODIFIED="1518487921080" TEXT="wir steigen stets auf Ebene einer Timeline ein"/>
<node CREATED="1480725012731" ID="ID_9332776" MODIFIED="1576282358097">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <i>aber:</i>&#160;Binding im Diff-System durchaus m&#246;glich
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...denn:
    </p>
    <p>
      das Diff-System verlangt nicht, da&#223; Kinder in der Collection auch Tangible sind.
    </p>
    <p>
      Es verlangt nur
    </p>
    <ul>
      <li>
        da&#223; wir wissen, wie wir Kinder machen
      </li>
      <li>
        da&#223; wir f&#252;r ein gegebenes Kind ein DiffMutable beschaffen k&#246;nnen
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1480725106478" ID="ID_550796340" MODIFIED="1518487921080" TEXT="effektiv auch die L&#xf6;sung f&#xfc;r Alternative-2">
<linktarget COLOR="#2817aa" DESTINATION="ID_550796340" ENDARROW="Default" ENDINCLINATION="129;0;" ID="Arrow_ID_1199115828" SOURCE="ID_1279073903" STARTARROW="None" STARTINCLINATION="129;0;"/>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
</node>
<node CREATED="1569711492828" HGAP="32" ID="ID_1144480887" MODIFIED="1569711513200" TEXT="Zustands- und Darstellungs-Steuerung" VSHIFT="-15">
<node CREATED="1569711514311" ID="ID_966535115" MODIFIED="1569711525152" TEXT="kniffeliges strukturelles Problem">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1569711527039" ID="ID_492957941" MODIFIED="1569711539256" TEXT="Zustand wird lokal, in den Widgets verwaltet"/>
<node CREATED="1569711540189" ID="ID_1641306694" MODIFIED="1576282358096" TEXT="diese brauchen jedoch Zugang zu zentralen Strukuren, speziell f&#xfc;r die Pr&#xe4;sentation">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      wichtigstes Beispiel: wir verwenden einen gemeinsamen <b>Canvas</b>&#160; (Gtk::Layout) zur Darstellung.
    </p>
    <p>
      Das bedeutet: viele Kind-Widgets werden auf diesem Canvas platziert und m&#252;ssen daher mit ihm interagieren
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1569711684335" HGAP="68" ID="ID_1964864197" MODIFIED="1666448072593" VSHIFT="2">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      verwende eine <b>Beziehungs-Entit&#228;t</b>
    </p>
    <p>
      &#160; <font face="Monospaced" color="#1528ca">ViewHook&#160; </font><font face="SansSerif" color="#1528ca">&#160;&#8272; </font><font face="Monospaced" color="#1528ca">&#160;&#160;CanvasHook</font>
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#5f74b7" DESTINATION="ID_1964864197" ENDARROW="Default" ENDINCLINATION="-1024;0;" ID="Arrow_ID_465735263" SOURCE="ID_27191288" STARTARROW="None" STARTINCLINATION="-717;0;"/>
<linktarget COLOR="#5f74b7" DESTINATION="ID_1964864197" ENDARROW="Default" ENDINCLINATION="-1024;0;" ID="Arrow_ID_756780463" SOURCE="ID_1246108677" STARTARROW="None" STARTINCLINATION="-717;0;"/>
<linktarget COLOR="#5f74b7" DESTINATION="ID_1964864197" ENDARROW="Default" ENDINCLINATION="-1024;0;" ID="Arrow_ID_992148976" SOURCE="ID_1031858777" STARTARROW="None" STARTINCLINATION="-717;0;"/>
<node CREATED="1569796860718" ID="ID_1579412894" MODIFIED="1569796865185" TEXT="Eigenschaften">
<node CREATED="1569796881999" ID="ID_1495741440" MODIFIED="1569796893280" TEXT="ist nie leer"/>
<node CREATED="1569796899453" ID="ID_665830244" MODIFIED="1569797486161" TEXT="hat eine eindeutige Identit&#xe4;t (&#xfc;bertragbar, aber nicht duplizierbar)"/>
<node CREATED="1569796925567" ID="ID_737561546" MODIFIED="1569796955277" TEXT="wird erzeugt durch &quot;Einf&#xfc;gen&quot; eines Elementes in die Anzeige"/>
<node CREATED="1569796959970" ID="ID_894452722" MODIFIED="1573241985243" STYLE="fork" TEXT="beim Zerst&#xf6;ren &quot;entfernt&quot; es dieses Element aus der Anzeige"/>
<node CREATED="1569797018132" ID="ID_609962345" MODIFIED="1573241988838" STYLE="fork" TEXT="w&#xe4;hrend der Lebensdauer erlaubt es dieses Element in der Anzeige zu repositionieren"/>
<node CREATED="1569797689767" ID="ID_454948151" MODIFIED="1576282358096" STYLE="fork" TEXT="kann Kind-ViewHooked relativ zum platzierten Element erzeugen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      d.h. das durch dieses ViewHooked eingef&#252;gte Element definiert auch ein lokales Koordinatensystem.
    </p>
    <p>
      Allerdings lebt das erzeugte Kind-ViewHooked danach eigenst&#228;ndig und es gibt keine weitere Beziehung
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1569798407650" ID="ID_1008276733" MODIFIED="1569798417575" TEXT="Konsequenzen">
<node CREATED="1569798611601" ID="ID_1075698833" MODIFIED="1569798622052" TEXT="zwei Pointer notwendig">
<node CREATED="1569798623199" ID="ID_97526784" MODIFIED="1569798641033" TEXT="R&#xfc;ck-Pointer auf die eingef&#xfc;gte Entit&#xe4;t"/>
<node CREATED="1569798642005" ID="ID_463960789" MODIFIED="1569798703836" TEXT="Ziel-Pointer auf den Anzeigerahmen/Canvas"/>
</node>
<node CREATED="1569799685975" ID="ID_1899453702" MODIFIED="1569799698129" TEXT="zun&#xe4;chst einmal ziemlich festgelegt">
<node CREATED="1569799719906" ID="ID_201546085" MODIFIED="1576282358095" TEXT="Lambdas w&#xfc;rden einen Ziel-Pointer pro Lambda erfordern">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Erl&#228;uterung: man k&#246;nnte auf die Idee kommen, die vier notwendigen Operationen auf dem Ziel durch Lambdas zu verkapseln. Wenn man dann aber nicht aufpa&#223;t, resultiert das in einer Closure f&#252;r jedes dieser vier Lamdas, und diese Closure h&#228;lt zumindest einen Pointer auf das Zielobjekt. <i>Der Vorteil eines solchen Ansatzes </i>w&#228;re nat&#252;rlich, da&#223; der konkrete Typ von Quelle und Ziel aus der Definition des ViewHook verschwindet (allerdings auch nur, wenn diese Lambdas in std::function-Objekte gewickelt sind)
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1569800105842" ID="ID_403274133" MODIFIED="1569800125569" TEXT="w&#xfc;nschenswert w&#xe4;re, den konkreten Zieltyp zu entkoppeln"/>
<node CREATED="1569800749930" ID="ID_1631103689" MODIFIED="1576282358094" TEXT="w&#xfc;nschenswer w&#xe4;re aber auch Quer-Beweglichkeit">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      von Element-Typ A nach Element-Typ B...
    </p>
    <p>
      Konkret:
    </p>
    <ul>
      <li>
        gegeben ein ViewHook&lt;TrackBody&gt;
      </li>
      <li>
        kann ich daraus einen ViewHook&lt;Gtk::Widget&gt; gewinnen?
      </li>
    </ul>
  </body>
</html></richcontent>
<arrowlink COLOR="#61a5df" DESTINATION="ID_1550703494" ENDARROW="Default" ENDINCLINATION="-180;0;" ID="Arrow_ID_1915156143" STARTARROW="None" STARTINCLINATION="-615;17;"/>
</node>
</node>
<node CREATED="1569800892774" ID="ID_513027776" MODIFIED="1569800904118" TEXT="Idee: halb-generisches Design">
<icon BUILTIN="idea"/>
<node CREATED="1569800905877" ID="ID_49362333" MODIFIED="1569800929374" TEXT="Richtung Ziel(Canvas) wird &#xfc;ber ein OO-Interface abstrahiert"/>
<node CREATED="1569800980203" ID="ID_1663628523" MODIFIED="1569801006667" TEXT="das Element dagegen ist ein Typ-Parameter"/>
<node CREATED="1569800938265" ID="ID_501232684" MODIFIED="1569800973086" TEXT="die typische Doppelkapsel: Generische H&#xfc;lle, polymorphe Innereien"/>
</node>
<node CREATED="1573744962237" ID="ID_1240251301" MODIFIED="1576282358094" TEXT="&#xbb;Dreiecks-Anordnung&#xab; erscheint sinnvoll">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      da der ViewHook schon zwei Pointer zu zwei Entit&#228;ten halten mu&#223;, kann man Redundanzen vermeiden, indem man ihn <i>an einem dritten Ort</i>&#160;anbringt. N&#228;mlich an einem Ort, an dem ohnehin schon eine Dreiecksbeziehung mit diesen beiden Elementen besteht
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1575579594451" ID="ID_1173527513" MODIFIED="1575579601366" TEXT="Ergebnisse der Analyse">
<node CREATED="1575579666545" ID="ID_960953308" MODIFIED="1575579689498" TEXT="dekoriert anderweitig bestehende Implementierungs-Strukturen"/>
<node CREATED="1575579602882" ID="ID_1722144544" MODIFIED="1575579616442" TEXT="dies ist ein generisches Implementierungsschema"/>
<node CREATED="1575579617408" ID="ID_568101313" MODIFIED="1575579625178" TEXT="bleibt aber nur eine d&#xfc;nne Abstraktion"/>
<node CREATED="1575579645700" ID="ID_672054447" MODIFIED="1575579701947" TEXT="smart-Handle ist der Kern">
<icon BUILTIN="forward"/>
</node>
</node>
</node>
<node CREATED="1573751565872" ID="ID_274573678" MODIFIED="1582926752028" TEXT="Vertiefte Design-Analyse">
<linktarget COLOR="#2e1d90" DESTINATION="ID_274573678" ENDARROW="Default" ENDINCLINATION="-1890;235;" ID="Arrow_ID_1905963364" SOURCE="ID_1007243980" STARTARROW="None" STARTINCLINATION="537;68;"/>
<node CREATED="1575580479206" ID="ID_871786644" MODIFIED="1576282358093" TEXT="Frage: kann das zu einem Konstruktionsschema ausgebaut werden">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Dies w&#228;re dann das R&#252;ckgrat in der View-Behandlung in der Timeline
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="help"/>
</node>
<node COLOR="#435e98" CREATED="1573314915266" FOLDED="true" ID="ID_1550703494" MODIFIED="1576797030290" TEXT="Quer-Beweglichkeit zwischen Typen">
<arrowlink COLOR="#b80305" DESTINATION="ID_912776786" ENDARROW="Default" ENDINCLINATION="-582;30;" ID="Arrow_ID_739783685" STARTARROW="None" STARTINCLINATION="212;897;"/>
<linktarget COLOR="#61a5df" DESTINATION="ID_1550703494" ENDARROW="Default" ENDINCLINATION="-180;0;" ID="Arrow_ID_1915156143" SOURCE="ID_1631103689" STARTARROW="None" STARTINCLINATION="-615;17;"/>
<icon BUILTIN="stop-sign"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1573314974409" ID="ID_1458279581" MODIFIED="1573315247762" TEXT="konzeptionelle Erweiterung auf einen douple-Dispatch (?)">
<linktarget COLOR="#684be4" DESTINATION="ID_1458279581" ENDARROW="Default" ENDINCLINATION="-1681;0;" ID="Arrow_ID_1672277618" SOURCE="ID_1957325688" STARTARROW="None" STARTINCLINATION="788;-76;"/>
<icon BUILTIN="help"/>
<node CREATED="1573315038764" ID="ID_343459571" MODIFIED="1573315057034" TEXT="TrackBody -&gt; ClipWidget"/>
<node CREATED="1573315059821" ID="ID_1755997468" MODIFIED="1575137031097" TEXT="weitere F&#xe4;lle?">
<arrowlink COLOR="#3457ce" DESTINATION="ID_1625046942" ENDARROW="Default" ENDINCLINATION="-227;8;" ID="Arrow_ID_534191130" STARTARROW="None" STARTINCLINATION="309;5;"/>
</node>
<node CREATED="1575580103422" ID="ID_1611596584" MODIFIED="1575580107429" TEXT="RLY?"/>
</node>
<node CREATED="1573315274074" ID="ID_1371762683" MODIFIED="1573315282925" TEXT="ggfs auch Manipulations-Operationen pro Typ">
<node CREATED="1573315287336" ID="ID_270346811" MODIFIED="1573315294042" TEXT="Widget: auf Canvas repositionieren"/>
<node CREATED="1573315295318" ID="ID_557973678" MODIFIED="1573935809890" TEXT="TrackBody: Reihenfolge umordnen">
<icon BUILTIN="help"/>
</node>
<node CREATED="1573935984203" ID="ID_1150598318" MODIFIED="1573936001642" TEXT="TrackHeadWidget: Reihenfolge der Kind-Header">
<icon BUILTIN="help"/>
</node>
</node>
<node CREATED="1573937032136" ID="ID_1315004509" MODIFIED="1573937056873" TEXT="des Genaueren: es handelt sich um Vater-Kinder-Manipulation">
<icon BUILTIN="idea"/>
<node CREATED="1573937096058" ID="ID_1596055753" MODIFIED="1575133301506" TEXT="bisher habe ich das durch eine Konstruktor-Closure gel&#xf6;st">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Jeder neue TrackPresenter bekommt zur Erzeugung einen Funktor, mit dem sich der von ihm gehaltene DisplayFrame in einen Vater-Kontext &quot;einh&#228;keln&quot; kann...
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#63bcba" DESTINATION="ID_709169542" ENDARROW="Default" ENDINCLINATION="648;-124;" ID="Arrow_ID_1775236750" STARTARROW="None" STARTINCLINATION="661;33;"/>
</node>
<node CREATED="1573937269636" ID="ID_1582747384" MODIFIED="1573937284837" TEXT="Analyse: ben&#xf6;tigte Operationen">
<node CREATED="1573937286849" ID="ID_1940401544" MODIFIED="1573937327296" TEXT="neuen Kind-ViewHook einh&#xe4;ngen"/>
<node CREATED="1573937348618" ID="ID_1592677163" MODIFIED="1573937358756" TEXT="(Kind-ViewHook zerst&#xf6;rt sich selbst)"/>
<node CREATED="1573937496810" ID="ID_1178421844" MODIFIED="1573937511202" TEXT="Reihenfolge der Kind-Hooks aktualisieren"/>
</node>
<node CREATED="1573937563111" ID="ID_587192425" MODIFIED="1573937570371" TEXT="Kritik: unn&#xf6;tig indirekt">
<node CREATED="1573937575410" ID="ID_1241025784" MODIFIED="1573937584696" TEXT="direkt w&#xfc;rde auch gehen">
<node CREATED="1573937594363" ID="ID_1916446916" MODIFIED="1573937626786" TEXT="TrackHeadWidget wird unter TrackHeadWidget eingeh&#xe4;ngt"/>
<node CREATED="1573937632100" ID="ID_1460511973" MODIFIED="1573937642417" TEXT="TrackBody wird unter TrackBody eingeh&#xe4;ngt"/>
<node CREATED="1573937750100" ID="ID_280534075" MODIFIED="1573937761305" TEXT="nur f&#xfc;r Clip-Widgets gibt es ein Problem"/>
</node>
<node CREATED="1573937803628" ID="ID_1368972121" MODIFIED="1573937832776" TEXT="Schlu&#xdf;folgerung: es geht um das Strukturieren ohnehin vorhandener Operationen">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1573937928747" ID="ID_1387457475" MODIFIED="1573937967254" TEXT="demnach w&#xe4;re &#xbb;ViewHookable&#xab; bedeutender denn &#xbb;ViewHook&#xab;"/>
<node CREATED="1573940988387" ID="ID_173071400" MODIFIED="1573941008242" TEXT="was st&#xf6;rt an diesem Design?">
<icon BUILTIN="help"/>
<node CREATED="1573941015368" ID="ID_1975430834" MODIFIED="1573941024610" TEXT="die &#xbb;move&#xab;-Operation">
<node CREATED="1573941030461" ID="ID_1374594092" MODIFIED="1573941049700" TEXT="sie macht nur Sinn f&#xfc;r Widget-an-Canvas"/>
</node>
<node CREATED="1573941080479" ID="ID_311245443" MODIFIED="1575240030260" TEXT="generell die Proxy-Rolle von ViewHook">
<linktarget COLOR="#3f8a72" DESTINATION="ID_311245443" ENDARROW="Default" ENDINCLINATION="693;198;" ID="Arrow_ID_1560507426" SOURCE="ID_1632364154" STARTARROW="None" STARTINCLINATION="647;33;"/>
<node CREATED="1573941092749" ID="ID_1895119352" MODIFIED="1575055282173" TEXT="auch sie ist notwendig f&#xfc;r Widget-an-Canvas"/>
<node CREATED="1573941102985" ID="ID_463060333" MODIFIED="1573941123933" TEXT="und &#xfc;berfl&#xfc;ssig f&#xfc;r TrackBody und TrackHeadWidget"/>
</node>
<node CREATED="1573944816092" ID="ID_1520827984" MODIFIED="1575057093965" TEXT="k&#xf6;nnte man auf diese Design-Elemente verzichten?">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...wohl ehr nicht, aber sie sind nicht allgemeing&#252;ltig, das ist das Problem
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="help"/>
</node>
</node>
<node CREATED="1573940830088" ID="ID_31747089" MODIFIED="1573941010957" TEXT="wo / wie mu&#xdf; ViewHookable flexibel sein?">
<icon BUILTIN="help"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1575057316383" ID="ID_1565606328" MODIFIED="1575566385152" TEXT="relatives Verankern">
<linktarget COLOR="#146b9a" DESTINATION="ID_1565606328" ENDARROW="Default" ENDINCLINATION="-218;27;" ID="Arrow_ID_1877360800" SOURCE="ID_827160586" STARTARROW="None" STARTINCLINATION="-76;-196;"/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1575134071522" ID="ID_1625046942" MODIFIED="1575137022510" TEXT="bekannte F&#xe4;lle">
<linktarget COLOR="#3457ce" DESTINATION="ID_1625046942" ENDARROW="Default" ENDINCLINATION="-227;8;" ID="Arrow_ID_534191130" SOURCE="ID_1755997468" STARTARROW="None" STARTINCLINATION="309;5;"/>
<node CREATED="1575134076354" ID="ID_537930190" MODIFIED="1575134110312" TEXT="TrackHeadWidget in einer Zeile(ViewHook) des Parent-Track"/>
<node CREATED="1575134130065" ID="ID_552878714" MODIFIED="1575134156106" TEXT="(sub)-TrackBody in dem TrackBody(ViewHook) des Parent-Track"/>
<node CREATED="1575134170811" ID="ID_987078230" MODIFIED="1575134188948" TEXT="Clip-Widget mit Offset zum TrackBody des zugeh&#xf6;rigen Track"/>
<node CREATED="1575135009974" ID="ID_1814850214" MODIFIED="1575135018550" TEXT="dto f&#xfc;r MarkerWidget"/>
<node CREATED="1575134951065" ID="ID_313036103" MODIFIED="1575134991516" TEXT="Effect-Decorator-Balken relativ zum Clip"/>
<node CREATED="1575135216791" ID="ID_586238473" MODIFIED="1575135242494" TEXT="alle diese F&#xe4;lle auch relativ zum Canvas in einem Clip">
<icon BUILTIN="help"/>
</node>
</node>
<node CREATED="1575135330291" ID="ID_1582980743" MODIFIED="1575135337718" TEXT="was f&#xfc;r eine Operation ist das?">
<icon BUILTIN="help"/>
<node CREATED="1575135994929" ID="ID_512385556" MODIFIED="1575136011161" TEXT="Vorsicht: es geht um ein Kind, nicht um einen Sibling">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1575135436554" ID="ID_1066824862" MODIFIED="1575135450367" TEXT="verankere T relativ zu ViewHook&lt;T&gt;">
<node CREATED="1575135577727" ID="ID_1869481109" MODIFIED="1575135774534" TEXT="viewHook&lt;T&gt;::viewHookable&lt;T&gt;.getChildHookable(T elm)"/>
<node CREATED="1575136039163" ID="ID_1481685114" MODIFIED="1575136173596" TEXT="dann: dieses childHookable.hook(T childOfElm)"/>
</node>
<node CREATED="1575135837216" ID="ID_374890623" MODIFIED="1575135846257" TEXT="verankere U relativ zu ViewHook&lt;T&gt;">
<node CREATED="1575135577727" ID="ID_1723372649" MODIFIED="1575136907824" TEXT="viewHook&lt;T&gt;::viewHookable&lt;T&gt;.getChildHookable&lt;U&gt;(T elm)"/>
<node CREATED="1575136039163" ID="ID_739622730" MODIFIED="1575136816490" TEXT="dann: dieses childHookable.hook(U childOfElm)"/>
</node>
<node CREATED="1575137053568" ID="ID_691795394" MODIFIED="1575137136026" TEXT="also: es ist tats&#xe4;chlich ein (impliziter) double-Dispatch">
<arrowlink COLOR="#73117e" DESTINATION="ID_1052180334" ENDARROW="Default" ENDINCLINATION="84;-157;" ID="Arrow_ID_352116559" STARTARROW="None" STARTINCLINATION="-209;11;"/>
</node>
</node>
</node>
</node>
<node CREATED="1575137069638" ID="ID_1052180334" MODIFIED="1575137136027" TEXT="...und es verlangt nach einem double-Dispatch">
<linktarget COLOR="#73117e" DESTINATION="ID_1052180334" ENDARROW="Default" ENDINCLINATION="84;-157;" ID="Arrow_ID_352116559" SOURCE="ID_691795394" STARTARROW="None" STARTINCLINATION="-209;11;"/>
<icon BUILTIN="yes"/>
<node COLOR="#338800" CREATED="1575137161390" HGAP="117" ID="ID_836172889" MODIFIED="1575216227850" TEXT="wo steckt der Visitor?" VSHIFT="-18">
<icon BUILTIN="button_ok"/>
<node CREATED="1575137194277" ID="ID_553288287" MODIFIED="1575137207031" TEXT="im konkreten ViewHookable&lt;X&gt;"/>
<node CREATED="1575137218682" ID="ID_1616234672" MODIFIED="1575137239795" TEXT="dieses bietet freiwillig zus&#xe4;tzliche Methoden zur Quer-Verankerung"/>
<node CREATED="1575137261020" ID="ID_1063963760" MODIFIED="1575137323290" TEXT="ist dazu eine explizite Spezialisierung erforderlich?">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1575137347737" ID="ID_233527180" MODIFIED="1575137356468" TEXT="nur wenn die Methoden virtuell w&#xe4;ren">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1575137365580" ID="ID_1719972158" MODIFIED="1575137394537">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      alternativ kann man eine konkrete Template-Funktion <i>deklarieren</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1575137397730" ID="ID_1450922559" MODIFIED="1575137405507" TEXT="aber nicht definieren">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1575137466745" ID="ID_868835405" MODIFIED="1575137486075" TEXT="weil die Definition auch die konkrete Implementierung des ViewHook kennen m&#xfc;&#xdf;te"/>
<node CREATED="1575137513915" ID="ID_609895063" MODIFIED="1575137519437" TEXT="konkretes Beispiel">
<node CREATED="1575137520689" ID="ID_1629077992" MODIFIED="1575137528276" TEXT="Platzieren eines Clip in einen Track"/>
<node CREATED="1575137530000" ID="ID_1549354408" MODIFIED="1575137545858" TEXT="das ViewHookable f&#xfc;r den Track ist ein TrackBody"/>
<node CREATED="1575137593448" ID="ID_1943445611" MODIFIED="1575137620619" TEXT="aber das ViewHookable f&#xfc;r Clips mu&#xdf; den Canvas kennen"/>
<node CREATED="1575137655263" ID="ID_1676433364" MODIFIED="1575137687391" TEXT="eigentlich gen&#xfc;gt hier ein ViewHookable&lt;Widget&gt;..."/>
<node CREATED="1575137689003" ID="ID_1830279546" MODIFIED="1575137694603" TEXT="...aber mit Kenntnis der Basis-Koordinatenn des Track">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
</node>
<node CREATED="1575137719063" ID="ID_814850780" MODIFIED="1575137729754" TEXT="zwei Umsetzungs-Modelle">
<node CREATED="1575137730885" ID="ID_1572825790" MODIFIED="1575137756310" TEXT="(totale) Template-Spezialisierung">
<node CREATED="1575137764457" ID="ID_487433925" MODIFIED="1575137780219" TEXT="ViewHookable&lt;TrackBody&gt;">
<node CREATED="1575137781918" ID="ID_1341117592" MODIFIED="1575137869750" TEXT="hat virtuelle Methode(n)">
<node CREATED="1575137871085" ID="ID_1181038301" MODIFIED="1575137871085" TEXT="getChildHookable_for_Clip(TrackBody elm)"/>
<node CREATED="1575137872571" ID="ID_1426948011" MODIFIED="1575137884469" TEXT="getChildHookable_for_Marker(TrackBody elm)"/>
</node>
<node CREATED="1575137898463" ID="ID_1536688578" MODIFIED="1575137949950" TEXT="diese werden in TrackBody selber implementiert">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      denn, ohne da&#223; dies nach Au&#223;en sichtbar w&#228;re, ist TrackBody selbst die ViewHookable-Implementierung
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1575137955327" ID="ID_1209911283" MODIFIED="1575138018363" TEXT="und diese Implementierung mu&#xdf; nun den Canvas finden">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1575138020526" ID="ID_61932847" MODIFIED="1575138278815" TEXT="kann sie aber (im Moment) gar nicht">
<linktarget COLOR="#e84746" DESTINATION="ID_61932847" ENDARROW="Default" ENDINCLINATION="201;0;" ID="Arrow_ID_252942839" SOURCE="ID_1025355091" STARTARROW="None" STARTINCLINATION="201;0;"/>
<icon BUILTIN="stop-sign"/>
</node>
</node>
</node>
</node>
<node CREATED="1575138045842" ID="ID_799349707" MODIFIED="1575138054270" TEXT="undefinierte Template-Methoden">
<node CREATED="1575138061353" ID="ID_1984732238" MODIFIED="1575138085281" TEXT="ViewHookable&lt;T&gt;.getChildHookable&lt;U&gt;(T elm)"/>
<node CREATED="1575138103780" ID="ID_1710088811" MODIFIED="1575138116855" TEXT="konkret werden die zusammen mit TrackBody implementiert">
<node CREATED="1575138118295" ID="ID_1373735987" MODIFIED="1575150501923" TEXT="ViewHookable&lt;TrackBody&gt;::getChildHookable&lt;Clip&gt;(TrackBody elm)"/>
<node CREATED="1575138118295" ID="ID_704904358" MODIFIED="1575150496404" TEXT="ViewHookable&lt;TrackBody&gt;::getChildHookable&lt;Marker&gt;(TrackBody elm)"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1575138190691" ID="ID_773972977" MODIFIED="1575138205137" TEXT="und diese Implementierung...">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1575138206253" ID="ID_655738081" MODIFIED="1575150462624" TEXT="mu&#xdf; einen static_cast machen">
<node CREATED="1575138216103" ID="ID_1538804684" MODIFIED="1575138222839" TEXT="ViewHookable&lt;TrackBody&gt;"/>
<node CREATED="1575138223763" ID="ID_1581544549" MODIFIED="1575138245579" TEXT="auf die konkrete Implementierung (=TrackBody selber)"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1575138250151" ID="ID_1642915025" MODIFIED="1575138269107" TEXT="und dieser wieder mu&#xdf; nun den Canvas finden">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1575138271076" ID="ID_1025355091" MODIFIED="1575138284257" TEXT="gleiches Problem">
<arrowlink COLOR="#e84746" DESTINATION="ID_61932847" ENDARROW="Default" ENDINCLINATION="201;0;" ID="Arrow_ID_252942839" STARTARROW="None" STARTINCLINATION="201;0;"/>
<icon BUILTIN="stop-sign"/>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1575215636577" ID="ID_1948387656" MODIFIED="1575215647790" TEXT="neige ehr dem &quot;generischen Visitor&quot; zu">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<node COLOR="#435e98" CREATED="1575215649416" ID="ID_1591288650" MODIFIED="1575216005833" TEXT="also den undefinierten Template-Methoden">
<icon BUILTIN="info"/>
<node CREATED="1575215660550" ID="ID_34068201" MODIFIED="1575215996537" TEXT="pro">
<icon BUILTIN="up"/>
<node CREATED="1575215791195" ID="ID_398909879" MODIFIED="1575215821034" TEXT="wenig Code-Overhead">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      man mu&#223; nicht eine explizite Spezialisierung des ganzen Interfaces schreiben
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1575215838399" ID="ID_859406608" MODIFIED="1575215879417" TEXT="nat&#xfc;rliche Code-Organisation">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      man schreibt die konkrete Implementierung direkt bei der Implementierung des Zieltyps mit
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1575215924451" ID="ID_643524989" MODIFIED="1575215973324" TEXT="weniger implizite Konventionen"/>
</node>
<node CREATED="1575215663190" ID="ID_906295451" MODIFIED="1575215991848" TEXT="con">
<icon BUILTIN="down"/>
<node CREATED="1575215665957" ID="ID_1196326876" MODIFIED="1575215723907" TEXT="Kein Interface"/>
<node CREATED="1575215724926" ID="ID_134909462" MODIFIED="1575215743342" TEXT="fehlende Implementierung wird erst bei Verwendung ersichtlich"/>
<node CREATED="1575215758830" ID="ID_550543628" MODIFIED="1575215766856" TEXT="static_cast (Insider-Wissen)"/>
</node>
</node>
<node CREATED="1575216033496" ID="ID_1987929560" MODIFIED="1575216053261" TEXT="double-dispatch wird also durch die Verwendung eines konkreten Typs angetrieben">
<node CREATED="1575216082111" ID="ID_606766126" MODIFIED="1575216098040" TEXT="Dimension-1: das konkrete ViewHookable"/>
<node CREATED="1575216098994" ID="ID_548123128" MODIFIED="1575216156142" TEXT="Dimension-2: konkrete Unterst&#xfc;tzung f&#xfc;r einen bestimmten Widget-Typ in jenem"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1575216188742" HGAP="334" ID="ID_1821357488" MODIFIED="1575579109843" TEXT="bleibt der Zugang zum Canvas zu l&#xf6;sen" VSHIFT="46">
<icon BUILTIN="button_cancel"/>
<node CREATED="1575216248349" ID="ID_512721194" MODIFIED="1575216253000" TEXT="bisheriger Stand">
<node CREATED="1575216253845" ID="ID_587308673" MODIFIED="1575216292655" TEXT="Problem ist nicht wirklich gel&#xf6;st">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      wir k&#246;nnten zwar Widgets aufbauen, diese aber dann sp&#228;ter nicht umordnen oder zerst&#246;ren
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1575216303885" ID="ID_715859179" MODIFIED="1575216335980" TEXT="top-Level (TimelineController) bietet den Ankerpunkt im DisplayManager"/>
<node CREATED="1575216337106" ID="ID_661291056" MODIFIED="1575216352962" TEXT="TrackPresenter bekommt jeweils einen Ankerpunkt bei der Erstellung"/>
<node CREATED="1575216354061" ID="ID_1311913961" MODIFIED="1575216373533" TEXT="TrackPresenter gibt sich selber als Ankerpunkt bei der Erstellung der Kinder mit"/>
</node>
<node CREATED="1575216544532" ID="ID_1540315113" MODIFIED="1575216549799" TEXT="warum w&#xfc;nschenswert?">
<node CREATED="1575216551690" ID="ID_935473263" MODIFIED="1575216559964" TEXT="one concept to rule them all"/>
<node CREATED="1575216581519" ID="ID_887541808" MODIFIED="1575216601256" TEXT="Komponentenzugriff in komplexen GUIs ist notorisch verworren"/>
</node>
<node CREATED="1575216399512" ID="ID_507337771" MODIFIED="1575216403380" TEXT="M&#xf6;glichkeiten">
<node CREATED="1575216670419" ID="ID_702645692" MODIFIED="1575217442829" TEXT="anderweitig l&#xf6;sen">
<icon BUILTIN="smiley-angry"/>
<node CREATED="1575216681761" ID="ID_1830792442" MODIFIED="1575220615843" TEXT="die Presenter kennen typischerweise den DisplayManager">
<icon BUILTIN="idea"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1575220602792" ID="ID_1011365806" MODIFIED="1575220612560" TEXT="STOP! das stimmt gar nicht">
<icon BUILTIN="stop-sign"/>
</node>
<node CREATED="1575220620374" ID="ID_1278909200" MODIFIED="1575220767695" TEXT="genau das hab ich trickreich vermieden">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      durch die L&#246;sung mit dem &quot;Einh&#228;keln&quot; via tempor&#228;r durchgereichtem Lambda!
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#688bdc" DESTINATION="ID_1278909200" ENDARROW="Default" ENDINCLINATION="604;42;" ID="Arrow_ID_268017738" SOURCE="ID_1816173955" STARTARROW="None" STARTINCLINATION="182;25;"/>
</node>
</node>
<node CREATED="1575216724123" ID="ID_1691573472" MODIFIED="1575216735670" TEXT="dieser h&#xe4;tte dann ein API &quot;getWidgetHookable&quot;"/>
<node CREATED="1575216766414" ID="ID_1123775276" MODIFIED="1575216777744" TEXT="der Vater m&#xfc;&#xdf;te seine eigenen Koordinaten kennen"/>
<node CREATED="1575216778548" ID="ID_1190748757" MODIFIED="1575216796416" TEXT="er w&#xfc;rde dann bei der Erstellung die relativen Kind-Koordinaten ausrechnen und mitgeben"/>
<node CREATED="1575216835596" ID="ID_629102178" MODIFIED="1575216885510" TEXT="die Template-Visitor-Methode wird mit einem static_fail implementiert">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      um zu dokumentieren, da&#223; wir in diesem Visitor-Mischfall am Konzept vorbei implementieren
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="smily_bad"/>
</node>
<node CREATED="1575217033169" ID="ID_1460431220" MODIFIED="1575217050486" TEXT="f&#xfc;r Timelines h&#xe4;tten wir einen Dienst pro Timeline"/>
<node CREATED="1575217051398" ID="ID_1214822231" MODIFIED="1575217061441" TEXT="und Clips m&#xfc;&#xdf;ten ebenfalls einen lokalen Dienst bieten"/>
<node CREATED="1575216926792" ID="ID_1215187417" MODIFIED="1575220655549" TEXT="die Implementierung ist aber auch tats&#xe4;chlich flach">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...und nicht hierarchisch! Letzten Endes geht es nur darum, Widgets an einen gemeinsamen Canvas zu heften
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1575217471564" ID="ID_1483844411" MODIFIED="1575223136572" TEXT="nach Schema-f umsetzen">
<icon BUILTIN="smiley-neutral"/>
<node CREATED="1575217494446" ID="ID_1143595794" MODIFIED="1575217521744" TEXT="Implementiere: ViewHookable&lt;TrackBody&gt;::getChildHookable&lt;Clip&gt;(TrackBody elm)"/>
<node CREATED="1575217549604" ID="ID_280485004" MODIFIED="1575217592722" TEXT="ViewHookable&lt;TrackBody&gt; ist de-facto selber ein TrackBody">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      n&#228;mlich der Vater-TrackBody
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1575219131000" ID="ID_1060211288" MODIFIED="1575219133937" TEXT="TrackBody">
<node CREATED="1575219136371" ID="ID_1651052012" MODIFIED="1575219154957" TEXT="h&#xe4;lt eine Liste der Sub-Body*"/>
<node CREATED="1575219156445" ID="ID_1566022490" MODIFIED="1575219175060" TEXT="managed (unique_ptr) eine Liste der Ruler-Tracks">
<node CREATED="1575219179824" ID="ID_1534908547" MODIFIED="1575219188210" TEXT="RulerTrack ist ein Tangible"/>
<node CREATED="1575219189014" ID="ID_911375667" MODIFIED="1575558646518" TEXT="diese Liste ist vom TrackPresenter her in den Diff eingeh&#xe4;ngt"/>
</node>
<node CREATED="1575219217817" ID="ID_1289207727" MODIFIED="1575219235893" TEXT="kennt seine eigene startLine_ auf dem Canvas"/>
<node CREATED="1575219240879" ID="ID_1411296086" MODIFIED="1575219249858" TEXT="plus einige weitere Render-Parameter"/>
</node>
<node CREATED="1575219314942" ID="ID_1292453963" MODIFIED="1575219334463" TEXT="TrackBody m&#xfc;&#xdf;te nun ViewHookable&lt;Clip&gt; implementieren">
<node CREATED="1575219336874" ID="ID_1662726515" MODIFIED="1575219344931" TEXT="und zwar durch Delegation/Dekoration">
<node CREATED="1575219383148" ID="ID_1184072772" MODIFIED="1575219395047" TEXT="auf den top-level ViewHookable&lt;Widget&gt;"/>
<node CREATED="1575219396781" ID="ID_141339762" MODIFIED="1575219406522" TEXT="welches vom DisplayManager bereitgestellt wird"/>
<node CREATED="1575219409161" ID="ID_820984223" MODIFIED="1575219425490" TEXT="und (vermutl) vom Canvas selber zu implementieren ist"/>
<node CREATED="1575219434581" ID="ID_1020948818" MODIFIED="1575219474436" TEXT="die Dekoration dabei justiert den Y-offset anhand der startLine_"/>
</node>
<node CREATED="1575219354624" ID="ID_1863458674" MODIFIED="1575219365787" TEXT="oder alternativ via direkt-Zugriff auf den Canvas">
<node CREATED="1575219523764" ID="ID_1012093929" MODIFIED="1575219544539" TEXT="das w&#xe4;re eine (indirekt) zirkul&#xe4;re Beziehung zwischen Implementierungs-Enit&#xe4;ten"/>
<node CREATED="1575219832435" ID="ID_1357635182" MODIFIED="1575219937587" TEXT="die aber effektiv (noch) nicht realisiert wird">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      will sagen: es gibt keinen Zugriff, der vom Canvas ausgeht, durch die TrackBodies durchsteigt, und dann indirekt in den Cavas zur&#252;ck greift. Denn -- zumindest im Moment -- handelt es sich um zwei klar geschiedene Belange: einmal das Rendern der Track-Struktur, und andererseits das platzieren von Clips auf dem Canvas
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1575219941761" ID="ID_1070253348" MODIFIED="1575220419798" TEXT="das einzige Verbindungsglied ist die startLine_">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...denn diese wird von der Auswertung der Track-Struktur (vor dem Zeichnen) etabliert, und andererseits beim Platzieren eines Clip genutzt.
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#439be7" DESTINATION="ID_1070253348" ENDARROW="Default" ENDINCLINATION="-100;6;" ID="Arrow_ID_406976845" SOURCE="ID_378686648" STARTARROW="None" STARTINCLINATION="235;7;"/>
<icon BUILTIN="forward"/>
</node>
</node>
</node>
<node CREATED="1575220057456" ID="ID_1106262862" MODIFIED="1575220073987" TEXT="die leidige Konsequenz...">
<node CREATED="1575220074975" ID="ID_29395675" MODIFIED="1575220102936" TEXT="jeder TrackBody hat einen (R&#xfc;ck)Zeiger auf den Canvas oder DisplayManager"/>
<node CREATED="1575220114002" ID="ID_840603253" MODIFIED="1575220144732">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      und diese Info ist komplett <b>redundant</b>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1575220123929" ID="ID_830381506" MODIFIED="1575220138837">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      alle anderen Daten in TrackBody sind <b>nicht redundant</b>
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node CREATED="1575220252783" ID="ID_1344785124" MODIFIED="1575223142078" TEXT="Belange auseinandernehmen?">
<linktarget COLOR="#c1eb45" DESTINATION="ID_1344785124" ENDARROW="Default" ENDINCLINATION="-706;53;" ID="Arrow_ID_1568915503" SOURCE="ID_1508786364" STARTARROW="None" STARTINCLINATION="731;48;"/>
<font NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="smiley-oh"/>
<node CREATED="1575220262166" ID="ID_378686648" MODIFIED="1575220419798" TEXT="kann man diese (anscheinend) nahezu vollst&#xe4;ndig geschiedenen Belange nicht auftrennen?">
<arrowlink COLOR="#439be7" DESTINATION="ID_1070253348" ENDARROW="Default" ENDINCLINATION="-100;6;" ID="Arrow_ID_406976845" STARTARROW="None" STARTINCLINATION="235;7;"/>
<icon BUILTIN="help"/>
</node>
<node CREATED="1575220439150" ID="ID_1245542782" MODIFIED="1575220514498" TEXT="warum mu&#xdf; der TrackBody das ViewHookable&lt;Clip&gt; sein?">
<icon BUILTIN="help"/>
</node>
<node CREATED="1575220534273" ID="ID_1963867099" MODIFIED="1575220684466" TEXT="der TrackPresenter selber h&#xe4;lt ebenfalls diese redundante Info">
<icon BUILTIN="button_cancel"/>
<node CREATED="1575220686308" ID="ID_1816173955" MODIFIED="1575220767695" TEXT="nein, tut er nicht">
<arrowlink COLOR="#688bdc" DESTINATION="ID_1278909200" ENDARROW="Default" ENDINCLINATION="604;42;" ID="Arrow_ID_268017738" STARTARROW="None" STARTINCLINATION="182;25;"/>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1575221690053" ID="ID_391530319" MODIFIED="1575221756022" TEXT="genau diese Info aber brauche ich">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      denn der Display/Manager bzw Canvas ist zwar &quot;quasi global&quot;, aber eben nicht wirklich, denn er ist f&#252;r eine Timeline zust&#228;ndig. Also genau die Art Relation, f&#252;r die man typischerweise DI macht
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1575220914655" ID="ID_646969276" MODIFIED="1575220994424" TEXT="nur TrackPresenter oder DisplayFrame k&#xe4;men in Frage">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      weil nach hier etablierter Policy diesen erlaubt w&#228;re, &quot;von oben&quot; in den trackPresenter.displayFrame.trackBody reinzugreifen f&#252;r die startLine_
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1575222540955" ID="ID_1068095065" MODIFIED="1575222555271" TEXT="in den sauren Apfel bei&#xdf;en?">
<icon BUILTIN="help"/>
<node CREATED="1575222560056" ID="ID_1526676047" MODIFIED="1575222576688" TEXT="DisplayFrame h&#xe4;lt eine Referenz auf ViewHookable&lt;Widget&gt;"/>
<node CREATED="1575222583789" ID="ID_1835575914" MODIFIED="1575222601128" TEXT="und implementiert selber ViewHookable&lt;Clip&gt; und ViewHookable&lt;Marker&gt;"/>
<node CREATED="1575222608314" ID="ID_1403410704" MODIFIED="1575222624827" TEXT="und zieht zur Dekoration die trackBody.startLine_ heran"/>
</node>
</node>
</node>
<node CREATED="1575223154399" ID="ID_1681994818" MODIFIED="1576705095215" TEXT="also wird der DisplayFrame ausgebaut">
<linktarget COLOR="#3c62b6" DESTINATION="ID_1681994818" ENDARROW="Default" ENDINCLINATION="-1457;26;" ID="Arrow_ID_1666541151" SOURCE="ID_665871359" STARTARROW="None" STARTINCLINATION="898;63;"/>
<node CREATED="1575223172838" ID="ID_1606686104" MODIFIED="1575223181392" TEXT="zum gro&#xdf;en ViewHook">
<node CREATED="1575223418428" ID="ID_463428688" MODIFIED="1575223429207" TEXT="h&#xe4;lt einen ViewHook&lt;TrackBody&gt;"/>
<node CREATED="1575223430819" ID="ID_1357751249" MODIFIED="1575223441611" TEXT="h&#xe4;lt einen ViewHook&lt;TrackHeaderWidget&gt;"/>
<node CREATED="1575223465392" ID="ID_260241369" MODIFIED="1575223488960" TEXT="h&#xe4;lt eine Referenz auf ViewHookable&lt;Widget&gt;"/>
<node CREATED="1575223491827" ID="ID_130394978" MODIFIED="1575223504573" TEXT="implementiert selber ViewHookable&lt;Clip&gt;"/>
<node CREATED="1575223505705" ID="ID_405837155" MODIFIED="1575223520899" TEXT="implementiert selber ViewHookable&lt;Marker&gt;"/>
</node>
<node CREATED="1575223585142" ID="ID_436178463" MODIFIED="1575223590265" TEXT="so einige Redundanzen">
<node CREATED="1575223603060" ID="ID_1419915992" MODIFIED="1575223619285" TEXT="Referenz auf ViewHookable&lt;Widget&gt; ist unvermeidbar">
<node CREATED="1575223624281" ID="ID_1458214193" MODIFIED="1575223647750" TEXT="weil die dahinter stehende Impl (der Canvas) nicht global ist">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...sondern zur Timeline geh&#246;rt
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1575223656716" ID="ID_1189941110" MODIFIED="1575223672718" TEXT="weil sonst keine der angeschlossenen Strukturen einen aufw&#xe4;rts-Link hat"/>
<node CREATED="1611436973802" ID="ID_1355357060" MODIFIED="1611436991322" TEXT="&#xfc;brigens: man k&#xf6;nnte hier auch ein Wurmloch einsetzen">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1575223786739" ID="ID_926999216" MODIFIED="1575223802333" TEXT="aber ViewHook&lt;TrackBody&gt; hat einen TrackBody*"/>
<node CREATED="1575223803377" ID="ID_1526084839" MODIFIED="1575223813779" TEXT="auf das direkt daneben stehende TrackBody-Objekt"/>
</node>
<node CREATED="1575239328453" ID="ID_1096729219" MODIFIED="1575667946076" TEXT="Idee: ViewHooked&lt;Widget&gt;">
<linktarget COLOR="#e79332" DESTINATION="ID_1096729219" ENDARROW="Default" ENDINCLINATION="-1237;46;" ID="Arrow_ID_1348207622" SOURCE="ID_1416159951" STARTARROW="None" STARTINCLINATION="2421;0;"/>
<icon BUILTIN="idea"/>
<node CREATED="1575239353279" ID="ID_1137161464" MODIFIED="1575239358488" TEXT="statt frei stehendem &quot;ViewHook&quot;"/>
<node CREATED="1575239360140" ID="ID_1769045218" MODIFIED="1575239745292" TEXT="also direkt an die Lebensdauer des Widget gekoppelt"/>
<node CREATED="1575239401247" ID="ID_1821251711" MODIFIED="1575566053491" TEXT="dann geht der hook()-Vorgang anders herum"/>
<node CREATED="1575239411717" ID="ID_1412083065" MODIFIED="1575239472817" TEXT="ViewHooked braucht als ctor-Parameter ein ViewHookable&amp;">
<node CREATED="1575667806989" ID="ID_334793743" MODIFIED="1575667821044" TEXT="ViewHookable::hook() wird eine void-Operation"/>
<node CREATED="1575667821800" ID="ID_722923687" MODIFIED="1575667833698" TEXT="aber der ctor garantiert (RAII) da&#xdf; sie aufgerufen wurde"/>
</node>
<node CREATED="1575239483404" ID="ID_397271082" MODIFIED="1575239488770" TEXT="und wird noncopyable">
<icon BUILTIN="ksmiletris"/>
</node>
<node COLOR="#435e98" CREATED="1575239505442" ID="ID_907757822" MODIFIED="1575240706224" TEXT="lassen sich damit alle Operationen durchf&#xfc;hren?">
<icon BUILTIN="help"/>
<node COLOR="#338800" CREATED="1575239796865" ID="ID_1427807363" MODIFIED="1575240713921" TEXT="move... warum nicht?">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1575239815831" ID="ID_129305740" MODIFIED="1575240715198" TEXT="destroy: geht v&#xf6;llig analog">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1575239830833" ID="ID_475200834" MODIFIED="1575240716553" TEXT="Lebenszyklus">
<icon BUILTIN="button_ok"/>
<node CREATED="1575239835573" ID="ID_1985812443" MODIFIED="1575239849286" TEXT="das Widget mu&#xdf; vor dem ViewHooked existieren"/>
<node CREATED="1575239850434" ID="ID_28316843" MODIFIED="1575239862705" TEXT="das ist realisierbar...">
<node CREATED="1575239863536" ID="ID_1456405590" MODIFIED="1575239869276" TEXT="indem man von dem Widget erbt">
<node CREATED="1575239905163" ID="ID_1933259507" MODIFIED="1575239950041" TEXT="h&#xe4;tte den Charme, da&#xdf; das smart-ptr/proxy-Verhalten sich er&#xfc;brigt"/>
<node CREATED="1575239958334" ID="ID_1632364154" MODIFIED="1575240030260" TEXT="...welches mir ohnehin nicht so besonders gut gefallen hat">
<arrowlink COLOR="#3f8a72" DESTINATION="ID_311245443" ENDARROW="Default" ENDINCLINATION="693;198;" ID="Arrow_ID_1560507426" STARTARROW="None" STARTINCLINATION="647;33;"/>
</node>
</node>
<node CREATED="1575239889645" ID="ID_1523224980" MODIFIED="1575239896424" TEXT="indem man das Widget als Member hat"/>
</node>
<node CREATED="1575240151529" ID="ID_75365412" MODIFIED="1575240172988" TEXT="Umordnen">
<node CREATED="1575240174231" ID="ID_109571586" MODIFIED="1575240188790" TEXT="Referenz bleibt Referenz"/>
<node CREATED="1575240189724" ID="ID_1392238474" MODIFIED="1575240203713" TEXT="und ein dekorierender Iterator ist davon auch nicht betroffen"/>
<node CREATED="1575240210241" ID="ID_213831335" MODIFIED="1575240228387" TEXT="es wird damit sogar viel sch&#xf6;ner...."/>
<node CREATED="1575240229191" ID="ID_1613381810" MODIFIED="1575240275180" TEXT="weil ja nun eigentlich &quot;die Widgets&quot; per generischem Handle geliefert werden"/>
<node CREATED="1575240261155" ID="ID_767586605" MODIFIED="1575240266665" TEXT="in neuer Reihenfolge ">
<icon BUILTIN="ksmiletris"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1575240305717" ID="ID_1992149674" MODIFIED="1575240717518" TEXT="relatives Verankern">
<icon BUILTIN="button_ok"/>
<node CREATED="1575240328218" ID="ID_154585759" MODIFIED="1575240345695">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ViewHooked wird nun zum <b>eigentlichen Front-End</b>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1575240582411" ID="ID_333144229" MODIFIED="1575240611444" TEXT="der ViewHook mu&#xdf; weiterhin die double-dispatch-Funktion (generisch) implementieren"/>
<node CREATED="1575240613131" ID="ID_1177550523" MODIFIED="1575558144539" TEXT="und es bleibt das gleiche Zugriffs-Problem bestehen">
<arrowlink COLOR="#b99d8f" DESTINATION="ID_1311566312" ENDARROW="Default" ENDINCLINATION="112;-141;" ID="Arrow_ID_1836497090" STARTARROW="None" STARTINCLINATION="-263;67;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d8ce8e" COLOR="#435e98" CREATED="1575240647678" ID="ID_356124839" MODIFIED="1575240690707" TEXT="also das ist jetz mal ein Design, das mir richtig gut gef&#xe4;llt">
<linktarget COLOR="#c1eb45" DESTINATION="ID_356124839" ENDARROW="Default" ENDINCLINATION="-876;36;" ID="Arrow_ID_522684276" SOURCE="ID_1146450018" STARTARROW="None" STARTINCLINATION="420;38;"/>
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1575240723741" HGAP="-92" ID="ID_1311566312" MODIFIED="1575558113173" TEXT="damit bleibt (wieder nur) das Zugriffs-Problem" VSHIFT="73">
<linktarget COLOR="#b99d8f" DESTINATION="ID_1311566312" ENDARROW="Default" ENDINCLINATION="112;-141;" ID="Arrow_ID_1836497090" SOURCE="ID_1177550523" STARTARROW="None" STARTINCLINATION="-263;67;"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1575240751305" ID="ID_1522311652" MODIFIED="1575240770023" TEXT="ich habe also jetzt ViewHook&lt;Clip&gt; eine Ebene hochgeschoben"/>
<node CREATED="1575240786532" ID="ID_1787997117" MODIFIED="1575240818729" TEXT="demnach m&#xfc;&#xdf;te nun der TrackBody an seinen Parent (=DisplayFrame rankommen)">
<icon BUILTIN="closed"/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1575240824295" ID="ID_895299596" MODIFIED="1575240844874" TEXT="AUA">
<icon BUILTIN="smily_bad"/>
</node>
<node CREATED="1575243069122" ID="ID_1544444255" MODIFIED="1575243101578" TEXT="mu&#xdf; ich jetzt auch den ViewHook&lt;TrackBody&gt; in den DisplayFrame hochschieben??">
<icon BUILTIN="help"/>
</node>
<node CREATED="1575558950482" ID="ID_1971888026" MODIFIED="1575566297637" TEXT="was f&#xfc;r M&#xf6;glichkeiten habe ich hier.....">
<node CREATED="1575558966759" ID="ID_1387494834" MODIFIED="1575559186143" TEXT="wer auch immer ViewHook&lt;Clip&gt; implementiert, mu&#xdf; die globale Referenz halten">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      wie ich's auch drehe und wende, daran f&#252;hrt kein Weg vorbei. Weil die Referenz eben nicht wirklich global ist, sondern einen root-Kontext darstellt (n&#228;mlich die umschlie&#223;ende Timeline).
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1575559189338" ID="ID_508619525" MODIFIED="1575561473297" TEXT="und diesen m&#xfc;ssen wir f&#xfc;r die &#xbb;Quer-Bewegung&#xab; auch selber erreichen k&#xf6;nnen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...also wenn wir ViewHook f&#252;r einen anderen Kinder-Typ brauchen
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1575561914272" ID="ID_1374284644" MODIFIED="1575561939182">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      fragt sich <i>von wem </i>wir dieses Hookable f&#252;r einen andern Typ bekommen
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1575566180271" ID="ID_176621579" MODIFIED="1575566192073" TEXT="systematisches Vorgehen ist &#xfc;ber den Vater"/>
<node CREATED="1575566412391" ID="ID_1169508306" MODIFIED="1575566415455" TEXT="Baumuster">
<node CREATED="1575566428429" ID="ID_1388581284" MODIFIED="1575566447758" TEXT="TrackBody ist Hub">
<node CREATED="1575566452714" ID="ID_222642690" MODIFIED="1575566508542" TEXT="er implementiert diverse ViewHook"/>
<node CREATED="1575566516521" ID="ID_448634950" MODIFIED="1575566530291" TEXT="aber ViewHook&lt;TrackHead&gt; ist au&#xdf;en vor"/>
<node CREATED="1575566573350" ID="ID_1319751632" MODIFIED="1575566581969" TEXT="man k&#xf6;nnte generisch quer-Navigieren">
<node CREATED="1575566591719" ID="ID_159346735" MODIFIED="1575566622379" TEXT="TrackBody -&gt; parent==ViewHook -&gt; Child-TrackBody(=hooked)"/>
<node CREATED="1575566626210" ID="ID_668544074" MODIFIED="1575566899896" TEXT="ist dann aber eigentlich redundant">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      denn wenn alle Methoden auf dem TrackBody liegen, kann man diese auch von au&#223;en direkt aufrufen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="smiley-neutral"/>
</node>
</node>
<node CREATED="1575566951102" ID="ID_1015186173" MODIFIED="1575566961313" TEXT="Vorteil: Implementierung ist lokal">
<node CREATED="1575566967870" ID="ID_332189375" MODIFIED="1575566971407" TEXT="nah an den Daten"/>
<node CREATED="1575566972523" ID="ID_994405337" MODIFIED="1575566977094" TEXT="Kapselung macht Sinn"/>
</node>
</node>
<node CREATED="1575567003652" ID="ID_1512925167" MODIFIED="1575567014083" TEXT="DisplayFrame ist Hub">
<linktarget COLOR="#c1eb45" DESTINATION="ID_1512925167" ENDARROW="Default" ENDINCLINATION="-919;120;" ID="Arrow_ID_141584628" SOURCE="ID_1776619352" STARTARROW="None" STARTINCLINATION="253;17;"/>
<font NAME="SansSerif" SIZE="12"/>
<node CREATED="1575567064023" ID="ID_76686633" MODIFIED="1575567071225" TEXT="er kann alle ViewHook implementieren"/>
<node CREATED="1575567072693" ID="ID_924709829" MODIFIED="1575567088431" TEXT="mu&#xdf; daf&#xfc;r aber die Widget-Komponenten zu Hilfe nehmen">
<node CREATED="1575567095418" ID="ID_77144446" MODIFIED="1575567134769" TEXT="TrackHead-Widget mu&#xdf; Kinder hinzuf&#xfc;gen/l&#xf6;schen"/>
<node CREATED="1575567163086" ID="ID_1288204921" MODIFIED="1575567173868" TEXT="TrackBody mu&#xdf; sub-Bodies verwalten"/>
<node CREATED="1575568155559" ID="ID_1687939618" MODIFIED="1575568163670" TEXT="TrackBody mu&#xdf; mit startLine_ helfen"/>
</node>
<node CREATED="1575567271739" ID="ID_1984519300" MODIFIED="1575567288468" TEXT="Nachteil: jede Implementierung ist &#xfc;ber ein Delegate aufgedoppelt"/>
<node CREATED="1575567212827" ID="ID_485232452" MODIFIED="1575567224029" TEXT="Vorteil: ein einziger API-Zugangspunkt"/>
<node CREATED="1575567369501" ID="ID_887475852" MODIFIED="1575567383327" TEXT="damit w&#xe4;re aber die Abstraktion insgesamt unn&#xf6;tig">
<node CREATED="1575567405016" ID="ID_1063862742" MODIFIED="1575567426746" TEXT="sie reduziert sich auf ein Baumuster oder Schema"/>
<node CREATED="1575567451546" ID="ID_44733153" MODIFIED="1575567459989" TEXT="Quer-Beweglichkeit wird nicht gebraucht"/>
</node>
</node>
<node CREATED="1575567467201" ID="ID_1069949271" MODIFIED="1575567481970" TEXT="Presenter ist Hub">
<node CREATED="1575567483982" ID="ID_1504212494" MODIFIED="1575567502728" TEXT="so auf den ersten Bilck die &quot;nat&#xfc;rlichste&quot; (naive) L&#xf6;sung"/>
<node CREATED="1575567512106" ID="ID_832303486" MODIFIED="1575567561873" TEXT="f&#xfc;r den Clip mu&#xdf; es sogar so sein">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      es sei denn, man packt dann den ViewHook in eine eigene Sub-Komponente
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1575567684219" ID="ID_1290720271" MODIFIED="1575567718882" TEXT="Subkomponenten werden reine Daten-Records">
<node CREATED="1575567721534" ID="ID_1940087241" MODIFIED="1575567728856" TEXT="Implementierung bleibt im Presenter"/>
<node CREATED="1575567729637" ID="ID_1789840142" MODIFIED="1575567750110" TEXT="und pfuscht in den Daten der Subkomponenten herum"/>
<node CREATED="1575567774463" ID="ID_245632912" MODIFIED="1575567786913" TEXT="oder zumindest der DisplayFrame ist eigentlich redundant dann"/>
</node>
</node>
<node CREATED="1575567820241" ID="ID_1754646137" MODIFIED="1575567827915" TEXT="ohne Hub arbeiten">
<node CREATED="1575567830495" ID="ID_1915385608" MODIFIED="1575567834642" TEXT="dann ist">
<node CREATED="1575567836054" ID="ID_1970611196" MODIFIED="1575573897945" TEXT="HeadWidget== ViewHook&lt;HeadWidget&gt;"/>
<node CREATED="1575567875297" ID="ID_250597251" MODIFIED="1575573902795" TEXT="TrackBody==ViewHook&lt;TrackBody&gt;"/>
<node CREATED="1575567918819" ID="ID_394065409" MODIFIED="1575573916225" TEXT="DisplayFrame== delegierendes ViewHook Widget-&gt;Canvas"/>
</node>
<node CREATED="1575572351704" ID="ID_495661835" MODIFIED="1575578991270" TEXT="DisplayFrame braucht Hilfe vom TrackBody f&#xfc;r die Koordinaten"/>
<node CREATED="1575572208718" ID="ID_1348762816" MODIFIED="1575572218384" TEXT="Quer-Bewegung generisch nicht m&#xf6;glich">
<node CREATED="1575572230080" ID="ID_960143192" MODIFIED="1575572242283" TEXT="HeadWidget -&gt; HeadWidget : ja"/>
<node CREATED="1575572244839" ID="ID_1428458926" MODIFIED="1575572249394" TEXT="dto f&#xfc;r TrackBody"/>
<node CREATED="1575572250135" ID="ID_1947902368" MODIFIED="1575572281213" TEXT="aber TrackBody -&gt; Clip : nein"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1575579000019" ID="ID_61935554" MODIFIED="1575579470137" TEXT="Fazit: keine Quer-Beweglichkeit">
<linktarget COLOR="#8e253d" DESTINATION="ID_61935554" ENDARROW="Default" ENDINCLINATION="-750;14;" ID="Arrow_ID_588110348" SOURCE="ID_912776786" STARTARROW="Default" STARTINCLINATION="827;0;"/>
<linktarget COLOR="#8e253d" DESTINATION="ID_61935554" ENDARROW="Default" ENDINCLINATION="-750;14;" ID="Arrow_ID_157891410" SOURCE="ID_1941316386" STARTARROW="None" STARTINCLINATION="111;10;"/>
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="stop-sign"/>
<node CREATED="1575579010066" ID="ID_508240119" MODIFIED="1575579021148" TEXT="entweder sie ist w&#xfc;nschenswert aber nicht realisierbar"/>
<node CREATED="1575579022092" ID="ID_1571784139" MODIFIED="1575579029890" TEXT="oder sie ist realisierbar aber nicht notwendig"/>
</node>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#c23d5c" CREATED="1575579158699" ID="ID_912776786" MODIFIED="1575579350247" TEXT="Fazit: nicht relisierbar und nicht notwendig">
<arrowlink COLOR="#8e253d" DESTINATION="ID_61935554" ENDARROW="Default" ENDINCLINATION="-750;14;" ID="Arrow_ID_588110348" STARTARROW="Default" STARTINCLINATION="827;0;"/>
<linktarget COLOR="#b80305" DESTINATION="ID_912776786" ENDARROW="Default" ENDINCLINATION="-582;30;" ID="Arrow_ID_739783685" SOURCE="ID_1550703494" STARTARROW="None" STARTINCLINATION="212;897;"/>
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="stop-sign"/>
<node CREATED="1575579329678" HGAP="38" ID="ID_965561857" MODIFIED="1575579364023" TEXT="nur als generisches Schema n&#xfc;tzlich" VSHIFT="20">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1611437583831" HGAP="33" ID="ID_149706819" MODIFIED="1611438463655" TEXT="aber diverse Design-Verbesserungen bleiben" VSHIFT="8">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ....durch den Versuch, &quot;die Hooks&quot; zu einem allgemeinem Gui-Konstruktionsframework mit double-Dispatch auszubauen, habe ich das bestehende Design erheblich gesch&#228;rft, und f&#252;r einige Teilaspekte viel sinnigere L&#246;sungen gefunden. Am Ende hat sich gezeigt, da&#223; meine Vision nicht realisierbar ist, und zwar fehlte eigentlich nur &quot;eine ganz kleine L&#252;cke&quot; &#8213; aber ich bin erfahren genug, um zu wissen, da&#223; man eine solche Situation nicht <i>durch Zaubertricks retten</i>&#160;kann. Daher habe ich diese Vision in aller Form begraben, aber die Design-Verbesserungen entsprechend heruntergestuft und so erhalten.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
<node CREATED="1611437583831" HGAP="41" ID="ID_1146450018" MODIFIED="1611438446847" TEXT="Widget selber als ViewHooked" VSHIFT="33">
<arrowlink COLOR="#c1eb45" DESTINATION="ID_356124839" ENDARROW="Default" ENDINCLINATION="-876;36;" ID="Arrow_ID_522684276" STARTARROW="None" STARTINCLINATION="420;38;"/>
</node>
<node CREATED="1611437583831" HGAP="35" ID="ID_1776619352" MODIFIED="1611438451215" TEXT="DisplayFrame ist/bleibt zentraler Vermittler" VSHIFT="-1">
<arrowlink COLOR="#c1eb45" DESTINATION="ID_1512925167" ENDARROW="Default" ENDINCLINATION="-919;120;" ID="Arrow_ID_141584628" STARTARROW="None" STARTINCLINATION="253;17;"/>
</node>
<node CREATED="1611437583831" HGAP="51" ID="ID_1508786364" MODIFIED="1611438457158" TEXT="es sind zwei nahezu getrennte Belange" VSHIFT="-2">
<arrowlink COLOR="#c1eb45" DESTINATION="ID_1344785124" ENDARROW="Default" ENDINCLINATION="-706;53;" ID="Arrow_ID_1568915503" STARTARROW="None" STARTINCLINATION="731;48;"/>
<node CREATED="1611438384466" HGAP="34" ID="ID_591262659" MODIFIED="1611438409972" TEXT="Subtrack in Grid-Layout" VSHIFT="27"/>
<node CREATED="1611438377955" ID="ID_105340776" MODIFIED="1611438383736" TEXT="Clip an Canvas"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1575057178202" ID="ID_1208770677" MODIFIED="1678382938128" TEXT="relatives Positionieren">
<linktarget COLOR="#4f94d2" DESTINATION="ID_1208770677" ENDARROW="Default" ENDINCLINATION="207;339;" ID="Arrow_ID_1505912691" SOURCE="ID_802422598" STARTARROW="None" STARTINCLINATION="-349;-21;"/>
<linktarget COLOR="#4567f1" DESTINATION="ID_1208770677" ENDARROW="Default" ENDINCLINATION="-696;74;" ID="Arrow_ID_1555581659" SOURCE="ID_969058360" STARTARROW="None" STARTINCLINATION="1109;48;"/>
<icon BUILTIN="hourglass"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1582410135584" ID="ID_460685639" MODIFIED="1582410225517" TEXT="#1207 relative attachment and (custom) drawing of sub-widgets">
<icon BUILTIN="flag-yellow"/>
</node>
<node CREATED="1575057198430" ID="ID_1171619130" MODIFIED="1575057213917" TEXT="neues ViewHooked relativ zu einem Bezugs-ViewHooked">
<node CREATED="1575057268873" ID="ID_827160586" MODIFIED="1575566385152" TEXT="das k&#xf6;nnte Quer-Beweglichkeit zwischen Typen implizieren">
<arrowlink COLOR="#146b9a" DESTINATION="ID_1565606328" ENDARROW="Default" ENDINCLINATION="-218;27;" ID="Arrow_ID_1877360800" STARTARROW="None" STARTINCLINATION="-76;-196;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1575579158699" ID="ID_1941316386" MODIFIED="1575579470137" TEXT="diese ist aber nicht realisierbar">
<arrowlink COLOR="#8e253d" DESTINATION="ID_61935554" ENDARROW="Default" ENDINCLINATION="-750;14;" ID="Arrow_ID_157891410" STARTARROW="None" STARTINCLINATION="111;10;"/>
<font NAME="SansSerif" SIZE="12"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1575057228579" ID="ID_795117396" MODIFIED="1575578199510" TEXT="Frage: ist diese Relation nur transient (pro Aufruf)?">
<icon BUILTIN="help"/>
<node CREATED="1575578007856" ID="ID_439314478" MODIFIED="1575578191294" TEXT="geht es nur um ein implizit hereingereichtes Koordinatensystem">
<icon BUILTIN="forward"/>
</node>
<node CREATED="1575578027621" ID="ID_1172679585" MODIFIED="1575578188347" TEXT="oder gibt es eine r&#xfc;ckw&#xe4;rts-Verzeigerung auf den Vaterknoten?">
<icon BUILTIN="button_cancel"/>
</node>
</node>
<node CREATED="1575578203678" ID="ID_340739196" MODIFIED="1575578346354" TEXT="Gefahr aufgedoppelter Systeme">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1575580959187" ID="ID_936515442" MODIFIED="1678382955232" TEXT="damit besser lokal implementieren">
<icon BUILTIN="yes"/>
<node CREATED="1575580975033" ID="ID_1555659203" MODIFIED="1575580996268" TEXT="d.h. als ein Implementierungsdetail f&#xfc;r einen speziellen Typ"/>
<node CREATED="1575580999173" ID="ID_1385039665" MODIFIED="1575581013895" TEXT="das ist dann eine dekorierende/delegierende Implementierung"/>
<node CREATED="1575581015219" ID="ID_1015965713" MODIFIED="1575581026974" TEXT="f&#xfc;r den Widget -&gt; Canvas - Fall"/>
</node>
<node COLOR="#338800" CREATED="1678383001172" ID="ID_1151442798" MODIFIED="1678383448071" TEXT="Konzept inzwischen grunds&#xe4;tzlich klar">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      und funktioniert gut f&#252;r Clip-Widgets auf der Timeline
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1666371419810" ID="ID_613160281" MODIFIED="1678383462720" TEXT="sicherstellen da&#xdf; dieses Konzept auch in den Overview-Rulern funktioniert">
<linktarget COLOR="#b12c6e" DESTINATION="ID_613160281" ENDARROW="Default" ENDINCLINATION="-858;-29;" ID="Arrow_ID_1531249433" SOURCE="ID_306927735" STARTARROW="None" STARTINCLINATION="-361;27;"/>
<icon BUILTIN="bell"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1675386676167" ID="ID_235963160" MODIFIED="1675387243008" TEXT="aktuell noch nicht klar welchen Content es hier geben wird">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      2/2023
    </p>
    <ul>
      <li>
        diff-Binding UNIMPLEMENTED
      </li>
      <li>
        TrackBody hat eine Collection vector&lt;unique_ptr&lt;RulerTrack&gt;&gt;
      </li>
      <li>
        er verwendet diesen bisher aber nur, um die vertikale Ausdehnung zu berechnen
      </li>
    </ul>
  </body>
</html></richcontent>
<linktarget COLOR="#e6345a" DESTINATION="ID_235963160" ENDARROW="Default" ENDINCLINATION="127;6;" ID="Arrow_ID_517947545" SOURCE="ID_284910451" STARTARROW="None" STARTINCLINATION="99;-7;"/>
<icon BUILTIN="hourglass"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1675386889583" ID="ID_842520211" MODIFIED="1675386896697" TEXT="#1270 CanvasHook f&#xfc;r Ruler">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1675387040398" ID="ID_184557686" MODIFIED="1675387059617" TEXT="DisplayFrame::getClipHook() &#x27fc; liefert DisplayFrame selber"/>
<node CREATED="1675387061219" ID="ID_317712434" MODIFIED="1675387122437" TEXT="&#x27f9; DisplayFrame implementiert CanvasHook nur f&#xfc;r eigentlichen Track-Content">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <font face="Monospaced" color="#312a7f">int hookAdjY (int yPos)&#160;&#160;override { return yPos + body_.getContentOffsetY(); };</font>
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1675387200347" ID="ID_284910451" MODIFIED="1675387251007" TEXT="TODO: Zugriffsweg f&#xfc;r Content definieren">
<arrowlink COLOR="#e6345a" DESTINATION="ID_235963160" ENDARROW="Default" ENDINCLINATION="127;6;" ID="Arrow_ID_517947545" STARTARROW="None" STARTINCLINATION="99;-7;"/>
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1675387257113" ID="ID_324465991" MODIFIED="1675387413606" TEXT="Anhaltspunkt: TreeMutator f&#xfc;r Clips im TrackPresenter">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      dieser greift im &#187;Constructor&#171; binding...
    </p>
    <ul>
      <li>
        vom TrackPresenter auf den DisplayFrame zu, um sich dort den CanvasHook zu holen (das ist der DisplayFrame selber, was aber opaque bleibt)
      </li>
      <li>
        und gibt eine Referenz auf diesen CanvasHook dann an den ClipPresenter-ctor weiter....
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1576757730509" FOLDED="true" ID="ID_1949130658" MODIFIED="1612002019554" TEXT="&#xbb;Widget-Position&#xab; heraus-abstrahieren">
<linktarget COLOR="#47cdcd" DESTINATION="ID_1949130658" ENDARROW="Default" ENDINCLINATION="-1150;77;" ID="Arrow_ID_662295339" SOURCE="ID_730955223" STARTARROW="None" STARTINCLINATION="877;53;"/>
<linktarget COLOR="#605bb8" DESTINATION="ID_1949130658" ENDARROW="Default" ENDINCLINATION="204;611;" ID="Arrow_ID_993970158" SOURCE="ID_1816490333" STARTARROW="None" STARTINCLINATION="299;12;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1576757867075" ID="ID_1947629675" MODIFIED="1576757891150" TEXT="der Themenkomplex &quot;move()&quot; steht isoliert da">
<icon BUILTIN="idea"/>
<node CREATED="1576757893399" ID="ID_309464876" MODIFIED="1576757905274" TEXT="eigentlich ein orthogonaler Belang"/>
<node CREATED="1576757919627" ID="ID_1712747746" MODIFIED="1576757937781" TEXT="tifft nur auf Widgets zu"/>
<node CREATED="1576757938869" ID="ID_89045363" MODIFIED="1576757947183" TEXT="k&#xf6;nnte man nach innen weg abstrahieren?"/>
</node>
<node COLOR="#435e98" CREATED="1576757948912" ID="ID_441928116" MODIFIED="1584894637483" TEXT="Idee: Spezialisierung f&#xfc;r Positioned&lt;Widget&gt;">
<icon BUILTIN="idea"/>
<node COLOR="#435e98" CREATED="1576973905681" ID="ID_1230527469" MODIFIED="1584894640972" TEXT="Frage: sollte das seine Position kennen?">
<icon BUILTIN="help"/>
</node>
<node COLOR="#990000" CREATED="1584889312752" ID="ID_606340373" MODIFIED="1584894649772" TEXT="Problem: redundante Storage ">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1584889354160" ID="ID_1826251720" MODIFIED="1584889364042" TEXT="immer genau wenn es attached ist"/>
<node CREATED="1584889364726" ID="ID_1490833507" MODIFIED="1584889375017" TEXT="sind seine Koordinaten im Canvas gespeichert"/>
</node>
<node COLOR="#338800" CREATED="1584889393669" ID="ID_444152936" MODIFIED="1584894656821" TEXT="eigenes Interface -- n&#xe4;her am DisplayManager">
<icon BUILTIN="button_ok"/>
<node CREATED="1584889606542" MODIFIED="1584889606542" TEXT="man k&#xf6;nnte es sogar direkt in den display-manager.hpp packen"/>
<node CREATED="1584889606543" MODIFIED="1584889606543" TEXT="allerdings spielt es oft die Rolle eines &quot;vereinfachten DisplayManager&quot;"/>
<node CREATED="1584889606544" ID="ID_298422140" MODIFIED="1584889621323" TEXT="und daher dann doch besser in einem eigenen Header"/>
<node CREATED="1584889621957" ID="ID_814318826" MODIFIED="1584889641912" TEXT="und ohne die Abh&#xe4;ngigkeit auf Gtk::Widget">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      erleichtert das Testen
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1584894608428" ID="ID_1214957016" MODIFIED="1584932472009" TEXT="Sub-Interface CanvasHooked herausl&#xf6;sen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1584894703681" ID="ID_101352353" MODIFIED="1584894725463" TEXT="ViewHook / CanvasHook">
<icon BUILTIN="button_ok"/>
<node CREATED="1584894715892" ID="ID_70510619" MODIFIED="1584894722576" TEXT="oh Ja... viel sch&#xf6;ner">
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node COLOR="#338800" CREATED="1584894728286" ID="ID_414399172" MODIFIED="1584894738145" TEXT="Test umschreiben auf CanvasHook">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1584894739041" ID="ID_1191395338" MODIFIED="1584932467447" TEXT="separaten Test f&#xfc;r den Basis-Fall">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1584894751623" ID="ID_674921950" MODIFIED="1584932474570" TEXT="Interfaces in DisplayManager differenzieren">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1584894766013" ID="ID_1003825239" MODIFIED="1584932476358" TEXT="Interfaces im TrackPresenter differenzieren">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1584894775935" ID="ID_241955108" MODIFIED="1584932477944" TEXT="Interfaces im ClipPresenter differenzieren">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1584932523675" ID="ID_715711411" MODIFIED="1584932535644" TEXT="hat auf allen Ebenen den Code verbessert">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="yes"/>
</node>
<node COLOR="#435e98" CREATED="1612002421081" ID="ID_704646941" MODIFIED="1666477585185">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      aber dieses Design ist <i>schief</i>
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#ab3058" DESTINATION="ID_704646941" ENDARROW="Default" ENDINCLINATION="434;181;" ID="Arrow_ID_932322384" SOURCE="ID_781800644" STARTARROW="None" STARTINCLINATION="240;20;"/>
<icon BUILTIN="broken-line"/>
<node CREATED="1612002459090" ID="ID_336676484" MODIFIED="1612002485623" TEXT="und zwar die Code-reuse-Inheritance">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1612002487402" ID="ID_922768406" MODIFIED="1612002504506" TEXT="dadurch sind beide Belange &#xfc;bereinander geschichtet"/>
<node COLOR="#690f14" CREATED="1612002505382" ID="ID_1693567978" MODIFIED="1666475856413" TEXT="Bug: deshalb wird ein Widget zweimal an den Canvas geheftet">
<linktarget COLOR="#c16b96" DESTINATION="ID_1693567978" ENDARROW="Default" ENDINCLINATION="223;491;" ID="Arrow_ID_624678696" SOURCE="ID_1950742827" STARTARROW="None" STARTINCLINATION="1328;54;"/>
<icon BUILTIN="broken-line"/>
</node>
<node COLOR="#435e98" CREATED="1666475819996" ID="ID_684542599" MODIFIED="1666475939536" TEXT="gel&#xf6;st durch komplette Trennung ViewHook und CanvasHook">
<arrowlink DESTINATION="ID_1362647591" ENDARROW="Default" ENDINCLINATION="97;5;" ID="Arrow_ID_1885653608" STARTARROW="None" STARTINCLINATION="1;13;"/>
</node>
</node>
<node COLOR="#338800" CREATED="1612008761963" ID="ID_1362647591" MODIFIED="1612008774354" TEXT="die beiden Varianten komplett voneinander getrennt">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1362647591" ENDARROW="Default" ENDINCLINATION="97;5;" ID="Arrow_ID_1885653608" SOURCE="ID_684542599" STARTARROW="None" STARTINCLINATION="1;13;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1575057172259" ID="ID_1193961919" MODIFIED="1575670553256" TEXT="Umordnen">
<linktarget COLOR="#507b9b" DESTINATION="ID_1193961919" ENDARROW="Default" ENDINCLINATION="-877;88;" ID="Arrow_ID_1469804818" SOURCE="ID_876124745" STARTARROW="None" STARTINCLINATION="576;33;"/>
<linktarget COLOR="#507b9b" DESTINATION="ID_1193961919" ENDARROW="Default" ENDINCLINATION="-877;88;" ID="Arrow_ID_624713040" SOURCE="ID_673183519" STARTARROW="None" STARTINCLINATION="483;9;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1575057384974" FOLDED="true" ID="ID_1385277309" MODIFIED="1576973973893" TEXT="komplexe Interaktion, die den ViewHook nur involviert">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1575057402196" ID="ID_876005200" MODIFIED="1575057410423" TEXT="auch eine Vater-Kinder-Manipulation"/>
<node CREATED="1575057430215" ID="ID_581733037" MODIFIED="1575062500354" TEXT="Ablauf einer Umordnung">
<node CREATED="1575057417551" ID="ID_1701493626" MODIFIED="1575057429828" TEXT="Vater wird &#xfc;ber Struktur-&#xc4;nderung der Kinder informiert"/>
<node CREATED="1575059512193" ID="ID_921856520" MODIFIED="1575062511751" TEXT="zwei L&#xf6;sungswege">
<node CREATED="1575059518703" ID="ID_1764144586" MODIFIED="1575059524142" TEXT="Ansatz-1">
<node CREATED="1575059530358" ID="ID_404301157" MODIFIED="1575059537927" TEXT="Vater iteriert &#xfc;ber Kinder in neuer Reihenfolge"/>
<node CREATED="1575059541155" ID="ID_610399981" MODIFIED="1575059580051" TEXT="Vater f&#xfc;gt jedes Kind neu ein">
<node CREATED="1575059581239" ID="ID_754785544" MODIFIED="1575059601896" TEXT="Variante-a: an einer explizit angegebnen Stelle"/>
<node CREATED="1575059611327" ID="ID_459563354" MODIFIED="1575059649370" TEXT="Variante-b: an einer generischen (mitwandernden) Einf&#xfc;gestelle">
<node CREATED="1575059653776" ID="ID_619380343" MODIFIED="1575059668559" TEXT="OutputIterator"/>
<node CREATED="1575060060671" ID="ID_489178340" MODIFIED="1575060070529" TEXT="nat&#xfc;rlicherweise (implizit) am Ende"/>
</node>
</node>
</node>
<node CREATED="1575059691448" ID="ID_420302373" MODIFIED="1575059695411" TEXT="Ansatz-2">
<node CREATED="1575059732675" ID="ID_719030510" MODIFIED="1575059745812" TEXT="Vater teilt einem geeigneten API die neue Reihenfolge mit"/>
<node CREATED="1575059756079" ID="ID_1636730345" MODIFIED="1575059762339" TEXT="hier zu kl&#xe4;ren...">
<node CREATED="1575059763481" ID="ID_550480062" MODIFIED="1575059844065" TEXT="wer tr&#xe4;gt das &quot;geeignete API&quot;?">
<icon BUILTIN="help"/>
<node CREATED="1575059772989" ID="ID_1511886975" MODIFIED="1575059778050" TEXT="das ViewHooked?"/>
<node CREATED="1575059778756" ID="ID_649016277" MODIFIED="1575059786031" TEXT="der ViewHook?"/>
<node CREATED="1575059787307" ID="ID_358129647" MODIFIED="1575059818627" TEXT="ein globaler Service?"/>
<node CREATED="1575059827654" ID="ID_1326854368" MODIFIED="1575059833698" TEXT="ein sonstwie bekannter Partner?"/>
</node>
<node CREATED="1575059851539" ID="ID_1623871336" MODIFIED="1575059862540" TEXT="wie ist die Reihenfolge gegeben?">
<icon BUILTIN="help"/>
<node CREATED="1575059874351" ID="ID_1396733200" MODIFIED="1575059902344" TEXT="als Index-Nummern der alten Ordnungs-Sequenz?">
<node CREATED="1575059903491" ID="ID_1689949230" MODIFIED="1575059908027" TEXT="d.h. als Permutation"/>
</node>
<node CREATED="1575059916074" ID="ID_186282838" MODIFIED="1575059947348" TEXT="als neue Positionsnummer auf dem jeweiligen Kind (=ViewHooked)?"/>
<node CREATED="1575059954461" ID="ID_469326705" MODIFIED="1575059965348" TEXT="als Iterator&lt;ViewHooked&gt;"/>
</node>
<node CREATED="1575062320101" ID="ID_1222751501" MODIFIED="1575062382290" TEXT="wer treibt das neu-Einf&#xfc;gen?">
<icon BUILTIN="help"/>
<node CREATED="1575062383956" ID="ID_886243501" MODIFIED="1575062394950" TEXT="der Vater (push)?"/>
<node CREATED="1575062395713" ID="ID_1131423486" MODIFIED="1575062416276" TEXT="der Empf&#xe4;nger der neuen Ordnung (pull)?"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1575062926828" ID="ID_1755767601" MODIFIED="1575670525681" TEXT="geeignete Form finden">
<icon BUILTIN="button_ok"/>
<node CREATED="1575062976413" ID="ID_332468301" MODIFIED="1575062979193" TEXT="Diskussion">
<node CREATED="1575062980979" ID="ID_1034492398" MODIFIED="1575062997550" TEXT="Ansatz-1 Variante-b">
<node CREATED="1575063012169" ID="ID_1112616431" MODIFIED="1575063016956" TEXT="erscheint nat&#xfc;rlich"/>
<node CREATED="1575063075462" ID="ID_1658596486" MODIFIED="1575063094666" TEXT="zwei Auspr&#xe4;gungen m&#xf6;glich">
<node CREATED="1575063095757" ID="ID_1339415707" MODIFIED="1575063137739" TEXT="Auspr&#xe4;gung &#x3b1;">
<node CREATED="1575063150438" ID="ID_1366830537" MODIFIED="1575063158185" TEXT="Vater hat Zugang zum ViewHook"/>
<node CREATED="1575063163433" ID="ID_275623631" MODIFIED="1576282358093" TEXT="was grunds&#xe4;tzlich der Fall sein mu&#xdf;">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...weil der Vater ja auch neue Kinder &quot;hooken&quot;&#160;kann
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1575063138735" ID="ID_1205459588" MODIFIED="1575063142611" TEXT="Auspr&#xe4;gung &#x3b2;">
<node CREATED="1575063213437" ID="ID_45088920" MODIFIED="1575653931186" TEXT="ViewHooked bietet eine rehook()-Operation an"/>
<node CREATED="1575063249066" ID="ID_1247469918" MODIFIED="1576282358092" TEXT="das l&#xf6;st das Problem des atomaren Umh&#xe4;ngens">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      d.h. zugleich wird die alte Verbindung gel&#246;st und die neue konstruiert
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
<node CREATED="1575063323319" ID="ID_1005995191" MODIFIED="1575063331122" TEXT="Ansatz-2 Iterator-Variante">
<node CREATED="1575063332677" ID="ID_502498553" MODIFIED="1575063341072" TEXT="erscheint architektonisch geradlinig">
<node CREATED="1575063400796" ID="ID_247534963" MODIFIED="1575063415462" TEXT="nur der Vater kennt die konkrete Kind-Collection"/>
<node CREATED="1575063417093" ID="ID_540147437" MODIFIED="1575063426861" TEXT="das Umh&#xe4;ngen ist dann aber eine einzige Operation"/>
</node>
<node CREATED="1575063438812" ID="ID_867929873" MODIFIED="1575063465918" TEXT="das Umh&#xe4;ngen ist dann vom ViewHook zu leisten"/>
</node>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1575063488816" ID="ID_1685904360" MODIFIED="1575063652942" TEXT="Entscheidung">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node CREATED="1575063493532" ID="ID_1153540378" MODIFIED="1575063501539" TEXT="neige der Iterator-Variante zu"/>
<node CREATED="1575063552664" ID="ID_485217910" MODIFIED="1575653993146" TEXT="mit PULL durch den ViewHook"/>
</node>
</node>
<node CREATED="1575062533708" ID="ID_246125405" MODIFIED="1575062538774" TEXT="Effekt am Ende">
<node CREATED="1575062539783" ID="ID_1502077216" MODIFIED="1575062550138" TEXT="die bestehenden, angebundenen Entit&#xe4;ten..."/>
<node CREATED="1575062551054" ID="ID_472742450" MODIFIED="1575062580390" TEXT="bestehen weiter, einschlie&#xdf;lich aller iherer Kinder"/>
<node CREATED="1575062582191" ID="ID_1988970307" MODIFIED="1575062609909" TEXT="wurde jedoch mit dem Anf&#xfc;ge-Mechanismus erneut platziert"/>
<node CREATED="1575062611574" ID="ID_1786392621" MODIFIED="1575062625733" TEXT="und au&#xdf;erdem (vorher/nachher) aus der alten Platzierung herausgel&#xf6;st"/>
</node>
</node>
<node CREATED="1575062654000" ID="ID_491999909" MODIFIED="1575062874337" TEXT="Fehlerbehandlung">
<icon BUILTIN="yes"/>
<node CREATED="1575062659140" ID="ID_1145995477" MODIFIED="1576282358092" TEXT="im Regelfall ist die Umordnung erfolgreich">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      es gibt keinen prinzipiellen Grund, warum sie scheitern k&#246;nnte
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1575062711080" ID="ID_883309689" MODIFIED="1575062740669" TEXT="die Umordnung findet in einer UI-Aktion statt"/>
<node CREATED="1575062743864" ID="ID_1277056906" MODIFIED="1575062754750" TEXT="alle anderen UI-Aktionen ruhen w&#xe4;hrenddessen"/>
<node CREATED="1575062772988" ID="ID_1056250153" MODIFIED="1575062785175" TEXT="alle Seiteneffekte und Nebenl&#xe4;ufigkeiten k&#xf6;nnen ignoriert werden"/>
<node CREATED="1575062787206" ID="ID_41541395" MODIFIED="1575062803994" TEXT="alle Konsequenzen der neu-Einf&#xfc;gung wirken sich erst nach Abschlu&#xdf; der Umordnung aus"/>
<node CREATED="1575062831427" ID="ID_147124730" MODIFIED="1575062863316" TEXT="auftretende Probleme sind fatal, korrumpieren das UI und beenden daher die Applikation">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1575063747039" ID="ID_46486640" MODIFIED="1575670509535" TEXT="versuchsweise (im Test) zu implementieren">
<arrowlink COLOR="#4983c7" DESTINATION="ID_1374959238" ENDARROW="Default" ENDINCLINATION="-123;-10;" ID="Arrow_ID_463400867" STARTARROW="None" STARTINCLINATION="-428;25;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1575063819852" FOLDED="true" ID="ID_1018000905" MODIFIED="1576973963964" TEXT="versuchsweise f&#xfc;r Track-Head und Track-Body zu konkretisieren">
<arrowlink COLOR="#261eb7" DESTINATION="ID_237283777" ENDARROW="Default" ENDINCLINATION="551;-700;" ID="Arrow_ID_119083900" STARTARROW="None" STARTINCLINATION="-962;0;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1575132495642" ID="ID_1247972866" MODIFIED="1575132530605" TEXT="Konsequenzen">
<icon BUILTIN="idea"/>
<node COLOR="#338800" CREATED="1575129919632" ID="ID_802422598" MODIFIED="1576973941306" TEXT="verlangt nach einem parent-ViewHooked">
<arrowlink COLOR="#4f94d2" DESTINATION="ID_1208770677" ENDARROW="Default" ENDINCLINATION="207;339;" ID="Arrow_ID_1505912691" STARTARROW="None" STARTINCLINATION="-349;-21;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1575133551292" ID="ID_835255010" MODIFIED="1575133568929" TEXT="das verschachtelte &quot;Einh&#xe4;keln&quot; abstrahiert">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1575133607557" ID="ID_72044277" MODIFIED="1575133623289" TEXT="mu&#xdf; (wohl) seinen eigenen Parent gar nicht kennen"/>
</node>
<node CREATED="1575132407767" ID="ID_29287629" MODIFIED="1575132523987" TEXT="ViewHook ist selber hierarchisch">
<linktarget COLOR="#3c3061" DESTINATION="ID_29287629" ENDARROW="Default" ENDINCLINATION="-725;0;" ID="Arrow_ID_1727524131" SOURCE="ID_1273254233" STARTARROW="None" STARTINCLINATION="-243;9;"/>
<icon BUILTIN="yes"/>
<node CREATED="1575132543936" ID="ID_427533687" MODIFIED="1576282358091" TEXT="im urspr&#xfc;nglichen Design hat mich der Canvas auf eine falsche Spur geschickt">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      denn auch der Canvas ist ein Gtk::Container und hat eine Liste von Widgets
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1575132576721" ID="ID_386992526" MODIFIED="1575132611477" TEXT="der Canvas-Fall ist n&#xe4;mlich ehr die Ausnahme: hier brauche ich nur den Zugang"/>
<node CREATED="1575132621739" ID="ID_1654720759" MODIFIED="1575654907535" TEXT="ViewHook mu&#xdf; anh&#xe4;ngen k&#xf6;nnen">
<node CREATED="1575132630180" ID="ID_1788883872" MODIFIED="1575132645504" TEXT="daher mu&#xdf; es auf der jeweilgen Vater-Ebene liegen"/>
<node CREATED="1575132646516" ID="ID_252396856" MODIFIED="1575132656503" TEXT="und damit das Korrelat der Kinder als Collection halten"/>
</node>
</node>
<node CREATED="1575133264914" ID="ID_1326993395" MODIFIED="1575133268453" TEXT="offen bleibt">
<node CREATED="1575133269937" ID="ID_94504130" MODIFIED="1575133810751" TEXT="genaue Rolle f&#xfc;r den Canvas-Fall">
<node CREATED="1575133484429" ID="ID_1038579760" MODIFIED="1575133496775" TEXT="ist vermutlich gar nicht zu kl&#xe4;ren"/>
<node CREATED="1575133497534" ID="ID_1220643531" MODIFIED="1575133517054" TEXT="weil wir in diesem Fall weder Hierarchie noch Umordnen ben&#xf6;tigen"/>
<node CREATED="1611434912899" ID="ID_625634456" MODIFIED="1611435039862" TEXT="nebenbei bemerkt: auch der Canvas-Fall ist letztlich verschachtelt/hierarchisch">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...insofern n&#228;mlich auf dem Canvas einzelne Clip-Widgets liegen, und diese k&#246;nnen wiederum einen eingebetteten Canvas haben, den man ggfs auch in Form eines nested ViewHook handhaben m&#246;chte. Die Details dazu sind aber im Moment noch nebul&#246;s, und ich sollte diesem Fall (noch) nicht zu viel Beachtung schenken.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1575577935290" ID="ID_1062727687" MODIFIED="1575577945740" TEXT="wie viel Abstraktion ist hilfreich/notwendig?"/>
</node>
<node CREATED="1666476057276" ID="ID_1151114899" MODIFIED="1666476103630" TEXT="es sind also zwei getrennte (strukturell &#xe4;nliche F&#xe4;lle)">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...und letztlich habe ich sie auch im Code komplett getrennt. CanvasHook und ViewHook haben nichts (mehr) miteinander zu tun
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
<node CREATED="1575580539468" ID="ID_24590290" MODIFIED="1575580543581" TEXT="Fazit">
<icon BUILTIN="forward"/>
<node CREATED="1575580549178" ID="ID_1674450886" MODIFIED="1575580561759" TEXT="es ist h&#xf6;chstens ein Baumuster"/>
<node CREATED="1575580565313" ID="ID_402497986" MODIFIED="1575580575171" TEXT="dieses kann durch generische Interfaces markiert werden"/>
<node CREATED="1575580576263" ID="ID_1283152567" MODIFIED="1575580591992" TEXT="an Kernfunktionalit&#xe4;t bleibt aber eigentlich nur ein smart-Handle &#xfc;brig"/>
</node>
</node>
<node COLOR="#338800" CREATED="1573242004064" FOLDED="true" ID="ID_1106243162" MODIFIED="1576166469126" TEXT="Lib-Implementierung">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1573242012238" ID="ID_870466825" MODIFIED="1573242115695" TEXT="halb generisch, halb OO"/>
<node COLOR="#990000" CREATED="1573242085554" ID="ID_1566257148" MODIFIED="1573242111268" TEXT="Ctor auf Friend limitiert">
<icon BUILTIN="button_cancel"/>
<node CREATED="1573242119197" ID="ID_1160468015" MODIFIED="1576282358091" TEXT="geht nicht ohne Weiteres">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      &quot;the children of your friends ain't necessarily your friends&quot;
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1573242125353" ID="ID_1681214217" MODIFIED="1576282358091" TEXT="KISS">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...sonst m&#252;&#223;te man das Einf&#252;gen als eine weitere (protected)-Operation auf dem ViewHook ausdr&#252;cken und k&#246;nnte dann die Erzeugung des ViewHooked fest in den ViewHook ABC implementieren....
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#338800" CREATED="1573242026324" ID="ID_760500508" MODIFIED="1573242047152" TEXT="verkapselte Ptr / Referenz">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1573242048514" ID="ID_1803806630" MODIFIED="1573242060330" TEXT="automatische Deregistrierung">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1575580315474" ID="ID_543063249" MODIFIED="1576282358090" TEXT="Neuordnung Namen und Interfaces (nach Analyse)">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...hab mich davon &#252;berzeugt, da&#223; die Namen <i>anders herum </i>verwendet werden sollten.
    </p>
    <p>
      Das h&#228;ngt auch damit zusammen, da&#223; in der Praxsis die ursp&#252;nglich konzipierte &#187;Beziehungs-Entit&#228;t&#171; niemals eigens und eigenst&#228;ndig auftretend wird; vielmehr bekommen wir es mit einem speziellen Dekorator zu tun. Und dieser wird besser <b>ViewHooked</b>&lt;X&gt; hei&#223;en. Damit ist das bisher schon verwirrend benannte &quot;ViewHookable&quot; komplett daneben, und es erscheint viel sinnvoller, diesem den titelgebenenden Namen <b>ViewHook</b>&#160; zu zuzuordnen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1575667886287" FOLDED="true" ID="ID_1416159951" MODIFIED="1582835881291" TEXT="Umbau auf ein ViewHooked&lt;W&gt;">
<arrowlink COLOR="#e79332" DESTINATION="ID_1096729219" ENDARROW="Default" ENDINCLINATION="-1237;46;" ID="Arrow_ID_1348207622" STARTARROW="None" STARTINCLINATION="2421;0;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1575239353279" HGAP="53" ID="ID_777015627" MODIFIED="1575668026370" TEXT="statt frei stehendem ViewHook" VSHIFT="32">
<icon BUILTIN="info"/>
<node CREATED="1575239360140" ID="ID_1324997848" MODIFIED="1575239745292" TEXT="also direkt an die Lebensdauer des Widget gekoppelt"/>
<node CREATED="1575239401247" ID="ID_460745873" MODIFIED="1575566053491" TEXT="dann geht der hook()-Vorgang anders herum"/>
<node CREATED="1575239411717" ID="ID_1117119564" MODIFIED="1575239472817" TEXT="ViewHooked braucht als ctor-Parameter einen ViewHook&amp;">
<node CREATED="1575667806989" ID="ID_553544414" MODIFIED="1575667821044" TEXT="ViewHook::hook() wird eine void-Operation"/>
<node CREATED="1575667821800" ID="ID_394226309" MODIFIED="1575667833698" TEXT="aber der ctor garantiert (RAII) da&#xdf; sie aufgerufen wurde"/>
</node>
</node>
<node COLOR="#338800" CREATED="1575833524632" HGAP="120" ID="ID_231779182" MODIFIED="1575835599586" TEXT="Problem ctor" VSHIFT="1">
<icon BUILTIN="button_ok"/>
<node CREATED="1575833555676" ID="ID_737726791" MODIFIED="1576282358089" TEXT="keine zwingende Verkn&#xfc;pfung mehr m&#xf6;glich">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      weil nun ViewHooked schon als ctor-Parameter einen ViewHook bekommen mu&#223;...
    </p>
  </body>
</html></richcontent>
<node CREATED="1575833618837" ID="ID_887542907" MODIFIED="1575833631133" TEXT="ist aber auch nicht schlecht"/>
<node CREATED="1575833632321" ID="ID_1044442678" MODIFIED="1575833656034" TEXT="denn andererseits ist ja jetzt ein Ctor-Parameter (ViewHook) Pflicht"/>
</node>
<node CREATED="1575833658571" ID="ID_655849348" MODIFIED="1575833684255" TEXT="Organisieren der zus&#xe4;tzlichen ctor-Parameter">
<node CREATED="1575833685238" ID="ID_82723715" MODIFIED="1575833692549" TEXT="das Widget kann beliebige Parameter haben"/>
<node CREATED="1575833693396" ID="ID_277553736" MODIFIED="1575833711002" TEXT="(optional) kann der Hook sofort mit Koordinaten gemacht werden"/>
<node CREATED="1575833718110" ID="ID_1601089341" MODIFIED="1575833729995" TEXT="das wird eine problematische Signatur...">
<icon BUILTIN="clanbomber"/>
</node>
<node CREATED="1575833751257" ID="ID_1701112838" MODIFIED="1575833756633" TEXT="L&#xf6;sung">
<icon BUILTIN="idea"/>
<node CREATED="1575833758080" ID="ID_1219297677" MODIFIED="1575833762271" TEXT="zwei overloads"/>
<node CREATED="1575833763086" ID="ID_1612844126" MODIFIED="1575833769762" TEXT="mit einem Parameter-Objekt"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1575845525564" HGAP="47" ID="ID_960595364" MODIFIED="1575845553029" VSHIFT="2">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Entscheidung: <b>NonCopoyable</b>
    </p>
  </body>
</html></richcontent>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node CREATED="1575845555959" ID="ID_525736994" MODIFIED="1575845568687" TEXT="auch wenn manches dadurch etwas m&#xfc;hsam wird">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="smiley-oh"/>
</node>
<node CREATED="1575845569870" ID="ID_1676564226" MODIFIED="1576282358089" TEXT="es kann niemals in Ordnung sein, wenn ein ViewHooked-Widget irgendwohin verschoben wird">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      denn vern&#252;nftigerweise mu&#223; man davon ausgehen, da&#223; der Canvas (oder wo auch immer das element platziert wird) sich einen Pointer speichert, und diesen sp&#228;ter auch aktiv verwenden wird
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1575845652221" ID="ID_421248587" MODIFIED="1575845662717" TEXT="Probleme mit dem Diff?">
<icon BUILTIN="button_cancel"/>
<node COLOR="#338800" CREATED="1575845663683" ID="ID_1462842573" MODIFIED="1575845666297" TEXT="Nein">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1575845667928" ID="ID_1075657908" MODIFIED="1575845691162" TEXT="genau deshalb verwenden wir vector&lt;unique_ptr&lt;XYZ&gt;&gt;">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1575580366411" ID="ID_1747264667" MODIFIED="1575670501324" TEXT="API f&#xfc;r Umordnen">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1575660738481" ID="ID_316759979" MODIFIED="1575660770786" TEXT="einfachst m&#xf6;gliche Iterator-L&#xf6;sung">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1575660751327" ID="ID_1263771356" MODIFIED="1575670503370" TEXT="generische Standard-Implementierung mit entwerfen">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1582503131945" FOLDED="true" ID="ID_1439869815" MODIFIED="1582835809970" TEXT="Problem Covarianz">
<linktarget COLOR="#66226c" DESTINATION="ID_1439869815" ENDARROW="Default" ENDINCLINATION="-760;97;" ID="Arrow_ID_655919678" SOURCE="ID_1081924103" STARTARROW="None" STARTINCLINATION="1574;0;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1582503148935" ID="ID_10487556" MODIFIED="1582503193549" TEXT="ViewHooked&lt;WiX&gt; f&#xfc;r ViewHook&lt;WID&gt; mit WiX &lt;: WID">
<icon BUILTIN="info"/>
</node>
<node CREATED="1582503195681" ID="ID_1990820177" MODIFIED="1582503216832" TEXT="d.h. der ViewHook kann f&#xfc;r einen Basistyp sein (Gtk::Widget)"/>
<node CREATED="1582503217854" ID="ID_251546067" MODIFIED="1582503228370" TEXT="aber das ViewHooked mu&#xdf; definitiv auf den konkreten Typ laufen"/>
<node COLOR="#338800" CREATED="1582503985261" ID="ID_257480805" MODIFIED="1582833223291" TEXT="formale Probleme">
<icon BUILTIN="button_ok"/>
<node CREATED="1582503991839" ID="ID_1202924681" MODIFIED="1582503998695" TEXT="C++ unterst&#xfc;tzt keine Covarianz">
<node CREATED="1582504004549" ID="ID_1855610953" MODIFIED="1582504013861" TEXT="d.h. an einer Seite &quot;klemmt&quot; es immer"/>
<node CREATED="1582504016734" ID="ID_973744286" MODIFIED="1582504028245" TEXT="entweder wir  verlangen einen zu konkreten Typ"/>
<node CREATED="1582504058994" ID="ID_638337039" MODIFIED="1582504106019" TEXT="oder der Callback auf den generischen ViewHook wird vom Typsystem abgelehnt">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      weil dieses nicht wei&#223;, da&#223; es sich um eine Subtyp-Beziehung handelt
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#338800" CREATED="1582504116207" ID="ID_1623671836" MODIFIED="1582833196285" TEXT="Versuch, einen 2.Template-Parameter einzuf&#xfc;hren">
<icon BUILTIN="button_ok"/>
<node CREATED="1582504139651" ID="ID_1687494401" MODIFIED="1582504144187" TEXT="analoges Problem"/>
<node COLOR="#338800" CREATED="1582504145369" ID="ID_580143907" MODIFIED="1582832828804" TEXT="die rehook()-Funktion ist virtuell">
<icon BUILTIN="button_ok"/>
<node CREATED="1582504155332" ID="ID_1039269734" MODIFIED="1582504165753" TEXT="aber auf welchen Argument-Typ soll sie gehen"/>
<node COLOR="#752823" CREATED="1582504166485" ID="ID_1815913326" MODIFIED="1582832879268" TEXT="leider steckt im Argument-Typ das konkrete ViewHookable">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1582832787665" ID="ID_770114878" MODIFIED="1582832790629" TEXT="warum?"/>
<node CREATED="1582832791081" ID="ID_921622013" MODIFIED="1582833095134" TEXT="aus logischen Gr&#xfc;nden">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...ich wollte dadurch ausdr&#252;cken, da&#223; das &#252;bergebene ViewHooked&lt;Widget&gt;&amp; urspr&#252;nglich schon einmal geHooked worden war. Tats&#228;chlich hat ja im originalen Design der ViewHook das Hookable sogar erst konstruiert, und niemand sonst konnte das. Da wir aber nun inzwischen immer mit einem ViewHookable mit eingebettetem Widget arbeiten, mu&#223; dieses freistehend konstruiert werden, und des gibt keine direkte M&#246;glichkeit mehr, diese &quot;Verdongelung&quot; auszudr&#252;cken. Und au&#223;erdem sind auch alle weiteren Ideen aufgegeben, welche auf eine engere Verzahnung der Interfaces aufbauen w&#252;rden (Stichwort &quot;quer-Beweglichkeit&quot;).
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1582832796288" ID="ID_1100021505" MODIFIED="1582833171700" TEXT="praktisch wird es nie gebraucht">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...praktisch k&#246;nnte es zwar sein, da&#223; wir darauf angewiesen sind, das Widget schon zu kennen. Konkret ist das aber im Moment nicht der Fall, und ich sollte mir dar&#252;ber jetzt auch keine Gedanken machen; das Design mu&#223; ohnehin sp&#228;ter nochmal &#252;berarbeitet werden...
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1582832808423" ID="ID_1387322839" MODIFIED="1582833220634" TEXT="zur&#xfc;ckbauen; rehook(Widget&amp;,...) gen&#xfc;gt">
<arrowlink COLOR="#26405f" DESTINATION="ID_397336403" ENDARROW="Default" ENDINCLINATION="144;5;" ID="Arrow_ID_782941996" STARTARROW="None" STARTINCLINATION="112;14;"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1582833177077" ID="ID_397336403" MODIFIED="1582833220634" TEXT="damit geht das dann, und ist auch nicht besonders schlimm">
<linktarget COLOR="#26405f" DESTINATION="ID_397336403" ENDARROW="Default" ENDINCLINATION="144;5;" ID="Arrow_ID_782941996" SOURCE="ID_1387322839" STARTARROW="None" STARTINCLINATION="112;14;"/>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node CREATED="1582833227086" ID="ID_895188425" MODIFIED="1582833268779" TEXT="man kann das Problem im Moment &quot;umschiffen&quot;">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...und ich glaube, das ganze Konstrukt wird nicht wesentlich &quot;tiefer&quot; werden
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
<node CREATED="1582833292120" ID="ID_476079369" MODIFIED="1582833303018" TEXT="der ViewHook arbeitet eben implizit immer mit dem Basistyp"/>
<node CREATED="1582833303639" ID="ID_1136204632" MODIFIED="1582833315633" TEXT="und konvertiert die Referenzen automatisch hoch"/>
</node>
</node>
<node COLOR="#338800" CREATED="1612003404589" ID="ID_1629772875" MODIFIED="1612008746849" TEXT="Problem Code-reuse-Inheritance">
<icon BUILTIN="button_ok"/>
<node CREATED="1612003423875" ID="ID_781800644" MODIFIED="1612003549567">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Ursache ist ein <i>schiefes Design</i>
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...und das ist wohl entstanden, weil ich urspr&#252;nglich einen generischen Visitor im Blick hatte; es hat sich aber dann gezeigt, da&#223; eine solche universelle &quot;Quer-Beweglichkeit&quot; weder notwendig noch w&#252;nschenswert ist
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#ab3058" DESTINATION="ID_704646941" ENDARROW="Default" ENDINCLINATION="434;181;" ID="Arrow_ID_932322384" STARTARROW="None" STARTINCLINATION="240;20;"/>
</node>
<node COLOR="#338800" CREATED="1612003579934" ID="ID_852410527" MODIFIED="1612008743069" TEXT="Refactoring: ViewHook und CanvasHook komplett trennen">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1573242259267" ID="ID_1903570032" MODIFIED="1576166466194" TEXT="Test">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1573242271641" ID="ID_226481127" MODIFIED="1573242355581" TEXT="Basisfall">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1573242278975" ID="ID_1541691410" MODIFIED="1573245310701" TEXT="Verschieben">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1575835636260" ID="ID_586282311" MODIFIED="1575850911796" TEXT="umgebautes API">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1575845706047" ID="ID_648457397" MODIFIED="1575850810943" TEXT="Bugs im Test">
<icon BUILTIN="broken-line"/>
<node CREATED="1575845717980" ID="ID_1253092913" MODIFIED="1575850755101" TEXT="Move-Construction does not detach automatically">
<icon BUILTIN="button_cancel"/>
<node CREATED="1575850756523" ID="ID_1734105343" MODIFIED="1575850759529" TEXT="well...."/>
<node CREATED="1575850759950" ID="ID_355300034" MODIFIED="1575850769568" TEXT="it can not possibly be expected to do so">
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node COLOR="#338800" CREATED="1575845743838" ID="ID_1827383151" MODIFIED="1582503290754" TEXT="testContainsSequence()-predicate does not work properly in the initial base check">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      again the problem with the reversed order due to forward_list
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1575063870245" ID="ID_1374959238" MODIFIED="1575670505352" TEXT="Umordnen">
<linktarget COLOR="#4983c7" DESTINATION="ID_1374959238" ENDARROW="Default" ENDINCLINATION="-123;-10;" ID="Arrow_ID_463400867" SOURCE="ID_46486640" STARTARROW="None" STARTINCLINATION="-428;25;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1563019044455" ID="ID_1947863751" MODIFIED="1563019051553" TEXT="Style / CSS-Struktur">
<node CREATED="1563019065682" ID="ID_277910782" MODIFIED="1563019083259" TEXT="grunds&#xe4;tzlich durch Widget im UI definiert"/>
<node CREATED="1563019091550" ID="ID_342336016" MODIFIED="1563019113940" TEXT="Struktur im TimelineWidget">
<node CREATED="1563019373733" ID="ID_412703124" MODIFIED="1563019379308" TEXT="Widget-Struktur">
<node CREATED="1563019390913" ID="ID_197164350" MODIFIED="1563019403082" TEXT="teilweise ein Implementierungs-Detail"/>
</node>
<node CREATED="1563019380597" ID="ID_7366061" MODIFIED="1563019384050" TEXT="Kontrollstruktur"/>
</node>
<node CREATED="1563019137720" ID="ID_1085825572" MODIFIED="1563019142563" TEXT="systematisch">
<node CREATED="1563019146591" ID="ID_105242868" MODIFIED="1563036084505" TEXT="&quot;auf was k&#xf6;nnen CSS-Selektoren aufbauen&quot;?">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_105242868" ENDARROW="Default" ENDINCLINATION="1295;0;" ID="Arrow_ID_708537872" SOURCE="ID_180592409" STARTARROW="None" STARTINCLINATION="825;-325;"/>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1563019196947" ID="ID_1289853928" MODIFIED="1563019204755" TEXT="Ankerpunkt">
<node CREATED="1563019232304" ID="ID_206396832" MODIFIED="1563019237151" TEXT="Class: .timeline-page"/>
<node CREATED="1563019248349" ID="ID_795857264" MODIFIED="1563019257692" TEXT="Element: paned"/>
</node>
<node CREATED="1563019278662" ID="ID_649362322" MODIFIED="1563019282193" TEXT="Kinder">
<node CREATED="1563019283116" ID="ID_1537337657" MODIFIED="1563019286632" TEXT="head.timeline"/>
<node CREATED="1563019287444" ID="ID_262145100" MODIFIED="1563019291575" TEXT="body.timeline">
<node CREATED="1563019321399" ID="ID_1831987488" MODIFIED="1563019329149" TEXT="fork.timeline"/>
<node CREATED="1563019330262" ID="ID_847433793" MODIFIED="1563019334721" TEXT="canvas.timeline"/>
</node>
</node>
</node>
<node CREATED="1563019421405" ID="ID_985036312" MODIFIED="1563019426415" TEXT="Beispiele">
<icon BUILTIN="idea"/>
<node CREATED="1563019440558" ID="ID_1321598849" MODIFIED="1576282358088" TEXT="Scope-Insets">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      die Vertiefungen im Anzeige-Profil
    </p>
    <p>
      auf der rechten Seite, wo der Content angezeigt wird
    </p>
  </body>
</html></richcontent>
<node COLOR="#435e98" CREATED="1563019476308" ID="ID_83481977" MODIFIED="1563044164753" TEXT=".timeline-page &gt; box.timeline-body fork.timeline">
<linktarget COLOR="#419bcf" DESTINATION="ID_83481977" ENDARROW="Default" ENDINCLINATION="666;0;" ID="Arrow_ID_1386111155" SOURCE="ID_1803180287" STARTARROW="None" STARTINCLINATION="-787;0;"/>
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
</node>
</node>
</node>
</node>
<node CREATED="1479688613990" ID="ID_1537299376" MODIFIED="1582988088360" TEXT="Struktur&#xe4;nderung">
<linktarget COLOR="#7aacc3" DESTINATION="ID_1537299376" ENDARROW="Default" ENDINCLINATION="-632;83;" ID="Arrow_ID_1708561781" SOURCE="ID_1883527171" STARTARROW="None" STARTINCLINATION="806;36;"/>
<node CREATED="1479688621637" ID="ID_71591229" MODIFIED="1557498707224" TEXT="notwendig: strukturelles Modell">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1479688633483" ID="ID_1301490505" MODIFIED="1557498707224" TEXT="Elemente in diesem halten einen display-context"/>
<node CREATED="1479688653913" ID="ID_1435784278" MODIFIED="1557498707224" TEXT="dieser wiederum mu&#xdf; f&#xfc;r jede Erweiterung konsultiert werden"/>
<node CREATED="1573408604958" ID="ID_1376892828" MODIFIED="1576282358088" TEXT="Vorsicht: Struktur ist teilsweise in der Display-Implentierung aufgedoppelt">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Das mu&#223; auch so sein, denn sonst w&#228;re das systematische Modell und die Controller zu eng mit dem Display-Code verwoben. Der Nachteil ist aber, da&#223; derart aufgedoppelte Struktur bei jeder Struktur&#228;nderung invalide wird
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="clanbomber"/>
</node>
<node CREATED="1575576966709" ID="ID_1527842637" MODIFIED="1575576970675" TEXT="L&#xf6;sung">
<node CREATED="1575576971732" ID="ID_876124745" MODIFIED="1575577071507" TEXT="slave-Elemente &#xfc;ber Beziehungs-Entit&#xe4;t angekoppelt">
<arrowlink COLOR="#507b9b" DESTINATION="ID_1193961919" ENDARROW="Default" ENDINCLINATION="-877;88;" ID="Arrow_ID_1469804818" STARTARROW="None" STARTINCLINATION="576;33;"/>
</node>
<node CREATED="1575050510878" ID="ID_646844971" MODIFIED="1575577381370" TEXT="Diff bietet automatische Benachrichtigung bei Struktur&#xe4;nderung">
<arrowlink COLOR="#624d7d" DESTINATION="ID_101148427" ENDARROW="Default" ENDINCLINATION="-3637;-782;" ID="Arrow_ID_498364014" STARTARROW="None" STARTINCLINATION="2862;94;"/>
<node COLOR="#338800" CREATED="1576168044826" ID="ID_1758473434" MODIFIED="1576441607969" TEXT="#1206 diff structure change listener">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1487465759930" HGAP="19" ID="ID_923619509" MODIFIED="1557498707224" VSHIFT="26">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <font color="#d71313">Problem</font>: Slave-Timeline
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1487465830224" ID="ID_614775878" MODIFIED="1557498707224" TEXT="mehrere Ansichten f&#xfc;r die gleiche Timeline"/>
<node CREATED="1487465882513" ID="ID_347013155" MODIFIED="1557498707224" TEXT="Gr&#xfc;nde">
<icon BUILTIN="info"/>
<node CREATED="1487465847518" ID="ID_1430621359" MODIFIED="1557498707224" TEXT="bewu&#xdf;t verschiedene Ausschnitte"/>
<node CREATED="1487465854653" ID="ID_921534930" MODIFIED="1557498707224" TEXT="unbeabsichtigt in verschiedenen Fenstern"/>
<node CREATED="1487465866499" ID="ID_354960009" MODIFIED="1557498707224" TEXT="Fokussierte Ansicht einer nested sequence"/>
</node>
<node CREATED="1487465918884" ID="ID_1775013701" MODIFIED="1557498707224" TEXT="L&#xf6;sungs-Ans&#xe4;tze">
<icon BUILTIN="hourglass"/>
<node CREATED="1487465924572" ID="ID_542870958" MODIFIED="1557498707224" TEXT="auf Widget-Ebene doppeln">
<icon BUILTIN="button_cancel"/>
<node CREATED="1487465932554" ID="ID_450673459" MODIFIED="1557498707224" TEXT="greift in die direkte Diff-Mechanik ein"/>
<node CREATED="1487465947504" ID="ID_284663745" MODIFIED="1557498707224" TEXT="Timeline-Komponenten sind selber beliebig komplex"/>
<node CREATED="1487465960198" ID="ID_1257024935" MODIFIED="1557498707224" TEXT="Annahme war immer, da&#xdf; Presenter nahe am Widget arbeitet"/>
</node>
<node CREATED="1487465985315" ID="ID_1891341453" MODIFIED="1557498707224" TEXT="Timeline-Controller-Slaves">
<node CREATED="1487465996906" ID="ID_1882876532" MODIFIED="1557498707224" TEXT="machbar"/>
<node CREATED="1487465999417" ID="ID_1034026426" MODIFIED="1557498707224" TEXT="typische Clustering-Probleme"/>
<node CREATED="1487466005952" ID="ID_465457871" MODIFIED="1557498707224" TEXT="Scheitern in-Memory unwahrscheinlich"/>
<node CREATED="1487466021990" ID="ID_212586057" MODIFIED="1557498707224" TEXT="Controller mu&#xdf; aktiv mitwirken"/>
</node>
<node CREATED="1487466040524" ID="ID_646231524" MODIFIED="1557498707224" TEXT="Timeline-Slave in der Session">
<linktarget COLOR="#5793da" DESTINATION="ID_646231524" ENDARROW="Default" ENDINCLINATION="186;21;" ID="Arrow_ID_431447729" SOURCE="ID_1227431164" STARTARROW="None" STARTINCLINATION="26;-3;"/>
<node CREATED="1487466064520" ID="ID_1607482571" MODIFIED="1557498707224" TEXT="macht Doppelung explizit"/>
<node CREATED="1487466078743" ID="ID_1134944510" MODIFIED="1557498707224" TEXT="Problem mit den Element-IDs"/>
<node CREATED="1487466090917" ID="ID_1611961848" MODIFIED="1557498707224" TEXT="UI -&gt; Session ist unproblematisch"/>
<node CREATED="1487466100372" ID="ID_1630288830" MODIFIED="1557498707224" TEXT="Session/Builder mu&#xdf; aufdoppeln">
<node CREATED="1487466111930" ID="ID_966355925" MODIFIED="1557498707224" TEXT="Diff-Nachrichten"/>
<node CREATED="1487466115154" ID="ID_260455064" MODIFIED="1557498707224" TEXT="Fehler-Markierungen"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1487466966478" ID="ID_479759046" MODIFIED="1557498707224" TEXT="#1083 solution for Timeline slave">
<icon BUILTIN="bell"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1487466997138" ID="ID_1028434909" MODIFIED="1557498707224" TEXT="auf sp&#xe4;ter vertagt">
<linktarget COLOR="#bfb5ce" DESTINATION="ID_1028434909" ENDARROW="Default" ENDINCLINATION="-1311;-1012;" ID="Arrow_ID_1339464508" SOURCE="ID_1624061939" STARTARROW="None" STARTINCLINATION="505;-47;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1487466986523" ID="ID_39632539" MODIFIED="1557498707224" TEXT="zun&#xe4;chst unterbinden">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1539258805201" ID="ID_1227431164" MODIFIED="1576282358087" TEXT="gegenw&#xe4;rtig Pr&#xe4;ferenz erkennbar....">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...f&#252;r die dritte L&#246;sung, die Repr&#228;sentation bereits in der Session
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#5793da" DESTINATION="ID_646231524" ENDARROW="Default" ENDINCLINATION="186;21;" ID="Arrow_ID_431447729" STARTARROW="None" STARTINCLINATION="26;-3;"/>
<icon BUILTIN="info"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1539388923323" ID="ID_430199880" MODIFIED="1557498707224">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <font color="#e71c1c">Problem</font>: alle Timelines der Session repr&#228;sentieren?
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#c8a1fe" DESTINATION="ID_430199880" ENDARROW="Default" ENDINCLINATION="-629;0;" ID="Arrow_ID_1293894659" SOURCE="ID_585499856" STARTARROW="None" STARTINCLINATION="-505;56;"/>
<icon BUILTIN="help"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1539389184120" ID="ID_1213259045" MODIFIED="1557498707224" TEXT="vorl&#xe4;ufig: immer">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1539389333308" ID="ID_1581229247" MODIFIED="1557498707224" TEXT="wer kann das entscheiden?">
<node CREATED="1539389339515" ID="ID_1778009129" MODIFIED="1557498707224" TEXT="Entscheider mu&#xdf; am UI-Bus h&#xe4;ngen">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1539389345674" ID="ID_742174622" MODIFIED="1557498707224" TEXT="also der TimelineController">
<icon BUILTIN="forward"/>
</node>
</node>
<node CREATED="1539389243488" ID="ID_1100284261" MODIFIED="1557498707224" TEXT="man k&#xf6;nnte das als GUI-State auslegen">
<icon BUILTIN="idea"/>
<node CREATED="1539389266141" ID="ID_1321613506" MODIFIED="1557498707224" TEXT="collapsed?"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1479774700668" FOLDED="true" HGAP="47" ID="ID_1407821684" MODIFIED="1557498707224" TEXT="Mutation" VSHIFT="13">
<icon BUILTIN="yes"/>
<node COLOR="#435e98" CREATED="1479774705839" FOLDED="true" ID="ID_301222108" MODIFIED="1679088613181" TEXT="Problem">
<icon BUILTIN="messagebox_warning"/>
<node COLOR="#d30f0f" CREATED="1479774731141" ID="ID_1523088286" MODIFIED="1557498707225" TEXT="Element != Widget"/>
<node COLOR="#640c0c" CREATED="1479774764575" ID="ID_1338013643" MODIFIED="1557498707225" TEXT="DiffApplikator geht einfach von STL-Collection aus">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="stop-sign"/>
</node>
<node CREATED="1479774747753" ID="ID_279553704" MODIFIED="1557498707225" TEXT="Umordnen der Elemente hat keinen Effekt auf die Anzeige">
<icon BUILTIN="messagebox_warning"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1480120294912" HGAP="31" ID="ID_1734639851" MODIFIED="1557498707225" VSHIFT="23">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      grunds&#228;tzliches
    </p>
    <p>
      Problem
    </p>
  </body>
</html></richcontent>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="clanbomber"/>
<node CREATED="1480120349873" ID="ID_795629510" MODIFIED="1557498707225" TEXT="Diff repr&#xe4;sentiert &#xc4;nderungen indirekt"/>
<node CREATED="1480120487509" ID="ID_1693545323" MODIFIED="1557498707225">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      speziell die Umordnungen <i>ergeben sich</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1480120359191" ID="ID_1039094699" MODIFIED="1557498707225" TEXT="Widget-Container hat keine &#xc4;nderungs-Schnittstelle"/>
<node COLOR="#338800" CREATED="1480725417748" HGAP="28" ID="ID_1996114890" MODIFIED="1557498707225" TEXT="...war dann doch kein so schlimmes Problem" VSHIFT="7">
<arrowlink COLOR="#69ee12" DESTINATION="ID_1964453367" ENDARROW="Default" ENDINCLINATION="-55;-87;" ID="Arrow_ID_636465261" STARTARROW="None" STARTINCLINATION="-116;69;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1480120516442" FOLDED="true" ID="ID_880374813" MODIFIED="1557498707225" TEXT="Ans&#xe4;tze">
<node CREATED="1480120531935" ID="ID_1894474191" MODIFIED="1561827465251" TEXT="Dekorator auf TreeMutator">
<icon BUILTIN="button_cancel"/>
<node CREATED="1480121069464" ID="ID_1707876611" MODIFIED="1557498707225" TEXT="Operationen mitlesen"/>
<node CREATED="1480121074703" ID="ID_1346494338" MODIFIED="1576282358087" TEXT="Notifikations-Schnittstelle">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...und der Dekorator w&#252;rde die beobachteten Operationen
    </p>
    <p>
      an diese Notifikations-Schnittstelle senden.
    </p>
    <p>
      Implementiert w&#252;rde sie vom jeweiligen Widget
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1480123478013" ID="ID_1281325973" MODIFIED="1576282358086" TEXT="eine Ebene zu tief, aber geht noch">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      korrekt w&#228;re, die Diff-Verben mitzulesen.
    </p>
    <p>
      <i>Das </i>geht aber nicht, weil wir intern (aktiv) iterieren.
    </p>
    <p>
      Wollten wir das doch, m&#252;&#223;ten wir das gesamte Diff-Applikator-Design wegwerfen.
    </p>
    <p>
      
    </p>
    <p>
      Da aber eigentlich eine 1:1-Zuordnung zwischen Diff-Verben und Operations-Primitiven besteht,
    </p>
    <p>
      k&#246;nnte man trotzdem (mit etwas H&#228;ngen und W&#252;rgen) noch hinkommen.
    </p>
    <p>
      Der Dekorator w&#252;rde also auf dem TreeMutator sitzen...
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1480121092492" ID="ID_1543810707" MODIFIED="1576282358085" TEXT="L&#xf6;schungen nur heuristisch zu erkennen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Weil wir die &quot;skip&quot;-Operation f&#252;r zwei Zwecke verwenden,
    </p>
    <p>
      und man im Skip nicht wei&#223;, ob man das Element &#252;berhaupt noch anfassen darf,
    </p>
    <p>
      denn es k&#246;nnte ja auch ein von &quot;find&quot; zur&#252;ckgelassener M&#252;ll sein.
    </p>
    <p>
      Daher gibt es die matchSrc-Operation. Effektiv wird die aber nur bei einem Delete aufgerufen...
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1480123741362" ID="ID_586646895" MODIFIED="1576282358085" TEXT="unsauber, h&#xe4;sslich, ungl&#xfc;cklich">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <ul>
      <li>
        man sitzt mit dem Detektor unter dem API
      </li>
      <li>
        dadurch entstehen &quot;ungeschriebene Regeln&quot;, wie das API auzurufen ist
      </li>
      <li>
        alternativ k&#246;nnten wir die Operationen komplett 1:1 definieren, also eine explizite delete-Operation einf&#252;hren
      </li>
      <li>
        daf&#252;r w&#252;rde dann die matchSrc wegfallen, was praktisch alle sinnvollen Unit-Tests stark beschr&#228;nkt.
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node CREATED="1480123380843" ID="ID_1717666432" MODIFIED="1557498707225" TEXT="w&#xe4;re prinzipiell machbar">
<icon BUILTIN="forward"/>
</node>
</node>
<node CREATED="1480121177145" ID="ID_1964453367" MODIFIED="1557498707225" TEXT="Widget is delegate/slave">
<linktarget COLOR="#69ee12" DESTINATION="ID_1964453367" ENDARROW="Default" ENDINCLINATION="-55;-87;" ID="Arrow_ID_636465261" SOURCE="ID_1996114890" STARTARROW="None" STARTINCLINATION="-116;69;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1480121209277" ID="ID_834494092" MODIFIED="1557498707225" TEXT="Hinzuf&#xfc;gungen erzeugen neue Widgets">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1480121219579" ID="ID_1906821886" MODIFIED="1557498707225" TEXT="L&#xf6;schungen entfernen das zugeh&#xf6;rige Widget">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1480121271493" ID="ID_1169797519" MODIFIED="1557498707225" TEXT="Reihenfolge ist nebens&#xe4;chlich">
<icon BUILTIN="idea"/>
<node CREATED="1480123311260" ID="ID_1288896772" MODIFIED="1557498707225" TEXT="Reihenfolge der Widgets == Z-Ordnung"/>
<node CREATED="1480123321707" ID="ID_1842225087" MODIFIED="1557498707225" TEXT="das ist ein reiner UI-Belang"/>
<node CREATED="1480123330521" ID="ID_255024472" MODIFIED="1557498707225" TEXT="Reihenfolge der Tracks wird im UI realisiert"/>
<node CREATED="1480123353030" ID="ID_871730723" MODIFIED="1557498707225" TEXT="Reihenfolge der Clips wird redundant (durch Position) gegeben"/>
</node>
<node COLOR="#bd304f" CREATED="1573408400309" ID="ID_240517447" MODIFIED="1573411462228" TEXT="Vorsicht: parallel gebaute Strukturen sind gef&#xe4;hrlich">
<arrowlink COLOR="#774779" DESTINATION="ID_1728979524" ENDARROW="Default" ENDINCLINATION="-1429;-736;" ID="Arrow_ID_1394313218" STARTARROW="None" STARTINCLINATION="-692;36;"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1573408424206" ID="ID_210523305" MODIFIED="1573408436104" TEXT="diese sind oftmals notwendig, um den Code wartbar zu halten"/>
<node CREATED="1573408436949" ID="ID_429179986" MODIFIED="1573409776349" TEXT="Beispiel: TrackBody - Struktur">
<linktarget COLOR="#73618d" DESTINATION="ID_429179986" ENDARROW="Default" ENDINCLINATION="502;276;" ID="Arrow_ID_635099577" SOURCE="ID_101081525" STARTARROW="None" STARTINCLINATION="278;11;"/>
<icon BUILTIN="forward"/>
<node CREATED="1573408465433" ID="ID_1549970410" MODIFIED="1573408481827" TEXT="diese doppelt die Kontroll-Struktur der Track(Presenter) auf"/>
<node CREATED="1573408515992" ID="ID_1316818344" MODIFIED="1573408548407" TEXT="sie ist notwendig, um den TrackPresenter vom reinen Display-Code zu trennen"/>
<node CREATED="1573408487478" ID="ID_758564014" MODIFIED="1573408506255" TEXT="nach jeder Struktur-&#xc4;nderung der Tracks ist diese Struktur invalide geworden"/>
</node>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1480123881912" HGAP="6" ID="ID_1550301342" MODIFIED="1557498707225" TEXT="Schlu&#xdf;folgerung" VSHIFT="3">
<icon BUILTIN="yes"/>
<node CREATED="1480123900845" ID="ID_1099759004" MODIFIED="1557498707225" TEXT="wir mutieren ein Modell-Objekt"/>
<node CREATED="1480123908524" ID="ID_599072568" MODIFIED="1557498707225" TEXT="das Widget h&#xe4;ngt an diesem als kompletter Slave">
<icon BUILTIN="idea"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1480123920371" ID="ID_413127533" MODIFIED="1557498707225" TEXT="Registrierung / Deregistrierung mu&#xdf; vollautomatisch sein">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1480124094867" ID="ID_1956638484" MODIFIED="1557498707225">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <i>nach </i>der Mutation erfolgt <b>Display-Neubewertung</b>
    </p>
  </body>
</html></richcontent>
<node CREATED="1480124145476" ID="ID_1268974326" MODIFIED="1557498707225" TEXT="f&#xfc;r einen ganzen Scope"/>
<node CREATED="1480124153979" ID="ID_887707794" MODIFIED="1557498707225" TEXT="stellt fest, was gezeigt werden mu&#xdf;"/>
<node CREATED="1480124174144" ID="ID_1145067443" MODIFIED="1557498707225" TEXT="synthetisiert Anzeige-Parameter (z.B: Koordinaten, Z-Ordnung)"/>
<node CREATED="1480124235128" ID="ID_162610711" MODIFIED="1575053313157" TEXT="mu&#xdf; inkrementell arbeiten und bestehende Widgets an neue Reihenfolge anpassen">
<arrowlink COLOR="#d6677c" DESTINATION="ID_1660005887" ENDARROW="Default" ENDINCLINATION="130;-668;" ID="Arrow_ID_1942101483" STARTARROW="None" STARTINCLINATION="730;24;"/>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1480300573857" FOLDED="true" HGAP="68" ID="ID_434577605" MODIFIED="1679360167655" TEXT="Anzeige-Steuerung" VSHIFT="39">
<icon BUILTIN="yes"/>
<node CREATED="1480300627712" ID="ID_1748490788" MODIFIED="1557498707225" TEXT="Display-Manager">
<node CREATED="1480300640790" ID="ID_1461181527" MODIFIED="1557498707225" TEXT="Abstraktion">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
<node CREATED="1480300645837" ID="ID_337010957" MODIFIED="1557498707225" TEXT="Interface"/>
<node CREATED="1480300649437" ID="ID_704277125" MODIFIED="1557498707225">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      interagiert mit den <b>Presentern</b>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1480300584454" ID="ID_202830560" MODIFIED="1557498707225" TEXT="globaler Layout-Manager">
<node CREATED="1480300595820" ID="ID_1004344887" MODIFIED="1557498707225" TEXT="fungiert als Service"/>
<node CREATED="1480300614873" ID="ID_895306481" MODIFIED="1557498707225" TEXT="Ermitteln konkreter Koordinaten"/>
</node>
</node>
<node CREATED="1480300682256" ID="ID_1828380850" MODIFIED="1557498707225" TEXT="Presenter">
<node CREATED="1480300690191" ID="ID_1405428387" MODIFIED="1557498707225" TEXT="sind lokales Struktur-Modell">
<node CREATED="1480300733506" ID="ID_186466790" MODIFIED="1557498707225" TEXT="werden per Diff manipuliert"/>
<node CREATED="1480300740537" ID="ID_1322437138" MODIFIED="1576282358084" TEXT="enthalten die Modell-Binding-Daten">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      d.h. eine LUID
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1480300699694" ID="ID_1686150984" MODIFIED="1557498707225" TEXT="aktiver Part der View-Steuerung"/>
<node CREATED="1480300717747" ID="ID_1736166807" MODIFIED="1557498707225" TEXT="Master-Slave f&#xfc;r die Widgets"/>
<node CREATED="1480300804840" ID="ID_1330942810" MODIFIED="1557498707225" TEXT="Verbindung zum Anzeigekontext">
<node CREATED="1480300822302" ID="ID_1819260908" MODIFIED="1557498707225" TEXT="zwei Kontexte f&#xfc;r die Tracks"/>
<node CREATED="1480300836092" ID="ID_1069009472" MODIFIED="1557498707225" TEXT="Anzeigekontext = Konkretes Vater-Widget"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1480606888860" FOLDED="true" HGAP="25" ID="ID_899101975" MODIFIED="1679361614097" TEXT="Implementierung" VGAP="11" VSHIFT="14">
<icon BUILTIN="pencil"/>
<node CREATED="1480606950372" ID="ID_1502878943" MODIFIED="1557498707225" TEXT="Grundstruktur">
<node CREATED="1563036503676" ID="ID_274320987" MODIFIED="1563036508677" TEXT="visuell/Layout">
<node CREATED="1480639404070" ID="ID_506539007" MODIFIED="1557498707225" TEXT="HeaderPane">
<node CREATED="1480639435010" ID="ID_892799964" MODIFIED="1557498707225" TEXT="Navigator"/>
<node CREATED="1480639438921" ID="ID_1668884794" MODIFIED="1557498707225" TEXT="Baum">
<node CREATED="1480639447736" ID="ID_1842963526" MODIFIED="1557498707225" TEXT="Expander"/>
<node CREATED="1480639450960" ID="ID_1468387103" MODIFIED="1557498707225" TEXT="Patchbay"/>
</node>
</node>
<node CREATED="1480639411109" ID="ID_520199505" MODIFIED="1557498707225" TEXT="ScrolledPane">
<node CREATED="1480639423116" ID="ID_1226894709" MODIFIED="1557498707225" TEXT="Ruler"/>
<node CREATED="1480639429307" ID="ID_1922498247" MODIFIED="1557498707225" TEXT="Canvas"/>
</node>
</node>
<node CREATED="1563036487350" ID="ID_1370107301" MODIFIED="1563036492008" TEXT="custom-Widgets">
<node COLOR="#338800" CREATED="1562972742894" ID="ID_50010456" MODIFIED="1563044193887" TEXT="Namen f&#xfc;r die custom-widgets">
<linktarget COLOR="#3f4a94" DESTINATION="ID_50010456" ENDARROW="Default" ENDINCLINATION="-1046;66;" ID="Arrow_ID_1862548348" SOURCE="ID_340313615" STARTARROW="None" STARTINCLINATION="-1895;0;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1563035885483" FOLDED="true" ID="ID_180592409" MODIFIED="1679360139274" TEXT="Wunsch/Konzept">
<arrowlink DESTINATION="ID_105242868" ENDARROW="Default" ENDINCLINATION="1295;0;" ID="Arrow_ID_708537872" STARTARROW="None" STARTINCLINATION="825;-325;"/>
<node CREATED="1563036553387" ID="ID_1889445008" MODIFIED="1563036560952" TEXT="TimelineWidget selber?">
<node CREATED="1563036568256" ID="ID_1816733755" MODIFIED="1576282358084" TEXT="sollte besser ein &quot;paned&quot; bleiben">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      weil dies ggfs vom Theme her schon gestyled wird
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#338800" CREATED="1563036619140" ID="ID_1483549704" MODIFIED="1563037392573" TEXT="aber Klasse: .timeline-page">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1563019287444" ID="ID_1624037692" MODIFIED="1563043796072" TEXT="body.timeline">
<icon BUILTIN="stop-sign"/>
<node COLOR="#338800" CREATED="1563019321399" ID="ID_1793367255" MODIFIED="1563043799284" TEXT="fork.timeline">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1563019330262" ID="ID_36986369" MODIFIED="1563043802584" TEXT="canvas.timeline">
<icon BUILTIN="button_cancel"/>
</node>
</node>
<node CREATED="1563043807392" ID="ID_994687888" MODIFIED="1576282358083" TEXT="Wunsch nur teilweise realisierbar">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...denn die CSS-Node-Namen von Custom-Widgets kann man via GTKmm nicht &#228;ndern.
    </p>
    <p>
      Das geht nur, wenn man das Custom-Widget direkt per C erzeugt,
    </p>
    <p>
      weil der betreffende Aufruf gtk_widget_class_set_css_name (GTK_WIDGET_GET_CLASS(gobj()), &quot;my-node&quot;)
    </p>
    <p>
      in der C &quot;class init function&quot; passieren mu&#223;
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#bc86a6" DESTINATION="ID_1245820640" ENDARROW="Default" ENDINCLINATION="-1901;31;" ID="Arrow_ID_1120129058" STARTARROW="None" STARTINCLINATION="-2128;-72;"/>
<icon BUILTIN="stop-sign"/>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1480606954115" FOLDED="true" ID="ID_1178000371" MODIFIED="1557498707225" TEXT="Struktur-Modell">
<icon BUILTIN="button_ok"/>
<node CREATED="1480725215087" ID="ID_212845679" MODIFIED="1557498707225" TEXT="erzeugen">
<node CREATED="1480725218783" ID="ID_192239117" MODIFIED="1557498707225" TEXT="Controller ist Tangible">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1480725247115" ID="ID_1533101483" MODIFIED="1557498707225" TEXT="Konstruktion erfordert...">
<node CREATED="1480796814716" ID="ID_1742743432" MODIFIED="1576282358083" TEXT="ID einer Timeline">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      wir lassen es offen, welche Art von ID das ist.
    </p>
    <p>
      Irgend eine BareEntryID gen&#252;gt
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1540639615789" ID="ID_1775707565" MODIFIED="1557498707225" TEXT="ID des root-Track"/>
<node CREATED="1480725273775" ID="ID_1495656573" MODIFIED="1557498707225" TEXT="Bus-Term-Referenz"/>
</node>
</node>
<node CREATED="1540639905935" ID="ID_1563220898" MODIFIED="1557498707225" TEXT="zerst&#xf6;ren">
<node CREATED="1540639914260" ID="ID_1797549156" MODIFIED="1557498707225" TEXT="der Root-Track kann nicht gel&#xf6;scht werden">
<icon BUILTIN="idea"/>
<node CREATED="1540639925885" ID="ID_1352494029" MODIFIED="1557498707225" TEXT="das wird bereits auf Diff-Ebene abgewiesen"/>
<node CREATED="1540639934819" ID="ID_1733133201" MODIFIED="1557498707225" TEXT="...da es sich um ein Attribut-Binding handelt"/>
<node CREATED="1540639945978" ID="ID_1136500098" MODIFIED="1576282358082" TEXT="(sollte aber auch niemals auftreten)">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...da wir unterstellen, da&#223; das Gegenst&#252;ck im Session-Modell,
    </p>
    <p>
      von dem der Diff ausgeht, ebenfalls den Root-Track als festes Attribut h&#228;lt.
    </p>
    <p>
      Daher sollte eine inkompatible Struktur&#228;nderung &#252;berhaupt nicht auftreten k&#246;nnen
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1540640048428" ID="ID_838010387" MODIFIED="1557498707225" TEXT="nur das gesamte Widget insgesamt">
<node CREATED="1540640063547" ID="ID_975320950" MODIFIED="1557498707225" TEXT="kaskadiert in nat&#xfc;rlicher Ordnung"/>
<node CREATED="1540640074705" ID="ID_181154970" MODIFIED="1557498707225" TEXT="Kinder zuerst...">
<icon BUILTIN="ksmiletris"/>
</node>
</node>
</node>
<node CREATED="1573409624900" ID="ID_1959987638" MODIFIED="1573409630695" TEXT="ver&#xe4;ndern">
<node CREATED="1573409632189" ID="ID_1780072285" MODIFIED="1573409639158" TEXT="hier wird&apos;s gef&#xe4;hrlich...."/>
<node CREATED="1573409642343" ID="ID_1221373403" MODIFIED="1573409653748" TEXT="das Diff-System handhabt die eigentliche Mutation"/>
<node CREATED="1573409655220" ID="ID_101081525" MODIFIED="1573409776349" TEXT="aber wenn wir Strukturen lokal aufdoppeln, bekommen wir ein Problem">
<arrowlink COLOR="#73618d" DESTINATION="ID_429179986" ENDARROW="Default" ENDINCLINATION="502;276;" ID="Arrow_ID_635099577" STARTARROW="None" STARTINCLINATION="278;11;"/>
<icon BUILTIN="clanbomber"/>
</node>
</node>
<node CREATED="1480725377994" ID="ID_172881069" MODIFIED="1557498707226" TEXT="verwalten">
<node COLOR="#338800" CREATED="1480741524775" ID="ID_661893589" MODIFIED="1557498707226" TEXT="Bindings einrichten">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1480800574418" ID="ID_791426893" MODIFIED="1557498707226" TEXT="Marker">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1480800603331" ID="ID_1846937607" MODIFIED="1557498707226" TEXT="treten in diversen Scopes auf"/>
<node CREATED="1480800643953" ID="ID_409762087" MODIFIED="1557498707226" TEXT="sogar global, auf dem TimeRuler">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1480800605150" ID="ID_1156238228" MODIFIED="1557498707226" TEXT="sind stets optional"/>
<node CREATED="1480807594822" ID="ID_333819085" MODIFIED="1557498707226" TEXT="f&#xfc;hre mal einen Marker-Typ ein"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1538957611472" ID="ID_1996849782" MODIFIED="1557498707226" TEXT="erwartet gem&#xe4;&#xdf; UI Modell-Schema">
<arrowlink COLOR="#919fc6" DESTINATION="ID_165150753" ENDARROW="Default" ENDINCLINATION="-902;329;" ID="Arrow_ID_651613049" STARTARROW="None" STARTINCLINATION="823;93;"/>
<icon BUILTIN="info"/>
<node COLOR="#435e98" CREATED="1540639547294" ID="ID_133813709" MODIFIED="1557498707226" TEXT="TimelineID"/>
<node COLOR="#435e98" CREATED="1540639550757" ID="ID_521896867" MODIFIED="1557498707226" TEXT="Root-TrackID">
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1541462330990" ID="ID_1246009618" MODIFIED="1557498707226" TEXT="TODO: eigentlich redundant">
<icon BUILTIN="broken-line"/>
</node>
<node CREATED="1541462351699" ID="ID_1571413865" MODIFIED="1557498707226" TEXT="sie ist immer &quot;fork&quot;, da es ein Attribut ist"/>
<node CREATED="1541462368025" ID="ID_66547064" MODIFIED="1557498707226" TEXT="der Entry-ID-Typ ist GenNode"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1480694550601" ID="ID_391329400" MODIFIED="1561899149547" TEXT="TimelineController">
<linktarget COLOR="#fec680" DESTINATION="ID_391329400" ENDARROW="Default" ENDINCLINATION="-1077;-98;" ID="Arrow_ID_1839172502" SOURCE="ID_693425928" STARTARROW="None" STARTINCLINATION="407;0;"/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1480694557112" ID="ID_786517324" MODIFIED="1557498707226" TEXT="Widget ist Startpunkt"/>
<node CREATED="1480694571310" ID="ID_1188786444" MODIFIED="1557498707226" TEXT="aber Controller wird Chef"/>
<node CREATED="1480725633399" FOLDED="true" ID="ID_1475661668" MODIFIED="1576282358082" TEXT="mu&#xdf; erst mal Controller implementieren">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...abstraktes Interface
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="smily_bad"/>
<node CREATED="1480725680713" ID="ID_448125852" MODIFIED="1557498707226" TEXT="Delegate for Notification">
<icon BUILTIN="help"/>
</node>
<node CREATED="1480725704142" ID="ID_992732373" MODIFIED="1557498707226" TEXT="was bleibt abstrakt?">
<node CREATED="1480725715916" ID="ID_890987188" MODIFIED="1576282358081" TEXT="buildMutator">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      lat&#252;rnich
    </p>
    <p>
      ...den <i>mu&#223;</i>&#160;jeder individuell implementieren,
    </p>
    <p>
      um die Bindung herzustellen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node CREATED="1540639476279" ID="ID_298401557" MODIFIED="1557498707226" TEXT="vorerst Platzhalter">
<icon BUILTIN="bell"/>
</node>
</node>
<node CREATED="1480741498930" ID="ID_1605140473" MODIFIED="1557498707226" TEXT="hat nur einen einzigen RootTrack">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#435e98" CREATED="1480742405505" FOLDED="true" ID="ID_1590367176" MODIFIED="1679360112757" TEXT="ACHTUNG: leere Sequenz?">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <i>theoretisch</i>&#160;k&#246;nnte man eine Timeline ohne Sequenz
    </p>
    <p>
      oder eine Sequenz ohne root-Fork zulassen
    </p>
    <p>
      <u>Fazit</u>: wir lassen das nicht zu, erzwingen das bereits per ctor
    </p>
    <p>
      und erwarten abweichend vom Standard ein vollst&#228;ndiges Skelett im INS-Verb
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1480776052551" ID="ID_431920594" MODIFIED="1518487921081" TEXT="warum">
<node CREATED="1480742420383" ID="ID_19092812" MODIFIED="1518487921081" TEXT="kann ihn nicht gleich im ctor erzeugen"/>
<node CREATED="1480742432749" ID="ID_1840237751" MODIFIED="1518487921081" TEXT="denn wir brauchen die ID"/>
<node CREATED="1480742437892" ID="ID_1335490062" MODIFIED="1518487921081" TEXT="und die kann nur &#xfc;ber den Bus kommen"/>
<node CREATED="1480742445563" ID="ID_1224591813" MODIFIED="1518487921081" TEXT="also m&#xfc;ssen wir warten, bis das Attribut zugewiesen wird"/>
</node>
<node COLOR="#435e98" CREATED="1480776067549" FOLDED="true" HGAP="41" ID="ID_1500222365" MODIFIED="1679360103974" TEXT="Alternativen" VSHIFT="-1">
<icon BUILTIN="info"/>
<node CREATED="1480776081388" ID="ID_783764544" MODIFIED="1540506788245" TEXT="via ctor">
<icon BUILTIN="full-1"/>
<node CREATED="1480776096665" ID="ID_1492275941" MODIFIED="1576282358080" TEXT="das hei&#xdf;t....">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Thema &quot;Darstellung von Objekt-Feldern im Diff&quot;
    </p>
    <p>
      <i>da hab ich mir ausgiebig Gedanken dar&#252;ber gemacht (in dieser Mindmap)</i>
    </p>
    <ul>
      <li>
        entweder ein Feld ist wirklich optional belegbar, dann kann es mit dem Diff kommen
      </li>
      <li>
        wenn dagegen ein Feld zwingend bef&#252;llt sein soll, mu&#223; man das &#252;ber den Konstruktor erzwingen<br />in diesem Fall m&#252;ssen alle Daten bereits mit dem vorangehenden INS kommen,<br />welches den Konstruktor-Aufruf ausl&#246;st<br /><br />
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
<node CREATED="1480776313813" ID="ID_1507386991" MODIFIED="1518487921082" TEXT="Vorteil: einfache Verh&#xe4;ltnisse in der Widget-Impl"/>
<node CREATED="1480776341393" ID="ID_1985821448" MODIFIED="1540506389132" TEXT="Nachteil: mu&#xdf; Diff genau in spezieller Form schicken"/>
<node CREATED="1480777922397" ID="ID_514769772" MODIFIED="1518487921082" TEXT="...sonst">
<icon BUILTIN="smily_bad"/>
<node CREATED="1480777950449" ID="ID_487608965" MODIFIED="1540506527436" TEXT="Core schickt unvollst&#xe4;ndigen Populations-diff"/>
<node CREATED="1480777972862" ID="ID_1185499319" MODIFIED="1518487921082" TEXT="Exception beim Aufspielen"/>
<node CREATED="1480777979069" ID="ID_1379570617" MODIFIED="1518487921082" TEXT="kann nur geloggt werden"/>
<node CREATED="1480777983381" ID="ID_1125654729" MODIFIED="1518487921082" TEXT="Folglich fehlt im UI die betreffende Timeline"/>
<node CREATED="1480778002098" ID="ID_535894255" MODIFIED="1518487921082" TEXT="sp&#xe4;tere Updates scheitern gleicherma&#xdf;en"/>
<node CREATED="1480778011745" ID="ID_1623403394" MODIFIED="1518487921082" TEXT="dysfunktionales UI">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
</node>
</node>
</node>
<node CREATED="1480776087027" ID="ID_132590373" MODIFIED="1518487921082" TEXT="leer zulassen">
<node CREATED="1480778115091" ID="ID_1948130012" MODIFIED="1576282358080" TEXT="das hei&#xdf;t...">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      die betreffenden Felder sind echt optional.
    </p>
    <p>
      Der Ctor belegt sie mit einem sinnvollen Leerwert
    </p>
    <p>
      Das Objekt mu&#223; so geschrieben werden, da&#223; es mit den Leerwerten umgehen kann,
    </p>
    <p>
      was typischerweise heit&#223;, da&#223; es verschiedene Betriebsmodi bekommt.
    </p>
    <p>
      
    </p>
    <p>
      Das Diff kann dann sp&#228;ter die konkreten Werte f&#252;r die Attribute nachliefern;
    </p>
    <p>
      typischerweise wird es das in einem Populationsdiff sofort als N&#228;chstes machen.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
<node CREATED="1480778348652" ID="ID_1249761108" MODIFIED="1518487921082" TEXT="Vorteil: Diff-Erzeugung und Aufspielen l&#xe4;uft nach Schema-F"/>
<node CREATED="1480778407052" ID="ID_181642617" MODIFIED="1518487921082">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      zwei m&#246;gliche
    </p>
    <p>
      Konsequenzen
    </p>
  </body>
</html></richcontent>
<node CREATED="1480778420418" ID="ID_1430286640" MODIFIED="1540506791804" TEXT="Problem ignorieren">
<icon BUILTIN="full-2"/>
<node CREATED="1480778499928" ID="ID_1466170472" MODIFIED="1518487921082" TEXT="Felder im Ctor einfach uninitialisiert lassen"/>
<node CREATED="1480778490545" ID="ID_1228109442" MODIFIED="1540506504371" TEXT="darauf hoffen, da&#xdf; das Diff immer komplett alles populiert"/>
<node CREATED="1480778511086" ID="ID_1612105579" MODIFIED="1518487921082" TEXT="keine Checks im Code"/>
<node CREATED="1480778532907" ID="ID_1167492250" MODIFIED="1576282358079">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      funktioniert <i>fast immer</i>
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <i>&quot;was kann denn schon passieren??&quot;</i>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="smily_bad"/>
</node>
<node CREATED="1540506535667" ID="ID_1048222076" MODIFIED="1540506545488">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      und wenn nicht, dann <b>Crash</b>
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1480778451502" ID="ID_1135553012" MODIFIED="1540506795353" TEXT="echt optionale Felder">
<icon BUILTIN="full-3"/>
<node CREATED="1480778622039" ID="ID_1007915114" MODIFIED="1518487921082">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Betriebsart <i>&quot;partiell initialisiert&quot;</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1480778652819" ID="ID_1335924975" MODIFIED="1518487921082" TEXT="Checks und Verzweigungen im Code"/>
<node CREATED="1480778689191" ID="ID_45333997" MODIFIED="1576282358078" TEXT="Pflanzt sich auf die Nutzer fort">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ..hier das Widget, das ebenfalls
    </p>
    <ul>
      <li>
        nur partiell aufgebaut existieren k&#246;nnen mu&#223;
      </li>
      <li>
        sp&#228;ter sich dynamisch erweitern k&#246;nnen mu&#223;
      </li>
      <li>
        in der Behandlung der UI-Signale ebenfalls checks einbauen mu&#223;
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node CREATED="1480778768988" ID="ID_1385067618" MODIFIED="1576282358078" TEXT="und das alles nur f&#xfc;r....">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      einen Fall, der <i>praktisch nie</i>&#160;auftritt
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="smily_bad"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1480780047561" FOLDED="true" HGAP="88" ID="ID_1993420764" MODIFIED="1561899108929" TEXT="Entscheidung" VSHIFT="16">
<node CREATED="1480780057079" ID="ID_481017202" MODIFIED="1518487921082" TEXT="Analyse">
<node CREATED="1480780061327" ID="ID_628488180" MODIFIED="1539382659192" TEXT="zwei F&#xe4;lle sind sehr &#xe4;hnlich">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      und zwar interessanterweise &#252;ber Kreuz gegliedert
    </p>
    <ul>
      <li>
        die Ctor-L&#246;sung (hat aber etwas mehr Umsetzungsaufwand)
      </li>
      <li>
        die &quot;wird schon klappen&quot;-L&#246;sung
      </li>
    </ul>
  </body>
</html></richcontent>
<node CREATED="1480780163369" ID="ID_851065784" MODIFIED="1518487921082" TEXT="wenig Zusatzaufwand"/>
<node CREATED="1480780174552" ID="ID_640476327" MODIFIED="1518487921082" TEXT="funktioniert fast immer"/>
<node CREATED="1480780183319" ID="ID_431465582" MODIFIED="1518487921082" TEXT="&#xfc;ble Konsequenzen wenn nicht"/>
</node>
<node CREATED="1480780140741" ID="ID_1754958261" MODIFIED="1539382659205" TEXT="und ein dritter ist wirklich wasserdicht">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      wenn alle Objekte <i>wirklich</i>&#160;auf partiell initialisierten Zustand vorbereitet sind,
    </p>
    <p>
      und auch &#252;ber ihre APIs dem Nutzer diese Unterscheidnung mit aufzwingen
    </p>
  </body>
</html></richcontent>
<node CREATED="1480780253397" ID="ID_1966427410" MODIFIED="1518487921082" TEXT="zum Preis von deutlich Mehraufwand"/>
<node CREATED="1480780260508" ID="ID_1565963038" MODIFIED="1539382659215" TEXT="plus einer korrodierenden Wirkung">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...welche darin besteht,
    </p>
    <p>
      da&#223; man &#252;berall, in der Fl&#228;che, sich um Zustandsabh&#246;ngigkeit k&#252;mmern mu&#223;,
    </p>
    <p>
      und deshalb dazu neigt, das Problem jeweils wegzutricksen.
    </p>
    <p>
      
    </p>
    <p>
      Es besteht also die gro&#223;e Gefahr, zu &quot;s&#252;ndigen&quot; und
    </p>
    <p>
      heimlich in den &quot;wird schon nix passieren&quot; Fall zu geraten.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1480780269867" ID="ID_1571900658" MODIFIED="1518487921082" TEXT="daf&#xfc;r kann nie was passieren"/>
</node>
</node>
<node CREATED="1480780494717" ID="ID_432076484" MODIFIED="1518487921082" TEXT="Bewertung">
<node CREATED="1480780498437" ID="ID_1806301944" MODIFIED="1539382659226" TEXT="nur die Ctor-L&#xf6;sung ist geradlinig">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      das hei&#223;t, nur diese L&#246;sung gr&#252;ndet in der Natur der behandelten Sachverhalte.
    </p>
    <p>
      Wenn etwas seinem Wesen nach nicht optional ist, dann wird es auch nicht optional behandelt.
    </p>
    <p>
      Es ist keine weitere Argumentation notwendig.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1480780538975" ID="ID_1139883143" MODIFIED="1539382659232" TEXT="nur die &quot;pa&#xdf;t schon&quot;-L&#xf6;sung ist vern&#xfc;nftig">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...nach allen g&#228;ngigen Prinzipien der instrumentellen Vernunft.
    </p>
    <p>
      KISS
    </p>
    <p>
      YAGNI
    </p>
    <p>
      &quot;fokussiere Dich&quot;
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1480780704849" ID="ID_483861197" MODIFIED="1518487921082" TEXT="Abw&#xe4;gung">
<node CREATED="1480780835319" ID="ID_1263364267" MODIFIED="1540506617751">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      hey, es ist <b>mein Leben</b>
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...hab ich mich je anders entschieden?
    </p>
    <p>
      <i>wenn</i>&#160;ich mich &#252;berhaupt entscheiden konnte...
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1540506618429" ID="ID_654526245" MODIFIED="1540506765576" TEXT="w&#xe4;hle die geradlinige L&#xf6;sung">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <ul>
      <li>
        die L&#246;sung entspricht der inneren Natur der Dinge
      </li>
      <li>
        sie bedeutet zwar (leider) eine zus&#228;tzliche Verpflichtung beim Erzeugen des Diff
      </li>
      <li>
        aber im Fehlerfall scheitern wir halbwegs sauber (Exception, dysfunktionales UI)
      </li>
    </ul>
  </body>
</html></richcontent>
<arrowlink DESTINATION="ID_1156407347" ENDARROW="Default" ENDINCLINATION="57;0;" ID="Arrow_ID_665420852" STARTARROW="None" STARTINCLINATION="11;38;"/>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1480780930115" HGAP="5" ID="ID_1156407347" MODIFIED="1576282358077" TEXT="L&#xf6;sung: per Konstruktor festlegen" VSHIFT="6">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...nochmal zusammengefa&#223;t
    </p>
    <ul>
      <li>
        immer wenn ein Feld <i>seinem Wesen nach</i>&#160;zwingend gesetzt sein mu&#223; (und aus keinem anderen Grund)
      </li>
      <li>
        dann wird dies per Konstruktor so erzwungen
      </li>
      <li>
        daher mu&#223; dann im Diff bereits im INS-Verb die notwendige Information transportiert werden
      </li>
      <li>
        das hei&#223;t, bei der Diff-Erzeugung mu&#223; man aufpassen und an dieser Stelle bereits einen Record mit den Daten liefern
      </li>
    </ul>
  </body>
</html></richcontent>
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1156407347" ENDARROW="Default" ENDINCLINATION="57;0;" ID="Arrow_ID_665420852" SOURCE="ID_654526245" STARTARROW="None" STARTINCLINATION="11;38;"/>
<icon BUILTIN="button_ok"/>
<icon BUILTIN="full-1"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1480694550601" FOLDED="true" ID="ID_562532566" MODIFIED="1679361463987" TEXT="&#xbb;Layout-Manager&#xab;">
<linktarget COLOR="#fec680" DESTINATION="ID_562532566" ENDARROW="Default" ENDINCLINATION="-1077;-98;" ID="Arrow_ID_130009025" SOURCE="ID_758873433" STARTARROW="None" STARTINCLINATION="611;93;"/>
<icon BUILTIN="forward"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1561898858814" HGAP="-12" ID="ID_1456175251" MODIFIED="1561899077764" TEXT="Bedeutung" VSHIFT="-21">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node CREATED="1561898668856" ID="ID_1536703120" MODIFIED="1561899085407" TEXT="soll einheitliches Styling unterst&#xfc;tzen">
<linktarget COLOR="#6557a4" DESTINATION="ID_1536703120" ENDARROW="Default" ENDINCLINATION="-715;74;" ID="Arrow_ID_1260120879" SOURCE="ID_253449798" STARTARROW="None" STARTINCLINATION="-1565;0;"/>
<node CREATED="1561898695086" ID="ID_1426731428" MODIFIED="1561899095356" TEXT="Koordiniert durch globalen Layout-Manager">
<arrowlink COLOR="#7339d4" DESTINATION="ID_44229333" ENDARROW="Default" ENDINCLINATION="-1147;0;" ID="Arrow_ID_61031233" STARTARROW="None" STARTINCLINATION="797;0;"/>
</node>
</node>
</node>
<node CREATED="1480639469981" ID="ID_983391388" MODIFIED="1557498707226" TEXT="Abstraktionen">
<node CREATED="1666902209942" ID="ID_727768012" MODIFIED="1666902216649" TEXT="DisplayManager"/>
<node CREATED="1666902217430" ID="ID_723844350" MODIFIED="1666902317723" TEXT="DisplayMetric">
<linktarget COLOR="#587489" DESTINATION="ID_723844350" ENDARROW="Default" ENDINCLINATION="201;41;" ID="Arrow_ID_886505757" SOURCE="ID_771044369" STARTARROW="None" STARTINCLINATION="-1041;45;"/>
</node>
<node CREATED="1666902240954" ID="ID_1027771886" MODIFIED="1666902248325" TEXT="DisplayViewHooks"/>
<node CREATED="1666902249080" ID="ID_1436546117" MODIFIED="1666902254061" TEXT="Display-Evaluation"/>
</node>
<node CREATED="1540647717236" ID="ID_1682094694" MODIFIED="1557498707226" TEXT="Konzept f&#xfc;r Gr&#xf6;&#xdf;en-Steuerung" VGAP="25">
<node COLOR="#435e98" CREATED="1540647728418" FOLDED="true" ID="ID_71764405" MODIFIED="1679360086917" TEXT="grunds&#xe4;tzlich">
<node CREATED="1540647743681" ID="ID_344681852" MODIFIED="1557498707226" TEXT="soweit m&#xf6;glich bei der Automatik bleiben">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1541862056646" ID="ID_262489955" MODIFIED="1557498707226">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Widgets arbeiten <b>stets in Pixeln</b>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node COLOR="#435e98" CREATED="1540647761611" ID="ID_841316619" MODIFIED="1557498707226" TEXT="Erweiterungs-Punkte">
<arrowlink COLOR="#59699c" DESTINATION="ID_1103556230" ENDARROW="Default" ENDINCLINATION="-876;0;" ID="Arrow_ID_72712594" STARTARROW="None" STARTINCLINATION="-1659;0;"/>
<icon BUILTIN="info"/>
<node CREATED="1540647890477" ID="ID_347383643" MODIFIED="1557498707226" TEXT="direkt die Properties setzen"/>
<node CREATED="1540647897963" ID="ID_155000915" MODIFIED="1557498707226" TEXT="an signal_size_allocate() anh&#xe4;ngen"/>
</node>
<node CREATED="1540647995231" ID="ID_37565869" MODIFIED="1557498707226" TEXT="wir kontrollieren nur die vertikale Ausdehnung"/>
<node CREATED="1540648007237" ID="ID_679717206" MODIFIED="1557498707226" TEXT="der Canvas folgt der Header-Struktur">
<node CREATED="1540648025554" ID="ID_1681608373" MODIFIED="1557498707226" TEXT="diese ist weitgehend automatisch"/>
<node CREATED="1540648036313" ID="ID_372148054" MODIFIED="1557498707226" TEXT="Quer-Verkoppelung schaffen">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1541857185478" ID="ID_1038931568" MODIFIED="1678405188400" TEXT="Zeit-Darstellung">
<linktarget COLOR="#2a79c1" DESTINATION="ID_1038931568" ENDARROW="Default" ENDINCLINATION="-511;19;" ID="Arrow_ID_1052516165" SOURCE="ID_1316730142" STARTARROW="None" STARTINCLINATION="-253;-12;"/>
<linktarget COLOR="#2a79c1" DESTINATION="ID_1038931568" ENDARROW="Default" ENDINCLINATION="-511;19;" ID="Arrow_ID_405016415" SOURCE="ID_552550333" STARTARROW="None" STARTINCLINATION="-1360;-43;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1541857206083" ID="ID_1480494725" MODIFIED="1557498707226" TEXT="Problem-Komplex">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1541857225304" ID="ID_1753842977" MODIFIED="1557498707226" TEXT="&#xdc;bersetzung Zeit -&gt; Pixel"/>
<node CREATED="1541857235471" ID="ID_1096265760" MODIFIED="1557498707226" TEXT="integrieren von Zeitangaben"/>
<node CREATED="1541857252860" ID="ID_298952812" MODIFIED="1557498707226" TEXT="Zeit-Rasterung (Time-Grid)"/>
<node CREATED="1541857273978" ID="ID_10543409" MODIFIED="1557498707226" TEXT="managing the Zoom-Window"/>
</node>
<node CREATED="1541857340976" ID="ID_433103364" LINK="#ID_1054510557" MODIFIED="1667337152477" TEXT="Lumiera Time Framework">
<node CREATED="1541857349526" ID="ID_1259099260" MODIFIED="1557498707226" TEXT="bietet Konzept &quot;Grid&quot;"/>
</node>
<node COLOR="#338800" CREATED="1666452057169" FOLDED="true" ID="ID_1202075896" MODIFIED="1678404826707" TEXT="Aufgabe: DisplayMetric bereitstellen">
<linktarget COLOR="#3c4864" DESTINATION="ID_1202075896" ENDARROW="Default" ENDINCLINATION="-1351;104;" ID="Arrow_ID_1210722108" SOURCE="ID_244578537" STARTARROW="None" STARTINCLINATION="-74;-277;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1666476557441" HGAP="46" ID="ID_1389871438" MODIFIED="1678404884839" TEXT="Design: Zugang und Interface" VSHIFT="-9">
<icon BUILTIN="info"/>
<node CREATED="1666476570783" ID="ID_1807785585" MODIFIED="1666479237736" TEXT="Ergebnis einer l&#xe4;ngeren Suche/Entwicklung">
<icon BUILTIN="info"/>
<node CREATED="1666476598232" ID="ID_412611180" MODIFIED="1666476751149" TEXT="zun&#xe4;chst als Dependency-Injection in die Track-Struktur eingewoben">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      per &#187;einh&#228;kel-&#955;&#171;
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1666479109019" ID="ID_211374228" MODIFIED="1666479136955" TEXT="Implementierung der &#xdc;bersetzung war im BodyCanvas"/>
<node CREATED="1666479148397" ID="ID_422444614" MODIFIED="1666479156928" TEXT="Zugriff &#xfc;ber DisplayFrame"/>
<node CREATED="1666479157703" ID="ID_1040782071" MODIFIED="1666479208532" TEXT="aus diesem heraus abstrahiert als ViewHook"/>
<node CREATED="1666479188584" ID="ID_563183680" MODIFIED="1666479203198" TEXT="ViewHook / CanvasHook getrennt"/>
<node CREATED="1666479210828" ID="ID_1064091645" MODIFIED="1666479225855" TEXT="aus letzterem extrahiert als &quot;mini-DisplayManager&quot;"/>
</node>
<node CREATED="1666476727258" ID="ID_735591701" MODIFIED="1666477819710" TEXT="Problem: verkettete virtuelle calls">
<linktarget COLOR="#9b3c5a" DESTINATION="ID_735591701" ENDARROW="Default" ENDINCLINATION="-828;79;" ID="Arrow_ID_619578495" SOURCE="ID_97557081" STARTARROW="None" STARTINCLINATION="-1537;0;"/>
<node CREATED="1666478244870" ID="ID_1175173929" MODIFIED="1666479017987" TEXT="CanvasHook::getMetric() &#xd83e;&#xdc22; DisplayMetric::translateTime... &#xd83e;&#xdc22; (ggfs ZoomWindow)"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1666478265860" FOLDED="true" ID="ID_1432355805" MODIFIED="1666493227294" TEXT="k&#xf6;nnte man Indirektionen einsparen?">
<icon BUILTIN="stop-sign"/>
<icon BUILTIN="hourglass"/>
<node CREATED="1666478030507" ID="ID_263543815" MODIFIED="1666481494568" TEXT="in fr&#xfc;herem Kontext schon mal untersucht...">
<arrowlink COLOR="#9f5337" DESTINATION="ID_1256984812" ENDARROW="Default" ENDINCLINATION="-812;-59;" ID="Arrow_ID_1128030260" STARTARROW="None" STARTINCLINATION="2097;137;"/>
</node>
<node CREATED="1666480618904" ID="ID_1117619215" MODIFIED="1666481163741" TEXT="Impl. als mix-in sichtbar">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Um eine tats&#228;chliche Indirektion einzusparen, mu&#223; die Implementierung schon mit der jeweiligen Interface-Deklaration zusammen sichtbar sein. Flexibilit&#228;t ist dann nur noch durch Parametrisierung der Implementierung m&#246;glich &#8212; was im konkreten Fall aber durchaus denkbar w&#228;re, da es sich letztlich nur um eine affin-lineare Transformation handelt (und wir uns darauf dann limitieren w&#252;rden)
    </p>
  </body>
</html></richcontent>
<node CREATED="1666481508537" ID="ID_767490652" MODIFIED="1666481512449" TEXT="Analyse..."/>
<node CREATED="1666481268601" ID="ID_224528667" MODIFIED="1666481473064" TEXT="CanvasHooked?">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      &#8623; Nein!
    </p>
    <p>
      Diese Trennung ist praktisch unverzichtbar, allein schon aufgrund der getrennten Allokation: das Widget wird irgendwann erzeugt und bekommt einen Pointer auf einen CanvasHook, welcher zu der Zeit schon besteht, und vermutlich auch l&#228;nger leben wird. Eine andere Frage ist allerdings, ob dann auf dem CanvasHook ein virtueller Call gemacht wird
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1666481516664" ID="ID_452196146" MODIFIED="1666483676987" TEXT="CanvasHook mix-in?">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      CanvasHook k&#246;nnte ein konkretes mix-In sein; d.h. zumindest die DisplayMetric w&#228;re zwar als weitere mix-in-Komponente in einem anderen Header definiert (um den Code klar zu halten), aber letztlich bereits auf Interface-Ebene komplett in der Implementierung sichtbar. Die zwei Faktoren der affin-linearen-Transformation w&#228;ren mutable Variable, die per Setter ge&#228;ndert werden k&#246;nnen...
    </p>
    <ul>
      <li>
        f&#252;r den Client erfolgt die Abstraktion beim Zugriff per up-Cast (d.h. er bekommt einen CanvasHook-Pointer)
      </li>
      <li>
        das konkrete TimelineLayout erbt von CanvasHook und inkorporiert damit genau diese Implementierung
      </li>
    </ul>
    <p>
      &#10233; der verbleibende Knackpunkt ist das Einbinden des (relativen) Canvas-Hook
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1666484788093" ID="ID_1631269506" MODIFIED="1666485263714" TEXT="DisplayFrame ist RelativeCanvasHook">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...und das nutzt explizit die bestehenden Indirektionen aus...
    </p>
    <ul>
      <li>
        Client nimmt einen DisplayHook per up-Cast (und wei&#223; nicht, da&#223; es sich um einen DisplayFrame handelt)
      </li>
      <li>
        getDisplayMetric() geht durch die VTable; das Interface legt sich &#252;berhaupt nicht fest, von woher die DisplayMetric stammt
      </li>
      <li>
        die Impl in RelativeCanvasHook delegiert auf refHook_.getMetric
      </li>
      <li>
        refHook_ ist selber wieder ein DisplayHook, und wir wissen nicht, wer ihn bereitstellt
      </li>
      <li>
        tats&#228;chlich bestimmt der top-Level DisplayFrame dar&#252;ber, indem er ihn an das TimelineLayout anbindet
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="stop-sign"/>
</node>
<node CREATED="1666485375028" ID="ID_282899643" MODIFIED="1666485530387" TEXT="DisplayFrame::getDisplayMetric()">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...das ist in der Tat eine &#252;berfl&#252;ssige Indirektion, die jedoch einen Storage-Slot einspart (weil die VTable ohnehin schon da ist). Man k&#246;nnte sehr wohl schon im Interface CanvasHook einen Pointer auf eine DisplayMetric vorsehen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1666485621639" ID="ID_1015581509" MODIFIED="1666485779479" TEXT="nur die Impl von DisplayMetric">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...das ist die minimale Einsparung...
    </p>
    <p>
      DisplayMetric w&#228;re demnach schon als Interface auf eine affin-lineare-Transformation festgelegt, und w&#252;rde nur per Setter parametrisiert...
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1666486003675" ID="ID_563456586" MODIFIED="1666486275676" TEXT="DisplayMetric* speichern">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Da im Clip die Anfrage an die Metrik-&#220;bersetzung x-fach (bei jedem Fokus-Wechsel) erfolgt, dagegen das generelle re-Positionieren auf dem Canvas nur nach einem Strukturwechsel oder Zoom-Wechsel, w&#228;re eine sehr einfache und effektive Optimierung, sich den DisplayMetric-Pointer <i>im individuellen Clip</i>&#160;eigens zu speichern. Das w&#228;re <i>allerings ein zus&#228;tzlicher &#187;Slot&#171; pro Clip! </i>... eine Variante mit einer zus&#228;tzlichen Pointer-Indirektion w&#252;rde den DisplayMetric*-Pointer im CanvasHook speichern, und damit einmal pro Track (also wesentlich kleinerer Hebel)
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1666485783482" ID="ID_1718274154" MODIFIED="1666486279237">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Diskussion &#10233; <i>sp&#228;ter!</i>
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <ul>
      <li>
        die aktuelle Implementierung ist zwar x-fach indirekt, daf&#252;r aber sauber faktorisiert
      </li>
      <li>
        sie lie&#223;e sich daher rein auf logischer Basis auch an weitere Use-cases anpassen
      </li>
      <li>
        zumindest die Optimierungen auf einen DisplayMetric-Pointer klingen akzeptabel
      </li>
      <li>
        allerdings sollten solche Optimierungen nicht <i>premature </i>erfolgen, sondern im Rahmen von konkreten Messungen in einer voll besetzten Timeline
      </li>
    </ul>
  </body>
</html></richcontent>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1666493151300" ID="ID_1454936084" MODIFIED="1666493165261" TEXT="#1254 investigate impact of DisplayMetric indirection">
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
<node CREATED="1666902098061" ID="ID_1065760214" MODIFIED="1666902106000" TEXT="Implementierung als mix-In">
<node CREATED="1666902107252" ID="ID_70774013" MODIFIED="1666902131606" TEXT="drohender Diamond-of-Death">
<icon BUILTIN="smiley-oh"/>
</node>
<node CREATED="1666902141488" ID="ID_771044369" MODIFIED="1666902327065" TEXT="Interface DisplayMetric geh&#xf6;rt aber zum Interface DisplayManager">
<arrowlink COLOR="#587489" DESTINATION="ID_723844350" ENDARROW="Default" ENDINCLINATION="201;41;" ID="Arrow_ID_886505757" STARTARROW="None" STARTINCLINATION="-1041;45;"/>
</node>
<node CREATED="1666902351036" ID="ID_502371950" MODIFIED="1666902395778" TEXT="mix-In kann daher die zugeh&#xf6;rige Basisklasse nicht explizit machen">
<node CREATED="1666902397286" ID="ID_574539438" MODIFIED="1666902412032" TEXT="weil sonst Diamond"/>
<node CREATED="1666902413588" ID="ID_1336614077" MODIFIED="1666902420823" TEXT="also stattdessen dokumentieren"/>
<node CREATED="1666902450815" ID="ID_1937191130" MODIFIED="1666902458897" TEXT="und als Include einbinden"/>
<node CREATED="1666902421555" ID="ID_1361555924" MODIFIED="1666902429264" TEXT="und per static assertion absichern"/>
</node>
<node CREATED="1666902485026" ID="ID_637601056" MODIFIED="1666902539317" TEXT="direkt verbinden mit ZoomWindow &#x27f9; ZoomMetric">
<arrowlink COLOR="#6d7f94" DESTINATION="ID_326538083" ENDARROW="Default" ENDINCLINATION="7;-65;" ID="Arrow_ID_1100141740" STARTARROW="None" STARTINCLINATION="124;7;"/>
</node>
</node>
</node>
<node CREATED="1666476675737" ID="ID_489715422" MODIFIED="1678406261536">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <u>Dienst</u>: aktueller Skalenfaktor + Offset
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#eb488f" DESTINATION="ID_326538083" ENDARROW="Default" ENDINCLINATION="-242;-28;" ID="Arrow_ID_1439269834" STARTARROW="None" STARTINCLINATION="74;-6;"/>
<linktarget COLOR="#6a9ab7" DESTINATION="ID_489715422" ENDARROW="Default" ENDINCLINATION="-479;1585;" ID="Arrow_ID_994014904" SOURCE="ID_626245969" STARTARROW="None" STARTINCLINATION="851;54;"/>
<linktarget COLOR="#9f3f5e" DESTINATION="ID_489715422" ENDARROW="Default" ENDINCLINATION="-2561;184;" ID="Arrow_ID_597075385" SOURCE="ID_400013153" STARTARROW="None" STARTINCLINATION="-1907;-124;"/>
<icon BUILTIN="forward"/>
<node CREATED="1666901228118" ID="ID_701422331" MODIFIED="1666901228118" TEXT="translateTimeToPixels">
<node CREATED="1666901808139" ID="ID_68915394" MODIFIED="1666901819846" TEXT="Zeit &#x27fc; Pixel">
<node CREATED="1666901778191" ID="ID_1270254992" MODIFIED="1666901795372" TEXT="(&#xdc;bersetzungsfunktion vorw&#xe4;rts)">
<font NAME="SansSerif" SIZE="11"/>
</node>
<node CREATED="1672694716089" ID="ID_1323685955" MODIFIED="1672695142709" TEXT="Problem: Canvas-Ursprung in Pixel">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1672695162345" ID="ID_624244605" MODIFIED="1672695183218" TEXT="sollte rein technisch &#x201e;links oben&#x201c; im Fenster liegen"/>
<node CREATED="1672695187333" ID="ID_1273824912" MODIFIED="1672695197079" TEXT="mu&#xdf; f&#xfc;r alle Zeichen-Routinen konsistent sein"/>
<node CREATED="1672695198068" ID="ID_1764927765" MODIFIED="1672695207622" TEXT="ist davon abgesehen aber opaque"/>
<node CREATED="1672695222232" ID="ID_785032228" MODIFIED="1672695546890" TEXT="binde ihn an den Anfrang vom ZoomWindow-Canvas">
<arrowlink COLOR="#868ca5" DESTINATION="ID_350857288" ENDARROW="Default" ENDINCLINATION="1491;0;" ID="Arrow_ID_265889059" STARTARROW="None" STARTINCLINATION="-1670;93;"/>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
<node CREATED="1672694636798" ID="ID_1539523482" MODIFIED="1672694672146" TEXT="translateScreenDelta">
<node CREATED="1672694688748" ID="ID_1632699702" MODIFIED="1672694704719" TEXT="Zeit-Offset &#x27fc; Pixel-&#x394;"/>
<node CREATED="1666901778191" ID="ID_10531267" MODIFIED="1672700828681" TEXT="(implementiert Metrik-&#xdc;bersetzung)">
<font NAME="SansSerif" SIZE="11"/>
</node>
</node>
<node CREATED="1666901241839" ID="ID_1036232479" MODIFIED="1666901245317" TEXT="applyScreenDelta">
<node CREATED="1666901254363" ID="ID_280452814" MODIFIED="1666901607568" TEXT="Zeit + pixel &#x27fc; Zeit"/>
<node CREATED="1666901703977" ID="ID_944891696" MODIFIED="1666901738404" TEXT="(implizit die Umkehrfunktion)">
<font NAME="SansSerif" SIZE="11"/>
</node>
</node>
<node CREATED="1666901623044" ID="ID_1492305881" MODIFIED="1666901629255" TEXT="coveredTime()">
<node CREATED="1666901657919" ID="ID_783302636" MODIFIED="1666902040819" TEXT="Implementierung tendentiell problematisch">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      woher soll man das wissen?
    </p>
    <p>
      mu&#223; eigentlich schon von der Session geliefert werden
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1666901646144" ID="ID_1978778077" MODIFIED="1666902048800" TEXT="ben&#xf6;tigt zur Dimensionierung des Canvas..."/>
<node CREATED="1666902006957" ID="ID_601891500" MODIFIED="1666902033802" TEXT="und auch zur Konstituierung des ZoomWindow"/>
</node>
</node>
</node>
<node CREATED="1541861495569" FOLDED="true" ID="ID_1949450244" MODIFIED="1672970963226">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      &nbsp;&#xd83e;&#xdc46; generische <b>ZoomWindow</b>-Komponente
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#5b5ca1" DESTINATION="ID_838803024" ENDARROW="Default" ENDINCLINATION="-519;-1168;" ID="Arrow_ID_1674512697" STARTARROW="None" STARTINCLINATION="518;31;"/>
<node CREATED="1666889163624" ID="ID_858177284" MODIFIED="1666889196771" TEXT="Einbindung und Verdrahtung">
<node CREATED="1666889225532" ID="ID_176130370" MODIFIED="1666889244156" TEXT="direkt eingelagert in die DisplayMetric-Implementierung (mix-in)">
<node CREATED="1666889610112" ID="ID_326538083" MODIFIED="1666902539317">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Name: <b>ZoomMetric</b>
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#6d7f94" DESTINATION="ID_326538083" ENDARROW="Default" ENDINCLINATION="7;-65;" ID="Arrow_ID_1100141740" SOURCE="ID_637601056" STARTARROW="None" STARTINCLINATION="124;7;"/>
<linktarget COLOR="#eb488f" DESTINATION="ID_326538083" ENDARROW="Default" ENDINCLINATION="-242;-28;" ID="Arrow_ID_1439269834" SOURCE="ID_489715422" STARTARROW="None" STARTINCLINATION="74;-6;"/>
<node CREATED="1666889733127" ID="ID_41491875" MODIFIED="1666889741033" TEXT="header-only"/>
<node CREATED="1666889741894" ID="ID_176779607" MODIFIED="1666889777772" TEXT="generisch">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      direkten Bezug auf die Timeline vermeiden!
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1666889639116" ID="ID_1904347591" MODIFIED="1666889659397" TEXT="zoomWindow_ als Member zug&#xe4;nglich"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1666889276573" ID="ID_858654573" MODIFIED="1666889393957" TEXT="control connnections">
<icon BUILTIN="hourglass"/>
<node CREATED="1666889293466" ID="ID_1286633993" MODIFIED="1666889303678" TEXT="Zoom-Widget in der Toolbar"/>
<node CREATED="1666889427144" ID="ID_1652095423" MODIFIED="1666889438850" TEXT="Navigator / Spot-Locator"/>
<node CREATED="1666889336685" ID="ID_1883804335" MODIFIED="1666889344602" TEXT="context-Menu?"/>
<node CREATED="1666889359890" ID="ID_437996591" MODIFIED="1666889366672" TEXT="globales View-Men&#xfc;"/>
<node CREATED="1666889369994" ID="ID_1179325794" MODIFIED="1666889376418" TEXT="Keybindings"/>
<node CREATED="1666889377440" ID="ID_1707480753" MODIFIED="1666889383577" TEXT="Zoom-Gesten"/>
</node>
</node>
<node CREATED="1672703576092" HGAP="227" ID="ID_253168595" MODIFIED="1672703593980" TEXT="Initialisierung" VSHIFT="25">
<node CREATED="1672703613783" ID="ID_1111316685" MODIFIED="1672703625305" TEXT="anfangs undefiniert / default"/>
<node COLOR="#338800" CREATED="1672706823302" ID="ID_445391760" MODIFIED="1672707119233" TEXT="changeNotification-Functor verdrahten">
<linktarget COLOR="#34a5a4" DESTINATION="ID_445391760" ENDARROW="Default" ENDINCLINATION="108;96;" ID="Arrow_ID_1879633887" SOURCE="ID_394283688" STARTARROW="None" STARTINCLINATION="515;22;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1672706833208" ID="ID_1727841525" MODIFIED="1675897056715" TEXT="kann man direkt mit dem Signal initialisieren?">
<icon BUILTIN="help"/>
<node CREATED="1672706877415" ID="ID_1791069589" MODIFIED="1672706882814" TEXT="signalStructureChange_"/>
<node CREATED="1672706902644" ID="ID_429923017" MODIFIED="1672706904037" TEXT="using SignalStructureChange = sigc::signal&lt;void&gt;;"/>
<node CREATED="1672706906238" ID="ID_1588783616" MODIFIED="1672706918219">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      sollte <i>callable</i>&#160;sein
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1672706942567" ID="ID_525512704" MODIFIED="1672707389514">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...damit w&#252;rde eine std::function konstruiert,
    </p>
    <p>
      welche das Target (per Referenz / smart-ptr) aufruft.<br />
    </p>
    <p>
      Der Change-Listener wird im ZoomWindow zugewiesen,
    </p>
    <p>
      was <a href="https://en.cppreference.com/w/cpp/utility/functional/function/operator%3D">lt. C++-Referenz</a>&#160;den gleichen Effekt hat wie
    </p>
    <p>
      &#160; <font face="Monospaced">function(<a href="http://en.cppreference.com/w/cpp/utility/forward">std::forward</a>&lt;F&gt;(f)).swap(*this);</font>
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#8bbab7" DESTINATION="ID_281948392" ENDARROW="Default" ENDINCLINATION="824;0;" ID="Arrow_ID_1340083553" STARTARROW="None" STARTINCLINATION="-507;22;"/>
<icon BUILTIN="idea"/>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1672706851970" ID="ID_1116087475" MODIFIED="1678405849988" TEXT="hab das jetzt einfach mal dreist so gemacht">
<icon BUILTIN="bell"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1672703662072" ID="ID_1923088969" MODIFIED="1678405417720" TEXT="kl&#xe4;ren: wann wird die Pixel-Weite festgelegt?">
<icon BUILTIN="help"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1672708648699" ID="ID_1466789019" MODIFIED="1672708769250" TEXT="#1264 fully integrate ZoomWindow mutators into Timeline display">
<arrowlink COLOR="#954368" DESTINATION="ID_1985216414" ENDARROW="Default" ENDINCLINATION="1507;68;" ID="Arrow_ID_1698932113" STARTARROW="None" STARTINCLINATION="-35;216;"/>
<icon BUILTIN="flag-yellow"/>
</node>
<node COLOR="#435e98" CREATED="1672764114942" ID="ID_327539453" MODIFIED="1672765461663" TEXT="Ansatzpunkt: Erfahrungen beim ElementBoxWidget">
<richcontent TYPE="NOTE"><html>
  <head>
    
    
  </head>
  <body>
    <p>
      <u>Fazit</u>: man sollte also die Layout-Berechnungen machen in dem 
      Zeitraum zwischen dem Aufruf der get_preferred_*-VFunks und dem 
      on_size_allocate()-callback. Denn in dieser Phase sind die Widgets 
      bereits gemapped (=einem GDK-Fenster mit Koordinaten zugeordnet) und der <i>visibility-</i>Status 
      steht bereits fest, aber es wurde noch nichts <i>realized </i>und damit 
      auch noch nichts (erneut) gezeichnet. Sofern kein &#187;fill-Layout&#171; 
      verwendet wird, liefern die get_preferred_width|height()-Funktionen als 
      Standard-Wert genau das, was GTK dann nachfolgend zuteilen wird (die 
      MIN-Werte werden praktisch nicht verwendet). Sp&#228;ter k&#246;nnten Widgets sich 
      noch verkleinern, und GTK k&#246;nnte eine gr&#246;&#223;ere Allokation zuteilen.
    </p>
    <p>
      
    </p>
    <p>
      &#55358;&#56370; Es gibt <b>keine praktikable M&#246;glichkeit</b>, die 
      aktuelle <b>reale Gr&#246;&#223;e </b>in Pixeln von Au&#223;en und generisch 
      f&#252;r jedes Widget in Erfahrung zu bringen. Wenn man selber ein 
      custom-Widget schreibt, kann man die reale size-Allocation wegspeichern 
      und zug&#228;nglich machen; dann bleibt aber immer noch das Problem mit den 
      Dekorationen und dem Padding per CSS
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#738fa6" DESTINATION="ID_915287836" ENDARROW="Default" ENDINCLINATION="-35;506;" ID="Arrow_ID_1564122490" STARTARROW="None" STARTINCLINATION="1322;71;"/>
<linktarget COLOR="#6575b0" DESTINATION="ID_327539453" ENDARROW="Default" ENDINCLINATION="-654;33;" ID="Arrow_ID_47233640" SOURCE="ID_123234016" STARTARROW="None" STARTINCLINATION="-417;28;"/>
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1672708980937" ID="ID_123640005" MODIFIED="1678405387303" TEXT="Change-Listener vom ZoomWindow &#x27fc; SignalStructureChange &#x27f9; trigger Display-Evaluation">
<linktarget COLOR="#71b1ad" DESTINATION="ID_123640005" ENDARROW="Default" ENDINCLINATION="889;28;" ID="Arrow_ID_835967440" SOURCE="ID_1838761224" STARTARROW="None" STARTINCLINATION="1146;63;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1672787519757" ID="ID_650213030" MODIFIED="1678405252570" TEXT="Pixel-Weite kalibrieren: zu Beginn der Display-Evaluation einschleifen">
<arrowlink COLOR="#444b9e" DESTINATION="ID_1189311522" ENDARROW="Default" ENDINCLINATION="785;29;" ID="Arrow_ID_1573433988" STARTARROW="None" STARTINCLINATION="241;10;"/>
<linktarget COLOR="#517488" DESTINATION="ID_650213030" ENDARROW="Default" ENDINCLINATION="515;561;" ID="Arrow_ID_113145433" SOURCE="ID_1514900067" STARTARROW="None" STARTINCLINATION="754;37;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1678840536481" HGAP="35" ID="ID_1658816102" MODIFIED="1678840689222" TEXT="wird aber ausgel&#xf6;st durch bodyCanvas_.signal_size_allocate()">
<arrowlink COLOR="#5978c6" DESTINATION="ID_1655268668" ENDARROW="Default" ENDINCLINATION="1204;-55;" ID="Arrow_ID_470073487" STARTARROW="None" STARTINCLINATION="506;642;"/>
<icon BUILTIN="info"/>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1678405393907" ID="ID_988091406" MODIFIED="1678405414087" TEXT="scheint zu funktionieren">
<icon BUILTIN="idea"/>
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
</node>
<node CREATED="1541857367446" ID="ID_34718193" MODIFIED="1557498707226" TEXT="Anfragen">
<node CREATED="1541857411462" ID="ID_1874282992" MODIFIED="1557498707226" TEXT="Pixel-Intervall -&gt; TimeSpan">
<node CREATED="1541857482489" ID="ID_524756641" MODIFIED="1557498707226" TEXT="timeline custom drawing"/>
</node>
<node CREATED="1568578895020" ID="ID_561665068" MODIFIED="1568578911701" TEXT="Time point -&gt; Pixel-Offset">
<node CREATED="1568578913193" ID="ID_1111880749" MODIFIED="1568578935234" TEXT="placing a Clip"/>
</node>
</node>
</node>
</node>
<node CREATED="1480639473324" ID="ID_191170582" MODIFIED="1575131626153" TEXT="eval pass">
<linktarget COLOR="#921d48" DESTINATION="ID_191170582" ENDARROW="Default" ENDINCLINATION="1620;0;" ID="Arrow_ID_982561049" SOURCE="ID_624999649" STARTARROW="None" STARTINCLINATION="299;22;"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1666378011037" ID="ID_1362490028" MODIFIED="1666739659882" TEXT="#1252 Timeline display-evaluation-pass">
<arrowlink COLOR="#735667" DESTINATION="ID_1896159832" ENDARROW="Default" ENDINCLINATION="68;-547;" ID="Arrow_ID_1219011636" STARTARROW="None" STARTINCLINATION="1094;73;"/>
<icon BUILTIN="flag-yellow"/>
</node>
<node COLOR="#435e98" CREATED="1560627720011" HGAP="35" ID="ID_322949413" MODIFIED="1666450726004" TEXT="wozu?" VSHIFT="23">
<icon BUILTIN="help"/>
<node CREATED="1666450734975" ID="ID_1944641444" MODIFIED="1666450749556" TEXT="&#xfc;bergreifende Koordination des Layouts"/>
<node CREATED="1666450778635" ID="ID_743528549" MODIFIED="1666450809168" TEXT="st&#xf6;&#xdf;t lokalen Neuaufbau der Strukturen an"/>
<node CREATED="1666450794506" ID="ID_373894220" MODIFIED="1666450805016" TEXT="verteilt zus&#xe4;tzliches (vertikales) padding"/>
</node>
</node>
<node CREATED="1555022703032" ID="ID_13722484" MODIFIED="1557498707226" TEXT="Verdrahtung">
<node CREATED="1555022710839" ID="ID_1166296639" MODIFIED="1557498707226" TEXT="mu&#xdf; in alle Nutzer injiziert werden"/>
<node CREATED="1555022761189" ID="ID_640769952" MODIFIED="1576282358077" TEXT="wie? geht wohl nur direkte Referenz">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      es ist hier kein by-Name-Zugriff,
    </p>
    <p>
      weil ein Layout-Manager immer nur im Bereich eines TimelineWidget relevant ist
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1555023446038" ID="ID_858959830" MODIFIED="1557498707226" TEXT="clients">
<node CREATED="1555023449597" ID="ID_1228634821" MODIFIED="1557498707226" TEXT="TimelineCanvas">
<node CREATED="1555023483241" ID="ID_753460169" MODIFIED="1557498707226" TEXT="zum Feststellen des zu zeichnenden Bereiches"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1560698483596" ID="ID_368409585" MODIFIED="1561048727700" TEXT="Infrastruktur f&#xfc;r Status-&#xc4;nderungen">
<icon BUILTIN="button_ok"/>
<node CREATED="1560698506599" ID="ID_1679016153" MODIFIED="1561048713811" TEXT="notwendig">
<icon BUILTIN="info"/>
<node CREATED="1560698514618" ID="ID_424874311" MODIFIED="1560698517787" TEXT="Benachrichtigung">
<node CREATED="1560698522830" ID="ID_771595987" MODIFIED="1560698534464" TEXT="initial..."/>
<node CREATED="1560698535135" ID="ID_499624854" MODIFIED="1560698542403" TEXT="bei neuen Elementen"/>
<node CREATED="1560698543371" ID="ID_853239190" MODIFIED="1560698549559" TEXT="bei entfernten Elementen"/>
<node CREATED="1560698550171" ID="ID_1461540019" MODIFIED="1560698556309" TEXT="bei aus/eingeblendeten Elementen"/>
</node>
<node CREATED="1560698518159" ID="ID_625626693" MODIFIED="1560698521434" TEXT="Aktionen"/>
</node>
<node COLOR="#435e98" CREATED="1560698568536" ID="ID_1734037059" MODIFIED="1561048706720" TEXT="Mechanismen">
<node CREATED="1560698573838" FOLDED="true" ID="ID_546774892" MODIFIED="1561042610462" TEXT="Call-chain bauen">
<icon BUILTIN="button_cancel"/>
<node CREATED="1560698613458" ID="ID_1618171484" MODIFIED="1560698618101" TEXT="direkte Parent-Links">
<node CREATED="1560698643705" ID="ID_1904845397" MODIFIED="1560698651645" TEXT="eine Menge Aufwand"/>
<node CREATED="1560698652882" ID="ID_314410558" MODIFIED="1560698659496" TEXT="komplex instand zu halten"/>
<node CREATED="1560698660108" ID="ID_881178993" MODIFIED="1560698663479" TEXT="verteilte Struktur"/>
</node>
<node CREATED="1560698618689" ID="ID_231185798" MODIFIED="1560698625444" TEXT="notification-Callbacks">
<node CREATED="1560698764250" ID="ID_926915515" MODIFIED="1560698770146" TEXT="Publisher-Subscriber"/>
<node CREATED="1560698668089" ID="ID_1609727906" MODIFIED="1560698674278" TEXT="ebenso problematisch"/>
<node CREATED="1560698675226" ID="ID_1528720357" MODIFIED="1576282358076" TEXT="Signale sind aber Callbacks....">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...und f&#252;r Signale sind diese Probleme bereits gel&#246;st
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#fcc76b" DESTINATION="ID_64926941" ENDARROW="Default" ENDINCLINATION="39;-39;" ID="Arrow_ID_1800480673" STARTARROW="None" STARTINCLINATION="-57;0;"/>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1560698625944" ID="ID_64926941" MODIFIED="1563021623445" TEXT="ein spezielles Signal hierf&#xfc;r">
<linktarget COLOR="#fcc76b" DESTINATION="ID_64926941" ENDARROW="Default" ENDINCLINATION="39;-39;" ID="Arrow_ID_1800480673" SOURCE="ID_1528720357" STARTARROW="None" STARTINCLINATION="-57;0;"/>
<icon BUILTIN="forward"/>
<node CREATED="1560698805704" ID="ID_1490359824" MODIFIED="1561042627539" TEXT="wer tr&#xe4;gt es?">
<arrowlink DESTINATION="ID_1799554074" ENDARROW="Default" ENDINCLINATION="93;0;" ID="Arrow_ID_576839005" STARTARROW="None" STARTINCLINATION="169;0;"/>
</node>
<node CREATED="1560698814327" ID="ID_44788176" MODIFIED="1576282358076" TEXT="wie wird es zug&#xe4;nglich?">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <ul>
      <li>
        per direktem Zugriff via Interface DisplayManager
      </li>
      <li>
        per Zuweisung an die einzelnen TrackBody (signal == smart-ptr!)
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1561036803347" ID="ID_281948392" MODIFIED="1672707022158" TEXT="Sigc-Signal ist ein (ref-counting) smart-ptr">
<linktarget COLOR="#8bbab7" DESTINATION="ID_281948392" ENDARROW="Default" ENDINCLINATION="824;0;" ID="Arrow_ID_1340083553" SOURCE="ID_525512704" STARTARROW="None" STARTINCLINATION="-507;22;"/>
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#338800" CREATED="1561036911418" ID="ID_1948376179" MODIFIED="1561048719567" TEXT="Struktur">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1561036914961" ID="ID_318008470" MODIFIED="1561042586692" TEXT="der DisplayManager tr&#xe4;gt das &quot;Anker&quot;-Signal">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1561036987264" ID="ID_1799554074" MODIFIED="1582931247838" TEXT="signalStructureChange">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1799554074" ENDARROW="Default" ENDINCLINATION="93;0;" ID="Arrow_ID_576839005" SOURCE="ID_1490359824" STARTARROW="None" STARTINCLINATION="169;0;"/>
<linktarget COLOR="#8db7cd" DESTINATION="ID_1799554074" ENDARROW="Default" ENDINCLINATION="598;258;" ID="Arrow_ID_1531606207" SOURCE="ID_833580972" STARTARROW="None" STARTINCLINATION="455;26;"/>
<linktarget COLOR="#89adc8" DESTINATION="ID_1799554074" ENDARROW="Default" ENDINCLINATION="340;0;" ID="Arrow_ID_19787354" SOURCE="ID_1865072728" STARTARROW="None" STARTINCLINATION="1589;0;"/>
<icon BUILTIN="info"/>
</node>
</node>
<node COLOR="#338800" CREATED="1561036945238" ID="ID_932981139" MODIFIED="1561047017981" TEXT="Nutzer kopieren es sich hiervon">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1561037513769" ID="ID_1240081490" MODIFIED="1561042582058" TEXT="das BodyCanvasWidget h&#xe4;ngt daran seinen Slot">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1561037555636" ID="ID_830580579" MODIFIED="1565272188071" TEXT="slotStructureChange">
<linktarget COLOR="#3a5fc7" DESTINATION="ID_830580579" ENDARROW="Default" ENDINCLINATION="22;64;" ID="Arrow_ID_820625489" SOURCE="ID_1083460430" STARTARROW="None" STARTINCLINATION="69;7;"/>
<icon BUILTIN="info"/>
</node>
</node>
<node COLOR="#338800" CREATED="1672707067098" ID="ID_394283688" MODIFIED="1672707125211" TEXT="Change-Listener vom ZoomWindow (TimelineLayout) angekoppelt">
<arrowlink COLOR="#34a5a4" DESTINATION="ID_445391760" ENDARROW="Default" ENDINCLINATION="108;96;" ID="Arrow_ID_1879633887" STARTARROW="None" STARTINCLINATION="515;22;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1582987902149" ID="ID_1883527171" MODIFIED="1582988088360" TEXT="Details: Struktur&#xe4;nderung auf Timeline-Elemente &#xfc;bertragen">
<arrowlink COLOR="#7aacc3" DESTINATION="ID_1537299376" ENDARROW="Default" ENDINCLINATION="-632;83;" ID="Arrow_ID_1708561781" STARTARROW="None" STARTINCLINATION="806;36;"/>
<icon BUILTIN="info"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1582987649916" ID="ID_1965735811" MODIFIED="1582987656795" TEXT="Ausl&#xf6;ser">
<icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1582987662546" ID="ID_1241259382" MODIFIED="1582988324071" TEXT="Diff">
<icon BUILTIN="button_ok"/>
<node CREATED="1582988407348" ID="ID_1492167964" MODIFIED="1582988538202" TEXT="Trigger im Diff-System verankert">
<arrowlink COLOR="#4d8b82" DESTINATION="ID_727500820" ENDARROW="Default" ENDINCLINATION="-1160;0;" ID="Arrow_ID_680446238" STARTARROW="None" STARTINCLINATION="-1645;0;"/>
</node>
<node CREATED="1582988189302" ID="ID_1886398385" MODIFIED="1582988334866" TEXT="triggert re-Konstruieren">
<arrowlink COLOR="#6e8c9b" DESTINATION="ID_1911321905" ENDARROW="Default" ENDINCLINATION="-733;-208;" ID="Arrow_ID_528411186" STARTARROW="None" STARTINCLINATION="1622;164;"/>
<icon BUILTIN="idea"/>
<node CREATED="1582988593441" ID="ID_1045867973" MODIFIED="1582988608129" TEXT="das l&#xf6;st seinerseits signalStructureChange aus"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1582987668065" ID="ID_1132578172" MODIFIED="1582987683420" TEXT="gibt es noch sonstige?">
<icon BUILTIN="help"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1565269870508" FOLDED="true" HGAP="79" ID="ID_1694997659" MODIFIED="1582994817448" TEXT="Thema: Platz belegen" VSHIFT="10">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1565269889973" ID="ID_505463246" MODIFIED="1565269897468" TEXT="wann passiert das?">
<icon BUILTIN="help"/>
<node CREATED="1565270118707" ID="ID_271042562" MODIFIED="1565270125821" TEXT="zwei Modelle denkbar">
<node CREATED="1565270127210" FOLDED="true" ID="ID_1361476631" MODIFIED="1565273111637" TEXT="systematisch">
<icon BUILTIN="forward"/>
<node CREATED="1565270170764" ID="ID_1485295868" MODIFIED="1565270177943" TEXT="on realize()"/>
<node CREATED="1565270179930" ID="ID_184642245" MODIFIED="1565270190161" TEXT="wenn die Gr&#xf6;&#xdf;e ge&#xe4;ndert wurde">
<node CREATED="1565270944290" ID="ID_842897291" LINK="https://developer.gnome.org/gtk3/stable/GtkWidget.html#GtkWidget-configure-event" MODIFIED="1567869662204" TEXT="the &quot;configure-event&quot;">
<linktarget COLOR="#819eaf" DESTINATION="ID_842897291" ENDARROW="Default" ENDINCLINATION="1085;0;" ID="Arrow_ID_704507451" SOURCE="ID_244849159" STARTARROW="None" STARTINCLINATION="2673;-176;"/>
</node>
<node CREATED="1565272115020" ID="ID_1493844829" MODIFIED="1565272125236" TEXT="size_allocate?"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1565272130826" ID="ID_1758102270" MODIFIED="1565276547287" TEXT="sonst? Expermient machen">
<linktarget COLOR="#d44574" DESTINATION="ID_1758102270" ENDARROW="Default" ENDINCLINATION="161;13;" ID="Arrow_ID_533711629" SOURCE="ID_841565553" STARTARROW="None" STARTINCLINATION="663;0;"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1565270191321" ID="ID_1083460430" MODIFIED="1565272188071" TEXT="nach Struktur-&#xc4;nderungen">
<arrowlink COLOR="#3a5fc7" DESTINATION="ID_830580579" ENDARROW="Default" ENDINCLINATION="22;64;" ID="Arrow_ID_820625489" STARTARROW="None" STARTINCLINATION="69;7;"/>
</node>
</node>
<node CREATED="1565270133489" FOLDED="true" ID="ID_246191901" MODIFIED="1565270273097" TEXT="nach Bedarf">
<icon BUILTIN="button_cancel"/>
<node CREATED="1565270236979" ID="ID_500089479" MODIFIED="1565270248056" TEXT="Problem ist hier, den Bedarf zu erkennen">
<icon BUILTIN="broken-line"/>
</node>
<node CREATED="1565270276854" ID="ID_1536974886" MODIFIED="1565270289802" TEXT="ist also nur eine Schein-L&#xf6;sung">
<icon BUILTIN="closed"/>
</node>
<node CREATED="1565273005475" ID="ID_1081606131" MODIFIED="1576282358075" TEXT="aber sinnvoll zum Triggern">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Es ist sinnvoll, die Feststellung einer &#196;nderung vom Berechnen der neuen Werte zu trennen.
    </p>
    <p>
      Die <i>Notwendigkeit</i>&#160;einer Neuberechnung wird also systematisch festgestellt,
    </p>
    <p>
      aber die tats&#228;chliche Neuberechnung erfolgt erst sp&#228;t, und bei Bedarf
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#8c9ca5" DESTINATION="ID_666349818" ENDARROW="Default" ENDINCLINATION="472;-18;" ID="Arrow_ID_1928094034" STARTARROW="Default" STARTINCLINATION="-298;0;"/>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node CREATED="1565272203271" ID="ID_882288996" MODIFIED="1565272228941">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      mu&#223; <i>nach</i>&#160;GTK's Behandlung gemacht werden
    </p>
  </body>
</html></richcontent>
<node CREATED="1565272231130" ID="ID_1494587769" MODIFIED="1565272239670" TEXT="erst mu&#xdf; GTK nach seinem System den Platz belegen"/>
<node CREATED="1565272267647" ID="ID_435131169" MODIFIED="1565272278457" TEXT="dann k&#xf6;nnen wir endg&#xfc;ltig unseren Platz festlegen"/>
<node CREATED="1565272555130" ID="ID_1371436208" MODIFIED="1582989730794" TEXT="und m&#xfc;ssen als Konsequenz auch dynamisch vergr&#xf6;&#xdf;ern">
<linktarget COLOR="#4c8bd7" DESTINATION="ID_1371436208" ENDARROW="Default" ENDINCLINATION="115;0;" ID="Arrow_ID_1110457125" SOURCE="ID_851047389" STARTARROW="None" STARTINCLINATION="134;7;"/>
</node>
</node>
<node CREATED="1565272282454" ID="ID_1908255689" MODIFIED="1565272311351">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Grundlagen m&#252;ssen <i>vor</i>&#160;GTK's Behandlung erfolgen
    </p>
  </body>
</html></richcontent>
<node CREATED="1565272503600" ID="ID_1427250696" MODIFIED="1565272509745" TEXT="aber nur mit Einschr&#xe4;nkung"/>
<node CREATED="1565272510615" ID="ID_329997818" MODIFIED="1565272532607" TEXT="es gen&#xfc;gt, sinnvolle Minimalwerte zu setzen"/>
<node CREATED="1565272533522" ID="ID_851047389" MODIFIED="1582989730794" TEXT="denn wir werden sp&#xe4;ter immer noch vergr&#xf6;&#xdf;ern m&#xfc;ssen">
<arrowlink COLOR="#4c8bd7" DESTINATION="ID_1371436208" ENDARROW="Default" ENDINCLINATION="115;0;" ID="Arrow_ID_1110457125" STARTARROW="None" STARTINCLINATION="134;7;"/>
</node>
</node>
</node>
<node CREATED="1565269898720" ID="ID_709484512" MODIFIED="1565269907147" TEXT="was mu&#xdf; passieren?">
<icon BUILTIN="help"/>
<node CREATED="1565272714735" ID="ID_758511873" MODIFIED="1565272729843" TEXT="Track-Heads m&#xfc;ssen ihre Controls unterbringen k&#xf6;nnen"/>
<node CREATED="1565272733041" ID="ID_1333387410" MODIFIED="1565272749626" TEXT="Track-Bodies m&#xfc;ssen ihren Content darstellen k&#xf6;nnen"/>
<node CREATED="1565272863440" ID="ID_1088687911" MODIFIED="1565272882384" TEXT="der Zeichen-Code braucht ggfs. zus&#xe4;tzlichen Raum"/>
<node CREATED="1565272886564" ID="ID_726198762" MODIFIED="1565272911133" TEXT="Jedes Teilelement setzt seine Ausdehnung fest"/>
<node CREATED="1565272911999" ID="ID_505692945" MODIFIED="1565272930138" TEXT="danach folgt eine vergr&#xf6;&#xdf;ernde Abstimmung"/>
<node CREATED="1565272944612" ID="ID_559376631" MODIFIED="1582989776685">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      die Teilelemente <i>speichern</i>&#160;ihren Wert
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1565272972192" ID="ID_1941959455" MODIFIED="1565272983357">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Zeichencode <i>verwendet</i>&#160;diesen
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1565269919314" ID="ID_128780255" MODIFIED="1565269921729" TEXT="Struktur">
<node CREATED="1565269950161" ID="ID_1371304351" MODIFIED="1565269963907" TEXT="jeder Clip mu&#xdf; feststellen was er braucht"/>
<node CREATED="1565269965040" ID="ID_1456350700" MODIFIED="1565272666343" TEXT="jeder Track mu&#xdf; das intern f&#xfc;r sich aushandeln">
<arrowlink COLOR="#464cb7" DESTINATION="ID_1989047133" ENDARROW="Default" ENDINCLINATION="-742;0;" ID="Arrow_ID_1408255827" STARTARROW="None" STARTINCLINATION="440;27;"/>
</node>
<node CREATED="1565269994131" ID="ID_723034201" MODIFIED="1565270006259" TEXT="die Teil-Ausdehnungen sind zu aggregieren"/>
<node CREATED="1565270007474" ID="ID_878794125" MODIFIED="1565270021812" TEXT="Zusatzbedarf f&#xfc;r Layout/Dekoration"/>
</node>
<node CREATED="1565269922650" ID="ID_1107611568" MODIFIED="1565269925662" TEXT="Koordination">
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1565273130691" ID="ID_539630517" MODIFIED="1565273161569" TEXT="systematisch triggern und Flags setzen">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1565273141662" ID="ID_666349818" MODIFIED="1565273205895" TEXT="sp&#xe4;t und bei Bedarf die tats&#xe4;chlichen Berechnungen ausf&#xfc;hren">
<linktarget COLOR="#8c9ca5" DESTINATION="ID_666349818" ENDARROW="Default" ENDINCLINATION="472;-18;" ID="Arrow_ID_1928094034" SOURCE="ID_1081606131" STARTARROW="Default" STARTINCLINATION="-298;0;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1565276441575" FOLDED="true" HGAP="128" ID="ID_1008547187" MODIFIED="1679086272990" TEXT="Umsetzung" VSHIFT="-26">
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1565276460661" ID="ID_5450975" MODIFIED="1679086203225" TEXT="Trigger-Punkte">
<icon BUILTIN="info"/>
<icon BUILTIN="forward"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1565276497480" ID="ID_626936962" MODIFIED="1611920407215" TEXT="initial">
<arrowlink COLOR="#89b9c4" DESTINATION="ID_1666462781" ENDARROW="Default" ENDINCLINATION="611;0;" ID="Arrow_ID_457212401" STARTARROW="None" STARTINCLINATION="611;0;"/>
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1565276507055" ID="ID_1099814081" MODIFIED="1565276516574" TEXT="Gr&#xf6;&#xdf;en-&#xc4;nderung">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1565276523637" ID="ID_841565553" MODIFIED="1565276547287" TEXT="wie erkennen?">
<arrowlink COLOR="#d44574" DESTINATION="ID_1758102270" ENDARROW="Default" ENDINCLINATION="161;13;" ID="Arrow_ID_533711629" STARTARROW="None" STARTINCLINATION="663;0;"/>
<icon BUILTIN="flag-yellow"/>
</node>
<node CREATED="1582988935367" ID="ID_829958563" MODIFIED="1672875280897" TEXT="Problem mit automatischer Scrollbar">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...deutet darauf hin, da&#223; in diesem Zusammenhang etwas schiefl&#228;uft
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#8c6572" DESTINATION="ID_483543888" ENDARROW="Default" ENDINCLINATION="544;-34;" ID="Arrow_ID_759404699" STARTARROW="None" STARTINCLINATION="395;28;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1565276882329" ID="ID_545533298" MODIFIED="1565276923406" TEXT="Zustands-&#xc4;nderung (expanded/collapsed)">
<icon BUILTIN="flag-yellow"/>
</node>
<node COLOR="#338800" CREATED="1565276481723" ID="ID_486818015" MODIFIED="1565276514847" TEXT="signalStructureChange">
<arrowlink COLOR="#73c2be" DESTINATION="ID_1563488644" ENDARROW="Default" ENDINCLINATION="576;0;" ID="Arrow_ID_1851095183" STARTARROW="None" STARTINCLINATION="597;0;"/>
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1582930819530" ID="ID_1636643575" MODIFIED="1582930825502" TEXT="#1209 ensure display evaluation is performed reliably">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1582930831025" ID="ID_1768705376" MODIFIED="1582930913112" TEXT="hatte einzelne Vorf&#xe4;lle im Testcode zum relativen Clip-Placement">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      wenn man die mark &quot;test&quot;-Nachricht an eine Timeline schickt, die vorher per Population &quot;reingeschossen&quot; wurde, ohne sie jemals im UI anzuzeigen. Das hei&#223;t, im Moment haben wir da <b>definitiv</b>&#160;eine offene Flanke -- allerdings ist das ganze Thema auch bisher ehr ein draft
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1611918440785" HGAP="-8" ID="ID_1799063910" MODIFIED="1611920975289" TEXT="Stand" VSHIFT="10">
<edge COLOR="#58689e" STYLE="linear"/>
<linktarget COLOR="#2252b8" DESTINATION="ID_1799063910" ENDARROW="Default" ENDINCLINATION="48;334;" ID="Arrow_ID_276756493" SOURCE="ID_1009590247" STARTARROW="None" STARTINCLINATION="-334;85;"/>
<icon BUILTIN="info"/>
<node COLOR="#435e98" CREATED="1611918484023" ID="ID_1998807581" MODIFIED="1611918546027" TEXT="4/2020">
<node CREATED="1611918493341" ID="ID_1458082993" MODIFIED="1611918502533" TEXT="Timeline-Konstrollstruktur ist da"/>
<node CREATED="1611918503905" ID="ID_1426688996" MODIFIED="1611918511294" TEXT="erster Draft f&#xfc;r Clip-Anzeige"/>
<node CREATED="1611918513014" ID="ID_826865191" MODIFIED="1611918530129" TEXT="Trigger">
<node CREATED="1611918534396" ID="ID_1507749604" MODIFIED="1611918649982" TEXT="einzig BodyCanvasWidget::maybeRebuildLayout()">
<icon BUILTIN="forward"/>
<node CREATED="1611918651549" ID="ID_1270377106" MODIFIED="1611918666929" TEXT="aus BodyCanvasWidget::getProfile_">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1611918667922" ID="ID_1487411072" MODIFIED="1611918681877" TEXT="damit rein nach Bedarf"/>
</node>
<node CREATED="1611918741213" ID="ID_396002411" MODIFIED="1611918753315" TEXT="indirekte Triggerbedingung">
<node CREATED="1611918756795" ID="ID_1406903463" MODIFIED="1611919419969">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      isnil (<font color="#293bcd">profile_</font>)
    </p>
  </body>
</html></richcontent>
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
</node>
<node CREATED="1611920351800" ID="ID_1666462781" MODIFIED="1611920377932" TEXT="ist bei Konstruktion == null">
<linktarget COLOR="#89b9c4" DESTINATION="ID_1666462781" ENDARROW="Default" ENDINCLINATION="611;0;" ID="Arrow_ID_457212401" SOURCE="ID_626936962" STARTARROW="None" STARTINCLINATION="611;0;"/>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1611919430964" ID="ID_1154063221" MODIFIED="1611919443478" TEXT="BodyCanvasWidget::disable()">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1611920064342" ID="ID_504940493" MODIFIED="1611920072904" TEXT="etwas fragw&#xfc;rdig">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1611920262075" ID="ID_1537785236" MODIFIED="1611920280909" TEXT="sollte das niche ehr ein signalStructureChange() sein?"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1611920282881" ID="ID_676112629" MODIFIED="1611920309972" TEXT="und warum wird der rootBody_ &#x2254; null gesetzt?">
<icon BUILTIN="help"/>
<node CREATED="1611920311381" ID="ID_1468092111" MODIFIED="1611920317824" TEXT="wer baut den (wieder) auf?"/>
</node>
</node>
<node CREATED="1611920075406" ID="ID_924343393" MODIFIED="1611920087014" TEXT="beim L&#xf6;schen eines Track aufgerufen">
<node CREATED="1611920186183" ID="ID_1923992459" MODIFIED="1611920200504" TEXT="aber als ViewHook::remove()-Implementierung"/>
</node>
</node>
<node CREATED="1611919912363" ID="ID_1563488644" MODIFIED="1611920392591" TEXT="BodyCanvasWidget::slotStructureChange()">
<linktarget COLOR="#73c2be" DESTINATION="ID_1563488644" ENDARROW="Default" ENDINCLINATION="576;0;" ID="Arrow_ID_1851095183" SOURCE="ID_486818015" STARTARROW="None" STARTINCLINATION="597;0;"/>
<icon BUILTIN="forward"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1611920935537" ID="ID_635197187" MODIFIED="1611920954225" TEXT="es fehlt die Reaktion auf Gr&#xf6;&#xdf;en&#xe4;nderung und re-Allokation">
<icon BUILTIN="broken-line"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1611920958639" ID="ID_672952621" MODIFIED="1672787275660" TEXT="2/2021">
<node COLOR="#338800" CREATED="1611920993410" ID="ID_73368483" MODIFIED="1612641365225" TEXT="Ziel: vorl&#xe4;ufige Clip-Anzeige an der richtigen Stelle">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1672787245084" ID="ID_981886029" MODIFIED="1672787302614" TEXT="(ist inzwischen der Fall)">
<font NAME="SansSerif" SIZE="10"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1672787253663" ID="ID_1729285584" MODIFIED="1678405903445" TEXT="Winter 2022/23">
<node COLOR="#338800" CREATED="1672787313919" ID="ID_1746559922" MODIFIED="1672797007708" TEXT="integriere ZoomWindow">
<icon BUILTIN="button_ok"/>
<node CREATED="1672787325263" ID="ID_1202050801" MODIFIED="1672787341544" TEXT="Change-Listener dort kann ebenfalls Display-Evaluation ausl&#xf6;sen"/>
<node CREATED="1672787342676" ID="ID_1189311522" MODIFIED="1672787960019" TEXT="aber auch: ZoomWindow selber mu&#xdf; von Geometrie-&#xc4;nderungen erfahren">
<arrowlink COLOR="#4c7ef4" DESTINATION="ID_973993644" ENDARROW="Default" ENDINCLINATION="-1199;-155;" ID="Arrow_ID_1196387900" STARTARROW="None" STARTINCLINATION="2666;104;"/>
<linktarget COLOR="#444b9e" DESTINATION="ID_1189311522" ENDARROW="Default" ENDINCLINATION="785;29;" ID="Arrow_ID_1573433988" SOURCE="ID_650213030" STARTARROW="None" STARTINCLINATION="241;10;"/>
<linktarget COLOR="#4a759a" DESTINATION="ID_1189311522" ENDARROW="Default" ENDINCLINATION="1548;60;" ID="Arrow_ID_751989601" SOURCE="ID_37048779" STARTARROW="None" STARTINCLINATION="1439;57;"/>
</node>
</node>
<node COLOR="#338800" CREATED="1672787636743" ID="ID_1344084462" MODIFIED="1672797005517" TEXT="Flexibilisierung Display-Evaluation">
<icon BUILTIN="button_ok"/>
<node CREATED="1672787680391" ID="ID_1852720730" MODIFIED="1672787701739" TEXT="ist bisher zu &#x201e;fest gedrahtet&#x201c;">
<icon BUILTIN="stop-sign"/>
</node>
<node CREATED="1672787656282" ID="ID_1938149016" MODIFIED="1672787679639" TEXT="mu&#xdf; weitere Komponenten integrieren k&#xf6;nnen">
<node CREATED="1672787706195" ID="ID_1709964238" MODIFIED="1672787709536" TEXT="ZoomWindow"/>
<node CREATED="1672787710007" ID="ID_894239833" MODIFIED="1672787717634" TEXT="Koordination im LayoutManager"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1565276663937" ID="ID_712308681" MODIFIED="1679085393495" TEXT="Marker f&#xfc;r geplante Neuberechnung">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1565276684054" ID="ID_1620487558" MODIFIED="1565276701349" TEXT="isnil (TrackProfile)">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1565276732282" ID="ID_958770975" MODIFIED="1679085388914" TEXT="dirty-Flag an geeignerter Stelle">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...bis jetzt gen&#252;gt es, das TrackProfile selbst als &quot;dirty-flag&quot; zu misbrauchen. Aber ich vermute, l&#228;ngerfristig bekommen wir irgendwo im GUI noch weiteren &quot;dirty-state&quot; &#10233; und dann bleibt die Frage, wo siedeln wir den an...
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="hourglass"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1565276582060" HGAP="244" ID="ID_1896159832" MODIFIED="1672673134068" TEXT="Display-Evaluation-Pass">
<linktarget COLOR="#735667" DESTINATION="ID_1896159832" ENDARROW="Default" ENDINCLINATION="68;-547;" ID="Arrow_ID_672337506" SOURCE="ID_134472006" STARTARROW="None" STARTINCLINATION="1091;68;"/>
<linktarget COLOR="#735667" DESTINATION="ID_1896159832" ENDARROW="Default" ENDINCLINATION="68;-547;" ID="Arrow_ID_1219011636" SOURCE="ID_1362490028" STARTARROW="None" STARTINCLINATION="1094;73;"/>
<linktarget COLOR="#7b45d8" DESTINATION="ID_1896159832" ENDARROW="Default" ENDINCLINATION="-839;66;" ID="Arrow_ID_786196853" SOURCE="ID_1758019036" STARTARROW="None" STARTINCLINATION="667;67;"/>
<icon BUILTIN="forward"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1666378011037" ID="ID_595193151" MODIFIED="1666378030994" TEXT="#1252 Timeline display-evaluation-pass">
<icon BUILTIN="flag-yellow"/>
</node>
<node COLOR="#435e98" CREATED="1582990060411" HGAP="75" ID="ID_499410745" MODIFIED="1679085114524" TEXT="Ausf&#xfc;hrungs-Struktur" VSHIFT="-14">
<icon BUILTIN="info"/>
<node CREATED="1582990066937" ID="ID_1271958729" MODIFIED="1582990072357" TEXT="Grunds&#xe4;tzlich">
<node CREATED="1582990081504" ID="ID_1009590247" MODIFIED="1582990084347" TEXT="ausgel&#xf6;st">
<arrowlink COLOR="#2252b8" DESTINATION="ID_1799063910" ENDARROW="Default" ENDINCLINATION="48;334;" ID="Arrow_ID_276756493" STARTARROW="None" STARTINCLINATION="-334;85;"/>
<node CREATED="1582990085729" ID="ID_600460054" MODIFIED="1582990119965" TEXT="bei Bedarf">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1582990097374" ID="ID_424445384" MODIFIED="1582990113629" TEXT="nachdem alle Betroffenen bereits da sind">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1582990127105" ID="ID_467377598" MODIFIED="1582990133110" TEXT="Probleme">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1582990139760" FOLDED="true" ID="ID_1798095645" MODIFIED="1582990145211" TEXT="mehrere Bezugssysteme">
<icon BUILTIN="yes"/>
<node CREATED="1582990146847" ID="ID_1892380041" MODIFIED="1582990159097" TEXT="strukturelle Hierarchie"/>
<node CREATED="1582990166774" ID="ID_160585935" MODIFIED="1582990173325" TEXT="funktionelle Hierarchie">
<node CREATED="1582990174283" ID="ID_1358397767" MODIFIED="1582990181528" TEXT="vor allem im Canvas"/>
<node CREATED="1582990182170" ID="ID_286499384" MODIFIED="1582990206578" TEXT="aufgedoppelte Struktur in den TrackBody-Elementen"/>
</node>
<node CREATED="1582990210670" ID="ID_605968231" MODIFIED="1582990229767" TEXT="geometrische Hierarchie">
<node CREATED="1582990248505" ID="ID_602361892" MODIFIED="1582990251332" TEXT="Schachtelung">
<node CREATED="1582990265182" ID="ID_1785851420" MODIFIED="1582990270642" TEXT="Docking-pane"/>
<node CREATED="1582990272030" ID="ID_581839904" MODIFIED="1582990281728" TEXT="Timeline Panel-Tab"/>
<node CREATED="1582990285372" ID="ID_463161150" MODIFIED="1582990292247" TEXT="left Pane">
<node CREATED="1582990417338" ID="ID_1278424192" MODIFIED="1582990426037" TEXT="Teilung Navigator / Patchbay"/>
<node CREATED="1582990426913" ID="ID_107683155" MODIFIED="1582990436927" TEXT="Tracks in der Patchbay">
<node CREATED="1582990438749" ID="ID_803277221" MODIFIED="1582990443002" TEXT="von oben nach unten"/>
<node CREATED="1582990443776" ID="ID_1332669205" MODIFIED="1582990449873" TEXT="von innen nach au&#xdf;en"/>
</node>
</node>
<node CREATED="1582990292907" ID="ID_1319070559" MODIFIED="1582990295966" TEXT="right Pane">
<node CREATED="1582990301313" ID="ID_203503889" MODIFIED="1582990307980" TEXT="Teilung wegen Scrolling"/>
<node CREATED="1582990308664" ID="ID_231067935" MODIFIED="1582990319732" TEXT="wird jedoch bereits intern gehandhabt"/>
<node CREATED="1582990321359" ID="ID_247850066" MODIFIED="1582990328698" TEXT="erscheint als uniforme Zeichenfl&#xe4;che"/>
<node CREATED="1582990355570" ID="ID_524994712" MODIFIED="1582990371428" TEXT="realisiert aber de-facto auch eine Hierarchie">
<node CREATED="1582990372680" ID="ID_122407571" MODIFIED="1582990377043" TEXT="geschachtelte Tracks"/>
<node CREATED="1582990377751" ID="ID_754352" MODIFIED="1582990383322" TEXT="von oben nach unten"/>
<node CREATED="1582990390238" ID="ID_664493300" MODIFIED="1582990408551" TEXT="von innen nach au&#xdf;en"/>
</node>
</node>
</node>
<node CREATED="1582990252083" ID="ID_344719650" MODIFIED="1582990256355" TEXT="von oben nach unten"/>
<node CREATED="1582990257583" ID="ID_551100173" MODIFIED="1582990261149" TEXT="von links nach rechts">
<node CREATED="1582990493888" ID="ID_1406728700" MODIFIED="1582990515278" TEXT="fast immer ausgeschlossen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      da links-&gt;rechts auf die Zeitachse abgebildet ist
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1582990516445" ID="ID_1869844868" MODIFIED="1582990539925" TEXT="Ausnahme: Patchbay">
<node CREATED="1582990541033" ID="ID_1986940143" MODIFIED="1582990552936" TEXT="Verschachtelungstiefe im Baum-Graphen"/>
<node CREATED="1582990553928" ID="ID_164949916" MODIFIED="1582990575913" TEXT="Minimal-Ausdehnung der Controls im Track-Head"/>
</node>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1582991242096" FOLDED="true" HGAP="111" ID="ID_743061991" MODIFIED="1679085241620" TEXT="Wirk-Pfade" VSHIFT="-16">
<icon BUILTIN="info"/>
<node CREATED="1582991739392" ID="ID_964423802" MODIFIED="1582991744027" TEXT="in GTK">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1582991754360" ID="ID_427688996" MODIFIED="1582991772673" TEXT="jedes Widget definiert seine minimale Platz-Anforderung"/>
<node CREATED="1582991777437" ID="ID_480450913" MODIFIED="1582991797636" TEXT="Platzmangel wird per Overflow gel&#xf6;st">
<node CREATED="1582991802555" ID="ID_1172300308" MODIFIED="1582991808476" TEXT="width for height"/>
<node CREATED="1582991809272" ID="ID_1291349715" MODIFIED="1582991812763" TEXT="height for width"/>
</node>
<node CREATED="1582991832808" ID="ID_1564814529" MODIFIED="1582991851613" TEXT="zus&#xe4;tzlicher Platz wird per F&#xfc;llmechanismus verteilt"/>
<node CREATED="1582991852866" ID="ID_39596491" MODIFIED="1582991860876" TEXT="jedes Widget bekommt eine Allokation"/>
<node CREATED="1582991861608" ID="ID_119326076" MODIFIED="1582991868867" TEXT="...und wird zum Zeichnen aufgefordert">
<node COLOR="#641a3d" CREATED="1582991870072" ID="ID_286684900" MODIFIED="1582991896331" TEXT="hier erst kann unser Code aktiv werden">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node CREATED="1582991961258" ID="ID_545649889" MODIFIED="1582991965501" TEXT="pro Track">
<node CREATED="1582992016890" ID="ID_1705972913" MODIFIED="1582992030828" TEXT="Aufsammeln der vertikalen Ausdehnung"/>
<node CREATED="1582992031648" ID="ID_752229981" MODIFIED="1582992037387" TEXT="Maximum + Padding"/>
<node CREATED="1582992060135" ID="ID_446948891" MODIFIED="1582992233901">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      dieses speichern als <font color="#5d1843">TrackBody::<b>contentHeight_</b></font>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1582992575660" ID="ID_1847082474" MODIFIED="1582992587869" TEXT="Head &lt;-&gt; Body">
<node CREATED="1582992599058" ID="ID_1308776454" MODIFIED="1582992606624" TEXT="Head -&gt; Body">
<node CREATED="1582992608761" ID="ID_1391476282" MODIFIED="1582992619859" TEXT="mu&#xdf; in die vertikale Ausdehnung mit eingehen"/>
</node>
<node CREATED="1582992663089" ID="ID_1122116110" MODIFIED="1582992671524" TEXT="Body -&gt; Head">
<node CREATED="1582992688462" ID="ID_1694951369" MODIFIED="1582992707232" TEXT="Head mu&#xdf; exakt auf die Ausdehnung des Body gespreizt werden"/>
<node CREATED="1582992708484" ID="ID_1956350254" MODIFIED="1582992756018" TEXT="Vorsicht: das mu&#xdf; fr&#xfc;h erfolgen">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1582992724026" ID="ID_772600480" MODIFIED="1582992752646" TEXT="bevor GTK aktiv wird">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
<node CREATED="1582992742037" ID="ID_1532947172" MODIFIED="1582992750234" TEXT="&#xc4;nderung l&#xf6;st kompletten Zeichenzyklus aus"/>
</node>
</node>
</node>
</node>
<node CREATED="1582992261608" ID="ID_647002044" MODIFIED="1582992271986" TEXT="Track-&gt;Fork-&gt;TimelineCanvas">
<node CREATED="1582992289786" ID="ID_478649023" MODIFIED="1582996676592">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      wird komplett erledigt durch <font color="#5c2549">TrackBody::<b>establishTrackSpace</b></font>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1582992315675" ID="ID_1937379462" MODIFIED="1582992414632">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Ausl&#246;sen durch <b><font color="#7a264c">signalStructureChange</font></b>
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1582993077095" FOLDED="true" ID="ID_1248829869" MODIFIED="1582993085449" TEXT="Vorsicht: Rekursion">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1582993092825" ID="ID_1779309098" MODIFIED="1582993104811" TEXT="Clip und Effekt">
<node CREATED="1582993119758" ID="ID_1843431209" MODIFIED="1582993172267" TEXT="enth&#xe4;lt (voraussichtlich) komplette verschachtelte Timeline-Struktur"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1582993256244" ID="ID_1054753498" MODIFIED="1582993279274" TEXT="Problem: wie gehen wir mit dem Head-Bereich um?">
<linktarget COLOR="#9a5670" DESTINATION="ID_1054753498" ENDARROW="Default" ENDINCLINATION="-3448;194;" ID="Arrow_ID_948617682" SOURCE="ID_1626144230" STARTARROW="None" STARTINCLINATION="1004;81;"/>
<icon BUILTIN="help"/>
<node CREATED="1582993283464" ID="ID_187092898" MODIFIED="1582993298033" TEXT="horizontale Ausdehnung ist limitiert"/>
<node CREATED="1582993311469" ID="ID_1905724855" MODIFIED="1582993324697" TEXT="L&#xf6;sungsans&#xe4;tze">
<icon BUILTIN="idea"/>
<node CREATED="1582993326008" ID="ID_1118811002" MODIFIED="1582993554765" TEXT="auf den Header-Berech verzichten">
<linktarget COLOR="#734474" DESTINATION="ID_1118811002" ENDARROW="Default" ENDINCLINATION="-50;4;" ID="Arrow_ID_1937551526" SOURCE="ID_17198777" STARTARROW="None" STARTINCLINATION="-324;-102;"/>
<icon BUILTIN="full-1"/>
<node CREATED="1582993340944" ID="ID_583086871" MODIFIED="1582993355096" TEXT="k&#xf6;nnen wir das wirklich bis zum Ende durchhalten??">
<icon BUILTIN="clanbomber"/>
</node>
<node CREATED="1582993384124" ID="ID_1159677197" MODIFIED="1582993404276" TEXT="man k&#xf6;nnte den Clip in einem neuen Timeline-Tab aufmachen"/>
<node CREATED="1582993407759" ID="ID_976591024" MODIFIED="1582993426099" TEXT="dann w&#xe4;re die Clip-Anzeige stets &#xbb;abgek&#xfc;rzt&#xab;"/>
</node>
<node CREATED="1582993456608" ID="ID_614577452" MODIFIED="1582993550949" TEXT="Header-Bereich als Br&#xfc;cke rendern">
<icon BUILTIN="full-2"/>
<node CREATED="1582993522569" ID="ID_1946280413" MODIFIED="1582993528110" TEXT="vielleicht immer sichtbar"/>
<node CREATED="1582993471862" ID="ID_1469148025" MODIFIED="1582993477200" TEXT="horizontal verschiebbar"/>
<node CREATED="1582993480844" ID="ID_397325641" MODIFIED="1582993487137" TEXT="einklappbar"/>
<node CREATED="1582993508727" ID="ID_270624980" MODIFIED="1582993516003" TEXT="geht nicht bei zu kleinen Clips"/>
</node>
<node CREATED="1582993533204" ID="ID_1997246843" MODIFIED="1582993569673" TEXT="Header-Bereich als &#xdc;berhang links">
<icon BUILTIN="full-3"/>
<node CREATED="1582993597075" ID="ID_1870967483" MODIFIED="1582993618478" TEXT="&#xdc;berhang mu&#xdf; visuell verdeutlicht werden"/>
<node CREATED="1582993583853" ID="ID_1350317066" MODIFIED="1582993644123" TEXT="ebenfalls mitlaufend und wegklappbar"/>
<node CREATED="1582993827289" ID="ID_835847813" MODIFIED="1582993850770" TEXT="Timeline mu&#xdf; ggfs nach links jenseits von Null erweitert werden"/>
</node>
<node CREATED="1611119459685" ID="ID_948080801" MODIFIED="1611119890746" TEXT="Track-Header-Bereich nutzen">
<icon BUILTIN="full-4"/>
<node CREATED="1611119472116" ID="ID_586467198" MODIFIED="1611119496620" TEXT="die Scope-Hierarchie &#xfc;berspannt ohnehin Tracks, Clips und Effekte"/>
<node CREATED="1611119498086" ID="ID_997383591" MODIFIED="1611119528080" TEXT="im Detail-Modus w&#xfc;rde damit der Clip-Inhalt zu eingeschachtelten Pseudo-Tracks"/>
<node CREATED="1611119529869" ID="ID_436071858" MODIFIED="1611119595838" TEXT="und ensprechende Lables/Controls k&#xf6;nnten in der Patchbay leben"/>
<node CREATED="1611119603818" ID="ID_1129752792" MODIFIED="1611119630501" TEXT="Aber: mehrere Clips auf der Timeline m&#xfc;&#xdf;ten sich diese Pseudo-Tracks teilen">
<icon BUILTIN="clanbomber"/>
</node>
<node CREATED="1611119659018" ID="ID_1000548254" MODIFIED="1611119678899" TEXT="folglich w&#xe4;ren Inhalt und Bedeutung dynamisch vom Fokus abh&#xe4;ngig"/>
<node CREATED="1611119741841" ID="ID_383304836" MODIFIED="1611119880288" TEXT="h&#xe4;tte seinen Charme, w&#xe4;re aber sehr anspruchsvoll umzusetzen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Das Sch&#246;ne an diesem Ansatz w&#228;re, da&#223; er f&#252;r den User komplett nat&#252;rlich wirkt; solange man gleichartige Clips in einer Timeline liegen hat, w&#252;rde sich dieses Konzept &#252;beraupt nicht auff&#228;llig bemerkbar machen; und ein weiterer Vorteil w&#228;re, da&#223; man es als Weiterentwicklung des 1. L&#246;sungsansatzes betrachten kann...
    </p>
  </body>
</html></richcontent>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1611119913136" ID="ID_17198777" MODIFIED="1611119984890" TEXT="Beschlu&#xdf;: vorerst verfolgen wir den L&#xf6;sungsansatz-1 und sehen dann weiter....">
<arrowlink COLOR="#734474" DESTINATION="ID_1118811002" ENDARROW="Default" ENDINCLINATION="-50;4;" ID="Arrow_ID_1937551526" STARTARROW="None" STARTINCLINATION="-324;-102;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1582993882182" ID="ID_1282407348" MODIFIED="1582993890945" TEXT="wenn es einen Header-Bereich gibt">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1582993892114" ID="ID_1867662190" MODIFIED="1582993903794" TEXT="dann wiederholt sich 1:1 die Problematik von der Timeline"/>
<node CREATED="1582993904567" ID="ID_10857837" MODIFIED="1582993920776" TEXT="und die L&#xf6;sung mit dem DisplayFrame mu&#xdf; verallgemeinert werden"/>
</node>
<node CREATED="1582993974317" ID="ID_1334346577" MODIFIED="1582993982823" TEXT="Au&#xdf;erdem...">
<node CREATED="1582993993650" ID="ID_1979728574" MODIFIED="1582994019387" TEXT="mu&#xdf; der gesamte DisplayEvaluationPass in jedem Clip komplett laufen"/>
<node CREATED="1582994040043" ID="ID_1049094462" MODIFIED="1582994055581" TEXT="das Resultat setzt eine Gesamt-Ausdehnung"/>
<node CREATED="1582994056505" ID="ID_1127135248" MODIFIED="1582994070796" TEXT="und triggert damit einen neuen Pass">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
<node CREATED="1582994079654" ID="ID_180241522" MODIFIED="1582994103110" TEXT="Body -&gt; Head -R&#xfc;ckmeldung">
<node CREATED="1582994112114" ID="ID_1104128825" MODIFIED="1582994131515" TEXT="kann zur Vergr&#xf6;&#xdf;erung des Header-Widgets f&#xfc;hren"/>
<node CREATED="1582994321717" ID="ID_778571331" MODIFIED="1582994333548" TEXT="und diese triggert einen neuen Pass">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1582994173545" ID="ID_215195075" MODIFIED="1582994187763" TEXT="es mu&#xdf; einen globalen Ausgleich geben">
<node CREATED="1582994188919" ID="ID_1821239484" MODIFIED="1582994212400" TEXT="denn wir haben zwar die Overview-Ruler zus&#xe4;tzlich &#xfc;ber"/>
<node CREATED="1582994213112" ID="ID_1002913154" MODIFIED="1582994227798" TEXT="andererseits geht von der Header-Pane der Navigator weg"/>
<node CREATED="1582994285082" ID="ID_1430842857" MODIFIED="1582994300940" TEXT="man k&#xf6;nnte einen gewissen Betrag davon nach unten verteilen"/>
</node>
</node>
<node CREATED="1582994343496" ID="ID_1281717867" MODIFIED="1582994354246" TEXT="Rekursion einhegen">
<icon BUILTIN="yes"/>
<node CREATED="1582994362415" ID="ID_534180238" MODIFIED="1582994380448" TEXT="eine wilde Rekursion kann zu Oszillationen f&#xfc;hren"/>
<node CREATED="1582994386724" ID="ID_640491515" MODIFIED="1582994396631" TEXT="wir m&#xfc;ssen f&#xfc;r monotone &#xc4;nderungen sorgen"/>
<node CREATED="1582994409209" ID="ID_1593855255" MODIFIED="1582994419307" TEXT="diese m&#xfc;ssen so gro&#xdf; wie m&#xf6;glich, aber niemals zu gro&#xdf; sein"/>
<node CREATED="1582994430718" ID="ID_1659605004" MODIFIED="1583525063060" TEXT="wir m&#xfc;ssen alle korrelierten &#xc4;nderungen auf einmal einbringen">
<icon BUILTIN="button_cancel"/>
<node CREATED="1582994490311" ID="ID_1537290692" MODIFIED="1582994497769" TEXT="das bedeutet...."/>
<node CREATED="1582994498669" ID="ID_889822565" MODIFIED="1583525068436" TEXT="Gr&#xf6;&#xdf;en&#xe4;nderungen m&#xfc;ssen als Nachrichten abgesetzt werden">
<icon BUILTIN="stop-sign"/>
</node>
<node CREATED="1582994514659" ID="ID_620800362" MODIFIED="1583525074189" TEXT="diese m&#xfc;ssen in einem sp&#xe4;teren UI-Event aggregiert behandelt werden">
<icon BUILTIN="stop-sign"/>
</node>
<node CREATED="1583525076319" ID="ID_815242494" MODIFIED="1583525638834" TEXT="geht so nicht -- Widgets nicht sicher addressierbar">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      es gibt keinen <i>einfachen und performanten</i>&#160;Mechanismus, &#252;ber den ich mir irgend ein Widget merken und sp&#228;ter noch sicher addressieren kann, selbst wenn eine Diff-Nachricht inzwischen die Anzeige umbaut und das bezeichnete Element inzwischen gel&#246;scht ist. Und zwar deshalb, weil wir hier von echten einfachen GTK-Widgets reden, und nicht von unseren &quot;Tangibles&quot;, die am UI-Bus h&#228;ngen. Selbst wenn wir noch gesicherte &#187;Mediatoren&#171; dazwischenschalten, also z.B. diese Nachrichten &#252;ber jeweils ein zust&#228;ndiges model::Tangible zustellen, dann haben wiederum diese das identische Problem: sie bekommen nicht garantiert mit, wenn eines der von ihnen verwalteten Widgets inzwischen nicht mehr existiert. Wir br&#228;uchten
    </p>
    <ul>
      <li>
        entweder ein universelles Addressierungs-Schema, das aber dann auch bis auf das einzelne Widget herunter wirksam sein m&#252;&#223;te
      </li>
      <li>
        oder jeder Mediator (oder zumindest der DisplayManager selber) m&#252;&#223;te Diff-Listener installieren, die auch sicher f&#252;r Diffs auf ihre Kinder ansprechen (!)
      </li>
    </ul>
  </body>
</html></richcontent>
<linktarget COLOR="#db337d" DESTINATION="ID_815242494" ENDARROW="Default" ENDINCLINATION="-814;0;" ID="Arrow_ID_1920099327" SOURCE="ID_1528548638" STARTARROW="None" STARTINCLINATION="812;88;"/>
<icon BUILTIN="closed"/>
</node>
<node CREATED="1583525520828" ID="ID_785480961" MODIFIED="1583525553466" TEXT="wohl auch nicht notwendig -- da das UI single-threaded l&#xe4;uft">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1582994588889" ID="ID_1127174838" MODIFIED="1582994596164" TEXT="(idealer)Endpunkt">
<node CREATED="1582994614549" ID="ID_436198586" MODIFIED="1582994630335" TEXT="die sub-Clip und Header-Allokationen passen bereits"/>
<node CREATED="1582994631395" ID="ID_132052842" MODIFIED="1582994648575" TEXT="es mu&#xdf; alles nur noch einmal gezeichnet werden"/>
</node>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1582995207306" FOLDED="true" HGAP="103" ID="ID_548079760" MODIFIED="1582995223113" TEXT="Abh&#xe4;ngigkeits-Steuerung" VSHIFT="11">
<icon BUILTIN="info"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1582995233632" ID="ID_1067561210" MODIFIED="1582995245966" TEXT="die Konvergenz selber wird nicht explizit realisiert">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1582995299738" ID="ID_1571358808" MODIFIED="1582995304581" TEXT="es gibt Phasen">
<linktarget COLOR="#96b3e9" DESTINATION="ID_1571358808" ENDARROW="Default" ENDINCLINATION="259;158;" ID="Arrow_ID_1529296223" SOURCE="ID_531908394" STARTARROW="None" STARTINCLINATION="-382;24;"/>
<linktarget COLOR="#6e829b" DESTINATION="ID_1571358808" ENDARROW="Default" ENDINCLINATION="476;590;" ID="Arrow_ID_1458719997" SOURCE="ID_868399927" STARTARROW="None" STARTINCLINATION="292;29;"/>
<node CREATED="1582995321487" ID="ID_772868413" MODIFIED="1582995337967" TEXT="weiterer Pass notwendig"/>
<node CREATED="1582995339452" ID="ID_1832467200" MODIFIED="1582995346706" TEXT="Pass findet statt"/>
<node CREATED="1582995372168" ID="ID_219954513" MODIFIED="1582995381674" TEXT="Gr&#xf6;&#xdf;en&#xe4;nderungen abgesetzt"/>
</node>
<node CREATED="1582995460940" ID="ID_34447460" MODIFIED="1582995467695" TEXT="Abh&#xe4;ngigkeits-Ordnung">
<node CREATED="1582995480735" ID="ID_1960342717" MODIFIED="1582995484829" TEXT="innen vor au&#xdf;en"/>
<node CREATED="1582995508832" ID="ID_706569968" MODIFIED="1582995517616" TEXT="Clip vor Track"/>
<node CREATED="1582995541969" ID="ID_1695345076" MODIFIED="1582995550355" TEXT="Header-Beitrag vor Body-Festsetzung"/>
<node CREATED="1582995611311" ID="ID_1286546344" MODIFIED="1582995621833" TEXT="aber: Hierarchie nicht relevant">
<node CREATED="1582995624230" ID="ID_527427935" MODIFIED="1582995631288" TEXT="das l&#xf6;sen die internen Mechanismen bereits"/>
<node CREATED="1582995631900" ID="ID_1750090379" MODIFIED="1582995643846" TEXT="in GTK sind das nested child widgets"/>
<node CREATED="1582995644603" ID="ID_1368190539" MODIFIED="1582995658084" TEXT="im BodyCanvas ist das der Platz f&#xfc;r Sub-Tracks"/>
</node>
</node>
<node CREATED="1583103616819" ID="ID_635184052" MODIFIED="1583103674376">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <b>Nein</b>: keine Abh&#228;ngigkeiten,
    </p>
    <p>
      sondern Iterationen!
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
<node CREATED="1583103686706" ID="ID_1021464384" MODIFIED="1583103698796" TEXT="wir n&#xe4;hern uns dem korrekten Layout inkrementell an"/>
<node CREATED="1583103711798" ID="ID_1460889946" MODIFIED="1583104046449" TEXT="daher ist die Reihenfolge des Besuchs fast egal">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <u>Warum</u>? Weil wir immer die Hilfe von GTK brauchen, um aus unseren ver&#228;nderten Vorgaben eine Platz-Allokation zu machen. Und diese Hilfe k&#246;nnen wir nicht synchron anfordern, sondern triggern sie indirekt durch setzen neuer Mindestgr&#246;&#223;en...
    </p>
    <p>
      <u>Warum &quot;fast&quot;</u>? weil dann der Header-Pass eben doch eine globale Information transportiert, und zwar den &#220;bertrag. Da die Auswertung aber auch hier ausf&#228;chert (&#252;ber die Header in den Clips), sollte man tats&#228;chlich versuchen, globale Datenhaltung (jenseits der Auswertungs-Phase) zu vermeiden!
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1583104061758" ID="ID_970866414" MODIFIED="1583104078795" TEXT="&quot;fast&quot; vermeiden, indem man rekursiv auswertet!">
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1583104117487" ID="ID_1016623445" MODIFIED="1583104131498" TEXT="Konsequenz: rekursive Auswertungs-Scopes">
<icon BUILTIN="forward"/>
<node CREATED="1583434078579" ID="ID_718475738" MODIFIED="1583434227770" TEXT="behandelt implizite Abh&#xe4;ngigkeiten">
<linktarget COLOR="#f0e0c0" DESTINATION="ID_718475738" ENDARROW="Default" ENDINCLINATION="-190;15;" ID="Arrow_ID_1507039489" SOURCE="ID_1287988941" STARTARROW="None" STARTINCLINATION="201;15;"/>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1583434172775" ID="ID_1444249960" MODIFIED="1583434412688" TEXT="Aufgabe ist, dieses orthogonal darzustellen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Rekursion ist immer doppelb&#246;dig:
    </p>
    <ul>
      <li>
        angeblich haben wir selbst&#228;hnliche Strukturen
      </li>
      <li>
        aber tats&#228;chlich steckt eine Absicht dahinter
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node CREATED="1583434976100" ID="ID_1359440" MODIFIED="1583435092878" TEXT="hierf&#xfc;r wird die Abfolge verpflichtend geordnet">
<arrowlink COLOR="#6f56e5" DESTINATION="ID_1485425520" ENDARROW="Default" ENDINCLINATION="250;14;" ID="Arrow_ID_832303335" STARTARROW="None" STARTINCLINATION="298;17;"/>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1582995993706" FOLDED="true" HGAP="62" ID="ID_333264806" MODIFIED="1679085227862" TEXT="Aktivit&#xe4;ten" VSHIFT="8">
<icon BUILTIN="info"/>
<node CREATED="1583427610013" ID="ID_1910384749" MODIFIED="1583427716087" TEXT="Teilschritte">
<node CREATED="1582996051549" ID="ID_29139061" MODIFIED="1583427655853" TEXT="Track bestimmt Maximum &#xfc;ber seinen Inhalt">
<icon BUILTIN="full-1"/>
<node CREATED="1582996202265" ID="ID_218499874" MODIFIED="1582996202265" TEXT="(Clips, Effekte)"/>
<node CREATED="1582996203830" ID="ID_149464381" MODIFIED="1582996209358" TEXT="input vom zugeh&#xf6;rigen Head"/>
<node CREATED="1582996562758" ID="ID_1180945302" MODIFIED="1582996602940" TEXT="Ergebnis wird in contentHeight_ abgelegt"/>
</node>
<node CREATED="1582996608127" ID="ID_92521449" MODIFIED="1583427660810" TEXT="Canvas evaluation: TrackBody::establishTrackSpace">
<icon BUILTIN="full-2"/>
</node>
<node CREATED="1582996722829" ID="ID_842289587" MODIFIED="1583427701893" TEXT="Head-Ausgleichs-Pass">
<icon BUILTIN="full-3"/>
</node>
</node>
<node CREATED="1583427622167" ID="ID_1142872612" MODIFIED="1583427625373" TEXT="Zusammenhang">
<node CREATED="1583427626479" ID="ID_954689662" MODIFIED="1583427635727" TEXT="jeder Teil ist in-sich geschlossen"/>
<node CREATED="1583427636950" ID="ID_1936738462" MODIFIED="1583427650200" TEXT="mu&#xdf; aber in sinnvoller Reihenfolge laufen">
<node CREATED="1583433528741" ID="ID_1966240809" MODIFIED="1583433550809" TEXT="Problem dabei: Aysmmetrie">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1583433557458" ID="ID_260365198" MODIFIED="1583433567364" TEXT="es sind nur zwei Teilsysteme, aber drei Passes">
<linktarget COLOR="#f04b31" DESTINATION="ID_260365198" ENDARROW="Default" ENDINCLINATION="396;0;" ID="Arrow_ID_1446215014" SOURCE="ID_783533006" STARTARROW="None" STARTINCLINATION="398;26;"/>
</node>
<node CREATED="1583433572927" ID="ID_242969113" MODIFIED="1583433619074" TEXT="der erste und der dritte Pass braucht die DisplayFrames">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      weil wir eine Verkn&#252;pfung der Body und Header-Informationen herstellen
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1583433986108" ID="ID_542008018" MODIFIED="1583434006913" TEXT="der dritte Pass mu&#xdf; obendrein ein Integral transportieren"/>
<node CREATED="1611922802313" ID="ID_531908394" MODIFIED="1611922854579" TEXT="das l&#xe4;&#xdf;t sich &#xfc;ber ein Phasen-Modell integrieren">
<arrowlink COLOR="#96b3e9" DESTINATION="ID_1571358808" ENDARROW="Default" ENDINCLINATION="259;158;" ID="Arrow_ID_1529296223" STARTARROW="None" STARTINCLINATION="-382;24;"/>
</node>
</node>
<node CREATED="1583434059006" ID="ID_1287988941" MODIFIED="1583434227770" TEXT="Idee: in der Rekursion verstecken">
<arrowlink COLOR="#f0e0c0" DESTINATION="ID_718475738" ENDARROW="Default" ENDINCLINATION="-190;15;" ID="Arrow_ID_1507039489" STARTARROW="None" STARTINCLINATION="201;15;"/>
<icon BUILTIN="idea"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#8d0099" CREATED="1583435024997" ID="ID_1485425520" MODIFIED="1583435263295" TEXT="Verpflichtend in Layout-Ordnung auszuwerten">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ausnahmslos von oben nach unten und von links nach rechts!
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#7a4ec3" DESTINATION="ID_1346473468" ENDARROW="Default" ENDINCLINATION="-294;-13;" ID="Arrow_ID_1976656108" STARTARROW="None" STARTINCLINATION="-358;20;"/>
<linktarget COLOR="#6f56e5" DESTINATION="ID_1485425520" ENDARROW="Default" ENDINCLINATION="250;14;" ID="Arrow_ID_832303335" SOURCE="ID_1359440" STARTARROW="None" STARTINCLINATION="298;17;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1582995698667" HGAP="165" ID="ID_1849412034" MODIFIED="1679085179278" TEXT="zu Bauen" VSHIFT="27">
<icon BUILTIN="hourglass"/>
<icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1582996759972" FOLDED="true" ID="ID_1795046219" MODIFIED="1583537382866" TEXT="Rahmen">
<icon BUILTIN="button_ok"/>
<node CREATED="1582996764330" ID="ID_920127062" MODIFIED="1582996766870" TEXT="Umbau">
<node CREATED="1582996768074" ID="ID_1685131335" MODIFIED="1582996782861" TEXT="bisheriger Profil-Trigger mu&#xdf; herausgel&#xf6;st werden"/>
<node CREATED="1582996783904" ID="ID_1435982546" MODIFIED="1583008976682" TEXT="ermittelte Gr&#xf6;&#xdf;e mu&#xdf; vom Evaluation-Pass weiterverarbeitet werden">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      nicht mehr direkt auf den BodyCanvas als Gr&#246;&#223;e anwenden
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1583009002945" ID="ID_1360288962" MODIFIED="1583009011003" TEXT="Ausl&#xf6;se-Mechanismus kl&#xe4;ren">
<node CREATED="1583434315708" ID="ID_1757558045" MODIFIED="1583434327974" TEXT="ausl&#xf6;sbar &#xfc;ber das DisplayManager-API"/>
<node CREATED="1583435433150" ID="ID_641720015" MODIFIED="1583435453391" TEXT="der evaluation-Pass ist synchron und stateful"/>
<node CREATED="1583435417845" ID="ID_1265153119" MODIFIED="1583435463063" TEXT="und die Komponenten k&#xf6;nnen Annahmen &#xfc;ber das Resultat machen"/>
<node CREATED="1583435479472" ID="ID_1015699978" MODIFIED="1583435597100">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <b><u>Invariante</u></b>: <i><font size="2">(nach dem Pass)</font></i>&#160;liegen vorl&#228;ufig/hinreichend brauchbare Layout-Ma&#223;e vor
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1582995724279" FOLDED="true" ID="ID_742111018" MODIFIED="1675384156539" TEXT="Steuer-Komponente">
<icon BUILTIN="button_ok"/>
<node CREATED="1582995734606" ID="ID_1813411794" MODIFIED="1582995739220" TEXT="lebt im Layout-Manager"/>
<node CREATED="1582995740053" ID="ID_521808189" MODIFIED="1582995755383" TEXT="stateful (evaluationPhase)"/>
<node CREATED="1583435618709" ID="ID_1501002443" MODIFIED="1583435629364" TEXT="es ist die DisplayEvaluation selber">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1672787134816" ID="ID_973993644" MODIFIED="1672787960019" TEXT="Evaluation-Protocol">
<linktarget COLOR="#4c7ef4" DESTINATION="ID_973993644" ENDARROW="Default" ENDINCLINATION="-1199;-155;" ID="Arrow_ID_1196387900" SOURCE="ID_1189311522" STARTARROW="None" STARTINCLINATION="2666;104;"/>
<icon BUILTIN="info"/>
<node CREATED="1672787147372" ID="ID_434415256" MODIFIED="1672787159297" TEXT="es wird in zwei Phasen alles besucht"/>
<node CREATED="1672787160077" ID="ID_1477021297" MODIFIED="1672787169815" TEXT="Besuch erfolgt jeweils in &#xbb;Layout-Ordnung&#xab;"/>
</node>
</node>
<node COLOR="#338800" CREATED="1582995826081" FOLDED="true" ID="ID_1814756232" MODIFIED="1583537369744" TEXT="Evaluation-Ctx?">
<icon BUILTIN="button_ok"/>
<node CREATED="1582995915117" ID="ID_1313886171" MODIFIED="1582995918612" TEXT="notwendig?">
<node CREATED="1582995919703" ID="ID_1252142092" MODIFIED="1582995927631" TEXT="k&#xf6;nnte Daten transportieren"/>
<node CREATED="1582995928331" ID="ID_1250781606" MODIFIED="1582995932606" TEXT="w&#xe4;re dann ein Visitor"/>
</node>
<node CREATED="1582995935542" ID="ID_755542037" MODIFIED="1611922601116" TEXT="k&#xf6;nnte verzichtbar sein...">
<icon BUILTIN="button_cancel"/>
<node CREATED="1582995943761" ID="ID_1763997736" MODIFIED="1582995951988" TEXT="wenn es nur um eine Trigger-Reihenfolge geht"/>
<node CREATED="1582995952856" ID="ID_1376470251" MODIFIED="1582995967965" TEXT="wenn stattdessen der Layout-Manager als Inteface durchgereicht wird"/>
<node CREATED="1611922646015" ID="ID_868399927" MODIFIED="1611922773610" TEXT="(wir haben aber Phasen)">
<arrowlink COLOR="#6e829b" DESTINATION="ID_1571358808" ENDARROW="Default" ENDINCLINATION="476;590;" ID="Arrow_ID_1458719997" STARTARROW="None" STARTINCLINATION="292;29;"/>
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node CREATED="1583103170639" ID="ID_1199980563" MODIFIED="1583103203649" TEXT="k&#xf6;nnte die DisplayEvaluation selber sein">
<icon BUILTIN="idea"/>
<node CREATED="1583103181267" ID="ID_1854299076" MODIFIED="1583103191631" TEXT="diese w&#xe4;re dann auch ein Interface"/>
<node CREATED="1583103192422" ID="ID_1947518764" MODIFIED="1583103201511" TEXT="und w&#xfc;rde per Referenz durchgegeben"/>
</node>
<node COLOR="#435e98" CREATED="1583435165604" ID="ID_1346473468" MODIFIED="1583435263295" TEXT="&#xfc;berneme die Zusammenhangs-Struktur vom Visitor">
<linktarget COLOR="#7a4ec3" DESTINATION="ID_1346473468" ENDARROW="Default" ENDINCLINATION="-294;-13;" ID="Arrow_ID_1976656108" SOURCE="ID_1485425520" STARTARROW="None" STARTINCLINATION="-358;20;"/>
<node CREATED="1583435179556" ID="ID_857623389" MODIFIED="1583435203049" TEXT="alle Komponenten bieten eine Challenge-Funktion"/>
<node CREATED="1583435204373" ID="ID_741511380" MODIFIED="1583435220824" TEXT="sie rekurieren mit Insider-Wissen auf den Visitor zur&#xfc;ck"/>
<node CREATED="1583435311207" ID="ID_146344730" MODIFIED="1583435342779" TEXT="aber die DisplayEvaluation ist selbst der Visitor">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      insofern f&#228;llt die doppelte Abstraktion und indirektion hier weg
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1583010104257" ID="ID_82409060" MODIFIED="1583537388690" TEXT="Evaluation-Pass">
<linktarget COLOR="#f6e1c2" DESTINATION="ID_82409060" ENDARROW="Default" ENDINCLINATION="-1352;202;" ID="Arrow_ID_1110289108" SOURCE="ID_430878592" STARTARROW="None" STARTINCLINATION="-2400;-277;"/>
<icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1672796917244" FOLDED="true" ID="ID_1182384811" MODIFIED="1672796930646" TEXT="DisplayManager selber....">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1672796932502" ID="ID_503407567" MODIFIED="1672796982107" TEXT="Einrichtung des ZoomWindow pr&#xfc;fen">
<icon BUILTIN="button_ok"/>
<node CREATED="1672796940850" ID="ID_1966474939" MODIFIED="1672796954415" TEXT="hierf&#xfc;r vom BodyCanvas eine effektive Weite in Pixel beziehen"/>
<node CREATED="1672796964890" ID="ID_1604594120" MODIFIED="1672796979603" TEXT="ggfs. die ZoomWindow::pxWidth() neu kalibrieren"/>
</node>
<node COLOR="#435e98" CREATED="1678381426918" ID="ID_382705289" MODIFIED="1672799760652" TEXT="Verbindung auf Implementierungs-Level: Layout &#x2194; Metrik">
<linktarget COLOR="#6bb1c5" DESTINATION="ID_382705289" ENDARROW="Default" ENDINCLINATION="782;41;" ID="Arrow_ID_1372440678" SOURCE="ID_1514900067" STARTARROW="None" STARTINCLINATION="441;0;"/>
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#338800" CREATED="1583010115679" FOLDED="true" ID="ID_181195318" MODIFIED="1583677222280" TEXT="alle Tracks">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1583010186970" ID="ID_1754142891" MODIFIED="1675384010783" TEXT="Ping-Pong auf DisplayFrame ausl&#xf6;sen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1583010212766" ID="ID_1377321766" MODIFIED="1675384095983" TEXT="Gr&#xf6;&#xdf;e vom Header auslesen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1583010223312" ID="ID_929067099" MODIFIED="1583677196768" STYLE="fork" TEXT="damit die Maximums-Berechnung auf dem Track-Inhalt ausl&#xf6;sen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1583606375028" FOLDED="true" ID="ID_1922972295" MODIFIED="1583677196768" TEXT="funktionales Max">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1583606385337" ID="ID_1117598680" MODIFIED="1583626259305" TEXT="Type-deduction-Probleme">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      h&#228;ngen garnicht direkt damit zusammen, sondern wurden getriggert durch den &quot;unorthodoxen&quot; Gebrauch des PtrDerefIter
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1583677168146" ID="ID_1666646505" MODIFIED="1583677177990" TEXT="in util-coll.hpp ausgelagert">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1583677604571" ID="ID_214009767" MODIFIED="1675384124121" TEXT="brauche (vorl&#xe4;ufige) R&#xfc;ckmeldung vom Clip">
<arrowlink COLOR="#ab415e" DESTINATION="ID_811510338" ENDARROW="Default" ENDINCLINATION="-975;-81;" ID="Arrow_ID_610185006" STARTARROW="None" STARTINCLINATION="744;47;"/>
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1611486765168" ID="ID_62818590" MODIFIED="1675384130360" TEXT="Clip-Positionen und Ausdehnungen integrieren">
<linktarget COLOR="#786096" DESTINATION="ID_62818590" ENDARROW="Default" ENDINCLINATION="-1193;64;" ID="Arrow_ID_1779091384" SOURCE="ID_392294660" STARTARROW="None" STARTINCLINATION="817;64;"/>
<icon BUILTIN="hourglass"/>
<node COLOR="#435e98" CREATED="1617470705305" HGAP="40" ID="ID_644438911" MODIFIED="1674161854370" TEXT="Stand: vorl&#xe4;ufige Implementierung" VSHIFT="6">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      erst mal nur mit einem Button, und die Layout-Logik ehr &quot;gesch&#228;tzt&quot; den pr&#228;zise verstanden und umgesetzt. Immerhinn l&#228;uft der DisplayEvaluationPass nun, und auch die Buttons erscheinen an der Stelle, an der ich das erwarten w&#252;rde...
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_cancel"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1674161820779" ID="ID_1877059709" MODIFIED="1674161920084" TEXT="Stand: ElementBoxWidget als Clip, aber leer">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Ende 2022 habe ich dann doch noch das ElementBoxWidget gebaut. Nun verwenden Clips schon mal dieses, aber die ganze Logik der Clip-Anzeige <i>ist auf sp&#228;ter verschoben...</i>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1583010246034" ID="ID_113344286" MODIFIED="1675384031717" TEXT="Resultat mit Wert vom Header abgleichen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1611527674130" ID="ID_1530876056" MODIFIED="1612030681158" TEXT="Ergebnis &#x2259; lokales Maximum &#x2192; TrackBody::contentHeight_">
<linktarget COLOR="#3b4b73" DESTINATION="ID_1530876056" ENDARROW="Default" ENDINCLINATION="802;689;" ID="Arrow_ID_471691943" SOURCE="ID_1232626344" STARTARROW="None" STARTINCLINATION="700;24;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1611533783838" ID="ID_504265049" MODIFIED="1611533798915" TEXT="Vorsicht: es sind zwei Belange">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1611533829992" ID="ID_1527761356" MODIFIED="1611533848566" TEXT="der Content mu&#xdf; in den Content-Bereich im Track passen"/>
<node CREATED="1611533811939" ID="ID_254664541" MODIFIED="1611533828996" TEXT="Synchronisation zwischen Header und Body"/>
</node>
<node COLOR="#435e98" CREATED="1611533873746" ID="ID_1129757567" MODIFIED="1675384005462" TEXT="wo/wie werden die Sub-Tracks ber&#xfc;cksichtigt?">
<icon BUILTIN="help"/>
<node CREATED="1612645297486" ID="ID_847170359" MODIFIED="1612646097627" TEXT="ergibt sich aus der Struktur des Display-Frame">
<arrowlink COLOR="#696fb6" DESTINATION="ID_535248075" ENDARROW="Default" ENDINCLINATION="696;-47;" ID="Arrow_ID_88289028" STARTARROW="None" STARTINCLINATION="-1205;73;"/>
</node>
<node CREATED="1612646163776" ID="ID_146112525" MODIFIED="1612646172800" TEXT="es mu&#xdf; auf zwei Ebenen passen">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1612646174439" ID="ID_275074702" MODIFIED="1612646188585" TEXT="Beginn und Ende eines Track (incl Kinder)"/>
<node CREATED="1612646196212" ID="ID_965864393" MODIFIED="1612646208439" TEXT="Beginn und Ende jedes einzelnen Sub-Tracks"/>
</node>
<node CREATED="1612646254925" ID="ID_910305950" MODIFIED="1612646291779">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Invariante gilt <i>auf einem</i>&#160;Fork
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
<node CREATED="1612646316870" ID="ID_91413726" MODIFIED="1612646544159" TEXT="Heads und Bodies are reasonably synced">
<arrowlink COLOR="#af5182" DESTINATION="ID_253184113" ENDARROW="Default" ENDINCLINATION="47;-31;" ID="Arrow_ID_116043165" STARTARROW="None" STARTINCLINATION="-838;0;"/>
</node>
<node CREATED="1612646343880" ID="ID_811479327" MODIFIED="1612646385206" TEXT="&#x27ff; add same height to Head and Body compound"/>
<node CREATED="1612646393898" ID="ID_162830410" MODIFIED="1612646408248" TEXT="&#x27f9; Invariant holds at begin of next compound"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1583010270152" ID="ID_689332581" MODIFIED="1583606371280" TEXT="depth-first-Suche und Aktion auf dem R&#xfc;ckweg">
<icon BUILTIN="button_ok"/>
<node CREATED="1583010287758" ID="ID_101138504" MODIFIED="1583010298353" TEXT="relative Reihenfolge der Sibling-Tracks ist egal">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node CREATED="1583010359364" ID="ID_1532117771" MODIFIED="1583010378225" TEXT="&quot;danach&quot; auf jedem Canvas die Platz-Ermittlung ausl&#xf6;sen"/>
<node CREATED="1583010386420" ID="ID_719664576" MODIFIED="1583010408429" TEXT="Gesamtresultat mit Ist-Zustand vergleichen"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1583010590180" ID="ID_253184113" MODIFIED="1612742654585" TEXT="Header-Ausgleich">
<arrowlink COLOR="#8b71ae" DESTINATION="ID_1925515175" ENDARROW="Default" ENDINCLINATION="259;-76;" ID="Arrow_ID_44202222" STARTARROW="None" STARTINCLINATION="-426;50;"/>
<linktarget COLOR="#af5182" DESTINATION="ID_253184113" ENDARROW="Default" ENDINCLINATION="47;-31;" ID="Arrow_ID_116043165" SOURCE="ID_91413726" STARTARROW="None" STARTINCLINATION="-838;0;"/>
<icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1611534925644" ID="ID_1754764132" MODIFIED="1675384149246" TEXT="#1211 coordinate track extension">
<linktarget COLOR="#4b98e2" DESTINATION="ID_1754764132" ENDARROW="Default" ENDINCLINATION="-2912;207;" ID="Arrow_ID_468901844" SOURCE="ID_1506262956" STARTARROW="None" STARTINCLINATION="698;66;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1583677270535" FOLDED="true" ID="ID_1729172771" MODIFIED="1612714274794" TEXT="wann genau mu&#xdf; der Header-Ausgleich laufen?">
<icon BUILTIN="help"/>
<node CREATED="1583677300836" ID="ID_893081931" MODIFIED="1612712793203" TEXT="Plan-A">
<icon BUILTIN="button_cancel"/>
<node CREATED="1583677323867" ID="ID_1147387689" MODIFIED="1583677337542" TEXT="gekoppelt mit der lokalen Platz-Ermittlung"/>
<node CREATED="1583677426338" ID="ID_6669047" MODIFIED="1583677442862" TEXT="Problem: R&#xfc;ckwirkung der Canvas-Platz-Ermittlung"/>
<node CREATED="1583677385064" ID="ID_822192050" MODIFIED="1583677399994" TEXT="indirekte Hoffnung: die Rekursion wird das l&#xf6;sen">
<node CREATED="1583677461566" ID="ID_786603239" MODIFIED="1583677485360" TEXT="insofern diese auch die Gr&#xf6;&#xdf;e des Canvas &#xe4;ndert">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...und damit eine Rekursion triggert
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1583677498641" ID="ID_406797992" MODIFIED="1583677518462" TEXT="lokale Anpassungen k&#xf6;nnten sich gegenseitig neutralisieren">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
<node CREATED="1583677357807" ID="ID_685227170" MODIFIED="1583677579039" TEXT="Plan-B">
<icon BUILTIN="forward"/>
<node CREATED="1583677365234" ID="ID_1695342185" MODIFIED="1612712806916" TEXT="separater zweiter Pass"/>
<node CREATED="1612712807625" ID="ID_1219345647" MODIFIED="1612712819659" TEXT="nachdem das Track-Profil konstruiert wurde"/>
<node CREATED="1612712830629" ID="ID_713212199" MODIFIED="1612712864077" TEXT="dieser 2.Pass ist ohnehin notwendig">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...um die Widgets an die nun korrekte Position gem&#228;&#223; Track-Profil zu schieben
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1612712922845" ID="ID_1653554586" MODIFIED="1612726635680" TEXT="Problem: wenn Body zu klein ist">
<arrowlink COLOR="#c6696c" DESTINATION="ID_1102509163" ENDARROW="Default" ENDINCLINATION="68;-71;" ID="Arrow_ID_215519404" STARTARROW="None" STARTINCLINATION="-26;78;"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1612712941815" ID="ID_1546276985" MODIFIED="1612712963120" TEXT="...wir merken das erst, nachddem das Profil konstruiert wurde"/>
<node CREATED="1612712987992" ID="ID_1461659027" MODIFIED="1612713002175" TEXT="...aber dann ist es nicht mehr m&#xf6;glich den Body zu vergr&#xf6;&#xdf;ern"/>
</node>
</node>
</node>
<node CREATED="1583010602619" ID="ID_245791707" MODIFIED="1583010640224" TEXT="Eingabe: neuer Soll-Zustand laut Body">
<node CREATED="1612714376084" ID="ID_1212522067" MODIFIED="1612714380543" TEXT="f&#xfc;r die Content-Area"/>
<node CREATED="1612714380972" ID="ID_1481576243" MODIFIED="1612714393222" TEXT="f&#xfc;r den gesamten sub-Fork"/>
</node>
<node CREATED="1612726548017" ID="ID_1808095522" MODIFIED="1612726561622" TEXT="jeden einzelnen Header besuchen und ggfs vergr&#xf6;&#xdf;ern"/>
<node COLOR="#7a3459" CREATED="1612726562591" ID="ID_37470143" MODIFIED="1612726582625" TEXT="kann Body nicht vergr&#xf6;&#xdf;ern">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1612726584909" ID="ID_1102509163" MODIFIED="1612726635680" TEXT="weil zu dem Zeitpunkt das TrackProfile schon berechnet ist">
<linktarget COLOR="#c6696c" DESTINATION="ID_1102509163" ENDARROW="Default" ENDINCLINATION="68;-71;" ID="Arrow_ID_215519404" SOURCE="ID_1653554586" STARTARROW="None" STARTINCLINATION="-26;78;"/>
</node>
<node CREATED="1612726638878" ID="ID_350050993" MODIFIED="1612726655223" TEXT="vermute / hoffe, da&#xdf; das die Ausnahme bleibt">
<node CREATED="1612726657796" ID="ID_474492345" MODIFIED="1612726672996" TEXT="und zwar, weil wir durchaus auf der Ebene einzelner Tracks einen Ausgleich machen"/>
<node CREATED="1612726674105" ID="ID_228252726" MODIFIED="1612726705766" TEXT="&#x27f9; bei der Diskrepanz kann es sich nur um Dekorationen handeln"/>
</node>
</node>
</node>
</node>
<node COLOR="#990000" CREATED="1583009909800" FOLDED="true" ID="ID_968621649" MODIFIED="1583525572283" TEXT="ReSizeMediator">
<icon BUILTIN="button_cancel"/>
<node CREATED="1583009921904" ID="ID_562662536" MODIFIED="1583009932169" TEXT="Key-Schema entwerfen"/>
<node CREATED="1583009934307" ID="ID_1843559579" MODIFIED="1583009940268" TEXT="Registry"/>
<node CREATED="1583009941021" ID="ID_1229178947" MODIFIED="1583009948045" TEXT="Verteile / Callback-Mechanismus">
<node CREATED="1583009949267" ID="ID_44481088" MODIFIED="1583009956166" TEXT="wenige Verteiler-Hubs"/>
<node CREATED="1583009956826" ID="ID_619375937" MODIFIED="1583009961965" TEXT="auf WLink aufbauen"/>
</node>
<node CREATED="1583525577464" ID="ID_1528548638" MODIFIED="1583525638834" TEXT="so nicht sicher umsetzbar">
<arrowlink COLOR="#db337d" DESTINATION="ID_815242494" ENDARROW="Default" ENDINCLINATION="-814;0;" ID="Arrow_ID_1920099327" STARTARROW="None" STARTINCLINATION="812;88;"/>
</node>
<node CREATED="1583525607796" ID="ID_1583316557" MODIFIED="1583525625915" TEXT="stattdessen einfach direkt die Widgets manipulieren und gut is">
<icon BUILTIN="idea"/>
<node CREATED="1583525671643" ID="ID_1346439197" MODIFIED="1583525685861" TEXT="geht anscheinend problemlos"/>
<node CREATED="1583525686596" ID="ID_99335407" MODIFIED="1583525695780" TEXT="weil das UI single-threaded ist"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1583010785331" HGAP="-170" ID="ID_156323884" MODIFIED="1583010913817" TEXT="Test" VSHIFT="2">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1583010796753" ID="ID_1055941815" MODIFIED="1583010929143" TEXT="Unit-Tests">
<icon BUILTIN="flag-yellow"/>
</node>
<node COLOR="#338800" CREATED="1583010801657" ID="ID_794457070" MODIFIED="1675382549124" TEXT="empirischer Test (via TestControl)">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1583010827293" ID="ID_879314444" MODIFIED="1583010925312" TEXT="formalen Integrations-Test etablieren">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1583010948547" ID="ID_111432509" MODIFIED="1583010952923" TEXT="Dokumentation">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1583010956272" ID="ID_54750547" MODIFIED="1583010970041" TEXT="TiddlyWiki">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1583010961106" ID="ID_1086636096" MODIFIED="1583010975732" TEXT="Lumiera-Doku">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1583010976623" ID="ID_919049718" MODIFIED="1583010981866" TEXT="zumindest den Ort etablieren"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1565276594566" HGAP="-92" ID="ID_1897432572" MODIFIED="1679085444854" STYLE="fork" TEXT="Ergebnisse anwenden..." VSHIFT="-2">
<icon BUILTIN="hourglass"/>
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1611787571317" ID="ID_1425309225" MODIFIED="1679085514014" TEXT="ablegen...">
<icon BUILTIN="yes"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1565276601866" ID="ID_1770751657" MODIFIED="1679085432286" TEXT="in den Clips">
<icon BUILTIN="flag-yellow"/>
</node>
<node COLOR="#338800" CREATED="1565276606260" ID="ID_123769598" MODIFIED="1675383961301" TEXT="in den Tracks">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1565276616439" ID="ID_1925515175" MODIFIED="1675383777147" TEXT="Head">
<linktarget COLOR="#8b71ae" DESTINATION="ID_1925515175" ENDARROW="Default" ENDINCLINATION="259;-76;" ID="Arrow_ID_44202222" SOURCE="ID_253184113" STARTARROW="None" STARTINCLINATION="-426;50;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1675383567911" ID="ID_1478249525" MODIFIED="1675383577920" TEXT="implementiert als vertikaler GTK-size-request"/>
<node COLOR="#435e98" CREATED="1675383579950" HGAP="26" ID="ID_1353501579" MODIFIED="1675383672047" TEXT="in drei Auspr&#xe4;gungen" VSHIFT="2">
<edge COLOR="#7779b5" STYLE="linear"/>
<icon BUILTIN="info"/>
<node CREATED="1675383598939" ID="ID_191492412" MODIFIED="1675383618101" TEXT="contentHeight: cell (1,1)"/>
<node CREATED="1675383598939" ID="ID_769571784" MODIFIED="1675383698919" TEXT="syncPadHeight: cell (1,2)"/>
<node CREATED="1675383598939" ID="ID_1533042981" MODIFIED="1675383739149" TEXT="enforceExtent: cell (0,1)"/>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1565276619446" ID="ID_67786660" MODIFIED="1679085432286" TEXT="Body">
<icon BUILTIN="hourglass"/>
<node CREATED="1675383833237" ID="ID_63682372" MODIFIED="1675383839039" TEXT="TrackBody::contentHeight_"/>
<node CREATED="1675383853090" ID="ID_1092222582" MODIFIED="1675383860604" TEXT="wird direkt zum Zeichnen verwendet"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1675383862097" ID="ID_93556948" MODIFIED="1679085432286" TEXT="TODO: w&#xe4;chst derzeit monoton">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...es sollte an geeigneter Stelle einen Reset geben, da jeder DisplayEvalutaionPass grunds&#228;tzlich das ganze Layout sauber ausrechnen kann
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1565276627006" ID="ID_1705597393" MODIFIED="1565276630975" TEXT="im TrackProfile">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node COLOR="#338800" CREATED="1611787674741" ID="ID_1709866969" MODIFIED="1612742632732" TEXT="Canvas-Koordinaten nachf&#xfc;hren">
<linktarget COLOR="#675b85" DESTINATION="ID_1709866969" ENDARROW="Default" ENDINCLINATION="684;566;" ID="Arrow_ID_541728210" SOURCE="ID_791476178" STARTARROW="None" STARTINCLINATION="-1876;104;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1611915466838" FOLDED="true" ID="ID_355225110" MODIFIED="1611915483757" TEXT="Problem: Storage der Koordinaten">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1611915485454" ID="ID_1653031142" MODIFIED="1611915494045" TEXT="welche Form?">
<node CREATED="1611915495602" ID="ID_269674665" MODIFIED="1611915511620" TEXT="logische Koordinaten">
<node CREATED="1611915529262" ID="ID_1718125401" MODIFIED="1611915542597" TEXT="entsprechen der &#xbb;Position&#xab; im Modell"/>
<node CREATED="1611915545852" ID="ID_580313241" MODIFIED="1611915553582" TEXT="eine Zeit-Position"/>
<node CREATED="1611915554690" ID="ID_200419284" MODIFIED="1611915668706" TEXT="expliziter vertikaler Shift">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      noch nicht klar, welche Rolle der spielt; ich sehe ihn erst mal vor, weil er m&#246;glich ist. Denkbar w&#228;re, da&#223; er durch User-Interaktion entsteht, oder aber auch systematisch generiert wird, um bestimmte Arten von Clips optisch abzusetzen
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1611915512327" ID="ID_1119494975" MODIFIED="1611915516836" TEXT="roh-Koordinaten">
<node CREATED="1611915682249" ID="ID_1895722911" MODIFIED="1611915699720" TEXT="&#xdc;bersetzung der logischen Koordinaten in Anzeige-Metrik"/>
<node CREATED="1611915704190" ID="ID_428966516" MODIFIED="1611915721000" TEXT="Zoom und Aspekte des Anzeigestils sind schon eingearbeitet"/>
<node CREATED="1611915721903" ID="ID_96302431" MODIFIED="1611915734913" TEXT="aber die Koordinaten sind strikt lokal zum Track"/>
</node>
<node CREATED="1611915517783" ID="ID_1437430462" MODIFIED="1611915526002" TEXT="layout-Koordinaten">
<node CREATED="1611915737121" ID="ID_1515058204" MODIFIED="1611915746180" TEXT="&#xdc;bersetzung in Canvas-Koordinaten"/>
<node CREATED="1611915747105" ID="ID_1840524131" MODIFIED="1611915754462" TEXT="mu&#xdf; stets erneut aufgebaut werden"/>
<node CREATED="1611915755463" ID="ID_167995629" MODIFIED="1611915766418" TEXT="ber&#xfc;cksichtigt Umgebung und benachbarte Tracks"/>
</node>
</node>
<node CREATED="1611915782683" ID="ID_1829463115" MODIFIED="1611916029023" TEXT="Zielkonflikt">
<arrowlink COLOR="#e33b64" DESTINATION="ID_1488484275" ENDARROW="Default" ENDINCLINATION="-14;-84;" ID="Arrow_ID_1820616086" STARTARROW="None" STARTINCLINATION="-70;14;"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1611915794009" ID="ID_1622487643" MODIFIED="1611915845837" TEXT="duplizierte Daten sind zu vermeiden, da hier ein starker Hebel gegeben ist">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Clips d&#252;rften die h&#228;ufigsten Entit&#228;ten in der Timeline-Anzeige werden. Es m&#252;ssen tausende bis zehntausende Clips performant gehandhabt werden
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1611915849754" ID="ID_409163867" MODIFIED="1611915977254" TEXT="Daten m&#xfc;ssen auf dem Pfad der Kontrollstruktur greifbar sein">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      die Kontrollstruktur ist bereits gef&#228;hrlich komplex; spezielle &quot;Schleifen&quot; durch die Innereien eigentlich nicht involvierter Entit&#228;ten allein aus Performance-Gr&#252;nden sollten vermieden werden
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1611915390832" FOLDED="true" ID="ID_1488484275" MODIFIED="1612742624778" TEXT="Clips m&#xfc;ssen partizipieren">
<linktarget COLOR="#e33b64" DESTINATION="ID_1488484275" ENDARROW="Default" ENDINCLINATION="-14;-84;" ID="Arrow_ID_1820616086" SOURCE="ID_1829463115" STARTARROW="None" STARTINCLINATION="-70;14;"/>
<linktarget COLOR="#5c849c" DESTINATION="ID_1488484275" ENDARROW="Default" ENDINCLINATION="-838;79;" ID="Arrow_ID_1236233773" SOURCE="ID_1248959265" STARTARROW="None" STARTINCLINATION="612;56;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1611916037617" ID="ID_1961599171" MODIFIED="1611916053240" TEXT="weil die Layout-Koordinaten erneut aufgebaut werden m&#xfc;ssen"/>
<node CREATED="1611916054695" ID="ID_178492743" MODIFIED="1611916077488" TEXT="und nur die logischen Koordinaten gespeichert sein sollten, und zwar im Clip"/>
<node CREATED="1611921176093" ID="ID_1185756571" MODIFIED="1611921186371" TEXT="Entscheidung: Art der Einbindung">
<node CREATED="1611921187479" ID="ID_60740036" MODIFIED="1611921190890" TEXT="Alternativen">
<node CREATED="1611921192310" FOLDED="true" ID="ID_1840435951" MODIFIED="1611921604756" TEXT="Callback-Mechanismus vom CanvasHook">
<icon BUILTIN="button_cancel"/>
<node CREATED="1611921251215" ID="ID_897674349" MODIFIED="1611921285018" TEXT="das w&#xe4;re dann ein generischer Mechanismus">
<icon BUILTIN="up"/>
</node>
<node CREATED="1611921261541" ID="ID_1979211118" MODIFIED="1611921280278" TEXT="und ein weiterer generischer Mechanismus">
<icon BUILTIN="down"/>
</node>
<node CREATED="1611921337706" ID="ID_797338208" MODIFIED="1611921423971" TEXT="schlimmer noch: auf der falschen Ebene angesiedelt">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <ul>
      <li>
        denn eigentlich w&#228;re das eine &quot;interne Angelegenheit&quot; von CanvasHook&#160;&#8596; CanvasHooked
      </li>
      <li>
        da aber die Koordinaten-Daten im Clip liegen, mu&#223; der Clip involviert werden
      </li>
      <li>
        obwohl dies &#252;berhaupt nicht zu den Belangen des Clip geh&#246;rt
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="button_cancel"/>
</node>
</node>
<node CREATED="1611921214699" ID="ID_1406560322" MODIFIED="1611921610785" TEXT="aktives re-Attachment der Clips durch ihren Manager">
<icon BUILTIN="forward"/>
<node CREATED="1611921293072" ID="ID_1224338135" MODIFIED="1611921306495" TEXT="k&#xf6;nnte per DisplayEvaluationPass erfolgen">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1611921493716" ID="ID_783533006" MODIFIED="1611921597467" TEXT="das l&#xe4;uft dann aber auf den 3.Pass hinaus">
<arrowlink COLOR="#f04b31" DESTINATION="ID_260365198" ENDARROW="Default" ENDINCLINATION="396;0;" ID="Arrow_ID_1446215014" STARTARROW="None" STARTINCLINATION="398;26;"/>
<icon BUILTIN="smily_bad"/>
<node CREATED="1611922870848" HGAP="39" ID="ID_755879883" MODIFIED="1611922978680" TEXT="naja...." VSHIFT="12">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...ich hab ja nicht umsonst in der theoretischen Analyse herausgefunden, da&#223; dieses Schema auf ein Phasen-Modell hinausl&#228;uft; die Hoffnung w&#228;re h&#246;chstens gewesen, da&#223; in der Praxis der 3.Pass derart <i>degeneriert,</i>&#160; da&#223; man ihn in den 1.Pass einfalten kann
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
<node CREATED="1611921629593" ID="ID_596099565" MODIFIED="1611921648499" TEXT="es erfolgt also im 3.Pass">
<node CREATED="1611921650318" ID="ID_1512516246" MODIFIED="1611921658210" TEXT="und dieser ist damit doch unvermeidlich"/>
<node CREATED="1611921687575" ID="ID_1008400960" MODIFIED="1611921701733" TEXT="(kann dann aber auch den Header-Ausgleich mit erledigen)"/>
</node>
</node>
<node COLOR="#338800" CREATED="1611925014039" FOLDED="true" ID="ID_1261732954" MODIFIED="1611959573577" TEXT="relink() der Clips implementieren">
<icon BUILTIN="button_ok"/>
<node CREATED="1611925026550" ID="ID_1629005155" MODIFIED="1611925046136" TEXT="L&#xf6;sung: einfach mit den aktuellen logischen Koordinaten">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1611925047162" ID="ID_949058382" MODIFIED="1611959549842" TEXT="feststellen ob &#xfc;berhaupt ein angebundenes ClipDelegate gegeben ist">
<icon BUILTIN="button_ok"/>
<node CREATED="1611959550608" ID="ID_706043253" MODIFIED="1611959559211" TEXT="erledigt durch virtuelle Methode">
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#338800" CREATED="1611925067536" ID="ID_1433993572" MODIFIED="1611959566203" TEXT="letztlich die CanvasHook::move()-Funktion nutzen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1611953633107" ID="ID_866053960" MODIFIED="1611959528314" TEXT="&#x27f9; Thema speichern der Clip-Daten">
<arrowlink COLOR="#70365f" DESTINATION="ID_814561596" ENDARROW="Default" ENDINCLINATION="-427;-565;" ID="Arrow_ID_1226103397" STARTARROW="None" STARTINCLINATION="805;58;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1611959606145" ID="ID_877670109" MODIFIED="1612030761702" TEXT="Problem: Clip (noch) nicht am rechten Fleck">
<icon BUILTIN="broken-line"/>
<node CREATED="1611959630868" ID="ID_268739743" MODIFIED="1611959702682" TEXT="Clip erscheint am oberen Rand des Track">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ber&#252;cksichtigt also nicht die Dekoration und das Padding... obwohl doch eigentlich der 2.Pass das Track-Profil aufgebaut haben sollte
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1611959645562" ID="ID_4339474" MODIFIED="1611959664916" TEXT="aber explizit injizierte Buttons erscheinen an der richtigen Stelle"/>
<node COLOR="#338800" CREATED="1611959706282" FOLDED="true" ID="ID_568799045" MODIFIED="1612031128784" TEXT="Debugging...">
<icon BUILTIN="button_ok"/>
<node CREATED="1612000363951" ID="ID_1611539170" MODIFIED="1612031120974" TEXT="Beobachtungen">
<icon BUILTIN="idea"/>
<node CREATED="1612000371364" ID="ID_36603158" MODIFIED="1612000392460">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      der Test-Diff ist <i>ungeschickt geschrieben</i>
    </p>
  </body>
</html></richcontent>
<node CREATED="1612000397098" ID="ID_1350143023" MODIFIED="1612000406123" TEXT="er sendet erst ein ins(Clip)"/>
<node CREATED="1612000406975" ID="ID_1469300848" MODIFIED="1612000417872" TEXT="und mutiert dannach die Timings von diesem Clip"/>
<node COLOR="#338800" CREATED="1612000432043" ID="ID_174378469" MODIFIED="1612000442318" TEXT="aber das wird alles korrekt gehandhabt">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1612026280255" ID="ID_1932586467" MODIFIED="1612026308920" TEXT="Trotzdem: senden wie vorgesehen, sofort mit Timings">
<linktarget COLOR="#5cb39f" DESTINATION="ID_1932586467" ENDARROW="Default" ENDINCLINATION="-194;262;" ID="Arrow_ID_1566553463" SOURCE="ID_99599203" STARTARROW="None" STARTINCLINATION="435;33;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1612000444241" ID="ID_1290239156" MODIFIED="1612000568427" TEXT="TimeSpan und optional&lt;TimeSpan&gt; werden x-fach kopiert">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1612000475795" ID="ID_1550787880" MODIFIED="1612000489077" TEXT="da per Value-Argument">
<node CREATED="1612000496775" ID="ID_177231276" MODIFIED="1612000505843" TEXT="im ClipPresenter-ctor"/>
<node CREATED="1612000490724" ID="ID_1501412770" MODIFIED="1612000496039" TEXT="in der Getter-Funktion"/>
<node CREATED="1612000510489" ID="ID_1095678322" MODIFIED="1612000520712" TEXT="in allen Settern / Mutatoren"/>
</node>
<node CREATED="1612000529308" ID="ID_874373043" MODIFIED="1612000550279" TEXT="zumindest am &#xdc;bergang zum ClipDelegate kann das der Optimizer nicht knacken">
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#338800" CREATED="1612000552676" ID="ID_103077891" MODIFIED="1612024898535" TEXT="TODO: in Referenzen umschreiben">
<linktarget COLOR="#20a47e" DESTINATION="ID_103077891" ENDARROW="Default" ENDINCLINATION="-16;56;" ID="Arrow_ID_55769950" SOURCE="ID_1194581288" STARTARROW="None" STARTINCLINATION="304;18;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1612000682337" ID="ID_1950742827" MODIFIED="1612022042102" TEXT="Widget wird vom Ctor zweimal hintereinander an den Canvas geheftet">
<arrowlink COLOR="#c16b96" DESTINATION="ID_1693567978" ENDARROW="Default" ENDINCLINATION="223;491;" ID="Arrow_ID_624678696" STARTARROW="None" STARTINCLINATION="1328;54;"/>
<icon BUILTIN="broken-line"/>
<node CREATED="1612000718837" ID="ID_1844571428" MODIFIED="1612000743430" TEXT="Design von CanvasHook fragw&#xfc;rdig">
<node CREATED="1612000744873" ID="ID_1198437143" MODIFIED="1612000756012" TEXT="modelliert als &quot;spezieller ViewHook&quot;"/>
<node CREATED="1612000757240" ID="ID_828923416" MODIFIED="1612000775058" TEXT="das f&#xfc;hrt zu einem stellenweise umgebogenen API"/>
<node CREATED="1612000776126" ID="ID_64509148" MODIFIED="1612000794345" TEXT="und zu verketteten &quot;magischen&quot; ctors">
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#435e98" CREATED="1612000906004" ID="ID_89016969" MODIFIED="1612008915157" TEXT="wird jemals ein CanvasHook als ViewHook gebraucht?">
<icon BUILTIN="help"/>
<node CREATED="1612008916353" ID="ID_1376139143" MODIFIED="1612008920019" TEXT="Nein">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1612008922562" ID="ID_458884534" MODIFIED="1612009068409" TEXT="nur ein historisches &#xdc;berbleibsel">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ich wollte mal ein viel generischeres Design schaffen, das sogar eine Art Grundger&#252;st f&#252;r das Zusammenbauen des GUI sein k&#246;nnte. In der vertieften Analyse wurde dann aber klar, da&#223; dieses Design nicht so ohne Weiteres realisierbar ist. Daraufhin habe ich beschlossen, die Idee aufzugeben und stattdessen auf Einzelf&#228;lle zu spezialisieren. Und in einem weiteren Schritt habe ich dann die Themen &quot;Grid&quot; und &quot;Canvas&quot; voneinander getrennt
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node CREATED="1612000823535" ID="ID_602205033" MODIFIED="1612000891040" TEXT="Frage: blo&#xdf; ungeschickt, oder sogar falsch?">
<icon BUILTIN="help"/>
<node CREATED="1612000862978" ID="ID_292607955" MODIFIED="1612000878500" TEXT="kl&#xe4;ren: wie geht Gtk::Layout damit um?"/>
<node CREATED="1612001686428" ID="ID_1708452319" MODIFIED="1612001730290" TEXT="&#x2192; gtk_layout_put()  in gtklayout.c, line 462"/>
<node CREATED="1612001824933" ID="ID_1012337567" MODIFIED="1612001854632" TEXT="konstruiert neuen Entry und f&#xfc;gt ihn an interne Liste an">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...and &quot;realizes&quot; the widget
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#bf335c" CREATED="1612001856494" ID="ID_896331202" MODIFIED="1612001914846" TEXT="Ergebnis: es ist ein Defekt">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="broken-line"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1612019580954" ID="ID_940366698" MODIFIED="1612022026663" TEXT="mit den Korrekturen wird die Position nun korrekt gesetzt">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1612023445690" ID="ID_404822600" MODIFIED="1612024837285" TEXT="Regression: die komplexe Timeline zeichnet nicht mehr richtig">
<icon BUILTIN="button_ok"/>
<node CREATED="1612023464364" ID="ID_1135923056" MODIFIED="1612023511217" TEXT="Eingef&#xfc;hrt durch Changeset 5b336054">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      commit 5b33605469352f3403d44cb0d77ef3c224895f5b (HEAD, ichthyo/gui)
    </p>
    <p>
      Author: Ichthyostega &lt;prg@ichthyostega.de&gt;
    </p>
    <p>
      Date:&#160;&#160;&#160;Mon Jan 25 03:06:27 2021 +0100
    </p>
    <p>
      
    </p>
    <p>
      &#160;&#160;&#160;&#160;Clip: fill in minimal implementation to make the clip appear
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1612024513406" ID="ID_1145874251" MODIFIED="1612024615254" TEXT="Aua!">
<icon BUILTIN="broken-line"/>
<node CREATED="1612024549519" ID="ID_445021769" MODIFIED="1612024626079" TEXT="meine subergeni(t)ale max()-Funktion!!!!">
<icon BUILTIN="smiley-oh"/>
</node>
<node CREATED="1612024571430" ID="ID_755468027" MODIFIED="1612024603966" TEXT="liefert -&#x221e;  wenn die Quellsequenz leer ist"/>
<node CREATED="1612024557000" ID="ID_1759594738" MODIFIED="1612024569834" TEXT="in DisplayFrame::establishExtension()"/>
</node>
<node COLOR="#338800" CREATED="1612024633318" ID="ID_1173144029" MODIFIED="1612024661776" TEXT="L&#xf6;sung: unit statt int zur&#xfc;ckgeben">
<icon BUILTIN="ksmiletris"/>
<node CREATED="1612024666745" ID="ID_1549387212" MODIFIED="1612024677267" TEXT="ist das jetzt &quot;unter den Teppich&quot;....?"/>
<node CREATED="1612024678071" ID="ID_714221228" MODIFIED="1612024832503" TEXT="ja und nein. Es ist sogar korrekt so">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Aber der Punkt ist, nach der reinen Lehre sollte eine solche Funktion eine Options-Monade zur&#252;ckgeben. Aber ich wollte stattdessen den guten alten Fallback-Wert. Wenn man <i>das </i>erst mal akzeptiert, dann mu&#223; &quot;man&quot; verdammt noch einmal auch die Wertebereiche ernst nehmen
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1612001961759" ID="ID_279893834" MODIFIED="1612025196962" TEXT="Probleme und Defekte beheben">
<arrowlink COLOR="#767b93" DESTINATION="ID_1752337691" ENDARROW="Default" ENDINCLINATION="-53;-147;" ID="Arrow_ID_569461745" STARTARROW="None" STARTINCLINATION="-103;9;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1612009188967" ID="ID_734571483" MODIFIED="1612009201239" TEXT="ViewHook und CanvasHook komplett getrennt">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1612024842825" ID="ID_920380509" MODIFIED="1612024857000" TEXT="Regrsssion in der DisplayEvaluation behoben">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1612024858159" ID="ID_1194581288" MODIFIED="1612024903951" TEXT="Timings und optional&lt;Timings&gt; als Referenz">
<arrowlink COLOR="#20a47e" DESTINATION="ID_103077891" ENDARROW="Default" ENDINCLINATION="-16;56;" ID="Arrow_ID_55769950" STARTARROW="None" STARTINCLINATION="304;18;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1612026260569" ID="ID_99599203" MODIFIED="1612026319040" TEXT="Diff im kanonischen Format senden">
<arrowlink COLOR="#5cb39f" DESTINATION="ID_1932586467" ENDARROW="Default" ENDINCLINATION="-194;262;" ID="Arrow_ID_1566553463" STARTARROW="None" STARTINCLINATION="435;33;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1612019599970" ID="ID_1752337691" MODIFIED="1612019623795" TEXT="Clip bewegt sich aber erst beim n&#xe4;chsten Redraw">
<arrowlink COLOR="#62466a" DESTINATION="ID_1512224220" ENDARROW="Default" ENDINCLINATION="-74;-72;" ID="Arrow_ID_716623900" STARTARROW="None" STARTINCLINATION="48;96;"/>
<linktarget COLOR="#767b93" DESTINATION="ID_1752337691" ENDARROW="Default" ENDINCLINATION="-53;-147;" ID="Arrow_ID_569461745" SOURCE="ID_279893834" STARTARROW="None" STARTINCLINATION="-103;9;"/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1612019625163" ID="ID_191145933" MODIFIED="1612019777333" TEXT="liegt vmtl. darin, da&#xdf; wir uns grade in einem Draw()-Callback befinden">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      beim ersten Mal wird &quot;nebenbei&quot; festgestellt, da&#223; das Track-Profil (noch)nicht existiert.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1612019648505" ID="ID_1699675594" MODIFIED="1612019656044" TEXT="ist erst mal nur ein Sch&#xf6;nheitsfehler">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1612019794709" ID="ID_921471388" MODIFIED="1612019884371" TEXT="k&#xf6;nnte sich aber zu einem wirklichen Problem auswachsen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...denn selbst wenn wir das f&#252;r das erste Mal irgendwie hinbiegen, so kann das doch in jedem sp&#228;teren draw() wieder passieren
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1612019894343" ID="ID_1448053043" MODIFIED="1612019901396" TEXT="m&#xf6;gliche Workarounds...">
<node CREATED="1612019903134" ID="ID_1689432083" MODIFIED="1612020045315" TEXT="die DisplayEvaluation schon per Diff-Listener ausl&#xf6;sen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...daf&#252;r br&#228;uchte ich aber einen Diff-Listener f&#252;r alle strukturellen &#196;nderungen incl sub-Scope. Das ist nicht trivial zu implementieren, weil die sub-Scopes ja beliebig tief verschachtelt sein k&#246;nnen, und alle rekursiv delegiert werden
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1612020078974" ID="ID_25005774" MODIFIED="1612020100183" TEXT="den Canvas grunds&#xe4;tzlich nach der DisplayEvaluation nochmal invalidieren">
<icon BUILTIN="button_cancel"/>
<node CREATED="1612025039375" ID="ID_826424244" MODIFIED="1612025048929" TEXT="versucht">
<node CREATED="1612025050103" ID="ID_1320349894" MODIFIED="1612025062527" TEXT="sowohl mit dem ganzen TimelineBodyWidget"/>
<node CREATED="1612025062956" ID="ID_1000543035" MODIFIED="1612025073590" TEXT="alsauch nur mit den beiden Canvas-Widgets"/>
</node>
<node CREATED="1612025074794" ID="ID_800250683" MODIFIED="1612025088412" TEXT="zeigt keinerlei Reaktion">
<linktarget COLOR="#843f65" DESTINATION="ID_800250683" ENDARROW="Default" ENDINCLINATION="-296;33;" ID="Arrow_ID_1331047801" SOURCE="ID_445256100" STARTARROW="None" STARTINCLINATION="797;63;"/>
<icon BUILTIN="stop-sign"/>
<node CREATED="1612025095479" ID="ID_1775295616" MODIFIED="1612025105906" TEXT="der Clip bleibt wo er ist (am falschen Ort)"/>
<node CREATED="1612025106830" ID="ID_1695696156" MODIFIED="1612025160707" TEXT="auch die anderen Layout-Anpassungen erfolgen erst beim n&#xe4;chsten Trigger">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      also z.B: wenn man das TestControl schlie&#223;t, oder auch nur den Fokus an das Lumiera-Hauptfenster gibt
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1612030849154" ID="ID_242090895" MODIFIED="1612030858673" TEXT="verbleibende Probleme">
<icon BUILTIN="bell"/>
<node COLOR="#338800" CREATED="1612726745183" FOLDED="true" ID="ID_1213054592" MODIFIED="1679086226807" TEXT="Header-Ausglieich funktioniert (noch) nicht">
<icon BUILTIN="button_ok"/>
<node CREATED="1612742259238" ID="ID_607718286" MODIFIED="1612742418037" TEXT="wichtig: die desired_height verwenden (&#x2192;size-request)">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...nachdem erstmals ein size-request gesetzt wurde, hat sich die tats&#228;chliche H&#246;he des Widget noch nicht ver&#228;ndert (das wird erst mit dem nachfolgenden resize-event vollzogen). Aber der size-request spiegelt sich sofort in der desired_height wieder. Wir m&#252;ssen also die Ermittlung der &quot;aktuellen&quot; H&#246;he <i>darauf</i>&#160;aufbauen, damit die schon vorgenommenen Anpassungen nicht nochmal im Delta landen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1612742186077" ID="ID_1081995188" MODIFIED="1612742421843" TEXT="Weiterer Fehler war die Auswertungs-Reihenfolge">
<icon BUILTIN="broken-line"/>
</node>
<node CREATED="1612742199694" ID="ID_354715180" MODIFIED="1612742247324" TEXT="der 2.Pass mu&#xdf; r&#xfc;ckw&#xe4;rts aufsteigen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      damit die H&#246;hen f&#252;r die Kind-Tracks bereits gesetzt sind, wenn die Gesamth&#246;he des Parent-Track betrachtet wird
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#338800" CREATED="1612742429043" FOLDED="true" ID="ID_1739285791" MODIFIED="1674603322918" TEXT="die scroll-H&#xf6;he / Canvas-H&#xf6;he stimmt nicht">
<icon BUILTIN="button_ok"/>
<node CREATED="1612742467558" ID="ID_929888474" MODIFIED="1612742484264" TEXT="und zwar fehlt genau die zus&#xe4;tzliche H&#xf6;he der schlie&#xdf;enden Slope"/>
<node CREATED="1612742484972" ID="ID_1291566735" MODIFIED="1612742498974" TEXT="nachdem man aber das Fenster einmal resized hat, stimmt es wieder"/>
<node CREATED="1674603256346" ID="ID_1331516814" MODIFIED="1674603318681" TEXT="Problem behoben: f&#xfc;r das ZoomWindow eine exakte Layout-Berechnung implementiert">
<arrowlink DESTINATION="ID_328296925" ENDARROW="Default" ENDINCLINATION="116;0;" ID="Arrow_ID_819469158" STARTARROW="None" STARTINCLINATION="116;0;"/>
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#990000" CREATED="1612742527238" FOLDED="true" ID="ID_1543056669" MODIFIED="1674603224715" TEXT="die Header-Starts rutschen minimal nach oben">
<icon BUILTIN="button_cancel"/>
<node CREATED="1612742538724" ID="ID_1839437599" MODIFIED="1612742544871" TEXT="ein off-by-one?"/>
<node CREATED="1612742545690" ID="ID_1735908408" MODIFIED="1612742563442" TEXT="sieht so aus, als w&#xfc;rden uns pro Zeile nur wenige Pixel fehlen"/>
<node CREATED="1612742574675" ID="ID_20715943" MODIFIED="1612742616893" TEXT="d.h. der TrackBody ist minimal Gr&#xf6;&#xdf;er, als die H&#xf6;he, die wir als Delta anwenden"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1674603031791" ID="ID_328296925" LINK="#ID_1742313131" MODIFIED="1674603318681" TEXT="Nein: da war die Layout-Implementierung noch ziemlich &#x201e;daneben&#x201c;">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...was bisher nur nicht aufgefallen war, weil die Display-Evaluation nur einmal lief;<br />Nachdem ich das ZoomWindow integriert hatte, zeigten sich diverse Defekte / run-away-Effekte, die erst beoben waren, nachdem ich die Layout-Berechnung im TrackHeadWidget komplett &#252;berarbeitet und systematisch ausgestaltet hatte
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#a9b4c1" DESTINATION="ID_328296925" ENDARROW="Default" ENDINCLINATION="116;0;" ID="Arrow_ID_819469158" SOURCE="ID_1331516814" STARTARROW="None" STARTINCLINATION="116;0;"/>
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1612030881439" ID="ID_306268306" MODIFIED="1612030903673" TEXT="nach dem DisplayEvaluationPass: Zustand nicht vollst&#xe4;ndig realisiert">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1612030907643" ID="ID_607409982" MODIFIED="1612030927924" TEXT="obwohl aller Anzeigezustand korrekt gesetzt wurde"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1612030928723" ID="ID_352360314" MODIFIED="1612031057189" TEXT="erst der n&#xe4;chste draw()-Zyklus">
<icon BUILTIN="bell"/>
<node CREATED="1612030941302" ID="ID_1512224220" MODIFIED="1612031041398" TEXT="reralisieriert die zuletzt gesetzte Canvas-Postion der Clip-Widgets">
<linktarget COLOR="#62466a" DESTINATION="ID_1512224220" ENDARROW="Default" ENDINCLINATION="-74;-72;" ID="Arrow_ID_716623900" SOURCE="ID_1752337691" STARTARROW="None" STARTINCLINATION="48;96;"/>
</node>
<node CREATED="1612030955781" ID="ID_1382137559" MODIFIED="1612030970994" TEXT="realisiert die angepa&#xdf;te Canvas-Gr&#xf6;&#xdf;e"/>
<node CREATED="1612030974354" ID="ID_602452868" MODIFIED="1612030981278" TEXT="realisiert den Scroll-Overflow"/>
</node>
<node CREATED="1612031066295" ID="ID_445256100" MODIFIED="1612031108057" TEXT="Invalidieren des Widget hilft nicht">
<arrowlink COLOR="#843f65" DESTINATION="ID_800250683" ENDARROW="Default" ENDINCLINATION="-296;33;" ID="Arrow_ID_1331047801" STARTARROW="None" STARTINCLINATION="797;63;"/>
<icon BUILTIN="button_cancel"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1674603379625" ID="ID_22375243" MODIFIED="1674603406628">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Clip-Drag reagiert manchmal nicht <i>&#187;live&#171;</i>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="broken-line"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1674606870062" ID="ID_1744725566" MODIFIED="1674606880174" TEXT="#1267 sometimes failure to re-draw">
<icon BUILTIN="flag-yellow"/>
</node>
<node CREATED="1674603515247" ID="ID_145015079" MODIFIED="1674603519913" TEXT="Beobachtung...">
<node CREATED="1674603521102" ID="ID_1576327891" MODIFIED="1674603531711" TEXT="Track-Pane-Splitter nach rechts bewegen"/>
<node CREATED="1674603535772" ID="ID_1899820582" MODIFIED="1674603556532" TEXT="manchmal erfolgt dann kein Update / re-Draw beim Dragging"/>
<node CREATED="1674603557497" ID="ID_1941260000" MODIFIED="1674603679778" TEXT="die Position wird aber korrekt berechnet und gesetzt">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      nachweislich...
    </p>
    <ul>
      <li>
        die (x,y)-Koordinaten des Clip werden sinnvoll und korrekt aktualisiert
      </li>
      <li>
        der Aufruf geht durch bis auf das Gtk::Layout
      </li>
      <li>
        nach einer Invalidierung des ganzen Fensters springt der Clip pl&#246;tzlich an die neue Position
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node CREATED="1674603568776" ID="ID_1618676622" MODIFIED="1674603583681" TEXT="nach einem focus-loss / focus-gain funktioniert&apos;s wieder"/>
<node CREATED="1674603584654" ID="ID_585485863" MODIFIED="1674603597876" TEXT="auch nach einem Verschieben des Pane-Splitters nach links"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#c7346a" CREATED="1674603681741" ID="ID_900437621" MODIFIED="1674603716830" TEXT="konnte kein Merkmal identifizieren, an dem sich das Fehlverhalten festmachen l&#xe4;&#xdf;t">
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1561047296781" ID="ID_1660005887" MODIFIED="1575053313157" TEXT="Neuberechnung / Reihenfolge">
<linktarget COLOR="#d6677c" DESTINATION="ID_1660005887" ENDARROW="Default" ENDINCLINATION="130;-668;" ID="Arrow_ID_1942101483" SOURCE="ID_162610711" STARTARROW="None" STARTINCLINATION="730;24;"/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1561047320822" ID="ID_652813348" MODIFIED="1561047325927" TEXT="Grunds&#xe4;tzliches">
<node CREATED="1561047326773" ID="ID_455856045" MODIFIED="1561047353557" TEXT="wie wird die Reihenfolge der Tracks festgelegt?">
<icon BUILTIN="help"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1561047338983" ID="ID_608382986" MODIFIED="1563466559242" TEXT="wie werden &#xc4;nderungen dieser realisiert?">
<linktarget COLOR="#b05d76" DESTINATION="ID_608382986" ENDARROW="Default" ENDINCLINATION="-409;0;" ID="Arrow_ID_114040217" SOURCE="ID_1798080753" STARTARROW="None" STARTINCLINATION="215;14;"/>
<icon BUILTIN="help"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1561048744043" ID="ID_1401239177" MODIFIED="1561140347286" TEXT="Konzept kl&#xe4;ren">
<linktarget COLOR="#b13064" DESTINATION="ID_1401239177" ENDARROW="Default" ENDINCLINATION="363;61;" ID="Arrow_ID_807164253" SOURCE="ID_1143074852" STARTARROW="None" STARTINCLINATION="1263;0;"/>
<icon BUILTIN="flag-pink"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1561048792468" ID="ID_638394722" MODIFIED="1561048797689" TEXT="#1199 handle Timeline layout changes">
<icon BUILTIN="flag-yellow"/>
</node>
<node CREATED="1573411517071" ID="ID_1735372634" MODIFIED="1573411532925" TEXT="L&#xf6;sungsidee: neu bauen statt umbauen"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1563466591056" FOLDED="true" ID="ID_1728979524" MODIFIED="1573411731540" TEXT="re-Konstruktion der Struktur">
<linktarget COLOR="#774779" DESTINATION="ID_1728979524" ENDARROW="Default" ENDINCLINATION="-1429;-736;" ID="Arrow_ID_1394313218" SOURCE="ID_240517447" STARTARROW="None" STARTINCLINATION="-692;36;"/>
<linktarget COLOR="#927aa8" DESTINATION="ID_1728979524" ENDARROW="Default" ENDINCLINATION="-421;17;" ID="Arrow_ID_445844094" SOURCE="ID_737072989" STARTARROW="None" STARTINCLINATION="398;25;"/>
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1563466616693" ID="ID_316217409" MODIFIED="1563466626054" TEXT="vom root-DisplayFrame ausgehend..."/>
<node CREATED="1563466626931" ID="ID_1475248081" MODIFIED="1563466639074" TEXT="top-down neu aufbauen">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1563467297369" ID="ID_283854399" MODIFIED="1573411760423" TEXT="spezielles Problem: verschachtelte DisplayFrame-Struktur">
<arrowlink COLOR="#d73f41" DESTINATION="ID_1414960950" ENDARROW="Default" ENDINCLINATION="699;-94;" ID="Arrow_ID_1514395934" STARTARROW="None" STARTINCLINATION="236;12;"/>
</node>
<node CREATED="1575052534983" ID="ID_642649820" MODIFIED="1575052546569" TEXT="Verallgemeinerung: verschachtelte sub-Collections"/>
<node CREATED="1575052815130" ID="ID_216264810" MODIFIED="1575053021221" TEXT="Prinzip">
<icon BUILTIN="forward"/>
<node CREATED="1575052820289" ID="ID_1240730647" MODIFIED="1575052843042" TEXT="Trigger &#xbb;Struktur-&#xc4;nderung&#xab;"/>
<node CREATED="1575052859764" ID="ID_1345880697" MODIFIED="1575052895211" TEXT="L&#xf6;schungen/Hinzuf&#xfc;gungen sind schon durchgef&#xfc;hrt -- aber noch nicht &quot;realisiert&quot;"/>
<node CREATED="1575052900360" ID="ID_447463518" MODIFIED="1575052923936" TEXT="Sortier-Ordnung f&#xfc;r die Sub-Struktur bereitstellen"/>
<node CREATED="1575052925155" ID="ID_1405182366" MODIFIED="1575052948612" TEXT="Sub-Struktur atomar auseinandernehmen und neu aufbauen"/>
<node CREATED="1575052952855" ID="ID_1489113924" MODIFIED="1575053002685" TEXT="Umordnen der Teilb&#xe4;ume als Ganzes ist erforderlich"/>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1561047369284" ID="ID_488158262" MODIFIED="1561047377394" TEXT="Implementierung">
<icon BUILTIN="hourglass"/>
</node>
</node>
<node COLOR="#338800" CREATED="1563019548130" ID="ID_1803180287" MODIFIED="1679086313073" TEXT="Aufgabe: systematischen CSS-Pfad erzeugen">
<arrowlink COLOR="#419bcf" DESTINATION="ID_83481977" ENDARROW="Default" ENDINCLINATION="666;0;" ID="Arrow_ID_1386111155" STARTARROW="None" STARTINCLINATION="-787;0;"/>
<arrowlink COLOR="#8b7ea0" DESTINATION="ID_561705172" ENDARROW="Default" ENDINCLINATION="-2256;70;" ID="Arrow_ID_57895594" STARTARROW="None" STARTINCLINATION="465;29;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1563021472845" ID="ID_63684521" MODIFIED="1563021488846" TEXT="braucht konkreten Gtk::WidgetPath als Anker">
<node CREATED="1563021490328" ID="ID_1982999427" MODIFIED="1563021498980" TEXT="vom BodyCanvasWidget"/>
<node CREATED="1563021499977" ID="ID_125420561" MODIFIED="1563021519170" TEXT="...im TimelineWidget &gt; TimelineLayout"/>
</node>
<node CREATED="1563021522198" HGAP="84" ID="ID_349220035" MODIFIED="1563021584919" TEXT="erg&#xe4;nzt um virtuelle Knoten" VSHIFT="-9">
<icon BUILTIN="idea"/>
<node CREATED="1563020900138" ID="ID_1653425334" MODIFIED="1575052603899" TEXT="implementiert im UiManger / UiStyle">
<arrowlink COLOR="#3976e4" DESTINATION="ID_517868337" ENDARROW="Default" ENDINCLINATION="-1204;103;" ID="Arrow_ID_1481718697" STARTARROW="None" STARTINCLINATION="928;72;"/>
</node>
<node CREATED="1563021556105" ID="ID_629948451" MODIFIED="1563021569720" TEXT="publiziert via Avice &quot;style(trackBody)&quot;"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1480694550601" FOLDED="true" ID="ID_1306244096" MODIFIED="1679361598685" TEXT="Track-Presenter">
<linktarget COLOR="#fec680" DESTINATION="ID_1306244096" ENDARROW="Default" ENDINCLINATION="-1077;-98;" ID="Arrow_ID_951723874" SOURCE="ID_1570849604" STARTARROW="None" STARTINCLINATION="407;0;"/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1480741594101" ID="ID_1017414696" MODIFIED="1557498707226" TEXT="mit doppeltem Display-Kontext verbinden"/>
<node CREATED="1480741545196" ID="ID_1657879480" MODIFIED="1557498707226" TEXT="TrackWidget">
<node CREATED="1480741552611" ID="ID_1987203186" MODIFIED="1557498707226" TEXT="erzeugen"/>
<node COLOR="#435e98" CREATED="1480741555930" ID="ID_1869427213" MODIFIED="1678406865763">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      wie in Kopf <i>und</i>&#160;Rumpf injizieren
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#436cbd" DESTINATION="ID_600150628" ENDARROW="Default" ENDINCLINATION="-340;35;" ID="Arrow_ID_1431681301" STARTARROW="None" STARTINCLINATION="2;30;"/>
<icon BUILTIN="help"/>
<node CREATED="1540259854597" ID="ID_330440597" MODIFIED="1557498707226" TEXT="Invariante gesucht">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1540259882177" ID="ID_269340322" MODIFIED="1557498707226" TEXT="TrackPresenter braucht....">
<node CREATED="1540259899289" ID="ID_1550133488" MODIFIED="1557498707226" TEXT="einen Head-Slave"/>
<node CREATED="1540259905062" ID="ID_1804783123" MODIFIED="1557498707226" TEXT="einen Body-Slave"/>
</node>
<node CREATED="1540260041187" ID="ID_686871621" MODIFIED="1557498707226" TEXT="Grundstruktur?">
<icon BUILTIN="help"/>
<node CREATED="1540260073971" ID="ID_564056863" MODIFIED="1557498707226" TEXT="TrackPresenter hat DisplayFrame"/>
<node CREATED="1540260094236" ID="ID_439265924" MODIFIED="1557498707226" TEXT="DisplayFrame kann Sub-DisplayFrame erzeugen"/>
<node CREATED="1540260106675" ID="ID_432321502" MODIFIED="1557498707226" TEXT="aus sub-Frame kann man sub-TrackPresenter bauen"/>
</node>
</node>
<node CREATED="1563466520522" ID="ID_1798080753" MODIFIED="1563466559242" TEXT="Struktur-&#xc4;nderungen sind problematisch">
<arrowlink COLOR="#b05d76" DESTINATION="ID_608382986" ENDARROW="Default" ENDINCLINATION="-409;0;" ID="Arrow_ID_114040217" STARTARROW="None" STARTINCLINATION="215;14;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1540346398887" ID="ID_1953592630" MODIFIED="1573929021565" TEXT="DisplayFrame">
<linktarget COLOR="#2769d6" DESTINATION="ID_1953592630" ENDARROW="Default" ENDINCLINATION="-300;1096;" ID="Arrow_ID_928857904" SOURCE="ID_1389602122" STARTARROW="None" STARTINCLINATION="-1987;53;"/>
<font NAME="SansSerif" SIZE="13"/>
<icon BUILTIN="forward"/>
<node CREATED="1540346412629" ID="ID_1434445651" MODIFIED="1557498707226">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      abstrahiert den Zugang zum <i>zugeh&#246;rigen Widget</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1540346455423" ID="ID_535248075" MODIFIED="1557498707226" TEXT="schafft die invariante Struktur im Verh&#xe4;ltnis zu den Kindern">
<linktarget COLOR="#696fb6" DESTINATION="ID_535248075" ENDARROW="Default" ENDINCLINATION="696;-47;" ID="Arrow_ID_88289028" SOURCE="ID_847170359" STARTARROW="None" STARTINCLINATION="-1205;73;"/>
<node CREATED="1612645714351" ID="ID_504975313" MODIFIED="1612645720472" TEXT="Display-Frame verklammert">
<node CREATED="1612645738946" ID="ID_1516329442" MODIFIED="1612645749156" TEXT="einen Track-Head incl nested sub-Heads"/>
<node CREATED="1612645752193" ID="ID_863983538" MODIFIED="1612645762738" TEXT="einen Track-Body incl nested sub-Tracks"/>
</node>
<node CREATED="1612645786635" ID="ID_600150628" MODIFIED="1612645961414" TEXT="Kind-Display-Frame injiziert">
<linktarget COLOR="#436cbd" DESTINATION="ID_600150628" ENDARROW="Default" ENDINCLINATION="-340;35;" ID="Arrow_ID_1431681301" SOURCE="ID_1869427213" STARTARROW="None" STARTINCLINATION="2;30;"/>
<node CREATED="1612645828669" ID="ID_117377953" MODIFIED="1612645878450" TEXT="neuen sub-Track-Head am Ende der verschachtelten Liste"/>
<node CREATED="1612645847854" ID="ID_661575710" MODIFIED="1612645874284" TEXT="neuen sub-Track-Body an die Kinder des Track-Body eingeh&#xe4;ngt"/>
</node>
</node>
<node CREATED="1540505441706" HGAP="28" ID="ID_1492670388" MODIFIED="1563466899646" TEXT="Lebenszyklus" VSHIFT="20">
<linktarget COLOR="#ac8396" DESTINATION="ID_1492670388" ENDARROW="Default" ENDINCLINATION="-473;37;" ID="Arrow_ID_1838431568" SOURCE="ID_1349567495" STARTARROW="None" STARTINCLINATION="-428;36;"/>
<node CREATED="1540505464975" ID="ID_195276443" MODIFIED="1557498707226" TEXT="DisplayFrame (als Member) an TrackPresenter gebunden"/>
<node CREATED="1540505481022" ID="ID_1566437478" MODIFIED="1557498707226" TEXT="konkrete Widgets leben im DisplayFrame"/>
<node CREATED="1540506987900" ID="ID_1173067540" MODIFIED="1557498707226">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      sub-Frame wird f&#252;r <i>unsere</i>&#160;Kinder erzeugt
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1540507009225" ID="ID_104172694" MODIFIED="1557498707227" TEXT="Kinder werden vor Members zerst&#xf6;rt"/>
<node CREATED="1540507040165" ID="ID_1123333647" MODIFIED="1557498707227">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <u>Fazit</u>: DisplayFrame kann sich auf Parent verlassen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1540511179218" ID="ID_1592328868" MODIFIED="1678406429761" TEXT="Problem: Ankerpunkt">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1540511250489" ID="ID_49278916" MODIFIED="1540511273407" TEXT="wie h&#xe4;ngt man die ganze Struktur auf?"/>
<node CREATED="1584888287304" FOLDED="true" ID="ID_81420296" MODIFIED="1584888307013" TEXT="in Konstruktions-Reihenfolge verwoben">
<icon BUILTIN="button_cancel"/>
<node CREATED="1540511274366" ID="ID_1134388060" MODIFIED="1540511281241" TEXT="L&#xf6;sungsans&#xe4;tze">
<node CREATED="1540511304602" ID="ID_814037364" MODIFIED="1576282358074" TEXT="halb konstruierter Frame ohne Widgets">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <ul>
      <li>
        die Parent/Anker-Widgets werden auf ein Interface reduziert, z.B. Gtk::Container
      </li>
      <li>
        man reicht einen halbfertigen Frame rein, in dem bereits die Anker-Widgets gesetzt sind
      </li>
      <li>
        dann ruft man eine Konstruktor-Funktion auf, die die eigentlichen Widgets erstellt und verdrahtet
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="full-1"/>
</node>
<node CREATED="1540511389686" ID="ID_1017315025" MODIFIED="1576282358074" TEXT="Anker-Widgets explizit &#xfc;bergeben">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <ul>
      <li>
        die Anker-Widgets kommen per Ref auf Interface
      </li>
      <li>
        sie werden explizit an den ctor des Controllers &#252;bergeben
      </li>
      <li>
        dieser verwendet die Referenzen, um in einem Streich den DisplayFrame incl. eigentlicher Widgets zu erzeugen
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="full-2"/>
</node>
<node CREATED="1540511282493" ID="ID_1902168929" MODIFIED="1576282358073" TEXT="Parent-Frame hat virtuelle Methoden">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <ul>
      <li>
        der ctor des Controllers bekommt eine Ref. auf den Parent-Frame
      </li>
      <li>
        dieser bietet eine virtuelle Methode, mit der sich die Widgets installieren lassen
      </li>
      <li>
        wenn der Controller den DisplayFrame erzeugt, werden dort unmittelbar die Widgets konstruiert
      </li>
      <li>
        sodann rufen wir die builder-Funktion auf, um sie im Parent-Kontext zu verankern
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="full-3"/>
<node CREATED="1540511879965" ID="ID_1507237353" MODIFIED="1540511884826" TEXT="Varianten denkbar">
<node CREATED="1540511887116" ID="ID_467242392" MODIFIED="1576282358073" TEXT="nicht-virtuelle Methode">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...aber die gesamte Verankerungs-Aktion l&#228;&#223;t sich rein auf Widget-Interface-Ebene machen.
    </p>
    <p>
      D.h. wir rufen den parent-Frame, aber die Implementierung der Methode greift nicht direkt
    </p>
    <p>
      auf die Widgets im Frame zu, sondern delegiert an eine Hilfsfunktion....
    </p>
    <p>
      STOP. Damit ist die virtuelle Methode nur verschoben
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1540512410629" ID="ID_1212514016" MODIFIED="1576282358072" TEXT="generisch">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      der ctor des DisplayFrame nimmt einen generischen Typ (Template),
    </p>
    <p>
      von dem nur erwartet wird, da&#223; er eine &quot;Verankerungs&quot;-Funktion bietet
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1540512486974" ID="ID_709169542" MODIFIED="1576282358072" TEXT="Funktor">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      der ctor des DisplayFrame bekommt einen Funktor oder Lambda,
    </p>
    <p>
      welchen er aufruft, um seine neu erstellten Widgets zu verankern
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#63bcba" DESTINATION="ID_709169542" ENDARROW="Default" ENDINCLINATION="648;-124;" ID="Arrow_ID_1775236750" SOURCE="ID_1596055753" STARTARROW="None" STARTINCLINATION="661;33;"/>
<icon BUILTIN="forward"/>
</node>
</node>
<node CREATED="1540588158613" ID="ID_725383313" MODIFIED="1540588172897" TEXT="Funktor ist...">
<node CREATED="1540588173682" ID="ID_1607525948" MODIFIED="1540588180650" TEXT="entweder ein virtueller dispatch"/>
<node CREATED="1540588181550" ID="ID_1634888629" MODIFIED="1540951684741" TEXT="oder de-facto generisch">
<linktarget COLOR="#14409c" DESTINATION="ID_1634888629" ENDARROW="Default" ENDINCLINATION="-255;27;" ID="Arrow_ID_797597310" SOURCE="ID_417702154" STARTARROW="None" STARTINCLINATION="224;-18;"/>
</node>
</node>
</node>
</node>
<node CREATED="1540512596221" ID="ID_417702154" MODIFIED="1540588240683" TEXT="neige der 3. L&#xf6;sung zu">
<arrowlink COLOR="#14409c" DESTINATION="ID_1634888629" ENDARROW="Default" ENDINCLINATION="-255;27;" ID="Arrow_ID_797597310" STARTARROW="None" STARTINCLINATION="224;-18;"/>
</node>
<node COLOR="#731e43" CREATED="1584888334461" HGAP="6" ID="ID_1191403237" MODIFIED="1584888393658" TEXT="trotzdem komplex und unvollst&#xe4;ndig" VSHIFT="28">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="stop-sign"/>
<node CREATED="1584888403457" ID="ID_1500365619" MODIFIED="1584888425339" TEXT="Aufruf-Verfugung schwer verst&#xe4;ndlich">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      da weit &#252;ber den Code verstreut
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1584888427300" ID="ID_1626398524" MODIFIED="1584888438510" TEXT="l&#xf6;st nicht das Problem mit dem re-Konstruieren"/>
<node CREATED="1584888442705" ID="ID_1729804708" MODIFIED="1584888451663" TEXT="unterst&#xfc;tzt keine nachtr&#xe4;glichen Anpassungen"/>
<node CREATED="1584888452778" ID="ID_384525360" MODIFIED="1584888561167" TEXT="kann sich nicht aus der Anzeige ausklinken">
<arrowlink COLOR="#775ae8" DESTINATION="ID_1663593154" ENDARROW="Default" ENDINCLINATION="84;-81;" ID="Arrow_ID_348205317" STARTARROW="None" STARTINCLINATION="-297;47;"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1584888309716" ID="ID_236695014" MODIFIED="1678406412732" TEXT="explizit modelliert (CanvasHook)">
<icon BUILTIN="forward"/>
<node CREATED="1584888472583" ID="ID_1663593154" MODIFIED="1584888561167" TEXT="Idee: smart-Handle">
<linktarget COLOR="#775ae8" DESTINATION="ID_1663593154" ENDARROW="Default" ENDINCLINATION="84;-81;" ID="Arrow_ID_348205317" SOURCE="ID_384525360" STARTARROW="None" STARTINCLINATION="-297;47;"/>
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1584888672307" ID="ID_213768440" MODIFIED="1584888703767" TEXT="brauche zus&#xe4;tzlich lokalen Offset">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1584888686257" ID="ID_380050520" MODIFIED="1666919335032" TEXT="brauche zus&#xe4;tzlich &#xdc;bersetzung Time -&gt; pixel">
<linktarget COLOR="#354ce1" DESTINATION="ID_380050520" ENDARROW="Default" ENDINCLINATION="-2737;0;" ID="Arrow_ID_459309015" SOURCE="ID_1764561185" STARTARROW="None" STARTINCLINATION="-907;39;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1584889060615" ID="ID_730955223" MODIFIED="1584932567086" TEXT="mu&#xdf; Design des ViewHook ausdifferenzieren">
<arrowlink COLOR="#47cdcd" DESTINATION="ID_1949130658" ENDARROW="Default" ENDINCLINATION="-1150;77;" ID="Arrow_ID_662295339" STARTARROW="None" STARTINCLINATION="877;53;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1584932570334" ID="ID_626245969" MODIFIED="1584888307348" TEXT="Aufruf an den DisplayManager weiterleiten">
<arrowlink COLOR="#6a9ab7" DESTINATION="ID_489715422" ENDARROW="Default" ENDINCLINATION="-479;1585;" ID="Arrow_ID_994014904" STARTARROW="None" STARTINCLINATION="851;54;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1584888588670" ID="ID_578774732" MODIFIED="1584888657654" TEXT="Ausgebaut in ein Framework (ViewHook / ViewHooked)">
<arrowlink COLOR="#3998d4" DESTINATION="ID_27191288" ENDARROW="Default" ENDINCLINATION="160;-7;" ID="Arrow_ID_998626173" STARTARROW="None" STARTINCLINATION="5;17;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node CREATED="1569711798770" ID="ID_27191288" MODIFIED="1584888645436">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      erm&#246;glicht (abstrahierten) Zugang zum Canvas &#252;ber einen <b>ViewHook</b>
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#5f74b7" DESTINATION="ID_1964864197" ENDARROW="Default" ENDINCLINATION="-1024;0;" ID="Arrow_ID_465735263" STARTARROW="None" STARTINCLINATION="-717;0;"/>
<linktarget COLOR="#3998d4" DESTINATION="ID_27191288" ENDARROW="Default" ENDINCLINATION="160;-7;" ID="Arrow_ID_998626173" SOURCE="ID_578774732" STARTARROW="None" STARTINCLINATION="5;17;"/>
<node COLOR="#435e98" CREATED="1573315138011" FOLDED="true" ID="ID_1957325688" MODIFIED="1576876407022" TEXT="brauchen wir hier eine Erweiterung auf mehrere Typen...?">
<arrowlink COLOR="#684be4" DESTINATION="ID_1458279581" ENDARROW="Default" ENDINCLINATION="-1681;0;" ID="Arrow_ID_1672277618" STARTARROW="None" STARTINCLINATION="788;-76;"/>
<icon BUILTIN="help"/>
<node CREATED="1575652924086" ID="ID_996829512" MODIFIED="1575653116780" TEXT="Antwort: im Prinzip ja">
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1575652931295" ID="ID_1649360599" MODIFIED="1576282358071" TEXT="aber ein voller double-dispatch-Mechanismus ist nicht durchf&#xfc;hrbar">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      denn er erzwingt entweder....
    </p>
    <ul>
      <li>
        die relevante Implementierung in einm einzigen Objekt zu konzentrieren -- was dann den double-dispatch &#252;berfl&#252;ssig macht, denn dann kann man direkt die bekannte andere Methode aufrufen
      </li>
      <li>
        oder, wenn man die verschiedenen Belange auf getrennte Objekte verteilt, m&#252;ssen sich diese gegenseitig erreichen k&#246;nnen, und die hierf&#252;r notwendigen R&#252;ckreferenzen untergraben die Trennung
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="stop-sign"/>
</node>
<node CREATED="1575653121588" ID="ID_46973905" MODIFIED="1575653151603" TEXT="also bleibt nur, die Typisierung in den Funktions-Signaturen explizit auszudr&#xfc;cken"/>
<node CREATED="1576876291037" ID="ID_114617089" MODIFIED="1576876404029" TEXT="dieses Problem versuchen wir, &quot;pragmatisch auszusitzen&quot;">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Streng genommen w&#252;rden wir in der Tat einen generischen Quer-Zugriffsmechanismus brauchen.
    </p>
    <p>
      Allerdings ist dieser entweder nicht implementierbar, oder, wenn implementierbar, dann auch redundant.
    </p>
    <p>
      Und zudem kristallisiert sich bereits heraus, da&#223; wir es nicht mit einem &quot;Universum&quot; generischer Typen zu tun bekommen, sondern mit einer kleinen Auswahl, f&#252;r die wir halt dann die Quer-Verbindungen direkt auscoden und gut is...
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#338800" CREATED="1575065263201" FOLDED="true" ID="ID_1640997956" MODIFIED="1576876415142" TEXT="zu kl&#xe4;ren: Zugang zu diesem ViewHook">
<icon BUILTIN="button_ok"/>
<node CREATED="1575653188938" ID="ID_619809248" MODIFIED="1575653206332" TEXT="es l&#xe4;uft darauf hinaus, den Zugang in den DisplayFrames zusammenzufassen"/>
<node CREATED="1575653207328" ID="ID_1942901156" MODIFIED="1576876278735" TEXT="diese brauchen daher eine Referenz auf einen &quot;irgendwo vorhandenen&quot; Timeline-ViewHook"/>
<node COLOR="#338800" CREATED="1576876251659" ID="ID_1249561924" MODIFIED="1576876267532" TEXT="und tats&#xe4;chlich bekommen sie diesen per verketteter Initialisierung">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node CREATED="1563467223350" ID="ID_16819001" MODIFIED="1612645643066" TEXT="Problem: neu-Anordnung">
<node CREATED="1563467236241" ID="ID_711529393" MODIFIED="1563467248187" TEXT="wenn sich die Reihenfolge der Spuren &#xe4;ndert"/>
<node CREATED="1563467263669" ID="ID_1535368629" MODIFIED="1563467269910" TEXT="wenn eine Spur wegf&#xe4;llt"/>
<node CREATED="1563467279931" ID="ID_563915021" MODIFIED="1563467289047" TEXT="...dann m&#xfc;ssen">
<node CREATED="1563467290138" ID="ID_568668070" MODIFIED="1563467296500" TEXT="bestehende Verankerungen beseitigt werden"/>
<node CREATED="1563467297369" ID="ID_737072989" MODIFIED="1575053380683" TEXT="alle Verankerungen neu re-Konstruiert werden">
<arrowlink COLOR="#927aa8" DESTINATION="ID_1728979524" ENDARROW="Default" ENDINCLINATION="-421;17;" ID="Arrow_ID_445844094" STARTARROW="None" STARTINCLINATION="398;25;"/>
<arrowlink COLOR="#d73f41" DESTINATION="ID_1414960950" ENDARROW="Default" ENDINCLINATION="203;-36;" ID="Arrow_ID_1023645457" STARTARROW="None" STARTINCLINATION="2;57;"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1563467398036" FOLDED="true" ID="ID_828698459" MODIFIED="1679360246949" TEXT="Implementierung">
<icon BUILTIN="hourglass"/>
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1563467405665" ID="ID_1989047133" MODIFIED="1575580703174" TEXT="Ausdehnung berechnen">
<arrowlink COLOR="#5f57ba" DESTINATION="ID_1448105245" ENDARROW="Default" ENDINCLINATION="-1587;-35;" ID="Arrow_ID_532403594" STARTARROW="None" STARTINCLINATION="1293;134;"/>
<linktarget COLOR="#464cb7" DESTINATION="ID_1989047133" ENDARROW="Default" ENDINCLINATION="-742;0;" ID="Arrow_ID_1408255827" SOURCE="ID_1456350700" STARTARROW="None" STARTINCLINATION="440;27;"/>
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1582931496462" ID="ID_1920766923" MODIFIED="1582931599326" TEXT="Ausdehnung der Tracks Header/Body koordinieren">
<linktarget COLOR="#fe5b57" DESTINATION="ID_1920766923" ENDARROW="Default" ENDINCLINATION="595;0;" ID="Arrow_ID_1362710635" SOURCE="ID_1623890878" STARTARROW="Default" STARTINCLINATION="529;0;"/>
<icon BUILTIN="flag-pink"/>
</node>
</node>
<node COLOR="#338800" CREATED="1563467415158" ID="ID_29134005" MODIFIED="1563467420585" TEXT="Profil generieren">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1563467424456" ID="ID_1723744174" MODIFIED="1563467445803" TEXT="collapsed/hidden ber&#xfc;cksichtigen">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1674160114980" ID="ID_852402445" MODIFIED="1674160219744" TEXT="1/2023 noch nicht ganz klar wie">
<arrowlink COLOR="#c65e7c" DESTINATION="ID_1440303749" ENDARROW="Default" ENDINCLINATION="-1806;-99;" ID="Arrow_ID_537995229" STARTARROW="None" STARTINCLINATION="-421;38;"/>
</node>
<node CREATED="1674160134114" ID="ID_141550042" MODIFIED="1674160141660" TEXT="vermutich bereits beim Aufbau des Profils"/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1563467451739" ID="ID_1414960950" MODIFIED="1575053380683" TEXT="(re)Konstruieren">
<linktarget COLOR="#d73f41" DESTINATION="ID_1414960950" ENDARROW="Default" ENDINCLINATION="699;-94;" ID="Arrow_ID_1514395934" SOURCE="ID_283854399" STARTARROW="None" STARTINCLINATION="236;12;"/>
<linktarget COLOR="#d73f41" DESTINATION="ID_1414960950" ENDARROW="Default" ENDINCLINATION="203;-36;" ID="Arrow_ID_1023645457" SOURCE="ID_737072989" STARTARROW="None" STARTINCLINATION="2;57;"/>
<icon BUILTIN="flag-pink"/>
<node CREATED="1563467519263" ID="ID_497587608" MODIFIED="1576282358071" TEXT="anders als der initiale Aufbau">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      beim initialen Aufbau sitzen wir in einem ctor-Aufruf,
    </p>
    <p>
      und zwar der ctor-TrackPresenter
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1563467588351" ID="ID_1224899798" MODIFIED="1563467595841" TEXT="Unterscheidung root/nested">
<node CREATED="1563467597287" ID="ID_1571128409" MODIFIED="1576282358070" TEXT="beim ctor-Aufruf implizit/automatisch">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      insofern der ctor f&#252;r den root-Track (fork-root) vom TimelineController aufgerufen wird,
    </p>
    <p>
      alle anderen verschachtelten ctors aber von den TrackPresentern
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1563467604327" ID="ID_175300386" MODIFIED="1563467621867" TEXT="nur sub-Tracks werden re-Konstruiert">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1563467848565" ID="ID_1150018491" MODIFIED="1576282358069" TEXT="re-Konstruieren m&#xfc;ssen letztlich die TrackPresenter machen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      weil <i>nur sie </i>durch ihren Display-Frame die beiden Kind-Widgets kennen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1563467916708" ID="ID_568904515" MODIFIED="1576282358069" TEXT="kl&#xe4;ren: Kind-Widget managen/entfernen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      inwiefern gibt es Beschr&#228;nkungen, wenn man ein Kind-Widget von einem Container entfernt?
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1576710302057" ID="ID_1083674973" MODIFIED="1576710309540" TEXT="#1198 clarify removing of widgets in timeline">
<icon BUILTIN="flag-yellow"/>
</node>
<node CREATED="1563468083453" ID="ID_988508640" MODIFIED="1576282358068" TEXT="Interface Gtk::Container ist nur f&#xfc;r single-Child">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      &quot;This interface is used for all single item holding containers. Multi-item containers provide their own unique interface as their items are generally more complex. The methods of the derived classes should be prefered over these...&quot;
    </p>
  </body>
</html></richcontent>
<node CREATED="1563468845867" ID="ID_1400714108" MODIFIED="1563468859195" TEXT="aber: Gtk::Container hat iterative Methoden">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1563468094444" ID="ID_638941576" MODIFIED="1563468103423" TEXT="multi-Widget Container haben spezielle Methoden">
<node CREATED="1563468293265" ID="ID_1078909584" MODIFIED="1563468329357" TEXT="bei uns: PatchbayWidget::installFork (TrackHeadWidget&amp; rootTrackHead)">
<icon BUILTIN="info"/>
</node>
<node CREATED="1563468335579" ID="ID_1427740391" MODIFIED="1563468353099" TEXT="PatchbayWidget ist ein Gtk::Viewport (a scrollable pane)"/>
<node CREATED="1563468377867" ID="ID_1246261771" MODIFIED="1575131340955" TEXT="TrackHeadWidget is a Gtk::Grid">
<linktarget COLOR="#7bd7ba" DESTINATION="ID_1246261771" ENDARROW="Default" ENDINCLINATION="572;-24;" ID="Arrow_ID_1664699016" SOURCE="ID_1911416938" STARTARROW="None" STARTINCLINATION="860;0;"/>
<icon BUILTIN="forward"/>
<node CREATED="1575131300019" ID="ID_1668819881" MODIFIED="1576964962650" TEXT="Gtk::Container::remove(Widget&amp;)"/>
<node CREATED="1575131316505" ID="ID_364347304" MODIFIED="1575131328851" TEXT="Gtk::Grid::attach(widget, pos...)"/>
</node>
<node CREATED="1563468411262" ID="ID_738452608" MODIFIED="1563468413323" TEXT="TrackHeadWidget::injectSubFork (TrackHeadWidget&amp; subForkHead)"/>
</node>
<node CREATED="1576966531922" ID="ID_88110124" LINK="https://issues.lumiera.org/ticket/1198#comment:5" MODIFIED="1576966563610" TEXT="siehe Detail-Kommentar im Ticket">
<icon BUILTIN="info"/>
<node CREATED="1576966573366" ID="ID_552334044" MODIFIED="1576966591254" TEXT="Gtk::Container managed den ref-count des C-Objekts"/>
<node CREATED="1576966592939" ID="ID_495877115" MODIFIED="1576966611564" TEXT="Objekte, die zerst&#xf6;rt werden, werden automatisch aus dem Container entfernt"/>
<node CREATED="1576966612744" ID="ID_1380812898" MODIFIED="1576966693515" TEXT="der Gtkmm-Wrapper Gtk::Widget h&#xe4;lt einen ref-count">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...und h&#228;lt damit sein unterliegendes C-Objekt am Leben
    </p>
    <p>
      (genauer gesagt, die Basisklasse Gtk::Object macht das)
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1573412013164" FOLDED="true" ID="ID_1135588379" MODIFIED="1679359993215" TEXT="Analyse der Situation">
<icon BUILTIN="info"/>
<node CREATED="1573412027270" ID="ID_333121233" MODIFIED="1573412030884" TEXT="Fall-1">
<node CREATED="1573412032669" ID="ID_1928241145" MODIFIED="1573412064854" TEXT="neuer Track">
<node CREATED="1573424510571" ID="ID_1970637049" MODIFIED="1573424545467" TEXT="Header-Widget wird angeh&#xe4;ngt, mithin ggfs an der falschen Stelle"/>
<node CREATED="1573424546799" ID="ID_1600792539" MODIFIED="1573424566536" TEXT="Root-Body wird ebenfalls angeh&#xe4;ngt, und damit ebenso ggfs an der falschen Stelle"/>
</node>
</node>
<node CREATED="1573412072736" ID="ID_1432670869" MODIFIED="1573412077919" TEXT="Fall-2">
<node CREATED="1573412078991" ID="ID_1620957397" MODIFIED="1573412086433" TEXT="Track f&#xe4;llt weg">
<node CREATED="1573424479816" ID="ID_1733070752" MODIFIED="1573424490530" TEXT="Header-Widget wird obsolet und mu&#xdf; weg"/>
<node CREATED="1573424491747" ID="ID_735914292" MODIFIED="1573744342118" TEXT="Track-Body ist schon gel&#xf6;scht -&gt; dangling Pointer in der Kinder-Collection des Vaters"/>
</node>
</node>
<node CREATED="1573412088422" ID="ID_1809192896" MODIFIED="1573412091217" TEXT="Fall-3">
<node CREATED="1573412092916" ID="ID_5252596" MODIFIED="1573412100336" TEXT="Umordnung (auch indirekt)"/>
<node CREATED="1573412128366" ID="ID_518244916" MODIFIED="1573412148434" TEXT="es besteht eine Verkn&#xfc;pfung...">
<node CREATED="1573412149566" ID="ID_920888107" MODIFIED="1573412159121" TEXT="die nicht mehr valide ist"/>
<node CREATED="1573412162340" ID="ID_1639454562" MODIFIED="1573412170495" TEXT="die aber als Solche garantiert bestehen bleibt">
<node CREATED="1573742980812" ID="ID_701589566" MODIFIED="1573743018643" TEXT="sofern wir Fall-1|2 ausschlie&#xdf;en k&#xf6;nnen">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1573742994843" ID="ID_427824389" MODIFIED="1573743021381" TEXT="Trennung der F&#xe4;lle ist essentiell">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node CREATED="1573424578050" ID="ID_1381344686" MODIFIED="1573424594636" TEXT="alle Elemente m&#xfc;&#xdf;ten entfernt und erneut angeh&#xe4;ngt werden">
<node CREATED="1575051390743" ID="ID_734317772" MODIFIED="1575052370826">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      es l&#228;uft auf eine <b>Sortier-Operation</b>&#160;hinaus
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#a9b4c1" DESTINATION="ID_734317772" ENDARROW="Default" ENDINCLINATION="13;48;" ID="Arrow_ID_1113611998" SOURCE="ID_936490073" STARTARROW="None" STARTINCLINATION="86;7;"/>
<icon BUILTIN="forward"/>
</node>
</node>
</node>
</node>
<node CREATED="1573424733614" FOLDED="true" ID="ID_1581320485" MODIFIED="1575580929792" TEXT="Idee: Reparatur-Durchgang">
<icon BUILTIN="idea"/>
<node CREATED="1573424745836" ID="ID_1099334229" MODIFIED="1573424761824" TEXT="Aufruf mit dem Element, welches als n&#xe4;chstes kommen m&#xfc;&#xdf;te"/>
<node CREATED="1573424763026" ID="ID_187176618" MODIFIED="1573424866527" TEXT="sobald etwas anderes als dieses Element ansteht...">
<node CREATED="1573424867525" ID="ID_184724441" MODIFIED="1573424867525" TEXT="wird der gesamte Rest weggeworfen"/>
<node CREATED="1573424869699" ID="ID_1553301411" MODIFIED="1573424884797" TEXT="oder zumindest solange weggeworfen, bis es wieder pa&#xdf;t"/>
<node CREATED="1575051446848" ID="ID_936490073" MODIFIED="1575052370825" TEXT="Stop. Das ist ein &#xbb;bubble sort&#xab;">
<arrowlink DESTINATION="ID_734317772" ENDARROW="Default" ENDINCLINATION="13;48;" ID="Arrow_ID_1113611998" STARTARROW="None" STARTINCLINATION="86;7;"/>
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node CREATED="1573424888306" ID="ID_1069769655" MODIFIED="1573424917681" TEXT="Problem: verf&#xfc;gbares API f&#xfc;r Kind-Widgets im Gtk::Container">
<node CREATED="1573425004589" ID="ID_182890491" MODIFIED="1573425028633" TEXT="man m&#xfc;&#xdf;te sich mit get_children die Liste aller Widget* geben lassen"/>
<node CREATED="1573425320822" ID="ID_697283629" MODIFIED="1573425373163" TEXT="Umschichten ist nicht so ohne Weiteres m&#xf6;glich"/>
</node>
<node COLOR="#435e98" CREATED="1573425072103" ID="ID_263082856" MODIFIED="1573425312415" TEXT="Frage: wer verwendet eigentlich die TrackBody-Objekte?">
<node CREATED="1573425179133" ID="ID_1985243477" MODIFIED="1573425187274" TEXT="subTracks_ ist private"/>
<node CREATED="1573425238895" ID="ID_1011487695" MODIFIED="1573425238895" TEXT="TrackBody::calcHeight()"/>
<node CREATED="1573425269964" ID="ID_719978190" MODIFIED="1573425269964" TEXT="TrackBody::establishTrackSpace (TrackProfile&amp; profile)"/>
<node COLOR="#435e98" CREATED="1573425287886" ID="ID_1908598157" MODIFIED="1573425307155" TEXT="Fazit: nur iterativer Zugriff (und nil-Check)">
<icon BUILTIN="forward"/>
</node>
</node>
<node CREATED="1573425401827" ID="ID_1879825231" MODIFIED="1573425405599" TEXT="Zwischenstand">
<node CREATED="1573425406826" ID="ID_1838031996" MODIFIED="1573425425244" TEXT="TrackBody ist gar nicht so schlimm">
<node CREATED="1573425438222" ID="ID_224907016" MODIFIED="1573425443506" TEXT="die Objekte bleiben bestehen"/>
<node CREATED="1573425444286" ID="ID_714582673" MODIFIED="1573425466462" TEXT="f&#xfc;ge sie lediglich in der richtigen Reihenfolge wieder ein"/>
<node CREATED="1573425467578" ID="ID_855524059" MODIFIED="1573425476468" TEXT="gefolgt von einem neuen evaluation pass"/>
<node CREATED="1573425575308" ID="ID_1100592812" MODIFIED="1573425584283" TEXT="man m&#xfc;&#xdf;te ggfs einige Werte zur&#xfc;cksetzen">
<node CREATED="1573425585442" ID="ID_683130698" MODIFIED="1575052398117" TEXT="startLine_ = 0"/>
</node>
</node>
<node CREATED="1573425775929" ID="ID_385747502" MODIFIED="1573425793245" TEXT="dagegen Gtk::Grid ist aufwendiger">
<node CREATED="1573425794934" ID="ID_1806364197" MODIFIED="1573425808512" TEXT="man kann zwar indirekt die Kind-Elemente enumerieren"/>
<node CREATED="1573425814356" ID="ID_684750058" MODIFIED="1575133305653" TEXT="und man kann per Container::remove() ein Widget entfernen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      und m&#252;&#223;te es danach explizit manuell l&#246;schen!!
    </p>
    <p>
      d.h. es wird dann nicht mehr gemanaged (was in diesem Fall hilfreich ist)
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1573425898969" ID="ID_278841451" MODIFIED="1573425910100" TEXT="aber unser Aufbau ist ehr komplex">
<node CREATED="1573425919742" ID="ID_914009908" MODIFIED="1575052422466" TEXT="d.h. wir m&#xfc;&#xdf;ten Sub-Grids und sonstigen Content erhalten"/>
<node CREATED="1575052437324" ID="ID_719843409" MODIFIED="1575052451208" TEXT="und insgesamt als Widget an der richtigen Stelle wieder einf&#xfc;gen">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1575063986126" FOLDED="true" ID="ID_237283777" MODIFIED="1582930967369" TEXT="konkretisiert: als ViewHook-Mechanismus">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...das ist zun&#228;chst ein Versuch, ein m&#252;hsam errungenes Design zu verifizieren...
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#261eb7" DESTINATION="ID_237283777" ENDARROW="Default" ENDINCLINATION="551;-700;" ID="Arrow_ID_119083900" SOURCE="ID_1018000905" STARTARROW="None" STARTINCLINATION="-962;0;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1575064318098" ID="ID_293965279" MODIFIED="1575064328652" TEXT="Fall Track-Head">
<node CREATED="1575064338701" ID="ID_415507995" MODIFIED="1575064375893" TEXT="DisplayFrame hat einen ViewHook in das korrespondierende TrackHeadWidget"/>
<node CREATED="1575064401006" ID="ID_1441033648" MODIFIED="1575064462745" TEXT="nach Struktur-&#xc4;nderung dekoriert der TrackPresenter einen Subtrack-Iterator"/>
<node CREATED="1575064464430" ID="ID_312804063" MODIFIED="1575064465801" TEXT="mit Zugriff auf alle diese Track-Head ViewHooks"/>
<node CREATED="1575064550915" ID="ID_240478975" MODIFIED="1575064563346" TEXT="und gibt ihn an welches ViewHook?">
<icon BUILTIN="help"/>
<node COLOR="#338800" CREATED="1575064564486" ID="ID_1865914633" MODIFIED="1575132210050" TEXT="kl&#xe4;ren">
<linktarget COLOR="#4880c1" DESTINATION="ID_1865914633" ENDARROW="Default" ENDINCLINATION="259;77;" ID="Arrow_ID_1022537409" SOURCE="ID_1502992527" STARTARROW="None" STARTINCLINATION="206;43;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1575130722129" ID="ID_1376658524" MODIFIED="1575130746502" TEXT="dieses mu&#xdf; konkret f&#xfc;r die zu bearbeitenden ViewHooks zust&#xe4;ndig sein"/>
<node CREATED="1575130747730" ID="ID_782210944" MODIFIED="1575130767965">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ViewHooks k&#246;nnen <i>nach Hause telefonieren</i>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1575130800635" ID="ID_1683855693" MODIFIED="1575130824075" TEXT="hier also das (sub)TrackHeadWidget, welches die umzuordnenden Zeilen enth&#xe4;lt"/>
</node>
<node CREATED="1575130831063" ID="ID_708770207" MODIFIED="1575130894498" TEXT="dieses kann irgend einem der involvierten ViewHooks entnommen werden">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1575064581374" ID="ID_1196434993" MODIFIED="1575064594600" TEXT="dieser ViewHook ist in der Tat ein TrackHeadWidget"/>
<node CREATED="1575064653804" ID="ID_448564345" MODIFIED="1575064688635" TEXT="und es pullt den Iterator und ruft f&#xfc;r jedes Element (ViewHooked&amp;) auf..."/>
<node CREATED="1575064679128" ID="ID_1963787462" MODIFIED="1575064684603" TEXT="reHook()">
<node CREATED="1575064711612" ID="ID_1603635315" MODIFIED="1575064721990" TEXT="sucht die passende Grid-Zeile">
<node COLOR="#338800" CREATED="1575064723058" ID="ID_1911416938" MODIFIED="1575131358651" TEXT="wie geht das?">
<arrowlink COLOR="#7bd7ba" DESTINATION="ID_1246261771" ENDARROW="Default" ENDINCLINATION="572;-24;" ID="Arrow_ID_1664699016" STARTARROW="None" STARTINCLINATION="860;0;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1575131369810" HGAP="26" ID="ID_1240564721" MODIFIED="1575131382246" TEXT="gar nicht notwendig" VSHIFT="14">
<icon BUILTIN="idea"/>
<node CREATED="1575131388840" ID="ID_1983492601" MODIFIED="1576964804007" TEXT="man mu&#xdf; nur das Widget herausnehmen...."/>
<node CREATED="1575131395663" ID="ID_335595760" MODIFIED="1575131407476" TEXT="und den TrackHeadWidget::childCnt_ sauber mitz&#xe4;hlen"/>
<node CREATED="1576964721751" ID="ID_1854636458" MODIFIED="1576964809066" TEXT="jede Grid-Zelle ist wie eine Gtk::Box">
<icon BUILTIN="idea"/>
<node CREATED="1576964730941" ID="ID_1794365436" MODIFIED="1576964744279" TEXT="d.h. da k&#xf6;nnten mehrere Widgets drinnen liegen"/>
<node CREATED="1576964745132" ID="ID_127744235" MODIFIED="1576964754158" TEXT="in der konfigurierten ORIENTATION"/>
</node>
<node CREATED="1576964815114" ID="ID_341368382" MODIFIED="1576964827251" TEXT="Zellen werden on demand erzeugt"/>
</node>
</node>
</node>
<node CREATED="1575064734265" ID="ID_332197090" MODIFIED="1575064749715" TEXT="nimmt das Widget heraus und l&#xf6;scht die Zeile"/>
<node CREATED="1575064751217" ID="ID_292440090" MODIFIED="1575064765089" TEXT="f&#xfc;gt das Widget ganz regul&#xe4;r als neue Zeile am Ende an"/>
</node>
</node>
<node CREATED="1575064805462" ID="ID_731805099" MODIFIED="1575064810107" TEXT="Fall Track-Body">
<node CREATED="1575064815198" ID="ID_1801360702" MODIFIED="1575064827177" TEXT="DisplayFrame hat einen ViewHook in den TrackBodyCanvas"/>
<node CREATED="1575064833095" ID="ID_593172418" MODIFIED="1575064854765" TEXT="nach Struktur-&#xc4;nderung dekoriert der TrackPresenter einen Subtrack-Iterator"/>
<node CREATED="1575064855544" ID="ID_1131024510" MODIFIED="1575064916996" TEXT="mit Zugriff auf alle diese TrackBody ViewHooks">
<node CREATED="1575064918904" ID="ID_562010334" MODIFIED="1575064937486" TEXT="Vorsicht: nicht irritieren lassen">
<icon BUILTIN="smiley-oh"/>
</node>
<node CREATED="1575064939788" ID="ID_896603255" MODIFIED="1575064952071" TEXT="die TrackBody-Objekte selber liegen im DisplayFrame"/>
<node CREATED="1575064953275" ID="ID_1410573489" MODIFIED="1575064968229" TEXT="aber der Canvas / DisplayManager hat eine Liste von TrackBody*"/>
</node>
<node CREATED="1575065001141" ID="ID_1381752265" MODIFIED="1575065027911" TEXT="wiederum die Frage: wie erfolgt der Zugang zum ViewHook?">
<icon BUILTIN="help"/>
<node COLOR="#435e98" CREATED="1575064564486" ID="ID_1502992527" MODIFIED="1575132210050" TEXT="TODO kl&#xe4;ren">
<arrowlink COLOR="#4880c1" DESTINATION="ID_1865914633" ENDARROW="Default" ENDINCLINATION="259;77;" ID="Arrow_ID_1022537409" STARTARROW="None" STARTINCLINATION="206;43;"/>
</node>
<node CREATED="1582926781626" ID="ID_1990000066" MODIFIED="1582926793526" TEXT="&#xfc;ber ein spezielles Interface vom Parent her">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1575065047103" ID="ID_949577790" MODIFIED="1575065064472" TEXT="dieses pullt und ruft auf jedem ViewHooked...."/>
<node CREATED="1575065065436" ID="ID_870630036" MODIFIED="1575065068376" TEXT="reHook()">
<node CREATED="1575065071619" ID="ID_868399500" MODIFIED="1575065084870" TEXT="findet die passende Sub-Liste von TrackBody*">
<node CREATED="1575064723058" ID="ID_640324891" MODIFIED="1575132217084" TEXT="TODO wie geht das?">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1575132218659" ID="ID_477189517" MODIFIED="1576282358067" TEXT="gar nicht notwendig, er hat sie schon">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      denn, wie sich herausgestellt hat, mu&#223; das Interface ViewHook hierarchisch heruntergebrochen werden
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1575065153720" ID="ID_542989067" MODIFIED="1575065164547" TEXT="nimmt den TrackBody* heraus"/>
<node CREATED="1575065165679" ID="ID_1342524311" MODIFIED="1575065176156" TEXT="f&#xfc;gt den TrackBody* hinten neu an"/>
<node CREATED="1575065178531" ID="ID_1083347222" MODIFIED="1575065192431" TEXT="der sp&#xe4;ter folgende Display-Evaluation-Pass">
<node CREATED="1575065193925" ID="ID_964654254" MODIFIED="1575065208561" TEXT="ausgel&#xf6;st durch das nun geleerte TrackProfile"/>
<node CREATED="1575065210080" ID="ID_984570817" MODIFIED="1582930995724" TEXT="iteriert &#xfc;ber diese und baut die Zeichen-Struktur neu auf"/>
</node>
</node>
</node>
<node CREATED="1575132277131" ID="ID_1311922241" MODIFIED="1575132286415" TEXT="Fazit/Konsequenz">
<icon BUILTIN="forward"/>
<node CREATED="1575132287961" ID="ID_1273254233" MODIFIED="1575132460335" TEXT="das Interface ViewHook mu&#xdf; hierarchisch heruntergebrochen werden">
<arrowlink COLOR="#3c3061" DESTINATION="ID_29287629" ENDARROW="Default" ENDINCLINATION="-725;0;" ID="Arrow_ID_1727524131" STARTARROW="None" STARTINCLINATION="-243;9;"/>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1575132319988" ID="ID_1036911668" MODIFIED="1575132345916" TEXT="Begr&#xfc;ndung: es abstrahiert das Anh&#xe4;ngen an eine Liste"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1576705892034" ID="ID_1125539403" MODIFIED="1576973261034" TEXT="(um)Bau f&#xfc;r Struktur-&#xc4;nderungen">
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1575579955362" ID="ID_931838684" MODIFIED="1575670594063" STYLE="fork" TEXT="strukturell-generische Implementierung">
<icon BUILTIN="pencil"/>
<node COLOR="#435e98" CREATED="1575579987443" ID="ID_1007243980" MODIFIED="1582926752028" TEXT="Analyse allgemein">
<arrowlink COLOR="#2e1d90" DESTINATION="ID_274573678" ENDARROW="Default" ENDINCLINATION="-1890;235;" ID="Arrow_ID_1905963364" STARTARROW="None" STARTINCLINATION="537;68;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1575580660604" ID="ID_932505699" MODIFIED="1576441760509" TEXT="Change-Listener auf dem Diff-System notwendig">
<arrowlink COLOR="#4d81bf" DESTINATION="ID_350484232" ENDARROW="Default" ENDINCLINATION="-77;-68;" ID="Arrow_ID_658076840" STARTARROW="None" STARTINCLINATION="-201;12;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1575576971732" ID="ID_673183519" MODIFIED="1575670587273" TEXT="Mechanismus zum Umordnen">
<arrowlink COLOR="#507b9b" DESTINATION="ID_1193961919" ENDARROW="Default" ENDINCLINATION="-877;88;" ID="Arrow_ID_624713040" STARTARROW="None" STARTINCLINATION="483;9;"/>
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1576757730509" ID="ID_1816490333" MODIFIED="1582926717705" TEXT="Thema &#xbb;Widget-Position&#xab;">
<arrowlink COLOR="#605bb8" DESTINATION="ID_1949130658" ENDARROW="Default" ENDINCLINATION="204;611;" ID="Arrow_ID_993970158" STARTARROW="None" STARTINCLINATION="299;12;"/>
<linktarget COLOR="#15bcc9" DESTINATION="ID_1816490333" ENDARROW="Default" ENDINCLINATION="-454;46;" ID="Arrow_ID_408864676" SOURCE="ID_1121301646" STARTARROW="None" STARTINCLINATION="-235;17;"/>
<icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1576758030604" HGAP="54" ID="ID_1869378616" MODIFIED="1576876023320" TEXT="entsprechende Erweiterung f&#xfc;r delegating-ViewHook notwendig" VSHIFT="26">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1576876029833" HGAP="57" ID="ID_893654405" MODIFIED="1576876116458" TEXT="kl&#xe4;ren: brauchen wir verschiedene Offsets per Typ" VSHIFT="3">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      also einen speziellen Offset f&#252;r Clips und einen anderen speziellen Offset f&#252;r Effekt-Marker?
    </p>
    <p>
      Oder, anders, wie bekommen wir diese Dinger jeweils in den richtigen unter-Bereich des Track-Layouts??
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1576705136916" ID="ID_576958386" MODIFIED="1678406924035" TEXT="Restrukturierung Timeline/Tracks/view">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1576705150754" FOLDED="true" ID="ID_584153731" MODIFIED="1576973221801" TEXT="bestehendes Design mu&#xdf; &quot;justiert&quot; werden">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ....sonst wird es zur Sackgasse.
    </p>
    <p>
      Die zugrundeliegende Idee war gut, aber ich hab mich in einer <i>cleveren Implementierung</i>&#160;mit einem Lambda-Parameter festgefahren. Zwar brauche ich <i>nicht</i>&#160;die volle Generizit&#228;t und Quer-Beweglichkeit, aber der verallgemeinerte Enwurf f&#252;r ViewHook(ed) ist auch ohne das um L&#228;ngen besser als die bestehende Struktur
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
<node CREATED="1576705055911" ID="ID_665871359" MODIFIED="1576705095215" TEXT="sinnvolle Teile des geplanten Refactoring">
<arrowlink COLOR="#3c62b6" DESTINATION="ID_1681994818" ENDARROW="Default" ENDINCLINATION="-1457;26;" ID="Arrow_ID_1666541151" STARTARROW="None" STARTINCLINATION="898;63;"/>
</node>
<node COLOR="#338800" CREATED="1576705325443" ID="ID_423600338" MODIFIED="1576973217276" TEXT="Struktur und Bedeutung der Interfaces &#xfc;bernehmen">
<icon BUILTIN="button_ok"/>
<node CREATED="1576705602597" ID="ID_658097030" MODIFIED="1576705612832" TEXT="ViewHook : verallgemeintertes Display"/>
<node CREATED="1575223172838" ID="ID_243088075" MODIFIED="1576705835515" TEXT="Display-Frame...">
<linktarget COLOR="#5983d3" DESTINATION="ID_243088075" ENDARROW="Default" ENDINCLINATION="-97;303;" ID="Arrow_ID_1676257131" SOURCE="ID_1544442721" STARTARROW="None" STARTINCLINATION="290;-167;"/>
<icon BUILTIN="info"/>
<node CREATED="1575223418428" ID="ID_410282263" MODIFIED="1576705672399" TEXT="h&#xe4;lt einen ViewHooked&lt;TrackBody&gt;"/>
<node CREATED="1575223430819" ID="ID_801224548" MODIFIED="1576705676303" TEXT="h&#xe4;lt einen ViewHooked&lt;TrackHeaderWidget&gt;"/>
<node CREATED="1575223465392" ID="ID_616543749" MODIFIED="1576705680836" TEXT="h&#xe4;lt eine Referenz auf ViewHook&lt;Widget&gt;"/>
<node CREATED="1576705693529" ID="ID_306131588" MODIFIED="1576705702364" TEXT="delegierende ViewHook-Implementierung">
<node CREATED="1575223491827" ID="ID_1877460309" MODIFIED="1576705686323" TEXT="implementiert selber ViewHook&lt;Clip&gt;"/>
<node CREATED="1575223505705" ID="ID_1991875840" MODIFIED="1576705691469" TEXT="implementiert selber ViewHook&lt;Marker&gt;"/>
</node>
</node>
</node>
<node CREATED="1576705354416" ID="ID_494165942" MODIFIED="1576705377752" TEXT="Interfaces generisch ausdr&#xfc;cken"/>
<node CREATED="1576705379219" ID="ID_594097888" MODIFIED="1576705393981" TEXT="Verallgemeinern des Konzepts &#xbb;Display-Attachment&#xab;"/>
<node CREATED="1576705301390" ID="ID_738352208" MODIFIED="1576705323162">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      aber <b>keine</b>&#160;generische Quer-Beweglichkeit
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#435e98" CREATED="1576973126460" ID="ID_1007307799" MODIFIED="1576973186181" TEXT="Design ist letzlich besser geworden">
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#338800" CREATED="1576705400592" FOLDED="true" ID="ID_1892542246" MODIFIED="1576973227762" TEXT="top-level ViewHook schaffen">
<icon BUILTIN="button_ok"/>
<node CREATED="1576705652570" ID="ID_551481195" MODIFIED="1576705666257" TEXT="ViewHook&lt;Widget&gt;">
<icon BUILTIN="info"/>
</node>
<node COLOR="#338800" CREATED="1576705712654" ID="ID_1745971143" MODIFIED="1582502959217" TEXT="implementieren im TrackCanvas">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1576705413085" FOLDED="true" ID="ID_1979905155" MODIFIED="1576973024213" TEXT="Konstruktor / &quot;ein-H&#xe4;kel&quot;-Mchanismus darauf umstellen">
<icon BUILTIN="button_ok"/>
<node CREATED="1576710340808" FOLDED="true" ID="ID_1326638754" MODIFIED="1576973190436" TEXT="enger verwobene Konstruktoren">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1576710359933" ID="ID_915757567" MODIFIED="1576710379670" TEXT="ViewHooked&lt;TrackBody&gt; braucht ViewHook&lt;TrackBody&gt;"/>
<node CREATED="1576710359933" ID="ID_1122829974" MODIFIED="1576710422214" TEXT="ViewHooked&lt;TrackHeadWidget&gt; braucht ViewHook&lt;TrackHeadWidget&gt;"/>
<node COLOR="#338800" CREATED="1576760201752" ID="ID_958849078" MODIFIED="1576973058150" TEXT="Problem: ViewHook-Subinterfaces">
<icon BUILTIN="button_ok"/>
<node CREATED="1576760226038" ID="ID_1753803962" MODIFIED="1576760241450" TEXT="oh weh... die Quer-Beweglichkeit ist wieder da">
<icon BUILTIN="smily_bad"/>
</node>
<node CREATED="1576760324713" ID="ID_1267786696" MODIFIED="1576760340354" TEXT="einziger Ausweg... Display-Manager wird zum Super-Hook"/>
<node COLOR="#338800" CREATED="1576806720057" ID="ID_805988831" MODIFIED="1576875959056" TEXT="noch besser: das in ein Sammel-Interface packen">
<linktarget COLOR="#67d289" DESTINATION="ID_805988831" ENDARROW="Default" ENDINCLINATION="-36;221;" ID="Arrow_ID_909815140" SOURCE="ID_1966295709" STARTARROW="None" STARTINCLINATION="495;16;"/>
<icon BUILTIN="idea"/>
<node CREATED="1576806744893" ID="ID_526365809" MODIFIED="1576855570801" TEXT="vielleicht sogar ein Accessor-Interface">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1576806754123" ID="ID_931227814" MODIFIED="1576806765651" TEXT="das was wir brauchen -- nicht generisch">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1576806780944" ID="ID_424677663" MODIFIED="1576806787371" TEXT="wo definieren?">
<node CREATED="1576806800277" ID="ID_1586259922" MODIFIED="1576806811655" TEXT="Track-Presenter (zumindest) mu&#xdf; das sehen"/>
<node CREATED="1576806815591" ID="ID_1412328590" MODIFIED="1576806824733" TEXT="ViewHook sollte reine Implementierung bleiben"/>
<node COLOR="#435e98" CREATED="1576806845175" ID="ID_302576498" MODIFIED="1576855554242" TEXT="DisplayManager">
<icon BUILTIN="yes"/>
<node CREATED="1576806881586" ID="ID_1243796008" MODIFIED="1576806891357" TEXT="ja da geh&#xf6;rt&apos;s eigentlich hin"/>
<node CREATED="1576806892609" ID="ID_981763412" MODIFIED="1576806908361" TEXT="versuch, m&#xf6;glichst mit forward-decl zu arbeiten"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1576855633920" ID="ID_1642579599" MODIFIED="1576855726346" TEXT="damit ist auch die Basis zum relativen Positionieren gegeben">
<arrowlink COLOR="#6780d3" DESTINATION="ID_1121301646" ENDARROW="Default" ENDINCLINATION="551;-498;" ID="Arrow_ID_229033893" STARTARROW="None" STARTINCLINATION="-477;21;"/>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1576710544415" FOLDED="true" ID="ID_88564726" MODIFIED="1576973053608" TEXT="zwei F&#xe4;lle zu unterscheiden">
<icon BUILTIN="idea"/>
<node COLOR="#338800" CREATED="1576710558354" ID="ID_146653361" MODIFIED="1576973031122" TEXT="top-Level">
<icon BUILTIN="button_ok"/>
<node CREATED="1576710810240" ID="ID_1493306680" MODIFIED="1576710989724" TEXT="bisher...">
<node CREATED="1576710991266" ID="ID_544968183" MODIFIED="1576710991266" TEXT="TimelineLayout::installRootTrack(TrackHeadWidget&amp;, TrackBody&amp;)"/>
<node CREATED="1576710993235" ID="ID_64093228" MODIFIED="1576711013678" TEXT="Abbauen war nicht implementiert"/>
<node CREATED="1576711169203" ID="ID_1075649932" MODIFIED="1576711179426" TEXT="Move ist hier explizit nicht vorgesehen"/>
</node>
<node COLOR="#338800" CREATED="1576713454074" ID="ID_175021708" MODIFIED="1576973039128" TEXT="m&#xfc;&#xdf;te nun die zwei ViewHook-Interfaces pro forma implementieren">
<icon BUILTIN="button_ok"/>
<node CREATED="1576713516746" ID="ID_908928403" MODIFIED="1576714570369" TEXT="aber eigentlich nur zum einmaligen Gebrauch"/>
<node CREATED="1576714892102" ID="ID_1235287514" MODIFIED="1576714911362" TEXT="um die Wurzel zu verankern"/>
<node CREATED="1576714597064" ID="ID_123363250" MODIFIED="1576757177602" STYLE="fork" TEXT="that&apos;s Life?">
<font NAME="SansSerif" SIZE="12"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1576757179611" ID="ID_857948859" MODIFIED="1576757182790" TEXT="ja">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1576757228532" ID="ID_292264284" MODIFIED="1576757344691" TEXT="es ist eine direkte Konsequenz der Abstraktion">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      und zwar, genauer gesagt, eine Konsequenz der Entscheidung, nicht nur einen ViewHook, sondern ein ViewHooked zu machen. Ich hab die Beziehung in's Strukturelle hinen genommen. Damit mu&#223; auch die Wurzel diese Struktur unterst&#252;tzen, und damit wird an dieser Stelle die Abstraktion undicht.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="forward"/>
</node>
<node CREATED="1576757241132" ID="ID_1435695009" MODIFIED="1576757247151" TEXT="sozusagen ein Preis dieser"/>
</node>
<node CREATED="1576714633667" ID="ID_53757225" MODIFIED="1576756316761" TEXT="oder DisplayFrame zum &#xdc;ber-Hook ausbauen?">
<linktarget COLOR="#696f88" DESTINATION="ID_53757225" ENDARROW="Default" ENDINCLINATION="57;121;" ID="Arrow_ID_362033711" SOURCE="ID_1656418231" STARTARROW="None" STARTINCLINATION="9;-141;"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1576714722676" ID="ID_511678024" MODIFIED="1576714736872" TEXT="damit k&#xf6;nnte ich das ganze &quot;ein-H&#xe4;keln&quot; ersetzen"/>
<node CREATED="1576714737885" ID="ID_143709986" MODIFIED="1576714780020" TEXT="aber unterst&#xfc;tze das Interface nur teilweise">
<node CREATED="1576714781887" ID="ID_586224465" MODIFIED="1576714793748" TEXT="move() macht allgemein keinen Sinn"/>
<node CREATED="1576714837439" ID="ID_679289748" MODIFIED="1576714854343" TEXT="reOrder / rehook() eigentlich auch nicht"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1576710566905" ID="ID_1380718144" MODIFIED="1576968908894" TEXT="Rekursion">
<icon BUILTIN="button_ok"/>
<node CREATED="1576875874270" ID="ID_345044928" MODIFIED="1576875883513" TEXT="unproblematisch"/>
<node CREATED="1576875884389" ID="ID_209901177" MODIFIED="1576875891784" TEXT="basierend auf der L&#xf6;sung f&#xfc;r top-Level"/>
<node CREATED="1576875892588" ID="ID_1966295709" MODIFIED="1576875968903" TEXT="DisplayFrame selber implementiert wieder das DisplayViewHooks Sammel-Interface">
<arrowlink COLOR="#67d289" DESTINATION="ID_805988831" ENDARROW="Default" ENDINCLINATION="-36;221;" ID="Arrow_ID_909815140" STARTARROW="None" STARTINCLINATION="495;16;"/>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1576753128134" FOLDED="true" ID="ID_1066136383" MODIFIED="1576973168017" TEXT="signalStructureChange_ anders l&#xf6;sen">
<icon BUILTIN="button_ok"/>
<node CREATED="1576753507885" ID="ID_1311899789" MODIFIED="1576968873199" TEXT="is vermutlich gar nicht mehr n&#xf6;tig">
<icon BUILTIN="button_cancel"/>
<node CREATED="1576968874470" ID="ID_801145838" MODIFIED="1576968878449" TEXT="doch ist n&#xf6;tig"/>
<node CREATED="1576968881005" ID="ID_984848180" MODIFIED="1576968898327" TEXT="aber eine innere Angelegenheit des Profil-Zeichen-Codes">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1576753808609" ID="ID_1786295426" MODIFIED="1576753817108" TEXT="triggert bisher nur BodyCanvasWidget::slotStructureChange"/>
<node CREATED="1576753870146" ID="ID_585664275" MODIFIED="1576753909519" TEXT="erst mal auf den Display-Manager beschr&#xe4;nken?">
<node CREATED="1576754072397" ID="ID_46871319" MODIFIED="1576754079511" TEXT="gen&#xfc;gt nicht"/>
<node CREATED="1576754087251" ID="ID_843375867" MODIFIED="1576754106301" TEXT="mu&#xdf; auch Struktur-&#xc4;nderungen weiter unten mitbekommen"/>
<node CREATED="1576754985572" ID="ID_84032417" MODIFIED="1576755004609" TEXT="zwei L&#xf6;sungen">
<node CREATED="1576755005945" ID="ID_180843072" MODIFIED="1576756369600" TEXT="in einer Kette verwandter Objekte durchverdrahten">
<icon BUILTIN="forward"/>
</node>
<node CREATED="1576755080360" ID="ID_1435594508" MODIFIED="1576756328976" TEXT="an geeigneter Stelle auf reHook() reagieren">
<icon BUILTIN="button_cancel"/>
<node CREATED="1576755445747" ID="ID_858059536" MODIFIED="1576755448918" TEXT="wo?"/>
<node CREATED="1576755498409" ID="ID_1656418231" MODIFIED="1576756316761">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      nur wenn DisplayFrame selber ein ViewHook <i>w&#228;re</i>
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#696f88" DESTINATION="ID_53757225" ENDARROW="Default" ENDINCLINATION="57;121;" ID="Arrow_ID_362033711" STARTARROW="None" STARTINCLINATION="9;-141;"/>
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1576756331616" ID="ID_1376732304" MODIFIED="1576756364407" TEXT="Nein! auch dann brauchen wir noch eine Kette">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      weil der Trigger irgendwo unten passiert, und nicht auf dem top-Level ViewHook
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1576756393353" ID="ID_1634637216" MODIFIED="1576968855663" TEXT="letztlich brauchen wir eine Kombination der M&#xf6;glichkeiten">
<icon BUILTIN="forward"/>
<node CREATED="1576756408221" ID="ID_931947512" MODIFIED="1576756426206" TEXT="ein signalStructureChange_"/>
<node CREATED="1576756427034" ID="ID_1212535566" MODIFIED="1576756440540" TEXT="durchverkettet durch die TrackBody"/>
<node COLOR="#338800" CREATED="1576756442383" ID="ID_1410170658" MODIFIED="1576968842323" TEXT="und getriggert von allen relevanten &#xc4;nderungen">
<icon BUILTIN="button_ok"/>
<node CREATED="1576756455861" ID="ID_1387794404" MODIFIED="1576756460006" TEXT="neuer sub-Body"/>
<node CREATED="1576756461090" ID="ID_120810428" MODIFIED="1576756473518" TEXT="sub-Body geht weg"/>
<node CREATED="1576756481001" ID="ID_1180573389" MODIFIED="1576756490503" TEXT="reHook() (=Umordnung)"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1576705433836" FOLDED="true" ID="ID_1544442721" MODIFIED="1576973090826" TEXT="konkrete ViewHook(ed) einbinden">
<arrowlink COLOR="#5983d3" DESTINATION="ID_243088075" ENDARROW="Default" ENDINCLINATION="-97;303;" ID="Arrow_ID_1676257131" STARTARROW="None" STARTINCLINATION="290;-167;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1576705460961" ID="ID_363231858" MODIFIED="1576973087699" TEXT="ViewHooked&lt;TrackBody&gt;">
<icon BUILTIN="button_ok"/>
<node CREATED="1576705473228" ID="ID_1846992278" MODIFIED="1576705482735" TEXT="Mechanismus f&#xfc;r Track-Profil"/>
<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>
  <body>
    <p>
      soweit m&#246;glich ohne grundlegende &#196;nderungen
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#338800" CREATED="1576705517369" ID="ID_1956333092" MODIFIED="1576973079830" TEXT="ViewHooked&lt;TrackHeadWidget&gt;">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1576705769431" ID="ID_6854402" MODIFIED="1576973078336" TEXT="delegierende ViewHook-Implementierung schaffen">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1576705779910" ID="ID_968522268" MODIFIED="1576705792920" TEXT="damit ViewHook&lt;Clip&gt;"/>
<node CREATED="1576705802515" ID="ID_674496871" MODIFIED="1576705809765" TEXT="und ViewHook&lt;Marker&gt;"/>
</node>
<node COLOR="#338800" CREATED="1576855620250" ID="ID_1121301646" MODIFIED="1612031401163" TEXT="relatives Positionieren erm&#xf6;glichen">
<arrowlink COLOR="#15bcc9" DESTINATION="ID_1816490333" ENDARROW="Default" ENDINCLINATION="-454;46;" ID="Arrow_ID_408864676" STARTARROW="None" STARTINCLINATION="-235;17;"/>
<linktarget COLOR="#6780d3" DESTINATION="ID_1121301646" ENDARROW="Default" ENDINCLINATION="551;-498;" ID="Arrow_ID_229033893" SOURCE="ID_1642579599" STARTARROW="None" STARTINCLINATION="-477;21;"/>
<linktarget COLOR="#4668c0" DESTINATION="ID_1121301646" ENDARROW="Default" ENDINCLINATION="-360;299;" ID="Arrow_ID_1147127867" SOURCE="ID_1574493569" STARTARROW="None" STARTINCLINATION="472;50;"/>
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1582410135584" ID="ID_969058360" MODIFIED="1611478497698" TEXT="#1207 relative attachment and (custom) drawing of sub-widgets">
<arrowlink COLOR="#4567f1" DESTINATION="ID_1208770677" ENDARROW="Default" ENDINCLINATION="-696;74;" ID="Arrow_ID_1555581659" STARTARROW="None" STARTINCLINATION="1109;48;"/>
<icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1666448252605" HGAP="50" ID="ID_1855630485" MODIFIED="1678381794319" TEXT="Thema abschlie&#xdf;en" VSHIFT="19">
<icon BUILTIN="button_ok"/>
<node CREATED="1666448281749" ID="ID_307630617" MODIFIED="1666448292451" TEXT="tats&#xe4;chlich mit LayoutManager integrieren">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#435e98" CREATED="1672799750522" ID="ID_1514900067" MODIFIED="1672799760652" TEXT="LayoutManager(impl) &#x2194; Display-Evaluation &#x2194; ZoomWindow">
<arrowlink COLOR="#517488" DESTINATION="ID_650213030" ENDARROW="Default" ENDINCLINATION="515;561;" ID="Arrow_ID_113145433" STARTARROW="None" STARTINCLINATION="754;37;"/>
<arrowlink COLOR="#6bb1c5" DESTINATION="ID_382705289" ENDARROW="Default" ENDINCLINATION="782;41;" ID="Arrow_ID_1372440678" STARTARROW="None" STARTINCLINATION="441;0;"/>
<icon BUILTIN="info"/>
</node>
<node COLOR="#338800" CREATED="1672799760652" ID="ID_891324479" MODIFIED="1678381593940" TEXT="Zoom-Window steuert DisplayMetric">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1678381623392" ID="ID_222335481" MODIFIED="1678381792387" TEXT="Zusammenhang abstrahiert">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Habe mich hier f&#252;r eine <i>komplett unterirdische Verbindung</i>&#160;entschieden, denn ich m&#246;chte keinesfalls den Layout-Manager zu einem sichtbaren Akteur ausbauen &#8212; ein &#187;Layout-Manager&#171; w&#228;re eine derart offensichtliche zentrale Autorit&#228;t, da&#223; der Weg zur &#8222;Gott-Klasse&#8220; nicht mehr weit ist
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1576974013309" ID="ID_662883026" MODIFIED="1611478368089" TEXT="mu&#xdf; der Overview-Canvas &#xfc;berhaupt ber&#xfc;cksichtigt werden?">
<icon BUILTIN="help"/>
<node COLOR="#990000" CREATED="1576974036176" ID="ID_1084997647" MODIFIED="1611478475301" TEXT="wenn ja: dann h&#xe4;tten wir ein Problem mit remove()">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      weil dieses n&#228;mlich keine Koordinaten bekommt, und daher nicht wei&#223;, in welchem Canvas das zu entfernde Widget steckt
    </p>
  </body>
</html></richcontent>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="clanbomber"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1582926631295" ID="ID_1387833468" MODIFIED="1582926643826">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <i>wenn</i>&#160;das so relevant werden sollte
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1582926644653" ID="ID_365029590" MODIFIED="1582926660863" TEXT="...dann mu&#xdf; wohl an beide Sub-Canvas delegiert werden"/>
</node>
<node COLOR="#864e6a" CREATED="1576974796984" ID="ID_680399486" MODIFIED="1611478422761" TEXT="wenn nein wird die Sache einfach....">
<arrowlink COLOR="#efd0af" DESTINATION="ID_364410899" ENDARROW="Default" ENDINCLINATION="1299;64;" ID="Arrow_ID_1373879262" STARTARROW="None" STARTINCLINATION="477;28;"/>
<linktarget COLOR="#ec6f0c" DESTINATION="ID_680399486" ENDARROW="Default" ENDINCLINATION="172;6;" ID="Arrow_ID_465598539" SOURCE="ID_1473334633" STARTARROW="None" STARTINCLINATION="198;19;"/>
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1611478373512" ID="ID_1982297015" MODIFIED="1611478399631">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      es ist auf <i>nein</i>&#160;hinausgelaufen....
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#338800" CREATED="1582503247986" ID="ID_1081924103" MODIFIED="1582835894937" TEXT="Problem Covarianz Clip vs Widget">
<arrowlink COLOR="#66226c" DESTINATION="ID_1439869815" ENDARROW="Default" ENDINCLINATION="-760;97;" ID="Arrow_ID_655919678" STARTARROW="None" STARTINCLINATION="1574;0;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1582503411035" HGAP="45" ID="ID_1293494572" MODIFIED="1582503470645" TEXT="der Canvas braucht nur ein Widget, wir aber konstruieren einen Clip" VSHIFT="22">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      eigentlich brauchen wir den konkreten Typ nur f&#252;r den ctor-Aufruf
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node BACKGROUND_COLOR="#fefc4e" COLOR="#351d75" CREATED="1582833357879" ID="ID_35914064" MODIFIED="1666448220727">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <u>Proof-of-Concept</u>: <i>grunds&#228;tzlich</i>&#160;lassen sich die Aufrufe so realisieren
    </p>
  </body>
</html></richcontent>
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1576974176981" ID="ID_1792139654" MODIFIED="1612031398076" TEXT="Kind-Widget-Offsets">
<linktarget COLOR="#5e57bd" DESTINATION="ID_1792139654" ENDARROW="Default" ENDINCLINATION="-2065;214;" ID="Arrow_ID_1917645572" SOURCE="ID_178738138" STARTARROW="None" STARTINCLINATION="-949;44;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1576974190516" ID="ID_1324645925" MODIFIED="1582836038184" TEXT="welche Offsets treten konkret auf?"/>
<node COLOR="#435e98" CREATED="1582835948615" ID="ID_75969285" MODIFIED="1582926572549" TEXT="Kind-Offsets sind falsch">
<arrowlink COLOR="#38acd3" DESTINATION="ID_1855510589" ENDARROW="Default" ENDINCLINATION="-764;-101;" ID="Arrow_ID_1877663178" STARTARROW="None" STARTINCLINATION="570;60;"/>
<icon BUILTIN="broken-line"/>
</node>
<node CREATED="1576974515950" ID="ID_1628336999" MODIFIED="1576974623765" TEXT="gibt es ein gemeinsames Koordinatensystem?">
<arrowlink COLOR="#474293" DESTINATION="ID_1222461806" ENDARROW="Default" ENDINCLINATION="-912;90;" ID="Arrow_ID_890343372" STARTARROW="None" STARTINCLINATION="-1540;96;"/>
<node CREATED="1576975245489" ID="ID_1473334633" MODIFIED="1582926930308" TEXT="es l&#xe4;uft auf &quot;nein&quot; hinaus....">
<arrowlink COLOR="#ec6f0c" DESTINATION="ID_680399486" ENDARROW="Default" ENDINCLINATION="172;6;" ID="Arrow_ID_465598539" STARTARROW="None" STARTINCLINATION="198;19;"/>
<icon BUILTIN="forward"/>
</node>
<node CREATED="1576975314849" ID="ID_504699963" MODIFIED="1576975336570" TEXT="dann mu&#xdf; aber das relative-attachment hier adaptieren">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1576975078209" ID="ID_272168913" MODIFIED="1582926869860" TEXT="suche L&#xf6;sung f&#xfc;r Koordinaten pro Canvas">
<linktarget COLOR="#406fc9" DESTINATION="ID_272168913" ENDARROW="Default" ENDINCLINATION="-1471;82;" ID="Arrow_ID_1415590908" SOURCE="ID_1095950959" STARTARROW="None" STARTINCLINATION="-1695;79;"/>
<icon BUILTIN="yes"/>
<node COLOR="#338800" CREATED="1582503867646" ID="ID_1320872157" MODIFIED="1582926877646" TEXT="versuchen, das ViewHook-Konzept daf&#xfc;r nutzbar zu machen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      d.h. der Versuch, die Probleme geschickt wegzuabstrahieren.
    </p>
    <p>
      Au&#223;erdem ist ja beim Design des ViewHook aufgefallen, da&#223; der Fall mit dem Positionieren per Koordinaten ehr der Spezialfall ist, und nicht der Basisfall, als welches er modlliert wurde...
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1582926842105" ID="ID_41570451" MODIFIED="1582926860190" TEXT="geht eigentlich ganz glatt auf">
<icon BUILTIN="idea"/>
<node CREATED="1582926889589" ID="ID_452794094" MODIFIED="1582926901582" TEXT="Ankerpunkt bereits im Basis-Interface ViewHook&lt;WID&gt;"/>
<node CREATED="1582926902478" ID="ID_1289395901" MODIFIED="1582926913092" TEXT="das Verketten wird damit Teil des Prinzips"/>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1576705946751" ID="ID_478555928" MODIFIED="1678407144057" TEXT="den re-Konstrkutions-Mechanismus realisieren">
<icon BUILTIN="hourglass"/>
<node COLOR="#435e98" CREATED="1678406932620" ID="ID_1079071766" MODIFIED="1678407138241" TEXT="Stand 3/23: geplant und angelegt">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Der L&#246;sungsansatz ist entschieden...
    </p>
    <ul>
      <li>
        &#252;ber das ViewHook-Interface ist die Verbindung zwischen Container und Element abstrahiert
      </li>
      <li>
        darauf aufbauend werden zum Umordnen alle Elemente &quot;beiseite geschoben&quot; und neu eingeh&#228;ngt (in ge&#228;nderter Reihenfolge)
      </li>
    </ul>
    <p>
      ....<i>theoretisch sollte das so ohne Weiteres funktionieren.... </i>
    </p>
    <p>
      
    </p>
    <p>
      <font size="2">(habs gem&#228;&#223; Konzept schon so implementiert f&#252;r das Track-Head,</font><br /><font size="2">aber noch nie gepr&#252;ft, ob es auch tats&#228;chlich funktioniert)</font>
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node CREATED="1575050224708" ID="ID_1911321905" MODIFIED="1582988334867" TEXT="Trigger">
<linktarget COLOR="#6e8c9b" DESTINATION="ID_1911321905" ENDARROW="Default" ENDINCLINATION="-733;-208;" ID="Arrow_ID_528411186" SOURCE="ID_1886398385" STARTARROW="None" STARTINCLINATION="1622;164;"/>
<icon BUILTIN="idea"/>
<node CREATED="1575050232723" ID="ID_1373278767" MODIFIED="1575050241511" TEXT="Struktur-&#xc4;nderung">
<node CREATED="1575050261439" ID="ID_1211501481" MODIFIED="1575050408505" TEXT="Sequenz der unmittelbaren Kinder ge&#xe4;ndert">
<linktarget COLOR="#1252d1" DESTINATION="ID_1211501481" ENDARROW="Default" ENDINCLINATION="54;39;" ID="Arrow_ID_407564614" SOURCE="ID_1445748451" STARTARROW="None" STARTINCLINATION="-41;-50;"/>
<node CREATED="1575050290679" ID="ID_1523080748" MODIFIED="1575050294573" TEXT="Reihenfolge"/>
<node CREATED="1575050279796" ID="ID_997158526" MODIFIED="1575050282831" TEXT="neues Kind"/>
<node CREATED="1575050283587" ID="ID_173333062" MODIFIED="1575050286863" TEXT="totes Kind"/>
</node>
<node CREATED="1575050302522" ID="ID_1068694513" MODIFIED="1575050313251" TEXT="mittelbar im Kind-Baum">
<node CREATED="1575050317354" ID="ID_1445748451" MODIFIED="1575050408504" TEXT="rekursiv zur&#xfc;ckgef&#xfc;hrt">
<arrowlink COLOR="#1252d1" DESTINATION="ID_1211501481" ENDARROW="Default" ENDINCLINATION="54;39;" ID="Arrow_ID_407564614" STARTARROW="None" STARTINCLINATION="-41;-50;"/>
</node>
<node CREATED="1575050424190" ID="ID_1324169888" MODIFIED="1575050472496" TEXT="Voraussetzungen">
<node CREATED="1575050474252" ID="ID_1248517025" MODIFIED="1575050474252" TEXT="Rekonstruktion ist lokal"/>
<node CREATED="1575050476163" ID="ID_389515387" MODIFIED="1575050496236" TEXT="Rekunstruktion wirkt nur auf einen Teilbaum abw&#xe4;rts"/>
</node>
</node>
</node>
<node CREATED="1575050510878" ID="ID_350484232" MODIFIED="1575580714937" TEXT="Basis ist vom Diff-System zu leisten">
<arrowlink COLOR="#624d7d" DESTINATION="ID_101148427" ENDARROW="Default" ENDINCLINATION="-3637;-782;" ID="Arrow_ID_1277214644" STARTARROW="None" STARTINCLINATION="3792;340;"/>
<linktarget COLOR="#4d81bf" DESTINATION="ID_350484232" ENDARROW="Default" ENDINCLINATION="-77;-68;" ID="Arrow_ID_658076840" SOURCE="ID_932505699" STARTARROW="None" STARTINCLINATION="-201;12;"/>
<node COLOR="#338800" CREATED="1576168044826" ID="ID_1912653386" MODIFIED="1576441631231" TEXT="#1206 diff structure change listener">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1480694550601" ID="ID_1999928728" MODIFIED="1557498707227" TEXT="Track-Anzeige">
<linktarget COLOR="#fec680" DESTINATION="ID_1999928728" ENDARROW="Default" ENDINCLINATION="-1077;-98;" ID="Arrow_ID_506785204" SOURCE="ID_1131206858" STARTARROW="None" STARTINCLINATION="368;125;"/>
<linktarget COLOR="#7696bb" DESTINATION="ID_1999928728" ENDARROW="Default" ENDINCLINATION="113;285;" ID="Arrow_ID_198017810" SOURCE="ID_1389266781" STARTARROW="None" STARTINCLINATION="-139;0;"/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1480607033512" ID="ID_1815699851" MODIFIED="1557498707227" TEXT="Kopf">
<node CREATED="1540684299064" ID="ID_1911781593" MODIFIED="1557498707227" TEXT="Header-Pane">
<node CREATED="1540641296565" HGAP="31" ID="ID_991484939" MODIFIED="1557498707227" TEXT="NavigationWidget" VSHIFT="40">
<arrowlink DESTINATION="ID_1952536945" ENDARROW="Default" ENDINCLINATION="136;-157;" ID="Arrow_ID_1459742640" STARTARROW="None" STARTINCLINATION="112;0;"/>
<node CREATED="1540682850119" HGAP="39" ID="ID_1885212949" MODIFIED="1557498707227" TEXT="ein Grid">
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1540641305092" HGAP="50" ID="ID_18552766" MODIFIED="1557498707227" TEXT="PatchbayWidget" VSHIFT="-2">
<arrowlink DESTINATION="ID_151954769" ENDARROW="Default" ENDINCLINATION="263;-88;" ID="Arrow_ID_1923805019" STARTARROW="None" STARTINCLINATION="93;24;"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1540682893097" HGAP="65" ID="ID_419298158" MODIFIED="1557498707227" TEXT="interne Struktur" VSHIFT="11">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node CREATED="1540682901320" ID="ID_1054686680" MODIFIED="1557498707227" TEXT="stacked boxes?">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1540682908088" ID="ID_785207504" MODIFIED="1557498707227" TEXT="table grid?">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1540683803329" ID="ID_290204038" MODIFIED="1557498707227" TEXT="rekursive Struktur">
<icon BUILTIN="forward"/>
<node CREATED="1540683824278" ID="ID_1473337838" MODIFIED="1675897700431" TEXT="ein Grid anfangs 3 Zeilen">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1540683889813" ID="ID_1511067098" MODIFIED="1675897738578" TEXT="1Zeile (komplett) : Placement-Men&#xfc;+Label">
<node CREATED="1541095855984" ID="ID_1032237384" MODIFIED="1557498707227" TEXT="verwendet ElementBoxWidget">
<arrowlink COLOR="#f6cca4" DESTINATION="ID_368245484" ENDARROW="Default" ENDINCLINATION="-599;39;" ID="Arrow_ID_1199047781" STARTARROW="None" STARTINCLINATION="-698;-271;"/>
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1540683900716" ID="ID_212914080" MODIFIED="1675897808377" TEXT="Zelle 2 | Spalte 2 : Controls"/>
<node CREATED="1540683829267" ID="ID_828415712" MODIFIED="1675897854794" TEXT="Zeile 3++">
<node CREATED="1675897911895" ID="ID_1127109872" MODIFIED="1675897937960" TEXT="leer auf Blatt-Ebene des Baumes"/>
<node CREATED="1540683879103" ID="ID_96481889" MODIFIED="1675897894389" TEXT="Sub-Track &#x27f9; eine nested HeaderPane"/>
<node CREATED="1675897858886" ID="ID_728481021" MODIFIED="1675897869225" TEXT="weitere Zeilen f&#xfc;r jeden weiteren Kind-Track"/>
</node>
<node CREATED="1540683916490" ID="ID_191999039" MODIFIED="1675897842188" TEXT="linke Spalte : Fork-Struktur zeichnen"/>
<node CREATED="1563469351023" ID="ID_805950777" MODIFIED="1563469358660" TEXT="weitere Zeilen nach Bedarf....">
<node CREATED="1563469368703" ID="ID_856512794" MODIFIED="1563469385040" TEXT="jeder weitere Sub-Track h&#xe4;ngt eine Zeile an"/>
<node CREATED="1563469415896" ID="ID_307382994" MODIFIED="1563469442614">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      aber verschachtelte sub-Tracks werden <i>in</i>&#160;dieser gehandhabt
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1563469388316" ID="ID_312880827" MODIFIED="1563469409266" TEXT="beim re-Konstruieren alle platt machen und neu besetzen">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1540747470806" FOLDED="true" HGAP="97" ID="ID_831752558" MODIFIED="1557498707227" TEXT="Frage: Patchbay vs TrackHead?" VSHIFT="5">
<icon BUILTIN="help"/>
<node CREATED="1540747516509" ID="ID_1965076800" MODIFIED="1557498707227" TEXT="ist TrackHeadWidget &#xfc;berfl&#xfc;ssig?">
<arrowlink COLOR="#6ba7db" DESTINATION="ID_415092517" ENDARROW="Default" ENDINCLINATION="-390;0;" ID="Arrow_ID_1346421423" STARTARROW="None" STARTINCLINATION="445;0;"/>
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1540747533463" ID="ID_1845120165" MODIFIED="1557498707227" TEXT="dann w&#xe4;re TimelineHeader == PatchbayWidget"/>
<node CREATED="1540747550734" ID="ID_843399235" MODIFIED="1576282358067" TEXT="macht Sinn...">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...denn das Patchbay-Widget mu&#223; diverse Interna des Tracks beachten,
    </p>
    <p>
      so z.B. sein Placement, welches <i>teilweise als Properties</i>&#160;des Track abgebildet wird.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1540862631576" ID="ID_136673309" MODIFIED="1557498707227" TEXT="aber: Patchbay ist mehr als ein TrackHead">
<icon BUILTIN="yes"/>
<node CREATED="1540862657930" ID="ID_505897358" MODIFIED="1557498707227" TEXT="das Scrollen nicht vergessen">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1540862671211" ID="ID_1297724441" MODIFIED="1557498707227" TEXT="brauche eine Scroll-Pane ohne Scrolbar">
<node CREATED="1540862789523" ID="ID_1163137569" MODIFIED="1557498707227" TEXT="geht das?">
<icon BUILTIN="help"/>
<node CREATED="1540863135984" ID="ID_1095034635" MODIFIED="1557498707227" TEXT="wohl nicht direkt"/>
<node CREATED="1540863146507" ID="ID_1788133857" MODIFIED="1557498707227" TEXT="ScrolledWindow verwendet Gtk::Viewport">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1540863578545" ID="ID_1986597218" LINK="https://developer.gnome.org/gtkmm-tutorial/stable/sec-adjustments-easy.html.en" MODIFIED="1557498707227" TEXT="Tutorial: separate Scrollbar f&#xfc;r TextView"/>
<node CREATED="1540863719920" ID="ID_1675657033" MODIFIED="1557498707227" TEXT="analog: das Adjustment von der BodyPane verwenden"/>
<node CREATED="1540863740331" ID="ID_432547471" MODIFIED="1557498707227" TEXT="und ein (passives) Adjustment f&#xfc;r horizontal"/>
<node COLOR="#338800" CREATED="1540866723618" ID="ID_943818911" MODIFIED="1557498707227" TEXT="sofort im ctor verdrahten">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1540862691920" ID="ID_415092517" MODIFIED="1557498707227" TEXT="das ist dann sinnvollerweise die Patchbay als Ganzes">
<linktarget COLOR="#6ba7db" DESTINATION="ID_415092517" ENDARROW="Default" ENDINCLINATION="-390;0;" ID="Arrow_ID_1346421423" SOURCE="ID_1965076800" STARTARROW="None" STARTINCLINATION="445;0;"/>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1553907064499" HGAP="11" ID="ID_1688412302" MODIFIED="1678026754379" TEXT="Fazit" VSHIFT="5">
<icon BUILTIN="forward"/>
<node CREATED="1553907073255" ID="ID_1710444282" MODIFIED="1557498707227" TEXT="Patchbay ist ein Container f&#xfc;r die Track Heads"/>
<node CREATED="1553907087204" ID="ID_752287871" MODIFIED="1563469756375" TEXT="zust&#xe4;ndig f&#xfc;r das Einh&#xe4;ngen und das vertikale Scrolling"/>
<node CREATED="1678026759149" ID="ID_1362126122" MODIFIED="1678026778735" TEXT="k&#xfc;nftig ggfs. auch f&#xfc;r globale Belange">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      z.B. Folding
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1563469593872" FOLDED="true" HGAP="84" ID="ID_1533093205" MODIFIED="1679082604804" TEXT="sub-Navigation" VSHIFT="1">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1674161525129" ID="ID_1762683235" MODIFIED="1675897471975" TEXT="Grid-Zelle f&#xfc;r die Placement-Controls vorsehen">
<linktarget COLOR="#463cb1" DESTINATION="ID_1762683235" ENDARROW="Default" ENDINCLINATION="624;37;" ID="Arrow_ID_1560223761" SOURCE="ID_1332292119" STARTARROW="None" STARTINCLINATION="129;-6;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1674170380401" HGAP="36" ID="ID_600466568" MODIFIED="1674170473951" TEXT="sollte dann doch besser in eine eigene Zeile" VSHIFT="-3">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      wozu haben wir das Gtk::Grid
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node COLOR="#435e98" CREATED="1674170423490" HGAP="62" ID="ID_1552228594" MODIFIED="1674170479627" TEXT="ist immer Zelle (1,1)  &#x27f9; f&#xfc;r vertikale Content-Anpassung nutzen" VSHIFT="-9">
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#338800" CREATED="1675898002475" ID="ID_1561724587" MODIFIED="1675898068906" TEXT="verikalte Pos der sub-Tracks koordinieren">
<linktarget COLOR="#6493a2" DESTINATION="ID_1561724587" ENDARROW="Default" ENDINCLINATION="7;82;" ID="Arrow_ID_1646540229" SOURCE="ID_478580800" STARTARROW="None" STARTINCLINATION="-16;-50;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1675898071801" ID="ID_813971014" MODIFIED="1675898089191" TEXT="steuern per zus&#xe4;tzlicher Leerzeile unter den Placement-Controls">
<icon BUILTIN="idea"/>
<node CREATED="1675898099757" ID="ID_1841035930" MODIFIED="1675898623818" TEXT="Konsequenz: Placement-Controls expandieren nie &#xfc;ber Content-H&#xf6;he">
<richcontent TYPE="NOTE"><html>
  <head></head>
  <body>
    <p>
      &#55357;&#56481; das ist <i>kein Fehler...</i><br>Da sie zuerst eingef&#252;gt 
      werden, und ohne vexpand() niemals zus&#228;tzlichen Platz aufgreifen, wird 
      das Grid insgesamt nur so hoch wie minimal n&#246;tig, und jedwedes 
      Alignment-Setting auf der Zelle mit den Placement-Controls bleibt 
      wirkungslos; anschlie&#223;end wird die zus&#228;tzliche Zeile eingef&#252;gt und 
      aufgespreitzt, um den Kind-Navigationsbereich auf den Level des ersten 
      Kind-tracks runter zu dr&#252;cken
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1675898226900" ID="ID_1938543250" MODIFIED="1675898245198" TEXT="Pufferplatzt wird immer darunter einngebracht"/>
</node>
<node COLOR="#338800" CREATED="1675898265975" ID="ID_1633915372" LINK="#ID_1129757567" MODIFIED="1675898508287" TEXT="integriert in 2.Phase der DisplayEvaluation">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1563469608318" ID="ID_174979019" MODIFIED="1675897507574" TEXT="zus&#xe4;tzliche sub-Tracks resultieren in zus&#xe4;tzlichen Zeilen">
<icon BUILTIN="yes"/>
<node COLOR="#338800" CREATED="1563469770472" ID="ID_1252550324" MODIFIED="1674170526467" TEXT="einf&#xfc;gen gem&#xe4;&#xdf; Zahl der Kind-Tracks">
<icon BUILTIN="button_ok"/>
<node CREATED="1674170489677" ID="ID_1683231262" MODIFIED="1674170519062" TEXT="ab Zeile 2">
<icon BUILTIN="info"/>
</node>
<node COLOR="#338800" CREATED="1674170497184" ID="ID_904031404" MODIFIED="1674170560370" TEXT="jeweils auch den Platz f&#xfc;r das Struktur-Diagramm mit anpassen">
<arrowlink COLOR="#5ba7d5" DESTINATION="ID_478580800" ENDARROW="Default" ENDINCLINATION="358;-30;" ID="Arrow_ID_776518349" STARTARROW="None" STARTINCLINATION="-77;131;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1563469790905" ID="ID_1917094772" MODIFIED="1563469795921" TEXT="re-Konstruieren">
<node CREATED="1563469797573" ID="ID_615107402" MODIFIED="1563469801027" TEXT="platt machen"/>
<node CREATED="1563469807081" ID="ID_1454613932" MODIFIED="1563469830842" TEXT="auf erneutes Einf&#xfc;gen warten"/>
</node>
</node>
<node COLOR="#338800" CREATED="1563469620357" ID="ID_530086217" MODIFIED="1679084608014" TEXT="Fork-Anzeige passend malen">
<linktarget COLOR="#fec680" DESTINATION="ID_530086217" ENDARROW="Default" ENDINCLINATION="-1511;-125;" ID="Arrow_ID_1923188182" SOURCE="ID_1575894780" STARTARROW="None" STARTINCLINATION="1147;124;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1563469700651" ID="ID_478580800" MODIFIED="1674513411592" TEXT="auf die richtige H&#xf6;he zielen">
<arrowlink COLOR="#6493a2" DESTINATION="ID_1561724587" ENDARROW="Default" ENDINCLINATION="7;82;" ID="Arrow_ID_1646540229" STARTARROW="None" STARTINCLINATION="-16;-50;"/>
<linktarget COLOR="#5ba7d5" DESTINATION="ID_478580800" ENDARROW="Default" ENDINCLINATION="358;-30;" ID="Arrow_ID_776518349" SOURCE="ID_904031404" STARTARROW="None" STARTINCLINATION="-77;131;"/>
<linktarget COLOR="#5a7c92" DESTINATION="ID_478580800" ENDARROW="Default" ENDINCLINATION="451;41;" ID="Arrow_ID_513449931" SOURCE="ID_1311832889" STARTARROW="None" STARTINCLINATION="481;-27;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1675898638485" ID="ID_164545383" MODIFIED="1678063046265" TEXT="Strukturdiagramm rendern">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1675898729441" ID="ID_1183614893" MODIFIED="1676047503876" TEXT="verwende direkt eine DrawingArea">
<icon BUILTIN="idea"/>
<node COLOR="#435e98" CREATED="1675898738064" ID="ID_736159731" LINK="https://developer-old.gnome.org/gtkmm-tutorial/stable/chapter-drawingarea.html.en" MODIFIED="1675898751929" TEXT="Tutorial">
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#338800" CREATED="1675901157415" ID="ID_1671076758" MODIFIED="1676047495780" TEXT="aber als Komponente abstrahiert">
<icon BUILTIN="yes"/>
<node CREATED="1675901877549" ID="ID_1912760164" MODIFIED="1676042929930" TEXT="Name: StaveBracket">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      In Anspielung auf
    </p>
    <ul>
      <li>
        eine Leiter
      </li>
      <li>
        ein Notensystem (stave)
      </li>
    </ul>
    <p>
      <sup>(*)</sup>&#160;<i>stave</i>&#160;ist zwar selterner und ausgepr&#228;gt Brittisch, <i>staff</i>&#160; w&#228;re gel&#228;ufiger. Aber <i>staff</i>&#160;versteht man heutzutage als Personal, wohingegen <i>stave</i>&#160;auch die Leitersprosse oder ein Vers in einem Gedicht sein k&#246;nnte (BE und AE)
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1675902281219" ID="ID_562499167" MODIFIED="1675902293521" TEXT="Zweck: Auspr&#xe4;gungen abstrahieren">
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1675902368504" ID="ID_239257634" MODIFIED="1675902380758" TEXT="ggfs expanded/collapsed">
<icon BUILTIN="hourglass"/>
</node>
<node CREATED="1675902382537" ID="ID_861207485" MODIFIED="1675902467097" TEXT="Ankn&#xfc;pfung f&#xfc;r Sub-Tracks"/>
</node>
</node>
<node COLOR="#338800" CREATED="1675902513027" ID="ID_1162268597" MODIFIED="1678063043688" TEXT="Implementierung">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1675902520928" ID="ID_468397914" MODIFIED="1678063037542" TEXT="Basisfunktionalit&#xe4;t">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1675902529503" FOLDED="true" ID="ID_544667587" MODIFIED="1678063124524" TEXT="draw()-Funktion">
<icon BUILTIN="button_ok"/>
<node CREATED="1676045132371" ID="ID_1480458495" MODIFIED="1676045152492" TEXT="Bezugspunkt: Tutorial + BodyCanvasWidget"/>
<node COLOR="#338800" CREATED="1676045153720" ID="ID_1064401846" MODIFIED="1676047466829" TEXT="on_draw() &#xfc;berlagern">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1676045162558" ID="ID_1938495472" LINK="#ID_1978068021" MODIFIED="1676046631665" TEXT="brauche Ausdehnng des Widgets">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...und zwar die konkret wirksame Ausdehnung &#10233; meiner Analyse zufolge ist das get_width|height()
    </p>
    <ul>
      <li>
        das ist die vom Framework gesetzte Allokation
      </li>
      <li>
        aber vor dem Abspeichern bereits um Dekoration verringert
      </li>
      <li>
        zuz&#252;glich aller Anpassungen f&#252;r das Flow-Layout
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node COLOR="#338800" CREATED="1676046608013" ID="ID_1701009358" MODIFIED="1676047576094" TEXT="erst mal einfachen Platzhalter zeichnen">
<linktarget COLOR="#60a5a0" DESTINATION="ID_1701009358" ENDARROW="Default" ENDINCLINATION="234;0;" ID="Arrow_ID_1201169468" SOURCE="ID_1689678210" STARTARROW="None" STARTINCLINATION="8;-5;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1676156477801" ID="ID_772056246" MODIFIED="1677851184706" TEXT="Grundstruktur zeichnen: Klammer">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1676156693199" FOLDED="true" ID="ID_1410623513" MODIFIED="1677851190441" TEXT="geschwungene Kappen">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1676156831767" FOLDED="true" ID="ID_1352090582" MODIFIED="1677284185352" TEXT="Problem: wie konstruieren?">
<icon BUILTIN="help"/>
<node CREATED="1676156890344" ID="ID_324278944" MODIFIED="1676156912279" TEXT="Geheimwissen &#x2014; wie so oft in der Typographie"/>
<node CREATED="1676156918897" ID="ID_489719344" LINK="https://en.wikipedia.org/wiki/List_of_musical_symbols" MODIFIED="1676156951217" TEXT="habe nur visuelle Beispiele &#x2014; z.B. Wikipedia"/>
<node COLOR="#435e98" CREATED="1676164934114" ID="ID_1016418668" MODIFIED="1677364828075" TEXT="Konstruktion auf Basis &#x3a6; anlegen">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="forward"/>
<node CREATED="1677205470277" ID="ID_1204016759" MODIFIED="1677205474955" TEXT="Doppellinie">
<node CREATED="1677364438087" ID="ID_932649273" MODIFIED="1677364453281" TEXT="Gesamtbreite legt Dimensionen insgesamt fest"/>
<node CREATED="1677364389022" ID="ID_1623449329" MODIFIED="1677364408921" TEXT="dicker Balken ist &#x3a6;-minor der Gesamtbreite"/>
<node CREATED="1677364411435" ID="ID_781796888" MODIFIED="1677364434492" TEXT="d&#xfc;nner Balken ist &#x3a6;-minor des dicken Balkens"/>
</node>
<node CREATED="1677205476133" ID="ID_451249239" MODIFIED="1677205482653" TEXT="Hauptquadrat">
<node CREATED="1677205505659" ID="ID_1891862127" MODIFIED="1677205530156" TEXT="scale{ 1/(1-1/&#x3a6;) }"/>
<node CREATED="1677205538913" ID="ID_1613242195" MODIFIED="1677205581045" TEXT="vertikaler Minor &#x27fc; Endpunkt vertikale Linie"/>
</node>
<node CREATED="1677205616988" ID="ID_470162114" MODIFIED="1677205624711" TEXT="Au&#xdf;enkurve">
<node CREATED="1677205631010" ID="ID_1117749219" MODIFIED="1677205640109" TEXT="Sehne = Diagonale Hauptquadrat"/>
<node CREATED="1677205650958" ID="ID_155372806" MODIFIED="1677205703445" TEXT="Tangente: Spize &#x27f6; horiz.Minor Hauptquadrat"/>
<node CREATED="1677205740036" ID="ID_788217131" MODIFIED="1677364478714" TEXT="Zentrum konstruieren">
<node CREATED="1677205747920" ID="ID_1509790675" MODIFIED="1677205759434" TEXT="Lot auf Mitte der Diagonale"/>
<node CREATED="1677205764916" ID="ID_30297184" MODIFIED="1677205777594" TEXT="Lot auf Tangente an der Spitze"/>
</node>
</node>
<node CREATED="1677205625515" ID="ID_411317980" MODIFIED="1677205629214" TEXT="Innenkurve">
<node CREATED="1677205631010" ID="ID_780001839" MODIFIED="1677364489149" TEXT="Tangente = Diagonale Hauptquadrat"/>
<node CREATED="1677364496607" ID="ID_578436980" MODIFIED="1677364509846" TEXT="Tangente: Spize &#x27f6; vertikaler Minor Hauptquadrat"/>
</node>
<node CREATED="1676165507261" ID="ID_562483038" MODIFIED="1677190170688" TEXT="vom Einheitsvektor ausgehen">
<node CREATED="1677190210159" ID="ID_1346884569" MODIFIED="1677190317384" TEXT="Basiseinheit: Breite der Doppellinie"/>
<node CREATED="1677167813605" ID="ID_997308984" MODIFIED="1677167818070" TEXT="sauber eichen">
<node CREATED="1677190330303" ID="ID_885253503" MODIFIED="1677190343796" TEXT="Zielwert &#x2254; 1mm"/>
<node CREATED="1677205286217" ID="ID_1445174518" MODIFIED="1677205301480">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      nominell: <b>96</b>dpi
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1677167818898" ID="ID_1345692974" MODIFIED="1677190343808">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      mein Display: <b>90</b>dpi
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Ich habe beim Upgrade auf Debian-Stretch mal nachgemessen: tats&#228;chlich hat mein Display 94dpi. Demnach w&#228;re der andere weithin &#252;bliche Wert von 96dpi pr&#228;ziser. Jedoch bin ich nach mehreren Experimenten bei 90dpi geblieben, da f&#252;r mich so die Schriftarten die &#8222;richtige Gr&#246;&#223;e&#8220; haben &#8212; das mag auch daran liegen, da&#223; ich leicht kurzsichtig bin und typischeweise etwas n&#228;her am Bildschirm sitze.
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
<node CREATED="1676164971685" ID="ID_1507492450" MODIFIED="1677284035539" TEXT="Problem: das ist Geometrie &#x2014; in Formeln wird das ekelig komplex">
<arrowlink COLOR="#5152b9" DESTINATION="ID_202336910" ENDARROW="Default" ENDINCLINATION="-527;-15;" ID="Arrow_ID_977343845" STARTARROW="None" STARTINCLINATION="-163;204;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
<node BACKGROUND_COLOR="#dcb49d" COLOR="#990033" CREATED="1676165456820" ID="ID_1427913040" MODIFIED="1677283981558" TEXT="Alternative? in SVG konstruieren...">
<icon BUILTIN="help"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1676165519603" ID="ID_376786419" MODIFIED="1677364763179" TEXT="Ziel...">
<icon BUILTIN="yes"/>
<node CREATED="1677364725006" ID="ID_768569378" MODIFIED="1677364747014" TEXT="von der Basisbreite ausgehend aufbauen"/>
<node CREATED="1676165528682" ID="ID_235151946" MODIFIED="1676165554904" TEXT="dann Koordinaten der Kreismittelpunkte abgreifen"/>
<node CREATED="1676165556446" ID="ID_211841098" MODIFIED="1676165562730" TEXT="...und numerisch &#xfc;bernehmen"/>
</node>
<node CREATED="1677205326328" ID="ID_1478270063" MODIFIED="1677205332495" TEXT="Konstruktion ausf&#xfc;hren">
<node CREATED="1677364619517" ID="ID_769583838" MODIFIED="1677364632896" TEXT="zun&#xe4;chst am Nullpunkt anlegen mit Basis = 1mm"/>
<node CREATED="1677191805647" ID="ID_1613786140" MODIFIED="1677364656553" TEXT="numerische Koordinaten in SVG">
<arrowlink COLOR="#6f90b6" DESTINATION="ID_1597077699" ENDARROW="Default" ENDINCLINATION="-895;71;" ID="Arrow_ID_1698154465" STARTARROW="None" STARTINCLINATION="-1020;86;"/>
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1677205333819" ID="ID_1685591638" MODIFIED="1677283853536" TEXT="m&#xfc;hsam ... Inkscape ist nicht das richtige Tool">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ich kann zwar einrasten, aber ich kann weder um einen definierten Punkt drehen, noch kann ich Schnittpunkte ermitteln
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node BACKGROUND_COLOR="#e6ddbc" COLOR="#ff0000" CREATED="1677283856940" ID="ID_118538540" MODIFIED="1677283923821" TEXT="Abbruch : mein Design ist nicht mit ad&#xe4;quatem Aufwand umsetzbar">
<arrowlink COLOR="#cf74ac" DESTINATION="ID_165173262" ENDARROW="Default" ENDINCLINATION="-34;-68;" ID="Arrow_ID_1819141539" STARTARROW="None" STARTINCLINATION="-222;9;"/>
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node CREATED="1677238756686" ID="ID_165173262" MODIFIED="1677283951972" TEXT="Alternative: CAD oder Geometrie-Software">
<linktarget COLOR="#cf74ac" DESTINATION="ID_165173262" ENDARROW="Default" ENDINCLINATION="-34;-68;" ID="Arrow_ID_1819141539" SOURCE="ID_118538540" STARTARROW="None" STARTINCLINATION="-222;9;"/>
<icon BUILTIN="forward"/>
<node CREATED="1677238769330" ID="ID_617917879" MODIFIED="1677238790265" TEXT="Software">
<node CREATED="1677238794907" FOLDED="true" ID="ID_1719994425" LINK="https://www.geogebra.org/" MODIFIED="1677244193493" TEXT="GeoGebra">
<arrowlink COLOR="#da185e" DESTINATION="ID_1078055608" ENDARROW="Default" ENDINCLINATION="-64;0;" ID="Arrow_ID_1447934837" STARTARROW="None" STARTINCLINATION="9;138;"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1677238915023" ID="ID_953437888" MODIFIED="1677238928092" TEXT="Geometrie und Algebra Toolbox">
<node CREATED="1677240624402" ID="ID_515446896" MODIFIED="1677240641754" TEXT="Fokus auf Lehre / Schule"/>
<node CREATED="1677240642624" ID="ID_189832046" MODIFIED="1677240663713" TEXT="Aktivit&#xe4;t : eine schrittweise Konstruktion oder Probleml&#xf6;sung"/>
<node CREATED="1677240664813" ID="ID_1212012977" MODIFIED="1677240675112" TEXT="viele Online-Ressourcen und Lehrmittel"/>
<node CREATED="1677240745370" ID="ID_128860" MODIFIED="1677240758719" TEXT="SVG-Export (und PNG, EPS, ...)"/>
</node>
<node CREATED="1677239908146" ID="ID_1839763021" MODIFIED="1677239917765" TEXT="Java / Swing-Applikation">
<node CREATED="1677242327780" ID="ID_1944426459" LINK="https://www.geogebra.org/classic" MODIFIED="1677242340669" TEXT="auch online als Web-Tool"/>
</node>
<node CREATED="1677239038943" ID="ID_1843905901" MODIFIED="1677239044954" TEXT="in Debian paketiert"/>
<node CREATED="1677242504444" ID="ID_1552853335" MODIFIED="1677243232265" TEXT="Dokumentation problematisch">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1677242518868" ID="ID_361444559" MODIFIED="1677242527763" TEXT="es gibt eine Unmenge an Einzeltutorials"/>
<node CREATED="1677242528649" ID="ID_1133975830" MODIFIED="1677242536188" TEXT="kein richties Handbuch">
<node CREATED="1677242594624" ID="ID_741403940" MODIFIED="1677242644637" TEXT="nur sehr spezifische Lehrmaterialien">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      &quot;Mathe f&#252;r 6-13 j&#228;rige&quot; etc
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1677242603776" ID="ID_56189532" MODIFIED="1677242615900" TEXT="und jede Menge online-Aktivit&#xe4;ten, aber ohne Erkl&#xe4;rung"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1677242537008" ID="ID_910645802" MODIFIED="1677242546207" TEXT="diverse Links sind obsolet">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1677243177482" ID="ID_705204121" LINK="https://wiki.geogebra.org/en/Manual" MODIFIED="1677243238963" TEXT="&#xbb;Geogebra Manual&#xab;">
<icon BUILTIN="info"/>
<node CREATED="1677243516505" ID="ID_953227506" MODIFIED="1677243647101" TEXT="grr... erkl&#xe4;rt zwar jeden Button, aber nicht wie man damit arbeitet"/>
</node>
</node>
<node CREATED="1677241885336" ID="ID_922881345" MODIFIED="1677241917669" TEXT="verwirrend">
<node CREATED="1677241919382" ID="ID_212507936" MODIFIED="1677241941020" TEXT="zwar numerische Anzeige, aber nicht editierbar"/>
<node CREATED="1677242720631" ID="ID_1715446782" MODIFIED="1677242734352" TEXT="es gibt ein &quot;Konstruktionsprotokoll&quot;">
<node CREATED="1677242735581" ID="ID_1534936589" MODIFIED="1677242750107" TEXT="Doppelklick &#xf6;ffnet einen Editor"/>
<node CREATED="1677242750955" ID="ID_1710116847" MODIFIED="1677242765269" TEXT="der bietet eins symbolische Notation, aber nirgends die Zahlenwerte"/>
<node CREATED="1677243712139" ID="ID_175318062" MODIFIED="1677243737909" TEXT="man kann einzelne Objekte per Zuweisung redefinieren">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      b = 0.6180339887498948482
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1677243789088" ID="ID_1550304217" MODIFIED="1677243866319" TEXT="aber man kann nicht einen Parameter &#xe4;ndern und die Konstruktion als Solche erhalten">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      wenn man nachtr&#228;glich einzelne Objekte modifiziert, &#228;ndern sicn nur diese, aber keine davon abh&#228;ngigen weiteren Schritte der Konstruktion
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1677243870078" ID="ID_1078055608" MODIFIED="1677244131861" TEXT="das hei&#xdf;t: man kann eine Konstruktion zwar machen, aber nicht korrigieren">
<linktarget COLOR="#da185e" DESTINATION="ID_1078055608" ENDARROW="Default" ENDINCLINATION="-64;0;" ID="Arrow_ID_1447934837" SOURCE="ID_1719994425" STARTARROW="None" STARTINCLINATION="9;138;"/>
<icon BUILTIN="stop-sign"/>
</node>
</node>
</node>
<node CREATED="1677238808005" FOLDED="true" ID="ID_1447394424" LINK="http://car.rene-grothmann.de/doc_en/download.html" MODIFIED="1677244191316" TEXT="CaR / CaRMetal">
<arrowlink COLOR="#d92b65" DESTINATION="ID_297781372" ENDARROW="Default" ENDINCLINATION="-296;0;" ID="Arrow_ID_1075588267" STARTARROW="None" STARTINCLINATION="40;58;"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1677238883419" ID="ID_996300782" MODIFIED="1677238894961" TEXT="&#xbb;Compass and Ruler&#xab;">
<node CREATED="1677238901406" ID="ID_1722907500" MODIFIED="1677238907188" TEXT="in Java geschriebene Engine"/>
<node CREATED="1677238907984" ID="ID_1026090446" MODIFIED="1677238912707" TEXT="einfache Konstruktionstool"/>
</node>
<node CREATED="1677238845913" ID="ID_843441309" MODIFIED="1677238866366" TEXT="CaR Metal : altenative Oberfl&#xe4;che">
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1677238867829" ID="ID_943917483" MODIFIED="1677241856930" TEXT="keine Webseite / Doku mehr">
<icon BUILTIN="stop-sign"/>
</node>
<node CREATED="1677238875812" ID="ID_1852293959" MODIFIED="1677238881527" TEXT="aber paketiert in Debian"/>
<node CREATED="1677241653479" ID="ID_1785287496" MODIFIED="1677241732497" TEXT="einfache Konstruktionsmittel">
<node CREATED="1677241733629" ID="ID_71114216" MODIFIED="1677241738194" TEXT="Grade, Strecke, Winkel"/>
<node CREATED="1677241738953" ID="ID_1098408302" MODIFIED="1677241773986" TEXT="&quot;point and shot&quot;-Interface">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Anweisungen in der Statuszeile: w&#228;hle ersten Punkt, setze zweiten Punkt....
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1677241777330" ID="ID_424248281" MODIFIED="1677241786137" TEXT="Liste der Operationen, numerisch editierbar"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1677241862331" ID="ID_297781372" MODIFIED="1677244098449" TEXT="komme damit nicht zurecht">
<linktarget COLOR="#d92b65" DESTINATION="ID_297781372" ENDARROW="Default" ENDINCLINATION="-296;0;" ID="Arrow_ID_1075588267" SOURCE="ID_1447394424" STARTARROW="None" STARTINCLINATION="40;58;"/>
<icon BUILTIN="stop-sign"/>
<node CREATED="1677241973839" ID="ID_1096129274" MODIFIED="1677241987298" TEXT="kann zwar Punkte / Strecken numerisch definieren"/>
<node CREATED="1677242051018" ID="ID_684143104" MODIFIED="1677242075172" TEXT="auf Strecke eingerasteter Punkt numerisch nicht editierbar"/>
<node CREATED="1677241988241" ID="ID_1052932142" MODIFIED="1677241995958" TEXT="kann aber nicht eine Teilkonstruktion drehen"/>
</node>
</node>
</node>
<node CREATED="1677238791314" ID="ID_732751692" LINK="https://wiki.freecad.org/Getting_started" MODIFIED="1677282549626" TEXT="FreeCAD">
<icon BUILTIN="forward"/>
<node CREATED="1677238946963" ID="ID_872231218" MODIFIED="1677238966708" TEXT="3D-CAD Software f&#xfc;r Bauteil-Konstruktion">
<node CREATED="1677238982982" ID="ID_778717508" MODIFIED="1677239008236" TEXT="Paradigma: dynamisch-funktional">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      man zeichnet nicht, sondern man stellt eine Liste von Operationen zusammen
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1677244165006" ID="ID_726530336" MODIFIED="1677244170985" TEXT="sehr m&#xe4;chtig (und komplex)"/>
</node>
<node COLOR="#435e98" CREATED="1677244173653" ID="ID_1314330853" MODIFIED="1677282545474" TEXT="Versuch: Umgang lernen?">
<icon BUILTIN="help"/>
<node CREATED="1677244515831" ID="ID_475033609" MODIFIED="1677244547510" TEXT="Debian-oldstable &#x27f9; 0.18 / aktuell 0.20"/>
<node CREATED="1677244552626" ID="ID_1256925438" MODIFIED="1677244574933" TEXT="Hilfe aus der Applikation heraus funktioniert">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      embedded browser control
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1677246748493" ID="ID_764653557" MODIFIED="1677246767781" TEXT="siehe auch Notizen in Buster.mm">
<icon BUILTIN="forward"/>
</node>
<node CREATED="1677244993104" ID="ID_1394628058" LINK="https://wiki.freecad.org/Workbenches" MODIFIED="1677246774020" TEXT="Konzept: Workbenches">
<node CREATED="1677246775288" ID="ID_632741732" MODIFIED="1677279255738" TEXT="f&#xfc;r mich: Sketcher Workbench"/>
<node CREATED="1677279264883" ID="ID_1434090599" LINK="https://wiki.freecad.org/Basic_Sketcher_Tutorial" MODIFIED="1677279278124" TEXT="Basic Sketcher Tutorial">
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#338800" CREATED="1677282525678" ID="ID_661917025" MODIFIED="1677282542592" TEXT="konnte meinen Design-Enwurf ohne Weiteres umsetzen">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#e2e4a6" COLOR="#338800" CREATED="1677283407557" ID="ID_1887076724" MODIFIED="1677283453893" TEXT="das Konzept mit den Constraints ist sehr intuitiv und elegant">
<icon BUILTIN="ksmiletris"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1677282565360" ID="ID_1318516899" MODIFIED="1677282579408" TEXT="Aber: Integration ist problematisch">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1677282651864" ID="ID_749202376" MODIFIED="1677282788849" TEXT="Applikation ist robust aber verh&#xe4;llt sich teilweise absonderlich">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Das liegt vielleicht auch an der etwas &#8222;alten&#8220; Version von ca. 2018.
    </p>
    <p>
      K&#246;nnte aber auch auf grunds&#228;tzliche Limitierungen hinweisen; man hat eben vor allem an das Design von 3D-Bauteilen gedacht
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1677282582168" ID="ID_1875937065" MODIFIED="1677283406645" TEXT="Das UI ist nicht ausreichend konfigurierbar">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Das UI-Design ist vom konkreten Einzelfall-Nutzen ausgegangen, nicht von einem stimmigen Gesamtentwurf. Alles ist auf das Konstruieren von 3D-Bauteilen in typischem handlichen Format ausgelegt: eine kleine Zahl an Einzelobjekten im cm-Bereich....
    </p>
    <p>
      
    </p>
    <p>
      Ich komme jetzt mit einer Konstruktion im Sub-Millimeter-Bereich, und ich br&#228;uchte sich &#252;berlappende Formen ....
    </p>
    <ul>
      <li>
        die Anzeige-Handhabung wird dann &quot;frickelig&quot;
      </li>
      <li>
        die Beschriftungen sind viel zu gro&#223; und lassen sich nicht sinnvoll platzieren
      </li>
      <li>
        es gibt nur die starre Unterscheidung in &#187;Hilfslinien&#171; (construction) und &#187;Geometrie&#171;
      </li>
      <li>
        letztere mu&#223; &#252;berschneidungsfrei sein
      </li>
      <li>
        f&#252;r mein Design habe ich dann ca 50 nummerierte Constraints, die anhand der Anzeige kaum mehr sinnvoll nachvollziehbar sind...
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node CREATED="1677285183885" ID="ID_1263712065" MODIFIED="1677285326059" TEXT="Expressions, Objektmodell und Rererenzen lassen zu w&#xfc;nschen &#xfc;brig">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Die Geometrie-Elemente in den Sketch-Objekten sind eine Spezial-Implementierung, und keine &#187;first class citizens&#171;. Es ist nicht klar, wie man sie aus Expressions referenzieren kann (kein sauberes DSL-Design). Das Dependency-Management ist viel zu naiv implementiert, und es wird empfohlen, mit Tricks und Kniffen zu arbeiten.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1677284865478" ID="ID_1467561719" MODIFIED="1677285153626" TEXT="Contstraints und Expressions sind noch nicht vollst&#xe4;ndig entwickelt">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Eine Funktion, um eine Linie gem&#228;&#223; Proportion zu teilen, wird zwar oft gew&#252;nscht, ist aber derzeit (2022) noch in Entwicklung. Daher kann man im Moment nur eine feste Basisl&#228;nge als benannter Constraint vorgeben, und dann andere L&#228;ngen per Expression <font face="Monospaced" color="#1418c4">=Constraint.basis * (1+sqrt(5)/2</font>&#160;&#160;daran binden. Au&#223;erdem kann man solche Expressions zwar einmal initial eigeben, dann aber nur noch &#252;ber das XML editieren.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="broken-line"/>
</node>
<node CREATED="1677283111823" ID="ID_991289244" MODIFIED="1677283133867">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      &#10233; ich kann das <b>Ergebnis nicht exportieren</b>
    </p>
  </body>
</html></richcontent>
<node CREATED="1677283135738" ID="ID_924427179" MODIFIED="1677283153136" TEXT="l&#xe4;&#xdf;t sich nicht in ein Bauteil &#xfc;bersetzen"/>
<node CREATED="1677283209076" ID="ID_1767198864" MODIFIED="1677283225596" TEXT="l&#xe4;&#xdf;t sich nicht sinnvoll in eine technische Zeichnung integriern"/>
<node CREATED="1677283226896" ID="ID_1105190200" MODIFIED="1677283257013" TEXT="als Skizze verwendet &#x27f9; die Hilfslinien fehlen"/>
<node CREATED="1677283259677" ID="ID_1713241605" MODIFIED="1677283331779" TEXT="Export als &#xbb;Flat SVG&#xab; scheitert mit einem Logikfehler">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      a bytes-like object is required, not &quot;str&quot;
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1677283465368" ID="ID_1881375763" MODIFIED="1677283523222" TEXT="mu&#xdf; mir die Geometrie aus dem XML per Hand extrahieren">
<icon BUILTIN="stop-sign"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1677283530663" ID="ID_643259548" MODIFIED="1677284165733">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      die konkrete Aufgabe ist mit FreeCAD elegant<br />&#8212; aber Resultate sind schwer zug&#228;nglich &#8212;
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="smiley-oh"/>
<node COLOR="#435e98" CREATED="1677283735683" ID="ID_202336910" MODIFIED="1677284152469" TEXT="die Konstruktionsmittel sind ad&#xe4;quat">
<linktarget COLOR="#5152b9" DESTINATION="ID_202336910" ENDARROW="Default" ENDINCLINATION="-527;-15;" ID="Arrow_ID_977343845" SOURCE="ID_1507492450" STARTARROW="None" STARTINCLINATION="-163;204;"/>
</node>
<node COLOR="#435e98" CREATED="1677283745698" ID="ID_1707816095" MODIFIED="1677284160611" TEXT="die Konstruktion l&#xe4;&#xdf;t sich leicht aufbauen"/>
<node CREATED="1677283756954" ID="ID_550771506" MODIFIED="1677283773330" TEXT="das Resultat ist aber schwer nachvollziehbar"/>
<node CREATED="1677283775971" ID="ID_906696321" MODIFIED="1677283797495" TEXT="die Konstruktion kann nicht exportiert oder sauber dargestellt werden"/>
<node COLOR="#435e98" CREATED="1677283798612" ID="ID_178736804" MODIFIED="1677284158056" TEXT="letztlich habe ich nur die Koordinaten im XML">
<arrowlink COLOR="#d93353" DESTINATION="ID_314954569" ENDARROW="Default" ENDINCLINATION="229;0;" ID="Arrow_ID_1387442926" STARTARROW="None" STARTINCLINATION="-193;12;"/>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node CREATED="1677284059069" ID="ID_239372381" MODIFIED="1677284076170" TEXT="in diesem konkreten Fall brauche ich nur ein paar numerische Koordinaten"/>
<node CREATED="1677284078398" ID="ID_314954569" MODIFIED="1677284135625" TEXT="die habe ich jetzt (manuell aus dem XML entnehmen)">
<arrowlink COLOR="#4e50ba" DESTINATION="ID_175092425" ENDARROW="Default" ENDINCLINATION="20;-39;" ID="Arrow_ID_1002715155" STARTARROW="None" STARTINCLINATION="-95;5;"/>
<linktarget COLOR="#d93353" DESTINATION="ID_314954569" ENDARROW="Default" ENDINCLINATION="229;0;" ID="Arrow_ID_1387442926" SOURCE="ID_178736804" STARTARROW="None" STARTINCLINATION="-193;12;"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1677284093289" ID="ID_445049749" MODIFIED="1677284109270" TEXT="Fazit: keine generell brauchbare L&#xf6;sung">
<icon BUILTIN="broken-line"/>
</node>
</node>
<node COLOR="#338800" CREATED="1677331147847" ID="ID_175092425" MODIFIED="1677370706976" TEXT="ermittelte Koordinaten extrahieren">
<linktarget COLOR="#4e50ba" DESTINATION="ID_175092425" ENDARROW="Default" ENDINCLINATION="20;-39;" ID="Arrow_ID_1002715155" SOURCE="ID_314954569" STARTARROW="None" STARTINCLINATION="-95;5;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1677331237859" ID="ID_437122420" MODIFIED="1677332146589" TEXT="bezogen auf Linienweite == 1mm">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_437122420" ENDARROW="Default" ENDINCLINATION="352;0;" ID="Arrow_ID_881918480" SOURCE="ID_21344516" STARTARROW="None" STARTINCLINATION="368;-26;"/>
</node>
<node CREATED="1677364959969" ID="ID_369230805" MODIFIED="1677364964269" TEXT="Doppellinie">
<node CREATED="1677365146529" ID="ID_615879743" MODIFIED="1677365149756" TEXT="Balken">
<node CREATED="1677365150864" ID="ID_721966969" MODIFIED="1677365152884" TEXT="links">
<node CREATED="1677365787195" ID="ID_372898739" MODIFIED="1677365789420" TEXT="-0.3819660112501033"/>
</node>
<node CREATED="1677365153860" ID="ID_1720144005" MODIFIED="1677365157523" TEXT="Breite">
<node CREATED="1677366839611" ID="ID_1835454334" MODIFIED="1677366839611" TEXT="0.3819660112501033"/>
<node CREATED="1677861231484" ID="ID_1930167405" MODIFIED="1677861233712" TEXT="&#x3a6;-minor"/>
</node>
</node>
<node CREATED="1677365163942" ID="ID_1262283150" MODIFIED="1677365167810" TEXT="Linie">
<node CREATED="1677365150864" ID="ID_786192191" MODIFIED="1677365152884" TEXT="links">
<node CREATED="1677366744194" ID="ID_576965784" MODIFIED="1677366744194" TEXT="0.4721359549995793"/>
<node CREATED="1677861270767" ID="ID_1949339527" MODIFIED="1677861283377" TEXT="&#x3a6;-major -  Breite"/>
</node>
<node CREATED="1677365153860" ID="ID_595356019" MODIFIED="1677365157523" TEXT="Breite">
<node CREATED="1677366786332" ID="ID_1751894187" MODIFIED="1677366789785" TEXT="0.1458980337503155"/>
<node CREATED="1677861251177" ID="ID_211146367" MODIFIED="1677861259039" TEXT="(&#x3a6;-minor)&#xb2;"/>
</node>
</node>
<node CREATED="1677366276186" ID="ID_457752414" MODIFIED="1677366882793" TEXT="rechts">
<node CREATED="1677366281105" ID="ID_1207712165" MODIFIED="1677366283333" TEXT="0.6180339887498948"/>
</node>
</node>
<node CREATED="1677364965121" ID="ID_800468010" MODIFIED="1677364972443" TEXT="Hauptquadrat">
<node CREATED="1677364975639" ID="ID_980972277" MODIFIED="1677365000890" TEXT="Gesamtbreite">
<node CREATED="1677365581447" ID="ID_1536779924" MODIFIED="1677365584420" TEXT="2.6180339887498953"/>
<node CREATED="1677365948797" ID="ID_439638462" MODIFIED="1677365956616" TEXT="&#x3a6;&#xb2;"/>
</node>
<node CREATED="1677365002626" ID="ID_1214050837" MODIFIED="1677365013534" TEXT="&#x3a6;-minor">
<node CREATED="1677365873056" ID="ID_21344516" MODIFIED="1677365942712" TEXT="1.0">
<arrowlink DESTINATION="ID_437122420" ENDARROW="Default" ENDINCLINATION="352;0;" ID="Arrow_ID_881918480" STARTARROW="None" STARTINCLINATION="368;-26;"/>
</node>
</node>
<node CREATED="1677365024897" ID="ID_1080324350" MODIFIED="1677365030156" TEXT="Spitze">
<node CREATED="1677366042929" ID="ID_931394195" MODIFIED="1677861076642" TEXT="&#x3a6;&#xb2; - &#x3a6;-minor">
<node CREATED="1677366042929" ID="ID_861341963" MODIFIED="1677861104342" TEXT="2.2360679774997880"/>
</node>
<node CREATED="1677366091306" ID="ID_1220515657" MODIFIED="1677861059471" TEXT="&#x3a6;&#xb2;">
<node CREATED="1677366091306" ID="ID_1245813830" MODIFIED="1677861105707" TEXT="2.6180339887498931"/>
</node>
</node>
<node CREATED="1677365057285" ID="ID_1262105297" MODIFIED="1677365060840" TEXT="Mitte">
<node CREATED="1677861431937" ID="ID_734498141" MODIFIED="1677861482575" TEXT="&#x3a6;&#xb2;/2 - &#x3a6;-minor">
<node CREATED="1677366380685" ID="ID_1473309857" MODIFIED="1677366382633" TEXT="0.9270509831248426"/>
</node>
<node CREATED="1677861472620" ID="ID_462202557" MODIFIED="1677861478375" TEXT="&#x3a6;&#xb2;/2">
<node CREATED="1677366414197" ID="ID_980628298" MODIFIED="1677861494360" TEXT="1.3090169943749477"/>
</node>
</node>
<node CREATED="1677366530209" ID="ID_1369679680" MODIFIED="1677861872506" TEXT="Auge">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Mitte der &#187;Oberdiogonalen&#171;, d.h die Diagonale durch das obere Rechteck mit H&#246;he &#934;-major und voller Breite
    </p>
  </body>
</html></richcontent>
<node CREATED="1677366380685" ID="ID_1234225514" MODIFIED="1677366604271" TEXT="0.9270509831248426"/>
<node CREATED="1677366596379" ID="ID_888978877" MODIFIED="1677366596379" TEXT="1.8090169943749466"/>
<node CREATED="1677861748026" ID="ID_686856800" MODIFIED="1677861797202" TEXT="1 + (&#x3a6;&#xb2;-1)/2 = 1+&#x3a6;/2"/>
</node>
</node>
<node CREATED="1677365073270" ID="ID_1583254932" MODIFIED="1677365077542" TEXT="Au&#xdf;enbogen">
<node CREATED="1677365085156" ID="ID_653816127" MODIFIED="1677365088556" TEXT="Zentrum">
<node CREATED="1677861176926" ID="ID_1292417077" MODIFIED="1677861194492" TEXT="-(&#x3a6;+3)">
<node CREATED="1677366982576" ID="ID_1594210270" MODIFIED="1677366982576" TEXT="-4.6180339887498949"/>
</node>
<node CREATED="1677366993247" ID="ID_712675731" MODIFIED="1677366993247" TEXT="6.8541019662496847"/>
</node>
<node CREATED="1677365089489" ID="ID_1183768368" MODIFIED="1677365092867" TEXT="Radius">
<node CREATED="1677367032877" ID="ID_818254257" MODIFIED="1677367032877" TEXT="8.0574801069408135"/>
</node>
<node CREATED="1677365093931" ID="ID_1368458373" MODIFIED="1677365099512" TEXT="Bogen">
<node CREATED="1677368264383" ID="ID_1877634925" MODIFIED="1677368499104" TEXT="jeweils in Radians">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      &#8630; freeCAD : rechtsdrehend(mathematisch)
    </p>
    <p>
      &#8635; SVG : linksdrehend(im Uhrzeigersinn)
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
<node CREATED="1677373465002" ID="ID_524475211" LINK="#ID_1744669640" MODIFIED="1677373610517" TEXT="SVG-Format (Bogen)"/>
</node>
<node CREATED="1677365101279" ID="ID_309582280" MODIFIED="1677365104554" TEXT="start">
<node CREATED="1677367072268" ID="ID_388732438" MODIFIED="1677368175707" TEXT="&#x21b6; 5.7296109482825415"/>
<node CREATED="1677368199136" ID="ID_1326605326" MODIFIED="1677368257564" TEXT="&#x21bb; 0.55357435889704497693"/>
</node>
<node CREATED="1677365105470" ID="ID_1213567454" MODIFIED="1677365108865" TEXT="ende">
<node CREATED="1677367057705" ID="ID_91931169" MODIFIED="1677368179501" TEXT="&#x21b6; 5.2659633392817353"/>
<node CREATED="1677368224317" ID="ID_1444212890" MODIFIED="1677368744466" TEXT="&#x21bb; 1.01722196789785117693"/>
</node>
</node>
</node>
<node CREATED="1677365078501" ID="ID_955005504" MODIFIED="1677365081405" TEXT="Innenbogen">
<node CREATED="1677365085156" ID="ID_813159851" MODIFIED="1677365088556" TEXT="Zentrum">
<node CREATED="1677368552079" ID="ID_1476258553" MODIFIED="1677368612404" TEXT="-2.5"/>
<node CREATED="1677368596904" ID="ID_1839296871" MODIFIED="1677368596904" TEXT="7.3541019662496883"/>
</node>
<node CREATED="1677365089489" ID="ID_890819800" MODIFIED="1677365092867" TEXT="Radius">
<node CREATED="1677368633644" ID="ID_500144152" MODIFIED="1677368633644" TEXT="6.6978115661011230"/>
</node>
<node CREATED="1677365093931" ID="ID_685249674" MODIFIED="1677365099512" TEXT="Bogen">
<node CREATED="1677365101279" ID="ID_1674682593" MODIFIED="1677365104554" TEXT="start">
<node CREATED="1677367072268" ID="ID_1866888240" MODIFIED="1677368682376" TEXT="&#x21b6; 5.4977871437821380"/>
<node CREATED="1677368199136" ID="ID_900568930" MODIFIED="1677368772734" TEXT="&#x21bb; 0.78539816339744847693"/>
</node>
<node CREATED="1677365105470" ID="ID_1589081319" MODIFIED="1677365108865" TEXT="ende">
<node CREATED="1677367057705" ID="ID_16066835" MODIFIED="1677368698709" TEXT="&#x21b6; 5.0341395347813327"/>
<node CREATED="1677368224317" ID="ID_368023948" MODIFIED="1677368739395" TEXT="&#x21bb; 1.24904577239825377693"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1677284189119" ID="ID_848175311" MODIFIED="1677984956527" TEXT="Dokumentation im SVG darstellen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1677285339149" ID="ID_622350527" MODIFIED="1677373894578" TEXT="manuell die Koordinaten ins SVG reinschreiben">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1677336149759" ID="ID_436410709" MODIFIED="1677336194334" TEXT="Konstruktion vollst&#xe4;ndig anlegen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1677336159392" ID="ID_721716534" MODIFIED="1677336193101" TEXT="Elemente im SVG konsistent reorganisieren">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1677336199897" ID="ID_1876418381" MODIFIED="1677336290693" TEXT="Gruppe r_trans f&#xfc;r die Platzierung auf der Seite"/>
<node COLOR="#435e98" CREATED="1677336215871" ID="ID_142480272" MODIFIED="1677336290694" TEXT="Gruppe_r_ref umfa&#xdf;t die Konstruktion und tr&#xe4;gt den Style"/>
<node COLOR="#435e98" CREATED="1677336240060" ID="ID_1544427721" MODIFIED="1677336290694" TEXT="Gruppe r_rubline f&#xfc;r die vertikale Doppelline"/>
<node COLOR="#435e98" CREATED="1677336251555" ID="ID_595975745" MODIFIED="1677336290694" TEXT="Gruppe r_mainsquare f&#xfc;r das die Klammer umschliepende Quadrat"/>
<node COLOR="#435e98" CREATED="1677336274103" ID="ID_1407156022" MODIFIED="1677336290694" TEXT="Gruppe r_construct f&#xfc;r die Hilfskonstruktion"/>
</node>
<node COLOR="#338800" CREATED="1677373822502" ID="ID_451537185" MODIFIED="1677373832016" TEXT="Koordinaten reinkleben und runden">
<icon BUILTIN="button_ok"/>
<node CREATED="1677373465002" ID="ID_863876376" LINK="#ID_1744669640" MODIFIED="1677373847959" TEXT="SVG-Format (Bogen)">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1677285356443" ID="ID_1264869426" MODIFIED="1677969711023" TEXT="von diesen Eckpunkten ausgehend die Konstruktion rekonstruieren">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1677373881642" ID="ID_1218195679" MODIFIED="1677373890994" TEXT="skalieren mit Faktor 10">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1677969712922" ID="ID_1925495036" MODIFIED="1677969746070" TEXT="platzieren nach (50, 70)">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1677969764690" ID="ID_1467582175" MODIFIED="1677969832530" TEXT="Beschriftung">
<icon BUILTIN="button_ok"/>
<node CREATED="1677969777393" ID="ID_1079168037" MODIFIED="1677969793058" TEXT="&#x3a6; und &#x3a6;&#xb2; anzeigen"/>
<node CREATED="1677969815402" ID="ID_1142467839" MODIFIED="1677969819526" TEXT="square_minor"/>
<node CREATED="1677969794531" ID="ID_36594722" MODIFIED="1677969823012" TEXT="base_width"/>
<node CREATED="1677969824779" ID="ID_1673607654" MODIFIED="1677969829494" TEXT="origin"/>
</node>
<node COLOR="#338800" CREATED="1677984963525" ID="ID_1359201455" MODIFIED="1677984979078" TEXT="die Konstruktion textuell beschreiben (im TiddlyWiki)">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1677285374042" ID="ID_597185643" MODIFIED="1677984959942" TEXT="Ma&#xdf;gabe: jemand anders soll diese Konstruktion verstehen k&#xf6;nnen">
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#338800" CREATED="1677285400989" ID="ID_771507385" MODIFIED="1677775780712" TEXT="Koordinaten direkt in den Cairo-Zeichencode &#xfc;bernehmen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1677417336095" ID="ID_953306031" MODIFIED="1677425935036" TEXT="Einrichtung : Zeichnen gef&#xfc;llter Formen">
<icon BUILTIN="button_ok"/>
<node CREATED="1677417369338" ID="ID_711895669" LINK="https://www.cairographics.org/tutorial/" MODIFIED="1677771883067" TEXT="siehe Zeichenkonzepte in Cairo">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      die Cairo Zeichen-Operationen sind modelliert als Druckvorgang
    </p>
    <ul>
      <li>
        ein Pfad definiert die Maske
      </li>
      <li>
        durch diese hindurch wird die <i>Source</i>&#160;auf die <i>Surface</i>&#160; (Ausgabe) gestempelt
      </li>
    </ul>
  </body>
</html></richcontent>
<arrowlink COLOR="#6460c9" DESTINATION="ID_1173541827" ENDARROW="Default" ENDINCLINATION="-1791;132;" ID="Arrow_ID_1651743539" STARTARROW="None" STARTINCLINATION="-2602;211;"/>
</node>
<node CREATED="1677417491547" ID="ID_832294440" MODIFIED="1677417510732" TEXT="ein geschlossener Path erzeugt eine Maske, die gef&#xfc;llt wird">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1677771904411" ID="ID_1955328342" MODIFIED="1677771918204" TEXT="per Transformation kann ein virtuelles Koordinatensystem erzeugt werden"/>
</node>
<node COLOR="#338800" CREATED="1677426171012" ID="ID_183450251" MODIFIED="1677426297532" TEXT="Benennung">
<icon BUILTIN="yes"/>
<node COLOR="#435e98" CREATED="1677426176707" ID="ID_1699845140" MODIFIED="1677426300779" TEXT="bleibe bei &#xbb;Au&#xdf;enbogen&#xab; und &#xbb;Innenbogen&#xab;">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      weil ich diese Benennungen von Anfang an auch so in FreeCAD verwendet habe, und jetzt nicht alles umbenennen m&#246;chte
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#435e98" CREATED="1677426194737" ID="ID_465793703" MODIFIED="1677426300779" TEXT="mache aber die umgekehrte Ordnung im Kommentar klar">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...das ist n&#228;mlich potentiell verwirrend: der <i>Au&#223;enbogen</i>&#160; bildet die <i>Innenkontur<b>&#160;</b></i>der Klammer, weil der Schwung von der Klammer weg nach oben bzw. unten geht
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#338800" CREATED="1677425937349" ID="ID_368774299" MODIFIED="1677718382736" TEXT="Koordinaten als Konstanten &#xfc;bernehmen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1677426110196" ID="ID_843421619" MODIFIED="1677426129464" TEXT="Erkennbare Basiseinheiten durch &#x3a6; ausdr&#xfc;cken">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1677426131233" ID="ID_231769096" MODIFIED="1677718377099" TEXT="BAR">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_231769096" ENDARROW="Default" ENDINCLINATION="-186;54;" ID="Arrow_ID_1647326271" SOURCE="ID_270081654" STARTARROW="None" STARTINCLINATION="120;19;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1677426131233" ID="ID_1111801677" MODIFIED="1677718378915" TEXT="LINE">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1111801677" ENDARROW="Default" ENDINCLINATION="-186;54;" ID="Arrow_ID_1520723305" SOURCE="ID_1333503744" STARTARROW="None" STARTINCLINATION="71;13;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1677426140000" ID="ID_916071681" MODIFIED="1677718380765" TEXT="SQUARE">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1677426145410" ID="ID_1241973163" MODIFIED="1677426155118" TEXT="ARC_I">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1677426150023" ID="ID_1243678552" MODIFIED="1677426155119" TEXT="ARC_O">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1677425955233" ID="ID_898214588" MODIFIED="1677425968693" TEXT="Funktion zum Zeichnen der Kappe(n)">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1677425981509" ID="ID_63989852" MODIFIED="1677426000480" TEXT="wendet low-Level-Skalierung an">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1677426001458" ID="ID_1476057716" MODIFIED="1677426010466" TEXT="implementiert Bogensegmente">
<icon BUILTIN="button_ok"/>
<node CREATED="1677426011889" ID="ID_106770327" MODIFIED="1677426024465" TEXT="Cairo bietet beide Drehrichtungen an">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1677426025872" ID="ID_217470533" MODIFIED="1677426037264" TEXT="aber wir m&#xfc;ssen einen geschlossenen Pfad zeichnen">
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#435e98" CREATED="1677426040749" ID="ID_1140979110" MODIFIED="1677426066194" TEXT="zeichne erst den &#xe4;u&#xdf;eren Bogen, dann den inneren Bogen zur&#xfc;ck">
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#338800" CREATED="1677426076977" ID="ID_22251519" MODIFIED="1677426088890" TEXT="visueller Test : Ergebnis plausibel">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1677426582635" ID="ID_78847857" MODIFIED="1677861018300" TEXT="Balken zeichnen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1677426794738" ID="ID_270081654" MODIFIED="1677861020212" TEXT="dicker Balken">
<arrowlink DESTINATION="ID_231769096" ENDARROW="Default" ENDINCLINATION="-186;54;" ID="Arrow_ID_1647326271" STARTARROW="None" STARTINCLINATION="120;19;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1677426794738" ID="ID_1333503744" MODIFIED="1677861022079" TEXT="d&#xfc;nne Linie">
<arrowlink DESTINATION="ID_1111801677" ENDARROW="Default" ENDINCLINATION="-186;54;" ID="Arrow_ID_1520723305" STARTARROW="None" STARTINCLINATION="71;13;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1677426603105" ID="ID_243044944" MODIFIED="1678054539122" TEXT="Gesamtanordnung steuern">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1677458294653" ID="ID_1105975491" MODIFIED="1677851113897" TEXT="brauche Zugriff auf Layout-Steuerung">
<arrowlink COLOR="#5586b2" DESTINATION="ID_883997565" ENDARROW="Default" ENDINCLINATION="108;-242;" ID="Arrow_ID_1785981386" STARTARROW="None" STARTINCLINATION="-291;20;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1677426726852" ID="ID_1196135559" MODIFIED="1677861006427" TEXT="Klammer sinnvoll positionieren">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1677426763414" FOLDED="true" ID="ID_591151065" MODIFIED="1677775763826" TEXT="Balken-L&#xe4;nge">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1677718715763" FOLDED="true" ID="ID_354383908" MODIFIED="1677775372224" TEXT="Balken ist unten zu kurz">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...aber der Code schaut <i>komplett richtig</i>&#160;aus; man mu&#223; ja die Differenz zwischen oberem und unterem Anker als H&#246;he ansetzen, und man mu&#223; dabei bedenken, da&#223; die Zeichnung des Balkens dann skaliert wird, jedoch <i>nach Skalierung</i>&#160;genau bis zum unteren Anker reichen soll (und eben dieses funktioniert nicht)
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="broken-line"/>
<node CREATED="1677773935683" ID="ID_962519428" MODIFIED="1677775318994" TEXT="Beobachtung">
<icon BUILTIN="info"/>
<node CREATED="1677773960728" ID="ID_212260747" MODIFIED="1677773975135" TEXT="(w,h) = (30,12)"/>
<node CREATED="1677773939755" ID="ID_1896356153" MODIFIED="1677773951614" TEXT="scale=5.625"/>
<node COLOR="#338800" CREATED="1677774010934" ID="ID_369296092" MODIFIED="1677774057367" TEXT="left=2.1485588132818414">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1677774080400" ID="ID_288963687" MODIFIED="1677774134353" TEXT="upper=14.726441186718159">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1677774169532" ID="ID_836073358" MODIFIED="1677774175875" TEXT="lower=29.452882373436317">
<node CREATED="1677774513323" ID="ID_1581390277" MODIFIED="1677774963008" TEXT="das ist die Fallback-Min-Height">
<linktarget COLOR="#e32757" DESTINATION="ID_1581390277" ENDARROW="Default" ENDINCLINATION="92;0;" ID="Arrow_ID_1988182153" SOURCE="ID_401418051" STARTARROW="None" STARTINCLINATION="92;0;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1677774822709" ID="ID_660710029" MODIFIED="1677774826026" TEXT="drawBar">
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#a21b22" CREATED="1677774833327" ID="ID_1452011719" MODIFIED="1677775343109" TEXT="height=2">
<icon BUILTIN="stop-sign"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1677774837611" ID="ID_1315743678" MODIFIED="1677774848361" TEXT="AUA: das ist ein Int">
<icon BUILTIN="broken-line"/>
<node COLOR="#435e98" CREATED="1677775070456" ID="ID_224207909" MODIFIED="1677775323625" TEXT="linkes Argument von min ist int{0}"/>
<node CREATED="1677775094584" ID="ID_713816284" MODIFIED="1677775117646" TEXT="das ist mein util::min (implicit conversion)"/>
</node>
<node CREATED="1677774892926" ID="ID_1618649666" MODIFIED="1677774904662" TEXT="lower-upper == upper">
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1677774946622" ID="ID_401418051" MODIFIED="1677774969807" TEXT="Denkfehler im Fallback">
<arrowlink COLOR="#e32757" DESTINATION="ID_1581390277" ENDARROW="Default" ENDINCLINATION="92;0;" ID="Arrow_ID_1988182153" STARTARROW="None" STARTINCLINATION="92;0;"/>
<icon BUILTIN="broken-line"/>
</node>
</node>
<node CREATED="1677774909790" ID="ID_1344204520" MODIFIED="1677774937023" TEXT="/ scale = &#x3a6;+1"/>
</node>
</node>
</node>
<node CREATED="1677775347540" ID="ID_483885409" MODIFIED="1677775363174" TEXT="Zeichenfehler damit behoben...">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      es war der int vs double
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#435e98" CREATED="1677775374922" FOLDED="true" ID="ID_758069702" MODIFIED="1677775760407" TEXT="Zweifel: verwenden Gtk und Cairo die gleichen &#xbb;device units&#xab;?">
<icon BUILTIN="button_cancel"/>
<node CREATED="1677775564913" ID="ID_933287576" MODIFIED="1677775585136" TEXT="Beobachte H&#xf6;he = 12, allerdings nur im ersten Durchlauf"/>
<node CREATED="1677775586262" ID="ID_712638262" MODIFIED="1677775598515" TEXT="im zweiten Durchlauf ist die kleinste H&#xf6;he = 62"/>
<node COLOR="#338800" CREATED="1677775730195" ID="ID_42889671" MODIFIED="1677775753486" TEXT="nachgemessen: 62px ist die kleinste H&#xf6;he im final sichtbaren GUI">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1677426770828" ID="ID_515832295" MODIFIED="1677718397562" TEXT="Ober/Unterkappe">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1677426740361" FOLDED="true" ID="ID_1498455508" MODIFIED="1678063029999" TEXT="Ankerpunkt f&#xfc;r Sub-Scopes">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1678027707725" ID="ID_1088634692" MODIFIED="1678027911538" TEXT="Informationsflu&#xdf;?">
<icon BUILTIN="help"/>
<node CREATED="1678027725255" ID="ID_244001513" MODIFIED="1678027744477" TEXT="Ankerpunkt-H&#xf6;he zu setzen auf der aktuellen StaveBracket"/>
<node CREATED="1678027785347" ID="ID_1776470057" MODIFIED="1678027806812" TEXT="Quelle ist der aktuelle relative Offset des Child-Track"/>
<node CREATED="1678027811599" ID="ID_137446567" MODIFIED="1678027856711" TEXT="alle Info liegt lokal vor &#x27f9; im Display-Evaluation-Pass">
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#338800" CREATED="1678027913100" ID="ID_1469793297" MODIFIED="1678054528877" TEXT="Aktionen">
<icon BUILTIN="button_ok"/>
<node COLOR="#5b280f" CREATED="1678027923050" ID="ID_290002506" MODIFIED="1678028880024" TEXT="Ankerpunkt als Solchen vorsehen">
<icon BUILTIN="button_cancel"/>
<node CREATED="1678027936823" ID="ID_1498868700" MODIFIED="1678027946209" TEXT="attach|detach SubFork"/>
<node CREATED="1678028843581" ID="ID_1168167530" MODIFIED="1678028951827" TEXT="&#xfc;berfl&#xfc;ssig: bringt eigentlich nix">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...denn wir m&#252;ssen sowiso einen globalen Pass machen, und zwar erst sp&#228;t, wenn das Layout bereits komplett geregelt ist
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#903134" DESTINATION="ID_1168167530" ENDARROW="Default" ENDINCLINATION="226;18;" ID="Arrow_ID_982689463" SOURCE="ID_1938349456" STARTARROW="None" STARTINCLINATION="81;0;"/>
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node COLOR="#338800" CREATED="1678027951474" ID="ID_1668829531" MODIFIED="1678054530558" TEXT="Ankerpunkt-H&#xf6;he pr&#xe4;zise festsetzen">
<icon BUILTIN="button_ok"/>
<node CREATED="1678028166248" ID="ID_1827737851" MODIFIED="1678028674353">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <font face="Monospaced" size="2">TrackHeadWidget::syncSubtrackStartHeight (uint directHeight)</font>
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#bc2454" DESTINATION="ID_1938349456" ENDARROW="Default" ENDINCLINATION="-147;6;" ID="Arrow_ID_969124444" STARTARROW="None" STARTINCLINATION="-99;5;"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1678028227991" ID="ID_1354143607" MODIFIED="1678028733057">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      &#10551; <i>kommend von</i>&#160;<font face="Monospaced" size="2">DisplayFrame::sync_and_balance (DisplayEvaluation&amp;)</font>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1678028276056" ID="ID_641317895" MODIFIED="1678028291624" TEXT="2. Pass der DisplayEvaluation">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1678028495768" ID="ID_1391860613" MODIFIED="1678028514740" TEXT="Reihenfolge OK: depth-first-Postfix">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1678028348927" ID="ID_942182996" MODIFIED="1678028413547" TEXT="liefert aber nur den relativen Offset des sub-Track-Bereichs"/>
<node CREATED="1678028377219" ID="ID_1791569099" MODIFIED="1678028406664" TEXT="mu&#xdf; zudem auch die konkrete H&#xf6;he der einzelnen sub-Tracks propagieren">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1678028613860" ID="ID_1938349456" MODIFIED="1678028956492" TEXT="also doch besser dann als Operation f&#xfc;r den ganzen Track-Head">
<arrowlink COLOR="#903134" DESTINATION="ID_1168167530" ENDARROW="Default" ENDINCLINATION="226;18;" ID="Arrow_ID_982689463" STARTARROW="None" STARTINCLINATION="81;0;"/>
<linktarget COLOR="#bc2454" DESTINATION="ID_1938349456" ENDARROW="Default" ENDINCLINATION="-147;6;" ID="Arrow_ID_969124444" SOURCE="ID_1827737851" STARTARROW="None" STARTINCLINATION="-99;5;"/>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1678028693313" ID="ID_1210494901" MODIFIED="1678028703577">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <font face="Monospaced" size="2">TrackHeadWidget::accommodateOverallHeight(uint overallHeight)</font>
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#338800" CREATED="1678028969854" ID="ID_1010346697" MODIFIED="1678049461158" TEXT="neue Funktion f&#xfc;r TrackHeadWidget">
<icon BUILTIN="button_ok"/>
<node CREATED="1678029068390" ID="ID_628565460" MODIFIED="1678029075809" TEXT="linkSubTrackPositions"/>
<node CREATED="1678049436749" ID="ID_1061735805" MODIFIED="1678049447451" TEXT="rechnet den Offsett kumulativ..."/>
<node CREATED="1678049449631" ID="ID_295850096" MODIFIED="1678049459298" TEXT="&#xfc;bergibt ihn &quot;schleppend&quot;"/>
</node>
<node COLOR="#435e98" CREATED="1678058911756" ID="ID_316615403" MODIFIED="1678062933937" TEXT="Position nicht akkurat ermittelt">
<icon BUILTIN="broken-line"/>
<node CREATED="1678058927261" ID="ID_2489808" MODIFIED="1678058959142" TEXT="f&#xe4;llt zun&#xe4;chst fast nicht auf, aber der Pfeil ist um 1-2px zu hoch">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1678059097715" ID="ID_367366159" MODIFIED="1678059119084" TEXT="Experiment: alle gemessenen Offsets jeweils explizit mit einerm Connector markieren">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1678058960509" ID="ID_755126006" MODIFIED="1678059095895" TEXT="anscheinend eine Kombination mehrerer Fehler in der Layout-Logik">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <ul>
      <li>
        zum Einen habe ich unbemerkt die getLabelHeight() vom Parent zum Child verschleppt. Das ist aber unter dem Strich korrekt, weil jedes Kind wieder mit einem Label beginnt
      </li>
      <li>
        au&#223;erdem gibt es da anscheinend im Grid ein zus&#228;tzliches Padding, was mir bisher entgangen war
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
<node COLOR="#5b280f" CREATED="1678061441159" ID="ID_1093502682" MODIFIED="1678061454811" TEXT="nein: es ist kein row_spacing gesetzt">
<icon BUILTIN="button_cancel"/>
<node COLOR="#435e98" CREATED="1678061459565" HGAP="33" ID="ID_1977884766" MODIFIED="1678061483474" TEXT="sicherheitshalber das auch explizit = 0" VSHIFT="6">
<font NAME="SansSerif" SIZE="10"/>
</node>
</node>
<node CREATED="1678061488359" ID="ID_1016675845" MODIFIED="1678061698397" TEXT="Ha! der Spreiz-Effekt der Expander-Spalte wird zwischen die Zeilen verteilt">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      der Expander in der ersten Spalte dient dazu, das TrackHeadWidget auf eine geforderte Nenn-H&#246;he aufzuspannen. Anscheinend habe ich die Zellen so definiert, da&#223; diese Diskrepanz als spacing zwischen Label, Content und SyncPadding verteilt wird
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1678061699565" ID="ID_1726897504" MODIFIED="1678061716315" TEXT="diese Diskrepanz erfassen und zus&#xe4;tzlich als Offset einreichnen">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1678049477756" ID="ID_341782472" MODIFIED="1678062950593" TEXT="Verbindung zeichnen">
<linktarget COLOR="#74bc9c" DESTINATION="ID_341782472" ENDARROW="Default" ENDINCLINATION="-47;311;" ID="Arrow_ID_796598927" SOURCE="ID_916814047" STARTARROW="None" STARTINCLINATION="312;26;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1678049497561" ID="ID_1369706059" MODIFIED="1678049721195" TEXT="den Offset mit der Geometrie des StaveBracket verbinden">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1678049544501" ID="ID_1360937684" MODIFIED="1678049683125" TEXT="Offset der Kappe ber&#xfc;cksichtigen">
<icon BUILTIN="button_ok"/>
<node CREATED="1678049558487" ID="ID_1961258061" MODIFIED="1678049687672" TEXT="verwende Nullpunkt der oberen Kappe als Bezugssystem">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1678049569243" ID="ID_1792975653" MODIFIED="1678049691033" TEXT="nochmal die H&#xf6;he der Kappe als zus&#xe4;tzlicher Offset">
<icon BUILTIN="idea"/>
<node CREATED="1678049589007" ID="ID_114677730" MODIFIED="1678049717907" TEXT="damit die Verbindung am Nullpunkt der Kind-Klammer ansetzt">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      mache hier die vereinfachtende Annahme, da&#223; alle Brackets die gleiche Metrik haben
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#338800" CREATED="1678049635786" ID="ID_1684871223" MODIFIED="1678049681821" TEXT="sieht visuell korrekt aus">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      gepr&#252;ft mit Screenshot in Gimp.
    </p>
    <p>
      Unter der Einschr&#228;nkung, da&#223; hier viel Aliasing passiert und das Bild schon relativ klein ist
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1678049724136" ID="ID_895610001" MODIFIED="1678049829318" TEXT="Zweifel an der Genauigkeit der Zeichnung">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1678049738310" ID="ID_1123952666" MODIFIED="1678049749873" TEXT="das liegt vermutlich vor allem am Zeichnen eines Kreises"/>
<node CREATED="1678049750825" ID="ID_1765806485" MODIFIED="1678049761575" TEXT="und au&#xdf;erdem f&#xfc;lle ich nur (ohne Stroke)"/>
<node CREATED="1678049763211" ID="ID_53745567" MODIFIED="1678049778700" TEXT="mit einem Rechteck kommt die Breite ganz exakt raus"/>
<node COLOR="#338800" CREATED="1678049788263" ID="ID_1352330785" MODIFIED="1678049835012" TEXT="&#x27f9; den Kreis auf Radius PHI_MAJOR vergr&#xf6;&#xdf;ern"/>
<node COLOR="#338800" CREATED="1678049817972" ID="ID_167200594" MODIFIED="1678049835012" TEXT="&#x27f9; auch noch eine Kontur zeichnen"/>
</node>
<node COLOR="#338800" CREATED="1678054029564" ID="ID_386732686" MODIFIED="1678054319420" TEXT="Au&#xdf;erdem noch einen Pfeil as Verbindung">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1678054045057" ID="ID_374835137" MODIFIED="1678054054417" TEXT="brauche daf&#xfc;r die Gesamtbreite">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1678054055874" ID="ID_800035074" MODIFIED="1678054377273" TEXT="Bugfix: Breite mu&#xdf; padding-right einschlie&#xdf;en">
<linktarget COLOR="#77a6bb" DESTINATION="ID_800035074" ENDARROW="Default" ENDINCLINATION="87;5;" ID="Arrow_ID_1851726914" SOURCE="ID_325851993" STARTARROW="None" STARTINCLINATION="129;-3;"/>
<icon BUILTIN="broken-line"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1678054322417" ID="ID_1962694218" MODIFIED="1678054509666" TEXT="Pfeile sehen unsauber aus">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1678054332187" ID="ID_1403282354" MODIFIED="1678054514935" TEXT="mehrere Probleme...">
<icon BUILTIN="info"/>
</node>
<node COLOR="#435e98" CREATED="1678054338408" ID="ID_325851993" MODIFIED="1678054518906" TEXT="zu wenig Platz &#x27f9; auch noch das Padding nutzen">
<arrowlink COLOR="#77a6bb" DESTINATION="ID_800035074" ENDARROW="Default" ENDINCLINATION="87;5;" ID="Arrow_ID_1851726914" STARTARROW="None" STARTINCLINATION="129;-3;"/>
</node>
<node COLOR="#435e98" CREATED="1678054386819" ID="ID_650165799" MODIFIED="1678054518906" TEXT="Pfeile d&#xfc;rfen nicht zu schlank sein"/>
<node COLOR="#435e98" CREATED="1678054403496" ID="ID_910454360" MODIFIED="1678054518905" TEXT="Pfeil-Breite per &#x3a6; an joint-Durchmesser"/>
<node COLOR="#435e98" CREATED="1678054437780" ID="ID_289152885" MODIFIED="1678054518905" TEXT="brauche eine scharfe Gehrung (&quot;miter&quot;)">
<node CREATED="1678054454505" ID="ID_829025847" MODIFIED="1678054489675" TEXT="miter_limit auf 20 hochsetzen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...der default ist 10, und das erzeugt eine Gehrung nur bis ca 20&#176;
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1678054491002" ID="ID_1642552980" MODIFIED="1678054506894" TEXT="zus&#xe4;tzlich 1 unit (px) Luft lassen">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1677426668947" ID="ID_1313952369" MODIFIED="1677867091124" TEXT="Farbe setzen">
<linktarget COLOR="#346382" DESTINATION="ID_1313952369" ENDARROW="Default" ENDINCLINATION="-273;44;" ID="Arrow_ID_1766960947" SOURCE="ID_1533322932" STARTARROW="None" STARTINCLINATION="102;9;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1677451594072" FOLDED="true" ID="ID_1658195962" MODIFIED="1678063122123" TEXT="Layout-Steuerung">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1676046656020" FOLDED="true" ID="ID_739149798" MODIFIED="1677451623361" TEXT="horizontale Ausdehnung steuern">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1676046671288" ID="ID_823909101" MODIFIED="1676047541409" TEXT="intrinsich feste Ausdehnung erforderlich, nun H&#xf6;he variabel">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#435e98" CREATED="1676046707056" ID="ID_1489341239" MODIFIED="1676047541408" TEXT="aber GTK weist ggfs auch gar keine Ausdehnung zu, oder teilt 50:50">
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#338800" CREATED="1676047544344" ID="ID_1689678210" MODIFIED="1676047576094" TEXT="...jetzt wird schon mal grunds&#xe4;tzlich korrekt gezeichnet">
<arrowlink COLOR="#60a5a0" DESTINATION="ID_1701009358" ENDARROW="Default" ENDINCLINATION="234;0;" ID="Arrow_ID_1201169468" STARTARROW="None" STARTINCLINATION="8;-5;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1676047436191" FOLDED="true" ID="ID_1883772058" MODIFIED="1676085951547" TEXT="Problem: GTK weist manchmal trotzdem mehr zu">
<icon BUILTIN="broken-line"/>
<node CREATED="1676085625293" ID="ID_1842723782" MODIFIED="1676085879659" TEXT="Uh-oh ... es ist kompliziert">
<richcontent TYPE="NOTE"><html>
  <head></head>
  <body>
    <ul>
      <li>
        das Problem tritt auf bei &#187;Leaf-Tracks&#171;
      </li>
      <li>
        bei diesen liegen hier zwei Zellen nebeneinander, und sonst nichts, was eine Verankerung geben k&#246;nnte
      </li>
      <li>
        zwar habe ich kein homogenous-spacing gesetzt (geht das &#252;berhaupt?)
      </li>
      <li>
        aber die Zelle (0,1) enth&#228;lt ein weiteres Grid-Control
      </li>
      <li>
        das aber seinerseits nur eine einzige Zelle mit einem Platzhalter beinhaltet
      </li>
      <li>
        ...also selbst komplett unterf&#252;llt ist und keine signifikante Allokation erzeugt
      </li>
    </ul>
    <p>
      &#10233; l&#228;ngerfristig wird sich das sowiso regeln
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="smiley-oh"/>
</node>
<node COLOR="#435e98" CREATED="1676085882028" ID="ID_1638208695" MODIFIED="1676085948819" TEXT="Verhalten explizit anfordern">
<icon BUILTIN="idea"/>
<node CREATED="1676085910066" ID="ID_1461288066" MODIFIED="1676085927242" TEXT="das Stave-Bracket : expand = false"/>
<node CREATED="1676085928118" ID="ID_1335925100" MODIFIED="1676085936857" TEXT="das Head-Control : expand= true"/>
</node>
<node COLOR="#338800" CREATED="1676085939157" ID="ID_1665806137" MODIFIED="1676085945174" TEXT="Problem gel&#xf6;st">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1675902536517" ID="ID_827367364" MODIFIED="1677860993690" TEXT="Anpassung an Allocation">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1677851231787" ID="ID_989353390" MODIFIED="1677851251627" TEXT="H&#xf6;he wird fest vorgegeben">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1677851253034" ID="ID_534111962" MODIFIED="1677860992436" TEXT="notwendige Breite aus CSS + Konstruktion ermitteln">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1677851285924" ID="ID_452245483" MODIFIED="1677860991136" TEXT="Realisierbarkeit sicherstellen">
<icon BUILTIN="button_ok"/>
<node CREATED="1677851305897" ID="ID_724109318" MODIFIED="1677851357078" TEXT="es gibt eine Minimal-H&#xf6;he">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...denn es mu&#223; die obere und die untere Kappe gezeichnet werden, und deren H&#246;he ergibt sich qua Konstruktion aus der Basisbreite
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#338800" CREATED="1677851359498" ID="ID_1131290489" MODIFIED="1677860989026" TEXT="&#x27f9; notfalls Basisbreite reduzieren">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      &#10153; Skala f&#252;r gesamte Klammer verkleinern
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1677451786789" ID="ID_883997565" MODIFIED="1677860999220" TEXT="Styling per CSS">
<linktarget COLOR="#5586b2" DESTINATION="ID_883997565" ENDARROW="Default" ENDINCLINATION="108;-242;" ID="Arrow_ID_1785981386" SOURCE="ID_1105975491" STARTARROW="None" STARTINCLINATION="-291;20;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1677451800420" ID="ID_1164109956" MODIFIED="1677457558599" TEXT="Entscheidung: Modell?">
<icon BUILTIN="yes"/>
<node COLOR="#435e98" CREATED="1677451818657" FOLDED="true" ID="ID_1508791771" MODIFIED="1677457503784" TEXT="global oder individuell?">
<icon BUILTIN="help"/>
<node CREATED="1677451850726" ID="ID_1657882401" MODIFIED="1677457383789" TEXT="global">
<icon BUILTIN="stop-sign"/>
<node CREATED="1677451889120" ID="ID_1375157373" MODIFIED="1677451890620" TEXT="alle StaveBracket-Instanzen teilen sich ein Setting"/>
<node CREATED="1677457339549" ID="ID_1266593311" MODIFIED="1677457369607" TEXT="das w&#xe4;re der YAGNI-Ansatz: zeig mir da&#xdf; Du differenziertes Styling &#xfc;berhaupt brauchst">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1677451946578" ID="ID_256050915" MODIFIED="1677452020472" TEXT="hierf&#xfc;r w&#xe4;re eine non-Standard-Konvention notwendig">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...um festzulegen, an welcher Stelle in der Hierarchie dieses Styling definiert ist; allerdings machen wir bereits genau dies f&#252;r die Timeline im Allgemeinen (und zwar genau wegen dem custom-drawing)
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1677451877866" ID="ID_1658993921" MODIFIED="1677457386662" TEXT="individuell">
<icon BUILTIN="forward"/>
<node CREATED="1677451923027" ID="ID_1111541133" MODIFIED="1677451935717" TEXT="das w&#xe4;re das regul&#xe4;re Verhalten eines Widgets"/>
<node CREATED="1677451894781" ID="ID_563371586" MODIFIED="1677451919408" TEXT="jedes StaveBracket ruft CSS-Style gem&#xe4;&#xdf; Widget-Path ab"/>
<node CREATED="1677457154222" ID="ID_1190875296" MODIFIED="1677457162257" TEXT="Performance-Implikationen unklar">
<node CREATED="1677457165969" ID="ID_906548629" MODIFIED="1677457196177" TEXT="API und Beispiele implizieren Zugriff auf einfache Settings"/>
<node CREATED="1677457246159" ID="ID_974418122" MODIFIED="1677457264603" TEXT="rein praktisch wird aber der draw()-Code schon oft aufgerufen"/>
<node CREATED="1677457197200" ID="ID_1837634552" MODIFIED="1677457215893" TEXT="vermutlich gibt es irgendwo im Framework ein Caching"/>
<node CREATED="1677457217538" ID="ID_789755094" MODIFIED="1677457490369" TEXT="und der GTK-Drawing-Code macht &#xe4;hnliche Zugriffe">
<arrowlink COLOR="#9e3662" DESTINATION="ID_1307381473" ENDARROW="Default" ENDINCLINATION="-2;-37;" ID="Arrow_ID_826896124" STARTARROW="None" STARTINCLINATION="-50;3;"/>
</node>
<node CREATED="1677457273534" ID="ID_617186212" MODIFIED="1677457320336" TEXT="letztlich haben wir hier keinen gef&#xe4;hrlichen Hebel">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...anders als bei den Einzel-Widgets im Timeline-Content, haben wir hier im Header nur ein StaveBracket-Widget pro Track
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1677457389357" ID="ID_1307381473" MODIFIED="1677457500256" TEXT="gem&#xe4;&#xdf; &quot;principle of least surprise&quot; ... erst mal an den Standard halten">
<linktarget COLOR="#9e3662" DESTINATION="ID_1307381473" ENDARROW="Default" ENDINCLINATION="-2;-37;" ID="Arrow_ID_826896124" SOURCE="ID_789755094" STARTARROW="None" STARTINCLINATION="-50;3;"/>
<linktarget COLOR="#feebc6" DESTINATION="ID_1307381473" ENDARROW="Default" ENDINCLINATION="-168;7;" ID="Arrow_ID_1516635946" SOURCE="ID_1850988964" STARTARROW="None" STARTINCLINATION="-107;-380;"/>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1677457522290" ID="ID_1098941719" MODIFIED="1677776070853" TEXT="Direktzugriff vom Widget &#x27f6; StyleContext">
<icon BUILTIN="yes"/>
<node CREATED="1677457632425" ID="ID_1473941449" MODIFIED="1677457653079" TEXT="&#x27f9; Konsequenz: es mu&#xdf; eine Instanz-Methode sein"/>
<node CREATED="1677457677976" ID="ID_1603877421" MODIFIED="1677457706351" TEXT="(inline)Accessor-Funktionen zur Vereinfachung der Notation"/>
</node>
</node>
<node COLOR="#338800" CREATED="1677546010944" FOLDED="true" ID="ID_1646590066" MODIFIED="1678032781761" TEXT="Ermitteln des Skalenfaktors">
<icon BUILTIN="button_ok"/>
<node CREATED="1677546026066" ID="ID_909459060" MODIFIED="1677546037940" TEXT="h&#xe4;ngt zusammen mit der Bildschirmaufl&#xf6;sung (dpi)">
<node CREATED="1677546064069" ID="ID_1332973072" LINK="https://stackoverflow.com/a/446280" MODIFIED="1677546112075">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      dpi-Wert f&#252;r aktuellen <i>Screen</i>&#160;herausfinden GTK &#10229; GDK
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1677546237446" ID="ID_33898017" MODIFIED="1677546258583" TEXT="ein typographischer Punkt = 1/72 inch"/>
<node CREATED="1677546270185" ID="ID_1566124944" LINK="#ID_1345692974" MODIFIED="1677546358775" TEXT="default-Aufl&#xf6;sung: 1px = 1/96 inch"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1677546376907" ID="ID_1490214511" MODIFIED="1677718453503" TEXT="ich m&#xf6;chte es aber am ex des Font festmachen">
<icon BUILTIN="yes"/>
<node CREATED="1677546452825" ID="ID_1035857158" LINK="https://developer-old.gnome.org/gtkmm/3.20/classGtk_1_1StyleContext.html#aa7152d36c584d7be8e3769fc8b865aaf" MODIFIED="1677546546279" TEXT="Gtk::StyleContext::get_font() &#x27fc; Pango::FontDescription"/>
<node CREATED="1677547827538" ID="ID_205149789" MODIFIED="1677547884742" TEXT="in CSS ist &apos;em&apos; direkt an die Font-Size im Kontext gebunen"/>
<node CREATED="1677624520830" ID="ID_1887034328" MODIFIED="1677624768305" TEXT="Vorsicht: &apos;ex&apos; ist unzuverl&#xe4;ssig implementiert">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Streng genommen sollte 'ex' die H&#246;he eines kleinen-x sein. Aber diese Information ist in vielen Fonts &#252;berhaupt nicht zuverl&#228;ssig feststellbar; die resultierende Angabe kann daher unzuverl&#228;ssig und fehlerhaft, oder gar nicht vorhanden sein, in welchem Fall es statthaft ist, auf ex &#8788; em/2 zur&#252;ckzufallen. Im Gegensatz dazu wei&#223; man bei 'em', was man bekommt, n&#228;mlich die nominelle Font-Size (auch hierin unterscheidet sich CSS von der klassischen typographischen Praxis, in der 'em' definiert ist als die H&#246;he des gro&#223;en-M)
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1677548906490" ID="ID_1334871412" MODIFIED="1677548924251" TEXT="aber was genau ist dann &quot;font-size&quot;?">
<node CREATED="1677549097512" ID="ID_1309259825" MODIFIED="1677549382705" TEXT="warum kann man das nicht einfach explizit und klar sagen, Leute?">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Die ganze Doku, sowohl in GTK, alsauch die CSS Spec liest sich so, als wollte man sich vor einer Festlegung dr&#252;cken. M&#246;glicherweise hatte man Sorge, die dummen Leute w&#252;rden zu einfache Schlu&#223;folgerungen ziehen, und darob die Aufl&#246;sung des Bildschirms &#252;bersehen &#8212; 96dpi ist ja nur ein <i>Default, </i>und ob 1pt= 1/72 inch wirklich gilt, darauf m&#246;chte sich niemand festnageln lasse, vermute ich (es h&#228;ngt n&#228;mlich davon ab, da&#223; Monitor und Grafikkarte diesen Wert richtig reporten)
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="smiley-angry"/>
</node>
<node CREATED="1677549011508" ID="ID_1030834105" LINK="https://docs.gtk.org/Pango/method.FontDescription.get_size.html" MODIFIED="1677549122645" TEXT="gint pango_font_description_get_size()">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <a http-equiv="content-type" content="text/html; charset=utf-8" href="javascript:void(0)" class="collapse-toggle">
</a>    </p>
    <h4 id="return-value">
      Return value <a href="https://docs.gtk.org/Pango/method.FontDescription.get_size.html#return-value" class="anchor">
</a>    </h4>
    <div class="docblock">
      <div class="returns">
        <div class="arg-description">
          <p>
            <em>Type:</em>&#160;<code>gint</code>
          </p>
          <p>
            
          </p>
          <p>
            The size field for the font description in points or device units. You must call <a href="https://docs.gtk.org/Pango/method.FontDescription.get_size_is_absolute.html"><code>pango_font_description_get_size_is_absolute()</code></a>&#160; to find out which is the case. Returns 0 if the size field has not previously been set or it has been set to 0 explicitly. Use <a href="https://docs.gtk.org/Pango/method.FontDescription.get_set_fields.html"><code>pango_font_description_get_set_fields()</code></a>&#160; to find out if the field was explicitly set or&#160;not.
          </p>
        </div>
      </div>
    </div>
  </body>
</html></richcontent>
</node>
<node CREATED="1677549455712" ID="ID_1132983571" MODIFIED="1677549481974" TEXT="der CairoContext kann &#xfc;bersetzen user-coord &#x27fc; device-coord">
<icon BUILTIN="idea"/>
<node CREATED="1677549522584" ID="ID_1432682127" LINK="https://www.cairographics.org/documentation/cairomm/reference/classCairo_1_1Context.html#a30ee2fbeca1cb347548d5b9d186e38ea" MODIFIED="1677549542721" TEXT="void user_to_device(double &amp; x, double &amp; y)"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1677626008384" ID="ID_1276314266" MODIFIED="1677718443624" TEXT="was brauche ich konkret?">
<icon BUILTIN="help"/>
<node CREATED="1677626041993" ID="ID_1160252640" MODIFIED="1677626192299">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <u>gegeben...</u>
    </p>
  </body>
</html></richcontent>
<node CREATED="1677626051543" ID="ID_1734833636" MODIFIED="1677626061778" TEXT="ein Style(Context)">
<node CREATED="1677626078788" ID="ID_371730038" MODIFIED="1677626088548" TEXT="implizit: ein Screen -&gt; DPI"/>
<node CREATED="1677626089594" ID="ID_532854318" MODIFIED="1677626096373" TEXT="implizit: eine Font-Size"/>
</node>
<node CREATED="1677626064902" ID="ID_1611854152" MODIFIED="1677626073888" TEXT="ein CairoContext"/>
</node>
<node CREATED="1677626098881" ID="ID_656135180" MODIFIED="1677626201096">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <u>gesucht...</u>
    </p>
  </body>
</html></richcontent>
<node CREATED="1677626219156" ID="ID_751208280" MODIFIED="1677626226660" TEXT="Scale-Faktor f&#xfc;r den Canvas"/>
<node CREATED="1677626293759" ID="ID_313668863" MODIFIED="1677626298635" TEXT="Rechenweg">
<icon BUILTIN="idea"/>
<node CREATED="1677626302701" ID="ID_613709734" MODIFIED="1677626717065">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <u><font color="#8323d6">Fall-1</font></u>: Font-Size ist absolut gegeben &#10233;
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#5643b8" DESTINATION="ID_613709734" ENDARROW="Default" ENDINCLINATION="9;17;" ID="Arrow_ID_1640372143" SOURCE="ID_1985359358" STARTARROW="None" STARTINCLINATION="-136;-7;"/>
<node CREATED="1677626356166" ID="ID_550116769" MODIFIED="1677626373368" TEXT="derzeitigen Scale-Faktor im CairoContext ermitteln"/>
<node CREATED="1677626435688" ID="ID_1977307488" MODIFIED="1677626460277" TEXT="&#xd83e;&#xdc32; Verh&#xe4;ltnis zur Font-Size ist der gew&#xfc;nschte Faktor"/>
</node>
<node CREATED="1677626302701" ID="ID_940600114" MODIFIED="1677626530910">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <u><font color="#8323d6">Fall-1</font></u>: Font-Size relativ (in Punkten) &#10233;
    </p>
  </body>
</html></richcontent>
<node CREATED="1677626356166" ID="ID_62015779" MODIFIED="1677626373368" TEXT="derzeitigen Scale-Faktor im CairoContext ermitteln"/>
<node CREATED="1677626550450" ID="ID_1022527690" MODIFIED="1677626559551" TEXT="1pt == 1/27 inch"/>
<node CREATED="1677626560803" ID="ID_1545300397" MODIFIED="1677626590307" TEXT="DPI &#x27fc; Anzahl Pixel per inch"/>
<node CREATED="1677626435688" ID="ID_1985359358" MODIFIED="1677626725417">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      daraus absolute Font-Size und weiter wie&#160;<font color="#8323d6">[Fall-1]</font>
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#5643b8" DESTINATION="ID_613709734" ENDARROW="Default" ENDINCLINATION="9;17;" ID="Arrow_ID_1640372143" STARTARROW="None" STARTINCLINATION="-136;-7;"/>
</node>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1677626961166" ID="ID_70009085" MODIFIED="1677776033894" TEXT="Implementierung">
<icon BUILTIN="button_ok"/>
<node CREATED="1677626967309" ID="ID_1850988964" MODIFIED="1677627034111" TEXT="erst mal kein Caching">
<arrowlink COLOR="#feebc6" DESTINATION="ID_1307381473" ENDARROW="Default" ENDINCLINATION="-168;7;" ID="Arrow_ID_1516635946" STARTARROW="None" STARTINCLINATION="-107;-380;"/>
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1677627099341" ID="ID_1048657097" MODIFIED="1677718685659" TEXT="getAbsoluteFontSize(StyleContext)">
<icon BUILTIN="button_ok"/>
<node CREATED="1677627125432" ID="ID_1830042591" MODIFIED="1677627137685" TEXT="Fallunterscheidung der Font-Size-Angabe"/>
<node CREATED="1677627141566" ID="ID_1002293726" MODIFIED="1677627152304" TEXT="Zugriff auf die Screen-DPI"/>
<node COLOR="#435e98" CREATED="1677630910874" ID="ID_1492154354" MODIFIED="1677632493748" TEXT="Problem: Pango liefert eine sonderbare Gr&#xf6;&#xdf;enangabe">
<icon BUILTIN="broken-line"/>
<node CREATED="1677630976616" ID="ID_444564082" MODIFIED="1677631024852" TEXT="font.get_size() &#xd83e;&#xdc32; 9216 und font.get_size_is_absolute() &#xd83e;&#xdc32; false">
<icon BUILTIN="info"/>
</node>
<node CREATED="1677631757926" ID="ID_719052213" LINK="https://stackoverflow.com/a/48025455" MODIFIED="1677631787256" TEXT="Pango verwendet anscheined einenn internen Multiplikator">
<icon BUILTIN="idea"/>
<node CREATED="1677631794049" ID="ID_1699777639" LINK="https://docs.gtk.org/Pango/const.SCALE.html" MODIFIED="1677631879874" TEXT="#define PANGO_SCALE 1024"/>
<node CREATED="1677632470180" ID="ID_1459376659" MODIFIED="1677632489741" TEXT="das gilt f&#xfc;r alle L&#xe4;ngenangaben in Pango (Integer-Arithmetik)">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1677632454793" ID="ID_283578241" MODIFIED="1677632491456" TEXT="damit ergeben sich plausible Werte">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node COLOR="#5b280f" CREATED="1677627185944" ID="ID_1669119375" MODIFIED="1678032805070" TEXT="deviceUnitsPerUserUnit(CairoContext)">
<icon BUILTIN="button_cancel"/>
<node COLOR="#435e98" CREATED="1677627310903" ID="ID_1788648551" MODIFIED="1677630788961" TEXT="pr&#xfc;fen: k&#xf6;nnte verzichtbar sein....">
<icon BUILTIN="idea"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1677630791167" ID="ID_235578795" MODIFIED="1677630834401" TEXT="in der Tat: CairoContext::user_to_device_distance() &#xd83e;&#xdc32; 1"/>
<node COLOR="#5b280f" CREATED="1677718481581" ID="ID_655908718" MODIFIED="1677775837317" TEXT="sicherheitshalber aber doch mit einarbeiten">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ich wei&#223; einfach nicht, unter welchen Umst&#228;nden dann doch mal ein anderer Faktor als 1.0 im gegebenen CairoContext vorliegt; und wenn das dann passiert, w&#228;re das ein ziemlich obskures Fehlverhalten und man wird dann nicht ohne Weiteres die richtige Stelle finden, um diesen Korrekturfaktor einzubringen...
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="help"/>
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1677775842668" ID="ID_178604932" LINK="https://www.cairographics.org/tutorial/#L1transforms" MODIFIED="1677776018897" TEXT="Nein! Laut Doku ist initial der User-Space identisch mit dem Device-Space">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    The device-space coordinate system is tied to the surface, and cannot change. The user-space coordinate system

    <p>
      <b><font color="#a7273b">matches that space by default</font></b><font color="#a7273b">,</font>&#160;but can be changed for the above reasons. The helper functions
    </p>
    <p>
      <a http-equiv="content-type" content="text/html; charset=utf-8" href="http://www.cairographics.org/manual/cairo-Transformations.html#cairo-user-to-device"><code>cairo_user_to_device()</code></a>&#160;and <a href="http://www.cairographics.org/manual/cairo-Transformations.html#cairo-user-to-device-distance"><code>cairo_user_to_device_distance()</code></a>&#160; tell you what the device-coordinates are for a user-coordinates position or distance.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node COLOR="#c51645" CREATED="1678032808275" ID="ID_1635540981" MODIFIED="1678032853963" TEXT="man darf das nicht ausschlie&#xdf;en &#x2014; es ist ein Freiheitsgrad">
<icon BUILTIN="stop-sign"/>
<node CREATED="1678032857292" ID="ID_68799047" MODIFIED="1678032914626" TEXT="man sollte es auch nicht kompensieren">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1678032891507" ID="ID_699242092" MODIFIED="1678032911045" TEXT="denn &#xfc;ber diesen Faktor kommt ggfs. ein expliziter Skalierungs-Wunsch"/>
<node CREATED="1678032867611" ID="ID_1608856160" MODIFIED="1678032888002" TEXT="beispielsweise: die &quot;Lupe&quot; vom GTK-Widget-Debugger">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1677457832609" ID="ID_1478500520" MODIFIED="1677864414871" TEXT="Festzulegende Eigenschaften">
<icon BUILTIN="info"/>
<node COLOR="#338800" CREATED="1677458010560" ID="ID_1003264563" MODIFIED="1677851081064" TEXT="Basisgr&#xf6;&#xdf;e (=Linienbreite)">
<icon BUILTIN="button_ok"/>
<node CREATED="1677458053102" ID="ID_1614036555" MODIFIED="1677458063936" TEXT="k&#xf6;nnte man erst mal am DPI-Wert festmachen"/>
<node CREATED="1677458064756" ID="ID_1912408866" MODIFIED="1677458088765" TEXT="man k&#xf6;nnte es zus&#xe4;tzlich auch an einer default-Schriftgr&#xf6;&#xdf;e festmachen"/>
<node CREATED="1677458115914" ID="ID_1725640561" MODIFIED="1677458124777" TEXT="alternativ w&#xe4;re ein spezial-Setting denkbar"/>
<node CREATED="1677458246716" ID="ID_120680704" MODIFIED="1677458276253">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      das ist der <b>Basiswert</b>&#160;f&#252;r weiteres Layout-Entscheidungen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="forward"/>
</node>
</node>
<node COLOR="#338800" CREATED="1677457850153" ID="ID_1305504262" MODIFIED="1677851083066" TEXT="Bezugsachse horizontal">
<icon BUILTIN="button_ok"/>
<node CREATED="1677458156264" ID="ID_857815456" MODIFIED="1677458189479" TEXT="ergbit sich aus Padding, Scale und dem Design selber (&#x3a6;-minor)"/>
</node>
<node COLOR="#338800" CREATED="1677457867207" ID="ID_1126720758" MODIFIED="1677851085119" TEXT="Ankerpunkt obere/untere Kappe">
<icon BUILTIN="button_ok"/>
<node CREATED="1677458198238" ID="ID_1920467800" MODIFIED="1677458213788" TEXT="ganz analog, Padding + Scale"/>
</node>
<node COLOR="#338800" CREATED="1677457975185" ID="ID_1711981540" MODIFIED="1677860996817" TEXT="Farbe der Klammer">
<icon BUILTIN="button_ok"/>
<node CREATED="1677458102355" ID="ID_1926644285" MODIFIED="1677458115114" TEXT="k&#xf6;nnte man an default-Schriftfarbe festmachen"/>
<node CREATED="1677458115914" ID="ID_829449840" MODIFIED="1677458124777" TEXT="alternativ w&#xe4;re ein spezial-Setting denkbar"/>
</node>
<node COLOR="#338800" CREATED="1677457971241" ID="ID_716437219" MODIFIED="1677851087182" TEXT="Padding">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1677458131835" ID="ID_1560054657" MODIFIED="1678054570385" TEXT="direkt aus CSS entnehmen"/>
<node COLOR="#435e98" CREATED="1678054549373" ID="ID_1191383987" MODIFIED="1678054569562" TEXT="auch oben/unten und rechts ber&#xfc;cksichtigen">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1677864417723" ID="ID_692056392" MODIFIED="1677864442889">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Style-Klasse: <b><font face="Monospaced">.fork__bracket</font></b>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1675902610612" ID="ID_1308174165" MODIFIED="1678054628480" TEXT="Struktur-Schema">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1675902621506" ID="ID_916814047" MODIFIED="1678054663077" TEXT="Ankn&#xfc;pfungen an Sub-Scopes">
<arrowlink COLOR="#74bc9c" DESTINATION="ID_341782472" ENDARROW="Default" ENDINCLINATION="-47;311;" ID="Arrow_ID_796598927" STARTARROW="None" STARTINCLINATION="312;26;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1678054620259" ID="ID_1530313574" MODIFIED="1678054627124" TEXT="Verbindungs-Elemente zeichnen">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1677426647111" ID="ID_1384220998" MODIFIED="1677426654411" TEXT="Erg&#xe4;nzungen">
<icon BUILTIN="hourglass"/>
<node COLOR="#338800" CREATED="1677426657149" ID="ID_1533322932" MODIFIED="1677867106087" TEXT="Farbe der Klammer aus CSS">
<arrowlink COLOR="#346382" DESTINATION="ID_1313952369" ENDARROW="Default" ENDINCLINATION="-273;44;" ID="Arrow_ID_1766960947" STARTARROW="None" STARTINCLINATION="102;9;"/>
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1563469735149" ID="ID_704791408" MODIFIED="1678063062655" TEXT="Selection-State zeigen">
<icon BUILTIN="hourglass"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1678231145115" ID="ID_1009372537" MODIFIED="1678231157694" TEXT="#1271 highlight active track scope">
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1566955554876" ID="ID_1903815723" MODIFIED="1679082664489" TEXT="Layout-Steuerung">
<icon BUILTIN="hourglass"/>
<node CREATED="1566955560666" ID="ID_1506262956" MODIFIED="1566955573502" TEXT="mit Body-Canvas koordinieren">
<arrowlink COLOR="#4b98e2" DESTINATION="ID_1754764132" ENDARROW="Default" ENDINCLINATION="-2912;207;" ID="Arrow_ID_468901844" STARTARROW="None" STARTINCLINATION="698;66;"/>
</node>
<node CREATED="1566955574281" ID="ID_1649819002" MODIFIED="1566955652259" TEXT="mu&#xdf; gemeinsam mit unterem Body-Canvas scrollen">
<arrowlink COLOR="#327dd5" DESTINATION="ID_1718751102" ENDARROW="Default" ENDINCLINATION="-1329;-302;" ID="Arrow_ID_1962173714" STARTARROW="None" STARTINCLINATION="650;36;"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1679082719008" ID="ID_1600275521" MODIFIED="1679084618405" TEXT="Anzeige der Track-Scopes pr&#xe4;zise steuern">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Mehrere Aspekte sind hier offen (2023: Abschlu&#223; der GUI-Neugr&#252;ndung und vor Playback-Vertical-Slice):
    </p>
    <ul>
      <li>
        die Track-Head-Abschnitte beginnen nicht exakt korrekt b&#252;ndig mit dem zugeh&#246;rigen Bereich im Body; m&#246;glicherweise ein &quot;run-away&quot; um ein paar Pixel
      </li>
      <li>
        die Scopes reagieren noch nicht dynamisch auf den Inhalt (und es fehlt die aktive Abstimmung)
      </li>
      <li>
        die Scopes sollten auch eine dynamische Status-Anzeige unterst&#252;tzen
      </li>
    </ul>
  </body>
</html></richcontent>
<linktarget COLOR="#b74f6e" DESTINATION="ID_1600275521" ENDARROW="Default" ENDINCLINATION="276;749;" ID="Arrow_ID_614998223" SOURCE="ID_1366095324" STARTARROW="None" STARTINCLINATION="644;37;"/>
<linktarget COLOR="#f6e1c2" DESTINATION="ID_1600275521" ENDARROW="Default" ENDINCLINATION="-506;31;" ID="Arrow_ID_694017211" SOURCE="ID_430878592" STARTARROW="None" STARTINCLINATION="-2163;252;"/>
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
</node>
<node CREATED="1480607035712" ID="ID_1405339006" MODIFIED="1557498707227" TEXT="Rumpf" VGAP="5">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1544835109183" FOLDED="true" ID="ID_1598364198" MODIFIED="1679359934414" TEXT="Konzept: RulerTrack">
<icon BUILTIN="yes"/>
<icon BUILTIN="hourglass"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1544849233126" ID="ID_665765482" MODIFIED="1557498707227" TEXT="#1194 Handling of Ruler Tracks">
<icon BUILTIN="flag-yellow"/>
</node>
<node CREATED="1544835125485" ID="ID_1915741861" MODIFIED="1557498707227" TEXT="Verallgemeinerung">
<node CREATED="1544835133005" ID="ID_168632162" MODIFIED="1557498707227" TEXT="Time Ruler"/>
<node CREATED="1544835135955" ID="ID_676965041" MODIFIED="1557498707227" TEXT="Overview Ruler"/>
</node>
<node CREATED="1544835146834" ID="ID_1998202502" MODIFIED="1557498707227" TEXT="Konfigurierbar">
<node CREATED="1544835156145" ID="ID_967222646" MODIFIED="1557498707227" TEXT="Content-Anzeige"/>
<node CREATED="1544835160640" ID="ID_498988220" MODIFIED="1557498707227" TEXT="Bereichs-Anzeige"/>
<node CREATED="1544835165903" ID="ID_80922465" MODIFIED="1557498707227" TEXT="Timecode + Ticks">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_80922465" ENDARROW="Default" ENDINCLINATION="343;0;" ID="Arrow_ID_630173444" SOURCE="ID_1619835790" STARTARROW="None" STARTINCLINATION="376;0;"/>
</node>
<node CREATED="1544835172206" ID="ID_429836650" MODIFIED="1557498707227" TEXT="Marker"/>
</node>
<node CREATED="1544837600332" ID="ID_415425563" MODIFIED="1557498707227" TEXT="konkrete Konfig">
<node CREATED="1544837522661" ID="ID_591280489" MODIFIED="1557498707227" TEXT="mehrere Zust&#xe4;nde">
<node CREATED="1544837527828" ID="ID_596254877" MODIFIED="1557498707227" TEXT="collapsed"/>
<node CREATED="1544837530980" ID="ID_1927125856" MODIFIED="1557498707227" TEXT="expanded - Leaf"/>
<node CREATED="1544837543434" ID="ID_450659052" MODIFIED="1557498707227" TEXT="expanded - Fork"/>
</node>
<node CREATED="1544837618776" ID="ID_262509677" MODIFIED="1557498707227" TEXT="wer w&#xe4;hlt Belegung?">
<node CREATED="1544837626783" ID="ID_1328055654" MODIFIED="1557498707227" TEXT="basiert auf Regeln"/>
<node CREATED="1544837630150" ID="ID_1082045785" MODIFIED="1557498707227" TEXT="hat Scope-Logik"/>
<node CREATED="1544837640573" ID="ID_599648265" MODIFIED="1557498707227" TEXT="==&gt; &quot;riecht&quot; nach Placement"/>
<node CREATED="1544837700422" ID="ID_1038765642" MODIFIED="1557498707227" TEXT="Session mu&#xdf; f&#xfc;r jeden Track....">
<icon BUILTIN="yes"/>
<node CREATED="1544837719898" ID="ID_29304851" MODIFIED="1557498707227" TEXT="expanded-config senden"/>
<node CREATED="1544837729313" ID="ID_797684565" MODIFIED="1557498707227" TEXT="collapsed config senden"/>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1544837659506" ID="ID_1608620186" MODIFIED="1557498707227" TEXT="Fazit: GUI ist passiv!">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="forward"/>
</node>
</node>
<node CREATED="1554996492819" ID="ID_1391546845" MODIFIED="1557498707227" TEXT="Konfig laut systematischem Modell">
<arrowlink COLOR="#3e63c5" DESTINATION="ID_433238862" ENDARROW="Default" ENDINCLINATION="-612;-125;" ID="Arrow_ID_1858329997" STARTARROW="None" STARTINCLINATION="-747;0;"/>
<icon BUILTIN="info"/>
</node>
</node>
<node CREATED="1553911718090" ID="ID_612121351" MODIFIED="1557498707227" TEXT="praktische Ausgestalutng">
<node CREATED="1553911730196" ID="ID_1967793006" MODIFIED="1563457386787" TEXT="grunds&#xe4;tzlich....">
<node COLOR="#435e98" CREATED="1553911737751" ID="ID_669315030" MODIFIED="1563457397449" TEXT="ist RulerTrack ein Tangible?">
<icon BUILTIN="help"/>
<node CREATED="1563456133616" ID="ID_1546021764" MODIFIED="1563456136468" TEXT="Diskussion">
<node CREATED="1553911756429" ID="ID_1273721468" MODIFIED="1563457417610" TEXT="pro">
<icon BUILTIN="button_ok"/>
<node CREATED="1553911764980" ID="ID_258039981" MODIFIED="1557498707227" TEXT="Diff-Binding nach Schema-F"/>
</node>
<node CREATED="1553911796208" ID="ID_1254226888" MODIFIED="1563457414715" TEXT="con">
<icon BUILTIN="button_cancel"/>
<node CREATED="1553911798428" ID="ID_1946109008" MODIFIED="1557498707227" TEXT="es bietet nur teilweise die Aktionen eines Tangible"/>
<node CREATED="1563466370058" ID="ID_863187721" MODIFIED="1576282358066" TEXT="automatisches Management k&#xf6;nnte schwierig werden">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      weil der Ruler ja in die Pr&#228;sentation mit einbezogen ist
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1563456143402" ID="ID_1942744457" MODIFIED="1563456147693" TEXT="Entscheidung: ja">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node CREATED="1563456157904" ID="ID_1376003516" MODIFIED="1563456166179" TEXT="der Ruler hat gen&#xfc;gend Substanz">
<node CREATED="1563456222184" ID="ID_506318259" MODIFIED="1563456232299" TEXT="er hat eine Parametrisierung"/>
<node CREATED="1563456234334" ID="ID_792066760" MODIFIED="1563456245693" TEXT="er ist expanded/collapsed"/>
<node CREATED="1563456255701" ID="ID_1379712635" MODIFIED="1563456262198" TEXT="mit jeweils spezieller Ausstattung"/>
</node>
<node CREATED="1563456167140" ID="ID_197035076" MODIFIED="1563456180345" TEXT="der Repr&#xe4;sentant ist ein Controller">
<node CREATED="1563456268098" ID="ID_1014911371" MODIFIED="1563456278940" TEXT="tats&#xe4;chliche Darstellung auf dem Canvas"/>
<node CREATED="1563456280732" ID="ID_350277942" MODIFIED="1563456296145" TEXT="mu&#xdf; sich ggfs. Marker / Selections &quot;holen&quot;"/>
</node>
</node>
</node>
<node CREATED="1563457330971" ID="ID_1988056497" MODIFIED="1563457395240" STYLE="fork" TEXT="hat ein RulerTrack eigenen Content?">
<icon BUILTIN="help"/>
<node CREATED="1563457346678" ID="ID_1336854031" MODIFIED="1563457395240" TEXT="7/2019 ich denke: nein">
<icon BUILTIN="forward"/>
</node>
<node CREATED="1563457361836" ID="ID_32790322" MODIFIED="1563457395240" TEXT="k&#xf6;nnte aber sp&#xe4;ter noch kommen">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
<node CREATED="1563466422079" ID="ID_1950304840" MODIFIED="1563466425634" TEXT="Lebenszyklus">
<node CREATED="1563466427030" ID="ID_1041447231" MODIFIED="1563466444920" TEXT="per vector&lt;unique_ptr&lt;RulerTrack&gt;&gt;"/>
<node CREATED="1563466447828" ID="ID_1400466075" MODIFIED="1563466455230" TEXT="erscheint weitgehend unproblematisch"/>
</node>
<node CREATED="1563456327642" ID="ID_216416376" MODIFIED="1563456331648" TEXT="Zustand">
<node CREATED="1563456332965" ID="ID_1615333919" MODIFIED="1563456339250" TEXT="expanded/collapsed">
<node CREATED="1563456339836" ID="ID_1625370236" MODIFIED="1563456343779" TEXT="persistent UI state"/>
<node CREATED="1563456817269" ID="ID_682486820" MODIFIED="1563456831249" TEXT="reiner UI-State"/>
<node CREATED="1563456880459" ID="ID_774164712" MODIFIED="1563456884053" TEXT="zweistufig">
<node CREATED="1563456835400" ID="ID_939422947" MODIFIED="1563456900080" TEXT="zugeh&#xf6;riger Track expanded/collapsed?"/>
<node CREATED="1563456901155" ID="ID_1889421343" MODIFIED="1563456935400" TEXT="Ruler selber expanded/collapsed?">
<node CREATED="1563456985129" ID="ID_1822723040" MODIFIED="1563457050520" TEXT="nur wenn sein presentationStyle &quot;extended&quot; ist">
<arrowlink COLOR="#5794dc" DESTINATION="ID_1218032977" ENDARROW="Default" ENDINCLINATION="23;-49;" ID="Arrow_ID_477709565" STARTARROW="None" STARTINCLINATION="-54;23;"/>
</node>
</node>
</node>
</node>
<node CREATED="1563457226008" ID="ID_104997878" MODIFIED="1566406624648" TEXT="rulerKind">
<arrowlink COLOR="#c178a8" DESTINATION="ID_1177786099" ENDARROW="Default" ENDINCLINATION="-1830;0;" ID="Arrow_ID_829837415" STARTARROW="None" STARTINCLINATION="576;-53;"/>
</node>
<node CREATED="1563456345999" ID="ID_411877946" MODIFIED="1563456383198" TEXT="presentationBinding">
<node CREATED="1563456386610" ID="ID_1590625879" MODIFIED="1563456393668" TEXT="wie erscheint der Ruler">
<node CREATED="1563456477213" ID="ID_214170046" MODIFIED="1563456480985" TEXT="sichtbar?"/>
<node CREATED="1563456482333" ID="ID_1117291877" MODIFIED="1563456499676" TEXT="presentationStyle">
<node CREATED="1563456501722" ID="ID_342624302" MODIFIED="1563456515812" TEXT="kompakt">
<node CREATED="1563456569224" ID="ID_1752795491" MODIFIED="1563456573692" TEXT="alles in einem Overlay"/>
</node>
<node CREATED="1563456518864" ID="ID_1218032977" MODIFIED="1563457050520" TEXT="erweitert/Gr&#xf6;&#xdf;e">
<linktarget COLOR="#5794dc" DESTINATION="ID_1218032977" ENDARROW="Default" ENDINCLINATION="23;-49;" ID="Arrow_ID_477709565" SOURCE="ID_1822723040" STARTARROW="None" STARTINCLINATION="-54;23;"/>
<node CREATED="1563456575488" ID="ID_1884743688" MODIFIED="1563456585226" TEXT="verschiedene Spuren/Skalen"/>
</node>
</node>
</node>
<node CREATED="1563456394449" ID="ID_1897645470" MODIFIED="1563456399763" TEXT="wenn expanded">
<node CREATED="1563456435059" ID="ID_927353995" MODIFIED="1563456442622" TEXT="h&#xe4;ngt von Struktur ab">
<node CREATED="1563456443867" ID="ID_1809491279" MODIFIED="1563456449319" TEXT="Leaf or Fork?"/>
<node CREATED="1563456450468" ID="ID_1604151454" MODIFIED="1563456461931" TEXT="generisch vorprogrammiert"/>
<node CREATED="1563456462928" ID="ID_443423813" MODIFIED="1563456468426" TEXT="aber trotzdem dynamisches Verhalten"/>
</node>
<node CREATED="1563456726268" ID="ID_1768365080" MODIFIED="1563456735534" TEXT="au&#xdf;erdem sichtbar oder verborgen?">
<node CREATED="1563456762562" ID="ID_968633527" MODIFIED="1563456775217" TEXT="Leaf: h&#xe4;ufig verborgen"/>
<node CREATED="1563456781637" ID="ID_1656158229" MODIFIED="1576282358066" TEXT="Fork: kommt darauf an....">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ....ob es was sinnvolles in einem Overview-Ruler anzuzeigen gibt
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node CREATED="1563456400751" ID="ID_508263117" MODIFIED="1563456404235" TEXT="wenn collapsed">
<node CREATED="1563456707526" ID="ID_1191444122" MODIFIED="1563456715230" TEXT="verborgen oder kompakt?"/>
<node CREATED="1563456694616" ID="ID_119245095" MODIFIED="1563456705916" TEXT="nur 1-dimensionale Unterscheidung"/>
</node>
</node>
</node>
</node>
<node CREATED="1544837985030" HGAP="-90" ID="ID_528262547" MODIFIED="1557498707227" TEXT="Verh&#xe4;ltnis zum Time-Ruler" VSHIFT="87">
<edge STYLE="linear"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1544837991621" ID="ID_1767589633" MODIFIED="1557498707227" TEXT="k&#xfc;hne Idee: zusammenlegen">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node CREATED="1544838014602" ID="ID_1780110896" MODIFIED="1557498707227" TEXT="d.h. Time-Ruler == Ruler vom root-Track"/>
<node CREATED="1544838027901" ID="ID_519696967" MODIFIED="1557498707227" TEXT="Header-Pane: Platz &quot;geschickt&quot; nutzen">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1555082395840" ID="ID_104473939" MODIFIED="1557498707227" TEXT="ABER trotzdem separat darzustellen">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1555082433635" ID="ID_1213306272" MODIFIED="1557498707227" TEXT="Time-Ruler &quot;allways on top&quot;"/>
<node CREATED="1555082442705" ID="ID_497245117" MODIFIED="1576282358065">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Unterscheidung <b>verschoben</b>&#160;in die Darstellung
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      anstatt (konventionell) den Time-Ruler separat explizit auszuprogrammieren,
    </p>
    <p>
      bekommen wir nun eine gemeinsame Darstellungs-Mechanik,
    </p>
    <p>
      welche dann aber in zwei getrennten Bereichen jeweils anders parametrisiert
    </p>
    <p>
      zur Anwendung kommt
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#435e98" CREATED="1555082487012" ID="ID_217824628" MODIFIED="1557498707228" TEXT="trotzdem sinnvolles Potential zur Vereinheitlichung">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node CREATED="1544839243971" ID="ID_1000231823" MODIFIED="1557498707228" TEXT="Ausf&#xfc;hrung obliegt der Session"/>
</node>
</node>
<node CREATED="1540641313667" ID="ID_1952536945" MODIFIED="1557498707228" TEXT="Time-Ruler">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1952536945" ENDARROW="Default" ENDINCLINATION="136;-157;" ID="Arrow_ID_1459742640" SOURCE="ID_991484939" STARTARROW="None" STARTINCLINATION="112;0;"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1544849233126" ID="ID_904348697" MODIFIED="1557498707228" TEXT="#1195 Timecode Ruler">
<icon BUILTIN="flag-yellow"/>
</node>
<node CREATED="1554996306756" ID="ID_1619835790" MODIFIED="1557498707228" TEXT="auf spezielle Konfig eines &quot;Ruler-Tracks&quot; zur&#xfc;ckf&#xfc;hren">
<arrowlink DESTINATION="ID_80922465" ENDARROW="Default" ENDINCLINATION="343;0;" ID="Arrow_ID_630173444" STARTARROW="None" STARTINCLINATION="376;0;"/>
</node>
<node CREATED="1555080526516" ID="ID_1733081392" MODIFIED="1557498707228">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Problem: <i><font color="#bb4444">mu&#223; immer sichtbar sein</font></i>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1555080572765" ID="ID_577805455" MODIFIED="1576282358065" TEXT="im Detail etwas komplexer...">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      aber es bleibt bei diesem Prinzip.
    </p>
    <p>
      
    </p>
    <p>
      Des Genaueren, es gibt eine jeweils festgesetzte Menge von Elementen
    </p>
    <p>
      am Anfang des Track-Profils, welche immer sichtbar bleiben soll
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#a9b4c1" DESTINATION="ID_577805455" ENDARROW="Default" ENDINCLINATION="146;-10;" ID="Arrow_ID_228489961" SOURCE="ID_447173098" STARTARROW="Default" STARTINCLINATION="110;0;"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1555082672083" FOLDED="true" ID="ID_1185653910" MODIFIED="1679361573803" TEXT="BodyCanvasWidget">
<icon BUILTIN="pencil"/>
<node CREATED="1555082682753" ID="ID_1277383747" MODIFIED="1557498707228" TEXT="verwaltet und organisiert die Struktur">
<node CREATED="1555082693273" ID="ID_723726755" MODIFIED="1557498707228" TEXT="hat zwei konkrete TimelineCanvas">
<node CREATED="1555082703199" ID="ID_81861736" MODIFIED="1557498707228" TEXT="oben f&#xfc;r den Time-Ruler"/>
<node CREATED="1555082710728" ID="ID_676334326" MODIFIED="1557498707228" TEXT="unten f&#xfc;r die Track-Struktur"/>
</node>
<node CREATED="1672872295046" ID="ID_1036782095" MODIFIED="1672872302033" TEXT="srolled pane">
<node CREATED="1672874821582" ID="ID_561243870" MODIFIED="1672874837608" TEXT="jeder Canvas sitzt in einem ScrolledWindow"/>
<node CREATED="1672874838956" ID="ID_1009639331" MODIFIED="1672874865844" TEXT="aber nur f&#xfc;r die contentArea sind die Scrollbars sichtbar"/>
<node CREATED="1672874867008" ID="ID_1904830870" MODIFIED="1672875337286" TEXT="der Ruler-Canvas l&#xe4;uft als Slave horizontal mit (und belegt stets/spreizend die volle H&#xf6;he)">
<linktarget COLOR="#6bbdbc" DESTINATION="ID_1904830870" ENDARROW="Default" ENDINCLINATION="693;23;" ID="Arrow_ID_1587189163" SOURCE="ID_850567919" STARTARROW="None" STARTINCLINATION="39;-248;"/>
</node>
<node CREATED="1672874901515" ID="ID_607550188" MODIFIED="1672874927495" TEXT="das Track-Head Patchbay-Widget l&#xe4;uft als Slave beim vertikalen Scrolling mit"/>
</node>
</node>
<node CREATED="1555198475915" ID="ID_216668392" MODIFIED="1557498707228" TEXT="Koordinieren der draw-Aktivit&#xe4;t">
<node CREATED="1555198484257" ID="ID_447173098" MODIFIED="1557498707228" TEXT="Problem: Aufteilung">
<arrowlink DESTINATION="ID_577805455" ENDARROW="Default" ENDINCLINATION="146;-10;" ID="Arrow_ID_228489961" STARTARROW="Default" STARTINCLINATION="110;0;"/>
<node CREATED="1555198495266" ID="ID_118142711" MODIFIED="1557498707228" TEXT="was kommt in den (immer sichtbaren) oberen Teil?"/>
<node CREATED="1555198558887" FOLDED="true" ID="ID_1718337163" MODIFIED="1674596977895" TEXT="Beide Canvas-Instanzen verwenden das gleiche Koordinatensystem">
<arrowlink DESTINATION="ID_1220970686" ENDARROW="Default" ENDINCLINATION="-532;0;" ID="Arrow_ID_1730442283" STARTARROW="None" STARTINCLINATION="377;0;"/>
<icon BUILTIN="yes"/>
<icon BUILTIN="button_cancel"/>
<node COLOR="#990000" CREATED="1563143974534" HGAP="122" ID="ID_130702763" MODIFIED="1674596984363" TEXT="wirklich?" VSHIFT="-39">
<linktarget COLOR="#744479" DESTINATION="ID_130702763" ENDARROW="Default" ENDINCLINATION="687;939;" ID="Arrow_ID_32276313" SOURCE="ID_43945835" STARTARROW="Default" STARTINCLINATION="199;-719;"/>
<icon BUILTIN="stop-sign"/>
<node CREATED="1563143996702" ID="ID_1893904282" MODIFIED="1563144019155" TEXT="im Momment (7/2019) verwende ich eine laufende (pixel)-Zeile"/>
<node CREATED="1563144020688" ID="ID_1371868080" MODIFIED="1563144028227" TEXT="die startet jeweils bei 0"/>
<node CREATED="1563144029219" ID="ID_738243832" MODIFIED="1563144048228" TEXT="und wird f&#xfc;r jedes Struktur-Element mit dem Offset beaufschlagt"/>
<node CREATED="1563144049378" ID="ID_1567458686" MODIFIED="1563144067157" TEXT="Konsequenz: jeder Canvas hat seine eigenen Koordinaten"/>
<node CREATED="1674596957963" ID="ID_1673725434" MODIFIED="1674596971193" TEXT="dieser Ansatz hat sich bew&#xe4;hrt">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1555198633466" FOLDED="true" ID="ID_780787053" MODIFIED="1560442064470" TEXT="Auf Interpretieren des Struktur-Profils zur&#xfc;ckgef&#xfc;hrt">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1555247298877" ID="ID_1739468610" MODIFIED="1560442477849" TEXT="das mu&#xdf; dann aber verallgemeinert wertden">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="yes"/>
<node CREATED="1555247361420" ID="ID_1263829263" MODIFIED="1576282358064" TEXT="warum?">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      weil Verallgemeinern einer einzigen Aktion
    </p>
    <p>
      stets besser ist, als repetitives aufdoppeln und variieren
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1555247377809" ID="ID_281745763" MODIFIED="1576282358064" TEXT="Erwartete Anforderungen...">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <ul>
      <li>
        content renderer
      </li>
      <li>
        vom speziellen Track abh&#228;ngige Bereichsmarkierungen
      </li>
      <li>
        lokale und spezielle Overlays sind zu zeichnen
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#338800" CREATED="1555247320686" FOLDED="true" ID="ID_1896093043" MODIFIED="1576974421702" TEXT="brauche Visitor mit flexiblen Argumenten">
<icon BUILTIN="button_ok"/>
<node CREATED="1555247502178" ID="ID_297247554" MODIFIED="1557498707228" TEXT="Anforderung">
<icon BUILTIN="yes"/>
<node CREATED="1555247509182" ID="ID_184476156" MODIFIED="1557498707228" TEXT="funktioniert genauso wie Visitor im Diff, mit Verb-Tokens"/>
<node CREATED="1555247526934" ID="ID_679986589" MODIFIED="1557498707228" TEXT="aber jedes Verb nimmt andere Argumente"/>
<node CREATED="1555247545556" ID="ID_425297916" MODIFIED="1557498707228" TEXT="brauche in-Place Storage (wie ein union)"/>
<node CREATED="1555247559370" ID="ID_1379389656" MODIFIED="1557498707228" TEXT="soll insgesamt typsicher bleiben"/>
<node CREATED="1555247580247" ID="ID_54654021" MODIFIED="1557498707228" TEXT="aber nur 2 Indirektionen (double dispatch)"/>
</node>
<node CREATED="1555247609372" ID="ID_984933888" MODIFIED="1557498707228" TEXT="Konzept/Ansatz">
<icon BUILTIN="idea"/>
<node CREATED="1555247614626" ID="ID_279811814" MODIFIED="1557498707228" TEXT="das Verb-Token mit einem Union-Argument verwenden"/>
<node CREATED="1555247635823" ID="ID_893471557" MODIFIED="1557498707228" TEXT="und dieses Setup in einen Adapter / Builder verpacken"/>
<node CREATED="1555247665396" ID="ID_1210108422" MODIFIED="1557498707228" TEXT="vermutlich werden Lambdas eine Rolle spielen"/>
<node CREATED="1555247678988" ID="ID_1615700205" MODIFIED="1557498707228" TEXT="aber ich m&#xf6;chte Heap-Storage vermeiden"/>
</node>
<node COLOR="#338800" CREATED="1555247704342" ID="ID_929740643" MODIFIED="1561827465269" TEXT="Entwurf/Test">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1555247713060" ID="ID_1159666241" MODIFIED="1557590555065" TEXT="proof-of-concept">
<icon BUILTIN="button_ok"/>
<node CREATED="1555247744121" ID="ID_1280520595" MODIFIED="1557498707228" TEXT="ausgehend von Kopie des VerbToken"/>
<node CREATED="1555247757037" FOLDED="true" ID="ID_1249615365" MODIFIED="1561827483833" TEXT="(optional) vielleicht letztlich in eine L&#xf6;sung verschmelzen?">
<icon BUILTIN="hourglass"/>
<node CREATED="1557590535366" ID="ID_568258701" MODIFIED="1557590538950" TEXT="vermutlich ehr nicht"/>
<node CREATED="1557590539635" ID="ID_1843674392" MODIFIED="1557590549256" TEXT="da PolymorphicValue doch recht komplex ist"/>
</node>
</node>
<node COLOR="#338800" CREATED="1555806526685" ID="ID_192016641" MODIFIED="1557590525234" TEXT="L&#xf6;sungsansatz: PolymorphicValue">
<icon BUILTIN="button_ok"/>
<node CREATED="1555806541914" ID="ID_1260020116" MODIFIED="1576282358063" TEXT="der bietet genau den flexiblen inline-Buffer, den ich hier brauche">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      n&#228;mlich mit minimalem Admin-Overhead,
    </p>
    <p>
      indem er sich auf die VTable des einzubettenden Typs abst&#252;tzt.
    </p>
    <p>
      
    </p>
    <p>
      Die andere Alternative, der OpaqueHolder, verwendet selber nochmal einen zust&#228;zlichen virtuellen Holder,
    </p>
    <p>
      und Variant pa&#223;t auch nicht, da ich ja mit Template-generierten Subklassen arbeite,
    </p>
    <p>
      und daher nicht a priori die Liste aller einzubettenden Varianten kenne
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#338800" CREATED="1555806670026" FOLDED="true" ID="ID_604641822" MODIFIED="1561827483833" TEXT="Probleme bei der Umsetzung">
<icon BUILTIN="button_ok"/>
<node CREATED="1555807073875" FOLDED="true" ID="ID_1971528084" MODIFIED="1561827482929" TEXT="std::apply verwenden">
<icon BUILTIN="stop-sign"/>
<node CREATED="1555807086938" ID="ID_354296634" MODIFIED="1557498707228" TEXT="gitbts noch nicht auf Debian-Stretch"/>
<node CREATED="1555807099280" ID="ID_1984270952" MODIFIED="1557498707228" TEXT="nachprogrammieren / extrahieren...?"/>
<node CREATED="1555807110911" FOLDED="true" ID="ID_1729201379" MODIFIED="1561827469157" TEXT="Ist auch nicht ohne Weiteres anwendbar auf den vorliegenden Fall">
<icon BUILTIN="button_cancel"/>
<node CREATED="1555807137136" ID="ID_1357571620" MODIFIED="1557498707228" TEXT="wir haben ein zus&#xe4;tzliches erstes Argument">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      n&#228;mlich hier der Visitor, der den Aufruf letztlich emfp&#228;ngt
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1555807172534" ID="ID_473316032" MODIFIED="1557498707228" TEXT="das m&#xfc;&#xdf;te man dann in das Tupel reinfrickeln"/>
<node CREATED="1555807181534" ID="ID_484250647" MODIFIED="1557498707228" TEXT="und dann auch noch den double-Dispatcher (hier das VerbToken) in einen Funktor wickeln"/>
<node CREATED="1555807203432" ID="ID_1628579018" MODIFIED="1557498707228" TEXT="dann besser direkt ausprogrammieren">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node CREATED="1555806696990" FOLDED="true" ID="ID_1464210384" MODIFIED="1561827482929" TEXT="kann nicht Tuple-Element per std::forward weitergeben">
<icon BUILTIN="button_cancel"/>
<node CREATED="1555806733962" ID="ID_1424612840" MODIFIED="1557498707228" TEXT="Compiler m&#xf6;chte eine RValue-Referenz"/>
<node CREATED="1555806760125" FOLDED="true" ID="ID_1741677842" MODIFIED="1561827469157" TEXT="workaround: das Tuple selber per std::forward an std::get &#xfc;bergeben">
<icon BUILTIN="button_cancel"/>
<node CREATED="1555806782283" ID="ID_1783286457" MODIFIED="1557498707228" TEXT="das machen andere anscheinend auch so"/>
<node CREATED="1555806792065" ID="ID_1773083646" MODIFIED="1557498707228" TEXT="Beispiel: die Textbook-Implementierung von std::apply"/>
<node CREATED="1555806824441" ID="ID_948993908" MODIFIED="1557498707228" TEXT="Resultat: aus dem std::get f&#xe4;llt eine rvalue-Referenz raus"/>
<node CREATED="1555806920309" ID="ID_1549876372" MODIFIED="1557498707228" TEXT="das k&#xf6;nnte sogar das Standard-Baumuster f&#xfc;r &quot;perfect forwarding&quot; sein">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...denn es handelt sich hierbei um einen Konstruktionstrick.
    </p>
    <p>
      Scott Meyers spricht deshalb auch immer von &quot;unverersal references&quot; und unterscheidet
    </p>
    <p>
      diese von einer expliziten RValue-Referenz.
    </p>
    <p>
      
    </p>
    <p>
      Demnach w&#228;re das Standard-Baumuster, da&#223; alle Glieder <b>in</b>&#160; der perfect-forwarding-Kette
    </p>
    <p>
      per universal-Reference miteinander verbunden sind. Und im Konkreten fall mu&#223; man
    </p>
    <p>
      das so hintricksen, indem man die std::get-Funktion passend best&#252;ckt...
    </p>
    <p>
      
    </p>
    <p>
      Au weia
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1557437798675" ID="ID_474705115" MODIFIED="1557498707228" TEXT="aus letztlich nicht gekl&#xe4;rten Gr&#xfc;nden ist mir das nicht gelungen...">
<arrowlink COLOR="#f05859" DESTINATION="ID_656447545" ENDARROW="Default" ENDINCLINATION="45;-420;" ID="Arrow_ID_1477395313" STARTARROW="None" STARTINCLINATION="649;0;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1555806839235" FOLDED="true" ID="ID_1636335140" MODIFIED="1561827469157" TEXT="ist der workaround gef&#xe4;hrlich?">
<icon BUILTIN="help"/>
<node CREATED="1555806851177" ID="ID_1212118219" MODIFIED="1557498707228" TEXT="d.h. kommt am Ende nicht doch ein RValue an?"/>
<node CREATED="1555806866887" ID="ID_815971236" MODIFIED="1557498707228" TEXT="auch dann nicht: wenn die Funktion einen RValue verlangt??"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#3a0099" CREATED="1555806884936" FOLDED="true" ID="ID_1433427722" MODIFIED="1561827469137" TEXT="per Experiment verifizieren">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="yes"/>
<node CREATED="1555895525635" ID="ID_1402481371" MODIFIED="1557498707228" TEXT="(verwende eine ctor-tracking-Klasse)"/>
<node COLOR="#338800" CREATED="1555895463799" ID="ID_1147400949" MODIFIED="1557498707228" TEXT="Fehler entdeckt: ctor gibt Args per Value an das Tupel">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1555895488721" ID="ID_1447172232" MODIFIED="1557498707228" TEXT="JA! Es passiert eine move-Initialisierung">
<icon BUILTIN="broken-line"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1555947349235" FOLDED="true" ID="ID_599059144" MODIFIED="1561827469157" TEXT="L&#xf6;sung gesucht....">
<icon BUILTIN="button_ok"/>
<node CREATED="1555947359783" FOLDED="true" ID="ID_1366291443" MODIFIED="1561827469137" TEXT="noch schlimmer...">
<node CREATED="1555947367949" ID="ID_1145455475" MODIFIED="1557498707228" TEXT="auch die Textbook-Impl von std::apply funktioiniert genauso">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      d.h. std::get&lt;idx&gt; (std::forward&lt;TUP&gt; (tuple))
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1555947482051" ID="ID_814853878" MODIFIED="1557498707228" TEXT="...und produziert den gleichen Compiler-Fehler">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      wenn ich das Tupel als Referenz anliefere
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1555947514403" FOLDED="true" ID="ID_1459759406" MODIFIED="1561827469137" TEXT="Kann den Fehler isoliert nicht nachstellen">
<icon BUILTIN="forward"/>
<node CREATED="1555947535499" ID="ID_218400480" MODIFIED="1557498707228" TEXT="try.cpp"/>
<node CREATED="1555947538554" ID="ID_1700362760" MODIFIED="1557498707228" TEXT="&quot;sinngem&#xe4;&#xdf;&quot; nachgebaut"/>
<node CREATED="1555947549617" ID="ID_386072993" MODIFIED="1557498707228" TEXT="das compiliert problemlos"/>
<node CREATED="1555947561535" ID="ID_858467762" MODIFIED="1557498707228" TEXT="und macht LValue-Initialisierung">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...sichtbar wenn man ein Trackr-Objekt
    </p>
    <p>
      als value-Parameter auf der Zielfunktion verwendet.
    </p>
    <p>
      
    </p>
    <p>
      Im extrahierten Beispiel wird das LValue-copy-initialisiert
    </p>
    <p>
      wohingegen im realen code, wo auch das std::forward(tuple) dabei ist,
    </p>
    <p>
      der betreffende Wert dann RValue-Initialisiert wird, d.h. dabei das betreffende Tupel-Element konsumiert
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1555947661358" FOLDED="true" ID="ID_917133929" MODIFIED="1561827465275" TEXT="Ich seh den Unterschied nicht">
<icon BUILTIN="smily_bad"/>
<node CREATED="1555947705866" ID="ID_139554682" MODIFIED="1557498707228" TEXT="warum akzeptiert der Compiler die korrekte variante im realen Code nicht??"/>
<node CREATED="1555947747068" ID="ID_1646796994" MODIFIED="1557498707228" TEXT="f&#xfc;r mich sind beide Varianten (try.cpp und verb-visitor.hpp) &#xe4;quivaltent"/>
<node CREATED="1555947795281" FOLDED="true" ID="ID_1250854173" MODIFIED="1561827465275" TEXT="f&#xfc;r den Compiler anscheinend nicht">
<icon BUILTIN="idea"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1555947814658" ID="ID_1580965808" MODIFIED="1557498707228" TEXT="das k&#xf6;nne ein Ansatzpunkt sein">
<icon BUILTIN="stop-sign"/>
</node>
<node CREATED="1557414354359" FOLDED="true" ID="ID_961298704" MODIFIED="1561827465275" TEXT="Problem ist die aufgerufene Ziel-Funktion">
<icon BUILTIN="info"/>
<node CREATED="1557414397598" ID="ID_1788944843" MODIFIED="1557498707228" TEXT="der std::apply-Mechanismus funktioniert nur direkt">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      d.h er funktioniert nur, wenn man das std::get&lt;idx&gt; (tuple) unmittelbar an den jeweiligen Ziel-Parameter bindet
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1557414442871" ID="ID_501615874" MODIFIED="1557498707228" TEXT="dagegen std::forward w&#xe4;hlt flexibel einen von zwei overloads">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      n&#228;mlich einen, der einen LValue entgegennimmt
    </p>
    <p>
      und einen, der einen RValue entgegennimmt
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1557414483962" FOLDED="true" ID="ID_656447545" MODIFIED="1561827465275" TEXT="und dies kann ich hier nicht nachbilden">
<linktarget COLOR="#f05859" DESTINATION="ID_656447545" ENDARROW="Default" ENDINCLINATION="45;-420;" ID="Arrow_ID_1477395313" SOURCE="ID_474705115" STARTARROW="None" STARTINCLINATION="649;0;"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1557414503009" ID="ID_1020774626" MODIFIED="1557498707228" TEXT="hab schon dutzend Varianten versucht"/>
<node CREATED="1557435536324" ID="ID_13398656" MODIFIED="1557498707228" TEXT="Overload-Resolution hilft hier nicht"/>
<node CREATED="1557435548361" ID="ID_1786798505" MODIFIED="1557498707228" TEXT="w&#xfc;rde enable_if  brauchen"/>
<node CREATED="1557435559616" ID="ID_17287871" MODIFIED="1557498707228" TEXT="Stop">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      steht in keinem Verh&#228;ltnis zum Zweck
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="stop-sign"/>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1557435595988" ID="ID_1773619805" MODIFIED="1557498707228" TEXT="abgebrochen, da unverh&#xe4;ltnism&#xe4;&#xdf;ig">
<arrowlink COLOR="#a98ca6" DESTINATION="ID_1691540337" ENDARROW="Default" ENDINCLINATION="2957;477;" ID="Arrow_ID_1272525320" STARTARROW="None" STARTINCLINATION="-1064;82;"/>
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node CREATED="1557414529997" FOLDED="true" ID="ID_45981411" MODIFIED="1561827469138" TEXT="m&#xf6;gliche Workarounds...">
<icon BUILTIN="idea"/>
<node CREATED="1557414537652" FOLDED="true" ID="ID_1792457460" MODIFIED="1561827465275" TEXT="VerbToken k&#xf6;nnte Tuple akzeptieren">
<icon BUILTIN="button_cancel"/>
<node CREATED="1557435467103" ID="ID_1297559972" MODIFIED="1557498707229" TEXT="separation of concerns">
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node CREATED="1557414564399" FOLDED="true" ID="ID_1249046596" MODIFIED="1561827465275" TEXT="VerbToken k&#xf6;nnte den Holder als friend deklarieren">
<icon BUILTIN="forward"/>
<node CREATED="1557414591836" ID="ID_1605277239" MODIFIED="1557498707229" TEXT="dieser w&#xfc;rde dann auf den verb.handler_ zugreifen"/>
<node CREATED="1557414609249" ID="ID_1627303905" MODIFIED="1557498707229" TEXT="und den Aufruf direkt an&apos;s Ziel bringen"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1557435436241" FOLDED="true" ID="ID_1083947599" MODIFIED="1561827465275" TEXT="Alternative: erben">
<icon BUILTIN="idea"/>
<node CREATED="1557437869440" ID="ID_1916606467" MODIFIED="1557498707229" TEXT="das ist elegant"/>
<node CREATED="1557437880426" ID="ID_548782535" MODIFIED="1557498707229" TEXT="und logisch konsistent"/>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1555807238238" FOLDED="true" ID="ID_383098394" MODIFIED="1561827482929" TEXT="Copy-Support von PolymorphicValue ist &quot;komisch&quot;">
<arrowlink COLOR="#829ebf" DESTINATION="ID_596556632" ENDARROW="Default" ENDINCLINATION="-282;0;" ID="Arrow_ID_1622655110" STARTARROW="None" STARTINCLINATION="-74;193;"/>
<icon BUILTIN="hourglass"/>
<node CREATED="1555807266221" ID="ID_262959695" MODIFIED="1557498707229" TEXT="nach heutigem Stand: unbeholfen implementiert"/>
<node CREATED="1555807285055" ID="ID_1456730365" MODIFIED="1557498707229" TEXT="braucht expliziten Support vom Payload typ"/>
<node CREATED="1555807297726" ID="ID_1905059435" MODIFIED="1557498707229" TEXT="das w&#xe4;re heute gar nicht mehr notwendig"/>
<node CREATED="1555807489204" ID="ID_1385287282" MODIFIED="1557498707229" TEXT="Ausf&#xfc;hrung ist l&#xfc;ckenhaft, und teilweise nicht korrekt">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Beispiel: Wenn der Typ selber keinen Support anbietet,
    </p>
    <p>
      dann nehmen wir immer das volle CopySupport-API, und differenzieren nicht
    </p>
    <p>
      mehr nach Typen mit reinem clone-support. Was dann tats&#228;chlich dazu f&#252;hrt,
    </p>
    <p>
      da&#223; der Compiler verucht, den Zuweisungsoperator zu verwernden!
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#338800" CREATED="1555807646555" FOLDED="true" ID="ID_84342308" MODIFIED="1561827469157" TEXT="CloneValueSupport nicht (korrekt) erkannt">
<icon BUILTIN="button_ok"/>
<node CREATED="1555807666086" ID="ID_1670738915" MODIFIED="1557498707229" TEXT="offensichtlich wird die falsche Trait-Variante gew&#xe4;hlt">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      n&#228;mlich diejenige f&#252;r Typen ohne Support auf dem API.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1555807724232" ID="ID_1817680115" MODIFIED="1557498707229" TEXT="und das, obwohl ich CloneValueSupport als Basis verwendet habe"/>
<node CREATED="1557446452899" ID="ID_454930922" MODIFIED="1557498707229" TEXT="META_DETECT_FUNCTION erkennt keine geerbten Methoden">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...denn diese Duck-Detector-Metafunktion bildet den <b>Typ</b>&#160;eines Member-Pointers,
    </p>
    <p>
      und dieser Typ enth&#228;lt explizit den statischen Namen der Klasse, welche die gew&#252;nschte Methode tr&#228;gt.
    </p>
    <p>
      Und wenn man eine Methode blo&#223; erbt, dann existiert diese Methode, statisch, nur auf der Basisklasse.
    </p>
    <p>
      Also ist das sogar das korrekte Verhalten.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1557446482447" FOLDED="true" ID="ID_835188518" MODIFIED="1561827469138" TEXT="L&#xf6;sung: Duck-Detector f&#xfc;r Methoden-Name">
<node CREATED="1557446494679" ID="ID_1259664145" MODIFIED="1557498707229" TEXT="verzichtet auf Signatur-Check">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      d.h. wenn zuf&#228;llig das Interface auch eine Methode CloneInto() enth&#228;lt, aber mit einer unpassenden Signatur
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1557446561925" ID="ID_1267977919" MODIFIED="1557498707229" TEXT="ist ohnehin keine wirkliche Sicherheit"/>
<node CREATED="1557446503084" ID="ID_1518606339" MODIFIED="1557498707229" TEXT="w&#xfc;rde ohnehin sp&#xe4;ter beim Compilieren scheitern"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1557446627092" ID="ID_805659416" MODIFIED="1557498707229" TEXT="mit #1197 hinf&#xe4;llig">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      weil ich dann explizit ein bestimmtes Basis-Interface verlangen werde,
    </p>
    <p>
      n&#228;mlich VirtualCopySupport&lt;IFA&gt;
    </p>
    <p>
      
    </p>
    <p>
      das ist auch gut so, zu viel Flexibilit&#228;t schadet (besonders, wenn man sie dann gar nicht unterst&#252;tzt)
    </p>
  </body>
</html></richcontent>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1557446881265" FOLDED="true" ID="ID_743886485" MODIFIED="1561827469138" TEXT="Folgeproblem: ambiguous base class">
<icon BUILTIN="clanbomber"/>
<node CREATED="1557446902070" ID="ID_1511315997" MODIFIED="1557498707229" TEXT="kommt davon, wenn man mehrfach polyvalue::EmptyBase verwendet">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      weil n&#228;mlich der Trait, f&#252;r den optimalen Fall, ebenfalls die EmptyBase verwendet, um den Mix-In zu deaktivieren.
    </p>
    <p>
      Leider haben wir dann zweimal die gleiche Basisklasse in beiden Zweigen der multiple inheritance...
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1557446924907" ID="ID_1029661613" MODIFIED="1557498707229" TEXT="...was hier absolut naheliegend ist">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      n&#228;mlich immer dann, wenn man tats&#228;chlich den CopySupport oder CloneSupport als Basis des Interfaces verwendet...
    </p>
    <p>
      (was ich bisher in der Praxis so noch nie gemacht habe)
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1557447075623" ID="ID_1422873677" MODIFIED="1557498707229" TEXT="dummerweise kann dann der GCC die EmptyBase nicht wegoptimieren">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...was sich dann in einer Static-Assertion-Failure &#228;u&#223;ert.
    </p>
    <p>
      hab das ganz explizit ausgeknobelt, es fehlt hier genau dieser eine zus&#228;tzliche &quot;Slot&quot;
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="broken-line"/>
</node>
<node COLOR="#338800" CREATED="1557447159900" ID="ID_691196423" MODIFIED="1557498722522" TEXT="L&#xf6;sung: anderen Namen verwenden">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node CREATED="1555807305357" FOLDED="true" ID="ID_1511870599" MODIFIED="1561827469157" TEXT="Plan: PolymorphicValue &#xfc;berarbeiten">
<arrowlink COLOR="#1a64bc" DESTINATION="ID_596556632" ENDARROW="Default" ENDINCLINATION="-129;0;" ID="Arrow_ID_884404467" STARTARROW="None" STARTINCLINATION="-284;0;"/>
<node CREATED="1555807415718" ID="ID_639233049" MODIFIED="1557498707229" TEXT="mit &quot;VirtualCopySupport&quot; von meiner Variant-Implementierung zusammenf&#xfc;hren"/>
<node CREATED="1555807443642" ID="ID_90620144" MODIFIED="1557498707229" TEXT="sollte selbst&#xe4;ndig erkennen, ob der Zieltyp kopierbar ist"/>
<node CREATED="1555807464657" ID="ID_1089528099" MODIFIED="1557498707229" TEXT="diese meta-Intelligenz sollte komplett in dem Adapter stecken"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1557446611550" ID="ID_596556632" MODIFIED="1557590501784" TEXT="Ticket #1197 : rationalise copy support in PolymorphicValue">
<linktarget COLOR="#829ebf" DESTINATION="ID_596556632" ENDARROW="Default" ENDINCLINATION="-282;0;" ID="Arrow_ID_1622655110" SOURCE="ID_383098394" STARTARROW="None" STARTINCLINATION="-74;193;"/>
<linktarget COLOR="#1a64bc" DESTINATION="ID_596556632" ENDARROW="Default" ENDINCLINATION="-129;0;" ID="Arrow_ID_884404467" SOURCE="ID_1511870599" STARTARROW="None" STARTINCLINATION="-284;0;"/>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node CREATED="1555807762543" FOLDED="true" ID="ID_1645640007" MODIFIED="1561827482929" TEXT="Problem: Puffergr&#xf6;&#xdf;e">
<node CREATED="1555807778751" ID="ID_1563586526" MODIFIED="1557498707229" TEXT="PolymorphicValue verlangt, da&#xdf; man die Puffergr&#xf6;&#xdf;e als Template-Argument definiert"/>
<node CREATED="1555807802562" ID="ID_1845631121" MODIFIED="1557498707229" TEXT="hier h&#xe4;ngt diese aber von der Storage f&#xfc;r die Funktionsargumente ab."/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1555807833997" FOLDED="true" ID="ID_1153160392" MODIFIED="1561827469158" TEXT="Idealfall: das m&#xfc;&#xdf;te automatisch funktionieren">
<icon BUILTIN="button_cancel"/>
<node CREATED="1555807861314" ID="ID_352919826" MODIFIED="1557498707229" TEXT="geht das &#xfc;berhaupt?"/>
<node CREATED="1555807866689" ID="ID_1851833268" MODIFIED="1557498707229" TEXT="w&#xfc;rde vermutlich auf ein Builder-Konstrukt hinauslaufen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...etwas analog zu meinem TreeMutator.
    </p>
    <p>
      D.h. man mu&#223; alle verwendeten Signaturen auf dem Receiver
    </p>
    <p>
      erst mal in einem Builder-Konstrukt gewisserma&#223;en &quot;registrieren&quot;, um dann den passenden
    </p>
    <p>
      VerbPack-Typ konstruiert zu bekommen.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1555807962932" ID="ID_378229584" MODIFIED="1557498707229" TEXT="bisher hat meine L&#xf6;sung aber grade den einen Vorteil, komplet &quot;ad hoc&quot; zu sein">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      d.h. man erzeugt in einem einzigen Aufruf den VerbPack f&#252;r eine Zielfunktion
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1557590275193" ID="ID_756824768" MODIFIED="1557590280062" TEXT="YAGNI">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#338800" CREATED="1555807845319" ID="ID_1999765895" MODIFIED="1557590260752" TEXT="Halbe L&#xf6;sung: wenigstens eine Hilfsfunktion bereitstellen">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1555808026434" FOLDED="true" ID="ID_1634107778" MODIFIED="1561827482929" TEXT="automatische Konversionen f&#xfc;r konkrete Argumente">
<icon BUILTIN="button_ok"/>
<node CREATED="1555808055328" ID="ID_1683773555" MODIFIED="1557498707229" TEXT="der VerbPack - Konstruktor sollte sich genau so verhalten wie die Zielfunktion">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1555808100082" ID="ID_1008688397" MODIFIED="1557498707229" TEXT="Beispiel: Zielfunktion nimmt einen std::string, gegeben ist ein C-String-Literal"/>
<node CREATED="1555808124882" ID="ID_364451047" MODIFIED="1557498707229" TEXT="aktuell wird exakt der korrekte Typ erwartet"/>
<node CREATED="1555808138474" ID="ID_847234596" MODIFIED="1557590439076" TEXT="Grund: Funktionsweise der Teplate-Argument-Inferenz">
<icon BUILTIN="info"/>
</node>
<node COLOR="#435e98" CREATED="1555808184873" FOLDED="true" ID="ID_804931772" MODIFIED="1561827469158" TEXT="sinnvoller Workaround">
<icon BUILTIN="help"/>
<node CREATED="1555808201687" ID="ID_191950649" MODIFIED="1557498707229" TEXT="&quot;Zwiebelschalen-Konstrukt&quot;??">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      zwei verschachtelte, delegierende Konstruktoren,
    </p>
    <p>
      von denen der zweite, innere die eigentliche Typinferenz macht
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1557590299574" ID="ID_1634972448" MODIFIED="1557590314138" TEXT="rein zuf&#xe4;llig delegiere ich bereits &#xfc;ber zwei Konstrukturen"/>
<node COLOR="#338800" CREATED="1557590314884" ID="ID_1086686390" MODIFIED="1557590420718" TEXT="also einfach die Argument-Typen vom Funktions-Handler nehmen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      anstatt, wie es die bisherige (naive) implementierung macht,
    </p>
    <p>
      die typename ARGS... auch daf&#252;r zu verwenden, den Handler-Typ zu konstruieren.
    </p>
    <p>
      Mit diesem einfachen Kniff passiert die Konvertierung dann in dem Moment,
    </p>
    <p>
      wo wir die konkreten Argumente in den vorbereiteten Argument-Tupel im Holder schieben
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1555808280478" FOLDED="true" ID="ID_59896827" MODIFIED="1561827483833" TEXT="Testabdeckung">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1557590726512" ID="ID_1345932776" MODIFIED="1557590812617" TEXT="mehrere verschiedene Receiver">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1557590733137" ID="ID_297834334" MODIFIED="1557590812186" TEXT="Kopier-Verhalten im Detail untersucht">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...jeodch nicht eigens im Test dokumentiert
    </p>
    <ul>
      <li>
        weil das sehr aufwendig w&#228;re und den kompletten Test dominieren w&#252;rde
      </li>
      <li>
        weil die Implementierung (in dieser Hinsicht) letztlich banal ist: Anwenden eines Tupel auf eine Funktion
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1557590794163" ID="ID_497379433" MODIFIED="1557590811601" TEXT="Werte kopiert und verglichen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1557590805129" ID="ID_158433397" MODIFIED="1557590810851" TEXT="ausf&#xfc;hrlich kommentiert">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1555808288856" ID="ID_1931717111" MODIFIED="1557590603605" TEXT="Frage: ist das Design gut?">
<icon BUILTIN="button_ok"/>
<node CREATED="1555808300703" ID="ID_621465643" MODIFIED="1576282358063" TEXT="kann/sollte die L&#xf6;song mehr integriert sein?">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      sollten z.B. die Konstruktor-Funktionen nicht unmittelbar mit definiert werden?
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1555808311417" ID="ID_1932269477" MODIFIED="1576282358062" TEXT="oder ist es grade ein Vorteil, wenn sie ein roher Baustein ist">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...weil man stets noch einen Layer dar&#252;bersetzt?
    </p>
    <p>
      Wie auch im konkreten Fall das TrackProfile, was dann ein vector&lt;VerbPack&gt; werden w&#252;rde?
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#fcda04" DESTINATION="ID_1932269477" ENDARROW="Default" ENDINCLINATION="290;0;" ID="Arrow_ID_742389536" SOURCE="ID_128501904" STARTARROW="None" STARTINCLINATION="187;8;"/>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1557590616683" ID="ID_128501904" MODIFIED="1576282358062" TEXT="ich halte es jetzt f&#xfc;r gelungen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      weil ich es geschafft habe,
    </p>
    <p>
      den gesamten Auswahl-Mechanismus in einen einzigen Konstruktur-Aufruf zu packen.
    </p>
    <p>
      Man kann also nach Belieben VerbPacks in allen Varianten bauen,
    </p>
    <p>
      und es obliegt der n&#228;chst h&#246;heren Schicht, dies auch in sinnvollem Rahmen zu tun...
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#fcda04" DESTINATION="ID_1932269477" ENDARROW="Default" ENDINCLINATION="290;0;" ID="Arrow_ID_742389536" STARTARROW="None" STARTINCLINATION="187;8;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1557590586650" ID="ID_1348312855" MODIFIED="1560442031421" TEXT="den (neu gebauten) VerbPack integrieren">
<icon BUILTIN="button_ok"/>
<node CREATED="1560175373902" ID="ID_1956293405" MODIFIED="1560175561475" TEXT="bestehendes TrackProfile sinngem&#xe4;&#xdf; umbauen">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1560175492578" ID="ID_1159091213" MODIFIED="1560213489122" TEXT="Verb + explizite Storage -&gt; VerbPack">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1560213502726" ID="ID_1476369075" MODIFIED="1560213516539" TEXT="l&#xe4;&#xdf;t sich 1:1 umschreiben"/>
<node COLOR="#338800" CREATED="1560213581507" ID="ID_691911700" MODIFIED="1560213594489" TEXT="habe die Argumente sofort komplett flexibel gemacht">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1560175383722" ID="ID_107500239" MODIFIED="1560213484696" TEXT="Problem: addSlopeUp()">
<icon BUILTIN="button_ok"/>
<node CREATED="1560175410857" ID="ID_1553338375" MODIFIED="1560175429772" TEXT="bisher konnten wir einfach das Argument manipulieren"/>
<node CREATED="1560175430998" ID="ID_125919592" MODIFIED="1576282358061" TEXT="...aber jetzt gibt es nicht mehr &quot;das&quot; Argument">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      sondern die Argumente sind in einem Tuple eingewickelt,
    </p>
    <p>
      und befinden sich tief vergraben in der Implementierungsklasse,
    </p>
    <p>
      innerhalb eines PolymorphicValue.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1560213397573" ID="ID_1416770885" MODIFIED="1576282358061" TEXT="und dann mu&#xdf; man eben explizit casten und auspacken!">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      das ist nur technisch und etwas h&#228;slich,
    </p>
    <p>
      aber durchaus sauber (unter der Annahme, da&#223; wir uns unsere Token
    </p>
    <p>
      stets selbst erzeugen und daher auf das korrekte Literal Verla&#223; ist)
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#338800" CREATED="1560175529230" ID="ID_914166338" MODIFIED="1560441859516">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Verh&#228;ltnis zum Inteface <b>Renderer</b>&#160;kl&#228;ren
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#508bd1" DESTINATION="ID_1592949721" ENDARROW="Default" ENDINCLINATION="59;-58;" ID="Arrow_ID_1618633786" STARTARROW="None" STARTINCLINATION="-91;0;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1560303652840" ID="ID_1947607603" MODIFIED="1560303667034" TEXT="Konsequenz des generischen &#xbb;Ruler&#xab;-Konzepts"/>
<node CREATED="1560303597884" ID="ID_1906099403" MODIFIED="1576282358060" TEXT="wurde notwendig wegen der Aufteilung in zwei Canvas">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      vorher war n&#228;mlich das Profil im Canvas selber.
    </p>
    <p>
      Jetzt ist das Profil in das BodyCanvasWidget hochgewandert,
    </p>
    <p>
      und soll von beiden sub-Canvas gleicherma&#223;en jeweils passend interpretiert werden
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1560303745209" ID="ID_202529970" MODIFIED="1560303777782" TEXT="es ergeben sich 4 verschiedene Interpretierungen eines einzigen Profils">
<icon BUILTIN="info"/>
</node>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1560175579123" FOLDED="true" ID="ID_678068478" MODIFIED="1576974455512" TEXT="in generische draw()-Routine einbinden">
<icon BUILTIN="idea"/>
<node COLOR="#338800" CREATED="1560175593361" ID="ID_1592949721" MODIFIED="1560442019836" TEXT="wo kommt der Renderer ins Spiel?">
<linktarget COLOR="#508bd1" DESTINATION="ID_1592949721" ENDARROW="Default" ENDINCLINATION="59;-58;" ID="Arrow_ID_1618633786" SOURCE="ID_914166338" STARTARROW="None" STARTINCLINATION="-91;0;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1560303801546" ID="ID_1150937962" MODIFIED="1560442045382" TEXT="Renderer verkapselt das Profil">
<icon BUILTIN="info"/>
</node>
<node CREATED="1560303861175" ID="ID_1281704590" MODIFIED="1576282358060" TEXT="Renderer ist ein einmal-wegwerf-Objekt">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...daher die Factory
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#435e98" CREATED="1560303951038" ID="ID_353953611" MODIFIED="1576282358059" TEXT="Frage: wirklich zweistufig konstruieren??">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <ol>
      <li>
        getXxxRenderer(CairoC) -&gt; packt Profil ein
      </li>
      <li>
        Renderer.drawTo(canvas)
      </li>
    </ol>
  </body>
</html></richcontent>
<icon BUILTIN="help"/>
<node CREATED="1560428273738" ID="ID_149938310" MODIFIED="1560428299172" TEXT="was hab ich mir vor ein paar Monaten wohl gedacht??!"/>
<node CREATED="1560428302521" FOLDED="true" ID="ID_616331969" MODIFIED="1561827483833" TEXT="Anla&#xdf; war wohl der Unterschied zwischen Canvas und CairoContext">
<icon BUILTIN="idea"/>
<node CREATED="1560428573068" ID="ID_1838989620" MODIFIED="1560428581790" TEXT="Canvas == Container f&#xfc;r &quot;Zukunft&quot;"/>
<node CREATED="1560428585872" ID="ID_1746909203" MODIFIED="1560428593856" TEXT="CairoContext: da zeichnet man konkret"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1560304378008" ID="ID_1402776173" MODIFIED="1560441942501" TEXT="vereinfachen...?">
<icon BUILTIN="stop-sign"/>
<node CREATED="1560304395781" ID="ID_1496832477" MODIFIED="1560428268414" TEXT="_RenderFactory f&#xe4;llt weg">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1560304412203" FOLDED="true" ID="ID_1976247827" MODIFIED="1561827483833">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Renderer <i>ist</i>&#160;bereits der Funktor
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
<node CREATED="1560304535209" ID="ID_1225485882" MODIFIED="1560304560890" TEXT="void(TimelineCanvas&amp;)"/>
<node CREATED="1560428691244" ID="ID_1126064182" MODIFIED="1560441982757" TEXT="Konsequenz: TimelineCanvas wird zum Interface">
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#338800" CREATED="1560441983792" ID="ID_998159430" MODIFIED="1560442009273" TEXT="nein: alles Ben&#xf6;tigte mu&#xdf; als Argument &#xfc;bergeben werden">
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1560304868565" FOLDED="true" ID="ID_471873086" MODIFIED="1561827483833" TEXT="brauchen wir &#xfc;berhaupt einen Funktor als weitere Indirektion?">
<icon BUILTIN="help"/>
<node CREATED="1560304911496" ID="ID_241280957" MODIFIED="1560305044856" TEXT="macht n&#xe4;mlich drei Indirektionen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <ol>
      <li>
        der Renderer. Abstrahiert welcher Interpreter wie genau zum Einsatz kommen soll (Hintergrund/Overla sowie Ruler/Content)
      </li>
      <li>
        der konkrete Interpreter
      </li>
      <li>
        die einzelnen Verben im Profil
      </li>
    </ol>
  </body>
</html></richcontent>
</node>
<node CREATED="1560305049471" ID="ID_1228128138" MODIFIED="1560305059543" TEXT="k&#xf6;nnte man 1) und 2) zusammenlegen?"/>
<node CREATED="1560305069484" ID="ID_488264100" MODIFIED="1560305090839" TEXT="d.h. der Renderer w&#xe4;re zugleich ein Profil-Interpreter"/>
<node CREATED="1560441903171" ID="ID_220479717" MODIFIED="1560441921539" TEXT="nein: der Renderer konstruiert einen transienten Profil-Interpreter">
<icon BUILTIN="button_cancel"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1560175646834" ID="ID_585934033" MODIFIED="1561150742874" TEXT="Selektor f&#xfc;r den relevanten Teil des Profils">
<linktarget COLOR="#235691" DESTINATION="ID_585934033" ENDARROW="Default" ENDINCLINATION="-259;-8;" ID="Arrow_ID_975721855" SOURCE="ID_1448105245" STARTARROW="Default" STARTINCLINATION="168;-53;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1560442117286" ID="ID_1565882906" MODIFIED="1560442234529" TEXT="wir haben jetzt zwei Canvas">
<icon BUILTIN="info"/>
<node CREATED="1560442238349" ID="ID_1013135995" MODIFIED="1560442245202" TEXT="Overview-Ruler (always on top)"/>
<node CREATED="1560442245898" ID="ID_1189464925" MODIFIED="1560442253375" TEXT="Track Body (scrollable)"/>
</node>
<node CREATED="1560442129908" ID="ID_410132191" MODIFIED="1560442196351" TEXT="jeder mu&#xdf; nur den f&#xfc;r ihn relevanten Teil rendern"/>
<node CREATED="1560442220007" ID="ID_92028891" MODIFIED="1560442229810" TEXT="ist nur eine Preformance-Optimierung">
<icon BUILTIN="idea"/>
<node CREATED="1560442262544" ID="ID_1220970686" MODIFIED="1560442514142" TEXT="wir verwenden einheitliche Koordinaten">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1220970686" ENDARROW="Default" ENDINCLINATION="-532;0;" ID="Arrow_ID_1730442283" SOURCE="ID_1718337163" STARTARROW="None" STARTINCLINATION="377;0;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1560442275246" ID="ID_1464324660" MODIFIED="1560442286901" TEXT="deshalb ist auch nur jeweils der relevante Teil sichtbar"/>
<node CREATED="1560442288690" ID="ID_106486844" MODIFIED="1560442318651" TEXT="trotzdem kann man hier die H&#xe4;lfte der draw-Anweisungen einsparen">
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#338800" CREATED="1560442439507" FOLDED="true" ID="ID_1072410115" MODIFIED="1576974439609" TEXT="Implementierung">
<icon BUILTIN="button_ok"/>
<node CREATED="1560612664570" ID="ID_487480098" MODIFIED="1563117887785" TEXT="wo steckt diese Info?">
<node CREATED="1560612681316" ID="ID_1320073999" MODIFIED="1560612835546" TEXT="bisher im Argument des Prelude-Verbs">
<icon BUILTIN="info"/>
</node>
<node CREATED="1560612691723" ID="ID_1955365339" MODIFIED="1576282358059" TEXT="das Prelude-Verb als Solches ist sinnvoll">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      weil man damit eine generische Klammer bauen kann
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1560612721690" ID="ID_1010565828" MODIFIED="1560612804974" TEXT="das Argument so zu nutzen ist schon etwas &quot;pragmatisch&quot;">
<icon BUILTIN="smiley-oh"/>
</node>
<node CREATED="1560612743655" ID="ID_926510331" MODIFIED="1576282358058" TEXT="andererseits ist die Storage schon da....">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      und bleibt anderweitig ungenutzt
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1560612790659" ID="ID_977261236" MODIFIED="1560612827353" STYLE="fork" TEXT="und f&#xfc;r die up-Slope habe ich einen solchen Zugriff auch akzeptabel befunden">
<icon BUILTIN="smiley-neutral"/>
</node>
<node CREATED="1560612863371" FOLDED="true" ID="ID_161592739" MODIFIED="1563141484962" TEXT="alternativ k&#xf6;nnte man ein Feld im Profil selber machen">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1560612942381" ID="ID_1967930581" MODIFIED="1560612949943" TEXT="und das w&#xe4;re etwa die gleiche Menge Code"/>
<node CREATED="1560612951033" ID="ID_850127059" MODIFIED="1560612963343" TEXT="und auch etwa gleicherma&#xdf;en lesbar"/>
</node>
<node CREATED="1560613101287" ID="ID_4285270" MODIFIED="1576282358058" TEXT="einen Monat sp&#xe4;ter fand ich dann doch ein dediziertes Feld im Profil-Objekt besser">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...ist klarer, und erlaubt nebenbei auch noch, zwei Methoden einzusparen
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#304ed9" DESTINATION="ID_4285270" ENDARROW="None" ENDINCLINATION="751;409;" ID="Arrow_ID_1197384474" SOURCE="ID_189142395" STARTARROW="Default" STARTINCLINATION="603;0;"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1560618427589" FOLDED="true" ID="ID_713762696" MODIFIED="1561827483834" TEXT="wer generiert diese Info?">
<node CREATED="1560618449106" ID="ID_450355502" MODIFIED="1560618479666" TEXT="undurchdringbar verworren">
<icon BUILTIN="broken-line"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1561150468059" ID="ID_725781646" MODIFIED="1561151353967" TEXT="mu&#xdf; wohl letztlich irgendwie aus der Session kommen">
<arrowlink COLOR="#ce7c94" DESTINATION="ID_1443277448" ENDARROW="Default" ENDINCLINATION="509;0;" ID="Arrow_ID_1589685813" STARTARROW="None" STARTINCLINATION="296;0;"/>
<icon BUILTIN="bell"/>
</node>
</node>
<node COLOR="#338800" CREATED="1561150497032" ID="ID_617550585" MODIFIED="1563117862694" TEXT="Aufspalten des Profils">
<icon BUILTIN="button_ok"/>
<node CREATED="1561150521519" FOLDED="true" ID="ID_1498693390" MODIFIED="1561827482929" TEXT="Schei...">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="smiley-angry"/>
<node CREATED="1561150540851" ID="ID_490080987" MODIFIED="1561150545451" TEXT="noch eine Komplexit&#xe4;t"/>
</node>
<node CREATED="1561150547674" ID="ID_1791753235" MODIFIED="1561150564863" TEXT="naja, eigentlich nur noch einen Z&#xe4;hler in die For-Loop einbauen"/>
<node CREATED="1561150569779" FOLDED="true" ID="ID_1587537475" MODIFIED="1561827482929" TEXT="ich will aber den Standardfall irgendwie erhalten">
<node CREATED="1561150585582" ID="ID_791249238" MODIFIED="1561150668295" TEXT="und sei es blo&#xdf; zur Dokumentation">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      d.h. ich will den Standardfall als Standardfall sichtbar haben,
    </p>
    <p>
      und dann diese zus&#228;tzliche Filterung oben drauf pflanzen
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1561150616496" ID="ID_942796141" MODIFIED="1561150627953" TEXT="also irgendwie noch einen Dekorator bauen??">
<icon BUILTIN="button_cancel"/>
</node>
</node>
<node COLOR="#338800" CREATED="1561150669160" FOLDED="true" ID="ID_1043420247" MODIFIED="1561827482930" TEXT="L&#xf6;sung mit einem Iterator-Filter">
<icon BUILTIN="button_ok"/>
<node CREATED="1561150688515" ID="ID_1217282542" MODIFIED="1561150695224" TEXT="stateful counting Filter geht doch..."/>
<node CREATED="1561150696094" ID="ID_1756846313" MODIFIED="1561150726654" TEXT="sollte am Ende genauso effizient sein">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      als ob es darauf ank&#228;me...
    </p>
    <p>
      Hauptsache, keine zus&#228;tzliche Speicher-Allokation
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#338800" CREATED="1563118329642" ID="ID_337327442" MODIFIED="1563141708284" TEXT="Denkfehler: prelude() mu&#xdf; mitgez&#xe4;hlt werden">
<linktarget COLOR="#25e58e" DESTINATION="ID_337327442" ENDARROW="Default" ENDINCLINATION="523;0;" ID="Arrow_ID_376180455" SOURCE="ID_1599825097" STARTARROW="Default" STARTINCLINATION="1063;0;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node CREATED="1563118200356" ID="ID_1267787629" MODIFIED="1563118296820" TEXT="Gegenst&#xfc;ck im draw()-Code">
<arrowlink COLOR="#44437f" DESTINATION="ID_1017084418" ENDARROW="Default" ENDINCLINATION="1682;-201;" ID="Arrow_ID_187242024" STARTARROW="None" STARTINCLINATION="1913;158;"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1560442383281" ID="ID_1448105245" MODIFIED="1674596924446" TEXT="Festlegen der vertikalen Ausdehnung der Teil-Widgets">
<arrowlink COLOR="#235691" DESTINATION="ID_585934033" ENDARROW="Default" ENDINCLINATION="-259;-8;" ID="Arrow_ID_975721855" STARTARROW="Default" STARTINCLINATION="168;-53;"/>
<linktarget COLOR="#5f57ba" DESTINATION="ID_1448105245" ENDARROW="Default" ENDINCLINATION="-1587;-35;" ID="Arrow_ID_532403594" SOURCE="ID_1989047133" STARTARROW="None" STARTINCLINATION="1293;134;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1565281879855" FOLDED="true" ID="ID_386162681" MODIFIED="1674596532559" TEXT="Aufgabe: steuern">
<icon BUILTIN="yes"/>
<node COLOR="#435e98" CREATED="1565281895004" ID="ID_1758019036" MODIFIED="1674596912874" TEXT="was ist der Trigger-Punkt?">
<arrowlink COLOR="#7b45d8" DESTINATION="ID_1896159832" ENDARROW="Default" ENDINCLINATION="-839;66;" ID="Arrow_ID_786196853" STARTARROW="None" STARTINCLINATION="667;67;"/>
<icon BUILTIN="help"/>
<node CREATED="1674596555914" HGAP="39" ID="ID_878229637" MODIFIED="1674596749453" TEXT="signalStructureChange" VSHIFT="7">
<icon BUILTIN="info"/>
<node CREATED="1674596569943" ID="ID_151950407" MODIFIED="1674596795349" TEXT="&#xd83e;&#xdc32; im DisplayManager (ABC) angesiedelt"/>
<node CREATED="1674596578990" ID="ID_1742690246" MODIFIED="1674596812667" TEXT="&#x27ff; direkt auch mit Change-Detector im ZoomWindow verdrahtet"/>
<node CREATED="1674596753359" ID="ID_828853736" MODIFIED="1674596787193" TEXT="&#x27fc; BodyCanvasWidget::slotStructureChange"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1565281921697" ID="ID_459498695" MODIFIED="1674596912874" TEXT="wo wird ggfs diese Info gespeichert?">
<icon BUILTIN="help"/>
<node CREATED="1674596821200" ID="ID_1373193265" MODIFIED="1674596840198" TEXT="durch Leeren des TrackProfile im BodyCanvasWidget"/>
<node CREATED="1674596842899" ID="ID_1305988233" MODIFIED="1674596856843" TEXT="ist damit idempotent und auch re-entrant"/>
</node>
<node COLOR="#435e98" CREATED="1565281938372" ID="ID_1188639528" MODIFIED="1674596912875" TEXT="wo/wann wird sie auf die zwei Canvas-Widgets &#xfc;bertragen?">
<icon BUILTIN="help"/>
<node CREATED="1674596865952" ID="ID_451984562" MODIFIED="1674596874746" TEXT="erst in dem Moment, wo tats&#xe4;chlich gezeichnet wird"/>
<node CREATED="1674596876759" ID="ID_358515715" MODIFIED="1674596909486" TEXT="im Getter steckt der Aufruf der eigentlichen Neuberechnung"/>
</node>
</node>
<node COLOR="#338800" CREATED="1611486660157" ID="ID_142948287" MODIFIED="1674596527387" TEXT="...und tats&#xe4;chlich berechnen">
<arrowlink COLOR="#67b4ea" DESTINATION="ID_1623890878" ENDARROW="Default" ENDINCLINATION="24;-87;" ID="Arrow_ID_809556626" STARTARROW="None" STARTINCLINATION="138;12;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1560608579463" FOLDED="true" ID="ID_900869986" MODIFIED="1674597032097" TEXT="Layout etablieren">
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1565282669252" ID="ID_1077695296" MODIFIED="1565282697164" TEXT="horizontal zu zeichnende Spanne">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1672843594185" ID="ID_1806332659" MODIFIED="1672843600804" TEXT="Ausdehnung des Canvas">
<node CREATED="1672843603784" ID="ID_547988829" MODIFIED="1672843680818" TEXT="initial festlegen">
<arrowlink COLOR="#4b3d60" DESTINATION="ID_1283622298" ENDARROW="Default" ENDINCLINATION="-940;-885;" ID="Arrow_ID_425073157" STARTARROW="None" STARTINCLINATION="-915;160;"/>
</node>
<node CREATED="1672843689370" ID="ID_1279756396" MODIFIED="1672843707230" TEXT="reale Ausdehnung vom ScrolledWindow contentArea_">
<node COLOR="#435e98" CREATED="1672843720006" ID="ID_1969670799" MODIFIED="1672843870753" TEXT="siehe: Size-Allokation auf GTK Widget">
<arrowlink COLOR="#536cc0" DESTINATION="ID_1464608958" ENDARROW="Default" ENDINCLINATION="-1020;1248;" ID="Arrow_ID_1013900284" STARTARROW="None" STARTINCLINATION="-2004;139;"/>
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#c6ccd6" COLOR="#2c2a74" CREATED="1672843882154" ID="ID_1978068021" MODIFIED="1676045024820" TEXT="Beachte Unterschiede in der Bedeutung der Getter">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <ul>
      <li>
        get_allocation|width|height &#160;&#10236;&#160; aktuell g&#252;ltiger Wert incl Alignment/Modifikationen
      </li>
      <li>
        get_allocated_size &#160;&#10236;&#160; was gesetzt wurde, aber bereits ohne Dekoration
      </li>
    </ul>
  </body>
</html></richcontent>
<arrowlink COLOR="#727fbb" DESTINATION="ID_464303848" ENDARROW="Default" ENDINCLINATION="-1975;186;" ID="Arrow_ID_1946781864" STARTARROW="None" STARTINCLINATION="-1869;99;"/>
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1978068021" ENDARROW="Default" ENDINCLINATION="323;11;" ID="Arrow_ID_920771700" SOURCE="ID_400583877" STARTARROW="None" STARTINCLINATION="462;0;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
<node CREATED="1678840039597" ID="ID_1655268668" MODIFIED="1678840689222" TEXT="wird festelegt durch &#xd83e;&#xdc46; bodyCanvas_.signal_size_allocate()">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; text-indent: 0px">
      Empf&#228;nger(&#187;Slot&#171;): <font face="Monospaced" color="#552694">TimelineLayout::sizeZoomWindow (Gtk::Allocation&amp;)</font>
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#5978c6" DESTINATION="ID_1655268668" ENDARROW="Default" ENDINCLINATION="1204;-55;" ID="Arrow_ID_470073487" SOURCE="ID_1658816102" STARTARROW="None" STARTINCLINATION="506;642;"/>
<icon BUILTIN="info"/>
<node CREATED="1678840184103" ID="ID_1797129143" MODIFIED="1678840379017" TEXT="siehe 09714cfe">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <font color="#912929" face="Monospaced">commit 09714cfe28739ceff0b5693447be41166c1cc8d6</font>
    </p>
    <p>
      <font face="Monospaced">Author: Ichthyostega &lt;prg@ichthyostega.de&gt; </font>
    </p>
    <p>
      <font face="Monospaced">Date:&#160;&#160;&#160;Fri Jan 6 03:09:28 2023 +0100 </font>
    </p>
    <p>
      
    </p>
    <p>
      <b>Timeline: draft solution to interconnect ZoomWindow and scrollbar</b>
    </p>
    <p>
      
    </p>
    <p>
      After quite some tinkering, instead of extending the DisplayManager interface,
    </p>
    <p>
      I now prefer to treat this connection rather as an intricate implementation detail:
    </p>
    <p>
      
    </p>
    <p>
      The TimelineLayout implementation now provides two translation functions,
    </p>
    <p>
      which are directly wired as slots from the Signals emitted by moving the
    </p>
    <p>
      hand of the scrollbar; the idea is that these functions mutate the ZoomWindow,
    </p>
    <p>
      which then triggers a DisplayEvaltuation, which in turn causes the
    </p>
    <p>
      drawing code to pick up and translate back the new metric and position.
    </p>
    <p>
      
    </p>
    <p>
      Results look promising, insofar the DisplayEvaluation is now triggered
    </p>
    <p>
      repeatedly, and the actual window width in pixel is propagated;
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#435e98" CREATED="1678841423804" ID="ID_81531339" MODIFIED="1678916678040" TEXT="&#x27f9; f&#xfc;hrt sofort zur Kalibrierung des ZoomWindow">
<arrowlink COLOR="#748598" DESTINATION="ID_833023922" ENDARROW="Default" ENDINCLINATION="-1609;-94;" ID="Arrow_ID_1971623817" STARTARROW="None" STARTINCLINATION="-140;338;"/>
</node>
<node COLOR="#435e98" CREATED="1678916699994" ID="ID_868064127" MODIFIED="1678916785049" TEXT="(derzeit bleibt die Timeline auf dem Default von 23sec)">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...es kommt halt nix Spezifisches aus dem Model, aber es g&#228;be auch bisher gar keine entsprechenden Diff-Bindings und Model-Properties im GUI
    </p>
  </body>
</html></richcontent>
<font NAME="SansSerif" SIZE="10"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1565282697992" ID="ID_1761874542" MODIFIED="1674597012758" TEXT="vertikal belegter Raum">
<icon BUILTIN="hourglass"/>
<node COLOR="#338800" CREATED="1565283074170" ID="ID_1990551085" MODIFIED="1566407001705" TEXT="Trigger/Berechnungsfunktion">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1565283089529" ID="ID_833580972" MODIFIED="1582931247838" TEXT="ausgel&#xf6;st durch allgemeine Struktur-&#xc4;nderungen">
<arrowlink COLOR="#8db7cd" DESTINATION="ID_1799554074" ENDARROW="Default" ENDINCLINATION="598;258;" ID="Arrow_ID_1531606207" STARTARROW="None" STARTINCLINATION="455;26;"/>
<icon BUILTIN="info"/>
</node>
<node COLOR="#338800" CREATED="1566407025586" ID="ID_1467953135" MODIFIED="1566407042985" TEXT="sicherstellen, da&#xdf; vorher der DisplayEvaluationPass gelaufen ist">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1566407006341" ID="ID_375041651" MODIFIED="1566407015727" TEXT="H&#xf6;he vom TrackBody beziehen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1566407055894" ID="ID_982642970" MODIFIED="1566407059861" TEXT="&#xc4;nderungen erkennen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1566407136811" ID="ID_832049284" MODIFIED="1566487620033" TEXT="ge&#xe4;nderte Gr&#xf6;&#xdf;e wird nicht sichtbar">
<arrowlink COLOR="#16d17f" DESTINATION="ID_489535600" ENDARROW="Default" ENDINCLINATION="-80;-272;" ID="Arrow_ID_1038229013" STARTARROW="None" STARTINCLINATION="-102;166;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1582931260542" ID="ID_43972117" MODIFIED="1674513272422" TEXT="Thema: Koordinieren zwischen Header und Body">
<linktarget COLOR="#689ba2" DESTINATION="ID_43972117" ENDARROW="Default" ENDINCLINATION="198;928;" ID="Arrow_ID_1080676559" SOURCE="ID_1842930323" STARTARROW="None" STARTINCLINATION="-1589;-3311;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1582931486072" ID="ID_1623890878" MODIFIED="1674513437165" TEXT="Ausdehnung der Tracks">
<arrowlink COLOR="#fe5b57" DESTINATION="ID_1920766923" ENDARROW="Default" ENDINCLINATION="595;0;" ID="Arrow_ID_1362710635" STARTARROW="Default" STARTINCLINATION="529;0;"/>
<linktarget COLOR="#67b4ea" DESTINATION="ID_1623890878" ENDARROW="Default" ENDINCLINATION="24;-87;" ID="Arrow_ID_809556626" SOURCE="ID_142948287" STARTARROW="None" STARTINCLINATION="138;12;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1674161380587" ID="ID_1311832889" MODIFIED="1674513429084" TEXT="Platz f&#xfc;r Placement-Controlls sinnvoll anordnen">
<arrowlink COLOR="#5a7c92" DESTINATION="ID_478580800" ENDARROW="Default" ENDINCLINATION="451;41;" ID="Arrow_ID_513449931" STARTARROW="None" STARTINCLINATION="481;-27;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1674163294922" FOLDED="true" ID="ID_1332292119" LINK="#ID_1650195806" MODIFIED="1674254403617" TEXT="Probleme mit der vertikalen Koordination bei nested Tracks">
<arrowlink COLOR="#463cb1" DESTINATION="ID_1762683235" ENDARROW="Default" ENDINCLINATION="624;37;" ID="Arrow_ID_1560223761" STARTARROW="None" STARTINCLINATION="129;-6;"/>
<icon BUILTIN="messagebox_warning"/>
<node COLOR="#435e98" CREATED="1674174926441" FOLDED="true" ID="ID_896721694" MODIFIED="1674254493101" TEXT="Zweifel an der berechneten H&#xf6;he">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1674175196891" ID="ID_390658088" MODIFIED="1674175199729" TEXT="Body?">
<node CREATED="1674175200596" ID="ID_1235875992" MODIFIED="1674175204768" TEXT="nachmessen per GIMP"/>
<node CREATED="1674175205694" ID="ID_1007099807" MODIFIED="1674175218093" TEXT="es fehlt der Ruler-Canvas">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1674175219297" ID="ID_873831776" MODIFIED="1674175224981" TEXT="ansonsten sind die Werte exakt">
<node CREATED="1674175226593" ID="ID_891434672" MODIFIED="1674175293596" TEXT="82 px f&#xfc;r Root-Content + Slope-down"/>
<node CREATED="1674175239335" ID="ID_108512900" MODIFIED="1674175288293" TEXT="164 f&#xfc;r Root-content + Child-content + slope down+up"/>
</node>
</node>
<node CREATED="1674176070056" ID="ID_743840121" MODIFIED="1674176073188" TEXT="Head">
<node CREATED="1674176074535" ID="ID_39929710" MODIFIED="1674176094582" TEXT="das Gesamt-Grid wird zu gro&#xdf; ermittelt">
<node CREATED="1674176096077" ID="ID_583910543" MODIFIED="1674176120813" TEXT="angeblich 164">
<node CREATED="1674176756797" ID="ID_1711694466" MODIFIED="1674176762735" TEXT="berechnet als 14+68+82"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1674177671455" ID="ID_200566627" MODIFIED="1674254483689" TEXT="m&#xf6;glicherweise ist die kombinierte Spalte das Problem">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      |o| cH(line=0) += (14,14)
    </p>
    <p>
      |o| cH(line=1) += (68,12)
    </p>
    <p>
      |o| cH(line=2) += (68,82)
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#2b91d0" DESTINATION="ID_1671254452" ENDARROW="Default" ENDINCLINATION="220;0;" ID="Arrow_ID_864210010" STARTARROW="None" STARTINCLINATION="-7;189;"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1674177711595" ID="ID_926975812" MODIFIED="1674177719085" TEXT="14 = H&#xf6;he Label"/>
<node CREATED="1674177720641" ID="ID_490298226" MODIFIED="1674177730988" TEXT="12 = H&#xf6;he Gl&#xfc;hbirne (control)"/>
<node CREATED="1674177737457" ID="ID_467766336" MODIFIED="1674177745813" TEXT="82 = H&#xf6;he nested Track-Head"/>
<node CREATED="1674177887491" ID="ID_1629142103" MODIFIED="1674177906308" TEXT="68 = 40 + &#x394;=28"/>
</node>
<node CREATED="1674247115438" ID="ID_1557269606" MODIFIED="1674247168418" TEXT="tats&#xe4;chlich z&#xe4;hlen die kombinierten Spalten nur einmal">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1674247332612" ID="ID_421176912" MODIFIED="1674247406408" TEXT="14+12+82 = 108 sieht viel realistischer aus....">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...und das w&#252;rde auch erkl&#228;ren, warum trotzdem die Zelle mit der Gl&#252;hbirne (=die direkten Controls) <i>&#252;berhaupt nicht aufgespreitzt </i>wird
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#dbc5b3" COLOR="#ff0000" CREATED="1674247147690" ID="ID_428940289" MODIFIED="1674247211671" TEXT="&#x27f9; der Ansatz mit dem Maximum pro Zeile ist nicht korrekt"/>
</node>
<node CREATED="1674176180377" ID="ID_154967424" MODIFIED="1674176210609" TEXT="visuell sehe ich nur 14+94 = 108"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1674247231512" ID="ID_704080657" MODIFIED="1674254386095" TEXT="H&#xf6;he im TrackHeadWidget korrekt messen">
<icon BUILTIN="button_ok"/>
<node CREATED="1674247251100" ID="ID_1501775447" MODIFIED="1674247278994" TEXT="nur die 2.Spalte insgesamt summieren">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1674247260807" ID="ID_1423273480" MODIFIED="1674247276378" TEXT="pa&#xdf;t gut zusammen mit dem End-Ausgleich in der 1.Spalte">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1674248099319" ID="ID_1685711239" MODIFIED="1674254383950" TEXT="aber zudem sicherstellen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1674248116285" ID="ID_1285555258" MODIFIED="1674254382320" TEXT="...da&#xdf; das wirkliche Maximum gemessen wird">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      &#10233; es mu&#223; das strukturell korrekte Maximum explizit berechnet werden; w&#252;rden wir nur die rechte Spalte summieren, bliebe eine bereits bestehende Spreizung in der linken Spalte unber&#252;cksichtigt
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1674248127199" ID="ID_991058401" MODIFIED="1674254380528" TEXT="...da&#xdf; die Struktur-Spalte auch wirklich auf Anschlag ist">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      &#10233; aber auch das umgekehrte Szenario mu&#223; ber&#252;cksichtigt werden: falls die Gesamth&#246;he von der Summe in der rechten Spalte dominiert wird, gen&#252;gt es nicht, blindlings nur eine eigentlich kleinere linke Strukturspalte mit dem &#916; zu beaufschlagen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1674254451385" ID="ID_1671254452" MODIFIED="1674254477841" TEXT="jetzt ist die Berechnung korrekt">
<linktarget COLOR="#2b91d0" DESTINATION="ID_1671254452" ENDARROW="Default" ENDINCLINATION="220;0;" ID="Arrow_ID_864210010" SOURCE="ID_200566627" STARTARROW="None" STARTINCLINATION="-7;189;"/>
<icon BUILTIN="forward"/>
</node>
</node>
<node COLOR="#338800" CREATED="1674172473327" ID="ID_1376269414" MODIFIED="1674347900406" TEXT="Beginn der nested-Tracks koordinieren">
<icon BUILTIN="button_ok"/>
<node CREATED="1674172530639" ID="ID_1531517037" MODIFIED="1674172537538" TEXT="sie beginnen typischerweise zu fr&#xfc;h"/>
<node CREATED="1674172548813" ID="ID_53484260" MODIFIED="1674172558839" TEXT="Padding f&#xfc;r die Content-H&#xf6;he gen&#xfc;gt nicht"/>
<node CREATED="1674345881143" ID="ID_1661063602" MODIFIED="1674345967809" TEXT="TrackBody kann das aber berechnen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...und zwar &#252;ber den contentOffset, der relativ zur Start-Zeile gemessen wird, sowie der direkten ContentHeight, zuz&#252;glich Padding
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#338800" CREATED="1674172566487" ID="ID_1608232649" MODIFIED="1674513368872" TEXT="Diskrepanz sinnvoll einbringen">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1674172577081" ID="ID_1556472546" MODIFIED="1674254503089" TEXT="H&#xf6;he insgesamt &#x27fc; Struktur-Spalte"/>
<node COLOR="#435e98" CREATED="1674172577081" ID="ID_902379987" MODIFIED="1674347889053" TEXT="Synchronisation &#x27fc; padding nach direct content"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1674347903812" FOLDED="true" ID="ID_1742313131" MODIFIED="1674513236391" TEXT="H&#xf6;henberechnung im TrackBody unvollst&#xe4;ndig">
<icon BUILTIN="broken-line"/>
<node COLOR="#435e98" CREATED="1674347924697" FOLDED="true" ID="ID_1440620020" MODIFIED="1674513373146" TEXT="Probleme">
<icon BUILTIN="broken-line"/>
<node CREATED="1674347929637" ID="ID_1693517831" MODIFIED="1674347942830" TEXT="der separate Ruler-Canvas wird nicht ber&#xfc;cksichtigt">
<node CREATED="1674350584579" ID="ID_1671695186" MODIFIED="1674350589304" TEXT="wie gro&#xdf;?">
<node CREATED="1674350590559" ID="ID_1966298653" MODIFIED="1674351114799" TEXT="11px == decoration.topMar">
<arrowlink COLOR="#a9b4c1" DESTINATION="ID_354285269" ENDARROW="Default" ENDINCLINATION="70;0;" ID="Arrow_ID_1818076269" STARTARROW="None" STARTINCLINATION="-79;8;"/>
</node>
</node>
<node CREATED="1674354054786" ID="ID_1551678224" MODIFIED="1674354124203" TEXT="aber: er fehlt nur im contentOffset und im Gesamtergebnis (line = res)"/>
<node CREATED="1674354075442" ID="ID_1951685087" MODIFIED="1674354088196" TEXT="in die Gr&#xf6;&#xdf;e werden zumindest die Ruler korrekt mit eingerechnet"/>
</node>
<node CREATED="1674347946242" ID="ID_1905901999" MODIFIED="1674347965339" TEXT="der Margin f&#xfc;r Prelude / Postlude wird nicht ber&#xfc;cksichtigt">
<node CREATED="1674353995316" ID="ID_1351496959" MODIFIED="1674354004872" TEXT="das ist ein generelles Problem"/>
<node CREATED="1674354005689" ID="ID_374452100" MODIFIED="1674354012709" TEXT="aber gewisserma&#xdf;en auch logisch"/>
<node CREATED="1674354013794" ID="ID_26588386" MODIFIED="1674354028708" TEXT="Prelude wird eben nicht zur Gr&#xf6;&#xdf;e des Root-Track gerechnet"/>
</node>
<node CREATED="1674347969175" ID="ID_1910872157" MODIFIED="1674347994788" TEXT="die Slope-down/up wird nicht ber&#xfc;cksichtigt"/>
</node>
<node COLOR="#435e98" CREATED="1674351098493" FOLDED="true" ID="ID_894959453" MODIFIED="1674513358248" TEXT="Beobachtung">
<icon BUILTIN="info"/>
<node CREATED="1674350941467" ID="ID_1826693009" MODIFIED="1674350945974" TEXT="decoration">
<icon BUILTIN="info"/>
<node CREATED="1674350951914" ID="ID_106173502" MODIFIED="1674350955686" TEXT="content = 42"/>
<node CREATED="1674350959876" ID="ID_1487607693" MODIFIED="1674350963292" TEXT="ruler = 28"/>
<node CREATED="1674350967152" ID="ID_354285269" MODIFIED="1674351114799" TEXT="topMar = 11">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_354285269" ENDARROW="Default" ENDINCLINATION="70;0;" ID="Arrow_ID_1818076269" SOURCE="ID_1966298653" STARTARROW="None" STARTINCLINATION="-79;8;"/>
</node>
<node CREATED="1674350972480" ID="ID_1303308489" MODIFIED="1674350984992" TEXT="botMar = 11"/>
<node CREATED="1674350985965" ID="ID_13244002" MODIFIED="1674351218230" TEXT="trackPad = 21">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_13244002" ENDARROW="Default" ENDINCLINATION="66;0;" ID="Arrow_ID_90576593" SOURCE="ID_1917807649" STARTARROW="None" STARTINCLINATION="66;0;"/>
</node>
<node CREATED="1674351003803" ID="ID_291429640" MODIFIED="1674351018789" TEXT="borders = [5,5,10,14,17,20]"/>
</node>
<node CREATED="1674351179091" ID="ID_1301058819" MODIFIED="1674351189821" TEXT="root-track">
<node CREATED="1674351117941" ID="ID_546308961" MODIFIED="1674351196739" TEXT="Track content-height: contentHeight + decoration.content = 40+42 = 82"/>
<node CREATED="1674351205888" ID="ID_1917807649" MODIFIED="1674351218230" TEXT="contentOffset = 21">
<arrowlink DESTINATION="ID_13244002" ENDARROW="Default" ENDINCLINATION="66;0;" ID="Arrow_ID_90576593" STARTARROW="None" STARTINCLINATION="66;0;"/>
</node>
<node CREATED="1674352921149" ID="ID_1580223577" MODIFIED="1674352942925" TEXT="danach: line =169">
<linktarget COLOR="#30a7c5" DESTINATION="ID_1580223577" ENDARROW="Default" ENDINCLINATION="138;4;" ID="Arrow_ID_352754066" SOURCE="ID_1287712179" STARTARROW="None" STARTINCLINATION="138;4;"/>
</node>
<node CREATED="1674353017672" ID="ID_1991251821" MODIFIED="1674353037386" TEXT="+slopeup &#x27fc; 174"/>
<node CREATED="1674353017672" ID="ID_1761513033" MODIFIED="1674353075157" TEXT="+coda &#x27fc; 190"/>
</node>
<node CREATED="1674352771789" ID="ID_1103517565" MODIFIED="1674352775750" TEXT="sub-track">
<node CREATED="1674352788969" ID="ID_961058180" MODIFIED="1674352794647" TEXT="startLine_ = 87"/>
<node CREATED="1674352777377" ID="ID_1184947760" MODIFIED="1674352781866" TEXT="contentOffset = 21"/>
<node CREATED="1674352814630" ID="ID_59687" MODIFIED="1674352825233" TEXT="content-heigt: ebenfalls 82"/>
<node CREATED="1674352856355" ID="ID_1287712179" MODIFIED="1674352947649" TEXT="line (=res) : 82">
<arrowlink COLOR="#30a7c5" DESTINATION="ID_1580223577" ENDARROW="Default" ENDINCLINATION="138;4;" ID="Arrow_ID_352754066" STARTARROW="None" STARTINCLINATION="138;4;"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1674348025640" ID="ID_565643095" MODIFIED="1674513234467" TEXT="Komplikationen">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1674348030567" ID="ID_493716565" MODIFIED="1674348045940" TEXT="Prelude / Postlude und Ruler-Canvas treten nur beim Root-Track auf">
<node CREATED="1674348203360" ID="ID_1395576616" MODIFIED="1674348210235" TEXT="aber ein Track wei&#xdf; nicht, da&#xdf; er Root ist"/>
</node>
<node CREATED="1674348164550" ID="ID_1253760936" MODIFIED="1674348183015" TEXT="Slope-down/up wird im Parent-Track gesteuert">
<node CREATED="1674348231749" ID="ID_1598827658" MODIFIED="1674348251134" TEXT="dieser Offset kann daher nicht in der H&#xf6;he der Kind-Track(s) eingerechnet werden"/>
<node CREATED="1674348290385" ID="ID_676814617" MODIFIED="1674348324132" TEXT="d.h. bei mehreren Sub-Tracks rutschen wir genau um diesen Betrag nach oben"/>
<node CREATED="1674353927071" ID="ID_1407468447" MODIFIED="1674353940500" TEXT="und zwar einmal pro rekursiv verschachtelte Ebene">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1674354159742" ID="ID_1940678452" MODIFIED="1674513239606" TEXT="Korrekturen bewerkstelligen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1674354169058" ID="ID_533240449" MODIFIED="1674513380571" TEXT="brauche Spezialbehandlung f&#xfc;r den Root-Track">
<icon BUILTIN="button_ok"/>
<node CREATED="1674354205168" ID="ID_85048363" MODIFIED="1674354255720" TEXT="Gesamtgr&#xf6;&#xdf;e mu&#xdf; Ruler + prelude ber&#xfc;cksichtigen"/>
<node CREATED="1674354306149" ID="ID_633496997" MODIFIED="1674354320837" TEXT="sub-track-offset mu&#xdf; Ruler + prelude ber&#xfc;cksichtigen"/>
<node COLOR="#435e98" CREATED="1674402568327" ID="ID_219579639" MODIFIED="1674510175705" TEXT="wo ist diese Korrektur logisch sinnvoll angesiedelt?">
<icon BUILTIN="help"/>
<node CREATED="1674402620527" ID="ID_1633544285" MODIFIED="1674402871728" TEXT="sie bricht den strikten Bezug auf Canvas-Koordinaten und jeweils einen Track">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      das Pr&#228;ludium geh&#246;rt nicht zum Track, und f&#252;r alle sonstigen Gr&#246;&#223;enangaben gilt ein unmittelbarer Bezug auf die Canvas-Koordinaten; diese gelten <i>lokal f&#252;r den Canvas</i>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1674402875129" ID="ID_1857367288" MODIFIED="1674402942310" TEXT="allerdings: der einzelne Track sollte seine Position im Gesamtgef&#xfc;ge nicht kennen">
<icon BUILTIN="stop-sign"/>
</node>
<node COLOR="#435e98" CREATED="1674403069412" ID="ID_1314616447" MODIFIED="1674510152085" TEXT="was mu&#xdf; den genau korrigiert werden?">
<icon BUILTIN="help"/>
<node CREATED="1674403082049" ID="ID_1078734632" MODIFIED="1674403088307" TEXT="es ist mehrerlei...">
<node CREATED="1674403090200" ID="ID_615803349" MODIFIED="1674403095202" TEXT="Prelude"/>
<node CREATED="1674403096199" ID="ID_1911972979" MODIFIED="1674403209258" TEXT="Ruler">
<arrowlink COLOR="#eb4c4e" DESTINATION="ID_515096270" ENDARROW="Default" ENDINCLINATION="-4;-9;" ID="Arrow_ID_1857436745" STARTARROW="None" STARTINCLINATION="9;-2;"/>
</node>
</node>
<node CREATED="1674403142108" ID="ID_515096270" MODIFIED="1674403209258" TEXT="das Auslassen der Ruler stellt einen Bruch des Contract dar">
<linktarget COLOR="#eb4c4e" DESTINATION="ID_515096270" ENDARROW="Default" ENDINCLINATION="-4;-9;" ID="Arrow_ID_1857436745" SOURCE="ID_1911972979" STARTARROW="None" STARTINCLINATION="9;-2;"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1674506708137" ID="ID_896668999" MODIFIED="1674510172983" TEXT="das ist ein Dilemma &#x2014; dann lieber noch direkt im TrackBody">
<icon BUILTIN="idea"/>
<node CREATED="1674506772895" ID="ID_1636893876" MODIFIED="1674506790641" TEXT="da sind wir noch am N&#xe4;chsten an den Layout-Berechnungen dran..."/>
<node CREATED="1674506791397" ID="ID_1813341539" MODIFIED="1674506879645" TEXT="und TrackBody kann durch einen Kniff &#x201e;erraten&#x201c; ob er Root-Track ist">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      dann ist n&#228;mlich die startLine = 0;
    </p>
    <p>
      <i>...ja das ist Insider-Wissen, und dann lieber alles da machen, wo die ganzen technischen Details ohnehin stecken...</i>
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#435e98" CREATED="1674506884449" ID="ID_651254620" MODIFIED="1674510162022">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      demnach <b>&#228;ndern</b>&#160;wir jetzt den Contrakt
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
<node CREATED="1674506904090" ID="ID_1092162889" MODIFIED="1674506915040" TEXT="die Funktionen hei&#xdf;en jetzt calc*()"/>
<node CREATED="1674506915836" ID="ID_298260299" MODIFIED="1674506934134" TEXT="und berechnen die Gesamth&#xf6;he"/>
<node CREATED="1674506935082" ID="ID_610623400" MODIFIED="1674506943804" TEXT="einschlie&#xdf;lich angrenzender Dekoration"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1674354327207" ID="ID_1319790306" MODIFIED="1674513381995" TEXT="sub-track-offset mu&#xdf; slope-down mit einschlie&#xdf;en">
<icon BUILTIN="button_ok"/>
<node CREATED="1674354364930" ID="ID_697232508" MODIFIED="1674354376797" TEXT="und zwar genau einmal, und nur wenn es nested Tracks gibt"/>
<node CREATED="1674354383601" ID="ID_345455776" MODIFIED="1674354396562" TEXT="slope-up kann uns egal sein (ist in der Gesamtgr&#xf6;&#xdf;e mit dabei)"/>
</node>
<node COLOR="#435e98" CREATED="1674510180255" ID="ID_226214424" MODIFIED="1674510295170" TEXT="&#x27f9; neuer Satz zusammenwirkender Funktionen">
<icon BUILTIN="idea"/>
<node CREATED="1674510205556" ID="ID_1519623575" MODIFIED="1674510215393" TEXT="nicht mehr auf den contentOffset aufbauen">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1674510304079" ID="ID_1164198433" MODIFIED="1674510316521" TEXT="Gesamt-H&#xf6;he aus Content + Nested aufbauen"/>
<node CREATED="1674510319197" ID="ID_1163280327" MODIFIED="1674510344631" TEXT="Content schlie&#xdf;t Ruler und slope-down mit ein"/>
<node CREATED="1674510325404" ID="ID_1324802717" MODIFIED="1674513323111" TEXT="Ruler schlie&#xdf;en automatisch das Root-Prelude ein"/>
<node CREATED="1674510350137" ID="ID_269721067" MODIFIED="1674510480677">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      nested enth&#228;lt <i>N&#228;herung</i>&#160;f&#252;r slope-up
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      hier k&#246;nnen wir nicht exakt rechnen, weil aufsteigende Slopes kombiniert werden &#8212; und die Info dazu kennen wir nur beim Konstruieren des Profils. Daher &#252;bersch&#228;tzt diese H&#246;henangabe die Track-H&#246;he &#8212; bleibt zu sehen, ob das relevant wird
    </p>
  </body>
</html></richcontent>
<font NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1674510487662" ID="ID_1907635652" MODIFIED="1674513336659" TEXT="Vorsicht: &#xfc;bertreibt!">
<icon BUILTIN="clanbomber"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1674513248834" ID="ID_200252521" MODIFIED="1674513270937" TEXT="jetzt sieht das Resultat auf &#xb1;1px exakt aus">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1674158539561" ID="ID_1440303749" MODIFIED="1674160219745" TEXT="#1265 define expanding/collapsing of tracks">
<linktarget COLOR="#c65e7c" DESTINATION="ID_1440303749" ENDARROW="Default" ENDINCLINATION="-1806;-99;" ID="Arrow_ID_537995229" SOURCE="ID_852402445" STARTARROW="None" STARTINCLINATION="-421;38;"/>
<linktarget COLOR="#926b99" DESTINATION="ID_1440303749" ENDARROW="Default" ENDINCLINATION="-978;62;" ID="Arrow_ID_1979782904" SOURCE="ID_1119649795" STARTARROW="None" STARTINCLINATION="-281;21;"/>
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1674160660563" ID="ID_1828648487" MODIFIED="1674161293621" TEXT="#1266 implement scope rulers and group tracks">
<linktarget COLOR="#8a4d65" DESTINATION="ID_1828648487" ENDARROW="Default" ENDINCLINATION="-2734;159;" ID="Arrow_ID_502951484" SOURCE="ID_1409730860" STARTARROW="None" STARTINCLINATION="-1113;-73;"/>
<icon BUILTIN="hourglass"/>
<node CREATED="1674160771852" ID="ID_459820507" MODIFIED="1674161151512" TEXT="Def &#xbb;scope ruler&#xab;">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Jeder Track kann 0...N Ruler haben (Ruler = horizontale Scala);
    </p>
    <ul>
      <li>
        einer von diesen ist der &#187;scope ruler&#171;
      </li>
      <li>
        er ersetzt den Track und den gesamten Scope der sub-Tracks in der Pr&#228;sentation
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1674161152794" ID="ID_1182180069" MODIFIED="1674161238640" TEXT="&#xd83e;&#xdc32; unklar: Model-Repr&#xe4;sentation der Ruler">
<arrowlink COLOR="#af637b" DESTINATION="ID_1945074845" ENDARROW="Default" ENDINCLINATION="-348;-196;" ID="Arrow_ID_1261991748" STARTARROW="None" STARTINCLINATION="-383;24;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1555084648375" ID="ID_483631091" MODIFIED="1565283046031" TEXT="Thema: Struktur-Profil">
<arrowlink COLOR="#2e66db" DESTINATION="ID_1659558780" ENDARROW="Default" ENDINCLINATION="-889;0;" ID="Arrow_ID_1691760775" STARTARROW="None" STARTINCLINATION="828;0;"/>
<linktarget COLOR="#1b36ab" DESTINATION="ID_483631091" ENDARROW="Default" ENDINCLINATION="-88;6;" ID="Arrow_ID_1079857163" SOURCE="ID_19246515" STARTARROW="None" STARTINCLINATION="-26;-28;"/>
<icon BUILTIN="forward"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1566406980688" FOLDED="true" ID="ID_196847136" MODIFIED="1566406988165" TEXT="Layout-Anpsassungen">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1566407065037" ID="ID_548414744" MODIFIED="1672842637926" TEXT="Scrollbar anpassen nach Gr&#xf6;&#xdf;en&#xe4;nderung">
<linktarget COLOR="#795b80" DESTINATION="ID_548414744" ENDARROW="Default" ENDINCLINATION="-897;636;" ID="Arrow_ID_1661740759" SOURCE="ID_679418178" STARTARROW="Default" STARTINCLINATION="-286;-17;"/>
<icon BUILTIN="pencil"/>
<node COLOR="#435e98" CREATED="1566407096905" ID="ID_1463503563" MODIFIED="1566487536944" TEXT="reagiert noch nicht...">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1566407104280" ID="ID_1989341591" MODIFIED="1566421808796" TEXT="was hab ich seinerzeit beim Gtk-Canvas-Experiment gemacht?">
<icon BUILTIN="help"/>
<node CREATED="1566421664831" ID="ID_1051378925" MODIFIED="1566421671379" TEXT="exakt das Gleiche"/>
<node CREATED="1566421672116" ID="ID_343684790" MODIFIED="1576282358057" TEXT="nur noch zus&#xe4;tzlich ein Window-&gt;win-&gt;invalidate_rect">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      alledings nur, nachdem man das drawing ein/ausgeschaltet hat....
    </p>
    <p>
      
    </p>
    <p>
      &#160;&#160;void
    </p>
    <p>
      &#160;&#160;Canvas::enableDraw (bool yes)
    </p>
    <p>
      &#160;&#160;{
    </p>
    <p>
      &#160;&#160;&#160;&#160;shallDraw_ = yes;
    </p>
    <p>
      &#160;&#160;&#160;
    </p>
    <p>
      &#160;&#160;&#160;&#160;// force redrawing of the visible area...
    </p>
    <p>
      &#160;&#160;&#160;&#160;auto win = get_window();
    </p>
    <p>
      &#160;&#160;&#160;&#160;if (win)
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;{
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;int w = get_allocation().get_width();
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;int h = get_allocation().get_height();
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Gdk::Rectangle rect{0, 0, w, h};
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;win-&gt;invalidate_rect(rect, false);
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;}
    </p>
    <p>
      &#160;&#160;}
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#435e98" CREATED="1566421823243" ID="ID_351645581" MODIFIED="1576282358056" TEXT="doch es funktioniert!">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...nur stimmen die Zahlenwerte im Moment nicht;
    </p>
    <p>
      wir malen viel mehr auf den Canvas, als seine Gr&#246;&#223;e erlauben w&#252;rde.
    </p>
    <p>
      Macht trotzdem nix
    </p>
  </body>
</html></richcontent>
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1566421888123" ID="ID_1319951362" MODIFIED="1566421905961" TEXT="sogar die Header-Pane scrollt mit">
<icon BUILTIN="smiley-oh"/>
</node>
</node>
<node COLOR="#338800" CREATED="1566407096905" ID="ID_489535600" MODIFIED="1576282358056" TEXT="Problem: rePack- der umschlie&#xdf;enden Box">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      wenn man PACK_SHRINK setzt, dann weist die umschlie&#223;ende Box initial
    </p>
    <p>
      dem Canvas die Gr&#246;&#223;e 0 zu (weil er zu diesem Zeitpunkt noch nicht realisiert ist).
    </p>
    <p>
      Problem ist aber, da&#223; diese Zuweisung sp&#228;ter, nach einem set_size auf dem Canvas nicht revidiert wird.
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#16d17f" DESTINATION="ID_489535600" ENDARROW="Default" ENDINCLINATION="-80;-272;" ID="Arrow_ID_1038229013" SOURCE="ID_832049284" STARTARROW="None" STARTINCLINATION="-102;166;"/>
<font NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1566487213692" ID="ID_617175720" MODIFIED="1672867705882" TEXT="sollte eigentlich automatisch funktionieren">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <ul>
      <li>
        die Funktionen zum expliziten Setzen und re-Sizing sind deprecated.
      </li>
      <li>
        eigentlich sollte die Box automatisch auf Gr&#246;&#223;en&#228;nderungen der Kind-Elemente reagieren gem&#228;&#223; Flow/Fill-Layout
      </li>
      <li>
        f&#252;r klassische Widgets wie z.B. Button funktioniert das auch
      </li>
      <li>
        aber auf ein set_size() auf dem Canvas reagiert das Layout anscheinend nicht
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node COLOR="#435e98" CREATED="1566487282848" ID="ID_771271362" MODIFIED="1672875017148" TEXT="Workaround: jeweils explizit set_size_request">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <u>Anmerkung 1/2023</u>: seinerzeit habe ich die Mechanik der Layout-Zuteilung noch nicht wirklich verstanden
    </p>
    <p>
      
    </p>
    <p>
      <font color="#4d2a27" face="Monospaced" size="2">commit fc5eaf857c687d769df22d6f98a25e8e359e7c49 </font>
    </p>
    <p>
      <font color="#4d2a27" face="Monospaced" size="2">Author: Ichthyostega &lt;prg@ichthyostega.de&gt; </font>
    </p>
    <p>
      <font color="#4d2a27" face="Monospaced" size="2">Date:&#160;&#160;&#160;Thu Aug 22 17:34:32 2019 +0200 </font>
    </p>
    <p>
      
    </p>
    <p>
      <font color="#4d2a27" face="Monospaced" size="2">&#160;&#160;&#160;&#160;Timeline: find a workaround to cause the Box to reflow the rulerCanvas </font>
    </p>
    <p>
      <font color="#4d2a27" face="Monospaced" size="2">&#160;&#160;&#160; </font>
    </p>
    <p>
      <font color="#4d2a27" face="Monospaced" size="2">&#160;&#160;&#160;&#160;seemingly, the Box with PACK_SHRINK allocates a zero height to the rulerCanvas initally, </font>
    </p>
    <p>
      <font color="#4d2a27" face="Monospaced" size="2">&#160;&#160;&#160;&#160;which is correct at that point, since the widgets are not yet realised. </font>
    </p>
    <p>
      <font color="#4d2a27" face="Monospaced" size="2">&#160;&#160;&#160;&#160;However, when we later set_size() on the rulerCanvas, the enclosing Box should reflow. </font>
    </p>
    <p>
      <font color="#4d2a27" face="Monospaced" size="2">&#160;&#160;&#160;&#160;It does indeed if the child widget is a button or something similar, however, </font>
    </p>
    <p>
      <font color="#4d2a27" face="Monospaced" size="2">&#160;&#160;&#160;&#160;somehow this reflowing does not work when we set_size on the canvas. </font>
    </p>
    <p>
      <font color="#4d2a27" face="Monospaced" size="2">&#160;&#160;&#160; </font>
    </p>
    <p>
      <font color="#4d2a27" face="Monospaced" size="2">&#160;&#160;&#160;&#160;A workaround is to place a new set_size_request(). </font>
    </p>
    <p>
      <font color="#4d2a27" face="Monospaced" size="2">&#160;&#160;&#160; </font>
    </p>
    <p>
      <font color="#4d2a27" face="Monospaced" size="2">&#160;&#160;&#160;&#160;TODO: do this more precisely, and only on the rulerCanvas. To the contrary, </font>
    </p>
    <p>
      <font color="#4d2a27" face="Monospaced" size="2">&#160;&#160;&#160;&#160;the mainCanvas is placed into a scolling-pane and thus does not need a size-Request. </font>
    </p>
    <p>
      <font color="#4d2a27" face="Monospaced" size="2">&#160;&#160;&#160;&#160;Moreover, the latter automatically communicates with the hadjustment() / vadjustment() of </font>
    </p>
    <p>
      <font color="#4d2a27" face="Monospaced" size="2">&#160;&#160;&#160;&#160;the enclosing scrollbars. </font>
    </p>
    <p>
      
    </p>
    <p>
      <font color="#4d2a27" face="Monospaced" size="2">commit 2390385dc50a8504336f5e1fa1a5dc35eca58f2f </font>
    </p>
    <p>
      <font color="#4d2a27" face="Monospaced" size="2">Author: Ichthyostega &lt;prg@ichthyostega.de&gt; </font>
    </p>
    <p>
      <font color="#4d2a27" face="Monospaced" size="2">Date:&#160;&#160;&#160;Wed Aug 21 19:13:55 2019 +0200 </font>
    </p>
    <p>
      
    </p>
    <p>
      <font color="#4d2a27" face="Monospaced" size="2">&#160;&#160;&#160;&#160;Timeline: implement function to set the drawing canvas size </font>
    </p>
    <p>
      <font color="#4d2a27" face="Monospaced" size="2">&#160;&#160;&#160; </font>
    </p>
    <p>
      <font color="#4d2a27" face="Monospaced" size="2">&#160;&#160;&#160;&#160;as can be verified with the debugger, it sets the correct sizes now. </font>
    </p>
    <p>
      <font color="#4d2a27" face="Monospaced" size="2">&#160;&#160;&#160;&#160;And it is called only once (unless the content size actually changes). </font>
    </p>
    <p>
      <font color="#4d2a27" face="Monospaced" size="2">&#160;&#160;&#160; </font>
    </p>
    <p>
      <font color="#4d2a27" face="Monospaced" size="2">&#160;&#160;&#160;&#160;TODO: however, the visible display of the GTK widgets is not adjusted </font>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1566487379550" ID="ID_272047983" MODIFIED="1672875229852" TEXT="aber horizontal nur eine Minimal-Weite (100px)">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Eigentlich ben&#246;tigt wird das &#187;Aufspreizen&#171; nur in der vertikalen Dimension, damit sich die umschlie&#223;ende Box sinngem&#228;&#223; anpa&#223;t; im Grunde w&#252;rde es sogar gen&#252;gen, nur das obere (Ruler)-ScrolledWindow zu dimensionieren, aber ich halte es f&#252;r sicherer, vom eigentlichen innen liegenden Canvas aus aufzuspreizen, schon wegen der ggfs. dynamischen Dekoration f&#252;r die Scrollbar. Als Kompromi&#223; setze ich jetzt horizontal eine Mindest-Ausdehnung von 100px (das erscheint ohnehin sinnvoll f&#252;r eine Timeline), aber in vertikaler Richtung setze ich einen size-Request auf die berechnete Canvas-H&#246;he
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1672798667029" FOLDED="true" ID="ID_1699842831" MODIFIED="1674603499873" TEXT="Integration ZoomWindow: funktioniert nicht (mehr)">
<linktarget COLOR="#503fac" DESTINATION="ID_1699842831" ENDARROW="Default" ENDINCLINATION="-1384;79;" ID="Arrow_ID_927325344" SOURCE="ID_133007183" STARTARROW="None" STARTINCLINATION="-1848;-74;"/>
<icon BUILTIN="broken-line"/>
<node CREATED="1672798696337" ID="ID_1553490887" MODIFIED="1672798742711" TEXT="greife jetzt ScrolledWindow::get_allocated_width() ab">
<node CREATED="1672845045702" ID="ID_400583877" MODIFIED="1672845097544" TEXT="das w&#xe4;re grunds&#xe4;tzlich korrekt">
<arrowlink DESTINATION="ID_1978068021" ENDARROW="Default" ENDINCLINATION="323;11;" ID="Arrow_ID_920771700" STARTARROW="None" STARTINCLINATION="462;0;"/>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1672845054021" ID="ID_1400277326" MODIFIED="1672845155612" TEXT="und ist auch konsistent mit dem &#xbb;horizontal adjustment&#xab; des ScrolledWindow">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      per DUMP-Print verifiziert: Maximalwert der Scrollbar (=hadj) ist identisch mit get_allocated_width
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1672798745175" ID="ID_399045239" MODIFIED="1672798762372" TEXT="kalibriere damit das ZoomWindow, und beziehe davon dann die Canvas-Gr&#xf6;&#xdf;e"/>
<node CREATED="1672798763432" ID="ID_485578749" MODIFIED="1672798787610" TEXT="horizontale Scrollbar blockt und wird nach rechts beschnitten">
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#435e98" CREATED="1672845159233" ID="ID_914079601" MODIFIED="1674597085411" TEXT="(1) Problem ist: keine Invalidierung &#x27f9; keine Display-Evaluation &#x27f9; Wert nicht abgerufen">
<icon BUILTIN="idea"/>
<node CREATED="1672847404194" ID="ID_1941365833" MODIFIED="1672847417490" TEXT="unser Layout-Code merkt daher gar nicht, wenn sich etwas &#xe4;ndert"/>
<node CREATED="1672847418472" ID="ID_411937904" MODIFIED="1672867873212" TEXT="Beobachtung m&#xf6;gliche Aktivierungen">
<icon BUILTIN="list"/>
<node CREATED="1672847435934" ID="ID_204065179" MODIFIED="1672847440225" TEXT="on_draw()">
<node CREATED="1672847448238" ID="ID_1819538437" MODIFIED="1672847457023" TEXT="wird wohl permanent aufgerufen"/>
<node CREATED="1672847458467" ID="ID_1233413965" MODIFIED="1672847471149" TEXT="sehe jede &#xc4;nderung des Layout sofort"/>
</node>
<node CREATED="1672847440981" ID="ID_828221766" MODIFIED="1672847446416" TEXT="on_size_allocate()">
<node CREATED="1672847675830" ID="ID_1048944592" MODIFIED="1672847684009" TEXT="nur bei Geometrie-&#xc4;nderungen"/>
<node CREATED="1672847684840" ID="ID_272958565" MODIFIED="1672847693224" TEXT="und bei Focus gain/loss"/>
</node>
<node CREATED="1672847699754" ID="ID_921332802" MODIFIED="1672867412724" TEXT="Feststellung: Gr&#xf6;&#xdf;e &quot;st&#xf6;&#xdf;t an&quot; an gesetzter Canvas-Gr&#xf6;&#xdf;e">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Beispiel:
    </p>
    <ul>
      <li>
        initial wurde Canvas-Gr&#246;&#223;e auf 852px gesetzt (Debugging Code zieht 100px ab)
      </li>
      <li>
        die Allocation f&#252;r das BodyCanvasWidget wird minimal 852
      </li>
      <li>
        wenn man das Fenster (oder den Teiler der Pane) weiter verkleinert, wird trotzdem 852 geliefert &#10233; nach rechts beschnitten
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1672867905486" ID="ID_74954726" MODIFIED="1674597085411" TEXT="(2) Problem ist: Mindestgr&#xf6;&#xdf;e des Ruler-Canvas">
<icon BUILTIN="idea"/>
<node CREATED="1672867946048" ID="ID_303294117" MODIFIED="1672867967257" TEXT="das kommt von dem Workaround wegen Box-re-Pack"/>
<node CREATED="1672867974932" ID="ID_1158620825" MODIFIED="1672868021465" TEXT="der Ruler-Canvas liegt nicht in einer scrolled pane und &#x201e;spreizt&#x201c; deshalb">
<node CREATED="1672869698743" ID="ID_283208573" MODIFIED="1672869708010" TEXT="in vertikaler Richtung ist das ja auch korrekt"/>
<node CREATED="1672869723476" ID="ID_401276544" MODIFIED="1672869749468" TEXT="Gtk::Layout hat selber  V/H-Adjustments und br&#xe4;uchte theoretisch kein Scrolled Window"/>
<node CREATED="1672869752647" ID="ID_1600272917" MODIFIED="1672869783428" TEXT="aber in horizontaler Richtung wollen wir ein kleineres Minimum">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1672871169883" ID="ID_923032562" MODIFIED="1672871357241" TEXT="mit dieser Korrektur funktioniert die horizontale Scrollbar (halbwegs) wie erwartet">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <ul>
      <li>
        zumindest kann man nun das Fenster tats&#228;chlich verkleinern, und dann mit der Scrollbar horizontal den Haupt-Canvas bewegen.
      </li>
      <li>
        aber der Ruler-Canvas scrollt nicht mit
      </li>
      <li>
        und der Anzeige-Zustand der Scrollbar ist bei mouse-over(Scrollbar) nicht richtig synchronisiert; das wird erst korrekt nach einem Focus-loss/gain
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#338800" CREATED="1672875251348" ID="ID_850567919" MODIFIED="1672875337286" TEXT="Umbau: auch Ruler-Canvas in ein ScrolledWindow legen; dieses arbeitet als &#xbb;Slave&#xab;">
<arrowlink COLOR="#6bbdbc" DESTINATION="ID_1904830870" ENDARROW="Default" ENDINCLINATION="693;23;" ID="Arrow_ID_1587189163" STARTARROW="None" STARTINCLINATION="39;-248;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1674603423931" ID="ID_623632021" LINK="#ID_22375243" MODIFIED="1674603474685" TEXT="Clip-Drag aktualisiert manchmal die Position nicht">
<icon BUILTIN="broken-line"/>
</node>
</node>
<node CREATED="1672872402655" ID="ID_57784666" MODIFIED="1672872407100" TEXT="dynamische Anzeige">
<node CREATED="1672872408415" ID="ID_1423497948" MODIFIED="1672872423235" TEXT="Zoom koordinieren"/>
<node CREATED="1672872424309" ID="ID_1732041124" MODIFIED="1672872432016" TEXT="Scrolling koordinieren">
<node COLOR="#338800" CREATED="1672872433811" ID="ID_814093517" MODIFIED="1672874787868" TEXT="Header / Patchbay ist an VAdjustment vom Body angekoppelt">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1672874789195" ID="ID_1285847360" MODIFIED="1672874812664" TEXT="Ruler-Canvas ist an HAdjustment vom Content-Canvas angekoppelt">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node CREATED="1560618609627" ID="ID_506564995" MODIFIED="1560618618079" TEXT="ben&#xf6;tigt ein Struktur-Profil der Spuren">
<node CREATED="1565282840443" ID="ID_19246515" MODIFIED="1565283046031" TEXT="was ist dieses Struktur-Profil?">
<arrowlink COLOR="#1b36ab" DESTINATION="ID_483631091" ENDARROW="Default" ENDINCLINATION="-88;6;" ID="Arrow_ID_1079857163" STARTARROW="None" STARTINCLINATION="-26;-28;"/>
<node CREATED="1565282951687" ID="ID_870458664" MODIFIED="1565282960279" TEXT="ein System verschachtelter Scopes"/>
<node CREATED="1565282962041" ID="ID_535449128" MODIFIED="1565283000876" TEXT="eine virtuelle Oberfl&#xe4;che zu zeichnen"/>
<node CREATED="1565283006575" ID="ID_1005063465" MODIFIED="1565283018123" TEXT="Schachtellung durch Vertiefung dargestellt"/>
<node CREATED="1565283025965" ID="ID_1189129689" MODIFIED="1565283032432" TEXT="eine Folge von Layout-Anweisungen"/>
</node>
<node CREATED="1560618654038" ID="ID_1561447255" MODIFIED="1560618660841" TEXT="wie wird es aufgebaut?">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1560618662829" ID="ID_799744277" MODIFIED="1560618668613" TEXT="Rahmen">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1560619599886" ID="ID_1652576901" MODIFIED="1560619609798" TEXT="Problem: Fixierte Overview-Ruler">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1560619612613" ID="ID_1255750107" MODIFIED="1560619622751" TEXT="die sind etwas Globales"/>
<node CREATED="1560619623251" ID="ID_1890187732" MODIFIED="1560619628318" TEXT="aber die Info liegt nur indirekt vor">
<node CREATED="1560619663110" ID="ID_994568218" MODIFIED="1560619675632" TEXT="die Ruler des top-level-TrackBody"/>
<node CREATED="1560619676228" ID="ID_1236432450" MODIFIED="1560686343370" TEXT="genauer: die Anzahl dieser Ruler">
<arrowlink COLOR="#486ebf" DESTINATION="ID_1520503504" ENDARROW="Default" ENDINCLINATION="-1384;0;" ID="Arrow_ID_312917871" STARTARROW="None" STARTINCLINATION="689;0;"/>
</node>
<node CREATED="1560685923962" ID="ID_1098705000" MODIFIED="1576282358054" TEXT="Alternativ k&#xf6;nnte es...">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...im Session-Modell f&#252;r eine Timeline jeweils ein Property hierf&#252;r geben...
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
<node CREATED="1560618669419" ID="ID_930843555" MODIFIED="1560618693061" TEXT="Inhalt: durch Traversieren...">
<node CREATED="1560618694269" ID="ID_1133842596" MODIFIED="1560618694932" TEXT="der TrackBody-Struktur"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1560687839463" ID="ID_1827462767" MODIFIED="1561140522795" TEXT="wer bewirkt diesen Aufbau?">
<arrowlink COLOR="#a394b6" DESTINATION="ID_1098160043" ENDARROW="Default" ENDINCLINATION="-688;15;" ID="Arrow_ID_1886446261" STARTARROW="None" STARTINCLINATION="442;0;"/>
<arrowlink COLOR="#9a6ea1" DESTINATION="ID_453891028" ENDARROW="Default" ENDINCLINATION="227;0;" ID="Arrow_ID_1574621169" STARTARROW="None" STARTINCLINATION="227;0;"/>
<icon BUILTIN="help"/>
<node COLOR="#435e98" CREATED="1560687908668" FOLDED="true" ID="ID_1449365398" MODIFIED="1561140382981" TEXT="sp&#xe4;testens onDraw() mu&#xdf; es da sein...">
<icon BUILTIN="idea"/>
<node CREATED="1560688238047" ID="ID_228690289" MODIFIED="1560698414957" TEXT="L&#xf6;sung-1 : refresh/rebuild im Aufruf">
<icon BUILTIN="button_cancel"/>
<node CREATED="1560698339423" ID="ID_920481708" MODIFIED="1560698348162" TEXT="bequemere L&#xf6;sung"/>
<node CREATED="1560698348724" ID="ID_867312220" MODIFIED="1576282358054" TEXT="aber l&#xf6;st das Problem &#xfc;berhaupt nicht">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      weil dann n&#228;mlich someone(TM)
    </p>
    <p>
      be Struktur-&#196;nderungen von Au&#223;en her &quot;aktiv werden&quot; mu&#223;.
    </p>
    <p>
      
    </p>
    <p>
      Irgendjemand mu&#223; mal den M&#252;ll runtertragen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node CREATED="1560618895535" ID="ID_1961154233" MODIFIED="1561140376217" TEXT="L&#xf6;sung-2 : rebuild bei Struktur&#xe4;nderung">
<linktarget COLOR="#795ea0" DESTINATION="ID_1961154233" ENDARROW="Default" ENDINCLINATION="-24;56;" ID="Arrow_ID_1097113138" SOURCE="ID_1716935157" STARTARROW="None" STARTINCLINATION="150;0;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1560698425620" ID="ID_620629162" MODIFIED="1560698443221" TEXT="hierf&#xfc;r fehlt noch komplett die Infrastuktur"/>
<node CREATED="1560698444169" ID="ID_1929184570" MODIFIED="1560698455499" TEXT="wir bauen bisher nur Sub-Widgets auf"/>
<node COLOR="#338800" CREATED="1561049066764" ID="ID_1132615828" MODIFIED="1561140354363" TEXT="Aufbau on-demand">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1561049080043" ID="ID_1865072728" MODIFIED="1561049150441" TEXT="signalStructureChange leert das Profil">
<arrowlink COLOR="#89adc8" DESTINATION="ID_1799554074" ENDARROW="Default" ENDINCLINATION="340;0;" ID="Arrow_ID_19787354" STARTARROW="None" STARTINCLINATION="1589;0;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1561049195744" ID="ID_795602177" MODIFIED="1561140362229" TEXT="Zugriff der Renderer auf das Profil">
<icon BUILTIN="button_ok"/>
<node CREATED="1561049205709" ID="ID_87098848" MODIFIED="1561049213673" TEXT="bisher direkte Referenz">
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#338800" CREATED="1561049214764" ID="ID_1962267741" MODIFIED="1561139793452" TEXT="neue L&#xf6;sung: getter-Funktion">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1561139816451" FOLDED="true" ID="ID_1820580687" MODIFIED="1561827483834" TEXT="gef&#xe4;llt mir aber noch nicht">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1561139829332" ID="ID_730637336" MODIFIED="1561139839310" TEXT="rein logisch geh&#xf6;rt das Profil ja schon hier her"/>
<node CREATED="1561139846988" ID="ID_565918975" MODIFIED="1561139974752" TEXT="aber der ganze Update-Mechanismus ist ein in sich abgekapselter Belang">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      und macht sich aber hier im Quellcode &#252;ber mehrere Funktionen verteilt breit,
    </p>
    <p>
      ohne da&#223; man ihn hier komplett &#252;berblicken kann. Dazu kommt, da&#223; die ganze Verdrahterei
    </p>
    <p>
      &#252;ber zwei Lambdas hinweg auch nicht besonders <i>geradlinig</i>&#160;und verst&#228;ndlich ist
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1561139978982" FOLDED="true" ID="ID_1098160043" MODIFIED="1678407265595" TEXT="doch in den Layout-Manager verschieben?">
<linktarget COLOR="#a394b6" DESTINATION="ID_1098160043" ENDARROW="Default" ENDINCLINATION="-688;15;" ID="Arrow_ID_1886446261" SOURCE="ID_1827462767" STARTARROW="None" STARTINCLINATION="442;0;"/>
<icon BUILTIN="bell"/>
<icon BUILTIN="help"/>
<node CREATED="1561140197469" ID="ID_198072463" MODIFIED="1561140213679" TEXT="Nachteil: der mu&#xdf; dann von der TrackBody-Struktur wissen"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1561140221999" FOLDED="true" ID="ID_1143074852" MODIFIED="1561827482930" TEXT="es sei denn...">
<arrowlink COLOR="#b13064" DESTINATION="ID_1401239177" ENDARROW="Default" ENDINCLINATION="363;61;" ID="Arrow_ID_807164253" STARTARROW="None" STARTINCLINATION="1263;0;"/>
<icon BUILTIN="hourglass"/>
<node CREATED="1561140235537" ID="ID_633845025" MODIFIED="1561140252066" TEXT="da&#xdf; das gar nicht Aufgabe der TrackBody-Struktur w&#xe4;re,"/>
<node CREATED="1561140254165" ID="ID_1265373483" MODIFIED="1561140267869" TEXT="bzw. dies anders aufgeh&#xe4;ngt und aktualisiert w&#xfc;rde"/>
</node>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1560687932949" ID="ID_386666941" MODIFIED="1560687960297" TEXT="...sofern &#xfc;berhaupt ein TrackBody vorliegt">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1560687986049" ID="ID_1716935157" MODIFIED="1561049018969" TEXT="Struktur-&#xc4;nderungen ber&#xfc;cksichtigen">
<arrowlink COLOR="#8475af" DESTINATION="ID_1309792012" ENDARROW="Default" ENDINCLINATION="-81;-4;" ID="Arrow_ID_3475019" STARTARROW="None" STARTINCLINATION="42;0;"/>
<arrowlink COLOR="#795ea0" DESTINATION="ID_1961154233" ENDARROW="Default" ENDINCLINATION="-24;56;" ID="Arrow_ID_1097113138" STARTARROW="None" STARTINCLINATION="150;0;"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1560618715494" ID="ID_453891028" MODIFIED="1561140513713" TEXT="wer verwaltet das TrackProfil?">
<linktarget COLOR="#9a6ea1" DESTINATION="ID_453891028" ENDARROW="Default" ENDINCLINATION="227;0;" ID="Arrow_ID_1574621169" SOURCE="ID_1827462767" STARTARROW="None" STARTINCLINATION="227;0;"/>
<icon BUILTIN="help"/>
<node CREATED="1560618780573" ID="ID_1295221704" MODIFIED="1568577629019">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      naheliegend: das <b>BodyCanvasWidget</b>&#160;selber
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="forward"/>
<node CREATED="1560618821911" ID="ID_1127517536" MODIFIED="1560619559162" TEXT="mu&#xdf; aber irgendwie an die TrackBody-Struktur delegiert werden">
<linktarget COLOR="#297bdb" DESTINATION="ID_1127517536" ENDARROW="Default" ENDINCLINATION="118;0;" ID="Arrow_ID_1683662279" SOURCE="ID_2106254" STARTARROW="Default" STARTINCLINATION="118;0;"/>
<icon BUILTIN="forward"/>
</node>
<node CREATED="1560618895535" ID="ID_1309792012" MODIFIED="1560688134101" TEXT="jedes Struktur-Update mu&#xdf; das Profil neu generieren">
<linktarget COLOR="#8475af" DESTINATION="ID_1309792012" ENDARROW="Default" ENDINCLINATION="-81;-4;" ID="Arrow_ID_3475019" SOURCE="ID_1716935157" STARTARROW="None" STARTINCLINATION="42;0;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1560618799458" ID="ID_1264363118" MODIFIED="1560618820650" TEXT="f&#xfc;hrt zu einem Gestr&#xfc;pp der Abh&#xe4;ngigkeiten">
<icon BUILTIN="stop-sign"/>
<node CREATED="1568577642375" ID="ID_1566841384" MODIFIED="1568577650307" TEXT="naja geht doch"/>
</node>
</node>
<node CREATED="1560619493205" ID="ID_630720873" MODIFIED="1560619542216" TEXT="logisch w&#xfc;rde es irgendwie zum Layout passen">
<icon BUILTIN="button_cancel"/>
<node CREATED="1560619504005" ID="ID_342347780" MODIFIED="1560619513182" TEXT="aber das Layout hat nicht die notwendigen Infos"/>
<node CREATED="1560619513934" ID="ID_2106254" MODIFIED="1560619564904" TEXT="praktisch alle Infos sind in der TrackBody-Struktur">
<arrowlink COLOR="#297bdb" DESTINATION="ID_1127517536" ENDARROW="Default" ENDINCLINATION="118;0;" ID="Arrow_ID_1683662279" STARTARROW="Default" STARTINCLINATION="118;0;"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1560627625383" ID="ID_269248332" MODIFIED="1560627650483" TEXT="noch nicht recht gl&#xfc;cklich mit dieser L&#xf6;sung....">
<icon BUILTIN="broken-line"/>
<node CREATED="1560627658092" ID="ID_624999649" MODIFIED="1575131626153" TEXT="wo bleibt der Display Evaluation Pass?">
<arrowlink COLOR="#921d48" DESTINATION="ID_191170582" ENDARROW="Default" ENDINCLINATION="1620;0;" ID="Arrow_ID_982561049" STARTARROW="None" STARTINCLINATION="299;22;"/>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1540641317386" FOLDED="true" ID="ID_151954769" MODIFIED="1679361575919" TEXT="Canvas">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_151954769" ENDARROW="Default" ENDINCLINATION="263;-88;" ID="Arrow_ID_1923805019" SOURCE="ID_18552766" STARTARROW="None" STARTINCLINATION="93;24;"/>
<icon BUILTIN="hourglass"/>
<icon BUILTIN="pencil"/>
<node CREATED="1554480347233" HGAP="-16" ID="ID_1408962662" MODIFIED="1557498707229" VSHIFT="-10">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <u>grunds&#228;tzlich</u>: <i>es zeichnet der Canvas</i>
    </p>
  </body>
</html></richcontent>
<edge COLOR="#a07373" STYLE="linear"/>
<icon BUILTIN="yes"/>
<node CREATED="1555082815168" ID="ID_1445154694" MODIFIED="1557498707229" TEXT="er entscheidet aber nicht &#xfc;ber die Struktur"/>
<node CREATED="1555082847183" ID="ID_822850985" MODIFIED="1557498707229" TEXT="sondern bekommt Struktur-Info hereingereicht"/>
</node>
<node CREATED="1569709553921" ID="ID_578594394" MODIFIED="1569711340989" TEXT="Zugang zum Canvas">
<linktarget COLOR="#2245a8" DESTINATION="ID_578594394" ENDARROW="Default" ENDINCLINATION="-218;1468;" ID="Arrow_ID_1185551045" SOURCE="ID_892450390" STARTARROW="None" STARTINCLINATION="-1702;0;"/>
<node CREATED="1569709570975" ID="ID_743741751" MODIFIED="1569709577189" TEXT="strukturelles Problem">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1569709579218" ID="ID_1213846218" MODIFIED="1569709593626" TEXT="der Canvas ist effektiv global (f&#xfc;r eine Timeline)"/>
<node CREATED="1569709599619" ID="ID_195478308" MODIFIED="1569709628435" TEXT="aber die hierarchisch verschachtelten Komponenten sind auf ihn angewiesen"/>
<node CREATED="1569709651932" ID="ID_1646518205" MODIFIED="1576282358053" TEXT="und es soll nicht...">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <i><font color="#b4288e">everyone and my grandma does it this way... </font></i>
    </p>
    <p>
      Kein Wunder da&#223; die meisten UIs aus Sicht des Programmierers ein Albtraum sind
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
<node CREATED="1569709659444" ID="ID_5126624" MODIFIED="1569709680337" TEXT="eine globale Gott-Klasse die Widgets und Zeichenaktionen zentral fernsteuern"/>
<node CREATED="1569709681558" ID="ID_1351310565" MODIFIED="1569709748956" TEXT="die Einzelkomponente ihre Position in der Struktur kennen, navigieren und manipulieren"/>
<node CREATED="1569709700341" ID="ID_150824940" MODIFIED="1569709726454" TEXT="die Einzelkomponente direkt in den (zentralen/globalen) Canvas reingreifen"/>
</node>
</node>
<node CREATED="1569711798770" ID="ID_1246108677" MODIFIED="1569712021835">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Abstraktion: <b>ViewHook</b>&#160;(-&gt;Canvas)
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#5f74b7" DESTINATION="ID_1964864197" ENDARROW="Default" ENDINCLINATION="-1024;0;" ID="Arrow_ID_756780463" STARTARROW="None" STARTINCLINATION="-717;0;"/>
<node CREATED="1569710397111" ID="ID_1086691958" MODIFIED="1569710431481" TEXT="verk&#xf6;rpert die Beziehung zwischen Timeline-Element und Canvas"/>
<node CREATED="1569710432506" ID="ID_284533518" MODIFIED="1569710437509" TEXT="hat einen Lebenszyklus">
<node CREATED="1569710516577" ID="ID_674995195" MODIFIED="1569710530825" TEXT="wird durch Anbinden des Elements (z.B. Widget) erstellt"/>
<node CREATED="1569710531677" ID="ID_1914994523" MODIFIED="1569710563476" TEXT="l&#xf6;st und entfernt am Ende das Element aus der Anzeige"/>
</node>
<node CREATED="1569710950218" ID="ID_303793411" MODIFIED="1569710958668" TEXT="kann &quot;nach Hause telefonieren&quot;">
<node CREATED="1569710965394" ID="ID_208711007" MODIFIED="1569710983588" TEXT="und abstrahiert damit die direkte Verbindung zum Canvas/DisplayManager weg"/>
<node CREATED="1569710984776" ID="ID_1613132645" MODIFIED="1569711005893" TEXT="kann dadurch weitere Sub-Hooks installieren"/>
</node>
</node>
</node>
<node CREATED="1540951718734" HGAP="69" ID="ID_179159881" MODIFIED="1557498707229" TEXT="TrackBody" VSHIFT="-42">
<node CREATED="1540951732747" ID="ID_879954288" MODIFIED="1557498707229" TEXT="kein Widget, sondern eine Hilfs-Struktur"/>
<node CREATED="1540951833141" ID="ID_387631457" MODIFIED="1563143876501" TEXT="steuert f&#xfc;r den Canvas das Zeichnen f&#xfc;r einen Track"/>
<node CREATED="1540951862399" ID="ID_708158546" MODIFIED="1557498707229" TEXT="relative Koordinaten (und sowiso nur vertikal)"/>
<node CREATED="1540951873159" ID="ID_1843757439" MODIFIED="1557498707229" TEXT="kennt aber seine eigene H&#xf6;he"/>
<node CREATED="1540951934151" ID="ID_1702719060" MODIFIED="1557498707229" TEXT="Bestandteile">
<node CREATED="1540951946493" ID="ID_803471574" MODIFIED="1557498707229" TEXT="overview ruler"/>
<node CREATED="1540951953036" ID="ID_1163326543" MODIFIED="1557498707229" TEXT="content area"/>
<node CREATED="1540951987535" ID="ID_1044870207" MODIFIED="1557498707229" TEXT="sub-content"/>
<node CREATED="1540952017027" ID="ID_1004640509" MODIFIED="1557498707229" TEXT="Sequenz von (nested) sub TrackBody"/>
</node>
<node CREATED="1540953620811" ID="ID_421197092" MODIFIED="1557498707229" TEXT="Aufgaben">
<node CREATED="1540953625171" ID="ID_1987245010" MODIFIED="1557498707229" TEXT="sub-TrackBody verwalten"/>
<node CREATED="1540953632393" ID="ID_132647407" MODIFIED="1557498707229" TEXT="gesamt-H&#xf6;he ermitteln"/>
<node CREATED="1540953791364" ID="ID_540126417" MODIFIED="1557498707229" TEXT="vertikale Koordinaten zum Platzieren von Content ermitteln"/>
<node CREATED="1540953642160" ID="ID_1963147841" MODIFIED="1557498707229" TEXT="Hintergrund f&#xfc;r eigenen Bereich zeichnen"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1544839283413" FOLDED="true" ID="ID_960193981" MODIFIED="1679360284129" TEXT="Ruler-Tracks bauen">
<icon BUILTIN="hourglass"/>
<icon BUILTIN="flag"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1544849233126" ID="ID_1576984939" MODIFIED="1557498707229" TEXT="#1193 represent time and overview rulers">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1554995807523" ID="ID_896927472" MODIFIED="1557498707229" TEXT="grunds&#xe4;tzliches Konzept">
<node CREATED="1554995813195" ID="ID_1158334025" MODIFIED="1557498707229" TEXT="sind Modell-Elemente"/>
<node CREATED="1554995818270" ID="ID_753876518" MODIFIED="1557498707229" TEXT="werden in den Track injiziert"/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1554995829834" ID="ID_1945074845" MODIFIED="1674161238640" TEXT="teilweise noch unklar">
<linktarget COLOR="#af637b" DESTINATION="ID_1945074845" ENDARROW="Default" ENDINCLINATION="-348;-196;" ID="Arrow_ID_1261991748" SOURCE="ID_1182180069" STARTARROW="None" STARTINCLINATION="-383;24;"/>
<icon BUILTIN="broken-line"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1554995834875" ID="ID_1119649795" MODIFIED="1674159488258" TEXT="Zusammenspiel mit Expand/Collapse">
<arrowlink COLOR="#926b99" DESTINATION="ID_1440303749" ENDARROW="Default" ENDINCLINATION="-978;62;" ID="Arrow_ID_1979782904" STARTARROW="None" STARTINCLINATION="-281;21;"/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1555020163776" ID="ID_1470546162" MODIFIED="1557498707229" TEXT="collapsed == Scope durch Ruler ersetzt"/>
<node CREATED="1555020175102" ID="ID_1798602" MODIFIED="1557498707229">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <i>das </i>ist ein reiner (pesistent) presentation state
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1674159496551" ID="ID_1094568733" MODIFIED="1674159514737" TEXT="Trotzdem mu&#xdf; es in das Timeline-globale Layout einbezogen werden"/>
</node>
<node CREATED="1561151742029" ID="ID_857875045" MODIFIED="1561151755207" TEXT="repr&#xe4;sentiert als Ruler des top-level-Track"/>
<node COLOR="#338800" CREATED="1561151772593" ID="ID_1142063549" MODIFIED="1566406715937" TEXT="aber die Zahl der Pr&#xe4;fix-Elemente mu&#xdf; korrekt eingesetzt werden">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1554995841966" ID="ID_1443277448" MODIFIED="1561151658998" TEXT="genaue Rolle der Session??">
<linktarget COLOR="#ce7c94" DESTINATION="ID_1443277448" ENDARROW="Default" ENDINCLINATION="509;0;" ID="Arrow_ID_1589685813" SOURCE="ID_725781646" STARTARROW="None" STARTINCLINATION="296;0;"/>
<linktarget COLOR="#ce7c94" DESTINATION="ID_1443277448" ENDARROW="Default" ENDINCLINATION="509;0;" ID="Arrow_ID_1860575220" SOURCE="ID_790305134" STARTARROW="None" STARTINCLINATION="296;0;"/>
<linktarget COLOR="#337fe3" DESTINATION="ID_1443277448" ENDARROW="Default" ENDINCLINATION="-2069;0;" ID="Arrow_ID_934863827" SOURCE="ID_1520503504" STARTARROW="Default" STARTINCLINATION="-702;0;"/>
<icon BUILTIN="help"/>
</node>
</node>
</node>
<node CREATED="1544839288936" ID="ID_43593052" MODIFIED="1566406817964" TEXT="Ruler-Konfigs in das systematische UI-Modell">
<arrowlink COLOR="#5f84b0" DESTINATION="ID_1083901292" ENDARROW="Default" ENDINCLINATION="-746;-75;" ID="Arrow_ID_1167484185" STARTARROW="None" STARTINCLINATION="-981;0;"/>
<linktarget COLOR="#5287c5" DESTINATION="ID_43593052" ENDARROW="Default" ENDINCLINATION="-197;439;" ID="Arrow_ID_350259030" SOURCE="ID_1516897126" STARTARROW="None" STARTINCLINATION="-244;0;"/>
<node COLOR="#338800" CREATED="1544849869166" ID="ID_1025477379" MODIFIED="1557498707229" TEXT="Frage: wo ansiedeln?">
<icon BUILTIN="button_ok"/>
<node CREATED="1544849875744" ID="ID_27673928" MODIFIED="1557498707229" TEXT="im TrackPresenter">
<icon BUILTIN="button_cancel"/>
<node CREATED="1553911581890" ID="ID_1856936034" MODIFIED="1557498707229">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      das w&#228;re der <i>logisch richtige</i>&#160;Ort
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1553911598855" ID="ID_400583625" MODIFIED="1557498707230" TEXT="aber jede konkrete Aktion m&#xfc;&#xdf;te dann stets durch den Display-Frame durchgreifen"/>
<node CREATED="1553911621023" ID="ID_403549572" MODIFIED="1557498707230" TEXT="daher ist es besser, nur einmal das Binding nach untern durchgreifen zu lassen">
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1544849880757" ID="ID_1796042436" MODIFIED="1557498707230" TEXT="direkt im TimelineBody">
<icon BUILTIN="forward"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1560173474830" ID="ID_351544133" MODIFIED="1563143676190" TEXT="wie viele sind es?">
<icon BUILTIN="help"/>
<node COLOR="#ba568c" CREATED="1560173511341" ID="ID_637775069" MODIFIED="1560173529984" TEXT="Monate sp&#xe4;ter...">
<icon BUILTIN="smily_bad"/>
</node>
<node CREATED="1560173498827" ID="ID_553759798" MODIFIED="1560173508018" TEXT="und was meint hier &quot;Konfig&quot;...?">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
<node CREATED="1563143678330" ID="ID_343908242" MODIFIED="1563143681001" TEXT="Antwort">
<node CREATED="1563143682350" ID="ID_1332243622" MODIFIED="1563143690248" TEXT="beliebig viele, und verschachtelt"/>
<node CREATED="1563143691380" ID="ID_1703343523" MODIFIED="1563143697157" TEXT="Jeder Track kann Ruler haben"/>
<node CREATED="1563143698199" ID="ID_1437895403" MODIFIED="1563143711781" TEXT="die Ruler des top-level-Track werden gePinnt dargestellt"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1566406728259" ID="ID_763463375" MODIFIED="1566406748449" TEXT="konkrete Ausgestaltung">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1563143002107" ID="ID_1177786099" MODIFIED="1566406652163" TEXT="verschiedene Ruler-Arten">
<linktarget COLOR="#c178a8" DESTINATION="ID_1177786099" ENDARROW="Default" ENDINCLINATION="-1830;0;" ID="Arrow_ID_829837415" SOURCE="ID_104997878" STARTARROW="None" STARTINCLINATION="576;-53;"/>
<linktarget COLOR="#622e7d" DESTINATION="ID_1177786099" ENDARROW="Default" ENDINCLINATION="556;0;" ID="Arrow_ID_1339566753" SOURCE="ID_1063302647" STARTARROW="Default" STARTINCLINATION="556;0;"/>
<icon BUILTIN="hourglass"/>
</node>
<node CREATED="1566406750272" ID="ID_1606625965" MODIFIED="1566406839560" TEXT="Steuerung der konkreten H&#xf6;he (gem&#xe4;&#xdf; Inhalt)">
<icon BUILTIN="hourglass"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1566406763774" ID="ID_764785834" MODIFIED="1566406772229" TEXT="verwende bisher Platzhalter-Konstanten">
<icon BUILTIN="flag-pink"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1566518895896" ID="ID_1389016008" MODIFIED="1566518921254" TEXT="Achtung: Margin+Padding gem&#xe4;&#xdf; Stylesheet mit ber&#xfc;cksichtigen">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1566406773325" ID="ID_1516897126" MODIFIED="1566406830389" TEXT="soll einmal aus dem systematischen UI-Modell bzw Session-Modell kommen">
<arrowlink COLOR="#5287c5" DESTINATION="ID_43593052" ENDARROW="Default" ENDINCLINATION="-197;439;" ID="Arrow_ID_350259030" STARTARROW="None" STARTINCLINATION="-244;0;"/>
<icon BUILTIN="bell"/>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1541814972977" HGAP="8" ID="ID_1482433902" MODIFIED="1557498707230" TEXT="offen..." VSHIFT="5">
<icon BUILTIN="bell"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1541814988759" ID="ID_327310802" MODIFIED="1557498707230" TEXT="mu&#xdf; der TrackBody seinen Namen kennen?">
<icon BUILTIN="help"/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1561047126901" ID="ID_376833399" MODIFIED="1561047145040" TEXT="Ordnung und Entfernen von sub-Track Bodies!!">
<icon BUILTIN="flag-pink"/>
</node>
</node>
</node>
<node CREATED="1566955479862" HGAP="37" ID="ID_933224238" MODIFIED="1566955502545" TEXT="Koordinaten &amp; Position" VSHIFT="-9">
<node CREATED="1566955505470" ID="ID_1718751102" MODIFIED="1566955652259" TEXT="unterer Canvas mu&#xdf; zusammen mit Header-Pane scrollen">
<linktarget COLOR="#327dd5" DESTINATION="ID_1718751102" ENDARROW="Default" ENDINCLINATION="-1329;-302;" ID="Arrow_ID_1962173714" SOURCE="ID_1649819002" STARTARROW="None" STARTINCLINATION="650;36;"/>
<node COLOR="#338800" CREATED="1566955655903" ID="ID_652481986" MODIFIED="1566955664590" TEXT="gemeinsames Adjustment verdrahten">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1566955668964" ID="ID_125473464" MODIFIED="1568577727577" TEXT="Vorsicht: Koordinaten m&#xfc;ssen zusammenpassen">
<arrowlink COLOR="#b84775" DESTINATION="ID_337498242" ENDARROW="Default" ENDINCLINATION="89;0;" ID="Arrow_ID_1188180583" STARTARROW="None" STARTINCLINATION="159;0;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1566955690993" ID="ID_1222461806" MODIFIED="1576974623765" TEXT="Koordinaten auf dem Canvas">
<linktarget COLOR="#474293" DESTINATION="ID_1222461806" ENDARROW="Default" ENDINCLINATION="-912;90;" ID="Arrow_ID_890343372" SOURCE="ID_1628336999" STARTARROW="None" STARTINCLINATION="-1540;96;"/>
<node CREATED="1566955702936" ID="ID_43945835" MODIFIED="1576974756059" TEXT="Idee: gemeinsam normieren">
<arrowlink COLOR="#744479" DESTINATION="ID_130702763" ENDARROW="Default" ENDINCLINATION="687;939;" ID="Arrow_ID_32276313" STARTARROW="Default" STARTINCLINATION="199;-719;"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1566955722421" ID="ID_337498242" MODIFIED="1566955828220" TEXT="Problem: gekoppelte Scrollbar">
<linktarget COLOR="#b84775" DESTINATION="ID_337498242" ENDARROW="Default" ENDINCLINATION="89;0;" ID="Arrow_ID_1188180583" SOURCE="ID_125473464" STARTARROW="None" STARTINCLINATION="159;0;"/>
</node>
<node CREATED="1566955756437" ID="ID_572662558" MODIFIED="1566955768492" TEXT="Problem: steuern der Zeichen-Aktivit&#xe4;t"/>
<node CREATED="1566955769779" ID="ID_1433989024" MODIFIED="1566955904369" TEXT="Vorteil: Positionieren der Widgets">
<arrowlink COLOR="#524b74" DESTINATION="ID_1316730142" ENDARROW="Default" ENDINCLINATION="530;-50;" ID="Arrow_ID_1561193123" STARTARROW="Default" STARTINCLINATION="424;0;"/>
</node>
</node>
<node CREATED="1566955786323" ID="ID_1411864272" MODIFIED="1582926979997" TEXT="Alternative: jeder sub-Canvas hat seinen eigenen Origin">
<linktarget COLOR="#5d3885" DESTINATION="ID_1411864272" ENDARROW="Default" ENDINCLINATION="-1041;0;" ID="Arrow_ID_1078761950" SOURCE="ID_309596538" STARTARROW="None" STARTINCLINATION="-660;30;"/>
<icon BUILTIN="forward"/>
<node CREATED="1568384149932" ID="ID_364410899" MODIFIED="1576974893896" TEXT="inzwischen erscheint mit diese L&#xf6;sung immer attraktiver...">
<linktarget COLOR="#efd0af" DESTINATION="ID_364410899" ENDARROW="Default" ENDINCLINATION="1299;64;" ID="Arrow_ID_1373879262" SOURCE="ID_680399486" STARTARROW="None" STARTINCLINATION="477;28;"/>
<icon BUILTIN="smiley-oh"/>
</node>
<node CREATED="1568577545755" ID="ID_752815491" MODIFIED="1568577574366">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      weil dann <i>innerhalb </i>des Canvas alles konsistent ist
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1568577575631" ID="ID_1451371313" MODIFIED="1568577585114" TEXT="..und &#xfc;bersetzt werden mu&#xdf; ohnehin"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1582926994758" ID="ID_392725300" MODIFIED="1582926998672" TEXT="so mach&apos;mas">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1541861473496" FOLDED="true" ID="ID_457526663" MODIFIED="1679078256361" TEXT="draw">
<linktarget COLOR="#fec680" DESTINATION="ID_457526663" ENDARROW="Default" ENDINCLINATION="-1077;-98;" ID="Arrow_ID_1979848335" SOURCE="ID_416633797" STARTARROW="None" STARTINCLINATION="709;70;"/>
<icon BUILTIN="hourglass"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1542309666407" ID="ID_1721729181" MODIFIED="1557498707230" TEXT="initial....">
<node CREATED="1542309671333" ID="ID_1283622298" MODIFIED="1557498707230" TEXT="Gr&#xf6;&#xdf;e des leeren Canvas">
<arrowlink COLOR="#60749f" DESTINATION="ID_400560063" ENDARROW="Default" ENDINCLINATION="-46;0;" ID="Arrow_ID_449772156" STARTARROW="None" STARTINCLINATION="-13;18;"/>
<linktarget COLOR="#4b3d60" DESTINATION="ID_1283622298" ENDARROW="Default" ENDINCLINATION="-940;-885;" ID="Arrow_ID_425073157" SOURCE="ID_547988829" STARTARROW="None" STARTINCLINATION="-915;160;"/>
<node CREATED="1542309689328" ID="ID_679418178" MODIFIED="1672842637926" TEXT="verwende size-Allocation des ScrolledWindow">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...in dem der Timeline body-canvas n&#228;mlich liegt
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#795b80" DESTINATION="ID_548414744" ENDARROW="Default" ENDINCLINATION="-897;636;" ID="Arrow_ID_1661740759" STARTARROW="Default" STARTINCLINATION="-286;-17;"/>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1678924505204" ID="ID_25210334" MODIFIED="1678924536707" TEXT="Pixel-Breite daraus &#x27f9; Kalibrieren des ZoomWindow"/>
</node>
</node>
<node CREATED="1541861481967" ID="ID_1316730142" MODIFIED="1566955904369" TEXT="Feststellen der Canvas-Position">
<arrowlink COLOR="#2a79c1" DESTINATION="ID_1038931568" ENDARROW="Default" ENDINCLINATION="-511;19;" ID="Arrow_ID_1052516165" STARTARROW="None" STARTINCLINATION="-253;-12;"/>
<linktarget COLOR="#524b74" DESTINATION="ID_1316730142" ENDARROW="Default" ENDINCLINATION="530;-50;" ID="Arrow_ID_1561193123" SOURCE="ID_1433989024" STARTARROW="Default" STARTINCLINATION="424;0;"/>
<node CREATED="1541862243012" ID="ID_400560063" MODIFIED="1557498707230" TEXT="Canvas kennt seine eigene Ausdehnung (in Pixeln)">
<linktarget COLOR="#60749f" DESTINATION="ID_400560063" ENDARROW="Default" ENDINCLINATION="-46;0;" ID="Arrow_ID_449772156" SOURCE="ID_1283622298" STARTARROW="None" STARTINCLINATION="-13;18;"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1554418097774" ID="ID_49602168" MODIFIED="1557498707230" STYLE="fork" TEXT="TODO in welcher Form?">
<icon BUILTIN="help"/>
</node>
</node>
<node CREATED="1541861743088" ID="ID_1696653468" MODIFIED="1557498707230" TEXT="Display-Manager">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1541861768818" ID="ID_1031864478" MODIFIED="1557498707230" TEXT="Zugriff wie?">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1541862804070" ID="ID_430268635" MODIFIED="1678407301724" TEXT="DisplayManager &#x2259; Abstraktion">
<icon BUILTIN="yes"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1541862816104" ID="ID_1545586243" MODIFIED="1561827465279" TEXT="lokal injiziert beim Aufbau">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1554475687257" ID="ID_908192712" MODIFIED="1554475728633" TEXT="das hei&#xdf;t: separates Thema">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#990000" CREATED="1554475711445" ID="ID_1049987785" MODIFIED="1666450945197" TEXT="im Moment (4/19) egal">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1666450919276" ID="ID_395455214" LINK="#ID_1964864197" MODIFIED="1666450990761" TEXT="indirekt per CanvasHook">
<icon BUILTIN="idea"/>
<node CREATED="1666451033226" ID="ID_1458699981" MODIFIED="1666451041469" TEXT="wird in die Struktur der Widgets eingewoben"/>
<node CREATED="1666451042697" ID="ID_163976806" MODIFIED="1666451056971" TEXT="hat Parent-Verkettung (alles inline)"/>
<node CREATED="1666451059223" ID="ID_169987790" MODIFIED="1666451088837" TEXT="dar&#xfc;ber Zugriff auf die zust&#xe4;ndige DisplayManager-Impl"/>
</node>
</node>
</node>
<node CREATED="1541862265474" ID="ID_1967442368" MODIFIED="1557498707230" TEXT="Grundfunktion: translate window"/>
<node CREATED="1541862852155" ID="ID_1628726016" MODIFIED="1557498707230" TEXT="Anfragen">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1541862862450" ID="ID_1333221051" MODIFIED="1557498707230" TEXT="was ist meine Position und Extension?">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1555024009413" ID="ID_1600874732" MODIFIED="1557498707230" TEXT="welches Pixel-Window mu&#xdf; dargestellt werden">
<linktarget COLOR="#3d4476" DESTINATION="ID_1600874732" ENDARROW="Default" ENDINCLINATION="561;0;" ID="Arrow_ID_1463649935" SOURCE="ID_1781062229" STARTARROW="None" STARTINCLINATION="550;27;"/>
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1555027076942" HGAP="38" ID="ID_479062556" MODIFIED="1557498707230" TEXT="wie bekomme ich das heraus?" VSHIFT="39">
<icon BUILTIN="help"/>
</node>
<node CREATED="1555027102243" HGAP="40" ID="ID_855793949" MODIFIED="1557498707230" TEXT="Idee" VSHIFT="5">
<node CREATED="1555027114837" ID="ID_727253754" MODIFIED="1557498707230" TEXT="den TimelineController fragen..?"/>
</node>
</node>
</node>
</node>
<node CREATED="1541861495569" ID="ID_1828075998" MODIFIED="1557498707230" TEXT="Thema: ZoomWindow">
<arrowlink COLOR="#5b5ca1" DESTINATION="ID_838803024" ENDARROW="Default" ENDINCLINATION="-599;-1344;" ID="Arrow_ID_842684168" STARTARROW="None" STARTINCLINATION="426;56;"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1612027709754" ID="ID_694928494" MODIFIED="1612027847880" TEXT="Kann u.U. Clips aus der Anzeige ausblenden">
<arrowlink COLOR="#654e8d" DESTINATION="ID_1027750978" ENDARROW="Default" ENDINCLINATION="-33;-18;" ID="Arrow_ID_1904178479" STARTARROW="None" STARTINCLINATION="-254;16;"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1612027750832" ID="ID_422490582" MODIFIED="1612027764227" TEXT="wenn die Clips zu weit vom sichtbaren Bereich entfernt w&#xe4;ren"/>
<node CREATED="1612027765032" ID="ID_1742732980" MODIFIED="1612027777304" TEXT="und dadurch der Canvas zu extrem ausgedehnt w&#xfc;rde"/>
</node>
</node>
</node>
<node CREATED="1542383648143" FOLDED="true" HGAP="41" ID="ID_718536842" MODIFIED="1557498707230" VSHIFT="-6">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <b>nicht alles</b>&#160;wird gezeichnet
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1542383666724" ID="ID_1850932291" MODIFIED="1557498707230" TEXT="Clipping-Region">
<node COLOR="#435e98" CREATED="1542383689152" ID="ID_1534655843" MODIFIED="1557498707230" TEXT="wird der on_draw() mitgegeben">
<arrowlink COLOR="#5e86ca" DESTINATION="ID_577859258" ENDARROW="Default" ENDINCLINATION="-1494;46;" ID="Arrow_ID_1966515866" STARTARROW="None" STARTINCLINATION="-1797;81;"/>
<icon BUILTIN="info"/>
<node CREATED="1555021726291" ID="ID_529262560" MODIFIED="1557498707230" TEXT="Entnehmen und Aufbereiten">
<node CREATED="1555021755898" ID="ID_968519712" MODIFIED="1557498707230" TEXT="Cairo liefert double-Koordinaten"/>
<node CREATED="1555021772375" ID="ID_860582416" MODIFIED="1557498707230" TEXT="gdk_cairo_get_clip_rectangle() als Vorlage"/>
</node>
<node CREATED="1555021797428" ID="ID_1566025774" MODIFIED="1557498707230" TEXT="Problem: Fallback">
<node CREATED="1555021809578" ID="ID_1964178964" MODIFIED="1576282358052" TEXT="was wenn die Clip-Region nicht gesetzt ist?">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      wir k&#246;nnen nicht von 0 bis MAXINT zeichnen
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1555023959073" ID="ID_118083348" MODIFIED="1557498707230" TEXT="auf Pixel-Window zur&#xfc;ckfallen">
<arrowlink COLOR="#677e9a" DESTINATION="ID_1781062229" ENDARROW="Default" ENDINCLINATION="230;6;" ID="Arrow_ID_733563643" STARTARROW="None" STARTINCLINATION="296;77;"/>
</node>
</node>
</node>
<node CREATED="1542383722599" ID="ID_1927110373" MODIFIED="1557498707230" TEXT="Optimierungs-Potential">
<node CREATED="1542383737043" ID="ID_1858424140" MODIFIED="1557498707230" TEXT="sp&#xe4;ter">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
<node CREATED="1542383740622" ID="ID_1742615218" MODIFIED="1557498707230" TEXT="z.B. f&#xfc;r Content-Rendering"/>
</node>
</node>
<node CREATED="1542383813145" ID="ID_1027750978" MODIFIED="1557498707230" TEXT="Lumiera display strategy">
<linktarget COLOR="#654e8d" DESTINATION="ID_1027750978" ENDARROW="Default" ENDINCLINATION="-33;-18;" ID="Arrow_ID_1904178479" SOURCE="ID_694928494" STARTARROW="None" STARTINCLINATION="-254;16;"/>
<node CREATED="1542383825895" ID="ID_47938908" MODIFIED="1557498707230" TEXT="zweistufige &#xdc;bersetzung in ein Pixel-Fenster">
<node CREATED="1542383840687" ID="ID_1981380274" MODIFIED="1557498707230" TEXT="Stufe-1 == Timespan der Timeline"/>
<node CREATED="1542383859851" ID="ID_892953664" MODIFIED="1557498707230" TEXT="Stufe-2 == gegenw&#xe4;rtig relevanter Ausschnitt">
<arrowlink COLOR="#6f83c4" DESTINATION="ID_557373288" ENDARROW="Default" ENDINCLINATION="84;-18;" ID="Arrow_ID_391816329" STARTARROW="None" STARTINCLINATION="-125;2;"/>
</node>
</node>
<node CREATED="1542383915849" ID="ID_557373288" MODIFIED="1557498707230" TEXT="relevantTimeWindow">
<linktarget COLOR="#6f83c4" DESTINATION="ID_557373288" ENDARROW="Default" ENDINCLINATION="84;-18;" ID="Arrow_ID_391816329" SOURCE="ID_892953664" STARTARROW="None" STARTINCLINATION="-125;2;"/>
<node CREATED="1542384024260" ID="ID_1781062229" MODIFIED="1557498707230" TEXT="festgelegt im DisplayManager">
<arrowlink COLOR="#3d4476" DESTINATION="ID_1600874732" ENDARROW="Default" ENDINCLINATION="561;0;" ID="Arrow_ID_1463649935" STARTARROW="None" STARTINCLINATION="550;27;"/>
<linktarget COLOR="#677e9a" DESTINATION="ID_1781062229" ENDARROW="Default" ENDINCLINATION="230;6;" ID="Arrow_ID_733563643" SOURCE="ID_118083348" STARTARROW="None" STARTINCLINATION="296;77;"/>
</node>
</node>
</node>
<node CREATED="1612027859654" ID="ID_1866609580" MODIFIED="1612027898972">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <b><font color="#6d2828">Konvention</font></b>: Clips mit start==Time::NEVER werden verborgen
    </p>
  </body>
</html></richcontent>
<font NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1566394354106" FOLDED="true" HGAP="46" ID="ID_1805397888" MODIFIED="1566394373770" TEXT="Zeichen-Strategie" VSHIFT="-10">
<icon BUILTIN="forward"/>
<node CREATED="1566394375643" ID="ID_597592953" MODIFIED="1566394385458" TEXT="was soll bewirkt werden?">
<node CREATED="1566394398396" ID="ID_235154852" MODIFIED="1566394410975" TEXT="Bereiche / Zonen sollen erkennbar getrennt sein"/>
<node CREATED="1566394429448" ID="ID_1545751655" MODIFIED="1566394461896" TEXT="zueinander geh&#xf6;rige Elemente sollen deutlich werden"/>
<node CREATED="1566394412259" ID="ID_1529404821" MODIFIED="1566394427263" TEXT="System verschachtelter Scopes soll sich unmittelbar mitteilen"/>
</node>
<node CREATED="1566394484401" ID="ID_45833911" MODIFIED="1566394488525" TEXT="Darstellungs-Ansatz">
<node CREATED="1566394489985" ID="ID_130800194" MODIFIED="1566394503171" TEXT="durch ein 3D-Profil darstellen">
<node CREATED="1566394504879" ID="ID_106666528" MODIFIED="1566394519122" TEXT="Diskussion 90er-Look vs flat design"/>
<node CREATED="1566394541001" ID="ID_878559119" MODIFIED="1566394556367">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <i>manchmal</i>&#160;ist die alte L&#246;sung besser
    </p>
  </body>
</html></richcontent>
<node CREATED="1566394596499" ID="ID_1873797848" MODIFIED="1566394621437" TEXT="Fortschritts-Proze&#xdf; vs. Erfassen einer Idee"/>
<node CREATED="1566394624791" ID="ID_328891828" MODIFIED="1576282358052" TEXT="das gilt auch f&#xfc;r graphische Oberfl&#xe4;chen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      die Idee einer graphischen Benutzeroberfl&#228;che hat sich &#252;ber die 60er / 70er-Jahre herausgebildet.
    </p>
    <p>
      Nachdem die Idee einmal gefa&#223;t ist, gibt es nur noch Oberfl&#228;chendifferenzierung.
    </p>
    <p>
      Und letztere neigt stets zur &quot;Verschlimmbesserung&quot;
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node CREATED="1566395139227" ID="ID_744743691" MODIFIED="1566395149200" TEXT="grunds&#xe4;tzliche Eigenschaften einer 3D-Schattierung">
<node CREATED="1566395154793" ID="ID_1344119568" MODIFIED="1566395168947" TEXT="sie ben&#xf6;tigt eine vergleichsweise einfache Struktur"/>
<node CREATED="1566395170922" ID="ID_953629359" MODIFIED="1566395187520" TEXT="sie arbeitet am Besten im mittleren Helligkeitsbereich"/>
<node CREATED="1566395188597" ID="ID_1901821236" MODIFIED="1566395201759" TEXT="Tiefenstaffelung wirkt stets nur lokal"/>
</node>
<node CREATED="1566395244949" ID="ID_1286928751" MODIFIED="1566395284757" TEXT="Ziel ist daher: lokal ein Gef&#xe4;lle zu vermitteln">
<icon BUILTIN="yes"/>
<node CREATED="1566395269617" ID="ID_214269730" MODIFIED="1566395275117" TEXT="&quot;hier ist eine Barriere&quot;"/>
<node CREATED="1566395276021" ID="ID_890095997" MODIFIED="1566395280113" TEXT="&quot;hier geh&apos;ts rein&quot;"/>
</node>
</node>
<node CREATED="1566395368540" ID="ID_901032552" MODIFIED="1566395373199" TEXT="Konsequenz">
<node CREATED="1566395374251" ID="ID_770036633" MODIFIED="1566395383792" TEXT="wir arbeiten ein Profil ab"/>
<node CREATED="1566395384746" ID="ID_869767169" MODIFIED="1566395414266" TEXT="wir zeichnen nicht einen Stapel"/>
<node CREATED="1566395415590" ID="ID_719677480" MODIFIED="1576282358051" TEXT="warum? Weil unsere Strukturen f&#xfc;r letzteres zu komplex sind">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      gestapelte Strukturen dieser Komplexit&#228;t lassen sich nicht durch Schattierung vermitteln.
    </p>
    <p>
      Wohl aber lassen sich lokale Nachbarschafts-Beziehungen (h&#246;he / tiefer) durch Schattierung hervorheben
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1566395532950" ID="ID_9111832" MODIFIED="1576282358051" TEXT="die CSS-Effekten spielen daher nur eine begrenzte Rolle">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      und zwar im Wesentliche zur Schattierung der Flanken.
    </p>
    <p>
      Die Inhalts-Fl&#228;chen selber sind zu gro&#223; und zu strukturiert, um sie per Schattierung zu verdeutlichen
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node CREATED="1554480402297" ID="ID_1456965488" MODIFIED="1557498707230" TEXT="wie?">
<node CREATED="1542388995969" ID="ID_343346390" MODIFIED="1557498707230" TEXT="Ablauf-Plan">
<icon BUILTIN="idea"/>
<node CREATED="1542389054873" ID="ID_1270989660" MODIFIED="1557498707230" TEXT="Ausl&#xf6;ser: draw-Signal an Canvas">
<icon BUILTIN="full-1"/>
</node>
<node CREATED="1542389117416" ID="ID_688086253" MODIFIED="1557498707230" TEXT="Canvas an Display-Manager: Draw-Evaluation">
<icon BUILTIN="full-2"/>
</node>
<node CREATED="1542389301246" ID="ID_244922384" MODIFIED="1557498707230" TEXT="(ggfs) ZoomWindow neu etablieren">
<icon BUILTIN="full-3"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1554480448693" FOLDED="true" ID="ID_1659558780" MODIFIED="1679078204479" STYLE="fork" TEXT="Struktur-Profil">
<linktarget COLOR="#2e66db" DESTINATION="ID_1659558780" ENDARROW="Default" ENDINCLINATION="-889;0;" ID="Arrow_ID_1691760775" SOURCE="ID_483631091" STARTARROW="None" STARTINCLINATION="828;0;"/>
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="forward"/>
<node CREATED="1554480470481" ID="ID_936706731" MODIFIED="1557498707230" TEXT="Canvas bezieht vom Root-Body eine Verb-Sequenz"/>
<node CREATED="1554516114006" ID="ID_1074831376" MODIFIED="1557498707230" TEXT="diese Verb-Sequenz wird rekursiv aufgebaut"/>
<node CREATED="1554516233179" ID="ID_659430585" MODIFIED="1557498707230" TEXT="der draw()-Code interpretiert sie"/>
<node CREATED="1554516127873" FOLDED="true" ID="ID_134859232" MODIFIED="1557498707230" TEXT="heap-allozierte Liste">
<node CREATED="1554516153981" ID="ID_683878349" MODIFIED="1557498707230" TEXT="Lazy">
<node CREATED="1554516163980" ID="ID_151765359" MODIFIED="1557498707230" TEXT="neu bauen wenn leer"/>
<node CREATED="1554516172112" ID="ID_1550870826" MODIFIED="1557498707230" TEXT="leeren zum Invalidieren"/>
</node>
<node CREATED="1554516191248" ID="ID_379475221" MODIFIED="1557498707230" TEXT="on_draw() ist h&#xe4;ufiger als Struktur&#xe4;nderungen"/>
<node CREATED="1554567390096" ID="ID_611611667" MODIFIED="1557498707230" TEXT="Liste nicht verbergen">
<icon BUILTIN="yes"/>
<node CREATED="1554567399523" ID="ID_139156989" MODIFIED="1557498707230" TEXT="der draw-Code darf durchaus die Liste sehen"/>
<node CREATED="1554567408804" ID="ID_1274839361" MODIFIED="1576282358050" TEXT="ggfs mu&#xdf; er n&#xe4;mlich den Kontext beachten">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...zum Beispiel um einen &quot;Wall&quot; auch expressiv zu schattieren
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1554516243633" ID="ID_386714682" MODIFIED="1557498707230" TEXT="Verben">
<icon BUILTIN="info"/>
<node COLOR="#338800" CREATED="1554516247416" ID="ID_711078188" MODIFIED="1557498707230" TEXT="ruler">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1554516251688" ID="ID_24688004" MODIFIED="1557498707230" TEXT="gap">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1554516257065" ID="ID_389097560" MODIFIED="1557498707230" TEXT="content">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1554516438055" ID="ID_1490793853" MODIFIED="1557498707230" TEXT="open / close">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1554567321239" ID="ID_1638157583" MODIFIED="1561827465279" TEXT="prelude / coda">
<icon BUILTIN="button_ok"/>
<node CREATED="1554567338981" ID="ID_1124816442" MODIFIED="1554567365787" TEXT="damit der Display-Code da was Spezielles machen kann..."/>
</node>
</node>
<node COLOR="#435e98" CREATED="1561898271161" FOLDED="true" ID="ID_30064777" MODIFIED="1678407327044" TEXT="Problem: Verh&#xe4;ltnis num globalen Style">
<linktarget COLOR="#80738f" DESTINATION="ID_30064777" ENDARROW="Default" ENDINCLINATION="-6;190;" ID="Arrow_ID_970836248" SOURCE="ID_959729268" STARTARROW="None" STARTINCLINATION="-914;34;"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1561898579784" ID="ID_663380786" MODIFIED="1561898583005" TEXT="Richtlinien">
<node CREATED="1561898591844" ID="ID_1774942533" MODIFIED="1561898603170" TEXT="Styling darf kein Fremdk&#xf6;rber sein"/>
<node CREATED="1561898532955" ID="ID_1068573244" MODIFIED="1561899021391" TEXT="Styling mu&#xdf; im globalen Layout-Manager verankert sein">
<arrowlink COLOR="#555080" DESTINATION="ID_44229333" ENDARROW="Default" ENDINCLINATION="-1124;49;" ID="Arrow_ID_1040482296" STARTARROW="None" STARTINCLINATION="808;-134;"/>
</node>
<node CREATED="1561898553085" ID="ID_253449798" MODIFIED="1561899085407" TEXT="Styling mu&#xdf; mit dem Timeline-Layout-Manager zusammenspielen">
<arrowlink COLOR="#6557a4" DESTINATION="ID_1536703120" ENDARROW="Default" ENDINCLINATION="-715;74;" ID="Arrow_ID_1260120879" STARTARROW="None" STARTINCLINATION="-1565;0;"/>
</node>
</node>
<node CREATED="1561899203009" ID="ID_334562125" MODIFIED="1561899206564" TEXT="Schwierigkeiten">
<node CREATED="1561899209829" ID="ID_28458938" MODIFIED="1561899219881" TEXT="mu&#xdf; mit bestehenden Themes zusammenspielen"/>
<node CREATED="1561899220790" ID="ID_1118436310" MODIFIED="1561899235944" TEXT="sollte f&#xfc;r einen (GTK)-Designer verst&#xe4;ndlich sein"/>
<node CREATED="1561899237388" ID="ID_726202845" MODIFIED="1561899252295" TEXT="sollte einfache Abk&#xfc;rzungen f&#xfc;r (Power)-User bieten"/>
<node CREATED="1561899286918" ID="ID_431566437" MODIFIED="1561899295830" TEXT="sollte organisch mitwachsen, kein Fremdk&#xf6;rper sein"/>
</node>
<node CREATED="1562236265485" FOLDED="true" HGAP="244" ID="ID_995671989" MODIFIED="1564954871840" TEXT="L&#xf6;sungsans&#xe4;tze" VSHIFT="-23">
<icon BUILTIN="idea"/>
<node CREATED="1562236280397" ID="ID_1519016774" MODIFIED="1562236318490" TEXT="per Extension-Konvention">
<icon BUILTIN="full-1"/>
<node CREATED="1562236391401" ID="ID_1909236407" MODIFIED="1562236396114" TEXT="Ansatz">
<node CREATED="1562236323478" ID="ID_1116798122" MODIFIED="1562236334808" TEXT="wir definieren neue Properties per Konvention"/>
<node CREATED="1562236335828" ID="ID_185933728" MODIFIED="1562236350237" TEXT="der User mu&#xdf; diese explizit stylen"/>
<node CREATED="1562236351178" ID="ID_340701173" MODIFIED="1562236389823" TEXT="das lumiera.css definiert diese">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ....und dient damit als Vorlage f&#252;r Theme-Autoren
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1562236402521" ID="ID_1932561545" MODIFIED="1562236485937" TEXT="pro">
<icon BUILTIN="button_ok"/>
<node CREATED="1562236492000" ID="ID_1686665413" MODIFIED="1562236497122" TEXT="unbegrenzte M&#xf6;glichkeiten"/>
<node CREATED="1562236498272" ID="ID_151681009" MODIFIED="1562236504355" TEXT="beliebig ausbauf&#xe4;hig"/>
<node CREATED="1562236745160" ID="ID_407233261" MODIFIED="1562236753255" TEXT="kann sogar UI-Verhalten steuern"/>
</node>
<node CREATED="1562236404795" ID="ID_670259832" MODIFIED="1562236439317" TEXT="con">
<icon BUILTIN="button_cancel"/>
<node CREATED="1562236526763" ID="ID_123632531" MODIFIED="1562236533326" TEXT="eng mit dem Code verzahnt"/>
<node CREATED="1562236568582" ID="ID_1608152079" MODIFIED="1562236578278" TEXT="f&#xfc;r nicht-Coder ist das &quot;Druiden-Wissen&quot;"/>
<node CREATED="1562236625158" ID="ID_1570550357" MODIFIED="1562236636481" TEXT="look-and-feel ist im Code festgelegt">
<node CREATED="1562236644532" ID="ID_283204755" MODIFIED="1562236647952" TEXT="implizit"/>
<node CREATED="1562236649139" ID="ID_1938689754" MODIFIED="1562236664485" TEXT="kann vom Theme-Autor nicht ge&#xe4;ndert werden"/>
</node>
<node CREATED="1562236671969" ID="ID_528043086" MODIFIED="1562236726811" TEXT="ein &quot;ganz anderes Theme&quot; ist nicht m&#xf6;glich">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...jedenfalls nicht ohne Code-&#196;nderung
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node CREATED="1562236309007" ID="ID_1061023264" MODIFIED="1564954864849" TEXT="Abgreifen vom Theme">
<linktarget COLOR="#3276c7" DESTINATION="ID_1061023264" ENDARROW="Default" ENDINCLINATION="-113;-2;" ID="Arrow_ID_1703748427" SOURCE="ID_495487458" STARTARROW="None" STARTINCLINATION="-147;-77;"/>
<icon BUILTIN="full-2"/>
<node CREATED="1562236758656" ID="ID_828079574" MODIFIED="1562236760937" TEXT="Ansatz">
<node CREATED="1562236767057" ID="ID_1496902826" MODIFIED="1562236775911" TEXT="Code verwendet nur wenige Zeichen-Primitive"/>
<node CREATED="1562236776876" ID="ID_1339077118" MODIFIED="1562236788875" TEXT="und deren Auspr&#xe4;gung greift er sich aus dem bestehenden Theme"/>
<node CREATED="1562236801137" ID="ID_1900227252" MODIFIED="1562236836324" TEXT="lumiera.css ist eigentlich nur ein normales Theme">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...welches aber lokal auf die Anwendung angewendet wird, mit h&#246;herer Priorit&#228;t
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1562236839544" ID="ID_1376635418" MODIFIED="1562236846612" TEXT="pro">
<icon BUILTIN="button_ok"/>
<node CREATED="1562236869512" ID="ID_1830540742" MODIFIED="1562236882164" TEXT="f&#xfc;gt sich organisch in das bestehende Styling ein"/>
<node CREATED="1562236883119" ID="ID_1197279369" MODIFIED="1562236928296" TEXT="&#xfc;bernimmt innovatives Styling/Theming, ohne da&#xdf; der Theme-Autor davon wissen mu&#xdf;"/>
</node>
<node CREATED="1562236842651" ID="ID_1846813911" MODIFIED="1562236849260" TEXT="con">
<icon BUILTIN="button_cancel"/>
<node CREATED="1562236937084" ID="ID_1575317646" MODIFIED="1562236949362" TEXT="sehr limitierte Ausdrucksm&#xf6;glichkeiten"/>
<node CREATED="1562236950422" ID="ID_762660822" MODIFIED="1562236968346" TEXT="zwingt den Code zum &quot;kreativen&quot; Einsatz bestehender Stilmittel"/>
<node CREATED="1562236989798" ID="ID_1021517173" MODIFIED="1562237012780" TEXT="Zusammenspiel mit dem Theme ist anspruchsvoll zu implementieren f&#xfc;r den UI-Programmierer"/>
<node CREATED="1562237017187" ID="ID_1371977786" MODIFIED="1562237034064" TEXT="&quot;kreative&quot; Themes k&#xf6;nnen zu unerwarteten Nebenwirkungen in Lumiera f&#xfc;hren"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1562237068798" HGAP="216" ID="ID_302021075" MODIFIED="1564954986291" TEXT="Bewertung" VSHIFT="-5">
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1562237082842" ID="ID_495487458" MODIFIED="1564954869369" TEXT="zweiter Ansatz ist erstrebenswert">
<arrowlink COLOR="#3276c7" DESTINATION="ID_1061023264" ENDARROW="Default" ENDINCLINATION="-113;-2;" ID="Arrow_ID_1703748427" STARTARROW="None" STARTINCLINATION="-147;-77;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1562237103004" FOLDED="true" ID="ID_1408123827" MODIFIED="1564954726646" TEXT="technische Umsetzbarkeit per Prototyp best&#xe4;tigt">
<icon BUILTIN="button_ok"/>
<node CREATED="1562237177115" ID="ID_1110019027" MODIFIED="1562237182470" TEXT="Problembereiche">
<node CREATED="1562237195711" ID="ID_728761836" MODIFIED="1562237202580" TEXT="slopes / bevels"/>
<node CREATED="1562237283110" ID="ID_1694914035" MODIFIED="1562237287310" TEXT="Text-Styling">
<node CREATED="1562237288789" ID="ID_1832038343" MODIFIED="1562237293633" TEXT="spezielle Arten von Text">
<node CREATED="1562237295338" ID="ID_1514397997" MODIFIED="1562237298920" TEXT="Fehlermeldungen"/>
<node CREATED="1562237302136" ID="ID_63004669" MODIFIED="1562237310051" TEXT="Displays (z.B. Zeit)"/>
<node CREATED="1562237321557" ID="ID_1199302482" MODIFIED="1562237326637" TEXT="Syntax-Highlighting"/>
</node>
<node CREATED="1562237339927" ID="ID_1217582772" MODIFIED="1562237350772" TEXT="komplexe Labels und mouse-over"/>
</node>
<node CREATED="1562237234612" ID="ID_1937806970" MODIFIED="1562237248228" TEXT="Akzente durch Gradienten+Transparenz">
<node CREATED="1562237258593" ID="ID_204987469" MODIFIED="1562237264780" TEXT="&quot;Glas&quot;-Elemente"/>
<node CREATED="1562237265912" ID="ID_1827698275" MODIFIED="1562237275771" TEXT="&quot;leuchtende&quot; Elemente"/>
</node>
</node>
<node COLOR="#338800" CREATED="1562237357741" FOLDED="true" ID="ID_836338266" MODIFIED="1564954730183" TEXT="Prototyp / Evaluierung">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1562238962640" ID="ID_1949200690" MODIFIED="1678462240856" TEXT="#1201 Prototype: custom styled timeline profile">
<linktarget COLOR="#40a5bc" DESTINATION="ID_1949200690" ENDARROW="Default" ENDINCLINATION="-2003;-104;" ID="Arrow_ID_398104912" SOURCE="ID_1275966904" STARTARROW="None" STARTINCLINATION="2327;166;"/>
<linktarget COLOR="#3a84dd" DESTINATION="ID_1949200690" ENDARROW="Default" ENDINCLINATION="-483;0;" ID="Arrow_ID_16837481" SOURCE="ID_424517976" STARTARROW="None" STARTINCLINATION="615;0;"/>
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1562238991603" ID="ID_1946428740" MODIFIED="1562238993781" TEXT="Idee">
<node CREATED="1562239018982" ID="ID_1133508339" MODIFIED="1562239031262" TEXT="Inset / Outset - Frame nutzen"/>
<node CREATED="1562239032324" ID="ID_1334895694" MODIFIED="1562239043294" TEXT="jeweils den Rest &#xfc;bermalen"/>
<node CREATED="1562239047914" ID="ID_323531964" MODIFIED="1562239058132" TEXT="Richtung und Dicke programmatisch steuern"/>
</node>
<node CREATED="1562239064619" ID="ID_170738372" MODIFIED="1562239068627" TEXT="Ansatzpunkte">
<node CREATED="1562843944226" ID="ID_873415681" MODIFIED="1562843971532" TEXT="den StyleContext verwenden">
<arrowlink COLOR="#7c8da1" DESTINATION="ID_73927449" ENDARROW="Default" ENDINCLINATION="207;0;" ID="Arrow_ID_679820364" STARTARROW="None" STARTINCLINATION="-325;70;"/>
<node CREATED="1562843975693" ID="ID_317751446" MODIFIED="1562843975693">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      widget-&gt;get_style_context();
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1562843984716" ID="ID_307424732" MODIFIED="1562843987923" TEXT="dieser bietet">
<node CREATED="1562844021015" ID="ID_1207023648" LINK="https://developer.gnome.org/gtk3/stable/GtkStyleContext.html#gtk-render-background" MODIFIED="1562844091117" TEXT="Hintergrund f&#xfc;llen: gtk-render-background">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1562844067476" ID="ID_1648423736" LINK="https://developer.gnome.org/gtk3/stable/GtkStyleContext.html#gtk-render-frame" MODIFIED="1562844085887" TEXT="Rahmen zeichnen: gtk-render-frame">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1562844175946" FOLDED="true" HGAP="53" ID="ID_770758065" MODIFIED="1563033494619" TEXT="dedizierten StyleContext konstruieren" VSHIFT="4">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1562844888515" ID="ID_121593395" MODIFIED="1678460384399" TEXT="Proof-of-Concept f&#xfc;r #1171 (widget path)">
<linktarget COLOR="#2a7734" DESTINATION="ID_121593395" ENDARROW="Default" ENDINCLINATION="1608;-100;" ID="Arrow_ID_1114940878" SOURCE="ID_1465497201" STARTARROW="None" STARTINCLINATION="1991;114;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1678460386966" HGAP="88" ID="ID_301794907" MODIFIED="1678460414188" TEXT="erfolgreich: erf&#xfc;llt den Zweck" VSHIFT="13">
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1562845117699" ID="ID_1145993487" MODIFIED="1563556963512" TEXT="kann man einen WidgetPath k&#xfc;nstlich konstruieren?">
<arrowlink COLOR="#3766bc" DESTINATION="ID_293762905" ENDARROW="Default" ENDINCLINATION="-654;0;" ID="Arrow_ID_711737555" STARTARROW="None" STARTINCLINATION="-2487;0;"/>
<node CREATED="1562845842871" ID="ID_119822604" MODIFIED="1562845853198" TEXT="widget-&gt;get_path()"/>
<node CREATED="1562854489102" ID="ID_1789577981" MODIFIED="1562854522386" TEXT="der erzeugte WidgetPath ist bereits eine Kopie">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      es ruft den Konstruktor WidgetPath(gobject, make_copy=true) auf
    </p>
  </body>
</html></richcontent>
<node CREATED="1562854560779" ID="ID_1139882401" MODIFIED="1562854560779" TEXT="gobject_ ((make_a_copy &amp;&amp; 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>
  <body>
    <ul>
      <li>
        erzeugt einen neuen leeren GtkWidgetPath
      </li>
      <li>
        kopiert alle Pfad-Elemente
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1562854695808" ID="ID_928822856" MODIFIED="1562854704117" TEXT="GTKmm-default-ctor">
<node CREATED="1562854705417" ID="ID_77172765" MODIFIED="1562854710564" TEXT="Gtk::WidgetPath()"/>
<node CREATED="1562854711819" ID="ID_1032164346" MODIFIED="1562854723266" TEXT="gobject_ (gtk_widget_path_new())"/>
</node>
<node CREATED="1562854781263" ID="ID_1413777843" MODIFIED="1562854790129" TEXT="WidgetPath ist ein boxed GTK-Object">
<node CREATED="1562854793482" ID="ID_1394514386" MODIFIED="1562854825949" TEXT="d.h. eigentlich nur ein GObj-*-Feld"/>
<node CREATED="1562854835241" ID="ID_766058517" MODIFIED="1562854840584" TEXT="mit geeignetem Refcounting">
<node CREATED="1562854871923" ID="ID_332819323" MODIFIED="1562854888696" TEXT="~WidgetPath()">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      WidgetPath::~WidgetPath() noexcept
    </p>
    <p>
      {
    </p>
    <p>
      &#160;&#160;if(gobject_)
    </p>
    <p>
      &#160;&#160;&#160;&#160;gtk_widget_path_free(gobject_);
    </p>
    <p>
      }
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1562947149512" ID="ID_1788757764" MODIFIED="1563033443796" TEXT="was/wie kann man an den Pfad anh&#xe4;ngen?">
<node CREATED="1562947206390" ID="ID_858425792" MODIFIED="1562947209292" TEXT="WidgetPath::path_append_type(GType)"/>
<node CREATED="1562947226168" ID="ID_1423368720" MODIFIED="1562947248239" TEXT="wie kann ich einen GType konstruieren, wenn es das Widget garnicht gibt??">
<node CREATED="1562948746502" ID="ID_1583179714" MODIFIED="1562968161548" TEXT="statische Typ-Funktion des jeweiligen Widget nutzen">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1562948800171" ID="ID_191911870" MODIFIED="1562968152931" TEXT="static GType &#x9;get_type ()">
<icon BUILTIN="info"/>
</node>
</node>
<node CREATED="1562947895737" ID="ID_1560270353" MODIFIED="1562947901380" TEXT="zur Referenz...">
<node CREATED="1562947912197" ID="ID_613381518" MODIFIED="1562948067345" TEXT="gtk_widget_path_append_type()  -- gtkwidgetpath.c, 410">
<node CREATED="1562947977945" ID="ID_612431307" MODIFIED="1562947981836" TEXT="macht eine GtkCssNodeDeclaration"/>
<node CREATED="1562947983729" ID="ID_608086934" MODIFIED="1562947991697" TEXT="setzt in dieser den gegebenen GType"/>
<node CREATED="1562947992640" ID="ID_1261874584" MODIFIED="1562948009009" TEXT="h&#xe4;ngt sie an das Path-Array an"/>
</node>
<node CREATED="1562948055919" ID="ID_282921775" MODIFIED="1562948098526" TEXT="gtk_widget_path_append_for_widget --  gtkwidget.c, 16413">
<node CREATED="1562948290392" ID="ID_1190594021" MODIFIED="1562948299890" TEXT="macht append_type(GType)"/>
<node CREATED="1562948303278" ID="ID_859838875" MODIFIED="1562948308633" TEXT="set object name">
<node CREATED="1562948491524" ID="ID_405796973" MODIFIED="1562948504665" TEXT="&#xfc;berschreibt den Typ beim CSS-Match"/>
</node>
<node CREATED="1562948312341" ID="ID_707638809" MODIFIED="1562948314536" TEXT="set name"/>
<node CREATED="1562948324645" ID="ID_1760607712" MODIFIED="1562948327590" TEXT="set state"/>
<node CREATED="1562948334875" ID="ID_1415018307" MODIFIED="1562948338037" TEXT="add classes"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1562972564394" ID="ID_47205096" MODIFIED="1563033473194" TEXT="scheint zu funktionieren...">
<arrowlink DESTINATION="ID_1632267547" ENDARROW="Default" ENDINCLINATION="502;0;" ID="Arrow_ID_211374997" STARTARROW="None" STARTINCLINATION="255;50;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1562972574838" ID="ID_425700528" MODIFIED="1562972585258" TEXT="bekomme den Pfad: &quot;paned:dir-ltr.horizontal box:dir-ltr.vertical TrackScope.timeline&quot;"/>
<node CREATED="1562972605077" ID="ID_1232397111" MODIFIED="1562972636996" TEXT="das w&#xe4;re das TimelineWidget, dann der BodyCanvas, und die neue virtuelle CSS-Node"/>
</node>
</node>
<node CREATED="1562969880923" ID="ID_1675178851" MODIFIED="1562969892966" TEXT="damit einen Gtk::StyleContext konfigurieren">
<node COLOR="#338800" CREATED="1562969894183" ID="ID_1066073394" MODIFIED="1563033488691" TEXT="StyleContext per Factory erzeugen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      StyleContext::create()
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1562970409637" ID="ID_156221819" MODIFIED="1563033490587" TEXT="ihm den Pfad zuweisen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      &#160;void set_path(const WidgetPath&amp; path);
    </p>
    <p>
      
    </p>
    <p>
      
    </p>
    <p>
      As a&#160;consequence, the style will be regenerated to match&#160;the new given path.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1562878898257" ID="ID_79779793" MODIFIED="1564954691576" TEXT="Implementierungs-Themen">
<icon BUILTIN="button_ok"/>
<node CREATED="1562878930347" ID="ID_886529991" MODIFIED="1562878932485" TEXT="Fragen">
<node CREATED="1562878933594" ID="ID_309429528" MODIFIED="1562878946223" TEXT="wer definiert sinnvollerweise die Layout-Pfade?"/>
<node CREATED="1562878948640" ID="ID_1131723159" MODIFIED="1562878968203" TEXT="wer erstellt den zugeh&#xf6;rigen StyleContext, und wann?"/>
<node CREATED="1562878977278" ID="ID_115944776" MODIFIED="1562878981971" TEXT="was genau wird &#xfc;bergeben"/>
</node>
<node COLOR="#435e98" CREATED="1562878987389" FOLDED="true" ID="ID_1874620900" MODIFIED="1563033512000" TEXT="Idee: das Advice-System nutzen">
<icon BUILTIN="idea"/>
<node CREATED="1562879000849" ID="ID_1256390103" MODIFIED="1562879051816" TEXT="sieht nach einem perfekten Anwendungsfall aus">
<node CREATED="1562879123963" ID="ID_1855893476" MODIFIED="1562879144620" TEXT="&quot;irgendjemand&quot; fragt nach einem symbolisch identifizierten StyleContext"/>
<node CREATED="1562879145808" ID="ID_976028350" MODIFIED="1562879168101" TEXT="&quot;irgendjemand&quot; wei&#xdf; tats&#xe4;chlich &#xfc;ber diesen Kontext bescheid"/>
</node>
<node CREATED="1562879052788" ID="ID_274365723" MODIFIED="1562879060487" TEXT="Einschr&#xe4;nkungen / Problem">
<node CREATED="1562879061774" ID="ID_1583694008" MODIFIED="1562879069166" TEXT="Advice hat value semantics"/>
<node CREATED="1562879070975" ID="ID_1883840095" MODIFIED="1562879077355" TEXT="Advice &#xfc;berlebt den Advisor">
<node CREATED="1562879081192" ID="ID_1551119036" MODIFIED="1562879088424" TEXT="GUI shutdown!">
<icon BUILTIN="clanbomber"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1562938871344" ID="ID_730423218" MODIFIED="1562938909266" TEXT="Nutzen &#xfc;berwiegt">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node CREATED="1562938894799" ID="ID_1935049291" MODIFIED="1562938907617" TEXT="die Einschr&#xe4;nkungen stellen kein wirkliches Problem da">
<node CREATED="1562939007056" ID="ID_1320839503" MODIFIED="1562939011755" TEXT="das UI l&#xe4;uft synchron"/>
<node CREATED="1562939012631" ID="ID_1894196506" MODIFIED="1562939017443" TEXT="alle Nutzer sind auch im UI"/>
<node CREATED="1562939018494" ID="ID_490682688" MODIFIED="1562939038240" TEXT="der Advice wird initial im UI-Start festgelegt"/>
<node CREATED="1562939040420" ID="ID_1741857652" MODIFIED="1562939051541" TEXT="wir speichern ohnehin einen Glib::ref_ptr"/>
</node>
<node CREATED="1562938911245" ID="ID_634438250" MODIFIED="1562938945340" TEXT="Alternative w&#xe4;re, den UiStyle manager als Service zu verdrahten"/>
<node CREATED="1562938951189" ID="ID_674477866" MODIFIED="1562938984055" TEXT="hier geht es so eindeutig um &quot;bessere&quot; globale Variable..."/>
<node CREATED="1562938985427" ID="ID_1430350400" MODIFIED="1562939000802" TEXT="und das Advice-System bietet hierf&#xfc;r die ad&#xe4;quate Infrastruktur"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1562972719033" FOLDED="true" ID="ID_1528071219" MODIFIED="1563143772159" TEXT="kl&#xe4;ren: ist der Style-Pfad sinnvoll / korrekt?">
<linktarget COLOR="#46558a" DESTINATION="ID_1528071219" ENDARROW="Default" ENDINCLINATION="-297;0;" ID="Arrow_ID_1602346272" SOURCE="ID_678877446" STARTARROW="None" STARTINCLINATION="646;20;"/>
<icon BUILTIN="help"/>
<node COLOR="#435e98" CREATED="1562972764593" ID="ID_315266947" MODIFIED="1563033166705" TEXT="warum beginnt der Pfad mit dem Timeline-Widget?">
<node CREATED="1562972783861" ID="ID_284818197" MODIFIED="1562972793575" TEXT="ist das nicht korrekt veranktert?"/>
<node CREATED="1562972794679" ID="ID_522042066" MODIFIED="1562972802573" TEXT="liegt das an der lib GDL?"/>
<node CREATED="1562972821550" ID="ID_440374994" MODIFIED="1563033154868" TEXT="oder liegt das am Zeitpunkt des Aufrufs?">
<icon BUILTIN="forward"/>
</node>
<node COLOR="#338800" CREATED="1563033192867" ID="ID_243229354" MODIFIED="1563033251713" TEXT="besser erst dann aufrufen, wenn das TimelineWidget schon eingeh&#xe4;ngt ist">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...d.h. dann aus dem InteractionDirector heraus
    </p>
    <p>
      -- <i>ja dann </i>kann man auch gleich direkt an den UiManager delegieren!
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1563033292565" ID="ID_1632267547" MODIFIED="1563033473194" TEXT="aktuell ist der Pfad schon sinnvoll (aber noch nicht ideal)">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      window:backdrop:dir-ltr.background box:backdrop:dir-ltr.vertical box:backdrop:dir-ltr[2/3].horizontal widget:backdrop:dir-ltr[2/2] widget:backdrop:dir-ltr paned:backdrop:dir-ltr.vertical widget:backdrop:dir-ltr box:backdrop:dir-ltr.vertical notebook:backdrop:dir-ltr[1/1].frame paned:backdrop:dir-ltr.horizontal box:backdrop:dir-ltr.vertical fork.timeline
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1632267547" ENDARROW="Default" ENDINCLINATION="502;0;" ID="Arrow_ID_211374997" SOURCE="ID_47205096" STARTARROW="None" STARTINCLINATION="255;50;"/>
<node COLOR="#435e98" CREATED="1563035526845" ID="ID_1747578312" MODIFIED="1563037376560" TEXT="warum haben die alle die Pseudo-Klasse :backdrop?">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      &quot;Widget is in a background toplevel window&quot;
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#8aafdb" DESTINATION="ID_422408673" ENDARROW="Default" ENDINCLINATION="-430;209;" ID="Arrow_ID_384398411" STARTARROW="None" STARTINCLINATION="-1700;-117;"/>
<node CREATED="1563035800955" ID="ID_1644301957" MODIFIED="1563035821169" TEXT="vmt. wegen dem Zeitpunkt, an dem der Pfad konstruiert wird"/>
<node CREATED="1563035791620" ID="ID_1471340967" MODIFIED="1563035834509" TEXT="unsch&#xf6;n, aber nicht relevant">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      nur der letzte Node wird gegen pseudo-Klassen gematcht
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#338800" CREATED="1563037328957" ID="ID_1150753033" MODIFIED="1563039434820" TEXT="man kann es aber (zur&#xfc;ck)setzen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      &#160;&#160;&#160;&#160;for (uint i=0; i&lt;pos; ++i)
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;gtk_widget_path_iter_set_state(path.gobj(), i, GTK_STATE_FLAG_NORMAL);
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1563043712231" ID="ID_680778611" MODIFIED="1563043724620" TEXT="&#xfc;berarbeitete Version">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      window.background box.vertical box[2/3].horizontal widget[2/2] widget paned.vertical widget box.vertical notebook[1/1].frame paned.horizontal.timeline-page box.vertical.timeline.timeline-body fork.timeline
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
</node>
<node COLOR="#338800" CREATED="1562972742894" ID="ID_340313615" MODIFIED="1563043738908" TEXT="man sollte die custom-widgets explizit benennen">
<arrowlink COLOR="#3f4a94" DESTINATION="ID_50010456" ENDARROW="Default" ENDINCLINATION="-1046;66;" ID="Arrow_ID_1862548348" STARTARROW="None" STARTINCLINATION="-1895;0;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1563043742703" ID="ID_1008105312" MODIFIED="1563043747776" TEXT="soweit es &#xfc;berhaupt ging"/>
<node CREATED="1563043748625" ID="ID_1963576119" MODIFIED="1563043767189" TEXT="C++ Custom-Widgets k&#xf6;nnen nicht ihren CSS-Node-Namen &#xe4;ndern">
<icon BUILTIN="smily_bad"/>
</node>
<node CREATED="1665955930245" ID="ID_886604417" MODIFIED="1665956909622" TEXT="zumindest Glib::ObjectBase-ctor kann man setzen...">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      damit kann man zwar einen Klassennamen f&#252;r ein Custom-Widget setzen, also z.B.&#160;&#160;'gtkmm__CustomObject_xyz' (wobei man xyz an den ctor &#252;bergeben hat). Aber das hat keinen Einflu&#223; auf den Tag-Namen, wie er f&#252;r den CSS-Selector relevant ist
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_cancel"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1563117424492" ID="ID_356525175" MODIFIED="1564954670831" TEXT="Anwendung">
<icon BUILTIN="button_ok"/>
<node CREATED="1563117450249" ID="ID_36783315" MODIFIED="1563117529819">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      spezielle Regel gesetzt auf: <b>.timeline-page &gt; .timeline-body fork.timeline</b>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
<node COLOR="#338800" CREATED="1563117430347" ID="ID_374547857" MODIFIED="1563117529819" TEXT="bekomme die Hintergrundfarbe aus dem CSS">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1563117439402" ID="ID_368389111" MODIFIED="1563117529819" TEXT="bekomme den Margin">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1563117502706" ID="ID_935663855" MODIFIED="1563117529819" TEXT="funzt">
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node COLOR="#338800" CREATED="1564954672366" ID="ID_1355634851" MODIFIED="1564954686984" TEXT="Steuern von Variationen aus dem Code durch zus&#xe4;tzliche Klassen">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1562237138185" ID="ID_677602530" MODIFIED="1678463636297" TEXT="Fazit">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="forward"/>
<node CREATED="1564954888128" ID="ID_1198563437" MODIFIED="1564954899795" TEXT="praktisch alles Styling selber kann in das CSS verlagert werden"/>
<node CREATED="1564954902727" ID="ID_1378854579" MODIFIED="1564954915545" TEXT="es bedarf aber einer erg&#xe4;nzenden Konvention">
<node CREATED="1564954916804" ID="ID_1454227915" MODIFIED="1564954923583" TEXT="was die einzelnen Nodes dort bedeuten"/>
<node CREATED="1564954924429" ID="ID_240337663" MODIFIED="1564954936710" TEXT="welche speziellen Klassen herangezogen werden"/>
</node>
<node CREATED="1564954940681" ID="ID_974800071" MODIFIED="1564954969233" TEXT="ggfs erg&#xe4;ntzt um einige custom-Properties im Stylesheet"/>
</node>
</node>
<node CREATED="1563019888259" HGAP="51" ID="ID_678877446" MODIFIED="1563143772159" TEXT="systematischen CSS-Pfad bereitstellen" VSHIFT="12">
<arrowlink COLOR="#46558a" DESTINATION="ID_1528071219" ENDARROW="Default" ENDINCLINATION="-297;0;" ID="Arrow_ID_1602346272" STARTARROW="None" STARTINCLINATION="646;20;"/>
<linktarget COLOR="#4b31cd" DESTINATION="ID_678877446" ENDARROW="Default" ENDINCLINATION="-711;38;" ID="Arrow_ID_643305825" SOURCE="ID_331912016" STARTARROW="Default" STARTINCLINATION="-237;18;"/>
</node>
</node>
<node COLOR="#338800" CREATED="1554516547904" FOLDED="true" ID="ID_229346999" MODIFIED="1679078281966" TEXT="Implementierung">
<icon BUILTIN="button_ok"/>
<icon BUILTIN="forward"/>
<node CREATED="1554516552951" ID="ID_600745992" MODIFIED="1557498707230" TEXT="Festlegungen">
<node CREATED="1554516555943" ID="ID_1554446719" MODIFIED="1557498707230" TEXT="Argument = vertikal in Pixeln"/>
<node CREATED="1554516578588" ID="ID_520338948" MODIFIED="1576282358050" TEXT="Spannen inklusive Dekoration">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      warum?
    </p>
    <p>
      weil sonst der TrackBody um die Dekoration wissen m&#252;&#223;te,
    </p>
    <p>
      wenn er mit der HeaderPane den ben&#246;tigten Platz aushandelt
    </p>
  </body>
</html></richcontent>
<node CREATED="1554516626163" ID="ID_1427792739" MODIFIED="1557498707230" TEXT="d.h. der Zeichencode mu&#xdf; seine Dekoration innen einf&#xfc;gen"/>
<node CREATED="1554516850759" ID="ID_361309913" MODIFIED="1557498707230" TEXT="content mu&#xdf; mit ausreichend Padding platziert werden"/>
</node>
</node>
<node COLOR="#338800" CREATED="1554516928332" ID="ID_874621550" MODIFIED="1557498707230" TEXT="Verben definieren">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1554571992025" FOLDED="true" ID="ID_1074099376" MODIFIED="1566517833423" TEXT="Anwendung der Verben">
<icon BUILTIN="button_ok"/>
<node CREATED="1566517815129" ID="ID_914599141" MODIFIED="1566517824939" TEXT="Funktionsaufruf via VTable"/>
<node CREATED="1566517825863" ID="ID_1111586723" MODIFIED="1566517831729" TEXT="Argumente aus embedded Tuple"/>
</node>
<node COLOR="#338800" CREATED="1554516938851" ID="ID_1733864099" MODIFIED="1557498707230" TEXT="Verb-Sequenz speichern">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1554516951713" FOLDED="true" ID="ID_318462518" MODIFIED="1679078184057" TEXT="Verben (rekursiv) generieren">
<icon BUILTIN="button_ok"/>
<node CREATED="1554516977204" ID="ID_305770947" MODIFIED="1557498707230" TEXT="Ruler"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1561150468059" ID="ID_790305134" MODIFIED="1561151468663" TEXT="fixed Overview Ruler steuern">
<arrowlink COLOR="#ce7c94" DESTINATION="ID_1443277448" ENDARROW="Default" ENDINCLINATION="509;0;" ID="Arrow_ID_1860575220" STARTARROW="None" STARTINCLINATION="296;0;"/>
<icon BUILTIN="bell"/>
</node>
<node CREATED="1554516979454" ID="ID_508239889" MODIFIED="1557498707230" TEXT="Gaps handhaben"/>
<node CREATED="1554516984485" ID="ID_351302473" MODIFIED="1557498707230" TEXT="Content">
<icon BUILTIN="hourglass"/>
<node COLOR="#338800" CREATED="1554990830581" ID="ID_1043247821" MODIFIED="1557498707230" TEXT="vorl&#xe4;ufig Konstante addiert">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1554990844745" ID="ID_1673637596" MODIFIED="1557498707230" TEXT="brauche hier Abstimmung mit Layout">
<linktarget COLOR="#833462" DESTINATION="ID_1673637596" ENDARROW="Default" ENDINCLINATION="363;27;" ID="Arrow_ID_1860808311" SOURCE="ID_857274090" STARTARROW="None" STARTINCLINATION="743;0;"/>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node COLOR="#338800" CREATED="1554990786369" ID="ID_97624142" MODIFIED="1557498707230" TEXT="sub-Tracks">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1554990802429" ID="ID_785342074" MODIFIED="1557498707230" TEXT="sub-Track-Slopes zusammensetzen">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1554517013770" FOLDED="true" ID="ID_1565362810" MODIFIED="1557498707230" TEXT="Verb-Sequenz konsolidieren">
<icon BUILTIN="button_ok"/>
<node CREATED="1566517520897" ID="ID_1585833997" MODIFIED="1566517533715" TEXT="nur beim abschlie&#xdf;enden Slope"/>
<node CREATED="1566517544022" ID="ID_1083102048" MODIFIED="1576282358049" TEXT="f&#xfc;gt dem jeweils letzten hinzu">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...anstatt f&#252;r jeden schlie&#223;enden nested scope noch ein weiteres Verb hinzuzuf&#252;gen.
    </p>
    <p>
      Damit werden effektiv die &quot;schlie&#223;enden Klammern&quot; in eine einzige zusammengefa&#223;t
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#338800" CREATED="1554517023983" ID="ID_582840262" MODIFIED="1679078175801" TEXT="Verb-Sequenz interpretieren">
<icon BUILTIN="button_ok"/>
<node CREATED="1554517097141" ID="ID_1017084418" MODIFIED="1563118296821" TEXT="&#xdc;bersichts-Ruler handhaben">
<linktarget COLOR="#44437f" DESTINATION="ID_1017084418" ENDARROW="Default" ENDINCLINATION="1682;-201;" ID="Arrow_ID_187242024" SOURCE="ID_1267787629" STARTARROW="None" STARTINCLINATION="1913;158;"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1563117568795" ID="ID_1179051544" MODIFIED="1563117587278" TEXT="Unterscheidung realisieren">
<linktarget COLOR="#ac6889" DESTINATION="ID_1179051544" ENDARROW="Default" ENDINCLINATION="156;56;" ID="Arrow_ID_1100428264" SOURCE="ID_857274090" STARTARROW="None" STARTINCLINATION="592;-47;"/>
<icon BUILTIN="pencil"/>
<node COLOR="#435e98" CREATED="1563117596397" ID="ID_925319859" MODIFIED="1563141882354" TEXT="pinned-elements...">
<node COLOR="#338800" CREATED="1563117655125" FOLDED="true" ID="ID_764471994" MODIFIED="1563141879178" TEXT="in das Profil speichern">
<icon BUILTIN="button_ok"/>
<node CREATED="1563117603629" ID="ID_760190185" MODIFIED="1563141837891" TEXT="war im prelude()-Verb">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="info"/>
<node CREATED="1563117613147" ID="ID_1413963999" MODIFIED="1563141844997" TEXT="keine Gute Idee">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#435e98" CREATED="1563117630103" ID="ID_251975498" MODIFIED="1563141856315" TEXT="sollte in ein Objekt-Feld im Profil"/>
</node>
<node CREATED="1563118014245" ID="ID_336436751" MODIFIED="1563118086917" TEXT="ja...nein...ja...??">
<icon BUILTIN="smiley-angry"/>
</node>
<node CREATED="1563118023721" ID="ID_189142395" MODIFIED="1563141663430" TEXT="hatte da vor 1 Monat schon mal dar&#xfc;ber nachgedacht">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      und seinerzeit beschlossen, es vorerst im prelude() zu belassen...
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#304ed9" DESTINATION="ID_4285270" ENDARROW="None" ENDINCLINATION="751;409;" ID="Arrow_ID_1197384474" STARTARROW="Default" STARTINCLINATION="603;0;"/>
<icon BUILTIN="stop-sign"/>
</node>
<node COLOR="#435e98" CREATED="1563118092858" ID="ID_1331508927" MODIFIED="1563141685957" TEXT="jetzt doch ein separates, Feld -- ist doch sauberer">
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#338800" CREATED="1563117670147" ID="ID_1912884721" MODIFIED="1563141879178" TEXT="Filter realisieren">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1563117686001" ID="ID_698759785" MODIFIED="1563141879178" TEXT="prefix-Filter implementiert">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1563117696328" ID="ID_1599825097" MODIFIED="1576282358048" TEXT="Konzeptioneller Fehler beim Z&#xe4;hlen gefixt">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      nicht nur die Ruler, auch das Prelude selber ist ein solches gePinntes Element (selbst wenn es leer ist)
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#25e58e" DESTINATION="ID_337327442" ENDARROW="Default" ENDINCLINATION="523;0;" ID="Arrow_ID_376180455" STARTARROW="Default" STARTINCLINATION="1063;0;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1563143002107" ID="ID_1063302647" MODIFIED="1566406652162" TEXT="verschiedene Ruler-Arten">
<arrowlink COLOR="#622e7d" DESTINATION="ID_1177786099" ENDARROW="Default" ENDINCLINATION="556;0;" ID="Arrow_ID_1339566753" STARTARROW="Default" STARTINCLINATION="556;0;"/>
<icon BUILTIN="hourglass"/>
</node>
</node>
<node COLOR="#338800" CREATED="1563143025272" FOLDED="true" ID="ID_31825370" MODIFIED="1567112213024" TEXT="Anzeige-H&#xf6;he steuern">
<linktarget COLOR="#a37084" DESTINATION="ID_31825370" ENDARROW="Default" ENDINCLINATION="145;324;" ID="Arrow_ID_1599930326" SOURCE="ID_261041772" STARTARROW="Default" STARTINCLINATION="-943;-105;"/>
<linktarget COLOR="#564b7e" DESTINATION="ID_31825370" ENDARROW="Default" ENDINCLINATION="178;986;" ID="Arrow_ID_1663311989" SOURCE="ID_1608124774" STARTARROW="None" STARTINCLINATION="-248;-11;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1563143033085" ID="ID_149529437" MODIFIED="1567112222516" TEXT="woher kommt die Info?">
<icon BUILTIN="help"/>
<node CREATED="1563144390094" ID="ID_1352488414" MODIFIED="1563144414266" TEXT="Quelle-1: zusammen mit dem Track-Head &quot;ausgehandelt&quot;"/>
<node CREATED="1563144448477" ID="ID_545543746" MODIFIED="1563144464040" TEXT="Quelle-2: man kann die TrackBody-Struktur (rekursiv) fragen"/>
<node CREATED="1563144415950" ID="ID_264748187" MODIFIED="1563144447096" TEXT="Quelle-3: wenn der Zeichen-Code fertig ist, wei&#xdf; man was rauskommt">
<node CREATED="1563144486739" ID="ID_933628775" MODIFIED="1563144505714" TEXT="die line_ wird hochgez&#xe4;hlt"/>
<node CREATED="1563144507398" ID="ID_231636632" MODIFIED="1563144515788" TEXT="der Renderer k&#xf6;nnte die zur&#xfc;ckgeben">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1567112237035" ID="ID_1427979726" MODIFIED="1567112282407" TEXT="Quelle-4: beim Aufstellen des TrackProfile">
<arrowlink COLOR="#19b37d" DESTINATION="ID_1564197871" ENDARROW="Default" ENDINCLINATION="-60;-64;" ID="Arrow_ID_1251305334" STARTARROW="None" STARTINCLINATION="-169;0;"/>
<icon BUILTIN="forward"/>
</node>
</node>
<node CREATED="1563144536346" ID="ID_681708047" MODIFIED="1563144548269" TEXT="wo mu&#xdf; sie gesetzt werden?">
<node CREATED="1563144549497" ID="ID_1704331189" MODIFIED="1563144560069" TEXT="jeweils in jedem der beiden Canvas-Widgets">
<node CREATED="1563144627773" ID="ID_215614628" MODIFIED="1563144635638" TEXT="siehe gtk-canvas-experiment.cpp"/>
<node CREATED="1563144650777" ID="ID_1603192919" MODIFIED="1563144652311" TEXT="Canvas::determineExtension()"/>
<node CREATED="1563144669172" ID="ID_1489838072" MODIFIED="1563144675523" TEXT="Gtk::Layout::set_size(w,h)"/>
</node>
<node COLOR="#435e98" CREATED="1563144591112" ID="ID_1777300285" MODIFIED="1567112136542" TEXT="mu&#xdf; das vor dem Zeichnen passieren?">
<node CREATED="1563144864662" ID="ID_1195404065" MODIFIED="1576282358048" TEXT="vermutlich nicht">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      meine Einsch&#228;tzung, basiert auf dem gtk-canvas-experiment.cpp
    </p>
    <ul>
      <li>
        zeichnen kann man &quot;irgendwie&quot; auf dem Canvas.
      </li>
      <li>
        au&#223;erdem hat das Gtk::Layout ein hadjustment() / vadjustment()
      </li>
      <li>
        diese k&#246;nnen (optional) an eine Scrolled-Pane angekoppelt sein
      </li>
      <li>
        die tats&#228;chliche size-Allocation ist ein davon unabh&#228;ngiges Thema
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node CREATED="1563145010348" ID="ID_1404407551" MODIFIED="1576282358047">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <i>rein gef&#252;hlsm&#228;&#223;ig</i>&#160;w&#228;re aber vorher wohl geschickter
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      denn was passiert, wenn sich durch das Setzen einer neuen Gr&#246;&#223;e der sichtbare Bereich &#228;ndert? L&#246;st das dann nicht erneut einen draw()-Aufruf aus??
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1566401468573" ID="ID_636590903" MODIFIED="1566401510213" TEXT="Beschlu&#xdf;: direkt nach dem Display-Evaluation-Pass">
<icon BUILTIN="yes"/>
<node CREATED="1566401506391" ID="ID_116486175" MODIFIED="1566401506391" TEXT="BodyCanvasWidget::maybeRebuildLayout()"/>
<node COLOR="#338800" CREATED="1566401515511" ID="ID_1551253495" MODIFIED="1566406332332" TEXT="neue Funktion hierf&#xfc;r">
<icon BUILTIN="button_ok"/>
<node CREATED="1566517643320" ID="ID_30150585" MODIFIED="1566517660194" TEXT="fragt den TrackBody"/>
<node CREATED="1566517661707" ID="ID_1225415802" MODIFIED="1576282358047" TEXT="dieser summiert im Moment einfach nochmal">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ist ineffizient, aber der Code ist so klarer
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1566517682169" ID="ID_1110086285" MODIFIED="1566517691543" TEXT="...so oft wird das nicht gebraucht">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1567112155198" ID="ID_1564197871" MODIFIED="1567112274356" TEXT="L&#xf6;sung: bei der Track-Profil-berechnung auch die H&#xf6;hen mit berechnen">
<linktarget COLOR="#19b37d" DESTINATION="ID_1564197871" ENDARROW="Default" ENDINCLINATION="-60;-64;" ID="Arrow_ID_1251305334" SOURCE="ID_1427979726" STARTARROW="None" STARTINCLINATION="-169;0;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1567112179157" ID="ID_1902444378" MODIFIED="1567112191717" TEXT="weil man dann automatisch die korrekte Rechen-Struktur bekommt"/>
<node CREATED="1567112192681" ID="ID_1279312303" MODIFIED="1567112207325" TEXT="besonders kniffelig waren die variablen kombinierten up-Slopes">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
</node>
</node>
</node>
<node CREATED="1554517044045" ID="ID_520113686" MODIFIED="1557498707230" TEXT="Farben bereitstellen">
<node COLOR="#5b280f" CREATED="1561412290895" FOLDED="true" ID="ID_433241551" MODIFIED="1679077944552" TEXT="Frage/Problem: Farbformat">
<icon BUILTIN="button_cancel"/>
<node CREATED="1561412301303" ID="ID_813337683" MODIFIED="1561412307145" TEXT="wie werden Farben definiert?"/>
<node CREATED="1561412312496" ID="ID_1285620209" MODIFIED="1561412338113" TEXT="Anscheinend will Cairo Werte (red, green, blue)"/>
<node CREATED="1561737420041" ID="ID_620483728" MODIFIED="1562843377740" TEXT="Recherche...">
<node CREATED="1561413519712" ID="ID_1263142656" LINK="https://stackoverflow.com/a/29000648" MODIFIED="1564505543120" TEXT="Hinweis auf Stackoverflow">
<linktarget COLOR="#4587d6" DESTINATION="ID_1263142656" ENDARROW="Default" ENDINCLINATION="-80;5;" ID="Arrow_ID_1541352493" SOURCE="ID_1417021403" STARTARROW="None" STARTINCLINATION="-203;0;"/>
<node CREATED="1561734458294" ID="ID_73927449" MODIFIED="1562843967076">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      man sollte den <b>GtkStyleContext</b>&#160;nutzen
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#3d73d3" DESTINATION="ID_161652920" ENDARROW="Default" ENDINCLINATION="-1637;0;" ID="Arrow_ID_990523511" STARTARROW="None" STARTINCLINATION="-2361;0;"/>
<linktarget COLOR="#7c8da1" DESTINATION="ID_73927449" ENDARROW="Default" ENDINCLINATION="207;0;" ID="Arrow_ID_679820364" SOURCE="ID_873415681" STARTARROW="None" STARTINCLINATION="-325;70;"/>
</node>
<node CREATED="1561734477840" ID="ID_608213389" MODIFIED="1562843750948" TEXT="man kann anscheinend Gtk-Farben direkt setzen">
<arrowlink COLOR="#7890ac" DESTINATION="ID_1404441515" ENDARROW="Default" ENDINCLINATION="1;-116;" ID="Arrow_ID_1920767689" STARTARROW="None" STARTINCLINATION="256;0;"/>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1561737452937" ID="ID_699098078" MODIFIED="1576282358046">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      speziell die Antwort von <b>ebassi</b>&#160;beachten...
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Core-Entwickler von GTK
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
<node CREATED="1561740889255" ID="ID_388774572" LINK="https://developer.gnome.org/gtk3/stable/GtkStyleContext.html#gtk-render-background" MODIFIED="1561740901097" TEXT="gtk-render-background()"/>
</node>
</node>
<node CREATED="1561412911257" FOLDED="true" ID="ID_1322665426" MODIFIED="1619107323206" TEXT="siehe Cairo-Konzepte">
<arrowlink COLOR="#5579dd" DESTINATION="ID_1173541827" ENDARROW="Default" ENDINCLINATION="-2465;188;" ID="Arrow_ID_1216025940" STARTARROW="None" STARTINCLINATION="-2437;323;"/>
<node CREATED="1561412945044" FOLDED="true" ID="ID_475888521" MODIFIED="1561827469138" TEXT="Source">
<node CREATED="1561412970112" ID="ID_1991984042" MODIFIED="1561412984826" TEXT="Colour"/>
<node CREATED="1561412985423" ID="ID_108728469" MODIFIED="1561412991540" TEXT="Gradient"/>
<node CREATED="1561412992114" ID="ID_1558296708" MODIFIED="1561412994561" TEXT="Image"/>
</node>
<node CREATED="1561412948428" FOLDED="true" ID="ID_1910080580" MODIFIED="1561827469138" TEXT="Mask">
<node CREATED="1561412996428" ID="ID_414991349" MODIFIED="1561413006567" TEXT="stroke, fill, text, set_mask()"/>
<node CREATED="1561413034863" ID="ID_580910330" MODIFIED="1561413051569" TEXT="die Source wird durch die Mask durch &quot;gestempelt&quot;"/>
</node>
<node CREATED="1561412961226" FOLDED="true" ID="ID_1284012969" MODIFIED="1561827469138" TEXT="Destination">
<node CREATED="1561413010338" ID="ID_1707967544" MODIFIED="1561413014990" TEXT="Ausgabeformat"/>
<node CREATED="1561413017945" ID="ID_1938576222" MODIFIED="1561413025642" TEXT="auf dieses wird &quot;gestempelt&quot;"/>
</node>
</node>
<node CREATED="1561414516226" ID="ID_824931972" LINK="https://stackoverflow.com/a/28004070" MODIFIED="1561414534852" TEXT="Hexagonale Cusotm_Buttons zeichen (Python-Beispiel)"/>
</node>
<node CREATED="1583677804927" ID="ID_1480149664" MODIFIED="1583677861984" TEXT="k&#xf6;nnte letztlich irrelevant sein...">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="idea"/>
<node CREATED="1583677816617" ID="ID_995138607" MODIFIED="1583677832057" TEXT="wenn wir es schaffen, komplett via CSS zu steuern"/>
<node CREATED="1583677833436" ID="ID_270618428" MODIFIED="1583677990008" TEXT="und das Abgreifen von Style-Infos sieht vielversprechend aus (2/2020)">
<arrowlink COLOR="#3078ce" DESTINATION="ID_593477946" ENDARROW="Default" ENDINCLINATION="-684;-128;" ID="Arrow_ID_845284570" STARTARROW="None" STARTINCLINATION="-389;16;"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1679077911072" ID="ID_1736340765" MODIFIED="1679077929867" TEXT="2023: sieht danach aus da&#xdf; dem so ist und wir alles per CSS machen k&#xf6;nnen">
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1561733542012" FOLDED="true" ID="ID_1875127303" MODIFIED="1562843685232" TEXT="ist unsere GTK-Platform veraltet?">
<icon BUILTIN="button_cancel"/>
<node COLOR="#435e98" CREATED="1561733673915" ID="ID_1417021403" MODIFIED="1562843774314" TEXT="im Beispiel auf SO werden weitere Farb-Funktionen genutzt">
<arrowlink COLOR="#4587d6" DESTINATION="ID_1263142656" ENDARROW="Default" ENDINCLINATION="-80;5;" ID="Arrow_ID_1541352493" STARTARROW="None" STARTINCLINATION="-203;0;"/>
<icon BUILTIN="idea"/>
<node CREATED="1561733976451" ID="ID_1475316639" MODIFIED="1561733976451" TEXT="Gdk::Cairo::set_source_rgba(cr, cxStyle-&gt;get_background_color(Gtk::STATE_FLAG_SELECTED));"/>
<node CREATED="1561733989084" ID="ID_1024689549" MODIFIED="1561734031800" TEXT="dagegen in Cairomm 1.0 finde ich nur cx-&gt;set_source_rgba(r,g,b,a)"/>
<node COLOR="#435e98" CREATED="1561734414515" ID="ID_1685147022" MODIFIED="1561737091054" TEXT="ist das ein C/C++ - Poblem oder eine veraltete Lib?">
<icon BUILTIN="help"/>
</node>
<node COLOR="#435e98" CREATED="1561737065424" ID="ID_840108079" MODIFIED="1562843694504">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Nein. Es ist ein G<b>D</b>K-Wrapper/Adapter
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
<node CREATED="1561737180408" ID="ID_1186274034" MODIFIED="1561737202377" TEXT="gtkmm3.0-3.22.2/gdk/gdkmm/general.cc"/>
<node CREATED="1561737220687" ID="ID_1404441515" MODIFIED="1562843746132" TEXT="void set_source_color(Cairo::RefPtr&lt;Cairo::Context&gt; const&amp;, Gdk::Color const&amp;)">
<linktarget COLOR="#7890ac" DESTINATION="ID_1404441515" ENDARROW="Default" ENDINCLINATION="1;-116;" ID="Arrow_ID_1920767689" SOURCE="ID_608213389" STARTARROW="None" STARTINCLINATION="256;0;"/>
<linktarget COLOR="#1f8ff9" DESTINATION="ID_1404441515" ENDARROW="Default" ENDINCLINATION="-57;55;" ID="Arrow_ID_401362992" SOURCE="ID_248226991" STARTARROW="None" STARTINCLINATION="421;-12;"/>
</node>
</node>
</node>
<node CREATED="1561733608450" FOLDED="true" ID="ID_1920301340" MODIFIED="1561827482930" TEXT="wir folgen Debian/Stretch">
<arrowlink COLOR="#355ad5" DESTINATION="ID_1295139073" ENDARROW="Default" ENDINCLINATION="-816;0;" ID="Arrow_ID_1376879556" STARTARROW="None" STARTINCLINATION="-753;0;"/>
<icon BUILTIN="yes"/>
<node COLOR="#435e98" CREATED="1561734640481" FOLDED="true" ID="ID_589799153" MODIFIED="1561827469158" TEXT="Cairo/Cairomm">
<icon BUILTIN="info"/>
<node CREATED="1561734632551" ID="ID_1292331476" MODIFIED="1561734639059" TEXT="&quot;cairomm wraps all relevant parts of the cairo API and is API/ABI-stable&quot;"/>
<node CREATED="1561734657577" ID="ID_164314300" MODIFIED="1561734661824" TEXT="&quot;cairomm is used by gtkmm since 2.10&quot;"/>
</node>
</node>
<node CREATED="1561737105602" ID="ID_501529157" MODIFIED="1561737117373" TEXT="die Versions-Unterschiede sind minimal"/>
<node CREATED="1561737119367" ID="ID_1825114442" MODIFIED="1561737128323" TEXT="die Versionen sind ad&#xe4;quat aufeinander abgestimmt"/>
<node COLOR="#338800" CREATED="1561737129343" ID="ID_248226991" MODIFIED="1561737337666" TEXT="...und wir haben die ben&#xf6;tigte Funktion">
<arrowlink COLOR="#1f8ff9" DESTINATION="ID_1404441515" ENDARROW="Default" ENDINCLINATION="-57;55;" ID="Arrow_ID_401362992" STARTARROW="None" STARTINCLINATION="421;-12;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1561737350346" ID="ID_1269415740" MODIFIED="1561737360393" TEXT="alles OK">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node CREATED="1554517048572" ID="ID_389539875" MODIFIED="1561742193735" TEXT="zeichnen">
<node COLOR="#435e98" CREATED="1561742210044" FOLDED="true" HGAP="29" ID="ID_968367319" MODIFIED="1679077895231" TEXT="Konzeptionelles Problem" VSHIFT="-32">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1561742242469" ID="ID_1152083515" MODIFIED="1561742261654" TEXT="&quot;selber zeichnen&quot; vs. CSS / Theme interpretieren"/>
<node CREATED="1561742304133" FOLDED="true" ID="ID_1162348323" MODIFIED="1561827482930" TEXT="Gtk::StyleContext (== bestehender Style) bietet nur wenige Bausteine">
<node CREATED="1561742343334" ID="ID_76647765" MODIFIED="1561742348741" TEXT="den Hintergrund"/>
<node CREATED="1561742349263" ID="ID_1861730113" MODIFIED="1561742351634" TEXT="einen Rahmen"/>
<node CREATED="1561742352103" ID="ID_761263708" MODIFIED="1561742365888" TEXT="Slider, Checkbox,..."/>
</node>
<node CREATED="1561743739850" FOLDED="true" ID="ID_1430099206" MODIFIED="1561827482930" TEXT="ich brauche Zeichen-Primitive einen Level unter dieser Abstraktion">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1561743762966" ID="ID_997992666" MODIFIED="1561743767066" TEXT="Abstraktion: Rahmen"/>
<node CREATED="1561743767638" ID="ID_262382460" MODIFIED="1561743782584" TEXT="ich brauche: Rampe auf, ab, Rille"/>
</node>
<node CREATED="1561743807830" FOLDED="true" ID="ID_1147743931" MODIFIED="1561827482930" TEXT="L&#xf6;sungsans&#xe4;tze">
<node CREATED="1561743816367" FOLDED="true" ID="ID_291609711" MODIFIED="1561827469158" TEXT="bestehende Zeichen-Bausteine auswerten">
<node CREATED="1561743834491" ID="ID_799331387" MODIFIED="1561743841288" TEXT="nur teilweise nutzen"/>
<node CREATED="1561743841780" ID="ID_281114964" MODIFIED="1561743847831" TEXT="zeichnen und Ergebnis nutzen"/>
</node>
<node CREATED="1561743852490" FOLDED="true" ID="ID_1271505058" MODIFIED="1561827469158" TEXT="eigene Zeichen-Bausteine via CSS definieren">
<node CREATED="1561743872956" FOLDED="true" ID="ID_448887346" MODIFIED="1561827469139" TEXT="in GTK+CSS kann man">
<node CREATED="1561743897633" ID="ID_1380771561" MODIFIED="1561743898456" TEXT="Gradienten definieren"/>
<node CREATED="1561743899110" FOLDED="true" ID="ID_1781758898" MODIFIED="1561827465279" TEXT="Farben systematisch konstruieren">
<node CREATED="1561743908806" ID="ID_1841841538" MODIFIED="1561743913542" TEXT="aufhellen, abdunkeln"/>
<node CREATED="1561743914853" ID="ID_1774289925" MODIFIED="1561743917877" TEXT="&#xfc;berlagern"/>
<node CREATED="1561743920577" ID="ID_886231148" MODIFIED="1561743924809" TEXT="mischen"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1561742210044" FOLDED="true" HGAP="29" ID="ID_561705172" MODIFIED="1679077885971" TEXT="Problem: woher stammt der Style?" VSHIFT="-32">
<linktarget COLOR="#8b7ea0" DESTINATION="ID_561705172" ENDARROW="Default" ENDINCLINATION="-2256;70;" ID="Arrow_ID_57895594" SOURCE="ID_1803180287" STARTARROW="None" STARTINCLINATION="465;29;"/>
<icon BUILTIN="messagebox_warning"/>
<node COLOR="#435e98" CREATED="1561898385345" ID="ID_959729268" MODIFIED="1678463415639" TEXT="allgemeines Problem">
<arrowlink COLOR="#80738f" DESTINATION="ID_30064777" ENDARROW="Default" ENDINCLINATION="-6;190;" ID="Arrow_ID_970836248" STARTARROW="None" STARTINCLINATION="-914;34;"/>
<icon BUILTIN="messagebox_warning"/>
<node COLOR="#338800" CREATED="1562238962640" ID="ID_424517976" MODIFIED="1678463379146" TEXT="#1201 Prototype: custom styled timeline profile">
<arrowlink COLOR="#3a84dd" DESTINATION="ID_1949200690" ENDARROW="Default" ENDINCLINATION="-483;0;" ID="Arrow_ID_16837481" STARTARROW="None" STARTINCLINATION="615;0;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1678576309372" ID="ID_1568473205" MODIFIED="1679011586488" TEXT="konkrete CSS-Styles dokumentieren">
<arrowlink COLOR="#5f7783" DESTINATION="ID_1232986902" ENDARROW="Default" ENDINCLINATION="2218;-176;" ID="Arrow_ID_1708948555" STARTARROW="None" STARTINCLINATION="4285;319;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1678925372624" ID="ID_348250165" MODIFIED="1678925428123">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      TiddlyWiki + <font face="Monospaced" color="#a63077">doc/technical/stage/style/Timeline.txt</font>
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#435e98" CREATED="1678462308282" ID="ID_1157002655" MODIFIED="1679011586549" TEXT="L&#xf6;sung: virtueller widget-Path &#x201e;fischt&#x201c; im gegebenen CSS-Kontext">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Wir erzeugen k&#252;nstlich einen widget-Path und verankern ihn sinngem&#228;&#223; an der logisch richtigen Stelle (wobei aber die im Pfad aufgef&#252;hrten Widgets gar nicht existieren, sondern logische Platzhalter sind). &#220;ber diesen Widget-Path greifen wir in einen CSS-Scope hinein, der typischerweise alle seine Styles von umschlie&#223;enden Scopes erbt; indirekt ist damit aber auch die M&#246;glichkeit geschaffen, diesen speziellen Scope gezielt mit CSS-Regeln zu addressieren &#8212; wodurch der Designer direkt auf das Erscheinungbild von Lumiera Einflu&#223; nehmen kann
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1561743807830" ID="ID_593477946" MODIFIED="1561898346705" TEXT="L&#xf6;sungsans&#xe4;tze">
<linktarget COLOR="#3078ce" DESTINATION="ID_593477946" ENDARROW="Default" ENDINCLINATION="-684;-128;" ID="Arrow_ID_845284570" SOURCE="ID_270618428" STARTARROW="None" STARTINCLINATION="-389;16;"/>
<node CREATED="1561743816367" ID="ID_169640206" MODIFIED="1562843547638" TEXT="bestehende Zeichen-Bausteine auswerten">
<node CREATED="1561743834491" ID="ID_1092817023" MODIFIED="1561743841288" TEXT="nur teilweise nutzen"/>
<node CREATED="1561743841780" ID="ID_1591551906" MODIFIED="1561743847831" TEXT="zeichnen und Ergebnis nutzen"/>
</node>
<node CREATED="1561743852490" FOLDED="true" ID="ID_46761090" MODIFIED="1562843465779" TEXT="eigene Zeichen-Bausteine via CSS definieren">
<node CREATED="1561743872956" ID="ID_618825350" MODIFIED="1562843458860" TEXT="in GTK+CSS kann man">
<node CREATED="1561743897633" ID="ID_191212429" MODIFIED="1561743898456" TEXT="Gradienten definieren"/>
<node CREATED="1561743899110" ID="ID_1314782414" MODIFIED="1562843462296" TEXT="Farben systematisch konstruieren">
<node CREATED="1561743908806" ID="ID_1349278286" MODIFIED="1561743913542" TEXT="aufhellen, abdunkeln"/>
<node CREATED="1561743914853" ID="ID_1058920738" MODIFIED="1561743917877" TEXT="&#xfc;berlagern"/>
<node CREATED="1561743920577" ID="ID_481915878" MODIFIED="1561743924809" TEXT="mischen"/>
</node>
</node>
</node>
<node CREATED="1563019837771" ID="ID_331912016" MODIFIED="1563021396900" TEXT="generiere und publiziere einen CSS-Pfad">
<arrowlink COLOR="#4b31cd" DESTINATION="ID_678877446" ENDARROW="Default" ENDINCLINATION="-711;38;" ID="Arrow_ID_643305825" STARTARROW="Default" STARTINCLINATION="-237;18;"/>
<arrowlink COLOR="#4b31cd" DESTINATION="ID_1755242650" ENDARROW="Default" ENDINCLINATION="-1211;105;" ID="Arrow_ID_847790641" STARTARROW="Default" STARTINCLINATION="-1782;0;"/>
<node CREATED="1563019856854" ID="ID_1799510436" MODIFIED="1563019861202" TEXT="Gtk::WidgetPath"/>
<node CREATED="1563019863670" ID="ID_1584577599" MODIFIED="1563019868785" TEXT="Gtk::StyleContext">
<node CREATED="1563110305840" ID="ID_1669038361" MODIFIED="1563110358754" TEXT="kann Backround f&#xfc;llen">
<linktarget COLOR="#6295d1" DESTINATION="ID_1669038361" ENDARROW="Default" ENDINCLINATION="-474;0;" ID="Arrow_ID_715907117" SOURCE="ID_1436336037" STARTARROW="None" STARTINCLINATION="52;5;"/>
</node>
<node CREATED="1563110313699" ID="ID_667969256" MODIFIED="1563110318169" TEXT="kann Rahmen zeichnen"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1561742196428" FOLDED="true" ID="ID_1908345164" MODIFIED="1679077873580" TEXT="Fl&#xe4;chen">
<icon BUILTIN="button_ok"/>
<node CREATED="1563110329558" ID="ID_1436336037" MODIFIED="1563110365807" TEXT="definiere diese als Background">
<arrowlink COLOR="#6295d1" DESTINATION="ID_1669038361" ENDARROW="Default" ENDINCLINATION="-474;0;" ID="Arrow_ID_715907117" STARTARROW="None" STARTINCLINATION="52;5;"/>
</node>
<node CREATED="1563112603781" ID="ID_774804464" MODIFIED="1563112609310" TEXT="brauche aber auch Abst&#xe4;nde">
<node CREATED="1563112611511" ID="ID_1116374684" MODIFIED="1563112636155" TEXT="man kann sich Margin/Padding besorgen">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1566518952575" ID="ID_183446100" MODIFIED="1582931361646" TEXT="mu&#xdf; die sinngem&#xe4;&#xdf; mit den vom TrackBody verwalteten Spannen verrechnen">
<arrowlink COLOR="#779be7" DESTINATION="ID_35592741" ENDARROW="Default" ENDINCLINATION="109;-329;" ID="Arrow_ID_66200016" STARTARROW="None" STARTINCLINATION="539;20;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1563636831797" ID="ID_506277754" MODIFIED="1679077855045" TEXT="Rahmen">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1563636836517" FOLDED="true" ID="ID_391875364" MODIFIED="1564932610681" TEXT="Problem: Rahmen werden solid gezeichnet">
<arrowlink COLOR="#2e96d1" DESTINATION="ID_543934966" ENDARROW="Default" ENDINCLINATION="-135;0;" ID="Arrow_ID_1613504887" STARTARROW="None" STARTINCLINATION="44;-40;"/>
<linktarget COLOR="#4daab7" DESTINATION="ID_391875364" ENDARROW="Default" ENDINCLINATION="-88;45;" ID="Arrow_ID_1840813206" SOURCE="ID_362681600" STARTARROW="None" STARTINCLINATION="-335;-6;"/>
<icon BUILTIN="messagebox_warning"/>
<node COLOR="#435e98" CREATED="1564495382717" FOLDED="true" HGAP="86" ID="ID_543934966" MODIFIED="1678407388305" TEXT="weiteres Problem: CSS-Effekte" VSHIFT="-9">
<linktarget COLOR="#2e96d1" DESTINATION="ID_543934966" ENDARROW="Default" ENDINCLINATION="-135;0;" ID="Arrow_ID_1613504887" SOURCE="ID_391875364" STARTARROW="None" STARTINCLINATION="44;-40;"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1564495427327" ID="ID_406875347" MODIFIED="1564495439363" TEXT="die werden von den Designern zunehmend genutzt"/>
<node CREATED="1564495440430" ID="ID_1276162602" MODIFIED="1564495463606" TEXT="..oft mit dem Ziel, einen &quot;3D-Look&quot; zu vermeiden. Einfach nur noch krank"/>
<node CREATED="1564495472129" ID="ID_515864254" MODIFIED="1564495483412" TEXT="speziell box-shadow wird extrem viel verwendet"/>
<node CREATED="1564495485155" ID="ID_1813223564" MODIFIED="1564495495979" TEXT="Problem: der wird auf die Umgebung gezeichnet">
<icon BUILTIN="broken-line"/>
</node>
<node CREATED="1564495497382" ID="ID_1356685969" MODIFIED="1564495509046" TEXT="pa&#xdf;t das mit meinem Zeichen-Konzept zusammen?">
<icon BUILTIN="help"/>
<node CREATED="1564495532593" ID="ID_352639036" MODIFIED="1564495537476" TEXT="gtkrenderbackround.c">
<node CREATED="1564495545861" ID="ID_627648239" MODIFIED="1564495549842" TEXT="gtk_css_style_render_background()">
<node CREATED="1564495616991" ID="ID_1929404948" MODIFIED="1564495626248" TEXT="zeichnet zuerst die outset-shadows"/>
<node CREATED="1564495628068" ID="ID_1140731188" MODIFIED="1564495634422" TEXT="dann den HIntergrund"/>
<node CREATED="1564495635347" ID="ID_155287620" MODIFIED="1564495641294" TEXT="dann die inset-shadows"/>
</node>
</node>
<node CREATED="1564495699205" ID="ID_266196506" MODIFIED="1564495717300" TEXT="Problem: das ist im Widerspruch zu dem abschnittsweisen zeichnen"/>
</node>
<node CREATED="1564932181697" ID="ID_266632545" MODIFIED="1564932191323" TEXT="l&#xe4;&#xdf;t sich aber integrieren">
<node CREATED="1564932194424" ID="ID_1904122891" MODIFIED="1576282358046" TEXT="die N&#xfc;tzlichkeit des box-shadow ist ohnehin beschr&#xe4;nkt">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      falls inset, wird er nur <i>innerhalb </i>der border und &#252;ber den Hintergrund gezeichnet
    </p>
    <ul>
      <li>
        nicht &#252;ber die border selber
      </li>
      <li>
        nicht &#252;ber den Content
      </li>
    </ul>
  </body>
</html></richcontent>
<arrowlink COLOR="#9a85e1" DESTINATION="ID_321264842" ENDARROW="Default" ENDINCLINATION="-618;56;" ID="Arrow_ID_852851809" STARTARROW="None" STARTINCLINATION="-805;0;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1564932357258" ID="ID_273302886" MODIFIED="1564932385170" TEXT="aber immerhin wird er automatisch mitgezeichnet bei render_background()">
<node CREATED="1564932387045" ID="ID_188179971" MODIFIED="1564932396736" TEXT="und zwar auch au&#xdf;erhalb der definierten Box"/>
<node CREATED="1564932397556" ID="ID_380412267" MODIFIED="1576282358045" TEXT="und oberhalb von allem was schon gezeichnet wurde">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      der GTK-Zeichencode achtet sogar explizit darauf, einen CSS-Effekt mit dem korrekten Mischmodus &#252;ber den bereits auf den CairoCanvas gezeichneten Content zu legen
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#435e98" CREATED="1564932484393" ID="ID_1092949064" MODIFIED="1566519094002">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      und zwar f&#252;r bestimmte Elemente (<b>Konvention</b>)
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#02ab84" DESTINATION="ID_840104433" ENDARROW="Default" ENDINCLINATION="1035;-107;" ID="Arrow_ID_77023730" STARTARROW="Default" STARTINCLINATION="106;39;"/>
<linktarget COLOR="#2b75cc" DESTINATION="ID_1092949064" ENDARROW="Default" ENDINCLINATION="286;83;" ID="Arrow_ID_1686979270" SOURCE="ID_57629359" STARTARROW="None" STARTINCLINATION="572;0;"/>
<font NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="yes"/>
<node CREATED="1566401020977" ID="ID_1373829097" MODIFIED="1566401070383" TEXT="siehe Definition im TiddlyWiki (&quot;#GuiTimelineDraw&quot;)"/>
<node CREATED="1566401126813" ID="ID_651523098" MODIFIED="1566401134027" TEXT="Ruler">
<node CREATED="1566401134943" ID="ID_432602619" MODIFIED="1566401141050" TEXT="box-shadow ist nutzbar">
<node CREATED="1566401142268" ID="ID_1379290604" MODIFIED="1576282358045" TEXT="outset nur im Rahmen des Margin">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      weil &#252;ber alles andere dar&#252;bergezeichnet wird
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1566401161862" ID="ID_1835446713" MODIFIED="1566401166385" TEXT="inset voll nutzbar"/>
</node>
<node CREATED="1566401169187" ID="ID_268392618" MODIFIED="1566401182383" TEXT="hier kommt der Background zum Tragen"/>
</node>
<node CREATED="1566401187384" ID="ID_270883580" MODIFIED="1566401194797" TEXT="Track-Content">
<node CREATED="1566401195834" ID="ID_929024694" MODIFIED="1566401218274" TEXT="hier wird der generelle &quot;fork&quot;-Style angewendet"/>
<node CREATED="1566401219318" ID="ID_1029868633" MODIFIED="1566401230601" TEXT="box-shadow nur inset nutzbar"/>
</node>
<node CREATED="1566401236332" ID="ID_457183290" MODIFIED="1566401252542" TEXT="die Borders/Slopes werden nur per Gradient/Shading realisiert"/>
</node>
</node>
</node>
<node CREATED="1563637202035" ID="ID_681324395" MODIFIED="1563637205854" TEXT="Auswege?">
<node CREATED="1563637219445" FOLDED="true" ID="ID_1413699114" MODIFIED="1576282358044" TEXT="Reverse-Engineering">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      den Zeichenvorgang f&#252;r ein normales Frame-Widget analysieren
    </p>
  </body>
</html></richcontent>
<node CREATED="1563736122461" ID="ID_1095800644" MODIFIED="1563736127792" TEXT="Gtk::Frame">
<node CREATED="1563736130164" ID="ID_276564599" MODIFIED="1563736139623" TEXT="erbt von Bin, dieses von Container..."/>
<node CREATED="1563736141579" ID="ID_1238316490" MODIFIED="1563736165824" TEXT="gtk_frame_draw()  (gtkframe.c, 716)">
<node CREATED="1563736411493" ID="ID_959872815" MODIFIED="1563736413201" TEXT="gtk_frame_draw">
<node CREATED="1563736675878" ID="ID_1380030936" MODIFIED="1563736675878" TEXT="gtk_css_gadget_draw">
<node CREATED="1563736680910" ID="ID_1193299161" MODIFIED="1563736686803" TEXT="bekommt einen Cairo-Context"/>
<node CREATED="1563736687680" ID="ID_476120936" MODIFIED="1563736720837" TEXT="setzt zus&#xe4;tzlich eine genau passende size-Allocation vorraus">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Kommentar sagt: it is your responsibility that these two coordinates match
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1563736622722" HGAP="54" ID="ID_1395291863" MODIFIED="1564493283947" TEXT="gtk_css_style_render_border" VSHIFT="20">
<icon BUILTIN="forward"/>
<node CREATED="1563737125953" ID="ID_1641342904" MODIFIED="1563737128853" TEXT="Taddaa!"/>
<node CREATED="1563737130259" ID="ID_64703621" MODIFIED="1563737146677" TEXT="die wird auch von styleContxt-&gt;render_border() aufgerufen"/>
<node CREATED="1563737169230" ID="ID_1548155605" MODIFIED="1563737173151" TEXT="Fallunterscheidung">
<node CREATED="1563737174965" ID="ID_1060512211" MODIFIED="1563737176769" TEXT="if (gtk_border_image_init (&amp;border_image, style))">
<node CREATED="1564493480688" ID="ID_55682569" MODIFIED="1564493486989" TEXT="gtk_border_image_render">
<icon BUILTIN="forward"/>
</node>
</node>
<node CREATED="1563737180869" ID="ID_1595726725" MODIFIED="1563737186103" TEXT="sonst: solid zeichnen"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1563831385422" ID="ID_1366222565" MODIFIED="1563831397212" TEXT="in vivo beobachten">
<icon BUILTIN="yes"/>
<node CREATED="1563831400868" ID="ID_99440407" MODIFIED="1563831412589" TEXT="was liefert das Theme?">
<icon BUILTIN="help"/>
<node CREATED="1563831414186" ID="ID_1993035073" MODIFIED="1563831443895" TEXT="wo?">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      /home/hiv/.local/share/themes/PanRosewoodHIV/gtk-3.0/gtk-contained.css
    </p>
  </body>
</html></richcontent>
<node CREATED="1563831422209" ID="ID_79374511" MODIFIED="1563831422209" TEXT="/home/hiv/.local/share/themes/PanRosewoodHIV/gtk-3.0/gtk-contained.css"/>
<node CREATED="1563831443895" ID="ID_1181589291" MODIFIED="1563831674186" TEXT="frames: werden flach gezeichnet">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      frame &gt; border,
    </p>
    <p>
      .frame {
    </p>
    <p>
      &#160;&#160;box-shadow: none;
    </p>
    <p>
      &#160;&#160;margin: 0;
    </p>
    <p>
      &#160;&#160;padding: 0;
    </p>
    <p>
      &#160;&#160;border-radius: 0;
    </p>
    <p>
      &#160;&#160;border: 1px solid @borders; }
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1563831978878" ID="ID_1798339852" MODIFIED="1563832006629" TEXT="buttons: verwenden box-shadow">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      &#160;&#160;box-shadow: inset 0px 0px 0px 1px shade (@theme_bg_color, 1.15), 0px 1px 2px rgba(0, 0, 0, 0.1); }
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1563832107140" ID="ID_132078838" MODIFIED="1563832115635" TEXT="&quot;outset&quot; wird &#xfc;berhaupt nicht verwendet"/>
<node CREATED="1563832501752" ID="ID_804764675" MODIFIED="1563832525842" TEXT="box-shadow == CSS3 special FX overlay rendering">
<icon BUILTIN="messagebox_warning"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1563832552048" ID="ID_1098912429" MODIFIED="1563832581748" TEXT="kann man das via Gtk::StyleContext &#xfc;berhaupt bekommen?">
<icon BUILTIN="help"/>
</node>
<node CREATED="1563832588867" ID="ID_1957263564" MODIFIED="1563832601172" TEXT="ggfs. box-shadow: inset"/>
<node CREATED="1563832602381" ID="ID_1407285230" MODIFIED="1563832622838" TEXT="k&#xf6;nnte auf den background wirken">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
<node CREATED="1563832147919" ID="ID_219847738" MODIFIED="1563832160686" TEXT="brauche zun&#xe4;chst Referenzpunkt">
<node CREATED="1563832161893" ID="ID_1492294459" MODIFIED="1563832182991" TEXT="etwas, was regul&#xe4;r wie gew&#xfc;nscht gezeichnet wird"/>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1564495803795" FOLDED="true" ID="ID_936454608" MODIFIED="1564932165356">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      herausfinden, <i>warum </i>er solid gezeichnet wird
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="forward"/>
<node CREATED="1564496514126" ID="ID_1346070750" MODIFIED="1564496520743" TEXT="suche nach &quot;outline&quot;">
<node CREATED="1564496521875" ID="ID_1983337712" MODIFIED="1564496542962" TEXT="Treffer in den GTK-Tests">
<node CREATED="1564496527957" ID="ID_1175363915" MODIFIED="1564496537133" TEXT="da werden CSS-Files geparst">
<node CREATED="1564496635695" ID="ID_118189793" MODIFIED="1564496644342" TEXT="outline-style: outset">
<node CREATED="1564497490473" ID="ID_758595365" MODIFIED="1564497508338" TEXT="outline ist ein zus&#xe4;tzlicher Rahmen, der keinen Platz einnimmt"/>
<node CREATED="1564497509220" ID="ID_44303071" MODIFIED="1564497575901" TEXT="typischerweise wird er verwendet f&#xfc;r Zugriff via TAB-Key auf Links oder Form-Controls"/>
<node CREATED="1564497583437" ID="ID_351582783" MODIFIED="1564497684260" TEXT="viele Designer setzten die Outline irrt&#xfc;mlicherwesise auf 0">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      irrt&#252;mlich, denn
    </p>
    <ul>
      <li>
        per default ist outline:none
      </li>
      <li>
        outline wird nur gesetzt, wenn ein Element fokus bekommt
      </li>
      <li>
        Outline liegt um die Border, nimmt aber selber <i>keinen</i>&#160;Platz ein (sondern ist ein overlay)
      </li>
    </ul>
  </body>
</html></richcontent>
<node CREATED="1564497610951" ID="ID_1607000015" MODIFIED="1564497691853" TEXT="flat-style Wahn">
<icon BUILTIN="smiley-angry"/>
</node>
</node>
</node>
<node CREATED="1564496645266" ID="ID_1195524517" MODIFIED="1564496648014" TEXT="aber">
<node CREATED="1564496671939" ID="ID_447845332" MODIFIED="1564496677574">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      g {
    </p>
    <p>
      &#160;&#160;border-bottom-style: outset;
    </p>
    <p>
      &#160;&#160;border-left-style: outset;
    </p>
    <p>
      &#160;&#160;border-right-style: outset;
    </p>
    <p>
      &#160;&#160;border-top-style: outset;
    </p>
    <p>
      }
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
<node CREATED="1564498530277" ID="ID_58219828" MODIFIED="1564498535936" TEXT="gtkrenderborder.c">
<node CREATED="1564498554598" ID="ID_956944933" MODIFIED="1564498559099" TEXT="render_border()"/>
<node CREATED="1564498579543" ID="ID_1385373992" MODIFIED="1564498592608" TEXT="hart getcodete Logik, ziemlich brachial"/>
<node CREATED="1564498560001" ID="ID_621726316" MODIFIED="1564498730015" TEXT="macht bei outset/inset jewils 2 Seiten um den Faktor 1.8 heller">
<arrowlink COLOR="#2ee773" DESTINATION="ID_1183787016" ENDARROW="Default" ENDINCLINATION="120;7;" ID="Arrow_ID_1051090636" STARTARROW="None" STARTINCLINATION="-30;75;"/>
</node>
</node>
</node>
<node CREATED="1564497891485" ID="ID_1183787016" MODIFIED="1564932176101" TEXT="Ha! man mu&#xdf; irgendwo eine Farbe angeben">
<linktarget COLOR="#2ee773" DESTINATION="ID_1183787016" ENDARROW="Default" ENDINCLINATION="120;7;" ID="Arrow_ID_1051090636" SOURCE="ID_621726316" STARTARROW="None" STARTINCLINATION="-30;75;"/>
<linktarget COLOR="#2ee773" DESTINATION="ID_1183787016" ENDARROW="Default" ENDINCLINATION="278;16;" ID="Arrow_ID_1462879108" SOURCE="ID_1801143265" STARTARROW="None" STARTINCLINATION="344;0;"/>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1564497939401" ID="ID_1944950668" MODIFIED="1564497957953" TEXT="...dann wird das outset/inset durchaus sichtbar"/>
</node>
<node CREATED="1563637262355" ID="ID_1832765583" MODIFIED="1563637269566" TEXT="mehrere Rahmen zeichnen">
<icon BUILTIN="button_cancel"/>
<node CREATED="1563637271393" ID="ID_1653388358" MODIFIED="1563637278534" TEXT="bringt nix und ist zweifelhaft"/>
<node CREATED="1563637280568" ID="ID_1565457661" MODIFIED="1563637293442" TEXT="denn die sind trotzedem solid"/>
</node>
<node CREATED="1563637301028" ID="ID_1115957778" MODIFIED="1564610481386" TEXT="dann doch komplett selber zeichnen">
<icon BUILTIN="button_cancel"/>
<node CREATED="1563637334256" ID="ID_366744106" MODIFIED="1576282358044" TEXT="CSS kann dann aber den Slope-Stil nicht mehr steuern">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      weil er dann mehr oder weniger hartverdrahtet ist
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1563734827469" ID="ID_1948656771" MODIFIED="1563734843479" TEXT="man k&#xf6;nnte allerdings das Verhalten von GTK im eigenen Code nachahmen"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1561742203636" FOLDED="true" ID="ID_1959492243" MODIFIED="1679077867724" TEXT="Rampen">
<icon BUILTIN="button_ok"/>
<node CREATED="1563112435603" ID="ID_957636184" MODIFIED="1563112566794" TEXT="Idee-1">
<icon BUILTIN="smiley-neutral"/>
<node CREATED="1563112441737" ID="ID_900587446" MODIFIED="1563112449250" TEXT="Rahmen zeichnen und Richtung umkehren"/>
<node CREATED="1563112451973" ID="ID_1878103890" MODIFIED="1563112459772" TEXT="Rahmen mu&#xdf; dazu inset/outset sein"/>
</node>
<node CREATED="1563112464141" ID="ID_497314735" MODIFIED="1563112572591" TEXT="Idee-2">
<icon BUILTIN="forward"/>
<node CREATED="1563112482359" ID="ID_100127081" MODIFIED="1563112487856" TEXT="Rahmen mit Gap zeichnen"/>
<node CREATED="1563112489001" ID="ID_1802227725" MODIFIED="1563112511333" TEXT="...und dadurch die Oberseite verdecken"/>
<node COLOR="#435e98" CREATED="1563636755968" ID="ID_145032855" MODIFIED="1674159053972" TEXT="funktioniert... aber zwei Probleme">
<icon BUILTIN="idea"/>
<node COLOR="#435e98" CREATED="1563636787971" ID="ID_362681600" MODIFIED="1564932601661" TEXT="Rahmen wird solid gezeichnet, nicht outset">
<arrowlink COLOR="#4daab7" DESTINATION="ID_391875364" ENDARROW="Default" ENDINCLINATION="-88;45;" ID="Arrow_ID_1840813206" STARTARROW="None" STARTINCLINATION="-335;-6;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1564498321121" ID="ID_277450056" MODIFIED="1564498326722" TEXT="stimmt gar nicht">
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1564498328208" ID="ID_1801143265" MODIFIED="1564932176101" TEXT="man mu&#xdf; nur eine Farbe setzen">
<arrowlink COLOR="#2ee773" DESTINATION="ID_1183787016" ENDARROW="Default" ENDINCLINATION="278;16;" ID="Arrow_ID_1462879108" STARTARROW="None" STARTINCLINATION="344;0;"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1563636771101" ID="ID_273130535" MODIFIED="1566518058000" TEXT="kann die Rahmenst&#xe4;rke nicht manipulieren">
<arrowlink COLOR="#cb487a" DESTINATION="ID_155787836" ENDARROW="Default" ENDINCLINATION="86;-182;" ID="Arrow_ID_1682426231" STARTARROW="None" STARTINCLINATION="187;-5;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1566517976980" ID="ID_1144490151" MODIFIED="1566518051558" TEXT="L&#xf6;sung: CSS-Klassen verwenden">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1566517991290" ID="ID_139839934" MODIFIED="1566518025089" TEXT="eine fixe Anzahl">
<node CREATED="1566518027596" ID="ID_1002340632" MODIFIED="1566518034807" TEXT="eins zwei drei vier viele"/>
</node>
<node CREATED="1566518038233" ID="ID_160319279" MODIFIED="1566518048501" TEXT="auf der letzten Klasse stehenbleiben"/>
</node>
</node>
</node>
<node CREATED="1563112523511" ID="ID_1881724639" MODIFIED="1563112555503" TEXT="Idee-3">
<icon BUILTIN="button_cancel"/>
<node CREATED="1563112528094" ID="ID_1162030446" MODIFIED="1563112536377" TEXT="zu zeichnende Rahmen in einem Stack sammeln"/>
<node CREATED="1563112537602" ID="ID_1896039320" MODIFIED="1563112551944" TEXT="...und dann am Ende auf einmal alle zeichnen"/>
</node>
</node>
<node CREATED="1564610290631" HGAP="17" ID="ID_1710961419" MODIFIED="1679077861213" TEXT="Probleme bei der Umsetzung" VSHIFT="12">
<icon BUILTIN="go"/>
<node COLOR="#338800" CREATED="1564610350719" FOLDED="true" ID="ID_1592146108" MODIFIED="1564932136148" TEXT="brauche L&#xf6;sung zum Steuern der Rahmenst&#xe4;rke">
<icon BUILTIN="button_ok"/>
<node CREATED="1564610376639" ID="ID_1472226314" MODIFIED="1564610394741" TEXT="...weil sich diese dynamisch aus der Tiefe der Verschachtelung ergibt"/>
<node CREATED="1564610401372" ID="ID_155787836" MODIFIED="1564840644957" TEXT="geht nicht unmittelbar">
<linktarget COLOR="#cb487a" DESTINATION="ID_155787836" ENDARROW="Default" ENDINCLINATION="86;-182;" ID="Arrow_ID_1682426231" SOURCE="ID_273130535" STARTARROW="None" STARTINCLINATION="187;-5;"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1564499265111" ID="ID_1439210086" MODIFIED="1564499270258" TEXT="ist wohl nicht vorgesehen">
<node CREATED="1564499271812" ID="ID_287796510" MODIFIED="1564499291455" TEXT="getBorder() macht eine Kopie des Rect"/>
<node CREATED="1564500049627" ID="ID_422878118" MODIFIED="1564500092094" TEXT="auch die unterliegenden CssValues sind immutable">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      und mehrfach gekapselt.
    </p>
    <p>
      Schaut alles so aus, als sollte man da nicht rumpfuschen
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1564499293683" ID="ID_1091998085" MODIFIED="1564499307564" TEXT="vmtl. sollte man einen CssProvider hinzuf&#xfc;gen">
<node CREATED="1564499312280" ID="ID_596172178" MODIFIED="1564499349741" TEXT="StyleContext::add_provider"/>
</node>
</node>
<node CREATED="1564500098305" ID="ID_1609602378" MODIFIED="1564500104383" TEXT="sehe 2 L&#xf6;sungen">
<node CREATED="1564500107072" ID="ID_1324066228" MODIFIED="1564500523208" TEXT="CssProvider on-the-fly hinzuf&#xfc;gen">
<icon BUILTIN="button_cancel"/>
<node CREATED="1564500128300" ID="ID_1227815048" MODIFIED="1564500135869" TEXT="mit berechneter border-size"/>
</node>
<node CREATED="1564500138401" ID="ID_1779259370" MODIFIED="1564500527159" TEXT="spezielle Klassen definieren">
<icon BUILTIN="button_ok"/>
<node CREATED="1564500156340" ID="ID_813184011" MODIFIED="1564500184980" TEXT="track-slope-deep2"/>
<node CREATED="1564500156340" ID="ID_901585189" MODIFIED="1564500203009" TEXT="track-slope-deep3"/>
<node CREATED="1564500156340" ID="ID_1965249671" MODIFIED="1564500208577" TEXT="track-slope-deep4"/>
<node CREATED="1564500220303" ID="ID_1305054039" MODIFIED="1564500229334" TEXT="track-slope-verydeep"/>
</node>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1564500530497" ID="ID_552810958" MODIFIED="1564929446246" TEXT="die 2.L&#xf6;sung erscheint mir angemessener">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node CREATED="1564500542648" ID="ID_1923715160" MODIFIED="1564500554477" TEXT="weil damit der Designer freie Hand hat"/>
<node CREATED="1564500576627" ID="ID_979278974" MODIFIED="1564500613622" TEXT="weil das Hinzuf&#xfc;gen von Klassen eine vorgesehene Operation ist"/>
<node CREATED="1564500614693" ID="ID_178343581" MODIFIED="1564500683747" TEXT="Hinzuf&#xfc;gen eines CssProvider ist eine aufwendige Sache">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      da wird ggfs eine neue CSS-Kaskade erstellt, oder die bestehende Kaskade erweitert.
    </p>
    <p>
      Hierf&#252;r werden Eintr&#228;ge in Arrays verschoben.
    </p>
    <p>
      Schlie&#223;lich wird &#252;ber die ganze Kaskade iteriert, und die Werte werden aufgesammelt
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="stop-sign"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1564610513626" FOLDED="true" ID="ID_387755678" MODIFIED="1564932134058" TEXT="Verhalten des Gtk::StyleContext">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1564610523846" ID="ID_1167026908" MODIFIED="1564929420074" TEXT="verh&#xe4;lt sich komisch, und anders als dokumentiert">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="broken-line"/>
</node>
<node COLOR="#338800" CREATED="1564610549788" ID="ID_1115307821" MODIFIED="1564929404069" TEXT="Fokussierte Untersuchung (Research)">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1564838802098" ID="ID_529304410" MODIFIED="1564838822103" TEXT="gtk-canvas-eperiment kopiert und zusammengedampft">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1564838825559" ID="ID_325876038" MODIFIED="1564838846585" TEXT="greife aber hier einen StyleContext von einem real existierenden Widget ab!">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1564838864770" ID="ID_1455456623" MODIFIED="1564838879910" TEXT="Erkenntnis: es war ein Cascading-Problem">
<icon BUILTIN="forward"/>
<node CREATED="1564838892422" ID="ID_1063402707" MODIFIED="1564838910760" TEXT="Expliziter Selektor wiegt mehr als generischer Selektor"/>
<node CREATED="1564838932673" ID="ID_1845439133" MODIFIED="1564839843544" TEXT="Einsicht nebeinbei: sehe schon, warum die Designer immer CSS vergewaltigen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Die Idee mit dem Cascading funktioniert n&#228;mlich nur, wenn man die Oberfl&#228;che <i>explizit</i>&#160;und <i>bewu&#223;t</i>
    </p>
    <p>
      nach einem Struktur-Schema aufbaut. Dies erfordert eine gewisse zus&#228;tzliche geistige Spannkraft.
    </p>
    <p>
      
    </p>
    <p>
      Typisches Beispiel f&#252;r mich ist eine Barocke Fassade (mit denen ich mich
    </p>
    <p>
      in einem anderen Projekt grade besch&#228;ftige): Auf den ersten Blick sehen die &#252;berbordend
    </p>
    <p>
      und &#252;berwuchert aus, aber wenn man genau hinschaut, ist jedes kleinste Detail
    </p>
    <p>
      aus einem System abgeleitet -- genau wie es dem damaligen Zeitgeist der Aufkl&#228;rung entspricht.
    </p>
    <p>
      Ein barocker Baumeister w&#252;rde niemals an einem einzelnen Fenster herum-tweaken, weil es sich irgendwie besser anf&#252;hlt.
    </p>
    <p>
      Wenn etwas nicht ausgewogen rauskommt, dann wird eben das gesamte System nachjustiert.
    </p>
    <p>
      Und genau das ist es, was die geistige Spannweite erfordert.
    </p>
    <p>
      
    </p>
    <p>
      Der Pragmatiger sagt, dann mach halt das verfickte Klofenster hinten links breiter und gut is.
    </p>
    <p>
      Das w&#252;rde zwar ein lokales Problem praktisch l&#246;sen, w&#228;re aber unorganisch,
    </p>
    <p>
      weil es nicht mehr aus dem Flu&#223; des Systems im Ganzen folgt.
    </p>
    <p>
      
    </p>
    <p>
      Und mit CSS-Selektoren und dem Cascading verh&#228;lt es sich genau entsprechend.
    </p>
    <p>
      Wenn man einmal anf&#228;ngt, an irgend einem Detail herumzufummeln, weil es sich irgendewie so anf&#252;hlt,
    </p>
    <p>
      oder der Kunde es so will, dann ist man ganz schnell an dem Punk, wo Selektoren nicht mehr greifen,
    </p>
    <p>
      und nur noch !important hilft. Und an der Stelle kommt dann der Praktiker, und pflastert eben
    </p>
    <p>
      jedes Element mit einem eigenen Selektor zu, so da&#223; man ungestraft &#252;berall herumfummeln kan.
    </p>
    <p>
      Und der Oberpragmatiker generiert den ganzen M&#252;llhaufen dann per SASS order SCSS
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1564841527588" ID="ID_1377435126" MODIFIED="1564924272221" TEXT="Untersuchung context_save() auf einem kopierten / frei konstruierten StyleContext">
<icon BUILTIN="stop-sign"/>
<node CREATED="1564868166273" ID="ID_945377761" MODIFIED="1564868267923" TEXT="kann das problematische Verhalten reproduzieren">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Wenn man einen neuen Gtk::StyleContext erzeugt,
    </p>
    <p>
      und (wie in der Doku beschrieben) den path und den screen manuell setzt,
    </p>
    <p>
      dann f&#252;hrt ein context_save() dazu, da&#223; pl&#246;tzlich die CSS-Werte auf Defaults zur&#252;ckspringen
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1564868280687" ID="ID_593595518" MODIFIED="1564871156101" TEXT="es hilft nichts, wenn man den Screen (nochmal) setzt">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      und ja, den Screen sollte man generell setzten.<br />Steht auch so in der Doku.
    </p>
    <p>
      
    </p>
    <p>
      Allerdings hat es bisher auch ohne das bei mir funktioniert.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="broken-line"/>
</node>
<node CREATED="1564868338325" ID="ID_1826179725" MODIFIED="1564871159899" TEXT="es hilft nichts, wenn man den Pfad erneut setzt">
<icon BUILTIN="broken-line"/>
</node>
<node CREATED="1564868348236" ID="ID_1509661918" MODIFIED="1564871163619" TEXT="es hilft nichts, wenn man den Context invalidiert">
<icon BUILTIN="broken-line"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1564871053125" HGAP="30" ID="ID_1611854805" LINK="https://stackoverflow.com/q/57342478/444796" MODIFIED="1564871092888" TEXT="habe auf Stackoverflow gefragt" VSHIFT="16">
<icon BUILTIN="hourglass"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1564841584180" ID="ID_1444331441" MODIFIED="1564928490168" TEXT="Untersuchung wie box-shadow gerendert wird">
<linktarget COLOR="#5590d5" DESTINATION="ID_1444331441" ENDARROW="Default" ENDINCLINATION="-449;0;" ID="Arrow_ID_1759102712" SOURCE="ID_840104433" STARTARROW="None" STARTINCLINATION="98;-3;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1564926637294" ID="ID_1488276378" MODIFIED="1564926753815" TEXT="box-shadow Definitionen / Varianten">
<arrowlink COLOR="#405ecf" DESTINATION="ID_240623877" ENDARROW="Default" ENDINCLINATION="-838;0;" ID="Arrow_ID_1124667032" STARTARROW="None" STARTINCLINATION="-522;0;"/>
<icon BUILTIN="info"/>
</node>
<node COLOR="#338800" CREATED="1564927139265" ID="ID_1929004588" MODIFIED="1564927154012" TEXT="Hintergrund zus&#xe4;tzlich auf den Canvas rendern">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1564927155326" ID="ID_678866276" MODIFIED="1564928463921" TEXT="box-shadow im Test-CSS definieren">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1564840511187" ID="ID_1756129968" MODIFIED="1564840563824" TEXT="Fazit-1">
<icon BUILTIN="forward"/>
<node CREATED="1564840516803" ID="ID_1696178790" MODIFIED="1564840530729" TEXT="Steuerung der Rahmenbreite &#xfc;ber klassen funktioniert durchaus"/>
<node CREATED="1564840531905" ID="ID_1757725296" MODIFIED="1564840552442" TEXT="man mu&#xdf; nur die Klassen sinnvoll strukturieren, so da&#xdf; der Selektor greift"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1564840587025" ID="ID_1659624942" MODIFIED="1564840662973" TEXT="style-&gt;context_save() funktioneriert dennoch nicht">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1564840675682" ID="ID_1503353101" MODIFIED="1564840686319" TEXT="border-width == 0"/>
<node CREATED="1564840688620" ID="ID_1175662942" MODIFIED="1564840695486" TEXT="Rahmen wird nicht mehr gezeichnet"/>
</node>
<node COLOR="#435e98" CREATED="1564840511187" ID="ID_1777041743" MODIFIED="1564928522581" TEXT="Fazit-2">
<icon BUILTIN="forward"/>
<node CREATED="1564928528971" ID="ID_1722803144" MODIFIED="1564928579769" TEXT="CSS3-Effekte werden angewendet bei render_background"/>
<node CREATED="1564928584153" ID="ID_495635427" MODIFIED="1564928597882" TEXT="und zwar alle Effekte. Und nicht in render_frame">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1564928904423" ID="ID_1736699496" MODIFIED="1564929052148" TEXT="das ist m&#xe4;&#xdf;ig prickelnd....">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <ul>
      <li>
        Gut ist es insofern, da&#223; man mit einem render_background bereits alles bekommt
      </li>
      <li>
        allerdings mu&#223; der Rahmen dann ganz genau passend dar&#252;ber gezeichnet werden
      </li>
      <li>
        man kann damit weder den Rahmen schattieren, noch den enthaltenen Content
      </li>
    </ul>
    <p>
      allerdings verh&#228;lt sich das normale Zeichnen ganz genauso; das sind allgemeine Einschr&#228;nkungen (von CSS? GTK?)
    </p>
  </body>
</html></richcontent>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="smiley-neutral"/>
</node>
</node>
<node CREATED="1564928617821" ID="ID_1534709178" MODIFIED="1564928886905" TEXT="des Genaueren">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1564928649329" ID="ID_1625957291" MODIFIED="1564928810213" TEXT="box-shadow (normal) wird au&#xdf;erhalb des angegebenen Rechtecks gezeichnet">
<icon BUILTIN="full-1"/>
</node>
<node CREATED="1564928674942" ID="ID_75369854" MODIFIED="1564928812685" TEXT="angegebenes Rechteck wird mit der Hintergrundfarbe gef&#xfc;llt">
<icon BUILTIN="full-2"/>
</node>
<node CREATED="1564928700616" ID="ID_835151696" MODIFIED="1564928815890">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      box-shadow (inset) innerhalb des Rechteckss, <i>und innerhalb</i>&#160;der (gedachten) border
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="full-3"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1564610302597" ID="ID_840104433" MODIFIED="1679071406814" TEXT="sollte so zeichnen, da&#xdf; CSS3-Effekte wie box-shadow nutzbar sind">
<arrowlink COLOR="#5590d5" DESTINATION="ID_1444331441" ENDARROW="Default" ENDINCLINATION="-449;0;" ID="Arrow_ID_1759102712" STARTARROW="None" STARTINCLINATION="98;-3;"/>
<linktarget COLOR="#02ab84" DESTINATION="ID_840104433" ENDARROW="Default" ENDINCLINATION="1035;-107;" ID="Arrow_ID_77023730" SOURCE="ID_1092949064" STARTARROW="Default" STARTINCLINATION="106;39;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1564932712545" ID="ID_756463948" MODIFIED="1679078002475" TEXT="korrekt zeichnen gem&#xe4;&#xdf; Konzept">
<linktarget COLOR="#556dd4" DESTINATION="ID_756463948" ENDARROW="Default" ENDINCLINATION="-507;0;" ID="Arrow_ID_1335568264" SOURCE="ID_909641864" STARTARROW="None" STARTINCLINATION="582;34;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1564932652482" ID="ID_1330271110" MODIFIED="1566525299678" TEXT="alle render_background mit vollst&#xe4;ndigem Rechteck versorgen">
<icon BUILTIN="button_ok"/>
<node CREATED="1565268879772" ID="ID_261041772" MODIFIED="1566956248932" TEXT="brauche berechnete H&#xf6;he(n)">
<arrowlink COLOR="#a37084" DESTINATION="ID_31825370" ENDARROW="Default" ENDINCLINATION="145;324;" ID="Arrow_ID_1599930326" STARTARROW="Default" STARTINCLINATION="-943;-105;"/>
<linktarget COLOR="#555580" DESTINATION="ID_261041772" ENDARROW="Default" ENDINCLINATION="-490;-44;" ID="Arrow_ID_462162449" SOURCE="ID_1608124774" STARTARROW="None" STARTINCLINATION="332;39;"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1566401334135" ID="ID_688081615" MODIFIED="1576282358043" TEXT="doch nicht so schlimm">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      weil die CSS-box-shadow-Effekte zum Zeichnen komplexerer Strukturen nur bedingt n&#252;tzlich sind.
    </p>
    <p>
      Daher verzichte ich global (f&#252;r die Slopes) darauf, wende sie aber <b>lokal</b>&#160; an
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node CREATED="1566401295806" ID="ID_1604746709" MODIFIED="1566401306583" TEXT="es gen&#xfc;gt die lokale H&#xf6;he">
<node CREATED="1566401307715" ID="ID_927850679" MODIFIED="1566401323333" TEXT="f&#xfc;r den Track-Content"/>
<node CREATED="1566401324073" ID="ID_1089116245" MODIFIED="1566401328764" TEXT="f&#xfc;r die Track-Ruler"/>
</node>
</node>
<node COLOR="#338800" CREATED="1564932680606" ID="ID_695299880" MODIFIED="1567684005651" TEXT="Rahmen pa&#xdf;genau einsetzen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1567683988131" ID="ID_290005683" MODIFIED="1679071358308" TEXT="Margin und Padding ber&#xfc;cksichtigen">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1564955071015" ID="ID_773991524" MODIFIED="1679071382855" TEXT="(vorerst) nicht zu viel Aufwand hier investieren">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="yes"/>
<node COLOR="#338800" CREATED="1564955099331" ID="ID_1171928927" MODIFIED="1679071353747" TEXT="Wechselspiel mit der Gr&#xf6;&#xdf;en-Steuerung beachten">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1564955112027" ID="ID_1010819780" MODIFIED="1679071355691" TEXT="Integration in Zeichenvorgang insgesamt beachten">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1566518983355" FOLDED="true" ID="ID_35592741" MODIFIED="1679077804599" TEXT="Zusammenspiel zw. H&#xf6;he und CSS">
<linktarget COLOR="#779be7" DESTINATION="ID_35592741" ENDARROW="Default" ENDINCLINATION="109;-329;" ID="Arrow_ID_66200016" SOURCE="ID_183446100" STARTARROW="None" STARTINCLINATION="539;20;"/>
<linktarget COLOR="#f6e1c2" DESTINATION="ID_35592741" ENDARROW="Default" ENDINCLINATION="-366;30;" ID="Arrow_ID_949004312" SOURCE="ID_430878592" STARTARROW="None" STARTINCLINATION="-2163;252;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1566518998190" ID="ID_284079883" MODIFIED="1566519017050" TEXT="Stylesheet bestimmt zus&#xe4;tzlichen Margin + Padding"/>
<node CREATED="1566519017878" ID="ID_30554429" MODIFIED="1566519029065" TEXT="diese m&#xfc;ssen mit den Werten im TrackBody verrechnet werden">
<node COLOR="#338800" CREATED="1566522092555" FOLDED="true" ID="ID_293262823" MODIFIED="1566524848312" TEXT="Konsequenz: TrackBody mu&#xdf; auch den Style abfragen">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1566524821779" ID="ID_447136717" MODIFIED="1566524894982" TEXT="L&#xf6;sung: via statische Funktion setzen"/>
<node CREATED="1566524850167" ID="ID_1119976379" MODIFIED="1576282358043" TEXT="kann dann aus body-canvas-widget.cpp passieren">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...wo parktischerweise der Style-Advice in einer lokalen statischen Variablen liegt
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#006699" CREATED="1566524901403" FOLDED="true" ID="ID_950799052" MODIFIED="1566689174782" TEXT="pr&#xfc;fen ... stimmen die Werte">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1566685513662" ID="ID_1558375892" MODIFIED="1566685638105" TEXT="stimmt  mit dem Diff aus DummySessionConnection &#xfc;berein">
<icon BUILTIN="button_ok"/>
<node CREATED="1566685609906" ID="ID_474487470" MODIFIED="1566685621646" TEXT="unter der Annahme, da&#xdf; jeder Track eine Content-Area bekommt"/>
<node CREATED="1566685622613" ID="ID_231064198" MODIFIED="1566685632616" TEXT="...und man noch nichts ein/ausklappen kann"/>
</node>
<node CREATED="1566685563043" ID="ID_1475468086" MODIFIED="1566685580320" TEXT="(Anmerkung: das Diff ist anders als das Beispiel im TiddlyWiki)"/>
<node COLOR="#338800" CREATED="1566689127609" ID="ID_479226069" MODIFIED="1566689147622" TEXT="Fehler in der Platzierung im Track-Head behoben">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node CREATED="1566519037996" ID="ID_57629359" MODIFIED="1566519094001" TEXT="der zus&#xe4;tzliche Platz wird u.A. f&#xfc;r den box-shadow ben&#xf6;tigt">
<arrowlink COLOR="#2b75cc" DESTINATION="ID_1092949064" ENDARROW="Default" ENDINCLINATION="286;83;" ID="Arrow_ID_1686979270" STARTARROW="None" STARTINCLINATION="572;0;"/>
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1566524922429" ID="ID_1618879281" MODIFIED="1679076538527" TEXT="f&#xfc;r den Overlay-Pass genau analoge Berechnungen machen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1679076542708" ID="ID_1589253410" MODIFIED="1679076553251" TEXT="alle Verb-Implementierungen durchgegangen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1679076554411" ID="ID_603964662" MODIFIED="1679076580595" TEXT="die Berechnung der &#xbb;water level&#xab; line ausf&#xfc;hren">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1679076581607" ID="ID_808858680" MODIFIED="1679076628793" TEXT="derzeit wird hier keinerlei Overlay gezeichnet">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...aber das wird sich ganz gewi&#223; &#228;ndern &#10230; Stichwort Bereichsmarkierungen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="hourglass"/>
</node>
</node>
<node COLOR="#338800" CREATED="1566956214907" ID="ID_1608124774" MODIFIED="1679073476147" TEXT="Gr&#xf6;&#xdf;en-Berechnung">
<arrowlink COLOR="#564b7e" DESTINATION="ID_31825370" ENDARROW="Default" ENDINCLINATION="178;986;" ID="Arrow_ID_1663311989" STARTARROW="None" STARTINCLINATION="-248;-11;"/>
<arrowlink COLOR="#555580" DESTINATION="ID_261041772" ENDARROW="Default" ENDINCLINATION="-490;-44;" ID="Arrow_ID_462162449" STARTARROW="None" STARTINCLINATION="332;39;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1566956340002" FOLDED="true" ID="ID_1472575231" MODIFIED="1612643628908" TEXT="stimmen die Werte?">
<node CREATED="1566957803903" ID="ID_474929251" MODIFIED="1566957807116" TEXT="beobachtet">
<node CREATED="1566957808335" ID="ID_1187167099" MODIFIED="1566957813234" TEXT="Gr&#xf6;&#xdf;enberechnung">
<node CREATED="1566957814421" ID="ID_600013220" MODIFIED="1566957837743" TEXT="total 860"/>
<node CREATED="1566957818757" ID="ID_425842490" MODIFIED="1566957843334" TEXT="ruler 120"/>
<node CREATED="1566957823804" ID="ID_491575402" MODIFIED="1566957855700" TEXT="delta 740"/>
</node>
<node CREATED="1566957857592" ID="ID_1807195803" MODIFIED="1566957863234" TEXT="Line nach Zeichnen">
<node CREATED="1566957864220" ID="ID_661651528" MODIFIED="1566957880817" TEXT="Body: 785">
<node CREATED="1566957882024" ID="ID_405967084" MODIFIED="1566957886807" TEXT="das ist ohne">
<node CREATED="1566957887930" ID="ID_1485316992" MODIFIED="1566957890959" TEXT="prelude"/>
<node CREATED="1566957891764" ID="ID_1384744243" MODIFIED="1566957895151" TEXT="zwei Ruler"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1566958520767" ID="ID_350091895" MODIFIED="1576282358042" TEXT="diagnostisches Hilfs-drawing sollte Canvas-Gr&#xf6;&#xdf;e als Bezug verwenden">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ....f&#252;r den Kreis
    </p>
    <p>
      Und nicht die sichtbare Gr&#246;&#223;e
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1566957944718" ID="ID_629892163" MODIFIED="1567112025398" TEXT="Befund: der reale Zeichencode verbraucht zus&#xe4;tzlichen Platz">
<arrowlink COLOR="#ce2c4f" DESTINATION="ID_1587873335" ENDARROW="Default" ENDINCLINATION="-43;-72;" ID="Arrow_ID_1930337724" STARTARROW="None" STARTINCLINATION="40;43;"/>
<icon BUILTIN="forward"/>
</node>
<node COLOR="#435e98" CREATED="1566958287015" ID="ID_1587873335" MODIFIED="1567112048235" TEXT="Verdacht: es fehlen die Slope-Borders">
<linktarget COLOR="#ce2c4f" DESTINATION="ID_1587873335" ENDARROW="Default" ENDINCLINATION="-43;-72;" ID="Arrow_ID_1930337724" SOURCE="ID_629892163" STARTARROW="None" STARTINCLINATION="40;43;"/>
<icon BUILTIN="yes"/>
<node CREATED="1566958323689" ID="ID_604642616" MODIFIED="1566958330665" TEXT="TrackBody::calcHeight()"/>
<node CREATED="1566958579858" ID="ID_1841811096" MODIFIED="1566958601472" TEXT="diese h&#xe4;ngen n&#xe4;mlich von der Schachtelungstiefe ab"/>
<node CREATED="1566958602561" ID="ID_106882219" MODIFIED="1566958625572" TEXT="Diskrepanz (45 Pixel) sieht plausibel aus"/>
<node CREATED="1566958775500" ID="ID_754575723" MODIFIED="1566958796157" TEXT="kommt aber auch nicht genau hin: (5+10+14)*2">
<icon BUILTIN="smily_bad"/>
</node>
<node CREATED="1567085396760" ID="ID_13253702" MODIFIED="1567085405481" TEXT="da stimmt eine Menge nicht">
<icon BUILTIN="smiley-angry"/>
<node CREATED="1567085409503" ID="ID_1398765924" MODIFIED="1567085420521" TEXT="Differenzierung der Slopes"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1567085421366" ID="ID_1248743095" MODIFIED="1679072598371" TEXT="Slopes k&#xf6;nnen auch zwischendurch zusammengefa&#xdf;t werden">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1567085476174" ID="ID_745197382" MODIFIED="1567085485153" TEXT="Prelude und Coda fehlen ebenfalls"/>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1567085499035" ID="ID_1732362754" MODIFIED="1567112061359" TEXT="Beschlu&#xdf;: wir brauchen Einzel-Offsets f&#xfc;r jeden Track">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node CREATED="1567085512476" ID="ID_1140063837" MODIFIED="1567085514964" TEXT="warum?"/>
<node CREATED="1567085515823" ID="ID_224781783" MODIFIED="1576282358042" TEXT="weil wir sp&#xe4;ter Clips in den Track platzieren">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      d.h. wir m&#252;ssen...
    </p>
    <ul>
      <li>
        die Clips b&#252;ndig in einen Track legen k&#246;nnen
      </li>
      <li>
        feststellen, ob ein Mausklick in einen bestimmten Track f&#228;llt
      </li>
    </ul>
  </body>
</html></richcontent>
<linktarget COLOR="#5595df" DESTINATION="ID_224781783" ENDARROW="Default" ENDINCLINATION="-573;42;" ID="Arrow_ID_1285897355" SOURCE="ID_675568693" STARTARROW="None" STARTINCLINATION="47;-43;"/>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1567085534629" FOLDED="true" ID="ID_543607936" MODIFIED="1582926440570" TEXT="Einzel-Offsets pro Track">
<icon BUILTIN="button_ok"/>
<node CREATED="1567085546180" ID="ID_675568693" MODIFIED="1567112084781" TEXT="sp&#xe4;ter ben&#xf6;tigt">
<arrowlink COLOR="#5595df" DESTINATION="ID_224781783" ENDARROW="Default" ENDINCLINATION="-573;42;" ID="Arrow_ID_1285897355" STARTARROW="None" STARTINCLINATION="47;-43;"/>
<icon BUILTIN="info"/>
</node>
<node COLOR="#338800" CREATED="1567085637546" ID="ID_682932701" MODIFIED="1567876361526" TEXT="sind im TrackBody zu speichern">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1567870083327" ID="ID_400610372" MODIFIED="1567876360311" TEXT="dieses auch testen">
<icon BUILTIN="button_ok"/>
<node COLOR="#437b98" CREATED="1567876021748" ID="ID_1701413392" MODIFIED="1575131552362" TEXT="generischer Test-Code, um eine Nachricht via UI-Bus zu senden">
<arrowlink COLOR="#54bbd6" DESTINATION="ID_1341115014" ENDARROW="Default" ENDINCLINATION="-3095;0;" ID="Arrow_ID_547692411" STARTARROW="None" STARTINCLINATION="1167;0;"/>
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1567876260420" ID="ID_1982958415" MODIFIED="1567876360311" TEXT="quick-n-dirty auf Tab-2 vom TestControl eingeh&#xe4;ngt ">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1567876314629" ID="ID_1352878688" MODIFIED="1582926440570" TEXT="Labels erscheinen, aber noch nicht an der korrekten Position">
<arrowlink COLOR="#d66a46" DESTINATION="ID_764240247" ENDARROW="Default" ENDINCLINATION="220;12;" ID="Arrow_ID_748970743" STARTARROW="None" STARTINCLINATION="64;28;"/>
<icon BUILTIN="broken-line"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1567876291814" ID="ID_764240247" MODIFIED="1611439767693" TEXT="Thema: Offsets und Koordinaten auf dem Canvas">
<arrowlink COLOR="#5c5dc2" DESTINATION="ID_1434222749" ENDARROW="Default" ENDINCLINATION="-123;0;" ID="Arrow_ID_1862539064" STARTARROW="None" STARTINCLINATION="-876;0;"/>
<linktarget COLOR="#d66a46" DESTINATION="ID_764240247" ENDARROW="Default" ENDINCLINATION="220;12;" ID="Arrow_ID_748970743" SOURCE="ID_1352878688" STARTARROW="None" STARTINCLINATION="64;28;"/>
<icon BUILTIN="back"/>
</node>
</node>
<node COLOR="#338800" CREATED="1567085650636" ID="ID_394868232" MODIFIED="1567088360350" TEXT="brauche elaboriertere Storage f&#xfc;r Dekorationen">
<icon BUILTIN="button_ok"/>
<node CREATED="1567876052888" ID="ID_1307787525" MODIFIED="1611439578331" TEXT="struct Decoration"/>
<node CREATED="1611439579513" ID="ID_893582298" MODIFIED="1611439590531" TEXT="im TrackBody definiert"/>
<node CREATED="1611439591431" ID="ID_703791949" MODIFIED="1611439599394" TEXT="im BodyCanvasWidget genutzt"/>
</node>
<node COLOR="#338800" CREATED="1567085662725" ID="ID_1234980335" MODIFIED="1567111947683" TEXT="beim Profile-building pass mit berechnen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1567085681514" ID="ID_1776230312" MODIFIED="1567111949735" TEXT="line-Variable rekursiv mitf&#xfc;hren">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1567085696585" ID="ID_104428046" MODIFIED="1567111943463" TEXT="Hilfsfunktion f&#xfc;r Border-width">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1567085713758" ID="ID_1794483413" MODIFIED="1567111945368" TEXT="Profil: vorausgehende border abfragen">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1567112357515" FOLDED="true" ID="ID_921918885" MODIFIED="1576282358041" TEXT="man k&#xf6;nnte noch einen Margin pro Track einarbeiten">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <ul>
      <li>
        bisher verwende ich den nur im Prolog/Coda.
      </li>
      <li>
        k&#246;nnte sinnvoll sein, um direkt benachbarte Spuren leicht voneinander abzusetzen
      </li>
      <li>
        mu&#223; allerdings wirklich <i>au&#223;erhalb</i>&#160;der (inset) slopes eingebaut werden
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
<node CREATED="1567684868730" ID="ID_1174805630" MODIFIED="1567747074910" TEXT="drei Modelle denkbar">
<node CREATED="1567684881240" ID="ID_1903584153" MODIFIED="1567747074910" TEXT="Modell-1">
<icon BUILTIN="forward"/>
<node CREATED="1567685108272" ID="ID_152637722" MODIFIED="1567747074910" TEXT="um den track-content legen"/>
<node CREATED="1567685355920" ID="ID_1515797651" MODIFIED="1567747074910" STYLE="fork" TEXT="ganz einfach zu implementieren">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1567685388541" ID="ID_1586460223" MODIFIED="1567747074910">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      macht ggfs <i>ganz nat&#252;rlich</i>&#160;einen box-shadow sichtbar
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1567685491918" ID="ID_1425797539" MODIFIED="1567747074910" TEXT="Ruler sind nicht eingeschlossen">
<icon BUILTIN="smiley-neutral"/>
</node>
<node CREATED="1567685534377" ID="ID_312263870" MODIFIED="1567747074910" TEXT="zwischen zwei einfachen Tracks sto&#xdf;en margin-bottom und -top zusammen">
<icon BUILTIN="smiley-neutral"/>
</node>
<node CREATED="1567685577387" ID="ID_1532038020" MODIFIED="1567747074910" TEXT="margin-bottom liegt zwischen content und nested slope">
<icon BUILTIN="smiley-neutral"/>
</node>
</node>
<node CREATED="1567685154244" ID="ID_1373037444" MODIFIED="1567747074910" TEXT="Modell-2">
<icon BUILTIN="button_cancel"/>
<node CREATED="1567685158411" ID="ID_1980021492" MODIFIED="1567747074910" TEXT="um die nested slopes legen"/>
<node CREATED="1567685637512" ID="ID_1953351205" MODIFIED="1567747074910" TEXT="vergleichsweise einfach zu implementieren"/>
<node CREATED="1567685682643" ID="ID_1706892095" MODIFIED="1567747074910" TEXT="ohne Kentnis des Codes erscheint dieses Modell nicht logisch">
<icon BUILTIN="smily_bad"/>
</node>
<node CREATED="1567685731534" ID="ID_1106992346" MODIFIED="1567747074910" TEXT="ganz am Ende sto&#xdf;en zwei margin-bottom zusammen">
<node CREATED="1567685769667" ID="ID_862016071" MODIFIED="1567747074910" TEXT="es sei denn, man l&#xe4;&#xdf;t den margin aus der Coda weg"/>
<node CREATED="1567685784107" ID="ID_1885651108" MODIFIED="1567747074910" TEXT="dann ist aber der margin im prelude irgendwie unlogisch"/>
</node>
</node>
<node CREATED="1567685252758" ID="ID_1605614339" MODIFIED="1567747074910" TEXT="Model-3">
<icon BUILTIN="button_cancel"/>
<node CREATED="1567685258966" ID="ID_1030733863" MODIFIED="1567747074910" TEXT="au&#xdf;en herum legen">
<node CREATED="1567685272913" ID="ID_1989912863" MODIFIED="1567747074910" TEXT="vor den ersten Ruler"/>
<node CREATED="1567685289794" ID="ID_739347906" MODIFIED="1567747074910" TEXT="hinter den closing slope"/>
</node>
<node CREATED="1567685824058" ID="ID_162145047" MODIFIED="1567747074910" TEXT="ehr aufwendig zu implementieren">
<icon BUILTIN="stop-sign"/>
<node CREATED="1567685842827" ID="ID_181167044" MODIFIED="1567747074910" TEXT="das TrackProfile mu&#xdf; helfen"/>
<node CREATED="1567685860069" ID="ID_795679603" MODIFIED="1567747074911" TEXT="zus&#xe4;tzliches Argument withTopMargin"/>
</node>
<node CREATED="1567687928863" ID="ID_1146414337" MODIFIED="1567747074911" TEXT="aus Nutzer-Sicht formal die am meisten logische Variante"/>
<node CREATED="1567687943708" ID="ID_1755668453" MODIFIED="1567747074911" TEXT="bringt aber nichts im Hinblick auf einen box-shadow">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1567687981599" ID="ID_1859353136" MODIFIED="1567747074911" TEXT="im Gegenzug m&#xfc;&#xdf;te der Margin aus Prelude/Coda raus"/>
</node>
</node>
<node CREATED="1567688151519" ID="ID_1115827550" MODIFIED="1567747074911" TEXT="Beschlu&#xdf;: er wirkt auf den Content-Bereich">
<icon BUILTIN="yes"/>
<node CREATED="1567688183723" ID="ID_571433100" MODIFIED="1567747074911" TEXT="damit wird ein box-shadow auch hier voll nutzbar"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1611486837421" ID="ID_392294660" MODIFIED="1679072585362" TEXT="alle Clips im Track ber&#xfc;cksichtigen">
<arrowlink COLOR="#786096" DESTINATION="ID_62818590" ENDARROW="Default" ENDINCLINATION="-1193;64;" ID="Arrow_ID_1779091384" STARTARROW="None" STARTINCLINATION="817;64;"/>
<linktarget COLOR="#dc91e4" DESTINATION="ID_392294660" ENDARROW="Default" ENDINCLINATION="648;52;" ID="Arrow_ID_1413556921" SOURCE="ID_137005272" STARTARROW="None" STARTINCLINATION="843;52;"/>
<icon BUILTIN="yes"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1679072150446" HGAP="99" ID="ID_1559178425" MODIFIED="1679072189402" VSHIFT="2">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      sollte <i>theoretisch</i>&#160;funktionieren....
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
<node COLOR="#338800" CREATED="1679072212336" ID="ID_1532012219" MODIFIED="1679072219846" TEXT="generische Implementierung vorgesehen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1679072221005" ID="ID_744686625" MODIFIED="1679072247211">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <font face="Monospaced" size="2">ClipPresenter::determineRequiredVerticalExtension()</font>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
<node COLOR="#435e98" CREATED="1679072259248" ID="ID_1755439893" MODIFIED="1679072273200" TEXT="angelegt als &#xbb;template method&#xab;">
<icon BUILTIN="idea"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1679072354021" ID="ID_939752505" MODIFIED="1679072446356" TEXT="widget_-&gt;calcRequiredHeight()">
<icon BUILTIN="bell"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1679072363668" ID="ID_698148454" MODIFIED="1679072579065" TEXT="widget_-&gt;getVerticalOffset()">
<arrowlink COLOR="#ff4275" DESTINATION="ID_1508246286" ENDARROW="Default" ENDINCLINATION="1281;-45;" ID="Arrow_ID_1210551190" STARTARROW="None" STARTINCLINATION="515;46;"/>
<icon BUILTIN="bell"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1566956347881" ID="ID_1434222749" MODIFIED="1678407474208" TEXT="Koordinaten beachten">
<arrowlink COLOR="#feeccd" DESTINATION="ID_309596538" ENDARROW="Default" ENDINCLINATION="18;-79;" ID="Arrow_ID_46419716" STARTARROW="None" STARTINCLINATION="-24;79;"/>
<linktarget COLOR="#5c5dc2" DESTINATION="ID_1434222749" ENDARROW="Default" ENDINCLINATION="-123;0;" ID="Arrow_ID_1862539064" SOURCE="ID_764240247" STARTARROW="None" STARTINCLINATION="-876;0;"/>
<linktarget COLOR="#787099" DESTINATION="ID_1434222749" ENDARROW="Default" ENDINCLINATION="217;624;" ID="Arrow_ID_933310315" SOURCE="ID_1031158985" STARTARROW="None" STARTINCLINATION="264;15;"/>
<icon BUILTIN="yes"/>
<node CREATED="1566956361471" ID="ID_1879544719" MODIFIED="1576282358041" TEXT="Vorsicht bei gemeinsam genormten Koordinaten">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      weil dann der Platz f&#252;r den &quot;pinned&quot; Ruler redundant im Body-Canvas vorhanden ist!
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#435e98" CREATED="1567876399531" ID="ID_1578713642" MODIFIED="1582926955027" TEXT="genau.... jetzt hamma den Salat">
<icon BUILTIN="smiley-oh"/>
<node CREATED="1567876413663" ID="ID_1376431800" MODIFIED="1567876429537" TEXT="alle Content-Labels erscheinen nach untern verschoben">
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#338800" CREATED="1567876430941" FOLDED="true" ID="ID_1855510589" MODIFIED="1582926556111" TEXT="Ursache untersuchen">
<linktarget COLOR="#38acd3" DESTINATION="ID_1855510589" ENDARROW="Default" ENDINCLINATION="-764;-101;" ID="Arrow_ID_1877663178" SOURCE="ID_75969285" STARTARROW="None" STARTINCLINATION="570;60;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1582845817042" ID="ID_317035495" MODIFIED="1582901732132" TEXT="nebenbei aufgefallen">
<node CREATED="1582845824385" ID="ID_1853554200" MODIFIED="1582845841960" TEXT="Denkfehler beim Z&#xe4;hlen der Anzahl Pr&#xe4;fix-Elemente"/>
<node CREATED="1582845855165" ID="ID_1657667532" MODIFIED="1582845856441" TEXT="TrackBody::establishTrackSpace">
<node CREATED="1582845898576" ID="ID_1214624406" MODIFIED="1582845927319" TEXT="profile.pinnedPrefixCnt = 1 + rulers_.size();">
<arrowlink COLOR="#e10705" DESTINATION="ID_959308964" ENDARROW="Default" ENDINCLINATION="54;0;" ID="Arrow_ID_1772031431" STARTARROW="None" STARTINCLINATION="-1;44;"/>
</node>
<node CREATED="1582845900167" ID="ID_453347449" MODIFIED="1582845907889" TEXT="das ist falsch">
<icon BUILTIN="broken-line"/>
</node>
</node>
<node CREATED="1582845871107" ID="ID_959308964" MODIFIED="1582845922007" TEXT="die Gaps sind separate Elemente">
<linktarget COLOR="#e10705" DESTINATION="ID_959308964" ENDARROW="Default" ENDINCLINATION="54;0;" ID="Arrow_ID_1772031431" SOURCE="ID_1214624406" STARTARROW="None" STARTINCLINATION="-1;44;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#338800" CREATED="1582901642866" ID="ID_1916425956" MODIFIED="1582901724294" TEXT="bessere L&#xf6;sung...">
<icon BUILTIN="button_ok"/>
<node CREATED="1582901712969" ID="ID_532243486" MODIFIED="1582901722384" TEXT="empirisch vorgehen">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1582901692334" ID="ID_941827355" MODIFIED="1582901712145" TEXT="explizit auswerten und markieren">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      direkt in der Berechnungs-Schleife erkennen, wenn wir den Pr&#228;fix-Bereich durchschritten haben
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node CREATED="1582845744756" ID="ID_965171553" MODIFIED="1582902381463" TEXT="wir haben jeweils zwei Interpreter">
<icon BUILTIN="idea"/>
<node CREATED="1582845760250" ID="ID_1399771576" MODIFIED="1582845770516" TEXT="einer nur f&#xfc;r den feststehenden Overview-Ruler"/>
<node CREATED="1582845771288" ID="ID_1968190860" MODIFIED="1582845788754" TEXT="der zweite beginnt mit dem Content des Root-Track"/>
<node CREATED="1582845789534" ID="ID_1600590667" MODIFIED="1582845801976" TEXT="jeder z&#xe4;hlt seine line_ separat hoch"/>
</node>
<node CREATED="1582902389601" ID="ID_240179937" MODIFIED="1582902409203" TEXT="das hei&#xdf;t, hier sind definitiv zwei Koordinatensysteme involviert">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#435e98" CREATED="1582902428822" ID="ID_829811888" MODIFIED="1582902650580" TEXT="Ansatz(Versuch): &#xdc;bersetzung im DisplayFrame">
<icon BUILTIN="button_ok"/>
<node CREATED="1582902457871" ID="ID_1162389366" MODIFIED="1582902473485" TEXT="genau dort werden auch die Track-lokalen Koordinaten gebildet"/>
<node CREATED="1582902494453" ID="ID_986992726" MODIFIED="1582902504457" TEXT="CanvasOffsetHook::hookAdjY"/>
<node CREATED="1582902510004" ID="ID_1627491014" MODIFIED="1582902518936" TEXT="technische Details delegiert">
<node CREATED="1582902540815" ID="ID_857717809" MODIFIED="1582902540815" TEXT="TrackBody::establishTrackSpace"/>
<node COLOR="#338800" CREATED="1582902544283" ID="ID_76600735" MODIFIED="1582925563094" TEXT="dort versteckt: line nach Overview-Ruler auf 0 zur&#xfc;cksetzen">
<linktarget COLOR="#22376a" DESTINATION="ID_76600735" ENDARROW="Default" ENDINCLINATION="1007;48;" ID="Arrow_ID_984706037" SOURCE="ID_330989158" STARTARROW="None" STARTINCLINATION="325;16;"/>
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1582902593784" ID="ID_984846963" MODIFIED="1582902611866" TEXT="damit bekommen die sub-Tracks die real korrekten Start-Koordinaten"/>
</node>
</node>
<node COLOR="#338800" CREATED="1582902653211" ID="ID_1818419302" MODIFIED="1582926411285" TEXT="ab 2. Sub-Ebene immer noch falsch positioniert">
<icon BUILTIN="button_ok"/>
<node CREATED="1582903546261" ID="ID_1725318843" MODIFIED="1582903552175" TEXT="beobachte(Debugger)">
<node CREATED="1582903562092" ID="ID_510339383" MODIFIED="1582904078739" TEXT="establishTrackSpace">
<node CREATED="1582904081457" ID="ID_1429267862" MODIFIED="1582907004900" TEXT="ruler-Prefix(after) = 107">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1429267862" ENDARROW="Default" ENDINCLINATION="375;31;" ID="Arrow_ID_650469273" SOURCE="ID_1193104474" STARTARROW="None" STARTINCLINATION="438;0;"/>
</node>
<node CREATED="1582904219421" ID="ID_672384800" MODIFIED="1582904230295" TEXT="Root-Track-content = 122"/>
<node CREATED="1582904431278" ID="ID_1322672602" MODIFIED="1582907742555" TEXT="Track1-startLine = 0+127">
<icon BUILTIN="button_ok"/>
<node CREATED="1582904514539" ID="ID_1295892623" MODIFIED="1582904521816" TEXT="contentOffset = 0"/>
<node CREATED="1582904560362" ID="ID_752277468" MODIFIED="1582904566598" TEXT="Track1-content = 122"/>
</node>
<node CREATED="1582904626737" ID="ID_1813609462" MODIFIED="1582904642294" TEXT="line == 122 + 127 == 249"/>
<node CREATED="1582904731713" ID="ID_1658550754" MODIFIED="1582907808467" TEXT="Track2-startLiine = 0+249">
<icon BUILTIN="button_ok"/>
<node CREATED="1582904827935" ID="ID_1958391380" MODIFIED="1582904836490" TEXT="rulerHeight = 20 + 0"/>
<node CREATED="1582904870226" ID="ID_545156872" MODIFIED="1582904875725" TEXT="contentOffset = 48">
<node CREATED="1582907863745" ID="ID_857608861" MODIFIED="1582907902330" TEXT="line == 297 (249+48)">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1582904995139" ID="ID_1851164004" MODIFIED="1582905014710" TEXT="Track2-content = 122 (80 + deco)"/>
<node CREATED="1582905032854" ID="ID_641952627" MODIFIED="1582905063158" TEXT="line == 48 +122 == 170">
<node CREATED="1582907950438" ID="ID_1853966130" MODIFIED="1582908083600" TEXT="line(global) == 419 (249+170)">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1582905091279" ID="ID_1290848966" MODIFIED="1582905097523" TEXT="+5 (down-slope)">
<node CREATED="1582907999767" ID="ID_1914135364" MODIFIED="1582908088879" TEXT="line(global) == 424">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1582905153591" ID="ID_1291398442" MODIFIED="1582908037189" TEXT="Track-21-startLine := 249 + 175 == 424">
<icon BUILTIN="button_ok"/>
<node CREATED="1582905291109" ID="ID_99409263" MODIFIED="1582905300304" TEXT="contentOffset = 0"/>
<node CREATED="1582905314298" ID="ID_1814819446" MODIFIED="1582905321029" TEXT="Track21-content = 122"/>
</node>
<node CREATED="1582905358964" ID="ID_20842083" MODIFIED="1582905474065" TEXT="line == 175 + 122 == 297"/>
<node CREATED="1582905524030" ID="ID_271881918" MODIFIED="1582908073123" TEXT="Track-22-startLine := 249 + 297 == 546">
<icon BUILTIN="button_ok"/>
<node CREATED="1582905686984" ID="ID_1911307638" MODIFIED="1582905694883" TEXT="rulerHeight = 20 + 0"/>
<node CREATED="1582905727971" ID="ID_1314377409" MODIFIED="1582905733758" TEXT="contentOffset = 48">
<node CREATED="1582908146046" ID="ID_738674814" MODIFIED="1582908177368" TEXT="line(global) == 594(546+48)">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1582905766220" ID="ID_157127194" MODIFIED="1582905792493" TEXT="Track22-content = 170 - 48 == 122"/>
<node CREATED="1582905830637" ID="ID_899096367" MODIFIED="1582905843337" TEXT="line == 48 + 122 + 5 == 175"/>
<node CREATED="1582905896753" ID="ID_381270881" MODIFIED="1582908235770" TEXT="Track221-startLine := 546 + 175 == 721">
<icon BUILTIN="button_ok"/>
<node CREATED="1582906289133" ID="ID_1734369263" MODIFIED="1582906297119" TEXT="rulerHeigt = 20 +0"/>
<node CREATED="1582906298092" ID="ID_1471119167" MODIFIED="1582906302995" TEXT="contentOffset = 48">
<node CREATED="1582908287463" ID="ID_1992316773" MODIFIED="1582908400297" TEXT="line(global) == 769(721+48)">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1582906325651" ID="ID_1127420186" MODIFIED="1582906346780" TEXT="line = 48 + 122 == 170"/>
</node>
<node CREATED="1582906387686" ID="ID_1480877285" MODIFIED="1582906434468" TEXT="line == 175+170 == 345">
<node CREATED="1582908377032" ID="ID_950247145" MODIFIED="1582908395915" TEXT="line(global) == 891(546+345)">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1582906440264" ID="ID_1906259495" MODIFIED="1582908538979" TEXT="Track222-startLine := 546 + 345 == 891">
<icon BUILTIN="button_ok"/>
<node CREATED="1582906513386" ID="ID_1921963697" MODIFIED="1582906518050" TEXT="contentOffset = 0"/>
<node CREATED="1582906527452" ID="ID_1177882770" MODIFIED="1582906540015" TEXT="line = 122"/>
</node>
<node CREATED="1582906560121" ID="ID_1803290356" MODIFIED="1582906571437" TEXT="line == 345 + 122 == 467">
<node CREATED="1582908565738" ID="ID_112631959" MODIFIED="1582908605833" TEXT="line(global) == 1013(546+467)">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node CREATED="1582906612443" ID="ID_677398663" MODIFIED="1582906645875" TEXT="line == 297 + 467 == 764"/>
</node>
<node CREATED="1582906668404" ID="ID_518041792" MODIFIED="1582908632933" TEXT="line == 249 + 764 == 1013">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1582906724418" ID="ID_201815304" MODIFIED="1582908692685" TEXT="line := 1027 (+14 slope-up)">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1582906786918" ID="ID_1986285948" MODIFIED="1582908719783" STYLE="fork" TEXT="line := 1027 + 11(botMar) + 5(TIMELINE_BOTTOM_PADDING) == 1043">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1986285948" ENDARROW="Default" ENDINCLINATION="281;0;" ID="Arrow_ID_1870504607" SOURCE="ID_356719128" STARTARROW="None" STARTINCLINATION="281;0;"/>
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1582906910047" ID="ID_356719128" MODIFIED="1582906981791" TEXT="-&gt; overallHeight = 1043">
<arrowlink DESTINATION="ID_1986285948" ENDARROW="Default" ENDINCLINATION="281;0;" ID="Arrow_ID_1870504607" STARTARROW="None" STARTINCLINATION="281;0;"/>
</node>
<node CREATED="1582906933077" ID="ID_1193104474" MODIFIED="1582907004900" TEXT="-&gt; rulerHeight = 107">
<arrowlink DESTINATION="ID_1429267862" ENDARROW="Default" ENDINCLINATION="375;31;" ID="Arrow_ID_650469273" STARTARROW="None" STARTINCLINATION="438;0;"/>
</node>
</node>
<node CREATED="1582903553636" ID="ID_421630336" MODIFIED="1582903561127" TEXT="Zeichen-Code">
<node COLOR="#338800" CREATED="1582909038719" ID="ID_24233739" MODIFIED="1582909049674" TEXT="oberer Canvas: H&#xf6;he OK">
<icon BUILTIN="button_ok"/>
<node CREATED="1582909051606" ID="ID_1642616871" MODIFIED="1582909067741" TEXT="(w,h) == (248,107)">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1582908797551" ID="ID_1600925226" MODIFIED="1582908821787" TEXT="unteren Canvas durchverfolgt: alle globalen Zeilen korrekt">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1582908823851" ID="ID_1086427567" MODIFIED="1582926407709" TEXT="danach: H&#xf6;he weicht ab">
<arrowlink COLOR="#4f4bb1" DESTINATION="ID_407125396" ENDARROW="Default" ENDINCLINATION="59;-200;" ID="Arrow_ID_902537277" STARTARROW="None" STARTINCLINATION="-179;19;"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1582908842568" ID="ID_528889024" MODIFIED="1582908844275" TEXT="TimelineCanvas::drawGrounding"/>
<node CREATED="1582908852313" ID="ID_1725810299" MODIFIED="1582908890292" TEXT="(w,h) == (248,936)">
<icon BUILTIN="broken-line"/>
</node>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1582923677605" ID="ID_69601825" MODIFIED="1582923752314" TEXT="der refHook schl&#xe4;gt bereits den ganzen Offset drauf">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1582923645762" ID="ID_1584147087" MODIFIED="1582923659699" TEXT="w&#xe4;hrend der Beobachtung springt&apos;s mir geradezu ins Auge..."/>
<node CREATED="1582923715319" ID="ID_1041462784" MODIFIED="1582923727431" TEXT="dann kanns ja gar nicht funktionieren">
<icon BUILTIN="smiley-oh"/>
</node>
<node CREATED="1582923663958" ID="ID_573118783" MODIFIED="1582923713665" TEXT="wie immer">
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node COLOR="#338800" CREATED="1582923858068" ID="ID_373464934" MODIFIED="1582924053211" TEXT="L&#xf6;sung: Verkettung bereits im ViewHook anlegen">
<icon BUILTIN="button_ok"/>
<node CREATED="1582923873957" ID="ID_1453835216" MODIFIED="1582923895363" TEXT="der neue Offset-Hook mu&#xdf; den Offset des alten Hook entfernen k&#xf6;nnen"/>
<node CREATED="1582923896129" ID="ID_188826667" MODIFIED="1582923913079" TEXT="wir wollen auch zur Laufzeit keine Dekorator-Ketten-Aufrufe">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1582923916162" ID="ID_879903056" MODIFIED="1582923946222">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      daher Policy &#228;ndern: jeder schl&#228;gt den <b>totalen absoluten</b>&#160; Offset drauf
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1582923948176" ID="ID_1562514737" MODIFIED="1582924052715" TEXT="und damit das geht, mu&#xdf; man irgendwo vom reinen ViewHook starten k&#xf6;nnen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...und dieser mu&#223; deshalb auch schon eine Funktion <font face="Monospaced">getAnchorHook()</font>&#160;auf dem API bieten
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#338800" CREATED="1582924064889" ID="ID_1581753872" MODIFIED="1582924093938" TEXT="Template umbennen in ViewRefHook und hochschieben">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1582902750166" ID="ID_407125396" MODIFIED="1582926396858" TEXT="Canvas-H&#xf6;he insgesamt falsch (zu gering)">
<linktarget COLOR="#4f4bb1" DESTINATION="ID_407125396" ENDARROW="Default" ENDINCLINATION="59;-200;" ID="Arrow_ID_902537277" SOURCE="ID_1086427567" STARTARROW="None" STARTINCLINATION="-179;19;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1582925333183" ID="ID_370690048" MODIFIED="1582925346001" TEXT="liegt an der Unklarheit der Bezugsssysteme">
<node CREATED="1582925351805" ID="ID_1047753842" MODIFIED="1582925363463" TEXT="936 = 1043 - 107"/>
<node CREATED="1582925395639" ID="ID_604617266" MODIFIED="1582925408105" TEXT="also: wann/wo gelten die absoluten Koordinaten"/>
</node>
<node CREATED="1582925410396" ID="ID_1772952996" MODIFIED="1582925421631" TEXT="Beschlu&#xdf;: alle Berechnungen im Canvas sind relativ">
<node CREATED="1582925422715" ID="ID_543762048" MODIFIED="1582925436017" TEXT="sinnvoll, da ich mich jetzt f&#xfc;r relative Koordinaten entschieden haben"/>
<node CREATED="1582925436929" ID="ID_509859650" MODIFIED="1582925449096" TEXT="d.h. jeder Canvas hat sein eigenes Bezugssystem"/>
<node CREATED="1582925449892" ID="ID_1269496698" MODIFIED="1582925470344" TEXT="und auch die Zeile in establishTrackSpace sollte relativ zum Canvas gelten">
<node CREATED="1582925471236" ID="ID_288322254" MODIFIED="1582925476432" TEXT="was sie jetzt bereits tut"/>
<node CREATED="1582925477248" ID="ID_330989158" MODIFIED="1582926537321" TEXT="mein &quot;versteckter Trick&quot; ist mithin sogar logisch konsistent">
<arrowlink COLOR="#22376a" DESTINATION="ID_76600735" ENDARROW="Default" ENDINCLINATION="1007;48;" ID="Arrow_ID_984706037" STARTARROW="None" STARTINCLINATION="325;16;"/>
<linktarget COLOR="#1d40c9" DESTINATION="ID_330989158" ENDARROW="Default" ENDINCLINATION="-289;13;" ID="Arrow_ID_420585761" SOURCE="ID_103638255" STARTARROW="None" STARTINCLINATION="219;13;"/>
</node>
</node>
</node>
<node CREATED="1582925575929" ID="ID_1677196860" MODIFIED="1582925590560" TEXT="damit mu&#xdf; auch jede H&#xf6;he separat als Ganzes auf den Canvas angewendet werden"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1582926428346" ID="ID_1968205234" MODIFIED="1582926440570" TEXT="Restrukturierung: lokale und absolute Koordinaten">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1582926442161" ID="ID_33511214" MODIFIED="1582926545738" TEXT="Beschlu&#xdf;: Canvas verwendet seine eigenen lokalen Koordinaten">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1582926466421" ID="ID_103638255" MODIFIED="1582926537321" TEXT="establishTrackSpace mu&#xdf; in diesen arbeiten">
<arrowlink COLOR="#1d40c9" DESTINATION="ID_330989158" ENDARROW="Default" ENDINCLINATION="-289;13;" ID="Arrow_ID_420585761" STARTARROW="None" STARTINCLINATION="219;13;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1611478078314" ID="ID_922960853" MODIFIED="1611478247952" TEXT="Fazit: L&#xf6;sung besteht darin...">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node CREATED="1611478094013" ID="ID_161468675" MODIFIED="1611478110959" TEXT="in jedem Track explizit einen Content-Offset zu speichern"/>
<node CREATED="1611478132776" ID="ID_107298111" MODIFIED="1611478155731" TEXT="damit &#xfc;berall relative (lokale) Bezugssysteme zu erm&#xf6;glichen"/>
<node CREATED="1611478208171" ID="ID_383778310" MODIFIED="1611478224282" TEXT="in jedem (Teil)-Canvas die &quot;nat&#xfc;rlichen&quot; Eigen-Koordinaten zu verwenden"/>
<node CREATED="1611478227499" ID="ID_1352834162" MODIFIED="1611482079208" TEXT="die &#xdc;bersetzung komplett via ViewHook wegzuabstrahieren">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      tats&#228;chlich ist es dann ein Sub-Interface: der CanvasHook. Und dieser
    </p>
    <ul>
      <li>
        kennt (nur) implizit dein Ursprung seines relativen Bezugssystems
      </li>
      <li>
        hat aber auch einen Callback, um formell relativ zu sich selbst einen sub-CanvasHook zu erschaffen
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node CREATED="1611481905544" ID="ID_269249582" MODIFIED="1611482248833" TEXT="aber: ViewHooks &#x2015; keine generische Quer-Beweglichkeit">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...trotzdem wurde die Idee eines generischen UI-Layout-Frameworks nach gr&#252;ndlicher Untersuchung aufgegeben; dies System der ViewHooks stiftet uns also &quot;nur&quot; ein Baumuster, und wir beschr&#228;nken uns auf die bekannte kleine Zahl der konkreten F&#228;lle, welche weitgehend im DisplayFrame geb&#252;ndelt sind. Deshalb gibt es nun hilfsweise das Zugangs-Interface ViewHooks, von dem man alle relevanten, speziell getypten ViewHook, bzw. Canvas-Hook eben <i>im aktuellen Display-Frame</i>&#160;(relatives Koordinatensystem) beziehen kann.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1611486170153" ID="ID_137005272" MODIFIED="1611487171442" TEXT="tats&#xe4;chlich ist DisplayFrame der CanvasHook">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...und zwar f&#252;r den einzigen relevanten Canvas, das ist n&#228;mlich der untere, in der ScrolledPane, mit dem Tack-Content. Wir verwenden inzwischen in jedem Canvas nur noch die lokalen Koordinaten, und daher addieren nun die jeweilgen TrackBody auch ihre eigene startLine_ in lokalen Koordinaten auf. Da der DisplayFrame direkten Zugang zu &quot;seinem&quot; zugeh&#246;rigen TrackBody hat, bekommen wir &#252;ber diesen Trick stets punktgenaue, lokale Koordinaten, solange wir uns im Geltungsbereich dieses TrackBody aufhalten. Das bedeutet, theoretisch k&#246;nnte ein Clip auch weit unterhalb des TrackBody angeheftet werden. So etwas mu&#223; dann eigens im DisplayEvaluationPass ausgeschlossen werden
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#dc91e4" DESTINATION="ID_392294660" ENDARROW="Default" ENDINCLINATION="648;52;" ID="Arrow_ID_1413556921" STARTARROW="None" STARTINCLINATION="843;52;"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1566955936904" ID="ID_925495886" MODIFIED="1679077819636" TEXT="vertikale Koordinaten">
<icon BUILTIN="info"/>
<node CREATED="1566955943327" FOLDED="true" ID="ID_309596538" MODIFIED="1582926985844" TEXT="&quot;nat&#xfc;rlich&quot; ist es, wenn jeder Canvas eigene Koordinaten hat">
<arrowlink COLOR="#5d3885" DESTINATION="ID_1411864272" ENDARROW="Default" ENDINCLINATION="-1041;0;" ID="Arrow_ID_1078761950" STARTARROW="None" STARTINCLINATION="-660;30;"/>
<linktarget COLOR="#feeccd" DESTINATION="ID_309596538" ENDARROW="Default" ENDINCLINATION="18;-79;" ID="Arrow_ID_46419716" SOURCE="ID_1434222749" STARTARROW="None" STARTINCLINATION="-24;79;"/>
<icon BUILTIN="idea"/>
<node CREATED="1566955975338" ID="ID_1779775058" MODIFIED="1566955999837">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      die gekoppelten Scrollbars funktionieren dann <i>&quot;von selber&quot;</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1566956005927" ID="ID_1438858393" MODIFIED="1566956013610" TEXT="Gr&#xf6;&#xdf;enberechnung wird einfach">
<node CREATED="1568384121791" ID="ID_1073937095" MODIFIED="1568384131713" TEXT="ich neige immer mehr dieser L&#xf6;sung zu">
<icon BUILTIN="smiley-neutral"/>
</node>
<node CREATED="1582847591411" ID="ID_262535896" MODIFIED="1582847617087" TEXT="das hei&#xdf;t: man versteckt diese zus&#xe4;tzliche Komplexit&#xe4;t als lokaler Belang"/>
</node>
<node CREATED="1582847416211" ID="ID_1315976508" MODIFIED="1582847542678">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <i>dann</i>&#160;mu&#223; ich aber die zwei Bezugssyteme wirklich auseinanderhalten
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1582847500246" ID="ID_1385190844" MODIFIED="1582847507162" TEXT="globale logische Koordinaten"/>
<node CREATED="1582847508092" ID="ID_38965837" MODIFIED="1582847520169" TEXT="im unteren Canvas: lokal justierte Koordinaten"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1566955956741" FOLDED="true" ID="ID_1266359061" MODIFIED="1612031448843" TEXT="wie k&#xf6;nnen wir dann aber Clips korrekt positionieren?">
<arrowlink COLOR="#4943a0" DESTINATION="ID_1270677756" ENDARROW="Default" ENDINCLINATION="954;-120;" ID="Arrow_ID_1809237545" STARTARROW="None" STARTINCLINATION="-298;16;"/>
<icon BUILTIN="help"/>
<node CREATED="1568383045628" ID="ID_557151257" MODIFIED="1576282358040" TEXT="daf&#xfc;r brauchen wir ohnehin eine access-Funtkion">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      weil die Canvas-Controls tief eingewickelt in der Struktur liegen
    </p>
  </body>
</html></richcontent>
<node CREATED="1568383095404" ID="ID_393689214" MODIFIED="1568383114645" TEXT="Ausl&#xf6;sen wird das der ClipPresenter"/>
<node CREATED="1568383358860" ID="ID_619192777" LINK="#ID_633007604" MODIFIED="1568384041962" TEXT="den tats&#xe4;chlichen Zugriff k&#xf6;nnte der DisplayFrame haben"/>
</node>
<node CREATED="1568383386424" ID="ID_610235776" MODIFIED="1568383405042" TEXT="dieser Accessor k&#xf6;nnte eine Koordinaten-Transformation machen"/>
<node COLOR="#338800" CREATED="1576975048525" ID="ID_1095950959" MODIFIED="1612031428184" TEXT="zusammen mit dem Sub-Attachment gel&#xf6;st">
<arrowlink COLOR="#406fc9" DESTINATION="ID_272168913" ENDARROW="Default" ENDINCLINATION="-1471;82;" ID="Arrow_ID_1415590908" STARTARROW="None" STARTINCLINATION="-1695;79;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1611787774512" FOLDED="true" ID="ID_1848866838" MODIFIED="1612031381604" TEXT="Problem: Layout-Anpassung">
<linktarget COLOR="#6bce9f" DESTINATION="ID_1848866838" ENDARROW="Default" ENDINCLINATION="-842;72;" ID="Arrow_ID_1370580747" SOURCE="ID_1798941398" STARTARROW="None" STARTINCLINATION="1148;66;"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1611787832152" ID="ID_421588952" MODIFIED="1611787838787" TEXT="Display-Evaluation-Pass"/>
<node COLOR="#435e98" CREATED="1611787839919" ID="ID_791476178" MODIFIED="1612031367778" TEXT="erfordert ver&#xe4;nderte Interpretation der Koordinaten">
<arrowlink COLOR="#675b85" DESTINATION="ID_1709866969" ENDARROW="Default" ENDINCLINATION="684;566;" ID="Arrow_ID_541728210" STARTARROW="None" STARTINCLINATION="-1876;104;"/>
</node>
<node COLOR="#435e98" CREATED="1611788484755" ID="ID_1242261012" MODIFIED="1612019536549" TEXT="wie kann eine Neu-Anordnung &#xfc;berhaupt bewirkt werden?">
<icon BUILTIN="help"/>
<node CREATED="1611789188712" ID="ID_292272154" MODIFIED="1611789377585" TEXT="Problem: wer kennt die Koordinaten?">
<node CREATED="1611789203502" ID="ID_974096123" MODIFIED="1611789223591" TEXT="die urspr&#xfc;nglichen Koordinaten sind schon eine Summe"/>
<node CREATED="1611789225054" ID="ID_1746948156" MODIFIED="1611789248019" TEXT="ein Dekorator (RelativeCanvasHook) hat sie manipuliert"/>
<node CREATED="1611789249032" ID="ID_1964954296" MODIFIED="1611789268787" TEXT="sie wurden nur Gtk-Canvas-Control selber gespeichert"/>
</node>
<node CREATED="1611789382773" ID="ID_1721577123" MODIFIED="1611789397911" TEXT="&#x27f9; wir brauchen...">
<node CREATED="1611789399027" ID="ID_61457943" MODIFIED="1611789413824" TEXT="entweder einen Zugang zu den roh-Koordinaten"/>
<node CREATED="1611789415136" ID="ID_1771759059" MODIFIED="1611789426867" TEXT="oder ein Delta der Layout-Anpassung"/>
</node>
</node>
<node COLOR="#338800" CREATED="1612019484247" ID="ID_1243648856" MODIFIED="1612031378780" TEXT="L&#xf6;sung: den 3.Pass der DisplayEvaluation auch hierf&#xfc;r nutzen">
<icon BUILTIN="button_ok"/>
<node CREATED="1612019507497" ID="ID_877065301" MODIFIED="1612019522485" TEXT="alle Widgets auf dem Canvas...."/>
<node CREATED="1612019523193" ID="ID_1272964807" MODIFIED="1612019533076" TEXT="...per move() repositionieren"/>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1564934012352" ID="ID_909641864" MODIFIED="1679078002475" TEXT="korrekt zeichnen analog zum CSS Layout-Modell">
<arrowlink COLOR="#556dd4" DESTINATION="ID_756463948" ENDARROW="Default" ENDINCLINATION="-507;0;" ID="Arrow_ID_1335568264" STARTARROW="None" STARTINCLINATION="582;34;"/>
<linktarget COLOR="#47d95e" DESTINATION="ID_909641864" ENDARROW="Default" ENDINCLINATION="-129;8;" ID="Arrow_ID_1785938082" SOURCE="ID_859006044" STARTARROW="None" STARTINCLINATION="-87;-106;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1679078015422" ID="ID_705241250" MODIFIED="1679078022355" TEXT="weitgehend gel&#xf6;st...">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1679078023643" HGAP="28" ID="ID_857274090" MODIFIED="1679078167409" TEXT="einige offene Enden" VSHIFT="-24">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <ul>
      <li>
        Feature-Definition der &#187;Ruler&#171; noch nicht gegeben
      </li>
      <li>
        viele Details zum &#187;Content&#171; in den Tracks sind noch nicht klar
      </li>
      <li>
        vertikale Positionierung von Content <i>innerhalb</i>&#160;der Tracks ist noch nicht gel&#246;st
      </li>
    </ul>
  </body>
</html></richcontent>
<arrowlink COLOR="#ac6889" DESTINATION="ID_1179051544" ENDARROW="Default" ENDINCLINATION="156;56;" ID="Arrow_ID_1100428264" STARTARROW="None" STARTINCLINATION="592;-47;"/>
<arrowlink COLOR="#833462" DESTINATION="ID_1673637596" ENDARROW="Default" ENDINCLINATION="363;27;" ID="Arrow_ID_1860808311" STARTARROW="None" STARTINCLINATION="743;0;"/>
<icon BUILTIN="bell"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1564955053506" ID="ID_1662307644" MODIFIED="1679073402095" TEXT="Gr&#xf6;&#xdf;en-Steuerung">
<icon BUILTIN="hourglass"/>
<node CREATED="1564955157184" ID="ID_1091509436" MODIFIED="1564955185828" TEXT="Aufgabe">
<icon BUILTIN="info"/>
<node CREATED="1564955132311" ID="ID_1839818990" MODIFIED="1564955142481" TEXT="mu&#xdf; vertikalen Platz allozieren">
<node CREATED="1564955168962" ID="ID_1426241163" MODIFIED="1564955173093" TEXT="abh&#xe4;ngig vom Content"/>
<node CREATED="1564955174673" ID="ID_1616823062" MODIFIED="1564955181202" TEXT="rekursive Beziehung">
<icon BUILTIN="clanbomber"/>
</node>
</node>
<node CREATED="1564955143913" ID="ID_758635487" MODIFIED="1564955153144" TEXT="und dann im Gleichlauf im Header / Body verwenden"/>
</node>
<node COLOR="#338800" CREATED="1564955192182" ID="ID_1493629193" MODIFIED="1679073375897" TEXT="Gr&#xf6;&#xdf;e des Canvas setzen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1564955220383" ID="ID_300626537" MODIFIED="1679073373770" TEXT="Ausdehnung berechnen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1564955227226" ID="ID_1402788844" MODIFIED="1679073040285" TEXT="erster Entwurf: mehrfach rechnen, Werte merken">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1679073359239" ID="ID_137522622" MODIFIED="1679073371266" TEXT="vertikale Ausdehnung ergibt sich aus dem Profil-Render-Pass">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1679073041362" ID="ID_1838761224" MODIFIED="1679073347163" TEXT="ZoomWindow &#xfc;bernimmt die Berechnung horizontal">
<arrowlink COLOR="#71b1ad" DESTINATION="ID_123640005" ENDARROW="Default" ENDINCLINATION="889;28;" ID="Arrow_ID_835967440" STARTARROW="None" STARTINCLINATION="1146;63;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1582849672936" ID="ID_1387330222" MODIFIED="1679073035821" TEXT="2023: nicht sicher ob es schon korrekt ist">
<icon BUILTIN="bell"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1679072757616" ID="ID_859006044" MODIFIED="1679072846462" TEXT="#1203 CSS styling for a properly shaded track profile">
<arrowlink COLOR="#47d95e" DESTINATION="ID_909641864" ENDARROW="Default" ENDINCLINATION="-129;8;" ID="Arrow_ID_1785938082" STARTARROW="None" STARTINCLINATION="-87;-106;"/>
<icon BUILTIN="flag-yellow"/>
<node COLOR="#338800" CREATED="1679072896857" ID="ID_385103971" MODIFIED="1679072909390" TEXT="vertikale Struktur gem&#xe4;&#xdf; Struktur-Profil">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1679072924937" ID="ID_1728495568" MODIFIED="1679072932126" TEXT="Styles im Zeichen-Code aufgreifen">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1567683913947" ID="ID_704534518" MODIFIED="1679072939881" TEXT="(optional) zus&#xe4;tzliche Schattierung im Overlay-Pass zeichnen">
<icon BUILTIN="hourglass"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1566525274854" ID="ID_1976574053" MODIFIED="1679072952761" TEXT="Vorsicht: auch horizontal gen&#xfc;gend Platz schaffen">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
<node CREATED="1567689612779" HGAP="9" ID="ID_1142611198" MODIFIED="1567689628166" TEXT="Probleme" VSHIFT="2">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1567689637751" ID="ID_1333933230" MODIFIED="1567689647034" TEXT="Scrollbar verschwindet nach Fokus-Verlust">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1582988892133" ID="ID_483543888" MODIFIED="1582988892133" TEXT="#1208 automatic vertical scrollbar malfunctioning">
<linktarget COLOR="#8c6572" DESTINATION="ID_483543888" ENDARROW="Default" ENDINCLINATION="544;-34;" ID="Arrow_ID_759404699" SOURCE="ID_829958563" STARTARROW="None" STARTINCLINATION="395;28;"/>
<icon BUILTIN="flag-yellow"/>
</node>
<node CREATED="1567689657945" ID="ID_243238670" MODIFIED="1567689670071" TEXT="wird durch Gr&#xf6;&#xdf;en&#xe4;nderung wieder sichtbar"/>
<node CREATED="1567689911283" ID="ID_1726946456" MODIFIED="1567689930883" TEXT="auch das Mausrad wirkt erst wieder nach Gr&#xf6;&#xdf;en&#xe4;nderung"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1567689931927" ID="ID_974682979" MODIFIED="1567689942119" TEXT="das deutet auf einen Fehler in der Allokation hin">
<icon BUILTIN="flag-yellow"/>
</node>
<node CREATED="1567869494614" ID="ID_244849159" MODIFIED="1567869662204" TEXT="m&#xf6;glicher Workaround: auf das &quot;configureEvent&quot; reagieren">
<arrowlink COLOR="#819eaf" DESTINATION="ID_842897291" ENDARROW="Default" ENDINCLINATION="1085;0;" ID="Arrow_ID_704507451" STARTARROW="None" STARTINCLINATION="2673;-176;"/>
<icon BUILTIN="idea"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1568383963154" ID="ID_1080514398" MODIFIED="1568383975298" TEXT="hab ich da schon was gemacht?">
<icon BUILTIN="help"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1568383976601" ID="ID_120892436" MODIFIED="1568383991832" TEXT="besteht das Problem noch?">
<icon BUILTIN="help"/>
</node>
</node>
</node>
<node CREATED="1567689738430" ID="ID_335898798" MODIFIED="1567689747264" TEXT="feine Zeichenfehler an der Sto&#xdf;fl&#xe4;che">
<node CREATED="1567689750410" ID="ID_1517735190" MODIFIED="1567689771647" TEXT="...von zwei Bereichen mit box-shadow"/>
<node CREATED="1567689772565" ID="ID_1542367602" MODIFIED="1576282358040" TEXT="...sofern der box-shadow den im Zeichenvorgang abgedeckten Bereich &#xfc;berschreitet">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      er wird von GTK eigentlich korrekt &#252;ber die Nachbarbereiche dar&#252;ber gezeichnet.
    </p>
    <p>
      Aber an der Nahtstelle entsteht ein helle Linie von 1/2 Pixel Breite,
    </p>
    <p>
      die sich nur beim Scrollen bemerkbar macht
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1567689845067" ID="ID_1441909594" MODIFIED="1576282358039" TEXT="ich betrachte das Problem als eigentlich irrelevant">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      man soll ohnehin keinen so gro&#223;en box-shadow verwenden
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1679073569262" ID="ID_1588787668" MODIFIED="1679073603054" TEXT="verbleibende Probleme in der Layout-Steuerung">
<icon BUILTIN="messagebox_warning"/>
<icon BUILTIN="hourglass"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1566689183161" ID="ID_1366095324" MODIFIED="1678063263325" TEXT="Layout im Track-Head immer noch etwas komisch">
<arrowlink COLOR="#b74f6e" DESTINATION="ID_1600275521" ENDARROW="Default" ENDINCLINATION="276;749;" ID="Arrow_ID_614998223" STARTARROW="None" STARTINCLINATION="644;37;"/>
<icon BUILTIN="bell"/>
</node>
<node CREATED="1678063155834" ID="ID_774623134" MODIFIED="1679073584761" TEXT="ein Problem k&#xf6;nnte die Verteilung zus&#xe4;tzlcher vertikaler Ausdehnung sein">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...dar&#252;ber bin ich auch beim Zeichnen der Connector im StaveBracket gestolpert
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1678063198596" ID="ID_1800094446" MODIFIED="1679073586554" TEXT="wenn man den Splitter zieht, springt die vertikale Platzverteilung">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      sichtbar an der H&#246;he der Sub-Scope-Verbindungen auf den StaveBrackets
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1611914243018" ID="ID_604450209" MODIFIED="1611915210013" TEXT="Clip-Anzeige einbinden">
<linktarget COLOR="#aa6852" DESTINATION="ID_604450209" ENDARROW="Default" ENDINCLINATION="-1233;136;" ID="Arrow_ID_186901681" SOURCE="ID_1839157029" STARTARROW="None" STARTINCLINATION="-480;35;"/>
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1611914301682" ID="ID_867069834" MODIFIED="1611915247263" TEXT="ClipPresenter bauen">
<arrowlink COLOR="#d03a17" DESTINATION="ID_834517953" ENDARROW="Default" ENDINCLINATION="-144;-652;" ID="Arrow_ID_1292343123" STARTARROW="None" STARTINCLINATION="403;48;"/>
<icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1611915255650" HGAP="83" ID="ID_734202635" MODIFIED="1611915298195" TEXT="Klasse anlegen" VSHIFT="-3">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1611915265289" HGAP="85" ID="ID_245617141" MODIFIED="1611915302849" TEXT="Diff-Handler definieren" VSHIFT="2">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1611915316586" HGAP="94" ID="ID_1248959265" MODIFIED="1612031249722" TEXT="DisplayEvaluation - Anbindung" VSHIFT="-5">
<arrowlink COLOR="#5c849c" DESTINATION="ID_1488484275" ENDARROW="Default" ENDINCLINATION="-838;79;" ID="Arrow_ID_1236233773" STARTARROW="None" STARTINCLINATION="612;56;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1611914423505" ID="ID_498480986" MODIFIED="1611914441536" TEXT="Clip-Widget integrieren">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1480741374451" FOLDED="true" ID="ID_1270677756" MODIFIED="1582847535244" TEXT="in Display injizieren">
<linktarget COLOR="#4943a0" DESTINATION="ID_1270677756" ENDARROW="Default" ENDINCLINATION="954;-120;" ID="Arrow_ID_1809237545" SOURCE="ID_1266359061" STARTARROW="None" STARTINCLINATION="-298;16;"/>
<linktarget COLOR="#fd654f" DESTINATION="ID_1270677756" ENDARROW="Default" ENDINCLINATION="-300;38;" ID="Arrow_ID_278984117" SOURCE="ID_1043075543" STARTARROW="None" STARTINCLINATION="131;-344;"/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1568383480998" ID="ID_263963478" MODIFIED="1568383491356" TEXT="Problem: Zugang zum Canvas">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1568383512509" ID="ID_1358982564" MODIFIED="1568383526344" TEXT="durchschneidet die hierarchische Ordnung">
<node CREATED="1568383534499" ID="ID_608263529" MODIFIED="1568383545165" TEXT="denn der Canvas ist inh&#xe4;rent global"/>
<node CREATED="1568383546005" ID="ID_1965015990" MODIFIED="1568383556367" TEXT="(tats&#xe4;chlich geh&#xf6;rt er dem DisplayManager)"/>
</node>
<node CREATED="1568383561002" ID="ID_1707558582" MODIFIED="1568383593930" TEXT="L&#xf6;ungsans&#xe4;tze">
<icon BUILTIN="idea"/>
<node CREATED="1568383568950" ID="ID_1484652442" MODIFIED="1583678291351" TEXT="&#xfc;ber den Display-Manager gehen">
<icon BUILTIN="button_cancel"/>
<node CREATED="1568383620427" ID="ID_879415775" MODIFIED="1568383626685" TEXT="gef&#xe4;llt mir nicht...."/>
<node CREATED="1568383627722" ID="ID_1387232403" MODIFIED="1568383684206" TEXT="Gefahr: Display-Manager wird Gott-Klasse">
<icon BUILTIN="clanbomber"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1568383578647" ID="ID_633007604" MODIFIED="1568579999196" TEXT="den lokalen Display-Frame zur Abstraktion ausbauen">
<linktarget COLOR="#598cc8" DESTINATION="ID_633007604" ENDARROW="Default" ENDINCLINATION="-292;0;" ID="Arrow_ID_290509509" SOURCE="ID_685143843" STARTARROW="None" STARTINCLINATION="765;42;"/>
<icon BUILTIN="pencil"/>
<node CREATED="1568581076086" ID="ID_536195735" MODIFIED="1568581089407" TEXT="Problem: der ist seinerseits eine Sackgasse">
<icon BUILTIN="broken-line"/>
<node CREATED="1582498722221" ID="ID_90390359" MODIFIED="1582498771653" TEXT="naja... hab ihn jetzt als ViewHook ausgebaut">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      das war ein gr&#246;&#223;eres Refactoring; daf&#252;r f&#228;llt dann die L&#246;sung mit den rekursiv &quot;eingeh&#228;kelten&quot; Lambdas weg. Ist sicherlich besser so...
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1612438613382" ID="ID_167120458" MODIFIED="1612438705315" TEXT="DisplayFrame bleibt als einzige Alternative &#xfc;brig">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...f&#252;r eine zentrale Schaltstelle und Verteiler.<br />Denn nur der DisplayFrame ist hinreichend loka und dennoch erreichbar
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1612438770925" ID="ID_225186300" MODIFIED="1612438799056" TEXT="&#x27f9; DisplayFrame ist keine Abstraktion im strengen Sinn"/>
</node>
<node CREATED="1573926191124" ID="ID_1389602122" MODIFIED="1573928984092" TEXT="Display-Frame geh&#xf6;rt eigentlich zum Track">
<arrowlink COLOR="#2769d6" DESTINATION="ID_1953592630" ENDARROW="Default" ENDINCLINATION="-300;1096;" ID="Arrow_ID_928857904" STARTARROW="None" STARTINCLINATION="-1987;53;"/>
</node>
<node CREATED="1568581102059" ID="ID_172612190" MODIFIED="1568581104782" TEXT="brauche....">
<node CREATED="1568581105914" ID="ID_1022292144" MODIFIED="1568581117148" TEXT="Zugang zum BodyCanvasWidget"/>
<node CREATED="1568581118403" ID="ID_1096266089" MODIFIED="1584888781745" TEXT="Zugang zum DisplayManager (bzw. Timeline Layout)">
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#338800" CREATED="1584888760695" ID="ID_1764561185" MODIFIED="1666919335841" TEXT="&#xdc;bersetzung Time -&gt; pixel (via DisplayMetric (im TimelineLayout)">
<arrowlink COLOR="#354ce1" DESTINATION="ID_380050520" ENDARROW="Default" ENDINCLINATION="-2737;0;" ID="Arrow_ID_459309015" STARTARROW="None" STARTINCLINATION="-907;39;"/>
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1568587312669" ID="ID_178738138" MODIFIED="1576975019591" TEXT="die vertikalen Start-Offsets aus dem passenden Display-Frame">
<arrowlink COLOR="#5e57bd" DESTINATION="ID_1792139654" ENDARROW="Default" ENDINCLINATION="-2065;214;" ID="Arrow_ID_1917645572" STARTARROW="None" STARTINCLINATION="-949;44;"/>
<linktarget COLOR="#8395a4" DESTINATION="ID_178738138" ENDARROW="Default" ENDINCLINATION="-297;15;" ID="Arrow_ID_1606292545" SOURCE="ID_1574493569" STARTARROW="None" STARTINCLINATION="273;30;"/>
</node>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1611478658033" HGAP="73" ID="ID_1825783827" MODIFIED="1611479264977" TEXT="diese L&#xf6;sung scheint tragf&#xe4;hig. Nun fertig bauen!" VSHIFT="12">
<arrowlink COLOR="#f2d4e1" DESTINATION="ID_811510338" ENDARROW="Default" ENDINCLINATION="-516;-1779;" ID="Arrow_ID_1877167801" STARTARROW="None" STARTINCLINATION="481;25;"/>
<icon BUILTIN="yes"/>
<node COLOR="#435e98" CREATED="1611479345795" HGAP="88" ID="ID_911852543" MODIFIED="1611540320555" STYLE="bubble" TEXT="einen Clip via Diff injizieren" VSHIFT="-7">
<edge COLOR="#fad1c1"/>
<icon BUILTIN="full-1"/>
</node>
<node COLOR="#435e98" CREATED="1611479345795" HGAP="88" ID="ID_1289774279" MODIFIED="1666475465420" STYLE="bubble" TEXT="ein funktionsf&#xe4;higes Clip-Widget..." VSHIFT="-7">
<edge COLOR="#fad1c1"/>
<icon BUILTIN="full-2"/>
<node COLOR="#435e98" CREATED="1611540326300" ID="ID_126501533" MODIFIED="1624027187371" TEXT="Clip erscheint">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#435e98" CREATED="1666475500559" ID="ID_270580844" MODIFIED="1666475554439" TEXT="abridged Form &#x2014; L&#xe4;ngenbeschr&#xe4;nkung">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1611479345795" HGAP="94" ID="ID_915417374" MODIFIED="1612031266360" STYLE="bubble" TEXT="an der richtigen Stelle zur Anzeige bringen" VSHIFT="-7">
<edge COLOR="#fad1c1"/>
<icon BUILTIN="full-3"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1611479345795" HGAP="106" ID="ID_1202942223" MODIFIED="1611479604603" STYLE="bubble" TEXT="per Diff editieren, umordnen und l&#xf6;schen" VSHIFT="-6">
<edge COLOR="#fad1c1"/>
<icon BUILTIN="full-4"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1611479345795" HGAP="125" ID="ID_174645402" MODIFIED="1611479634502" STYLE="bubble" TEXT="dynamisch expandierbar machen..." VSHIFT="-40">
<edge COLOR="#fad1c1"/>
<icon BUILTIN="full-5"/>
</node>
</node>
</node>
<node CREATED="1569711798770" ID="ID_1031858777" MODIFIED="1569712082881" TEXT="baut auf dem ViewHook auf">
<arrowlink COLOR="#5f74b7" DESTINATION="ID_1964864197" ENDARROW="Default" ENDINCLINATION="-1024;0;" ID="Arrow_ID_992148976" STARTARROW="None" STARTINCLINATION="-717;0;"/>
<node CREATED="1569711218032" ID="ID_892450390" MODIFIED="1569711340989" TEXT="bietet abstrahierten Zugang zum Canvas">
<arrowlink COLOR="#2245a8" DESTINATION="ID_578594394" ENDARROW="Default" ENDINCLINATION="-218;1468;" ID="Arrow_ID_1185551045" STARTARROW="None" STARTINCLINATION="-1702;0;"/>
</node>
<node CREATED="1569711228399" ID="ID_370497060" MODIFIED="1569711249152" TEXT="&quot;klinkt&quot; dieses ClipWidget in den Canvas ein"/>
<node CREATED="1569711251268" ID="ID_251536360" MODIFIED="1573162551740" TEXT="dadurch wird es Kind, und zeichnet sich selbst auf den Canvas"/>
</node>
</node>
</node>
<node CREATED="1583678317690" ID="ID_121923998" MODIFIED="1583678324853" TEXT="Zugang zum aktiven Widget">
<node CREATED="1583678326249" ID="ID_682261661" MODIFIED="1583678359510" TEXT="Zusammenhang mit dem Anzeigestil">
<arrowlink COLOR="#50457a" DESTINATION="ID_471098853" ENDARROW="Default" ENDINCLINATION="-144;-446;" ID="Arrow_ID_49809880" STARTARROW="None" STARTINCLINATION="-439;32;"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1583678964323" ID="ID_1817011421" MODIFIED="1583678990571" TEXT="das Slave-Widget existiert nicht zwansl&#xe4;ufig"/>
<node CREATED="1583678991615" ID="ID_498577144" MODIFIED="1583679009289" TEXT="das Slave-Widget kann jederzeit wechseln">
<node CREATED="1583679010636" ID="ID_1913532501" MODIFIED="1583679015784" TEXT="auch durch reine UI-Interaktion"/>
<node CREATED="1583679017253" ID="ID_453387495" MODIFIED="1583679027366" TEXT="dann m&#xfc;ssen alle Datenverbindungen umgeh&#xe4;ngt werden"/>
</node>
<node CREATED="1583679054039" ID="ID_183239846" MODIFIED="1583679082455" TEXT="die Art des Einh&#xe4;ngens in den Canvas ist variabel">
<node CREATED="1583679084131" ID="ID_1312984580" MODIFIED="1583679092325" TEXT="entweder ein nested Clip"/>
<node CREATED="1583679093066" ID="ID_360628937" MODIFIED="1583679101501" TEXT="oder ein custom-Drawing-Callback">
<node CREATED="1583679120382" ID="ID_1632040558" MODIFIED="1583679136946" TEXT="nicht klar, ob der vom ClipPresenter gesteuert wird">
<icon BUILTIN="stop-sign"/>
</node>
<node CREATED="1583679138220" ID="ID_1641273224" MODIFIED="1583679221489" TEXT="es handelt sich eigentlich um etas &#xdc;bergreifendes">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      n&#228;mlich eine abgek&#252;rzte &#220;bersichts-Darstellung, die wohl ehr auf der Basis ganzer Tracks zu zeichnen w&#228;re (Tracks deshalb, weil wir eine <i>Abk&#252;rzungs-Darstellung</i>&#160; der Tracks selber nicht vorsehen)
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
</node>
<node CREATED="1583678863154" ID="ID_1584052496" MODIFIED="1583678871115" TEXT="Zusammenhang mit der Diff-Mutation">
<node CREATED="1583678873295" ID="ID_791277837" MODIFIED="1583678899047" TEXT="ClipPresenter mu&#xdf; alle Eigenschaften des Clips handhaben k&#xf6;nnen"/>
<node CREATED="1583678899851" ID="ID_441031651" MODIFIED="1583678915845" TEXT="die betreffenden Daten m&#xfc;ssen im Speicher vorliegen"/>
<node CREATED="1583678916721" ID="ID_1647922777" MODIFIED="1583678929851" TEXT="und f&#xfc;r den ClipPresenter zuordenbar und zug&#xe4;nglich sein"/>
</node>
<node CREATED="1583679298311" HGAP="-63" ID="ID_1284937858" MODIFIED="1583679310737" TEXT="Konsequenzen" VSHIFT="20">
<icon BUILTIN="yes"/>
<node CREATED="1583679312741" ID="ID_440797673" MODIFIED="1584108642018" TEXT="dediziertes Clip-API">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <ul>
      <li>
        gegen das das Diff-Binding arbeiten kann
      </li>
      <li>
        und welches den Anzeigestil abstrahiert
      </li>
    </ul>
  </body>
</html></richcontent>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1612438537570" ID="ID_336118739" MODIFIED="1612438557683" TEXT="schrittweise herausfinden was gebraucht wird...">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="bell"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1583679368212" FOLDED="true" ID="ID_1574493569" MODIFIED="1584289385953" TEXT="Einh&#xe4;nge-Mechanismus">
<arrowlink COLOR="#4668c0" DESTINATION="ID_1121301646" ENDARROW="Default" ENDINCLINATION="-360;299;" ID="Arrow_ID_1147127867" STARTARROW="None" STARTINCLINATION="472;50;"/>
<arrowlink COLOR="#8395a4" DESTINATION="ID_178738138" ENDARROW="Default" ENDINCLINATION="-297;15;" ID="Arrow_ID_1606292545" STARTARROW="None" STARTINCLINATION="273;30;"/>
<icon BUILTIN="pencil"/>
<node CREATED="1584201581597" HGAP="61" ID="ID_1793842194" MODIFIED="1584289376633" TEXT="mu&#xdf; direkt beim Ctor-Aufruf passieren" VSHIFT="19">
<icon BUILTIN="button_cancel"/>
<node CREATED="1584201621519" ID="ID_1861895495" MODIFIED="1584201634905" TEXT="und zwar des demjenigen des tats&#xe4;chlichen Widget">
<node CREATED="1584201671057" ID="ID_1545904786" MODIFIED="1584201682507" TEXT="der aber mit dem des Presenters zusammenf&#xe4;llt..."/>
<node CREATED="1584201683192" ID="ID_1482356055" MODIFIED="1584201718557" TEXT="weil man keine aufgedoppelte Referenz auf den ViewHook m&#xf6;chte">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      *) die Referenz steckt n&#228;mlich schon im ViewHookable
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1584204158075" HGAP="48" ID="ID_1291783159" MODIFIED="1584204209950" VSHIFT="-2">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      kann erst erfolgen, <i>wenn's soweit ist</i>
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...und mu&#223; damit in den State-Change-Mechanismus f&#252;r den Pr&#228;sentationsstil verlegt werden
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
<icon BUILTIN="stop-sign"/>
<node CREATED="1584289349339" ID="ID_1202416542" MODIFIED="1584289360503" TEXT="also eben doch nicht gleich beim ctor-Aufruf"/>
<node COLOR="#338800" CREATED="1584289361215" ID="ID_1687516658" MODIFIED="1584319384536" TEXT="brauche stattdessen einen Diff-Listener">
<linktarget COLOR="#38abc2" DESTINATION="ID_1687516658" ENDARROW="Default" ENDINCLINATION="30;37;" ID="Arrow_ID_901736037" SOURCE="ID_560620961" STARTARROW="None" STARTINCLINATION="129;9;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1584307692087" ID="ID_1525336492" MODIFIED="1584318646372" TEXT="gen&#xfc;gen uns Struktur-&#xc4;nderungen (onSeqChange)?">
<icon BUILTIN="help"/>
<icon BUILTIN="hourglass"/>
</node>
<node COLOR="#435e98" CREATED="1584307718907" ID="ID_211654301" MODIFIED="1584318632228" TEXT="im Moment ja, aber vermutlich l&#xe4;ngerfristig nicht">
<icon BUILTIN="yes"/>
<node COLOR="#338800" CREATED="1584309711112" ID="ID_161551669" MODIFIED="1584309897727" TEXT="Diff-Listener um assignElm() erg&#xe4;nzen">
<arrowlink COLOR="#427176" DESTINATION="ID_274485695" ENDARROW="Default" ENDINCLINATION="-1913;0;" ID="Arrow_ID_1484023114" STARTARROW="None" STARTINCLINATION="926;63;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1584309903737" ID="ID_1025527544" MODIFIED="1584318627678" TEXT="onLocalChange()-Listener installieren">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1584307731586" ID="ID_1716161483" MODIFIED="1584307998380">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Nebenbei bemerkt: die Aktion mu&#223; <b>idempotent</b>&#160;sein
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node CREATED="1584201751260" ID="ID_1492285349" MODIFIED="1584932876269" TEXT="Problem: initiale Koordinaten">
<linktarget COLOR="#6fa9d7" DESTINATION="ID_1492285349" ENDARROW="Default" ENDINCLINATION="-156;14;" ID="Arrow_ID_819317359" SOURCE="ID_726635217" STARTARROW="None" STARTINCLINATION="170;10;"/>
<node COLOR="#338800" CREATED="1584201782842" ID="ID_560620961" MODIFIED="1584319384536" TEXT="sind nicht (zwingend) im Populations-Diff">
<arrowlink COLOR="#38abc2" DESTINATION="ID_1687516658" ENDARROW="Default" ENDINCLINATION="30;37;" ID="Arrow_ID_901736037" STARTARROW="None" STARTINCLINATION="129;9;"/>
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1584202974665" ID="ID_920397941" MODIFIED="1584203052619" TEXT="eigentlich ehr vom Anzeigestil abh&#xe4;ngig">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      oder umgekeht....
    </p>
    <ul>
      <li>
        nur wenn auch Koordinaten da sind
      </li>
      <li>
        und auch ein Anzeigestil gefordert wird, welcher ein dediziertes Widget verlangt
      </li>
      <li>
        kann man ein ViewHooked konstruieren
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1584319394162" ID="ID_1919037634" MODIFIED="1584319465811" TEXT="wir wollen aber eine unn&#xf6;tige Doppel-Allokation pro Clip vermeiden">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      wenn man das naiv coden w&#252;rde, dann w&#252;rden wir f&#252;r jeden Clip erst mal einen ClipData-Placeholder erzeugen, nur um dann, nach dem Empfangen des vollst&#228;ndigen Diff, diesen wieder zu deallozieren und daf&#252;r ein ClipWidget zu erzeugen...
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1611124962031" ID="ID_280018655" MODIFIED="1611478836551" TEXT="Aufgabe: vertikale Position">
<icon BUILTIN="button_ok"/>
<node CREATED="1611124973464" ID="ID_1224168080" MODIFIED="1611124982198" TEXT="konstanter Trim-Offset">
<node CREATED="1611478802279" ID="ID_1598711640" MODIFIED="1611478807273" TEXT="vorerst fest verdrahtet"/>
<node CREATED="1611478807981" ID="ID_614042972" MODIFIED="1611478833491" TEXT="kann sp&#xe4;ter mal noch einen Offset pro Clip bekommen"/>
</node>
<node CREATED="1611124983105" ID="ID_93713729" MODIFIED="1611124999600" TEXT="ggfs eine spezifische Verschiebung, die sich der Clip merkt"/>
<node COLOR="#435e98" CREATED="1611125005500" ID="ID_1031158985" MODIFIED="1611478790295" TEXT="Problem Koordinaten-System im Track-Canvas">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Problem wegen dem Overview-Ruler, d.h. wie ber&#252;cksichtigt der untere Canvas die Ausdehnung des oberen Canvas?
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#787099" DESTINATION="ID_1434222749" ENDARROW="Default" ENDINCLINATION="217;624;" ID="Arrow_ID_933310315" STARTARROW="None" STARTINCLINATION="264;15;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#435e98" CREATED="1611788045499" ID="ID_38758894" MODIFIED="1612031322771" TEXT="Problem: Layout initial noch nicht berechnet">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1611788291010" ID="ID_301451653" MODIFIED="1611788307310" TEXT="wenn der ClipPresenter-Ctor l&#xe4;uft..."/>
<node CREATED="1611788308544" ID="ID_1059196785" MODIFIED="1611788327179" TEXT="und das CanvasHooked&lt;ClipWidget&gt; erzeugt"/>
<node CREATED="1611788328205" ID="ID_278674516" MODIFIED="1611788361528" TEXT="sind aber die Koordinaten-Offsets noch nicht bekannt">
<icon BUILTIN="broken-line"/>
</node>
<node COLOR="#338800" CREATED="1611788373594" ID="ID_1798941398" MODIFIED="1612031319833" TEXT="Anpassung nach Layout-Bestimmung notwendig">
<arrowlink COLOR="#6bce9f" DESTINATION="ID_1848866838" ENDARROW="Default" ENDINCLINATION="-842;72;" ID="Arrow_ID_1370580747" STARTARROW="None" STARTINCLINATION="1148;66;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node CREATED="1584201841529" ID="ID_1310327519" MODIFIED="1584202923362" TEXT="Nebengedanke: Eigenheiten des Populations-Diff">
<arrowlink COLOR="#2e3f60" DESTINATION="ID_1634323626" ENDARROW="Default" ENDINCLINATION="-1672;80;" ID="Arrow_ID_1671674197" STARTARROW="None" STARTINCLINATION="-1407;99;"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1584932756457" HGAP="142" ID="ID_726635217" MODIFIED="1612031332118" TEXT="Einh&#xe4;ngen, wenn m&#xf6;glich" VSHIFT="-7">
<arrowlink COLOR="#6fa9d7" DESTINATION="ID_1492285349" ENDARROW="Default" ENDINCLINATION="-156;14;" ID="Arrow_ID_819317359" STARTARROW="None" STARTINCLINATION="170;10;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1584932910051" HGAP="63" ID="ID_1737560927" MODIFIED="1584932955050" TEXT="Zustands-Wechsel-Logik" VSHIFT="16">
<arrowlink COLOR="#4768d0" DESTINATION="ID_1833569495" ENDARROW="Default" ENDINCLINATION="943;-75;" ID="Arrow_ID_416244548" STARTARROW="None" STARTINCLINATION="207;23;"/>
<node CREATED="1612028128117" HGAP="71" ID="ID_631122092" MODIFIED="1612028188306" TEXT="Konvention: Time::NEVER &#x27f9; Clip bleibt verborgen" VSHIFT="-15">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1584229199851" HGAP="47" ID="ID_1146096669" MODIFIED="1584229499004" TEXT="Vorsicht: Darstellung von Spuren und Effekten im Clip" VSHIFT="2">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      wir verwenden das ClipDelegate aber auch, um in Clips eingebettete Effekte oder die einzelnen Spuren darzustellen. Die Logik f&#252;r den Anzeigestil mu&#223; das mit ber&#252;cksichtigen
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#a92d35" DESTINATION="ID_63120870" ENDARROW="Default" ENDINCLINATION="246;-353;" ID="Arrow_ID_973658371" STARTARROW="None" STARTINCLINATION="392;20;"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1611125230101" HGAP="87" ID="ID_158847541" MODIFIED="1611125270395" TEXT="...abh&#xe4;ngig vom Anzeigestil" VSHIFT="-1">
<edge COLOR="#925050" STYLE="linear"/>
</node>
<node CREATED="1611125230101" HGAP="107" ID="ID_1343303475" MODIFIED="1611125295487" TEXT="....brauchen einen nested canvas" VSHIFT="-8">
<edge COLOR="#925050" STYLE="linear"/>
</node>
</node>
<node COLOR="#eb1854" CREATED="1611035931543" HGAP="27" ID="ID_1392905607" MODIFIED="1611038487716" STYLE="bubble" TEXT="&#x231b; hier war ich vor dem Covid-Jahr..." VSHIFT="20">
<edge COLOR="#eb1854" STYLE="sharp_linear" WIDTH="8"/>
<linktarget COLOR="#faeab8" DESTINATION="ID_1392905607" ENDARROW="Default" ENDINCLINATION="-1498;-119;" ID="Arrow_ID_871958604" SOURCE="ID_1578788883" STARTARROW="None" STARTINCLINATION="-2110;202;"/>
<font NAME="SansSerif" SIZE="15"/>
<node COLOR="#435e98" CREATED="1611036115693" ID="ID_442179206" MODIFIED="1611036155856" TEXT="Design schaut robust aus">
<font NAME="SansSerif" SIZE="10"/>
</node>
<node COLOR="#435e98" CREATED="1611036133179" ID="ID_124683313" MODIFIED="1611036172537" TEXT="Grundlage der Anzeigesteuerung steht">
<font NAME="SansSerif" SIZE="10"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1584203074908" HGAP="34" ID="ID_366939108" MODIFIED="1584203089228" TEXT="das f&#xfc;hrt zu einem State-Pattern" VSHIFT="6">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node CREATED="1584203093953" ID="ID_1630684905" MODIFIED="1584289430184" TEXT="das jeweilge Slave-Widgtet repr&#xe4;sentiert auch den Anzeigestil"/>
<node CREATED="1584203184258" ID="ID_465578643" MODIFIED="1584203194792" TEXT="es gibt einen Placeholder f&#xfc;r den Fall &quot;unsichtbar&quot;"/>
<node CREATED="1584203854907" ID="ID_796620475" MODIFIED="1584203870238" TEXT="PImpl + ClipDelegate-Interface"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1584289439497" ID="ID_1171233423" MODIFIED="1584289445670" TEXT="Zustandswahl">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1584289446828" ID="ID_1852467427" MODIFIED="1584289455699" TEXT="Initial-Zustand errichten">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1584289456539" ID="ID_375798695" MODIFIED="1584289466378" TEXT="Zustands-Wechsel implementieren">
<icon BUILTIN="pencil"/>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1568580048464" ID="ID_297402706" MODIFIED="1568580056499" TEXT="&#xdc;bersetzung Zeit -&gt; Pixel">
<node CREATED="1568580066766" ID="ID_382441114" MODIFIED="1568580080675" TEXT="letztlich Aufgabe des Display-Managers">
<node CREATED="1568580086251" ID="ID_965746340" LINK="#ID_1038931568" MODIFIED="1568580147307" TEXT="siehe: Thema Zeit-Darstellung und -&#xdc;bersetzung">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1568580161555" ID="ID_117814603" MODIFIED="1568580189881" TEXT="sollte aus dem ClipPresenter herausgehalten werden">
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1584207879889" ID="ID_433221711" MODIFIED="1584207971089" TEXT="Konsequenz: Abstraktion">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      entweder der ClipPresenter delegiert explizit an einen Service des Display-Managers
    </p>
    <p>
      oder dieser &#220;bersetzungs-Service wird irgendwo implizit versteckt.
    </p>
    <p>
      Letzteres gef&#228;llt mir definitiv besser
    </p>
  </body>
</html></richcontent>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1584207894439" ID="ID_1587524009" MODIFIED="1584207912800" TEXT="Idee: den ViewHook spezialisieren..."/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1611914653896" ID="ID_1275311433" MODIFIED="1611914705986" TEXT="Clip-Anzeigesteuerung">
<arrowlink COLOR="#772c4f" DESTINATION="ID_1431813131" ENDARROW="Default" ENDINCLINATION="-428;-554;" ID="Arrow_ID_144365857" STARTARROW="None" STARTINCLINATION="298;32;"/>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1480607059909" ID="ID_703281238" MODIFIED="1557498707231" TEXT="Control">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1540639047422" ID="ID_945522690" MODIFIED="1557498707231" TEXT="Timeline insgesamt">
<node COLOR="#338800" CREATED="1540638806886" ID="ID_1690989313" MODIFIED="1678407557078" TEXT="bauen">
<icon BUILTIN="button_ok"/>
<node CREATED="1540639330313" ID="ID_335264895" MODIFIED="1557498707231" TEXT="top-level Population-Diff">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1540639342856" ID="ID_1646839476" MODIFIED="1557498707231" TEXT="ausschlie&#xdf;lich per TimelineWidget-Ctor">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1540639375028" ID="ID_690498169" MODIFIED="1557498707231" TEXT="erzeugt">
<node CREATED="1540639382945" ID="ID_1389266781" MODIFIED="1557498707231" TEXT="Widget-Struktur">
<arrowlink COLOR="#7696bb" DESTINATION="ID_1999928728" ENDARROW="Default" ENDINCLINATION="113;285;" ID="Arrow_ID_198017810" STARTARROW="None" STARTINCLINATION="-139;0;"/>
</node>
<node CREATED="1540639386795" ID="ID_35543915" MODIFIED="1557498707231" TEXT="Layout-Manager"/>
<node CREATED="1540639392170" ID="ID_1944083475" MODIFIED="1557498707231" TEXT="(root)-TrackPresenter"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1540638810920" ID="ID_481615571" MODIFIED="1557498707231" TEXT="zerst&#xf6;ren">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1540640109628" ID="ID_147809215" MODIFIED="1557498707231" TEXT="TODO: TimelineGui (proxy) mu&#xdf; kaskadieren">
<icon BUILTIN="flag-pink"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1544135984042" ID="ID_429363053" MODIFIED="1584932261288" TEXT="Grund f&#xfc;r den Fehler im Nexus?">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ERR: nexus.hpp:189: worker_3: ~Nexus: Some UI components are still connected to the backbone.
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#d23194" DESTINATION="ID_535289114" ENDARROW="Default" ENDINCLINATION="90;0;" ID="Arrow_ID_186398670" STARTARROW="None" STARTINCLINATION="110;9;"/>
<icon BUILTIN="help"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1540640144175" ID="ID_158939327" MODIFIED="1557498707231" TEXT="Zugang via TimelinePanel">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1584932054082" ID="ID_535289114" MODIFIED="1584932261288" TEXT="#1216 Some UI components are still connected to the backbone at shutdown">
<linktarget COLOR="#b183a2" DESTINATION="ID_535289114" ENDARROW="Default" ENDINCLINATION="-2880;0;" ID="Arrow_ID_1219325605" SOURCE="ID_1234616959" STARTARROW="None" STARTINCLINATION="1004;61;"/>
<linktarget COLOR="#d23194" DESTINATION="ID_535289114" ENDARROW="Default" ENDINCLINATION="90;0;" ID="Arrow_ID_186398670" SOURCE="ID_429363053" STARTARROW="None" STARTINCLINATION="110;9;"/>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
<node CREATED="1540639255700" ID="ID_1855001421" MODIFIED="1557498707231" TEXT="Anzeige..">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1540639285684" ID="ID_1194974667" MODIFIED="1557498707231" TEXT="Scrollen">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1540639289320" ID="ID_1983393978" MODIFIED="1557498707231" TEXT="Rollen">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1540639291974" ID="ID_1116103118" MODIFIED="1557498707231" TEXT="Zoom">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node CREATED="1540638842100" ID="ID_202893866" MODIFIED="1557498707231" TEXT="Track...">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1540638853648" ID="ID_1229923831" MODIFIED="1557498707231" TEXT="hinzuf&#xfc;gen">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1540638857930" ID="ID_1666790008" MODIFIED="1557498707231" TEXT="l&#xf6;schen">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1560694757109" ID="ID_46205088" MODIFIED="1560694763764" TEXT="TODO kl&#xe4;ren">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1560694764824" ID="ID_358602712" MODIFIED="1560694782260" TEXT="inwiefern m&#xfc;ssen Kind-Widgets aktiv entfernt werden?"/>
<node CREATED="1560694869833" ID="ID_1349567495" MODIFIED="1563466899646" TEXT="im Besonderen der DisplayFrame">
<arrowlink COLOR="#ac8396" DESTINATION="ID_1492670388" ENDARROW="Default" ENDINCLINATION="-473;37;" ID="Arrow_ID_1838431568" STARTARROW="None" STARTINCLINATION="-428;36;"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1560695202385" ID="ID_1396137041" MODIFIED="1560695217396" TEXT="experimentell kl&#xe4;ren">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1540638882639" ID="ID_334962853" MODIFIED="1557498707231" TEXT="verschieben">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1540638923233" ID="ID_841357096" MODIFIED="1557498707231" TEXT="auf/zuklappen">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1540639232287" ID="ID_294651227" MODIFIED="1557498707231" TEXT="Placement">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node CREATED="1540638984772" ID="ID_166725122" MODIFIED="1557498707231" TEXT="Marker....">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1540638991848" ID="ID_822413142" MODIFIED="1557498707231" TEXT="platzieren">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1540638996751" ID="ID_1431308221" MODIFIED="1557498707231" TEXT="verschieben">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1540639002174" ID="ID_1757448745" MODIFIED="1557498707231" TEXT="entfernen">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node CREATED="1540639065618" ID="ID_619025500" MODIFIED="1611915198783" TEXT="Clip........">
<linktarget COLOR="#943868" DESTINATION="ID_619025500" ENDARROW="Default" ENDINCLINATION="-954;73;" ID="Arrow_ID_1146152324" SOURCE="ID_936967290" STARTARROW="None" STARTINCLINATION="-490;51;"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1540639139572" ID="ID_740288619" MODIFIED="1557498707231" TEXT="einf&#xfc;gen">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1540639160480" ID="ID_1171854695" MODIFIED="1557498707231" TEXT="l&#xf6;schen">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1540639189634" ID="ID_836956028" MODIFIED="1557498707231" TEXT="mutieren">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1479434763643" FOLDED="true" HGAP="48" ID="ID_1572413636" MODIFIED="1666372883231" TEXT="Clip" VSHIFT="32">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1479434774138" ID="ID_912862507" MODIFIED="1557498707231" TEXT="Grundlagen">
<node CREATED="1479434780105" ID="ID_239720378" MODIFIED="1576282358038" TEXT="apperances">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Ein Clip hat verschiedene Erscheinungsformen im UI
    </p>
    <p>
      
    </p>
    <p>
      Verwende das als Leitgedanke, um das Layout zu entwickeln
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
<node CREATED="1479434831825" ID="ID_975727645" MODIFIED="1557498707231" TEXT="abridged form">
<node CREATED="1479434845992" ID="ID_609815513" MODIFIED="1557498707231" TEXT="media bin, collapsed fork"/>
<node CREATED="1479441548335" ID="ID_150470698" MODIFIED="1557498707231" TEXT="icon + ID label"/>
<node CREATED="1479601640961" ID="ID_191706335" MODIFIED="1557498707231" TEXT="Gtk::Frame"/>
</node>
<node CREATED="1479441503085" ID="ID_386209482" MODIFIED="1557498707231" TEXT="compact form">
<node CREATED="1479441530689" ID="ID_1057853337" MODIFIED="1557498707231" TEXT="timeline default"/>
<node CREATED="1479441567268" ID="ID_1413366977" MODIFIED="1557498707231" TEXT="rendered content strip + decorations"/>
<node CREATED="1479601649615" ID="ID_417588278" MODIFIED="1557498707231" TEXT="Gtk::Frame + Gtk::Layout"/>
</node>
<node CREATED="1479441519834" ID="ID_1669486876" MODIFIED="1557498707231" TEXT="expanded form">
<node CREATED="1479441586057" ID="ID_64386373" MODIFIED="1557498707231" TEXT="window with embedded sub-clips"/>
<node CREATED="1479601667734" ID="ID_1877644742" MODIFIED="1557498707231" TEXT="dto, with recursive embedded sub-clips"/>
</node>
</node>
<node CREATED="1479442296443" ID="ID_911884433" MODIFIED="1557498707231" TEXT="graceful display degradation">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1479442310537" ID="ID_1849995398" MODIFIED="1557498707231" TEXT="Fall1: wenigstens 1 pixel"/>
<node CREATED="1479442322359" ID="ID_492785140" MODIFIED="1557498707231" TEXT="Fall2: in diesem Pixel ist content"/>
</node>
</node>
<node CREATED="1480797025150" ID="ID_852148145" MODIFIED="1557498707231" TEXT="verwendet f&#xfc;r">
<node CREATED="1480797029581" ID="ID_1257172627" MODIFIED="1557498707231" TEXT="Clips">
<node CREATED="1480797161164" ID="ID_1187665675" MODIFIED="1557498707231" TEXT="abridged"/>
<node CREATED="1480797166355" ID="ID_1788361951" MODIFIED="1557498707231" TEXT="compact"/>
<node CREATED="1480797170331" ID="ID_174323572" MODIFIED="1557498707231" TEXT="expanded"/>
</node>
<node CREATED="1480797032709" ID="ID_597046922" MODIFIED="1557498707231" TEXT="Spuren im Clip"/>
<node CREATED="1480797036804" ID="ID_418077851" MODIFIED="1557498707231" TEXT="Effekte">
<node CREATED="1480797067392" ID="ID_1213128633" MODIFIED="1557498707231" TEXT="compact"/>
<node CREATED="1480797155052" ID="ID_640502487" MODIFIED="1557498707231" TEXT="abridged"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1479601690675" FOLDED="true" ID="ID_542607961" MODIFIED="1679359674772" TEXT="Struktur">
<icon BUILTIN="yes"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1479601699057" ID="ID_1130364446" MODIFIED="1557498707231" TEXT="Konflikt mit der UI-Bus-Architektur">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1479601736116" ID="ID_891600328" MODIFIED="1557498707231" TEXT="Bus == Rolle des Controler/Model"/>
<node CREATED="1479601749946" ID="ID_887287956" MODIFIED="1557498707231" TEXT="Widget == View-Rolle"/>
</node>
<node CREATED="1479601765896" ID="ID_1632476975" MODIFIED="1557498707231">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      UI-Bus gilt nur f&#252;r <b>globale Belange</b>
    </p>
  </body>
</html></richcontent>
<node CREATED="1479601788237" ID="ID_1871715779" MODIFIED="1557498707231" TEXT="wichtige neue Unterscheidung">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1479601796075" ID="ID_1177606400" MODIFIED="1557498707231" TEXT="Global == in der Session aufgezeichnet"/>
<node CREATED="1479601807666" ID="ID_1374495669" MODIFIED="1557498707231" TEXT="vs. lokale UI-Mechanik"/>
<node CREATED="1479601828799" ID="ID_1797519191" MODIFIED="1557498707231" TEXT="Ziel: Subsidiarit&#xe4;t f&#xfc;r lokale Belange"/>
</node>
<node COLOR="#435e98" CREATED="1479601884288" HGAP="34" ID="ID_1371609613" MODIFIED="1679362063122" TEXT="L&#xf6;sungs-Konzept" VSHIFT="18">
<icon BUILTIN="idea"/>
<node CREATED="1479601889567" ID="ID_1123973572" MODIFIED="1557498707231">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      es geht nur um <i>Rollen</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1479601907221" ID="ID_286625648" MODIFIED="1557498707231" TEXT="es ist ein Design-Pattern">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1479601925938" ID="ID_22286545" MODIFIED="1557498707231">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      das lokale Element mu&#223; nur als View <i>fungieren</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1479601945839" ID="ID_254470029" MODIFIED="1557498707231" TEXT="Model-View-Presenter">
<icon BUILTIN="forward"/>
</node>
<node CREATED="1479602306718" ID="ID_359464754" MODIFIED="1611914851717" TEXT="ClipPresenter">
<arrowlink COLOR="#a34086" DESTINATION="ID_834517953" ENDARROW="Default" ENDINCLINATION="-47;-76;" ID="Arrow_ID_937303144" STARTARROW="None" STARTINCLINATION="-228;43;"/>
<node CREATED="1479602311740" ID="ID_963961994" MODIFIED="1557498707231" TEXT="Mittelsmann"/>
<node CREATED="1479602314676" ID="ID_944757170" MODIFIED="1557498707231" TEXT="steht f&#xfc;r den Clip"/>
<node CREATED="1479602319555" ID="ID_1557047586" MODIFIED="1557498707231" TEXT="steuert ein ClipWidget"/>
<node CREATED="1479602338609" ID="ID_444253818" MODIFIED="1557498707231" TEXT="ClipWidget">
<node CREATED="1479602341777" ID="ID_1610807382" MODIFIED="1557498707231" TEXT="empf&#xe4;ngt DisplayStrategy"/>
<node CREATED="1479602382195" ID="ID_1504834509" MODIFIED="1557498707231">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      kann sich selbst
    </p>
    <p>
      transformieren
    </p>
  </body>
</html></richcontent>
<node CREATED="1479602412095" ID="ID_832808487" MODIFIED="1557498707231" TEXT="Frame"/>
<node CREATED="1479602415654" ID="ID_1358720" MODIFIED="1557498707231" TEXT="Frame + Layout"/>
<node CREATED="1479602419134" ID="ID_1788706818" MODIFIED="1557498707231" TEXT="sub-Clips im Layout"/>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1538938500754" ID="ID_715902958" MODIFIED="1679362063121" TEXT="Implementierung">
<icon BUILTIN="hourglass"/>
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1480694550601" FOLDED="true" ID="ID_834517953" MODIFIED="1611957469012" TEXT="ClipPresenter">
<linktarget COLOR="#fec680" DESTINATION="ID_834517953" ENDARROW="Default" ENDINCLINATION="-1077;-98;" ID="Arrow_ID_483670351" SOURCE="ID_1570849604" STARTARROW="None" STARTINCLINATION="407;0;"/>
<linktarget COLOR="#d03a17" DESTINATION="ID_834517953" ENDARROW="Default" ENDINCLINATION="-144;-652;" ID="Arrow_ID_1292343123" SOURCE="ID_867069834" STARTARROW="None" STARTINCLINATION="403;48;"/>
<linktarget COLOR="#a34086" DESTINATION="ID_834517953" ENDARROW="Default" ENDINCLINATION="-47;-76;" ID="Arrow_ID_937303144" SOURCE="ID_359464754" STARTARROW="None" STARTINCLINATION="-228;43;"/>
<icon BUILTIN="pencil"/>
<node CREATED="1568579757736" ID="ID_1709509664" MODIFIED="1568579767971" TEXT="Bedeutung/Aufgaben">
<node CREATED="1568579769886" ID="ID_512050563" MODIFIED="1568579787568" TEXT="vermittelt zwischen Modell und Anzeigesteuerung"/>
<node CREATED="1568579788436" ID="ID_339334267" MODIFIED="1568579815948" TEXT="ClipPresenter ist &quot;der Clip&quot; im Bezug auf Diff und UI-Bus"/>
<node CREATED="1568579817151" ID="ID_1136229909" MODIFIED="1568579839085" TEXT="ClipPresenter betreibt das tats&#xe4;chliche ClipWidget als Slave"/>
<node CREATED="1568579939879" ID="ID_685143843" MODIFIED="1611914607030" TEXT="ClipPresenter kennt einen Display-Frame f&#xfc;r die Anzeige">
<arrowlink COLOR="#598cc8" DESTINATION="ID_633007604" ENDARROW="Default" ENDINCLINATION="-292;0;" ID="Arrow_ID_290509509" STARTARROW="None" STARTINCLINATION="765;42;"/>
<arrowlink COLOR="#3f67c9" DESTINATION="ID_1043075543" ENDARROW="Default" ENDINCLINATION="210;7;" ID="Arrow_ID_678826417" STARTARROW="None" STARTINCLINATION="199;11;"/>
</node>
<node CREATED="1661693443440" ID="ID_107743433" MODIFIED="1661695034015" TEXT="ClipPresenter vermittelt beim Content-Preview-Rendering"/>
</node>
<node CREATED="1480741362389" ID="ID_328415412" MODIFIED="1557498707230" TEXT="ClipWidget">
<node CREATED="1480741370347" ID="ID_1275685315" MODIFIED="1557498707230" TEXT="erzeugen">
<node COLOR="#338800" CREATED="1611914449590" ID="ID_1043075543" MODIFIED="1678407768845" TEXT="in die Track/Display-Struktur einh&#xe4;ngen">
<arrowlink COLOR="#fd654f" DESTINATION="ID_1270677756" ENDARROW="Default" ENDINCLINATION="-300;38;" ID="Arrow_ID_278984117" STARTARROW="None" STARTINCLINATION="131;-344;"/>
<linktarget COLOR="#3f67c9" DESTINATION="ID_1043075543" ENDARROW="Default" ENDINCLINATION="210;7;" ID="Arrow_ID_678826417" SOURCE="ID_685143843" STARTARROW="None" STARTINCLINATION="199;11;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1617471014218" ID="ID_1520693411" MODIFIED="1679359261786" TEXT="Setup und Wiring f&#xfc;r Clip-drag">
<arrowlink COLOR="#3a4d88" DESTINATION="ID_1472064878" ENDARROW="Default" ENDINCLINATION="-642;-252;" ID="Arrow_ID_1448328801" STARTARROW="None" STARTINCLINATION="-826;77;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node CREATED="1568580210235" ID="ID_36042409" MODIFIED="1568580212814" TEXT="Verhalten">
<node CREATED="1568580214139" ID="ID_461989100" MODIFIED="1568580217102" TEXT="passiv....">
<node CREATED="1568580218145" ID="ID_1698735124" MODIFIED="1568580229519" TEXT="im Hinblick auf die Wahl des Darstellungsformats"/>
<node CREATED="1568580230888" ID="ID_384933602" MODIFIED="1568580242882" TEXT="im Hinblick auf die Layout- und Anzeigesteuerung"/>
</node>
<node CREATED="1661693565527" ID="ID_361309488" MODIFIED="1661693572119" TEXT="vermittelnd.....">
<node CREATED="1661693573892" ID="ID_554831193" MODIFIED="1661693649780" TEXT="Endpunkt f&#xfc;r UI-Signal-Wiring">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      aktive Elemente im Clip-Widget l&#246;sen UI-Signale aus, die eine abstrahierte Funktion aufrufen &#8212; und diese gebundene Funktion (zumindest der Einsprungpunkt) liegt im Clip-Presenter
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1661693668281" ID="ID_470989168" MODIFIED="1661693685843" TEXT="sendet dann Command-Nachrichten in den UI-Bus"/>
<node CREATED="1661695924875" ID="ID_1090402146" MODIFIED="1661696035362" TEXT="kann auch f&#xfc;r allgemeine Men&#xfc;/UI-Aktionen vermitteln">
<linktarget COLOR="#4b557b" DESTINATION="ID_1090402146" ENDARROW="Default" ENDINCLINATION="-1035;0;" ID="Arrow_ID_1722473168" SOURCE="ID_634897151" STARTARROW="None" STARTINCLINATION="-385;32;"/>
<node CREATED="1661696072514" ID="ID_1764427475" MODIFIED="1661696199675" TEXT="Verwaltung der pop-Up-Men&#xfc;(s)">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      das ist ein &#252;bergreifendes Thema zum UI-Verhalten
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#b75976" DESTINATION="ID_847601277" ENDARROW="Default" ENDINCLINATION="599;-2197;" ID="Arrow_ID_579055023" STARTARROW="None" STARTINCLINATION="945;81;"/>
</node>
</node>
<node CREATED="1661693702610" ID="ID_1055135476" MODIFIED="1661693718279" TEXT="empf&#xe4;ngt Inhalts- und Metadaten-&#xc4;nderungen als Nachricht per UI-Bus"/>
<node CREATED="1661695087724" ID="ID_1578237138" MODIFIED="1661695191411" TEXT="stellt bei Bedarf die Verbindung her zu einem Placement-UI">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      das Placement-UI wird z.B. durch Klick auf das Placement-Icon aktiviert &#8212; aber es kann auch <i>modal gemacht werden, </i>und dann wird es in ein Property-Box/Grid-UI alloziert
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1661693729872" ID="ID_1318749773" MODIFIED="1661693884693" TEXT="Koordiniert das Preview-Rendering vom Clip-Content">
<icon BUILTIN="messagebox_warning"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1661693756725" ID="ID_610729215" MODIFIED="1661693776364" TEXT="komplexes Thema &#x27f9; sp&#xe4;ter">
<icon BUILTIN="hourglass"/>
</node>
<node CREATED="1661693786231" ID="ID_439776533" MODIFIED="1661693870436" TEXT="vorerst/anfangs zeigt das Clip-Widget einen Content-Platzhalter">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...und dieser mu&#223; einfach lokal im UI zu realisieren sein, also ein Stock-Icon und ggfs ein Vektorgraphic-Element
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node CREATED="1568587417811" ID="ID_525225515" MODIFIED="1568587421270" TEXT="Beziehungen">
<node CREATED="1568587422690" ID="ID_1184376218" MODIFIED="1568587435748" TEXT="vollkommene Herrschaft &#xfc;ber das ClipWidget"/>
<node CREATED="1568587448231" ID="ID_1753498057" MODIFIED="1568587484879" TEXT="DisplayManager bestimmt &#xfc;ber den Darstellungs-Stil">
<node CREATED="1568587486002" ID="ID_983778450" MODIFIED="1568587492401" TEXT="bidirektionale Beziehung!"/>
<node CREATED="1568587493345" ID="ID_1580477403" MODIFIED="1568587506515" TEXT="ClipPresenter mu&#xdf; Darstellungsstil kennen"/>
<node CREATED="1568587508479" ID="ID_846594106" MODIFIED="1568587523871" TEXT="DisplayManager mu&#xdf; Darstellungsstil auch nachtr&#xe4;glich &#xe4;ndern k&#xf6;nnen">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1568587562714" ID="ID_178330712" MODIFIED="1568587573965" TEXT="mu&#xdf; er den zugeh&#xf6;rigen Track kennen?">
<icon BUILTIN="help"/>
<node CREATED="1568587576213" ID="ID_1892967536" MODIFIED="1568587597423" TEXT="Clip-Widget mu&#xdf; letztlich an die richtige Position kommen"/>
</node>
</node>
</node>
<node CREATED="1480741386769" ID="ID_1808095573" MODIFIED="1557498707230" TEXT="Kinder">
<node CREATED="1480741389777" ID="ID_1548768233" MODIFIED="1557498707230" TEXT="welche kommen in Frage">
<icon BUILTIN="help"/>
</node>
<node CREATED="1480741397880" ID="ID_299590632" MODIFIED="1557498707230" TEXT="Effekte werden als ClipPresenter implementiert">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1480741425668" ID="ID_826648354" MODIFIED="1576282358039" TEXT="Labels werden als eigenes Tangible MarkerWidget implementiert">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...sie verwenden dann ein LabelWidget zur Darstellung
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1480741466519" ID="ID_29080454" MODIFIED="1557498707230" TEXT="das werden zwei Collections">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1611953921264" FOLDED="true" ID="ID_1906679490" MODIFIED="1611957488186" TEXT="Clip-Delegate">
<icon BUILTIN="pencil"/>
<node COLOR="#435e98" CREATED="1611953928847" ID="ID_1673338897" MODIFIED="1611957494335" TEXT="zun&#xe4;chst einmal ein PImpl">
<icon BUILTIN="info"/>
<node CREATED="1611953939576" ID="ID_293462928" MODIFIED="1611953949625" TEXT="vom ClipPresenter her gesehen ein Interface"/>
<node CREATED="1611954093314" ID="ID_962423794" MODIFIED="1611954107569" TEXT="erlaubt Umschalten des Anzeige-Modus"/>
<node CREATED="1611953963818" ID="ID_1698628993" MODIFIED="1611953976829" TEXT="h&#xe4;ngt als Slave am ClipPresenter"/>
</node>
<node COLOR="#435e98" CREATED="1611954113609" ID="ID_814561596" MODIFIED="1611959535616" TEXT="Clip-Daten-Storage">
<linktarget COLOR="#70365f" DESTINATION="ID_814561596" ENDARROW="Default" ENDINCLINATION="-427;-565;" ID="Arrow_ID_1226103397" SOURCE="ID_866053960" STARTARROW="None" STARTINCLINATION="805;58;"/>
<node CREATED="1611954160033" ID="ID_327901028" MODIFIED="1611954175455" TEXT="h&#xe4;ngt stark vom Nutzungsmuster ab">
<icon BUILTIN="bell"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1611954178655" ID="ID_895957324" MODIFIED="1611957398393" TEXT="und dieses kennen wir noch nicht">
<icon BUILTIN="closed"/>
</node>
</node>
<node CREATED="1611954223338" ID="ID_184379518" MODIFIED="1611954237793" TEXT="Daten-Duplikation und h&#xe4;ufiges Kopieren vermeiden">
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#338800" CREATED="1611954240824" ID="ID_1048238324" MODIFIED="1611957379318" TEXT="1.Entwurf: Datencontainer als Basisklasse">
<linktarget COLOR="#82b7c6" DESTINATION="ID_1048238324" ENDARROW="Default" ENDINCLINATION="-451;461;" ID="Arrow_ID_22542364" SOURCE="ID_1850041925" STARTARROW="None" STARTINCLINATION="-209;-7;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1611954259205" ID="ID_596924875" MODIFIED="1611954280703" TEXT="damit gibt es dann immer nur eine Allokation"/>
<node COLOR="#338800" CREATED="1611954666544" ID="ID_1268124709" MODIFIED="1611957366432" TEXT="Datencontainer-Klasse moveable machen">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1611954396933" ID="ID_1771085068" MODIFIED="1611954498300" TEXT="Alternative w&#xe4;re: Datencontainer per Pointer anh&#xe4;ngen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      diese Alternative w&#252;rde dann attraktiv, wenn es h&#228;ufig vorkommt, da&#223; zwischen einem Clip-Widget und einer anderen Repr&#228;sentation des ClipDelegate dynamisch hin- und hergeschaltet werden mu&#223;. Weil man dann den relativ schwergewichtigen Datencontainer einfach umh&#228;ngen k&#246;nnte
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1665969027570" ID="ID_508866033" MODIFIED="1665969148445" TEXT="Medien-Typ &#xfc;ber ctor entgegennehmen">
<linktarget COLOR="#a55386" DESTINATION="ID_508866033" ENDARROW="Default" ENDINCLINATION="270;19;" ID="Arrow_ID_591115346" SOURCE="ID_1751225815" STARTARROW="None" STARTINCLINATION="294;-18;"/>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1480694550601" FOLDED="true" ID="ID_1240926804" MODIFIED="1557498707230" TEXT="Clip-Anzeige">
<linktarget COLOR="#fec680" DESTINATION="ID_1240926804" ENDARROW="Default" ENDINCLINATION="-1142;35;" ID="Arrow_ID_435369727" SOURCE="ID_1131206858" STARTARROW="None" STARTINCLINATION="394;108;"/>
<linktarget COLOR="#fec680" DESTINATION="ID_1240926804" ENDARROW="Default" ENDINCLINATION="-1077;-98;" ID="Arrow_ID_1799878244" SOURCE="ID_632606530" STARTARROW="None" STARTINCLINATION="933;139;"/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1541095839946" ID="ID_471098853" MODIFIED="1557498707231" TEXT="Anzeigestil">
<linktarget COLOR="#50457a" DESTINATION="ID_471098853" ENDARROW="Default" ENDINCLINATION="-144;-446;" ID="Arrow_ID_49809880" SOURCE="ID_682261661" STARTARROW="None" STARTINCLINATION="-439;32;"/>
<node CREATED="1538940683586" ID="ID_1478100178" MODIFIED="1557498707231" TEXT="placeholder"/>
<node CREATED="1538940686978" ID="ID_1747675588" MODIFIED="1557498707231" TEXT="abridged"/>
<node CREATED="1538940690154" ID="ID_1132412756" MODIFIED="1661694144478" TEXT="compact"/>
<node CREATED="1538940692545" ID="ID_1827979765" MODIFIED="1557498707231" TEXT="expanded"/>
</node>
<node CREATED="1541095848871" ID="ID_1480696061" MODIFIED="1557498707231" TEXT="Anzeige-Modi">
<node CREATED="1541095855984" ID="ID_1437927701" MODIFIED="1557498707231" TEXT="verwendet ElementBoxWidget">
<arrowlink COLOR="#f6cca4" DESTINATION="ID_368245484" ENDARROW="Default" ENDINCLINATION="-599;39;" ID="Arrow_ID_703893400" STARTARROW="None" STARTINCLINATION="42;-316;"/>
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1584229399430" FOLDED="true" ID="ID_1431813131" MODIFIED="1665962034569" TEXT="Logik zur Auswahl des Anzeigestils">
<linktarget COLOR="#772c4f" DESTINATION="ID_1431813131" ENDARROW="Default" ENDINCLINATION="-428;-554;" ID="Arrow_ID_144365857" SOURCE="ID_1275311433" STARTARROW="None" STARTINCLINATION="298;32;"/>
<icon BUILTIN="button_ok"/>
<icon BUILTIN="hourglass"/>
<icon BUILTIN="flag"/>
<node CREATED="1584229415906" ID="ID_153053846" MODIFIED="1584229421096" TEXT="ist teilweise generisch">
<node CREATED="1584229508960" ID="ID_1415254796" MODIFIED="1584229544527" TEXT="ausreichend spezifiziert f&#xfc;r eine Anzeige"/>
<node CREATED="1584229545211" ID="ID_1361609374" MODIFIED="1584229556397" TEXT="zumindest die Zeitspanne mu&#xdf; feststellbar sein">
<node CREATED="1584229568528" ID="ID_890807423" MODIFIED="1584229573721" TEXT="lib::TimeSpan"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1584229557893" ID="ID_1779361600" MODIFIED="1584229577271" TEXT="Spezialfall &quot;alles&quot;">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1584229580470" ID="ID_1095483529" MODIFIED="1584229645233" TEXT="Effekt/Medienspur">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...diese erstreckt sich typischerweise &#252;ber die gesamte L&#228;nge des umschlie&#223;enden Containers, und pa&#223;t sich dieser ohne weiteres dynamisch an
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1584229601787" ID="ID_4294703" MODIFIED="1584229614293" TEXT="Unterschied zwischen &quot;unbekannt&quot; und &quot;nicht limitiert&quot;">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
<node CREATED="1584229422204" ID="ID_184368820" MODIFIED="1665962050770" TEXT="teilweise abh&#xe4;ngig von &#xe4;u&#xdf;eren Vorgaben">
<icon BUILTIN="bell"/>
<node CREATED="1584229436514" ID="ID_973243748" MODIFIED="1584229447389" TEXT="Zoom und Anzeimodus global"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1584229448099" ID="ID_63120870" MODIFIED="1584229493037" TEXT="Fallunterscheidung">
<linktarget COLOR="#a92d35" DESTINATION="ID_63120870" ENDARROW="Default" ENDINCLINATION="246;-353;" ID="Arrow_ID_973658371" SOURCE="ID_1146096669" STARTARROW="None" STARTINCLINATION="392;20;"/>
<icon BUILTIN="messagebox_warning"/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1584229452911" ID="ID_1237351867" MODIFIED="1584229457411" TEXT="Clip auf Track"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1584229458191" ID="ID_911164271" MODIFIED="1584318715606" TEXT="Effekt / Medienspur im clip">
<icon BUILTIN="flag"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1584318674620" ID="ID_789719668" MODIFIED="1584318732864" TEXT="noch TOTAL ungekl&#xe4;rt">
<icon BUILTIN="flag-pink"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1584318680419" ID="ID_1709596760" MODIFIED="1584318690915" TEXT="TODO: brauche nested Canvas-ViewHook">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1611124813478" ID="ID_107886915" MODIFIED="1611124859455">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Aufgabe: wie geht man mit einem Anzeigestil um, der den Effkt<i>&#160;gar nicht</i>&#160; darstellt
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1584319635024" ID="ID_1833569495" MODIFIED="1665960817265" TEXT="Logik im Detail ausimplementieren">
<linktarget COLOR="#4768d0" DESTINATION="ID_1833569495" ENDARROW="Default" ENDINCLINATION="943;-75;" ID="Arrow_ID_416244548" SOURCE="ID_1737560927" STARTARROW="None" STARTINCLINATION="207;23;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1585012756014" HGAP="67" ID="ID_1256841575" MODIFIED="1585012768478" TEXT="konzeptionell...." VSHIFT="-6">
<node CREATED="1585012775180" HGAP="101" ID="ID_1578039290" MODIFIED="1585012804301" TEXT="Modus vs Stil" VSHIFT="13">
<node CREATED="1585012812495" ID="ID_112398937" MODIFIED="1585012828657" TEXT="Modus ist die grundlegende Form">
<node CREATED="1585012830612" ID="ID_1153727552" MODIFIED="1585012839351" TEXT="verborgen (Datencontainer)"/>
<node CREATED="1585012840187" ID="ID_313601159" MODIFIED="1585012848078" TEXT="individuelle Anzeige"/>
<node CREATED="1585012848975" ID="ID_1618567382" MODIFIED="1585012862104" TEXT="Teil einer &#xdc;bersichtsgraphik"/>
</node>
<node CREATED="1585012925784" ID="ID_1875100027" MODIFIED="1585012968430" TEXT="Modus entscheidet &#xfc;ber das Delegate"/>
<node CREATED="1585012969538" ID="ID_623305880" MODIFIED="1585012977855" TEXT="das Delegate entscheidet &#xfc;ber den Stil"/>
</node>
<node CREATED="1585013243486" HGAP="65" ID="ID_1462532047" MODIFIED="1585013261423" TEXT="Ordnung der Modi" VSHIFT="4">
<node CREATED="1585013262627" ID="ID_1902435778" MODIFIED="1585013271278" TEXT="ist nicht linear-parametrisch"/>
<node CREATED="1585013272098" ID="ID_1116174873" MODIFIED="1585013276773" TEXT="sondern eine Verzweigung">
<node CREATED="1585013324819" ID="ID_152773896" MODIFIED="1585013334819" TEXT="k&#xf6;nnte auch noch komplexer werden"/>
<node CREATED="1585013335575" ID="ID_1950230557" MODIFIED="1585013822494" TEXT="es sind wenige, und essentiell festgelegte">
<arrowlink COLOR="#653773" DESTINATION="ID_645312696" ENDARROW="Default" ENDINCLINATION="114;0;" ID="Arrow_ID_192929536" STARTARROW="Default" STARTINCLINATION="139;0;"/>
</node>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1585010903183" FOLDED="true" ID="ID_1658829752" MODIFIED="1665960800978" TEXT="Kernfragen">
<icon BUILTIN="help"/>
<node CREATED="1585010871688" ID="ID_1289641734" MODIFIED="1585010901339" TEXT="wer entscheidet &#xfc;ber den m&#xf6;glichen Stil?">
<node CREATED="1585011007329" ID="ID_1945212792" MODIFIED="1585928197710" TEXT="die Factory">
<icon BUILTIN="smily_bad"/>
<node CREATED="1585013037644" ID="ID_765039376" MODIFIED="1585928217290" TEXT="das geht zwar immer">
<icon BUILTIN="smiley-angry"/>
</node>
<node CREATED="1585013043104" ID="ID_645312696" MODIFIED="1585013815190" TEXT="..w&#xfc;rde aber die Logik fest verdrahten">
<linktarget COLOR="#653773" DESTINATION="ID_645312696" ENDARROW="Default" ENDINCLINATION="114;0;" ID="Arrow_ID_192929536" SOURCE="ID_1950230557" STARTARROW="Default" STARTINCLINATION="139;0;"/>
</node>
</node>
<node CREATED="1585011013867" ID="ID_1777393889" MODIFIED="1585011031594" TEXT="Methode im Basis-Delegate">
<linktarget COLOR="#6bd6de" DESTINATION="ID_1777393889" ENDARROW="Default" ENDINCLINATION="-24;52;" ID="Arrow_ID_1626468139" SOURCE="ID_418040349" STARTARROW="None" STARTINCLINATION="106;6;"/>
<node CREATED="1585013060956" ID="ID_1696216374" MODIFIED="1585013076512" TEXT="kann nur den Zugang zum Modus weisen"/>
<node CREATED="1585013104936" ID="ID_280575875" MODIFIED="1585013115674" TEXT="kann aber ekennen, ob das Delgate wechselt"/>
</node>
<node CREATED="1585011032442" ID="ID_1163292905" MODIFIED="1585011037825" TEXT="das konkrete Delegate?">
<node CREATED="1585013118735" ID="ID_1852369137" MODIFIED="1585013129889" TEXT="nur dieses kennt die Feinheiten des Stils"/>
<node CREATED="1585013162456" ID="ID_1644140186" MODIFIED="1585013172896" TEXT="und justiert diese in einer virtuellen Methode"/>
</node>
</node>
<node CREATED="1585010936491" ID="ID_418040349" MODIFIED="1585013943024" TEXT="wer entscheidet &#xfc;ber den konkreten Delegate-Typ?">
<arrowlink COLOR="#6bd6de" DESTINATION="ID_1777393889" ENDARROW="Default" ENDINCLINATION="-24;52;" ID="Arrow_ID_1626468139" STARTARROW="None" STARTINCLINATION="106;6;"/>
</node>
<node CREATED="1585013943839" ID="ID_1056640354" MODIFIED="1585013970000" TEXT="kann ein bereits eingeschlagener Weg abelehnt werden?">
<node CREATED="1585013977195" ID="ID_727500697" MODIFIED="1585013993925" TEXT="d.h. wer pr&#xfc;ft die Mindestanforderungen?">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1585931039924" ID="ID_29030858" MODIFIED="1585931110002" TEXT="Problem Mindestl&#xe4;nge">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1585931060297" ID="ID_1656250390" MODIFIED="1585931069044" TEXT="eigentlich ein generisches Kriterium"/>
<node CREATED="1585931069824" ID="ID_432040203" MODIFIED="1585931078051" TEXT="tritt aber repliziert auf Blatt-Ebene auf"/>
<node CREATED="1585931078903" ID="ID_702074103" MODIFIED="1585931095124" TEXT="Gefahr der massiven Daten-Duplikation"/>
</node>
</node>
<node CREATED="1585928556619" ID="ID_1959943787" MODIFIED="1585928560215" TEXT="Kriterien">
<node CREATED="1585928575585" ID="ID_1181266579" MODIFIED="1585928581974" TEXT="individueller Clip">
<node CREATED="1585928654303" ID="ID_1323996178" MODIFIED="1585928665049" TEXT="hat Startpunkt"/>
<node CREATED="1585928673364" ID="ID_1131131049" MODIFIED="1585928737490" TEXT="Mindestl&#xe4;nge"/>
</node>
<node CREATED="1585928582857" ID="ID_1870451258" MODIFIED="1585928588716" TEXT="Teil einer &#xdc;bersicht">
<node CREATED="1585930006760" ID="ID_1545926932" MODIFIED="1585930010979" TEXT="hat Startpunkt"/>
<node CREATED="1585931000122" ID="ID_121156248" MODIFIED="1585931009316" TEXT="Wunsch oder Pin auf diesen Modus"/>
</node>
<node CREATED="1585928596439" ID="ID_1983527574" MODIFIED="1585928606156" TEXT="sonst: Datencontainer">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
</node>
</node>
<node CREATED="1585010953762" ID="ID_236488907" MODIFIED="1585010961491" TEXT="wer baut/klont ein Delegate?">
<node CREATED="1611120913617" ID="ID_187744399" MODIFIED="1611120932339" TEXT="...hier zun&#xe4;chst einfache L&#xf6;sung verfolgt">
<node CREATED="1611120934086" ID="ID_1626846671" MODIFIED="1611120949303" TEXT="das ClipDelegate (Basisklasse)"/>
<node CREATED="1612028377220" ID="ID_289156345" MODIFIED="1612028395368" TEXT="...im Moment gef&#xe4;llt mir diese L&#xf6;sung sogar ganz gut">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1665960687878" ID="ID_1888787380" MODIFIED="1665960788984">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <u>Stand 10/22</u>&#160;: Fragen grunds&#228;tzlich gekl&#228;rt
    </p>
  </body>
</html></richcontent>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node CREATED="1665960703226" ID="ID_1725010150" MODIFIED="1665960713388" TEXT="Implementierungs-Logik ist gut lesbar"/>
<node CREATED="1665960749212" ID="ID_1674197078" MODIFIED="1665960776942" TEXT="noch fehlende Strukturen wird die Praxis aufzeigen">
<icon BUILTIN="idea"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1665960714097" ID="ID_1314523478" MODIFIED="1665960733439" TEXT="der Fall der &#xdc;bersichts-Anzeige ist auf sp&#xe4;ter vertagt">
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
<node CREATED="1585924331517" HGAP="27" ID="ID_1558559501" MODIFIED="1585924351368" TEXT="state pattern" VSHIFT="26">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="idea"/>
<node CREATED="1585924411195" ID="ID_1837360138" MODIFIED="1585924430097" TEXT="das Clip-Delegate ist eine nat&#xfc;rliche State-Repr&#xe4;asentation">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1585924431448" ID="ID_1611710777" MODIFIED="1585924442213" TEXT="Schwachstelle: state handling API">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1585924446046" ID="ID_554920835" MODIFIED="1585924462752" TEXT="dieses wird auf &#xe4;u&#xdf;erer/innerer Kapsel aufgedoppelt"/>
<node CREATED="1585924468627" ID="ID_1944983930" MODIFIED="1585924475997" TEXT="was brauchen wir hier f&#xfc;r Operationen?"/>
</node>
</node>
<node CREATED="1612028431732" ID="ID_1246129167" MODIFIED="1612028851514" TEXT="Implementierungsdetails">
<icon BUILTIN="info"/>
<node CREATED="1612028439450" ID="ID_1104410954" MODIFIED="1612028458261" TEXT="die Entscheidungslogik wird in der generischen ClipDelegate-Implementierung untergebracht"/>
<node CREATED="1612028459191" ID="ID_1113891567" MODIFIED="1612028476585" TEXT="auf absehbare Zeit ist diese Logik recht einfach"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1665960835432" ID="ID_687668284" MODIFIED="1665960869210" TEXT="komplexere Themen vertagt (Medienspuren, Effekte, &#xdc;bersicht)">
<font NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="hourglass"/>
</node>
<node COLOR="#435e98" CREATED="1612028487004" ID="ID_619535893" MODIFIED="1612030600973" TEXT="spezielle Konvention: start == Time::NEVER &#x27f9; Appearance::PENDING">
<linktarget COLOR="#4663c4" DESTINATION="ID_619535893" ENDARROW="Default" ENDINCLINATION="-1983;81;" ID="Arrow_ID_309098301" SOURCE="ID_592528621" STARTARROW="None" STARTINCLINATION="631;32;"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1665969056112" ID="ID_993785590" MODIFIED="1665969090871" TEXT="Umgang mit dem Medien-Typ (#1251)">
<linktarget COLOR="#d7407e" DESTINATION="ID_993785590" ENDARROW="Default" ENDINCLINATION="-434;31;" ID="Arrow_ID_699706289" SOURCE="ID_1632230778" STARTARROW="None" STARTINCLINATION="137;-25;"/>
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1665969172803" ID="ID_1892015467" MODIFIED="1665969185904" TEXT="&#xdc;bersetung in Typ-Parameter f&#xfc;r ElementBoxWidget">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1665969187006" ID="ID_207274074" MODIFIED="1665969332390" TEXT="aber auch: Auswahl der Anzeige-Strategy im Detail">
<arrowlink COLOR="#e36874" DESTINATION="ID_405495257" ENDARROW="Default" ENDINCLINATION="-2189;115;" ID="Arrow_ID_127305949" STARTARROW="None" STARTINCLINATION="928;-50;"/>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1584319522106" ID="ID_600779996" MODIFIED="1665962000322" TEXT="Vorsicht Falle: Kopieren beim Wechsel des Anzeigestils">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1584319543957" ID="ID_615255607" MODIFIED="1584319606901" TEXT="erst den alten ClipDelegate vom smart-Ptr abkoppeln">
<icon BUILTIN="full-1"/>
</node>
<node CREATED="1584319564342" ID="ID_1748945736" MODIFIED="1584319609077" TEXT="denn den neuen per Copy-Initialisierung erzeugen">
<icon BUILTIN="full-2"/>
</node>
<node CREATED="1584319578712" ID="ID_1036218022" MODIFIED="1584319612171" TEXT="dann den alten ClipDelegate verwerfen">
<icon BUILTIN="full-3"/>
</node>
<node COLOR="#435e98" CREATED="1584319587975" ID="ID_609955363" MODIFIED="1665962012480" TEXT="und das alles per smart-Ptr abgesichert">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
</node>
<node CREATED="1661693939894" ID="ID_498333619" MODIFIED="1661693947269" TEXT="Aufgaben / Anforderungen">
<node CREATED="1661693951292" ID="ID_92526598" MODIFIED="1661693963022" TEXT="sichtbarer Rahmen mit pr&#xe4;ziser L&#xe4;nge"/>
<node CREATED="1661693966450" ID="ID_1491933608" MODIFIED="1661693986619" TEXT="Men&#xfc;+Label in Sicht halten (bei Scrolling)"/>
<node CREATED="1661693992375" ID="ID_892363221" MODIFIED="1661694009584" TEXT="Bindings f&#xfc;r Men&#xfc; + ggfs.Standard-Aktion">
<node CREATED="1661695952095" ID="ID_355417196" MODIFIED="1661695968945" TEXT="(Pop-up) Men&#xfc;"/>
<node CREATED="1661695972709" ID="ID_348063726" MODIFIED="1661695981528" TEXT="kontextsensitive Aktions-Button"/>
<node CREATED="1661695983467" ID="ID_634897151" MODIFIED="1661696042865" TEXT="&#x27f9; werden via Presenter vermittelt">
<arrowlink COLOR="#4b557b" DESTINATION="ID_1090402146" ENDARROW="Default" ENDINCLINATION="-1035;0;" ID="Arrow_ID_1722473168" STARTARROW="None" STARTINCLINATION="-385;32;"/>
</node>
</node>
<node CREATED="1661694023197" ID="ID_1963221274" MODIFIED="1661694032933" TEXT="Registrierung von/mit Gesten-Controllern"/>
<node CREATED="1661694049166" ID="ID_68957599" MODIFIED="1661694057265" TEXT="Content-Rendering">
<node CREATED="1661694058286" ID="ID_1358424088" MODIFIED="1661694080438" TEXT="abridged: nur Farbe/Stil"/>
<node CREATED="1661694156704" ID="ID_389557944" MODIFIED="1661694179001" TEXT="compact: Farbe + Platzhalter / Preview optional"/>
<node CREATED="1661694180301" ID="ID_962010212" MODIFIED="1661694231410" TEXT="expanded: Canvas &#x27f9; Content-Display delegiert an nested Widgets"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1679072452752" ID="ID_1508246286" MODIFIED="1679072579066" TEXT="TODO: Ausdehnung und vertikalen Offset des Clip tats&#xe4;chlich steuern">
<linktarget COLOR="#ff4275" DESTINATION="ID_1508246286" ENDARROW="Default" ENDINCLINATION="1281;-45;" ID="Arrow_ID_1210551190" SOURCE="ID_698148454" STARTARROW="None" STARTINCLINATION="515;46;"/>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node CREATED="1583102068949" ID="ID_1157479559" MODIFIED="1583102075826" TEXT="Probleme / Entscheidungen">
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1583102099206" ID="ID_1626144230" MODIFIED="1679065446533" TEXT="Umgang mit einem Clip-Header">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      was ist das?
    </p>
    <p>
      Wenn ein Clip mehrere Spuren oder Datenstr&#246;me oder sonst irgend eine Art innerer Struktur tr&#228;gt, dann braucht man irgendwann einen vom Zeitpunkt unabh&#228;ngigen &#187;Kopf-Bereich&#171;, um die Struktur zu steuern und zu manipulieren. F&#252;r die Tracks gibt es daf&#252;r einen eigenen &quot;patchbay&quot;-Bereich links von der Timeline-Anzeige. Aber f&#252;r die Clips ist nicht klar
    </p>
    <ul>
      <li>
        ob wir das wirklich brauchen
      </li>
      <li>
        wo wir es anordnen
      </li>
      <li>
        und wie wir mit Clips umgehen, die weit &#252;ber das Anzeigefenster hinsausreichen
      </li>
    </ul>
  </body>
</html></richcontent>
<arrowlink COLOR="#9a5670" DESTINATION="ID_1054753498" ENDARROW="Default" ENDINCLINATION="-3448;194;" ID="Arrow_ID_948617682" STARTARROW="None" STARTINCLINATION="1004;81;"/>
<icon BUILTIN="bell"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1679065449777" HGAP="47" ID="ID_33601627" MODIFIED="1679065611000" STYLE="fork" TEXT="3/23 noch offenes Problem zur Entscheidung" VSHIFT="11">
<richcontent TYPE="NOTE"><html>
  <head>
    
    
  </head>
  <body>
    <p>
      Und zwar geht es hier um eine sehr grunds&#228;tzliche Layout / 
      Design-Entscheidung, die auch sehr starken Einflu&#223; auf den Workflow und 
      die &#187;Mechanik&#171; der Clips haben wird; <i>im aktuellen Stand 
      (2023) der Entwicklung habe ich nicht den Boden, um diese Enstscheidung 
      treffen zu k&#246;nnen </i>&#55357;&#56596;
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1586383134447" ID="ID_415124968" MODIFIED="1586383138432" TEXT="Clip-Timings">
<node CREATED="1586383139624" ID="ID_683488370" MODIFIED="1586383149522" TEXT="gegeben als TimeSpan"/>
<node CREATED="1586383150821" ID="ID_51987562" MODIFIED="1586383287858" TEXT="&#xdc;bersetzung in Pixel ist rein Client-seitig">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Zoomen, Scrollen, Scroll-Window und View-Path sind reine Gui-Bildungen und werden instantan ohne Round-Trip realisiert
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node COLOR="#821a26" CREATED="1586383188716" ID="ID_1268226317" MODIFIED="1586383420749" TEXT="mu&#xdf; daher komplett im Clip gespeichert werden">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <font color="#e12e2e"><b>Vorsicht Falle</b></font>: es reicht nicht, nur die auf Pixel quantisierte Position zu speichern, denn diese wird bei geringem Zoom relativ ungenau. Es w&#228;re leicht m&#246;glich, durch Heraus- und wieder Hereinscrollen die sichtbare Position eines Clip massiv zu verschieben.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1541861481967" ID="ID_552550333" MODIFIED="1666451358766" TEXT="Problem: Metrik auf dem Canvas">
<arrowlink COLOR="#2a79c1" DESTINATION="ID_1038931568" ENDARROW="Default" ENDINCLINATION="-511;19;" ID="Arrow_ID_405016415" STARTARROW="None" STARTINCLINATION="-1360;-43;"/>
<linktarget COLOR="#5276de" DESTINATION="ID_552550333" ENDARROW="Default" ENDINCLINATION="203;16;" ID="Arrow_ID_54504759" SOURCE="ID_103620026" STARTARROW="None" STARTINCLINATION="-66;-259;"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1666451389394" ID="ID_511046839" MODIFIED="1666451403226" TEXT="Anfrage wird aus der GTK-Layoutbehandlung getriggert">
<icon BUILTIN="info"/>
</node>
<node CREATED="1666451404745" ID="ID_1685238185" MODIFIED="1666451415979" TEXT="Clip mu&#xdf; seine eigene Ausdehnung festsetzen k&#xf6;nnen"/>
<node CREATED="1666451422758" ID="ID_1448482248" MODIFIED="1666451488041">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <u>L&#246;sung</u>: Interface <font face="Monospaced"><b>DisplayMetric</b></font>&#160;im <font face="Monospaced" color="#1e128f">CanvasHook</font>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
<node COLOR="#338800" CREATED="1666451523988" HGAP="57" ID="ID_244578537" MODIFIED="1675897253036" TEXT="Implementierung: liegt im TimelineLayout (opaque)" VSHIFT="-8">
<arrowlink COLOR="#3c4864" DESTINATION="ID_1202075896" ENDARROW="Default" ENDINCLINATION="-1351;104;" ID="Arrow_ID_1210722108" STARTARROW="None" STARTINCLINATION="-74;-277;"/>
<linktarget COLOR="#644d8a" DESTINATION="ID_244578537" ENDARROW="Default" ENDINCLINATION="-220;12;" ID="Arrow_ID_7428365" SOURCE="ID_1827001710" STARTARROW="None" STARTINCLINATION="55;-63;"/>
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1672679706488" HGAP="34" ID="ID_824353880" MODIFIED="1672679719594" TEXT="Anforderungen" VSHIFT="1">
<icon BUILTIN="info"/>
<node CREATED="1672679774855" ID="ID_1101197260" MODIFIED="1672679787848" TEXT="beliebige Zeit in absolute Pixel-Pos &#xfc;bersetzen"/>
<node CREATED="1672679806161" ID="ID_1865833486" MODIFIED="1672679824547" TEXT="relativen Offset / Ausdehnung in Pixel-Zahl &#xfc;bersetzen"/>
<node CREATED="1672679826392" ID="ID_1729893363" MODIFIED="1672679848861" TEXT="explizit gegebenen Pixel-Offset in ein Zeit-&#x394; &#xfc;bersetzen"/>
<node CREATED="1672680113722" ID="ID_411598486" MODIFIED="1672680137577" TEXT="Dom&#xe4;ne / Canvas-Bereich in Pixel-Koordinaten &#xfc;bersetzen">
<node CREATED="1672680147413" ID="ID_1912182961" MODIFIED="1672680162863" TEXT="f&#xfc;r AbstractTrackRenderer::visible_"/>
<node CREATED="1672680203512" ID="ID_1802952569" MODIFIED="1672680209657" TEXT="BodyCanvasWidget::establishLayout (DisplayEvaluation&amp;)">
<node CREATED="1672680242305" ID="ID_1540246434" MODIFIED="1672680249988" TEXT="BodyCanvasWidget::adjustCanvasSize(int canvasWidth, int contentHeight, int rulerHeight)"/>
</node>
</node>
</node>
</node>
<node CREATED="1672694819791" ID="ID_1304491361" MODIFIED="1672694834368" TEXT="Canvas-Ursprung bleibt implizit">
<icon BUILTIN="yes"/>
<node CREATED="1672694860846" ID="ID_1013198591" MODIFIED="1672694871984" TEXT="sollte negative Pixel-Werte vermeiden"/>
<node CREATED="1672694872852" ID="ID_428750573" MODIFIED="1672694887285" TEXT="sollte dem (technischen) Ursprung entsprechen"/>
<node CREATED="1672694948622" ID="ID_795049630" LINK="#ID_1323685955" MODIFIED="1672695119697" TEXT="rein interner Belang der Zeichen-Routinen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      die Pixel-Koordinaten sind ein rein interner Belang f&#252;r die Zeichen-Routinen; insofern gen&#252;gt es, wenn die Umwandlungsfunktion stets einen konsistenten Ursprung liefert, sich aber auch sinngem&#228;&#223; an ver&#228;ndertetes Timeline-Layout anpa&#223;t
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1665968722004" ID="ID_1632230778" MODIFIED="1665969102137" TEXT="#1251 specify Clip media type for the UI">
<arrowlink COLOR="#d7407e" DESTINATION="ID_993785590" ENDARROW="Default" ENDINCLINATION="-434;31;" ID="Arrow_ID_699706289" STARTARROW="None" STARTINCLINATION="137;-25;"/>
<linktarget COLOR="#bb4f76" DESTINATION="ID_1632230778" ENDARROW="Default" ENDINCLINATION="-986;67;" ID="Arrow_ID_1432405411" SOURCE="ID_865599543" STARTARROW="None" STARTINCLINATION="-1713;-126;"/>
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1665968963166" ID="ID_1751225815" MODIFIED="1665969148445" TEXT="sollte schon sofort &#xfc;ber den ctor m&#xf6;glich sein">
<arrowlink COLOR="#a55386" DESTINATION="ID_508866033" ENDARROW="Default" ENDINCLINATION="270;19;" ID="Arrow_ID_591115346" STARTARROW="None" STARTINCLINATION="294;-18;"/>
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1665968975867" ID="ID_1127286532" MODIFIED="1665968988821" TEXT="sollte aber auch sp&#xe4;ter noch &#xe4;nderbar sein">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1661694782421" ID="ID_1828319625" MODIFIED="1661694793230" TEXT="Strategy-Pattern verwenden!">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1583678040736" ID="ID_1805643410" MODIFIED="1583678050738" TEXT="Umsetzung">
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1583677631958" ID="ID_811510338" MODIFIED="1611479264977" TEXT="vorl&#xe4;ufige Clip-Repr&#xe4;sentation">
<linktarget COLOR="#ab415e" DESTINATION="ID_811510338" ENDARROW="Default" ENDINCLINATION="-975;-81;" ID="Arrow_ID_610185006" SOURCE="ID_214009767" STARTARROW="None" STARTINCLINATION="744;47;"/>
<linktarget COLOR="#f2d4e1" DESTINATION="ID_811510338" ENDARROW="Default" ENDINCLINATION="-516;-1779;" ID="Arrow_ID_1877167801" SOURCE="ID_1825783827" STARTARROW="None" STARTINCLINATION="481;25;"/>
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1661610654817" ID="ID_1038790770" MODIFIED="1661610893078" TEXT="#1038 draft clip UI representation">
<arrowlink COLOR="#541915" DESTINATION="ID_96949358" ENDARROW="Default" ENDINCLINATION="-1458;130;" ID="Arrow_ID_1319876475" STARTARROW="None" STARTINCLINATION="818;-68;"/>
<icon BUILTIN="flag-yellow"/>
</node>
<node COLOR="#435e98" CREATED="1583678069596" FOLDED="true" ID="ID_749021089" MODIFIED="1665962512413" TEXT="Stufe-1">
<icon BUILTIN="licq"/>
<node COLOR="#338800" CREATED="1583678075045" ID="ID_1071916226" MODIFIED="1612439673716" TEXT="erst mal &#xfc;berhaupt einen Block belegen">
<icon BUILTIN="button_ok"/>
<node CREATED="1584318751425" ID="ID_1908104469" MODIFIED="1584318760838" TEXT="nehme mal einen Gtk::Button...">
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1611539454282" ID="ID_1159321207" MODIFIED="1611539483874" TEXT="Data-Storage: erst mal lauter lokale Datenfelder"/>
<node COLOR="#338800" CREATED="1611479299338" ID="ID_1803753965" MODIFIED="1612030625987" TEXT="damit die erste lauff&#xe4;hige Clip-Widget-Implementierung">
<icon BUILTIN="button_ok"/>
<node CREATED="1611492890873" ID="ID_458756808" MODIFIED="1611492956892" TEXT="sollte in der seit 4/20 existierenden Implementierung bereits funktionieren">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...habe ich aber noch nie getestet...
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1611494845768" ID="ID_591566495" MODIFIED="1611540171140" TEXT="erst mal vorl&#xe4;ufig die Datenfelder anlegen &#x27f9; kann vertikale Ausdehnung berechnen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1611527884423" ID="ID_1232626344" MODIFIED="1612030654011" TEXT="Ergebnis der DisplayEvaluation &#x2259; lokales Maximum &#x2192; TrackBody::contentHeight_ ">
<arrowlink COLOR="#3b4b73" DESTINATION="ID_1530876056" ENDARROW="Default" ENDINCLINATION="802;689;" ID="Arrow_ID_471691943" STARTARROW="None" STARTINCLINATION="700;24;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1583678122516" ID="ID_73602256" MODIFIED="1612439671575" TEXT="...und dessen vertikale Ausdehnung ermitteln und zur&#xfc;ckmelden">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1612439704954" FOLDED="true" ID="ID_102633650" MODIFIED="1665962687088" TEXT="Clip-Parameter &#x2192; horizontale Ausdehnung">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1612471194589" ID="ID_1485158816" MODIFIED="1665962268509" TEXT="mehrere Probleme zu &#xfc;berwinden">
<icon BUILTIN="messagebox_warning"/>
<node COLOR="#435e98" CREATED="1612471205161" ID="ID_544296566" MODIFIED="1665962213180" TEXT="GTK erlaubt keine explizite Gr&#xf6;&#xdf;e">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...das ist eine grundlegende Design-Enscheidung (und zwar eine Gute), aber in der Praxis mu&#223; es nat&#252;rlich trotzdem einen Weg geben, nur ist der dann relativ indirekt und auch nicht wirklich dokumentiert
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#a09aae" DESTINATION="ID_1508852681" ENDARROW="Default" ENDINCLINATION="-2048;204;" ID="Arrow_ID_1446927054" STARTARROW="None" STARTINCLINATION="-3602;0;"/>
<icon BUILTIN="messagebox_warning"/>
<node COLOR="#990000" CREATED="1612471458578" ID="ID_611633103" MODIFIED="1612480292438" TEXT="Experiment: gen&#xfc;gt der size_request?">
<icon BUILTIN="button_cancel"/>
<node CREATED="1612480298341" ID="ID_1348090876" MODIFIED="1612480308730" TEXT="funktioniert nur zur Vergr&#xf6;&#xdf;erung"/>
<node CREATED="1612480309646" ID="ID_1463447127" MODIFIED="1612480315253" TEXT="aber beschneidet nicht"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1612527452448" ID="ID_1007765197" MODIFIED="1665962447036" TEXT="gen&#xfc;gt noch nicht: kann nicht beschneiden">
<icon BUILTIN="broken-line"/>
<node CREATED="1612527477300" ID="ID_734302531" MODIFIED="1612527498185" TEXT="es funktioniert so bereits, das Widget zu vergr&#xf6;&#xdf;ern">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#435e98" CREATED="1612620409921" ID="ID_643882250" MODIFIED="1663946479492" TEXT="size handling in Framework">
<arrowlink COLOR="#364ec7" DESTINATION="ID_615948747" ENDARROW="Default" ENDINCLINATION="-1440;0;" ID="Arrow_ID_866144981" STARTARROW="None" STARTINCLINATION="-1942;189;"/>
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1612613065268" FOLDED="true" ID="ID_700841626" LINK="https://stackoverflow.com/q/66076682/444796" MODIFIED="1665962160061" TEXT="Frage auf Stackoverflow gestellt">
<icon BUILTIN="hourglass"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1663957087480" ID="ID_9335539" MODIFIED="1663957260417" TEXT="Frage wurde automatisch gel&#xf6;scht">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p http-equiv="content-type" content="text/html; charset=utf-8">
      <strong>If the question is more than <code>365</code>&#160;days old, and ...</strong>
    </p>
    <ul>
      <li>
        has a score of 0 or less, <strong>or</strong>&#160;a score of 1 and a deleted owner
      </li>
      <li>
        has no answers
      </li>
      <li>
        is not locked
      </li>
      <li>
        has view count &lt;= the age of the question in days times 1.5
      </li>
      <li>
        has 1 or 0 comments
      </li>
    </ul>
  </body>
</html></richcontent>
<node CREATED="1663957105414" ID="ID_1623688955" MODIFIED="1663957110606" TEXT="nur 55 Views"/>
<node CREATED="1663957111175" ID="ID_1833399738" MODIFIED="1663957115320" TEXT="kein Upvote"/>
<node CREATED="1663957116078" ID="ID_713646207" MODIFIED="1663957119176" TEXT="kein Kommentar"/>
<node CREATED="1663957119988" ID="ID_1332345095" MODIFIED="1663957122487" TEXT="keine Antwort"/>
</node>
<node CREATED="1663957303187" ID="ID_697240020" MODIFIED="1663957310774" TEXT="ist definitiv keine B&#xf6;sartigkeit"/>
<node CREATED="1663957264448" ID="ID_642110272" MODIFIED="1663962465341" TEXT="Merke: um &quot;m&#xfc;hsame&quot; Fragen mu&#xdf; man sich k&#xfc;mmern">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1612619390361" ID="ID_571017696" MODIFIED="1663955991363" TEXT="n&#xe4;chster Ansatz: get_preferred_width_vfunc">
<arrowlink COLOR="#77afb6" DESTINATION="ID_321040886" ENDARROW="Default" ENDINCLINATION="-3752;338;" ID="Arrow_ID_765236235" STARTARROW="None" STARTINCLINATION="-3454;-1310;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1612619418068" ID="ID_506962706" MODIFIED="1612619499778" TEXT="auf dem Clip-Widget selber &#xfc;berschrieben"/>
<node CREATED="1612619434154" ID="ID_1820519135" MODIFIED="1612619499778" TEXT="ignoriert das Kind und liefert den nominellen Wert zur&#xfc;ck"/>
<node CREATED="1612619448816" ID="ID_616104406" MODIFIED="1612620546458" TEXT="funktioniert, aber es gibt eine Menge von Warnungen">
<linktarget COLOR="#67384d" DESTINATION="ID_616104406" ENDARROW="Default" ENDINCLINATION="-605;33;" ID="Arrow_ID_349418044" SOURCE="ID_548348096" STARTARROW="None" STARTINCLINATION="241;19;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1663955680592" HGAP="19" ID="ID_1517213874" MODIFIED="1663955701843" TEXT="trotzdem: das ist vermutlich der einzige gangbare Weg" VSHIFT="5">
<icon BUILTIN="yes"/>
<node CREATED="1663955710647" HGAP="23" ID="ID_1436931569" MODIFIED="1663955749454" VSHIFT="17">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      weil dies die einzige Info ist,
    </p>
    <p>
      welche direkt vom Widget abgefragt wird,
    </p>
    <p>
      im Zuge der Layout-Berechnung
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#435e98" CREATED="1665962384509" ID="ID_1318638341" MODIFIED="1665962423510" TEXT="Ansatz best&#xe4;tigt &#x2192; ElementBoxWidget">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1612471480502" ID="ID_103620026" MODIFIED="1612480353892" TEXT="&#xdc;bersetzung Zeit in Pixel">
<arrowlink COLOR="#5276de" DESTINATION="ID_552550333" ENDARROW="Default" ENDINCLINATION="203;16;" ID="Arrow_ID_54504759" STARTARROW="None" STARTINCLINATION="-66;-259;"/>
<node CREATED="1612471500084" ID="ID_269480980" MODIFIED="1612474845425" TEXT="eigentlich Aufgabe der Zoom-Steuerung">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#435e98" CREATED="1612471511450" ID="ID_116082667" MODIFIED="1665962257879" TEXT="Problematisch ist der Zugang">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1612471524505" ID="ID_1226213044" MODIFIED="1612471811699" TEXT="Widgets sollen nicht direkt mit dem Layout-Manager reden">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Ich will nicht, da&#223; der DisplayManager zu bedeutend wird, weil dann eine direkte Manipulation einzelner Widgets durch den DisplayManager als die &quot;einfachste&quot; und &quot;nat&#252;rlichste&quot; L&#246;sung erscheinen k&#246;nnte. Dagegen wehre ich mich, weil es zu einer starken Kopplung f&#252;hrt.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1612471562435" ID="ID_1613228671" MODIFIED="1612471569974" TEXT="abstrahiert &#xfc;ber den CanvasHook">
<node CREATED="1612471572242" ID="ID_1034906351" MODIFIED="1612471577173" TEXT="hatte es dort sch&#xf6;n versteckt"/>
<node CREATED="1612471577749" ID="ID_1723611368" MODIFIED="1612471646979" TEXT="aber anscheinend ist das doch eine API-Funktion">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      es gibt bereits einen <i>S&#252;ndenfall,</i>&#160;n&#228;mlich im RelativeCanvasHook: der mu&#223; delegieren, und daher von au&#223;en diese Methode aufrufen
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1612471892599" ID="ID_97557081" MODIFIED="1612471918991" TEXT="und noch schlimmer: wir haben jetzt zwei verkettete virtual calls">
<arrowlink COLOR="#9b3c5a" DESTINATION="ID_735591701" ENDARROW="Default" ENDINCLINATION="-828;79;" ID="Arrow_ID_619578495" STARTARROW="None" STARTINCLINATION="-1537;0;"/>
</node>
</node>
<node CREATED="1612473087980" ID="ID_1089235510" MODIFIED="1612473100872" TEXT="ist dieser Zugangspunkt sinnvoll?">
<node CREATED="1612473107642" ID="ID_790590091" MODIFIED="1666474893867" TEXT="daf&#xfc;r spricht">
<node CREATED="1666474895435" ID="ID_1743952496" MODIFIED="1666474895435" TEXT="per Zeit an den Canvas geheftet"/>
<node CREATED="1612473206764" ID="ID_383710389" MODIFIED="1666475206066" TEXT="Widget kann sich selbst um seine eigene Ausdehnung k&#xfc;mmern">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      das mag &#252;berraschend sein &#8212; erst dachte ich, es sein ein Nachteil, aber tats&#228;chlich f&#252;gt es sich nat&#252;rlich in die Layout-Steuerung von GTK ein; denn GTK fragt ja das Widget nach seiner ben&#246;tigten Ausdehnung, und das ist auch genau der Mechanismus, &#252;ber den wir eine Beschr&#228;nkung auf eine vorgegebene zeitliche Ausdehnung realisieren. Zudem hat das Widget die Information &#252;ber seine eigene Ausdehnung als Zeitangabe vorliegen, und das pa&#223;t dann auch gut in dieses Aufrufschema
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1612473146517" ID="ID_116246629" MODIFIED="1612473172733" TEXT="dagegen spricht">
<node CREATED="1612473174072" ID="ID_589866375" MODIFIED="1612473205808" TEXT="bei Zoom-&#xc4;nderung mu&#xdf; sich das Widget neu anheften"/>
</node>
</node>
<node CREATED="1612474248183" ID="ID_1920258813" MODIFIED="1612474254178" TEXT="Neben-Constraint: Storage">
<node CREATED="1612474255953" ID="ID_1180938524" MODIFIED="1612474796077" TEXT="den Pointer auf den View habe ich zwangsl&#xe4;ufig">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Das ist eine Konsequenz aus dem Design des Diff-Framework; genauer, aus der konkreten Form, die die Implementierung des Diff-Framework bekommen hat: Und zwar, da&#223; ein generischer Container gebunden wird. Das bedeutet, da&#223; die Elemente im Container wie Werte behandelt werden. Und deshalb m&#252;ssen sich Widgets selbst&#228;ndig vom Canvas abmelden. Die Alternative dazu w&#228;re, da&#223; der Parent den Diff interpretiert, und seine Kinder direkt manipuliert. Dann w&#228;ren diese Kinder aber auch Widgets, und nicht nochmal indirekt als Presenter angebunden. K&#246;nnte man machen, habe ich aber ein mulmiges Gef&#252;hl. Da nehme ich dann doch lieber ein smart-Handle und einen Back-Pointer in Kauf.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1612474798393" ID="ID_426717931" MODIFIED="1612474928592" TEXT="jeder andere Service m&#xfc;&#xdf;te noch zus&#xe4;tzlich verdrahtet werden">
<arrowlink COLOR="#6377b1" DESTINATION="ID_1343110314" ENDARROW="Default" ENDINCLINATION="33;-52;" ID="Arrow_ID_1779941265" STARTARROW="None" STARTINCLINATION="-154;7;"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1612474853633" ID="ID_1343110314" MODIFIED="1612480345782" TEXT="Beschlu&#xdf;: es wird explizit Bestandteil des CanvasHook-API">
<linktarget COLOR="#7479c0" DESTINATION="ID_1343110314" ENDARROW="Default" ENDINCLINATION="-766;-1697;" ID="Arrow_ID_712594873" SOURCE="ID_859822896" STARTARROW="None" STARTINCLINATION="520;37;"/>
<linktarget COLOR="#6377b1" DESTINATION="ID_1343110314" ENDARROW="Default" ENDINCLINATION="33;-52;" ID="Arrow_ID_1779941265" SOURCE="ID_426717931" STARTARROW="None" STARTINCLINATION="-154;7;"/>
<icon BUILTIN="yes"/>
<node COLOR="#338800" CREATED="1612480328315" ID="ID_1469666563" MODIFIED="1612480344504" TEXT="public machen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1612480333285" ID="ID_435258153" MODIFIED="1612480343249" TEXT="direkt verwenden im RelativeCanvasHook">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1612619529157" ID="ID_1950608874" MODIFIED="1665962365176" TEXT="vorl&#xe4;ufiger Entwurf: mit einem Button">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1612619554554" ID="ID_548348096" MODIFIED="1612620546458" TEXT="funktioniert erst mal so halbwegs">
<arrowlink COLOR="#67384d" DESTINATION="ID_616104406" ENDARROW="Default" ENDINCLINATION="-605;33;" ID="Arrow_ID_349418044" STARTARROW="None" STARTINCLINATION="241;19;"/>
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1612620549021" ID="ID_351516626" MODIFIED="1665962352755" TEXT="inzwischen im Detail aufgekl&#xe4;rt (&#x2023;ElementBoxWidget)">
<arrowlink COLOR="#6fb9c8" DESTINATION="ID_1826613475" ENDARROW="Default" ENDINCLINATION="1266;110;" ID="Arrow_ID_1550601686" STARTARROW="None" STARTINCLINATION="2230;117;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1617888163319" ID="ID_1711872430" MODIFIED="1665962559005" TEXT="vorl&#xe4;ufige Impl. f&#xfc;r Clip-dragging versuchen">
<icon BUILTIN="button_ok"/>
<node CREATED="1617888201086" ID="ID_1199769870" MODIFIED="1617888281168" TEXT="das schafft schon mal einen Entwurf f&#xfc;r das Framework">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1617888226463" ID="ID_650089378" MODIFIED="1617888281168" TEXT="und erlaubt zugleich, die Struktur des Designs zu &#xfc;berpr&#xfc;fen">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1617888246955" ID="ID_719593541" MODIFIED="1665962556416" TEXT="zun&#xe4;chst einmal: neuer Anlauf f&#xfc;r kontext-bezogene Commands">
<arrowlink COLOR="#425c68" DESTINATION="ID_1624270915" ENDARROW="Default" ENDINCLINATION="-809;-2134;" ID="Arrow_ID_1181760372" STARTARROW="None" STARTINCLINATION="-299;13;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1583678162183" ID="ID_798000610" MODIFIED="1666368507250" TEXT="Stufe-2">
<icon BUILTIN="button_ok"/>
<node CREATED="1583678167438" ID="ID_342453194" MODIFIED="1583678173531" TEXT="vereinfachte Darstellung"/>
<node CREATED="1583678176917" ID="ID_1637892152" MODIFIED="1583678182657" TEXT="Vorstufe f&#xfc;r &quot;abridged&quot;"/>
<node COLOR="#435e98" CREATED="1612620756065" ID="ID_485594461" MODIFIED="1666368525693" STYLE="fork" TEXT="ElementBoxWidget verwenden....">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Das EventBoxWidget mu&#223;te dazu nat&#252;rlich erst einmal gebaut werden; dieses ist n&#228;mlich im Grunde genommen genau die Abstraktion eines <i>abridged clip... </i>
    </p>
    <p>
      <u>Stand 10/2022</u>: Basis-Implementierung geschaffen <font color="#25d56b">#1219</font>&#160;und sieht soweit gut aus...
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#406d5c" DESTINATION="ID_368245484" ENDARROW="Default" ENDINCLINATION="-469;652;" ID="Arrow_ID_264431308" STARTARROW="None" STARTINCLINATION="-1674;133;"/>
<linktarget COLOR="#2082a9" DESTINATION="ID_485594461" ENDARROW="Default" ENDINCLINATION="872;71;" ID="Arrow_ID_1204090343" SOURCE="ID_474563596" STARTARROW="None" STARTINCLINATION="2306;92;"/>
<node COLOR="#338800" CREATED="1666452299624" HGAP="49" ID="ID_1827001710" MODIFIED="1675897244770" TEXT="Zeit &#x2192; Pixel &#xdc;bersetzung" VSHIFT="-13">
<arrowlink COLOR="#644d8a" DESTINATION="ID_244578537" ENDARROW="Default" ENDINCLINATION="-220;12;" ID="Arrow_ID_7428365" STARTARROW="None" STARTINCLINATION="55;-63;"/>
<linktarget COLOR="#525d93" DESTINATION="ID_1827001710" ENDARROW="Default" ENDINCLINATION="873;-869;" ID="Arrow_ID_892468806" SOURCE="ID_998825618" STARTARROW="None" STARTINCLINATION="-1738;113;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1675896850015" ID="ID_145894801" MODIFIED="1675896902499" TEXT="indirekt per Interface CanvasHook"/>
<node CREATED="1675896935547" ID="ID_1938738483" MODIFIED="1675897220295" TEXT="CanvasHook::getMetric()">
<icon BUILTIN="info"/>
</node>
<node COLOR="#435e98" CREATED="1675896996419" ID="ID_1311118876" LINK="#ID_412094029" MODIFIED="1675897215015" TEXT="implementierung delegiert an ZoomWindow">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1611539501493" HGAP="38" ID="ID_1849626018" MODIFIED="1665962611640" TEXT="TODO: &#xdc;berlegungen zur Daten-Storage" VSHIFT="18">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1611539517985" ID="ID_1850041925" MODIFIED="1665962618399" TEXT="macht es Sinn, f&#xfc;r alle Clip-Anzeigeformen einen gemeinsamen Daten-Record zu verwenden?">
<arrowlink COLOR="#82b7c6" DESTINATION="ID_1048238324" ENDARROW="Default" ENDINCLINATION="-451;461;" ID="Arrow_ID_22542364" STARTARROW="None" STARTINCLINATION="-209;-7;"/>
<icon BUILTIN="help"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1611539550821" ID="ID_219259739" MODIFIED="1611539584717" TEXT="und: diesen einbetten, oder per Pointer halten und weitergeben?">
<icon BUILTIN="help"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1675384884653" ID="ID_1042919827" MODIFIED="1675385087573" TEXT="Lifecycle f&#xfc;r Content-Renderer potentiell problematisch">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...da das ElementBoxWidget nicht die ownership f&#252;r sein Kind-Widget (den ContentRenderer) &#252;bernimmt; daher mu&#223; das Kind l&#228;nger leben als das ElementBoxWidget, aber genau das ist <b>nicht gew&#228;hrleistet</b>, wenn das Clip-Delegate von ElementBoxWidget <b>erbt</b>.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
<node CREATED="1583678206105" ID="ID_1843404430" MODIFIED="1583678219642" TEXT="Stufe-3">
<icon BUILTIN="hourglass"/>
<node CREATED="1583678212600" ID="ID_1423004945" MODIFIED="1583678217411" TEXT="Flexibilit&#xe4;t einbauen"/>
</node>
<node CREATED="1583678222687" ID="ID_789044666" MODIFIED="1583678227642" TEXT="...."/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1611479083504" ID="ID_1933989336" MODIFIED="1611479093202" TEXT="vollst&#xe4;ndige Clip-Repr&#xe4;sentation">
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1611914931941" ID="ID_22248942" MODIFIED="1611914940429" TEXT="Integration">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1611914946556" ID="ID_1839157029" MODIFIED="1611915226243" TEXT="Einbindung in die Track-Kontrollstruktur">
<arrowlink COLOR="#aa6852" DESTINATION="ID_604450209" ENDARROW="Default" ENDINCLINATION="-1233;136;" ID="Arrow_ID_186901681" STARTARROW="None" STARTINCLINATION="-480;35;"/>
</node>
<node CREATED="1611914988277" ID="ID_1193135800" MODIFIED="1611914995176" TEXT="Einbindung in die Verhaltens-Steuerung"/>
<node CREATED="1611915139913" ID="ID_936967290" MODIFIED="1611915198783" TEXT="Manipulations-Operationen">
<arrowlink COLOR="#943868" DESTINATION="ID_619025500" ENDARROW="Default" ENDINCLINATION="-954;73;" ID="Arrow_ID_1146152324" STARTARROW="None" STARTINCLINATION="-490;51;"/>
</node>
<node CREATED="1611914955818" ID="ID_1742858971" MODIFIED="1611914964972" TEXT="Anbindung via Diff-Framework"/>
</node>
</node>
<node CREATED="1476376943985" HGAP="52" ID="ID_1422206856" MODIFIED="1557498707231" TEXT="Viewer" VSHIFT="10">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1680567087657" ID="ID_621933360" MODIFIED="1680567105120" TEXT="entwickeln">
<icon BUILTIN="yes"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1680564423273" ID="ID_7752918" MODIFIED="1680567145813" TEXT="Video-Display-GUI">
<linktarget COLOR="#f6e1c2" DESTINATION="ID_7752918" ENDARROW="Default" ENDINCLINATION="-612;79;" ID="Arrow_ID_1986887171" SOURCE="ID_1435039515" STARTARROW="None" STARTINCLINATION="-2008;-180;"/>
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1680567169798" ID="ID_1105975184" MODIFIED="1680567175175" TEXT="Play-control">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node CREATED="1680567033328" ID="ID_60631732" MODIFIED="1680567036668" TEXT="Infrastruktur">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1680565198929" ID="ID_1636806116" MODIFIED="1680567189686" TEXT="Video-Widget">
<linktarget COLOR="#fec499" DESTINATION="ID_1636806116" ENDARROW="Default" ENDINCLINATION="-757;117;" ID="Arrow_ID_820803219" SOURCE="ID_961883511" STARTARROW="None" STARTINCLINATION="-239;41;"/>
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1680565204949" ID="ID_754563967" MODIFIED="1680567194869" TEXT="OutputManager f&#xfc;r Video-Display">
<linktarget COLOR="#fec499" DESTINATION="ID_754563967" ENDARROW="Default" ENDINCLINATION="-691;58;" ID="Arrow_ID_1893379752" SOURCE="ID_962521952" STARTARROW="None" STARTINCLINATION="-230;29;"/>
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1680567197898" ID="ID_73360951" MODIFIED="1680567628091" TEXT="Integration mit Output-Management (allgemein)">
<arrowlink COLOR="#fe756b" DESTINATION="ID_1644608240" ENDARROW="Default" ENDINCLINATION="-1507;-562;" ID="Arrow_ID_246148002" STARTARROW="None" STARTINCLINATION="-591;33;"/>
<icon BUILTIN="hourglass"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1680567513016" ID="ID_1328492043" MODIFIED="1680567618172" TEXT="Grundlage f&#xfc;r Medien-Verbindungs-Framework">
<arrowlink COLOR="#ba4677" DESTINATION="ID_212457558" ENDARROW="Default" ENDINCLINATION="-1225;-80;" ID="Arrow_ID_1272242151" STARTARROW="None" STARTINCLINATION="360;22;"/>
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
</node>
<node CREATED="1480639186172" HGAP="45" ID="ID_838667304" MODIFIED="1557498707231" TEXT="Mixer" VSHIFT="28">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1476376927660" FOLDED="true" HGAP="35" ID="ID_688318446" MODIFIED="1680569140448" TEXT="Docks" VSHIFT="12">
<icon BUILTIN="hourglass"/>
<node CREATED="1504200504235" ID="ID_125942292" MODIFIED="1557498707231" TEXT="PanelManager mu&#xdf; umgebaut werden">
<arrowlink COLOR="#e1a169" DESTINATION="ID_1249897876" ENDARROW="Default" ENDINCLINATION="-636;0;" ID="Arrow_ID_446871395" STARTARROW="None" STARTINCLINATION="-311;562;"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1504193029907" ID="ID_945788817" MODIFIED="1557498707231" TEXT="#1104 how to instruct actions through panels">
<linktarget COLOR="#b37033" DESTINATION="ID_945788817" ENDARROW="None" ENDINCLINATION="-255;-86;" ID="Arrow_ID_61914" SOURCE="ID_1943521361" STARTARROW="Default" STARTINCLINATION="-618;-18;"/>
<icon BUILTIN="flag-yellow"/>
</node>
<node CREATED="1504368481111" ID="ID_1149652836" MODIFIED="1557498707231" TEXT="PanelManager selber verbleibt im top-level window">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1504368500421" ID="ID_184425569" MODIFIED="1557498707231" TEXT="es gibt einen PanelLocator im WindowLocator">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1504368540111" ID="ID_1747666798" MODIFIED="1557498707232" TEXT="es gibt einen ViewLocator im InteractionDirector">
<arrowlink COLOR="#7f97bd" DESTINATION="ID_344392695" ENDARROW="Default" ENDINCLINATION="-977;81;" ID="Arrow_ID_1627222173" STARTARROW="None" STARTINCLINATION="1159;303;"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1504200512737" ID="ID_320931452" MODIFIED="1557498707232" TEXT="M&#xfc;llhaufen">
<icon BUILTIN="clanbomber"/>
</node>
<node CREATED="1504200743610" ID="ID_1973994759" MODIFIED="1679362063119" TEXT="&#xdc;bergangsweise....">
<node CREATED="1504200750905" ID="ID_1728645080" MODIFIED="1679359485827" TEXT="gab es noch eine ZombieTimeline">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Zum Abschlu&#223; der GUI-&#220;berarbeitung 3/23 habe ich diese Zombie-Timeline tot gemacht
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#338800" CREATED="1504200758920" FOLDED="true" ID="ID_19179662" MODIFIED="1561827465280" TEXT="hab ich schon mal eine InfoBox dazugebaut">
<linktarget COLOR="#f5dd67" DESTINATION="ID_19179662" ENDARROW="Default" ENDINCLINATION="743;-1563;" ID="Arrow_ID_1195014928" SOURCE="ID_340215113" STARTARROW="None" STARTINCLINATION="-452;605;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1504200878312" ID="ID_1934842950" MODIFIED="1576282358037" TEXT="...f&#xfc;r #1099 DemoGuiRoundtrip">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...um mal was im UI anzeigen zu k&#246;nnen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
<node CREATED="1504200907356" ID="ID_1939871955" MODIFIED="1538838450291" TEXT="neues Dock">
<icon BUILTIN="button_ok"/>
<node CREATED="1504201024836" ID="ID_541911572" MODIFIED="1518487921083" TEXT="brauche Icon"/>
<node CREATED="1504201506172" ID="ID_739793394" MODIFIED="1518487921083" TEXT="nimm vorerst Asset-Icon">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="yes"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1504201029004" ID="ID_1898190659" MODIFIED="1538838744207" TEXT="als SVG machen...">
<arrowlink COLOR="#8697d2" DESTINATION="ID_1569870904" ENDARROW="Default" ENDINCLINATION="-935;-133;" ID="Arrow_ID_421953450" STARTARROW="None" STARTINCLINATION="-861;94;"/>
<icon BUILTIN="hourglass"/>
</node>
</node>
<node COLOR="#338800" CREATED="1534523269133" ID="ID_403796438" MODIFIED="1538838457405" TEXT="interne Struktur">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1534523277547" ID="ID_1662503806" MODIFIED="1538838460701" TEXT="FelerLog-Anzeige">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1534523283443" ID="ID_329149746" MODIFIED="1534524676311" TEXT="erst bei Bedarf belegen">
<arrowlink COLOR="#7ca8bc" DESTINATION="ID_1941760302" ENDARROW="Default" ENDINCLINATION="-1967;5936;" ID="Arrow_ID_192358692" STARTARROW="None" STARTINCLINATION="670;0;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1534523296448" ID="ID_734584528" MODIFIED="1538838422608" TEXT="zuklappbar">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1534523292305" ID="ID_1595061322" MODIFIED="1538838426589" TEXT="Platzhalter">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1538838427984" ID="ID_1386470288" MODIFIED="1538838432888" TEXT="Buttonts">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1534850747192" ID="ID_109802175" MODIFIED="1538838438202" TEXT="vorl&#xe4;ufig per Grid implementieren">
<icon BUILTIN="button_cancel"/>
</node>
</node>
<node CREATED="1504200915915" ID="ID_335470074" MODIFIED="1538838470692" TEXT="sp&#xe4;ter wird das ein nichtmodaler Parameter-Editor">
<arrowlink DESTINATION="ID_1405249171" ENDARROW="Default" ENDINCLINATION="222;-82;" ID="Arrow_ID_1395046288" STARTARROW="None" STARTINCLINATION="644;0;"/>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node CREATED="1504833434094" ID="ID_349655067" MODIFIED="1557498707232">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Docks enthalten <b>Component Views</b>
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#929fdf" DESTINATION="ID_1717772756" ENDARROW="Default" ENDINCLINATION="-34;-71;" ID="Arrow_ID_1343685046" STARTARROW="None" STARTINCLINATION="-79;76;"/>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1538941704952" HGAP="12" ID="ID_429142366" MODIFIED="1557498707232" TEXT="konkrete Panels" VSHIFT="26">
<icon BUILTIN="hourglass"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1480694550601" ID="ID_712786561" MODIFIED="1557498707232" TEXT="Timeline-Panel">
<linktarget COLOR="#fec680" DESTINATION="ID_712786561" ENDARROW="Default" ENDINCLINATION="-1077;-98;" ID="Arrow_ID_433721169" SOURCE="ID_1231562526" STARTARROW="None" STARTINCLINATION="860;206;"/>
<icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1539394757429" ID="ID_376064530" MODIFIED="1557498707232" TEXT="wegr&#xe4;umen des Testcodes">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1539394765628" ID="ID_308731527" MODIFIED="1557498707232" TEXT="Widget-Struktur anlegen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1539459412979" ID="ID_1273129379" MODIFIED="1557498707232" TEXT="leere Platzhalter-Timeline">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1539459428928" ID="ID_1156538064" MODIFIED="1557498707232" TEXT="best&#xfc;cken">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1539394779490" ID="ID_1710199928" MODIFIED="1557498707232" TEXT="Verwalten der Tabs">
<icon BUILTIN="flag-yellow"/>
</node>
<node COLOR="#338800" CREATED="1539394670721" ID="ID_1510868551" MODIFIED="1557498707232" TEXT="TimelineWidget &#xfc;bernehmen">
<linktarget COLOR="#7882c8" DESTINATION="ID_1510868551" ENDARROW="Default" ENDINCLINATION="-587;-51;" ID="Arrow_ID_206932394" SOURCE="ID_50363803" STARTARROW="None" STARTINCLINATION="-699;0;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1539394802679" ID="ID_1716564275" MODIFIED="1557498707232" TEXT="neuen Tab daf&#xfc;r belegen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1539480719942" ID="ID_1686433179" MODIFIED="1557498707232" TEXT="ggfs Platzhalter wegwerfen">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1477342616175" HGAP="37" ID="ID_954058801" MODIFIED="1557498707232" TEXT="Workspace" VSHIFT="33">
<node CREATED="1477342624942" FOLDED="true" ID="ID_56920104" MODIFIED="1679359422465" TEXT="ist-Zustand">
<icon BUILTIN="info"/>
<node CREATED="1477342634181" ID="ID_930340610" MODIFIED="1518487921084" TEXT="ein globaler WindowManager">
<node CREATED="1477342640932" ID="ID_950379507" MODIFIED="1518487921084" TEXT="hat Liste von WorkspaceWindow-s"/>
<node CREATED="1477342694237" ID="ID_1913986184" MODIFIED="1518487921084" TEXT="diese deregistrieren sich beim Schlie&#xdf;en"/>
<node CREATED="1477342711442" ID="ID_500847959" MODIFIED="1518487921084" TEXT="wenn letztes Fenster zu, dann Main-&gt;quit"/>
<node CREATED="1477342816853" ID="ID_205499879" MODIFIED="1576282358037" TEXT="steuert Zusand von Menu&gt;Window&gt;CloseWindow">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...nur <i>enabled</i>&#160;wenn
    </p>
    <p>
      mehr als ein top-level Fenster offen
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1477342868574" ID="ID_679226593" MODIFIED="1518487921084" TEXT="WorkspaceWindow">
<node CREATED="1477342962345" ID="ID_1801410798" MODIFIED="1518487921084" TEXT="verbunden mit">
<node CREATED="1477342985710" ID="ID_1944710826" MODIFIED="1518487921084" TEXT="Project"/>
<node CREATED="1477342971448" ID="ID_1574175266" MODIFIED="1518487921084" TEXT="Controller"/>
</node>
<node CREATED="1477343022529" ID="ID_1585028268" MODIFIED="1518487921084" TEXT="owns">
<node CREATED="1477343030104" ID="ID_350881879" MODIFIED="1576282358036" TEXT="gtk::UiManager">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      A Gtk::UIManager constructs a user interface (menus and toolbars) from one or more UI definitions,
    </p>
    <p>
      which reference actions from one or more action groups.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1477343041295" ID="ID_1874325062" MODIFIED="1518487921084" TEXT="PanelManager">
<node CREATED="1477343244428" ID="ID_513688853" MODIFIED="1518487921084" TEXT="managed die Docks"/>
<node CREATED="1477345531413" ID="ID_1082348568" MODIFIED="1518487921084" TEXT="Liste m&#xf6;glicher Panel-Typen"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1477345852274" HGAP="30" ID="ID_1401392249" MODIFIED="1518487921084" TEXT="Kritik" VSHIFT="15">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1477345882862" ID="ID_1342647727" MODIFIED="1518487921084" TEXT="arbeitet zu viel mit Pointern ohe RAII"/>
<node CREATED="1477345906723" ID="ID_906895860" MODIFIED="1518487921084" TEXT="&quot;poor man&apos;s reflection&quot;"/>
<node CREATED="1477345939063" ID="ID_984848221" MODIFIED="1576282358035">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      realisiert Vererbung <i>zu fu&#223;</i>
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...anstatt eine auf den konkreten Typ getemplatete Subklasse zu verwenden,
    </p>
    <p>
      wird eine &quot;CreatePanelProc&quot; in einen PanelDescriptor eingewickelt.
    </p>
    <p>
      Letzten Endes wird dieser dann per Match auf die Typ-ID ausgew&#228;hlt.
    </p>
    <p>
      AUA!
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1477347390430" HGAP="46" ID="ID_138529757" MODIFIED="1518487921084" TEXT="Panel" VSHIFT="31">
<node CREATED="1477347401045" ID="ID_919458304" MODIFIED="1518487921084" TEXT="Timeline">
<node CREATED="1477347410884" ID="ID_507837490" MODIFIED="1518487921084" TEXT="im Umbau"/>
</node>
<node CREATED="1477347405332" ID="ID_1735199230" MODIFIED="1518487921084" TEXT="Asset"/>
<node CREATED="1477347407324" ID="ID_1325322495" MODIFIED="1518487921084" TEXT="Viewer">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1477347416659" ID="ID_1220196828" MODIFIED="1518487921084" TEXT="kaputt">
<icon BUILTIN="flag-yellow"/>
</node>
<node CREATED="1477347424858" ID="ID_439722309" MODIFIED="1518487921084" TEXT="wird nicht mehr erzeugt">
<icon BUILTIN="clanbomber"/>
</node>
<node CREATED="1477347448199" ID="ID_432416001" MODIFIED="1518487921084" TEXT="Grund: kein Displayer">
<icon BUILTIN="info"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1477616970387" HGAP="56" ID="ID_786267715" MODIFIED="1518487921084" TEXT="Problem: Panel clean-up" VSHIFT="40">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1477617009766" ID="ID_205353538" MODIFIED="1576282358035" TEXT="Verdacht: dtor wird nicht aufgerufen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      wie komme ich da drauf?
    </p>
    <p>
      Ich wollte untersuchen, ob Gtk::manage( ptr ) korrekt die &#252;bergebenen Objekte aufr&#228;umt.
    </p>
    <p>
      Wie sich nun zeigt, passiert das Aufr&#228;umen im dtor desjenigen Widget, dem das zu managende Objekt als Kind gegeben wurde.
    </p>
    <p>
      Im vorliegenden Fall w&#228;re das der dtor des umschlie&#223;enden ScrolledWindow. Der aber wird <i>offensichtlich nicht aufgerufen,</i>
    </p>
    <p>
      auch nicht im Application-Shutdown!
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1477617185582" ID="ID_634277803" MODIFIED="1576282358034" TEXT="PanelManager::createPanels()">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ....erzeugt wird das hier:
    </p>
    <p>
      dock_.add_item(timelinePanel-&gt;getDockItem(),Gdl::DOCK_BOTTOM);
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
</node>
</node>
<node CREATED="1477343061900" ID="ID_589166101" MODIFIED="1518487921084" TEXT="Statusbar"/>
<node CREATED="1477343071827" ID="ID_369966079" MODIFIED="1576282358034" TEXT="Actions">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Helper to build the menu and for&#160;registering and handling of user action events
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1477344354329" ID="ID_1683945104" MODIFIED="1518487921084" TEXT="createUi()">
<node CREATED="1477344605448" ID="ID_960836253" MODIFIED="1518487921084" TEXT="panelManager_.setupDock();"/>
<node CREATED="1477344610087" ID="ID_844257690" MODIFIED="1518487921084" TEXT="baut auf">
<node CREATED="1477344616486" ID="ID_466606949" MODIFIED="1518487921084" TEXT="Men&#xfc;bar"/>
<node CREATED="1477344619541" ID="ID_1111690482" MODIFIED="1518487921084" TEXT="dockContainer"/>
<node CREATED="1477344659440" ID="ID_1310811438" MODIFIED="1518487921084" TEXT="statusBar"/>
</node>
</node>
</node>
<node CREATED="1477343115357" ID="ID_213954404" MODIFIED="1518487921084" TEXT="Kritik">
<node CREATED="1477343120660" ID="ID_1940152250" MODIFIED="1576282358033" TEXT="Multiplizit&#xe4;t unklar">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      es sieht so aus, als w&#228;re es &quot;das&quot; WorkspaceWindow
    </p>
    <p>
      aber es kann davon mehrere geben
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1477343152288" ID="ID_1267678981" MODIFIED="1518487921084" TEXT="Vermengung von Fenster und Workspace"/>
</node>
</node>
<node CREATED="1477522265208" HGAP="53" ID="ID_41510242" MODIFIED="1557498707232" TEXT="Neuerungen" VSHIFT="28">
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1477522271822" FOLDED="true" ID="ID_622217667" MODIFIED="1557498707232" TEXT="PanelExperiment">
<arrowlink COLOR="#e0d18d" DESTINATION="ID_340215113" ENDARROW="Default" ENDINCLINATION="-389;5426;" ID="Arrow_ID_1440864098" STARTARROW="None" STARTINCLINATION="-1637;-8191;"/>
<icon BUILTIN="pencil"/>
<icon BUILTIN="hourglass"/>
<node CREATED="1477522330886" ID="ID_1920846276" MODIFIED="1557498707232" TEXT="ScrolledWindow"/>
<node CREATED="1477522340573" ID="ID_168076322" MODIFIED="1557498707232" TEXT="Grid">
<node CREATED="1477523590806" ID="ID_908611386" MODIFIED="1557498707232" TEXT="attach()"/>
<node CREATED="1477523593462" ID="ID_1461366621" MODIFIED="1557498707232" TEXT="attach_next_to()"/>
<node CREATED="1477523578208" ID="ID_738525852" MODIFIED="1557498707232" TEXT="add()"/>
</node>
<node CREATED="1477523550484" ID="ID_1492266905" MODIFIED="1557498707232" TEXT="Box">
<node CREATED="1477523556667" ID="ID_852178687" MODIFIED="1557498707232" TEXT="horizontal / vertikal"/>
<node CREATED="1477523561930" ID="ID_868197404" MODIFIED="1557498707232" TEXT="pack_start() "/>
<node CREATED="1477523573184" ID="ID_1063091132" MODIFIED="1557498707232" TEXT="pack_end()"/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1534849790225" HGAP="46" ID="ID_326815949" MODIFIED="1557498707232" TEXT="#1164 investigate docking panel behaviour">
<linktarget COLOR="#a35f7f" DESTINATION="ID_326815949" ENDARROW="Default" ENDINCLINATION="33;189;" ID="Arrow_ID_746548615" SOURCE="ID_1536071305" STARTARROW="None" STARTINCLINATION="246;-229;"/>
<icon BUILTIN="flag-pink"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534850081097" ID="ID_264379011" MODIFIED="1557498707232" TEXT="m&#xf6;gliche Schachtelungen">
<icon BUILTIN="full-1"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534850106454" ID="ID_1465835366" MODIFIED="1557498707232" TEXT="nebeneinander (Grid)">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534850113247" ID="ID_667518060" MODIFIED="1557498707232" TEXT="Tabs">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534850159866" ID="ID_1887039635" MODIFIED="1557498707232" TEXT="Teil-Layout programatisch erzeugen / rekonstruieren">
<icon BUILTIN="full-2"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534850200900" ID="ID_754628121" MODIFIED="1557498707232" TEXT="programmatische Gr&#xf6;&#xdf;en&#xe4;nderung">
<icon BUILTIN="full-3"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534850230072" ID="ID_333353660" MODIFIED="1557498707232" TEXT="size-request">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534850238426" ID="ID_1411766694" MODIFIED="1557498707232" TEXT="harte Gr&#xf6;&#xdf;envorgabe">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534850256212" ID="ID_761478120" MODIFIED="1557498707232" TEXT="bei mehrfacher Schachtelung">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534850278149" ID="ID_348255325" MODIFIED="1557498707232" TEXT="Zusammenspiel mit Persistenz">
<icon BUILTIN="full-4"/>
</node>
</node>
</node>
<node CREATED="1487464476801" FOLDED="true" ID="ID_1621360845" MODIFIED="1679362327422" TEXT="Umbau">
<icon BUILTIN="yes"/>
<node COLOR="#338800" CREATED="1487464480872" ID="ID_830603607" MODIFIED="1679362266710" TEXT="bestehende Strukturen stillegen">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1487464489143" ID="ID_1990719718" MODIFIED="1679362270779" TEXT="noch erhalten als Bezugspunkt">
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#338800" CREATED="1487464495494" ID="ID_1238357229" MODIFIED="1679362273315" TEXT="daneben neue Controller-Backbone hochziehen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1487464505469" ID="ID_707273464" MODIFIED="1679362300502" TEXT="Umbau in neuen top-level">
<arrowlink COLOR="#30bc74" DESTINATION="ID_1868522177" ENDARROW="Default" ENDINCLINATION="374;490;" ID="Arrow_ID_600425644" STARTARROW="None" STARTINCLINATION="2009;200;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1477522287316" ID="ID_1942021610" MODIFIED="1557498707232" TEXT="TimelinePanel"/>
<node COLOR="#338800" CREATED="1502390603674" ID="ID_1926586811" MODIFIED="1557498707232" TEXT="#1102 : build a message display box in the UI">
<linktarget COLOR="#8c8bae" DESTINATION="ID_1926586811" ENDARROW="Default" ENDINCLINATION="1539;60;" ID="Arrow_ID_1593124756" SOURCE="ID_125356908" STARTARROW="None" STARTINCLINATION="-850;779;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1504833474521" FOLDED="true" HGAP="39" ID="ID_1439141983" MODIFIED="1557498707232" TEXT="Struktur" VSHIFT="10">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1504833487359" ID="ID_1631525475" MODIFIED="1557498707232" TEXT="UI-Frame: Fenster"/>
<node CREATED="1504833498453" ID="ID_815439481" MODIFIED="1557498707232" TEXT="Perspektive"/>
<node CREATED="1504833508516" ID="ID_1973916831" MODIFIED="1557498707232" TEXT="einzelne Panel"/>
<node CREATED="1504833540720" ID="ID_1717772756" MODIFIED="1557498707232" TEXT="Component View">
<linktarget COLOR="#92a9df" DESTINATION="ID_1717772756" ENDARROW="Default" ENDINCLINATION="-1346;-3359;" ID="Arrow_ID_1986148222" SOURCE="ID_583036636" STARTARROW="None" STARTINCLINATION="385;845;"/>
<linktarget COLOR="#929fdf" DESTINATION="ID_1717772756" ENDARROW="Default" ENDINCLINATION="-34;-71;" ID="Arrow_ID_1343685046" SOURCE="ID_349655067" STARTARROW="None" STARTINCLINATION="-79;76;"/>
<node CREATED="1504833565425" ID="ID_529173859" MODIFIED="1557498707232" TEXT="Timeline"/>
<node CREATED="1504833569692" ID="ID_1708962269" MODIFIED="1557498707232" TEXT="Viewer"/>
<node CREATED="1504833572687" ID="ID_57378390" MODIFIED="1557498707232" TEXT="(Asset)Bin"/>
<node CREATED="1504833574246" ID="ID_897436866" MODIFIED="1557498707232" TEXT="Infobox">
<node CREATED="1534523010591" ID="ID_1405249171" MODIFIED="1557498707232" TEXT="Zentrale Informationsanzeigen">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1405249171" ENDARROW="Default" ENDINCLINATION="222;-82;" ID="Arrow_ID_1395046288" SOURCE="ID_335470074" STARTARROW="None" STARTINCLINATION="644;0;"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534848989905" ID="ID_1536071305" MODIFIED="1557498707232" TEXT="Anforderungen">
<arrowlink COLOR="#a35f7f" DESTINATION="ID_326815949" ENDARROW="Default" ENDINCLINATION="33;189;" ID="Arrow_ID_746548615" STARTARROW="None" STARTINCLINATION="246;-229;"/>
<icon BUILTIN="yes"/>
<node CREATED="1534849000159" ID="ID_82161143" MODIFIED="1557498707232" TEXT="fest vorgegebener Platz im UI"/>
<node CREATED="1534849057715" ID="ID_1467109522" MODIFIED="1557498707232" TEXT="stets sichbarer Status-Bereich">
<node CREATED="1534849188780" ID="ID_1937021840" MODIFIED="1557498707232" TEXT="sehr kompakt / effizient"/>
<node CREATED="1534849196166" ID="ID_1813708845" MODIFIED="1557498707232" TEXT="enth&#xe4;lt minimale Navi"/>
</node>
<node CREATED="1534849205203" ID="ID_1997665939" MODIFIED="1557498707232" TEXT="darunter">
<node CREATED="1534849381630" ID="ID_1209297989" MODIFIED="1557498707232" TEXT="Paletten-Stacks">
<node CREATED="1534849546781" ID="ID_657722273" MODIFIED="1557498707232" TEXT="zweidimensionale Anordnung"/>
<node CREATED="1534849630348" ID="ID_506310851" MODIFIED="1557498707232" TEXT="Fokus in einer Spalte + Zelle"/>
<node CREATED="1534849646074" ID="ID_1030720361" MODIFIED="1557498707232" TEXT="der Rest wird reduziert (abridged)"/>
</node>
<node CREATED="1534849493068" ID="ID_1029182833" MODIFIED="1557498707232" TEXT="kann sich in Pupup vergr&#xf6;&#xdf;ern"/>
<node CREATED="1534849512730" ID="ID_1444658378" MODIFIED="1557498707232" TEXT="kollabiert bei Fokusverlust"/>
</node>
</node>
<node CREATED="1534850609493" ID="ID_798164713" MODIFIED="1557498707232" TEXT="Belegung">
<node CREATED="1534850615125" ID="ID_1470557953" MODIFIED="1557498707232" TEXT="eindeutiger View-Name"/>
<node CREATED="1534850658265" ID="ID_60455430" MODIFIED="1557498707232" TEXT="Tab == Sub-View oder Fach"/>
</node>
</node>
<node CREATED="1534523024189" ID="ID_215944418" MODIFIED="1557498707232" TEXT="Fehlerlog">
<node CREATED="1534523031493" ID="ID_1146002742" MODIFIED="1557498707232" TEXT="wird bei erstem Bedarf belegt"/>
<node CREATED="1534523042035" ID="ID_1292242862" MODIFIED="1557498707232" TEXT="klappt bei Fehlern auf"/>
</node>
<node CREATED="1534523020334" ID="ID_295859017" MODIFIED="1557498707232" TEXT="Status"/>
</node>
<node CREATED="1504833575700" ID="ID_1470115932" MODIFIED="1557498707232" TEXT="Playcontrol"/>
</node>
</node>
</node>
</node>
<node CREATED="1488423383765" FOLDED="true" HGAP="339" ID="ID_1046643705" MODIFIED="1557498707232" TEXT="Verhalten" VSHIFT="23">
<font NAME="SansSerif" SIZE="14"/>
<node CREATED="1488423418968" ID="ID_1169811882" MODIFIED="1557498707232" TEXT="Lebenszyklus">
<node CREATED="1488423424111" ID="ID_1090980479" MODIFIED="1557498707232" TEXT="Start">
<node COLOR="#338800" CREATED="1531417429342" ID="ID_991918611" MODIFIED="1557498707232" TEXT="als Subsystem">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1531417434195" FOLDED="true" ID="ID_176564515" MODIFIED="1679086498314" TEXT="Strukturen hochfahren">
<linktarget COLOR="#fee998" DESTINATION="ID_176564515" ENDARROW="Default" ENDINCLINATION="-1211;-7367;" ID="Arrow_ID_157207334" SOURCE="ID_1850773836" STARTARROW="None" STARTINCLINATION="-617;103;"/>
<icon BUILTIN="hourglass"/>
<icon BUILTIN="pencil"/>
<node CREATED="1531417551148" ID="ID_579526750" MODIFIED="1557498707232" TEXT="UI top-level"/>
<node CREATED="1531417577048" ID="ID_371378063" MODIFIED="1557498707232" TEXT="Rahmen bereitstellen"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1531419217662" ID="ID_745789650" MODIFIED="1557498707232" TEXT="#1147 establish UI start-up sequence">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1544238959075" ID="ID_317908194" MODIFIED="1557498707232" TEXT="es gibt noch L&#xfc;cken">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1544238974604" ID="ID_116347689" MODIFIED="1557498707232" TEXT="Exception beim Hochfahren der Backbone">
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1544240822252" ID="ID_1036837893" MODIFIED="1557498707232" TEXT="#1192 Lumiera hangs on failed GUI start">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1544238994154" ID="ID_1878681615" MODIFIED="1557498707232" TEXT="Problem: Fehler-Handler sch&#xfc;tzt nur die Loop selber">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1544239461493" ID="ID_1795051800" MODIFIED="1582493900730" TEXT="catch-Block anders anordnen">
<arrowlink COLOR="#e02825" DESTINATION="ID_478753729" ENDARROW="Default" ENDINCLINATION="-3550;0;" ID="Arrow_ID_840138296" STARTARROW="None" STARTINCLINATION="-69;-346;"/>
<linktarget COLOR="#e5221e" DESTINATION="ID_1795051800" ENDARROW="Default" ENDINCLINATION="-1916;0;" ID="Arrow_ID_127697886" SOURCE="ID_110235945" STARTARROW="None" STARTINCLINATION="-716;43;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1544239713424" ID="ID_632286012" MODIFIED="1557498707232" TEXT="m&#xf6;glichen Race mit Subsystem-Runner pr&#xfc;fen">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1544241151268" ID="ID_1182875214" MODIFIED="1557498707232" TEXT="sigTerm ist durch Lock gesch&#xfc;tzt">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1544241162650" ID="ID_830024837" MODIFIED="1557498707232" TEXT="d.h. sigTerm blockt, solange der startup l&#xe4;uft"/>
<node CREATED="1544241230874" ID="ID_24965814" MODIFIED="1557498707232" TEXT="was macht GuiFacade::checkRunningState() ?">
<node CREATED="1544241332932" ID="ID_924360922" MODIFIED="1557498707232" TEXT="pr&#xfc;ft den Facade-ptr"/>
<node CREATED="1544241469845" ID="ID_1172060220" MODIFIED="1557498707232" TEXT="der ist gesetzt, sobald der UI-Thread l&#xe4;uft"/>
<node COLOR="#338800" CREATED="1544241497023" ID="ID_1127634183" MODIFIED="1557498707232" TEXT="das ist also OK">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1544241590705" ID="ID_1914479382" MODIFIED="1557498707232">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      demnach w&#252;rde startup sauber beendet,
    </p>
    <p>
      und unmittelbar danach w&#252;rder der UI-Thread einen
    </p>
    <p>
      emergency-Shutdown initiieren
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
<node COLOR="#338800" CREATED="1544241647251" ID="ID_1802228559" MODIFIED="1557498707232" TEXT="sieht soweit sauber aus">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1538265361374" ID="ID_1843835835" MODIFIED="1575131660804" TEXT="Detailierte Analyse">
<arrowlink COLOR="#77c1c5" DESTINATION="ID_226245696" ENDARROW="Default" ENDINCLINATION="-1683;73;" ID="Arrow_ID_532646791" STARTARROW="None" STARTINCLINATION="2799;341;"/>
<icon BUILTIN="info"/>
</node>
<node CREATED="1531417583847" ID="ID_1316715960" MODIFIED="1557498707232" TEXT="Dienste starten">
<node CREATED="1531417744657" ID="ID_350697541" MODIFIED="1561827465287" TEXT="Inhalts-Konsument">
<arrowlink COLOR="#30327c" DESTINATION="ID_527465217" ENDARROW="Default" ENDINCLINATION="25;-45;" ID="Arrow_ID_1130203410" STARTARROW="None" STARTINCLINATION="-75;21;"/>
<node CREATED="1531588709162" ID="ID_152567143" MODIFIED="1531588724487" TEXT="wann aktivieren?">
<icon BUILTIN="help"/>
<node CREATED="1531588726503" ID="ID_1064852599" MODIFIED="1531588733706" TEXT="mit InteractionDirector?"/>
<node CREATED="1531588734582" ID="ID_1508027862" MODIFIED="1531588750296" TEXT="vor GTK-Loop?"/>
<node CREATED="1531588753044" ID="ID_387089286" MODIFIED="1532788602238" TEXT="in der Loop?">
<arrowlink COLOR="#9d1a41" DESTINATION="ID_1581791639" ENDARROW="Default" ENDINCLINATION="-211;-16;" ID="Arrow_ID_1635616322" STARTARROW="None" STARTINCLINATION="-419;0;"/>
<linktarget COLOR="#8a226e" DESTINATION="ID_387089286" ENDARROW="Default" ENDINCLINATION="300;0;" ID="Arrow_ID_1663921099" SOURCE="ID_262149423" STARTARROW="None" STARTINCLINATION="136;3;"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1531588828738" ID="ID_1453043346" MODIFIED="1531588835780" TEXT="Verhalten">
<node CREATED="1531588837008" ID="ID_803785652" MODIFIED="1531588855466" TEXT="ctor sendet Aktivierungs-Command"/>
<node CREATED="1531588848359" ID="ID_1792032686" MODIFIED="1531588864496" TEXT="dtor sendet deAktivierungs-Command"/>
<node CREATED="1531588867077" ID="ID_291300049" MODIFIED="1531588877210" TEXT="setzt Session voraus">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1531588878587" ID="ID_1315265515" MODIFIED="1531588883734" TEXT="per Subsystem sichergestellt"/>
<node CREATED="1531588884490" ID="ID_1508293978" MODIFIED="1531588894300" TEXT="GUI setzt generell Session voraus"/>
</node>
<node CREATED="1531588911686" ID="ID_666574025" MODIFIED="1531588947853" TEXT="Konsequenzen">
<icon BUILTIN="forward"/>
<node CREATED="1531588919981" ID="ID_1457124086" MODIFIED="1531588926952" TEXT="danach k&#xf6;nnen Diff-Nachrichten ankommen"/>
<node CREATED="1531588927700" ID="ID_1330332232" MODIFIED="1531588932375" TEXT="dazu mu&#xdf; die Loop laufen"/>
<node CREATED="1531588933107" ID="ID_262149423" MODIFIED="1531588977291" TEXT="und die NotificationFacade offen sein">
<arrowlink COLOR="#8a226e" DESTINATION="ID_387089286" ENDARROW="Default" ENDINCLINATION="300;0;" ID="Arrow_ID_1663921099" STARTARROW="None" STARTINCLINATION="136;3;"/>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1531417463128" FOLDED="true" HGAP="24" ID="ID_1392317817" MODIFIED="1679359381265" TEXT="mit Inhalt beladen" VSHIFT="37">
<linktarget COLOR="#665692" DESTINATION="ID_1392317817" ENDARROW="Default" ENDINCLINATION="-1993;202;" ID="Arrow_ID_609042013" SOURCE="ID_1997153046" STARTARROW="Default" STARTINCLINATION="1943;108;"/>
<icon BUILTIN="hourglass"/>
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1531417714894" ID="ID_527465217" MODIFIED="1561827465291" TEXT="Inhalts-Empfang etablieren">
<linktarget COLOR="#30327c" DESTINATION="ID_527465217" ENDARROW="Default" ENDINCLINATION="25;-45;" ID="Arrow_ID_1130203410" SOURCE="ID_350697541" STARTARROW="None" STARTINCLINATION="-75;21;"/>
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1531423717866" ID="ID_1400324647" MODIFIED="1531423724074" TEXT="#1150 GUI content connector">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1531423582548" ID="ID_751311895" MODIFIED="1533392488074" TEXT="Aktivierungs-Command">
<icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1531423597642" ID="ID_1814328528" MODIFIED="1533395218014" TEXT="definieren">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1533395230685" ID="ID_556592297" MODIFIED="1533400280528" TEXT="Ausf&#xfc;hrung sicherstellen">
<icon BUILTIN="button_ok"/>
<node CREATED="1533400281627" ID="ID_1248361340" MODIFIED="1533400375591" TEXT="geht noch nicht --  logging-Strategy fehlt">
<icon BUILTIN="stop-sign"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1533400377118" ID="ID_1072134705" MODIFIED="1541547696433" TEXT="#211 handling pattern for dispatch">
<arrowlink COLOR="#ca91c2" DESTINATION="ID_1192893155" ENDARROW="Default" ENDINCLINATION="1415;0;" ID="Arrow_ID_207842771" STARTARROW="None" STARTINCLINATION="2581;0;"/>
<icon BUILTIN="hourglass"/>
</node>
<node COLOR="#338800" CREATED="1533400389668" ID="ID_1875748001" MODIFIED="1533400427879" TEXT="vorl&#xe4;ufig: Pr&#xe4;fix test_">
<icon BUILTIN="button_ok"/>
<node CREATED="1533400398059" ID="ID_1419077642" MODIFIED="1533400424027" TEXT="Magie im ProcDispatcher">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1533400403290" ID="ID_950948089" MODIFIED="1533400426028" TEXT="f&#xfc;hrt Command unmittelbar aus">
<icon BUILTIN="info"/>
</node>
<node COLOR="#338800" CREATED="1533400412337" ID="ID_462882830" MODIFIED="1533400420146" TEXT="funktioniert">
<icon BUILTIN="ksmiletris"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1533392476019" ID="ID_1798579710" MODIFIED="1533401269006" TEXT="vorl&#xe4;ufige Dummy-Implementierung">
<icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1533401271538" ID="ID_613065826" MODIFIED="1538263724168" TEXT="erst mal nur eine Nachricht als UI-Notification">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1533402513829" ID="ID_1456159316" MODIFIED="1538839303541" TEXT="#1099 DemoGuiRoundtrip">
<arrowlink COLOR="#f0eca5" DESTINATION="ID_1007296291" ENDARROW="Default" ENDINCLINATION="881;2029;" ID="Arrow_ID_1736540527" STARTARROW="None" STARTINCLINATION="765;-14;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1538839326830" ID="ID_1942975878" MODIFIED="1582443399893" TEXT="jetzt regul&#xe4;r &#xfc;ber die Notification facade">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1582443855728" ID="ID_1789967574" MODIFIED="1582443913545" TEXT="cmd::test_meta_activateContentDiff">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <ul>
      <li>
        InteractionDirector::populateContent_afterStart()
      </li>
      <li>
        meta-cmd.cpp
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1533401303142" ID="ID_1338326263" MODIFIED="1533401327708" TEXT="hart gecodeten initialen Diff hochschicken">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1533403016000" ID="ID_515841398" MODIFIED="1533403026256" TEXT="Diff-Nachrichten wieder verstehen">
<icon BUILTIN="flag-pink"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1533403027894" ID="ID_488294111" MODIFIED="1533403133894" TEXT="Diff-Nachricht inline generieren">
<arrowlink COLOR="#e34459" DESTINATION="ID_294556843" ENDARROW="Default" ENDINCLINATION="287;0;" ID="Arrow_ID_1612526412" STARTARROW="None" STARTINCLINATION="190;339;"/>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1531423600722" ID="ID_311523916" MODIFIED="1533392474052" TEXT="Implementierung kl&#xe4;ren">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1533401971601" ID="ID_883504437" MODIFIED="1533401978732" TEXT="Service in der Session">
<node CREATED="1533401984272" ID="ID_813978364" MODIFIED="1533401990795" TEXT="Aktivierungs-Status"/>
<node CREATED="1533401991455" ID="ID_1252573502" MODIFIED="1533402001594" TEXT="kann sich &quot;irgendwo&quot; einklinken">
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node CREATED="1533403071072" ID="ID_1097229623" MODIFIED="1533403086052" TEXT="Content-Listener">
<arrowlink DESTINATION="ID_1724879903" ENDARROW="Default" ENDINCLINATION="17;-198;" ID="Arrow_ID_275658114" STARTARROW="None" STARTINCLINATION="-79;12;"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1531423632949" ID="ID_1724879903" MODIFIED="1533403086052" TEXT="Content-Listener">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1724879903" ENDARROW="Default" ENDINCLINATION="17;-198;" ID="Arrow_ID_275658114" SOURCE="ID_1097229623" STARTARROW="None" STARTINCLINATION="-79;12;"/>
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1533401384155" ID="ID_1494781570" MODIFIED="1533403062858" TEXT="#1153 define foundation for live diff updates Session -&gt; UI">
<arrowlink COLOR="#a47f9a" DESTINATION="ID_1106740084" ENDARROW="Default" ENDINCLINATION="2561;-1079;" ID="Arrow_ID_1276188897" STARTARROW="None" STARTINCLINATION="1703;327;"/>
<icon BUILTIN="flag-yellow"/>
</node>
<node CREATED="1531423640788" ID="ID_865939750" MODIFIED="1531423650015" TEXT="Ort finden"/>
<node CREATED="1531423650339" ID="ID_583637266" MODIFIED="1531423655294" TEXT="Lebenszyklus kl&#xe4;ren"/>
<node CREATED="1531423734880" ID="ID_1658395629" MODIFIED="1531423739643" TEXT="Verbindungen kl&#xe4;ren"/>
</node>
<node COLOR="#338800" CREATED="1532788529509" ID="ID_390131579" MODIFIED="1533388695623" TEXT="Trigger-Punkt">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1532788547560" ID="ID_1581791639" MODIFIED="1664059203522" TEXT="mu&#xdf; in der GTK-Event-Loop liegen">
<linktarget COLOR="#9d1a41" DESTINATION="ID_1581791639" ENDARROW="Default" ENDINCLINATION="-211;-16;" ID="Arrow_ID_1635616322" SOURCE="ID_387089286" STARTARROW="None" STARTINCLINATION="-419;0;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#338800" CREATED="1532788645307" FOLDED="true" ID="ID_254810710" MODIFIED="1561827465292" TEXT="Trigger-Technik kl&#xe4;ren">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1532788681197" FOLDED="true" HGAP="336" ID="ID_32192034" MODIFIED="1576282358033" TEXT="bei GTK selber abschauen" VSHIFT="-52">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      erinnere mich, diverse Mechanismen gesehen zu haben,
    </p>
    <p>
      die erlauben, eine Init-Aktion in die Loop zu schedulen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
<node CREATED="1532793805646" ID="ID_1917720417" MODIFIED="1532793811649" TEXT="Gtk::Application">
<node CREATED="1532797033134" ID="ID_1310675334" MODIFIED="1532797038441" TEXT="Gio::Application">
<node CREATED="1532797039293" ID="ID_827848177" MODIFIED="1532797041784" TEXT="Basisklasse"/>
<node CREATED="1532797042628" ID="ID_868500366" MODIFIED="1532797129536" TEXT="statisches member: Application_Class">
<icon BUILTIN="idea"/>
<node CREATED="1532797071961" ID="ID_965723020" MODIFIED="1532797076020" TEXT="hat init-Funktionen"/>
<node CREATED="1532797076656" ID="ID_1083316138" MODIFIED="1576282358032">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      betrifft aber <b>nur Framework</b>-Funktionalit&#228;t
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      also kein Initialisieren des Toolkit,
    </p>
    <p>
      sondern Sachen wie verallgemeinerte &quot;Files&quot;, D-Bus-Connection etc etc
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1532794470116" ID="ID_539459561" MODIFIED="1533310145219" TEXT="Fazit">
<linktarget COLOR="#dc217a" DESTINATION="ID_539459561" ENDARROW="Default" ENDINCLINATION="33;201;" ID="Arrow_ID_601982135" SOURCE="ID_1901487140" STARTARROW="None" STARTINCLINATION="-55;-186;"/>
<icon BUILTIN="info"/>
<node CREATED="1532794476795" ID="ID_1999030504" MODIFIED="1532794483438" TEXT="gibt es statische Funktionen?">
<node CREATED="1533310001705" ID="ID_1113571044" MODIFIED="1533310014123" TEXT="nur Application::create(..)  -&gt; smart-Ptr"/>
</node>
<node CREATED="1532794485778" ID="ID_86543147" MODIFIED="1532794494804" TEXT="was f&#xfc;r on-start-Callbacks gibt es?">
<node CREATED="1533309934787" ID="ID_768351523" MODIFIED="1533309939685" TEXT="signal_activate()"/>
</node>
<node CREATED="1532794495416" ID="ID_1267822394" MODIFIED="1532794501700" TEXT="wie wird das Fenster angezeigt?">
<node CREATED="1533309900271" ID="ID_1679581564" MODIFIED="1576282358032" TEXT="entweder man macht es selber noch sichtbar">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <ul>
      <li>
        ein Fenster als Solches braucht noch keine Event-Loop
      </li>
      <li>
        ohne ein Fenster macht die event-Loop keinen Sinn
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node CREATED="1533309913133" ID="ID_1543846508" MODIFIED="1533310043556" TEXT="oder man verwendet run(Window&amp;)">
<arrowlink COLOR="#88cecc" DESTINATION="ID_1128899175" ENDARROW="Default" ENDINCLINATION="112;-110;" ID="Arrow_ID_117418578" STARTARROW="None" STARTINCLINATION="-22;73;"/>
<icon BUILTIN="forward"/>
</node>
</node>
</node>
</node>
<node CREATED="1533252714471" ID="ID_1128899175" MODIFIED="1533310039265" TEXT="Gtk::Application::run( Window&amp;)">
<linktarget COLOR="#88cecc" DESTINATION="ID_1128899175" ENDARROW="Default" ENDINCLINATION="112;-110;" ID="Arrow_ID_117418578" SOURCE="ID_1543846508" STARTARROW="None" STARTINCLINATION="-22;73;"/>
<node CREATED="1533252783548" ID="ID_1476873021" MODIFIED="1533252802635" TEXT="irgendwie hatte ich das in Erinnerung">
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1533252737995" ID="ID_763153536" MODIFIED="1533252745030" TEXT="application.cc Zeile 160"/>
<node CREATED="1533252758840" ID="ID_346690959" MODIFIED="1576282358031" TEXT="signal_activate()">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      &#160;&#160;//We cannot add and show the window until the GApplication::activate signal
    </p>
    <p>
      &#160;&#160;//has been emitted, or we will crash because the application has not been
    </p>
    <p>
      &#160;&#160;//registered. (At least if window is an ApplicationWindow.)
    </p>
  </body>
</html></richcontent>
<node CREATED="1533252809112" ID="ID_394563790" MODIFIED="1533252812836" TEXT="woot?"/>
<node CREATED="1533252813376" ID="ID_1458058904" MODIFIED="1533252820105" TEXT="wer definiert das?">
<icon BUILTIN="help"/>
</node>
<node CREATED="1533252821175" ID="ID_1891535415" MODIFIED="1533253383339" TEXT="Gio::Application ??">
<arrowlink COLOR="#224e99" DESTINATION="ID_28088492" ENDARROW="Default" ENDINCLINATION="37;-48;" ID="Arrow_ID_550550684" STARTARROW="None" STARTINCLINATION="-151;-4;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="forward"/>
</node>
</node>
</node>
<node CREATED="1533252898732" ID="ID_28088492" MODIFIED="1576282358030" TEXT="Gio::Application::signal_activate()">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      The signal_activate() signal is emitted on the primary instance
    </p>
    <p>
      when an&#160;activation occurs. See g_application_activate().
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#224e99" DESTINATION="ID_28088492" ENDARROW="Default" ENDINCLINATION="37;-48;" ID="Arrow_ID_550550684" SOURCE="ID_1891535415" STARTARROW="None" STARTINCLINATION="-151;-4;"/>
<node CREATED="1533252951945" ID="ID_182447520" MODIFIED="1533252955015">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      g_application_activate()
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1533301504184" ID="ID_887027939" MODIFIED="1533301509336" TEXT="Fragen">
<icon BUILTIN="help"/>
<node CREATED="1533301510663" ID="ID_494910709" MODIFIED="1533301520633" TEXT="wer ruft das auf?">
<node CREATED="1533309175099" ID="ID_574887736" MODIFIED="1533309275410" TEXT="im Framework nur Application::run(Window&amp;)">
<arrowlink COLOR="#6280a2" DESTINATION="ID_103827073" ENDARROW="Default" ENDINCLINATION="-1131;-99;" ID="Arrow_ID_138401663" STARTARROW="None" STARTINCLINATION="1028;-75;"/>
</node>
<node COLOR="#338800" CREATED="1533309280940" ID="ID_918869201" MODIFIED="1576282358030" TEXT="Stand 8/2018 verifiziert">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      suche (case insensitive) nach application_activate
    </p>
    <ul>
      <li>
        treffer auf APPLICATION_ACTIVATE in g_application_activate()
      </li>
      <li>
        die Treffer in Gtk::Application
      </li>
      <li>
        diverse false positives mit anderen &quot;Activation&quot;-Signalen, z.B. in Aktionen oder Buttons
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1533301523716" ID="ID_10188406" MODIFIED="1533309824191" TEXT="haben wir eine GApplication?">
<icon BUILTIN="button_cancel"/>
<node CREATED="1533301551049" ID="ID_229745628" MODIFIED="1561827465299" TEXT="was ist GApplication in C++?">
<node CREATED="1533309723431" ID="ID_47606560" MODIFIED="1533309729450" TEXT="Gio::Application"/>
</node>
<node CREATED="1533301567374" ID="ID_34255114" MODIFIED="1561827465300" TEXT="hatte Gtk::Main das?">
<node CREATED="1533302102181" ID="ID_1070266886" MODIFIED="1533302125340">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Main <b>erbt nicht</b>&#160;von Gio::Application
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1533302523445" FOLDED="true" ID="ID_1043113531" MODIFIED="1561827483834" TEXT="init">
<node CREATED="1533303553351" ID="ID_377749143" MODIFIED="1533306139169" TEXT="gtk_init">
<arrowlink COLOR="#87a8bf" DESTINATION="ID_1850885017" ENDARROW="Default" ENDINCLINATION="-195;-45;" ID="Arrow_ID_960670945" STARTARROW="None" STARTINCLINATION="416;0;"/>
</node>
<node CREATED="1533303559495" ID="ID_1106606369" MODIFIED="1533306019466" TEXT="init_gtkmm_nternals">
<arrowlink COLOR="#679cc6" DESTINATION="ID_681479502" ENDARROW="Default" ENDINCLINATION="-182;-16;" ID="Arrow_ID_1451320473" STARTARROW="None" STARTINCLINATION="273;0;"/>
</node>
</node>
</node>
<node CREATED="1533309797149" ID="ID_1211740672" MODIFIED="1533309821531" TEXT="Antwort: wir haben keine">
<icon BUILTIN="forward"/>
</node>
<node COLOR="#435e98" CREATED="1533309804964" ID="ID_6946585" MODIFIED="1533309813851" TEXT="(und das ist gut so)">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1533309837472" HGAP="6" ID="ID_1304218174" MODIFIED="1533309870065" TEXT="Fazit: wir m&#xfc;ssen das selber bauen" VSHIFT="5">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#338800" CREATED="1532788727680" FOLDED="true" HGAP="81" ID="ID_889790361" MODIFIED="1561827465306" TEXT="Gtk::Main auf aktuellem Stand" VSHIFT="51">
<linktarget COLOR="#70dcb9" DESTINATION="ID_889790361" ENDARROW="Default" ENDINCLINATION="1185;0;" ID="Arrow_ID_1988524020" SOURCE="ID_1815764983" STARTARROW="Default" STARTINCLINATION="-2084;0;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1532788737366" ID="ID_1527913663" MODIFIED="1532788745870" TEXT="aktuellen Code bereitlegen in Eclipse">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1532788747909" ID="ID_279791197" MODIFIED="1533608413841" TEXT="wir haben kopierten Code">
<icon BUILTIN="clanbomber"/>
<node CREATED="1532788761699" ID="ID_656345742" MODIFIED="1532788789963" TEXT="in gui::ctrl::ApplicationBase"/>
<node CREATED="1532788794126" ID="ID_552465239" MODIFIED="1532788875600" TEXT="aus Gtk::Main ctor/dtor">
<node CREATED="1532788799958" ID="ID_1260151456" MODIFIED="1532788808416" TEXT="Gtk::Main selber ist deprecated"/>
<node CREATED="1532788809316" ID="ID_1012886969" MODIFIED="1532788822535" TEXT="vorr&#xfc;bergehend aber noch tragbar"/>
<node CREATED="1532788848927" ID="ID_1931062828" MODIFIED="1532788864482" TEXT="Code steckt in Gtk::Main::init_gtk_internals">
<icon BUILTIN="idea"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1532789071257" ID="ID_1126586783" MODIFIED="1532789107787" TEXT="Vorsicht: was ist GtkMainConnectionNode?">
<icon BUILTIN="help"/>
<node CREATED="1532789118850" ID="ID_537169683" MODIFIED="1532789136812" TEXT="taucht (neuerdings?) im dtor auf ~GtkMain()"/>
<node CREATED="1532789138896" ID="ID_546791531" MODIFIED="1532789188914" TEXT="deaktiviert an Gtk::Main gebundene Signale">
<icon BUILTIN="info"/>
</node>
<node CREATED="1532789198999" ID="ID_270727305" MODIFIED="1576282358029" TEXT="lt. Kommentar insges. ehr ein Legacy-Feature">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...f&#252;r Signale, die nicht automatisch detached werden k&#246;nnen
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1532789833473" ID="ID_1171567949" MODIFIED="1532789838020" TEXT="relevant f&#xfc;r...">
<node CREATED="1532789860594" ID="ID_1189172516" MODIFIED="1561827465306" TEXT="gtk_init_add()">
<icon BUILTIN="button_cancel"/>
<node CREATED="1532791848873" ID="ID_1957619230" MODIFIED="1532791855539" TEXT="@deprecated seit 2010"/>
<node CREATED="1532791856200" ID="ID_278153793" LINK="https://mail.gnome.org/archives/commits-list/2010-October/msg04543.html" MODIFIED="1532791895468" TEXT="wurde schon entfernt">
<icon BUILTIN="info"/>
</node>
</node>
<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>
  <body>
    <p>
      @deprecated: 3.4: Key snooping should not be done. Events should&#160;&#160;be handled by widgets
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1532790702292" ID="ID_1501770920" MODIFIED="1532790728882" TEXT="GTKmm: KeySnooperSig in main.h / main.cpp">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1532790997780" FOLDED="true" ID="ID_1359312516" MODIFIED="1561827483835" TEXT="ah: KeySnooperSig::connect()">
<icon BUILTIN="forward"/>
<icon BUILTIN="idea"/>
<node CREATED="1532791032935" ID="ID_921226462" MODIFIED="1532791047721" TEXT="installiert eine GtkMainConnectionNode"/>
<node CREATED="1532791048453" ID="ID_1754300511" MODIFIED="1532791066007" TEXT="packt den Deregisrierungs-callback rein"/>
</node>
<node CREATED="1532791334135" ID="ID_669771307" MODIFIED="1576282358028">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      wohl <b>einzige verbleibende</b>&#160;Verwendung
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <ul>
      <li>
        finde keine andere mehr, bei suche nach GtkMainConnectionNode
      </li>
      <li>
        auch der Kommentar zur Klasse sagt dieses (gtk_init_add wohl nicht mehr!)
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1532794546778" ID="ID_1120787097" MODIFIED="1533303442524" TEXT="GTK::Main nochmal gepr&#xfc;ft">
<linktarget COLOR="#469fa6" DESTINATION="ID_1120787097" ENDARROW="Default" ENDINCLINATION="1725;-6805;" ID="Arrow_ID_433910583" SOURCE="ID_236361713" STARTARROW="None" STARTINCLINATION="821;0;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1533303793015" ID="ID_1894791438" MODIFIED="1533304526458" TEXT="Infos zu Gtk::Main, Gtk::Application und Gio::Application">
<arrowlink COLOR="#677ab7" DESTINATION="ID_782313223" ENDARROW="Default" ENDINCLINATION="-652;20;" ID="Arrow_ID_315633048" STARTARROW="None" STARTINCLINATION="-2111;0;"/>
<font BOLD="true" NAME="SansSerif" SIZE="13"/>
<icon BUILTIN="info"/>
</node>
<node CREATED="1533304463274" HGAP="91" ID="ID_693983942" MODIFIED="1533304538638" TEXT="Initialisierung" VSHIFT="5">
<node CREATED="1532795620784" ID="ID_1782393731" MODIFIED="1533304483942" TEXT="gtk_init">
<icon BUILTIN="forward"/>
<node CREATED="1532796724776" ID="ID_1145845020" MODIFIED="1532796729971" TEXT="bleibt weiterhin bestehen"/>
<node CREATED="1532796730560" ID="ID_1851309737" MODIFIED="1532796741082" TEXT="wird von jeder Applikations-Klasse aufgerufen"/>
</node>
<node CREATED="1533304499504" ID="ID_1636222563" MODIFIED="1533304499504" TEXT="Main::init_gtkmm_internals">
<node CREATED="1532796682566" ID="ID_591452701" MODIFIED="1532796691801" TEXT="Glib, Gio und Pango initialisieren"/>
<node CREATED="1532796692445" ID="ID_1979586408" MODIFIED="1532796706398" TEXT="Wrapper-Mechanismus f&#xfc;r Gtk+-&quot;Objekte&quot; initialisieren"/>
<node CREATED="1532794561968" ID="ID_235365968" MODIFIED="1561827465308" TEXT="ist das zukunfts-fest?">
<icon BUILTIN="button_ok"/>
<node CREATED="1532796634853" ID="ID_375193574" MODIFIED="1532796646840" TEXT="in application.cc gibts die gleiche Funktion">
<icon BUILTIN="idea"/>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1532796648307" ID="ID_1796239536" MODIFIED="1532796654824" TEXT="kein Grund zur Sorge">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1533310237105" ID="ID_937500948" MODIFIED="1576282358028" TEXT="sonst nichts...">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...und das ist explizit so gew&#252;nscht
    </p>
    <ul>
      <li>
        keine Kommandozeilen-Behandlung
      </li>
      <li>
        keine &quot;Registrierung&quot; jedweder Art
      </li>
      <li>
        keine D-Bus-connection
      </li>
      <li>
        kein Application-Lifecycle
      </li>
      <li>
        folglich auch <b>kein Aktivierungs-Signal</b>
      </li>
    </ul>
  </body>
</html></richcontent>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="info"/>
</node>
</node>
<node COLOR="#338800" CREATED="1532797168836" ID="ID_1283695968" MODIFIED="1533325339452" TEXT="diesen Stand dokumentieren...">
<icon BUILTIN="button_ok"/>
<node CREATED="1532797180066" ID="ID_687615166" MODIFIED="1532797192496" TEXT="siehe Ticket #1032">
<icon BUILTIN="info"/>
</node>
<node COLOR="#435e98" CREATED="1533218052308" ID="ID_1734927969" LINK="https://lumiera.org/documentation/technical/code/gtk/index.html" MODIFIED="1664481533409" TEXT="neue Kategorie: technical/code base/ GTK">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1533218096245" ID="ID_1901487140" MODIFIED="1533325344852" TEXT="dort Seite startup">
<arrowlink COLOR="#dc217a" DESTINATION="ID_539459561" ENDARROW="Default" ENDINCLINATION="33;201;" ID="Arrow_ID_601982135" STARTARROW="None" STARTINCLINATION="-55;-186;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1533218137447" ID="ID_59387223" MODIFIED="1533218142874" TEXT="lose Notizen dorthin"/>
<node CREATED="1533218147981" ID="ID_1385133985" MODIFIED="1533218153417" TEXT="Main vs Application"/>
<node CREATED="1533218154141" ID="ID_511849124" MODIFIED="1533218165327" TEXT="unser Ansatz"/>
<node CREATED="1533218170914" ID="ID_1610394794" MODIFIED="1533218176629" TEXT="was macht Main?"/>
</node>
</node>
</node>
</node>
<node CREATED="1532793816029" ID="ID_519518808" MODIFIED="1561827465309" TEXT="Glib::Dispatcher">
<linktarget COLOR="#c1a9ad" DESTINATION="ID_519518808" ENDARROW="Default" ENDINCLINATION="70;0;" ID="Arrow_ID_985135564" SOURCE="ID_1796116534" STARTARROW="None" STARTINCLINATION="149;-223;"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1532793842721" ID="ID_1258451078" MODIFIED="1532793868919" TEXT="schon integriert in unseren UiDispatcher">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1532793854287" ID="ID_1072348424" MODIFIED="1532793872744" TEXT="installiert in dem NotificationService">
<icon BUILTIN="info"/>
</node>
<node CREATED="1533310357440" ID="ID_250151476" MODIFIED="1533310362540" TEXT="kommt nicht in Frage">
<icon BUILTIN="stop-sign"/>
<node CREATED="1533310371726" ID="ID_682159285" MODIFIED="1533310393879" TEXT="signalisiert nur einen Trigger"/>
<node CREATED="1533310381845" ID="ID_833159461" MODIFIED="1533310389328" TEXT="setzt laufende event-Loop voraus"/>
</node>
</node>
<node CREATED="1533310412185" ID="ID_968448480" MODIFIED="1561827465309" TEXT="Aktivierungs-Signal">
<icon BUILTIN="button_cancel"/>
<node CREATED="1533310421328" ID="ID_1168151937" MODIFIED="1533310429603" TEXT="Gtk::Application macht das so"/>
<node CREATED="1533310430167" ID="ID_1809941457" MODIFIED="1533310441873" TEXT="setzt eine GApplication (=Gio::Application) voraus"/>
<node CREATED="1533310442557" ID="ID_1182449800" MODIFIED="1533310447656" TEXT="und das wollen wir nicht"/>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1533310502420" ID="ID_1045876919" MODIFIED="1533388596803" TEXT="Glib::SignalTimeout nutzen">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#338800" CREATED="1532788656585" ID="ID_99363690" MODIFIED="1561827465312" TEXT="geeignet ansiedeln">
<icon BUILTIN="button_ok"/>
<node CREATED="1532794614249" ID="ID_884179844" MODIFIED="1532794617028" TEXT="Plan">
<node CREATED="1532794617968" ID="ID_1917693631" MODIFIED="1533310766197" TEXT="geeigneten Zugang vom Ctor-Code">
<icon BUILTIN="full-1"/>
</node>
<node CREATED="1532794630007" ID="ID_1449747192" MODIFIED="1533310797536" TEXT="dieser installiert unseren Callback">
<icon BUILTIN="full-2"/>
</node>
<node CREATED="1532794643461" ID="ID_1862931436" MODIFIED="1532794664726" TEXT="dieser sendet in der Loop das Aktivierungs-Command">
<icon BUILTIN="full-3"/>
</node>
</node>
<node COLOR="#338800" CREATED="1533221103349" FOLDED="true" ID="ID_1053145038" MODIFIED="1533388653067" TEXT="Anker">
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1533221107205" ID="ID_1202141905" MODIFIED="1533221141349" TEXT="es mu&#xdf; der InteractionDirector sein">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node CREATED="1533221115139" ID="ID_1655397510" MODIFIED="1533221117607" TEXT="wer sonst?"/>
<node CREATED="1533221118267" ID="ID_517862983" MODIFIED="1533221132317" TEXT="er verk&#xf6;rpert &quot;das Globale&quot;"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1533221145295" ID="ID_45639892" MODIFIED="1664059212889" TEXT="Problem: Zugang zum NotificationService">
<icon BUILTIN="stop-sign"/>
<node CREATED="1533221554888" ID="ID_1545304194" MODIFIED="1533221603239" TEXT="wird explizit erst von UiManager::performMainLoop() installiert">
<icon BUILTIN="broken-line"/>
</node>
<node CREATED="1533221577485" ID="ID_890031207" MODIFIED="1533221596939" TEXT="Problem f&#xfc;r allen Setup-Code aus InteractionDirector et al">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1533221649380" ID="ID_727991171" MODIFIED="1533221669408">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      das ist ein <i>akzidentelles Problem</i>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1533221681199" ID="ID_979914270" MODIFIED="1576282358027" TEXT="Folge unserer Architektur">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      denn es ist gradezu der Sinn von Glib::Dispatcher,
    </p>
    <p>
      schon vor der Loop verf&#252;gbar zu sein (?)
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#990000" CREATED="1533221752837" ID="ID_583598881" MODIFIED="1533310555941" TEXT="verifizieren: ist Glib::Dispatcher die richtige Technik">
<icon BUILTIN="stop-sign"/>
<node CREATED="1533310564980" ID="ID_1796116534" MODIFIED="1576282358027" TEXT="ist es nicht...">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      nur bei laufender Event-Loop
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#c1a9ad" DESTINATION="ID_519518808" ENDARROW="Default" ENDINCLINATION="70;0;" ID="Arrow_ID_985135564" STARTARROW="None" STARTINCLINATION="149;-223;"/>
</node>
</node>
</node>
<node CREATED="1533223360183" ID="ID_1309454354" MODIFIED="1561827465315" TEXT="Idee: weiterer Dispatcher">
<icon BUILTIN="button_cancel"/>
<node CREATED="1533223371534" ID="ID_891597430" MODIFIED="1533310719489" TEXT="UiDispatcher">
<icon BUILTIN="stop-sign"/>
</node>
<node CREATED="1533223377381" ID="ID_1197977205" MODIFIED="1533223383568" TEXT="einfach eine weitere Instanz davon"/>
<node CREATED="1533223384180" ID="ID_141172630" MODIFIED="1533252147479" TEXT="geht das?">
<icon BUILTIN="stop-sign"/>
<node CREATED="1533252148493" ID="ID_535856197" MODIFIED="1533252155392" TEXT="geht nicht">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1533252156737" ID="ID_945337228" MODIFIED="1533252171708" TEXT="Glib::Dispatcher ist nur eine FiFo"/>
<node CREATED="1533252172584" ID="ID_230437417" MODIFIED="1533252187890" TEXT="setzt zwingend voraus, da&#xdf; die Event-Loop schon l&#xe4;uft"/>
</node>
</node>
<node CREATED="1533221770859" ID="ID_1962039642" MODIFIED="1561827465319" TEXT="daf&#xfc;r einen dedizierten Service einbauen">
<icon BUILTIN="button_cancel"/>
<node CREATED="1533310637466" ID="ID_1772394299" MODIFIED="1533385333187" TEXT="wo?">
<font NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="yes"/>
<node CREATED="1533221796823" ID="ID_179436166" MODIFIED="1533310650010" TEXT="im UiManager">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1533221813285" ID="ID_1627865297" MODIFIED="1533221816584" TEXT="aus logischen Gr&#xfc;nden"/>
<node CREATED="1533221818572" ID="ID_806537689" MODIFIED="1533221826270" TEXT="pa&#xdf;t auch thematisch dort hin"/>
</node>
<node CREATED="1533311253662" ID="ID_704687465" MODIFIED="1533311258358" TEXT="was?">
<icon BUILTIN="help"/>
<node CREATED="1533311314709" ID="ID_277761751" MODIFIED="1533385647446" TEXT="wirklich in der Loop?">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_277761751" ENDARROW="Default" ENDINCLINATION="-48;213;" ID="Arrow_ID_1127398125" SOURCE="ID_748660217" STARTARROW="None" STARTINCLINATION="256;0;"/>
<node CREATED="1533311322220" ID="ID_1614182663" MODIFIED="1576282358026" TEXT="Fenster-aktivieren passiert vor der Loop">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...das ist f&#252;r mich eine neue Einsicht.
    </p>
    <p>
      Die Anzeige eines Fensters und die Event-Verarbeitung sind zun&#228;chst einmal unabh&#228;ngig voneinander.
    </p>
    <p>
      Sie sind aber aufeinander angewiesen. Die Events machen das Fenster reaktiv, aber ohne
    </p>
    <p>
      Fenster gibt es gar keine Benutzer-Events.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1533311415455" ID="ID_1211339520" MODIFIED="1533311614570" TEXT="GTK-Aktivierungs-Mechanismus hat andere Gr&#xfc;nde">
<arrowlink COLOR="#949fb4" DESTINATION="ID_1806268533" ENDARROW="Default" ENDINCLINATION="-1845;-608;" ID="Arrow_ID_1146394851" STARTARROW="None" STARTINCLINATION="-474;0;"/>
</node>
<node CREATED="1533311655519" ID="ID_946023766" MODIFIED="1561827465319">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      aber <i>wir</i>&#160;brauchen ein <b>laufendes</b>&#160;UI
    </p>
  </body>
</html></richcontent>
<node CREATED="1533311682171" ID="ID_1084601430" MODIFIED="1533311693093" TEXT="und zwar f&#xfc;r die Antworten aus Proc-Layer"/>
<node CREATED="1533311693705" ID="ID_152811842" MODIFIED="1533311698877" TEXT="Facade mu&#xdf; offen sein"/>
<node CREATED="1533311707207" ID="ID_364798350" MODIFIED="1533311732464" TEXT="der Glib::Dispatcher darf nicht ins Leere gehen"/>
</node>
</node>
<node CREATED="1533311794860" ID="ID_11666506" MODIFIED="1533311813929" TEXT="ein Command aus der event-Loop heraus">
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#338800" CREATED="1533311818120" ID="ID_413505030" MODIFIED="1533325891506" TEXT="Forschung: wie machbar?">
<icon BUILTIN="button_ok"/>
<node CREATED="1533311849484" ID="ID_741726269" MODIFIED="1533311856167" TEXT="Problem: gtk_main blockt"/>
<node CREATED="1533311863586" ID="ID_1275401100" MODIFIED="1533311895161" TEXT="jeder Aufruf davor k&#xf6;nnte zum Race f&#xfc;hren"/>
<node CREATED="1533311922114" ID="ID_542781128" MODIFIED="1533325883642" TEXT="gibt es dazu irgendwelche Doku?">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1533311999743" ID="ID_159524494" LINK="https://developer.gnome.org/gtkmm-tutorial/stable/sec-the-constraints.html.de" MODIFIED="1533312023736" TEXT="GTKmm-Tutorial: multithreaded">
<font NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="info"/>
</node>
<node CREATED="1533312933850" ID="ID_151434027" LINK="https://developer.gnome.org/gtkmm-tutorial/stable/sec-idle-functions.html.en" MODIFIED="1533312947999" TEXT="Idle / Timeout-Beispiel"/>
</node>
<node CREATED="1533312248199" ID="ID_1852545829" MODIFIED="1533314003668" TEXT="was ist mit Glib::SignalIdle und SignalTimeout?">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1533314025414" ID="ID_408671915" MODIFIED="1533385371119" TEXT="Glib::signal_timeout()">
<arrowlink COLOR="#375fa2" DESTINATION="ID_1586631508" ENDARROW="Default" ENDINCLINATION="88;0;" ID="Arrow_ID_258924675" STARTARROW="None" STARTINCLINATION="-87;42;"/>
<icon BUILTIN="forward"/>
<node COLOR="#338800" CREATED="1533314031621" ID="ID_1030647718" MODIFIED="1533314158876" TEXT="das ist wohl die beste L&#xf6;sung">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1533314040716" ID="ID_314344665" MODIFIED="1533314158876" TEXT="f&#xfc;gt eine minimale Karenz-Zeit ein"/>
<node CREATED="1533314084613" ID="ID_1361630751" MODIFIED="1533314158876" TEXT="gut f&#xfc;r die System-Stabilit&#xe4;t">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1533385296078" ID="ID_911350305" MODIFIED="1533388643836" TEXT="einfache direkt L&#xf6;sung">
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1533385305101" ID="ID_1586631508" MODIFIED="1533388506937" TEXT="Glib::signal_timeout() lokal nutzen">
<arrowlink COLOR="#5568a6" DESTINATION="ID_580405745" ENDARROW="Default" ENDINCLINATION="-472;0;" ID="Arrow_ID_244184105" STARTARROW="None" STARTINCLINATION="-2132;-72;"/>
<linktarget COLOR="#375fa2" DESTINATION="ID_1586631508" ENDARROW="Default" ENDINCLINATION="88;0;" ID="Arrow_ID_258924675" SOURCE="ID_408671915" STARTARROW="None" STARTINCLINATION="-87;42;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
<node COLOR="#435e98" CREATED="1533385573236" ID="ID_220261898" MODIFIED="1533386018084" TEXT="Begr&#xfc;ndung">
<node CREATED="1533385581435" ID="ID_613721842" MODIFIED="1533385589533" TEXT="ich glaube, das bleibt ein Einzelfall"/>
<node CREATED="1533385595528" ID="ID_748660217" MODIFIED="1533385647446" TEXT="es mu&#xdf; wirklich in der Event-Loop laufen">
<arrowlink COLOR="#a9b4c1" DESTINATION="ID_277761751" ENDARROW="Default" ENDINCLINATION="-48;213;" ID="Arrow_ID_1127398125" STARTARROW="None" STARTINCLINATION="256;0;"/>
</node>
<node CREATED="1533385674860" ID="ID_204825661" MODIFIED="1576282358026" TEXT="minimale Verz&#xf6;gerung nach Prgrammstart ist gut">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...dann kann sich das Sytem erst mal <i>beruhigen</i>
    </p>
    <p>
      nach der Lastspitze zum Programmstart, f&#252;r den viel Code geladen werden mu&#223;te.
    </p>
    <p>
      Au&#223;erdem hatten dann die anderen Subsysteme schon Zeit, ihre Grunddatenstrukturen aufzubauen;
    </p>
    <p>
      im Besonderen spekulieren wir darauf, da&#223; die Session-Daten bereits geladen sind,
    </p>
    <p>
      und daher der Diff direkt und kompakt in einem Durchgang emittiert werden kann
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#338800" CREATED="1533385403578" ID="ID_340344973" MODIFIED="1533388551009" TEXT="direkt im InteractionDirector">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1533388656903" ID="ID_1245171257" MODIFIED="1533388664575" TEXT="verdrahtet im ctor">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1533388528345" ID="ID_281702031" MODIFIED="1533388548893" TEXT="Trigger-Zeit">
<icon BUILTIN="forward"/>
<node CREATED="1533388533248" ID="ID_526629253" MODIFIED="1533388538867" TEXT="vorerst fest verdrahtet"/>
<node CREATED="1533388539455" ID="ID_20867821" MODIFIED="1533388544338" TEXT="w&#xe4;hle 100ms"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1533388675213" ID="ID_1893531200" MODIFIED="1533388686365" TEXT="funktioniert">
<icon BUILTIN="button_ok"/>
<icon BUILTIN="ksmiletris"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1531423784657" ID="ID_1434932428" MODIFIED="1557498707233" TEXT="Inhalts-Empfang wieder deaktivieren">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1480694550601" ID="ID_501539344" MODIFIED="1557498707233" TEXT="re-populate Content">
<linktarget COLOR="#fec680" DESTINATION="ID_501539344" ENDARROW="Default" ENDINCLINATION="-1280;-81;" ID="Arrow_ID_938812574" SOURCE="ID_977311190" STARTARROW="None" STARTINCLINATION="335;22;"/>
<linktarget COLOR="#fec2a0" DESTINATION="ID_501539344" ENDARROW="Default" ENDINCLINATION="-1291;-991;" ID="Arrow_ID_189200159" SOURCE="ID_316046833" STARTARROW="None" STARTINCLINATION="-1328;59;"/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1538942086509" ID="ID_1492693885" MODIFIED="1557498707233" TEXT="wenn ein UI-Element f&#xfc;r eine bestehende Entit&#xe4;t wiederaufgebaut wird">
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1539134153912" ID="ID_311986051" MODIFIED="1557498707233" TEXT="Grundsatzentscheidung: re-populate">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node CREATED="1539134197011" ID="ID_1798515652" MODIFIED="1557498707233" TEXT="m&#xf6;gliche Modelle">
<icon BUILTIN="idea"/>
<node CREATED="1539134201394" ID="ID_1071210666" MODIFIED="1576282358025" TEXT="UI-Komponente realisiert sich selbst">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <ul>
      <li>
        Komponente hat eine interne Struktur-Repr&#228;sentation
      </li>
      <li>
        traversiert diese Struktur-Beschreibung
      </li>
      <li>
        und &#252;bersetzt sie in UI-Widgets
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1539134224759" ID="ID_766070060" MODIFIED="1576282358024" TEXT="Struktur und Realisierung gemeinsam gepusht">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <ul>
      <li>
        jedes Teilelement wird per Push injiziert
      </li>
      <li>
        es wird in dem Moment sofort und ausschlie&#223;lich als Widget realisiert
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1539134474262" ID="ID_1194066582" MODIFIED="1557498707233" TEXT="Begr&#xfc;ndung">
<icon BUILTIN="yes"/>
<node CREATED="1539134479525" ID="ID_11375493" MODIFIED="1557498707233" TEXT="Selbst-&quot;Verdoppelung&quot; vermeiden"/>
<node CREATED="1539134556931" ID="ID_876466376" MODIFIED="1557498707233" TEXT="Widgets selber sind &quot;die Struktur&quot;"/>
</node>
</node>
<node CREATED="1539134621210" ID="ID_1536657208" MODIFIED="1557498707233" TEXT="Konsequenz: &#xbb;populier-mich&#xab;">
<icon BUILTIN="forward"/>
<node CREATED="1539134702831" ID="ID_250983627" MODIFIED="1557498707233" TEXT="Objekt als leere H&#xfc;lle vorausgesetzt"/>
<node CREATED="1539134713846" ID="ID_1404883972" MODIFIED="1557498707233" TEXT="schickt alle Details und Inhalte als Diff"/>
<node CREATED="1539134733747" ID="ID_353086867" MODIFIED="1576282358024">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Basis: <b>DiffConstituent</b>
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <ul>
      <li>
        ein selbstbez&#252;glicher substanzloser Strukturkern
      </li>
      <li>
        DiffConstituent -&gt; emanation as diff
      </li>
    </ul>
  </body>
</html></richcontent>
<arrowlink COLOR="#4e31e2" DESTINATION="ID_1189184036" ENDARROW="Default" ENDINCLINATION="-767;-123;" ID="Arrow_ID_156898929" STARTARROW="None" STARTINCLINATION="-1608;-84;"/>
<node CREATED="1539138549468" ID="ID_1203696589" MODIFIED="1557498707233" TEXT="existiert &quot;irgendwo&quot;"/>
<node CREATED="1539138556651" ID="ID_1265568834" MODIFIED="1557498707233" TEXT="per Command ansprechbar"/>
<node CREATED="1539138563657" ID="ID_1727875453" MODIFIED="1557498707233" TEXT="antwortet mit Emanation in Diff-Form"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1477784813895" ID="ID_791449946" MODIFIED="1557498707233">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <u>Aufgabe</u>: <i><font color="#821b58" size="4">inject dummy content</font></i>
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#f9b709" DESTINATION="ID_791449946" ENDARROW="Default" ENDINCLINATION="-842;-559;" ID="Arrow_ID_1347689482" SOURCE="ID_635303062" STARTARROW="None" STARTINCLINATION="-81;124;"/>
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1533403103076" ID="ID_294556843" MODIFIED="1557498707233" TEXT="hart gecodetes Diff im Command erzeugen">
<linktarget COLOR="#e34459" DESTINATION="ID_294556843" ENDARROW="Default" ENDINCLINATION="287;0;" ID="Arrow_ID_1612526412" SOURCE="ID_488294111" STARTARROW="None" STARTINCLINATION="190;339;"/>
<icon BUILTIN="pencil"/>
</node>
<node COLOR="#338800" CREATED="1533403146566" ID="ID_1948086597" MODIFIED="1557498707233" TEXT="Diff-Empfang im InteractionDirector implementieren">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1533403169195" ID="ID_1916047269" MODIFIED="1557498707233" TEXT="erst mal nur Platzhalter einf&#xfc;gen">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1533403179257" ID="ID_1147163352" MODIFIED="1557498707233" TEXT="noch nicht via ViewLocator platzieren">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1533403199535" ID="ID_1545782665" MODIFIED="1557498707233" TEXT="sonst wird das nie was...">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="smily_bad"/>
</node>
</node>
</node>
<node CREATED="1539270491013" ID="ID_1387553695" MODIFIED="1557498707233" TEXT="Problem der korrekten Diff-Struktur">
<arrowlink COLOR="#d47366" DESTINATION="ID_1555798999" ENDARROW="Default" ENDINCLINATION="713;-263;" ID="Arrow_ID_971172326" STARTARROW="None" STARTINCLINATION="-1999;120;"/>
<icon BUILTIN="messagebox_warning"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1539270491013" ID="ID_19523487" MODIFIED="1557498707233" TEXT="Diff-Fehler-Behandlung">
<arrowlink COLOR="#d47366" DESTINATION="ID_946219609" ENDARROW="Default" ENDINCLINATION="713;-263;" ID="Arrow_ID_1085344706" STARTARROW="Default" STARTINCLINATION="-1999;120;"/>
<icon BUILTIN="flag-pink"/>
<node CREATED="1539388486494" ID="ID_1071396667" MODIFIED="1557498707233" TEXT="was ist sinnvoll?">
<icon BUILTIN="help"/>
<node CREATED="1539388494261" ID="ID_586705343" MODIFIED="1557498707233" TEXT="Applikation runterfahren"/>
<node CREATED="1539388507796" ID="ID_1481564093" MODIFIED="1557498707233" TEXT="Zweig neu populieren"/>
<node CREATED="1539388543735" ID="ID_927207087" MODIFIED="1557498707233" TEXT="Element defekt markieren"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1539388552973" ID="ID_559690288" MODIFIED="1557498707233" TEXT="TODO: eigenen Fehler-Handler einbauen">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1539388561357" ID="ID_148293105" MODIFIED="1557498707233" TEXT="im Moment wirkt der default-Fehlerhandler">
<icon BUILTIN="broken-line"/>
</node>
<node CREATED="1539388573371" ID="ID_163915101" MODIFIED="1557498707233" TEXT="im Dispatcher f&#xfc;r den Notification-Service">
<icon BUILTIN="info"/>
</node>
<node CREATED="1539388588153" ID="ID_215543967" MODIFIED="1557498707233" TEXT="und der f&#xe4;hrt die Applikation runter">
<icon BUILTIN="stop-sign"/>
</node>
</node>
</node>
<node CREATED="1541547600640" ID="ID_787025622" MODIFIED="1557498707233" TEXT="Element-IDs m&#xfc;ssen eindeutig sein">
<arrowlink COLOR="#c9876a" DESTINATION="ID_1850412206" ENDARROW="Default" ENDINCLINATION="49;-155;" ID="Arrow_ID_1571993328" STARTARROW="None" STARTINCLINATION="-11;173;"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1541807934354" ID="ID_306409593" MODIFIED="1557498707233" TEXT="jedesmal explizit einen zuf&#xe4;lligen Hash verwenden">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1541807922861" ID="ID_811005250" MODIFIED="1557498707233" TEXT="idi::RandID">
<icon BUILTIN="forward"/>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1488423428942" ID="ID_1847992077" MODIFIED="1557498707233" TEXT="Stop"/>
</node>
<node CREATED="1488423436478" ID="ID_1037695008" MODIFIED="1557498707233" TEXT="Einstieg">
<node CREATED="1488423440629" ID="ID_1295897045" MODIFIED="1561151251774" TEXT="in Timeline">
<linktarget COLOR="#8d8ba5" DESTINATION="ID_1295897045" ENDARROW="Default" ENDINCLINATION="534;-456;" ID="Arrow_ID_150397161" SOURCE="ID_839909208" STARTARROW="None" STARTINCLINATION="440;114;"/>
<node CREATED="1488423569203" ID="ID_1753722831" MODIFIED="1612527189081" TEXT="TimelinePane anzeigen">
<linktarget COLOR="#a1543e" DESTINATION="ID_1753722831" ENDARROW="Default" ENDINCLINATION="1192;-274;" ID="Arrow_ID_912757548" SOURCE="ID_292894978" STARTARROW="None" STARTINCLINATION="408;-90;"/>
</node>
<node CREATED="1488423579514" ID="ID_1433755621" MODIFIED="1557498707233" TEXT="TimelineWidget erzeugen"/>
<node CREATED="1488470479857" ID="ID_978142233" MODIFIED="1557498707233" TEXT="geschieht...">
<node CREATED="1488470484168" ID="ID_1028709294" MODIFIED="1557498707233" TEXT="explizit auf Anforderung (Window-Men&#xfc;)"/>
<node CREATED="1488470499710" ID="ID_1839340183" MODIFIED="1557498707233" TEXT="automatisch durch Laden der Session"/>
</node>
<node CREATED="1488470528522" HGAP="38" ID="ID_141494228" MODIFIED="1557498707233" TEXT="Ablauf" VSHIFT="11">
<node CREATED="1488470538209" ID="ID_1192459841" MODIFIED="1557498707233" TEXT="Controller"/>
<node CREATED="1488470541432" ID="ID_950213497" MODIFIED="1557498707233" TEXT="holt Model-Repr&#xe4;sentation"/>
<node CREATED="1488470548848" ID="ID_1686896502" MODIFIED="1557498707233" TEXT="wei&#xdf; den Ankerpukt / Zielcontainer"/>
<node CREATED="1488470574388" ID="ID_1331046626" MODIFIED="1557498707233" TEXT="erstellt in diesem ein neues Widget"/>
</node>
</node>
<node CREATED="1488423443916" ID="ID_1213960259" MODIFIED="1557498707233" TEXT="in Assets"/>
<node CREATED="1488423446860" ID="ID_1515465474" MODIFIED="1557498707233" TEXT="Viewer"/>
<node CREATED="1488423478536" ID="ID_1039556823" MODIFIED="1557498707233" TEXT="Projekt"/>
<node CREATED="1488423482303" ID="ID_1337577946" MODIFIED="1557498707233" TEXT="Optionen"/>
</node>
<node CREATED="1488423493014" ID="ID_64529473" MODIFIED="1557498707233" TEXT="Navigation"/>
<node CREATED="1613329386385" ID="ID_1761463492" MODIFIED="1613329391457" TEXT="Manipulation">
<node CREATED="1613334019420" ID="ID_273976893" MODIFIED="1613334021390" TEXT="Formen">
<node CREATED="1613333615153" ID="ID_1085666433" MODIFIED="1613333624019" TEXT="Parameter &#xe4;ndern"/>
<node CREATED="1613333666090" ID="ID_553562827" MODIFIED="1613333678204" TEXT="expandieren / reduzieren"/>
<node CREATED="1613334131322" ID="ID_58235423" MODIFIED="1613334141028" TEXT="weitere Navigationsvorg&#xe4;nge"/>
<node CREATED="1613333624820" ID="ID_563935930" MODIFIED="1613333633188" TEXT="Wiedergabemodus steuern"/>
<node CREATED="1613333635078" ID="ID_335562573" MODIFIED="1613334024426" TEXT="Edit-Aktionen">
<node CREATED="1613333732545" ID="ID_1462682314" MODIFIED="1613333745363" TEXT="Clip aus Bin einf&#xfc;gen"/>
<node CREATED="1613333746464" ID="ID_1372531625" MODIFIED="1613333836699" TEXT="Clip: verschieben (slide)"/>
<node CREATED="1613333751169" ID="ID_1489464895" MODIFIED="1613349460429" TEXT="Clip: Inhalt verschieben (shuffle)">
<arrowlink COLOR="#f6b667" DESTINATION="ID_1472064878" ENDARROW="Default" ENDINCLINATION="-9;-115;" ID="Arrow_ID_209732384" STARTARROW="None" STARTINCLINATION="220;19;"/>
</node>
<node CREATED="1613333842378" ID="ID_381580402" MODIFIED="1613333859963" TEXT="Clip: trimmen"/>
<node CREATED="1613333860599" ID="ID_1789286116" MODIFIED="1613333863659" TEXT="Clip: rollen"/>
</node>
</node>
<node CREATED="1613334058285" ID="ID_699726141" MODIFIED="1613334067760" TEXT="Konzept">
<node CREATED="1613334069323" ID="ID_1723320752" MODIFIED="1613334078757" TEXT="die Manipulation wird durch eine Geste eingeleitet"/>
<node CREATED="1613334079466" ID="ID_1589128984" MODIFIED="1613334088647" TEXT="sie f&#xfc;hrt in einen Manipulations-Modus"/>
<node CREATED="1613334091808" ID="ID_1887267653" MODIFIED="1613334098755" TEXT="dieser wird durch eine Befehls-Geste beendet"/>
<node CREATED="1661695780231" ID="ID_1944954005" MODIFIED="1661695793169" TEXT="klassische Men&#xfc;-Aktion als einfacher Sonderfall"/>
</node>
<node CREATED="1613334160328" ID="ID_1964361228" MODIFIED="1613334167289" TEXT="konstruktives Problem">
<node CREATED="1613334172704" ID="ID_1733713020" MODIFIED="1613334204445" TEXT="typischerweise wird dieses gemeinsame Schema &#xfc;bersehen"/>
<node CREATED="1613334205144" ID="ID_1296878721" MODIFIED="1613334219861" TEXT="daher ist es &#xfc;blich, diese Manipulationen lokal und ad hoc zu implementieren"/>
<node CREATED="1613334249690" ID="ID_1792797047" MODIFIED="1613334275524" TEXT="&#x27f9; in den Frameworks fehlt der abstrakte gemeiname Einstiegspunkt">
<node CREATED="1613334316121" ID="ID_1190900510" MODIFIED="1613334356211" TEXT="GTK bietet nur ein copy/move drag-n-drop">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      und das zu allem &#220;berflu&#223; auch noch ziemlich hart verdrahtet. Man kann nicht einmal frei &#252;ber die Modifier-Keys verf&#252;gen
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1624022146150" ID="ID_76300118" MODIFIED="1624022166911" TEXT="daneben viel zu generischer low-Level Gesten-Controller"/>
<node CREATED="1613334362547" ID="ID_894562756" MODIFIED="1613334386083" TEXT="andere Gesten sind im Einzelwidget implementiert"/>
</node>
<node CREATED="1613334402564" ID="ID_1103909311" MODIFIED="1613349184568" TEXT="wir m&#xfc;ssen lauter dezentrale Einstiegspunkte bauen">
<icon BUILTIN="yes"/>
<node BACKGROUND_COLOR="#cec3da" CREATED="1613917449274" HGAP="42" ID="ID_1824168791" MODIFIED="1613917680542" VSHIFT="4">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <u>Achtung</u>: <i><font color="#402160">abstrakter Entwurf war Ende 2017 in eine Sackgasse geraten....</font></i>
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#7b7696" DESTINATION="ID_1743832326" ENDARROW="Default" ENDINCLINATION="321;-3493;" ID="Arrow_ID_741454137" STARTARROW="None" STARTINCLINATION="-1170;44;"/>
<icon BUILTIN="stop-sign"/>
</node>
<node COLOR="#338800" CREATED="1613349240614" FOLDED="true" ID="ID_1472064878" MODIFIED="1679359272732" TEXT="erster Entwurf: drag clip">
<linktarget COLOR="#fbd7b5" DESTINATION="ID_1472064878" ENDARROW="Default" ENDINCLINATION="-1443;-151;" ID="Arrow_ID_1918638969" SOURCE="ID_1784185766" STARTARROW="None" STARTINCLINATION="1644;332;"/>
<linktarget COLOR="#3a4d88" DESTINATION="ID_1472064878" ENDARROW="Default" ENDINCLINATION="-642;-252;" ID="Arrow_ID_1448328801" SOURCE="ID_1520693411" STARTARROW="None" STARTINCLINATION="-826;77;"/>
<linktarget COLOR="#f6b667" DESTINATION="ID_1472064878" ENDARROW="Default" ENDINCLINATION="-9;-115;" ID="Arrow_ID_209732384" SOURCE="ID_1489464895" STARTARROW="None" STARTINCLINATION="220;19;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1613349479473" ID="ID_1618505083" MODIFIED="1613349488782" TEXT="Doku / Tutorials">
<node CREATED="1613349541627" ID="ID_1745870905" MODIFIED="1613349560713" TEXT="man mu&#xdf; das motion_notify_event beobachten">
<icon BUILTIN="idea"/>
<node CREATED="1613349562305" ID="ID_601856481" MODIFIED="1613349567420" TEXT="das ist ein GDK-Event"/>
<node CREATED="1613349568104" ID="ID_1883086551" MODIFIED="1613349579450" TEXT="also das Low-level-System"/>
</node>
<node CREATED="1613349531741" ID="ID_84820441" LINK="https://gist.github.com/KurtJacobson/57679e5036dc78e6a7a3ba5e0155dad1" MODIFIED="1613349537230" TEXT="Beispiel C"/>
<node CREATED="1613349637668" ID="ID_1098657356" LINK="http://www.kcjengr.com/programing/2017/10/16/dragable-gtk-widgets.html" MODIFIED="1613349643402" TEXT="Beispiel Python"/>
</node>
<node CREATED="1613948743240" ID="ID_493349480" MODIFIED="1613948751697" TEXT="klar ist bisher...">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1613948753365" ID="ID_1004192521" MODIFIED="1613948775315" TEXT="das Command-Framework wird das nicht l&#xf6;sen k&#xf6;nnen"/>
<node CREATED="1613948776291" ID="ID_889206511" MODIFIED="1613948802398" TEXT="es wird irgendwo einen InteractionState geben (einen pro Art der Geste)"/>
<node CREATED="1613949082860" ID="ID_783934711" MODIFIED="1613949094507" TEXT="die Grundz&#xfc;ge der Interaktion sind klar">
<node CREATED="1613948886082" ID="ID_715355641" MODIFIED="1613948906861" TEXT="drag-start: wird in einem ClipWidget registriert"/>
<node CREATED="1613948907784" ID="ID_544273304" MODIFIED="1613948924747" TEXT="..mu&#xdf; aber im InteractionState qualifiziert werden"/>
<node CREATED="1613948926156" ID="ID_1360301287" MODIFIED="1613948955718" TEXT="dieses Widget empf&#xe4;ngt die Bewegungs-Nachrichten"/>
<node CREATED="1613948956471" ID="ID_16210689" MODIFIED="1613948967678" TEXT="es gibt sie aber nur weiter, wenn eine Geste erwartet wird"/>
<node CREATED="1613948968503" ID="ID_388032830" MODIFIED="1613948989927" TEXT="au&#xdf;erdem mu&#xdf; der Canvas instruiert werden, das CliipWidget zu verschieben"/>
<node CREATED="1613949007667" ID="ID_1378086489" MODIFIED="1613949053999" TEXT="die Vollendung der Geste wird am &quot;button up&quot; im ClipWidget erkannt"/>
<node CREATED="1613949054869" ID="ID_1463749596" MODIFIED="1613949079061" TEXT="daraufhin mu&#xdf; aber der ClipPresenter eine UI-Bus-Nachricht absetzen"/>
</node>
<node CREATED="1613948811142" ID="ID_1149934346" MODIFIED="1613948873809" TEXT="Verkn&#xfc;pfung  von Widgets und InteractionState erfordert einen generischen Adapter"/>
<node CREATED="1613949125310" ID="ID_1021022187" MODIFIED="1613949147008" TEXT="die Zustands-Aktualisierungen laufen &#xfc;ber direkte Referenzen (nicht den UI-Bus)"/>
</node>
<node COLOR="#338800" CREATED="1614379765040" FOLDED="true" ID="ID_1624270915" MODIFIED="1665962528052" TEXT="neuer Anlauf f&#xfc;r Kontext-bezogene Commands">
<arrowlink COLOR="#5b4964" DESTINATION="ID_1221036425" ENDARROW="Default" ENDINCLINATION="717;-46;" ID="Arrow_ID_1875882072" STARTARROW="None" STARTINCLINATION="586;34;"/>
<linktarget COLOR="#425c68" DESTINATION="ID_1624270915" ENDARROW="Default" ENDINCLINATION="-809;-2134;" ID="Arrow_ID_1181760372" SOURCE="ID_719593541" STARTARROW="None" STARTINCLINATION="-299;13;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1614380675501" ID="ID_163523275" MODIFIED="1679359214827" TEXT="Leitfrage: was mu&#xdf; ich jetzt konkret anlegen, damit &#xbb;drag Clip&#xab; in dieses Schema pa&#xdf;t?">
<icon BUILTIN="help"/>
</node>
<node COLOR="#435e98" CREATED="1614380743899" HGAP="64" ID="ID_715469259" MODIFIED="1614380757248" TEXT="Analyse" VSHIFT="-6">
<icon BUILTIN="yes"/>
<node CREATED="1614380762451" ID="ID_378231511" MODIFIED="1614380766837" TEXT="Partizipatoren">
<node CREATED="1614380786753" ID="ID_1862030818" MODIFIED="1614380792732" TEXT="ClipWidget">
<node CREATED="1614380832080" ID="ID_1797079053" MODIFIED="1614380841322" TEXT="mu&#xdf; drag-Start erkennen"/>
<node CREATED="1614380867533" ID="ID_833092549" MODIFIED="1614380876261" TEXT="mu&#xdf; dann motion_notify_event weiterleiten"/>
</node>
<node CREATED="1614380910877" ID="ID_541454007" MODIFIED="1614380915543" TEXT="Timeline-Canvas">
<node CREATED="1614380965317" ID="ID_1975329261" MODIFIED="1614380978800" TEXT="mu&#xdf; das betroffene Widget verschieben"/>
<node CREATED="1614380979369" ID="ID_1760600349" MODIFIED="1614380989600" TEXT="soll hierzu per Callback angebunden sein"/>
</node>
<node CREATED="1614381237672" ID="ID_1040735870" MODIFIED="1614381241183" TEXT="ClipPresenter">
<node CREATED="1614381242128" ID="ID_511883791" MODIFIED="1614381252290" TEXT="mu&#xdf; zumindest das &quot;SELF&quot; beisteuern"/>
<node CREATED="1614381252903" ID="ID_1069833008" MODIFIED="1614381260737" TEXT="k&#xf6;nnte am Ende auch das Command absetzen"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1614381332132" ID="ID_274933683" MODIFIED="1614381341167" TEXT="noch-unbekannt">
<icon BUILTIN="bell"/>
<node CREATED="1614381342698" ID="ID_809693332" MODIFIED="1614381384588" TEXT="wer ist f&#xfc;r on-demand-Scrolling zust&#xe4;ndig?">
<icon BUILTIN="help"/>
</node>
<node CREATED="1614381357868" ID="ID_1867964338" MODIFIED="1614381376540" TEXT="...wenn man einen Clip aus dem sichtbaren Bereich zieht...?"/>
</node>
</node>
<node CREATED="1614381416016" ID="ID_1165918043" MODIFIED="1614381421355" TEXT="API-Design-Problem">
<node CREATED="1614381426919" ID="ID_149858385" MODIFIED="1614381468405" TEXT="der CmdContext ist ein generischer Zugang by-ID"/>
<node CREATED="1614381470240" ID="ID_1938759210" MODIFIED="1614381512746" TEXT="am Ende aber behandeln wir eine spezifische Interaktion">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1614381552342" ID="ID_134319916" MODIFIED="1614381561843" TEXT="CmdContext wird entweder ein sehr breites Interface"/>
<node CREATED="1614381562642" ID="ID_972576172" MODIFIED="1614389749670" TEXT="oder es wird ein Metasprache-Interface">
<arrowlink COLOR="#fbe4a1" DESTINATION="ID_826730643" ENDARROW="Default" ENDINCLINATION="25;-50;" ID="Arrow_ID_354156309" STARTARROW="None" STARTINCLINATION="-239;17;"/>
</node>
</node>
</node>
<node CREATED="1614382663099" ID="ID_826730643" MODIFIED="1614389739519" TEXT="L&#xf6;sungsidee: den Kontext als eine Sammlung von Rollen deuten">
<linktarget COLOR="#fbe4a1" DESTINATION="ID_826730643" ENDARROW="Default" ENDINCLINATION="25;-50;" ID="Arrow_ID_354156309" SOURCE="ID_972576172" STARTARROW="None" STARTINCLINATION="-239;17;"/>
<icon BUILTIN="idea"/>
<node CREATED="1614384116295" ID="ID_1776177560" MODIFIED="1614384119969" TEXT="Beispiele">
<node CREATED="1614384121198" ID="ID_2774291" MODIFIED="1614384129725" TEXT="Event-Quelle"/>
<node CREATED="1614384215162" ID="ID_1829307481" MODIFIED="1614384217061" TEXT="Subjekt"/>
<node CREATED="1614388125553" ID="ID_1734736450" MODIFIED="1614388160288" TEXT="FeedbackMove(x,y)"/>
<node CREATED="1614388133920" ID="ID_295955902" MODIFIED="1614388155250" TEXT="FeedbackDisplay(msg)"/>
<node CREATED="1614388168531" ID="ID_185828283" MODIFIED="1614388187058" TEXT="FeedbackHighlight()"/>
</node>
<node CREATED="1614389527598" ID="ID_1604040360" MODIFIED="1614389758762" TEXT="Problem hierbei">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1614389534082" ID="ID_80971854" MODIFIED="1614389541702" TEXT="Verklammerung mit einer Identit&#xe4;t"/>
<node CREATED="1614389542530" ID="ID_318980247" MODIFIED="1614390448104" TEXT="Vielzahl von Subjekten und Identit&#xe4;ten"/>
</node>
<node CREATED="1614390858247" ID="ID_1423481025" MODIFIED="1614390883649" TEXT="Kontrast: naive L&#xf6;sung">
<icon BUILTIN="idea"/>
<node CREATED="1614390886131" ID="ID_1752630658" MODIFIED="1614390896133" TEXT="die Logik wird beim Subjekt untergebracht"/>
<node CREATED="1614390897026" ID="ID_78418004" MODIFIED="1614390913995" TEXT="Subjekt mu&#xdf; (sich) mit allen Partizipatoren verdrahten"/>
<node CREATED="1614391053221" ID="ID_285566042" MODIFIED="1614391083520" TEXT="Konsequenz: enge Kopplung, verteilte Logik">
<icon BUILTIN="clanbomber"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1614391106909" FOLDED="true" ID="ID_829290263" MODIFIED="1679359207898" TEXT="Ausarbeitung dieser L&#xf6;sung">
<icon BUILTIN="button_ok"/>
<node CREATED="1614391126643" ID="ID_339143488" MODIFIED="1614391152827" TEXT="Grundlage">
<node CREATED="1614391153839" ID="ID_1357502282" MODIFIED="1614391168548" TEXT="CmdContext ist ein Metasprache-Interface">
<icon BUILTIN="yes"/>
<node CREATED="1614391170141" ID="ID_832546901" MODIFIED="1614391190901" TEXT="es erlaubt, eine fest vorgegebene Auswahl an Rollen zu registrieren"/>
<node CREATED="1614391193833" ID="ID_1074859407" MODIFIED="1616685033738" TEXT="es erlaubt, einzelne Instanzen zu deregistrieren">
<icon BUILTIN="hourglass"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1616685039180" HGAP="129" ID="ID_378066021" MODIFIED="1616685084561" TEXT="YAGNI?" VSHIFT="5">
<icon BUILTIN="help"/>
</node>
</node>
</node>
<node CREATED="1614391222237" ID="ID_1021447273" MODIFIED="1614391253965" TEXT="jedes einzelne Interaktionsmuster ist individuell ausprogrammiert">
<node CREATED="1614391255630" ID="ID_1652285552" MODIFIED="1614391268915" TEXT="das bedeutet: es gibt ein implizites Protokoll"/>
<node CREATED="1614391269807" ID="ID_236795034" MODIFIED="1614391284866" TEXT="es wird Registrierung der genau passenden Rollen-Adapter unterstellt"/>
<node CREATED="1614391304259" ID="ID_1592976230" MODIFIED="1614391351824" TEXT="es mu&#xdf; Verdrahtungs-Hooks geben">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      nachdem sich eine Instanz einer Rolle gemeldet hat, kann der Hook sie individuell verkn&#252;pfen, typischerweise als Lambda
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1614391489665" ID="ID_1919040945" MODIFIED="1621013631256" TEXT="Verklammerung">
<node CREATED="1614391506656" ID="ID_1004859029" MODIFIED="1614391520280" TEXT="Event-Quelle mu&#xdf; mit einem Subjekt ausgezeichnet werden"/>
<node CREATED="1614391615637" FOLDED="true" ID="ID_1108644497" MODIFIED="1614391627843" TEXT="zur Event-Quelle wird eine Closure gebildet">
<node CREATED="1614391628734" ID="ID_1671010257" MODIFIED="1614391663130" TEXT="und zwar f&#xfc;r den konkreten Typ der Interaktion">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      also nicht generisch, sondern die spezifische Closure f&#252;r z.B. den Fall drag-Clip
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1614391673368" ID="ID_205779868" MODIFIED="1614391685758" TEXT="diese Closure bestimmt, auf welche Events &#xfc;berhaupt geh&#xf6;rt wird"/>
<node CREATED="1614391691166" ID="ID_367156594" MODIFIED="1614391711156" TEXT="d.h. zur Event-Quelle gibt es ein generisches Element wie z.B. GTK-Widget"/>
<node CREATED="1614391738263" ID="ID_1536053997" MODIFIED="1614391793230" TEXT="hier entsteht also eine Verquickung mit dem konkreten Framework">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      naja... sie besteht schon von Anfang an, insofern das Event-Konzept, wie auch die konkrete Quelle, ohnehin an das UI-Framework gebunden sind
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1614391836482" ID="ID_1023680019" MODIFIED="1614391943348" TEXT="diese Closure enth&#xe4;lt die konkrete Gesten-Erkennung">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      im Beispiel: in dieser Closure wird zun&#228;chste eine Verdrahtung auf das button_down-Event angelegt. Wenn diese aktiviert wird, schaltet die die Beobachtung eines ebenfalls vorsorglich verdrahteten motion_notify_event ein, sowie analog das Warten auf ein button_up
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1614460011582" FOLDED="true" ID="ID_952822551" MODIFIED="1614460030108" TEXT="tats&#xe4;chlich wird auf Dauer nur das Subjekt ben&#xf6;tigt">
<icon BUILTIN="idea"/>
<node CREATED="1614460032928" ID="ID_1290991040" MODIFIED="1614460064068" TEXT="die Event-Quelle dient nur dazu, das Reaktionsmuster zu verdrahten"/>
<node CREATED="1614460064989" ID="ID_1051234344" MODIFIED="1614460079097" TEXT="als Event-Quelle gen&#xfc;gt eine Gtk::Widget-Referenz">
<node CREATED="1614460082069" ID="ID_1366205359" MODIFIED="1614460235413" TEXT="man kann alles auf Signale aufbauen">
<arrowlink COLOR="#6c87a6" DESTINATION="ID_1054817075" ENDARROW="Default" ENDINCLINATION="-7;-84;" ID="Arrow_ID_1471465547" STARTARROW="None" STARTINCLINATION="-115;9;"/>
</node>
<node CREATED="1614460100690" ID="ID_570431649" MODIFIED="1614460113953" TEXT="dann sorgt Sigc bereits f&#xfc;r die Deregistrierung"/>
<node CREATED="1614460114904" ID="ID_1615356307" MODIFIED="1614460143452" TEXT="und da ein totes Widget keine Events mehr sendet, kann man den Eintrag &quot;h&#xe4;ngen&quot; lassen">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1614460159682" ID="ID_1054817075" MODIFIED="1614460237067" TEXT="das eigentliche Verhaltensmuster ist komplett Event-getrieben">
<linktarget COLOR="#6c87a6" DESTINATION="ID_1054817075" ENDARROW="Default" ENDINCLINATION="-7;-84;" ID="Arrow_ID_1471465547" SOURCE="ID_1366205359" STARTARROW="None" STARTINCLINATION="-115;9;"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1614475571869" FOLDED="true" ID="ID_1751028671" MODIFIED="1614543472364" TEXT="wie kann die Verklammerung realisiert werden?">
<icon BUILTIN="help"/>
<node CREATED="1614475601650" ID="ID_205574857" MODIFIED="1614543459768" TEXT="allein &#xfc;ber die Signal-Bindung ...">
<icon BUILTIN="forward"/>
<node CREATED="1614475633677" ID="ID_486152583" MODIFIED="1614475643040" TEXT="geht das &#xfc;berhaupt?"/>
<node CREATED="1614475655498" ID="ID_1837268445" MODIFIED="1614536263567" TEXT="Subjekt m&#xfc;&#xdf;te dann als Parameter in den Handler mit eingespeist werden">
<node CREATED="1614475677163" ID="ID_1901993329" MODIFIED="1614475719301" TEXT="d.h. es g&#xe4;be nur eine generische Handler-Funktion"/>
<node CREATED="1614475736604" ID="ID_1260840315" MODIFIED="1614475769271" TEXT="und irgendwo (im Signal-Binding) ist ein Slot mit der Closure gespeichert"/>
</node>
<node CREATED="1614475793975" ID="ID_260944164" MODIFIED="1614543467968" TEXT="dann m&#xfc;&#xdf;te man aber auch alles &#xfc;ber den Subject/Adapter machen k&#xf6;nnen">
<icon BUILTIN="yes"/>
<node CREATED="1614475835082" ID="ID_1955774576" MODIFIED="1614475841413" TEXT="den bisherigen Offset abrufen"/>
<node CREATED="1614475842001" ID="ID_347860364" MODIFIED="1614475873560" TEXT="das aktuelle Delta aufschlagen"/>
<node CREATED="1614475874415" ID="ID_797516713" MODIFIED="1614475881762" TEXT="damit einen neuen Offset speichern"/>
<node CREATED="1614475938076" ID="ID_1703634175" MODIFIED="1614475990529" TEXT="alte Position abrufen"/>
<node CREATED="1614475991149" ID="ID_384791921" MODIFIED="1614475999767" TEXT="mit dem Offset daraus eine neue Position"/>
<node CREATED="1614476000827" ID="ID_1072166447" MODIFIED="1614476006449" TEXT="Widget dorthin verschieben"/>
<node CREATED="1614476007299" ID="ID_1457812219" MODIFIED="1614476017287" TEXT="schlie&#xdf;lich den finalen Offset erfassen"/>
<node CREATED="1614476017872" ID="ID_397556906" MODIFIED="1614476038242" TEXT="diesen umwandeln in den Parameter-Raum (z.B. zeitliche Verschiebung)"/>
<node CREATED="1614476038998" ID="ID_148450923" MODIFIED="1614476054048" TEXT="und dieses Ergebnis in das Command binden"/>
<node CREATED="1614476058668" ID="ID_1803344399" MODIFIED="1614476066270" TEXT="das Command an den Bus &#xfc;bergeben"/>
</node>
</node>
<node CREATED="1614536448697" ID="ID_1492057742" MODIFIED="1614543456614" TEXT="ein Kontext pro Subjekt">
<icon BUILTIN="button_cancel"/>
<node CREATED="1614536709750" ID="ID_186439136" MODIFIED="1614536736791" TEXT="in der Closure der Signal-Bindung steckt dann (nur) ein &quot;this&quot;-Pointer"/>
<node CREATED="1614539609634" ID="ID_603639357" MODIFIED="1614539653942" TEXT="die Daten zur Gesten-Erkennung und -Verfolgung sind in jedem Kontext aufgedoppelt">
<node CREATED="1614539908164" ID="ID_1719873670" MODIFIED="1614539911410" TEXT="Subjekt"/>
<node CREATED="1614539912070" ID="ID_246551713" MODIFIED="1614539915273" TEXT="Startposition"/>
<node CREATED="1614539918495" ID="ID_1406833293" MODIFIED="1614539926951" TEXT="aktuelle Pos oder Delta"/>
</node>
</node>
<node CREATED="1614540333938" ID="ID_498563982" MODIFIED="1614543450376" TEXT="Widget steuert die Drag-Geste selber">
<icon BUILTIN="button_cancel"/>
<node CREATED="1614540397688" ID="ID_622503022" MODIFIED="1614540432520" TEXT="es verwendet hierf&#xfc;r einen generischen Adapter">
<node CREATED="1614540445834" ID="ID_1198534535" MODIFIED="1614540458487" TEXT="dieser braucht dann aber einen Backpointer auf das Widget"/>
<node CREATED="1614540483740" ID="ID_479333673" MODIFIED="1614540507714" TEXT="jeder Adapter hat seine eigenen Zustands-Variablen"/>
<node CREATED="1614540516104" ID="ID_1112342686" MODIFIED="1614540538846" TEXT="und ein Backpointer auf das Subjekt wird auch noch ben&#xf6;tigt"/>
</node>
<node CREATED="1614540567402" ID="ID_178069710" MODIFIED="1614540584842" TEXT="oder es enth&#xe4;lt die Logik direkt ausprogrammiert"/>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1614540589382" ID="ID_1190969110" MODIFIED="1614541775944" TEXT="Fazit">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node CREATED="1614540612570" ID="ID_1031352571" MODIFIED="1614540626133" TEXT="Verklammerung &#xfc;ber die Signalbindung ist die beste L&#xf6;sung"/>
<node CREATED="1614540719919" ID="ID_103729106" MODIFIED="1614540833729" TEXT="spart Storage und h&#xe4;lt die Logik zentral"/>
<node CREATED="1614540912673" ID="ID_1808809074" MODIFIED="1614540942883" TEXT="Subjekt mu&#xdf; aber auch Zugang zum Widget und zur Position bieten"/>
<node CREATED="1614541813489" ID="ID_1805140351" MODIFIED="1614541823710" TEXT="Installation des Bindings mu&#xdf; vom Subjekt ausgehen">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1614543013138" ID="ID_1830318279" MODIFIED="1614543025940" TEXT="problematisch mit der bestehenden Implementierung"/>
<node CREATED="1614543026767" ID="ID_1302795590" MODIFIED="1614543817770" TEXT="bisher ist das ClipDelegate relativ eigenst&#xe4;ndig bzgl. Anzeigestil">
<arrowlink COLOR="#f45679" DESTINATION="ID_1754386766" ENDARROW="Default" ENDINCLINATION="93;-23;" ID="Arrow_ID_367937676" STARTARROW="None" STARTINCLINATION="-164;8;"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1614543493162" ID="ID_1473378249" MODIFIED="1679362063109" TEXT="mit der bestehenden Implementierung verbinden">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1614543561632" FOLDED="true" ID="ID_1754386766" MODIFIED="1621013612918" TEXT="diverse Widerspr&#xfc;che und Spannungen">
<linktarget COLOR="#f45679" DESTINATION="ID_1754386766" ENDARROW="Default" ENDINCLINATION="93;-23;" ID="Arrow_ID_367937676" SOURCE="ID_1302795590" STARTARROW="None" STARTINCLINATION="-164;8;"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1614543836195" ID="ID_937435961" MODIFIED="1614543924536" TEXT="Koordinaten im Widget dargestellt als Domain-Werte (Zeit)">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      die Umrechnung Zeit &#8594; Pixel habe ich im CanvasHook versteckt
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#6c97d3" DESTINATION="ID_937435961" ENDARROW="Default" ENDINCLINATION="144;280;" ID="Arrow_ID_1259911083" SOURCE="ID_369222912" STARTARROW="None" STARTINCLINATION="-332;20;"/>
<node CREATED="1614545300952" ID="ID_1467191869" MODIFIED="1614545455246" TEXT="L&#xf6;sung-1: per &#xdc;bersetzungs-Service direkt manipulieren">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      das bedeutet:<br />
    </p>
    <ul>
      <li>
        wenn im Event explizite Koordinaten vorkommen, dann m&#252;ssen diese sofort umgerechnet werden in eine Zeit
      </li>
      <li>
        aus der gegenw&#228;rtig im Clip gespeicherten Zeit ergibt sich dann ein Delta
      </li>
      <li>
        dieses Delta wird sofort auf den Clip angewendet
      </li>
    </ul>
    <p>
      Am Ende der Geste steht die neue Zeit-Position fertig im Clip und wird von dort per Command in den Steam-Layer gesendet. Sp&#228;ter, nach der Verarbeitung in der Session kommt ein Update &#252;ber den UI-Bus, welches die Position &#252;berschreibt und infolgedessen ggfs auch nochmal das Widget verschiebt
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
<node CREATED="1615558216850" ID="ID_351359335" MODIFIED="1615558243862" TEXT="Kennzeichnung: Geste manipuliert UI-Modell; es gibt kein &quot;Zur&#xfc;ck&quot;">
<icon BUILTIN="info"/>
</node>
<node CREATED="1614545483516" ID="ID_586854382" MODIFIED="1614545519119" TEXT="Vorsicht: Unterscheide Screen-Koordinaten vs. Canvas-Koordinaten">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1614545520061" ID="ID_421638066" MODIFIED="1614545552889" TEXT="das kann eigentlich nur der Canvas implementieren">
<icon BUILTIN="forward"/>
</node>
</node>
<node CREATED="1614545319978" ID="ID_819484059" MODIFIED="1614546053325" TEXT="L&#xf6;sung-2: Drag-Geste manipuliert nur die Pixel/Canvas-Koordinaten">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...das hei&#223;t, durch die Drag-Geste entstehen vor&#252;bergehend lokal inkonsistente Koordinaten; der n&#228;chste DisplayEvaluation-Pass w&#252;rde dies wieder beseitigen. Dieser Ansatz w&#228;re rein logisch der konsistentere Weg, denn erst durch eine R&#252;ckmeldung von der Session wird eine neue Position auch offiziell. Allerdings m&#252;&#223;te man bei diesem Ansatz vorsichtig vorgehen, und m&#246;gliche Interferenzen mit der DisplayEvaluation und dem Layout-Managment bedenken; besonders wenn man eine weite Strecke zur&#252;cklegt, k&#246;nnte es passieren, da&#223; der Clip dann pl&#246;tzlich aus der Anzeige verschwindet und den Fokus verliert, weil eine DisplayEvaluation ihn wieder an seine gegenw&#228;rtig nominelle Position geschoben hat.
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#cf927e" DESTINATION="ID_819484059" ENDARROW="Default" ENDINCLINATION="30;162;" ID="Arrow_ID_713111774" SOURCE="ID_1040288867" STARTARROW="None" STARTINCLINATION="-23;-182;"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1615558187255" ID="ID_1107620857" MODIFIED="1615558212485" TEXT="Kennzeichnung: Geste als reine Manipulation von UI-Zustand">
<icon BUILTIN="info"/>
</node>
<node CREATED="1614546132968" ID="ID_1588362914" MODIFIED="1614546175118" TEXT="auch in diesem Fall zumindest eine &#xdc;bersetzung Screen&#x2192;Canvas Koordinaten "/>
<node CREATED="1614546235626" ID="ID_1042308082" MODIFIED="1614546278044" TEXT="am Ende brauchen wir dann auch noch die Metrik vom Layout(Canvas), f&#xfc;r das Zeit-Delta"/>
<node CREATED="1615558270517" ID="ID_295152392" MODIFIED="1615558374895" TEXT="Widerspr&#xfc;chliche Ownership der UI-Position">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      geh&#246;rt diese nun dem Layout-Manager, oder geh&#246;rt er der Geste?
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1615558355906" ID="ID_36290343" MODIFIED="1615558371149" TEXT="Interferenz mit der DisplayEvaluation">
<icon BUILTIN="clanbomber"/>
</node>
</node>
</node>
<node CREATED="1614543982261" ID="ID_268537549" MODIFIED="1614544001288" TEXT="der ClipPresenter hat keinen direkten Zugriff auf das konkrete ClipDelegate"/>
<node CREATED="1614544072432" ID="ID_624148025" MODIFIED="1614544294924" TEXT="der Anzeigestil wird relativ autonom im ClipDelegate gew&#xe4;hlt">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...wobei das auch noch halbfertig ist; sp&#228;ter einmal mu&#223; es hier eine Abstimmung mit dem Layout-Manager geben, aber diese Abstimmung sollte eigentlich nicht &#252;ber den ClipPresenter laufen
    </p>
  </body>
</html></richcontent>
<node CREATED="1614544489998" ID="ID_1208107119" MODIFIED="1614544503226" TEXT="...und davon h&#xe4;ngt aber ab, ob eine Drag-Geste &#xfc;berhaupt m&#xf6;glich ist"/>
</node>
<node CREATED="1615558696844" ID="ID_1299483978" MODIFIED="1615558784590" TEXT="Ende der Geste mu&#xdf; zuverl&#xe4;ssig erkannt werden">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...sonst bleibt ein inkonsistender Zustand irgendwo &quot;h&#228;ngen&quot;.<br />Leider ist das nun das bekannterma&#223;en unl&#246;sbare Problem eines sicheren Verbindungsabbaus, und wir m&#252;ssen uns deshalb mit einem Timeout, oder re-check-Mechanismus behelfen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node COLOR="#338800" CREATED="1614547936791" ID="ID_972139852" MODIFIED="1621013665552" TEXT="L&#xf6;sungskompromi&#xdf; suchen">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1614548567759" FOLDED="true" ID="ID_1502155745" MODIFIED="1621013605879" TEXT="kl&#xe4;ren welche Entit&#xe4;t f&#xfc;hrt">
<node CREATED="1614548580160" ID="ID_1068834365" MODIFIED="1614549019860" TEXT="das Subject (Presenter)?">
<icon BUILTIN="closed"/>
<node CREATED="1614548621184" ID="ID_313965279" MODIFIED="1614548638025" TEXT="dann mu&#xdf; das ClipDelegate-API entsprechend erweitert werden"/>
<node CREATED="1614548720714" ID="ID_1355759542" MODIFIED="1614548742103" TEXT="trotzdem ungel&#xf6;st: Zeitpunkt der Registrierung f&#xfc;r den Drag-Mechanismus">
<linktarget COLOR="#fd6d53" DESTINATION="ID_1355759542" ENDARROW="Default" ENDINCLINATION="968;36;" ID="Arrow_ID_1110351466" SOURCE="ID_334680468" STARTARROW="None" STARTINCLINATION="210;12;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1614548979543" ID="ID_950023949" MODIFIED="1614549014231" TEXT="pa&#xdf;t insgesamt schlecht ins Konzept: Gesten sind reine GUI-Mechanik"/>
</node>
<node CREATED="1614548586972" ID="ID_1092961950" MODIFIED="1616684185562" TEXT="oder das Widget?">
<icon BUILTIN="button_cancel"/>
<node CREATED="1614548745039" ID="ID_1301052915" MODIFIED="1616684201445" TEXT="dann ist (mindestens) ein Backlink auf das Subjekt notwendig">
<icon BUILTIN="stop-sign"/>
</node>
<node CREATED="1614548782314" ID="ID_1708909721" MODIFIED="1614548792788" TEXT="ansonsten k&#xf6;nnte aber das Widget autonom agieren">
<node CREATED="1614548816117" ID="ID_934774711" MODIFIED="1614548839550" TEXT="sofern man alles dynamische Positionieren in den Canvas verlagert"/>
<node CREATED="1614548843386" ID="ID_1197536023" MODIFIED="1614548864523" TEXT="der Canvas m&#xfc;&#xdf;te sich dann also als Partizipant beim CmdContext registrieren">
<node CREATED="1614548871925" ID="ID_1738624566" MODIFIED="1614548889914" TEXT="Vorsicht... es gibt nicht nur einen Canvas">
<icon BUILTIN="stop-sign"/>
</node>
<node CREATED="1617454766067" ID="ID_179209651" MODIFIED="1617454788398" TEXT="als Voraussetzung mu&#xdf; also das Subject seinen Canvas kennen"/>
<node CREATED="1617454793154" ID="ID_133939529" MODIFIED="1617454803637" TEXT="Canvas selber als Abstraktion zu behandeln">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node CREATED="1616684203994" ID="ID_1768434265" MODIFIED="1616684226073" TEXT="dann w&#xe4;re aber die eigentliche Detail-Logik wieder &#xfc;ber die Widgets verstreut">
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node CREATED="1616684172294" ID="ID_1075366662" MODIFIED="1616684179286" TEXT="der Gesten-Controller">
<icon BUILTIN="forward"/>
<node COLOR="#435e98" CREATED="1616684235790" ID="ID_280567268" MODIFIED="1616684329617" TEXT="allerdings wirft das dann wieder das Storage-Problem auf">
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#435e98" CREATED="1616684251451" ID="ID_1302771113" MODIFIED="1616684329623" TEXT="und die Frage: wie kommt man an die Kollaborationspartner">
<icon BUILTIN="help"/>
</node>
<node CREATED="1615563494951" ID="ID_1886279726" MODIFIED="1616684443111" TEXT="L&#xf6;sung">
<linktarget COLOR="#fbf89a" DESTINATION="ID_1886279726" ENDARROW="Default" ENDINCLINATION="37;75;" ID="Arrow_ID_1201469200" SOURCE="ID_135851896" STARTARROW="None" STARTINCLINATION="-345;12;"/>
<icon BUILTIN="idea"/>
<node CREATED="1616684283858" ID="ID_922873284" MODIFIED="1616684285148" TEXT="das Subject leitet die Geste ein"/>
<node CREATED="1616684286015" ID="ID_113807772" MODIFIED="1616684309504" TEXT="der Auswertungs-Kontext wird erst dann (late) im Gesten-Controller gebildet"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1614549056549" FOLDED="true" ID="ID_202229623" MODIFIED="1616684814536" TEXT="wieder das l&#xe4;stige Problem mit den vielen Querlinks">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1614549074954" ID="ID_1803715980" MODIFIED="1614549087844" TEXT="hatte das k&#xfc;rzlich erst beim Layout m&#xfc;hsam niedergek&#xe4;mpft"/>
<node CREATED="1614549303989" ID="ID_228758963" MODIFIED="1614549326657" TEXT="Idee: jeweils beim Beginn einer Geste den Kontext etablieren">
<icon BUILTIN="idea"/>
<node CREATED="1614549430019" ID="ID_1189932533" MODIFIED="1614549464686" TEXT="das l&#xf6;st (nur) das Storage-Problem">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      insofern wir die Storage nur einmal, im jeweilgen CmdContext der Geste vorsehen m&#252;ssen
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#338800" CREATED="1614549465737" ID="ID_1592517509" MODIFIED="1616684802531" TEXT="bleibt zu l&#xf6;sen...">
<icon BUILTIN="button_ok"/>
<node CREATED="1614549475656" ID="ID_1108253772" MODIFIED="1614549505036" TEXT="gegeben ein Widget &#x27f9; wer ist das Subject(Presenter)?"/>
<node CREATED="1614549505881" ID="ID_1111066543" MODIFIED="1614549522610" TEXT="gegeben ein Widget &#x27f9; welcher Canvas managt das Layout?"/>
<node COLOR="#435e98" CREATED="1614865416841" ID="ID_369222912" MODIFIED="1615558812749" TEXT="Entscheidung zur &#xdc;bersetzung in Domain-Werte">
<arrowlink COLOR="#6c97d3" DESTINATION="ID_937435961" ENDARROW="Default" ENDINCLINATION="144;280;" ID="Arrow_ID_1259911083" STARTARROW="None" STARTINCLINATION="-332;20;"/>
<node CREATED="1615558454300" ID="ID_1040288867" MODIFIED="1615558819335" TEXT="Entscheidung f&#xe4;llt gegen L&#xf6;sung-2">
<arrowlink COLOR="#cf927e" DESTINATION="ID_819484059" ENDARROW="Default" ENDINCLINATION="30;162;" ID="Arrow_ID_713111774" STARTARROW="None" STARTINCLINATION="-23;-182;"/>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1615558821048" ID="ID_553122702" MODIFIED="1615559148819">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      die Konsequenz aus L&#246;sung-1 ist aber nicht <i>wirklich abwegig</i>
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Warum m&#246;chte man denn &#252;berhaupt eine Geste &quot;abbrechen k&#246;nnen&quot;?
    </p>
    <ul>
      <li>
        weil sie versehentlich ausgel&#246;st wurde
      </li>
      <li>
        weil man besorgt ist, ein bereits Erreichtes dadurch &quot;kaputt&quot; zu machen
      </li>
      <li>
        weil man ein &#171;UNDO&#171; nicht zuverl&#228;ssig sieht
      </li>
    </ul>
    <p>
      Die Konsequenz daraus ist dann, da&#223; das UI von Lumiera stets offen, non-modal und manipulierbar ist. Und die zweite Konsequenz ist, da&#223; wir ein klar und <b>zuverl&#228;ssig steuerbares</b>&#160;&#171;UNDO&#187; brauchen.
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#435e98" CREATED="1616684105407" ID="ID_135851896" MODIFIED="1616684443111" TEXT="Entscheidung Misch-L&#xf6;sung: Subject leitet ein, Gesten-Controller f&#xfc;hrt durch die Geste">
<arrowlink COLOR="#fbf89a" DESTINATION="ID_1331675338" ENDARROW="Default" ENDINCLINATION="-9;-33;" ID="Arrow_ID_646745936" STARTARROW="None" STARTINCLINATION="-345;12;"/>
<arrowlink COLOR="#fbf89a" DESTINATION="ID_1886279726" ENDARROW="Default" ENDINCLINATION="37;75;" ID="Arrow_ID_1201469200" STARTARROW="None" STARTINCLINATION="-345;12;"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1615561656493" ID="ID_1379998024" MODIFIED="1615563798670" TEXT="Analyse und L&#xf6;sungssuche">
<icon BUILTIN="button_ok"/>
<node CREATED="1615561662796" ID="ID_997009920" MODIFIED="1615561681046" TEXT="klar ist...">
<node CREATED="1615561682058" ID="ID_1964677732" MODIFIED="1615561698859" TEXT="sobald die Geste startet..."/>
<node CREATED="1615561699447" ID="ID_1546726168" MODIFIED="1615561719329">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ..brauchen wir Widget <i>und </i>Subject <i>und </i>Canvas
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1615561804761" ID="ID_1425406746" MODIFIED="1615561837841" TEXT="und das Event-Binding braucht zumindest den Gesten-Controller"/>
<node CREATED="1615561875768" ID="ID_989749499" MODIFIED="1615561888969" TEXT="..plus einen Context-Indicator"/>
</node>
<node CREATED="1615563494951" ID="ID_1331675338" MODIFIED="1615563508330" TEXT="nun erscheint eine L&#xf6;sung naheliegend">
<linktarget COLOR="#fbf89a" DESTINATION="ID_1331675338" ENDARROW="Default" ENDINCLINATION="-9;-33;" ID="Arrow_ID_646745936" SOURCE="ID_135851896" STARTARROW="None" STARTINCLINATION="-345;12;"/>
<icon BUILTIN="idea"/>
<node CREATED="1615563510172" ID="ID_1273139871" MODIFIED="1615563531003" TEXT="speichere im Binding den Gesten-Controller + das Subject"/>
<node CREATED="1615563531896" ID="ID_1041794659" MODIFIED="1615563551170" TEXT="bei Start der Geste: das Subjekt bringt den Kontext bei...">
<node CREATED="1615563552422" ID="ID_276415471" MODIFIED="1615563561233" TEXT="es kennt das Widget"/>
<node CREATED="1615563561965" ID="ID_765212431" MODIFIED="1615563568584" TEXT="und das Widget kennt den Canvas"/>
</node>
<node CREATED="1615563610750" ID="ID_1241019416" MODIFIED="1615563624318" TEXT="der Canvas dient damit nur zur Metrik-&#xdc;bersetzung"/>
<node CREATED="1615563630412" ID="ID_1025610010" MODIFIED="1615563683159" TEXT="das Widget wird direkt per CanvasHook verschoben"/>
</node>
<node CREATED="1615563869355" ID="ID_411566224" MODIFIED="1615563956504" TEXT="Zeiger verwenden, und keine Registry">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Registry hat zus&#228;tzlichen Overhead (sowohl Speicher, alsauch Management) und ist nur sinnvoll, wenn eine ID in mehreren Objekten vorkommt, oder die ID aus mehreren Thread-Kontexten ben&#246;tigt wird
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1615563757154" ID="ID_1223828386" MODIFIED="1615563849447" TEXT="diese L&#xf6;sung erscheint tragf&#xe4;hig und koh&#xe4;rent">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...insofern sie genau an die Struktur anbaut, welche ich schon zur L&#246;sung der Querbeziehungen f&#252;r das Layout genutzt habe
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#3363bf" DESTINATION="ID_1714668959" ENDARROW="Default" ENDINCLINATION="36;-129;" ID="Arrow_ID_794903503" STARTARROW="None" STARTINCLINATION="-320;18;"/>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1615563740336" ID="ID_1714668959" MODIFIED="1679362063109" TEXT="L&#xf6;sungs-Skizze f&#xfc;r Clip-Drag erstellen">
<linktarget COLOR="#3363bf" DESTINATION="ID_1714668959" ENDARROW="Default" ENDINCLINATION="36;-129;" ID="Arrow_ID_794903503" SOURCE="ID_1223828386" STARTARROW="None" STARTINCLINATION="-320;18;"/>
<linktarget COLOR="#2381d3" DESTINATION="ID_1714668959" ENDARROW="Default" ENDINCLINATION="-533;1807;" ID="Arrow_ID_1818387200" SOURCE="ID_1401408143" STARTARROW="None" STARTINCLINATION="1260;198;"/>
<linktarget COLOR="#5f7a9f" DESTINATION="ID_1714668959" ENDARROW="Default" ENDINCLINATION="-533;1807;" ID="Arrow_ID_1378120058" SOURCE="ID_1570729566" STARTARROW="None" STARTINCLINATION="1673;76;"/>
<icon BUILTIN="pencil"/>
<icon BUILTIN="hourglass"/>
<node COLOR="#338800" CREATED="1616684903452" ID="ID_1953335093" MODIFIED="1679362063109">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      1.Schritt: <i>irgendwie implementieren</i>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
<node CREATED="1616709287996" ID="ID_315052965" MODIFIED="1616709307502" TEXT="CmdContext ist ein Builder">
<icon BUILTIN="idea"/>
<node CREATED="1616709876647" ID="ID_134820105" MODIFIED="1616709888050" TEXT="(ver)bindet eine UI-Entit&#xe4;t"/>
<node CREATED="1616709888782" ID="ID_1557466321" MODIFIED="1616709896625" TEXT="mit einer Interaktionsform"/>
<node CREATED="1616709937487" ID="ID_1221710731" MODIFIED="1616709984652" TEXT="idealerweise abstrakt und &#xfc;bergreifend">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Das Ideal w&#228;re, da&#223; man das nicht speziell f&#252;r Maus, Tastatur, Stift und Hardware einrichten mu&#223;, sondern lediglich qualifizieren
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1616710016525" ID="ID_454513850" MODIFIED="1616710159000" TEXT="dies sollte der einzige Ort der Konfiguration sein">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...d.h. es w&#228;re zu vermeiden, da&#223; ein irgendwo vorgegebenes Konfigurations-Setup an anderer Stelle im Code noch passend verankert oder korrespondierend eingerichtet werden mu&#223;.<br /><br />Konkret: die drag-F&#228;higkeit eines Clip wird konfiguriert im Clip-Presenter. Fertig.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1616712549985" ID="ID_1845795661" MODIFIED="1616712552436" TEXT="Methoden">
<node CREATED="1616712555705" ID="ID_1629230692" MODIFIED="1616713670273" TEXT="linkSubect(subj&amp;)"/>
<node CREATED="1616713811416" ID="ID_1212233389" MODIFIED="1616713852706" TEXT="setupRelocateDrag()"/>
</node>
</node>
<node CREATED="1616710202252" FOLDED="true" ID="ID_220049730" MODIFIED="1616710247050" TEXT="InteractionState sollte nur intern mit CmdContext interagieren">
<icon BUILTIN="idea"/>
<node CREATED="1617454641530" ID="ID_104565280" MODIFIED="1617454704165" TEXT="InteractionState ist ein Adapter zwischen dem Anker (CmdContext) und der konkreten Geste"/>
<node CREATED="1616710625955" ID="ID_69401594" MODIFIED="1616710644751" TEXT="gemeint ist: die Implementation von InteractionState ist konkret">
<node CREATED="1616712015758" ID="ID_1460580308" MODIFIED="1616712028383" TEXT="Entscheidung: jede Geste ist konkret">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1616712031119" ID="ID_17685044" MODIFIED="1616712197269" TEXT="also &quot;Clip-Move&quot; vs &quot;Clip-Attach&quot; vs &quot;Clip-Trim&quot;"/>
<node CREATED="1616712201691" ID="ID_1586890794" MODIFIED="1616712288188" TEXT="denn es sind nicht so viele, da&#xdf; eine zus&#xe4;tzliche Abstraktionsstufe gerechtfertig w&#xe4;re">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Und au&#223;erdem: die Wiederverwendung einer Implementierung z.B. f&#252;r Dragging kann man per Vererbung oder per nested component lokal in der Implementierung regeln
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1616710500336" ID="ID_1572154704" MODIFIED="1616710506215" TEXT="was wird gebraucht?">
<node CREATED="1616711335594" ID="ID_179541553" MODIFIED="1616711349572" TEXT="den Trigger einrichten">
<node CREATED="1616711351275" ID="ID_1259806938" MODIFIED="1616711357761" TEXT="linkTrigger(Subject)"/>
</node>
<node CREATED="1616711814740" ID="ID_1488797823" MODIFIED="1616711828149" TEXT="einen Modifier festlegen"/>
<node CREATED="1616711873564" ID="ID_1116020717" MODIFIED="1616711888542" TEXT="eine Zusatzbedingung(Lambda) angeben"/>
<node CREATED="1616711889538" ID="ID_672191940" MODIFIED="1616711925929" TEXT="Zugang zum slotEnabled()">
<node CREATED="1616711927102" ID="ID_1174752717" MODIFIED="1616711964852" TEXT="damit l&#xe4;&#xdf;t sich eine bestimmte Geste aktivieren/deaktivieren"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1616771214558" FOLDED="true" ID="ID_1771867762" MODIFIED="1616852161665" TEXT="Problem: Widget-Existenz wird dynamisch gesteuert">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1616771234015" ID="ID_240157641" MODIFIED="1616771254326" TEXT="relativ autonom">
<node CREATED="1616771255343" ID="ID_620255063" MODIFIED="1616771287475" TEXT="deshalb kann das Subject die Einrichtung nicht fix machen"/>
<node CREATED="1616771294654" ID="ID_334680468" MODIFIED="1616771818181" TEXT="auch der Zeitpunkt ist nicht absolut festgelegt">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <ul>
      <li>
        es <i>kann passieren,</i>&#160;da&#223; zu Beginn keine Timings gegeben sind, und deshalb erst mal nur ein Platzhalter erstellt wird...
      </li>
      <li>
        es <i>kann passieren,</i>&#160;da&#223; die Anzeige sofort in den degradierten-Modus schaltet (z.B. Timeline-&#220;bersicht)...
      </li>
    </ul>
  </body>
</html></richcontent>
<arrowlink COLOR="#fd6d53" DESTINATION="ID_1355759542" ENDARROW="Default" ENDINCLINATION="968;36;" ID="Arrow_ID_1110351466" STARTARROW="None" STARTINCLINATION="210;12;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1616771830690" ID="ID_1923283447" MODIFIED="1616852149613" TEXT="Konsequenz: Setup f&#xfc;r Dragging mu&#xdf; immer wieder erneut erfolgen">
<icon BUILTIN="yes"/>
<node CREATED="1616771909543" ID="ID_704625942" MODIFIED="1616771922497" TEXT="und zwar genau dann, wenn ein neues Widget geschaffen wurde"/>
<node CREATED="1616772271009" ID="ID_1822723171" MODIFIED="1616772366205" TEXT="Problem: es ist nicht (einfach) m&#xf6;glich, eine bestehende Gesten-Konfiguration zu erkennen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...denn ich will ja grade unn&#246;tige Storage-Slots f&#252;r R&#252;ckpointer und sonstige Flags vermeiden; daher besteht eine Gesten-Konfiguration nur darin, irgendwo ganz versteckt ein Signal auf das Widget verdrahtet zu haben...
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#338800" CREATED="1616771937519" FOLDED="true" ID="ID_897110549" MODIFIED="1616852141975" TEXT="Aufgabe: diese &#xc4;nderungen zuverl&#xe4;ssig erkennen">
<icon BUILTIN="button_ok"/>
<node CREATED="1616771968190" ID="ID_1961266206" MODIFIED="1616771986228" TEXT="es k&#xf6;nnte onLocalChange() passieren">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1616771987478" ID="ID_1833918929" MODIFIED="1616772006656" TEXT="...denn das ist auch die Stelle, die die &#xc4;nderung im Anzeigestil m&#xf6;glicherweise ausl&#xf6;st"/>
<node CREATED="1616772215184" ID="ID_1727128481" MODIFIED="1616772242264" TEXT="wird auch von injectNew() mit getriggert">
<icon BUILTIN="idea"/>
<node CREATED="1616772374800" ID="ID_898444334" MODIFIED="1616772380678" TEXT="das ist sch&#xf6;n..."/>
<node CREATED="1616772381362" ID="ID_211141572" MODIFIED="1616772481922" TEXT="wirft aber ein Problem der Asymetrie auf">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      denn nach dem Konstruktor-Aufruf existiert das Widget bereits &#8213;<b>&#160;</b>und das hei&#223;t, diese Funktion im Listener mu&#223; nichts mehr tun, und deshalb sieht es lokal dort so aus, als h&#228;tte sich das Widget gar nicht ge&#228;ndert
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1616772483932" ID="ID_1983461836" MODIFIED="1616772500046" TEXT="das ist auch eine &quot;halbe&quot; Code-Duplikation">
<node COLOR="#435e98" CREATED="1616772500937" ID="ID_1952528681" MODIFIED="1616803786000" TEXT="kann man das begradigen?">
<icon BUILTIN="help"/>
<node CREATED="1616773381049" ID="ID_1361368724" MODIFIED="1616773396790" TEXT="w&#xfc;rde bedeuten: buildDelegate l&#xe4;uft erst on-demand"/>
<node CREATED="1616773425807" ID="ID_1108287644" MODIFIED="1616773436809" TEXT="Konsequenz">
<node CREATED="1616773437629" ID="ID_1627883677" MODIFIED="1616773455118" TEXT="entweder die Invariante ist verletzt (widget_ != null)"/>
<node CREATED="1616773456274" ID="ID_1362418383" MODIFIED="1616773479027" TEXT="oder das switchAppearance mu&#xdf; schon vom ctor aus laufen"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1616773513426" ID="ID_493085702" MODIFIED="1616803787953" TEXT="Analyse-Aufgabe: was ist der Unteschied?">
<icon BUILTIN="help"/>
<node CREATED="1616773528369" ID="ID_783515324" MODIFIED="1616773535478" TEXT="buildDelegate">
<node CREATED="1616773740990" ID="ID_709835603" MODIFIED="1616773753903" TEXT="bekommt die Timings explizit von Au&#xdf;en hereingereicht"/>
<node CREATED="1616773822417" ID="ID_435836434" MODIFIED="1616773829885" TEXT="ermittelt nur den neuen Stil"/>
<node CREATED="1616773839167" ID="ID_186857995" MODIFIED="1616773868828" TEXT="baut stets das Delegate from scratch"/>
<node CREATED="1616773969494" ID="ID_711732245" MODIFIED="1616773998586" TEXT="vereinfachte Logik f&#xfc;r den Anzeigestil">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      da man verschiedene F&#228;lle hier zu beginn gleich ausschlie&#223;en kann
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1616773543578" ID="ID_1381781962" MODIFIED="1616773547522" TEXT="switchAppearance">
<node CREATED="1616773755299" ID="ID_982537729" MODIFIED="1616773767855" TEXT="zieht sich die Timings vom existierenden Delegate"/>
<node CREATED="1616773776856" ID="ID_1919770258" MODIFIED="1616773804888" TEXT="entnimmt vom existierenden Deletate einen bisherigen Anzeigestil"/>
<node CREATED="1616773832223" ID="ID_27000350" MODIFIED="1616773837508" TEXT="ermittelt den neuen Stil"/>
<node CREATED="1616773805721" ID="ID_1164727185" MODIFIED="1616773819718" TEXT="pr&#xfc;ft, ob &#xfc;berhaupt eine &#xc4;nderung notwendig ist"/>
<node CREATED="1616773870819" ID="ID_158611366" MODIFIED="1616773891716" TEXT="macht ggfs eine move-Konstruktion (verwendet das bestehende Delegate)"/>
</node>
</node>
<node COLOR="#338800" CREATED="1616803774776" ID="ID_511524095" MODIFIED="1616803986956" TEXT="puh... machbar aber komplex">
<arrowlink COLOR="#01ae93" DESTINATION="ID_1192722099" ENDARROW="Default" ENDINCLINATION="266;0;" ID="Arrow_ID_1620313417" STARTARROW="None" STARTINCLINATION="145;0;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1616803853431" ID="ID_1036949484" MODIFIED="1616803911454" TEXT="buildDelegate | switchAppearance &#x2192; selectAppearance">
<icon BUILTIN="button_ok"/>
<node CREATED="1616803913136" ID="ID_272741103" MODIFIED="1616803932728" TEXT="jetzt ist nur noch eine einzige Funktion f&#xfc;r das ganze Zustandsmanagement verantwortlich"/>
<node CREATED="1616803933773" ID="ID_1192722099" MODIFIED="1616803982084" TEXT="der code war vorher etwas verworren... und jetzt ist er sauberer, aber sehr komplex">
<linktarget COLOR="#01ae93" DESTINATION="ID_1192722099" ENDARROW="Default" ENDINCLINATION="266;0;" ID="Arrow_ID_1620313417" SOURCE="ID_511524095" STARTARROW="None" STARTINCLINATION="145;0;"/>
<icon BUILTIN="smiley-neutral"/>
</node>
</node>
<node COLOR="#338800" CREATED="1616804300325" ID="ID_480439366" MODIFIED="1616852111077" TEXT="auf dieser Basis nun ein neu erzeugtes Widget erkennen">
<icon BUILTIN="button_ok"/>
<node CREATED="1616804350672" ID="ID_1181865023" MODIFIED="1616804359373" TEXT="Kriterien">
<icon BUILTIN="idea"/>
<node CREATED="1616804323416" ID="ID_1065320975" MODIFIED="1616804335337" TEXT="immer wenn sich das Delegate &#xe4;ndert"/>
<node CREATED="1616804336046" ID="ID_438456915" MODIFIED="1616804350049" TEXT="und der neue Stil ein eigentst&#xe4;ndiges Widget rechtfertigt"/>
</node>
<node COLOR="#435e98" CREATED="1616852094050" ID="ID_1854197256" MODIFIED="1616852126061" TEXT="eingebaut und per Log-Meldung verifiziert">
<icon BUILTIN="info"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1616852178983" ID="ID_389047439" MODIFIED="1669362063109" TEXT="Strukturen gem&#xe4;&#xdf; Konzept anlegen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1616852190829" FOLDED="true" ID="ID_1663212368" MODIFIED="1617377719039" TEXT="CmdContext">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1616859779196" ID="ID_848065191" MODIFIED="1616859786984" TEXT="Dependency-Injection nutzen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1616859787843" ID="ID_1635546920" MODIFIED="1616947177038" TEXT="Kl&#xe4;ren: wie wird die CtxID aufgel&#xf6;st?">
<icon BUILTIN="help"/>
<node CREATED="1616943046889" ID="ID_1350466164" MODIFIED="1616943061375" TEXT="oder anders herum: was sagt die CtxID aus?"/>
<node CREATED="1616943103092" ID="ID_1028957642" MODIFIED="1616944099163" TEXT="welche Informationen m&#xfc;ssen mitgegeben werden?">
<icon BUILTIN="help"/>
<node CREATED="1616943128136" ID="ID_1348629069" MODIFIED="1616943136864" TEXT="die Command-ID selber">
<node CREATED="1616943138039" ID="ID_183656293" MODIFIED="1616943154225" TEXT="Frage: ist diese  ein Bedeutungstr&#xe4;ger?"/>
<node CREATED="1616943154981" ID="ID_687890378" MODIFIED="1616943170211" TEXT="...oder nur ein Wert der nach unten durchgereicht wird?"/>
</node>
<node CREATED="1616943184573" ID="ID_318484387" MODIFIED="1616943210017" TEXT="der Umstand da&#xdf; eine Dragging-Aktion stattfinden soll"/>
<node CREATED="1616943213342" ID="ID_1854935612" MODIFIED="1616943235062" TEXT="der Umstand da&#xdf; wir auf einem Canvas arbeiten">
<node CREATED="1616943236338" ID="ID_233441382" MODIFIED="1616943253094" TEXT="im Sinne meiner Abstraktion CanvasHooked"/>
<node CREATED="1616943425489" ID="ID_409371890" MODIFIED="1616943450039" TEXT="aber auch die Info, da&#xdf; die x-Koordinate eine Zeit darstellt"/>
</node>
<node CREATED="1616943463635" ID="ID_926220296" MODIFIED="1616943481983" TEXT="Zus&#xe4;tzlich mu&#xdf; die Geste noch im Detail konfiguriert werden">
<node CREATED="1616943486336" ID="ID_1614368580" MODIFIED="1616943496907" TEXT="sind Modifier notwendig?"/>
<node CREATED="1616943497591" ID="ID_1693918542" MODIFIED="1616943512497" TEXT="kann der Drag den Canvas verlassen?"/>
<node CREATED="1616943513205" ID="ID_1329503612" MODIFIED="1616943532774" TEXT="kann der Drag &#xfc;ber den bisherigen virtuellen Canvas hinausgehen?"/>
<node CREATED="1616943533930" ID="ID_1957877957" MODIFIED="1616943546988" TEXT="soll der Canvas automatsich scrollen?"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1616943578428" ID="ID_115517003" MODIFIED="1616944103109" TEXT="wie allgemein / generisch mu&#xdf; das System sein?">
<icon BUILTIN="help"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1616943995900" ID="ID_999660840" MODIFIED="1616944008942" TEXT="Antwort: anfangs so wenig wie m&#xf6;glich">
<linktarget COLOR="#2c9eb4" DESTINATION="ID_999660840" ENDARROW="Default" ENDINCLINATION="-136;9;" ID="Arrow_ID_453101984" SOURCE="ID_1611970353" STARTARROW="None" STARTINCLINATION="60;-184;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1616944014145" ID="ID_1496729936" MODIFIED="1616944031389" TEXT="ich deute aber die Verallgemeinerung an">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1616944032896" ID="ID_1402431957" MODIFIED="1616944054424" TEXT="indem...">
<node CREATED="1616944055492" ID="ID_1975883626" MODIFIED="1616944073921" TEXT="die Kontext-ID strukturiert angelegt wird (mit Scope und Punkt)"/>
<node CREATED="1616944076448" ID="ID_932332417" MODIFIED="1616944085018" TEXT="die &#xdc;bersetzung zweistufig erfolgt"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1616947165410" ID="ID_300128108" MODIFIED="1617377719039" TEXT="also: vorherst ferst verdrahten">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1616854202348" ID="ID_340156587" MODIFIED="1617377719039" TEXT="Auswahl und Zugriff auf den passenden InteractionState">
<icon BUILTIN="button_ok"/>
<node CREATED="1617377586150" ID="ID_1611970353" MODIFIED="1617377719039" TEXT="erst mal fest verdrahtet">
<arrowlink COLOR="#2c9eb4" DESTINATION="ID_999660840" ENDARROW="Default" ENDINCLINATION="-136;9;" ID="Arrow_ID_453101984" STARTARROW="None" STARTINCLINATION="60;-184;"/>
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#338800" CREATED="1616856060491" FOLDED="true" ID="ID_44406517" MODIFIED="1616859101168" TEXT="einen Manager f&#xfc;r den InteractionState schaffen">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1616859073891" ID="ID_909388621" MODIFIED="1616859108655" TEXT="Name: GestureState">
<icon BUILTIN="info"/>
</node>
<node COLOR="#338800" CREATED="1616859080858" ID="ID_1168738584" MODIFIED="1616859110568" TEXT="angesiedelt im InteractionDirector">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1616859087201" ID="ID_1804482999" MODIFIED="1616859111916" TEXT="zug&#xe4;nglich via lib::Depend&lt;GestureState&gt;">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1616852275162" FOLDED="true" ID="ID_1272601084" MODIFIED="1617377719039" TEXT="DragRelocateController verwalten">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1617377637909" ID="ID_1302268767" MODIFIED="1617377719039" TEXT="Entscheidung: erst mal direkt als PImpl in GestureController">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1617377669085" ID="ID_1519120855" MODIFIED="1617377719039" TEXT="k&#xf6;nnte sp&#xe4;ter mal dynamsiche Auswahl nach Regeln sein (je nach Interaction-System)">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Maus, Tastenk&#252;rzel, Stift, Hardware....
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1617377650756" ID="ID_735449737" MODIFIED="1617377719039" TEXT="TODO f&#xfc;r sp&#xe4;ter im Code hinterlassen">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1617377786842" FOLDED="true" ID="ID_1829220190" MODIFIED="1617471190700" TEXT="Interface Subject definieren">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1617471241490" ID="ID_293482403" MODIFIED="1617471251679" TEXT="implementieren f&#xfc;r ClipPresenter">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1617471252385" ID="ID_1769679679" MODIFIED="1617471266204" TEXT="Problem: Zugriff auf das Widget">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1617471267594" ID="ID_1351328929" MODIFIED="1617471285896" TEXT="eigentlich kein Problem, sondern nur h&#xe4;sslich"/>
<node CREATED="1617471305929" ID="ID_663980291" MODIFIED="1617471447147" TEXT="Steht im Widerspruch zum selbst&#xe4;ndig verwalteten Anzeigestil">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...und dadurch ensteht hier ein &quot;linke-Tasche-rechte-Tasche-Spiel&quot;.
    </p>
    <p>
      Wir m&#252;ssen annehmen...
    </p>
    <ul>
      <li>
        da&#223; der ClipPresenter das Wiring nur dann einrichtet, wenn tats&#228;chlich ein Clip-Widget erzeugt wurde
      </li>
      <li>
        und da&#223; ein deaktiviertes oder aus dem Display herausgenommenes Widget auch keine Signale mehr sendet
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node COLOR="#338800" CREATED="1617471286628" ID="ID_601378287" MODIFIED="1617471303401" TEXT="in statischer Funktion im ClipDelegate versteckt">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1617471454724" ID="ID_347955053" MODIFIED="1617471465856" TEXT="gr&#xfc;ndliche Fehlerbehandlung">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1617377754742" FOLDED="true" ID="ID_1574394085" MODIFIED="1618681141799" TEXT="linkSubject im konkreten Controller">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1617377734341" ID="ID_1697355210" MODIFIED="1617568263119" TEXT="Widget-Signal-Binding anlegen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1617471221445" ID="ID_1213832173" MODIFIED="1617471225697" TEXT="Exceptions fangen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1617471484385" ID="ID_764496740" MODIFIED="1617471492221" TEXT="hierf&#xfc;r ein Makro erfunden">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1617471493055" ID="ID_1798821612" MODIFIED="1617568252066" TEXT="Makro in einen zentralen Header verlegen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      habs in error.hpp untergebracht, direkt unter ERROR_LOG_AND_IGNORE
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1617377772355" ID="ID_1391847346" MODIFIED="1617471513483" TEXT="Subject im Signal-Binding binden">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1617459517745" ID="ID_1350194192" MODIFIED="1617459539394" TEXT="brauchen wir ein Sigc::Trackable zum Binden?">
<icon BUILTIN="help"/>
<node CREATED="1617459546014" ID="ID_1656180985" MODIFIED="1617459578397" TEXT="konkret: kann der Gesten-Controller vorzeitig zerst&#xf6;rt werden?"/>
<node CREATED="1617459579286" ID="ID_214055342" MODIFIED="1617459650805" TEXT="Nein, sofern er an den Lebenszyklus des InteractionDirectors gebunden ist">
<icon BUILTIN="forward"/>
</node>
<node CREATED="1617459599031" ID="ID_481151247" MODIFIED="1617459613224" TEXT="denn: der UiManager wird erst nach Ende des UI-Thread zerst&#xf6;rt"/>
<node CREATED="1617459627675" ID="ID_1337959173" MODIFIED="1617459642132" TEXT="(solange das UI keine weiteren Threads verwendet sind wir sauber)"/>
</node>
<node CREATED="1617459659278" ID="ID_976541024" LINK="#ID_230224690" MODIFIED="1617459721740" TEXT="kann also bequem ein Lambda verwenden..."/>
</node>
<node COLOR="#338800" CREATED="1617377798336" ID="ID_1680080732" MODIFIED="1618681140125" TEXT="Signal-Callbacks anlegen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1617471204921" ID="ID_1381735452" MODIFIED="1617471216758" TEXT="Vorl&#xe4;ufie Implementierung: Button-Click">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1617471543992" ID="ID_1461453973" MODIFIED="1618681138718" TEXT="auch noch die CommandID mit binden">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1617568275423" FOLDED="true" ID="ID_705403474" MODIFIED="1620913868535" TEXT="Trigger-Bedingung formulieren">
<icon BUILTIN="button_ok"/>
<node CREATED="1617568301466" ID="ID_1738730292" MODIFIED="1617568534103" TEXT="inhaltlich...">
<node CREATED="1617568311385" ID="ID_120327257" MODIFIED="1617568327148" TEXT="&quot;klicken und ziehen&quot;"/>
<node CREATED="1617568432466" ID="ID_1992031404" MODIFIED="1617568445795" TEXT="der Klick war im Bereich des zu ziehenden Objekts"/>
<node CREATED="1617568398748" ID="ID_1460645724" MODIFIED="1617568423269" TEXT="Mausbewegung bevor die Maustaste losgelassen wurde"/>
<node CREATED="1617568452526" ID="ID_1020620586" MODIFIED="1617568457857" TEXT="konfigurierbare Varianten">
<node CREATED="1617568459021" ID="ID_1056703616" MODIFIED="1617568484821" TEXT="welcher Mausknopf?"/>
<node CREATED="1617568485487" ID="ID_1125938046" MODIFIED="1617568496877" TEXT="Modifier-Tasten gedr&#xfc;ckt"/>
</node>
</node>
<node CREATED="1617568504346" ID="ID_261021912" MODIFIED="1617568528369" TEXT="Event-Logik">
<node CREATED="1617568536923" ID="ID_711862925" MODIFIED="1617568637660" TEXT="Maus-Button-Events beobachten">
<node CREATED="1617568559447" ID="ID_945977734" MODIFIED="1617568566236" TEXT="sie kommen separat">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1617568567502" ID="ID_420708332" MODIFIED="1617568581548" TEXT="button_press / button_release"/>
<node CREATED="1617568582983" ID="ID_55959030" MODIFIED="1617568587863" TEXT="brauche also State-Flag"/>
</node>
<node CREATED="1617568619294" ID="ID_1632840058" MODIFIED="1617568634721" TEXT="Maus-Bewegungen beobachten">
<node CREATED="1617568707539" ID="ID_295174792" MODIFIED="1617568780036" TEXT="mit Button-State verkn&#xfc;pfen"/>
<node CREATED="1617568786464" ID="ID_186028355" MODIFIED="1617568842406" TEXT="fast return falls irrelevant">
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1617568863750" ID="ID_390541368" MODIFIED="1617568877088" TEXT="Modifier ermitteln">
<node CREATED="1617568878012" ID="ID_1639356381" MODIFIED="1617568904641" TEXT="sie werden im Button-Event mitgeliefert"/>
<node CREATED="1617568905353" ID="ID_1257545245" MODIFIED="1617568925825" TEXT="Danke! andere Leute stehen vor der gleichen Aufgabe"/>
</node>
<node COLOR="#635891" CREATED="1617568934636" ID="ID_1210824074" MODIFIED="1617912478569" TEXT="Problem: unvollst&#xe4;ndige Gesten">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1617568988701" ID="ID_1692187742" MODIFIED="1617568996132" TEXT="kann man &quot;locker&quot; handhaben"/>
<node CREATED="1617568997013" ID="ID_651241520" MODIFIED="1617569006963" TEXT="entweder es wird doch noch was"/>
<node CREATED="1617569007698" ID="ID_415678427" MODIFIED="1617569041770" TEXT="oder ein anderes Subjekt &#xfc;berschreibt"/>
<node CREATED="1617569057644" ID="ID_1030532541" MODIFIED="1617569060954" TEXT="Beispiele">
<node CREATED="1617569061629" ID="ID_1273582846" MODIFIED="1617569661108" TEXT="schon au&#xdf;erhalb geklickt">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Das bekommt dieser Controller dann nicht mit, und die Geste wird insofern auch nicht getriggert. Da hat der User eben Pech gehabt.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1617569148000" ID="ID_1188278692" MODIFIED="1617569598605" TEXT="Widget vor&#xfc;bergehend verlassen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Wenig problematisch ist dieser Fall, wenn der Button gedr&#252;ckt bleibt und wir irgendwann zur&#252;ckkommen; dann setzt sich das Dragging eben an der Stelle fort. Wenn dagegen der Button au&#223;erhalb released wurde, handelt es sich tats&#228;chlich um den 3.Fall &#8213; wenn aber eine normale Maus-Bewegung sp&#228;ter wieder &#252;ber das Widget f&#228;hrt, wird das Dragging fortgesetzt, f&#228;lschlicherweise.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1617569170845" ID="ID_1128795128" MODIFIED="1617888975813" TEXT="Widget verlassen und Release au&#xdf;erhalb">
<arrowlink COLOR="#5274c4" DESTINATION="ID_670270677" ENDARROW="Default" ENDINCLINATION="-142;-46;" ID="Arrow_ID_1779430894" STARTARROW="None" STARTINCLINATION="-54;103;"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1617569229030" ID="ID_601910999" MODIFIED="1617569234719" TEXT="echtes Problem"/>
<node CREATED="1617569235666" ID="ID_1093451410" MODIFIED="1617569408809" TEXT="betrachte ich als Unfall">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      wenn das <i>Dragging </i>funktioniert, sollte es eigentlich rein logisch unm&#246;glich sein, das Widget zu verlassen, weil dieses sich ja mitbewegt. Allerdings sind vielerlei undl&#252;ckliche Umst&#228;nde denkbar, z.B. versp&#228;tete Reaktion der Software, sehr schnelle Mausbewegungen, limitierte Bewegung am Rand eines Containers.
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1617569409798" ID="ID_1474484984" MODIFIED="1617569431870" TEXT="Puh! sprengt das Konzept">
<icon BUILTIN="smiley-angry"/>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1617569687944" ID="ID_109351275" MODIFIED="1620913776693" TEXT="Modifier sollten konfigurierbar sein">
<arrowlink COLOR="#d54526" DESTINATION="ID_914526002" ENDARROW="Default" ENDINCLINATION="-19;-306;" ID="Arrow_ID_1156051405" STARTARROW="None" STARTINCLINATION="-130;185;"/>
<icon BUILTIN="bell"/>
</node>
<node CREATED="1617570674708" ID="ID_1037850042" MODIFIED="1617570685158" TEXT="Zugang / Definitionen">
<node CREATED="1617570694344" ID="ID_752689969" MODIFIED="1617570698161" TEXT="gdkevents.h">
<node CREATED="1617570706079" ID="ID_1486587603" MODIFIED="1617913056949" TEXT="_GdkEventMotion"/>
<node CREATED="1617570898727" ID="ID_116829584" MODIFIED="1617913060361" TEXT="_GdkEventButton"/>
</node>
<node COLOR="#338800" CREATED="1617570908580" ID="ID_104139138" MODIFIED="1617912332831" TEXT="zu kl&#xe4;ren">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1617570913996" ID="ID_1217512191" MODIFIED="1617889193688" TEXT="was ist ein &quot;grab&quot;?">
<arrowlink COLOR="#3f56d9" DESTINATION="ID_366430158" ENDARROW="Default" ENDINCLINATION="-1512;175;" ID="Arrow_ID_1894977369" STARTARROW="None" STARTINCLINATION="-5374;669;"/>
<icon BUILTIN="help"/>
<node CREATED="1617888877662" ID="ID_670270677" MODIFIED="1617912236623" TEXT="das ist genau die L&#xf6;sung f&#xfc;r das Problem hier">
<arrowlink COLOR="#5c9fd8" DESTINATION="ID_1612782952" ENDARROW="Default" ENDINCLINATION="201;0;" ID="Arrow_ID_1004134548" STARTARROW="None" STARTINCLINATION="246;0;"/>
<linktarget COLOR="#5274c4" DESTINATION="ID_670270677" ENDARROW="Default" ENDINCLINATION="-142;-46;" ID="Arrow_ID_1779430894" SOURCE="ID_1128795128" STARTARROW="None" STARTINCLINATION="-54;103;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1617898534818" ID="ID_315802107" MODIFIED="1617898613561" TEXT="und zwar gibt es demnach sogar zwei L&#xf6;sungen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      die L&#246;sung auf X-Display / GDK-Ebene f&#252;r die Maus und das grab-widget von GTK, welches alle Events fangen kann.
    </p>
  </body>
</html></richcontent>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1617898615759" ID="ID_1865733725" MODIFIED="1617898713481" TEXT="hier erscheint die GTK-L&#xf6;sung angemessen">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node CREATED="1617898649667" ID="ID_1080170926" MODIFIED="1617898706244" TEXT="weil man damit auch die Tastatur &quot;fangen&quot; kann">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1617898661671" ID="ID_1301082143" MODIFIED="1617898703204" TEXT="allerdings ist diese L&#xf6;sung auch schon ein starker Eintriff">
<icon BUILTIN="messagebox_warning"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1617898678071" ID="ID_1991806520" MODIFIED="1617898698197" TEXT="...mu&#xdf; also sauber und defensiv genutzt werden">
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1617912342820" ID="ID_131592994" MODIFIED="1617912428285" TEXT="noch besser... gar nichts zu tun">
<arrowlink COLOR="#7098c7" DESTINATION="ID_1996728887" ENDARROW="Default" ENDINCLINATION="10;-39;" ID="Arrow_ID_952711609" STARTARROW="None" STARTINCLINATION="-63;5;"/>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1617570926506" ID="ID_803602163" MODIFIED="1617912330239" TEXT="was ist ein &quot;implicit grab&quot;?">
<icon BUILTIN="help"/>
<node CREATED="1617570946843" ID="ID_90860434" MODIFIED="1617570988184" TEXT="siehe _GdkEventGrabBroken">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      &#160;* Generated when a pointer or keyboard grab is broken. On X11, this happens
    </p>
    <p>
      &#160;* when the grab window becomes unviewable (i.e. it or one of its ancestors
    </p>
    <p>
      &#160;* is unmapped), or if the same application grabs the pointer or keyboard
    </p>
    <p>
      &#160;* again. Note that implicit grabs (which are initiated by button presses)
    </p>
    <p>
      &#160;* can also cause #GdkEventGrabBroken events.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1617912124088" ID="ID_1996728887" MODIFIED="1617912425749" TEXT="Nach Maus- und Touch-Events gehen Folge-Events an das gleiche Widget">
<linktarget COLOR="#7098c7" DESTINATION="ID_1996728887" ENDARROW="Default" ENDINCLINATION="10;-39;" ID="Arrow_ID_952711609" SOURCE="ID_131592994" STARTARROW="None" STARTINCLINATION="-63;5;"/>
</node>
<node CREATED="1617912195242" ID="ID_1612782952" MODIFIED="1617912230315" TEXT="GTK implementiert also ohnehin die L&#xf6;sung f&#xfc;r mein Problem hier">
<linktarget COLOR="#5c9fd8" DESTINATION="ID_1612782952" ENDARROW="Default" ENDINCLINATION="201;0;" ID="Arrow_ID_1004134548" SOURCE="ID_670270677" STARTARROW="None" STARTINCLINATION="246;0;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
<node CREATED="1617912240372" ID="ID_1225920019" MODIFIED="1617912288730" TEXT="GdkEventButtonPress &#x27f9; empfangenes Widget bekommt den &quot;implicit grab&quot;"/>
<node CREATED="1617912289933" ID="ID_1605333590" MODIFIED="1617912313582" TEXT="dieser bleibt bestehen bis GdkEventButtonRelease"/>
</node>
</node>
<node COLOR="#338800" CREATED="1617913164868" ID="ID_113135132" MODIFIED="1618690916629" TEXT="einzurichten">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1617913214193" ID="ID_51699428" MODIFIED="1617919672112" TEXT="state flags">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1617913172095" ID="ID_389454227" MODIFIED="1617919654631" TEXT="Callbacks f&#xfc;r Button-Events">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1617913205146" ID="ID_1972128766" MODIFIED="1618690918521" TEXT="Callback f&#xfc;r Motion-Events">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1617919712790" ID="ID_886546906" MODIFIED="1617919741084" TEXT="sehe hier die Motion-Events">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1617919725773" ID="ID_309690589" MODIFIED="1617919738379" TEXT="implicit grab funktioniert">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1618499488724" ID="ID_1241205333" MODIFIED="1618690930013" TEXT="Basis schaffen f&#xfc;r eine Hysterese">
<linktarget COLOR="#22d66c" DESTINATION="ID_1241205333" ENDARROW="Default" ENDINCLINATION="35;105;" ID="Arrow_ID_1887863096" SOURCE="ID_1184207694" STARTARROW="None" STARTINCLINATION="348;20;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1618499514672" ID="ID_934736120" MODIFIED="1618499526802" TEXT="nicht jede minimale Bewegung soll eine Dragging-Geste ausl&#xf6;sen">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#435e98" CREATED="1618499530732" ID="ID_1305245635" MODIFIED="1618690910469" TEXT="das bedeutet: Gestenerkennung vorl&#xe4;ufig beginnen">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1618498875079" ID="ID_1267546019" MODIFIED="1618499117546" TEXT="(Draft) Framework-Anforderungen beachten">
<linktarget COLOR="#5c4052" DESTINATION="ID_1267546019" ENDARROW="Default" ENDINCLINATION="-834;0;" ID="Arrow_ID_1826514843" SOURCE="ID_420683622" STARTARROW="None" STARTINCLINATION="-58;-277;"/>
<icon BUILTIN="yes"/>
<node CREATED="1618499152610" ID="ID_1853176159" MODIFIED="1618504461568" TEXT="die Aktion beim Triggern mu&#xdf; konfigurierbar sein">
<icon BUILTIN="yes"/>
<node CREATED="1618499163912" ID="ID_21588422" MODIFIED="1618499182405" TEXT="Alternative-1: ein Command ausl&#xf6;sen (auf dem Subject)"/>
<node CREATED="1618499184805" ID="ID_1304825104" MODIFIED="1618499247024" TEXT="Alternative-2: Erfolg-R&#xfc;ckmeldung an eine &#xfc;bergeordnete Geste"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1618504436926" ID="ID_1670097568" MODIFIED="1618504458159" TEXT="die Geste mu&#xdf; generell deaktivierbar sein">
<icon BUILTIN="yes"/>
<node CREATED="1618504468418" ID="ID_1575120322" MODIFIED="1618504482540" TEXT="und zwar erst mal vom Subjekt aus">
<node CREATED="1618504487367" ID="ID_1202198317" MODIFIED="1618504512315" TEXT="Clip und Sequenz k&#xf6;nnen fixiert sein"/>
<node CREATED="1618504518013" ID="ID_1762835695" MODIFIED="1618504554622" TEXT="es ist besser, dies unmittelbar im UI erfahrbar zu machen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...anstatt blo&#223; die Ausf&#252;hrung entsprechender Commands zur&#252;ckzuweisen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1618672697029" ID="ID_1737377416" MODIFIED="1618672706489" TEXT="Verfolgung und Pos-Updates">
<icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1618675384464" ID="ID_381912051" MODIFIED="1618675399330" TEXT="Zustandslogik der Gesten-Erkennung selber">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1618672711536" ID="ID_1916597982" MODIFIED="1619881347856" TEXT="Verbindung zum Canvas herstellen">
<icon BUILTIN="button_ok"/>
<node CREATED="1619881349481" ID="ID_1566054765" MODIFIED="1619881362478" TEXT="nutze das CanvasHooked">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#435e98" CREATED="1619881363596" ID="ID_120077248" MODIFIED="1619882215112" TEXT="CanvasHook exponiert jetzt DisplayMetric">
<icon BUILTIN="info"/>
</node>
<node CREATED="1619881405244" ID="ID_1235657284" MODIFIED="1619881421990" TEXT="das passiert dann aber alles bereits im Subject"/>
<node CREATED="1619882166616" ID="ID_1792609740" MODIFIED="1619882178102" TEXT="Subject::gestureOffset(cmd, deltaX, deltaY)"/>
</node>
<node COLOR="#338800" CREATED="1618672732077" ID="ID_949915263" MODIFIED="1624113877375" TEXT="Logik zur Positions-&#xdc;bersetzung">
<icon BUILTIN="button_ok"/>
<node CREATED="1618676950908" ID="ID_69237451" MODIFIED="1618677116146" TEXT="hier deutet sich ein mehrstufiger Ansatz an">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Demnach w&#228;re die &#220;bersetzung von Pixel-Koordinaten in <i>irgend etwas modell-Releavantes</i>&#160;komplet in das Subject eingekapselt; der Gesten-Controller w&#252;rde dann einen Screen-relativen Offset aggregieren. Aber auf der zweiten Stufe bleiben wir bei dem Ansatz, da&#223; die Geste direkt das Modell manipuliert
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1618676975232" ID="ID_196334292" MODIFIED="1618677288680" TEXT="es erscheint vorl&#xe4;ufig sinnvoll, dieser Richtung zu Folgen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...Auch wenn ich ein ungutes Bauchgef&#252;hl habe, alle Argumente sprechen im Moment daf&#252;r, diesem Hinweis zu folgen und das Design in dieser Richtung auszubauen. Im Besonderen w&#252;rde n&#228;mlich ein konsequentes Umsetzen meines urspr&#252;nglichen Konzepts bedeuten, da&#223; das Subject-Interface etwas von der Metrik im Modell, und im Besonderen von eine Zeit-Parameter wissen m&#252;&#223;te &#8213; es ist aber absehbar, da&#223; in anderen Situationen g&#228;nzlich andere Parameter relevant sein k&#246;nnten ... man denke blo&#223; an die &quot;Position im Fork&quot;
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#435e98" CREATED="1618752912540" FOLDED="true" ID="ID_709707680" MODIFIED="1624114454822" TEXT="konkrete Schwierigkeiten f&#xfc;r den Clip">
<icon BUILTIN="messagebox_warning"/>
<node COLOR="#338800" CREATED="1618752984873" ID="ID_126063856" MODIFIED="1624113957884" TEXT="mu&#xdf; ein Delta in ein Zeit-Delta &#xfc;bersetzen">
<icon BUILTIN="button_ok"/>
<node CREATED="1618753017759" ID="ID_1766339786" MODIFIED="1618753019825" TEXT="gegeben">
<node CREATED="1618753020812" ID="ID_958370173" MODIFIED="1618753025665" TEXT="eine Basis-Zeit"/>
<node CREATED="1618753026451" ID="ID_1831542689" MODIFIED="1618753035110" TEXT="ein Delta in UI-Koordinaten"/>
</node>
<node CREATED="1618753071285" ID="ID_1208729894" MODIFIED="1618753082199" TEXT="bei homogener Metrik sollte das aber m&#xf6;glich sein">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1618778672386" ID="ID_1242087872" MODIFIED="1618778698205" TEXT="Bisher in BodyCanvasWidget angelegt">
<icon BUILTIN="idea"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1618778688276" ID="ID_1895003083" MODIFIED="1618778695704" TEXT="aber &#xfc;berhaupt noch nicht implementiert">
<arrowlink COLOR="#fe576f" DESTINATION="ID_400013153" ENDARROW="Default" ENDINCLINATION="2435;0;" ID="Arrow_ID_858529243" STARTARROW="None" STARTINCLINATION="240;261;"/>
<linktarget COLOR="#fdd8c6" DESTINATION="ID_1895003083" ENDARROW="Default" ENDINCLINATION="-729;49;" ID="Arrow_ID_547396305" SOURCE="ID_783305795" STARTARROW="None" STARTINCLINATION="218;15;"/>
<icon BUILTIN="hourglass"/>
<node CREATED="1620922762073" ID="ID_878659189" MODIFIED="1620922781290" TEXT="vorl&#xe4;ufige Dummy-Implementierung in TimelineLayout"/>
<node CREATED="1620922782734" ID="ID_1695744984" MODIFIED="1620922815553">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      verwendet hart gedrahtete Konstante <font color="#b42e2e">TODO_px_per_second</font>
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#338800" CREATED="1620922817299" ID="ID_849178366" MODIFIED="1620922830205" TEXT="der Rest der Berechnung ist aber hiermit schon mal korrekt ausgef&#xfc;hrt">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1619104316816" FOLDED="true" ID="ID_907598549" MODIFIED="1619880556650" TEXT="zu Kl&#xe4;ren: Rolle und Zugang zum Layout-Manager">
<icon BUILTIN="yes"/>
<node CREATED="1619880229221" ID="ID_667002483" MODIFIED="1619880246203" TEXT="der Belang wird von einer eigenen Komponente behandelt"/>
<node CREATED="1619880246897" ID="ID_1360417037" MODIFIED="1619880264379" TEXT="diese wird Teil des DisplayManager-Interface"/>
<node CREATED="1619880345173" ID="ID_1065721692" MODIFIED="1619880538264" TEXT="sp&#xe4;ter mal: Integration mit ZoomWindow">
<arrowlink COLOR="#8e7ba1" DESTINATION="ID_838803024" ENDARROW="Default" ENDINCLINATION="171;760;" ID="Arrow_ID_1707924491" STARTARROW="None" STARTINCLINATION="-1855;126;"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1619104748998" ID="ID_1862152665" MODIFIED="1619106836504" TEXT="zu Kl&#xe4;ren: Skala f&#xfc;r Screen-Koordinaten und/oder Pixel">
<arrowlink COLOR="#6084b9" DESTINATION="ID_206049495" ENDARROW="Default" ENDINCLINATION="-1698;230;" ID="Arrow_ID_1554039358" STARTARROW="None" STARTINCLINATION="-5611;254;"/>
<linktarget COLOR="#de5c6e" DESTINATION="ID_1862152665" ENDARROW="Default" ENDINCLINATION="139;212;" ID="Arrow_ID_1129738995" SOURCE="ID_671218820" STARTARROW="None" STARTINCLINATION="686;61;"/>
<icon BUILTIN="bell"/>
<node CREATED="1619104774025" ID="ID_1244834056" MODIFIED="1619105073946" TEXT="habe mir dar&#xfc;ber nie Gedanken gemacht">
<icon BUILTIN="smiley-oh"/>
</node>
<node CREATED="1619104785553" ID="ID_1913808351" MODIFIED="1619104792020" TEXT="Cairo und GDK liefern doubles"/>
<node CREATED="1619104793778" ID="ID_988488039" MODIFIED="1619105005937" TEXT="die Maus-Events haben typischerweise eine Nachkommastelle">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      BUTT true flag=&#171;GdkEventType&#187;
    </p>
    <p>
      MOVE x=18.4 y=12.5
    </p>
    <p>
      ANCHOR at x=18.4 y=12.5 ('scope_moveRelocateClip')
    </p>
    <p>
      MOVE x=18.8 y=12.5
    </p>
    <p>
      MOVE x=19.3 y=12.5
    </p>
    <p>
      MOVE x=19.8 y=13.0
    </p>
    <p>
      MOVE x=20.2 y=13.0
    </p>
    <p>
      MOVE x=20.5 y=13.0
    </p>
    <p>
      MOVE x=20.9 y=13.0
    </p>
    <p>
      MOVE x=21.4 y=13.0
    </p>
    <p>
      MOVE x=21.9 y=13.0
    </p>
    <p>
      MOVE x=22.3 y=13.0
    </p>
    <p>
      MOVE x=23.0 y=13.0
    </p>
    <p>
      MOVE x=23.9 y=13.0
    </p>
    <p>
      MOVE x=24.8 y=13.0
    </p>
    <p>
      Gesture(scope_moveRelocateClip) --&gt; &#916; := (6.4,0.5)
    </p>
    <p>
      MOVE x=25.8 y=13.0
    </p>
    <p>
      Gesture(scope_moveRelocateClip) --&gt; &#916; := (7.4,0.5)
    </p>
    <p>
      MOVE x=26.7 y=13.0
    </p>
    <p>
      Gesture(scope_moveRelocateClip) --&gt; &#916; := (8.3,0.5)
    </p>
    <p>
      MOVE x=27.3 y=13.0
    </p>
    <p>
      Gesture(scope_moveRelocateClip) --&gt; &#916; := (8.9,0.5)
    </p>
    <p>
      MOVE x=27.9 y=13.0
    </p>
    <p>
      Gesture(scope_moveRelocateClip) --&gt; &#916; := (9.5,0.5)
    </p>
    <p>
      MOVE x=28.6 y=13.0
    </p>
    <p>
      Gesture(scope_moveRelocateClip) --&gt; &#916; := (10.2,0.5)
    </p>
    <p>
      MOVE x=29.0 y=13.0
    </p>
    <p>
      Gesture(scope_moveRelocateClip) --&gt; &#916; := (10.6,0.5)
    </p>
    <p>
      MOVE x=30.6 y=12.0
    </p>
    <p>
      Gesture(scope_moveRelocateClip) --&gt; &#916; := (12.2,-0.5)
    </p>
    <p>
      MOVE x=31.5 y=12.0
    </p>
    <p>
      Gesture(scope_moveRelocateClip) --&gt; &#916; := (13.1,-0.5)
    </p>
    <p>
      ...
    </p>
    <p>
      ...
    </p>
    <p>
      MOVE x=97.8 y=97.9
    </p>
    <p>
      Gesture(scope_moveRelocateClip) --&gt; &#916; := (79.4,85.4)
    </p>
    <p>
      MOVE x=97.8 y=98.7
    </p>
    <p>
      Gesture(scope_moveRelocateClip) --&gt; &#916; := (79.4,86.2)
    </p>
    <p>
      MOVE x=97.8 y=100.6
    </p>
    <p>
      Gesture(scope_moveRelocateClip) --&gt; &#916; := (79.4,88.1)
    </p>
    <p>
      MOVE x=97.8 y=102.6
    </p>
    <p>
      Gesture(scope_moveRelocateClip) --&gt; &#916; := (79.4,90.1)
    </p>
    <p>
      MOVE x=97.8 y=103.6
    </p>
    <p>
      Gesture(scope_moveRelocateClip) --&gt; &#916; := (79.4,91.1)
    </p>
    <p>
      MOVE x=98.6 y=104.4
    </p>
    <p>
      Gesture(scope_moveRelocateClip) --&gt; &#916; := (80.2,91.9)
    </p>
    <p>
      MOVE x=98.6 y=105.2
    </p>
    <p>
      Gesture(scope_moveRelocateClip) --&gt; &#916; := (80.2,92.7)
    </p>
    <p>
      MOVE x=98.6 y=106.2
    </p>
    <p>
      Gesture(scope_moveRelocateClip) --&gt; &#916; := (80.2,93.7)
    </p>
    <p>
      !!BANG!! Gesture-Cmd 'scope_moveRelocateClip'
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1664031608178" ID="ID_1388493107" MODIFIED="1664031621917" TEXT="aber Widgets arbeiten typischerweise mit Integer"/>
</node>
<node COLOR="#435e98" CREATED="1619697245422" ID="ID_1061197338" MODIFIED="1619804310109" TEXT="Forwarding &#xfc;ber mehrere Schritte">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <ul>
      <li>
        der clipHook() delegiert an seinen jeweiligen refHook_
      </li>
      <li>
        dieser wird bei der Konstruktion tats&#228;chlich jweils auf den Anchor-Hook des Parent-Hook gesetzt
      </li>
      <li>
        damit steht im refHook_ effektiv der top-level Canvas, und die jeweilige Blatt-Ebene f&#252;gt ihren Offset hinzu
      </li>
      <li>
        allerdings w&#252;rde nun zur &#220;bersetzung der Koordinaten der top-Level-Canvas nochmal an den Layout-Manager delegieren
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1619697735697" ID="ID_1610716398" MODIFIED="1619697746057" TEXT="effektiv 2-Schritt-Forwarding f&#xfc;r jeden Aufruf"/>
<node COLOR="#338800" CREATED="1619697793583" FOLDED="true" ID="ID_800939749" MODIFIED="1619804558065" TEXT="kann man (opaque) direkt aufrufen?">
<icon BUILTIN="button_ok"/>
<node CREATED="1619698100329" ID="ID_1983859376" MODIFIED="1619698109360" TEXT="ja: wenn es ein VTable-Slot ist">
<node CREATED="1619698280744" ID="ID_1197467052" MODIFIED="1619698299342" TEXT="dazu m&#xfc;&#xdf;te das Delegate ein Sub-Interface implementieren"/>
<node CREATED="1619698300242" ID="ID_498514293" MODIFIED="1619698315566" TEXT="und der Wrapper ebenfalls"/>
<node CREATED="1619698316317" ID="ID_629600190" MODIFIED="1619698329643" TEXT="dann kann der Wrapper seine Sub-Komponente vom Delegate initialisieren"/>
</node>
<node CREATED="1619697887065" ID="ID_1694064911" MODIFIED="1619788146033" TEXT="RelativeCanvasHook">
<icon BUILTIN="button_cancel"/>
<node CREATED="1619698448530" ID="ID_231932844" MODIFIED="1619698455469" TEXT="ist zu 100% ein Dekorator"/>
<node CREATED="1619698460320" ID="ID_1397414962" MODIFIED="1619698473284" TEXT="erbt zudem vom gleichen Interface wie sein Delegate"/>
<node CREATED="1619698474655" ID="ID_609667543" MODIFIED="1619698501783" TEXT="&#x27f9; klassishe linearisierte Vererbung"/>
<node CREATED="1619787501628" ID="ID_1894601265" MODIFIED="1619787526640" TEXT="trotzdem wird es stets zwei indirekte Aufrufe geben">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1619787529209" ID="ID_1165327118" MODIFIED="1619787547480" TEXT="kann man einen davon einsparen?">
<icon BUILTIN="stop-sign"/>
<node CREATED="1619787550612" ID="ID_1297192304" MODIFIED="1619787577240" TEXT="jaa man kannnn...">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1619787584274" FOLDED="true" ID="ID_1256984812" MODIFIED="1619788141013" TEXT="das wird aber durchaus komplex">
<linktarget COLOR="#9f5337" DESTINATION="ID_1256984812" ENDARROW="Default" ENDINCLINATION="-812;-59;" ID="Arrow_ID_1128030260" SOURCE="ID_263543815" STARTARROW="None" STARTINCLINATION="2097;137;"/>
<icon BUILTIN="flag-orange"/>
<node CREATED="1619787756234" ID="ID_566753329" MODIFIED="1619787782836" TEXT="das konkrete Body-Canvas-Widget m&#xfc;&#xdf;te umgeschrieben werden"/>
<node CREATED="1619787783758" ID="ID_955157823" MODIFIED="1619787838923" TEXT="die eigentliche Implementierung des CanvasHook m&#xfc;&#xdf;te per Mix-In realisiert werden"/>
<node CREATED="1619787839607" ID="ID_736108938" MODIFIED="1619787853365" TEXT="und zwar ein konkretes Implementieruns-Mix-in"/>
<node CREATED="1619787854247" ID="ID_1799143382" MODIFIED="1619787870551" TEXT="dieses bekommt einen konkreten GTK-Canvas als Referenz"/>
<node CREATED="1619787894264" ID="ID_982929479" MODIFIED="1619787918928" TEXT="und au&#xdf;erdem m&#xfc;&#xdf;te es bereits den Offset als Ctor-Parameter mitbekommen"/>
<node CREATED="1619787926203" ID="ID_166173193" MODIFIED="1619788009055" TEXT="und der Nutzer (DisplayFrame im TrackPresenter) m&#xfc;&#xdf;te dieses konkrete Objekt-API sehen"/>
<node CREATED="1619788024275" ID="ID_1728948599" MODIFIED="1619788043839" TEXT="allerdings k&#xf6;nnte man trotzdem die Impl. in einem separaten Translation-Unit &quot;verbergen&quot;"/>
<node CREATED="1619788065160" ID="ID_1004040494" MODIFIED="1619788100395" TEXT="Ergebnis: alle Aufrufe gehen direkt durch die VTable in dieses konkrete Canvas-Mixin"/>
</node>
<node CREATED="1619787626757" ID="ID_1522870458" MODIFIED="1619799442131" TEXT="und ist hier nicht gerechtfertigt">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      das Platzieren auf den Canvas ist <b>keine</b>&#160;high-Performance-Operation;<br />vielmehr ist es sogar <i>vernachl&#228;ssigbar im Vergleich </i>zum Aufwand der Zeichen-Operationen; und letztere werden eben genau aus Performance-Gr&#252;nden gebatcht und geb&#252;ndelt....
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#6775b4" DESTINATION="ID_1522870458" ENDARROW="Default" ENDINCLINATION="125;10;" ID="Arrow_ID_565826448" SOURCE="ID_1388699771" STARTARROW="None" STARTINCLINATION="290;14;"/>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1619698512378" ID="ID_333159714" MODIFIED="1619804302859" TEXT="Metrik-&#xdc;bersetzung">
<icon BUILTIN="forward"/>
<node CREATED="1619698551205" ID="ID_994295604" MODIFIED="1619698871778" TEXT="sieht nach einem isolierten Belang aus">
<arrowlink COLOR="#fef4ac" DESTINATION="ID_560285819" ENDARROW="Default" ENDINCLINATION="150;-12;" ID="Arrow_ID_514924311" STARTARROW="None" STARTINCLINATION="-370;27;"/>
</node>
<node CREATED="1619698570431" ID="ID_1571275788" MODIFIED="1619698582909" TEXT="wird durch den RelativeCanvasHook nur durchgereicht"/>
<node CREATED="1619698583671" ID="ID_1092960475" MODIFIED="1619698623962" TEXT="ein Sub-Interface w&#xfc;rde das Design versbessern">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1619799300329" ID="ID_170912303" MODIFIED="1619799331661" TEXT="direkt im Gesture-Controller nutzen">
<icon BUILTIN="idea"/>
<node CREATED="1619799349705" ID="ID_281542411" MODIFIED="1619799359972" TEXT="in diesem Fall dann nur noch eine Indirektion"/>
<node CREATED="1619799367600" ID="ID_1388699771" MODIFIED="1619799442130">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      im Gegensatz zum CanvasHook ist <i>das hier durchaus relevant</i>
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#6775b4" DESTINATION="ID_1522870458" ENDARROW="Default" ENDINCLINATION="125;10;" ID="Arrow_ID_565826448" STARTARROW="None" STARTINCLINATION="290;14;"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1619698607118" ID="ID_239118181" MODIFIED="1619804296540" TEXT="Umbau sehr w&#xfc;nschenswert">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1619104345461" ID="ID_414006920" MODIFIED="1620922860429" TEXT="Aufgabe: API">
<icon BUILTIN="button_ok"/>
<node CREATED="1619104353964" ID="ID_1748021574" MODIFIED="1619104378116" TEXT="vorhanden: translateTimeToPixels(TimeValue startTimePoint)"/>
<node CREATED="1619132261261" ID="ID_1989281789" MODIFIED="1619132284186" TEXT="erst mal nach Bedarf &#x2015; aber genau">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1619132344961" ID="ID_168747829" MODIFIED="1619132509806" TEXT="konkret hier...">
<node COLOR="#435e98" CREATED="1619132510942" ID="ID_1513485460" MODIFIED="1620922851937" TEXT="applyScreenDelta(TimeValue, deltaPx)"/>
<node COLOR="#435e98" CREATED="1619132513720" ID="ID_718240764" MODIFIED="1619132619351" TEXT="translateScreenDeltaToTime(deltaPx)"/>
</node>
<node COLOR="#338800" CREATED="1619698634099" ID="ID_1185723124" MODIFIED="1619804547408" TEXT="Sub-Interface einf&#xfc;hren">
<icon BUILTIN="button_ok"/>
<node CREATED="1619698644218" ID="ID_560285819" MODIFIED="1619698871778" TEXT="es ist ein komplett isolierter Belang">
<linktarget COLOR="#fef4ac" DESTINATION="ID_560285819" ENDARROW="Default" ENDINCLINATION="150;-12;" ID="Arrow_ID_514924311" SOURCE="ID_994295604" STARTARROW="None" STARTINCLINATION="-370;27;"/>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1619698681269" ID="ID_969574933" LINK="#ID_1202075896" MODIFIED="1666476922140">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Name: <b>DisplayMetric</b>
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1619698722008" FOLDED="true" ID="ID_755674225" MODIFIED="1619804539751" TEXT="wird (parametrisierbare) Komponente im LayoutManager">
<arrowlink COLOR="#fe576f" DESTINATION="ID_400013153" ENDARROW="Default" ENDINCLINATION="2062;0;" ID="Arrow_ID_920475961" STARTARROW="None" STARTINCLINATION="160;125;"/>
<icon BUILTIN="bell"/>
<node CREATED="1619804516182" ID="ID_303795305" MODIFIED="1619804534566" TEXT="vorl&#xe4;ufige Dummy-Implementierung">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#435e98" CREATED="1619804525392" ID="ID_1563089049" MODIFIED="1619804538286" TEXT="in timeline-layout.cpp, Zeile 123"/>
</node>
<node COLOR="#338800" CREATED="1619698793375" ID="ID_127168366" MODIFIED="1619804320757" TEXT="und Mix-In f&#xfc;r die CanvasHook-Hierarchie">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1619132645927" ID="ID_3614055" MODIFIED="1624023436030" TEXT="Umgang mit Zeit-Werten (immutable)">
<icon BUILTIN="messagebox_warning"/>
<node COLOR="#990000" CREATED="1620913903207" ID="ID_236784465" MODIFIED="1624023359388" TEXT="L&#xf6;sung time::Control (Mutator)">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      das time::Control lebt dann wohl im Observer, und dieser mu&#223; eine Schnittstelle haben, &#252;ber die das time::Control auf das eigentliche Zielfeld gesetzt wird...<br /><br />...das klingt alles gef&#228;hrlich indirekt...
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="stop-sign"/>
</node>
<node COLOR="#435e98" CREATED="1624023373631" ID="ID_145048922" MODIFIED="1624023427379" TEXT="besser TimeVar im Gui-Modell (=Widget) verwenden">
<arrowlink COLOR="#5488c6" DESTINATION="ID_504607651" ENDARROW="Default" ENDINCLINATION="471;-37;" ID="Arrow_ID_952881957" STARTARROW="None" STARTINCLINATION="311;17;"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1618753085285" ID="ID_560686142" MODIFIED="1618753216324" TEXT="noch keinerlei Infrastruktur f&#xfc;r die vertikale Anordnung">
<linktarget COLOR="#fdd8c6" DESTINATION="ID_560686142" ENDARROW="Default" ENDINCLINATION="-13;13;" ID="Arrow_ID_1300202813" SOURCE="ID_783305795" STARTARROW="None" STARTINCLINATION="150;10;"/>
<icon BUILTIN="hourglass"/>
<node CREATED="1618753226088" ID="ID_338199340" MODIFIED="1618753660191" TEXT="die notwendigen Daten k&#xf6;nnen aus dem TrackPofil abgeleitet werden"/>
<node CREATED="1618753661418" ID="ID_1032426032" MODIFIED="1618753679006" TEXT="der TrackBody hat eine startLine_"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1624113834120" ID="ID_783305795" MODIFIED="1624114136410">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Stand: funktioniert &#8213; ist aber <i>halbfertig</i>
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#fdd8c6" DESTINATION="ID_1895003083" ENDARROW="Default" ENDINCLINATION="-729;49;" ID="Arrow_ID_547396305" STARTARROW="None" STARTINCLINATION="218;15;"/>
<arrowlink COLOR="#fdd8c6" DESTINATION="ID_560686142" ENDARROW="Default" ENDINCLINATION="-13;13;" ID="Arrow_ID_1300202813" STARTARROW="None" STARTINCLINATION="150;10;"/>
<icon BUILTIN="bell"/>
</node>
</node>
<node COLOR="#338800" CREATED="1618672754370" ID="ID_1707555267" MODIFIED="1618678693304" TEXT="Deta ermitteln und speichern">
<icon BUILTIN="button_ok"/>
<node CREATED="1618677375507" ID="ID_1988208665" MODIFIED="1618677380678" TEXT="Frage: in welchem Typ">
<node CREATED="1618677381682" ID="ID_1297330759" MODIFIED="1618677391341" TEXT="GTK f&#xfc;hrt hier einen &quot;gdouble&quot; ein"/>
<node CREATED="1618677393499" ID="ID_1949606460" MODIFIED="1618677453343" TEXT="Grund ist Portabilit&#xe4;t">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <u>(gtypes.h)</u>: Provide type definitions for commonly used types.
    </p>
    <p>
      These are useful because a &quot;gint8&quot; can be adjusted &#160;to be 1 byte (8 bits) on all platforms. Similarly and more importantly, &quot;gint32&quot; can be adjusted to be&#160;4 bytes (32 bits) on all platforms.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1618677455637" ID="ID_1287724015" MODIFIED="1618678210573" TEXT="Beschlu&#xdf;: Pixel-Koordinaten bleiben in gdouble">
<arrowlink COLOR="#798bb0" DESTINATION="ID_389115801" ENDARROW="Default" ENDINCLINATION="1665;148;" ID="Arrow_ID_267819706" STARTARROW="None" STARTINCLINATION="2440;141;"/>
<icon BUILTIN="yes"/>
<node COLOR="#435e98" CREATED="1618680945551" FOLDED="true" HGAP="87" ID="ID_1888024059" MODIFIED="1618691004190" TEXT="Problem: erfordert GTK-Include" VSHIFT="10">
<edge COLOR="#ef844b"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1618680980802" ID="ID_1858177352" MODIFIED="1618680998860" TEXT="zumindest f&#xfc;r den CmdContext_test ist das ein Problem"/>
<node COLOR="#435e98" CREATED="1618690973298" ID="ID_37829159" MODIFIED="1618690986175" TEXT="daher: nicht auf das Subject-Interface">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1618690987320" ID="ID_1868741682" MODIFIED="1618690998458" TEXT="nur f&#xfc;r framework-nahen-Code">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
<node CREATED="1618678631049" ID="ID_416362140" MODIFIED="1618678643480" TEXT="Delta wird gar nicht gespeichert"/>
<node CREATED="1618678644600" ID="ID_246060471" MODIFIED="1618678652922" TEXT="Delta wird on-the-fly errechnet"/>
<node CREATED="1618678668124" ID="ID_284887160" MODIFIED="1618678688381" TEXT="Konsequenz: Scroll-Adjustment mu&#xdf; &quot;downstream&quot; erfolgen">
<icon BUILTIN="bell"/>
</node>
</node>
<node COLOR="#338800" CREATED="1618672778615" ID="ID_623020020" MODIFIED="1624113806456" TEXT="Position aktualisieren">
<icon BUILTIN="button_ok"/>
<node CREATED="1618681116488" ID="ID_1434451478" MODIFIED="1618681123602" TEXT="Daten an das Subject weitergeben"/>
<node COLOR="#435e98" CREATED="1618681157532" ID="ID_905364501" MODIFIED="1618690878227" TEXT="Gestenerkennungs-Logik funktioniert noch nicht">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      sehe nur die MOVE-Meldungen.<br />eigentlich sollte das Subject ebenfalls Meldungen ausspucken
    </p>
    <p>
      
    </p>
    <p>
      &#10233; mehrere Gr&#252;nde...<br />
    </p>
    <ul>
      <li>
        bekomme &#252;berhaupt kein motion_event, wenn kein Button gedr&#252;ckt ist. Liegt das daran, da&#223; ich ein Button-Widget zum Testen verwende??
      </li>
      <li>
        unabh&#228;ngig davon war die Logik auch sonst kaputt. Die Flag isInFormation_ wurde nicht gesetetzt
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="broken-line"/>
</node>
<node COLOR="#338800" CREATED="1618690884114" ID="ID_1184207694" MODIFIED="1618690935797" TEXT="Logik jetzt repariert und Hysterese eingebaut">
<arrowlink COLOR="#22d66c" DESTINATION="ID_1241205333" ENDARROW="Default" ENDINCLINATION="35;105;" ID="Arrow_ID_1887863096" STARTARROW="None" STARTINCLINATION="348;20;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1618691013997" ID="ID_429908834" MODIFIED="1620922873764" TEXT="Delta an das Subject weitergeben">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1619887175393" FOLDED="true" ID="ID_54981427" MODIFIED="1619887223546" TEXT="Problem: Aufwand f&#xfc;r Gesten-Verfolgung">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1619887230011" ID="ID_1178141750" MODIFIED="1619887552418" TEXT="Push von low-Level-Events erzeugt &#xdc;bersetzungsaufwand">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      typischerweise liefern die low-level-Events ger&#228;tespezifische Koordinaten ab, und deren &#220;bersetzung in die Modell/Dom&#228;nenwerte erfordert Hilfsmittel, die man sich mehrstufig beschaffen mu&#223;. Da aber die einzelnen Events unverbunden daherkommen, mu&#223; die Verarbeitung vereinzelt erfolgen. Und das hei&#223;t, man leistet diesen Einrichtungs-Aufwand f&#252;r jedes einzelne Event; dies geht zu Lasten der &#187;Reaktivit&#228;t&#171;
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1619887281662" ID="ID_843790040" MODIFIED="1619887627626" TEXT="Spezial-Konventionen bl&#xe4;hen das API auf">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...wenn man nun eine fest-vorbereitete L&#246;sung f&#252;r jeden Fall vorsieht, wird die Schnittstelle bereit, un&#252;bersichtlich und k&#246;nnte im Lauf der Zeit verwuchern. Zudem mu&#223; eine komplexe Konvention errichtet werden, wer wann f&#252;r wen welche Variante aufruft
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1619887333950" ID="ID_1150224022" MODIFIED="1619887725547" TEXT="ein &#xdc;bersetzungs-Funktor braucht Platz">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Daher erscheint ein Adapter sinnvoll, der jeweils f&#252;r eine einzelne Gesten-Instanz erzeugt wird. Dies erfordert jedoch Storage, welche ohne gro&#223;en Overhead bereitgestellt und effizient genutzt sein will
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#338800" CREATED="1619887730416" FOLDED="true" ID="ID_915000313" MODIFIED="1620913945733" TEXT="L&#xf6;sung: Subject zu einem Protokoll ausbauen">
<icon BUILTIN="idea"/>
<node COLOR="#338800" CREATED="1619887769934" ID="ID_15885968" MODIFIED="1620565933367" TEXT="Schnittstelle zum Verdrahten">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1619887785265" ID="ID_194430924" MODIFIED="1620913562059" TEXT="ein Adapter f&#xfc;r die Gesten-Instanz">
<icon BUILTIN="button_ok"/>
<node CREATED="1619887907477" ID="ID_580784250" MODIFIED="1619887914507" TEXT="wird vom Subject konkret bereitgestellt"/>
<node CREATED="1619887915592" ID="ID_1016019139" MODIFIED="1619887925546" TEXT="wird in der Storage des Gesten-Controllers abgelegt"/>
<node CREATED="1619887926542" ID="ID_234628540" MODIFIED="1619887933409" TEXT="lebt bis zum Ende der Geste"/>
</node>
<node COLOR="#990000" CREATED="1619888087712" ID="ID_279012098" MODIFIED="1619903390115" TEXT="Anforderung: Generische Implementierung mit konkretem Typ">
<icon BUILTIN="button_cancel"/>
<node CREATED="1619888991781" ID="ID_1808059433" MODIFIED="1619888994864" TEXT="warum?">
<node CREATED="1619888150728" ID="ID_1072043025" MODIFIED="1619888160161" TEXT="yet-another-indirection vermeiden"/>
<node CREATED="1619888165743" ID="ID_1820882158" MODIFIED="1619888172801" TEXT="Inlining erm&#xf6;glichen"/>
</node>
<node COLOR="#990000" CREATED="1619889004742" ID="ID_962466680" MODIFIED="1619903372110" TEXT="geht das &#xfc;berhaupt?">
<icon BUILTIN="stop-sign"/>
<node CREATED="1619893616079" ID="ID_1820351141" MODIFIED="1619894138543" TEXT="ehr nicht....">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...sobald irgendwo eine Abstraktionsbarriere errichtet wird, mu&#223; mindestens ein Call indirekt oder virtuell sein....
    </p>
    <ul>
      <li>
        die Abstraktion zwischen Widget und Canvas mu&#223; ich erhalten, weil die Timeline-Anzeige noch ziemlich komplex wird
      </li>
      <li>
        sofern der Gesten-Controller mit beliebigen Widgets umgehen soll, gibt es eine weitere Abstraktion
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="smily_bad"/>
</node>
<node CREATED="1619903180827" ID="ID_250477630" MODIFIED="1619903245581" TEXT="dar&#xfc;ber mu&#xdf; ich wohl (zun&#xe4;chst?) gro&#xdf;z&#xfc;gig hinwegsehen"/>
<node CREATED="1619903259743" ID="ID_872225515" MODIFIED="1619903353944" TEXT="zu Vieles ist noch nicht klar">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <ul>
      <li>
        im Bezug auf die Performance wei&#223; ich nicht, wo die Me&#223;latte liegt
      </li>
      <li>
        die tats&#228;chlich ben&#246;tigte Abstraktion kann sich noch als ganz anders herausstellen
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1619967216789" ID="ID_1503155358" MODIFIED="1620913547263" TEXT="aber an der Idee mit dem Adapter halte ich fest...">
<icon BUILTIN="button_ok"/>
<node CREATED="1619967266842" ID="ID_1478677945" MODIFIED="1619967373917">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...die konkrete Interpretation der Mausbewegung
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1619967375039" ID="ID_1955578195" MODIFIED="1619967379379" TEXT="...aus dem Gesten-Controller herauszuhalten"/>
<node CREATED="1619967252543" ID="ID_630081269" MODIFIED="1619967547078" TEXT="ich sehe keinen anderen Weg....">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...sonst w&#252;rde entweder das Subject selber ad hoc etwas bereitstellen m&#252;ssen und daf&#252;r zus&#228;tzliche Storage brauchen (<b>Hebel</b>, es gibt sehr viele Subjekte!), oder das Interface &quot;Subject&quot; w&#252;rde l&#246;chrig und zu einer Kodifizierung von Einzelf&#228;llen. Die L&#246;sung mit dem Adapter stattdessen f&#228;llt unter das Prinzip <i>Inversion of Control</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1619972768498" ID="ID_1614732760" MODIFIED="1620419721948" TEXT="das bedeutet: opaque buffer verwenden">
<icon BUILTIN="yes"/>
<node CREATED="1619972787360" FOLDED="true" ID="ID_82004044" MODIFIED="1620419687276" TEXT="PlantingHandle">
<icon BUILTIN="idea"/>
<node COLOR="#338800" CREATED="1619972797494" ID="ID_1468885512" MODIFIED="1619972821488" TEXT="nebenbei: Operation &quot;create&quot; &#x2192; &quot;emplace&quot;">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1619976082135" ID="ID_416166359" MODIFIED="1619976677236" TEXT="Variante f&#xfc;r placement-new einbauen">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1619976099788" ID="ID_1451882006" MODIFIED="1620419375147" TEXT="Problem: DEFAULT-Typ und SIZE-Parameter in das Handle einbetten">
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#435e98" CREATED="1619976624404" ID="ID_1394264630" MODIFIED="1619976674356" TEXT="DEFAULT-Typ kann als Typ-Parameter weiteregeben werden">
<icon BUILTIN="idea"/>
<node CREATED="1619976641856" ID="ID_960415515" MODIFIED="1619976671474" TEXT="dann wird eben auch der Typ vom Handle komplexer">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1619976655262" ID="ID_411012847" MODIFIED="1619976666398" TEXT="daf&#xfc;r in InPlaceBuffer einen Typ-Konstruktor anbieten">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1619976688954" ID="ID_1451984496" MODIFIED="1620406002701" TEXT="nochmal &#xfc;ber den Size-Parameter nachdenken...">
<icon BUILTIN="button_ok"/>
<node COLOR="#990000" CREATED="1619976702067" ID="ID_1433875229" MODIFIED="1620406026837" TEXT="kann man den dann auch zur Compile-Zeit weitergeben?">
<icon BUILTIN="button_cancel"/>
<node CREATED="1620406047028" ID="ID_433743632" MODIFIED="1620406164545" TEXT="definitiv nicht, denn dann wird der Client-Code daf&#xfc;r zust&#xe4;ndig">
<icon BUILTIN="idea"/>
<node CREATED="1620406133809" ID="ID_370253197" MODIFIED="1620406152098" TEXT="InPlaceBuffer == Implementierung"/>
<node CREATED="1620406153388" ID="ID_664190536" MODIFIED="1620406159849" TEXT="PlantingHandle == Schnittstelle"/>
</node>
<node CREATED="1620406074960" ID="ID_1455403417" MODIFIED="1620406114628">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      wenn wir trotzdem einen Overrun-Check haben wollen,
    </p>
    <p>
      kommen wir an einem zur Laufzeit verf&#252;gbaren Wert nicht vorbei
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1620406031439" ID="ID_481915593" MODIFIED="1620406248233" TEXT="das hatte ich mir fr&#xfc;her schon mal &#xfc;berlegt....">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...jetzt nach einigem &#220;berlegen d&#228;mmert mir die Erinnerung...
    </p>
  </body>
</html></richcontent>
<node CREATED="1620406188961" ID="ID_1221022666" MODIFIED="1620406231393" TEXT="man kann ihn nicht einmal constexpr machen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...auch daran kann ich mich jetzt wieder erinnern...<br />Dann w&#228;re n&#228;mlich das Handle nicht mehr kopierbar
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1619976718142" ID="ID_210847961" MODIFIED="1620406270405" TEXT="wie sieht&apos;s mit Assignments aus?">
<icon BUILTIN="help"/>
<node CREATED="1620406271998" ID="ID_870285433" MODIFIED="1620406308773" TEXT="f&#xfc;r das Handle: m&#xf6;glich und explizit erw&#xfc;nscht">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1620406283493" ID="ID_302408091" MODIFIED="1620406290904" TEXT="nun sogar im Test mit abgedeckt">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1620406315000" ID="ID_492931720" MODIFIED="1620419379057" TEXT="Test erweitern">
<icon BUILTIN="button_ok"/>
<node CREATED="1620406319933" ID="ID_710376106" MODIFIED="1620406337957" TEXT="emplace hat so seine T&#xfc;cken">
<icon BUILTIN="broken-line"/>
</node>
<node CREATED="1620406339380" ID="ID_154149353" MODIFIED="1620409041229" TEXT="wieder das Problem mit perfect-forwarding + Varargs + ctor-Overload">
<arrowlink COLOR="#9a74a0" DESTINATION="ID_1554664514" ENDARROW="Default" ENDINCLINATION="1930;405;" ID="Arrow_ID_1066770776" STARTARROW="None" STARTINCLINATION="-6776;285;"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1620409042922" ID="ID_1128192662" MODIFIED="1620409049869" TEXT="nein... oder vielleicht..."/>
<node CREATED="1620409051737" ID="ID_889061911" MODIFIED="1620409075166" TEXT="das Problem sind implizit definierte Konstruktoren in der Vererbuns-Hierarchie"/>
<node CREATED="1620409076118" ID="ID_1437249592" MODIFIED="1620409089599" TEXT="sobald ich alle Move-Konstruktoren explizit definiere, funktionieren alle F&#xe4;lle"/>
<node CREATED="1620409290592" ID="ID_1921177921" MODIFIED="1620409322983" TEXT="gabs da nicht eine Regel, da&#xdf; explizit definierte dtor einen impliziten move-ctor unterdr&#xfc;ckt">
<icon BUILTIN="idea"/>
<icon BUILTIN="help"/>
</node>
<node CREATED="1620419440753" ID="ID_88675651" LINK="https://lumiera.org/documentation/technical/code/c++11.html" MODIFIED="1620419505615" TEXT="dokumentiert...."/>
</node>
<node COLOR="#338800" CREATED="1620406576782" ID="ID_791550280" MODIFIED="1620419382240" TEXT="also doch besser eine dedizierte emplace()-Funktion auch auf dem InPlaceBuffer">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1620419383512" ID="ID_30151801" MODIFIED="1620419404721" TEXT="Genzf&#xe4;lle +  Handle-Kopie">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1620419779271" ID="ID_64726693" MODIFIED="1620565782987" TEXT="brauche Fallback-Adapter">
<icon BUILTIN="button_ok"/>
<node CREATED="1620419793888" ID="ID_1040008985" MODIFIED="1620419938844" TEXT="Einschr&#xe4;nkung von InPlaceBuffer / PlantingHandle">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      diese verwalten nicht aktiv den Typ und Zustand im Buffer.
    </p>
    <p>
      Daher mu&#223; stets ein Objekt im Buffer (default)-konstruiert sein; ein reines (abstraktes) Interface gen&#252;gt nicht. An dieser Stelle bietet sich ein &quot;NULL-Ojbekt&quot; an
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#338800" CREATED="1620419964630" ID="ID_1402318337" MODIFIED="1620565784596" TEXT="dieser bewirkt, da&#xdf; keine Geste erkannt werden kann">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1620565871398" ID="ID_574697565" MODIFIED="1620565887201">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Name: <b>GestureObserver</b>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1620419708341" ID="ID_53797308" MODIFIED="1620565786800" TEXT="Subject-API erweitern">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1620565789665" ID="ID_515994897" MODIFIED="1620913405382" TEXT="Implementierung schwenken">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1620913417225" ID="ID_1322371180" MODIFIED="1620913542016" TEXT="cmd-ID kann in den Observer verlegt werden">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1620913426512" ID="ID_1802612620" MODIFIED="1620913444069" TEXT="Pointer auf das Subject k&#xf6;nne eigentlich auch dorthin">
<icon BUILTIN="button_cancel"/>
<node CREATED="1620913445509" ID="ID_1831141576" MODIFIED="1620913451984" TEXT="bringt aber nix"/>
<node CREATED="1620913452692" ID="ID_339655971" MODIFIED="1620913529933" TEXT="und au&#xdf;erdem benutze ich den Pointer auch als Flag">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...und das ist eleganter, als jede der denkbaren Alternativen
    </p>
    <ul>
      <li>
        stattdessen eine virtuelle Funktion f&#252;r diesen State verwenden<br />
      </li>
      <li>
        stattdessen einen &quot;magischen wert&quot; in den Anker-Koordinaten speichern
      </li>
      <li>
        <br />
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1618691023427" ID="ID_1396949384" MODIFIED="1620922896886" TEXT="im Subject in Modell-Koordinaten transformieren">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      funktioniert... Zeit-Werte werden an der Konsole ausgegeben
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1618691042073" ID="ID_1909659922" MODIFIED="1621013334123" TEXT="tats&#xe4;chlich im Canvas verschieben">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1621010969579" ID="ID_226757951" MODIFIED="1621011049406" TEXT="Frage: wann wird der Wert im GUI-Model ge&#xe4;ndert?">
<icon BUILTIN="help"/>
<node CREATED="1621011000382" ID="ID_1931186164" MODIFIED="1621011011561" TEXT="konkret: GUI-Model == Daten im Clip-Widget"/>
<node CREATED="1621011012379" ID="ID_456544957" MODIFIED="1621011043485" TEXT="Variante-1: erst beim Bang!">
<icon BUILTIN="button_cancel"/>
<node CREATED="1621011155018" ID="ID_1965916269" MODIFIED="1621011188855" TEXT="Vorteil: Abbruch der Geste w&#xe4;re einfach">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      nein.... nicht wirklich, weil man ja doch noch die Position korrigieren mu&#223;
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_cancel"/>
</node>
</node>
<node CREATED="1621011025347" ID="ID_833583889" MODIFIED="1621011040553" TEXT="Variante-2: inkrementell">
<icon BUILTIN="forward"/>
<node CREATED="1621011125061" ID="ID_1728131930" MODIFIED="1621011137840" TEXT="Vorteil: GUI-Position und interne Daten konsistent"/>
<node CREATED="1621011138669" ID="ID_1744077157" MODIFIED="1621011148646" TEXT="Vorteil: verwende nur eine updatePosition()"/>
</node>
</node>
<node CREATED="1621011053631" ID="ID_336933112" MODIFIED="1621011076192" TEXT="ClipData speichert bereits in zwei TimeVar">
<icon BUILTIN="idea"/>
<node CREATED="1621011078108" ID="ID_1533766777" MODIFIED="1621011080673" TEXT="macht Sinn"/>
<node CREATED="1621011195716" ID="ID_504607651" MODIFIED="1621011206066" TEXT="hier brauchen wir kein time::Control">
<linktarget COLOR="#5488c6" DESTINATION="ID_504607651" ENDARROW="Default" ENDINCLINATION="471;-37;" ID="Arrow_ID_952881957" SOURCE="ID_145048922" STARTARROW="None" STARTINCLINATION="311;17;"/>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1621011209299" ID="ID_26838929" MODIFIED="1621011219916" TEXT="Quantisierung passiert bereits im Session-Modell"/>
</node>
<node COLOR="#338800" CREATED="1621011086402" ID="ID_1715852739" MODIFIED="1621013328247" TEXT="dann m&#xfc;ssen diese aber auch auf das ClipWidget-Interface">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      letztlich kein Problem.
    </p>
    <p>
      Das ClipWidget-Interface ist nur f&#252;r den Clip-Presenter gedacht, um von der konkreten GUI-Repr&#228;sentation (abdriged, extended) zu abstrahieren
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1621011225712" ID="ID_1506268791" MODIFIED="1621013320534" TEXT="getStart f&#xe4;llt daf&#xfc;r weg">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1621011235478" ID="ID_1478696622" MODIFIED="1621013319072" TEXT="und changeTimings ebenfalls">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1621013307550" ID="ID_1002878072" MODIFIED="1621013317717" TEXT="Accessor hei&#xdf;en jetzt access*">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1621013334938" ID="ID_492704684" MODIFIED="1621097715872" TEXT="Metrik korrekt &#xfc;bersetzen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1621013341929" ID="ID_417943116" MODIFIED="1621097397187" TEXT="Clip ist nicht an der Maus-Position">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1621013385355" ID="ID_1141346152" MODIFIED="1621097399578" TEXT="sondern etwa nur das halbe Delta">
<icon BUILTIN="broken-line"/>
</node>
<node COLOR="#435e98" CREATED="1621013395618" ID="ID_671218820" MODIFIED="1621097408033" TEXT="dh. Canvas-Pixel &#x2260; GDK-Pixel">
<arrowlink COLOR="#de5c6e" DESTINATION="ID_1862152665" ENDARROW="Default" ENDINCLINATION="139;212;" ID="Arrow_ID_1129738995" STARTARROW="None" STARTINCLINATION="686;61;"/>
<icon BUILTIN="messagebox_warning"/>
<node COLOR="#5e4398" CREATED="1621097410434" HGAP="30" ID="ID_222549022" MODIFIED="1621097540645" TEXT="nein: es ist exakt" VSHIFT="-6">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      sobald man globale Screen-Koordinaten f&#252;r die Delta-Berechnung verwendet; der Button <i>klebt jetzt exakt </i>an der Stelle, an der zuerst geklickt wurde
    </p>
  </body>
</html></richcontent>
<edge COLOR="#c0709e"/>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="ksmiletris"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1621013349165" ID="ID_1048588084" MODIFIED="1621097392781">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Clip <i>zappelt</i>&#160;&#8213; warum?
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
<node CREATED="1621021141659" ID="ID_1023253092" MODIFIED="1621021229959" TEXT="Vermutung: weil GDK die Maus-Koordinaten relativ zum GDK-window liefert">
<icon BUILTIN="idea"/>
<node CREATED="1621021182357" ID="ID_22597166" MODIFIED="1621021189124" TEXT="und das Window verschieben wir ja nun"/>
<node CREATED="1621021241365" ID="ID_426282812" MODIFIED="1621021322131" TEXT="Beobachtung: erst wenn wir verschieben, springen die Koordinaten alternierend">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...bevor die Trigger-Schwelle erreicht ist, wachsen sie sch&#246;n monoton<br />...auch ist das Springen exakt alternierend, ein Schritt vor, ein Schritt zur&#252;ck
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#990000" CREATED="1621095826074" ID="ID_68931867" MODIFIED="1621097299895" TEXT="Aufgabe: den Anker-Punkt korrigieren">
<icon BUILTIN="button_cancel"/>
<node CREATED="1621095839443" ID="ID_995526022" MODIFIED="1621095889081" TEXT="Begr&#xfc;ndung: das Delta sollte im Gesten-Controller bereinigt werden">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      aber das von GDK gelieferte Delta h&#228;ngt eben vom GDK-Window des widgets ab
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1621096361136" ID="ID_1786120643" MODIFIED="1621096366693" TEXT="Gdk::Window::get_root_origin">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1621096851542" ID="ID_1348295641" MODIFIED="1621096876772" TEXT="Ha! das _GdkEventMotion liefert das GDK-Window mit">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1621096924735" ID="ID_1758702106" MODIFIED="1621096946994" TEXT="Ha&#xb2; !! sogar die absoluten Koordinaten werden geliefert">
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#338800" CREATED="1621097276187" ID="ID_728413168" MODIFIED="1621097289156" TEXT="also stattdessen gleich die absoluten Koordinaten verwenden und gut is">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1621013468896" ID="ID_129803095" MODIFIED="1621097712197" TEXT="pr&#xfc;fen: Anzeigegrenzen?">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1621097549712" ID="ID_428075392" MODIFIED="1621097591467" TEXT="nach Umstellung auf Root-Koordinaten: Dragging st&#xf6;&#xdf;t einfach an den Fensterr&#xe4;ndern an"/>
<node COLOR="#435e98" CREATED="1621097633428" ID="ID_1248069599" MODIFIED="1621097643755" TEXT="let&apos;s keep it that way!">
<icon BUILTIN="yes"/>
<node CREATED="1621097661601" ID="ID_1771351130" MODIFIED="1621097708271">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      der Gesten-Controller sollte hier nicht mitmischen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="stop-sign"/>
</node>
<node CREATED="1621097664561" ID="ID_1891416270" MODIFIED="1621097705220" TEXT="das Subject k&#xf6;nnte eine Beschr&#xe4;nkung durchsetzen">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1621097686285" ID="ID_1677326508" MODIFIED="1621097701987" TEXT="aber besser, das wird in der Session gehandhabt">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1621096649593" ID="ID_316242168" MODIFIED="1621096653418" TEXT="Erg&#xe4;nzungen">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1621096654578" FOLDED="true" ID="ID_95750773" MODIFIED="1666368478091" TEXT="geht das mit allen Maus-Buttons?">
<icon BUILTIN="help"/>
<node CREATED="1621096664860" ID="ID_957867261" MODIFIED="1624106696252" TEXT="verwende einen GTK::Button">
<icon BUILTIN="button_cancel"/>
<node CREATED="1621096673590" ID="ID_30538599" MODIFIED="1624106725084" TEXT="damit geht es nur im Moment mit Mittel-/Links-Button">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1621096684820" ID="ID_1886922228" LINK="https://stackoverflow.com/a/50127393" MODIFIED="1621096704345" TEXT="Hinweis auf Stackoverflow">
<node CREATED="1621096710666" ID="ID_482262631" MODIFIED="1621096715535" TEXT="demnach brauchen wir auch noch ButtonPressMask"/>
<node CREATED="1624106133858" ID="ID_576015548" MODIFIED="1624106184939" TEXT="pa&#xdf;t nicht wirklich &#x2015; wir m&#xfc;ssen gar keine Events mer Mask freischalten">
<node CREATED="1624106186082" ID="ID_1560334421" MODIFIED="1624106199075" TEXT="GTKmm macht diese low-level-Verdrahtung"/>
<node CREATED="1624106199862" ID="ID_737437905" MODIFIED="1624106225480" TEXT="und zwar bereits korrekt, denn wir bekommen die motion_notify-Events"/>
</node>
</node>
<node CREATED="1624106236054" ID="ID_859963027" MODIFIED="1624106261516" TEXT="ich glaube ehr, es liegt an dem Button, der bereits die linke Taste &quot;greift&quot;"/>
</node>
<node COLOR="#338800" CREATED="1624106269815" ID="ID_474563596" MODIFIED="1666368403135" TEXT="stattdessen k&#xf6;nnte man schon mal das ElementBoxWidget anlegen">
<arrowlink COLOR="#2082a9" DESTINATION="ID_485594461" ENDARROW="Default" ENDINCLINATION="872;71;" ID="Arrow_ID_1204090343" STARTARROW="None" STARTINCLINATION="2306;92;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1666368351190" ID="ID_231206120" MODIFIED="1666368387117" TEXT="ElementBoxWidget erbt von Gtk::EventBox &#x27f9; Events funktionieren nun wie erwartet">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1621097334389" ID="ID_37937061" MODIFIED="1624113776851" TEXT="k&#xe4;ren: woher kommt die blaue Linie im Canvas, die mit Clip-2 mitwandert?">
<icon BUILTIN="button_ok"/>
<node CREATED="1624112312302" ID="ID_527659472" MODIFIED="1624112345913" TEXT="Genese unklar"/>
<node CREATED="1624112346753" ID="ID_1577761232" MODIFIED="1624112350129" TEXT="Beobachtungen">
<node CREATED="1624112351401" ID="ID_1554867729" MODIFIED="1624112475687" TEXT="h&#xe4;ngt ab vom Test-zeichen-Code in TimelineCanvas::drawOverlays(cox)">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...dieser zeichnet die Kreise mit Ausdehnung der Allocation, und auch genau mit dieser Farbe und Linienbreite
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1624112476928" ID="ID_10007256" MODIFIED="1624112497845" TEXT="aber allem Anschein nach handelt es sich um eine Linie, nicht um einen Kreisbogen (arc)"/>
<node CREATED="1624112504484" ID="ID_585066990" MODIFIED="1624112524179" TEXT="deaktivieren der anderen Test-zeichen-Funktion (Grounding) beweirkt nichts"/>
<node CREATED="1624112533168" ID="ID_1573289000" MODIFIED="1624113075023" TEXT="der berechnete Radius ist stets konsistent und variiert nicht, wenn man den Clip verschiebt">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ein cout in genau diesem Testcode gibt stets nur alternierend den Allocation-Wert f&#252;r den Ruler-Canvas (konstant 5px) und dann den Main-Canvas (variiert mit Fensterh&#246;he) aus
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1624112560412" ID="ID_38361266" MODIFIED="1624112583301" TEXT="die Linie geht vom Ende des Kreises zum Anfang des Textes des zuletzt hinzugef&#xfc;gten Clip"/>
<node CREATED="1624113091220" ID="ID_522586131" MODIFIED="1624113111062" TEXT="die Linie wird nicht gezeichnet, wenn die arc(..)-Funktion nicht aufgerufen wird"/>
<node CREATED="1624113113393" ID="ID_666334880" MODIFIED="1624113134403" TEXT="Auskommentieren aller anderen Zeichenfunktionen in der Codebasis &#xe4;ndert nichts"/>
</node>
<node COLOR="#435e98" CREATED="1624113136798" ID="ID_705175220" MODIFIED="1624113773596" TEXT="&#x27f9; Schlu&#xdf;folgerung">
<arrowlink COLOR="#6980d1" DESTINATION="ID_727104900" ENDARROW="Default" ENDINCLINATION="-1870;290;" ID="Arrow_ID_1515795020" STARTARROW="None" STARTINCLINATION="-2646;354;"/>
<node CREATED="1624113167761" ID="ID_1626319182" MODIFIED="1624113229429" TEXT="Cairo zeichnet eine Linienfolge"/>
<node CREATED="1624113230924" ID="ID_391833497" MODIFIED="1624113256653">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      jede Zeichen-Primitive zeichnet von der <i>aktuellen Position</i>&#160;weg
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1624113257517" ID="ID_70759730" MODIFIED="1624113272119" TEXT="diese mu&#xdf; man mit move_to explizit setzen"/>
<node CREATED="1624113272939" ID="ID_318150010" MODIFIED="1624113302609">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      sonst <b>verschleppt</b>&#160;man eine <b>zuf&#228;llig</b>&#160;vorher gegebene Position
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1616684916746" ID="ID_571239713" MODIFIED="1616684947088">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      2.Schritt: <i>rektifizieren</i>
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#478ab0" DESTINATION="ID_571239713" ENDARROW="Default" ENDINCLINATION="-346;39;" ID="Arrow_ID_265967702" SOURCE="ID_895795423" STARTARROW="None" STARTINCLINATION="99;8;"/>
<icon BUILTIN="hourglass"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1618573848753" ID="ID_1175000803" MODIFIED="1618575118786" TEXT="Re-Design als State-Machine">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1618573871374" ID="ID_716003171" MODIFIED="1618574116896" TEXT="Ziel: Entwicklungspfad zur vollst&#xe4;ndigen L&#xf6;sung">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Die Gesten-Controller sollen sp&#228;ter einmal Teile eines umfangreicheren Frameworks werden; im Besonderen wollen wir abstrahierte Gesten, die verschiedene Eingabesysteme &#252;bergreifen k&#246;nnen. F&#252;r dieses Ziel mu&#223; der konkrete Gesten-Controller soweit schematisiert sein, da&#223; man im Zuge der weiteren Entwicklung sich ergebende Erweiterungspunkte einf&#252;hren kann, auch in schon bestehende Implementierungen. Als naheliegendes Schema bietet sich die State-Machine an, da die Gesten-Erkennung auf theoretischer Ebene ohnehin ein (ggfs nichdeterministischer) FSA ist.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
<node CREATED="1618574127123" ID="ID_1684392869" MODIFIED="1618574459686" TEXT="hierarchische Gesten">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <ul>
      <li>
        Multi-Touch<br />
      </li>
      <li>
        Zusammensetzen einer komplexen Geste aus bereits implementierten Elementar-Gesten<br />
      </li>
      <li>
        Einbinden eines bestehenden Gesten-Controller-Systems (z.B. in GTK) per Adapter
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node CREATED="1618574134031" ID="ID_448471388" MODIFIED="1618574349745" TEXT="konkurrierende Gesten erkennen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      einfachers Dragging mit der Maus? oder kommt zum Abschlu&#223; eine spezielle Taste? oder eine spezielle Mausgeste?
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1618574145104" ID="ID_1569426176" MODIFIED="1618574244273" TEXT="Gesten &#xfc;ber mehrere Eingabesysteme hinweg">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <ul>
      <li>
        Linke Hand: Hardware-Controller; Rechte Hand: Maus
      </li>
      <li>
        Modus per Tastenkombination ausgel&#246;st; Geste dann per Maus oder Stift abgeschlossen
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1618575194230" ID="ID_144431144" MODIFIED="1618575227970" TEXT="Planung: State-Machine f&#xfc;r Gesten">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1617919674980" ID="ID_1535616039" MODIFIED="1620913818152" TEXT="TODO: spezielle Buttons und Modifier konfigurierbar machen">
<linktarget COLOR="#eb4353" DESTINATION="ID_1535616039" ENDARROW="Default" ENDINCLINATION="-48;51;" ID="Arrow_ID_695007412" SOURCE="ID_914526002" STARTARROW="None" STARTINCLINATION="275;0;"/>
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1618499388465" ID="ID_540657197" MODIFIED="1618499424481" TEXT="Problem: wie kann man dies einkapseln?">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      es ist total an das Framework gebunden
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1620913676837" ID="ID_1104135051" MODIFIED="1620913687082" TEXT="Weiterungen(ungel&#xf6;st)">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1617569687944" ID="ID_914526002" MODIFIED="1620913823880" TEXT="Modifier sollten konfigurierbar sein">
<arrowlink COLOR="#eb4353" DESTINATION="ID_1535616039" ENDARROW="Default" ENDINCLINATION="-48;51;" ID="Arrow_ID_695007412" STARTARROW="None" STARTINCLINATION="275;0;"/>
<linktarget COLOR="#d54526" DESTINATION="ID_914526002" ENDARROW="Default" ENDINCLINATION="-19;-306;" ID="Arrow_ID_1156051405" SOURCE="ID_109351275" STARTARROW="None" STARTINCLINATION="-130;185;"/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1617569722132" ID="ID_1004932792" MODIFIED="1617569729653" TEXT="Einschr&#xe4;nkung der Maustaste"/>
<node CREATED="1617569730283" ID="ID_1098298417" MODIFIED="1617569798116" TEXT="Modifier-Key auf der Tastatur"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1617569873288" ID="ID_32172316" MODIFIED="1617569973233" TEXT="Modus durch Tastenfolge aktiviert">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Beispiel: das &quot;grab&quot; von Blender ist ein praktisches Konzept. Dort kann man ein Element &#252;berhaupt nur bewegen, wenn man vorher die &quot;g&quot;-Taste gedr&#252;ckt hatte. So etwas will ich in Lumiera auch haben... ist aber nicht so ganz einfach
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="bell"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1617570608516" ID="ID_1536648683" MODIFIED="1617570619960" TEXT="Vorsicht: das ist ein Riesen-Thema">
<icon BUILTIN="clanbomber"/>
</node>
<node CREATED="1617570633938" ID="ID_1636227122" MODIFIED="1617570654929" TEXT="Stichwort: globale und konsistente Tastenk&#xfc;rzel">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1618499304789" ID="ID_636470529" MODIFIED="1618499325642" TEXT="das sollte besser durch Komposition gel&#xf6;st werden">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Hierarchische Gesten-Controller
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="stop-sign"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1624114196431" ID="ID_400013153" MODIFIED="1679359046667" TEXT="brauche DisplayMetric im Layout-Manager">
<arrowlink COLOR="#9f3f5e" DESTINATION="ID_489715422" ENDARROW="Default" ENDINCLINATION="-2561;184;" ID="Arrow_ID_597075385" STARTARROW="None" STARTINCLINATION="-1907;-124;"/>
<linktarget COLOR="#fe576f" DESTINATION="ID_400013153" ENDARROW="Default" ENDINCLINATION="2435;0;" ID="Arrow_ID_858529243" SOURCE="ID_1895003083" STARTARROW="None" STARTINCLINATION="240;261;"/>
<linktarget COLOR="#fe576f" DESTINATION="ID_400013153" ENDARROW="Default" ENDINCLINATION="2062;0;" ID="Arrow_ID_920475961" SOURCE="ID_755674225" STARTARROW="None" STARTINCLINATION="160;125;"/>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1679359094871" ID="ID_895795423" MODIFIED="1679359187122">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <u>Stand</u>: Konzeptstudie erfolgreich
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Sollte als N&#228;chstes vers&#228;ubert und verallgemeinert werden!
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#478ab0" DESTINATION="ID_571239713" ENDARROW="Default" ENDINCLINATION="-346;39;" ID="Arrow_ID_265967702" STARTARROW="None" STARTINCLINATION="99;8;"/>
<icon BUILTIN="forward"/>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1661695805867" ID="ID_1948510442" MODIFIED="1661695811742" TEXT="klassische Aktionen">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1661695813570" ID="ID_847601277" MODIFIED="1661696199675" TEXT="Pop-up-Men&#xfc;">
<linktarget COLOR="#b75976" DESTINATION="ID_847601277" ENDARROW="Default" ENDINCLINATION="599;-2197;" ID="Arrow_ID_579055023" SOURCE="ID_1764427475" STARTARROW="None" STARTINCLINATION="945;81;"/>
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1661696222283" ID="ID_1568591637" MODIFIED="1661696237648" TEXT="&#xfc;bergreifendes Thema: Konzept fehlt">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1661696243936" ID="ID_323696283" MODIFIED="1661696248139" TEXT="Anforderungen">
<node CREATED="1661696249705" ID="ID_504989161" MODIFIED="1661696270808" TEXT="wird ausgel&#xf6;st &#xfc;ber lokales Widget-Binding"/>
<node CREATED="1661696271684" ID="ID_1004582513" MODIFIED="1661696338493" TEXT="k&#xf6;nnte auch durch ein generisches Fallback-Binding ausgel&#xf6;st werden">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ich meine rechts-Klick; typischerweise implementiert man den Handler daf&#252;r auf einem Canvas; aber dann ist das Problem: wie findet der Handler das konkrete Widget, und von diesem den Kontext f&#252;r das pop-Up?
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1661696344091" ID="ID_1244762978" MODIFIED="1661696359080" TEXT="mu&#xdf; aber spezifisch passend f&#xfc;r jedes Element best&#xfc;ckt werden"/>
<node CREATED="1661696374631" ID="ID_94228587" MODIFIED="1661696389416" TEXT="aber ein Teil ist generisch &#x27f9; wir brauchen Schablonen"/>
<node CREATED="1661696398507" ID="ID_912582971" MODIFIED="1661696544568" TEXT="in das Action-Binding mu&#xdf; die jeweilige Element-ID injiziert werden">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      genauer, das Action-Binding sendet eine Nachricht in den UI-Bus, aber diese mu&#223; an das korrespondierende Modell-Element addressiert werden; zwar gibt es unten im Steam-Layer einen gemeinsamen Command-Handler, und f&#252;r jeden Command-Typ ist ein Skript hinterlegt &#8212; welches jedoch dann eine Element-ID als Parameter bekommen mu&#223; (oder besser sogar schon eine direkte Dependency-Injection?)
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node CREATED="1661695822737" ID="ID_1370769282" MODIFIED="1661695834347" TEXT="Toolbar-Buttons"/>
<node CREATED="1661695835007" ID="ID_1327781873" MODIFIED="1661695841666" TEXT="Manipulation per Property-Box"/>
</node>
</node>
<node CREATED="1488423514355" ID="ID_917891687" MODIFIED="1557498707233" TEXT="Steuerelemente">
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1541858529489" FOLDED="true" ID="ID_838803024" MODIFIED="1664058686704" TEXT="ZoomWindow">
<linktarget COLOR="#5b5ca1" DESTINATION="ID_838803024" ENDARROW="Default" ENDINCLINATION="-519;-1168;" ID="Arrow_ID_1674512697" SOURCE="ID_1949450244" STARTARROW="None" STARTINCLINATION="518;31;"/>
<linktarget COLOR="#5b5ca1" DESTINATION="ID_838803024" ENDARROW="Default" ENDINCLINATION="-599;-1344;" ID="Arrow_ID_842684168" SOURCE="ID_1828075998" STARTARROW="None" STARTINCLINATION="426;56;"/>
<linktarget COLOR="#8e7ba1" DESTINATION="ID_838803024" ENDARROW="Default" ENDINCLINATION="171;760;" ID="Arrow_ID_1707924491" SOURCE="ID_1065721692" STARTARROW="None" STARTINCLINATION="-1855;126;"/>
<font NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="hourglass"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1541858541550" ID="ID_1912142591" MODIFIED="1557498707233" TEXT="generische Abstraktionskomponente">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node CREATED="1541858585095" FOLDED="true" ID="ID_1823259238" MODIFIED="1557498707233" TEXT="zwei strikt getrennte Dimensionen">
<icon BUILTIN="info"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1541858615893" FOLDED="true" ID="ID_301185249" MODIFIED="1672672266675" TEXT="Struktur">
<icon BUILTIN="hourglass"/>
<node CREATED="1541858624972" ID="ID_342899879" MODIFIED="1557498707233" TEXT="Ort im Struktur-Graph">
<node CREATED="1541860265441" ID="ID_969408137" MODIFIED="1557498707233" TEXT="topologisch"/>
<node CREATED="1541860270378" ID="ID_927127002" MODIFIED="1557498707233" TEXT="im UI-window">
<node CREATED="1541860297740" ID="ID_185643503" MODIFIED="1557498707233" TEXT="eindimensional (=vertikal)"/>
<node CREATED="1541860305651" ID="ID_485148653" MODIFIED="1557498707233" TEXT="zweidimensional (Y down, X right)"/>
</node>
</node>
<node CREATED="1541858647423" ID="ID_1731335932" MODIFIED="1557498707233" TEXT="Detaillierungsgrad">
<node CREATED="1541860465918" ID="ID_1278123804" MODIFIED="1557498707233" TEXT="topologisch"/>
<node CREATED="1541860469414" ID="ID_801313216" MODIFIED="1557498707233" TEXT="geometrisch">
<node CREATED="1541860476375" ID="ID_837020603" MODIFIED="1557498707233" TEXT="zumeist ausgeschlossen"/>
<node CREATED="1541860508135" ID="ID_1006267067" MODIFIED="1557498707233" TEXT="Ausnahme: Kurven und Graphen"/>
<node CREATED="1541860592548" ID="ID_1610724743" MODIFIED="1557498707233" TEXT="object coord &lt;-&gt; display coord"/>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1672672176925" ID="ID_738927743" MODIFIED="1672672262113" TEXT="noch nicht klar ob diese Dimensionen sinnvoll hier zu integrieren sind">
<font NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="bell"/>
</node>
</node>
<node CREATED="1541858620165" ID="ID_946004941" MODIFIED="1557498707233" TEXT="Zeit">
<node CREATED="1541858706787" ID="ID_1161729387" MODIFIED="1557498707233" TEXT="ZoomAnchor">
<node CREATED="1541858712898" ID="ID_156836023" MODIFIED="1557498707233" TEXT="Control-Entity">
<node CREATED="1541859273199" ID="ID_1187678929" MODIFIED="1557498707233" TEXT="edit point"/>
<node CREATED="1541859280000" ID="ID_1932782561" MODIFIED="1557498707233" TEXT="playhead"/>
<node CREATED="1541859284069" ID="ID_299608050" MODIFIED="1557498707233" TEXT="mouse"/>
</node>
<node CREATED="1541859608646" ID="ID_412475230" MODIFIED="1557498707233" TEXT="time translation anchor point">
<node CREATED="1542384728240" ID="ID_538080146" MODIFIED="1557498707233" TEXT="nicht der Nullpunkt derZeitskala"/>
<node CREATED="1542384738364" ID="ID_922112299" MODIFIED="1557498707233" TEXT="sondern der Bezugspunkt f&#xfc;r die &#xdc;bersetzung Zeit -&gt; Pixel"/>
</node>
<node CREATED="1541860174509" ID="ID_983216306" MODIFIED="1557498707233" TEXT="position within window">
<node CREATED="1541860195426" ID="ID_1143510761" MODIFIED="1557498707233" TEXT="relative"/>
<node CREATED="1541860198222" ID="ID_847832000" MODIFIED="1557498707233" TEXT="absolute">
<node CREATED="1544126105472" ID="ID_1636490570" MODIFIED="1576282358023" TEXT="relative-absolute">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      a fixed absolute number of tick&#160;units,
    </p>
    <p>
      where 1 tick unit depends on the current zoom level
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="ksmiletris"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1672672729523" ID="ID_204825395" MODIFIED="1672672853253" TEXT="vorerst durch generische Regel im Code festgelegt">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...sp&#228;ter m&#246;chte ich diesen als eigenen zus&#228;tzlichen Freiheitsgrad einf&#252;hren; dazu mu&#223; aber bereits mehr &#252;ber den Verwendungszusammenhang bekannt sein; insofern habe ich vorerst eine generische Regel implementiert, die den Zoom-Anchor anhand der Position zum Gesamt-Canvas festlegt (ganz am Anfgang liegt er ganz links, am Ende ganz rechts)
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="hourglass"/>
</node>
</node>
<node CREATED="1542384160498" ID="ID_1252241860" MODIFIED="1557498707233" TEXT="TimeWindow">
<node CREATED="1542384165737" ID="ID_705415129" MODIFIED="1557498707233" TEXT="die konkret sichbare TimeSpan"/>
<node CREATED="1542384188438" ID="ID_444895141" MODIFIED="1576282358023" TEXT="stets in realem relativem Zeitma&#xdf;">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <ul>
      <li>
        real, d.h. in Zeit (Mikroticks) und nicht in Bildschirm-Pixeln
      </li>
      <li>
        relativ, d.h. im Bezug auf die nominelle Zeitskala dieser Timeline;<br />entsprechend der Angabe auf dem Time-Ruler
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1541859633805" ID="ID_304890799" MODIFIED="1557498707233" TEXT="Scale">
<node CREATED="1541859805246" ID="ID_1619845581" MODIFIED="1557498707233" TEXT="temporal extension of one unit"/>
<node CREATED="1542384386446" ID="ID_1472241358" MODIFIED="1576282358022" TEXT="minval / maxval or unlimited?">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Beachte: nicht verwechseln mit absoluten Angaben.
    </p>
    <p>
      Diese Skala <b>legt &#252;berhaupt nicht</b>&#160;fest, wo ihr Nullpunkt liegt
    </p>
    <p>
      im Bezug auf eine globale absolute Zeitskala (denn das macht das betreffende Placement)
    </p>
    <p>
      
    </p>
    <p>
      Theoretisch k&#246;nnte eine Skala auf einer Seite oder auf beiden Seiten limitiert sein....?
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="help"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1542384604062" ID="ID_900384720" MODIFIED="1542384632672" TEXT="grunds&#xe4;tzlich niemals beschr&#xe4;nkt">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1542384636665" ID="ID_1760262238" MODIFIED="1542384648936" TEXT="Beschr&#xe4;nkungen realisiert Lumiera als Placement">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1672672309323" ID="ID_903266469" MODIFIED="1672672619791" TEXT="es gibt technische Beschr&#xe4;nkungen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      bedingt durch die interne Repr&#228;sesntation (als 64bit &#181;-Ticks bzw. signed fraction)...
    </p>
    <ul>
      <li>
        die absoluten internen Zeitwerte in &#181;-Ticks sind beschr&#228;nkt &#177;Time::MAX (=<font face="Monospaced">numeric_limits&lt;int64_t&gt;::max() / 30</font>)
      </li>
      <li>
        die gr&#246;&#223;tm&#246;gliche Zoomstufe wurde (mehr oder weniger willk&#252;rlich) festgelegt auf 2px / &#181;-Tick
      </li>
      <li>
        ein Fenster mit weniger als 560px kann nicht die gesamte Zeit-Dom&#228;ne darstellen (da sonst die rationale Arithmetik entgleist)
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1541859854902" ID="ID_614778835" MODIFIED="1557498707233" TEXT="display pixels per unit"/>
</node>
</node>
<node CREATED="1541860744327" HGAP="-42" ID="ID_462654912" MODIFIED="1557498707233" TEXT="Bezug / im Verh&#xe4;ltnis zu" VSHIFT="27">
<node CREATED="1541860785369" ID="ID_1062556789" MODIFIED="1557498707233" TEXT="Display Window">
<node CREATED="1541860790726" ID="ID_1447889403" MODIFIED="1557498707233" TEXT="zweidimensional">
<node CREATED="1541860801663" ID="ID_622150499" MODIFIED="1557498707233" TEXT="horizontale Dimension w&#xe4;hlbar">
<node CREATED="1541860828603" ID="ID_111513506" MODIFIED="1557498707233" TEXT="Zeit"/>
<node CREATED="1541860831875" ID="ID_1775831703" MODIFIED="1557498707233" TEXT="Extension"/>
</node>
<node CREATED="1541860818012" ID="ID_814200290" MODIFIED="1561827465320" TEXT="vertikale Dimension stets topologisch">
<node CREATED="1544127119809" ID="ID_431805088" MODIFIED="1544127122858" TEXT="nicht immer...."/>
<node CREATED="1544127123803" ID="ID_1360167609" MODIFIED="1544127127665" TEXT="Ausnahme: Kurven"/>
</node>
</node>
<node CREATED="1541859890231" ID="ID_1462660195" MODIFIED="1557498707233" TEXT="window size">
<node CREATED="1541859893555" ID="ID_1561827620" MODIFIED="1557498707233" TEXT="units within window"/>
<node CREATED="1541860100246" ID="ID_1049947511" MODIFIED="1557498707233" TEXT="typically dictated by external constraints"/>
</node>
</node>
<node CREATED="1542384851045" ID="ID_362962483" MODIFIED="1557498707233" TEXT="Display Strategy">
<node CREATED="1542384871403" ID="ID_1092715541" MODIFIED="1557498707233" TEXT="nur ein Ausschnitt der Achse wird gerendert"/>
<node CREATED="1542384880497" ID="ID_82218999" MODIFIED="1557498707234" TEXT="stets mehr als der sichbare Bereich"/>
<node CREATED="1542385000986" ID="ID_1721448517" MODIFIED="1557498707234" TEXT="strategy change">
<node CREATED="1542385006024" ID="ID_58293224" MODIFIED="1557498707234" TEXT="breaking">
<node CREATED="1542385016529" ID="ID_697267034" MODIFIED="1557498707234" TEXT="Pixel-Koordinaten aller Elemente &#xe4;ndern sich"/>
<node CREATED="1542385445821" ID="ID_1078665627" MODIFIED="1557498707234" TEXT="au&#xdf;erdem kommen ggfs neue Elemente hinzu und Elemente fallen weg"/>
<node COLOR="#435e98" CREATED="1542385042987" ID="ID_1543492584" MODIFIED="1672671739825" TEXT="Push oder Pull?">
<icon BUILTIN="help"/>
<node CREATED="1542385063860" ID="ID_1262945101" MODIFIED="1557498707234" TEXT="Abw&#xe4;gung">
<node CREATED="1542385081282" ID="ID_342384221" MODIFIED="1557498707234" TEXT="Push">
<node CREATED="1542385084334" ID="ID_194494898" MODIFIED="1557498707234" TEXT="Display-Manager mu&#xdf; alle Elemente kennen"/>
<node CREATED="1542385115962" ID="ID_984451994" MODIFIED="1557498707234" TEXT="Notification-Mechanismus"/>
</node>
<node CREATED="1542385122521" ID="ID_1454454135" MODIFIED="1557498707234" TEXT="Pull">
<node CREATED="1542385155517" ID="ID_609874542" MODIFIED="1557498707234" TEXT="Element mu&#xdf; erkennen k&#xf6;nnen, ob es noch valide ist"/>
<node CREATED="1542385259471" ID="ID_513541561" MODIFIED="1557498707234" TEXT="Element mu&#xdf; sich seine Pixel-Koordinaten abholen"/>
</node>
</node>
<node CREATED="1666740774742" ID="ID_363144624" MODIFIED="1666740786352" TEXT="durch konkrete Architektur bereits festgelegt">
<node CREATED="1666740792273" ID="ID_1830217394" MODIFIED="1666740804730" TEXT="Elemente sind an CanvasHook angeheftet"/>
<node CREATED="1666740808999" ID="ID_1283381454" MODIFIED="1666740820970" TEXT="Display-Manager soll keine Gott-Klasse werden"/>
<node CREATED="1666740839898" ID="ID_774727516" MODIFIED="1666740850468" TEXT="Gtk gibt Rolle der Widgets bereits vor"/>
<node CREATED="1666740853072" ID="ID_772665062" MODIFIED="1666740884257" TEXT="&#x27f9; Pull">
<node CREATED="1666740887357" ID="ID_774450727" MODIFIED="1666740927995" TEXT="Elemente werden durch &quot;invalidation&quot; von GTK aktiviert"/>
<node CREATED="1666740953298" ID="ID_681117853" MODIFIED="1666740965269" TEXT="dies wiederum l&#xf6;st Display-Evaluation-Pass aus"/>
<node CREATED="1666740966473" ID="ID_1449245417" MODIFIED="1666740995521" TEXT="Timeline-Elements re-attach children"/>
<node CREATED="1666741015283" ID="ID_177537427" MODIFIED="1666741029602" TEXT="CanvasHooked &#xfc;bersetzt seine Position in Pixel"/>
</node>
</node>
</node>
</node>
<node CREATED="1542385008235" ID="ID_713582235" MODIFIED="1557498707234" TEXT="non-breaking">
<node CREATED="1542385321347" ID="ID_1672263647" MODIFIED="1557498707234" TEXT="TimeWindow-&#xbb;Canvas&#xab; wird erweitert"/>
<node CREATED="1542385335372" ID="ID_1139488626" MODIFIED="1557498707234" TEXT="aber Pixel-Nullpunkt bleibt gleich"/>
<node CREATED="1542385350195" ID="ID_1892916657" MODIFIED="1557498707234" TEXT="alle Pixel-Koordinaten bleiben g&#xfc;ltig"/>
<node CREATED="1542385433191" ID="ID_823514825" MODIFIED="1557498707234" TEXT="es kommen ggfs neue Elemente hinzu">
<node CREATED="1666741069270" ID="ID_126323667" MODIFIED="1666741234366" TEXT="Gtk::Layout bietet keinen sinnvollen Mechanismus zum Entfernen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <ul>
      <li>
        Entfernen eines Widget bewirkt lineare Suche im Container auf Pointer-Match &#10233; ineffizient
      </li>
      <li>
        ohne aufwendige Index-Struktur haben wir keine M&#246;glichkeit, alle Widgets in einem bestimmten Bereich zu finden
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
<node CREATED="1672695373913" ID="ID_601278848" MODIFIED="1672695382563" TEXT="&#xbb;Canvas&#xab;">
<node CREATED="1672695388079" ID="ID_611481658" MODIFIED="1672695399833" TEXT="implizite Zeitchenfl&#xe4;che mit einheitlichen Koordinaten"/>
<node CREATED="1672695405293" ID="ID_1476246688" MODIFIED="1672695425045" TEXT="der sichtbare Ausschnitt ist irgendwo darin enthalten"/>
<node CREATED="1672695431696" ID="ID_1878306836" MODIFIED="1672695451577" TEXT="kann durch Zoom/Scroll-Aktionen implizit vergr&#xf6;&#xdf;ert werden"/>
<node CREATED="1672695458020" ID="ID_350857288" MODIFIED="1672695546890" TEXT="verwaltet einen Pixel-Ursprung">
<linktarget COLOR="#868ca5" DESTINATION="ID_350857288" ENDARROW="Default" ENDINCLINATION="1491;0;" ID="Arrow_ID_265889059" SOURCE="ID_785032228" STARTARROW="None" STARTINCLINATION="-1670;93;"/>
<node CREATED="1672695565677" ID="ID_74750688" MODIFIED="1672695578855" TEXT="dieser gilt ausnahmslos f&#xfc;r alle Zeichen-Operationen"/>
<node CREATED="1672695580626" ID="ID_1609686459" MODIFIED="1672695694973" TEXT="Lage kann sich durch &#xc4;nderungen im Zoom-Window verschieben">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      beispielsweise wenn nach links &#252;ber den bisherigen Ursprung hinaus gescrollt wird &#8212; dann wird (in Ma&#223;en) der Canvas vergr&#246;&#223;ert; dies invalidiert alle Koordinaten und das gesamte Layout, und anschlie&#223;end bekommen aber alle Widgets und Zeichen-Routinen konsistent eine neue Canvas-&#220;bersetzung
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1541859255448" ID="ID_1251550945" MODIFIED="1672672870505" TEXT="hat seine eigene Historie">
<icon BUILTIN="hourglass"/>
<node CREATED="1672672872277" ID="ID_1511854867" MODIFIED="1672672879900" TEXT="geplant..."/>
<node CREATED="1672672880622" ID="ID_1994765001" MODIFIED="1672672913962" TEXT="wohl erst viel sp&#xe4;ter zu implementieren">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Gesamt-Integration der Applikation ist derzeit (2023) viel wichtiger
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1666961652530" ID="ID_1551608483" MODIFIED="1666961657079" TEXT="Anforderungen">
<icon BUILTIN="pencil"/>
<node CREATED="1666961922242" ID="ID_1841861801" MODIFIED="1666961924990" TEXT="Nutzer">
<node CREATED="1666961939961" ID="ID_1450461751" MODIFIED="1666964219794">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      CanvasHook /
    </p>
    <p>
      DisplayMetric
    </p>
  </body>
</html></richcontent>
<node CREATED="1666964107682" ID="ID_987173896" MODIFIED="1666964109614" TEXT="info">
<node CREATED="1666964110858" ID="ID_1532390725" MODIFIED="1666964112213" TEXT="pull">
<node CREATED="1666962009910" ID="ID_529672706" MODIFIED="1666962010867" TEXT="Pixel / sec"/>
<node CREATED="1666962011710" ID="ID_414340764" MODIFIED="1666963008416" TEXT="Time &#x27fc; Pixel">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_414340764" ENDARROW="Default" ENDINCLINATION="69;0;" ID="Arrow_ID_1434161517" SOURCE="ID_1881628552" STARTARROW="None" STARTINCLINATION="69;0;"/>
</node>
<node CREATED="1666962045507" ID="ID_1981297904" MODIFIED="1666964118381" TEXT="Pixel &#x27fc; Time-Offset"/>
</node>
</node>
</node>
<node CREATED="1666962948140" ID="ID_1637428541" MODIFIED="1666962951762" TEXT="BodyCanvas">
<node CREATED="1666962967612" ID="ID_449651932" MODIFIED="1666962970528" TEXT="info">
<node CREATED="1666962972110" ID="ID_394919753" MODIFIED="1666963848689" TEXT="pull">
<linktarget COLOR="#845fa8" DESTINATION="ID_394919753" ENDARROW="Default" ENDINCLINATION="-2;42;" ID="Arrow_ID_803019531" SOURCE="ID_647016441" STARTARROW="None" STARTINCLINATION="-87;9;"/>
<node CREATED="1666962983298" ID="ID_1421218984" MODIFIED="1666962989245" TEXT="window offset"/>
<node CREATED="1666962998128" ID="ID_1881628552" MODIFIED="1666963008416" TEXT="Time &#x27fc; Pixel">
<arrowlink COLOR="#a9b4c1" DESTINATION="ID_414340764" ENDARROW="Default" ENDINCLINATION="69;0;" ID="Arrow_ID_1434161517" STARTARROW="None" STARTINCLINATION="69;0;"/>
</node>
<node CREATED="1666963029028" ID="ID_1761637588" MODIFIED="1666963032537" TEXT="overall range"/>
</node>
</node>
</node>
<node CREATED="1666963161996" ID="ID_1959770633" MODIFIED="1666963165721" TEXT="TimelineLayout">
<node CREATED="1666963168179" ID="ID_1043980998" MODIFIED="1666963170055" TEXT="info">
<node CREATED="1666963053313" ID="ID_1467716107" MODIFIED="1666963055117" TEXT="push">
<node CREATED="1666963473113" ID="ID_1083610832" MODIFIED="1666963797516" TEXT="change to scale factor &#x27f6; zoom slider"/>
<node CREATED="1666963056273" ID="ID_93260719" MODIFIED="1666963073411" TEXT="any change to">
<node CREATED="1666963074711" ID="ID_509368190" MODIFIED="1666963076010" TEXT="visible window"/>
<node CREATED="1666963076796" ID="ID_246937524" MODIFIED="1666963108407" TEXT="scale factor"/>
<node CREATED="1666963936464" ID="ID_1932975512" MODIFIED="1666963939268" TEXT="overall range"/>
</node>
<node CREATED="1666963799466" ID="ID_647016441" LINK="#ID_1896159832" MODIFIED="1666963854969" TEXT="&#x27f9; trigger DisplayEvaluation">
<arrowlink COLOR="#845fa8" DESTINATION="ID_394919753" ENDARROW="Default" ENDINCLINATION="-2;42;" ID="Arrow_ID_803019531" STARTARROW="None" STARTINCLINATION="-87;9;"/>
</node>
</node>
</node>
<node CREATED="1666963111674" ID="ID_366938946" MODIFIED="1666963138899" TEXT="mutate">
<node CREATED="1666963244169" ID="ID_1844613988" MODIFIED="1666963246949" TEXT="in response to scrollbar">
<node CREATED="1666963183793" ID="ID_1981655411" MODIFIED="1666963250103" TEXT="nudge"/>
<node CREATED="1666963216853" ID="ID_508890288" MODIFIED="1666963255428" TEXT="move window"/>
</node>
<node CREATED="1666963419931" ID="ID_1583456327" MODIFIED="1666963425054" TEXT="in response to zoom slider">
<node CREATED="1666963439348" ID="ID_1075634262" MODIFIED="1666963471723" TEXT="change scale"/>
</node>
</node>
</node>
<node CREATED="1666963980515" ID="ID_513917153" MODIFIED="1666963984166" TEXT="TimelineController">
<node CREATED="1666964000088" ID="ID_375195151" MODIFIED="1666964003076" TEXT="mutate">
<node CREATED="1666964004207" ID="ID_1180711772" MODIFIED="1666964011435" TEXT="overall range"/>
<node CREATED="1666964012037" ID="ID_1236595109" MODIFIED="1666964022457" TEXT="window parameters (persistent UI state)"/>
</node>
</node>
<node CREATED="1666964041691" ID="ID_190646112" MODIFIED="1666964239733">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p style="text-align: center">
      Menu
    </p>
    <p style="text-align: center">
      Actions
    </p>
    <p style="text-align: center">
      SpotLocator
    </p>
  </body>
</html></richcontent>
<node CREATED="1666964045890" ID="ID_967504479" MODIFIED="1666964047758" TEXT="mutate">
<node CREATED="1666964049178" ID="ID_400278283" MODIFIED="1666964054021" TEXT="zoom factor explicit"/>
<node CREATED="1666964054817" ID="ID_13822198" MODIFIED="1666964062332" TEXT="zoom in / out"/>
<node CREATED="1666964136828" ID="ID_1945694373" MODIFIED="1666964147513" TEXT="Zoom history"/>
<node CREATED="1666964064097" ID="ID_476690066" MODIFIED="1666964065796" TEXT="goto"/>
</node>
</node>
<node CREATED="1666963512247" ID="ID_346536876" MODIFIED="1666964491444">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Gestures
    </p>
    <p>
      <font size="2">(Controller)</font>
    </p>
  </body>
</html></richcontent>
<node CREATED="1666963587166" ID="ID_442423017" MODIFIED="1666963593121" TEXT="mutate">
<node CREATED="1666963695760" ID="ID_81275579" MODIFIED="1666963720097" TEXT="move window"/>
<node CREATED="1666963721304" ID="ID_454787677" MODIFIED="1666963725688" TEXT="set window new"/>
<node CREATED="1666963726700" ID="ID_1014020184" MODIFIED="1666963749165" TEXT="nudge / navigate scale"/>
</node>
</node>
</node>
<node CREATED="1666964525427" ID="ID_1415774511" MODIFIED="1666964532142" TEXT="Use-Cases">
<node CREATED="1666964535050" ID="ID_1763230201" MODIFIED="1666964538702" TEXT="initial setup">
<node CREATED="1666964596634" ID="ID_787404148" MODIFIED="1666964610730" TEXT="UI-state &#x27a9; set metric"/>
<node CREATED="1666964550288" ID="ID_923399586" MODIFIED="1666964581818" TEXT="TimelineController &#x27a9; set overall range"/>
<node CREATED="1666964631061" ID="ID_1738511451" MODIFIED="1666964652646" TEXT="BodyCanvas &#x27f5; window params"/>
<node CREATED="1666964657466" ID="ID_284701056" MODIFIED="1666964672146" TEXT="DisplayMetric &#x27f5; metric params"/>
</node>
<node CREATED="1666964685556" ID="ID_1149861099" MODIFIED="1666964696392" TEXT="reposition">
<node CREATED="1666964704346" ID="ID_1335047774" MODIFIED="1666964706053" TEXT="actors">
<node CREATED="1666964713328" ID="ID_547389237" MODIFIED="1666964722173" TEXT="TimelineLayout &#x27f5; scrollbar"/>
<node CREATED="1666964723703" ID="ID_369768444" MODIFIED="1666964730506" TEXT="TimelineLayout &#x27f5; zoom slider"/>
<node CREATED="1666964759337" ID="ID_1195706073" MODIFIED="1666964769244" TEXT="Menu/Locator &#x27f5; intentional settings"/>
<node CREATED="1666964789807" ID="ID_1584775566" MODIFIED="1666964800070" TEXT="Gestures &#x27f5; move"/>
<node CREATED="1666964800731" ID="ID_842054315" MODIFIED="1666964813053" TEXT="Gestures &#x27f5; select"/>
<node CREATED="1666964813737" ID="ID_251122612" MODIFIED="1666964819044" TEXT="Gestures &#x27f5; nudge"/>
</node>
<node CREATED="1666964837550" ID="ID_1317851498" MODIFIED="1666964853954" TEXT="push &#x27f6; TimelineLayout"/>
<node CREATED="1666964631061" ID="ID_471374188" MODIFIED="1666964652646" TEXT="BodyCanvas &#x27f5; window params"/>
<node CREATED="1666964657466" ID="ID_640554342" MODIFIED="1666964672146" TEXT="DisplayMetric &#x27f5; metric params"/>
</node>
<node CREATED="1666964906595" ID="ID_414880469" MODIFIED="1666964913822" TEXT="model/Content">
<node CREATED="1666964550288" ID="ID_207665547" MODIFIED="1666964581818" TEXT="TimelineController &#x27a9; set overall range"/>
<node CREATED="1666964837550" ID="ID_510736258" MODIFIED="1672673922037" TEXT="push &#x27f6; TimelineLayout(&#x27f9;Display-Evaluation)"/>
<node CREATED="1666964631061" ID="ID_1856222450" MODIFIED="1666964652646" TEXT="BodyCanvas &#x27f5; window params"/>
<node CREATED="1666964657466" ID="ID_1703226781" MODIFIED="1666964672146" TEXT="DisplayMetric &#x27f5; metric params"/>
</node>
</node>
<node CREATED="1666965004641" ID="ID_748757781" MODIFIED="1666965813264" TEXT="Interaction Procedure">
<linktarget COLOR="#955977" DESTINATION="ID_748757781" ENDARROW="Default" ENDINCLINATION="-318;688;" ID="Arrow_ID_1882192055" SOURCE="ID_867107887" STARTARROW="None" STARTINCLINATION="-49;-276;"/>
<node CREATED="1666965028506" ID="ID_1718237033" MODIFIED="1666965700555" TEXT="mutators">
<icon BUILTIN="full-1"/>
<node CREATED="1666965070532" ID="ID_466715389" MODIFIED="1666965073074" TEXT="set metric"/>
<node CREATED="1666965122916" ID="ID_1552912945" MODIFIED="1666965127135" TEXT="nudge metric"/>
<node CREATED="1666965076899" ID="ID_1566749815" MODIFIED="1666965082213" TEXT="set overall range"/>
<node CREATED="1666965248114" ID="ID_1129946807" MODIFIED="1666965252637" TEXT="set position visible"/>
<node CREATED="1666965253777" ID="ID_170374754" MODIFIED="1666965260590" TEXT="offset position"/>
<node CREATED="1666965363498" ID="ID_122767081" MODIFIED="1666965371954" TEXT="nudge position"/>
<node CREATED="1666965443495" ID="ID_963746010" MODIFIED="1666965450746" TEXT="select/set window"/>
<node CREATED="1666965624006" ID="ID_1012108139" MODIFIED="1666965628305" TEXT="nav History"/>
</node>
<node CREATED="1666965815796" ID="ID_923514380" MODIFIED="1666965835315" TEXT="coordinated adjustment">
<icon BUILTIN="full-2"/>
</node>
<node CREATED="1666965640435" ID="ID_1286173115" MODIFIED="1666965838899" TEXT="any change &#x27f9; trigger TimelineLayout &#x27f6; DisplayEvaluation">
<icon BUILTIN="full-3"/>
</node>
<node CREATED="1666965707418" ID="ID_934685858" MODIFIED="1666965842700" TEXT="read state">
<icon BUILTIN="full-4"/>
<node CREATED="1666965729794" ID="ID_745785368" MODIFIED="1666965732035" TEXT="metric"/>
<node CREATED="1666965732767" ID="ID_193127162" MODIFIED="1666965737818" TEXT="translations"/>
<node CREATED="1666965745869" ID="ID_1594628227" MODIFIED="1666965748929" TEXT="window offset"/>
<node CREATED="1666965749637" ID="ID_1024412644" MODIFIED="1666965752128" TEXT="overall range"/>
</node>
</node>
<node CREATED="1667253467195" ID="ID_583983335" MODIFIED="1667253470876" TEXT="Semantics">
<node CREATED="1667254016236" ID="ID_1599338404" MODIFIED="1667260350202" TEXT="zwei m&#xf6;gliche Auslegungen">
<linktarget COLOR="#5cbca7" DESTINATION="ID_1599338404" ENDARROW="Default" ENDINCLINATION="-266;683;" ID="Arrow_ID_1992699101" SOURCE="ID_1789035337" STARTARROW="None" STARTINCLINATION="-195;-13;"/>
<node CREATED="1667254281663" ID="ID_931025074" MODIFIED="1667254961650" TEXT="overallSpan &#x2259; Timeline">
<icon BUILTIN="button_cancel"/>
<node CREATED="1667254042344" ID="ID_1886040600" MODIFIED="1667254193233" TEXT="visualWindow &#x2259; was sichtbar ist"/>
<node CREATED="1667254330394" ID="ID_192603163" MODIFIED="1667254344380" TEXT="&#x27f9; visualWindow kann dar&#xfc;ber hinausreichen"/>
<node CREATED="1667254349351" ID="ID_1260830853" MODIFIED="1667254356411" TEXT="Canvas ergibt sich implizit"/>
</node>
<node CREATED="1667253493640" ID="ID_29660572" MODIFIED="1667254964809" TEXT="overallSpan &#x2259; Canvas">
<icon BUILTIN="forward"/>
<node CREATED="1667254042344" ID="ID_6801078" MODIFIED="1667254193233" TEXT="visualWindow &#x2259; was sichtbar ist"/>
<node CREATED="1667254132888" ID="ID_907807797" MODIFIED="1667254189985" TEXT="&#x27f9; visualWindow &#x2208; Canvas"/>
<node CREATED="1667254209434" ID="ID_1299162840" MODIFIED="1667254216213" TEXT="st&#xf6;&#xdf;t am Rand des Canvas an"/>
</node>
</node>
<node COLOR="#338800" CREATED="1667254983055" FOLDED="true" ID="ID_1939856323" MODIFIED="1668176401891" TEXT="Eichung der Metrik">
<icon BUILTIN="button_ok"/>
<node CREATED="1667254988850" ID="ID_627529918" MODIFIED="1667255165088" TEXT="mu&#xdf; (initial) explizit gesezt werden">
<icon BUILTIN="info"/>
</node>
<node CREATED="1667255003826" ID="ID_457439715" MODIFIED="1667255160405" TEXT="soll der Ausdehnung im Interface entsprechen">
<icon BUILTIN="yes"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1667255062416" ID="ID_888315158" MODIFIED="1668176391632" TEXT="Erwartung: erh&#xe4;lt sich von selbst numerisch konstant">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1667255198638" ID="ID_1458374199" MODIFIED="1667255216695" TEXT="da wir Integer-Arithmetik machen"/>
<node CREATED="1667255218491" ID="ID_1646057612" MODIFIED="1667255227637" TEXT="und stets logisch-konsistent vorgehen"/>
</node>
<node CREATED="1667255234369" ID="ID_713280456" MODIFIED="1667255281215" TEXT="falls das nicht klappt....">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...dann m&#252;ssen wir die Vorgabe speichern, und in jedem Schritt korrigierend eingreifen
    </p>
  </body>
</html></richcontent>
<node CREATED="1668176223375" ID="ID_386415995" MODIFIED="1668176380384" TEXT="...habe es gar nicht darauf ankommen lassen">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1668176234367" ID="ID_762072729" MODIFIED="1668176354941" TEXT="...sondern an allen potentiell gef&#xe4;hrlichen Rechenschritten explizit auf Wert-Erhalt abgestellt">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      das hei&#223;t...
    </p>
    <ul>
      <li>
        alten Pixel-Wert berechnet
      </li>
      <li>
        Neue Metrik draus per fractional-Integer-Arithmetik errechnet
      </li>
      <li>
        Assertion da&#223; sich daraus wieder die gleiche Pixel-Zahl ergibt
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node COLOR="#435e98" CREATED="1668176355944" ID="ID_421203855" MODIFIED="1668176376274" TEXT="Pixel-Wert selber mu&#xdf; nicht persistent gespeichert werden">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1668176368364" ID="ID_1536037495" MODIFIED="1668176373232" TEXT="im Test best&#xe4;tigt">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1541860963705" ID="ID_13414263" MODIFIED="1557498707234" TEXT="Design">
<node CREATED="1541860967281" ID="ID_1676646773" MODIFIED="1557498707234" TEXT="manipulativ - mutable">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
<node CREATED="1541860985526" ID="ID_640984391" MODIFIED="1666965921616" TEXT="Klasse mit...">
<node CREATED="1666965922557" ID="ID_1117003417" MODIFIED="1666965925216" TEXT="mutatoren"/>
<node CREATED="1666965925828" ID="ID_1319511593" MODIFIED="1666965930200" TEXT="internem State"/>
<node CREATED="1666965930804" ID="ID_821140216" MODIFIED="1666965935583" TEXT="Listener-Registrierung"/>
</node>
<node CREATED="1541861314456" ID="ID_267107783" MODIFIED="1666965892587" TEXT="generisch">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Liegt in unserem gui::model
    </p>
    <p>
      analog zu gui::model::Tangible
    </p>
  </body>
</html></richcontent>
<node CREATED="1666965873443" ID="ID_689086000" MODIFIED="1666965875623" TEXT="nix GTK"/>
<node CREATED="1666965876091" ID="ID_60793784" MODIFIED="1666965880156" TEXT="allgemeiner als Timeline"/>
</node>
<node CREATED="1541861061984" HGAP="23" ID="ID_426757987" MODIFIED="1557498707234" TEXT="Anwendung" VSHIFT="10">
<node CREATED="1666965986884" ID="ID_1348737219" MODIFIED="1666966001747" TEXT="dedizierte zweickgebundene Setter"/>
<node CREATED="1541861069577" ID="ID_1233713010" MODIFIED="1666965974618" TEXT="wird stets insgesamt harmonisiert"/>
<node CREATED="1541861281854" ID="ID_1332627357" MODIFIED="1666966014212" TEXT="Notification vom LayoutManager auf Widgets &#xfc;bersetzt"/>
</node>
</node>
<node CREATED="1666741319202" ID="ID_64525813" MODIFIED="1666741321886" TEXT="Einbindung">
<node COLOR="#435e98" CREATED="1666741323047" ID="ID_1994767675" MODIFIED="1666912635580" TEXT="wer &quot;hat&quot; ein ZoomWindow?">
<icon BUILTIN="help"/>
<node CREATED="1666741476982" ID="ID_325619597" MODIFIED="1666824575081" TEXT="jeweils f&#xfc;r eine View gibt&apos;s ein ZoomWindow"/>
<node CREATED="1666741455465" ID="ID_1574485076" MODIFIED="1666741469596" TEXT="derjenige, der eine Navigation und Zoom-Steuerung realisiert"/>
<node CREATED="1666824594960" ID="ID_1905497481" MODIFIED="1666824608874" TEXT="wer ist das?">
<node CREATED="1666741481789" ID="ID_1047670368" MODIFIED="1666741501886" TEXT="&#x27f9; f&#xfc;r Timeline ist das der Timeline-Controller"/>
<node CREATED="1666824619509" ID="ID_1980185134" MODIFIED="1666824682980" TEXT="&#x27f9; oder das TimelineLayout, das die Widgets kontrolliert"/>
</node>
<node CREATED="1666824690348" ID="ID_1087315879" MODIFIED="1666824695311" TEXT="Entscheidung">
<node CREATED="1666824696443" ID="ID_460181440" MODIFIED="1666824874757" TEXT="den jeweils anderen mu&#xdf; man stets verdrahten, also letztlich w&#xe4;hlbar">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1666824722392" ID="ID_386126354" MODIFIED="1666824862873" TEXT="Unterbringung direkt im TimelineLayout w&#xfc;rde direkte Zugriffe erm&#xf6;glichen">
<icon BUILTIN="forward"/>
</node>
<node CREATED="1666824794990" ID="ID_1978333313" MODIFIED="1666824860086" TEXT="das ZoomWindow k&#xf6;nnte dann direkt in einem Metric-Mix-in untergebracht werden">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1666912636672" ID="ID_693136797" MODIFIED="1666966124725" TEXT="wie kann man ZoomWindow nutzen?">
<icon BUILTIN="help"/>
<node CREATED="1666912660076" ID="ID_1930000724" MODIFIED="1666912681102" TEXT="dynamische &#xc4;nderungen vornehmen"/>
<node CREATED="1666912682282" ID="ID_1683687274" MODIFIED="1666966070412" TEXT="&#xc4;nderungs-Benachrichtigung (Listener)">
<node CREATED="1668176481848" ID="ID_1029152707" MODIFIED="1668176485296" TEXT="einfacher Trigger"/>
<node CREATED="1668176485655" ID="ID_1241434698" MODIFIED="1668176499366" TEXT="Empf&#xe4;nger zieht sich selber die aktuellen Werte"/>
<node CREATED="1668176501266" ID="ID_1187154193" MODIFIED="1668176520856" TEXT="vorerst nur ein Empf&#xe4;nger (=TimelineLayout)"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1666913019821" ID="ID_1177711704" MODIFIED="1666966123770" TEXT="Art der Anbindung?">
<icon BUILTIN="help"/>
<node CREATED="1666913118791" ID="ID_228116720" MODIFIED="1666913124339" TEXT="per Referenz erreichbar"/>
<node CREATED="1666913124995" ID="ID_1928528678" MODIFIED="1666913131873" TEXT="man kann Wert manipulieren"/>
<node CREATED="1666913138933" ID="ID_784393870" MODIFIED="1666966103824" TEXT="man kann Kenn-Parameter lesen"/>
<node CREATED="1666966104484" ID="ID_1051593434" MODIFIED="1666966112377" TEXT="man kann Listener registrieren"/>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1666913178575" ID="ID_391252153" MODIFIED="1666913185255" TEXT="Implementierung">
<icon BUILTIN="hourglass"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1666913226225" ID="ID_1795877085" MODIFIED="1666913232673" TEXT="1196 draft zoom handling in the Timeline">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1666913246670" ID="ID_818523431" MODIFIED="1666913251598" TEXT="1214 ZoomWindow">
<icon BUILTIN="hourglass"/>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1666913256394" ID="ID_562681542" MODIFIED="1666913269396" TEXT="erster Entwurf 10/2022">
<icon BUILTIN="pencil"/>
<node COLOR="#690f14" CREATED="1666913293560" FOLDED="true" ID="ID_1249096607" MODIFIED="1666966326093" TEXT="das time::Control verwenden">
<icon BUILTIN="idea"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1666913316709" ID="ID_134581234" MODIFIED="1666913343061" TEXT="Kenn-Parameter w&#xe4;ren damit zwei TimeSpan"/>
<node CREATED="1666913354384" ID="ID_1823681184" MODIFIED="1666913364242" TEXT="die API-Methoden bauen direkt darauf auf"/>
<node CREATED="1666966147486" ID="ID_45964930" MODIFIED="1666966157681" TEXT="w&#xfc;rde sich selbst als Listener registrieren"/>
<node CREATED="1666966161556" ID="ID_327156044" MODIFIED="1666966331839" TEXT="Probleme">
<icon BUILTIN="stop-sign"/>
<node CREATED="1666966164548" ID="ID_1667782386" MODIFIED="1666966185522" TEXT="nicht alle Parameter sind Zeiten">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      aber time::Control ist nur auf Zeiten ausgelegt
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1666966186762" ID="ID_1824326405" MODIFIED="1666966230396" TEXT="Nutzer wollen oft speziellere Dinge tun">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      m&#252;&#223;ten also dann jeweils selber dies in die Kenn-Parameter &#252;bersetzen &#10233; Gefahr von Code-Duplikation und inkonsistentem Verhalten
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1666966240650" ID="ID_248937535" MODIFIED="1666966303328" TEXT="es g&#xe4;be mehrfach-Benachrichtigung">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      denn aufgrund der ersten (ggfs sogar <b>falschen</b>&#160;Benachrichtigung) w&#252;rde das ZoomWindow selber die Parameter glattziehen, was erneute Benachrichtigung zur Folge h&#228;tte
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1666966304273" ID="ID_1096389407" MODIFIED="1666966312732" TEXT="API-Nutzung insgesamt nicht selbsterkl&#xe4;rend"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1666913370781" ID="ID_1691713188" MODIFIED="1667787385844" TEXT="klassisches Klassen-Design">
<icon BUILTIN="yes"/>
<node CREATED="1666913375117" ID="ID_1377108042" MODIFIED="1667158257168" TEXT="ZoomWindow ist unkopierbare Klasse mit internem State"/>
<node CREATED="1666913471725" ID="ID_1373767277" MODIFIED="1666966473259" TEXT="Master-Setter f&#xfc;hren die Range-Chacks durch"/>
<node CREATED="1666966477745" ID="ID_1255941758" MODIFIED="1666966489636" TEXT="sekund&#xe4;re / convenience-Setter bieten"/>
<node CREATED="1666966493207" ID="ID_872298278" MODIFIED="1666966503634" TEXT="interner State in 4 TimeVar"/>
<node CREATED="1666966543009" ID="ID_1212064261" MODIFIED="1666966550739" TEXT="vorerst nur einen Listener vorsehen">
<node CREATED="1666966571021" ID="ID_166595354" MODIFIED="1666966588771" TEXT="derzeit mu&#xdf; nur TimelineLayout benachrichtigt werden"/>
<node CREATED="1666966555495" ID="ID_1498916070" MODIFIED="1666966567113" TEXT="Overflow wenn sp&#xe4;ter mehr dazukommen"/>
</node>
<node CREATED="1666966629661" ID="ID_341880226" MODIFIED="1666966661849">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      getter liefern Time-<b>Values</b>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1671324422426" ID="ID_1192793970" MODIFIED="1671324572988">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Zoom-Metrik verwendet <b>integer-Br&#252;che</b>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="forward"/>
<node COLOR="#435e98" CREATED="1671324446051" ID="ID_1112836860" MODIFIED="1671324565631" TEXT="kann damit auch unebene Teilungen der Zeitskala sauber handhaben">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#435e98" CREATED="1671324465573" ID="ID_186471302" MODIFIED="1671324563688" TEXT="erfordert Sicherheitsma&#xdf;nahmen f&#xfc;r sehr gro&#xdf;e Zahlen">
<icon BUILTIN="messagebox_warning"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1671324522229" ID="ID_1590349109" MODIFIED="1671324559550" TEXT="Gefahr von numeric-wrap">
<icon BUILTIN="clanbomber"/>
</node>
<node COLOR="#338800" CREATED="1671324535163" ID="ID_298282383" MODIFIED="1671324555746" TEXT="L&#xf6;sung: re-Quantisierung (minimalen Fehler einf&#xfc;hren)">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1666966669487" FOLDED="true" ID="ID_1477573565" MODIFIED="1671324271010" TEXT="testgetrieben entwickelt">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1667093097050" ID="ID_1662709264" MODIFIED="1667093103756" TEXT="verify_simpleUsage">
<icon BUILTIN="button_ok"/>
<node CREATED="1667093106907" ID="ID_1255657275" MODIFIED="1667093118644" TEXT="nudge Zoom-Faktor"/>
<node CREATED="1667093120846" ID="ID_1405458968" MODIFIED="1667093134771" TEXT="&#x27f9; doppelte Aufl&#xf6;sung"/>
<node CREATED="1667093136007" ID="ID_1309995367" MODIFIED="1667093153233" TEXT="&#x27f9; visible Window liegt in der Mitte und hat hable L&#xe4;nge"/>
<node CREATED="1667163315776" ID="ID_1054488196" MODIFIED="1667163336658" TEXT="nudge Position &#x27f5;"/>
<node CREATED="1667093136007" ID="ID_1861991162" MODIFIED="1667163359264" TEXT="&#x27f9; visible Window liegt nun genau am Anfang"/>
</node>
<node COLOR="#435e98" CREATED="1667155790783" ID="ID_1921165636" MODIFIED="1667155805398" TEXT="Frage: Basis f&#xfc;r Rechnungen?">
<icon BUILTIN="help"/>
<node CREATED="1667155806980" ID="ID_250578278" MODIFIED="1667156041888">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <b>FSecs</b>&#160;&#8793; <font face="Monospaced">boost::rational&lt;int64_t&gt;</font>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1667156043109" ID="ID_234377752" MODIFIED="1667156067733" TEXT="ist sogar noch pr&#xe4;ziser als &#xb5;s &#x2014; und exakt"/>
<node COLOR="#338800" CREATED="1667156072512" FOLDED="true" ID="ID_951906064" MODIFIED="1667787375816" TEXT="TimeVar f&#xfc;r Konversionen &quot;aufbohren&quot;">
<icon BUILTIN="yes"/>
<node CREATED="1667156098084" ID="ID_1341404738" MODIFIED="1667156104554" TEXT="potentiell gef&#xe4;hrlich">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1667156192072" ID="ID_957228038" MODIFIED="1667156232815" TEXT="es gibt implizit int64_t &#x27f6; rational">
<icon BUILTIN="info"/>
</node>
<node CREATED="1667156246932" ID="ID_306732730" MODIFIED="1667156379883" TEXT="int64_t kann aus TimeVar &quot;entkommen&quot; und in FSecs &quot;reingeraten&quot;">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <u>Resultat</u>:
    </p>
    <ul>
      <li>
        man hat einen Faktor 1e+6 im Ergebnis
      </li>
      <li>
        ist mir tats&#228;chlich passiert, und zwar ziemlich &#252;berraschend
      </li>
      <li>
        Abhilfe: FSecs-ctor explizit anschreiben
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="clanbomber"/>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1667156105827" ID="ID_142853354" MODIFIED="1667156141584" TEXT="durch explicit-conversions sch&#xfc;tzen">
<icon BUILTIN="button_cancel"/>
<node CREATED="1667156117746" ID="ID_748178975" MODIFIED="1667156124357" TEXT="geht nicht wie gew&#xfc;nscht"/>
<node CREATED="1667156125589" ID="ID_1640624377" MODIFIED="1667156139947" TEXT="weil wir nicht &#xfc;ber den FSecs-ctor verf&#xfc;gen"/>
<node CREATED="1667156145590" ID="ID_1139847097" MODIFIED="1667156168191" TEXT="und explicit-conversion-operator &#x27f9; static_cast"/>
<node CREATED="1667156173714" ID="ID_1596347322" MODIFIED="1667156188388" TEXT="das w&#xfc;rde der fluiden Verwendung schaden"/>
<node CREATED="1667156513645" ID="ID_1002330972" MODIFIED="1667156696839" TEXT="m&#xe4;&#xdf;ig gef&#xe4;hrlich, solange TimeVar ehr selten und lokal begrenzt">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      und so ist es auch gedacht: TimeVar sollte nicht auf APIs auftauchen!
    </p>
    <p>
      Wenn man sich daran h&#228;lt, tritt TimeVar immer nur in einem lokalen Universum auf, wie hier im ZoomWindow, und man wei&#223; genau, wo und warum man dem eine <i>reine Zahl </i>zuweist
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#ec2dc2" DESTINATION="ID_1002330972" ENDARROW="Default" ENDINCLINATION="-1;56;" ID="Arrow_ID_116751884" SOURCE="ID_907527366" STARTARROW="None" STARTINCLINATION="65;4;"/>
</node>
</node>
<node COLOR="#d132ba" CREATED="1667156391029" ID="ID_907527366" MODIFIED="1667156702025" TEXT="nicht gl&#xfc;cklich &#x2014; aber geht wohl nicht besser">
<arrowlink COLOR="#ec2dc2" DESTINATION="ID_1002330972" ENDARROW="Default" ENDINCLINATION="-1;56;" ID="Arrow_ID_116751884" STARTARROW="None" STARTINCLINATION="65;4;"/>
<icon BUILTIN="smily_bad"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1667260101665" FOLDED="true" ID="ID_1250580560" MODIFIED="1668132037114" TEXT="mu&#xdf; die Ausdehnung in Pixel beachten">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1667260119686" ID="ID_1154266769" MODIFIED="1667780434377" TEXT="neuer Getter daf&#xfc;r">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1667260284128" ID="ID_1789035337" MODIFIED="1667260350202" TEXT="Frage nach der Semantik?">
<arrowlink COLOR="#5cbca7" DESTINATION="ID_1599338404" ENDARROW="Default" ENDINCLINATION="-266;683;" ID="Arrow_ID_1992699101" STARTARROW="None" STARTINCLINATION="-195;-13;"/>
<icon BUILTIN="help"/>
</node>
<node COLOR="#338800" CREATED="1667260130116" ID="ID_299421938" MODIFIED="1668132034834" TEXT="sollte stets konstant bleiben &#x27f9; im Test beobachten">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1667349674019" FOLDED="true" ID="ID_723979887" MODIFIED="1667780424969" TEXT="Problem: Rechnung geht nicht auf">
<icon BUILTIN="broken-line"/>
<node CREATED="1667349751008" ID="ID_952333352" MODIFIED="1667349762431" TEXT="runde auf n&#xe4;chsten Pixel">
<node CREATED="1667349764204" ID="ID_1815738825" MODIFIED="1667349818467" TEXT="Konsequenz &#x27f9; visible Window anpassen"/>
<node CREATED="1667349788035" ID="ID_281010107" MODIFIED="1667349803183" TEXT="Problem: Window kann gr&#xf6;&#xdf;er werden als Canvas">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1667349853811" ID="ID_1951953580" MODIFIED="1667350032602" TEXT="Canvas vergr&#xf6;&#xdf;ern? oder visible Window verkleinern?">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <ul>
      <li>
        Canvas vergr&#246;&#223;ern &#10233; f&#252;hrt zu kontinuierliecher Drift; der Canvas wird fortlaufend gr&#246;&#223;er
      </li>
      <li>
        Window verkleinern &#10233; hei&#223;t da&#223; man u.U den ganzen Canvas nicht ohne Rest darstellen kann
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1667350040338" ID="ID_1862995353" MODIFIED="1667350064695" TEXT="eigentliches Problem: diese Effekte sind relativ stark">
<icon BUILTIN="idea"/>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1667349713685" ID="ID_47270921" MODIFIED="1667780377917" TEXT="Metrik-Definition ist zu grobgranular">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1667350180367" ID="ID_494068879" MODIFIED="1667350205920" TEXT="Sekunden sind eine ziemlich beliebige Basiseinheit"/>
<node COLOR="#990033" CREATED="1667350206652" ID="ID_918270163" MODIFIED="1667528235333" TEXT="stattdessen: &#xb5;-Tick pro Pixel?">
<icon BUILTIN="help"/>
<node CREATED="1667350440373" ID="ID_1896628944" MODIFIED="1667350460022" TEXT="Vorsicht... Minimum w&#xe4;re dann 1&#xb5;T/px"/>
<node CREATED="1667350475136" ID="ID_1672716361" MODIFIED="1667350817413" TEXT="&#x27f9; Sound-Samples lassen sich nicht sauber darstellen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      alle 20 Schritte ein Sprung, bzw. sogar nur alle 10 Schritte bei 96kHz, denn 1/96000 = 10.41666666 &#181;Tick
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1667350536992" ID="ID_1838246834" MODIFIED="1667476855366" TEXT="das stellt die Implementierungs-Basis in Frage">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Die &#181;-Ticks hatten wir seinerzeit gew&#228;hlt, weil sie einerseits hinreichend genau sind, andererseits sehr einfach zu implementieren, und dennoch die Darstellung extrem gro&#223;er Zeitspannen erm&#246;glichen
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#af1a4c" DESTINATION="ID_767502481" ENDARROW="Default" ENDINCLINATION="96;-430;" ID="Arrow_ID_1672039685" STARTARROW="None" STARTINCLINATION="-670;38;"/>
<icon BUILTIN="stop-sign"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1667487735017" ID="ID_67642064" MODIFIED="1667487922535" TEXT="schwerwiegende Diskusison auf sp&#xe4;ter verschoben (#1258)">
<linktarget COLOR="#415eb7" DESTINATION="ID_67642064" ENDARROW="Default" ENDINCLINATION="-134;58;" ID="Arrow_ID_720683002" SOURCE="ID_745987096" STARTARROW="None" STARTINCLINATION="296;-90;"/>
<icon BUILTIN="hourglass"/>
</node>
<node CREATED="1667487765399" ID="ID_1902275269" MODIFIED="1667487918703" TEXT="denn das Problem tritt nur stellenweise auf und ist halb-theoretisch">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Tats&#228;chlich kann ein &#181;Tick-Grid auch Sound-Samples korrekt addressieren &#8212; man darf dann nur nicht diese Zeit-Werte f&#252;r weitere Berechnungen verwenden (denn sonst sammeln sich Rundungsfehler an). Es k&#246;nnte also eine Implementierung eben <i>wissen, </i>da&#223; hier Sound-Samples dargestellt/verarbeitet werden, und intern mit der exakten Skala arbeiten. Im Grunde ist das ein L&#246;sungsvorgriff auf die 3.L&#246;sungsvariante (Problem ignorieren und per Metadaten tunneln)... siehe Diskussion in #1258
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1667487705856" ID="ID_1110286196" MODIFIED="1667780271388" TEXT="fraktionale &#xb5;-Tick pro Pixel">
<icon BUILTIN="help"/>
<node CREATED="1667487984471" ID="ID_1826402546" MODIFIED="1667487992109" TEXT="intern also eine Bruchzahl speichern"/>
<node CREATED="1667487993113" ID="ID_452961268" MODIFIED="1667488005420" TEXT="Zahlen w&#xe4;ren auch numerisch viel gutm&#xfc;tiger"/>
<node CREATED="1667488026717" ID="ID_267648014" MODIFIED="1667488073400" TEXT="man k&#xf6;nnte dennoch den grobgranularen Getter bestehen lassen">
<icon BUILTIN="button_cancel"/>
<node CREATED="1667488090679" ID="ID_829965437" MODIFIED="1667488105799" TEXT="Gefahr: die Werte sind nur nahezu exakt">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1667488074367" ID="ID_710829210" MODIFIED="1667488114221" TEXT="Nein! das verlockt gradezu zu falscher Verwendung">
<icon BUILTIN="stop-sign"/>
</node>
<node CREATED="1667489964330" ID="ID_15160345" MODIFIED="1667491231003" TEXT="wenn schon: dann mu&#xdf; er einen Bruch liefern">
<arrowlink COLOR="#685b9d" DESTINATION="ID_1961281272" ENDARROW="Default" ENDINCLINATION="48;-77;" ID="Arrow_ID_1581272535" STARTARROW="None" STARTINCLINATION="-422;27;"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1667491005864" ID="ID_822261439" MODIFIED="1667780365646" TEXT="Metrik als Bruch behaldeln">
<icon BUILTIN="button_ok"/>
<node CREATED="1667491014630" ID="ID_1961281272" MODIFIED="1667491231004" TEXT="bleibe aber beim Schema px_per_sec">
<linktarget COLOR="#685b9d" DESTINATION="ID_1961281272" ENDARROW="Default" ENDINCLINATION="48;-77;" ID="Arrow_ID_1581272535" SOURCE="ID_15160345" STARTARROW="None" STARTINCLINATION="-422;27;"/>
<icon BUILTIN="yes"/>
<node CREATED="1667491099595" ID="ID_1763425828" MODIFIED="1667491114813" TEXT="konkret erwarte ich da handliche Werte"/>
<node CREATED="1667491115829" ID="ID_650357166" MODIFIED="1667491143008" TEXT="&#xb5;-Ticks sind immer ziemlich gro&#xdf;e Zahlen"/>
<node CREATED="1667491149381" ID="ID_1912148103" MODIFIED="1667491191987" TEXT="besser: Kurz-Notation einf&#xfc;hren (user-defined-literal)">
<icon BUILTIN="idea"/>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1667592413859" ID="ID_745987096" LINK="#ID_1398816169" MODIFIED="1667780421126" TEXT="brauche dazu einen offiziellen Zugang zu einer fraktionalen Repr&#xe4;sentation">
<arrowlink COLOR="#415eb7" DESTINATION="ID_67642064" ENDARROW="Default" ENDINCLINATION="-134;58;" ID="Arrow_ID_720683002" STARTARROW="None" STARTINCLINATION="296;-90;"/>
<icon BUILTIN="yes"/>
<icon BUILTIN="hourglass"/>
<node CREATED="1667592510702" ID="ID_669892678" MODIFIED="1667592532079" TEXT="Duration &#x27f6; FSec"/>
<node CREATED="1667592539018" ID="ID_1283310585" MODIFIED="1667592544568" TEXT="Offset &#x27f6; FSec"/>
<node CREATED="1667592532973" ID="ID_31952265" MODIFIED="1667592538214" TEXT="Time &#x27f6; FSec"/>
</node>
<node COLOR="#338800" CREATED="1667593654463" ID="ID_1694088540" MODIFIED="1667593677324" TEXT="vorl&#xe4;ufige Zwischenl&#xf6;sung: _FSecs() direkt in ZoomWindow-Header">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1667488158059" ID="ID_898168096" MODIFIED="1667491200716" TEXT="neue Zielvorgabe: Pixel-Angaben sind stets pr&#xe4;zise">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node COLOR="#338800" CREATED="1667593710047" ID="ID_920638973" MODIFIED="1667780371436" TEXT="kein Runden mehr, sondern nur noch truncate">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1667593719313" ID="ID_317494909" MODIFIED="1667780372742" TEXT="daf&#xfc;r die Toleranz senken auf der Metrik">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1667517436741" ID="ID_1018648571" MODIFIED="1667780388626" TEXT="Bruch-Notation einf&#xfc;hren">
<icon BUILTIN="button_ok"/>
<node CREATED="1667517450483" ID="ID_854101466" MODIFIED="1667517461957" TEXT="Rat = boost::rational&lt;int64_t&gt;"/>
<node CREATED="1667517463369" ID="ID_1946096292" MODIFIED="1667517490241">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      user-defined Literal: <font face="Monospaced" color="#5618bd">_r</font>
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1667603662334" ID="ID_162164091" MODIFIED="1667780457450" TEXT="drehe mich mit den geforderten Randbedingungen im Kreis">
<arrowlink COLOR="#5c3488" DESTINATION="ID_1507636517" ENDARROW="Default" ENDINCLINATION="27;-47;" ID="Arrow_ID_49426086" STARTARROW="None" STARTINCLINATION="-122;6;"/>
<icon BUILTIN="stop-sign"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1667603756089" ID="ID_1802881683" MODIFIED="1667603844726" TEXT="m&#xf6;chte einen maximal-Zoom-Faktor vorgeben">
<icon BUILTIN="yes"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1667603784445" ID="ID_1006588421" MODIFIED="1667603844726" TEXT="Fenster soll immer im Canvas bleiben">
<icon BUILTIN="yes"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1667603813378" ID="ID_1979403390" MODIFIED="1667603844727" TEXT="Pixel-Vorgaben stets einzuhalten">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1667603646312" FOLDED="true" ID="ID_1507636517" MODIFIED="1671237057680" TEXT="mu&#xdf; Invarianten sicherstellen">
<linktarget COLOR="#5c3488" DESTINATION="ID_1507636517" ENDARROW="Default" ENDINCLINATION="27;-47;" ID="Arrow_ID_49426086" SOURCE="ID_162164091" STARTARROW="None" STARTINCLINATION="-122;6;"/>
<icon BUILTIN="yes"/>
<node COLOR="#6a1790" CREATED="1667603900358" FOLDED="true" ID="ID_353785530" MODIFIED="1667780480867" TEXT="das zun&#xe4;cht (naiv) gew&#xe4;hlte Implementierungs-Schema ist nicht beherrschbar">
<icon BUILTIN="broken-line"/>
<node CREATED="1667603974758" ID="ID_1895105732" MODIFIED="1667603997149" TEXT="Konstuktor legt sichere Startwerte fest"/>
<node CREATED="1667603997785" ID="ID_1559828104" MODIFIED="1667604014827" TEXT="von dort weiter, mit Einzelfall-bezogenen Regeln"/>
</node>
<node CREATED="1667604115641" ID="ID_340228791" MODIFIED="1667604155428">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      mein Anspruch ist, hier eine <b>absolut fehlerfrei</b>&#160;arbeitende Komponente zu schreiben
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1667604025125" ID="ID_573471794" MODIFIED="1667604225117" TEXT="die Korrektur-Regeln zum Einhalten der Constraints sind komplex (im Allgemeinen)">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...und zwar, wenn man <i>wirklich alle</i>&#160;Eingangswerte zul&#228;&#223;t, und sich eben nicht nur auf <i>vern&#252;nftige </i>Eingaben <i>verl&#228;&#223;t.</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1667604082603" ID="ID_1966401065" MODIFIED="1667604109981" TEXT="ich mu&#xdf; letztlich Verg&#xf6;&#xdf;erung des Canvas zulassen (oder beliebig starken Zoom)">
<node CREATED="1667604258315" ID="ID_539837281" MODIFIED="1667604273064" TEXT="Canvas-Vergr&#xf6;&#xdf;erung erscheint mir pragmatischer"/>
<node CREATED="1667604319406" ID="ID_169844915" MODIFIED="1667604346784" TEXT="ich m&#xf6;chte den Zoom-Faktor auf eine technisch realisierbare Spanne beschr&#xe4;nken"/>
<node CREATED="1667604407474" ID="ID_1964908869" MODIFIED="1667609918926" TEXT="diese Spanne kann in der logarithmischen Skala vergleichsweise rasch durchschritten werden.">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      so &#177;15 2er-Potenz-Schritte gen&#252;gen, um von der maximalen Aufl&#246;sung in den Minuten-Bereich zu kommen
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1667610042409" ID="ID_1645790878" MODIFIED="1667610212422" TEXT="es kann nicht die Aufgabe des ZoomWindow sein, sinnvolle Speicher-Limits einzuhalten">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      insofern mu&#223; es dann aber auch mit maximal gro&#223;en Integer-Zahlen noch sauber funktionieren
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1667610216018" ID="ID_399148751" MODIFIED="1667610253025" TEXT="insofern ist das hier auch eine sportliche Herausforderung">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...einmal wirklich sicheren Code schreiben...
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node CREATED="1667610259517" ID="ID_738196107" MODIFIED="1667610281605" TEXT="andere Code-Struktur als L&#xf6;sung?">
<node CREATED="1667610283233" ID="ID_1965026515" MODIFIED="1667610294374" TEXT="Konstruktur initialisiert nur"/>
<node CREATED="1667610295059" ID="ID_15303386" MODIFIED="1667610302622" TEXT="es gibt eine Invarianten-Funktion"/>
<node CREATED="1667610303406" ID="ID_268951847" MODIFIED="1667610331180" TEXT="diese f&#xfc;hrt eine feste Folge von Pr&#xfc;f- und Korrekturschritten aus"/>
<node CREATED="1667610416991" ID="ID_1022295277" MODIFIED="1667610430339" TEXT="und die gleiche Funktion wird nach jeder &#xc4;nderung gleicherma&#xdf;en angewendet"/>
</node>
<node CREATED="1667610443917" ID="ID_156996069" MODIFIED="1667610464053" TEXT="Invariante(n)">
<node CREATED="1667610465437" ID="ID_1890704401" MODIFIED="1667660026181" TEXT="pxWidth konstant erhalten">
<icon BUILTIN="full-1"/>
</node>
<node CREATED="1667610496460" ID="ID_1598935964" MODIFIED="1667660029149" TEXT="Metrik &lt; Maximal-Faktor">
<icon BUILTIN="full-2"/>
</node>
<node CREATED="1667610522737" ID="ID_870501024" MODIFIED="1667660034107" TEXT="visibleWindow &#x2282; Canvas">
<icon BUILTIN="full-3"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1667610617421" ID="ID_1255567216" MODIFIED="1667780589952" TEXT="Ausgleichs-Regeln">
<icon BUILTIN="idea"/>
<node COLOR="#338800" CREATED="1667610965654" ID="ID_1822123568" MODIFIED="1667667095016" TEXT="Canvas und Fenster orientieren">
<icon BUILTIN="button_ok"/>
<node CREATED="1667667099807" ID="ID_313293093" MODIFIED="1667667110754" TEXT="kann relativ brachial erfolgen">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1667667111845" ID="ID_240814651" MODIFIED="1667667131096" TEXT="Input kann nur leer sein, nicht negativ"/>
<node CREATED="1667667143969" ID="ID_971076298" MODIFIED="1667667564598" TEXT="falls leer, weite aus auf DEFAULT_CANVAS (&#x2259; 23sec)">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...zun&#228;chst habe ich hier immer nur das Minimale getan, n&#228;mlich 1 &#181;Tick aufgeweitet; dies w&#252;rde zwar funktionieren, aber in der Regel nicht zu einem praktikablen Verhalten f&#252;hren &#8212; wohingegen der <i>DEFAULT_CANVAS</i>&#160; so gew&#228;hlt ist, da&#223; er klein und handlich ist
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1667667185251" ID="ID_396603353" MODIFIED="1667667316295" TEXT="extrem gro&#xdf;e Canvas oder Fenster sind nicht gef&#xe4;hrlich">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      sofern wir den Speicher haben...
    </p>
    <p>
      Will sagen, sie sind nicht gef&#228;hrlich f&#252;r den Invarianten-Mechanismus, denn f&#252;r diesen wird es ehr bei sehr kleinen Zeitspannen kniffelig; wohingegen beliebig starkes zoom-out stets repr&#228;sentierbar ist als fraktionaler Integer
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#338800" CREATED="1667611339595" ID="ID_1035209313" MODIFIED="1667668297039" TEXT="pxWidth errechnen / festsetzen">
<icon BUILTIN="button_ok"/>
<node CREATED="1667667900172" ID="ID_638983817" MODIFIED="1667667999509" TEXT="hier nun doch eine Maximal-Pixelzahl eingef&#xfc;hrt">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...auch das basiert auf einer pragmatischen &#220;berlegung; theoretisch k&#246;nnten wir beliebig gro&#223;e Pixelanzahl unterst&#252;tzen, dies w&#252;rde aber auf allen Ebenen zu unerwartetem Verhalten f&#252;hren, dessen Konsequenzen ich nicht &#252;berblicke &#10233; dann besser eine willk&#252;rliche und hinreichend gro&#223;e Grenze
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1667668184215" ID="ID_364715169" MODIFIED="1667668292358" TEXT="und fall-back auf das visibleWin in default-Metrik">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      dies ist ein reiner Platzhalter f&#252;r Tests, denn in der Praxis erwarte ich stets da&#223; sofort zu Beginn eine Breite in Pixeln gesetzt wird &#8212; kann ja gar nicht anders sein...
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#338800" CREATED="1671236494801" ID="ID_50154227" MODIFIED="1671236514711" TEXT="inh&#xe4;rente Grenzen der Zoom-Metrik">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1671236517973" ID="ID_1641527388" MODIFIED="1671236616158" TEXT="nachtr&#xe4;glich eingef&#xfc;hrt im Zuge der Stre&#xdf;-Tests">
<arrowlink COLOR="#6499bb" DESTINATION="ID_78031576" ENDARROW="Default" ENDINCLINATION="-146;-1064;" ID="Arrow_ID_283548397" STARTARROW="None" STARTINCLINATION="967;54;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1671236771308" ID="ID_1634457986" MODIFIED="1671236783202" TEXT="zoom &lt; 2*Time::SCALE"/>
<node COLOR="#435e98" CREATED="1671236757105" ID="ID_1364175921" MODIFIED="1671236783202" TEXT="zoom &gt; LIM_HAZARD/1000"/>
<node CREATED="1671236506015" ID="ID_1832535054" MODIFIED="1671236795038" TEXT="&#xbb;conformWindowToMetricLimits&#xab;"/>
</node>
<node CREATED="1667610653277" ID="ID_1224205751" MODIFIED="1667611359311" TEXT="neue Metrik &#x27f6; visibleWin">
<node CREATED="1667659377837" ID="ID_634768326" MODIFIED="1667659613008" TEXT="&#xbb;conformWindowToMetric&#xab;">
<node CREATED="1667780062257" ID="ID_765381666" MODIFIED="1667780567605" TEXT="zentriert auch um Ankerpunkt">
<arrowlink COLOR="#f6eea5" DESTINATION="ID_1526154403" ENDARROW="Default" ENDINCLINATION="806;0;" ID="Arrow_ID_1380091213" STARTARROW="None" STARTINCLINATION="255;23;"/>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1667780073285" ID="ID_956345787" MODIFIED="1667780222348" TEXT="enth&#xe4;lt zentrale bound + sanity-Checks">
<arrowlink COLOR="#588caf" DESTINATION="ID_1376383397" ENDARROW="Default" ENDINCLINATION="-365;-86;" ID="Arrow_ID_1012524185" STARTARROW="None" STARTINCLINATION="244;18;"/>
</node>
</node>
</node>
<node CREATED="1667610682228" ID="ID_154285310" MODIFIED="1667610688031" TEXT="Fenster in Canvas schieben">
<node CREATED="1667659486321" ID="ID_897577157" MODIFIED="1667659616368" TEXT="&#xbb;conformWindowToCanvas&#xab;"/>
</node>
<node CREATED="1667610688715" ID="ID_11883276" MODIFIED="1667610699053" TEXT="Fenster auf Canvas beschneiden"/>
<node CREATED="1667610653277" ID="ID_831514693" MODIFIED="1667611449269" TEXT="neue Metrik &#x27f5; visibleWin">
<node CREATED="1667659622859" ID="ID_828891167" MODIFIED="1667659633949" TEXT="&#xbb;conformMetricToWindow&#xab;"/>
<node COLOR="#435e98" CREATED="1671236817013" ID="ID_661439299" LINK="#ID_1175951405" MODIFIED="1671236839666">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      das ist das <b>Kernst&#252;ck</b>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="forward"/>
</node>
</node>
<node CREATED="1667611135215" ID="ID_1783825207" MODIFIED="1667611444146" TEXT="neue Metrik beschneiden">
<node CREATED="1667659689795" ID="ID_1515577475" MODIFIED="1667659703886" TEXT="&#xbb;conformBounds&#xab;"/>
<node CREATED="1667672310513" ID="ID_1440027403" MODIFIED="1667672328162" TEXT="Metric &lt; MAX_ZOOM"/>
<node CREATED="1667610653277" ID="ID_761246682" MODIFIED="1667682138815" TEXT="Metrik &#x27f6; visibleWin">
<linktarget COLOR="#9e7367" DESTINATION="ID_761246682" ENDARROW="Default" ENDINCLINATION="145;-11;" ID="Arrow_ID_702546557" SOURCE="ID_1067254564" STARTARROW="None" STARTINCLINATION="-54;-36;"/>
</node>
<node CREATED="1667611247456" ID="ID_1658100193" MODIFIED="1667611265274" TEXT="visibleWin &#x27f6; Canvas"/>
<node COLOR="#435e98" CREATED="1667673574471" FOLDED="true" ID="ID_1973274504" MODIFIED="1667774166875" TEXT="neue Metrik &lt; MAX_ZOOM">
<icon BUILTIN="help"/>
<node CREATED="1667673606578" ID="ID_1067254564" MODIFIED="1667682151865" TEXT="potentiell gef&#xe4;hrlich: Metrik &#x27f6; visibleWin">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      denn dabei wird gerundet, um die exakte Pixel-Zahl zu erhalten
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#9e7367" DESTINATION="ID_761246682" ENDARROW="Default" ENDINCLINATION="145;-11;" ID="Arrow_ID_702546557" STARTARROW="None" STARTINCLINATION="-54;-36;"/>
</node>
<node CREATED="1667682713949" ID="ID_425310807" MODIFIED="1667682719231" TEXT="Grenzfall-Analyse">
<node CREATED="1667682721338" ID="ID_842333816" MODIFIED="1667682794317" TEXT="Fenster kann verk&#xfc;rzt werden durch Rundung">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <font face="Monospaced">afterWin_ = startWin_ + Time{dur};</font>
    </p>
    <p>
      wobei dur einen fraktionalen Anteil &lt; 1 &#181;Tick enthalten k&#246;nnte
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#338800" CREATED="1667683782783" ID="ID_1842670966" MODIFIED="1667683907910" TEXT="MAX_TIMESPAN: Begrenzung hier nicht relevant">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Der Grenzfall ist ja changedMetric = MAX_ZOOM
    </p>
    <p>
      Wenn ich das durch eine irgendwie geartete pxWidth teile, wird es niemals gr&#246;&#223;er, und zudem ist MAX_ZOOM &lt; MAX_TIMESPAN
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1667683116532" ID="ID_895916326" MODIFIED="1667683126786" TEXT="ruft auf: conformMetricToWindow">
<node COLOR="#435e98" CREATED="1667683149810" ID="ID_872183002" MODIFIED="1667683633595" TEXT="Bug: errechnet pxWidth neu mit schon ge&#xe4;nderter L&#xe4;nge">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      das bedeutet: genau durch diese Abrundung auf den n&#228;chst kleineren &#181;Tick k&#246;nnten wir u.U einen Pixel verlieren
    </p>
    <p>
      &#10233; Abhilfe: originale pxWidth als Paremeter mitgeben
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="broken-line"/>
</node>
<node CREATED="1667683634701" ID="ID_1449451873" MODIFIED="1667685735423" TEXT="Metrik kann minimal gr&#xf6;&#xdf;er geworden sein (durch Rundung)">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <u>Konkretes Rechenbeispiel:</u>
    </p>
    <p>
      pxWidth = 99999&#160;&#160;(ein Pixel weniger als maximal m&#246;glich)
    </p>
    <p>
      changedMetric = MAX_ZOOM = 2000000
    </p>
    <p>
      &#10233; conformWindowToMetric() errechnet
    </p>
    <p>
      dur = 49999+1/2 &#181;Tick
    </p>
    <p>
      &#55358;&#56370; das wird abgerundet auf 49999 &#181;Tick
    </p>
    <p>
      
    </p>
    <p>
      &#10233; conformMetricToWindow() errechnet
    </p>
    <p>
      adjMetric = 99999 / (49999/1000000) = 2000020,0004000080001600032
    </p>
    <p>
      
    </p>
    <p>
      &#10233; das ist <b>definitiv gr&#246;&#223;er</b>&#160;als MAX_ZOOM
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1667688476525" ID="ID_226096711" MODIFIED="1667688576067" TEXT="&#x27f9; Konsequenz: Bias in Richtung vergr&#xf6;&#xdf;erter Zoom / verkleinertes Fenster">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1667688579306" ID="ID_486622183" MODIFIED="1667688586268" TEXT="allerdings ein sehr kleiner Effekt"/>
<node CREATED="1667688595090" ID="ID_1458378798" MODIFIED="1667688601683" TEXT="&#xe4;quivalent +1 &#xb5;Tick"/>
<node CREATED="1667688946763" ID="ID_376119418" MODIFIED="1667689144112" TEXT="trotzdem unerw&#xfc;nscht &#x27f9; man kommt nicht zum Anfrang zur&#xfc;ck">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      einmal stark reinzoomen, und dann wieder zur&#252;ck &#10233; Bereich ist beschnitten und kleiner geworden; das ist l&#228;stig, weil die n&#228;chst gr&#246;&#223;ere Stufe deutlich gr&#246;&#223;er ist; meiner Einsch&#228;tzung nach w&#228;re es weniger l&#228;stig, wenn man ein kleines bischen zu viel sieht, zumal sich das auf der n&#228;chsten Zweierpotenz einpendeln d&#252;rfte
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#338800" CREATED="1667687800139" ID="ID_1785911993" MODIFIED="1667774152727" TEXT="Abhilfe">
<linktarget COLOR="#6989a3" DESTINATION="ID_1785911993" ENDARROW="Default" ENDINCLINATION="972;1311;" ID="Arrow_ID_993002191" SOURCE="ID_59748398" STARTARROW="None" STARTINCLINATION="1011;-3697;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1667687810116" ID="ID_1519072103" MODIFIED="1667689196961" TEXT="L&#xf6;sung-1">
<icon BUILTIN="smily_bad"/>
<node CREATED="1667688228377" ID="ID_1083352192" MODIFIED="1667688446311" TEXT="den Fall MAX_ZOOM + Rundungsfehler explizit abtesten"/>
<node CREATED="1667688234896" ID="ID_1025502092" MODIFIED="1667688423306" TEXT="und dann das visibleWin um 1 &#xb5;Tick vergr&#xf6;&#xdf;ern">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...vergr&#246;&#223;ern, weil damit die Metrik kleiner wird und unter der Schwelle MAX_ZOOM gehalten wird
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1667688257381" ID="ID_1551466069" MODIFIED="1667689187817" TEXT="L&#xf6;sung-2">
<icon BUILTIN="button_cancel"/>
<node CREATED="1667688279379" ID="ID_873793356" MODIFIED="1667688288165" TEXT="stets pauschal 1&#xb5;Tick aufschlagen"/>
<node CREATED="1667688305031" ID="ID_950638301" MODIFIED="1667688330439" TEXT="keine gute Idee: behandelt exakte Verh&#xe4;ltnisse falsch"/>
</node>
<node COLOR="#435e98" CREATED="1667688337402" ID="ID_124934014" MODIFIED="1667774147291" TEXT="L&#xf6;sung-3">
<icon BUILTIN="forward"/>
<node COLOR="#338800" CREATED="1667688343137" ID="ID_1666323585" MODIFIED="1667774142887" TEXT="explizit auf Rundungsfehler testen">
<arrowlink COLOR="#16967b" DESTINATION="ID_395273674" ENDARROW="Default" ENDINCLINATION="-430;-19;" ID="Arrow_ID_1396048890" STARTARROW="None" STARTINCLINATION="308;26;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1667688354104" ID="ID_1203966035" MODIFIED="1667774073074" TEXT="und in diesem Fall visibleWin um 1 &#xb5;Tick vergr&#xf6;&#xdf;ern">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#990000" CREATED="1667689836161" FOLDED="true" ID="ID_1356615492" MODIFIED="1667760039819" TEXT="besser: Aufrundungs-Konstante addieren">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...nach grober Absch&#228;tzung sind das weniger Operationen, als die Konvertierung auszuf&#252;hren und zur&#252;ck zu konvertieren und dann zu testen; zwar k&#246;nnte der Optimiser den Test per common subexpression noch vereinfachen &#8212; aber letztlich empfinde ich das Addieren einer ULP-Konstante als deklarativer
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_cancel"/>
<node COLOR="#338800" CREATED="1667690184889" ID="ID_1410341897" MODIFIED="1667753830123" TEXT="Vorsicht: experimentell pr&#xfc;fen">
<icon BUILTIN="button_ok"/>
<node CREATED="1667747398556" ID="ID_952719507" MODIFIED="1667747493566" TEXT="wie schon vermutet">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      es kommt eine negative Zahl heraus: IntMax * Scale &#10236; -Scale&#160;&#160;(im Nenner)
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="smiley-oh"/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1667747411897" ID="ID_767311084" MODIFIED="1667747502782" TEXT="Fract-Arithmetik kann entgleisen">
<icon BUILTIN="clanbomber"/>
<node CREATED="1667757234228" ID="ID_1561483253" MODIFIED="1667757240865" TEXT="gef&#xe4;hrlich sind die Nenner">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1667757241668" ID="ID_149215399" MODIFIED="1667757383608" TEXT="zu jedem gegebenen Nenner &gt; 1..."/>
<node CREATED="1667757251446" ID="ID_1048380323" MODIFIED="1667759097045">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      l&#228;&#223;t sich ein &#187;<b>unbeherrschbarer Summand</b>&#171; konstruieren
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#7e4c66" DESTINATION="ID_1048380323" ENDARROW="Default" ENDINCLINATION="411;20;" ID="Arrow_ID_1424188982" SOURCE="ID_1576668072" STARTARROW="None" STARTINCLINATION="450;-29;"/>
</node>
<node CREATED="1667757360499" ID="ID_1110013809" MODIFIED="1667757378957" TEXT="im Zweifelsfall 1/IntMax"/>
</node>
</node>
<node CREATED="1667747515038" ID="ID_1929663553" MODIFIED="1667753823728" TEXT="gesucht: Rational-Konstante">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#990000" CREATED="1667747539288" ID="ID_1951969589" MODIFIED="1667754024155" TEXT="naiver-Ansatz: ein ULP abziehen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      da wird die Rechnung schwierig, denn ich kann es nicht ohne Weiteres mathematisch greifen....
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#fd2a6a" DESTINATION="ID_1951969589" ENDARROW="Default" ENDINCLINATION="228;179;" ID="Arrow_ID_1471419287" SOURCE="ID_219818450" STARTARROW="None" STARTINCLINATION="-119;-5;"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1667748952764" ID="ID_1863452609" MODIFIED="1667751189345">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Ansatz mit Unbekannten
    </p>
    <p style="text-align: center">
      1/S - 1/M = x / I&#160;&#160;&lt; 1/S
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head>
    
    
  </head>
  <body>
    <p>
      Ansatz mit Unbekannten f&#252;hrt auf eine nicht-lineare Gleichung, welche 
      die beiden Unbekannten verkn&#252;pft....
    </p>
    <p>
      mit ULP = 1/M&#160;&#160;und I (IntMax) und S (&#181;Tick Scale) setze ich an:
    </p>
    <p>
      
    </p>
    <p>
      &#55358;&#56370; 1/s - 1/M = x / I
    </p>
    <p>
      
    </p>
    <p>
      denn einen Ausdruck x/I kann man grade noch repr&#228;sentieren in 
      fraktionaler Arithmetik.
    </p>
    <p>
      Das f&#252;rhrt dann leider zu einger Gleichung, die nicht besonders <i>sexy</i>&#160;daherkommt
    </p>
    <p>
      <br>
      &#55358;&#56370; I&#183;S = I&#183;M - x&#183;M&#183;S
    </p>
    <p>
      
    </p>
    <p>
      also
    </p>
    <ul>
      <li>
        &#160;x = (I&#183;M - I&#183;S ) / (M&#183;S) = (M - S) / (M&#183;S/I) = I &#183; (M - S)/(M&#183;S)
      </li>
      <li>
        &#160;M = I&#183;S / (I - x&#183;S) = S / (1 - x&#183;S/I)
      </li>
    </ul>
    <p>
      
    </p>
    <p>
      
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1667749206392" ID="ID_1460373483" MODIFIED="1667751173463" TEXT="suche das gr&#xf6;&#xdf;tm&#xf6;gliche repr&#xe4;sentierbare x">
<icon BUILTIN="yes"/>
<node CREATED="1667751592378" ID="ID_18326921" MODIFIED="1667751601497" TEXT="mu&#xdf; eine Ganzzahl sein"/>
<node CREATED="1667751607890" ID="ID_132312569" MODIFIED="1667752562566" TEXT="mu&#xdf; kleiner sein als I/S">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      denn f&#252;r x &#8788; I/S&#160;&#160;ergibt sich x/I = 1/s
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#fdf78d" DESTINATION="ID_1095374074" ENDARROW="Default" ENDINCLINATION="26;-56;" ID="Arrow_ID_747520692" STARTARROW="None" STARTINCLINATION="-198;19;"/>
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1667749438203" ID="ID_161790566" MODIFIED="1667749475409" TEXT="&#x27f9; Diskussion von f(M) = 1/S - 1/M">
<node CREATED="1667750115800" ID="ID_56326642" MODIFIED="1667750136091" TEXT="(M - S) / (M&#xb7;S)"/>
<node CREATED="1667749568601" ID="ID_471212878" MODIFIED="1667749579627" TEXT="Funktion hat kein lokales Minimum"/>
<node CREATED="1667749580760" ID="ID_324213979" MODIFIED="1667749608656" TEXT="Funktion ist f&#xfc;r positive M monoton wachesnd mit Grenzwert 1/S"/>
<node CREATED="1667751717132" ID="ID_340559314" MODIFIED="1667751723817" TEXT="Sackgasse">
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1667752512074" ID="ID_1095374074" MODIFIED="1667752569851" TEXT="Problem emprisch/numerisch l&#xf6;sbar">
<linktarget COLOR="#fdf78d" DESTINATION="ID_1095374074" ENDARROW="Default" ENDINCLINATION="26;-56;" ID="Arrow_ID_747520692" SOURCE="ID_132312569" STARTARROW="None" STARTINCLINATION="-198;19;"/>
<icon BUILTIN="idea"/>
<node CREATED="1667752577050" ID="ID_1732134433" MODIFIED="1667752586180" TEXT="I/S ist selber keine Ganzzahl"/>
<node CREATED="1667752586960" ID="ID_1690080736" MODIFIED="1667752609545" TEXT="also kann man ausrechnen rational_cast&lt;int64_t&gt; (I/S)"/>
<node CREATED="1667752612145" ID="ID_895088673" MODIFIED="1667752625679" TEXT="und wegen der Truncation ist das dann unser gesuchtes x"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1667752642697" ID="ID_1015534138" MODIFIED="1667752662085" TEXT=" x = 9223372036854">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="forward"/>
</node>
<node CREATED="1667752695274" ID="ID_1446953820" MODIFIED="1667752882367">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <u>empirsche Kontrolle</u>
    </p>
    <p>
      <font face="Monospaced">&#160;&#160;&#160;&#160;const Rat UU = Rat(X/I); </font>
    </p>
    <p>
      <font face="Monospaced">&#160;&#160;&#160;&#160;SHOW_EXPR (UU); </font>
    </p>
    <p>
      <font face="Monospaced">&#160;&#160;&#160;&#160;SHOW_EXPR ((UU &lt; MICRO_TICK)); </font>
    </p>
    <p>
      <font face="Monospaced">&#160;&#160;&#160;&#160;SHOW_EXPR ((Rat(X+1)/I &lt; MICRO_TICK)); </font>
    </p>
    <p>
      
    </p>
    <p>
      <u>Ausgabe...</u>
    </p>
    <p>
      <font color="#2d158d" face="Monospaced" size="2">Probe rational_cast&lt;int64_t&gt;(LIM) ? = 9223372036854 </font>
    </p>
    <p>
      <font color="#2d158d" face="Monospaced" size="2">Probe UU ? = 9223372036854/9223372036854775807 </font>
    </p>
    <p>
      <font color="#2d158d" face="Monospaced" size="2">Probe (UU &lt; MICRO_TICK) ? = </font><font color="#fe0d1e" face="Monospaced" size="2">true</font>
    </p>
    <p>
      <font color="#2d158d" face="Monospaced" size="2">Probe (Rat(X+1)/I &lt; MICRO_TICK) ? = </font><font color="#f44d8f" face="Monospaced" size="2">false</font>
    </p>
    <p>
      
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1667753664696" ID="ID_324128019" MODIFIED="1667753836503" TEXT="praktisch aber nicht brauchbar">
<icon BUILTIN="stop-sign"/>
<node CREATED="1667753679862" ID="ID_114001625" MODIFIED="1667753691100" TEXT="weil unser ULP im Nenner IntMax enth&#xe4;lt"/>
<node CREATED="1667753692252" ID="ID_1791487346" MODIFIED="1667753710406" TEXT="wird jede Fractional-Rechnung mit einer teilerfremden Zahl entgleisen"/>
<node CREATED="1667753910591" ID="ID_219818450" MODIFIED="1667754029902" TEXT="&#x27f9; es gibt repre&#xe4;sentierbare Zahlen, die nicht mit ULP beaufschlagt werden k&#xf6;nnen">
<arrowlink COLOR="#fd2a6a" DESTINATION="ID_1951969589" ENDARROW="Default" ENDINCLINATION="228;179;" ID="Arrow_ID_1471419287" STARTARROW="None" STARTINCLINATION="-119;-5;"/>
<icon BUILTIN="closed"/>
</node>
<node CREATED="1667754041750" ID="ID_680571899" MODIFIED="1667754051627" TEXT="damit bricht der ganze Ansatz zusammen">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1667754062939" ID="ID_415976096" MODIFIED="1667774059912" TEXT="pragmatischer Ansatz: Rechnung analysieren">
<icon BUILTIN="button_ok"/>
<node CREATED="1667754986080" ID="ID_569618069" MODIFIED="1667754991939" TEXT="was wird gerechnet?">
<node CREATED="1667755010501" ID="ID_452896877" MODIFIED="1667755012696" TEXT="dur = Rat(pxWidth) / changedMetric;"/>
<node CREATED="1667760086102" ID="ID_1300680991" MODIFIED="1667760242140" TEXT="S &#xb7; dur mu&#xdf; Ganzzahl werden"/>
<node CREATED="1667760247368" ID="ID_1551257128" MODIFIED="1667770564715" TEXT="lieder gibt es daf&#xfc;r viele M&#xf6;glichkeiten...">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <ul>
      <li>
        Wenn der Nenner selbst S ist
      </li>
      <li>
        Wenn der Nenner ein Teiler von S ist
      </li>
      <li>
        wenn der Nenner ein Teiler von S &#183; pxWidth ist
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1667755619878" ID="ID_52791788" MODIFIED="1667755640606" TEXT="Problem: Metrik ist eingabe-Parameter, also beliebig">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1667755644345" ID="ID_834430909" MODIFIED="1667755652835" TEXT="ohne eine Gesamtanalyse komme ich hier nicht weiter"/>
<node CREATED="1667757006642" ID="ID_1683391428" MODIFIED="1667757022260" TEXT="l&#xe4;uft auf ein &#xe4;hnliges Argument wie oben hinaus...?"/>
<node CREATED="1667757079456" ID="ID_1233477394" MODIFIED="1667757139221" TEXT="metric.numerator() kann im Extremfall IntMax sein"/>
<node CREATED="1667757144904" ID="ID_1576668072" MODIFIED="1667759201511" TEXT="und keine Addition damit w&#xe4;re beherrschbar">
<arrowlink COLOR="#7e4c66" DESTINATION="ID_1048380323" ENDARROW="Default" ENDINCLINATION="411;20;" ID="Arrow_ID_1424188982" STARTARROW="None" STARTINCLINATION="450;-29;"/>
<arrowlink COLOR="#fd3f58" DESTINATION="ID_87489281" ENDARROW="Default" ENDINCLINATION="95;0;" ID="Arrow_ID_1297278568" STARTARROW="None" STARTINCLINATION="-251;16;"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1667759132638" ID="ID_87489281" MODIFIED="1667759196400" TEXT="Fazit: additive Konstante f&#xfc;hrt eine unn&#xf6;tige Gefahr ein">
<linktarget COLOR="#fd3f58" DESTINATION="ID_87489281" ENDARROW="Default" ENDINCLINATION="95;0;" ID="Arrow_ID_1297278568" SOURCE="ID_1576668072" STARTARROW="None" STARTINCLINATION="-251;16;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node COLOR="#338800" CREATED="1667770583325" ID="ID_1376383397" MODIFIED="1667774045227" TEXT="Test und Anpassung sicher implementieren">
<linktarget COLOR="#588caf" DESTINATION="ID_1376383397" ENDARROW="Default" ENDINCLINATION="-365;-86;" ID="Arrow_ID_1012524185" SOURCE="ID_956345787" STARTARROW="None" STARTINCLINATION="244;18;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1667770594084" ID="ID_986392174" MODIFIED="1667770606454" TEXT="stellt sich als &#xfc;berraschend kniffelig heraus"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1667770659811" ID="ID_1409927740" LINK="#ID_1236820860" MODIFIED="1667770728339" TEXT="besonders l&#xe4;stig: die einseitigen Einschr&#xe4;nkungen mit TimeVar">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1667770746680" ID="ID_811746832" MODIFIED="1667770768217" TEXT="wenn TIme, TimeVal und TimeVar das Gleiche w&#xe4;ren..."/>
<node CREATED="1667770768901" ID="ID_1155429207" MODIFIED="1667770782222" TEXT="dann lie&#xdf;e sich sowas wie hier viel einfacher implementieren"/>
<node COLOR="#435e98" CREATED="1667770804751" ID="ID_999676314" MODIFIED="1667770824136" TEXT="habe deshalb Ticket #1261 angelegt">
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#338800" CREATED="1667774098939" ID="ID_395273674" MODIFIED="1667774133273" TEXT="der Test selber l&#xe4;&#xdf;t sich auf einen Modulo-Check reduzieren">
<linktarget COLOR="#16967b" DESTINATION="ID_395273674" ENDARROW="Default" ENDINCLINATION="-430;-19;" ID="Arrow_ID_1396048890" SOURCE="ID_1666323585" STARTARROW="None" STARTINCLINATION="308;26;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1670694560258" ID="ID_396828585" MODIFIED="1670694655272" TEXT="und sogar noch so vereinfachen da&#xdf; er nicht mehr wrappt">
<arrowlink COLOR="#50a780" DESTINATION="ID_1981781381" ENDARROW="Default" ENDINCLINATION="1222;-1794;" ID="Arrow_ID_276369750" STARTARROW="None" STARTINCLINATION="477;23;"/>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1667773768899" ID="ID_1573161089" MODIFIED="1667773780121" TEXT="verwende nun zus&#xe4;tzliche lokal definierte Operatoren"/>
<node CREATED="1667773780950" ID="ID_1691901384" MODIFIED="1667773787049" TEXT="Thma auf sp&#xe4;ter vertagt">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1667659852956" ID="ID_1802836695" MODIFIED="1668131990115" TEXT="Implementierung">
<icon BUILTIN="button_ok"/>
<node CREATED="1667659867147" ID="ID_1797487380" MODIFIED="1667659882100" TEXT="jeweils den beweglichen Teil als Argument"/>
<node CREATED="1667659890055" ID="ID_1728452596" MODIFIED="1667659897292" TEXT="immer nur einen Aspekt justieren"/>
<node CREATED="1667659931146" ID="ID_1567516385" MODIFIED="1667659944676" TEXT="die jeweilige Ziel-Invariante per Assertion dokumentieren"/>
<node COLOR="#338800" CREATED="1667698387387" ID="ID_1173911153" MODIFIED="1667787327395" TEXT="Normalisierungs-Sequenz auf Basis der einzel-Normalisierungen definieren">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1667774188104" ID="ID_377878203" MODIFIED="1668131988380" TEXT="alle externen Manipulationen darauf aufsetzen (und erfolgreich testen)">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1667260366701" ID="ID_1895903283" MODIFIED="1668132061931" TEXT="sonstige F&#xe4;lle lt. Spec">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1667260373164" ID="ID_1630007510" MODIFIED="1667960414569" TEXT="Konstruktor">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1667260420318" ID="ID_477529431" MODIFIED="1667960405494" TEXT="komplett default">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1667260430580" ID="ID_750011979" MODIFIED="1667960406446" TEXT="partielle Angaben">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1667260502770" ID="ID_723001683" MODIFIED="1667960415708" TEXT="Metrik kalibrieren">
<icon BUILTIN="button_ok"/>
<node CREATED="1667517362063" ID="ID_692971631" MODIFIED="1667517374025" TEXT="Metrik-&#xc4;nderung wird auf das aktuelle window angewendet"/>
<node CREATED="1667517374757" ID="ID_1436498397" MODIFIED="1667960401094" TEXT="danach aber shift/scroll, damit das Window im Canvas bleibt"/>
<node CREATED="1667517394850" ID="ID_360062482" MODIFIED="1667517421035" TEXT="Beschnitt, wenn das Window zu gro&#xdf; wird &#x27f9; Metrik dann angepa&#xdf;t"/>
</node>
<node COLOR="#338800" CREATED="1667318608370" ID="ID_888607544" MODIFIED="1668131950765" TEXT="Metrik manipulieren">
<icon BUILTIN="button_ok"/>
<node CREATED="1667318655807" ID="ID_1664936439" MODIFIED="1667960424344" TEXT="Einschr&#xe4;nkung der Testbarkeit hier">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1667318668477" ID="ID_841988354" MODIFIED="1667318701059" TEXT="Regel f&#xfc;r AnchorPoint sollte offen bleiben">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1667260470855" ID="ID_1346204475" MODIFIED="1668131895009" TEXT="Grenzf&#xe4;lle / Fehlerbehandlung ausleuchten">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1667517252905" ID="ID_335958554" MODIFIED="1667960483441" TEXT="gr&#xf6;&#xdf;tm&#xf6;glicher Zoom &#x2259; 2px / &#xb5;-Tick">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1671236879381" ID="ID_1741876890" LINK="#ID_368621922" MODIFIED="1671237047783" TEXT="kleinstm&#xf6;glicher Zoom &#x2259; ganze Time-Domain (erreichbar ab 560px Window)">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1667517299247" ID="ID_1450395718" MODIFIED="1667960483442" TEXT="kleinstm&#xf6;gliches window &#x2259; 1 &#xb5;-Tick">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1667517317821" ID="ID_1713703867" MODIFIED="1668110364974" TEXT="weitest m&#xf6;glicher zoom-out &#x2259; Canvas-size">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1667517346296" ID="ID_1169099153" MODIFIED="1668110660571" TEXT="aber: kann Canvas per reverse-Zoom expandieren">
<icon BUILTIN="button_ok"/>
<node CREATED="1668110423021" ID="ID_634828014" MODIFIED="1668110534049" TEXT="Ansatz: affin-lineare Transformation ">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1668110480428" ID="ID_1914764887" MODIFIED="1668110499005" TEXT="f &#x27fc; a&#xb7;x + b">
<node COLOR="#435e98" CREATED="1668110501176" ID="ID_301241943" MODIFIED="1668110530507" TEXT="zwei Gleichungen mit zwei Unbekannten">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1668110510702" ID="ID_994770187" MODIFIED="1668110529021" TEXT="Rechnung insgesamt in Rat ausf&#xfc;hren">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1668110543283" ID="ID_1610967476" MODIFIED="1668110656569" TEXT="Test auf Anhieb erfolgreich">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Mathematik halt....
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node COLOR="#338800" CREATED="1668131918787" ID="ID_663070466" MODIFIED="1668131947409" TEXT="runden um vorgegebene Pixel-Breite zu erzielen">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1667318726445" ID="ID_1535955412" MODIFIED="1668131953303" TEXT="visibleRange setzen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1667528162442" ID="ID_1415942522" MODIFIED="1668131967248" TEXT="setzen einer Anker-Position">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1667528171215" ID="ID_1526154403" MODIFIED="1668131970674" TEXT="relativ positionieren">
<linktarget COLOR="#f6eea5" DESTINATION="ID_1526154403" ENDARROW="Default" ENDINCLINATION="806;0;" ID="Arrow_ID_1380091213" SOURCE="ID_765381666" STARTARROW="None" STARTINCLINATION="255;23;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1667528176866" ID="ID_1620735407" MODIFIED="1668131974988" TEXT="Canvas explizit erweitern">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1667318713048" ID="ID_1238239373" MODIFIED="1668131978138" TEXT="scrollen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1667528185832" ID="ID_1091652690" MODIFIED="1668131887272" TEXT="schrittweise incl Canvas erweitern">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1667528199785" ID="ID_1692959674" MODIFIED="1668131867493" TEXT="limits bei relativem Positionieren">
<icon BUILTIN="button_cancel"/>
<node CREATED="1668131841797" ID="ID_1345079810" MODIFIED="1668131852632" TEXT="Verhalten der Implementierung bewu&#xdf;t ge&#xe4;ndert"/>
<node CREATED="1668131853635" ID="ID_864783373" MODIFIED="1668131862502" TEXT="wieso sollte man hier limitieren?"/>
</node>
<node COLOR="#338800" CREATED="1667787116332" ID="ID_538942533" MODIFIED="1667871911986" TEXT="relativ nach Position und Prozentsatz">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1667871912848" ID="ID_28548966" MODIFIED="1667871963481" TEXT="das l&#xe4;uft auf eine Variante des relativen-Ankers hinaus">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1667871926941" ID="ID_56646265" MODIFIED="1667872010814" TEXT="kann aber nur die kubische Positions-Regel wiederverwenden...">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      alles Andere ist in diesem Fall eben doch speziell; wir kommen bereits mit einer relativen Angabe, und die aktuelle Fensterposition spielt keine Rolle
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#338800" CREATED="1667528209948" ID="ID_914020436" MODIFIED="1667871908657" TEXT="explizit setzen und Canvas erweitern">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1667787036706" ID="ID_192598582" MODIFIED="1667871690775" TEXT="mu&#xdf; hierf&#xfc;r die Limitierung explizit aufheben">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1667787054759" ID="ID_280714694" MODIFIED="1667871751969" TEXT="neue Festlegung: alle mutateWindow()-Aufrufe k&#xf6;nnen Canvas erweitern">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1667871761244" ID="ID_550353046" MODIFIED="1667871901718" TEXT="hierzu &#xe4;ndere ich die Spezifikation: auch relatives Zoomen kann nun Canvas erweitern">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      warum auch nicht?
    </p>
    <p>
      Das ist dann so viel konsistenter, insofern nun n&#228;mlich genau die Funktionen, die die visible-Window-Position setzen, auch den Canvas erweitern d&#252;rfen &#8212; aber alle anderen Funktionen sto&#223;en an der Canvas-Grenze an
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1668176529007" ID="ID_1000385499" MODIFIED="1668178932385" TEXT="changeNotification">
<icon BUILTIN="button_ok"/>
<node CREATED="1668176558035" ID="ID_389422615" MODIFIED="1668176565812" TEXT="es ist ein reiner Trigger">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1668176566961" ID="ID_1163344157" MODIFIED="1668178900570" TEXT="also gen&#xfc;gt es, zu beweisen, da&#xdf; er ausgel&#xf6;st wird">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1668178902040" ID="ID_1008564979" MODIFIED="1668178918007" TEXT="au&#xdf;erdem: Notification ist pro Instanz gesondert">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1668178918696" ID="ID_958127282" MODIFIED="1668178931317" TEXT="und man kann sie auch wieder abkoppeln">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1668180004015" ID="ID_1355163433" MODIFIED="1671324161416" TEXT="extreme Grenzf&#xe4;lle abtesten">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1668212345981" ID="ID_1473341053" MODIFIED="1668212365788" TEXT="leer konstruiert &#x27f9; default-canvas">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1668180016155" ID="ID_506165727" MODIFIED="1670961012384" TEXT="leere Intervalle">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1670960970348" ID="ID_1737770423" MODIFIED="1670982893953" TEXT="leerer TimeSpan &#x27f9; ensureNonEmpty()">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1670960996683" ID="ID_200537694" MODIFIED="1670961014742" TEXT="mutateDuration ist abgesichert">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1670961004168" ID="ID_1406068671" MODIFIED="1670961037304" TEXT="calibrateExtension ist abgesichert">
<font NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1668180071412" ID="ID_1188877277" MODIFIED="1670961056848" TEXT="falsch orientierte Intervalle">
<icon BUILTIN="button_ok"/>
<node CREATED="1668262916332" ID="ID_670540657" MODIFIED="1668262927471" TEXT="weitgehend unm&#xf6;glich">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1668262928548" ID="ID_186072598" MODIFIED="1668262939564" TEXT="TimeSpan verhindert das">
<icon BUILTIN="info"/>
<node CREATED="1668263012905" ID="ID_37434622" MODIFIED="1668263018116" TEXT="genauer: es ist bereits Duration"/>
<node CREATED="1668263018992" ID="ID_774651709" MODIFIED="1668263029586" TEXT="Duration hat keinen normalen Copy-Konstruktur"/>
<node CREATED="1668263130427" ID="ID_371714481" MODIFIED="1668263147178" TEXT="Duration nimmt in jedem Ctor einen Absolutbetrag"/>
<node CREATED="1668263170236" ID="ID_1832591940" MODIFIED="1668263185566" TEXT="TimeSpan schickt alle Eingaben durch Duration-ctor"/>
<node CREATED="1668263200351" ID="ID_526293515" MODIFIED="1668263226330" TEXT="&#x27f9; sofern man TimeSpan per Value nimmt ist sogar Manipulation unm&#xf6;glich">
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#338800" CREATED="1670966291514" ID="ID_248415571" MODIFIED="1670982882510" TEXT="TimeSpan::conform()">
<icon BUILTIN="button_ok"/>
<node CREATED="1670966626174" ID="ID_1602981358" MODIFIED="1670966640064" TEXT="wird normalerweise nicht automatisch aufgerufen"/>
<node CREATED="1670966647403" ID="ID_1992293509" MODIFIED="1670966667911" TEXT="kann aber das Schieben + Kappen eines Intervals auf Dom&#xe4;ne erledigen"/>
<node CREATED="1670966669608" ID="ID_1330290323" MODIFIED="1670966686260" TEXT="erzeugt eine konditionierte Kopie"/>
</node>
<node COLOR="#338800" CREATED="1668262940706" ID="ID_1639008148" MODIFIED="1670961054485" TEXT="&#x27f9; Eingangs-Checks vereinfachen"/>
</node>
<node COLOR="#338800" CREATED="1668554856002" FOLDED="true" ID="ID_1728331882" MODIFIED="1671235912681" TEXT="potentiell sch&#xe4;dliche Eingabedaten">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1668262961151" ID="ID_1262854527" MODIFIED="1671235655665" TEXT="alle Eing&#xe4;nge daraufhin pr&#xfc;fen">
<icon BUILTIN="button_ok"/>
<node CREATED="1668263281549" ID="ID_1653448250" MODIFIED="1668263292760" TEXT="potentiell gef&#xe4;hrlich">
<node COLOR="#435e98" CREATED="1668263300631" ID="ID_1173749705" MODIFIED="1670960741915" TEXT="setMetric (Rat px_per_sec)">
<arrowlink COLOR="#aa6877" DESTINATION="ID_1257614207" ENDARROW="Default" ENDINCLINATION="271;-11;" ID="Arrow_ID_292335664" STARTARROW="None" STARTINCLINATION="314;29;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1668263308095" ID="ID_41228001" MODIFIED="1668263308095" TEXT="nudgeMetric (int steps)">
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1668265226231" HGAP="29" ID="ID_680870152" MODIFIED="1668265531172" TEXT="(&#xe4;hnliche Problemlage)" VSHIFT="6">
<arrowlink COLOR="#be7ca2" DESTINATION="ID_1943948610" ENDARROW="Default" ENDINCLINATION="57;-54;" ID="Arrow_ID_569700266" STARTARROW="None" STARTINCLINATION="197;26;"/>
<font NAME="SansSerif" SIZE="8"/>
</node>
</node>
<node CREATED="1668263379747" ID="ID_1108084309" MODIFIED="1668265880846" TEXT="setOverallStart (TimeValue start)">
<icon BUILTIN="button_cancel"/>
<node COLOR="#435e98" CREATED="1668265476934" HGAP="22" ID="ID_1672613430" MODIFIED="1668265497115" TEXT="Offset &#x27f9; harmlos" VSHIFT="2">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1668263363873" ID="ID_1000302477" MODIFIED="1668267369598" TEXT="nudgeVisiblePos (int steps)">
<icon BUILTIN="button_cancel"/>
<node COLOR="#435e98" CREATED="1668267251650" ID="ID_772154372" MODIFIED="1671235578564" TEXT="potentieller TimeValue-wrap">
<linktarget COLOR="#d37297" DESTINATION="ID_772154372" ENDARROW="Default" ENDINCLINATION="-1063;-32;" ID="Arrow_ID_1688376810" SOURCE="ID_407876103" STARTARROW="None" STARTINCLINATION="918;66;"/>
<icon BUILTIN="broken-line"/>
<node COLOR="#338800" CREATED="1671225675177" ID="ID_833984717" MODIFIED="1671235584467" TEXT="Parameter mu&#xdf; int64_t sein">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      &#10233; dann pa&#223;t der Wertebereich im Extremfall grade so rein (1px-Window mit 1&#181;-Tick, und das per halb-Steps von Time::MIN &#10236; Time::MAX bringen:&#160;&#160;lb &lt;= 62 )
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1671225805631" ID="ID_1037472560" MODIFIED="1671235592474" TEXT="jeweils konkreten Limit auf Maximal-Offset berechnen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1671225819397" ID="ID_1944515344" MODIFIED="1671235594489" TEXT="Time-Scale f&#xe4;ngt mehr als &#xb1; Duration::MAX ab">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1671225861224" ID="ID_1547165206" MODIFIED="1671235596761" TEXT="die neulich nachgesch&#xe4;rfte Limitierung von time::Offset erledigt den Rest...">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1668265476934" HGAP="22" ID="ID_1024656656" MODIFIED="1668265497115" TEXT="Offset &#x27f9; harmlos" VSHIFT="2">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1668263398546" ID="ID_1572318013" MODIFIED="1668265880846" TEXT="setVisiblePos (Time posToShow)">
<icon BUILTIN="button_cancel"/>
<node COLOR="#435e98" CREATED="1668265476934" HGAP="22" ID="ID_1485739923" MODIFIED="1668265497115" TEXT="Offset &#x27f9; harmlos" VSHIFT="2">
<icon BUILTIN="idea"/>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1668263409355" ID="ID_1494604965" MODIFIED="1671216876683" TEXT="setVisiblePos (Rat percentage)">
<arrowlink COLOR="#895f96" DESTINATION="ID_759637608" ENDARROW="Default" ENDINCLINATION="124;-7;" ID="Arrow_ID_728050450" STARTARROW="None" STARTINCLINATION="168;14;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1668263422928" ID="ID_1049514706" MODIFIED="1668263422928" TEXT="setVisiblePos (double percentage)"/>
<node COLOR="#435e98" CREATED="1670608837155" ID="ID_1810196404" MODIFIED="1670608847785" TEXT="pxWidth()">
<icon BUILTIN="messagebox_warning"/>
<node COLOR="#435e98" CREATED="1670608849328" ID="ID_1135224410" MODIFIED="1670608880268" TEXT="kann bei maximal zul&#xe4;ssigen Parametern bereits in numeric-wrap laufen">
<icon BUILTIN="broken-line"/>
</node>
<node COLOR="#338800" CREATED="1670608881221" ID="ID_617148644" LINK="#ID_1459847631" MODIFIED="1670609042831">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      gel&#246;st durch geschickte schrittweise Berechnung:
    </p>
    <p>
      <font face="Monospaced" color="#403786">calcPixelsForDurationAtScale (Rat zoomFactor, FSecs duration)</font>
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Wir nutzen explizit aus, da&#223; das Ergebnis durch truncating quantisiert wird (Integer-Division). Daher k&#246;nnen wir erst den ersten Dividenden (die Zeitspanne) aufteilen, und zwar erst mal in den Sekunden-Anteil, dann den Rest, und dann den Rest vom Rest
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node CREATED="1668263441959" ID="ID_1366157126" MODIFIED="1668263454322" TEXT="2.Layer &#x2014; privat">
<node COLOR="#435e98" CREATED="1668263464370" ID="ID_452384864" MODIFIED="1670608807787" TEXT="establishMetric (uint pxWidth, Time startWin, Time afterWin)">
<icon BUILTIN="messagebox_warning"/>
<node COLOR="#435e98" CREATED="1668269822171" ID="ID_1581625515" MODIFIED="1670608805543" TEXT="Resultat sollte &quot;ungiftig&quot; sein">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      weil es direkt in das Feld <font face="Monospaced" color="#87179a">px_per_second_</font>&#160;geht
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node COLOR="#435e98" CREATED="1668269838609" ID="ID_982888658" MODIFIED="1670608801375" TEXT="geeignet normieren oder kappen?">
<icon BUILTIN="help"/>
<node CREATED="1670608693763" ID="ID_1403342865" MODIFIED="1670608757928" TEXT="genauere Betrachtung zeigt: hier keine Gefahr"/>
<node CREATED="1670608703396" ID="ID_1449271152" MODIFIED="1670960623932" TEXT="Duration wird errechnet und ist daher ggfs. sehr gro&#xdf;, aber nicht giftig">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      der Nenner ist limitiert (kleiner Time::SCALE) und nicht toxisch
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1670608782329" ID="ID_1737555624" MODIFIED="1670608799171" TEXT="Pixel-Zahl wird grade hier explizit gekappt"/>
</node>
</node>
<node COLOR="#338800" CREATED="1668263473958" ID="ID_1175951405" MODIFIED="1670608663663" TEXT="conformWindowToMetric (Rat changedMetric)">
<arrowlink COLOR="#bf0f5b" DESTINATION="ID_1671513743" ENDARROW="Default" ENDINCLINATION="297;-23;" ID="Arrow_ID_389982782" STARTARROW="None" STARTINCLINATION="-323;20;"/>
<arrowlink COLOR="#856e9e" DESTINATION="ID_773636992" ENDARROW="Default" ENDINCLINATION="138;-8;" ID="Arrow_ID_976571904" STARTARROW="None" STARTINCLINATION="219;13;"/>
<arrowlink COLOR="#65253d" DESTINATION="ID_1915595988" ENDARROW="Default" ENDINCLINATION="9;-40;" ID="Arrow_ID_382076752" STARTARROW="None" STARTINCLINATION="-11;29;"/>
<linktarget COLOR="#6f4b85" DESTINATION="ID_1175951405" ENDARROW="Default" ENDINCLINATION="300;0;" ID="Arrow_ID_739178440" SOURCE="ID_1976979366" STARTARROW="None" STARTINCLINATION="45;-137;"/>
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#fefc4e" COLOR="#351d75" CREATED="1668555596031" HGAP="151" ID="ID_1196389964" MODIFIED="1668555795593" TEXT="&#xd83e;&#xdc46; die zentrale Gelenkstelle" VSHIFT="4">
<edge COLOR="#fdf7a5" STYLE="linear"/>
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="idea"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1668555725214" ID="ID_1632657793" MODIFIED="1668555774726" TEXT="alle potentiell gef&#xe4;hrlichen Wirkpfade kommen hier vorbei"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1668555737844" ID="ID_625503483" MODIFIED="1668555774726" TEXT="hier verwandeln sich Eingabedaten in Parameterdaten"/>
</node>
<node COLOR="#435e98" CREATED="1668701661948" HGAP="175" ID="ID_1116086039" MODIFIED="1668736303030" TEXT="Datenflu&#xdf;-Analyse" VSHIFT="1">
<icon BUILTIN="info"/>
<node CREATED="1668701689231" ID="ID_1495743277" MODIFIED="1668701701766" TEXT="changedMetric &#x27f6; dur">
<node CREATED="1668701735972" ID="ID_1362411868" MODIFIED="1668701746854" TEXT="metric.num &#x27f6; dur.denom"/>
<node CREATED="1668701831578" ID="ID_364333659" MODIFIED="1668701864041" TEXT="Lim: metric.denom * pixWidth &lt; MAX_INT">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1668701912660" ID="ID_778993460" MODIFIED="1668701930151" TEXT="Lim: metric.num * Time::Scale &lt; MAX_INT">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1668701935616" ID="ID_1861389254" MODIFIED="1670694113716" TEXT="wegen isMicroGridAligned()">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1670694115318" ID="ID_1221970195" LINK="#ID_20864170" MODIFIED="1670694147739" TEXT="inzwischen entsch&#xe4;rft">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1668701946449" ID="ID_296260515" MODIFIED="1668701964086" TEXT="anschlie&#xdf;end wird dur -&gt; Time gerundet">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1668702760034" ID="ID_868876168" MODIFIED="1668703402758" TEXT="placeWindowRelativeToAnchor (dur)">
<arrowlink COLOR="#94576a" DESTINATION="ID_51247840" ENDARROW="Default" ENDINCLINATION="149;-123;" ID="Arrow_ID_257501351" STARTARROW="None" STARTINCLINATION="-150;12;"/>
</node>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1668703282413" HGAP="-88" ID="ID_1113812536" MODIFIED="1668703442612" TEXT="Input (changedMetric) mu&#xdf; entgiftet werden" VSHIFT="23">
<edge COLOR="#f74141" STYLE="linear"/>
<icon BUILTIN="clanbomber"/>
<node COLOR="#338800" CREATED="1669473799874" ID="ID_1081409038" MODIFIED="1669473855697" TEXT="detox">
<edge COLOR="#5e51c9"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1668703200176" ID="ID_1915595988" MODIFIED="1670608657540" TEXT="conformMetricToWindow()">
<linktarget COLOR="#65253d" DESTINATION="ID_1915595988" ENDARROW="Default" ENDINCLINATION="9;-40;" ID="Arrow_ID_382076752" SOURCE="ID_1175951405" STARTARROW="None" STARTINCLINATION="-11;29;"/>
<linktarget COLOR="#6a6a92" DESTINATION="ID_1915595988" ENDARROW="Default" ENDINCLINATION="37;170;" ID="Arrow_ID_1959668732" SOURCE="ID_4317582" STARTARROW="None" STARTINCLINATION="-243;-9;"/>
<linktarget COLOR="#6a6a92" DESTINATION="ID_1915595988" ENDARROW="Default" ENDINCLINATION="45;199;" ID="Arrow_ID_1858388760" SOURCE="ID_538384824" STARTARROW="None" STARTINCLINATION="-486;-28;"/>
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1668703282413" ID="ID_1976673029" MODIFIED="1669473783896" TEXT="Output mu&#xdf; entgiftet werden">
<edge COLOR="#f74141" STYLE="linear"/>
<icon BUILTIN="clanbomber"/>
<node COLOR="#338800" CREATED="1669473816376" HGAP="129" ID="ID_1549431699" MODIFIED="1669473872429" TEXT="detox" VSHIFT="4">
<edge COLOR="#5e51c9"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1668703253721" ID="ID_562775888" MODIFIED="1668703454748" TEXT="output &#x27f6; finaler Metrik-Faktor">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1668263585452" ID="ID_195681721" MODIFIED="1668270219934" TEXT="conformWindowToCanvas(&lt;current-settings&gt;)">
<node CREATED="1668270193562" ID="ID_918641802" MODIFIED="1668270440632" TEXT="nur additive arithmetik">
<icon BUILTIN="info"/>
</node>
<node COLOR="#338800" CREATED="1668270199865" ID="ID_764029688" MODIFIED="1668270213799" TEXT="bereits explizit auf Grenzen gepr&#xfc;ft">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1668263473958" ID="ID_148236436" MODIFIED="1668292385911" TEXT="conformToBounds (Rat changedMetric)">
<arrowlink COLOR="#9a858e" DESTINATION="ID_1671513743" ENDARROW="Default" ENDINCLINATION="297;-23;" ID="Arrow_ID_1815772846" STARTARROW="None" STARTINCLINATION="-292;20;"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1668292226927" ID="ID_46729545" MODIFIED="1668292236334" TEXT="nur eine Verwendung in ensureInvariants">
<icon BUILTIN="info"/>
</node>
<node CREATED="1668292206153" ID="ID_1278501779" MODIFIED="1668292239165" TEXT="liegt hinter conforMetricToWindow">
<icon BUILTIN="idea"/>
<node CREATED="1668292291702" ID="ID_199183662" MODIFIED="1668294441771" TEXT="dies kann zwar einen sehr gro&#xdf;en Nenner einf&#xfc;hren">
<arrowlink COLOR="#c6476e" DESTINATION="ID_91804756" ENDARROW="Default" ENDINCLINATION="220;-12;" ID="Arrow_ID_1385445807" STARTARROW="None" STARTINCLINATION="721;42;"/>
</node>
<node CREATED="1668292302036" ID="ID_232220269" MODIFIED="1668292309247" TEXT="ist aber selber weiter nicht toxisch"/>
<node CREATED="1668292317202" ID="ID_883712171" MODIFIED="1668292327181" TEXT="und kann nicht entgleisen">
<node CREATED="1668292327913" ID="ID_1178284866" MODIFIED="1668292332396" TEXT="pxWidth ist limitiert"/>
<node CREATED="1668292333165" ID="ID_1678221888" MODIFIED="1668292343339" TEXT="dur = FSecs(after-start) ist limitiert"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1668263629246" ID="ID_1257614207" MODIFIED="1671216867276" TEXT="mutateScale (Rat changedMetric)">
<arrowlink COLOR="#e62f5c" DESTINATION="ID_651838862" ENDARROW="Default" ENDINCLINATION="115;-4;" ID="Arrow_ID_1930230162" STARTARROW="None" STARTINCLINATION="-189;14;"/>
<arrowlink COLOR="#753c82" DESTINATION="ID_1976979366" ENDARROW="Default" ENDINCLINATION="-43;-3;" ID="Arrow_ID_226790124" STARTARROW="None" STARTINCLINATION="80;7;"/>
<linktarget COLOR="#aa6877" DESTINATION="ID_1257614207" ENDARROW="Default" ENDINCLINATION="271;-11;" ID="Arrow_ID_292335664" SOURCE="ID_1173749705" STARTARROW="None" STARTINCLINATION="314;29;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1668265021139" HGAP="52" ID="ID_1943948610" MODIFIED="1670517343960" TEXT="pr&#xfc;fen: sehr kleine Metrik" VSHIFT="-2">
<linktarget COLOR="#be7ca2" DESTINATION="ID_1943948610" ENDARROW="Default" ENDINCLINATION="57;-54;" ID="Arrow_ID_569700266" SOURCE="ID_680870152" STARTARROW="None" STARTINCLINATION="197;26;"/>
<icon BUILTIN="yes"/>
<node CREATED="1668265390104" ID="ID_1154641838" MODIFIED="1668265435386" TEXT="es gibt keine Unterschwelle">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1668265398152" ID="ID_754119758" MODIFIED="1668265427796" TEXT="&#x27f6; hier k&#xf6;nnte sehr gro&#xdf;er Nenner ins System gelangen">
<icon BUILTIN="clanbomber"/>
</node>
<node COLOR="#338800" CREATED="1670516822914" FOLDED="true" ID="ID_78031576" LINK="#ID_368621922" MODIFIED="1670517608517" TEXT="dynamische Untergrenze einf&#xfc;hren">
<arrowlink COLOR="#64bc9c" DESTINATION="ID_660534369" ENDARROW="Default" ENDINCLINATION="227;-218;" ID="Arrow_ID_1983834485" STARTARROW="None" STARTINCLINATION="-503;36;"/>
<linktarget COLOR="#6499bb" DESTINATION="ID_78031576" ENDARROW="Default" ENDINCLINATION="-146;-1064;" ID="Arrow_ID_283548397" SOURCE="ID_1641527388" STARTARROW="None" STARTINCLINATION="967;54;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1670516838244" ID="ID_479791948" MODIFIED="1670516852366" TEXT="in Abh&#xe4;ngigkeit von der Weite in Pixeln"/>
<node CREATED="1670516854928" ID="ID_999425219" MODIFIED="1670516948570" TEXT="nach technischem Kriterium definiert (Berechenbarkeit)">
<arrowlink COLOR="#4660c4" DESTINATION="ID_979012602" ENDARROW="Default" ENDINCLINATION="-136;-164;" ID="Arrow_ID_456720693" STARTARROW="None" STARTINCLINATION="115;6;"/>
<icon BUILTIN="info"/>
<node CREATED="1670285974347" ID="ID_281565361" MODIFIED="1670517155305" TEXT="pixel/maxExtension &gt; 1/ LIM_HAZARD">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      wenn der Zoom-Faktor einen gr&#246;&#223;een Nenner bekommt, wird er nach den inzwischen etablierten Richtlinien als &#187;toxisch&#171; betrachtet, und das hei&#223;t, die typischen Berechnungen im ZoomWindow k&#246;nnten entgleisen
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1670285726380" ID="ID_1653623380" MODIFIED="1670516907686" TEXT="&#x27f9; maxExtension &lt; pxWidth * (1&lt;&lt;40)"/>
</node>
<node CREATED="1670517051791" ID="ID_681227378" MODIFIED="1670517268759" TEXT="nur wirksam bei relativ kleiner Pixelzahl">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      hinreichend gro&#223;e Fenster (ab ein paar hunder Pixeln) k&#246;nnen die ganze Zeitdom&#228;ne abdecken
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
<node CREATED="1670517163880" ID="ID_1748539032" MODIFIED="1670517173530" TEXT="insofern ist das eine Grenzwertbetrachtung"/>
<node CREATED="1670517174286" ID="ID_741254433" MODIFIED="1670517260345" TEXT="erwarte keinerelei Relevanz in der Praxis">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      alle die hier angewendeten Heuristiken werden im normalen Einsatz niemals aktiviert, und daher profitieren wir normalerweise von der extremen Pr&#228;zision der Integer-Bruchrechnung
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1668263638141" ID="ID_909162669" MODIFIED="1670960651484" TEXT="mutateDuration (FSecs duration, uint px =0)">
<node CREATED="1668270374842" HGAP="29" ID="ID_1976979366" MODIFIED="1670960723275" TEXT="delegiert an conformWindowToMetric(Rat)" VSHIFT="-13">
<arrowlink COLOR="#6f4b85" DESTINATION="ID_1175951405" ENDARROW="Default" ENDINCLINATION="300;0;" ID="Arrow_ID_739178440" STARTARROW="None" STARTINCLINATION="45;-137;"/>
<linktarget COLOR="#753c82" DESTINATION="ID_1976979366" ENDARROW="Default" ENDINCLINATION="-43;-3;" ID="Arrow_ID_226790124" SOURCE="ID_1257614207" STARTARROW="None" STARTINCLINATION="80;7;"/>
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1669479155534" ID="ID_620129730" MODIFIED="1669479162094" TEXT="adaptWindowToPixels(px)">
<node COLOR="#435e98" CREATED="1669479175476" ID="ID_590715378" MODIFIED="1669479353924" TEXT="Arithmetik erscheint ungef&#xe4;hrlich">
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1669479204552" ID="ID_29297928" MODIFIED="1669479365083" TEXT="unter der Annahme da&#xdf; bestehende Metrik sauber ist">
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#435e98" CREATED="1669479223678" ID="ID_4317582" MODIFIED="1669479361432" TEXT="au&#xdf;erdem: Ausgang durch conformMetricToWindow">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...und das betrachte ich als gutm&#252;tig und hinreichend abgesichert...
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#6a6a92" DESTINATION="ID_1915595988" ENDARROW="Default" ENDINCLINATION="37;170;" ID="Arrow_ID_1959668732" STARTARROW="None" STARTINCLINATION="-243;-9;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1668263652677" ID="ID_759637608" MODIFIED="1671216888664" TEXT="anchorWindowAtPosition (FSecs canvasOffset)">
<linktarget COLOR="#895f96" DESTINATION="ID_759637608" ENDARROW="Default" ENDINCLINATION="124;-7;" ID="Arrow_ID_728050450" SOURCE="ID_1494604965" STARTARROW="None" STARTINCLINATION="168;14;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1668265925547" ID="ID_548541569" MODIFIED="1668265934174" TEXT="negative Werte">
<node CREATED="1668267213730" ID="ID_751640089" MODIFIED="1668267225777" TEXT="grunds&#xe4;tzlich hier vorgesehen"/>
<node CREATED="1668267238564" ID="ID_1057480192" MODIFIED="1668267248362" TEXT="startWin_ = startAll_ + (canvasOffset - partBeforeAnchor);">
<icon BUILTIN="info"/>
</node>
<node COLOR="#435e98" CREATED="1668267251650" ID="ID_1280626173" MODIFIED="1670016135487" TEXT="potentieller TimeValue-wrap">
<icon BUILTIN="broken-line"/>
<node CREATED="1669507976363" ID="ID_1360914257" MODIFIED="1669508005798" TEXT="Duration und Canvas-size k&#xf6;nnen gro&#xdf; sein">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1669507940458" ID="ID_355998747" MODIFIED="1669507940458" TEXT="Rat posFactor = canvasOffset / FSecs{afterAll_-startAll_};"/>
<node CREATED="1669507965470" ID="ID_1858701509" MODIFIED="1669507965470" TEXT="FSecs partBeforeAnchor = posFactor * duration;"/>
<node COLOR="#338800" CREATED="1670016112689" ID="ID_1869447563" LINK="#ID_289279043" MODIFIED="1670016131455" TEXT="hierf&#xfc;r eigene Hilfsfunktion geschaffen">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node CREATED="1668267393360" ID="ID_1700728412" MODIFIED="1668267398176" TEXT="giftige Br&#xfc;che">
<node COLOR="#435e98" CREATED="1669508070174" ID="ID_171647736" MODIFIED="1670549465314" TEXT="Aua: so ziemlich alles kann hier giftig sein">
<linktarget COLOR="#8c2958" DESTINATION="ID_171647736" ENDARROW="Default" ENDINCLINATION="103;88;" ID="Arrow_ID_1341085031" SOURCE="ID_196873456" STARTARROW="None" STARTINCLINATION="351;-26;"/>
<icon BUILTIN="broken-line"/>
<node CREATED="1669508081900" ID="ID_1740115162" MODIFIED="1669508382889" TEXT="zwar kann das Ergebnis nicht grob entgleisen">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1669508094694" ID="ID_1971396713" MODIFIED="1669508365178" TEXT="konsistentes Verhalten ist aber schwer aufrecht zu erhalten">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      und zwar dann, wenn auch noch die Window-Parameter extrem sind &#8212; dann sieht die Lage ziemlich hoffnungslos aus
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1669508366255" ID="ID_1644190283" MODIFIED="1669682752758" TEXT="Idee: auf gleichen Nenner normalisieren">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...denn dadurch w&#252;rde man die kreuzweise Multiplikation verhindern
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#fbf8c7" DESTINATION="ID_267834802" ENDARROW="Default" ENDINCLINATION="538;-591;" ID="Arrow_ID_1957682133" STARTARROW="None" STARTINCLINATION="668;44;"/>
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1668267422500" ID="ID_17566048" MODIFIED="1668267468507" TEXT="parabolicAnchorRule">
<arrowlink COLOR="#e92c3f" DESTINATION="ID_1689286236" ENDARROW="Default" ENDINCLINATION="82;-4;" ID="Arrow_ID_176217068" STARTARROW="None" STARTINCLINATION="-158;21;"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1669479223678" ID="ID_538384824" MODIFIED="1670960844426" TEXT=" Ausgang durch conformMetricToWindow">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...und das betrachte ich als gutm&#252;tig und hinreichend abgesichert...
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#6a6a92" DESTINATION="ID_1915595988" ENDARROW="Default" ENDINCLINATION="45;199;" ID="Arrow_ID_1858388760" STARTARROW="None" STARTINCLINATION="-486;-28;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1668263473958" ID="ID_773636992" MODIFIED="1668293112414" TEXT="placeWindowRelativeToAnchor (FSecs duration)">
<arrowlink COLOR="#b18586" DESTINATION="ID_1671513743" ENDARROW="Default" ENDINCLINATION="256;-19;" ID="Arrow_ID_882084800" STARTARROW="None" STARTINCLINATION="-201;12;"/>
<linktarget COLOR="#856e9e" DESTINATION="ID_773636992" ENDARROW="Default" ENDINCLINATION="138;-8;" ID="Arrow_ID_976571904" SOURCE="ID_1175951405" STARTARROW="None" STARTINCLINATION="219;13;"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1668270677518" HGAP="31" ID="ID_51247840" MODIFIED="1668293080653" STYLE="fork" TEXT="Berechnung kann wild entgleisen" VSHIFT="2">
<linktarget COLOR="#94576a" DESTINATION="ID_51247840" ENDARROW="Default" ENDINCLINATION="149;-123;" ID="Arrow_ID_257501351" SOURCE="ID_868876168" STARTARROW="None" STARTINCLINATION="-150;12;"/>
<font NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1668292845491" ID="ID_1723809039" MODIFIED="1668293079087" TEXT="Differenz wird noch vom Puffer in TimeValue aufgefangen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ich habe ja ganz bewu&#223;t Time::MAX == INT_MAX/3 genommen
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1668292982369" ID="ID_1496719180" MODIFIED="1668293079087" TEXT="Assignment an eine TimeVar macht einen Guard-check">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1668292909179" ID="ID_944892675" MODIFIED="1668703468960" TEXT="sofern der duration-Parameter auch sauber ist....">
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1668270662235" ID="ID_238899324" MODIFIED="1668293024213" TEXT="kein wirklicher Schaden m&#xf6;glich">
<node CREATED="1668293046153" ID="ID_1545859602" MODIFIED="1668293053428" TEXT="danach haben wir wieder einen TimeValue"/>
<node CREATED="1668293054279" ID="ID_202153481" MODIFIED="1668293059275" TEXT="und dieser liegt im Limit"/>
<node CREATED="1668293062334" ID="ID_1382128860" MODIFIED="1668293074089" TEXT="nachfolgende Normalisierung erledigt den Rest"/>
</node>
<node CREATED="1668703609105" ID="ID_1557527906" MODIFIED="1668703662246">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      &#10233; <u><b>Fazit</b></u>:
    </p>
    <ul>
      <li>
        erh&#228;lt Invariante
      </li>
      <li>
        Ergebnis kann aber <i>inhaltlich falsch</i>&#160;sein
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#435e98" CREATED="1668263721530" ID="ID_829406482" MODIFIED="1668270430868" TEXT="establishWindowDuration (TimeVar duration)">
<node CREATED="1668270193562" ID="ID_440259374" MODIFIED="1668270440632" TEXT="nur additive arithmetik">
<icon BUILTIN="info"/>
</node>
<node COLOR="#338800" CREATED="1668270199865" ID="ID_927662816" MODIFIED="1668270213799" TEXT="bereits explizit auf Grenzen gepr&#xfc;ft">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1668263742928" ID="ID_1689286236" MODIFIED="1668736289358" TEXT="parabolicAnchorRule (Rat posFactor)">
<linktarget COLOR="#e92c3f" DESTINATION="ID_1689286236" ENDARROW="Default" ENDINCLINATION="82;-4;" ID="Arrow_ID_176217068" SOURCE="ID_17566048" STARTARROW="None" STARTINCLINATION="-158;21;"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1668267470317" ID="ID_409576187" MODIFIED="1668267475864" TEXT="kann entgleisen"/>
<node CREATED="1668269162412" ID="ID_983739705" MODIFIED="1668269175422" TEXT="Fehlfunktion ist aber letztlich harmlos"/>
<node CREATED="1668269178282" ID="ID_697782687" MODIFIED="1668269188827" TEXT="die nachgelagerte Normalisierung f&#xe4;ngt die Konsequenzen auf"/>
<node COLOR="#338800" CREATED="1668269189680" ID="ID_1612606864" MODIFIED="1668269410626" TEXT="aber: Limitierung am Ausgang fehlt &#x27f9; nachr&#xfc;sten">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1668703498792" ID="ID_622549972" MODIFIED="1668703538961">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Vorsicht: Ergebnis-Faktor kann trotzdem <i><font color="#f41bbc">giftig sein</font></i>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="clanbomber"/>
</node>
<node COLOR="#338800" CREATED="1668703745543" ID="ID_660082790" MODIFIED="1668736277567" TEXT="Ergebnis auch noch entgiften!">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1668554900067" HGAP="80" ID="ID_1302892550" MODIFIED="1671235664482" TEXT="kritische Wirkpfade abtesten" VSHIFT="9">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1668555028046" ID="ID_660534369" MODIFIED="1670517608516" TEXT="sehr kleine Metrix (&#x2259; exterm zoom-out)">
<linktarget COLOR="#64bc9c" DESTINATION="ID_660534369" ENDARROW="Default" ENDINCLINATION="227;-218;" ID="Arrow_ID_1983834485" SOURCE="ID_78031576" STARTARROW="None" STARTINCLINATION="-503;36;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1669475559599" FOLDED="true" ID="ID_460741178" MODIFIED="1670376664053" TEXT="setMetric mit sehr kleinem giftigem Faktor">
<icon BUILTIN="button_ok"/>
<node CREATED="1670283526032" ID="ID_229404798" MODIFIED="1670283558380">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Problem: <font color="#792020" face="Monospaced">detox()</font>&#160;macht den zu Null
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1670283586375" ID="ID_890051949" MODIFIED="1670283599337" TEXT="so wie detox() arbeitet ist das sogar logisch"/>
<node CREATED="1670283673379" ID="ID_30349087" MODIFIED="1670283698026" TEXT="hier aber ung&#xfc;nstig &#x2014; wir schneiden M&#xf6;glichkeiten ab"/>
<node CREATED="1670283795387" ID="ID_980739299" MODIFIED="1670283813301" TEXT="nicht klar ob wir diese M&#xf6;glichkeiten auch handhaben k&#xf6;nnen"/>
</node>
<node COLOR="#435e98" CREATED="1670283872465" ID="ID_1585241919" MODIFIED="1670376488285" TEXT="m&#xf6;glicher Umgang mit dieser Situation?">
<icon BUILTIN="help"/>
<node CREATED="1670284011918" ID="ID_1146546548" MODIFIED="1670284021365" TEXT="versuchen, mit dem realen Wert zu rechnen">
<node CREATED="1670284747694" ID="ID_1625216692" MODIFIED="1670284760926" TEXT="das wird wohl nicht realisierbar sein">
<icon BUILTIN="closed"/>
</node>
<node CREATED="1670284762764" ID="ID_1551749144" MODIFIED="1670284803643" TEXT="vor allem die Berechnung des changeFactor ist hart">
<node CREATED="1670284805670" ID="ID_822617912" MODIFIED="1670284832879" TEXT="denn die bestehende Metrik kann auch bereits grenzwertig sein"/>
<node CREATED="1670284841546" ID="ID_1593692519" MODIFIED="1670284867186" TEXT="es k&#xf6;nnen durchaus alle vier Zahlefaktoren teilerfremd sein"/>
</node>
</node>
<node CREATED="1670283950255" ID="ID_1052150725" MODIFIED="1670285128230" TEXT="an dieser Stelle dann auf &#xbb;ganzen Canvas&#xab; ausweiten">
<node CREATED="1670285064420" ID="ID_563185130" MODIFIED="1670285070703" TEXT="ist keine wirkliche Alternative"/>
<node CREATED="1670285071507" ID="ID_637749708" MODIFIED="1670285101603" TEXT="denn: wie geht&apos;s beim n&#xe4;chsten Mal weiter"/>
</node>
<node CREATED="1670283932962" ID="ID_368621922" MODIFIED="1670517297644" TEXT="Zoom-Faktor an der Grenze des Handhabbaren kappen">
<node CREATED="1670285161615" ID="ID_1178402010" MODIFIED="1670285182257" TEXT="es gibt implizit eine weitere Invariante">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1670285183856" ID="ID_1638946901" MODIFIED="1670285196927" TEXT="der Zoom-Faktor darf n&#xe4;mlich nicht giftig werden"/>
<node CREATED="1670285610802" ID="ID_1302970319" MODIFIED="1670285620774" TEXT="weil damit multipliziert und dividiert wird"/>
</node>
<node CREATED="1670285635534" ID="ID_979012602" MODIFIED="1670516948570" TEXT="damit ergibt sich aus der Pixel-Weite eine maximale Canvas-Ausdehnung">
<linktarget COLOR="#4660c4" DESTINATION="ID_979012602" ENDARROW="Default" ENDINCLINATION="-136;-164;" ID="Arrow_ID_456720693" SOURCE="ID_999425219" STARTARROW="None" STARTINCLINATION="115;6;"/>
<node CREATED="1670285974347" ID="ID_1007233105" MODIFIED="1670286288243" TEXT="pixel/maxExtension &gt; 1/ LIM_HAZARD"/>
<node CREATED="1670285726380" ID="ID_1300128015" MODIFIED="1670286035624" TEXT="&#x27f9; maxExtension &lt; pxWidth * (1&lt;&lt;40)"/>
<node CREATED="1670286048745" ID="ID_735928158" MODIFIED="1670286420499" TEXT="und zwar in &#xb5;-Ticks gemessen!">
<linktarget COLOR="#6ca8d7" DESTINATION="ID_735928158" ENDARROW="Default" ENDINCLINATION="-761;71;" ID="Arrow_ID_907454112" SOURCE="ID_804263127" STARTARROW="None" STARTINCLINATION="1521;-73;"/>
</node>
<node CREATED="1670286453362" ID="ID_1224708034" MODIFIED="1670286466277" TEXT="das sind etwa 35 Jahre pro Pixel">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1670286467361" ID="ID_1883858304" MODIFIED="1670286472580" TEXT="damit kann ich leben">
<icon BUILTIN="ksmiletris"/>
<node CREATED="1670286557479" ID="ID_1970209350" MODIFIED="1670286579062" TEXT="denn mit ca 250px kann man die ganze Time-Domain aussch&#xf6;pfen"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1670285681242" ID="ID_670151068" MODIFIED="1670370844366" TEXT="&#x27f9; diese zus&#xe4;tzliche implizite Invariante mu&#xdf; noch eingearbeitet werden">
<node CREATED="1670286640826" ID="ID_51850143" MODIFIED="1670286716839" TEXT="es gibt also eine quasi-statische Untergrenze f&#xfc;r den Zoomfaktor">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      &quot;quasi statisch&quot; meint hier: h&#228;ngt vom pxWith-Parameter ab, ist aber ansonsten unver&#228;nderlich (aber eben keine compile-time Konstante)
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1670286723855" ID="ID_158367837" MODIFIED="1670370838832" TEXT="diese mu&#xdf; bei jeder Neuermittlung der Metrik durchgesetzt werden">
<icon BUILTIN="button_ok"/>
<node CREATED="1670286987710" ID="ID_1721006813" MODIFIED="1670287002982" TEXT="also immer in  /  nach conformMetricToWindow()"/>
<node CREATED="1670287008354" ID="ID_1557779177" MODIFIED="1670287369540" TEXT="dies wird immer gefolgt von ensureInvariants()">
<icon BUILTIN="stop-sign"/>
<node CREATED="1670287287334" ID="ID_166391512" MODIFIED="1670287291272" TEXT="das ist zu sp&#xe4;t"/>
<node COLOR="#435e98" CREATED="1670287292244" ID="ID_1347205579" MODIFIED="1670370835889" TEXT="denn die giftige Metrik darf erst gar nicht entstehen">
<arrowlink COLOR="#7a53c2" DESTINATION="ID_1402443098" ENDARROW="Default" ENDINCLINATION="104;-2;" ID="Arrow_ID_924666177" STARTARROW="None" STARTINCLINATION="-324;17;"/>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1670287311529" ID="ID_1402443098" MODIFIED="1670370847816">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      also davor eine neue Funktion: <b>conformWindowToMetricLimits</b>(px)
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      aus praktischen Gr&#252;nden erfolgt die Rechnung in FSecs, und das ist hier nicht gef&#228;hrlich, weil der Nenner dieses Wertes in der Metrik-Berechnung nur mit den Pixeln in Ber&#252;hrung kommt
    </p>
    <p>
      Hilfsfunktion maxSaneWinExtension(px) = FSecs{LIM_HAZARD * pxWidth, Time::SCALE};
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#7a53c2" DESTINATION="ID_1402443098" ENDARROW="Default" ENDINCLINATION="104;-2;" ID="Arrow_ID_924666177" SOURCE="ID_1347205579" STARTARROW="None" STARTINCLINATION="-324;17;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1670287378272" HGAP="54" ID="ID_1137014082" MODIFIED="1670370387641" TEXT="und zwar immer nur wenn die Fenstergr&#xf6;&#xdf;e manipuliert wird" VSHIFT="18">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1670376631305" ID="ID_840249575" MODIFIED="1670516765208" TEXT="setMetic ganz knapp unter dem Metrik-Limit">
<icon BUILTIN="button_ok"/>
<node CREATED="1670376670692" ID="ID_1841257088" MODIFIED="1670376680228" TEXT="funktioniert an sich genauso gut"/>
<node COLOR="#435e98" CREATED="1670376680960" FOLDED="true" ID="ID_620447936" MODIFIED="1670516743330" TEXT="Assertion-Failure">
<icon BUILTIN="broken-line"/>
<node CREATED="1670376702055" ID="ID_1469832654" MODIFIED="1670376729324" TEXT="ENSURE (px_per_sec_&lt;= changedMetric); // bias towards increased window">
<icon BUILTIN="forward"/>
</node>
<node CREATED="1670376703894" ID="ID_263971594" MODIFIED="1670376723327" TEXT="Ursache ist dur = detox (dur);">
<icon BUILTIN="info"/>
<node CREATED="1670376742896" ID="ID_824068641" MODIFIED="1670376752323" TEXT="wir quantisieren grunds&#xe4;tzich nach unten"/>
<node CREATED="1670376753567" ID="ID_1311484746" MODIFIED="1670376778683" TEXT="...und das macht hier tats&#xe4;chlich das window kleiner"/>
</node>
<node COLOR="#435e98" CREATED="1670376784643" ID="ID_826342965" MODIFIED="1670516712383" TEXT="kann man die Assertion inhaltlich retten?">
<icon BUILTIN="help"/>
<node CREATED="1670513034252" ID="ID_1850302207" MODIFIED="1670513344405" TEXT="nein, aber man kann sie verbessern">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...zwar ist der Bias in Richtung auf ein gr&#246;&#223;eres Fenster weiterhin im Code gegeben, aber dieser Fall hier zeigt eben, da&#223; er durch andere Rundungs-Effekte sogar &#252;bersteuert werden kann; aber wir k&#246;nnen sogar eine st&#228;rkere Bedinung errichten, n&#228;mlich da&#223; wir nicht zu weit von der Vorgabe abweichen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1670513151296" ID="ID_1024266568" MODIFIED="1670513173265" TEXT="stattdessen nachrechnen, wie weit wir von der Vorgabe abgewichen sind"/>
<node CREATED="1670513174117" ID="ID_1899476162" MODIFIED="1670513185583" TEXT="und zwar in Bildschirm-Pixel ausdr&#xfc;cken"/>
<node CREATED="1670513186435" ID="ID_1680999319" MODIFIED="1670513314716" TEXT="dazu m&#xfc;ssen wir r&#xfc;ckw&#xe4;rts vorgehen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...damit meine ich: ausrechnen wie viele Pixel die jetzt eingestelle Fenstergr&#246;&#223;e in der urspr&#252;nglich geforderten Metrik einnehmen w&#252;rde.....
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#435e98" CREATED="1670513315788" ID="ID_323106710" MODIFIED="1670516717164" TEXT="Idealerweise solten wir h&#xf6;chstens einen Pixel danebenliegen">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1670516720740" ID="ID_1472736752" MODIFIED="1670516739986" TEXT="neue Assertion &#x27f9; erf&#xfc;llt">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1670516751855" ID="ID_874152554" MODIFIED="1670516762807" TEXT="Ergebnis wie erwartet und nur minimal justiert">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1670520735802" FOLDED="true" ID="ID_208606753" MODIFIED="1670889954683" TEXT="Pixel-Zahl dann extrem vergr&#xf6;&#xdf;ern">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1670520761346" ID="ID_159180995" MODIFIED="1670608116400" TEXT="bereits sehr gro&#xdf;es Fenster">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1670520772342" ID="ID_139525815" MODIFIED="1670608119171" TEXT="sollte erweitert werden">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1670528324475" ID="ID_681633951" MODIFIED="1670608109444" TEXT="entgleist bereits hier">
<icon BUILTIN="broken-line"/>
<node CREATED="1670528706677" ID="ID_511512599" MODIFIED="1670528730642" TEXT="zoomFactor * duration">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1670528736693" ID="ID_692399777" MODIFIED="1670528752135" TEXT="duration kann im Z&#xe4;hler eine sehr gro&#xdf;e Zahl haben"/>
<node CREATED="1670528767251" ID="ID_718316208" MODIFIED="1670528801175" TEXT="zoomFactor ist zwar limitiert..."/>
<node CREATED="1670528801884" ID="ID_1318256555" MODIFIED="1670528842450" TEXT="aber der Z&#xe4;hler kann MAX_PX_WIDTH haben"/>
</node>
<node CREATED="1670529398909" ID="ID_1760275990" MODIFIED="1670529444484" TEXT="kann nicht durch weitere Beschr&#xe4;nkungen gel&#xf6;st werden">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      sofern wir &#252;berhaupt relevant gro&#223;e Zeitspannen zulassen wollen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1670529488664" ID="ID_1459847631" MODIFIED="1670608100497" TEXT="Aufgabe: pxWidth zuverl&#xe4;ssig berechnen">
<linktarget COLOR="#984981" DESTINATION="ID_1459847631" ENDARROW="Default" ENDINCLINATION="37;46;" ID="Arrow_ID_1118525297" SOURCE="ID_1603322916" STARTARROW="None" STARTINCLINATION="-82;-3;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1670529520436" ID="ID_1589666141" MODIFIED="1670529556855" TEXT="Beobachtung: Ergebnis ist quantisiert">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1670530578527" ID="ID_106780218" MODIFIED="1670530592241" TEXT="aufteilen in Pixel f&#xfc;r die ganzen Sekunden + den Rest"/>
<node CREATED="1670533665256" ID="ID_1624584888" MODIFIED="1670533684900" TEXT="letztlich nur Bruchrechnen"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1670533759294" ID="ID_1337555507" MODIFIED="1670533795730">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <u>latente Gefahr</u>: Rest bei <i>giftiger Duration</i>
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#c23775" DESTINATION="ID_1337555507" ENDARROW="Default" ENDINCLINATION="-42;54;" ID="Arrow_ID_222968818" SOURCE="ID_619135931" STARTARROW="None" STARTINCLINATION="-229;-15;"/>
<icon BUILTIN="clanbomber"/>
<node CREATED="1670533870555" ID="ID_649716018" MODIFIED="1670533882170" TEXT="nach meinem Verst&#xe4;ndnis ist aber die Duration stets berechnet"/>
<node CREATED="1670533882974" ID="ID_1544775451" MODIFIED="1670533906598" TEXT="und daher kann der Z&#xe4;hler nicht &gt; LIM_HAZARD sein"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1670533969244" ID="ID_509879073" MODIFIED="1670620313585" TEXT="Problem: detox verf&#xe4;lscht die pxWidth">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1670534010893" ID="ID_719080732" MODIFIED="1670534023047" TEXT="in conformMetricToWindow(pxWidth)"/>
<node CREATED="1670534028996" ID="ID_218226232" MODIFIED="1670534040364" TEXT="detox(metric) ist unverzichtbar"/>
<node COLOR="#338800" CREATED="1670534041313" FOLDED="true" ID="ID_1590617796" MODIFIED="1670608092950" TEXT="mu&#xdf; dann aber korrigieren">
<icon BUILTIN="button_ok"/>
<node CREATED="1670535342258" ID="ID_1603322916" MODIFIED="1670535392115" TEXT="kann nun erst mal ein Delta (zuverl&#xe4;ssig) ausrechnen">
<arrowlink COLOR="#984981" DESTINATION="ID_1459847631" ENDARROW="Default" ENDINCLINATION="37;46;" ID="Arrow_ID_1118525297" STARTARROW="None" STARTINCLINATION="-82;-3;"/>
<icon BUILTIN="info"/>
</node>
<node CREATED="1670535410497" ID="ID_1208592840" MODIFIED="1670535642174" TEXT="pixel = metric * duration"/>
<node CREATED="1670535643825" ID="ID_1568387866" MODIFIED="1670535934094" TEXT="Ansatz : px + &#x394; = (mn + &#x3b4;)/md * dur">
<icon BUILTIN="idea"/>
<node CREATED="1670535754235" ID="ID_1587392333" MODIFIED="1670535810351" TEXT="mn/md*dur + &#x394; = md/md*dur + &#x3b4;/md*dur"/>
<node CREATED="1670535823465" ID="ID_250829706" MODIFIED="1670607989952" STYLE="bubble" TEXT="&#x27f9; &#x394; = &#x3b4;/md*dur  &#x27fa;  &#x3b4; = &#x394;*md/dur"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1670608025807" ID="ID_303221939" MODIFIED="1670608049361" TEXT="ist aber nicht genau">
<arrowlink COLOR="#f71732" DESTINATION="ID_118806151" ENDARROW="Default" ENDINCLINATION="5;-41;" ID="Arrow_ID_1345035443" STARTARROW="None" STARTINCLINATION="-123;-2;"/>
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1670536172779" ID="ID_118806151" MODIFIED="1670608043975" TEXT="Vorsicht Divisionsrest!">
<linktarget COLOR="#f71732" DESTINATION="ID_118806151" ENDARROW="Default" ENDINCLINATION="5;-41;" ID="Arrow_ID_1345035443" SOURCE="ID_303221939" STARTARROW="None" STARTINCLINATION="-123;-2;"/>
<font NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="messagebox_warning"/>
<icon BUILTIN="button_cancel"/>
<node COLOR="#d10909" CREATED="1670607546820" ID="ID_1768315854" MODIFIED="1670607657973" TEXT="habe naiv eingesetzt px = mn/md * dn/dd">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      das unterschl&#228;gt den Divisionsrest. Oder anders gesagt, die Integer-Division ist keine lineare Funktion, die man einfach so umkehren kann
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="stop-sign"/>
</node>
<node CREATED="1670536172779" ID="ID_1511677021" MODIFIED="1670539160426" TEXT="Divisionsrest:  px + r &#x2254; mn/md*dur">
<font NAME="SansSerif" SIZE="12"/>
<node CREATED="1670535823465" ID="ID_1442936314" MODIFIED="1670539218793" TEXT="&#x27f9; &#x394;+r = &#x3b4;/md*dur">
<node CREATED="1670539261437" ID="ID_1632113284" MODIFIED="1670539263858" TEXT="r &lt; 1"/>
</node>
<node CREATED="1670539193095" ID="ID_393314988" MODIFIED="1670539228949" TEXT="  &#x27fa;  &#x3b4; = &#x394;*md/dur + r*md/dur"/>
</node>
<node CREATED="1670547897187" ID="ID_567199472" MODIFIED="1670547982037" TEXT="wobei px = trunc(mn/md*dur)"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1670550198610" ID="ID_108770284" MODIFIED="1670550213350" TEXT="Berechnung wrappt">
<icon BUILTIN="stop-sign"/>
<node CREATED="1670607729254" ID="ID_236985538" MODIFIED="1670607748664" TEXT="kann weder direkt die (an sich linerare) Beziehung umkehren"/>
<node CREATED="1670607749430" ID="ID_44338618" MODIFIED="1670607760342" TEXT="noch kann ich den modulus berechnen">
<node CREATED="1670607771857" ID="ID_432964800" MODIFIED="1670607787595" TEXT="mod = (mn*dn) % (md*dd)"/>
<node CREATED="1670607788343" ID="ID_1369221920" MODIFIED="1670607952820" TEXT="vor allem der erste Faktor k&#xf6;nnte wrappen">
<icon BUILTIN="clanbomber"/>
</node>
<node CREATED="1670607798845" ID="ID_1832446179" MODIFIED="1670607935324" TEXT="es gibt hier keine Garantien">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      anders im Nenner;&#160;&#160;md * dd ist garantiert berechenbar, sofern die Duration selber aus einem time::Duration gebildet wurde (und md ist durch das detox() limitiert worden)
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node CREATED="1670550618233" ID="ID_717977520" MODIFIED="1670550628155" TEXT="hngra">
<icon BUILTIN="smily_bad"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1670598462329" ID="ID_1937499858" MODIFIED="1670608058331" TEXT="Einsicht: Problem liegt bei der Umkehrung">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Der Rechenweg ist hier eine &#187;Einbahnstra&#223;e&#171; : durch einen Kniff ist es gelungen die Quatisierung zu berechnen Metrik &#10236; pxWidth. Aber die Umkehrfunktion k&#246;nnen wir nicht berechnen, weil es in der Berechnung zu einem &#220;berlauf kommt. Daher k&#246;nnen wir die Fehler-Korrektur nicht einfach ausrechnen, weil wir nicht einfach von einen Pixel-&#916; auf ein Metrik-&#916; zur&#252;ckrechnen k&#246;nnen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
<node COLOR="#435e98" CREATED="1670598658291" ID="ID_215061275" MODIFIED="1670608011680" TEXT="Newton-Iteration k&#xf6;nnte ein eleganter L&#xf6;sungsweg sein">
<arrowlink COLOR="#758da1" DESTINATION="ID_1617011877" ENDARROW="Default" ENDINCLINATION="-1787;200;" ID="Arrow_ID_1389754977" STARTARROW="None" STARTINCLINATION="-5051;242;"/>
<icon BUILTIN="idea"/>
<node CREATED="1648160051303" ID="ID_1360701786" MODIFIED="1670600088741" TEXT="setze x&#x2099; &#x2254; mn  und  f(x&#x2099;) &#x2254; trunc{ x&#x2099; * dn/(md*dd) } - sollPx"/>
<node CREATED="1648160051303" ID="ID_1815070178" MODIFIED="1670600102106" TEXT="x&#x2099; &#x2254; x&#x2099; - f(x&#x2099;)/f&apos;(x&#x2099;)">
<node CREATED="1670600262299" ID="ID_200772347" MODIFIED="1670600289470" TEXT="trunc{&#x2022;} ist nicht differenzierbar">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1670600297357" ID="ID_1661748842" MODIFIED="1670600371342" TEXT="berechne ersatzweise die nicht-Quantisierte lineare Beziehung">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...das mag unsinnig erscheinen, aber der Punkt ist, wir k&#246;nnen diese lineare Beziehung nur eingeschr&#228;nkt numerisch berechnen
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1670601331854" ID="ID_1987937364" MODIFIED="1670601421702" TEXT="aber: f(x&#x2099;) &#x2254; &#x394;&#x2099; = istPx-sollPx = trunc{ x&#x2099; * dn/(md*dd) } - sollPx"/>
<node CREATED="1670600125528" ID="ID_44998069" MODIFIED="1670600375236" TEXT="&#x27f9;  f&apos;(x&#x2099;) = dn/(md*dd)">
<node CREATED="1670600381136" ID="ID_1737301130" MODIFIED="1670600391140" TEXT="Faktor md*dd ist zu gro&#xdf;"/>
<node CREATED="1670600392117" ID="ID_972774071" MODIFIED="1670600415383" TEXT="&#x27f9; Konsequenz: N&#xe4;herung per floating-point rechnen"/>
</node>
<node CREATED="1670600444488" ID="ID_1680948621" MODIFIED="1670608003557" STYLE="bubble" TEXT="Schritt: mn&#x2099;&#x2081; &#x2254; mn&#x2099; - &#x394;&#x2099; * md*dd  / dn"/>
</node>
</node>
<node CREATED="1670600703979" ID="ID_1488808337" MODIFIED="1670600728131" TEXT="effektiv war die erste naive Rechnung ein Newtion-Iterationsschritt"/>
<node COLOR="#338800" CREATED="1670600731863" ID="ID_186434159" MODIFIED="1670608063458" TEXT="Implementierung">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1670600737086" ID="ID_844920706" MODIFIED="1670608065992" TEXT="Ziel-Test in while-Schleife einbauen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1670602664659" ID="ID_1968097363" MODIFIED="1670608071566" TEXT="Delta und Schritt-Berechnung in floating-point">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1670608072601" ID="ID_693088307" MODIFIED="1670608085799" TEXT="Berechnung damit sicher, elegant (und funktioniert auch)"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1670520779106" ID="ID_442688956" MODIFIED="1670889948185" TEXT="dann nochmal giftigen maximal-Zoom-out">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1670615758976" ID="ID_1452400924" MODIFIED="1670890015364" TEXT="erst mal bruteZoom verwenden">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1670615776976" ID="ID_1512494689" MODIFIED="1670615803740" TEXT="Fehler im abschli&#xdf;enden Plausibilit&#xe4;tscheck">
<icon BUILTIN="broken-line"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1670615806180" ID="ID_619135931" MODIFIED="1670620369556" TEXT="in der Tat: die schrittweise Integer-Division kann auch wrappen">
<arrowlink COLOR="#c23775" DESTINATION="ID_1337555507" ENDARROW="Default" ENDINCLINATION="-42;54;" ID="Arrow_ID_222968818" STARTARROW="None" STARTINCLINATION="-229;-15;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#435e98" CREATED="1670615839039" ID="ID_1944815131" MODIFIED="1670615993483" TEXT="dieser Gebrauch hier ist aber klar au&#xdf;erhalb der definierten Grenzen">
<icon BUILTIN="yes"/>
<node CREATED="1670615926323" ID="ID_1960899448" MODIFIED="1670615939582" TEXT="Duration mu&#xdf; aus time::Duration errechnet sein"/>
<node CREATED="1670615942711" ID="ID_255892393" MODIFIED="1670615951220" TEXT="der ZoomFaktor mu&#xdf; entgiftet sein"/>
<node CREATED="1670615952000" ID="ID_1758205571" MODIFIED="1670615971194" TEXT="dadurch ist zd*dd handhabbar"/>
<node CREATED="1670615972022" ID="ID_1327396184" MODIFIED="1670615981992" TEXT="genau das (und Weiteres) ist hier nicht gegeben"/>
</node>
<node CREATED="1670615994715" ID="ID_193734845" MODIFIED="1670616015887" TEXT="die vorherige L&#xf6;sung war besser: n&#xe4;herungsweise Rechnung per floating-point">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1670616019359" ID="ID_1695051977" MODIFIED="1670616022048" TEXT="revert">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1670616045807" ID="ID_1657986247" MODIFIED="1670616133443" TEXT="au&#xdf;erdem: das ist gar nicht was ich testen wollte">
<icon BUILTIN="stop-sign"/>
<node CREATED="1670616061533" ID="ID_1889255548" MODIFIED="1670616137418" TEXT="das w&#xe4;re ein weiterer guter Testfall">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1670616069498" ID="ID_1354086365" MODIFIED="1670616142124" TEXT="aber es ist ein extremes zoom-in">
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1670616082383" FOLDED="true" ID="ID_156266762" MODIFIED="1670620297299" TEXT="die berechneten Zoom-Faktoren und Durations &#xe4;ndern sich unterwegs ganz kra&#xdf;">
<icon BUILTIN="messagebox_warning"/>
<node COLOR="#435e98" CREATED="1670616117714" ID="ID_309015495" MODIFIED="1670617416589" TEXT="korrekt oder Fehlverhalten?">
<icon BUILTIN="help"/>
<node COLOR="#435e98" CREATED="1670616704876" ID="ID_1622141133" MODIFIED="1670617395856" TEXT="Untersuchung">
<node CREATED="1670616712931" ID="ID_1501827077" MODIFIED="1670616746582" TEXT="metricVorher: 0,00000090950401180624"/>
<node CREATED="1670616748326" ID="ID_367770862" MODIFIED="1670616775054" TEXT="metricGesetzt: 0,00000090949470177293"/>
<node CREATED="1670616817724" ID="ID_1415764699" MODIFIED="1670616822521" TEXT="changeFactor">
<node CREATED="1670616823604" ID="ID_1357255245" MODIFIED="1670616824954" TEXT="8738124595203125/8738214042927104"/>
<node CREATED="1670616832746" ID="ID_1244959877" MODIFIED="1670616837612" TEXT="= 0.99998976361490579406"/>
</node>
<node CREATED="1670617088809" ID="ID_1991508385" MODIFIED="1670617093931" TEXT="durVorher: 109951052826,533333"/>
<node CREATED="1670617154682" ID="ID_225306013" MODIFIED="1670617200454" TEXT="durModifiziert">
<node CREATED="1670617174581" ID="ID_969572944" MODIFIED="1670617177190" TEXT="2054375346307858432/7405988284081966813"/>
<node CREATED="1670617161148" ID="ID_1958223126" MODIFIED="1670617162826" TEXT="= 0,27739381531610337409"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#cd158d" CREATED="1670617179460" ID="ID_1631410208" MODIFIED="1670617208435" TEXT="tja">
<icon BUILTIN="smiley-oh"/>
</node>
</node>
<node CREATED="1670617402798" ID="ID_30984099" MODIFIED="1670618258486">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      eindeutig: <b>wrap-around</b>&#160;in der relativen &#196;nderung
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="forward"/>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1670617418716" ID="ID_520825252" MODIFIED="1670617441582" TEXT="relative Anwendung des Zoom-Faktors scheitert">
<icon BUILTIN="broken-line"/>
<node CREATED="1670617477125" ID="ID_1008445724" MODIFIED="1670617487798" TEXT="auch detox() hie und da hilft nix"/>
<node CREATED="1670617500514" ID="ID_42571289" MODIFIED="1670617536811" TEXT="grade wenn Duration gro&#xdf; ist reicht detox() nicht"/>
<node CREATED="1670617542996" ID="ID_890256504" MODIFIED="1670617548121" TEXT="...und ist au&#xdf;erdem ungenau"/>
</node>
<node COLOR="#435e98" CREATED="1670617465750" ID="ID_1125263407" MODIFIED="1670618244591" TEXT="ist dieser Ansatz &#xfc;berhaupt sinnvoll">
<icon BUILTIN="help"/>
<node CREATED="1670617550570" ID="ID_794382292" MODIFIED="1670617586580" TEXT="dieser Rechenweg stammt noch aus der initialien Implementierung">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...welche ich inzwischen nahezu komplett einmal umgepfl&#252;gt habe...
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1670617587918" ID="ID_1941807837" MODIFIED="1670617700006" TEXT="auf den ersten Blick cool...">
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1670617617322" ID="ID_154517336" MODIFIED="1670617693674" TEXT="aber numerisch ein Albtraum!">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      weil hier...
    </p>
    <ul>
      <li>
        zum Einen eine sehr gro&#223;e Zahl auf einen beliebigen Bruchfaktor trifft
      </li>
      <li>
        und au&#223;erdem als Resultat eine Beliebige Zahl entsteht, die nicht auf Time::SCALE quantisiert ist
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node CREATED="1670617722212" ID="ID_552344182" MODIFIED="1670618342028">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <u>und <b>redundant</b></u>: macht nicht <font face="Monospaced" color="#461bac">conformWindowToMetric()</font>&#160; inzwischen genau dassselbe??
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#3489d0" DESTINATION="ID_1728003116" ENDARROW="Default" ENDINCLINATION="7;-26;" ID="Arrow_ID_32836248" STARTARROW="None" STARTINCLINATION="-90;3;"/>
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#338800" CREATED="1670617949506" ID="ID_1728003116" MODIFIED="1670618335701" TEXT="implementieren ohne R&#xfc;ckgrif auf mutatDuration()">
<linktarget COLOR="#3489d0" DESTINATION="ID_1728003116" ENDARROW="Default" ENDINCLINATION="7;-26;" ID="Arrow_ID_32836248" SOURCE="ID_552344182" STARTARROW="None" STARTINCLINATION="-90;3;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1670618047801" ID="ID_981414972" MODIFIED="1670618077348" TEXT="puh... da f&#xe4;llt ja fast alles weg">
<icon BUILTIN="smiley-oh"/>
</node>
<node CREATED="1670618058280" ID="ID_1146416916" MODIFIED="1670618073226" TEXT="und die ganzen Fallen, um die ich mich so geplagt habe">
<icon BUILTIN="smiley-angry"/>
</node>
<node CREATED="1670618082836" ID="ID_958310234" MODIFIED="1670618112665" TEXT="was zus&#xe4;tzlich bleibt, ist nur die Limitierung der Metrik">
<icon BUILTIN="info"/>
</node>
<node CREATED="1670618093994" ID="ID_833295341" MODIFIED="1670618108468" TEXT="die allerdings ist eine Errungenschaft!">
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1670618161449" ID="ID_676303735" MODIFIED="1670618174884" TEXT="kaum macht ma&apos;s richtig, schon funktioniert&apos;s">
<icon BUILTIN="ksmiletris"/>
<node CREATED="1670618176639" ID="ID_393011013" MODIFIED="1670618207065">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      und die Testsuite ist auf Anhieb <b><font color="#0ba911">GR&#220;N</font></b>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1670618211155" ID="ID_1878857756" MODIFIED="1670618231508" TEXT="wie gut, da&#xdf; ich betreits so viele penible Tests gebaut habe">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1670620383399" FOLDED="true" ID="ID_674544235" MODIFIED="1670642115198" TEXT="h&#xe4;tte Zoom auf gesamten Canvas erwartet">
<icon BUILTIN="yes"/>
<node CREATED="1670620405080" ID="ID_1202192964" MODIFIED="1670620418967" TEXT="...nachdem jetzt die Zahl der Pixel so drastisch erh&#xf6;ht wurde"/>
<node CREATED="1670621505792" ID="ID_645635162" MODIFIED="1670621528305" TEXT="aber der definierte Grenzfaktor verhindert das">
<icon BUILTIN="info"/>
</node>
<node COLOR="#435e98" CREATED="1670621532941" ID="ID_1641685049" MODIFIED="1670641908692" TEXT="ist der Grenzfaktor korrekt berechnet?">
<icon BUILTIN="help"/>
<node CREATED="1670621551706" ID="ID_804263127" MODIFIED="1670621631745" TEXT="konzeptionell hatte ich etwas Anderes in Erinnerung">
<arrowlink COLOR="#6ca8d7" DESTINATION="ID_735928158" ENDARROW="Default" ENDINCLINATION="-761;71;" ID="Arrow_ID_907454112" STARTARROW="None" STARTINCLINATION="1521;-73;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1670623877667" ID="ID_1836625419" MODIFIED="1670641911673" TEXT="m&#xf6;glicherweise genau um Time::SCALE zu klein?">
<icon BUILTIN="idea"/>
<node CREATED="1670629795767" ID="ID_1040393126" MODIFIED="1670629827889" TEXT="der Nenner Time::SCALE ist n&#xe4;mlich in dem Fall harmlos (da pxWidth limitiert ist)"/>
<node CREATED="1670629829067" ID="ID_1784755741" MODIFIED="1670629843428" TEXT="aber er macht das Ergebnis um den Fakror 1Mio gr&#xf6;&#xdf;er"/>
<node CREATED="1670629845864" ID="ID_1290369344" MODIFIED="1670629860659" TEXT="und limitiert genau dadurch den minimalen Zoom"/>
<node CREATED="1670629897993" ID="ID_652419307" MODIFIED="1670629969742" TEXT="1 / LIM_HAZARD w&#xe4;re das Extremum">
<arrowlink COLOR="#549dd2" DESTINATION="ID_1085901724" ENDARROW="Default" ENDINCLINATION="53;-82;" ID="Arrow_ID_292029179" STARTARROW="None" STARTINCLINATION="-212;16;"/>
<icon BUILTIN="forward"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1670629923629" ID="ID_1085901724" MODIFIED="1670641895675" TEXT="versuchen, das Limit um 1e-6 abzusenken">
<linktarget COLOR="#549dd2" DESTINATION="ID_1085901724" ENDARROW="Default" ENDINCLINATION="53;-82;" ID="Arrow_ID_292029179" SOURCE="ID_652419307" STARTARROW="None" STARTINCLINATION="-212;16;"/>
<icon BUILTIN="button_ok"/>
<icon BUILTIN="button_cancel"/>
<node COLOR="#435e98" CREATED="1670629990253" ID="ID_1122755361" MODIFIED="1670890039381" TEXT="ENSURE_matchesExpectedPixWidth scheitert">
<icon BUILTIN="broken-line"/>
<node CREATED="1670629999164" ID="ID_1312554244" MODIFIED="1670630059800" TEXT="und zwar mit interessanten (realistischen) Werten">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ZoomWindow: established size or metric misses expectation by more than 1px. 3px != 0.279620 expected pixel.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node COLOR="#435e98" CREATED="1670631017435" ID="ID_1279940239" MODIFIED="1670634674575" TEXT="Beobachtung">
<icon BUILTIN="info"/>
<node CREATED="1670634343385" ID="ID_284249821" MODIFIED="1670634414906" TEXT="detox(changedMetric) macht nix">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      da die Metrik ja limitiert wurde und damit per definitionem auch sauber
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1670631027193" ID="ID_1715093187" MODIFIED="1670631034852" TEXT="dur = 3* LIM_HAZARD"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1670631036152" ID="ID_824462335" MODIFIED="1670634653392" TEXT="ist gr&#xf6;&#xdf;er als MAX_TIMESPAN und wird limitiert">
<linktarget COLOR="#de3b4d" DESTINATION="ID_824462335" ENDARROW="Default" ENDINCLINATION="507;0;" ID="Arrow_ID_79951922" SOURCE="ID_1912544646" STARTARROW="Default" STARTINCLINATION="507;0;"/>
<icon BUILTIN="clanbomber"/>
</node>
<node CREATED="1670631144522" ID="ID_1178539358" MODIFIED="1670631160644" TEXT="detox(dur) l&#xe4;uft dann in das untere Limit f&#xfc;r den quantiser = 64"/>
<node CREATED="1670631354782" ID="ID_1215630500" MODIFIED="1670633662153" TEXT="der Fehler dadurch ist kleiner als 1 sec und relativ irre klein (1e-14)"/>
<node COLOR="#435e98" CREATED="1670631820765" ID="ID_1612035545" MODIFIED="1670632327145" TEXT="aber TimeVar limitiert">
<icon BUILTIN="broken-line"/>
<node CREATED="1670631831417" ID="ID_1807731566" MODIFIED="1670631837782" TEXT="umgewandelter Wert: 614891469123640625"/>
<node CREATED="1670631861403" ID="ID_1701766180" MODIFIED="1670631953102" TEXT="theoretischer Wert:    614891469123651720"/>
<node CREATED="1670631996436" ID="ID_327677153" MODIFIED="1670632023685" TEXT="limitierter Zeitpunkt:   307445734561825860"/>
<node COLOR="#338800" CREATED="1670632336743" ID="ID_769313456" MODIFIED="1670632349302" TEXT="Fix: Umwandlung &#xfc;ber Duration(FSecs)">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1670633143989" ID="ID_1654804140" MODIFIED="1670633155150" TEXT="conformWindowToMetric(3px)">
<node CREATED="1670633164402" ID="ID_208283454" MODIFIED="1670633165812" TEXT="Rat adjMetric = detox (Rat(pxWidth) / dur);"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1670633167112" ID="ID_404249260" MODIFIED="1670633316053" TEXT="detox() f&#xfc;hrt hier einen starken Fehler ein">
<icon BUILTIN="broken-line"/>
<node CREATED="1670633198943" ID="ID_1237559681" MODIFIED="1670633230283" TEXT="vorher:    192/39353054023913"/>
<node CREATED="1670633202891" ID="ID_34394013" MODIFIED="1670633262719" TEXT="nachher:  5/1229782938247"/>
<node CREATED="1670633305726" ID="ID_841098021" MODIFIED="1670633311104" TEXT="16% Fehler"/>
<node CREATED="1670633355551" ID="ID_86750972" MODIFIED="1670633370881" TEXT="Grund: der kleine Z&#xe4;hler wegen kleiner Pixelzahl"/>
</node>
<node CREATED="1670633496181" ID="ID_1991750411" MODIFIED="1670633509494" TEXT="nachjustierte Metrik">
<node CREATED="1670633510314" ID="ID_474285004" MODIFIED="1670633512214" TEXT="6/1229782938247"/>
<node CREATED="1670633548900" ID="ID_1038736733" MODIFIED="1670633568254" TEXT="viel n&#xe4;her am Wert vor detox()"/>
<node CREATED="1670633579125" ID="ID_330672165" MODIFIED="1670633590883" TEXT="Fehlerfaktor: nur noch 1e-13"/>
</node>
</node>
<node CREATED="1670634446738" ID="ID_335582946" MODIFIED="1670634451077" TEXT="Gesamtresultat">
<node CREATED="1670634452282" ID="ID_695823259" MODIFIED="1670634564479" TEXT="geforderte Metrik:    1/1099511627776 = 9.09e-13"/>
<node CREATED="1670634484934" ID="ID_186085154" MODIFIED="1670634549193" TEXT="resultiernde Metrik: 6/1229782938247  = 1.87e-12"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1670634566275" ID="ID_16315489" MODIFIED="1670634586577" TEXT="das ist nat&#xfc;rlich viel zu weit weg">
<icon BUILTIN="stop-sign"/>
<node CREATED="1670634593967" ID="ID_213992089" MODIFIED="1670634599258" TEXT="Fehler 430%"/>
<node CREATED="1670634622307" ID="ID_1912544646" MODIFIED="1670634640149" TEXT="Grund ist aber kein Rechenfehler....">
<arrowlink COLOR="#de3b4d" DESTINATION="ID_824462335" ENDARROW="Default" ENDINCLINATION="507;0;" ID="Arrow_ID_79951922" STARTARROW="Default" STARTINCLINATION="507;0;"/>
</node>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1670634676452" ID="ID_829552595" MODIFIED="1670642079860">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <b>Grund</b>&#160;sind die expliziten <i>Limitierungen </i>in dieser Funktion
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#6d669c" DESTINATION="ID_829552595" ENDARROW="Default" ENDINCLINATION="299;14;" ID="Arrow_ID_166387953" SOURCE="ID_1376379301" STARTARROW="None" STARTINCLINATION="107;-4;"/>
<icon BUILTIN="forward"/>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1670635244880" ID="ID_873866162" MODIFIED="1670635272173" TEXT="nicht klar ob man diese Assertion aufrecht erhalten kann">
<icon BUILTIN="help"/>
<node COLOR="#435e98" CREATED="1670890065771" HGAP="22" ID="ID_313809624" MODIFIED="1670890076308" TEXT="letztlich: ja" VSHIFT="12"/>
</node>
</node>
<node CREATED="1670634800459" ID="ID_1764699375" MODIFIED="1670634819881" TEXT="abgesehen davon w&#xfc;rde die Rechnung sogar mit diesen extremen Werten funktionieren">
<icon BUILTIN="idea"/>
<node CREATED="1670634821458" ID="ID_343578534" MODIFIED="1670634835363" TEXT="das liegt vor allem an dem Nachjustieren per Newton"/>
<node CREATED="1670634842378" ID="ID_1192611860" MODIFIED="1670635459431" TEXT="detox() w&#xfc;rde hier wegen dem kleinen Z&#xe4;hler schon zu extremen Fehlern f&#xfc;hren">
<arrowlink COLOR="#f9ffa8" DESTINATION="ID_1107044319" ENDARROW="Default" ENDINCLINATION="291;11;" ID="Arrow_ID_1783361555" STARTARROW="None" STARTINCLINATION="-36;103;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1670635294357" ID="ID_1940319351" MODIFIED="1670642085976" TEXT="Kompromi&#xdf;: Faktor 1000">
<icon BUILTIN="button_ok"/>
<node CREATED="1670635326013" ID="ID_1487818131" MODIFIED="1670635342383" TEXT="liegt zwischen den ausgetesteten Grenzen"/>
<node CREATED="1670635343499" ID="ID_641939740" MODIFIED="1670635360580" TEXT="w&#xe4;re immer noch grade ausreichend gro&#xdf;">
<node CREATED="1670635361856" ID="ID_1028559962" MODIFIED="1670635368331" TEXT="wenige Pixel: beschr&#xe4;nkte Dom&#xe4;ne"/>
<node CREATED="1670635369111" ID="ID_733591685" MODIFIED="1670635384681" TEXT="1000 Pixel : kann ganze Zeitdom&#xe4;ne darstellen"/>
</node>
<node CREATED="1670635388270" ID="ID_1107044319" MODIFIED="1670635464001" TEXT="Abstand vom Quantisierer 1000 mal gr&#xf6;&#xdf;er &#x27f9; detox() arbeitet geschmeidiger">
<linktarget COLOR="#f9ffa8" DESTINATION="ID_1107044319" ENDARROW="Default" ENDINCLINATION="291;11;" ID="Arrow_ID_1783361555" SOURCE="ID_1192611860" STARTARROW="None" STARTINCLINATION="-36;103;"/>
<icon BUILTIN="idea"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1670638029954" ID="ID_1190734639" MODIFIED="1670638077699" TEXT="maxSaneWindowExtension(MAX_PX_WIDTH) wird zu gro&#xdf;">
<icon BUILTIN="broken-line"/>
<node CREATED="1670638079529" ID="ID_1748017185" MODIFIED="1670638086064" TEXT="als FSecs noch darstellbar"/>
<node CREATED="1670638086722" ID="ID_1899582755" MODIFIED="1670638102317" TEXT="aber die Umwandlung in TimeValue scheitert"/>
</node>
<node COLOR="#338800" CREATED="1670641927167" ID="ID_623913340" MODIFIED="1670641959044" TEXT="direkt hier die Limitierung auf MAX_TIMESPAN">
<icon BUILTIN="button_ok"/>
<node CREATED="1670641960810" ID="ID_1647554495" MODIFIED="1670641975196" TEXT="damit gef&#xe4;hrliche Werte &#xfc;berhaupt nirgends mehr in die Rechnung kommen"/>
<node CREATED="1670641975904" ID="ID_977206807" MODIFIED="1670641988890" TEXT="sollte sich unter dem Strich genauso verhalten (wie wenn wir sp&#xe4;ter limitieren)"/>
<node CREATED="1670641992206" ID="ID_1376379301" MODIFIED="1670642079860" TEXT="das Problem mit der nachtr&#xe4;glichen Domain-Beschr&#xe4;nkung ist &#x201e;unter den Teppich gekehrt&#x201c;">
<arrowlink COLOR="#6d669c" DESTINATION="ID_829552595" ENDARROW="Default" ENDINCLINATION="299;14;" ID="Arrow_ID_166387953" STARTARROW="None" STARTINCLINATION="107;-4;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node COLOR="#338800" CREATED="1670642102191" ID="ID_1301915764" MODIFIED="1670642109934" TEXT="nun geht der Zoom auf den ganzen Canvas">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1670642126767" ID="ID_235330604" MODIFIED="1670642131347" TEXT="Testdaten anpassen">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1670642140314" ID="ID_846585763" MODIFIED="1670889815781" TEXT="bruteZoom verh&#xe4;lt sich aber sonderbar">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1670642186191" ID="ID_1230929067" MODIFIED="1670642222176" TEXT="Fenster vorher auf Max">
<icon BUILTIN="info"/>
</node>
<node COLOR="#435e98" CREATED="1670642203289" FOLDED="true" ID="ID_415548658" MODIFIED="1670889812462" TEXT="danach Fenster minimal verkleinert">
<icon BUILTIN="broken-line"/>
<node COLOR="#435e98" CREATED="1670682209051" ID="ID_1053497195" MODIFIED="1670684264281" TEXT="Beobachtung">
<icon BUILTIN="info"/>
<node CREATED="1670682213786" ID="ID_8161854" MODIFIED="1670682223677" TEXT="Zoom-Faktor wird wie erwartet gekappt"/>
<node CREATED="1670682224409" ID="ID_386983711" MODIFIED="1670682240570" TEXT="detox() f&#xfc;hrt zu signifikanter &#xc4;nderung"/>
<node CREATED="1670682241254" ID="ID_1153651731" MODIFIED="1670682266424" TEXT="aber Metrik ist dadurch kleiner und resultierende Duration gr&#xf6;&#xdf;er Limit"/>
<node CREATED="1670682277170" ID="ID_1708537757" MODIFIED="1670682289524" TEXT="conformWindowToMetric(Rat)">
<node CREATED="1670682296535" ID="ID_1090940166" MODIFIED="1670682331228" TEXT="metric.in: 305175/1876499844737"/>
<node CREATED="1670682434788" ID="ID_1588977532" MODIFIED="1670682452025" TEXT="dur ergibt sich &gt; MAX_TIMESPAN">
<node CREATED="1670682454651" ID="ID_1197083606" MODIFIED="1670682471813" TEXT="7505999378948000/12207 = 614893043249,61087900385024985664"/>
<node CREATED="1670682520681" ID="ID_1147025950" MODIFIED="1670682612647" TEXT="15372286728091293/25000 =614891469123,65172">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1147025950" ENDARROW="Default" ENDINCLINATION="-14;28;" ID="Arrow_ID_360490716" SOURCE="ID_508324854" STARTARROW="None" STARTINCLINATION="158;13;"/>
</node>
</node>
<node CREATED="1670682575586" ID="ID_508324854" MODIFIED="1670682612647" TEXT="&#x27f6; wird auf MAX_TIMESPAN gesetzt">
<arrowlink DESTINATION="ID_1147025950" ENDARROW="Default" ENDINCLINATION="-14;28;" ID="Arrow_ID_360490716" STARTARROW="None" STARTINCLINATION="158;13;"/>
</node>
<node CREATED="1670682736516" ID="ID_1333476908" MODIFIED="1670684329873" TEXT="weiteres detox(dur)">
<arrowlink COLOR="#ff1900" DESTINATION="ID_1464666749" ENDARROW="Default" ENDINCLINATION="90;-19;" ID="Arrow_ID_1868007293" STARTARROW="None" STARTINCLINATION="-100;12;"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1670682766512" HGAP="123" ID="ID_1323866380" MODIFIED="1670682821052" TEXT="39353054023913/64 = 614891469123,640625" VSHIFT="-5"/>
<node CREATED="1670682842974" HGAP="30" ID="ID_787436737" MODIFIED="1670682866149" TEXT="das ist bereits der Wert den wir im Ergebnis sehen" VSHIFT="4">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1670683945906" ID="ID_1283272835" MODIFIED="1670683949742" TEXT="errechnete Metrik">
<node CREATED="1670683951354" HGAP="42" ID="ID_1942870047" MODIFIED="1670684168247" TEXT="199999/1229782938247 = 0,00000016262951272124" VSHIFT="1"/>
<node CREATED="1670683995492" HGAP="24" ID="ID_254998507" MODIFIED="1670684159760" TEXT="in: 305175/1876499844737 = 0,00000016262990953925" VSHIFT="1"/>
<node CREATED="1670684113164" ID="ID_1747248918" MODIFIED="1670684190766" TEXT="fin: 200000/1229782938247 = 0,00000016263032587287"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1670684285301" FOLDED="true" ID="ID_1464666749" MODIFIED="1670684347077" TEXT="Grund ist das nachgeschaltete detox(dur)">
<linktarget COLOR="#ff1900" DESTINATION="ID_1464666749" ENDARROW="Default" ENDINCLINATION="90;-19;" ID="Arrow_ID_1868007293" SOURCE="ID_1333476908" STARTARROW="None" STARTINCLINATION="-100;12;"/>
<icon BUILTIN="forward"/>
<node CREATED="1670684550969" ID="ID_880239933" MODIFIED="1670684603143" TEXT="seinerzeit eingef&#xfc;hrt wegen Integer-wrap in der &#xb5;-Tick-Quantisierung"/>
<node CREATED="1670684604442" ID="ID_1823756460" MODIFIED="1670684622968" TEXT="dieses Problem habe ich aber sp&#xe4;ter analog zu detox() gel&#xf6;st"/>
<node COLOR="#435e98" CREATED="1670684628318" ID="ID_1042201800" MODIFIED="1670695155347">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      bleibt noch der Belang: die Duration soll hier auf &#181;-Tick <b>aufgerundet</b>&#160; werden
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
<node COLOR="#338800" CREATED="1670693333199" ID="ID_1981781381" MODIFIED="1670694655272" TEXT="die bestehende L&#xf6;sung &#xbb;wasserdicht&#xab; machen">
<linktarget COLOR="#50a780" DESTINATION="ID_1981781381" ENDARROW="Default" ENDINCLINATION="1222;-1794;" ID="Arrow_ID_276369750" SOURCE="ID_396828585" STARTARROW="None" STARTINCLINATION="477;23;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1670693356652" ID="ID_1296124851" MODIFIED="1670693373385" TEXT="isMicroGridAligned(dur) k&#xf6;nnte wrappen">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1670693374569" ID="ID_1577391935" MODIFIED="1670693466487" TEXT="aber nur weil es naiv/generisch implementiert ist">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      (num * Time::SCALE) % den == 0
    </p>
    <p>
      Das ist zwar offensichtlich richtig, erlaubt aber als Solches noch keine weiteren Schl&#252;sse, sofern man &#252;ber num/den nichts weiter wei&#223;
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1670693469133" ID="ID_20864170" MODIFIED="1670693499840" TEXT="Betrachte stattdessen die re-Quantisierung den/num &#x27fc; auf u">
<icon BUILTIN="idea"/>
<node CREATED="1670693504734" ID="ID_259327398" MODIFIED="1670693517501" TEXT="generische Division: den/num = i + r/den"/>
<node CREATED="1670693522229" ID="ID_747418277" MODIFIED="1670693531800" TEXT="dann erweitern mit  * u/u"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1670693537115" ID="ID_1681141223" MODIFIED="1670693594564" TEXT="u*i + r* u/den mu&#xdf; ganzzahlig sein">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1670693554097" ID="ID_269924016" MODIFIED="1670693565331" TEXT="r/den ist gebrochen per Ansatz(Divisionsrest)"/>
<node COLOR="#435e98" CREATED="1670693573502" ID="ID_1720542045" MODIFIED="1670693599139" TEXT="&#x27f9; u/den mu&#xdf; ohne Rest aufgehen"/>
</node>
<node COLOR="#338800" CREATED="1670693619440" ID="ID_734762923" MODIFIED="1670693633898" TEXT="u % den kann man stets gefahrlos berechnen">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1670693675833" ID="ID_1405525825" MODIFIED="1670695147960" TEXT="Alternative">
<icon BUILTIN="help"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1670693681739" ID="ID_59748398" MODIFIED="1670694770304" TEXT="hatte ich mir schon neulich der L&#xe4;nge nach &#xfc;berlegt....">
<arrowlink COLOR="#6989a3" DESTINATION="ID_1785911993" ENDARROW="Default" ENDINCLINATION="972;1311;" ID="Arrow_ID_993002191" STARTARROW="None" STARTINCLINATION="1011;-3697;"/>
</node>
<node CREATED="1670694912251" ID="ID_1739440365" LINK="#ID_324128019" MODIFIED="1670695001317" TEXT="Alternative: ULP aufschlagen &#x2014; ist numerisch nicht durchf&#xfc;hrbar">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      das geht in Floating-Point aber eben grade nicht in Integer-Bruchrechnung; ein ULP ist der <i>&#187;maximal giftige Bruch&#171;</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1670695006358" ID="ID_178508700" MODIFIED="1670695122062" TEXT="Alternative: Umrechnen und zur&#xfc;ckrechnen">
<icon BUILTIN="stop-sign"/>
<node CREATED="1670695036426" ID="ID_1096226415" MODIFIED="1670695043701" TEXT="und dann mu&#xdf; man immer noch die Differenz erkennen"/>
<node CREATED="1670695044386" ID="ID_1440113563" MODIFIED="1670695056972" TEXT="das kann auch entgleisen (wenn man&apos;s falsch macht)"/>
<node CREATED="1670695067366" ID="ID_1511491697" MODIFIED="1670695119208" TEXT="und w&#xe4;re effektiv genauso wie die bestehende L&#xf6;sung">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <ul>
      <li>
        man ruft eine Detektor-Funktion auf
      </li>
      <li>
        man inkrementiert die quantisierte Variante
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#435e98" CREATED="1670695125327" ID="ID_91649195" MODIFIED="1670695142557">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      das hier ist die <b>beste Alternative</b>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node CREATED="1670686892666" ID="ID_663041240" MODIFIED="1670689470564" TEXT="und : placeWindowRelativeToAnchor (dur) erfordert eine &#xb5;-Tick-quantisierte Duration">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      sonst kann man eine fehlerfreie Kalkulation nicht garantieren
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1670688407583" ID="ID_802069957" MODIFIED="1670688422028" TEXT="das l&#xe4;&#xdf;t sich aber beheben">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1670688425020" ID="ID_1795384448" MODIFIED="1670689441040" TEXT="und zwar durch eine Verbesserung von scaleSafe">
<icon BUILTIN="button_ok"/>
<node CREATED="1670688441890" ID="ID_1195772525" MODIFIED="1670688571570" TEXT="bisher hat scaleSafe di &#xb5;-Tick-Quantisierung fest vorausgesetzt"/>
<node COLOR="#338800" CREATED="1670688463136" ID="ID_1765522524" MODIFIED="1670689380463" TEXT="durch expliziten Check kann man hier eine falsche Rechnung verhindern">
<linktarget COLOR="#4a9197" DESTINATION="ID_1765522524" ENDARROW="Default" ENDINCLINATION="-650;0;" ID="Arrow_ID_863565881" SOURCE="ID_1754365321" STARTARROW="None" STARTINCLINATION="255;-13;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1670688488686" ID="ID_66504136" MODIFIED="1670689395158" TEXT="das krezuweise Setup der F&#xe4;lle garantiert eine L&#xf6;sung">
<arrowlink COLOR="#5365c2" DESTINATION="ID_69967327" ENDARROW="Default" ENDINCLINATION="196;-673;" ID="Arrow_ID_33256420" STARTARROW="None" STARTINCLINATION="-593;729;"/>
<icon BUILTIN="info"/>
</node>
</node>
<node COLOR="#338800" CREATED="1670689449188" ID="ID_1579474968" MODIFIED="1670689473897" TEXT="damit k&#xf6;nnte ich mit jeder giftigen Duration einsteigen">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1670695220102" ID="ID_389130735" MODIFIED="1670889808508" TEXT="Fazit: das nachgeschaltete detox(dur) kann jetzt gefahrlos wegfallen">
<icon BUILTIN="forward"/>
<node COLOR="#435e98" CREATED="1670695711835" FOLDED="true" ID="ID_180269191" MODIFIED="1670889449190" TEXT="Abweichungen bei den letzten Extrem-Tests">
<icon BUILTIN="broken-line"/>
<node CREATED="1670695786581" ID="ID_1444004105" MODIFIED="1670695788153" TEXT="win.setMetric (1001_r/LIM_HAZARD)"/>
<node CREATED="1670695791701" ID="ID_1934884504" MODIFIED="1670695802439" TEXT="Duration nur auf den letzten 3 Stellen gr&#xf6;&#xdf;er"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1670695809730" ID="ID_1755203527" MODIFIED="1670816905413" TEXT="aber Metrik-Fator weicht sehr deutlich ab">
<arrowlink COLOR="#9a2652" DESTINATION="ID_946682751" ENDARROW="Default" ENDINCLINATION="-244;-11;" ID="Arrow_ID_508831862" STARTARROW="None" STARTINCLINATION="4;65;"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1670695844350" ID="ID_862469141" MODIFIED="1670695963722" TEXT="vorher:        750/823809910921 = 0,00000000091040419647"/>
<node CREATED="1670695862235" ID="ID_602512673" MODIFIED="1670695957130" TEXT="nachher: 1952/1609003732267 = 0,00000000121317307154"/>
</node>
<node COLOR="#435e98" CREATED="1670697214513" ID="ID_1548423209" MODIFIED="1670816868146" TEXT="Problem ist die Newton-Approximation">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1670697242478" ID="ID_1694286199" MODIFIED="1670697275809" TEXT="hier haben wir sehr gro&#xdf;e Quantisierungs-Stufen (nur insges. 3 Pixel)"/>
<node CREATED="1670697276989" ID="ID_1309607221" MODIFIED="1670697310068" TEXT="die Approximation ist zufrieden, wenn sie die Pixel-Zahl &quot;erwischt&quot;"/>
<node CREATED="1670697311136" ID="ID_1925008467" MODIFIED="1670697312348" TEXT="(selbst wenn die Metrik viel zu gro&#xdf; ist)"/>
<node CREATED="1670697313432" ID="ID_398787454" MODIFIED="1670697327818" TEXT="von der Ergebnis-Metrik wird nicht mehr auf die Duration zur&#xfc;ckgerechnet"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1670697328710" FOLDED="true" ID="ID_946682751" MODIFIED="1670889921456" TEXT="pxWidth*Metric w&#xfc;rde etwas deutlich Anderes ergeben">
<linktarget COLOR="#9a2652" DESTINATION="ID_946682751" ENDARROW="Default" ENDINCLINATION="-244;-11;" ID="Arrow_ID_508831862" SOURCE="ID_1755203527" STARTARROW="None" STARTINCLINATION="4;65;"/>
<icon BUILTIN="broken-line"/>
<node CREATED="1670703907239" ID="ID_1136727655" MODIFIED="1670703914898" TEXT="also m&#xfc;ssen wir darauf genau optimieren"/>
<node COLOR="#435e98" CREATED="1670710050702" ID="ID_59496229" MODIFIED="1670720671013" TEXT="wie genau kann dieses Ziel angesteuert werden?">
<icon BUILTIN="help"/>
<node CREATED="1670710106867" ID="ID_411669983" MODIFIED="1670710132795" TEXT="Berechnung nun ohne trunc{&#x2022;}"/>
<node CREATED="1670710118326" ID="ID_696924178" MODIFIED="1670719386236" TEXT="f(x&#x2099;) &#x2254; &#x394;&#x2099; = resPx-pxWidth = x&#x2099; &#xb7; dn/(md&#xb7;dd) - pxWidth"/>
<node CREATED="1670710479537" ID="ID_1107528495" MODIFIED="1670710480526" TEXT="x&#x2099;&#x2081; &#x2254; x&#x2099; - f(x&#x2099;)/f&apos;(x&#x2099;)">
<node CREATED="1670719334585" ID="ID_1012714967" MODIFIED="1670719377864" TEXT="x&#x2099; - &#x394;&#x2099; /dn &#xb7;md&#xb7;dd"/>
<node CREATED="1670720183545" ID="ID_74252514" MODIFIED="1670720198130" TEXT="Begrenzung durch Integer-Quantisierung">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1670720199199" ID="ID_1527746651" MODIFIED="1670720220936" TEXT="1 &lt; md &#xb7; dd/dn">
<node CREATED="1670720224652" ID="ID_1101376604" MODIFIED="1670720248700" TEXT="&#x27f9;  md &gt; dn/dd"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1670720540449" ID="ID_856703596" MODIFIED="1670720731747" TEXT="das kann eigentlich immer gebrochen werden">
<arrowlink COLOR="#8989ad" DESTINATION="ID_975354864" ENDARROW="Default" ENDINCLINATION="50;-21;" ID="Arrow_ID_1786066101" STARTARROW="None" STARTINCLINATION="-274;16;"/>
<icon BUILTIN="clanbomber"/>
</node>
</node>
</node>
<node CREATED="1670720590707" ID="ID_981071358" MODIFIED="1670720651637" TEXT="abgesehen davon: &#x394;&#x2099; mu&#xdf; hinreichend klein werden">
<arrowlink COLOR="#8052a9" DESTINATION="ID_939267839" ENDARROW="Default" ENDINCLINATION="81;-7;" ID="Arrow_ID_527726449" STARTARROW="None" STARTINCLINATION="-91;5;"/>
</node>
</node>
<node CREATED="1670720672529" ID="ID_975354864" MODIFIED="1670720722836" TEXT="Konsequenz: floating-Point-Rechnung machen">
<linktarget COLOR="#8989ad" DESTINATION="ID_975354864" ENDARROW="Default" ENDINCLINATION="50;-21;" ID="Arrow_ID_1786066101" SOURCE="ID_856703596" STARTARROW="None" STARTINCLINATION="-274;16;"/>
<icon BUILTIN="forward"/>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1670716500389" FOLDED="true" ID="ID_1163092630" MODIFIED="1670889912132" TEXT="Newton-Approximation k&#xf6;nnte nicht terminieren">
<icon BUILTIN="clanbomber"/>
<node CREATED="1670716541578" ID="ID_66975459" MODIFIED="1670716554297" TEXT="wenn man die Ziel-Bandbreite zu eng ansetzt"/>
<node CREATED="1670716555261" ID="ID_731488848" MODIFIED="1670716577327" TEXT="grunds&#xe4;tzlich sogar &#xfc;berhaupt nicht (im Rahmen der Ganzzahl-Arithmetik)"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1670717434415" ID="ID_1457691957" MODIFIED="1670816918779" TEXT="Bedingungen?">
<icon BUILTIN="help"/>
<node CREATED="1670717442798" ID="ID_1933929107" MODIFIED="1670717464575" TEXT="Einfache Newton-Approximation (wie implementiert, Z&#xe4;hler variiert)"/>
<node CREATED="1670717474602" ID="ID_939267839" MODIFIED="1670720645262" TEXT="Vorgabe: &#x394;&#x2099; &lt; 0.1">
<linktarget COLOR="#8052a9" DESTINATION="ID_939267839" ENDARROW="Default" ENDINCLINATION="81;-7;" ID="Arrow_ID_527726449" SOURCE="ID_981071358" STARTARROW="None" STARTINCLINATION="-91;5;"/>
</node>
<node CREATED="1670717504598" ID="ID_1593916172" MODIFIED="1670717538008" TEXT="0.1 &gt; x&#x2099; / md &#xb7; dn/dd - px">
<node CREATED="1670717548461" ID="ID_991051485" MODIFIED="1670717614444" TEXT="&#x27f9; (10px +1)/10 &#xb7; dd/dn &gt; x&#x2099; / md"/>
<node CREATED="1670717770803" ID="ID_972821680" MODIFIED="1670717794626" TEXT="die Metrik x&#x2099;/md ist nach untern limitiert">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1670717895146" ID="ID_750112679" MODIFIED="1670717903085" TEXT="effektiv ~ 1e-9"/>
<node CREATED="1670717904177" ID="ID_850581245" MODIFIED="1670718019510" TEXT="oder etwas kleiner falls MAX_TIMESPAN">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      die MAX_TIMESPAN-Limitierung beginnt etwas &#252;ber 1000px zu greifen; diese Unterschwelle w&#228;re aber px &#183; 1e-14
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1670718042479" ID="ID_1099895360" MODIFIED="1670718073999" TEXT="&#x27f9; dd/dn &lt; 1e-9 wird gef&#xe4;rlich">
<node CREATED="1670718077402" ID="ID_1523825947" MODIFIED="1670718152194" TEXT="der Vorfaktor ist minimal 1.1 (bzw 2 f&#xfc;r ganze Pixel)">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      minimale Pixel-Zahl 1px. Mit 1/10 Band dann 1.1, mit 1px-Band 2
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1670718253667" ID="ID_1543257432" MODIFIED="1670718341579" TEXT="&#x27f9; Duration(sec) &gt;  &#x2248; 1e+9 &#xb7; px">
<node CREATED="1670718410758" ID="ID_613768759" MODIFIED="1670718431185" TEXT="&#x2248; 31 Jahre &#xb7; px"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1670718609339" ID="ID_1974821140" MODIFIED="1670719888521" TEXT="hoppla: &#x2248; maxSaneWinExtension(px)">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
<node CREATED="1670718805267" ID="ID_1516871892" MODIFIED="1670718832329" TEXT="bei den maximal erlauben Zeitspannen k&#xf6;nnte es grade gef&#xe4;hrlich werden">
<node CREATED="1670718839716" ID="ID_301815780" MODIFIED="1670718852142" TEXT="extrem wenig Pixel"/>
<node CREATED="1670718867369" ID="ID_1477343330" MODIFIED="1670719045718" TEXT="Zeitspanne knapp an px &#xb7; LIM_HAZARD/1000"/>
<node CREATED="1670785753941" ID="ID_347403436" MODIFIED="1670785911020" TEXT="px &gt;=560  &#x27f9; metric = px*1e6 / Duration::MAX">
<arrowlink COLOR="#538fce" DESTINATION="ID_1996127148" ENDARROW="Default" ENDINCLINATION="231;-255;" ID="Arrow_ID_764100813" STARTARROW="None" STARTINCLINATION="-483;11;"/>
</node>
</node>
<node CREATED="1670719062943" ID="ID_1581529912" MODIFIED="1670719167745" TEXT="die Frage ob 0.1px-Band oder 1px-Band ist demgegen&#xfc;ber zweitrangig (nur Faktor 2)">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      will sagen, wenn man das 0.1px-Band zum Absturz bringen kann, dann klappt das mit der doppelten Zeit auch beim 1px-Band
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#435e98" CREATED="1670719529018" ID="ID_1496087661" MODIFIED="1670816812681" TEXT="Konsequenzen">
<icon BUILTIN="forward"/>
<node COLOR="#990000" CREATED="1670719549717" ID="ID_864034169" MODIFIED="1670816753143" TEXT="die verfeinerte Rechnung kann umgesetzt werden">
<icon BUILTIN="button_cancel"/>
<node COLOR="#338800" CREATED="1670720748175" ID="ID_1186911543" MODIFIED="1670726404457" TEXT="die ganze Optimierungs-Schleife in double rechnen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1670726407009" ID="ID_1804166411" MODIFIED="1670804460008" TEXT="Aufgabe: sicherstellen da&#xdf; das Ergebnis auch gerundet im Ziel liegt">
<icon BUILTIN="button_ok"/>
<node CREATED="1670726493421" ID="ID_1608426092" MODIFIED="1670726526180" TEXT="die Pixel-Zahl vor Quantisierung mu&#xdf; etwas &#xfc;ber der Marke liegen">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1670726578627" ID="ID_1008014521" MODIFIED="1670726664314" TEXT="aber auch dann noch, wenn man die Rechnung mit Integer-Br&#xfc;chen macht"/>
<node CREATED="1670726672744" ID="ID_1853957443" MODIFIED="1670726682672" TEXT="Problem hier: das geht nicht in den Feedback ein"/>
<node COLOR="#990033" CREATED="1670726688101" ID="ID_1472574562" MODIFIED="1670804431578" TEXT="kann man das in den Feedback mit einbauen?">
<icon BUILTIN="help"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1670787309172" ID="ID_1428485868" MODIFIED="1670787329673" TEXT="vielleicht k&#xf6;nnte man..."/>
<node CREATED="1670787331622" ID="ID_1654809229" MODIFIED="1670787350911" TEXT="erscheint mir aber der Methode zuwider zu laufen"/>
</node>
<node CREATED="1670787359266" ID="ID_680040293" MODIFIED="1670787385643" TEXT="bessere L&#xf6;sung: vorhandenen Spielraum im Bruch zur Genauigkeitsverbesserung nutzen">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1670804470398" ID="ID_80318439" MODIFIED="1670816791233" TEXT="Stop: ich bin ein Trottel">
<arrowlink COLOR="#8f4575" DESTINATION="ID_975395011" ENDARROW="Default" ENDINCLINATION="41;-158;" ID="Arrow_ID_1007214797" STARTARROW="None" STARTINCLINATION="-611;68;"/>
<icon BUILTIN="stop-sign"/>
<node CREATED="1670804496939" ID="ID_1184455321" MODIFIED="1670804511211" TEXT="ach der sch&#xf6;ne Newton-Algorithmus....">
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1670804513145" ID="ID_877585639" MODIFIED="1670804692975" TEXT="wenn ich ohnehin mit floats rechne, dann kann ich gleich alles mit Floats rechnen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Die Newton-Approximation kam ja nur ins Spiel, weil ich mit Integer rechnen wollte, in <i>dieser Domain</i>&#160;aber die Rechnung nicht umkehren konnte. Im weiteren Kontext betrachtet war das von Anfang an ein Schmuh (und ich habe jetzt schon zwei Tage lang ein dumpfes Gef&#252;hl, da&#223; es ein Schmuh ist....)
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1670804541533" ID="ID_1739055812" MODIFIED="1670804597604" TEXT="da mir ja hier das &#xbb;ungiftige&#xab; Ergebnis so wichtig ist, da&#xdf; ich erhebliche Fehler in Kauf nehme...">
<icon BUILTIN="yes"/>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1670804699664" ID="ID_654656000" MODIFIED="1670804885457" TEXT="und ja &#x2014; das ist die Pr&#xe4;misse">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Im Regelfall m&#246;chte ich die pr&#228;zise Integer-Bruch-Arithmetik, aber ich m&#246;chte die Grenzf&#228;lle nahtlos mit integrieren, und nehme f&#252;r diese Grenzf&#228;lle absolut betrachtet erehbliche Fehler in Kauf.
    </p>
  </body>
</html></richcontent>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1670804855947" ID="ID_1040358248" MODIFIED="1670804870858" TEXT="also: nur den Ansatz mit dem korrigierten Z&#xe4;hler beibehalten">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node COLOR="#990000" CREATED="1670719566683" ID="ID_1040949384" MODIFIED="1670816827965" TEXT="empirisch pr&#xfc;fen, ob die Endlosschleife m&#xf6;glich ist">
<linktarget COLOR="#7d5c62" DESTINATION="ID_1040949384" ENDARROW="Default" ENDINCLINATION="-541;29;" ID="Arrow_ID_1071041256" SOURCE="ID_266339038" STARTARROW="None" STARTINCLINATION="1170;80;"/>
<icon BUILTIN="stop-sign"/>
<node CREATED="1670816836062" ID="ID_851885311" MODIFIED="1670816841537" TEXT="kein Newton mehr!"/>
<node CREATED="1670816842370" ID="ID_1563827764" MODIFIED="1670816851327" TEXT="&#x27f9; keine Schleife"/>
<node CREATED="1670816852083" ID="ID_1868207063" MODIFIED="1670816858431" TEXT="kein Deadlock m&#xf6;glich">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1670816009109" ID="ID_975395011" MODIFIED="1670889443756" TEXT="Optimierung in double ohne Newton...">
<linktarget COLOR="#8f4575" DESTINATION="ID_975395011" ENDARROW="Default" ENDINCLINATION="41;-158;" ID="Arrow_ID_1007214797" SOURCE="ID_80318439" STARTARROW="None" STARTINCLINATION="-611;68;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1670816029198" ID="ID_1452556449" MODIFIED="1670816086216" TEXT="aber gleiches Prinzip">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1670816046304" ID="ID_1426435830" MODIFIED="1670816089716" TEXT="Metrik auf Zweierpotenz requantisieren">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1670816056231" ID="ID_1728459173" MODIFIED="1670816089715" TEXT="dann den Z&#xe4;hler optimieren">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1670816062869" ID="ID_1276500575" MODIFIED="1670816089715" TEXT="dann soweit m&#xf6;glich hochskalieren">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1670816091978" ID="ID_1568711094" MODIFIED="1670816108432" TEXT="funktioniert gut und mit vertretbarem Fehler">
<icon BUILTIN="button_ok"/>
<node CREATED="1670816109718" ID="ID_619043266" MODIFIED="1670889738713" TEXT="Fehler: 1 digit im Z&#xe4;hler &#x27f9; 1&#x2030;">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      kommt dadurch zustande, da&#223; ich nach dem Hochskalieren i.d.R doch noch einen Rest habe, den ich f&#252;r Integer-Arithmetik abrunde; damit dann trotzdem die gew&#252;nschte (i.d.R. um einen Pixel h&#246;here) Pixelzahl rauskommt, inkrementiere ich die letzte Stelle, und das ist zugleich meine maximale Fehlerschranke. In Extremf&#228;llen haben wir im Z&#228;hler noch eine 4-stellige Zahl (1000/LIM_HAZARD) und damit etwa 1&#8240; Fehler maximal. Das ist nicht sch&#246;n, aber akzeptabel &#8212; gemessen daran, da&#223; ich dadruch eine &#187;ungiftige&#171; Metrik sicherstellen kann. Sobald man etwas weg ist von der Unterschranke der Metrik 1000/LIM_HAZARD, wirkt das Nach-Skalieren und Mitnehmen des gebrochenen Anteils viel besser, und der Fehler sinkt drastisch
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#659bda" DESTINATION="ID_619043266" ENDARROW="Default" ENDINCLINATION="27;148;" ID="Arrow_ID_814014787" SOURCE="ID_1184311307" STARTARROW="None" STARTINCLINATION="154;23;"/>
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1670816505986" ID="ID_715992496" MODIFIED="1670816655190" TEXT="nahe am Limit kann es zu scheinbar zuf&#xe4;lligem Verhalten kommen">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1670816533446" ID="ID_1029606070" MODIFIED="1670816549353" TEXT="da auf mehreren Ebenen quantisiert wird"/>
<node CREATED="1670816550292" ID="ID_966482500" MODIFIED="1670816558978" TEXT="Beispiel">
<node CREATED="1670816572401" ID="ID_528266122" MODIFIED="1670882262212" TEXT="1001_r/(LIM_HAZARD-3)"/>
<node CREATED="1670816582730" ID="ID_1561405826" MODIFIED="1670816620196" TEXT="Ergebnis 2002_r/(2*LIM_HAZARD)"/>
<node CREATED="1670816626705" ID="ID_1528211021" MODIFIED="1670816637773" TEXT="das hei&#xdf;t...">
<node CREATED="1670816638576" ID="ID_1556421449" MODIFIED="1670816644123" TEXT="zoom-out angefordert"/>
<node CREATED="1670816644903" ID="ID_1804356719" MODIFIED="1670816649571" TEXT="zoom-in bekommen"/>
</node>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1670816710871" ID="ID_817219684" MODIFIED="1670816718496" TEXT="halte ich f&#xfc;r unvermeidbar">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1670816721077" ID="ID_1346974922" MODIFIED="1670889438465" TEXT="noch im Test dokumentieren">
<icon BUILTIN="button_ok"/>
<node COLOR="#990000" CREATED="1670816940056" ID="ID_721415029" MODIFIED="1670889435171" TEXT="Testfall schwer zu finden">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1670816973011" ID="ID_11852866" MODIFIED="1670816988485" TEXT="ich m&#xf6;chte zoom-out von 1001/LIM_HAZARD"/>
<node CREATED="1670816990899" ID="ID_838942819" MODIFIED="1670817021017" TEXT="aber das wird immer auf 1001/LIM_HAZARD zur&#xfc;ck gerundet"/>
<node CREATED="1670817026420" ID="ID_425109455" MODIFIED="1670817157515" TEXT="obwohl man theoretisch daran vorbeikommen sollte">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <ul>
      <li>
        und zwar mit einer Zahl zwischen 1001/LIM_HAZARD &gt; gesucht &gt; 1000/LIM_HAZARD
      </li>
      <li>
        die resultierende Metrik sollte idealerweise giftig sein
      </li>
      <li>
        aber auch noch Headroom &#252;brig lassen (andernfalls gehen wir in die falsche Richtung)
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#435e98" CREATED="1670889380176" ID="ID_390014316" MODIFIED="1670889436751" TEXT="finde nur einen Tesfall der ohne Optimierung / detox genau aufgeht">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      1000_r/LIM_HAZARD * 1024_r/1023
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1670889456537" ID="ID_1888005668" MODIFIED="1670889472787" TEXT="nun keine Abweichung mehr: geht exakt ans Maximum">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1670785144912" ID="ID_459433908" MODIFIED="1670889480274" TEXT="conformMetricToWindow(px) &#xfc;berarbeiten">
<icon BUILTIN="button_ok"/>
<node CREATED="1670785204059" ID="ID_1114726267" MODIFIED="1670785236008" TEXT="kein &quot;blindes&quot; detox()">
<node CREATED="1670785240715" ID="ID_795170008" MODIFIED="1670785328509" TEXT="Zievorgabe: so ungiftig wie m&#xf6;glich"/>
<node CREATED="1670785422813" ID="ID_1124667044" MODIFIED="1670785429400" TEXT="problematisch sind sehr kleine Metriken">
<node CREATED="1670785873462" ID="ID_1996127148" MODIFIED="1670785905744" TEXT="Limits f&#xfc;r Metric">
<linktarget COLOR="#538fce" DESTINATION="ID_1996127148" ENDARROW="Default" ENDINCLINATION="231;-255;" ID="Arrow_ID_764100813" SOURCE="ID_347403436" STARTARROW="None" STARTINCLINATION="-483;11;"/>
<node CREATED="1670785753941" ID="ID_1553384977" MODIFIED="1670785826668" TEXT="px &gt;=560  &#x27f9; metric = px*1e6 / Duration::MAX">
<node CREATED="1670786467236" ID="ID_1737539122" MODIFIED="1670786496748" TEXT="=9,1073e-10 &#xb7; px/560"/>
</node>
<node CREATED="1670785923384" ID="ID_1777459427" MODIFIED="1670785947961" TEXT="px &lt; 560  &#x27f9; metric = 1000 / LIM_HAZARD">
<node CREATED="1670785984449" ID="ID_170764771" MODIFIED="1670785994497" TEXT="= 9,0949e-10"/>
</node>
<node CREATED="1670786599846" ID="ID_1314688550" MODIFIED="1670786624720" TEXT="ZOOM_MAX_RESOLUTION = 2*Time::SCALE"/>
</node>
<node CREATED="1670786699086" ID="ID_1357536106" MODIFIED="1670786712975" TEXT="kleinsm&#xf6;glicher nicht-toxischer Wert">
<node CREATED="1670786714371" ID="ID_690038090" MODIFIED="1670786719462" TEXT="1/LIM_HAZARD"/>
<node CREATED="1670786720242" ID="ID_1737636488" MODIFIED="1670786727852" TEXT="9,0949e-13"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1670786927366" ID="ID_495890468" MODIFIED="1670786950021" TEXT="valide Metrik-Werte m&#xfc;ssen niemals toxisch sein">
<icon BUILTIN="forward"/>
</node>
</node>
</node>
<node CREATED="1670786993539" ID="ID_1985716158" MODIFIED="1670787033776" TEXT="stattdessen: requantisieren auf 2-er-Potenz + Resultat im Z&#xe4;hler optimieren"/>
<node COLOR="#338800" CREATED="1670889501935" ID="ID_608097440" MODIFIED="1670889589637" TEXT="Wichtig: anschlie&#xdf;end m&#xf6;glichst hochskalieren, um mehr Genauigkeit mitzunehmen">
<icon BUILTIN="button_ok"/>
<node CREATED="1670889523827" ID="ID_932462373" MODIFIED="1670889532670" TEXT="geht aber nur im Rahmen des vorhandenen Headroom"/>
<node CREATED="1670889533466" ID="ID_176906927" MODIFIED="1670889582551" TEXT="spendiere fest einen Faktor 2 als Minimum">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      geht, weil die Metrik limitiert ist, insofern ist wenigstens daf&#252;r im Extremfall noch ein Bit &#252;brig
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#338800" CREATED="1670889597369" ID="ID_1674926358" MODIFIED="1670889627058" TEXT="Wenn dann noch ein Rest bleibt &#x27f9; Z&#xe4;hler inkrementieren">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1670889629266" ID="ID_1009582082" MODIFIED="1670889648092" TEXT="das definiert das Fehler-Limit">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1670889650019" ID="ID_1046455083" MODIFIED="1670889667095" TEXT="im worst-case haben wir mindestens einen 4-stelligen Z&#xe4;hler"/>
<node CREATED="1670889667816" ID="ID_1184311307" MODIFIED="1670889744565" TEXT="also Fehler &lt; 1&#x2030;">
<arrowlink COLOR="#659bda" DESTINATION="ID_619043266" ENDARROW="Default" ENDINCLINATION="27;148;" ID="Arrow_ID_814014787" STARTARROW="None" STARTINCLINATION="154;23;"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1670889821294" ID="ID_842321492" MODIFIED="1670889891273" TEXT="aufgekl&#xe4;rt: war t&#xfc;ckische Falle in der Metrik-Optimierung">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...und der ganze Ansatz mit Newton-N&#228;herung stellte sich als unsinnig heraus; jetzt rechnen wir die Optimierung mit einem Schu&#223; in float, und reizen dann sogar noch den Headroom aus, wodurch die Werte viel genauer werden
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1670889961473" ID="ID_994446883" MODIFIED="1670889977598" TEXT="Testf&#xe4;lle in epischer Breite analysiert und dokumentiert">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1668555072594" ID="ID_742229180" MODIFIED="1671216852441" TEXT="Ansteuern exterm gro&#xdf;er Zeit-Positionen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1670982930768" ID="ID_1528129980" MODIFIED="1670982944610" TEXT="erzeugen mit Start-Pos == Time::MAX">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1669475536331" ID="ID_486161883" MODIFIED="1671153173786" TEXT="setVisiblePos mit extremer Time">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1669475549345" ID="ID_234786683" MODIFIED="1671216849651" TEXT="setVisiblePos mit extremem Faktor">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1671153443706" ID="ID_43785368" MODIFIED="1671216714904" TEXT="Rechnung sieht plausibel aus, aber das Ergebnis ist falsch">
<icon BUILTIN="broken-line"/>
<node CREATED="1671153472181" ID="ID_1963137458" MODIFIED="1671153492750" TEXT="Offset wird auf MAX_DURATION gekappt (korrekt)"/>
<node CREATED="1671153500329" ID="ID_983458362" MODIFIED="1671153514062" TEXT="als relativer Pox-Faktor kommt 1 raus (korrekt)"/>
<node COLOR="#990033" CREATED="1671153518751" ID="ID_180845154" MODIFIED="1671216726077" TEXT="auch partBeforeAnchor wird anscheinend korrekt berechnet?">
<icon BUILTIN="help"/>
</node>
<node COLOR="#990000" CREATED="1671153550626" ID="ID_1354877877" MODIFIED="1671216842541" TEXT="aber visible().end() ist dann nicht Time::MAX">
<arrowlink COLOR="#c04288" DESTINATION="ID_1578460487" ENDARROW="Default" ENDINCLINATION="61;-23;" ID="Arrow_ID_914471115" STARTARROW="None" STARTINCLINATION="181;11;"/>
<icon BUILTIN="broken-line"/>
</node>
</node>
<node COLOR="#338800" CREATED="1671216679413" ID="ID_1318691761" MODIFIED="1671216817689" TEXT="nach &#x201e;Begradigung&#x201c; der Implementierung nun auch korrekt">
<arrowlink COLOR="#7accc0" DESTINATION="ID_1757084511" ENDARROW="Default" ENDINCLINATION="-271;-16;" ID="Arrow_ID_1766419591" STARTARROW="None" STARTINCLINATION="468;22;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1669479474484" ID="ID_1657847338" MODIFIED="1669479489366" TEXT="alle Mutatoren, die conformWindowToMetric() verwenden">
<node CREATED="1670520100834" ID="ID_636101408" MODIFIED="1670520114018" TEXT="das sind nicht viele (&#xfc;berraschenderweise)">
<node CREATED="1670961179624" ID="ID_712008770" MODIFIED="1670961184625" TEXT="mutateScale(Rat)"/>
<node CREATED="1670520136501" ID="ID_1373384288" MODIFIED="1670520142854" TEXT="mutateDuration(FSecs)"/>
<node CREATED="1670520143698" ID="ID_113302808" MODIFIED="1670520150597" TEXT="und ensureInvariants()"/>
</node>
<node CREATED="1670520153513" ID="ID_574049062" MODIFIED="1670520170810" TEXT="wozu? weil dort das Window anteilig neu positioniert wird"/>
<node CREATED="1670520176781" ID="ID_171252675" MODIFIED="1670520196129" TEXT="&#x27f9; gef&#xe4;hrlich wenn die bestehende Window-Pos gef&#xe4;hrlich ist"/>
<node COLOR="#338800" CREATED="1670520232861" ID="ID_1248431637" MODIFIED="1671153193486" TEXT="Szenario">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1670520238693" ID="ID_1734279608" MODIFIED="1670982961594" TEXT="sehr kleines Fenster">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1670520245444" ID="ID_428615363" MODIFIED="1671153194914" TEXT="fast aber nicht ganz an Time::MIN">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1670520259018" ID="ID_591142628" MODIFIED="1671153197781" TEXT="vergr&#xf6;&#xdf;ern auf Duration::MAX - aWeng">
<icon BUILTIN="button_ok"/>
<node CREATED="1671153207589" ID="ID_1801258827" MODIFIED="1671153210390" TEXT="so lala"/>
<node CREATED="1671153211145" ID="ID_779131227" MODIFIED="1671210849270" TEXT="man bekommt nicht exakt die gesetzte Duration">
<arrowlink COLOR="#6f6fbd" DESTINATION="ID_854310223" ENDARROW="Default" ENDINCLINATION="140;0;" ID="Arrow_ID_1109327091" STARTARROW="None" STARTINCLINATION="134;8;"/>
<icon BUILTIN="broken-line"/>
</node>
<node COLOR="#690f14" CREATED="1671153242324" ID="ID_1578460487" MODIFIED="1671216836261" TEXT="geht aber nicht besser, da Zahlen maximal giftig">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      wir rechnen von der Duration auf eine Metrik um, weil wir den Mechanismus zur relativen Positionierung haben wollen. Dieser mu&#223; aber detox() verwenden, weil sonst die Division mit der Pixel-Zahl einen numeric-wrap machen w&#252;rde....
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#c04288" DESTINATION="ID_1578460487" ENDARROW="Default" ENDINCLINATION="61;-23;" ID="Arrow_ID_914471115" SOURCE="ID_1354877877" STARTARROW="None" STARTINCLINATION="181;11;"/>
<icon BUILTIN="messagebox_warning"/>
<icon BUILTIN="button_cancel"/>
<node COLOR="#435e98" CREATED="1671153715708" ID="ID_293245647" MODIFIED="1671210765629" TEXT="wirklich nicht?">
<icon BUILTIN="help"/>
<node CREATED="1671153746581" ID="ID_965916539" MODIFIED="1671153758123" TEXT="wir brauchen doch nur die relative Positionierung"/>
<node CREATED="1671153758879" ID="ID_318897179" MODIFIED="1671153783226" TEXT="die trickreiche Limitierung und quantisierung ist &#xfc;berfl&#xfc;ssig..."/>
<node COLOR="#435e98" CREATED="1671153783923" ID="ID_1591963678" MODIFIED="1671210763661" TEXT="...weil wir ja schon eine Duration haben!">
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1671210766716" ID="ID_380651309" MODIFIED="1671210780555" TEXT="also eine unn&#xf6;tige Schleife">
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#338800" CREATED="1671210784819" ID="ID_1757084511" MODIFIED="1671216807713" TEXT="mutateDuration() direkt implementieren">
<linktarget COLOR="#7accc0" DESTINATION="ID_1757084511" ENDARROW="Default" ENDINCLINATION="-271;-16;" ID="Arrow_ID_1766419591" SOURCE="ID_1318691761" STARTARROW="None" STARTINCLINATION="468;22;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1671210799428" ID="ID_854310223" MODIFIED="1671210890809" STYLE="fork" TEXT="&#x27f9; gesetzte Duration wird nun exakt realisiert">
<linktarget COLOR="#6f6fbd" DESTINATION="ID_854310223" ENDARROW="Default" ENDINCLINATION="140;0;" ID="Arrow_ID_1109327091" SOURCE="ID_779131227" STARTARROW="None" STARTINCLINATION="134;8;"/>
<font NAME="SansSerif" SIZE="12"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1668555157385" ID="ID_1157546672" MODIFIED="1671235570910" TEXT="Time-wrap nach extremem Offset">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1671224197185" ID="ID_1016259949" MODIFIED="1671235568010" TEXT="offsetVisiblePos wird bereits abgefangen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1671224211255" ID="ID_407876103" MODIFIED="1671235569554" TEXT="nudgeVisiblePos ist noch gef&#xe4;hrlich">
<arrowlink COLOR="#d37297" DESTINATION="ID_772154372" ENDARROW="Default" ENDINCLINATION="-1063;-32;" ID="Arrow_ID_1688376810" STARTARROW="None" STARTINCLINATION="918;66;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1671225926047" HGAP="97" ID="ID_1143975886" MODIFIED="1671225950100" TEXT="Ansteuern mit Maximalwerten gen&#xfc;gt als Test" VSHIFT="19"/>
</node>
</node>
<node COLOR="#338800" CREATED="1668555183502" ID="ID_1287974241" MODIFIED="1670280063243" TEXT="Einspeisen giftiger Metrik">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1669478124298" ID="ID_1987069808" MODIFIED="1669488168358" TEXT="Fall-1 : kappen auf Canvas-Grenzen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1669478154709" ID="ID_499422673" MODIFIED="1669488173372" TEXT="Fall-2 : hinreichend gro&#xdf;er Canvas">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1669479930775" ID="ID_196873456" MODIFIED="1670016092876" TEXT="Fall-3 : setVisiblePos mit giftigem faktor">
<arrowlink COLOR="#8c2958" DESTINATION="ID_171647736" ENDARROW="Default" ENDINCLINATION="103;88;" ID="Arrow_ID_1341085031" STARTARROW="None" STARTINCLINATION="351;-26;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1669682888293" HGAP="67" ID="ID_1431682003" MODIFIED="1670016089041" TEXT="erweist sich als ziemlich schwer unter Kontrolle zu bekommen" VSHIFT="-1">
<edge COLOR="#01a450"/>
<icon BUILTIN="broken-line"/>
<node COLOR="#338800" CREATED="1670016009463" HGAP="38" ID="ID_413813658" LINK="#ID_264195573" MODIFIED="1670016072649" TEXT="daraus sind nun Support-Funktionen entstanden" VSHIFT="7">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1669480019215" ID="ID_930072077" MODIFIED="1670280057047" TEXT="Fall-4 : setVisiblePos mit extrem entfernter Position">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1668180030777" ID="ID_1319796356" MODIFIED="1671292315206" TEXT="1 &#xb5;-Tick">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1671287176378" ID="ID_1489554407" MODIFIED="1671287335758" TEXT="was soll ich hier noch testen?"/>
<node COLOR="#338800" CREATED="1671287188300" ID="ID_1893630472" MODIFIED="1671287339424" TEXT="wenigstens dokumentieren k&#xf6;nnte man das Verhalten">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1671287208625" ID="ID_1782470121" MODIFIED="1671291588696" TEXT="Scroll-Step soll das Window stets um mindestens 1 &#xb5;-Tick bewegen">
<icon BUILTIN="button_ok"/>
<node CREATED="1671287247180" ID="ID_186248922" MODIFIED="1671287327391" TEXT="das ist eine neue Anforderung">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1671287277817" ID="ID_1856370622" MODIFIED="1671287319670" TEXT="aber offensichtlich in dieser Situation">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      es w&#228;re schon &#252;berraschend, wenn der Scrollbalken pl&#246;tzlich nicht mehr reagiert....
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1671287255254" ID="ID_1670104161" MODIFIED="1671287269034" TEXT="....wenn ich jetzt nicht getestet h&#xe4;tte....">
<icon BUILTIN="smiley-oh"/>
</node>
</node>
<node COLOR="#338800" CREATED="1671291646626" ID="ID_1133219679" MODIFIED="1671291673767" TEXT="Zoom-Nudge nur im Rahmen der als &#xb5;-Tick darstellbaren Gr&#xf6;&#xdf;en m&#xf6;glich">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1671291593292" ID="ID_603523543" MODIFIED="1671292313793" TEXT="Begrenzung auf ZOOM_MAX_RESOLUTION auch bei sehr vielen Pixeln wirksam">
<icon BUILTIN="button_ok"/>
<node CREATED="1671291612706" ID="ID_1061099064" MODIFIED="1671291623193" TEXT="obwohl wir da definitiv mehr darstellen k&#xf6;nnten"/>
<node CREATED="1671292172775" ID="ID_778157874" MODIFIED="1671292310771" TEXT="ich sehe aber keinen Nutzen daf&#xfc;r">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      selbst Sound-Samples sind (absolut betrachet) noch 10.41ms auseinander; solange wir <i>das</i>&#160;komfortabel und sauber im GUI darstellen und handhaben k&#246;nnen, sind wir fein
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1668180054302" ID="ID_1604190635" MODIFIED="1671324160042" TEXT="1 Pixel">
<icon BUILTIN="button_ok"/>
<node CREATED="1670719662361" ID="ID_1680322812" MODIFIED="1670719685207" TEXT="maximal gef&#xe4;hrlich f&#xfc;r die Metrik-Berechnung">
<node COLOR="#990000" CREATED="1670719706106" ID="ID_266339038" MODIFIED="1670889773325" TEXT="Newton-Optimierung m&#xf6;glicherweise &#x27d8;">
<arrowlink COLOR="#7d5c62" DESTINATION="ID_1040949384" ENDARROW="Default" ENDINCLINATION="-541;29;" ID="Arrow_ID_1071041256" STARTARROW="None" STARTINCLINATION="1170;80;"/>
<icon BUILTIN="clanbomber"/>
<icon BUILTIN="button_cancel"/>
<node COLOR="#435e98" CREATED="1670889780025" ID="ID_584710662" MODIFIED="1670889789485" TEXT="jetzt keine Schleife mehr">
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1671294771824" ID="ID_115927706" MODIFIED="1671322048434" TEXT="numeric-wrap entdeckt">
<icon BUILTIN="broken-line"/>
<node CREATED="1671295216805" ID="ID_987376979" MODIFIED="1671295239222" TEXT="In der conversion FSecs &#x27fc; &#xb5;-tick"/>
<node CREATED="1671295240330" ID="ID_1742063347" MODIFIED="1671295249934" TEXT="bei &#xfc;bergro&#xdf;en Werten">
<icon BUILTIN="info"/>
</node>
<node COLOR="#338800" CREATED="1671322050278" ID="ID_1702542630" MODIFIED="1671322066067" TEXT="Limit in den Konverter">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node CREATED="1670719689323" ID="ID_794436463" MODIFIED="1670719702317" TEXT="mit m&#xf6;glichst gro&#xdf;en Zeiten kombinieren"/>
<node COLOR="#338800" CREATED="1671294759109" ID="ID_531574116" MODIFIED="1671324166659" TEXT="&#xe4;hnliche Operationen wie bereits f&#xfc;r die giftigen Faktoren">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1671324210414" ID="ID_1973605620" MODIFIED="1671324233682" TEXT="sehr gro&#xdf; skalieren und Limit LIM_HAZARD*1000">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1671324243418" ID="ID_596210372" MODIFIED="1671324255033" TEXT="Scroll / Zoom-Nudge">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1668264626100" ID="ID_45091906" MODIFIED="1671235896011" TEXT="giftige Br&#xfc;che">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1668264634478" ID="ID_651838862" MODIFIED="1671235708969" TEXT="setMetric (Rat) &#x27f6; mutateScale (Rat changedMetric)">
<linktarget COLOR="#e62f5c" DESTINATION="ID_651838862" ENDARROW="Default" ENDINCLINATION="115;-4;" ID="Arrow_ID_1930230162" SOURCE="ID_1257614207" STARTARROW="None" STARTINCLINATION="-189;14;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1668270062492" FOLDED="true" ID="ID_1671513743" MODIFIED="1671235854348" TEXT="entgiftungs-Methoden schaffen">
<linktarget COLOR="#bf0f5b" DESTINATION="ID_1671513743" ENDARROW="Default" ENDINCLINATION="297;-23;" ID="Arrow_ID_389982782" SOURCE="ID_1175951405" STARTARROW="None" STARTINCLINATION="-323;20;"/>
<linktarget COLOR="#9a858e" DESTINATION="ID_1671513743" ENDARROW="Default" ENDINCLINATION="297;-23;" ID="Arrow_ID_1815772846" SOURCE="ID_148236436" STARTARROW="None" STARTINCLINATION="-292;20;"/>
<linktarget COLOR="#b18586" DESTINATION="ID_1671513743" ENDARROW="Default" ENDINCLINATION="256;-19;" ID="Arrow_ID_882084800" SOURCE="ID_773636992" STARTARROW="None" STARTINCLINATION="-201;12;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1668292035888" HGAP="50" ID="ID_511660460" MODIFIED="1668295679206" TEXT="ist das &#xfc;berhaupt m&#xf6;glich" VSHIFT="9">
<icon BUILTIN="help"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1668292124740" ID="ID_1232493436" MODIFIED="1668292133321" TEXT="k&#xf6;nnte ein Restrisiko bleiben"/>
<node CREATED="1668292133979" ID="ID_770094379" MODIFIED="1668292156815">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      erfordert Analyse <i>aller relevanten </i>Code-Pfade
    </p>
  </body>
</html></richcontent>
<node CREATED="1668292396131" ID="ID_7304516" MODIFIED="1668294943464" TEXT="conformWindowToMetric">
<linktarget COLOR="#c87094" DESTINATION="ID_7304516" ENDARROW="Default" ENDINCLINATION="6;156;" ID="Arrow_ID_1140056910" SOURCE="ID_96983887" STARTARROW="None" STARTINCLINATION="-286;-12;"/>
<node CREATED="1668293208971" ID="ID_1653636245" MODIFIED="1668293210015" TEXT="dur = Rat(pxWidth) / changedMetric">
<node CREATED="1668293236069" ID="ID_1127042707" MODIFIED="1668293258728" TEXT="&#x27f9; changedMetric.denominator() * pxWidth &lt; INT_MAX"/>
</node>
<node CREATED="1668293281511" ID="ID_1060313609" MODIFIED="1668293290147" TEXT="isMicroGridAligned(dur)">
<node CREATED="1668293329717" ID="ID_1188353936" MODIFIED="1668293343029" TEXT="hier definiert der gleiche numerator() die Grenze"/>
</node>
<node CREATED="1668293649111" ID="ID_944232790" MODIFIED="1668293651579" TEXT="placeWindowRelativeToAnchor">
<node CREATED="1668293657395" ID="ID_1569543028" MODIFIED="1668293667721" TEXT="geht hier direkt in die Umwandlung auf TimeValue ein"/>
<node CREATED="1668293668966" ID="ID_386978017" MODIFIED="1668293698664" TEXT="daher ist der Z&#xe4;hler gef&#xe4;hrlich f&#xfc;r &#xdc;berlauf">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1668293781881" ID="ID_159285221" MODIFIED="1668295774689" TEXT="&#x27f9; den Nenner limitieren und umrechnen">
<arrowlink COLOR="#784489" DESTINATION="ID_1438689210" ENDARROW="Default" ENDINCLINATION="202;-30;" ID="Arrow_ID_1396674797" STARTARROW="None" STARTINCLINATION="-243;119;"/>
<node CREATED="1668293808883" ID="ID_1567408575" MODIFIED="1668293830091" TEXT="dadurch sollte auch der Z&#xe4;hler kleiner werden"/>
<node CREATED="1668293830823" ID="ID_615954964" MODIFIED="1668293953957" TEXT="danach kann man den Z&#xe4;hler noch limitieren"/>
<node CREATED="1668293939617" ID="ID_1509248321" MODIFIED="1668293997256" TEXT="das verf&#xe4;lscht dann zwar die Ergebnisse ">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...aber ein Z&#228;hler &gt; INT_MAX / Time::SCALE kann unm&#246;glich sinnvoll weiterverarbeitet werden, und au&#223;erdem sollte er f&#252;r eine Metrik gar nicht auftreten k&#246;nnen, weil die Metrik ja relativ stark in der Gr&#246;&#223;e beschr&#228;nkt ist
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node CREATED="1668292406078" ID="ID_700195003" MODIFIED="1668292410082" TEXT="mutateScale">
<node CREATED="1668294260504" ID="ID_1189855260" MODIFIED="1668294265761" TEXT="changeFaktor wird berechnet">
<node CREATED="1668294266469" ID="ID_1220681698" MODIFIED="1668294272300" TEXT="hier geht alte und neue Metrik ein"/>
<node CREATED="1668294279606" ID="ID_1996892048" MODIFIED="1668294286990" TEXT="dabei k&#xf6;nnen Z&#xe4;hler und Nenner &#xfc;berlaufen"/>
<node CREATED="1668294397413" ID="ID_91804756" MODIFIED="1668294448984" TEXT="Vorsicht: Nenner der bestehenden Metrik kann toxisch sein">
<linktarget COLOR="#c6476e" DESTINATION="ID_91804756" ENDARROW="Default" ENDINCLINATION="220;-12;" ID="Arrow_ID_1385445807" SOURCE="ID_199183662" STARTARROW="None" STARTINCLINATION="721;42;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1668294526618" ID="ID_603305402" MODIFIED="1668736269643" TEXT="maximale Gefahr...">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1668294547631" ID="ID_1464756735" MODIFIED="1668294561849" TEXT="Nenner der bestehenden Metrik ist nahe Time::MAX"/>
<node CREATED="1668294577579" ID="ID_1456441768" MODIFIED="1668294606739" TEXT="Z&#xe4;hler der neuen Metrik ist knapp unter ZOOM_MAX_RESOLUTION"/>
<node CREATED="1668294624158" ID="ID_1703677216" MODIFIED="1668294635105" TEXT="dann kann die neue Duration entgleisen">
<node CREATED="1668294754587" ID="ID_552564018" MODIFIED="1668294764350" TEXT="negative Werte werden dann zwar gekappt"/>
<node CREATED="1668294765010" ID="ID_1324653520" MODIFIED="1668294773319" TEXT="aber es k&#xf6;nnen auch extreme positive Werte rauskommen"/>
</node>
</node>
</node>
<node CREATED="1668294855702" ID="ID_573583654" MODIFIED="1668294856771" TEXT="dur /= changeFactor;">
<node CREATED="1668294810124" ID="ID_1927711726" MODIFIED="1668294839716" TEXT="Z&#xe4;hler der neuen Metrik * Nenner der bestehenden Metrik &#x27f6; Nenner der duration"/>
<node CREATED="1668294868212" ID="ID_513903725" MODIFIED="1668294880149" TEXT="&#x27f9; dur k&#xf6;nnte toxisch werden">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1668294907998" ID="ID_96983887" MODIFIED="1668294948887" TEXT="flie&#xdf;t in conformWindowToMetric">
<arrowlink COLOR="#c87094" DESTINATION="ID_7304516" ENDARROW="Default" ENDINCLINATION="6;156;" ID="Arrow_ID_1140056910" STARTARROW="None" STARTINCLINATION="-286;-12;"/>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1668294985092" ID="ID_25938691" MODIFIED="1668295715873" TEXT="Fazit: sichere Aussage nicht m&#xf6;glich">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...in vertretbarem Rahmen...
    </p>
    <ul>
      <li>
        es gibt X verschiedene Fallkombinationen die gef&#228;hrlich werden k&#246;nnen
      </li>
      <li>
        die Normalisierung/Invarianten-Behandlung kann selbst grenzwertige Metriken erzeugen
      </li>
      <li>
        Werte k&#246;nnen sich &#252;ber viele Runden aufschaukeln
      </li>
    </ul>
    <p>
      Dies alles erscheint mir analytisch schwer beherrschbar, bzw. w&#252;rde exzessiven Analyse-Aufwand erfordern; <font color="#af134b">und letztlich ist das hier doch nur eine &#8222;sportliche Herausforderung&#8220;</font>
    </p>
    <p>
      &#9762; und kein Kernkraftwerk &#9762;
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#fe153e" DESTINATION="ID_1727052645" ENDARROW="Default" ENDINCLINATION="-220;-12;" ID="Arrow_ID_1068276160" STARTARROW="None" STARTINCLINATION="-298;-17;"/>
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node CREATED="1668292044070" ID="ID_1745284896" MODIFIED="1668292074183" TEXT="Ansatz der Schwelle">
<node CREATED="1668295576854" ID="ID_1377873072" MODIFIED="1668295604677" TEXT="Typischwerweise erfolgt &#xbb;downstream&#xab; eine Multiplikation mit Time::SCALE">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1668295605833" ID="ID_1556461638" MODIFIED="1668295655639" TEXT="damit ist INT_MAX / (10*Time::SCALE) die Grenze des Handhabbaren"/>
</node>
<node COLOR="#435e98" CREATED="1668295661949" ID="ID_1727052645" MODIFIED="1671235817019" TEXT="es kann hier nur eine Heuristik geschaffen werden">
<linktarget COLOR="#fe153e" DESTINATION="ID_1727052645" ENDARROW="Default" ENDINCLINATION="-220;-12;" ID="Arrow_ID_1068276160" SOURCE="ID_25938691" STARTARROW="None" STARTINCLINATION="-298;-17;"/>
<icon BUILTIN="yes"/>
<node CREATED="1668295744623" ID="ID_1438689210" MODIFIED="1668295768057" TEXT="Methode">
<linktarget COLOR="#784489" DESTINATION="ID_1438689210" ENDARROW="Default" ENDINCLINATION="202;-30;" ID="Arrow_ID_1396674797" SOURCE="ID_159285221" STARTARROW="None" STARTINCLINATION="-243;119;"/>
<icon BUILTIN="info"/>
<node CREATED="1668295785449" ID="ID_248479209" MODIFIED="1668295794255" TEXT="Nenner gegen Limit pr&#xfc;fen"/>
<node COLOR="#338800" CREATED="1668295795329" FOLDED="true" ID="ID_1179855526" MODIFIED="1668474431508" TEXT="Requantisieren">
<icon BUILTIN="button_ok"/>
<node CREATED="1668353519645" ID="ID_1709187608" MODIFIED="1668474384018" TEXT="so exakt wie m&#xf6;glich">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      da reichen meine Algebra-Kenntnisse nicht aus....
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#f2fbd7" DESTINATION="ID_1709187608" ENDARROW="Default" ENDINCLINATION="113;234;" ID="Arrow_ID_229027216" SOURCE="ID_505458679" STARTARROW="Default" STARTINCLINATION="-412;-14;"/>
<icon BUILTIN="stop-sign"/>
</node>
<node COLOR="#435e98" CREATED="1668353552561" ID="ID_1127388689" MODIFIED="1668474254609" TEXT="n&#xe4;herungsweise per long double">
<icon BUILTIN="idea"/>
<node CREATED="1668353569055" ID="ID_1784438485" MODIFIED="1668353581617" TEXT="aufteilen in Ganzzahl und Modulus"/>
<node CREATED="1668353584405" ID="ID_1181209360" MODIFIED="1668353593384" TEXT="dann den Modulus n&#xe4;herungsweise requantifizieren"/>
<node COLOR="#338800" CREATED="1668353653955" FOLDED="true" ID="ID_1020200002" MODIFIED="1668353816582" TEXT="Neben-Untersuchung: Ganzzahl-Zweierlogarithmus">
<icon BUILTIN="button_ok"/>
<node CREATED="1668353668892" ID="ID_259284183" MODIFIED="1668353679884" TEXT="ja... die banale L&#xf6;sung mit der Bitshift-Schleife"/>
<node CREATED="1668353680848" ID="ID_152151776" MODIFIED="1668353792957" TEXT="Geht das auch besser? vielleicht logarithmisch?">
<node CREATED="1668353698198" ID="ID_394250867" LINK="https://stackoverflow.com/a/24748637" MODIFIED="1668353698198" TEXT="sowiso...">
<linktarget COLOR="#ffe1c1" DESTINATION="ID_394250867" ENDARROW="Default" ENDINCLINATION="-128;27;" ID="Arrow_ID_791821354" SOURCE="ID_812438903" STARTARROW="None" STARTINCLINATION="-142;-24;"/>
</node>
<node CREATED="1668353698198" ID="ID_275694038" LINK="http://graphics.stanford.edu/~seander/bithacks.html#IntegerLogObvious" MODIFIED="1668353698198" TEXT="aber klar doch..."/>
</node>
<node COLOR="#338800" CREATED="1668353793968" ID="ID_9788121" MODIFIED="1668353882082" TEXT="eine Adaption dieser Methode mal als Utility formuliert">
<arrowlink COLOR="#07a5b2" DESTINATION="ID_1509712772" ENDARROW="Default" ENDINCLINATION="96;-4;" ID="Arrow_ID_1066574831" STARTARROW="None" STARTINCLINATION="-282;15;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1668393503545" ID="ID_1760600173" MODIFIED="1668395451097" TEXT="Microbenchmarks durchgef&#xfc;hrt">
<icon BUILTIN="button_ok"/>
<node CREATED="1668394019882" ID="ID_599742848" MODIFIED="1668394142917" TEXT="Benchmark-Setup">
<icon BUILTIN="info"/>
<node CREATED="1668394043359" ID="ID_1124273723" MODIFIED="1668394063335" TEXT="gebaut per -O3"/>
<node CREATED="1668394064034" ID="ID_235157501" MODIFIED="1668395296511" TEXT="Impl-Funktion per Lambda &#xfc;bergeben">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Habe dies explizit verifiziert und vergliechen mit komplett ausformulierten inline-Funktionen; wie erwartet: mit -O3 werden Lambdas komplett transparent geinlined.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1668394082290" ID="ID_342146050" MODIFIED="1668394093332" TEXT="Array mit 1000 Zufallszahlen"/>
<node CREATED="1668394096760" ID="ID_1339569720" MODIFIED="1668394109114" TEXT="1000 Durchl&#xe4;ufe &#xfc;ber dieses Array"/>
<node CREATED="1668394109774" ID="ID_552943244" MODIFIED="1668395370694" TEXT="Ergebnis in Akkumulator summiert">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Extrem wichtig. Und auch wichtig: mit diesem Akkumulator nachher noch etwas machen (z.B. ausgeben). Sonst merkt der Compiler da&#223; das kein beobachtbarer Effekt ist, und entfernt die Addition, und dann in einigen F&#228;llen auch den eigentlichen Funktionsaufruf
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1668394121117" ID="ID_169752249" MODIFIED="1668394135936" TEXT="Zeitmessung per system_clock"/>
</node>
<node CREATED="1668396009603" ID="ID_1438298126" MODIFIED="1668396019050" TEXT="f&#xfc;r int64_t">
<node CREATED="1668393519910" ID="ID_219605808" MODIFIED="1668397317940" TEXT="mein ilog2: 5.6ns"/>
<node CREATED="1668393672305" ID="ID_812438903" MODIFIED="1668393802739" TEXT="Vorlage SO: 7.6ns">
<arrowlink COLOR="#ffe1c1" DESTINATION="ID_394250867" ENDARROW="Default" ENDINCLINATION="-128;27;" ID="Arrow_ID_791821354" STARTARROW="None" STARTINCLINATION="-142;-24;"/>
<node CREATED="1668395067578" ID="ID_386803191" MODIFIED="1668395176399" TEXT="das liegt aber nur am fehlenden -1 Branch">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Die Vorlage auf Stackoverflow initialisiert auf 0 oder -1, l&#228;uft dann aber f&#252;r Input==0 leer durch die Checks durch. Meine Variante testet auf 0 und returnt sofort.
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1668393804032" ID="ID_21424194" MODIFIED="1668393908928" TEXT="std::ilogb: 5ns">
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1668395186709" ID="ID_1211843890" MODIFIED="1668395210813" TEXT="tja..">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1668395190925" ID="ID_1430564827" MODIFIED="1668395202091" TEXT="soviel zu mikro-Optimierungen">
<icon BUILTIN="smiley-oh"/>
</node>
</node>
<node CREATED="1668393917856" ID="ID_1019010591" MODIFIED="1668398463666" TEXT="bitshift: 44.5ns"/>
<node CREATED="1668393950108" ID="ID_1616300073" MODIFIED="1668398506957" TEXT="identity: 0.6ns"/>
</node>
<node CREATED="1668396029490" ID="ID_1564618644" MODIFIED="1668396033408" TEXT="f&#xfc;r int8_t">
<node CREATED="1668396057054" ID="ID_1071094861" MODIFIED="1668396063236" TEXT="mein ilog2: 5.2ns">
<node CREATED="1668397327959" ID="ID_837112422" MODIFIED="1668397363382" TEXT="beachte: profitiert von dem kleineren Zahlenraum"/>
</node>
<node CREATED="1668396069719" ID="ID_22228342" MODIFIED="1668396092527" TEXT="std::ilogb: 5.8ns"/>
<node CREATED="1668396123864" ID="ID_442684506" MODIFIED="1668396149609" TEXT="bitshift: 8.2ns">
<node CREATED="1668397368169" ID="ID_1133087044" MODIFIED="1668397386347" TEXT="beachte: der Unterschied zum log-Test ist nicht mehr gro&#xdf;"/>
</node>
<node CREATED="1668396166545" ID="ID_1651198717" MODIFIED="1668396174213" TEXT="identity: 0.3ns"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1668399037176" ID="ID_436989865" MODIFIED="1668399206026" TEXT="Frage: std::ilogb verwenden?">
<icon BUILTIN="button_cancel"/>
<node CREATED="1668399055151" ID="ID_1320606425" MODIFIED="1668399066085" TEXT="sind beide in der gleichen Gr&#xf6;&#xdf;enordnung"/>
<node CREATED="1668399066733" ID="ID_833533643" MODIFIED="1668399154910" TEXT="was dagegen spricht: ich kenne nicht den Grund warum std::ilogb so schnell ist">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      eine andere Standard-Library, und ilogb() k&#246;nnte deutlich langsamer sein.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1668399085818" ID="ID_342245470" MODIFIED="1668399114059" TEXT="wohingegen die Performance dieser funktion hier rational nachvollziehbar ist"/>
<node CREATED="1668399157625" ID="ID_702521964" MODIFIED="1668399194000" TEXT="weiteres Argument: diese Funktion wird minimal schneller f&#xfc;r kleinere Datentypen"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1668399211706" ID="ID_738941814" MODIFIED="1668399256636" TEXT="mit C++20 kommt std::bit_width(i) &#x27f9; Benchmark wiederholen">
<icon BUILTIN="hourglass"/>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1668353594476" ID="ID_75685604" MODIFIED="1668353613457" TEXT="hier k&#xf6;nnte man u.U. sogar erkennen, ob exakte Rechnung m&#xf6;glich ist">
<icon BUILTIN="hourglass"/>
<node CREATED="1668353615520" ID="ID_816734415" MODIFIED="1668353619079" TEXT="sp&#xe4;ter mal"/>
<node CREATED="1668353619784" ID="ID_395391770" MODIFIED="1668353624739" TEXT="nicht klar ob relevant"/>
<node CREATED="1668353625375" ID="ID_27295187" MODIFIED="1668353643696" TEXT="dann auch Micro-Benchmark notwendig"/>
</node>
<node COLOR="#338800" CREATED="1668353892092" ID="ID_1654551581" MODIFIED="1668474307633" TEXT="Direkte L&#xf6;sung + Fehler-Assert">
<icon BUILTIN="button_ok"/>
<node CREATED="1668353919128" ID="ID_1237619949" MODIFIED="1668353937498" TEXT="ohne weitere Sanity-Checks"/>
<node COLOR="#338800" CREATED="1668353938677" ID="ID_278768234" MODIFIED="1668353944961" TEXT="funktioniert im Smoke-Test">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1668474259440" ID="ID_1390713963" MODIFIED="1668474302021" TEXT="verwende long double">
<icon BUILTIN="idea"/>
<node CREATED="1668474283161" ID="ID_505458679" MODIFIED="1668474406928">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      damit kann ich stets so genau wie m&#246;glich rechnen
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#f2fbd7" DESTINATION="ID_1709187608" ENDARROW="Default" ENDINCLINATION="113;234;" ID="Arrow_ID_229027216" STARTARROW="Default" STARTINCLINATION="-412;-14;"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1668474285441" ID="ID_318301259" MODIFIED="1668474305669" TEXT="Risiko: manche Plattformen definieren long double == double">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1668474317488" ID="ID_1121607924" MODIFIED="1668474342956" TEXT="erh&#xf6;he deshalb den Fehler-Assert auf einschli&#xdf;lich Grenze">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1668353832314" ID="ID_1509712772" MODIFIED="1668353882082" TEXT="Test-Methoden ob ein Bruch &#xbb;giftig&#xab; ist">
<linktarget COLOR="#07a5b2" DESTINATION="ID_1509712772" ENDARROW="Default" ENDINCLINATION="96;-4;" ID="Arrow_ID_1066574831" SOURCE="ID_9788121" STARTARROW="None" STARTINCLINATION="-282;15;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1668354018194" HGAP="39" ID="ID_1484604434" MODIFIED="1668474197855" TEXT="Testabdeckung..." VSHIFT="14">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1668474155145" ID="ID_132764069" MODIFIED="1668474234849" TEXT="ein Beispiel mit Nenner nahe INT_MAX">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Rat poison = (MAXI-88)/(MAXI/7);
    </p>
    <p>
      ...das ist n&#228;herungsweise Sieben...
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1668474201756" ID="ID_1997612449" MODIFIED="1668474234849" TEXT="Quantisieren auf feineren Divisor">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1668474224181" ID="ID_721417455" MODIFIED="1668474234849" TEXT="negative Zahlen">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node COLOR="#990000" CREATED="1668295799991" ID="ID_192811111" MODIFIED="1668736212375" TEXT="Z&#xe4;hler gegen Limit pr&#xfc;fen und ggfs kappen">
<icon BUILTIN="stop-sign"/>
<node CREATED="1668561130068" ID="ID_1984177447" MODIFIED="1668561136326" TEXT="gef&#xe4;llt mir gar nicht..."/>
<node CREATED="1668703798232" ID="ID_661092441" MODIFIED="1668703817686" TEXT="Ergebnis sollte stets n&#xe4;herungsweise korrekt sein!">
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1668561137011" ID="ID_1372010715" MODIFIED="1668736186079" TEXT="bessere Idee als &quot;kappen&quot;?">
<icon BUILTIN="help"/>
<node CREATED="1668561156200" ID="ID_646114106" MODIFIED="1668561196159" TEXT="man k&#xf6;nnte nochmal reQuantisieren">
<node CREATED="1668699891224" ID="ID_420975014" MODIFIED="1668699935567" TEXT="reduzieren um Z&#xe4;hler - LIM_HAZARD"/>
<node CREATED="1668699947962" ID="ID_307211451" MODIFIED="1668700039253" TEXT="das erste Quansitieren bewirkt n&#xe4;mlich u.U fast gar nix">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...und zwar in dem Fall, in dem der Nenner nur knapp &#252;ber der Schwelle LIM_HAZARD liegt; dann findet n&#228;mlich fast keine Reduktion der Gr&#246;&#223;enordnung statt
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1668561196884" ID="ID_1903032995" MODIFIED="1668736191824" TEXT="oder gleich gegen einen kleineren Divisor...">
<icon BUILTIN="forward"/>
<node CREATED="1668703944877" ID="ID_676279711" MODIFIED="1668704058851" TEXT="auf Effekt der re-Quantisierung abstellen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <ul>
      <li>
        der Nenner wird garantiert gleich dem vorgegebenen Quantisierer sein
      </li>
      <li>
        aber der Z&#228;hler ist ggfs um das Verh&#228;ltnis Z&#228;hler / Nenner gr&#246;&#223;er als der Quantisierer
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1668705598237" ID="ID_434566365" MODIFIED="1668705615391" TEXT="&#x27f9; es sind zwei Vorgaben umzusetzen">
<node CREATED="1668705616466" ID="ID_1803292875" MODIFIED="1668705683542" TEXT="Quant &lt; LIM_HAZARD"/>
<node CREATED="1668705658797" ID="ID_1607621699" MODIFIED="1668705687757" TEXT="Quant so viel kleiner da&#xdf; Z&#xe4;hler &lt; LIM_HAZARD"/>
</node>
<node COLOR="#435e98" CREATED="1668705712605" ID="ID_801769631" MODIFIED="1668736224441" TEXT="das ist am effizientesten &#xfc;ber den 2-er-Logarithmus umsetzbar">
<icon BUILTIN="idea"/>
<node CREATED="1668705828544" ID="ID_27322947" MODIFIED="1668705883187" TEXT="lb(z&#xe4;hler) - lb(nenner) &#x27fc; zusatz-Faktor"/>
<node CREATED="1668705906923" ID="ID_21115436" MODIFIED="1668705925067" TEXT="bei &#xdc;berschu&#xdf; den Quantiser entsprechend reduzieren"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1669508782375" ID="ID_1328009916" MODIFIED="1669673876153" TEXT="Vorsicht: Quantiser kann Null werden">
<arrowlink COLOR="#dd2238" DESTINATION="ID_507738124" ENDARROW="Default" ENDINCLINATION="93;-57;" ID="Arrow_ID_377645167" STARTARROW="None" STARTINCLINATION="-217;15;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1669673789135" ID="ID_846083949" MODIFIED="1669673797869" TEXT="dieser Ansatz hat seine Grenzen">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1669673800862" ID="ID_507738124" MODIFIED="1669673869569" TEXT="absolut sehr gro&#xdf;e Br&#xfc;che k&#xf6;nnen wir nicht handhaben">
<linktarget COLOR="#dd2238" DESTINATION="ID_507738124" ENDARROW="Default" ENDINCLINATION="93;-57;" ID="Arrow_ID_377645167" SOURCE="ID_1328009916" STARTARROW="None" STARTINCLINATION="-217;15;"/>
</node>
<node CREATED="1669673828418" ID="ID_1875664128" MODIFIED="1669673980107" TEXT="f&#xfc;r solche F&#xe4;lle w&#xfc;rde sogar die &quot;Bereinigung&quot; selber entgleisen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Und zwar, wenn der Nenner viel kleiner ist als der Z&#228;hler, und der Z&#228;hler extrem gro&#223;. Dann w&#252;rde n&#228;mlich die Ganzzahl-Division keine signifikante Verringerung der Dimension bewirken, und die anschlie&#223;ende re-Quantisierung das Ergebnis (bedingt durch die Normierung auf einen gemeinsamen Nenner) sogar noch vergr&#246;&#223;ern
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1669673981445" ID="ID_1599443715" MODIFIED="1669673998427" TEXT="allerdings f&#xfc;r Zoom-Faktoren k&#xf6;nnen wir das ausschlie&#xdf;en">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1668705939639" ID="ID_393310295" MODIFIED="1669680301519" TEXT="allgemeiner Entgiftungs-Filter">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1668705949188" ID="ID_510681740" MODIFIED="1668707393273" TEXT="2-er-Logarithmen berechnen">
<icon BUILTIN="button_ok"/>
<node CREATED="1668705960324" ID="ID_1999378206" MODIFIED="1668705972646" TEXT="ist die effizientest m&#xf6;gliche L&#xf6;sung">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1668705973302" ID="ID_1516053648" MODIFIED="1668705991661" TEXT="auch ein einfacher Gr&#xf6;&#xdf;envergleich mu&#xdf; n&#xe4;mlich das gr&#xf6;&#xdf;te gesetze Bit finden"/>
</node>
<node COLOR="#338800" CREATED="1668706081924" ID="ID_1548560727" MODIFIED="1668707394524" TEXT="daraus Reduktions-Faktor ermitteln">
<icon BUILTIN="button_ok"/>
<node CREATED="1668706195686" ID="ID_894705182" MODIFIED="1668706204807" TEXT="der &#xdc;berschu&#xdf; gegen&#xfc;ber LIM_HAZARD"/>
<node CREATED="1668706205651" ID="ID_1995535678" MODIFIED="1668706221245" TEXT="und zwar das Maximum von Z&#xe4;hler und Nenner"/>
</node>
<node COLOR="#338800" CREATED="1668706244774" ID="ID_972239326" MODIFIED="1668707396226" TEXT="Bitshift auf den Nenner um den Reduktoins-Faktor &#x27fc; neuer Quantiser">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1668706302918" ID="ID_319812477" MODIFIED="1668707397496" TEXT="reQuant falls notwendig, sonst unver&#xe4;ndert durchreichen">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1669680303553" ID="ID_943604336" MODIFIED="1671235719664" TEXT="Handhabung extremer Zeitspannen">
<icon BUILTIN="button_ok"/>
<node CREATED="1669680334284" ID="ID_1144877898" MODIFIED="1669680352726" TEXT="Probleme">
<node CREATED="1669680353674" ID="ID_380004829" MODIFIED="1669680374859" TEXT="Summen mit Br&#xfc;chen"/>
<node CREATED="1669680375968" ID="ID_861847594" MODIFIED="1669680389409" TEXT="Verh&#xe4;ltnis-Berechnung"/>
<node CREATED="1669680390181" ID="ID_136457686" MODIFIED="1669680403199" TEXT="Anteil-Berechnung"/>
</node>
<node CREATED="1669680416417" ID="ID_264195573" MODIFIED="1669680423082" TEXT="L&#xf6;sungs-Techniken">
<icon BUILTIN="idea"/>
<node COLOR="#435e98" CREATED="1669680424602" ID="ID_267834802" MODIFIED="1670015986498" TEXT="K&#xfc;rzungs-Trick">
<linktarget COLOR="#fbf8c7" DESTINATION="ID_267834802" ENDARROW="Default" ENDINCLINATION="538;-591;" ID="Arrow_ID_1957682133" SOURCE="ID_1644190283" STARTARROW="None" STARTINCLINATION="668;44;"/>
<node CREATED="1669680431912" ID="ID_180315930" MODIFIED="1669680447650" TEXT="einen Partner re-Quantisieren"/>
<node CREATED="1669680448333" ID="ID_969768863" MODIFIED="1669680473406" TEXT="so da&#xdf; sich dann kreuzweise ein Z&#xe4;hler/Nenner wegk&#xfc;rzen"/>
<node CREATED="1669680479307" ID="ID_503307048" MODIFIED="1669680497907" TEXT="&#x27f9; danach k&#xf6;nnen wir Produkt oder Quotient ohne Multipliaktion berechnen"/>
</node>
<node COLOR="#338800" CREATED="1669682825470" FOLDED="true" ID="ID_906501375" MODIFIED="1670689404952" TEXT="verallgemeinert: scaleSafe()">
<icon BUILTIN="button_ok"/>
<node CREATED="1670689143468" ID="ID_583442094" MODIFIED="1670689329214" TEXT="generisches Rechenschema: sichere Multiplikation (notfalls angen&#xe4;hert)">
<linktarget COLOR="#346573" DESTINATION="ID_583442094" ENDARROW="Default" ENDINCLINATION="54;970;" ID="Arrow_ID_1592379847" SOURCE="ID_1347035051" STARTARROW="None" STARTINCLINATION="-143;-9;"/>
<node CREATED="1669994491114" ID="ID_823441392" MODIFIED="1670689220925" TEXT="Idee: gr&#xf6;&#xdf;t m&#xf6;glichen Faktor k&#xfc;rzen">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1669994530717" ID="ID_246811570" MODIFIED="1670000510847" TEXT="vier symmetrische F&#xe4;lle">
<icon BUILTIN="info"/>
<node COLOR="#338800" CREATED="1669994696676" ID="ID_507544701" MODIFIED="1669997264882" TEXT="alle vier F&#xe4;lle initial prarametrisieren">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1669994676320" ID="ID_277762782" MODIFIED="1669997271457" TEXT="der Fall mit Time::SCALE ist speziell">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      hier wissen wir, da&#223; wir den Quantiser ggfs hochskalieren k&#246;nnen auf 1e6 (er hat sich u.u mit der &#181;-Tick-Zahl gek&#252;rzt). Da es sich um eine valide Duration handelt, ist dieses Hochskalieren stets garantiert. Mithin ist dieser Faktor das garantierte Minimum (die schlechtest m&#246;gliche Genauigkeit &#8793; 1e-6
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#338800" CREATED="1669994539603" ID="ID_429120779" MODIFIED="1670000489650" TEXT="als Klasse formulieren">
<icon BUILTIN="button_ok"/>
<node CREATED="1669994561425" ID="ID_1491074333" MODIFIED="1669994574324" TEXT="Eingaben">
<icon BUILTIN="info"/>
<node CREATED="1669994578390" ID="ID_1554716694" MODIFIED="1669994592848" TEXT="f1 : der sichere Faktor"/>
<node CREATED="1669994594196" ID="ID_520285185" MODIFIED="1669994602847" TEXT="u : der zu k&#xfc;rzende Quantisierer"/>
<node CREATED="1669994606018" ID="ID_140283418" MODIFIED="1669994641085" TEXT="req: requantisation-Target &#x27fc; wird zu u"/>
<node CREATED="1669994645898" ID="ID_448193400" MODIFIED="1669994655184" TEXT="f2 : der limitierende Gegen-Faktor"/>
<node CREATED="1669995461568" ID="ID_1761342962" MODIFIED="1669995622760" TEXT="ist ein Kehrwert">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      aus Gr&#252;nden der Symmetrie kann man das gleiche Argument jeweils auch auf den Kehrwert anwenden, deshalb haben wir ja 4 F&#228;lle (bei zwei Eingangs-Faktoren). Man mu&#223; nur ggfs. dann den Kehrwert vom Ergebnis ausgeben. Beispiel: wir nehmen den Z&#228;hler vom ersten Faktor als Quantisierer. Dann ist f1 der Nenner vom ersten Faktor, und mu&#223; daher auch im Ergebnis im Nenner landen, nicht im Z&#228;hler wie beim regul&#228;ren Schema
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#6e8ddb" DESTINATION="ID_1560238867" ENDARROW="Default" ENDINCLINATION="-180;-19;" ID="Arrow_ID_1642921638" STARTARROW="None" STARTINCLINATION="-64;9;"/>
</node>
</node>
<node COLOR="#338800" CREATED="1669994839828" ID="ID_418503319" MODIFIED="1670000487125" TEXT="Machbarkeits-Check">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1669994865016" ID="ID_361530418" MODIFIED="1670000482856" TEXT="Dimensions-Differenz von req auf u ermitteln">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1669994886342" ID="ID_1735969091" MODIFIED="1670000480941" TEXT="pr&#xfc;fen ob eine Vergr&#xf6;&#xdf;erung">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1669994898347" ID="ID_494553186" MODIFIED="1670000484810" TEXT="pr&#xfc;fen ob diese Vergr&#xf6;&#xdf;erung auf f2 angewendet werden kann">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1669995258396" ID="ID_93063502" MODIFIED="1669997787709" TEXT="angebotene Genauigkeit">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1669995272224" ID="ID_1288818816" MODIFIED="1669997793129" TEXT="u"/>
<node COLOR="#435e98" CREATED="1669995281664" ID="ID_879911679" MODIFIED="1669997792445" TEXT="auf 0 setzen wenn nicht machbar"/>
<node COLOR="#338800" CREATED="1669997435820" ID="ID_841478882" MODIFIED="1669997789720" TEXT="Aufruf l&#xf6;st Machbarkeits-Check aus">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1669995329084" ID="ID_1546053278" MODIFIED="1669997783595" TEXT="Resultat berechnen">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1669995234367" ID="ID_1696175264" MODIFIED="1669997781377" STYLE="fork" TEXT="f2 requantisieren auf u"/>
<node COLOR="#435e98" CREATED="1669995424654" ID="ID_363188688" MODIFIED="1669997781377" STYLE="fork" TEXT="neuer Rat{f2,u}"/>
<node COLOR="#435e98" CREATED="1669995396649" ID="ID_1560238867" MODIFIED="1669997781378" STYLE="fork" TEXT="ggfs Kehrwert bilden">
<linktarget COLOR="#6e8ddb" DESTINATION="ID_1560238867" ENDARROW="Default" ENDINCLINATION="-180;-19;" ID="Arrow_ID_1642921638" SOURCE="ID_1761342962" STARTARROW="None" STARTINCLINATION="-64;9;"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1669994546102" ID="ID_1814759469" MODIFIED="1670000491434" TEXT="Maximum-Suche">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1670688516976" ID="ID_69967327" MODIFIED="1670689395158" TEXT="Analyse: Existenz der L&#xf6;sung ist garantiert">
<linktarget COLOR="#5365c2" DESTINATION="ID_69967327" ENDARROW="Default" ENDINCLINATION="196;-673;" ID="Arrow_ID_33256420" SOURCE="ID_66504136" STARTARROW="None" STARTINCLINATION="-593;729;"/>
<icon BUILTIN="info"/>
<node COLOR="#338800" CREATED="1670688528846" ID="ID_1754365321" MODIFIED="1670689380463" TEXT="wenn man die Einschr&#xe4;nkung auf &#xb5;-Tick quantisierte Zeit fallen l&#xe4;&#xdf;t">
<arrowlink COLOR="#4a9197" DESTINATION="ID_1765522524" ENDARROW="Default" ENDINCLINATION="-650;0;" ID="Arrow_ID_863565881" STARTARROW="None" STARTINCLINATION="255;-13;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1670688791683" ID="ID_249714028" MODIFIED="1670688830194" TEXT="einfach: pr&#xfc;fen ob die Division (gemeinsamer Faktor) einen Rest hatte"/>
<node CREATED="1670688831014" ID="ID_1316911018" MODIFIED="1670688851406" TEXT="&#x27f9; dann gibt es n&#xe4;mlich keinen gemeinsamen Faktor der den Nenner auf Time::SCALE bringt"/>
<node CREATED="1670688852123" ID="ID_770782289" MODIFIED="1670688890442" TEXT="&#x27f9; den zus&#xe4;tzlichen Faktor auf 1 setzen &#x27fa; auch die Duration damit unmodifiziert verwenden"/>
</node>
<node COLOR="#435e98" CREATED="1670688643175" ID="ID_1852182895" MODIFIED="1670688964874" TEXT="Argument: bereits ein Paar von F&#xe4;llen hat garantiert eine L&#xf6;sung">
<icon BUILTIN="idea"/>
<node CREATED="1670688675371" ID="ID_1215939447" MODIFIED="1670688691423" TEXT="weil Z&#xe4;hler und Nenner in beide Richtungen versucht werden">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#435e98" CREATED="1670688692078" ID="ID_1207417646" MODIFIED="1670688956661" TEXT="Annahme: die eine Richtung funktioniert nicht">
<icon BUILTIN="forward"/>
<node CREATED="1670688714494" ID="ID_1833767124" MODIFIED="1670688731503" TEXT="&#x27f9; bedeutet, der Gegenpartner ist gr&#xf6;&#xdf;er und daher nicht beliebig vergr&#xf6;&#xdf;erbar"/>
<node CREATED="1670688732451" ID="ID_766470201" MODIFIED="1670688756859" TEXT="&#x27f9; dann ist das Paar aber in umgekehrter RIchtung beliebig vergr&#xf6;&#xdf;erbar"/>
</node>
<node COLOR="#338800" CREATED="1670688759175" ID="ID_144891898" MODIFIED="1670688944833" TEXT="&#x27fa; die umgekehrte Orientierung kann jeden beliebigen K&#xfc;rzugs-Faktor akkomodieren"/>
</node>
<node CREATED="1670688918210" ID="ID_1507149209" MODIFIED="1670688931076" TEXT="...und wir haben zwei Paare, k&#xf6;nnen uns also sogar die bessere L&#xf6;sung suchen"/>
</node>
</node>
<node COLOR="#338800" CREATED="1669911724009" ID="ID_289279043" MODIFIED="1670015959526" TEXT="verallgemeinert: addSafe()">
<linktarget COLOR="#2f7ca3" DESTINATION="ID_289279043" ENDARROW="Default" ENDINCLINATION="167;16;" ID="Arrow_ID_333407901" SOURCE="ID_797370792" STARTARROW="None" STARTINCLINATION="-174;-8;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1669932544504" ID="ID_750418137" MODIFIED="1670015851933" TEXT="FSecs &#x27fc; &#xb5;-Tick absichern">
<icon BUILTIN="button_ok"/>
<node CREATED="1669932578600" ID="ID_974803158" MODIFIED="1669932591544" TEXT="das erweist sich als h&#xe4;ufige Quelle von wrap-arounds">
<icon BUILTIN="messagebox_warning"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1669932596081" ID="ID_1661291024" MODIFIED="1669932618249" TEXT="dabei ist es einfach blo&#xdf; naiv gecodet">
<icon BUILTIN="smiley-oh"/>
</node>
<node COLOR="#435e98" CREATED="1669932620086" ID="ID_673992117" MODIFIED="1670015849357" TEXT="stattdessen die re-Quantisierung nutzen">
<icon BUILTIN="idea"/>
<node CREATED="1669932632788" ID="ID_831065868" MODIFIED="1669932761462" TEXT="nur dann hier auf 1/1000000">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1669932640820" ID="ID_1387350127" MODIFIED="1669932675887" TEXT="dazu eine Variante f&#xfc;r den Z&#xe4;hler allein schaffen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1669932653473" ID="ID_120882361" MODIFIED="1669932684292" TEXT="kann sogar den Rat-Fall hierauf zur&#xfc;ckf&#xfc;hren">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#435e98" CREATED="1669932686823" FOLDED="true" ID="ID_1630699394" MODIFIED="1669932696052" TEXT="Numerik-Probleme">
<icon BUILTIN="broken-line"/>
<node CREATED="1669932700323" ID="ID_1606021601" MODIFIED="1669932716796" TEXT="tja... Float bleibt Float selbst bei 128bit">
<icon BUILTIN="clanbomber"/>
</node>
<node CREATED="1669932728399" ID="ID_20790978" MODIFIED="1669932757508">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      man <b>mu&#223;</b>&#160;Floating-point runden wenn man glatte Werte will
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node COLOR="#435e98" CREATED="1669932772210" ID="ID_787506618" MODIFIED="1669933074821" TEXT="Runden oder Tuncate?">
<icon BUILTIN="help"/>
<node CREATED="1669932795247" ID="ID_258240741" MODIFIED="1669932979085" TEXT="Zeit in Lumiera stets left-Truncate">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      das ist essentiell wichtig. &quot;Negative&quot; Zeiten d&#252;rfen sich <i>keinesfalls</i>&#160; anders verhalten. Eine andere Quantsierungs-Regel kann man dann ggfs. high-level auf ein left-Truncate aufsetzen (z.B. Mitte Frame-Intervall)
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1669932981526" ID="ID_837170036" MODIFIED="1669933009189">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      &#10233; also mu&#223; man hier <i>technisch runden</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1669933011434" ID="ID_1937730928" MODIFIED="1669933021860" TEXT="das bedeutet: auf 1/INT_MAX"/>
<node CREATED="1669933027664" ID="ID_1390211698" MODIFIED="1669933038658" TEXT="weil ein Bruch hier interpretiert wird als Quantisierung"/>
<node CREATED="1669933049926" ID="ID_1930108218" MODIFIED="1669933071839" TEXT="und wir daher auf die kleinstm&#xf6;glich darstellbare rationale Zahl runden"/>
</node>
<node COLOR="#435e98" CREATED="1669933076257" ID="ID_68878490" MODIFIED="1669933203590" TEXT="geht das &#xfc;berhaupt?">
<icon BUILTIN="help"/>
<node CREATED="1669933097062" ID="ID_1298571080" MODIFIED="1669933101833" TEXT="mit double nicht...."/>
<node CREATED="1669933102558" ID="ID_561202442" MODIFIED="1669933112105" TEXT="aber ich arbeite hier ja bewu&#xdf;t mit long double"/>
<node CREATED="1669933113580" ID="ID_1052633426" MODIFIED="1669933130786" TEXT="aber selbst da sprengt ein absolutes ULP den Wertebereich"/>
<node CREATED="1669933140405" ID="ID_672266484" MODIFIED="1669933163530" TEXT="&#x27f9; also relative ULP nehmen: *(1+ULP)"/>
<node CREATED="1669933167811" ID="ID_1558282411" MODIFIED="1669933183695" TEXT="das geht grade noch auf"/>
<node CREATED="1669933185842" ID="ID_1427917386" MODIFIED="1669933196158" TEXT="Schwein gehabt">
<icon BUILTIN="smiley-oh"/>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1669933204808" ID="ID_1033893690" MODIFIED="1669933252753" TEXT="WARNUNG: falls long double == double dann ist diese Rundung unwirksam">
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#338800" CREATED="1669933257385" ID="ID_1774777202" MODIFIED="1669933428563" TEXT="Testfall: TimeParsing_test">
<icon BUILTIN="button_ok"/>
<node CREATED="1669933273591" ID="ID_1754745072" MODIFIED="1669933393067" TEXT="Darstellung von 1/250s">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...das sind 4ms
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1669933281232" ID="ID_542233825" MODIFIED="1669933418231" TEXT="ohne Rundung: 3999&#xb5;s">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      parsing '1/250sec' resulted in 0:00:00.003 instead of 0:00:00.004
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1670015941129" ID="ID_1262505892" MODIFIED="1670015955338" TEXT="kann nun (wohl) nicht mehr entgleisen">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1668707398858" ID="ID_1529383789" MODIFIED="1671235811403" TEXT="Test">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1668707465449" ID="ID_1678870601" MODIFIED="1668736173820" TEXT="toxicDegree mit einigen Beispielen demonstrieren">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1668707479892" ID="ID_1964644327" MODIFIED="1671235788141" TEXT="ansonsten durch Ausreizen der Extremwerte testen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1669682928809" ID="ID_499417740" MODIFIED="1670015827119" TEXT="setVisiblePos(gift)">
<icon BUILTIN="button_ok"/>
<node CREATED="1669682950712" ID="ID_1730356591" MODIFIED="1669682974366" TEXT="macht was Anderes als nur die Zoom-Metrik anpassen"/>
<node CREATED="1669682975415" ID="ID_1386857509" MODIFIED="1669682993901" TEXT="die Verbindung mit L&#xe4;ngen/Positions-Kalkulationen ist gef&#xe4;hrlich">
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#338800" CREATED="1669683004871" ID="ID_1503834170" MODIFIED="1669683025116" TEXT="wrap-around bekomme ich mit detox() und scaleSafe() in den Griff">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1669683026004" ID="ID_1867241917" MODIFIED="1670015746454" TEXT="Ergebnis ist aber noch nicht plausibel">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <font face="Monospaced">#--&#9670;--# _raw(win.overallSpan().duration()) ? = 307445734561825860 </font>
    </p>
    <p>
      <font face="Monospaced">#--&#9670;--# _raw(targetPos) ?&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;= 206435633551724864 </font>
    </p>
    <p>
      <font face="Monospaced">#--&#9670;--# _raw(win.visible().start()) ?&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;=&#160;&#160;&#160;2248731193323487 </font>
    </p>
    <p>
      <font face="Monospaced">#--&#9670;--# _raw(win.visible().end()) ?&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;=&#160;&#160;&#160;2248732049674178 </font>
    </p>
    <p>
      <font face="Monospaced">#--&#9670;--# bool(win.visible().start() &lt; targetPos) ? = 1 </font>
    </p>
    <p>
      <font face="Monospaced">#--&#9670;--# bool(win.visible().end() &gt; targetPos) ? = 0 </font>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="broken-line"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1669683157298" ID="ID_710000990" MODIFIED="1669943698789" TEXT="Fenster liegt verd&#xe4;chtig weit daneben">
<icon BUILTIN="stop-sign"/>
</node>
<node CREATED="1669911421774" ID="ID_1721803067" MODIFIED="1669943698789" TEXT="Umwandlung FSecs &#x27fc; &#xb5;-ticks entgleist">
<icon BUILTIN="broken-line"/>
<node CREATED="1669911515423" ID="ID_245485754" MODIFIED="1669943698789" TEXT="detox() vorher">
<icon BUILTIN="stop-sign"/>
</node>
<node CREATED="1669911534853" ID="ID_1958976369" MODIFIED="1669943698789" TEXT="die Summe selber k&#xf6;nnte auch wrappen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...tut sie zwar nicht in dem Beispiel hier, aber mit gen&#252;gend krimineller Energie lie&#223;e sich ein valides Beispiel konstruieren, wobei
    </p>
    <ul>
      <li>
        die Ziel-Position dann au&#223;erhalb des legalen Bereichs liegen w&#252;rde
      </li>
      <li>
        bei korrekter Behandlung daher das Ergebnis-Fenster in den legalen Bereich geschoben werden m&#252;&#223;te
      </li>
      <li>
        aber ohne weitere Schutzma&#223;name hier die Berechnung der Zielposition entgleist
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="clanbomber"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1669911687704" ID="ID_797370792" MODIFIED="1669943698789" TEXT="k&#xf6;nnte man im nun etablierten Schema auch ein addSafe() definieren">
<arrowlink COLOR="#2f7ca3" DESTINATION="ID_289279043" ENDARROW="Default" ENDINCLINATION="167;16;" ID="Arrow_ID_333407901" STARTARROW="None" STARTINCLINATION="-174;-8;"/>
<icon BUILTIN="help"/>
<node COLOR="#338800" CREATED="1669911787964" ID="ID_147783330" MODIFIED="1669911798248" TEXT="Erkennung und Behandlung der Grenzbedingungen analog">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1669911817888" ID="ID_493362427" MODIFIED="1669943698789" TEXT="Problem: Summe k&#xf6;nnte trotzdem entgleisen">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1669912456275" ID="ID_661856327" MODIFIED="1669912464070" TEXT="nur bei Addition / gleicher Richtung"/>
<node CREATED="1669912668224" ID="ID_1384499593" MODIFIED="1669914705545" TEXT="nur wenn bei mindestens einem Summanden das h&#xf6;chste Bit gesetzt ist">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      0111 + 0111 = 1110
    </p>
    <p>
      0011 + 0101 = 1000
    </p>
    <p>
      aber...
    </p>
    <p>
      0010 + 0101 = 0111
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#644f94" DESTINATION="ID_1384499593" ENDARROW="Default" ENDINCLINATION="-195;8;" ID="Arrow_ID_899257928" SOURCE="ID_41244947" STARTARROW="None" STARTINCLINATION="-101;-8;"/>
</node>
<node CREATED="1669913417600" ID="ID_175910999" MODIFIED="1669943698789" TEXT="&#x27f9; re-Quantisierung mu&#xdf; au&#xdf;erdem beide Summanden aus der Gefahrenzone bringen"/>
</node>
<node COLOR="#435e98" CREATED="1669913560481" ID="ID_756192644" MODIFIED="1669943698789" TEXT="konkretes Rechenschema">
<icon BUILTIN="info"/>
<node CREATED="1669913571311" ID="ID_1313345585" MODIFIED="1669943698789" TEXT="verwende den (absolut) kleineren der beiden Nenner"/>
<node COLOR="#435e98" CREATED="1669914430412" ID="ID_41244947" MODIFIED="1669943698789" TEXT="&#xfc;berpr&#xfc;fe die Gefahrenzone f&#xfc;r die Z&#xe4;hler">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Gefahr besteht...
    </p>
    <ul>
      <li>
        wenn beide Vorzeichen gleichgerichtet sind
      </li>
      <li>
        wenn mindestens einer der Z&#228;hler das 63te Bit gesetzt hat (2^62)
      </li>
    </ul>
  </body>
</html></richcontent>
<arrowlink COLOR="#644f94" DESTINATION="ID_1384499593" ENDARROW="Default" ENDINCLINATION="-195;8;" ID="Arrow_ID_899257928" STARTARROW="None" STARTINCLINATION="-101;-8;"/>
<icon BUILTIN="yes"/>
<node CREATED="1669914775664" ID="ID_1885451601" MODIFIED="1669943698789" TEXT="wenn ungef&#xe4;hrlich, dann nur gr&#xf6;&#xdf;eren Nenner requantisieren"/>
<node CREATED="1669914824383" ID="ID_999893302" MODIFIED="1669943698789" TEXT="wenn gef&#xe4;hrlich, Nenner um ein Bit shiften und beide requantisieren"/>
</node>
<node COLOR="#338800" CREATED="1669914866913" ID="ID_1877357496" MODIFIED="1669943698789" TEXT="Summation der angepa&#xdf;ten Z&#xe4;hler ausf&#xfc;hren">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1669914880928" ID="ID_1472462771" MODIFIED="1669943698789" TEXT="Ergebnis mit gemeinsamem Nenner konstruieren">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1669914896208" ID="ID_370915623" MODIFIED="1669943698789" TEXT="Ergebnis entgiften">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1669941951462" ID="ID_793235597" MODIFIED="1669943698789" TEXT="Problem: Fehler zu gro&#xdf;">
<icon BUILTIN="broken-line"/>
<node CREATED="1669941967260" ID="ID_54342145" MODIFIED="1669943698789" TEXT="Faktor 10 im Beispiel">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; text-indent: 0px">
      206435709205.57568 - 206435709205575697/1e6&#160; = abs(-0,000017) &gt; 1e-6
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
<node COLOR="#435e98" CREATED="1669942746884" ID="ID_1339303586" MODIFIED="1669943698789" TEXT="Ha! der guess ist zu ungenau">
<icon BUILTIN="idea"/>
<node CREATED="1669942758191" ID="ID_1779789843" MODIFIED="1669943698789" TEXT="double precision reicht definitiv nicht hier"/>
<node CREATED="1669942769413" ID="ID_592526352" MODIFIED="1669943698789" TEXT="genauer gerechnete Ergebnisse erf&#xfc;llen die Fehlerschwelle">
<arrowlink COLOR="#3f6fd5" DESTINATION="ID_198719131" ENDARROW="Default" ENDINCLINATION="58;4;" ID="Arrow_ID_802871126" STARTARROW="None" STARTINCLINATION="-13;48;"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1669942791302" ID="ID_198719131" MODIFIED="1669943698789" TEXT="&#x27f9; mu&#xdf; Assertinon mit long double rechnen">
<linktarget COLOR="#3f6fd5" DESTINATION="ID_198719131" ENDARROW="Default" ENDINCLINATION="58;4;" ID="Arrow_ID_802871126" SOURCE="ID_592526352" STARTARROW="None" STARTINCLINATION="-13;48;"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1669943663699" ID="ID_693461392" MODIFIED="1670015348017" TEXT="Ergebnis nun im Fehlerband &#x2014; aber leider immer noch daneben">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1669943776106" ID="ID_1895721471" MODIFIED="1669943795208" TEXT="bei re-Quantisierung auf &#xb5;-Tick kann ich nicht genauer sein als 1e-6"/>
<node CREATED="1669943801006" ID="ID_1524475083" MODIFIED="1669943916288" TEXT="trotzdem will mir dieser Befund irgendwie logisch nicht in den Kopf">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...ich hab doch ohnehin Zeiten, die sind &#181;-Grid quantisiert; also m&#252;&#223;te der Fehler einer einfachen Addition auf &#181;-Grid genau sein
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="smiley-angry"/>
</node>
<node COLOR="#435e98" CREATED="1669943918742" ID="ID_1902626416" MODIFIED="1669994406710" TEXT="der Fehler wird relativ zur Ergebnishzahl wirksam &#x2014; warum?">
<icon BUILTIN="help"/>
<node CREATED="1669948612766" ID="ID_773874014" MODIFIED="1669948622948" TEXT="der Fehler tritt nicht in der Subtraktion auf"/>
<node CREATED="1669948623670" ID="ID_549263730" MODIFIED="1669948642617" TEXT="sondern bereits beim Berechnen der Bezugs-Position"/>
<node CREATED="1669948657379" ID="ID_765957465" MODIFIED="1669949047942" TEXT="dort re-Quantisieren wir auf 1e-6 weil das der einzige sichere Faktor ist">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...da wir wissen, da&#223; einer der Multiplikatoren eine bereits quantifizierte Zeit ist, k&#246;nnen wir von einem Nenner 1e+6 ausgehen (ggfs noch reduziert um einen gek&#252;rzten Faktor). Das andere Argument, der Anteil-Faktor, stammt von au&#223;en und ist daher beliebig. Der einzige sichere Weg, den K&#252;rzungs-Trick anzuwenden, ist daher, den Kehrwert des Anteil-Faktors zu re-Quantisieren, so da&#223; sich dieses 1e+6 wegk&#252;rzt, und wir dann keine gef&#228;hrliche Multiplikation mehr haben.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="forward"/>
<icon BUILTIN="idea"/>
</node>
<node COLOR="#435e98" CREATED="1669949275009" ID="ID_276477045" MODIFIED="1670015719974" TEXT="letztlich geht es num darum, Funktionsf&#xe4;higkeit in seltenen Randf&#xe4;llen zu erhalten">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...und damit die rationale Arithmetik als M&#246;glichkeit zu erhalten; sie w&#228;re nicht sinnvoll nutzbar, wenn man st&#228;ndig die Sorge haben m&#252;&#223;te, da&#223; einem die Zahlen &#187;explodieren&#171; k&#246;nnen. So ist es nun schon besser, im Regelfall eine hochpr&#228;zise Berechnung zu haben (pr&#228;ziser als floating-point), die in Grenzf&#228;llen ungenau wird, mit letztlich kontrollierbarem Fehler-Level
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
<node CREATED="1670015358471" ID="ID_1559004584" MODIFIED="1670015734747" TEXT="hatte erst so meine Zweifel">
<icon BUILTIN="smiley-oh"/>
</node>
<node CREATED="1670015367683" ID="ID_1687855073" MODIFIED="1670015724868" TEXT="jetzt bin ich froh, da&#xdf; ich&apos;s gemacht hab">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Es f&#252;hlt sich gut an, das Problem nun doch befriedigend bezwungen zu haben; ich hatte immer das Bauchgef&#252;hl, da&#223; da mehr Genauigkeit m&#246;glich sein sollte. Allerdings &#8212; wie sich zeigte &#8212; nur in g&#252;nstigen F&#228;llen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="ksmiletris"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1670015379779" ID="ID_636584956" MODIFIED="1670015481254" TEXT="...nun sind es eigentlich schon generische Library-Funktionen">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_636584956" ENDARROW="Default" ENDINCLINATION="-1629;69;" ID="Arrow_ID_1114152599" SOURCE="ID_1681510241" STARTARROW="None" STARTINCLINATION="3618;0;"/>
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1669949048959" ID="ID_595183859" MODIFIED="1669949241962" TEXT="im konkreten Einzelfall k&#xf6;nnte man auch einen gr&#xf6;&#xdf;eren Faktor nehmen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...aber nur nach Ma&#223;gabe der tats&#228;chlichen Dimension der eingehenden Zahlen
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#fdf7a3" DESTINATION="ID_868173654" ENDARROW="Default" ENDINCLINATION="25;-20;" ID="Arrow_ID_190773880" STARTARROW="None" STARTINCLINATION="-207;8;"/>
</node>
<node COLOR="#435e98" CREATED="1669994369691" ID="ID_1448820193" MODIFIED="1669994388355">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Fazit: es ist das <b>gesicherte Minimum</b>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="forward"/>
</node>
</node>
<node COLOR="#338800" CREATED="1669994408813" ID="ID_868173654" MODIFIED="1670015809272" TEXT="Fehlergrenze im Einzelfall besser aussch&#xf6;pfen">
<arrowlink COLOR="#2ddb4d" DESTINATION="ID_1865531371" ENDARROW="Default" ENDINCLINATION="381;70;" ID="Arrow_ID_1328969482" STARTARROW="None" STARTINCLINATION="-58;116;"/>
<linktarget COLOR="#fdf7a3" DESTINATION="ID_868173654" ENDARROW="Default" ENDINCLINATION="25;-20;" ID="Arrow_ID_190773880" SOURCE="ID_595183859" STARTARROW="None" STARTINCLINATION="-207;8;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1669994491114" ID="ID_301367323" MODIFIED="1669994520455" TEXT="Idee: gr&#xf6;&#xdf;t m&#xf6;glichen Faktor k&#xfc;rzen">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1669994521693" ID="ID_983699676" MODIFIED="1670000518187" TEXT="mu&#xdf; dazu jeweils die Machbarkeit pr&#xfc;fen">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1670689122263" ID="ID_1347035051" MODIFIED="1670689329214" TEXT="ausarbeiten als generisches Rechenschema">
<arrowlink COLOR="#346573" DESTINATION="ID_583442094" ENDARROW="Default" ENDINCLINATION="54;970;" ID="Arrow_ID_1592379847" STARTARROW="None" STARTINCLINATION="-143;-9;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1670000524698" ID="ID_229993223" MODIFIED="1670000571148" TEXT="...und damit ist das Ergebnis nun hinreichend genau f&#xfc;r diesen Testfall">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      #--&#9670;--# _raw(targetPos) ?&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;= 206435633551724864
    </p>
    <p>
      #--&#9670;--# _raw(win.visible().start()) ? = 206435633106265625
    </p>
    <p>
      #--&#9670;--# _raw(win.visible().end()) ?&#160;&#160;&#160;= 206435633962616316
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1670015761936" ID="ID_1865531371" MODIFIED="1670015802640" TEXT="Test GR&#xdc;N">
<linktarget COLOR="#2ddb4d" DESTINATION="ID_1865531371" ENDARROW="Default" ENDINCLINATION="381;70;" ID="Arrow_ID_1328969482" SOURCE="ID_868173654" STARTARROW="None" STARTINCLINATION="-58;116;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1670016158206" ID="ID_1376502254" MODIFIED="1670207142038" TEXT="setVisiblePos(weit-weg)">
<icon BUILTIN="button_ok"/>
<node CREATED="1670017946731" ID="ID_410930969" MODIFIED="1670017960838" TEXT="erst mal das visibleWin nahe an Time::MAX"/>
<node CREATED="1670017961849" ID="ID_1322153373" MODIFIED="1670017996849" TEXT="dann als gew&#xfc;nschte Position Time::MIN"/>
<node CREATED="1670024841228" ID="ID_327609209" MODIFIED="1670024849028" TEXT="ist gar nicht so wirklich toxisch">
<node CREATED="1670024857602" ID="ID_10543296" MODIFIED="1670024880586" TEXT="oder meine Funktionen sind inzwischen hinreichend abgesichert">
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1670024990169" ID="ID_737996846" MODIFIED="1670025107388" TEXT="die Division f&#xfc;r den posFactor funktioniert (&#xfc;berraschenderweise)">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      also offensichtlich erkennt boost::rational die M&#246;glichkeit, den gemeinsamen Faktor 1e6 aus Z&#228;hler und Nenner wegzuk&#252;rzen. Da wir aber hier einen FSec-Wert als Offset zugeben, haben wir wenig M&#246;glichkeiten, das zu <i>vergiften</i>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1670024963460" ID="ID_16615073" MODIFIED="1670024981796" TEXT="parabolicAnchorRule kappt den Wert (da au&#xdf;erhalb 0...1)">
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#435e98" CREATED="1670025133845" ID="ID_1582569279" MODIFIED="1670025153962" TEXT="infolgedessen sind alle weiteren Berechnungen trivial / no-op"/>
</node>
<node COLOR="#435e98" CREATED="1670025155874" FOLDED="true" ID="ID_725576556" MODIFIED="1670205093181" TEXT="aber: der Offset wird gekappt">
<icon BUILTIN="broken-line"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1670025172247" ID="ID_962949808" MODIFIED="1670025190742" TEXT="konzeptionelles Problem im Time-handling-Framework">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1670025194925" ID="ID_674387327" MODIFIED="1670025296382" TEXT="Offsets und Durations k&#xf6;nnten 2*Time::MAX (bzw MIN) akzeptieren">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      rein numerisch w&#252;rde das gehen, da ich Time::MAX | MIN sinnigerweise auf INT_MAX / 30 gesetzt habe. Das war vorausschauend....
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1670025229777" ID="ID_1471304702" MODIFIED="1670025251370" TEXT="aber sie gehen alle stur durch TimeValue, und der kappt auf 1*Time::MAX (bzw MIN)"/>
<node COLOR="#435e98" CREATED="1670025302707" ID="ID_408211429" MODIFIED="1670517740842" TEXT="L&#xf6;sung: Loch bohren">
<icon BUILTIN="yes"/>
<node CREATED="1670025330923" ID="ID_664088863" MODIFIED="1670025372823" TEXT="das aktuelle Verhalten ist widersinnig und &#xfc;berraschend">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      es untergr&#228;bt gradezu den Sinn dedizierter Zeit-Entit&#228;ten
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="stop-sign"/>
</node>
<node CREATED="1670025386651" ID="ID_1227027753" MODIFIED="1670025402822" TEXT="Idee: der copy-ctor ist nicht limitiert">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1670025414136" ID="ID_1966020819" MODIFIED="1670517721820" TEXT="Probleme und Aufgaben">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1670025543263" ID="ID_528446508" MODIFIED="1670120677591" TEXT="neue Limitierungs-Funktion schaffen (&#xb1; Duration::MAX)">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1670025513339" ID="ID_1622564783" MODIFIED="1670120675981" TEXT="der Differenz-ctor mu&#xdf; gr&#xf6;&#xdf;ere Offsets konstruieren k&#xf6;nnen">
<arrowlink COLOR="#1bb78b" DESTINATION="ID_806986637" ENDARROW="Default" ENDINCLINATION="230;-11;" ID="Arrow_ID_613938878" STARTARROW="None" STARTINCLINATION="-266;12;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1670025579708" ID="ID_967783770" MODIFIED="1670120673953" TEXT="neuer ctor f&#xfc;r FSecs">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1670025655456" ID="ID_79471093" MODIFIED="1670120670775" TEXT="die Funktion Offset::abs() neu definieren">
<icon BUILTIN="button_ok"/>
<node CREATED="1670025671469" ID="ID_807444515" MODIFIED="1670025688298" TEXT="bisher konstruiert sie einen TimeValue, und kappt deshalb">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1670025690862" ID="ID_1913450557" MODIFIED="1670080620421" TEXT="Idee: sie konstruiert eine Duration">
<arrowlink COLOR="#fefdb9" DESTINATION="ID_482497794" ENDARROW="Default" ENDINCLINATION="-192;-7;" ID="Arrow_ID_1014085079" STARTARROW="None" STARTINCLINATION="-207;16;"/>
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#338800" CREATED="1670025987045" ID="ID_1491328900" MODIFIED="1670120834295" TEXT="Duration braucht eine &#xbb;Hintert&#xfc;r&#xab;">
<arrowlink COLOR="#26b81b" DESTINATION="ID_1754685572" ENDARROW="Default" ENDINCLINATION="331;-981;" ID="Arrow_ID_636518434" STARTARROW="None" STARTINCLINATION="-1095;84;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1670026021871" ID="ID_1872786617" MODIFIED="1670026051423" TEXT="....durch welche man explizit einen Wert einbringen kann"/>
<node CREATED="1670026054003" ID="ID_873519529" MODIFIED="1670026069149" TEXT="und der nicht durch die Limitierung der Basis-Klasse TimeValue l&#xe4;uft"/>
<node CREATED="1670026074664" ID="ID_1460012408" MODIFIED="1670027376431" TEXT="diese Hintert&#xfc;r darf nicht offensichtlich sein">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <ul>
      <li>
        auf den ersten Blick darf es nicht aussehen wie &quot;aha, und hier kann ich alles machen&quot;
      </li>
      <li>
        so wie der Zugang beschrieben ist, ist er v&#246;llig logisch und konsistent
      </li>
      <li>
        die erweiterte M&#246;glichkeit erschlie&#223;t sich erst dem aufmerksamen Leser
      </li>
      <li>
        diese erweiterte M&#246;glichkeit erweist sich aber letztlich als nichts anderes als die Konsequenz der formalen Definition
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node CREATED="1670026089995" ID="ID_5043644" MODIFIED="1670026098048" TEXT="und sie darf keinen Mi&#xdf;brauch gestatten">
<node CREATED="1670026101388" ID="ID_848547621" MODIFIED="1670026120917" TEXT="also die &#xb5;-Ticks m&#xfc;ssen nachher positiv sein"/>
<node CREATED="1670026121626" ID="ID_1970749903" MODIFIED="1670026130300" TEXT="und limitiert auf Duration::MAX"/>
</node>
<node COLOR="#690f14" CREATED="1670026155933" ID="ID_1357490453" MODIFIED="1670079761362" TEXT="Idee: die Limitierung auf TimeValue per ctor-Parameter steuerbar machen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <ul>
      <li>
        das w&#228;re dann ein ctor mit einem 2. Argument
      </li>
      <li>
        wer so einen ctor aufruft, wei&#223; was er tut
      </li>
      <li>
        das k&#246;nnte auch sp&#228;ter in eine MicroTic-Basisklasse &#252;bernommen werden
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1670027393582" ID="ID_630920961" MODIFIED="1670027410287" TEXT="damit w&#xfc;rden wir &#xfc;ber den normalen Basis-ctor eintreten"/>
<node CREATED="1670027412179" ID="ID_558474187" MODIFIED="1670027420848" TEXT="und Werte &#xfc;ber den copy-ctor &#xfc;bernehmen k&#xf6;nnen"/>
<node CREATED="1670027457629" ID="ID_730521318" MODIFIED="1670027484830" TEXT="der TimeValue-ctor k&#xf6;nnte dann sogar tats&#xe4;chlich die Limitierung enforcen"/>
<node CREATED="1670079580092" ID="ID_1783175998" MODIFIED="1670079740173" TEXT="Idee verworfen! das wird zu explizit und zu offen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Das versaut den bisher sehr sauberen Code von TimeValue, und l&#228;d gradezu dazu ein, hier beliebige Werte zu konstruieren. Im Hinblick darauf, da&#223; ich umgestalten m&#246;chte TimeValue &#10230; MicroTicks, w&#252;rde damit die Daseinsberechtigung untergraben, denn man kann nun nicht mehr sicher sein, da&#223; MicroTicks ein <i>sicherer Wert </i>ist.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node COLOR="#338800" CREATED="1670079773858" ID="ID_1230606534" MODIFIED="1670120643313" TEXT="protected Delta-Konstruktur">
<icon BUILTIN="button_ok"/>
<node CREATED="1670079791241" ID="ID_1046215971" MODIFIED="1670079812814" TEXT="wasseridcht, da nur von abgeleiteten Klassen aufgerufen"/>
<node CREATED="1670079817657" ID="ID_1263461807" MODIFIED="1670079837199" TEXT="nimmt zwei Argumente und macht unmittelbar die limitierte Offset-Berechnung"/>
</node>
<node COLOR="#435e98" CREATED="1670079953176" ID="ID_482497794" MODIFIED="1670120655974" TEXT="Duration mu&#xdf; selber f&#xfc;r die Implementierung des Absolutbetrages sorgen">
<linktarget COLOR="#fefdb9" DESTINATION="ID_482497794" ENDARROW="Default" ENDINCLINATION="-192;-7;" ID="Arrow_ID_1014085079" SOURCE="ID_1913450557" STARTARROW="None" STARTINCLINATION="-207;16;"/>
<icon BUILTIN="yes"/>
<node COLOR="#338800" CREATED="1670080498535" ID="ID_1961138610" MODIFIED="1670120658621" TEXT="der ctor Duration(Offset) macht diese Umwandlung">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1670080522251" ID="ID_1399417381" MODIFIED="1670120660266" TEXT="alle anderen Konstruktoren werden darauf aufgebaut">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node CREATED="1670120920391" ID="ID_1544328925" MODIFIED="1670120940299" TEXT="bin nicht wirklich gl&#xfc;cklich mit dem Ergebnis">
<icon BUILTIN="smily_bad"/>
<node CREATED="1670120943775" ID="ID_1968873669" MODIFIED="1670120966072" TEXT="wir verwenden nun doch an einigen Stellen buildRaw_() und _raw()"/>
<node CREATED="1670120968395" ID="ID_189852460" MODIFIED="1670121014289" TEXT="noch schlimmer: ich mu&#xdf; jetzt Duration::MAX explizit per reinterpret_cast konstruieren"/>
<node CREATED="1670121025020" ID="ID_1030076787" MODIFIED="1670121088591" TEXT="&#x27f9; abgeleitete Klassen haben nicht wirklich den Zugangs-Weg, den sie brauchen"/>
<node CREATED="1670121089738" ID="ID_1726489244" MODIFIED="1670121157461" TEXT="und der Umweg &#xfc;ber Raw ist notwendig, die Zeit-Rechenfunktionen reichen nicht"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1670121166296" ID="ID_1078651329" MODIFIED="1670121217977" TEXT="hei&#xdf;t: die Limitierung sitzt an der falschen Stelle">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1670120849448" FOLDED="true" ID="ID_633048851" MODIFIED="1670517734261" TEXT="QuantiserBasics_test scheitert">
<icon BUILTIN="broken-line"/>
<node CREATED="1670120873385" ID="ID_1718461090" MODIFIED="1670120892890" TEXT="er hat die bisher bestehende Limitierung von Duration explizit abgetestet"/>
<node CREATED="1670120893850" ID="ID_788600909" MODIFIED="1670120906512" TEXT="gut so, aber jetzt mu&#xdf; ich diesen Test wieder verstehen....">
<icon BUILTIN="smiley-neutral"/>
<node CREATED="1670191477920" ID="ID_1536550302" MODIFIED="1670191505143" TEXT="der Test ist ja wirklich sch&#xf6;n &#x201e;basic&#x201c;">
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1670191507368" ID="ID_1611277271" MODIFIED="1670191525161" TEXT="was hier scheitert ist eine Nebensache"/>
<node CREATED="1670191526749" ID="ID_1074184920" MODIFIED="1670191648400" TEXT="dokumentiert lediglich diese unsinnige Limitierung von Offset | Duration">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...ganz dunkel kommt mir die Erinnerung an eine &#8222;kognitive Dissonanz&#8220; &#8212; die ich dann schell unter den Teppich gekehrt hatte, indem ich sie mit einem Assert dokumentierte....
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1670191650385" ID="ID_1618349097" MODIFIED="1670191678988" TEXT="mu&#xdf; also eigentlich nur diese nebenbei-Assertion der besseren L&#xf6;sung anpassen"/>
</node>
<node COLOR="#338800" CREATED="1670191680385" ID="ID_1961622718" MODIFIED="1670197933608" TEXT="sollte bei der Gelegenheit den Test erweitern und die Grenzen ausreizen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1670191697554" ID="ID_1632102794" MODIFIED="1670191731569" TEXT="zwei weitere Test-Intervalle">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1670191712394" ID="ID_1670947823" MODIFIED="1670191745192" TEXT="gr&#xf6;&#xdf;er als Time::MAX aber kleiner als Duration::MAX">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1670191723322" ID="ID_299394278" MODIFIED="1670191744039" TEXT="exakt Duration::MAX">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1670191732657" ID="ID_1301403557" MODIFIED="1670191739848" TEXT="kombinieren mit Offset">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1670191753771" ID="ID_838942043" MODIFIED="1670197700477" TEXT="Nebenbei bemerkt: das Grid::gridAligned() - API ist &#x201e;&#xfc;berraschend&#x201c;">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1670191803951" ID="ID_62422663" MODIFIED="1670191874006" TEXT="das Ergebnis ist relativ zum Grid-Origin">
<icon BUILTIN="info"/>
</node>
<node CREATED="1670191815870" ID="ID_1441457979" MODIFIED="1670191824182" TEXT="tats&#xe4;chlich so, ist auch so dokumentiert"/>
<node CREATED="1670191825469" ID="ID_64245414" MODIFIED="1670191888904" TEXT="trotzdem schr&#xe4;g &#x2014; Input absolut, output relativ zum Origin">
<icon BUILTIN="stop-sign"/>
</node>
<node COLOR="#435e98" CREATED="1670191890964" ID="ID_77008687" MODIFIED="1670192169799" TEXT="gibts daf&#xfc;r einen Grund?">
<icon BUILTIN="help"/>
<node CREATED="1670191912001" ID="ID_1930426088" MODIFIED="1670191918387" TEXT="Verwendungen: nur Tests">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1670191945933" ID="ID_838705253" MODIFIED="1670192032827" TEXT="Grid::timeOf() funktioniert andres (und wie erwartet)">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      und die unterliegende lumiera_time_of_gridpoint weicht da ebenfalls auff&#228;llig ab...
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1670192005076" ID="ID_1578782665" MODIFIED="1670192067197" TEXT="Grid::timeOf() hat reale Verwendung in der Timecode-Handhabung"/>
<node CREATED="1670192068956" ID="ID_1880098778" MODIFIED="1670192159480" TEXT="Fazit: das ist ein &#xbb;hexagonales Rad&#xab;">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ....also ein Feature, das zwar auf theoretischer Basis entwickelt wurde, aber nur im testgetriebenen Kontext; hier wohl entstanden aus der implementierungsm&#228;&#223;igen Symmetrie zu Grid::gridPoint(n)
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="forward"/>
</node>
</node>
<node COLOR="#690f14" CREATED="1670192170956" ID="ID_1026606570" MODIFIED="1670201051650" TEXT="API &#xe4;ndern: gridAlign() soll den Origin mit einschlie&#xdf;en">
<icon BUILTIN="yes"/>
<icon BUILTIN="stop-sign"/>
<node CREATED="1670200909516" ID="ID_1643706345" MODIFIED="1670200945558" TEXT="besser doch nicht: die Funtion w&#xe4;re dann n&#xe4;mlich komplett redundant"/>
<node CREATED="1670200914583" ID="ID_316481460" MODIFIED="1670201239789" TEXT="die gew&#xfc;nschte Funktion gibt es bereits auf dem Quantiser-API">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <font face="Monospaced" size="2">TimeValue Quantiser::materialise(TimeValue const&amp; raw) { return timeOf (gridPoint (raw)); }</font>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1670201304802" ID="ID_1724553119" MODIFIED="1670201393006" TEXT="und letztere hat zudem den Vorteil, da&#xdf; sie nicht clippt">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <ul>
      <li>
        weil die Rechnung komplett auf Implementierungs-Ebene passiert, mit int64_t
      </li>
      <li>
        unter der Ma&#223;gabe da&#223; die auftretenden Werte dahingehend limititert sind, und daher auch noch die Summe zum Origin ohne wrap-around berechnet werden kann
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#338800" CREATED="1670200952970" ID="ID_2558241" MODIFIED="1670197706677" TEXT="API-Funtkion umbenennen">
<icon BUILTIN="button_ok"/>
<node CREATED="1670200964176" ID="ID_795458621" MODIFIED="1670201044967" TEXT="gridAlign() &#x27fc; gridLocal()"/>
<node CREATED="1670201059514" ID="ID_489288280" MODIFIED="1670201082523" TEXT="das macht dann wenigstens den Unterschied klar">
<node CREATED="1670201083498" ID="ID_1913733433" MODIFIED="1670201094684" TEXT="Input: eine globale freie Zeit"/>
<node CREATED="1670201095403" ID="ID_1247848116" MODIFIED="1670201105896" TEXT="Output: eine grit-relative, quantisierte Zeit"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1670027504991" ID="ID_824635341" MODIFIED="1670207132035" TEXT="Tests erg&#xe4;nzen">
<icon BUILTIN="button_ok"/>
<node CREATED="1670207096977" ID="ID_1058283055" MODIFIED="1670207102076" TEXT="nicht mehr viel zu tun"/>
<node CREATED="1670207102815" ID="ID_379496016" MODIFIED="1670207118027" TEXT="f&#xfc;ge ein paar Extremwerte f&#xfc;r TimeValule_test hinzu"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1670201406958" ID="ID_622847359" MODIFIED="1670205084655" TEXT="leider wird er aber immer noch gekappt....">
<icon BUILTIN="broken-line"/>
<node CREATED="1670201771912" ID="ID_1540566423" MODIFIED="1670201786749" TEXT="das liegt nun daran, da&#xdf; wir automatisch in eine TimeVar umrechnen"/>
<node COLOR="#338800" CREATED="1670204890068" ID="ID_671165920" MODIFIED="1670207195581" TEXT="als Offset markieren gen&#xfc;gt">
<arrowlink COLOR="#46c71d" DESTINATION="ID_806986637" ENDARROW="Default" ENDINCLINATION="96;5;" ID="Arrow_ID_1094641771" STARTARROW="None" STARTINCLINATION="-3;83;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1670204908278" ID="ID_947864676" MODIFIED="1670204917446" TEXT="einserseits sch&#xf6;n..."/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1670204918941" ID="ID_1258511726" LINK="#ID_1144294293" MODIFIED="1670204991899" TEXT="andererseits irritierend und &#xe4;rgerlich">
<icon BUILTIN="clanbomber"/>
<node CREATED="1670205019071" ID="ID_699039716" MODIFIED="1670205030858" TEXT="nach logischen Prinzipien nicht wirklich nachvollziehbar"/>
<node CREATED="1670205031566" ID="ID_1841899173" MODIFIED="1670205041041" TEXT="liegt an der konkreten Definition der Operatoren"/>
<node CREATED="1670205042401" ID="ID_754662783" MODIFIED="1670205067436" TEXT="wenn Offset rechts &#x27f9; keine Limitierung"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1670207153549" ID="ID_806986637" MODIFIED="1670207252721" TEXT="mit diesem Fix im Time-Framework funktioniert der Test">
<linktarget COLOR="#1bb78b" DESTINATION="ID_806986637" ENDARROW="Default" ENDINCLINATION="230;-11;" ID="Arrow_ID_613938878" SOURCE="ID_1622564783" STARTARROW="None" STARTINCLINATION="-266;12;"/>
<linktarget COLOR="#46c71d" DESTINATION="ID_806986637" ENDARROW="Default" ENDINCLINATION="96;5;" ID="Arrow_ID_1094641771" SOURCE="ID_671165920" STARTARROW="None" STARTINCLINATION="-3;83;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1671235735966" ID="ID_1230717897" MODIFIED="1671235745618" TEXT="exzessives Expandieren">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1671235746837" ID="ID_1201391877" MODIFIED="1671235772450" TEXT="kombinieren sehr kleiner Pixelzahl mit sehr gro&#xdf;er Metrik">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1671235773464" ID="ID_266930117" MODIFIED="1671235786406" TEXT="relatives Ansteuern extremer Positionen">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1671235820835" ID="ID_963558104" MODIFIED="1671235836226" TEXT="aber dadurch k&#xf6;nnen wir nun bis an die Domain-Grenzen gehen">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1668180120032" ID="ID_346213896" MODIFIED="1671235860671" TEXT="Grenzen des Zeitformats">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1671235864869" ID="ID_234220527" MODIFIED="1671235876420" TEXT="Time::MAX und Time::MIN">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1671235876916" ID="ID_1550686390" MODIFIED="1671235881443" TEXT="Duration::MAX">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1671235882256" ID="ID_1895654238" MODIFIED="1671235893107" TEXT="Einspeisen von Werten au&#xdf;erhalb der Domain">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1671324283797" ID="ID_867107887" MODIFIED="1679362063105" TEXT="gem&#xe4;&#xdf; Requirement-Konzept integrieren">
<arrowlink COLOR="#955977" DESTINATION="ID_748757781" ENDARROW="Default" ENDINCLINATION="-318;688;" ID="Arrow_ID_1882192055" STARTARROW="None" STARTINCLINATION="-49;-276;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1672708781597" ID="ID_1653405728" MODIFIED="1672708797527" TEXT="Change-Listener verdrahtet mit TimelineLayout::signalStructureChange">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1672708802759" ID="ID_412094029" MODIFIED="1672708819294" TEXT="Interface DisplayMetric implementiert durch R&#xfc;ckgriff auf das ZoomWindow">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1672883648918" FOLDED="true" ID="ID_1140551016" MODIFIED="1673918644481" TEXT="Zugangsweg schaffen f&#xfc;r ZoomWindow-Aktuatoren">
<icon BUILTIN="button_ok"/>
<node CREATED="1672883866721" ID="ID_265373712" MODIFIED="1672883891409" TEXT="jeweils anzubinden...">
<node CREATED="1672883669691" ID="ID_233898229" MODIFIED="1672883705186" TEXT="horizontale Scrollbar"/>
<node CREATED="1672883684145" ID="ID_1407291054" MODIFIED="1672883701874" TEXT="Ermittlung der realen Pixel-Weite"/>
</node>
<node CREATED="1672883854586" ID="ID_676447060" MODIFIED="1672952350546" TEXT="Interface/Architektur">
<node CREATED="1672883916450" ID="ID_624038632" MODIFIED="1672883920077" TEXT="M&#xf6;glichkeiten">
<node CREATED="1672883927393" ID="ID_137422584" MODIFIED="1672883937611" TEXT="ZoomWindow&amp; per DI">
<node CREATED="1672884659498" ID="ID_183190051" MODIFIED="1672952301593" TEXT="konzeptionell sauber">
<icon BUILTIN="up"/>
</node>
<node CREATED="1672884699265" ID="ID_1546365198" MODIFIED="1672884715498" TEXT="jeweils ein zus&#xe4;tzliches (Referenz)-Feld">
<icon BUILTIN="down"/>
</node>
<node CREATED="1672942812195" ID="ID_113255429" MODIFIED="1672942843359" TEXT=" Zugang zu low-level-Funktionalit&#xe4;t (breites Interface)">
<icon BUILTIN="down"/>
</node>
</node>
<node CREATED="1672883940990" ID="ID_545229135" MODIFIED="1672883957585" TEXT="Proxy-Interface auf dem DisplayManager">
<node CREATED="1672884731013" ID="ID_648800678" MODIFIED="1672942853799" TEXT="typischerweise genau da wo auch DisplayManager ohnehin verdrahtet ist">
<icon BUILTIN="up"/>
<node CREATED="1672884819665" ID="ID_593694932" MODIFIED="1672884824476" TEXT="BodyCanvasWidget"/>
<node CREATED="1672884832528" ID="ID_202520630" MODIFIED="1672884839611" TEXT="AbstractTrackRenderer"/>
<node CREATED="1672884991017" ID="ID_1411622586" MODIFIED="1672884996861" TEXT="CanvasHook::getMetric">
<node CREATED="1672885022278" ID="ID_224159108" MODIFIED="1672885039960" TEXT="ClipPresenter::DragRelocateObserver"/>
<node CREATED="1672885043371" ID="ID_419966736" MODIFIED="1672885045903" TEXT="ClipWidget"/>
</node>
</node>
<node CREATED="1672942888477" ID="ID_344109754" MODIFIED="1672957304300" TEXT="notwendigerweise virtual calls (2 Indirektionen)">
<icon BUILTIN="down"/>
</node>
<node CREATED="1672949981338" ID="ID_1962786517" MODIFIED="1672949994745" TEXT="&#xfc;berdehnt die Bedeutung des DisplayManager">
<icon BUILTIN="down"/>
</node>
</node>
<node CREATED="1672956771420" ID="ID_593557107" MODIFIED="1672956799788" TEXT="Update-Signal(s) auf dem DisplayManager">
<node CREATED="1672957191000" ID="ID_76359433" MODIFIED="1672957382867" TEXT="explizit zweckgebunden">
<linktarget COLOR="#485dbf" DESTINATION="ID_76359433" ENDARROW="Default" ENDINCLINATION="-176;17;" ID="Arrow_ID_167764533" SOURCE="ID_1233770503" STARTARROW="None" STARTINCLINATION="77;-6;"/>
<icon BUILTIN="up"/>
</node>
<node CREATED="1672957201677" ID="ID_358714069" MODIFIED="1672957257339" TEXT="ZoomWindow selber bleibt Implementierungs-Detail">
<icon BUILTIN="up"/>
</node>
<node CREATED="1672957271741" ID="ID_1521993338" MODIFIED="1672957286257" TEXT="nur ein einfach-indirekter (funtion-pointer) call">
<icon BUILTIN="up"/>
</node>
<node CREATED="1672957315863" ID="ID_934216010" MODIFIED="1672957330972" TEXT="Komplexer und Gesamt-Funktion ist undurchsichtig">
<icon BUILTIN="down"/>
</node>
</node>
</node>
<node CREATED="1672957336020" ID="ID_1233770503" MODIFIED="1672959113510" TEXT="Entscheidung: Signale!">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Ja!!!<br />Hat lange gedauert, bis ich da drauf gekommen bin; aber das ist so eindeutig die richtige und angemessene L&#246;sung, da&#223; ich jetzt ausgesprochen erleichtert bin.
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#485dbf" DESTINATION="ID_76359433" ENDARROW="Default" ENDINCLINATION="-176;17;" ID="Arrow_ID_167764533" STARTARROW="None" STARTINCLINATION="77;-6;"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1672952339119" ID="ID_27417257" MODIFIED="1672952344269" TEXT="Art der Einbindung">
<node CREATED="1672952358471" ID="ID_577116696" MODIFIED="1672952449076" TEXT="spezieller Twist hier: Aktuatoren arbeiten pixel-basiert">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      alle Steuersignale aus dem GUI kommen in Pixel-Einheiten, entweder absolut oder relativ; das ZoomWindow selber aber arbeitet in Zeit-Einheiten (und das ist auch seine Aufgabe).
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1672952474418" ID="ID_1703019039" MODIFIED="1673918599660" TEXT="unn&#xf6;tige Umwege &#xfc;ber Zeit-Werte m&#xf6;glichst vermeiden">
<icon BUILTIN="button_cancel"/>
<node CREATED="1672952510381" ID="ID_557400282" MODIFIED="1672952543555" TEXT="insofern die Rechnungen als pr&#xe4;zise gelten"/>
<node CREATED="1672952549168" ID="ID_1479986541" MODIFIED="1672952631231" TEXT="aber die Werte-Begrenzungen ber&#xfc;cksichtigen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      in Grenzbereichen greift das ZoomWindow ein und begrenzt Ausschl&#228;ge; selbst wenn der angeschlossene Code direkt die Pixel-Werte verwendet, mu&#223; trotzdem auf solche Eingriffe gepr&#252;ft werden
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#435e98" CREATED="1673918575368" ID="ID_1602314348" MODIFIED="1673918594542" TEXT="aber zumindest die Ausdehnung mu&#xdf; ich &#xfc;ber die Zeit-Werte ausrechnen">
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1672952644887" ID="ID_393917969" MODIFIED="1672952661568" TEXT="ggfs aber Stellung der Scrollbars pr&#xfc;fen und rekalibrieren"/>
<node CREATED="1672956427506" ID="ID_1572841890" MODIFIED="1673918605435" TEXT="Struktur">
<icon BUILTIN="forward"/>
<node CREATED="1672956446738" ID="ID_419294832" MODIFIED="1672960594911" TEXT="Adjustment::valueChanged() &#x27fc; syncZoomWindow(Adjustment&amp;)"/>
<node CREATED="1672956504172" ID="ID_1390665381" MODIFIED="1672960626188" TEXT="BodyCanvasWidget::on_size_allocate() &#x27fc; sizeZoomWindow()">
<node CREATED="1672960628748" ID="ID_31432666" MODIFIED="1672960671941" TEXT="Display-Evaluation &#x27f6; update Adjustment based on ZoomWindow"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1672787519757" ID="ID_37048779" MODIFIED="1673918673633" TEXT="Pixel-Weite kalibrieren: zu Beginn der Display-Evaluation einschleifen">
<arrowlink COLOR="#4a759a" DESTINATION="ID_1189311522" ENDARROW="Default" ENDINCLINATION="1548;60;" ID="Arrow_ID_751989601" STARTARROW="None" STARTINCLINATION="1439;57;"/>
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1672798860387" ID="ID_981451006" MODIFIED="1673747058376" TEXT="Feedback auf Scrolling">
<icon BUILTIN="pencil"/>
<node COLOR="#435e98" CREATED="1672798873057" ID="ID_133007183" MODIFIED="1678839568091" TEXT="horizontale Canvas-Breite kommt nicht korrekt an">
<arrowlink COLOR="#503fac" DESTINATION="ID_1699842831" ENDARROW="Default" ENDINCLINATION="-1384;79;" ID="Arrow_ID_927325344" STARTARROW="None" STARTINCLINATION="-1848;-74;"/>
<icon BUILTIN="broken-line"/>
<node COLOR="#338800" CREATED="1672969399236" ID="ID_105188286" MODIFIED="1672969452360" TEXT="Logik &#xfc;berarbeitet: Werte kommmen jetzt an">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1672969412314" FOLDED="true" ID="ID_128441040" MODIFIED="1673917833235" TEXT="Fehler: horizontale Ausdehnung instabil">
<linktarget COLOR="#6a236e" DESTINATION="ID_128441040" ENDARROW="Default" ENDINCLINATION="-511;34;" ID="Arrow_ID_1077460507" SOURCE="ID_637545532" STARTARROW="None" STARTINCLINATION="-190;-19;"/>
<icon BUILTIN="broken-line"/>
<node CREATED="1673020358513" ID="ID_1745939268" MODIFIED="1673020364580" TEXT="Beobachtung(DUMP)">
<node CREATED="1673020365563" ID="ID_1034029673" MODIFIED="1673020378010" TEXT="layout_.getPixSpan().delta() verh&#xe4;lt sich &quot;zyklisch&quot;"/>
<node CREATED="1673824080045" ID="ID_1921636015" MODIFIED="1673824095119" TEXT="und zwar der End-Wert; dieser wird bisweilen negativ und w&#xe4;chst dann wieder"/>
<node CREATED="1673824100547" ID="ID_1250952994" MODIFIED="1673824127603" TEXT="auff&#xe4;llig: es tritt h&#xe4;ufiger auf, wenn man die Allokation nach Verkleinerung wieder vergr&#xf6;&#xdf;ert..."/>
</node>
<node CREATED="1673917066250" ID="ID_275241960" MODIFIED="1673917076486" TEXT="Dump ausbauen">
<node CREATED="1673917077557" ID="ID_50462687" MODIFIED="1673917088547" TEXT="die Berechneten (raw) Zeitwerte sind stabil"/>
<node CREATED="1673917089296" ID="ID_1095682897" MODIFIED="1673917099017" TEXT="es mu&#xdf; in der Umwandlung in Pixel passieren"/>
<node CREATED="1673917099760" ID="ID_1219466338" MODIFIED="1673917118899" TEXT="hier wird&apos;s m&#xfc;hsam (wir rufen mehrere virtuelle Funktionen auf)">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1673917123418" ID="ID_1029230100" MODIFIED="1673917129773" TEXT="Implementierung aufdoppeln"/>
<node CREATED="1673917130673" ID="ID_346555789" MODIFIED="1673917143894" TEXT="aber einen Debugging-String zur&#xfc;ckgeben"/>
<node CREATED="1673917144608" ID="ID_124621928" MODIFIED="1673917149465" TEXT="mit zwischenergebnissen"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1673917195121" ID="ID_1093667497" MODIFIED="1673917846467" TEXT="Integer-wrap-around">
<icon BUILTIN="broken-line"/>
<node CREATED="1673917211656" ID="ID_564112023" MODIFIED="1673917230992" TEXT="4508000000/7282711sec kann nicht als 32-bit int dargestellt werden"/>
<node CREATED="1673917231867" ID="ID_830241934" MODIFIED="1673917246230" TEXT="vor der Division in int64_t umwandeln!"/>
</node>
</node>
<node COLOR="#338800" CREATED="1673917712508" ID="ID_807239340" MODIFIED="1673917831460" TEXT="L&#xf6;sung: Division und trucate in 64-bit ausf&#xfc;hren">
<icon BUILTIN="button_ok"/>
<node CREATED="1673917753318" ID="ID_381118842" MODIFIED="1673917764871" TEXT="Downcast Ergebnis in 32-bit"/>
<node CREATED="1673917765612" ID="ID_1287873753" MODIFIED="1673917780494" TEXT="Assertion da&#xdf; das Ergebnis in den Wertebereich pa&#xdf;t"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1672969457755" ID="ID_1145571154" MODIFIED="1674598990613" TEXT="Fehler: run-away in der H&#xf6;he bei wiederholter Display-Evaluation">
<icon BUILTIN="broken-line"/>
<node CREATED="1672969484624" ID="ID_1370033195" MODIFIED="1672969500955" TEXT="die allozierte Content-H&#xf6;he w&#xe4;chst monoton">
<icon BUILTIN="messagebox_warning"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1672969501989" ID="ID_1513242412" MODIFIED="1674599018497" TEXT="Verdacht: da nun erstmals re-Evaluationen stattfinden, wird ein Init-Fehler sichtbar">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1673020204201" ID="ID_130901033" MODIFIED="1673020213759" TEXT="Beobachtung (DUMP)">
<icon BUILTIN="info"/>
<node CREATED="1673020215292" ID="ID_1472123011" MODIFIED="1673020256186" TEXT="in der Tat: accomodateContentHeight() f&#xfc;gt laufend hinzu"/>
<node CREATED="1673020257307" ID="ID_1535375022" MODIFIED="1673020292144" TEXT="was allerdings w&#xe4;chst ist der Beitrag von head_.calcContentHeight()">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1673021362882" ID="ID_954750461" MODIFIED="1673021435861" TEXT="TrackHeadWidget::accommodateContentHeight -&gt; increaseContentHeight() ; size-request + &#x394;">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1673022453591" ID="ID_1189073820" MODIFIED="1673022471744" TEXT="der tats&#xe4;chliche Aufschlag stammt jeweils aus der 2.Phase: DisplayFrame::sync_and_balance"/>
</node>
<node COLOR="#435e98" CREATED="1673027617885" ID="ID_1539603067" MODIFIED="1678839452688" TEXT="Feststellungen">
<icon BUILTIN="yes"/>
<node CREATED="1673027738477" FOLDED="true" ID="ID_910627159" MODIFIED="1673027741960" TEXT="Problem-1">
<node CREATED="1673027628894" ID="ID_642294954" MODIFIED="1673027656160" TEXT="sync_and_balance schl&#xe4;gt zus&#xe4;tzliches Padding auf"/>
<node CREATED="1673027656904" ID="ID_748230993" MODIFIED="1673027704972">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      im n&#228;chsten Zyklus wird das aber als Head-<b>content</b>&#160;gewertet &#10233; body-content wird erh&#246;ht
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1673027710473" ID="ID_1922165032" MODIFIED="1673027727174" TEXT="&#x27f9; sync_and_balance erkennt wieder eine Diskrepanz"/>
<node CREATED="1673027813155" ID="ID_217654042" MODIFIED="1673027871603" TEXT="padding und content im Head werden vermischt">
<icon BUILTIN="idea"/>
<node CREATED="1673029325047" ID="ID_460101701" MODIFIED="1673029337394" TEXT="au weia: diese Berechnungen sind aber noch relativ &quot;vorl&#xe4;ufig&quot;"/>
<node CREATED="1673029338126" ID="ID_1059214961" MODIFIED="1673029685791">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      damals war ich <i>zufrieden, </i>sobald es &#8222;halbwegs&#8220; funktioniert hat
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <ul>
      <li>
        erster Draft ab718ed6aa9d<br />hat nicht funktioniert, vmtl da ich letztlich auf widget.get_allocation().hight() aufgesetzt habe, und das kann initial noch null sein
      </li>
      <li>
        &#252;berarbeitet ab718ed6aa9db<br />dann habe ich rein auf Basis der einzelnen Zellen einen denfensiven Berechnungsweg verwendet: nimm MAX(preferred_height, reale&#160;Allokation); habe dies aber nicht angepa&#223;t auf mehrere Kind-Tracks, oder vielleicht doch? oder die Logik verkehrt herum??
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node CREATED="1673029688327" ID="ID_1637216543" MODIFIED="1673029700984" TEXT="jedenfalls wurde nie klar definiert, was hier &quot;content&quot; sein soll">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1673303781860" ID="ID_1183053320" MODIFIED="1673303787059" TEXT="Belegung der Felder">
<node CREATED="1673303792878" ID="ID_15099340" MODIFIED="1673303858649" TEXT="0.Zeile / span=2 : Name (ElementBox)"/>
<node CREATED="1673303859525" ID="ID_1941277838" MODIFIED="1673303874479" TEXT="1.Zeile: Tree-Graph">
<node CREATED="1673303876412" ID="ID_1855860657" MODIFIED="1673303929005" TEXT="&#xbb;Content&#xab; (falls leer)"/>
<node CREATED="1673303930118" ID="ID_450860952" MODIFIED="1673303937582" TEXT="1. Kind"/>
</node>
</node>
<node CREATED="1673031545264" ID="ID_52427355" MODIFIED="1673031561329" TEXT="das Padding wird aufgeschlagen auf (left=1, top=0)"/>
<node CREATED="1673031562629" ID="ID_1138131947" MODIFIED="1673031633192" TEXT="die calcContentHeitght() wertet aus MAX( (0,0), (1,0))">
<node CREATED="1673031610727" ID="ID_1604141819" MODIFIED="1673031618290" TEXT="also alle Zellen in der 1.Zeile"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1673312714420" ID="ID_152822454" MODIFIED="1673312733027" STYLE="fork" TEXT="das ist wohl die Inkonsistenz hier">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
</node>
<node CREATED="1673314655497" ID="ID_525789725" MODIFIED="1673314662292" TEXT="also beides getrennt handhaben">
<node CREATED="1673314663880" ID="ID_935563695" MODIFIED="1673314699327" TEXT="die contentHeight wirklich im 4.Quadranten anwenden"/>
<node CREATED="1673314701753" ID="ID_1401546681" MODIFIED="1673314779597" TEXT="zus&#xe4;tzlich eine Expansion einf&#xfc;hren, die aber nicht in die contentHeight eingeht!">
<node CREATED="1673745725545" ID="ID_527844757" MODIFIED="1673745739164" TEXT="f&#xfc;r die &quot;content height&quot; wirklich nur die Content-Felder auswerten"/>
<node CREATED="1673745740224" ID="ID_321245152" MODIFIED="1673745785441" TEXT="zus&#xe4;tzliche Expansion in einem anderen Feld machen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      z.B. in (0,1) = Struktur-Graph
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1673320252819" ID="ID_754862223" MODIFIED="1674598984710" TEXT="bricht noch nicht den Zyklus">
<icon BUILTIN="broken-line"/>
<node CREATED="1673320275690" ID="ID_1903820221" MODIFIED="1673745681092" TEXT="jetzt ist der Head-content von Anfang an zu gro&#xdf;">
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#435e98" CREATED="1673320299575" ID="ID_1836748064" MODIFIED="1674599062379" TEXT="aber warum stabilisiert sich dieser nicht?">
<icon BUILTIN="help"/>
<node CREATED="1673745636138" ID="ID_1839905420" MODIFIED="1673745695183" TEXT="Grund-1: weil der Head-content sich selbst&#xe4;ndig expandiert"/>
<node CREATED="1674599035390" ID="ID_1364664491" MODIFIED="1674599060112" TEXT="Grund-2 : weil dann ein Feedback &#xfc;ber die Body-H&#xf6;he stattfindet"/>
</node>
<node CREATED="1673705464388" ID="ID_1052559390" MODIFIED="1673705515338" TEXT="hilfreich ist: property_expand() = false  im Content-Bereich"/>
<node COLOR="#338800" CREATED="1673747106233" ID="ID_830917303" MODIFIED="1673747119474" TEXT="damit ist das Problem f&#xfc;r Blatt-Tracks gel&#xf6;st">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1673747138573" ID="ID_1650195806" MODIFIED="1674598982406" TEXT="aber Tracks mit Content und Kind-Tracks wachsen weiterhin">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1674598748501" ID="ID_1842930323" MODIFIED="1674598977652" TEXT="die Berechnung im TrackHead ist insgesamt inkonsistent">
<arrowlink COLOR="#689ba2" DESTINATION="ID_43972117" ENDARROW="Default" ENDINCLINATION="198;928;" ID="Arrow_ID_1080676559" STARTARROW="None" STARTINCLINATION="-1589;-3311;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1674598781624" ID="ID_1267230309" MODIFIED="1674598980470" TEXT="Size-Requests werden inkrementiert anstatt sie festzusetzen">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node CREATED="1673027746843" FOLDED="true" ID="ID_484113914" MODIFIED="1673027750543" TEXT="Problem-2">
<node CREATED="1673027751867" ID="ID_1170742278" MODIFIED="1673027768260" TEXT="size-request im Head w&#xe4;chst monoton"/>
<node CREATED="1673027770065" ID="ID_1809846655" MODIFIED="1673027783498" TEXT="body content-height w&#xe4;chst monoton"/>
<node CREATED="1673027796693" ID="ID_162051390" MODIFIED="1673027805715" TEXT="es fehlt ein reset">
<icon BUILTIN="idea"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1678839045859" ID="ID_641819217" MODIFIED="1678839055425" TEXT="3/23: das gilt weiterhin">
<icon BUILTIN="hourglass"/>
</node>
<node COLOR="#435e98" CREATED="1678839056977" ID="ID_1367619034" MODIFIED="1678839515363" TEXT="Problem vorl&#xe4;ufig entsch&#xe4;rft durch konsistente Handhabung im Track-Head">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <u>Zwischenfazit</u>: das Problem wurde erst dadurch sichtbar, da&#223; in der Logik im Track-Head innere Widerspr&#252;che bestanden; nach Durchlaufen eines Abstimmungszyklus bestand sofort wieder eine Diskrepanz, und das Layout konnte sich folglich nicht stabilisieren. <i><font color="#2e3084">Dies habe ich inzwischen behoben, </font></i>insofern nun das TrackHeadWidget grunds&#228;tzlich komplett ausformuliert ist, und alle Zust&#228;ndigkeiten dort klar verteilt sind. Nach Durchlaufen einer Display-Evaluation ergibt sich nun in Summe genau der Wert, der der mit dem TrackBody abgestimmten H&#246;he entspricht.
    </p>
    <p>
      
    </p>
    <p>
      Dennoch besteht das grunds&#228;tzliche Problem weiterhin, und wird in dem Moment doch noch zu betrachten sein, wenn das Layout dynamisch auf Inhalte reagieren soll; denn immer noch <i>wachsen</i>&#160;die ermittelten H&#246;hen <i>monoton an,</i>&#160;und es gibt keinen <i>Reset.</i>
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#57689a" DESTINATION="ID_1367619034" ENDARROW="Default" ENDINCLINATION="-147;128;" ID="Arrow_ID_50799002" SOURCE="ID_1930750315" STARTARROW="None" STARTINCLINATION="119;8;"/>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1678839454033" ID="ID_1930750315" MODIFIED="1678839515363" TEXT="Problem vorl&#xe4;ufig entsch&#xe4;rft (und vertagt)">
<arrowlink COLOR="#57689a" DESTINATION="ID_1367619034" ENDARROW="Default" ENDINCLINATION="-147;128;" ID="Arrow_ID_50799002" STARTARROW="None" STARTINCLINATION="119;8;"/>
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1673746034872" FOLDED="true" ID="ID_66895155" MODIFIED="1673747049281" TEXT="Segfault bei horizontalem Scroling">
<icon BUILTIN="broken-line"/>
<node CREATED="1673746067311" ID="ID_154133331" MODIFIED="1673746074945" TEXT="Beobachtung">
<icon BUILTIN="idea"/>
<node CREATED="1673746076315" ID="ID_1475835480" MODIFIED="1673746096996" TEXT="TimelineLayout::syncZoomWindow(PAdjustment)"/>
<node CREATED="1673746101072" ID="ID_1560542600" MODIFIED="1673746109872" TEXT="Argument ist ein Null-ptr"/>
<node CREATED="1673746264291" ID="ID_920699526" MODIFIED="1673746274572" TEXT="Argument im Funktor gebunden auf: bodyCanvas_.get_focus_hadjustment()">
<node CREATED="1673746420584" ID="ID_175121956" MODIFIED="1673746454675" TEXT="was ist ein &quot;focus_hadjustment&quot;???">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <font face="Monospaced" size="2">&#160;&#160;/** Hooks up an adjustment to focus handling in a container, so when a child </font>
    </p>
    <p>
      <font face="Monospaced" size="2">&#160;&#160;&#160;* of the container is focused, the adjustment is scrolled to show that </font>
    </p>
    <p>
      <font face="Monospaced" size="2">&#160;&#160;&#160;* widget. This function sets the horizontal alignment. </font>
    </p>
    <p>
      <font face="Monospaced" size="2">&#160;&#160;&#160;* See Gtk::ScrolledWindow::get_hadjustment() for a typical way of obtaining </font>
    </p>
    <p>
      <font face="Monospaced" size="2">&#160;&#160;&#160;* the adjustment and set_focus_vadjustment() for setting </font>
    </p>
    <p>
      <font face="Monospaced" size="2">&#160;&#160;&#160;* the vertical adjustment. </font>
    </p>
    <p>
      <font face="Monospaced" size="2">&#160;&#160;&#160;* </font>
    </p>
    <p>
      <font face="Monospaced" size="2">&#160;&#160;&#160;* The adjustments have to be in pixel units and in the same coordinate </font>
    </p>
    <p>
      <font face="Monospaced" size="2">&#160;&#160;&#160;* system as the allocation for immediate children of the container. </font>
    </p>
    <p>
      <font face="Monospaced" size="2">&#160;&#160;&#160;* </font>
    </p>
    <p>
      <font face="Monospaced" size="2">&#160;&#160;&#160;* @param adjustment An adjustment which should be adjusted when the focus is </font>
    </p>
    <p>
      <font face="Monospaced" size="2">&#160;&#160;&#160;* moved among the descendents of @a container. </font>
    </p>
    <p>
      <font face="Monospaced" size="2">&#160;&#160;&#160;*/ </font>
    </p>
    <p>
      <font face="Monospaced" size="2">&#160;&#160;void set_focus_hadjustment(const Glib::RefPtr&lt;Adjustment&gt;&amp; adjustment); </font>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1673746457176" ID="ID_1981285766" MODIFIED="1673746728481" TEXT="da hab ich wohl die falsche Funktion erwischt???">
<icon BUILTIN="smiley-oh"/>
<node CREATED="1673746730444" ID="ID_582249986" MODIFIED="1673746734951" TEXT="auto-complete...."/>
<node CREATED="1673746736759" ID="ID_893437203" MODIFIED="1673746739029" TEXT="bodyCanvas_.get_hadjustment()"/>
<node CREATED="1673746741315" ID="ID_513265997" MODIFIED="1673746750093" TEXT="das geht dann auf die contentArea"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1673747021254" ID="ID_1805274819" MODIFIED="1673747047575" TEXT="richtig binden &#x27f9; Scrollbar reagiert">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1673807997325" FOLDED="true" ID="ID_1009074242" MODIFIED="1673824061664" TEXT="Assertion-fail">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      0000001086: POSTCONDITION: body-canvas-widget.cpp:512: worker_3: maybeRebuildLayout: (not isnil (profile_)) DisplayEvaluation logic broken
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="broken-line"/>
<node CREATED="1673808698810" ID="ID_825689705" MODIFIED="1673808714792" TEXT="wahrscheinlicher Grund: signalStruktureChange ausgel&#xf6;st"/>
<node COLOR="#435e98" CREATED="1673809260386" FOLDED="true" ID="ID_1757495179" MODIFIED="1673918456525" TEXT="Beobachtung">
<icon BUILTIN="info"/>
<node CREATED="1673809555225" ID="ID_1752395100" MODIFIED="1673809557899" TEXT="stop-1">
<node CREATED="1673809269809" ID="ID_1319270486" MODIFIED="1673809274764" TEXT="im GUI-Thread"/>
<node CREATED="1673809352006" ID="ID_43730245" MODIFIED="1673809353849" TEXT="Gtk::Container_Class::check_resize_callback()"/>
<node CREATED="1673809381811" ID="ID_337647284" MODIFIED="1673809391005" TEXT="gtk_widget_size_allocate_with_baseline()"/>
<node CREATED="1673809276473" ID="ID_1203817142" MODIFIED="1673809295149" TEXT="bodyCanvas_.signal_size_allocate() ausgel&#xf6;st"/>
<node CREATED="1673809430115" ID="ID_1967291627" MODIFIED="1673809442712" TEXT="&#x27fc; TimelineLayout::sizeZoomWindow (Gtk::Allocation&amp; alloc)"/>
<node CREATED="1673809466480" ID="ID_1184190765" MODIFIED="1673809494768" TEXT="ZoomWindow::calibrateExtension() &#x27fc; fireChangeNotification()"/>
<node CREATED="1673809517381" ID="ID_975841816" MODIFIED="1673809530033" TEXT="&#x27fc; BodyCanvasWidget::slotStructureChange()"/>
</node>
<node CREATED="1673809653325" ID="ID_960514018" MODIFIED="1673809659071" TEXT="stop-2">
<node CREATED="1673809269809" ID="ID_963970163" MODIFIED="1673809274764" TEXT="im GUI-Thread"/>
<node CREATED="1673809685665" ID="ID_1008125357" MODIFIED="1673809693963" TEXT="Gtk::Widget_Class::draw_callback()"/>
<node CREATED="1673809708766" ID="ID_273943398" MODIFIED="1673809719360" TEXT="TimelineCanvas::on_draw()"/>
<node CREATED="1673809744969" ID="ID_1591443219" MODIFIED="1673821398443" TEXT="BodyCanvasWidget::maybeRebuildLayout() &#x27fc; layout_.triggerDisplayEvaluation()">
<arrowlink COLOR="#3c2f91" DESTINATION="ID_1442699048" ENDARROW="Default" ENDINCLINATION="95;12;" ID="Arrow_ID_1977514739" STARTARROW="None" STARTINCLINATION="-9;28;"/>
<arrowlink COLOR="#3c2f91" DESTINATION="ID_719594409" ENDARROW="Default" ENDINCLINATION="95;12;" ID="Arrow_ID_852227304" STARTARROW="None" STARTINCLINATION="-9;28;"/>
</node>
</node>
<node CREATED="1673809820526" ID="ID_1282555495" MODIFIED="1673809823250" TEXT="stop-3">
<node CREATED="1673810027811" ID="ID_1442699048" MODIFIED="1673821392108" TEXT="im gleichen Callstack">
<linktarget COLOR="#3c2f91" DESTINATION="ID_1442699048" ENDARROW="Default" ENDINCLINATION="95;12;" ID="Arrow_ID_1977514739" SOURCE="ID_1591443219" STARTARROW="None" STARTINCLINATION="-9;28;"/>
</node>
<node CREATED="1673811079973" ID="ID_1459771595" MODIFIED="1673811082177" TEXT="TimelineLayout::establishLayout (DisplayEvaluation&amp;)"/>
<node CREATED="1673810070508" ID="ID_285758476" MODIFIED="1673810073328" TEXT="bodyCanvas_.get_hadjustment()-&gt;set_value(pxOffset)">
<node CREATED="1673810084309" ID="ID_438775800" MODIFIED="1673810089799" TEXT="pxOffset=152"/>
<node CREATED="1673810159367" ID="ID_869315491" MODIFIED="1673810171891" TEXT="vorher: 153 (beim letzten Scrolliing)"/>
</node>
<node CREATED="1673810802131" ID="ID_1513475551" MODIFIED="1673810856912" TEXT="bodyCanvas_::hadjustment.property_value().signal_changed()">
<node CREATED="1673810863442" ID="ID_740887741" MODIFIED="1673810864566" TEXT="&#x27fc; TimelineLayout::syncZoomWindow (PAdjustment hadj)"/>
<node CREATED="1673810881168" ID="ID_770428876" MODIFIED="1673810894275" TEXT="zoomWindow_.setVisibleStart (windowStart)  &#x27fc; fireChangeNotification()"/>
<node CREATED="1673809517381" ID="ID_535606791" MODIFIED="1673812842543" TEXT="&#x27fc; BodyCanvasWidget::slotStructureChange()">
<arrowlink COLOR="#4697c4" DESTINATION="ID_1775726398" ENDARROW="Default" ENDINCLINATION="80;-12;" ID="Arrow_ID_1301127863" STARTARROW="None" STARTINCLINATION="-284;18;"/>
</node>
</node>
<node CREATED="1673812714835" ID="ID_1775726398" MODIFIED="1673812842543" TEXT="profile_.clear()">
<linktarget COLOR="#4697c4" DESTINATION="ID_1775726398" ENDARROW="Default" ENDINCLINATION="80;-12;" ID="Arrow_ID_1301127863" SOURCE="ID_535606791" STARTARROW="None" STARTINCLINATION="-284;18;"/>
</node>
</node>
<node CREATED="1673812775683" ID="ID_1800881693" MODIFIED="1673812777742" TEXT="stop-4">
<node CREATED="1673810027811" ID="ID_719594409" MODIFIED="1673821395365" TEXT="im gleichen Callstack">
<linktarget COLOR="#3c2f91" DESTINATION="ID_719594409" ENDARROW="Default" ENDINCLINATION="95;12;" ID="Arrow_ID_852227304" SOURCE="ID_1591443219" STARTARROW="None" STARTINCLINATION="-9;28;"/>
</node>
<node CREATED="1673809744969" ID="ID_686562400" MODIFIED="1673821439684" TEXT="BodyCanvasWidget::establishLayout()">
<arrowlink COLOR="#3c2f91" DESTINATION="ID_1308718811" ENDARROW="Default" ENDINCLINATION="66;9;" ID="Arrow_ID_125967636" STARTARROW="None" STARTINCLINATION="32;22;"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1673811186943" ID="ID_671439113" MODIFIED="1673811190535" TEXT="rootBody_-&gt;establishTrackSpace (profile_)"/>
<node CREATED="1673811200349" ID="ID_1198425081" MODIFIED="1673811206428" TEXT="baut Profile neu auf">
<icon BUILTIN="info"/>
</node>
</node>
</node>
<node CREATED="1673820672711" ID="ID_1084465097" MODIFIED="1673820675362" TEXT="stop-5">
<node CREATED="1673810027811" ID="ID_1308718811" MODIFIED="1673821439684" TEXT="im gleichen Callstack">
<linktarget COLOR="#3c2f91" DESTINATION="ID_1308718811" ENDARROW="Default" ENDINCLINATION="66;9;" ID="Arrow_ID_125967636" SOURCE="ID_686562400" STARTARROW="None" STARTINCLINATION="32;22;"/>
</node>
<node CREATED="1673820676440" ID="ID_1428838878" MODIFIED="1673821379859" TEXT="BodyCanvasWidget::establishLayout ()">
<node CREATED="1673821503186" ID="ID_332793347" MODIFIED="1673821505330" TEXT="adjustCanvasSize(layout_.getPixSpan().delta(), contentHeight, rulerHeight)">
<node CREATED="1673821691053" ID="ID_1561772925" MODIFIED="1673821692313" TEXT="layout_.getPixSpan()"/>
<node CREATED="1673821707880" ID="ID_46999928" MODIFIED="1673821746745" TEXT="DUMP: &#x27ff; &#x394;(0, -476)"/>
</node>
<node CREATED="1673821574701" ID="ID_1681667823" MODIFIED="1673821855384">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      adjust (rulerCanvas_, canvasWidth <b><font color="#fc2020">&#8788;0</font></b>, rulerHeight &#8788;11<font color="#41d448">&#10004;</font>)
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1673821774834" ID="ID_1418910368" MODIFIED="1673822078671" TEXT="rulerCanvas.set_size(0, 11);">
<arrowlink COLOR="#bf0e70" DESTINATION="ID_1137713906" ENDARROW="Default" ENDINCLINATION="128;6;" ID="Arrow_ID_184403276" STARTARROW="None" STARTINCLINATION="49;5;"/>
</node>
</node>
<node CREATED="1673821942380" ID="ID_1137713906" MODIFIED="1673822078671" TEXT="bodyCanvas_::hadjustment.property_value().signal_changed()">
<linktarget COLOR="#bf0e70" DESTINATION="ID_1137713906" ENDARROW="Default" ENDINCLINATION="128;6;" ID="Arrow_ID_184403276" SOURCE="ID_1418910368" STARTARROW="None" STARTINCLINATION="49;5;"/>
</node>
<node CREATED="1673822109021" ID="ID_1969505468" MODIFIED="1673822114353" TEXT="TimelineLayout::syncZoomWindow(hadjustment)">
<node CREATED="1673822205944" ID="ID_911661763" MODIFIED="1673822215169" TEXT="hadjustment wird nach pos gefract"/>
<node COLOR="#a41765" CREATED="1673822215895" ID="ID_145619270" MODIFIED="1673822785272" TEXT="pos &#x2254; 0">
<arrowlink COLOR="#ec5b91" DESTINATION="ID_847463371" ENDARROW="Default" ENDINCLINATION="151;-4;" ID="Arrow_ID_1064590055" STARTARROW="None" STARTINCLINATION="151;46;"/>
</node>
<node CREATED="1673822245795" ID="ID_1702472826" MODIFIED="1673822259565" TEXT="zoomWindow_.setVisibleStart (Time{0})"/>
</node>
<node CREATED="1673809517381" ID="ID_1945994324" MODIFIED="1673809530033" TEXT="&#x27fc; BodyCanvasWidget::slotStructureChange()"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1673822368235" ID="ID_37222453" MODIFIED="1673822393376" TEXT="profile_.clear()">
<icon BUILTIN="clanbomber"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1673822498449" ID="ID_969173291" MODIFIED="1673918448602" TEXT="Fazit: zwei Probleme">
<icon BUILTIN="forward"/>
<node CREATED="1673822512176" ID="ID_838311135" MODIFIED="1673822561177">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      scrollPos &#10239; zoomWindow ge&#228;ndert, <i>nachdem</i>&#160;das Profil aufgebaut wurde
    </p>
  </body>
</html></richcontent>
<node CREATED="1673822842715" ID="ID_469521080" MODIFIED="1673822930226" TEXT="ohne den anderen Bug w&#xfc;rde das hier aber nicht auftreten">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...denn den pixSpan sollte sich ja grade eben nicht &#228;ndern, sondern nur der sichtbare Fenster-Ausschnitt; die Implementierung mit dem ZoomWindow zielt ja genau darauf, die Metrik konstant zu halten, selbst wenn sich das sichtbare Fenster (wie hier) &#228;ndert
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1673822820583" ID="ID_1299254285" MODIFIED="1673822834376" TEXT="grunds&#xe4;tzilch kann man sowas nie ausschlie&#xdf;en">
<node CREATED="1673822938342" ID="ID_62922350" MODIFIED="1673822959592" TEXT="es kann stets Dinge geben, die durch eine Layoutberechnung nachtr&#xe4;glich invalidiert werden"/>
<node CREATED="1673822961603" ID="ID_1448263496" MODIFIED="1673822979878" TEXT="und deshalb m&#xfc;&#xdf;te die Berechnung dann lediglich invalidiert und wiederholt werden"/>
<node CREATED="1673822981906" ID="ID_1546720017" MODIFIED="1673823013893" TEXT="...bis sie sich stabilisiert">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      und <i>nur das </i>kann man vom Design her einfordern (da&#223; sie sich stabilisiert und nicht in Oszillationen ger&#228;t)
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#338800" CREATED="1673823198796" ID="ID_1795675893" MODIFIED="1673824051687" TEXT="while-Schleife und nochmal berechnen">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1673822589957" ID="ID_637545532" MODIFIED="1673822645422" TEXT="layout_.getPixSpan() entgleist">
<arrowlink COLOR="#6a236e" DESTINATION="ID_128441040" ENDARROW="Default" ENDINCLINATION="-511;34;" ID="Arrow_ID_1077460507" STARTARROW="None" STARTINCLINATION="-190;-19;"/>
<node COLOR="#435e98" CREATED="1673822656960" ID="ID_847463371" MODIFIED="1673918421685" TEXT="der End-Wert verh&#xe4;lt sich &#xbb;zyklisch&#xab; und wird bisweilen negativ">
<linktarget COLOR="#ec5b91" DESTINATION="ID_847463371" ENDARROW="Default" ENDINCLINATION="151;-4;" ID="Arrow_ID_1064590055" SOURCE="ID_145619270" STARTARROW="None" STARTINCLINATION="151;46;"/>
</node>
<node CREATED="1673822724035" ID="ID_1257160861" MODIFIED="1673822739708" TEXT="nur deshalb wird hier die Scroll-Position signifikant verschoben">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1679358706913" ID="ID_1573983842" MODIFIED="1679358744427">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Erste Integration: <b>verh&#228;lt sich korrekt</b>
    </p>
  </body>
</html></richcontent>
<font NAME="SansSerif" SIZE="13"/>
<icon BUILTIN="forward"/>
</node>
</node>
<node COLOR="#338800" CREATED="1678841457381" ID="ID_833023922" MODIFIED="1679362063105" TEXT="Breite an vorhandene Fensterbreite anmessen">
<linktarget COLOR="#748598" DESTINATION="ID_833023922" ENDARROW="Default" ENDINCLINATION="-1609;-94;" ID="Arrow_ID_1971623817" SOURCE="ID_81531339" STARTARROW="None" STARTINCLINATION="-140;338;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1678841652042" ID="ID_344873865" MODIFIED="1678916366193" TEXT="bezweifle ob das korrekt ankommt">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Beispiel: Fenster vorher sehr schmal machen...
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="help"/>
</node>
<node COLOR="#338800" CREATED="1678916371168" ID="ID_1956699133" MODIFIED="1678916621731" TEXT="doch.... &#x27f6; works as designed">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      per Trace-Meldung &#252;berpr&#252;ft: calibrateExtension() ist so programmiert, da&#223; es die bestehende Metrik erh&#228;lt, sondern das ZoomWindow entsprechend verkleinert. Der Code verwendet bisher nur default-Werte f&#252;r die Timeline &#10233; die Metrik bleibt auf 25px/sec stehen, und damit wird die Gesamtl&#228;nge stets mindestens 575px sein; Ausnahme: wenn das Fenster ohnehin gr&#246;&#223;er ist...
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1679358771623" ID="ID_1569651194" MODIFIED="1679358814716" TEXT="Integration mit erweiterten Mutatoren steht noch aus">
<arrowlink COLOR="#924a6f" DESTINATION="ID_1985216414" ENDARROW="Default" ENDINCLINATION="30;-53;" ID="Arrow_ID_990160035" STARTARROW="None" STARTINCLINATION="-186;10;"/>
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1672708648699" ID="ID_1985216414" MODIFIED="1672708769250" TEXT="#1264 fully integrate ZoomWindow mutators into Timeline display">
<linktarget COLOR="#954368" DESTINATION="ID_1985216414" ENDARROW="Default" ENDINCLINATION="1507;68;" ID="Arrow_ID_1698932113" SOURCE="ID_1466789019" STARTARROW="None" STARTINCLINATION="-35;216;"/>
<linktarget COLOR="#924a6f" DESTINATION="ID_1985216414" ENDARROW="Default" ENDINCLINATION="30;-53;" ID="Arrow_ID_990160035" SOURCE="ID_1569651194" STARTARROW="None" STARTINCLINATION="-186;10;"/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1672883774136" HGAP="85" ID="ID_135908111" MODIFIED="1672883794675" TEXT="anzubinden" VSHIFT="21">
<edge COLOR="#976c6c"/>
<node CREATED="1672883797610" ID="ID_1763437884" MODIFIED="1672883807253" TEXT="Canvas-Scrollbar"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1667488193842" ID="ID_1347640673" MODIFIED="1667488208549" TEXT="Invarianten">
<font BOLD="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="forward"/>
<node CREATED="1667488212533" ID="ID_553762141" MODIFIED="1667488247411" TEXT="overall Span ist stets der gesamte Canvas"/>
<node CREATED="1667488258934" ID="ID_1924856810" MODIFIED="1667488270574" TEXT="visible Span ist ausnahmslos stets darin enthalten"/>
<node CREATED="1667488271316" ID="ID_1005066146" MODIFIED="1667488283070" TEXT="visible Span in Pixel umgerechnet bleibt absolut konstant"/>
<node CREATED="1667488303192" ID="ID_486782619" MODIFIED="1667488317608" TEXT="pr&#xe4;zise Pixel-Werte sind Pr&#xe4;ferenz"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1666913274942" ID="ID_4743528" MODIFIED="1666913286194" TEXT="Design &#xfc;berpr&#xfc;fen">
<icon BUILTIN="hourglass"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1670015422301" ID="ID_1681510241" MODIFIED="1670015457619" TEXT="#1262 extract helpers for handling problematic factions">
<arrowlink DESTINATION="ID_636584956" ENDARROW="Default" ENDINCLINATION="-1629;69;" ID="Arrow_ID_1114152599" STARTARROW="None" STARTINCLINATION="3618;0;"/>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1664730879582" FOLDED="true" ID="ID_580266574" MODIFIED="1664731036535" TEXT="Performance-Aspekte">
<linktarget COLOR="#6e6b89" DESTINATION="ID_580266574" ENDARROW="Default" ENDINCLINATION="-1072;126;" ID="Arrow_ID_1760515184" SOURCE="ID_1774914566" STARTARROW="None" STARTINCLINATION="-1832;638;"/>
<icon BUILTIN="hourglass"/>
<node CREATED="1664730914274" ID="ID_352020246" MODIFIED="1664730918069" TEXT="Architektur"/>
<node CREATED="1664730918937" ID="ID_524082357" MODIFIED="1664730921221" TEXT="Empirie">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1664728069849" ID="ID_46750178" MODIFIED="1664730924226" TEXT="#1240 evaluate performance of ElementBoxWidget">
<arrowlink COLOR="#652a49" DESTINATION="ID_1113493685" ENDARROW="Default" ENDINCLINATION="-1026;116;" ID="Arrow_ID_977109999" STARTARROW="None" STARTINCLINATION="-985;55;"/>
<icon BUILTIN="bell"/>
</node>
</node>
</node>
</node>
<node CREATED="1448070434915" HGAP="64" ID="ID_257833497" MODIFIED="1557498707234" VSHIFT="7">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      innere
    </p>
    <p>
      Struktur
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#3a8df0" DESTINATION="ID_1618124128" ENDARROW="Default" ENDINCLINATION="-25;-141;" ID="Arrow_ID_539627804" STARTARROW="Default" STARTINCLINATION="-18;110;"/>
<node CREATED="1523019258000" FOLDED="true" HGAP="-51" ID="ID_974158229" MODIFIED="1618678028294" TEXT="Struktur-Schemata" VSHIFT="-16">
<linktarget COLOR="#86889b" DESTINATION="ID_974158229" ENDARROW="Default" ENDINCLINATION="-381;-944;" ID="Arrow_ID_1816207037" SOURCE="ID_708518061" STARTARROW="None" STARTINCLINATION="1299;101;"/>
<linktarget COLOR="#4f5d91" DESTINATION="ID_974158229" ENDARROW="Default" ENDINCLINATION="383;-2505;" ID="Arrow_ID_1832380552" SOURCE="ID_48107354" STARTARROW="None" STARTINCLINATION="-730;103;"/>
<font NAME="SansSerif" SIZE="14"/>
<node CREATED="1523019333461" ID="ID_631113825" MODIFIED="1557498707234" TEXT="UI-Element - Hierarchie">
<node CREATED="1523019501198" ID="ID_531041967" MODIFIED="1557498707234" TEXT="Systematisches UI-Modell">
<linktarget COLOR="#5f7288" DESTINATION="ID_531041967" ENDARROW="Default" ENDINCLINATION="-964;-27;" ID="Arrow_ID_603305631" SOURCE="ID_790020807" STARTARROW="None" STARTINCLINATION="1678;0;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="info"/>
</node>
<node CREATED="1541545653978" ID="ID_1534432315" MODIFIED="1557498707234" TEXT="UI-Element - Identit&#xe4;t">
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1541545674669" ID="ID_1585676322" MODIFIED="1557498707234" TEXT="UI-Elemente sind global eindeutig">
<arrowlink COLOR="#7894b4" DESTINATION="ID_189279804" ENDARROW="Default" ENDINCLINATION="272;-358;" ID="Arrow_ID_540125984" STARTARROW="None" STARTINCLINATION="-618;10;"/>
<linktarget COLOR="#6b83a8" DESTINATION="ID_1585676322" ENDARROW="Default" ENDINCLINATION="828;-65;" ID="Arrow_ID_174361092" SOURCE="ID_1706134856" STARTARROW="None" STARTINCLINATION="1067;-74;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1541545696185" ID="ID_1907010009" MODIFIED="1557498707234" TEXT="Grund: UI-Bus - Routing">
<icon BUILTIN="info"/>
</node>
<node COLOR="#435e98" CREATED="1541545933006" FOLDED="true" ID="ID_1850412206" MODIFIED="1561827465322" TEXT="Duplikate sind ein t&#xfc;ckisches Problem">
<linktarget COLOR="#c9876a" DESTINATION="ID_1850412206" ENDARROW="Default" ENDINCLINATION="49;-155;" ID="Arrow_ID_1571993328" SOURCE="ID_787025622" STARTARROW="None" STARTINCLINATION="-11;173;"/>
<linktarget COLOR="#c9876a" DESTINATION="ID_1850412206" ENDARROW="Default" ENDINCLINATION="369;179;" ID="Arrow_ID_1229280605" SOURCE="ID_659707505" STARTARROW="None" STARTINCLINATION="586;-203;"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1541545944079" ID="ID_1737663580" MODIFIED="1541545963000" TEXT="ein Duplikat ersetzt stillschweigend die Registrierung"/>
<node CREATED="1541545963822" ID="ID_1562348206" MODIFIED="1541546016778" TEXT="Identit&#xe4;t beruht auf EntryID (Hash)"/>
<node CREATED="1541545975779" ID="ID_1748214927" MODIFIED="1541546024401" TEXT="diese(r) wird aber systematisch gebildet"/>
<node CREATED="1541790406153" ID="ID_966273732" MODIFIED="1541790408357" TEXT="relevant in Record&lt;GenNode&gt;">
<icon BUILTIN="broken-line"/>
</node>
<node CREATED="1541546204541" HGAP="30" ID="ID_1625379453" MODIFIED="1561827465326" TEXT="speziell..." VSHIFT="3">
<arrowlink COLOR="#677dde" DESTINATION="ID_1099820897" ENDARROW="Default" ENDINCLINATION="-64;0;" ID="Arrow_ID_791650338" STARTARROW="None" STARTINCLINATION="18;42;"/>
<icon BUILTIN="info"/>
<node CREATED="1541546209896" ID="ID_1049660229" MODIFIED="1541546245931" TEXT="Kind: _CHILD_&lt;typ&gt;.&lt;cnt&gt;">
<node CREATED="1541546489419" ID="ID_282481336" MODIFIED="1576282358021" TEXT="automatisch global eindeutig">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      weil wir einen Mechanismus haben, die &lt;cnt&gt;-Dekoration pro Typ global hochzuz&#228;hlen (treadsafe)
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1541546556994" ID="ID_35993355" MODIFIED="1541546573135" TEXT="hash-seed: der &lt;typ&gt;-Hash"/>
</node>
<node CREATED="1541546415736" ID="ID_1483102981" MODIFIED="1541546432862" TEXT="Attribut: key">
<node CREATED="1541546579096" ID="ID_728290559" MODIFIED="1541546602798">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Problem: key nur <i>innerhalb</i>&#160;des Objektes eindeutig
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="broken-line"/>
</node>
<node CREATED="1541547820403" ID="ID_1229228521" MODIFIED="1541775004416" TEXT="L&#xf6;sung: Hash-Chaining">
<icon BUILTIN="button_cancel"/>
<node CREATED="1541547837646" ID="ID_508395323" MODIFIED="1541547854627" TEXT="&#xe4;hnlich wie im Merkle-Tree">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1541547855766" ID="ID_1691211097" MODIFIED="1541547867017" TEXT="Hash des Vaters als seed">
<node CREATED="1541552824556" ID="ID_42859602" MODIFIED="1541552831542" TEXT="geht nicht">
<icon BUILTIN="stop-sign"/>
</node>
<node CREATED="1541552832731" ID="ID_346770424" MODIFIED="1576282358021" TEXT="bricht die Subsidiarit&#xe4;t">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...denn dann m&#252;&#223;te das Attribut
    </p>
    <p>
      von dem Container (GenNode) wissen, der es zwei Ebenen h&#246;her enth&#228;lt und umschlie&#223;t
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="broken-line"/>
</node>
<node CREATED="1541774981285" ID="ID_1038144488" MODIFIED="1541774996472" TEXT="ist letzten Endes auch blo&#xdf; random()"/>
</node>
</node>
<node CREATED="1541775187418" ID="ID_1058458763" MODIFIED="1576282358020" TEXT="Frage: Reproduzierbarkeit irrelevant?">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...es kommt (vielleicht) &#252;berhaupt nicht darauf an,
    </p>
    <p>
      da&#223; der Hash einer Attribut-ID <i>reproduzierbar</i>&#160;ist (auf Basis der symbilschen ID).
    </p>
    <p>
      Der Hash kann genausogut eine Zufallszahl sein
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="help"/>
<node CREATED="1541775381760" ID="ID_681940327" MODIFIED="1541775392922" TEXT="denn: get sucht per Symbol"/>
<node CREATED="1541775428125" ID="ID_1569956089" MODIFIED="1576282358020" TEXT="und: einige Attribute haben notwendig eine extern definierte ID">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...n&#228;mlich diejenigen, die <i>selber </i>Modell-Elemente sind.
    </p>
    <p>
      Und genau diese speziellen Objekt-Attribute sind der Anla&#223;,
    </p>
    <p>
      sich &#252;ber dieses Problem Gedanken zu machen
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1541790399905" ID="ID_552609912" MODIFIED="1541790483789">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      aber: zuf&#228;llige ID macht Objekt-builder <i>stateful</i>
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#f63025" DESTINATION="ID_791385927" ENDARROW="Default" ENDINCLINATION="142;6;" ID="Arrow_ID_1321696116" STARTARROW="None" STARTINCLINATION="7;68;"/>
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1541790451266" ID="ID_791385927" MODIFIED="1541790474148" TEXT="Problem auf dieser Ebene nicht l&#xf6;sbar">
<linktarget COLOR="#f63025" DESTINATION="ID_791385927" ENDARROW="Default" ENDINCLINATION="142;6;" ID="Arrow_ID_1321696116" SOURCE="ID_552609912" STARTARROW="None" STARTINCLINATION="7;68;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1541790539737" HGAP="19" ID="ID_620633727" MODIFIED="1553904293410" TEXT="explizit zu handhaben" VSHIFT="9">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node COLOR="#435e98" CREATED="1541790564379" ID="ID_1099820897" MODIFIED="1541790869503" TEXT="das Problem l&#xe4;&#xdf;t sich nicht implizit l&#xf6;sen">
<linktarget COLOR="#677dde" DESTINATION="ID_1099820897" ENDARROW="Default" ENDINCLINATION="-64;0;" ID="Arrow_ID_791650338" SOURCE="ID_1625379453" STARTARROW="None" STARTINCLINATION="18;42;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
<node CREATED="1541790588022" ID="ID_1242220321" MODIFIED="1541790627427" TEXT="Fazit: auf dem ETD-level ignorieren"/>
<node CREATED="1541790631410" ID="ID_1544767080" MODIFIED="1541790641506" TEXT="geh&#xf6;rt in den Domain-level"/>
<node CREATED="1541790656124" ID="ID_279205741" MODIFIED="1576282358019" TEXT="Domain-IDs eindeutig">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      das hei&#223;t.
    </p>
    <p>
      die Konstruktion des Domain-Modelles ist daf&#252;r zust&#228;ndig
    </p>
    <p>
      f&#252;r global eindeutige IDs an den relevanten Stellen zu sorgen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
<node COLOR="#338800" CREATED="1541790717726" ID="ID_1884395735" MODIFIED="1576282358019" TEXT="explizites Attribut-Binding">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...dem man eine EntryID geben kann
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1541790780342" ID="ID_683694576" MODIFIED="1541798900109" TEXT="DSL-Syntax">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1541790752619" ID="ID_826540621" MODIFIED="1541798905126" TEXT="in ETD-Objekt-Notation">
<node CREATED="1541791692837" ID="ID_1036110919" MODIFIED="1541791708256" TEXT="set() geht ohnehin schon mit GenNode-Argument">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1541791710149" ID="ID_1280894882" MODIFIED="1541798914030" TEXT="MakeRec().genNode(ID) erm&#xf6;glichen!">
<arrowlink COLOR="#71cbc9" DESTINATION="ID_80733797" ENDARROW="Default" ENDINCLINATION="49;1;" ID="Arrow_ID_237980791" STARTARROW="None" STARTINCLINATION="22;30;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1541790797595" ID="ID_80733797" MODIFIED="1541798902638" TEXT="f&#xfc;r SET / INS Diff-Verben">
<linktarget COLOR="#71cbc9" DESTINATION="ID_80733797" ENDARROW="Default" ENDINCLINATION="49;1;" ID="Arrow_ID_237980791" SOURCE="ID_1280894882" STARTARROW="None" STARTINCLINATION="22;30;"/>
</node>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1523021670034" FOLDED="true" ID="ID_1102842396" MODIFIED="1557498707234" TEXT="Einstiegspunkte">
<icon BUILTIN="idea"/>
<node CREATED="1523021679960" ID="ID_1386792927" MODIFIED="1557498707234">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      (GlobalCtx)-&gt;<b>InteractionDirector</b>&#160;(=Model Root)
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#435e98" CREATED="1538956606744" ID="ID_165150753" MODIFIED="1557498707234" TEXT="erwartete Modell-Struktur">
<linktarget COLOR="#919fc6" DESTINATION="ID_165150753" ENDARROW="Default" ENDINCLINATION="-902;329;" ID="Arrow_ID_651613049" SOURCE="ID_1996849782" STARTARROW="None" STARTINCLINATION="823;93;"/>
<linktarget COLOR="#919fc6" DESTINATION="ID_165150753" ENDARROW="Default" ENDINCLINATION="-641;482;" ID="Arrow_ID_593956858" SOURCE="ID_580392349" STARTARROW="None" STARTINCLINATION="1171;75;"/>
<linktarget COLOR="#3041c7" DESTINATION="ID_165150753" ENDARROW="Default" ENDINCLINATION="-3211;307;" ID="Arrow_ID_1316612875" SOURCE="ID_192625861" STARTARROW="None" STARTINCLINATION="-1533;0;"/>
<font BOLD="true" NAME="SansSerif" SIZE="13"/>
<icon BUILTIN="yes"/>
<node CREATED="1538956633404" ID="ID_266268175" MODIFIED="1557498707234" TEXT="Root">
<node CREATED="1538956680006" ID="ID_774059518" MODIFIED="1557498707234" TEXT="TODO Assets?"/>
<node CREATED="1538956635652" ID="ID_410609041" MODIFIED="1557498707234" TEXT="Sequence{Timeline}"/>
</node>
<node CREATED="1538956703435" ID="ID_275497582" MODIFIED="1557498707234" TEXT="Timeline">
<node CREATED="1538956945754" ID="ID_1216887436" MODIFIED="1557498707234" TEXT="&quot;name&quot;"/>
<node CREATED="1538956717369" ID="ID_21520084" MODIFIED="1560172967031" TEXT="&quot;fork&quot; = Track">
<arrowlink DESTINATION="ID_1319425167" ENDARROW="Default" ENDINCLINATION="-1;-52;" ID="Arrow_ID_1260691192" STARTARROW="None" STARTINCLINATION="-79;17;"/>
</node>
<node CREATED="1538956709026" ID="ID_326010297" MODIFIED="1557498707234" TEXT="Sequence{Marker}"/>
<node CREATED="1560686038649" ID="ID_1520503504" MODIFIED="1561827465326" TEXT="pinned overview Rulers">
<arrowlink COLOR="#337fe3" DESTINATION="ID_1443277448" ENDARROW="Default" ENDINCLINATION="-2069;0;" ID="Arrow_ID_934863827" STARTARROW="Default" STARTINCLINATION="-702;0;"/>
<linktarget COLOR="#486ebf" DESTINATION="ID_1520503504" ENDARROW="Default" ENDINCLINATION="-1384;0;" ID="Arrow_ID_312917871" SOURCE="ID_1236432450" STARTARROW="None" STARTINCLINATION="689;0;"/>
<node CREATED="1560686062574" ID="ID_250993855" MODIFIED="1560686076868" TEXT="Timecode und Marker-Anzeige"/>
<node CREATED="1560686051799" ID="ID_1555560276" MODIFIED="1560686061961" TEXT="auch bei vertikalem Scrolling immer sichtbar"/>
<node COLOR="#435e98" CREATED="1560686078237" ID="ID_833522619" MODIFIED="1560686305545" TEXT="definiert durch Ruler des top-Level-Track">
<arrowlink COLOR="#8da0b6" DESTINATION="ID_1083901292" ENDARROW="Default" ENDINCLINATION="-248;-59;" ID="Arrow_ID_1788513078" STARTARROW="None" STARTINCLINATION="-133;-6;"/>
<icon BUILTIN="forward"/>
</node>
</node>
</node>
<node CREATED="1538956769298" ID="ID_1319425167" MODIFIED="1560172967031" TEXT="Track">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1319425167" ENDARROW="Default" ENDINCLINATION="-1;-52;" ID="Arrow_ID_1260691192" SOURCE="ID_21520084" STARTARROW="None" STARTINCLINATION="-79;17;"/>
<node CREATED="1538956775249" ID="ID_1811758034" MODIFIED="1557498707234" TEXT="Sequence{Track}">
<node CREATED="1538957049292" ID="ID_1618683787" MODIFIED="1557498707234" TEXT="if typeID = &quot;Fork&quot;"/>
<node CREATED="1544846114433" ID="ID_1306886572" MODIFIED="1557498707234" TEXT="die Sub-Tracks">
<icon BUILTIN="info"/>
</node>
</node>
<node CREATED="1538956796214" ID="ID_337674261" MODIFIED="1557498707234" TEXT="Sequence{Clip}">
<node CREATED="1538957049292" ID="ID_100537539" MODIFIED="1557498707234" TEXT="if typeID = &quot;Clip&quot;"/>
</node>
<node CREATED="1538956802701" ID="ID_840384156" MODIFIED="1557498707234" TEXT="Sequence{Marker}">
<node CREATED="1538957049292" ID="ID_1955645432" MODIFIED="1557498707234" TEXT="if typeID = &quot;Marker&quot;"/>
</node>
<node CREATED="1544839585279" ID="ID_1083901292" MODIFIED="1560686299759" TEXT="Sequence{Ruler}">
<arrowlink DESTINATION="ID_433238862" ENDARROW="Default" ENDINCLINATION="-37;-96;" ID="Arrow_ID_472987279" STARTARROW="None" STARTINCLINATION="-69;14;"/>
<linktarget COLOR="#5f84b0" DESTINATION="ID_1083901292" ENDARROW="Default" ENDINCLINATION="-746;-75;" ID="Arrow_ID_1167484185" SOURCE="ID_43593052" STARTARROW="None" STARTINCLINATION="-981;0;"/>
<linktarget COLOR="#8da0b6" DESTINATION="ID_1083901292" ENDARROW="Default" ENDINCLINATION="-248;-59;" ID="Arrow_ID_1788513078" SOURCE="ID_833522619" STARTARROW="None" STARTINCLINATION="-133;-6;"/>
<node CREATED="1544846037083" ID="ID_667362504" MODIFIED="1557498707234" TEXT="if typeID = &quot;Ruler&quot;"/>
<node CREATED="1544846062288" ID="ID_855083299" MODIFIED="1557498707234" TEXT="storage direkt (nested) im TrackBody"/>
</node>
</node>
<node CREATED="1538956769298" ID="ID_721666986" MODIFIED="1557498707234" TEXT="Clip">
<node CREATED="1538956775249" ID="ID_1108737612" MODIFIED="1557498707234" TEXT="Sequence{Channel}">
<node CREATED="1538957049292" ID="ID_977385993" MODIFIED="1557498707234" TEXT="if typeID = &quot;Channel&quot;"/>
</node>
<node CREATED="1538956796214" ID="ID_698134552" MODIFIED="1557498707234" TEXT="Sequence{Effect}">
<node CREATED="1538957049292" ID="ID_339553268" MODIFIED="1557498707234" TEXT="if typeID = &quot;Effect&quot;"/>
</node>
<node CREATED="1538956802701" ID="ID_1715846940" MODIFIED="1557498707234" TEXT="Sequence{Marker}">
<node CREATED="1538957049292" ID="ID_98299428" MODIFIED="1557498707234" TEXT="if typeID = &quot;Marker&quot;"/>
</node>
<node CREATED="1612027392040" ID="ID_319683499" MODIFIED="1612027448852" TEXT="&quot;timing&quot; &#x2254; TimeSpan{start, len}">
<node CREATED="1612027460343" ID="ID_1526970445" MODIFIED="1612027635585" TEXT="Attribut soll bereits bei Konstruktion mitgegeben werden">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      aus Performance-Gr&#252;nden.
    </p>
    <p>
      Weil dann sofort bei ins(clip) == Konstruktion ein ClipDelegate vom Typ ClipWidget erzeugt, und in den GTK-Canvas geheftet wird.&#160;&#160;Andernfalls w&#252;rde erst ein DormantClip erzeugt, der dann erst sp&#228;ter, wenn das timing-Attribut gesetzt wird, sich in ein ClipWidget verwandelt. Das w&#228;re dann im Normalfall eine zus&#228;tzliche, unn&#246;tige Allokation
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1612027475574" ID="ID_1569710848" MODIFIED="1612027531925" TEXT="es wird aber toleriert, wenn es fehlt">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1612027485908" ID="ID_592528621" MODIFIED="1612029020769" TEXT="start == Time::NEVER &#x27f9; Clip im Anzeige-Modus &quot;Pending&quot;">
<arrowlink COLOR="#4663c4" DESTINATION="ID_619535893" ENDARROW="Default" ENDINCLINATION="-1983;81;" ID="Arrow_ID_309098301" STARTARROW="None" STARTINCLINATION="631;32;"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1665966764677" ID="ID_865599543" MODIFIED="1665968944066" TEXT="L&#xf6;sung gesucht: (Medien)Typ des Clip">
<arrowlink COLOR="#bb4f76" DESTINATION="ID_1632230778" ENDARROW="Default" ENDINCLINATION="-986;67;" ID="Arrow_ID_1432405411" STARTARROW="None" STARTINCLINATION="-1713;-126;"/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1665968738638" ID="ID_1311831391" MODIFIED="1665968767871" TEXT="Problem: Abweichung vom generischen diff-Format">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      schon analog zu dem, was wir hier mit dem &quot;timing&quot; machen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1665968772935" ID="ID_1301845480" MODIFIED="1665968805850" TEXT="andererseits: ohne diese Info k&#xf6;nnen wir das Widget gar nicht richtig konstruieren">
<icon BUILTIN="broken-line"/>
</node>
</node>
<node CREATED="1612027454614" ID="ID_210949800" MODIFIED="1612027457315" TEXT="&quot;name&quot;"/>
</node>
<node CREATED="1544840312839" ID="ID_433238862" MODIFIED="1560173044668" TEXT="Ruler">
<linktarget COLOR="#3e63c5" DESTINATION="ID_433238862" ENDARROW="Default" ENDINCLINATION="-612;-125;" ID="Arrow_ID_1858329997" SOURCE="ID_1391546845" STARTARROW="None" STARTINCLINATION="-747;0;"/>
<linktarget COLOR="#a9b4c1" DESTINATION="ID_433238862" ENDARROW="Default" ENDINCLINATION="-37;-96;" ID="Arrow_ID_472987279" SOURCE="ID_1083901292" STARTARROW="None" STARTINCLINATION="-69;14;"/>
<node CREATED="1544840455429" ID="ID_1283986005" MODIFIED="1557498707234" TEXT="&quot;timecode&quot; = formatID"/>
<node CREATED="1544840496225" ID="ID_230755841" MODIFIED="1557498707234" TEXT="&quot;contentFormat&quot; = formatID (none|pivot|frames|wave|synopsis)"/>
<node CREATED="1544840634822" ID="ID_1138129422" MODIFIED="1557498707234" TEXT="Sequence{Marker.kind}">
<node CREATED="1544840669032" ID="ID_1798049608" MODIFIED="1557498707234" TEXT="what kinds of markers and selections to render"/>
</node>
</node>
<node CREATED="1538957120867" ID="ID_99923131" MODIFIED="1557498707234" TEXT="Marker">
<node CREATED="1538956945754" ID="ID_30162898" MODIFIED="1557498707234" TEXT="&quot;name&quot;"/>
<node CREATED="1538956945754" ID="ID_39934842" MODIFIED="1557498707234" TEXT="&quot;kind&quot; = LOOP|MARK"/>
</node>
<node CREATED="1538956606744" ID="ID_388585037" MODIFIED="1557498707234" TEXT="Placement">
<linktarget COLOR="#919fc6" DESTINATION="ID_388585037" ENDARROW="None" ENDINCLINATION="-682;462;" ID="Arrow_ID_726807054" SOURCE="ID_1483911882" STARTARROW="Default" STARTINCLINATION="638;-81;"/>
</node>
</node>
</node>
<node CREATED="1523019349923" ID="ID_353542665" MODIFIED="1557498707234" TEXT="UI-Koordinaten (UICoord)">
<node CREATED="1523019476817" ID="ID_1756924881" MODIFIED="1557498707234" TEXT="abstrahierte UI-Topologie">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="info"/>
</node>
<node CREATED="1523021751558" ID="ID_816148300" MODIFIED="1557498707234" TEXT="Einstiegspunkte">
<icon BUILTIN="idea"/>
<node CREATED="1523020094460" ID="ID_950968515" MODIFIED="1557498707234">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      (GlobalCtx)-&gt;InteractionDirector-&gt;<b>Navigator</b>
    </p>
  </body>
</html></richcontent>
<node CREATED="1523021779698" ID="ID_1153977477" MODIFIED="1557498707234" TEXT="erforschen der aktuellen Topologie"/>
<node CREATED="1523021791784" ID="ID_1683105699" MODIFIED="1557498707234" TEXT="Navigation von einem Punkt weg"/>
</node>
<node CREATED="1523019770144" ID="ID_385008471" MODIFIED="1557498707234">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      (GlobalCtx)-&gt;WindowLocator-&gt;<b>UIComponentAccessor</b>
    </p>
  </body>
</html></richcontent>
<node CREATED="1523021816637" ID="ID_217124542" MODIFIED="1557498707234" TEXT="Element zu gegebenen Koordinaten"/>
</node>
</node>
</node>
<node CREATED="1523019393893" ID="ID_1642953007" MODIFIED="1557498707234" TEXT="Component View">
<node CREATED="1523019457868" ID="ID_1319307429" MODIFIED="1557498707234" TEXT="Menge relevanter Entit&#xe4;ten">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="info"/>
<node CREATED="1523021612818" ID="ID_366179512" MODIFIED="1557498707234" TEXT="Per Konvention festgelegt">
<node CREATED="1523022525819" ID="ID_1844877136" MODIFIED="1557498707234" TEXT="ViewSpec-DSL">
<arrowlink COLOR="#6a8499" DESTINATION="ID_1442345755" ENDARROW="Default" ENDINCLINATION="-1029;85;" ID="Arrow_ID_1191206769" STARTARROW="None" STARTINCLINATION="426;-63;"/>
<icon BUILTIN="forward"/>
</node>
</node>
<node CREATED="1523021634614" ID="ID_1226976079" MODIFIED="1557498707234" TEXT="flacher Namensraum"/>
<node CREATED="1523021642573" ID="ID_488343933" MODIFIED="1557498707234" TEXT="komplett von ihrem Ort abstrahiert"/>
</node>
<node CREATED="1523020082453" ID="ID_1678299024" MODIFIED="1557498707234" TEXT="Einstiegspunkte">
<icon BUILTIN="idea"/>
<node CREATED="1523020094460" ID="ID_970478590" MODIFIED="1557498707234">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      (GlobalCtx)-&gt;InteractionDirector-&gt;<b>ViewLocator</b>
    </p>
  </body>
</html></richcontent>
<node CREATED="1523021575831" ID="ID_952406415" MODIFIED="1557498707234" TEXT="findet oder belegt"/>
<node CREATED="1523021593460" ID="ID_565564905" MODIFIED="1557498707234" TEXT="Prinzip: ein St&#xfc;ck vom Typ XYZ"/>
</node>
<node CREATED="1523019770144" ID="ID_435980488" MODIFIED="1557498707234">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      (GlobalCtx)-&gt;WindowLocator-&gt;<b>UIComponentAccessor</b>
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#48678b" DESTINATION="ID_435980488" ENDARROW="Default" ENDINCLINATION="-1768;-2819;" ID="Arrow_ID_689216354" SOURCE="ID_1224438713" STARTARROW="Default" STARTINCLINATION="309;919;"/>
<node CREATED="1523020311838" ID="ID_807452449" MODIFIED="1557498707234" TEXT="Bindeglied">
<node CREATED="1523020317117" ID="ID_1026544092" MODIFIED="1557498707234" TEXT="UI-Koordinaten"/>
<node CREATED="1523020328651" ID="ID_1384216871" MODIFIED="1557498707234" TEXT="Component Views"/>
<node CREATED="1523020334770" ID="ID_446983517" MODIFIED="1557498707235" TEXT="konkrete Widgets"/>
</node>
</node>
</node>
</node>
<node CREATED="1523019409939" ID="ID_13197399" MODIFIED="1557498707235" TEXT="Fenster - Panel - Widget">
<node CREATED="1523019435095" ID="ID_1087922610" MODIFIED="1557498707235" TEXT="die nat&#xfc;rliche Ordnung">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="info"/>
<node CREATED="1523019528770" ID="ID_880857626" MODIFIED="1557498707235" TEXT="der real existierende konkrete Inhalt des UI"/>
<node CREATED="1523019583242" ID="ID_1200584395" MODIFIED="1557498707235" TEXT="ein Wildwuchs an nativen Komponenten"/>
<node CREATED="1523019593833" ID="ID_770462134" MODIFIED="1557498707235" TEXT="ausschlie&#xdf;lich an das UI-Toolkit gebunden"/>
<node CREATED="1523019635739" ID="ID_883974404" MODIFIED="1576282358018" TEXT="Einzelfall-Wissen vorausgesetzt">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      man mu&#223; die Implementierungs-Details <i>jeder einzelnen Komponente</i>&#160;kennen,
    </p>
    <p>
      um damit &#252;berhaupt etwas anfangen zu k&#246;nnen. Es gibt hier keine schematische Ordnung.
    </p>
    <p>
      Selbst die Frage, ob es sich um ein Blatt handelt, oder um einen inneren Knoten,
    </p>
    <p>
      erfordert bereits Kenntnis der Innereien
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1523019753259" ID="ID_281223690" MODIFIED="1557498707235" TEXT="Einstiegspunkte">
<icon BUILTIN="idea"/>
<node CREATED="1523019770144" ID="ID_253563802" MODIFIED="1557498707235">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      (GlobalCtx)-&gt;<b>WindowLocator</b>
    </p>
  </body>
</html></richcontent>
<node CREATED="1523019793861" ID="ID_656158432" MODIFIED="1557498707235" TEXT="f&#xfc;r die top-level WorkspaceWindows"/>
<node CREATED="1523019808196" ID="ID_674258018" MODIFIED="1557498707235" TEXT="kann diese erzeugen und zerst&#xf6;ren"/>
</node>
<node CREATED="1523019770144" ID="ID_1782262126" MODIFIED="1557498707235">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      (GlobalCtx)-&gt;WindowLocator-&gt;<b>PanelLocator</b>
    </p>
  </body>
</html></richcontent>
<node CREATED="1523019918268" ID="ID_830201534" MODIFIED="1557498707235" TEXT="Zugang zu einzelnen docking-Panels"/>
<node CREATED="1523019928387" ID="ID_928262089" MODIFIED="1557498707235" TEXT="jedes Fenster hat eignen PanelManager">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
<node CREATED="1523019972924" ID="ID_1402741681" MODIFIED="1557498707235" TEXT="Grundbausteine">
<node CREATED="1523019978236" ID="ID_103533434" MODIFIED="1557498707235" TEXT="GTK-Container"/>
<node CREATED="1523019982331" ID="ID_533152750" MODIFIED="1557498707235" TEXT="Widget"/>
</node>
</node>
<node CREATED="1664668670633" ID="ID_281557130" MODIFIED="1664668687274" TEXT="CSS-Schema f&#xfc;r das Lumiera-GTK-UI">
<linktarget COLOR="#8b1d60" DESTINATION="ID_281557130" ENDARROW="Default" ENDINCLINATION="-986;-81;" ID="Arrow_ID_1840161927" SOURCE="ID_529832770" STARTARROW="None" STARTINCLINATION="-625;67;"/>
<node CREATED="1664668701652" ID="ID_1339380234" MODIFIED="1664668992057" TEXT="Einrichtung durch den UI-Manager">
<arrowlink COLOR="#4369a6" DESTINATION="ID_280366952" ENDARROW="Default" ENDINCLINATION="-566;432;" ID="Arrow_ID_1332353653" STARTARROW="None" STARTINCLINATION="-931;-99;"/>
<icon BUILTIN="info"/>
<node CREATED="1664669003788" ID="ID_1496995299" MODIFIED="1664669012883" TEXT="laden der Applicaton Style-Sheet(s)"/>
<node CREATED="1664669017642" ID="ID_1750503334" MODIFIED="1664669048777" TEXT="synthetische CSS-Pfade f&#xfc;r generische (Timeline)-Styles"/>
</node>
<node CREATED="1664669065764" ID="ID_1839743760" LINK="#ID_417783849" MODIFIED="1664669180575" TEXT="CSS-Style-Konventionen">
<icon BUILTIN="yes"/>
<node CREATED="1664669186884" ID="ID_458273565" MODIFIED="1664669799291" TEXT="BEM-Notation sinnvoll verwenden">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      block[__element][--modifier]
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
<node CREATED="1664669206239" ID="ID_419151463" MODIFIED="1664669277092" TEXT="nicht &#xfc;bertreiben...">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Hier besteht die Gefahr, das Stylesheet mit redundanten Definitionen zu fluten!<br />Die BEM-Notation ist sinnvoll, insodern sie die <b>intendierte Bedeutung</b>&#160;einer Klasse klar macht
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1664669329825" ID="ID_1131035647" MODIFIED="1664669851599" TEXT="erlaubt Styling relativ zu einem Ankerpunkt">
<linktarget COLOR="#4482cb" DESTINATION="ID_1131035647" ENDARROW="Default" ENDINCLINATION="1109;-797;" ID="Arrow_ID_860130995" SOURCE="ID_1102642211" STARTARROW="None" STARTINCLINATION="394;586;"/>
</node>
<node CREATED="1664669415850" ID="ID_550535214" MODIFIED="1664669442209">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      f&#252;r <i>wirklich generische </i>Styles sollte man generische Klassen schaffen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1664669349154" ID="ID_1203947734" MODIFIED="1664669365231" TEXT="anwenden f&#xfc;r frei kombinierbare Bausteine">
<icon BUILTIN="idea"/>
<node CREATED="1664669376402" ID="ID_1053064636" MODIFIED="1664669383965" TEXT="Ziel: flache Regels&#xe4;tze"/>
<node CREATED="1664669384622" ID="ID_1136788054" MODIFIED="1664669404794" TEXT="Gefahr: nicht zu sehr mit Hierarchie mischen"/>
</node>
</node>
<node CREATED="1664669483004" ID="ID_67069452" MODIFIED="1664669501696" TEXT="Element-IDs zur Erg&#xe4;nzung der (Widget)-Klassen">
<node CREATED="1664669510416" ID="ID_407846931" MODIFIED="1664669525650" TEXT="da wir nicht ohne Weiteres custom-Widget-Klassen schaffen k&#xf6;nnen"/>
<node CREATED="1664669526998" ID="ID_692508044" MODIFIED="1664669597733">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      dann immer besser noch ein: <font face="Monospaced" color="#3006cf">frame#element</font>
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node CREATED="1678576343977" ID="ID_943672117" MODIFIED="1678576356597" TEXT="Konkret / speziell">
<node CREATED="1678576366604" ID="ID_1232986902" MODIFIED="1678576571070" TEXT="CSS-Schema zum Styling der Timeline">
<linktarget COLOR="#5f7783" DESTINATION="ID_1232986902" ENDARROW="Default" ENDINCLINATION="2218;-176;" ID="Arrow_ID_691307229" SOURCE="ID_650016552" STARTARROW="None" STARTINCLINATION="7697;843;"/>
<linktarget COLOR="#5f7783" DESTINATION="ID_1232986902" ENDARROW="Default" ENDINCLINATION="2218;-176;" ID="Arrow_ID_1708948555" SOURCE="ID_1568473205" STARTARROW="None" STARTINCLINATION="4285;319;"/>
<node CREATED="1679153039883" ID="ID_1200037530" MODIFIED="1679153044485" TEXT="light-theme-complement">
<node CREATED="1679153131574" ID="ID_94246546" MODIFIED="1679153138259" TEXT="@define-color">
<node CREATED="1679153145084" ID="ID_1658648144" MODIFIED="1679153149322" TEXT="lum_light">
<node CREATED="1679153164528" ID="ID_989833472" MODIFIED="1679153174252" TEXT="ivory + 0.2 alpha"/>
</node>
<node CREATED="1679153150171" ID="ID_746267827" MODIFIED="1679153154086" TEXT="lum_shade">
<node CREATED="1679153186788" ID="ID_660192995" MODIFIED="1679153194978" TEXT="conrsilk abgedunkelt + 0.15 alpha"/>
</node>
</node>
<node CREATED="1679153046735" ID="ID_210074374" MODIFIED="1679153052066" TEXT="Fork">
<node CREATED="1679153200733" ID="ID_333838761" MODIFIED="1679153213700" TEXT="nur inset box-shadow, als Alpha-overlay"/>
</node>
<node CREATED="1679153052705" ID="ID_1740941248" MODIFIED="1679153054572" TEXT="Ruler">
<node CREATED="1679153061488" ID="ID_233346374" LINK="#ID_555799552" MODIFIED="1679153102530" TEXT="verwende die @theme_bg_color"/>
</node>
<node CREATED="1679153055256" ID="ID_1629759220" MODIFIED="1679153056748" TEXT="Slope">
<node CREATED="1679153216817" ID="ID_1774634395" MODIFIED="1679153229573" TEXT="baut ebenfalls auf @lum_light | @lum_shade auf"/>
</node>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#fefc4e" COLOR="#351d75" CREATED="1448070545132" HGAP="31" ID="ID_1410368513" MODIFIED="1557498707235" TEXT="Element" VSHIFT="-7">
<font BOLD="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="idea"/>
<node CREATED="1448070580927" ID="ID_467382299" MODIFIED="1557498707235" TEXT="Auspr&#xe4;gungen" VSHIFT="18">
<node CREATED="1448070554963" ID="ID_579919554" MODIFIED="1557498707235" TEXT="Widget"/>
<node CREATED="1448070559466" ID="ID_182430638" MODIFIED="1557498707235" TEXT="Controller"/>
</node>
<node CREATED="1448070583679" HGAP="69" ID="ID_1248152908" MODIFIED="1557498707235" TEXT="Protokoll" VSHIFT="-1">
<node CREATED="1448078263344" FOLDED="true" ID="ID_1136748666" MODIFIED="1582388511425" TEXT="Verhaltensweisen">
<cloud COLOR="#e0d6ba"/>
<icon BUILTIN="info"/>
<node CREATED="1448078268223" ID="ID_1027574047" MODIFIED="1518487921085" TEXT="Lebenszyklus">
<node CREATED="1448078450375" ID="ID_459686936" MODIFIED="1576282358017" TEXT="zeugen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      hei&#223;t: Element registriert sich am UI-Bus
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1448078473068" ID="ID_510866826" MODIFIED="1576282358017" TEXT="zerst&#xf6;ren">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      hei&#223;t: Element deregistriert sich am UI-Bus
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1448078308690" ID="ID_185716114" MODIFIED="1518487921085" TEXT="Aktionen">
<node CREATED="1448078344541" ID="ID_1781183546" MODIFIED="1576282358016" TEXT="Subjekt einer Aktion">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...ist <i>immer</i>&#160;ein <b>tangible</b>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1448078516094" ID="ID_201691188" MODIFIED="1518487921085" TEXT="Commands"/>
<node CREATED="1448078325679" ID="ID_946047770" MODIFIED="1518487921085" TEXT="tweaks"/>
</node>
<node CREATED="1448078330703" ID="ID_1955501343" MODIFIED="1518487921085">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      presentation
    </p>
    <p>
      state
    </p>
  </body>
</html></richcontent>
<node CREATED="1448078381288" ID="ID_1570425925" MODIFIED="1518487921085" TEXT="state mark">
<node CREATED="1448078528725" ID="ID_1776152068" MODIFIED="1518487921085">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      vom <i>tangible </i>initiiert
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1448078554385" ID="ID_181795198" MODIFIED="1518487921085" TEXT="wird zur&#xfc;ckgespielt"/>
<node CREATED="1448078678961" ID="ID_1905336344" MODIFIED="1518487921085" TEXT="Arten">
<node CREATED="1448078682840" ID="ID_1545251839" MODIFIED="1518487921085" TEXT="zoom"/>
<node CREATED="1448078687176" ID="ID_357365613" MODIFIED="1518487921085" TEXT="scroll"/>
<node CREATED="1448078691727" ID="ID_1874307716" MODIFIED="1518487921085" TEXT="expand"/>
<node CREATED="1448078703294" ID="ID_784991533" MODIFIED="1518487921085" TEXT="Form"/>
</node>
</node>
<node CREATED="1448078385504" ID="ID_584410725" MODIFIED="1518487921085" TEXT="feedback">
<node CREATED="1448078569263" ID="ID_906985390" MODIFIED="1518487921085" TEXT="in Fokus bringen"/>
<node CREATED="1448078589997" ID="ID_1779705374" MODIFIED="1518487921085" TEXT="aufblitzen"/>
<node CREATED="1448078604115" ID="ID_666512041" MODIFIED="1518487921085" TEXT="Warn-Nachricht"/>
<node CREATED="1448078622048" ID="ID_1858518915" MODIFIED="1518487921085" TEXT="Fehler"/>
</node>
<node CREATED="1448078416612" ID="ID_1392022084" MODIFIED="1518487921085" TEXT="state reset">
<node CREATED="1448078722483" ID="ID_1661890520" MODIFIED="1518487921085" TEXT="auf default!">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1448078731130" ID="ID_1682515267" MODIFIED="1576282358016" TEXT="collapse / expand">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      daf&#252;r gen&#252;gt der normale Reset
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1448078748448" ID="ID_1000763850" MODIFIED="1576282358015" TEXT="Nachrichten l&#xf6;schen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      mark &quot;clearMsg&quot;
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1448078778916" ID="ID_1657108949" MODIFIED="1576282358015" TEXT="Fehler l&#xf6;schen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      mark &quot;clearErr&quot;
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1448078798369" ID="ID_819750758" MODIFIED="1576282358014" TEXT="komplett-Reset">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      mark &quot;reset&quot;
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node CREATED="1448078425594" ID="ID_686619553" MODIFIED="1518487921085" TEXT="Mutation">
<icon BUILTIN="pencil"/>
<node CREATED="1448078811895" ID="ID_1266803050" MODIFIED="1518487921085">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Nachricht an <i>irgend ein</i>&#160;Wurzel-Element
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1448078835044" ID="ID_358413966" MODIFIED="1518487921085" TEXT="bezieht daraufhin einen Diff"/>
<node CREATED="1448078845419" ID="ID_189415188" MODIFIED="1518487921085" TEXT="wendet diesen rekursiv an"/>
<node CREATED="1448078856722" ID="ID_1770248185" MODIFIED="1518487921085" TEXT="Hinweis: kann Kinder zeugen und zerst&#xf6;ren"/>
</node>
</node>
</node>
<node CREATED="1448658633478" FOLDED="true" HGAP="99" ID="ID_314439240" MODIFIED="1582388681066" TEXT="Design" VSHIFT="13">
<font NAME="SansSerif" SIZE="13"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1448658692023" FOLDED="true" ID="ID_339186676" MODIFIED="1582388523994">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      generisch
    </p>
    <p>
      sinnvoll?
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      was haben alle UI-Elemente wirklich gemeinsam?
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="help"/>
<node CREATED="1448658692023" ID="ID_888978058" MODIFIED="1576282358013" TEXT="generische Commands">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      die Frage ist, wie generisch ist eigentlich ein Command-Aufruf selber?
    </p>
    <p>
      Macht es daher Sinn, ein generisches API allgemein sichtbar zu machen,
    </p>
    <p>
      oder handelt es sich nur um ein Implementierungsdetail der UI-Bus-Anbindung?
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="help"/>
<node CREATED="1448659456882" ID="ID_946761955" MODIFIED="1518487921085" TEXT="Notwendig: Command-Name + Varargs"/>
<node CREATED="1451093919426" ID="ID_56876272" MODIFIED="1518487921085" TEXT="generisch impliziert auch zentrale Definition">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1451093994135" ID="ID_1002329025" MODIFIED="1518487921085">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...wird sinnvoll im Rahmen von <font color="#8e11a1">InteractionControl</font>
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#b567c4" DESTINATION="ID_1009169288" ENDARROW="Default" ENDINCLINATION="254;0;" ID="Arrow_ID_200182911" STARTARROW="None" STARTINCLINATION="162;0;"/>
</node>
</node>
<node CREATED="1448659723879" ID="ID_197701429" MODIFIED="1518487921085" TEXT="UI-Grundverhalten">
<node CREATED="1448659735557" ID="ID_1553949303" MODIFIED="1518487921086" TEXT="Falten / Expandieren"/>
<node CREATED="1448659747476" ID="ID_1549415142" MODIFIED="1518487921086" TEXT="Grad der Explizitheit"/>
<node CREATED="1448659757378" ID="ID_1164836827" MODIFIED="1518487921086" TEXT="in Sicht bringen"/>
<node CREATED="1448659780743" ID="ID_1787132400" MODIFIED="1518487921086" TEXT="Fokus-Management"/>
<node CREATED="1448659792782" ID="ID_1547056651" MODIFIED="1518487921086" TEXT="r&#xe4;umliche Navigation"/>
<node CREATED="1448659824337" ID="ID_1734858009" MODIFIED="1518487921086" TEXT="Markierungen"/>
</node>
<node CREATED="1455236472002" HGAP="49" ID="ID_952544600" MODIFIED="1561827465351" TEXT="generische Eigenschaften" VSHIFT="15">
<icon BUILTIN="button_cancel"/>
<node CREATED="1455236491432" ID="ID_1268644179" MODIFIED="1518487921086" TEXT="Idee">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1455236501719" HGAP="35" ID="ID_540888754" MODIFIED="1518487921086" TEXT="man k&#xf6;nnte Eigenschaften konfigurieren" VSHIFT="2"/>
<node CREATED="1455236512373" ID="ID_211355731" MODIFIED="1518487921086" TEXT="jede Eigenschaft h&#xe4;tte">
<node CREATED="1455236519677" ID="ID_1698754255" MODIFIED="1518487921086" TEXT="Namen"/>
<node CREATED="1455236522020" ID="ID_404018073" MODIFIED="1518487921086" TEXT="slot"/>
<node CREATED="1455236527443" ID="ID_45035009" MODIFIED="1518487921086" TEXT="passende &#xbb;state mark&#xab;"/>
<node CREATED="1455236537802" ID="ID_1419063243" MODIFIED="1518487921086" TEXT="handler-funktor"/>
<node CREATED="1455236554927" ID="ID_772542993" MODIFIED="1518487921086" TEXT="installiert sich in generischen handler"/>
</node>
<node CREATED="1455236573173" HGAP="72" ID="ID_466911779" MODIFIED="1518487921086" TEXT="Bewertung" VSHIFT="16">
<icon BUILTIN="yes"/>
<node CREATED="1455236781242" ID="ID_674694140" MODIFIED="1518487921086" TEXT="k&#xf6;nnte interessant sein f&#xfc;r Diff"/>
<node CREATED="1455236788424" ID="ID_1507269502" MODIFIED="1576282358013" TEXT="aber gegen das Grundkonzept">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ich wollte explizit kein generisch-introspektives UI,
    </p>
    <p>
      weil das die Tendenz hat, sich zu einem Framework auszuwachsen.
    </p>
    <p>
      F&#252;r die UI-Programmierung mu&#223; man Spaghetticode akzeptieren.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1455236851592" ID="ID_1599276883" MODIFIED="1518487921086" TEXT="YAGNI">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1455236869405" ID="ID_1141383110" MODIFIED="1518487921086" TEXT="sp&#xe4;ter">
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
</node>
<node CREATED="1541546692289" ID="ID_189279804" MODIFIED="1541546864673">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <b>Identit&#228;t</b>&#160;== Bus-ID
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#7894b4" DESTINATION="ID_189279804" ENDARROW="Default" ENDINCLINATION="272;-358;" ID="Arrow_ID_540125984" SOURCE="ID_1585676322" STARTARROW="None" STARTINCLINATION="-618;10;"/>
<node CREATED="1541546715849" ID="ID_503690063" MODIFIED="1541546722489" TEXT="sollte global eindeutig sein"/>
<node CREATED="1541546733765" ID="ID_1010323480" MODIFIED="1541546741208" TEXT="wird per Diff &#xfc;bermittelt"/>
</node>
<node CREATED="1448658696638" ID="ID_1235910089" MODIFIED="1518487921086" TEXT="slots">
<node CREATED="1451177440022" ID="ID_1603816152" MODIFIED="1518487921086" TEXT="expand">
<icon BUILTIN="button_ok"/>
<node CREATED="1451177449405" ID="ID_215708646" MODIFIED="1518487921086" TEXT="zun&#xe4;chst einfach auf/zu"/>
<node CREATED="1451177459667" ID="ID_1151970636" MODIFIED="1576282358012" TEXT="wird m&#xf6;glicherweise eine Enum">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      gemeint, eine ENUM von verschiedenen Graden der Aufgeklappt-heit
    </p>
    <p>
      Dann mu&#223;te das allerdigns jeweils f&#252;r alle Elemente sinnvoll sein
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1451177534345" ID="ID_524388510" MODIFIED="1518487921086" TEXT="impl">
<node CREATED="1451177542256" ID="ID_980888532" MODIFIED="1576282358012" TEXT="ruft einen konkreten hook doExpand() auf">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      und der mu&#223; vom konkreten Widget implementiert werden
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1451177573108" ID="ID_1154342108" MODIFIED="1518487921086" TEXT="wenn dieser true zur&#xfc;ckgibt, ist der Zustand persistent"/>
<node CREATED="1451177584435" ID="ID_1792154974" MODIFIED="1518487921086">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      dann wird eine <i>state mark</i>&#160;ausgesendet
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node CREATED="1451177442861" ID="ID_1257047796" MODIFIED="1518487921086" TEXT="reveal">
<icon BUILTIN="smily_bad"/>
<node CREATED="1451177636388" ID="ID_507693817" MODIFIED="1518487921086" TEXT="&quot;bringe dies Element in Sicht&quot;">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1451177626773" ID="ID_612921051" MODIFIED="1518487921086" TEXT="ist das eine gute Idee">
<icon BUILTIN="help"/>
</node>
<node CREATED="1451177659369" ID="ID_928484705" MODIFIED="1518487921086">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      need to <i>bubble up</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1451177719577" ID="ID_1175980404" MODIFIED="1518487921086" TEXT="wie finde ich den Vater..."/>
<node CREATED="1455236368345" ID="ID_1490676072" MODIFIED="1518487921086" TEXT="besser">
<icon BUILTIN="yes"/>
<node CREATED="1455236382183" ID="ID_983670310" MODIFIED="1518487921086" TEXT="Einstiegspunkt: revealYourself"/>
<node CREATED="1455236393861" ID="ID_1638665625" MODIFIED="1518487921086">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      support ist <i>optional</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1455236418290" ID="ID_1765760054" MODIFIED="1518487921086" TEXT="dieses ruft parent.reveal(myID)"/>
</node>
</node>
</node>
<node CREATED="1535639028984" FOLDED="true" ID="ID_316446199" MODIFIED="1582388552498" TEXT="hilfs-Abstraktionen">
<linktarget COLOR="#709eaf" DESTINATION="ID_316446199" ENDARROW="Default" ENDINCLINATION="-354;-490;" ID="Arrow_ID_1105268233" SOURCE="ID_447101734" STARTARROW="None" STARTINCLINATION="-3385;0;"/>
<node CREATED="1535639151330" ID="ID_301022990" MODIFIED="1535639159958" TEXT="mix-in">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1535639038857" ID="ID_978884512" MODIFIED="1535639051322" TEXT="erm&#xf6;glichen generische Implementierung">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1535639052671" ID="ID_1134562624" MODIFIED="1535639073976" TEXT="Expander">
<node CREATED="1535639110104" ID="ID_712715565" MODIFIED="1535639113355" TEXT="bool-Testbar"/>
<node CREATED="1535725570140" ID="ID_39824556" MODIFIED="1535725586590" TEXT="canExpand()"/>
<node CREATED="1535639114727" ID="ID_1791716176" MODIFIED="1535725472597" TEXT="Funktions-Operator(bool expand)"/>
</node>
<node CREATED="1535639174623" ID="ID_1755607605" MODIFIED="1535639177466" TEXT="Revealer">
<node CREATED="1535639368981" ID="ID_220149026" MODIFIED="1576282358011">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <i>nicht</i>&#160;bool-Testbar
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ganz bewu&#223;t verzichten wir darauf,
    </p>
    <p>
      festzustellen, ob ein Kind gegenw&#228;rtig zug&#228;nglich (revealed) ist.
    </p>
    <p>
      Denn dies auf dem API zu exponieren bringt keinen Mehrwehrt.
    </p>
    <p>
      Letztlich ist das ein lokales Detail des Layout-Managers.
    </p>
    <p>
      
    </p>
    <p>
      Es ist nicht Sache des client-Codes, auf einem Widget ein anderes Verhalten auszul&#246;sen,
    </p>
    <p>
      wenn es nicht sichtbar ist. Denn Sichtbarkeit geh&#246;rt zur UI-Mechanik und geht den Client nix an
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1535725591561" ID="ID_1362809449" MODIFIED="1535725594837" TEXT="canReveal()"/>
<node CREATED="1535639517897" ID="ID_1175119585" MODIFIED="1535725607419" TEXT="Funktions-Operator(void) == reveal"/>
<node CREATED="1535640911061" ID="ID_777387548" MODIFIED="1535725678665" TEXT="reveal(canvasX,canvasY) auf dem Layout-Manager"/>
</node>
<node CREATED="1535640932722" FOLDED="true" ID="ID_1411372901" MODIFIED="1582388541734" TEXT="NavScope">
<icon BUILTIN="button_cancel"/>
<icon BUILTIN="hourglass"/>
<node CREATED="1535654864507" ID="ID_976171939" MODIFIED="1535654872624" TEXT="erst mal nur so eine Idee....">
<icon BUILTIN="hourglass"/>
</node>
<node CREATED="1535654895926" ID="ID_518978388" MODIFIED="1535655662803" TEXT="zwei Fliegen mit einer Klappe">
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1535654884104" ID="ID_1335278492" MODIFIED="1576282358011" TEXT="k&#xf6;nnte f&#xfc;r den ViewLocator n&#xfc;tzlich sein">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...denn dort fehlt noch die konkrete Implementierung,
    </p>
    <p>
      welche die Monaden-Baum-Repr&#228;sentation schlie&#223;lich
    </p>
    <p>
      auf konkrete Widgets abbildet. Das ist viel Arbeit, und es lie&#223;e sich vereinfachen,
    </p>
    <p>
      wenn f&#252;r gewisse Knoten erkannt werden kann, da&#223; sie einen NavScope darstellen;
    </p>
    <p>
      denn dann g&#228;be es eine Implementierung &quot;von der Stange&quot;
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1535723854290" ID="ID_333598922" MODIFIED="1535723874600" TEXT="f&#xe4;llt aus diesem Thema heraus">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1535655039395" FOLDED="true" ID="ID_1646511082" MODIFIED="1582388543675" TEXT="Diskussion">
<icon BUILTIN="button_ok"/>
<node CREATED="1535655065175" ID="ID_702941818" MODIFIED="1535655069235" TEXT="Symmetrie?">
<node CREATED="1535655118800" ID="ID_1058761508" MODIFIED="1535655127308" TEXT="Expander ist nur pro Komponente">
<icon BUILTIN="smily_bad"/>
</node>
<node CREATED="1535655136902" ID="ID_126171743" MODIFIED="1535655170274" TEXT="Wunsch: Mix-ins in NavScope-Interface kombinieren">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1535723351533" ID="ID_909635517" MODIFIED="1535723375219">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      aber die Operationen sind <i>der Sache nach</i>&#160;nicht symmetrisch
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1535725181176" ID="ID_1947404851" MODIFIED="1535725210681" TEXT="ins Kind verlagert lassen sie sich jedoch symmetrisieren">
<icon BUILTIN="forward"/>
</node>
</node>
<node CREATED="1535655069967" ID="ID_340217269" MODIFIED="1561827465363" TEXT="Expander und Revealer als Proxy?">
<icon BUILTIN="stop-sign"/>
<node CREATED="1535655293760" ID="ID_1318206385" MODIFIED="1535655302082" TEXT="Syntax?">
<node CREATED="1535655199741" ID="ID_942388081" MODIFIED="1535655235119" TEXT="scope.getExpander(ID).expand(false)">
<icon BUILTIN="help"/>
</node>
<node CREATED="1535655252694" ID="ID_1462365996" MODIFIED="1535655259251" TEXT="scope.canExpand(ID)">
<icon BUILTIN="help"/>
</node>
</node>
<node CREATED="1535655285938" ID="ID_1449182402" MODIFIED="1535655292365" TEXT="oder">
<node CREATED="1535655304095" ID="ID_482365383" MODIFIED="1535655319455" TEXT="scope.expand(ID, true)">
<icon BUILTIN="help"/>
</node>
<node CREATED="1535655363543" ID="ID_1383221002" MODIFIED="1535655385497" TEXT="scope.canReveal(ID)">
<icon BUILTIN="help"/>
</node>
</node>
</node>
<node CREATED="1535655400386" ID="ID_1267051500" MODIFIED="1535655402638" TEXT="Storage">
<node CREATED="1535655416192" ID="ID_1700423924" MODIFIED="1535721537469" TEXT="value: Funktor">
<icon BUILTIN="full-1"/>
<node CREATED="1535655437493" ID="ID_949368248" MODIFIED="1535655450647" TEXT="kopierbar"/>
<node CREATED="1535655452419" ID="ID_338667405" MODIFIED="1535655462678" TEXT="besteht nur aus std::function"/>
<node CREATED="1535655501013" ID="ID_822333393" MODIFIED="1535655513719" TEXT="wird direkt im verwendenden Widget gespeichert"/>
<node CREATED="1535722990637" ID="ID_1278252704" MODIFIED="1535723000688" TEXT="aber es gibt verdeckte Heap-Allokationen"/>
<node CREATED="1535655479976" ID="ID_1685363954" MODIFIED="1535655485792" TEXT="Gefahr: dangling references">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1535655427943" ID="ID_1559607876" MODIFIED="1535721543060" TEXT="ref: Proxy-Objekt">
<icon BUILTIN="full-2"/>
<node CREATED="1535655553598" ID="ID_714380046" MODIFIED="1535655564832" TEXT="nicht-kopierbar"/>
<node CREATED="1535655565420" ID="ID_1503255611" MODIFIED="1535655575607" TEXT="ist eine konkrete Subklasse"/>
<node CREATED="1535655576843" ID="ID_1432131188" MODIFIED="1535655585397" TEXT="storage...">
<node CREATED="1535655586265" ID="ID_267652544" MODIFIED="1535655612409" TEXT="entweder inline, aber mit vector&lt;function&gt;"/>
<node CREATED="1535655613518" ID="ID_146906659" MODIFIED="1535655634423" TEXT="direkt auf dem Heap, mit expliziter konkreter Impl"/>
</node>
</node>
</node>
<node CREATED="1535724509562" ID="ID_833385943" MODIFIED="1535724515909" TEXT="Implementierungs-Modell">
<node CREATED="1535724523160" ID="ID_1440345421" MODIFIED="1561827465364" TEXT="Parent-Container f&#xfc;hrt Index">
<icon BUILTIN="full-1"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1535724838670" ID="ID_1787800884" MODIFIED="1535724867702" TEXT="das Kind wird dort per ID registriert"/>
<node CREATED="1535724882528" ID="ID_1169954047" MODIFIED="1535724888883" TEXT="per ID bekommt man einen...">
<node CREATED="1535724890399" ID="ID_1544051424" MODIFIED="1535724893410" TEXT="Expander-Proxy"/>
<node CREATED="1535724894022" ID="ID_91331753" MODIFIED="1535724897842" TEXT="Revealer-Proxy"/>
</node>
<node CREATED="1535724910940" ID="ID_1389683609" MODIFIED="1535724922199" TEXT="das Kind h&#xe4;lt eine Referenz auf seinen Parent"/>
</node>
<node CREATED="1535724555244" ID="ID_336857888" MODIFIED="1535724635442" TEXT="Parent-Container konfiguriert Funktor in das Kind">
<icon BUILTIN="full-2"/>
<icon BUILTIN="forward"/>
<node CREATED="1535724936297" ID="ID_947922423" MODIFIED="1535724966529" TEXT="die default-Impl des Kindes enth&#xe4;lt Storage f&#xfc;r diese Funktoren"/>
<node CREATED="1535724976291" ID="ID_1742203413" MODIFIED="1535724996837" TEXT="beim Einbinden in einen Container verdrahtet dieser die Funktoren"/>
<node CREATED="1535724997873" ID="ID_493457848" MODIFIED="1535725010507" TEXT="und aktiviert damit ggfs die F&#xe4;higkeit Expand/Reveal"/>
<node CREATED="1535725011710" ID="ID_206250793" MODIFIED="1535725020409" TEXT="das Kind kennt seinen Parent nicht"/>
</node>
<node CREATED="1535724570738" ID="ID_1785171345" MODIFIED="1561827465365" TEXT="Funktor ist in Mix-in im Kind gespeichert">
<icon BUILTIN="full-3"/>
<icon BUILTIN="hourglass"/>
<node CREATED="1535725026621" ID="ID_1063803104" MODIFIED="1535725041437" TEXT="Erweiterung zur L&#xf6;sung">
<icon BUILTIN="full-2"/>
</node>
<node CREATED="1535725048130" ID="ID_1987768737" MODIFIED="1535725075314" TEXT="die Funktor-Storage wird in das Kind als Mix-in eingebaut"/>
<node CREATED="1535725076142" ID="ID_904760905" MODIFIED="1535725093936" TEXT="dieser Mix-In &#xfc;berschreibt auch die default-NOP-Implementierung"/>
<node CREATED="1535725100803" ID="ID_1869635653" MODIFIED="1535725113085" TEXT="man k&#xf6;nnte auf Typ-Ebene Capabilities pr&#xfc;fen"/>
<node CREATED="1535725117080" ID="ID_417282292" MODIFIED="1535725140662" TEXT="diese L&#xf6;sung erscheit cool, aber im Moment &#xfc;bertrieben">
<icon BUILTIN="smiley-oh"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1535722960729" FOLDED="true" ID="ID_303674498" MODIFIED="1582388548725" TEXT="Abw&#xe4;gung">
<icon BUILTIN="yes"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1535723619257" ID="ID_1146060205" MODIFIED="1535723638348" TEXT="Ich folge dem appeal der Funktor-L&#xf6;sung">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1535723641150" ID="ID_945428972" MODIFIED="1535723664351" TEXT="die beiden F&#xe4;lle werden symmetrisch gemacht..."/>
<node CREATED="1535723665347" ID="ID_243620982" MODIFIED="1535723693571" TEXT="...indem sie als Funktor direkt in das Widget verlagert sind"/>
<node CREATED="1535723705158" ID="ID_1284580377" MODIFIED="1535723721479" TEXT="das API reveal(ID) auf dem Parent entf&#xe4;llt ersatzlos"/>
<node CREATED="1535723722763" ID="ID_751870134" MODIFIED="1535723735461" TEXT="das Herstellen der Funktoren wird ein Implementierungs-Detail"/>
<node CREATED="1535725684749" ID="ID_711293491" MODIFIED="1535725797751" TEXT="bubble-Up pasiert somit nur noch implizit">
<node CREATED="1535725711241" ID="ID_1059426307" MODIFIED="1535725743161" TEXT="sofern der Parent-Container seinen eigenen Revealer aufrufen kann"/>
<node CREATED="1535725744085" ID="ID_1761380382" MODIFIED="1535725770365" TEXT="dagegen das reveal(canvasX,canvasY) wird explizit auf den Layout-Manager verschoben"/>
<node CREATED="1535725771305" ID="ID_988494427" MODIFIED="1535725789821" TEXT="...welcher somit explizit an geeigneter Stelle verdrahtet sein mu&#xdf;">
<icon BUILTIN="yes"/>
</node>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1535723783155" ID="ID_1961294443" MODIFIED="1535725808284" TEXT="Konsequenz: die Idee mit den Mix-ins gebe ich auf">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1535723904043" HGAP="12" ID="ID_878787948" MODIFIED="1535725871700" TEXT="Struktur">
<icon BUILTIN="info"/>
<node CREATED="1535723916153" ID="ID_91381589" MODIFIED="1535723927220" TEXT="Tangible bekommt einen Expander und einen Revealer"/>
<node CREATED="1535723930631" ID="ID_1166620864" MODIFIED="1535723955464" TEXT="default-konstruiert sind diese Funktionen deaktiviert"/>
<node CREATED="1535723958404" ID="ID_1293339775" MODIFIED="1535723973358" TEXT="es gibt hierf&#xfc;r ein Konfigurations-API">
<node CREATED="1535723978137" ID="ID_1758020852" MODIFIED="1535724000466" TEXT="installExpander(lambda, lambda)"/>
<node CREATED="1535723987360" ID="ID_1134664898" MODIFIED="1535723995651" TEXT="installRevealer(lambda)"/>
</node>
<node CREATED="1535724283280" ID="ID_316168549" MODIFIED="1535724371580" TEXT="ein Container-Parent hat die Pflicht, diese Funktoren ggfs zu installieren">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1535724349855" ID="ID_782260645" MODIFIED="1535724369173" TEXT="aus einer Hierarchie herausgenommene Widgets sind unverz&#xfc;glich zu zerst&#xf6;ren">
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#338800" CREATED="1537499427673" ID="ID_1035982675" MODIFIED="1537499435729" TEXT="#1162 helper abstractions for generic widgets">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1455421282030" HGAP="54" ID="ID_1448430954" MODIFIED="1518487921086" TEXT="state mark" VSHIFT="12">
<icon BUILTIN="button_ok"/>
<node CREATED="1455421310603" ID="ID_1677758546" MODIFIED="1518487921086" TEXT="slots und markXX sind aufgedoppelt"/>
<node CREATED="1455421372274" ID="ID_956411027" MODIFIED="1518487921086" TEXT="Implementierung mu&#xdf; emittieren">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1455421336808" ID="ID_520325590" MODIFIED="1518487921086" TEXT="wenn eine &#xc4;nderung relevant f&#xfc;r Persistenz"/>
<node CREATED="1455421392032" ID="ID_969248847" MODIFIED="1518487921086" TEXT="die doXXX() - Funktion gibt true zur&#xfc;ck"/>
<node CREATED="1455421407646" ID="ID_480078096" MODIFIED="1518487921086" TEXT="dann erledigt die slot / mark-Funktion das"/>
</node>
<node CREATED="1455421435698" ID="ID_799737882" MODIFIED="1518487921086" TEXT="PresentationStateManager sammelt einfach">
<icon BUILTIN="button_ok"/>
<node CREATED="1455421453040" ID="ID_1195489674" MODIFIED="1518487921086" TEXT="pro Element (=ID)"/>
<node CREATED="1455421460671" ID="ID_1160333722" MODIFIED="1518487921086" TEXT="pro &quot;property&quot; == ID-sym der state mark - Nachricht"/>
</node>
<node CREATED="1455421490643" ID="ID_256291546" MODIFIED="1518487921086" TEXT="L&#xf6;sch / Reset-Nachrichten">
<icon BUILTIN="idea"/>
<node CREATED="1455421507505" ID="ID_1382752422" MODIFIED="1518487921086" TEXT="sind auszusenden, wenn tats&#xe4;chlich gel&#xf6;scht wurde">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1455421520087" ID="ID_1219279890" MODIFIED="1518487921086" TEXT="werden vom PresentationStateManager speziell behandelt"/>
</node>
<node CREATED="1455421537717" ID="ID_562890111" MODIFIED="1518487921086" TEXT="k&#xf6;nnen per Broadcast verbreitet werden">
<node CREATED="1455421549347" ID="ID_744479545" MODIFIED="1518487921086" TEXT="separates UI-Bus API"/>
<node CREATED="1455421557026" ID="ID_655863988" MODIFIED="1576282358010">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      nach Broadcast von &quot;reset&quot;
    </p>
    <p>
      sollte logischerweise der PresentationStateManager leer sein
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ist er aber nicht notwendig,
    </p>
    <p>
      denn er kann Zustand von nicht mehr existierenden Elementen aufgezeichnet haben.
    </p>
    <p>
      Nur Elemente, die im Moment angeschlossen sind, bekommen die &quot;reset&quot;-Nachricht mit;
    </p>
    <p>
      sofern sie tats&#228;chlich abweichenden Zustand haben, sollten sie sich resetten
    </p>
    <p>
      und eine state mark &quot;reset&quot; zur&#252;ckschicken...
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node CREATED="1455422030995" FOLDED="true" HGAP="35" ID="ID_1455265273" MODIFIED="1576282443543" TEXT="mutation" VSHIFT="7">
<icon BUILTIN="go"/>
<node CREATED="1455666294927" ID="ID_373207685" MODIFIED="1518487921086" TEXT="Ausgangspunkt">
<node CREATED="1455666301630" ID="ID_933452284" MODIFIED="1518487921086" TEXT="Element-Protokoll steht"/>
<node CREATED="1455666310701" ID="ID_571166725" MODIFIED="1518487921086" TEXT="Bus-Semantik steht"/>
<node CREATED="1455666315061" ID="ID_1650938256" MODIFIED="1518487921086" TEXT="Konzept f&#xfc;r Tree-Mutator steht"/>
<node CREATED="1455666330652" ID="ID_654052510" MODIFIED="1518487921086" TEXT="Tree-Diff-Applikator ist implementiert"/>
<node CREATED="1455666351784" ID="ID_1889806972" MODIFIED="1518487921086" TEXT="Entscheidung f&#xfc;r 2-Phasiges Diff-Update ist gefallen"/>
</node>
<node CREATED="1455668350028" HGAP="43" ID="ID_1853535891" MODIFIED="1518487921086" TEXT="Ablauf" VSHIFT="5">
<node CREATED="1455668396398" ID="ID_1627727409" MODIFIED="1518487921086" TEXT="Diff-Nachricht kommt via UI-Bus">
<icon BUILTIN="full-1"/>
</node>
<node CREATED="1455668411867" ID="ID_1932196729" MODIFIED="1518487921086" TEXT="UI-Element baut Tree-Mutator &quot;auf sich selbst&quot;">
<icon BUILTIN="full-2"/>
</node>
<node CREATED="1455668689495" ID="ID_1046261411" MODIFIED="1518487921086" TEXT="UI-Element setzt Tree-Diff-Applikator auf diesen an">
<icon BUILTIN="full-3"/>
</node>
</node>
<node CREATED="1455668897947" FOLDED="true" HGAP="211" ID="ID_1897861223" MODIFIED="1576200713578" TEXT="Konsequenzen" VSHIFT="23">
<node CREATED="1455668923175" ID="ID_1183550957" MODIFIED="1575133324169" TEXT="brauche passendes UI-Bus API">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ....so harmlos hat alles angefangen
    </p>
    <p>
      
    </p>
    <p>
      Denn das hei&#223;t, ich mu&#223; konkret ausarbeiten,
    </p>
    <p>
      <i>wie</i>&#160;man einen Diff gegen eine opaque Implementierungs-Datenstruktur aufspielt.
    </p>
    <p>
      Und ich mu&#223; das in einem Test zumindest emulieren k&#246;nnen!
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1455668935142" ID="ID_1274632216" MODIFIED="1575133324202">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      mu&#223; DiffApplicationStrategy
    </p>
    <p>
      <i>noch einmal</i>&#160;implementieren
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      das mag &#252;berraschen --
    </p>
    <p>
      ist aber im Sinne des Erfinders
    </p>
    <ul>
      <li>
        DiffApplicationStrategy war von Anfang an als technisches Binding konzipiert
      </li>
      <li>
        es ist besser, die gleiche Semantik der Sprache X-mal herunterzucoden
      </li>
      <li>
        cleverer Code-re-Use zahlt sich i.d.R. nicht aus
      </li>
    </ul>
  </body>
</html></richcontent>
<node CREATED="1455669272760" ID="ID_837691598" MODIFIED="1512926191890" TEXT="Call-Stack ist der Prozessor-Stack (Rekursion)">
<icon BUILTIN="button_cancel"/>
<node CREATED="1455899000582" ID="ID_1404453203" MODIFIED="1455899086452" TEXT="sorry, geht nicht">
<icon BUILTIN="stop-sign"/>
</node>
<node CREATED="1455899005885" ID="ID_1920318464" MODIFIED="1512926191891" TEXT="denn sonst mu&#xdf; ich">
<icon BUILTIN="idea"/>
<node CREATED="1455899015220" ID="ID_1476900463" MODIFIED="1455899023991" TEXT="entweder die Anwendung komplett neu schreiben"/>
<node CREATED="1455899024459" ID="ID_1562031965" MODIFIED="1455899033805" TEXT="oder den DiffApplicator umbauen"/>
<node CREATED="1455899034129" ID="ID_1505454112" MODIFIED="1455899053610" TEXT="und das reicht bis in die Diff-Verben..."/>
<node CREATED="1455899054575" ID="ID_1973501142" MODIFIED="1455899068441" TEXT="die dann rekursiv vom Diff-Typ abh&#xe4;ngig werden"/>
<node CREATED="1455899068941" ID="ID_604248716" MODIFIED="1455899072752" TEXT="NEE DANKE"/>
</node>
</node>
<node CREATED="1455669266289" ID="ID_476883926" MODIFIED="1455899233976" TEXT="mu&#xdf; ebenfalls expliziten Stack verwenden">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1455899121277" ID="ID_1897194874" MODIFIED="1512926191891" TEXT="eigentlich ist das ganze Copy-n-Paste">
<icon BUILTIN="button_ok"/>
<node CREATED="1455899176175" ID="ID_589009361" MODIFIED="1455899183929" TEXT="gef&#xfc;hlsm&#xe4;&#xdf;ig: hier kein Problem"/>
<node CREATED="1455899184397" ID="ID_933775328" MODIFIED="1455899191320" TEXT="denn die Implementierung ist gekoppelt"/>
<node CREATED="1455899191836" ID="ID_1325546784" MODIFIED="1455899200983" TEXT="mu&#xdf; gekoppelt sein, wg. Effizienz"/>
<node CREATED="1455899201435" ID="ID_1353317149" MODIFIED="1455899210798" TEXT="eine Abstraktion hat hier keinen Mehrwert"/>
<node CREATED="1455899211338" ID="ID_1152596163" MODIFIED="1455899216645" TEXT="und ist &#xfc;berall sonst eine B&#xfc;rde"/>
</node>
<node CREATED="1472829783619" HGAP="28" ID="ID_1015946734" MODIFIED="1472829805342" TEXT="am Ende ist das die sch&#xf6;nere Implementierung geworden" VSHIFT="5">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node CREATED="1455669004941" ID="ID_853385575" MODIFIED="1575133324401">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      dies setzt volle Implementierung
    </p>
    <p>
      des Tree-Mutators voraus
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      der schwierigste Teil, das Mutieren von Attributen,
    </p>
    <p>
      ist jedoch schon prototypisch implementiert
    </p>
  </body>
</html></richcontent>
<node CREATED="1455899288247" ID="ID_635341866" MODIFIED="1512926191892" TEXT="Tree-Mutator hat echte (Assignment)-Mutation">
<icon BUILTIN="info"/>
<node CREATED="1455899303981" ID="ID_1584621992" MODIFIED="1455899333910" TEXT="pa&#xdf;t nicht auf die Semantik vom Diff">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1455899315092" ID="ID_1911158046" MODIFIED="1455899330748" TEXT="dann eben passend machen">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1455899321418" ID="ID_802682081" MODIFIED="1455899337153" TEXT="Diff bekommt ein SET verb">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1455669313986" ID="ID_1730130372" MODIFIED="1512926191893" TEXT="brauche generiischen Rahmen">
<node CREATED="1455669322561" ID="ID_1968219875" MODIFIED="1455669325957" TEXT="f&#xfc;r skip"/>
<node CREATED="1455669326400" ID="ID_646237490" MODIFIED="1455669330996" TEXT="f&#xfc;r ins / del"/>
<node CREATED="1455669331448" ID="ID_1852578403" MODIFIED="1455669333036" TEXT="f&#xfc;r find"/>
</node>
</node>
<node COLOR="#ad014c" CREATED="1455669200945" FOLDED="true" HGAP="85" ID="ID_880765624" MODIFIED="1576200677851" TEXT="Design-Fragen" VSHIFT="-14">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#4e1527" CREATED="1458408700205" ID="ID_685778920" MODIFIED="1512926191894" TEXT="Grundansatz">
<font NAME="SansSerif" SIZE="15"/>
<icon BUILTIN="yes"/>
<node CREATED="1458408708004" ID="ID_239878029" MODIFIED="1458408717247" TEXT="Abstraktion / Adapter"/>
<node CREATED="1458408717739" ID="ID_579166238" MODIFIED="1458408726086" TEXT="(virtuelles) Interface"/>
<node CREATED="1458408730841" ID="ID_356597537" MODIFIED="1458408739164" TEXT="konkretes Binding"/>
<node CREATED="1458408742408" ID="ID_1733136177" MODIFIED="1512926191895" TEXT="Binding-Technik">
<node CREATED="1458408757478" ID="ID_1718466382" MODIFIED="1458408786501" TEXT="Mutator wird in jeweiliger Impl erzeugt"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#221c4f" CREATED="1458408790457" ID="ID_1892865523" MODIFIED="1561827465432" STYLE="fork" TEXT="Polymorphie vs. Funktoren">
<icon BUILTIN="button_ok"/>
<node CREATED="1458408878574" ID="ID_1190262572" MODIFIED="1512926191896" TEXT="Abw&#xe4;gung">
<icon BUILTIN="info"/>
<node CREATED="1458408895756" ID="ID_1422093195" MODIFIED="1533608413859" TEXT="polymorph">
<node CREATED="1458408909594" ID="ID_447360746" MODIFIED="1458409828754">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Mutator verwendet einen <i>Binder</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1458408965770" ID="ID_1892856741" MODIFIED="1458409828754" TEXT="jeweiliger Client implementiert den Binder"/>
<node CREATED="1458409675740" ID="ID_1319191337" MODIFIED="1458409828754" TEXT="Implementierung direkt durch Typsystem geleitet">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1458408946813" ID="ID_86057383" MODIFIED="1458409828754" TEXT="Indirektion, virtuelle Funktionen">
<icon BUILTIN="clanbomber"/>
</node>
<node CREATED="1458409155585" ID="ID_1985086830" MODIFIED="1458409828754" TEXT="Client mu&#xdf; explizit instantiieren und verbinden">
<icon BUILTIN="smily_bad"/>
</node>
<node CREATED="1458409202946" ID="ID_162172192" MODIFIED="1458409828754" TEXT="f&#xfc;r jede Anwendungssituation eine neue Binder-Klasse"/>
<node CREATED="1458409270353" ID="ID_114384372" MODIFIED="1458409828754" TEXT="plus f&#xfc;r jedes Anwendungs-Grundmuster eine Mutator-Implementierung"/>
</node>
<node CREATED="1458408904802" ID="ID_1569962545" MODIFIED="1533608413860" TEXT="generisch">
<node CREATED="1458409289263" ID="ID_1520752432" MODIFIED="1458409828754" TEXT="konkreter Mutator wird aus Bausteinen zusammengestellt"/>
<node CREATED="1458409313524" ID="ID_90057804" MODIFIED="1458409828754" TEXT="diese Bausteine verwenden Funktoren und Lambdas"/>
<node CREATED="1458409343504" ID="ID_1243373098" MODIFIED="1458409828754" TEXT="Mutator-Instantiierung und Lamdas im gleichen Scope"/>
<node CREATED="1458409357886" ID="ID_102579030" MODIFIED="1458409828754" TEXT="Bindung implizit, Inlining f&#xfc;r Lambdas"/>
<node CREATED="1458409636857" ID="ID_410838714" MODIFIED="1458409828754" TEXT="Typ/Signaturfehler werden (erst) im generischen Code bemerkt">
<icon BUILTIN="smily_bad"/>
</node>
<node CREATED="1458409384661" ID="ID_599058435" MODIFIED="1458409828754" TEXT="f&#xfc;r jede Anwendungssituation eine neue Mutator-Implementierung"/>
<node CREATED="1458409554491" ID="ID_1516498705" MODIFIED="1458409828754" TEXT="aber auch Builder-Zwischenstufen m&#xfc;sen als Funktionen instantiiert werden">
<icon BUILTIN="clanbomber"/>
</node>
</node>
</node>
<node CREATED="1458408881773" ID="ID_649871974" MODIFIED="1512926191899" TEXT="Entscheidung">
<icon BUILTIN="yes"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#010101" CREATED="1458409428796" ID="ID_1590872717" MODIFIED="1458409828754" TEXT="generisch">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1458409480646" ID="ID_239846348" MODIFIED="1458409828754" TEXT="weniger Indirektion"/>
<node CREATED="1458409499547" ID="ID_734782069" MODIFIED="1458409828755" TEXT="geringf&#xfc;gig weniger Code-bloat"/>
<node CREATED="1458409506778" ID="ID_1696279423" MODIFIED="1458409828755" TEXT="bessere Chancen auf Inlining"/>
<node CREATED="1458409586672" ID="ID_902822558" MODIFIED="1533608413860" TEXT="Client-Code">
<node CREATED="1458409608924" ID="ID_1425639317" MODIFIED="1458409828755" TEXT="kompakter"/>
<node CREATED="1458409611484" ID="ID_1386932549" MODIFIED="1458409828755" TEXT="expliziter"/>
<node CREATED="1458409616980" ID="ID_1067167042" MODIFIED="1458409828755" TEXT="weniger technisch"/>
<node CREATED="1458409622475" ID="ID_858066487" MODIFIED="1458409828755" TEXT="lesbarer"/>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1455669221255" ID="ID_1712552545" MODIFIED="1512926191900" TEXT="Repr&#xe4;sentation der &quot;aktuellen Position&quot;">
<node CREATED="1472829837156" ID="ID_1214532087" MODIFIED="1472829843934" TEXT="implizit lassen"/>
<node CREATED="1472829844387" ID="ID_1395134655" MODIFIED="1472829852134" TEXT="auf Implementierungs-Ebene verlagern"/>
<node CREATED="1472829853242" ID="ID_562014580" MODIFIED="1472829913272" TEXT="in jedem Layer / f&#xfc;r jeden Typ gesondert">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_562014580" ENDARROW="Default" ENDINCLINATION="451;-8;" ID="Arrow_ID_543974195" SOURCE="ID_631826706" STARTARROW="None" STARTINCLINATION="322;-32;"/>
</node>
</node>
<node CREATED="1455669345167" ID="ID_310849010" MODIFIED="1455669353721" TEXT="generischen Rahmen f&#xfc;r Mut-Operationen"/>
<node CREATED="1455669238213" ID="ID_731780565" MODIFIED="1512926191900" TEXT="Einleiten der Rekursion">
<node CREATED="1455842313629" ID="ID_179960248" MODIFIED="1455842321264" TEXT="ich h&#xe4;tte es gern echt-rekursiv"/>
<node CREATED="1455842321828" ID="ID_1622068738" MODIFIED="1455842336974" TEXT="widerspricht aber unserem DiffApplicator"/>
</node>
<node CREATED="1455833678448" HGAP="47" ID="ID_1439118587" MODIFIED="1533684825451" TEXT="Probleme" VSHIFT="16">
<font NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="clanbomber"/>
<node CREATED="1455833736586" ID="ID_1233162987" MODIFIED="1525124215054" TEXT="Analyse: Feld vs Attribut">
<icon BUILTIN="info"/>
<node CREATED="1455834007278" ID="ID_196347476" MODIFIED="1512926191903" TEXT="Feld">
<node CREATED="1455834060110" ID="ID_1872959165" MODIFIED="1455834067177" TEXT="ist da per Struktur"/>
<node CREATED="1455834067837" ID="ID_944456076" MODIFIED="1455834075400" TEXT="hat immer einen Wert"/>
</node>
<node CREATED="1455834010264" ID="ID_1604005834" MODIFIED="1512926191903" TEXT="Attribut">
<node CREATED="1455834109112" ID="ID_879864381" MODIFIED="1455834119178" TEXT="wird per Key angesprochen"/>
<node CREATED="1455834121926" ID="ID_504132661" MODIFIED="1455834189337" TEXT="kann abwesend sein"/>
</node>
<node CREATED="1455834013389" ID="ID_133168935" MODIFIED="1512926191904" TEXT="Widerspr&#xfc;che">
<node CREATED="1455834227528" ID="ID_1606302361" MODIFIED="1455834231179" TEXT="Feld hinzuf&#xfc;gen"/>
<node CREATED="1455834231647" ID="ID_1275813367" MODIFIED="1455834236914" TEXT="Feld l&#xf6;schen"/>
<node CREATED="1455834237999" ID="ID_254859574" MODIFIED="1455834251313" TEXT="Feld suchen"/>
<node CREATED="1455834400273" ID="ID_54362263" MODIFIED="1455834403925" TEXT="Zuweisung"/>
<node CREATED="1455834252068" ID="ID_1918373755" MODIFIED="1455834285644" TEXT="Ordnung"/>
</node>
</node>
<node CREATED="1455833774965" ID="ID_677756898" MODIFIED="1512926191904" TEXT="&#xc4;ndern wider die Natur">
<node CREATED="1455898722195" ID="ID_1299759861" MODIFIED="1455898728644" TEXT="Problem delegieren..."/>
<node CREATED="1455898713124" ID="ID_1862448261" MODIFIED="1455898720143" TEXT="ignorieren bzw. scheitern lassen"/>
</node>
<node CREATED="1455833858794" ID="ID_483179827" MODIFIED="1512926191904" TEXT="zus&#xe4;tzliche Ordnungsstruktur">
<node CREATED="1455898689479" ID="ID_1223705901" MODIFIED="1455898696898" TEXT="Attribut: ignorieren"/>
<node CREATED="1455898698670" ID="ID_1532643598" MODIFIED="1455898705001" TEXT="Kind: delegieren"/>
</node>
<node CREATED="1455842653928" ID="ID_1996966445" MODIFIED="1561827465435">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Diff kennt keine <i>Zuweisung</i>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
<node CREATED="1455842674973" ID="ID_1910702757" MODIFIED="1455842682008" TEXT="L&#xf6;schen + Neueinf&#xfc;gen"/>
<node CREATED="1455842682524" ID="ID_1597781391" MODIFIED="1455842710444" TEXT="unn&#xf6;tiger Aufwand (Allokation)"/>
<node CREATED="1455842711008" ID="ID_1470911011" MODIFIED="1455842721083" TEXT="f&#xfc;hrt zu &quot;Flackern&quot; im UI"/>
<node CREATED="1455843001833" HGAP="46" ID="ID_617738816" MODIFIED="1512926191905" TEXT="L&#xf6;sungen" VSHIFT="16">
<icon BUILTIN="idea"/>
<node CREATED="1455843011048" ID="ID_1280199494" MODIFIED="1512926191905" TEXT="Spezialvereinbarung">
<icon BUILTIN="button_cancel"/>
<node CREATED="1455843048699" ID="ID_1949875245" MODIFIED="1455843054766" TEXT="Einf&#xfc;gen des gleichen Attributes"/>
<node CREATED="1455843055122" ID="ID_880285017" MODIFIED="1455843061285" TEXT="geht nur unmittelbar danach"/>
<node CREATED="1455843061633" ID="ID_1466937234" MODIFIED="1455843065597" TEXT="geht nur mit Attributen"/>
</node>
<node CREATED="1455843068672" ID="ID_695348733" MODIFIED="1512926191906" TEXT="neues Verb">
<icon BUILTIN="button_ok"/>
<node CREATED="1455843074288" ID="ID_251586851" MODIFIED="1455843077987" TEXT="SET"/>
<node CREATED="1455843120961" ID="ID_1340712241" MODIFIED="1455843131556" TEXT="setzt Element-Identit&#xe4;t voraus"/>
<node CREATED="1455843134111" ID="ID_1830155209" MODIFIED="1455843174534" TEXT="funkioniert (theoretisch) auch bei Kindern"/>
<node CREATED="1455843262862" ID="ID_779223103" MODIFIED="1533608413862" TEXT="Frage: Auto-PICK">
<icon BUILTIN="help"/>
<node CREATED="1455843317119" ID="ID_755404987" MODIFIED="1455895650565" TEXT="Ja: aber was dann mit Umordnungen">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1455843336405" ID="ID_1210482014" MODIFIED="1561827465436">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Nein
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
<node CREATED="1455895664140" ID="ID_639070488" MODIFIED="1455895669295">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      aber was dann wenn out-of-order
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="help"/>
</node>
<node CREATED="1455895670603" FOLDED="true" ID="ID_1629566976" MODIFIED="1561827483835" TEXT="out-of-order">
<icon BUILTIN="yes"/>
<node CREATED="1455895687377" ID="ID_742953981" MODIFIED="1455895691763" TEXT="wird unterst&#xfc;tzt"/>
<node CREATED="1455895692304" ID="ID_1361195241" MODIFIED="1455895769838" TEXT="denn: analog zu mut-emu">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1455895701215" ID="ID_1720750220" MODIFIED="1455895710033" TEXT="erm&#xf6;glicht Postfix-Order"/>
</node>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1455913713933" ID="ID_155948375" MODIFIED="1561827465440" TEXT="getypte Kinder">
<icon BUILTIN="help"/>
<node CREATED="1455913726963" ID="ID_514338534" MODIFIED="1512926191909" TEXT="kommt es vor">
<icon BUILTIN="help"/>
<node CREATED="1455926476893" ID="ID_1938999393" MODIFIED="1455926499782" TEXT="ja"/>
<node CREATED="1455926509185" ID="ID_784567614" MODIFIED="1455926521747" TEXT="in der Filter-Pipe"/>
<node CREATED="1455926675370" ID="ID_572508223" MODIFIED="1512926191909" TEXT="&#xbb;Zwei-Listen-Modell&#xab;">
<node CREATED="1455926709229" ID="ID_272389445" MODIFIED="1455926710513" TEXT="f&#xfc;r generischen Diff"/>
<node CREATED="1455926710981" ID="ID_1449723679" MODIFIED="1455926717032" TEXT="m&#xf6;gliche Vereinheitlichung"/>
<node CREATED="1455926717452" ID="ID_1884046427" MODIFIED="1455926728191" TEXT="generisch, nicht polymorph"/>
</node>
</node>
<node CREATED="1455913731723" ID="ID_1269232747" MODIFIED="1512926191910" TEXT="Problem umgehen">
<icon BUILTIN="help"/>
<node CREATED="1455926525990" ID="ID_1102781575" MODIFIED="1455926538168" TEXT="w&#xe4;re m&#xf6;glich"/>
<node CREATED="1455926539204" ID="ID_650449853" MODIFIED="1455926543144" TEXT="Polymorphismus"/>
</node>
<node CREATED="1455913800081" ID="ID_552808081" MODIFIED="1512926191910" TEXT="Typ-Info transportieren">
<icon BUILTIN="help"/>
<node CREATED="1455926589909" ID="ID_1341677743" MODIFIED="1455926610247" TEXT="Form der ID"/>
<node CREATED="1455926610931" ID="ID_1390833573" MODIFIED="1455926615310" TEXT="Pr&#xe4;fix in der ID"/>
<node CREATED="1455926617866" ID="ID_1667737141" MODIFIED="1455926631308" TEXT="Typ-Feld in geschachteltem Record"/>
<node CREATED="1455926632320" ID="ID_1323008809" MODIFIED="1455926641491" TEXT="Typ der Payload -&gt; Visitor"/>
</node>
<node CREATED="1455913759727" HGAP="43" ID="ID_1318158783" MODIFIED="1512926191911" TEXT="Modell">
<node CREATED="1455913778429" ID="ID_884750408" MODIFIED="1575133325713" TEXT="sub-Collections">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      eindeutig &#252;berlegen
    </p>
    <ul>
      <li>
        faktorisiert sauber
      </li>
      <li>
        Zustand delegiert auf die jeweilige Kinder-Sammlung
      </li>
      <li>
        diese wird damit auch zum generischen Element
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
<node CREATED="1455913847683" ID="ID_1829117976" MODIFIED="1455913860029" TEXT="es gibt effektiv mehrere Kinder-Sammlungen"/>
<node CREATED="1455913860594" ID="ID_631826706" MODIFIED="1472829913272" TEXT="wir verwalten intern f&#xfc;r jede eine Position">
<arrowlink DESTINATION="ID_562014580" ENDARROW="Default" ENDINCLINATION="451;-8;" ID="Arrow_ID_543974195" STARTARROW="None" STARTINCLINATION="322;-32;"/>
</node>
<node CREATED="1455913877183" ID="ID_1295733719" MODIFIED="1455913906711" TEXT="forwarding by type"/>
</node>
<node CREATED="1455913785555" ID="ID_1777441123" MODIFIED="1575133325785" TEXT="transparenter Filter">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      schlechter....
    </p>
    <ul>
      <li>
        sammelt viel technische Komplexit&#228;t auf top-level
      </li>
      <li>
        wir m&#252;ssen eine meta-Repr&#228;sentation aufbauen
      </li>
      <li>
        wir m&#252;ssen Adapter zentral generieren, anstatt uns vom Installieren von Closures treiben zu lassen
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="button_cancel"/>
<node CREATED="1455913912323" ID="ID_1775410993" MODIFIED="1455913922605" TEXT="es gibt nominell nur eine Kinder-Folge"/>
<node CREATED="1455913924857" ID="ID_505406246" MODIFIED="1455913935019" TEXT="wir m&#xfc;ssen die intern repr&#xe4;sentieren"/>
<node CREATED="1455913938287" ID="ID_749740013" MODIFIED="1533608413864" TEXT="passenden Adapter">
<node CREATED="1455913959452" ID="ID_1132015088" MODIFIED="1455913969855" TEXT="erst beim Zugriff"/>
<node CREATED="1455913970443" ID="ID_164083502" MODIFIED="1455913995371" TEXT="jeweils Typ feststellen"/>
</node>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#3a3785" CREATED="1455927009621" HGAP="148" ID="ID_153254427" MODIFIED="1576200687560" STYLE="fork" TEXT="&#xbb;generic tree diff&#xab;" VSHIFT="22">
<cloud COLOR="#edd8ba"/>
<font NAME="SansSerif" SIZE="15"/>
<node CREATED="1455927154554" ID="ID_1055035778" MODIFIED="1502453320550" TEXT="Prinzip">
<node CREATED="1455927162321" ID="ID_285833614" MODIFIED="1455927166972" TEXT="chained adapters"/>
<node CREATED="1455927169432" ID="ID_1685554012" MODIFIED="1455927207911" TEXT="inline closures"/>
<node CREATED="1455927216698" ID="ID_817434960" MODIFIED="1455927225756" TEXT="selector predicate"/>
</node>
<node CREATED="1455927270458" ID="ID_1471647972" MODIFIED="1502453310933" TEXT="Struktur">
<node CREATED="1455927276314" ID="ID_1425598677" MODIFIED="1525124215064" TEXT="Diff-verben">
<cloud COLOR="#fce9c0"/>
<font NAME="SansSerif" SIZE="16"/>
<node CREATED="1455927329507" ID="ID_949976479" MODIFIED="1512926191917" TEXT="pick">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1455927396505" ID="ID_54934717" MODIFIED="1455927399733" TEXT="verify"/>
<node CREATED="1455927413191" ID="ID_1313233235" MODIFIED="1455982912941" TEXT="accept_src"/>
<node CREATED="1455927425726" ID="ID_1010708624" MODIFIED="1455982690058" TEXT="next_src"/>
</node>
<node CREATED="1455927334882" ID="ID_724923414" MODIFIED="1512926191918" TEXT="ins">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1455927474671" ID="ID_739710454" MODIFIED="1455982918963" TEXT="inject"/>
</node>
<node CREATED="1455927341473" ID="ID_573257215" MODIFIED="1512926191918" TEXT="del">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1455927479054" ID="ID_93562485" MODIFIED="1455927482234" TEXT="verify"/>
<node CREATED="1455927483301" ID="ID_1149563805" MODIFIED="1470522011715" TEXT="skipSrc"/>
</node>
<node CREATED="1455927346728" ID="ID_1236186762" MODIFIED="1512926191918" TEXT="find">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1455927510666" ID="ID_968873842" MODIFIED="1455927514101" TEXT="locate_src"/>
<node CREATED="1455927522081" ID="ID_476699106" MODIFIED="1455982923915" TEXT="accept_src"/>
</node>
<node CREATED="1455927354239" ID="ID_501366037" MODIFIED="1512926191918" TEXT="skip">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1470522026709" ID="ID_967937679" MODIFIED="1470522029792" TEXT="skipSrc"/>
<node CREATED="1470522030780" ID="ID_628304064" MODIFIED="1470522072842" TEXT="Problem: welcher Layer?">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1455927357415" ID="ID_1730455685" MODIFIED="1512926191919" TEXT="after">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1455927556300" ID="ID_476640075" MODIFIED="1512926191919" TEXT="while not">
<node CREATED="1455927560940" ID="ID_1275606051" MODIFIED="1455982930194" TEXT="accept_src"/>
<node CREATED="1455982708749" ID="ID_355029700" MODIFIED="1455982708749" TEXT="next_src"/>
</node>
<node CREATED="1455927589560" ID="ID_1967720214" MODIFIED="1512926191919" TEXT="_ATTRIB_">
<node CREATED="1455927596055" ID="ID_829661861" MODIFIED="1455927600866" TEXT="attrib -&gt; end"/>
</node>
<node CREATED="1455927603566" ID="ID_604132662" MODIFIED="1512926191920" TEXT="_END_">
<node CREATED="1455927607621" ID="ID_948240245" MODIFIED="1455927610465" TEXT="all -&gt; end"/>
</node>
</node>
<node CREATED="1455927360398" ID="ID_1123321103" MODIFIED="1512926191920" TEXT="set">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1455927661046" ID="ID_608131093" MODIFIED="1512926191920" TEXT="if not verify">
<node CREATED="1455927681491" ID="ID_1621577646" MODIFIED="1455927694621" TEXT="locate_target"/>
</node>
<node CREATED="1455927697105" ID="ID_1909489348" MODIFIED="1455927701684" TEXT="verify"/>
<node CREATED="1455927702465" ID="ID_321172748" MODIFIED="1455927704244" TEXT="assign"/>
</node>
<node CREATED="1455927363102" ID="ID_1117221392" MODIFIED="1512926191921" TEXT="mut">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1455927714615" ID="ID_958571239" MODIFIED="1512926191921" TEXT="if not verify">
<node CREATED="1455927718574" ID="ID_1870238884" MODIFIED="1455927721586" TEXT="locate_target"/>
</node>
<node CREATED="1455927724238" ID="ID_664459993" MODIFIED="1455927734345" TEXT="verify"/>
<node CREATED="1455927736084" ID="ID_1788904482" MODIFIED="1512926191921" TEXT="push">
<node CREATED="1455927739355" ID="ID_1160724761" MODIFIED="1455927741512" TEXT="mutator"/>
</node>
</node>
<node CREATED="1455927365094" ID="ID_1567754459" MODIFIED="1512926191921" TEXT="emu">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1455927745131" ID="ID_1000032658" MODIFIED="1455927749590" TEXT="verify_end"/>
<node CREATED="1455927750490" ID="ID_1746587224" MODIFIED="1455927752838" TEXT="pop"/>
</node>
<node CREATED="1455927337321" ID="ID_1622487857" MODIFIED="1512926191921" TEXT="CTOR">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1455927444275" ID="ID_643592318" MODIFIED="1512926191922" TEXT="push">
<node CREATED="1455927462641" ID="ID_14883638" MODIFIED="1455927465084" TEXT="mutator"/>
</node>
</node>
</node>
<node CREATED="1455927276314" HGAP="91" ID="ID_1209647803" MODIFIED="1525124215074" VSHIFT="-3">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Primitive
    </p>
    <p>
      <font size="2">(impl-ops)</font>
    </p>
  </body>
</html></richcontent>
<cloud COLOR="#fce9c0"/>
<font NAME="SansSerif" SIZE="16"/>
<node CREATED="1455982947867" ID="ID_1339677569" MODIFIED="1512926191924" TEXT="injectNew">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1455982969073" ID="ID_1885889112" MODIFIED="1455982974332" TEXT="inject new content"/>
<node CREATED="1457047512175" ID="ID_1126383522" MODIFIED="1457047519426" TEXT="at implicit &quot;current&quot; position"/>
</node>
<node CREATED="1455927425726" ID="ID_1776437339" MODIFIED="1512926191925" TEXT="hasSrc">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1455928216420" ID="ID_662720483" MODIFIED="1464117064570" TEXT="further src elements available"/>
<node CREATED="1470527053136" ID="ID_1383280265" MODIFIED="1470527075712">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      of questionable use
    </p>
    <p>
      with multiple layers
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="help"/>
</node>
</node>
<node CREATED="1455927396505" ID="ID_392033275" MODIFIED="1512926191926" TEXT="matchSrc">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1455928268589" ID="ID_97473072" MODIFIED="1512926191926" TEXT="ID comparison">
<node CREATED="1455928524530" ID="ID_545057240" MODIFIED="1457120284424" TEXT="implicit next pos"/>
<node CREATED="1455928530738" ID="ID_1035043901" MODIFIED="1455928533677" TEXT="ID"/>
</node>
<node CREATED="1470778603801" ID="ID_1808045935" MODIFIED="1575133326567" TEXT="needed to implement the `del` verb">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      since skipSrc performs both the `del` and the `skip` verb, it can not perform the match itself...
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1455927425726" ID="ID_1759686725" MODIFIED="1512926191926" TEXT="skipSrc">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1470527086660" ID="ID_13765501" MODIFIED="1470527097135" TEXT="guarded by selector">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1470772440180" ID="ID_1241607377" MODIFIED="1575133326608" TEXT="can not match by itself">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...because it is also used to discard garbage after a findSrc operation.
    </p>
    <p>
      Thus we need to avoid touching the actual data in the src sequence, because this might lead to SEGFAULT.
    </p>
    <p>
      
    </p>
    <p>
      For this reason, the implementation of the `del` verb has to invoke matchSrc explicitly beforehand,
    </p>
    <p>
      and this is the very reason `matchSrc` exists. Moreover, `matchSrc` must be written such
    </p>
    <p>
      as to ensure to invoke the Selector before performing a local match. And skipSrc has to
    </p>
    <p>
      proceed in precisely the same way. Thus, if the selector denies responsibility, we'll delegate
    </p>
    <p>
      to the next lower layer in both cases, and the result and behaviour depends on this next lower layer solely
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1455928216420" ID="ID_1581600385" MODIFIED="1470778395226" TEXT="thus just advance source position"/>
</node>
<node CREATED="1455927413191" ID="ID_1624797970" MODIFIED="1512926191927" TEXT="acceptSrc">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1470527086660" ID="ID_410793564" MODIFIED="1470772489007" TEXT="guarded by selector">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1470772440180" ID="ID_836603881" MODIFIED="1470772503839" TEXT="verify match with next src position"/>
<node CREATED="1455928275316" ID="ID_702364156" MODIFIED="1512926191928">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      then <i>move</i>&#160;into target
    </p>
  </body>
</html></richcontent>
<node CREATED="1455928537273" ID="ID_1036724915" MODIFIED="1457120296935" TEXT="implicit next pos"/>
</node>
</node>
<node CREATED="1455928166683" ID="ID_238485247" MODIFIED="1512926191929" TEXT="accept_until">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1455928383765" ID="ID_522592769" MODIFIED="1455928389737" TEXT="accept until condition is met"/>
<node CREATED="1457231714541" ID="ID_1234563594" MODIFIED="1457231725704" TEXT="ID spec"/>
<node CREATED="1472829929343" ID="ID_797835614" MODIFIED="1472829944881" TEXT="special handling for Ref::END / Ref::ATTRIBS"/>
<node CREATED="1457231524839" ID="ID_1492447432" MODIFIED="1575133326760" TEXT="needs to establish responsible target beforehand">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      since, on interface level, we're pretending that this mutator <i>is a single collection like thing,</i>
    </p>
    <p>
      while in fact the implementation might bind to several opaque target structures.
    </p>
    <p>
      Thus, internally we'll have a <b>selector</b>&#160;to determine which onion layer is responsible for
    </p>
    <p>
      handling an element as designated by the argument. It is then the responsibility
    </p>
    <p>
      of this specific onion layer to accept forward until meeting this element.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1457231727259" ID="ID_1318527107" MODIFIED="1575133326776">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <font color="#e72d0e">warning:</font>&#160;messed-up state in case of failure
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      this is (probably) the only operation which entirely messes up the mutator state
    </p>
    <p>
      when the designated target does not exist. The assumption is that a diff application front-end
    </p>
    <p>
      will check the bool return value and throw an exception in that case
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1455927413191" ID="ID_94560199" MODIFIED="1512926191930" TEXT="findSrc">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1461946965569" ID="ID_803034273" MODIFIED="1461946980872" TEXT="locate designated src element"/>
<node CREATED="1455928275316" ID="ID_1937317223" MODIFIED="1512926191930">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <i>move</i>&#160;into target
    </p>
  </body>
</html></richcontent>
<node CREATED="1455928537273" ID="ID_1177385447" MODIFIED="1457120296935" TEXT="implicit next pos"/>
</node>
</node>
<node CREATED="1455928184504" ID="ID_836844042" MODIFIED="1512926191931" TEXT="assignElm">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1455928393788" ID="ID_403756991" MODIFIED="1512926191931" TEXT="locate target">
<node CREATED="1457190206827" ID="ID_1711690131" MODIFIED="1457190220485" TEXT="allready accepted element"/>
<node CREATED="1457190227089" ID="ID_1094585247" MODIFIED="1457190234435" TEXT="find by ID comparison"/>
<node CREATED="1457190235191" ID="ID_926146761" MODIFIED="1457190240027" TEXT="try current element first"/>
</node>
<node CREATED="1455928403931" ID="ID_1750063931" MODIFIED="1512926191931" TEXT="assign payload">
<node CREATED="1455928586506" ID="ID_1163700862" MODIFIED="1457190259104" TEXT="implicit Type context"/>
<node CREATED="1455928612239" ID="ID_588352525" MODIFIED="1455928619186" TEXT="embedded target data"/>
</node>
</node>
<node CREATED="1455928189695" ID="ID_1319966604" MODIFIED="1512926191932" TEXT="mutateChild">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1457190279001" ID="ID_1000897100" MODIFIED="1512926191932" TEXT="locate target">
<node CREATED="1457190288624" ID="ID_1258290029" MODIFIED="1457190296115" TEXT="same as in &apos;assignElm&apos;"/>
</node>
<node CREATED="1455928415161" ID="ID_1664558338" MODIFIED="1512926191932" TEXT="fabricate mutator">
<node CREATED="1457190370846" ID="ID_1146518798" MODIFIED="1457190374749" TEXT="suitable for target"/>
<node CREATED="1455928625269" ID="ID_1880024064" MODIFIED="1457190388167" TEXT="open / init mutator"/>
</node>
<node CREATED="1457190320444" ID="ID_1835423331" MODIFIED="1512926191933" TEXT="place into provided buffer">
<node CREATED="1457190396170" ID="ID_275107868" MODIFIED="1457190419158">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <i>throw </i>when
    </p>
    <p>
      insufficent space
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node CREATED="1464113688645" ID="ID_954516697" MODIFIED="1512926191934" STYLE="fork" TEXT="completeScope">
<edge COLOR="#808080" STYLE="bezier" WIDTH="thin"/>
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1464113727192" ID="ID_357369611" MODIFIED="1464113739514" TEXT="pr&#xfc;ft, ob alles eingel&#xf6;st wurde"/>
<node CREATED="1464113740005" ID="ID_1649881726" MODIFIED="1464113748425" TEXT="em&#xf6;glicht Aufr&#xe4;um-Arbeiten"/>
<node CREATED="1464113754412" ID="ID_1095488369" MODIFIED="1575133327061" TEXT="kann NOP implementiert werden">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...in F&#228;llen, in denen der konkrete onion-layer
    </p>
    <p>
      &#252;berhaupt nicht im Stande ist, das zu beurteilen.
    </p>
    <p>
      Wichtigster solcher Fall ist die <b>Bindung auf Objekt-Felder</b>
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#e5500c" CREATED="1461946693701" ID="ID_36720859" MODIFIED="1512926191934" STYLE="fork" TEXT="meta-Operationen">
<edge COLOR="#808080" STYLE="bezier" WIDTH="thin"/>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1455928193863" ID="ID_1750104896" MODIFIED="1512926191935" TEXT="CTOR">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1455928427432" ID="ID_1760631999" MODIFIED="1461946914155" TEXT="take ownership of existing contents"/>
<node CREATED="1461946885292" ID="ID_1743121055" MODIFIED="1461946907948" TEXT="move them into source buffer"/>
</node>
<node CREATED="1455928193863" ID="ID_545402083" MODIFIED="1512926191935" TEXT="open_subScope">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1455928427432" ID="ID_1189452497" MODIFIED="1455928435275" TEXT="push mutator on stack"/>
<node CREATED="1457190622236" ID="ID_1347446227" MODIFIED="1461946862429">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      invoke <b>mutateChild</b>
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1455928198718" ID="ID_1546579792" MODIFIED="1512926191936" TEXT="close_subScope">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1455928440366" ID="ID_33734026" MODIFIED="1457190669578" TEXT="just pop mutator"/>
<node CREATED="1457190670069" ID="ID_242879400" MODIFIED="1575133327206" TEXT="abandon mutator">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <b>NOTE</b>: mutator need to be written in such a way
    </p>
    <p>
      to be just discarded when done with the alterations.
    </p>
    <p>
      That is, the mutator<i>&#160;must not</i>&#160;incorporate the target data, rather it is expected
    </p>
    <p>
      to construct the new target data efficiently in place.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1457190826145" ID="ID_1342883622" MODIFIED="1457190834604" TEXT="return to previous mutator"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#85212c" CREATED="1455928782528" HGAP="-171" ID="ID_1300146872" MODIFIED="1533684815449" TEXT="kritische Aufgaben" VSHIFT="-207">
<font NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1455928917782" HGAP="40" ID="ID_812598653" MODIFIED="1512926191937" TEXT="failure Policy" VSHIFT="-11">
<font NAME="SansSerif" SIZE="15"/>
<icon BUILTIN="idea"/>
<node CREATED="1455928937683" ID="ID_784708305" MODIFIED="1455928953041" TEXT="ignorieren">
<icon BUILTIN="full-1"/>
</node>
<node CREATED="1455928949346" ID="ID_1044467237" MODIFIED="1455928955415" TEXT="scheitern">
<icon BUILTIN="full-2"/>
</node>
</node>
<node CREATED="1455928800670" HGAP="83" ID="ID_1116973935" MODIFIED="1512926191937" TEXT="selector predicate" VSHIFT="-5">
<node CREATED="1455928838865" ID="ID_1505861137" MODIFIED="1455928845027" TEXT="konfigurierbarer Typ-Check"/>
<node CREATED="1455928846048" ID="ID_1278060510" MODIFIED="1455928856146" TEXT="TypCheck nur einmal"/>
<node CREATED="1455928856870" ID="ID_806857541" MODIFIED="1455928878335" TEXT="ggfs Sequenz von ID-Checks"/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#990000" CREATED="1455928805717" FOLDED="true" HGAP="76" ID="ID_496821508" MODIFIED="1576200699031" TEXT="mutator allocation" VSHIFT="-1">
<font NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1455930962188" ID="ID_1435085503" MODIFIED="1455930970295" TEXT="konkreter Mutator-Typ"/>
<node CREATED="1455930971027" ID="ID_1070880241" MODIFIED="1455930980789" TEXT="ist in jedem Einzelfall anders"/>
<node CREATED="1455931008750" ID="ID_643730154" MODIFIED="1575133327378" TEXT="Mutator enth&#xe4;lt Closures">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Mutator enth&#228;lt die Bindung auf die konkreten Daten
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1455930997303" ID="ID_1710972681" MODIFIED="1455931003962" TEXT="kann erhebliche Gr&#xf6;&#xdf;e haben"/>
<node CREATED="1455931025595" ID="ID_1695885971" MODIFIED="1575133327404" TEXT="ist a priori nicht bekannt">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      stellt sich u.U erst w&#228;hrend der Verarbeitung heraus:
    </p>
    <p>
      bei &quot;offenen Datenstrukturen&quot; entscheided jeder Typ selber,
    </p>
    <p>
      welchen Mutator er erzeugt
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1456011474920" HGAP="-25" ID="ID_1292432889" MODIFIED="1525124215078" TEXT="L&#xf6;sungsans&#xe4;tze" VSHIFT="28">
<icon BUILTIN="idea"/>
<node CREATED="1456011490414" ID="ID_215912114" MODIFIED="1512926191940" TEXT="doch rekursiv">
<icon BUILTIN="button_cancel"/>
<node CREATED="1456011497525" ID="ID_165091928" MODIFIED="1456011507880" TEXT="elegant"/>
<node CREATED="1456011508731" ID="ID_1951843758" MODIFIED="1456011513711" TEXT="Allokation nebenbei"/>
<node CREATED="1456011591427" ID="ID_167337651" MODIFIED="1512926191941">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      aber:&#160;Aufrufprinzip
    </p>
  </body>
</html></richcontent>
<node CREATED="1456011595024" ID="ID_1268079925" MODIFIED="1456011598819" TEXT="mu&#xdf; konsumieren"/>
<node CREATED="1456011599455" ID="ID_862262812" MODIFIED="1456011634435">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Verb mu&#223; den
    </p>
    <p>
      Diff bekommen
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1456011647057" ID="ID_905672765" MODIFIED="1456011652964" TEXT="verwirrendes API"/>
<node CREATED="1456011653904" ID="ID_1199841076" MODIFIED="1456011656396" TEXT="komplexe Typen"/>
<node CREATED="1456011660495" ID="ID_118747856" MODIFIED="1456011661939" TEXT="njet"/>
</node>
</node>
<node CREATED="1456011666486" ID="ID_1076199754" MODIFIED="1512926191941" TEXT="Interpreter konsumiert">
<icon BUILTIN="button_cancel"/>
<node CREATED="1456011676086" ID="ID_1849622483" MODIFIED="1456011688340">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      und delegiert iterativ
    </p>
    <p>
      an die Verben
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1456011689043" ID="ID_1674393396" MODIFIED="1456011698214" TEXT="mu&#xdf; Verben untersuchen"/>
<node CREATED="1456011698970" ID="ID_845834851" MODIFIED="1456011717387" TEXT="aktiv in Rekursion einsteigen"/>
<node CREATED="1456011717951" ID="ID_1167483025" MODIFIED="1456011722666" TEXT="auch verwirrend"/>
</node>
<node CREATED="1456011734253" ID="ID_478177524" MODIFIED="1512926191942" TEXT="doch beim Stack bleiben">
<icon BUILTIN="help"/>
<node CREATED="1456011910869" ID="ID_182841484" MODIFIED="1456429740520" TEXT="kleineres &#xdc;bel">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1456011918381" ID="ID_54237513" MODIFIED="1456011991777" TEXT="Rolle des Mutators">
<icon BUILTIN="help"/>
</node>
</node>
<node CREATED="1456012543585" HGAP="26" ID="ID_1774389094" MODIFIED="1512926191942" TEXT="Struktur-Ideen" VSHIFT="20">
<node CREATED="1456012563942" ID="ID_842130823" MODIFIED="1456012570081" TEXT="Referenz zum Mutator"/>
<node CREATED="1456012572045" ID="ID_340104657" MODIFIED="1456012577752" TEXT="Mutator ist smart-ptr"/>
<node CREATED="1456012578868" ID="ID_1107535684" MODIFIED="1456012585103" TEXT="Frontend-Backend"/>
<node CREATED="1456012585835" ID="ID_1377280414" MODIFIED="1456012605260" TEXT="Mutator im Inline-Puffer"/>
<node CREATED="1456012665681" ID="ID_227844194" MODIFIED="1575133327718" TEXT="Gr&#xf6;&#xdf;e initial festlegen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...denn in dem Moment, wo wir den top-level TreeMutator erzeugen,
    </p>
    <p>
      k&#246;nnen wir rekursiv abfragen, wie gro&#223; alle m&#246;glichen Kind-Mutatoren werden k&#246;nnen
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d8bba4" CREATED="1456011994442" HGAP="68" ID="ID_343687995" MODIFIED="1561827465475" TEXT="zur Entscheidung..." VSHIFT="37">
<edge COLOR="#93766f"/>
<arrowlink COLOR="#b10046" DESTINATION="ID_820279076" ENDARROW="Default" ENDINCLINATION="14;-46;" ID="Arrow_ID_103087571" STARTARROW="None" STARTINCLINATION="-137;-20;"/>
<font NAME="SansSerif" SIZE="15"/>
<icon BUILTIN="idea"/>
<node CREATED="1456012846185" ID="ID_714953132" MODIFIED="1512926191944" TEXT="was ist der Mutator">
<icon BUILTIN="help"/>
<node CREATED="1456012035837" ID="ID_180428099" MODIFIED="1456012039389" TEXT="Container"/>
<node CREATED="1456184290492" ID="ID_1860454535" MODIFIED="1456184298524" TEXT="Strategy"/>
<node CREATED="1456012028134" ID="ID_820709337" MODIFIED="1456012031953" TEXT="Adapter"/>
<node CREATED="1456012033085" ID="ID_755204065" MODIFIED="1456012034841" TEXT="Puffer"/>
</node>
<node CREATED="1456012859031" ID="ID_1120123290" MODIFIED="1512926191944" TEXT="wer erzeugt den Mutator">
<icon BUILTIN="help"/>
<node CREATED="1456013036967" ID="ID_1719719197" MODIFIED="1456013042330" TEXT="der Applikator"/>
<node CREATED="1456013043038" ID="ID_1263902491" MODIFIED="1456013047497" TEXT="die Zieldatenstruktur"/>
</node>
<node CREATED="1456013049909" HGAP="107" ID="ID_1581320145" MODIFIED="1512926191945" TEXT="Anwendungs-F&#xe4;lle" VSHIFT="29">
<cloud COLOR="#d6c6a5"/>
<font NAME="SansSerif" SIZE="16"/>
<node CREATED="1456013057420" ID="ID_1458089109" MODIFIED="1512926191945" TEXT="externe Datenstruktur">
<node CREATED="1456013290573" ID="ID_802953483" MODIFIED="1456013297208" TEXT="hat beliebig Platz"/>
<node CREATED="1456013298084" ID="ID_117703425" MODIFIED="1456013305071" TEXT="Closures in der Impl-Klasse"/>
<node CREATED="1456013306186" ID="ID_1397201984" MODIFIED="1456013330235" TEXT="effizient nur ohne Trennung"/>
<node CREATED="1456013359452" ID="ID_675424172" MODIFIED="1456013364783" TEXT="braucht Hilfe beim Lebenszyklus"/>
<node CREATED="1456013368426" ID="ID_1906604960" MODIFIED="1456013373717" TEXT="k&#xf6;nnte Puffer selber allozieren"/>
</node>
<node CREATED="1456013068179" ID="ID_774826163" MODIFIED="1512926191945" TEXT="Rec&lt;GenNode&gt;">
<node CREATED="1456013114140" ID="ID_1057946691" MODIFIED="1456013123199" TEXT="hat keinen extra Platz"/>
<node CREATED="1456013123739" ID="ID_1081025245" MODIFIED="1456013132837" TEXT="Tick: in RecMutator umdeuten"/>
<node CREATED="1456013133386" ID="ID_1417100176" MODIFIED="1456013138077" TEXT="Puffer mu&#xdf; woanders leben"/>
<node CREATED="1456013149327" ID="ID_687443349" MODIFIED="1456013168385" TEXT="Impl-Collection in Puffer verschieben"/>
</node>
<node CREATED="1456013063011" ID="ID_908970422" MODIFIED="1512926191946" TEXT="Collection">
<node CREATED="1456013202760" ID="ID_1619699608" MODIFIED="1456013218586" TEXT="hat keinen extra Platz"/>
<node CREATED="1456013219750" ID="ID_1766379648" MODIFIED="1456013227785" TEXT="kann &#xfc;berhaupt nicht helfen"/>
<node CREATED="1456013231117" ID="ID_1899116139" MODIFIED="1456013238279" TEXT="Puffer mu&#xdf; woanders leben"/>
<node CREATED="1456013239820" ID="ID_1794944692" MODIFIED="1456013244911" TEXT="wieder Verschiebe-Trick"/>
</node>
</node>
<node CREATED="1456184583336" HGAP="125" ID="ID_1225582084" MODIFIED="1512926191947" TEXT="weitere Beobachtungen" VSHIFT="36">
<icon BUILTIN="forward"/>
<node CREATED="1456184689466" ID="ID_1635861686" MODIFIED="1512926191947" TEXT="externe Struktur == Ausnahme">
<node CREATED="1456184725333" ID="ID_646480978" MODIFIED="1456184735783" TEXT="unterst&#xfc;tzt keine Umordnung"/>
<node CREATED="1456184736827" ID="ID_171431775" MODIFIED="1456184746398" TEXT="unterst&#xfc;tzt kein Hinzuf&#xfc;gen"/>
<node CREATED="1456184746946" ID="ID_1768153345" MODIFIED="1456184756780" TEXT="L&#xf6;schen wird uminterpretiert"/>
</node>
<node CREATED="1456184697944" ID="ID_1904390217" MODIFIED="1512926191947" TEXT="Mutator und subMutator">
<node CREATED="1456184816553" ID="ID_1019484567" MODIFIED="1456184832218" TEXT="getypte Kinder -&gt; subMutator"/>
<node CREATED="1456184833446" ID="ID_1632860381" MODIFIED="1456184864038" TEXT="subMutator f&#xfc;r subCollection"/>
<node CREATED="1461881226351" ID="ID_211513452" MODIFIED="1461881233506" TEXT="subMutator == &quot;onon layer&quot;"/>
<node CREATED="1456184892870" ID="ID_1216247694" MODIFIED="1456184905433" TEXT="Rec&lt;GenNode&gt; -&gt; zwei subCollections"/>
</node>
<node CREATED="1456186634006" ID="ID_310265994" MODIFIED="1512926191948" TEXT="Profil des Mutators">
<node CREATED="1456186654411" ID="ID_1341247857" MODIFIED="1575133328189" TEXT="Erzeugen geht schnell">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      nur Zuweisung einiger Referenzen
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1456186688671" ID="ID_1110994752" MODIFIED="1512926191948" TEXT="Allokation">
<node CREATED="1456186753094" ID="ID_653529641" MODIFIED="1456186771647" TEXT="Gr&#xf6;&#xdf;enordnung der Zieldatenstruktur"/>
<node CREATED="1456186772163" ID="ID_1555284305" MODIFIED="1456186779750" TEXT="im Collection-Fall kann man durchreichen"/>
</node>
<node CREATED="1456186797568" ID="ID_1773938090" MODIFIED="1456186809890" TEXT="ausschlie&#xdf;lich an die Diff-Anwendung gekoppelt"/>
<node CREATED="1456186915112" ID="ID_1560470636" MODIFIED="1512926191948" TEXT="Gr&#xf6;&#xdf;e duch Binde-Voragang bestimmt">
<node CREATED="1456186933998" ID="ID_528314478" MODIFIED="1533608413864" TEXT="Zahl der subMutatoren">
<node CREATED="1456187166294" ID="ID_1282142171" MODIFIED="1456187174186" TEXT="ein Vector pro Collection"/>
<node CREATED="1456416605491" ID="ID_1722541208" MODIFIED="1456416614478" TEXT="eigentlicher Content wird durchgereicht"/>
</node>
<node CREATED="1456186946508" ID="ID_335779075" MODIFIED="1533608413865" TEXT="Zahl der Einzelbindungen">
<node CREATED="1456187264346" ID="ID_81725454" MODIFIED="1456187278539" TEXT="ein Slot pro Binding-Layer"/>
<node CREATED="1456187279408" ID="ID_954788495" MODIFIED="1561827465475" TEXT="Attribut-Map">
<node CREATED="1456187295550" ID="ID_534521654" MODIFIED="1456187329981" TEXT="Setter und Getter"/>
<node CREATED="1456187330641" ID="ID_1069743778" MODIFIED="1456187335684" TEXT="zwei Slots pro Attribut"/>
<node CREATED="1456416534525" ID="ID_1195638113" MODIFIED="1575133328373" TEXT="+Storage f&#xfc;r den Key">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ....denn der liegt (mind) einmal vor,
    </p>
    <p>
      eingebettet in ein Selektor-Pr&#228;dikat,
    </p>
    <p>
      welches bestimmt, ob dieses Attribut angesprochen wird
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1456187338288" ID="ID_1194536240" MODIFIED="1456187339692" TEXT="Heap"/>
</node>
</node>
</node>
</node>
<node CREATED="1456437116514" ID="ID_1766577674" MODIFIED="1512926191950" TEXT="Reflexion">
<cloud COLOR="#d2c2d9"/>
<node CREATED="1456187434491" ID="ID_860365577" MODIFIED="1456437137837" TEXT="alles ekelhaft">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="smily_bad"/>
</node>
<node CREATED="1456187447618" ID="ID_1318283286" MODIFIED="1456187459568" TEXT="Sackgasse">
<icon BUILTIN="help"/>
</node>
<node CREATED="1456424184807" ID="ID_770700785" MODIFIED="1525124215095" TEXT="Alternativen">
<icon BUILTIN="help"/>
<node CREATED="1456424237672" ID="ID_811857290" MODIFIED="1575133328443" TEXT="zu Fu&#xdf; programmieren">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      was man konventionellerweise auch macht.
    </p>
    <p>
      Ich verstehe nun, warum. Es ist der <i>vern&#252;nftigste</i>&#160;Weg.
    </p>
    <p>
      
    </p>
    <p>
      Leider scheidet das aber f&#252;r uns hier genau aus,
    </p>
    <p>
      denn das gesamte Projekt entstand, aufgrund der inh&#228;renten Limitierungen
    </p>
    <p>
      der &quot;vern&#252;nftigen&quot; (=pragmatischen) L&#246;sung.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1456424257381" ID="ID_740973686" MODIFIED="1575133328458" TEXT="introspektive Datenstruktur">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      dieser Ansatz l&#246;st tats&#228;chlich das Problem,
    </p>
    <p>
      aber zu dem Preis, da&#223; er die Strukturen von innen her zersetzt.
    </p>
    <p>
      Auf lange Sicht wird das System wuchern wie ein Krebsgeschw&#252;hr,
    </p>
    <p>
      und man kann das nur mit Disziplin eind&#228;mmen, was <i>realistisch gesprochen</i>&#160;meint,
    </p>
    <p>
      da&#223; es vergeblich ist. Einen Kampf gegen das Menschliche, Allzumenschliche kann man nicht gewinnen.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1456424962239" ID="ID_933613304" MODIFIED="1575133328492" TEXT="einseitige Fernsteuerung">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      das ist die schlankeste L&#246;sung, die &#228;sthetisch befriedigt.
    </p>
    <p>
      Sie hat aber das Problem, da&#223; dadurch die Kollaboration im Kern ausgel&#246;scht wird.
    </p>
    <p>
      Wir haben eine Seite, die absolute Macht hat, und einen &quot;Partner&quot;, der tats&#228;chlich nur ferngesteuert ist.
    </p>
    <p>
      Wir m&#252;ssen daf&#252;r auf die Subsidiarit&#228;t verzichten, und damit auf die M&#246;glichkeit zur Entkoppelung.
    </p>
    <p>
      Dazu kommt, da&#223; die notwendige Fern-Wirkung stets eine zus&#228;tzliche Last bedeutet.
    </p>
    <p>
      Denn wir m&#252;ssen auf Umst&#228;nde und Strukturen einwirken, die von dem Ort, an dem die
    </p>
    <p>
      Steuerung stattfindet, entfernt ist, entfernt in einen anderen Kontext.
    </p>
  </body>
</html></richcontent>
<node CREATED="1456425646332" ID="ID_897964875" MODIFIED="1456425651999" TEXT="oberfl&#xe4;chengetrieben"/>
<node CREATED="1456425652683" ID="ID_437402611" MODIFIED="1456425656575" TEXT="zentralgesteuert"/>
</node>
<node CREATED="1456424295296" ID="ID_791299475" MODIFIED="1533608413867" TEXT="DOM + Attribution">
<icon BUILTIN="idea"/>
<node CREATED="1456424627860" ID="ID_1294496825" MODIFIED="1456424632247" TEXT="keine Alternative"/>
<node CREATED="1456424632907" ID="ID_1566098600" MODIFIED="1456424642598" TEXT="denn genau das machen wir hier"/>
<node CREATED="1456437181070" HGAP="23" ID="ID_1066542027" MODIFIED="1561827465476" STYLE="bubble" TEXT="Analyse" VSHIFT="44">
<font BOLD="true" NAME="SansSerif" SIZE="15"/>
<icon BUILTIN="info"/>
<node CREATED="1456424664015" FOLDED="true" ID="ID_1032924247" MODIFIED="1561827483835" TEXT="Problem: Zusatz-Kosten">
<node CREATED="1456424675173" ID="ID_1585536570" MODIFIED="1456437520768" TEXT="...f&#xfc;r das &quot;+&quot;"/>
<node CREATED="1456424695123" ID="ID_331589423" MODIFIED="1456437520769" TEXT="also die Bindung"/>
<node CREATED="1456424722039" FOLDED="true" ID="ID_1926017913" MODIFIED="1561827482931" TEXT="notwendige Kosten">
<node CREATED="1456424725927" ID="ID_1322872728" MODIFIED="1456437520769" TEXT="denn das DOM ist rein"/>
<node CREATED="1456424730022" ID="ID_282791744" MODIFIED="1456437520769" TEXT="hat also keinen Platz f&#xfc;r explizite Eigenschaften"/>
<node CREATED="1456424765113" ID="ID_1716539711" MODIFIED="1456437520770">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      und nur letztere sind <i>tangibel</i>
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node CREATED="1456425913664" FOLDED="true" HGAP="28" ID="ID_1929919601" MODIFIED="1561827483835" TEXT="notwendig" VSHIFT="-1">
<node CREATED="1456426041626" FOLDED="true" ID="ID_101262346" MODIFIED="1561827482931" TEXT="Duplikation">
<node CREATED="1456425918071" ID="ID_18884187" MODIFIED="1456437520772" TEXT="DOM-IDs am Binde-Punkt">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      um den Binde- bzw. Ankn&#252;pfungs-Punkt in den real-Daten &#252;berhaupt zu finden,
    </p>
    <p>
      m&#252;ssen IDs aus dem DOM innerhalb der real-Daten nochmal wiederholt, also redundant vorliegen
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1456425930718" ID="ID_1301765327" MODIFIED="1456437520772" TEXT="real-Daten im DOM">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      damit das DOM ein echtes DOM ist, mu&#223; es die relevanten real-Daten duplizieren,
    </p>
    <p>
      um sie in einem abstrahierten Kontext zug&#228;nglich zu machen
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1456426052973" ID="ID_239653128" MODIFIED="1456437520772" TEXT="Binde-Daten">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      noch zus&#228;tzlich zur genannten Duplikation mu&#223;
    </p>
    <p>
      die Abblidung der Strukturen aufeinander
    </p>
    <p>
      an irgend einer Stelle repr&#228;sentiert werden.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1456426322482" ID="ID_1330880148" MODIFIED="1456437520773" TEXT="irreduzibel">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      man kann versuchen, die beiden Elemente der Duplikation aufzul&#246;sen.
    </p>
    <p>
      Allerdings gibt es daf&#252;r &#252;berhaupt nur zwei m&#246;gliche Richtungen.
    </p>
    <ul>
      <li>
        man l&#246;st die Parallel-Strukturen auf
      </li>
      <li>
        man ersetzt das DOM durch reine Bindungs-Strukturen
      </li>
    </ul>
    <p>
      Beide Ans&#228;tze laufen aber auf eine der schon genanten, anderen Alternativen hinaus.
    </p>
    <p>
      Wenn man die Parallel-Strukturen beseitigt, enden wir bei irgend einer Form von Fernsteuerung.
    </p>
    <p>
      Wenn man die Modell-Natur aus dem DOM entfernt, das hei&#223;t, dort nur noch reine<br />Binde-Strukturen speichert, dann endet man bei einer Form von Introspektion. Entweder,
    </p>
    <p>
      das R&#252;ckgrat und die Navigation verbleibt bei dieser Introspektion; dann haben wir eines
    </p>
    <p>
      der typischen Objekt-Systeme. Oder die Binde-Daten werden zu einem reinen Anhang
    </p>
    <p>
      an eine selbst&#228;ndig bestehende Datenstruktur; dann enden wir bei klassischer Introspektion.
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1456428989206" FOLDED="true" HGAP="28" ID="ID_1999101531" MODIFIED="1561827483835" TEXT="Ma&#xdf;stab" VSHIFT="17">
<node CREATED="1456429002332" FOLDED="true" ID="ID_294696563" MODIFIED="1561827482931" TEXT="Trennung">
<node CREATED="1456429013283" ID="ID_462304497" MODIFIED="1456437520773" TEXT="abstrakt"/>
<node CREATED="1456429016050" ID="ID_403266218" MODIFIED="1456437520774" TEXT="tangibel"/>
</node>
<node CREATED="1456429046358" FOLDED="true" ID="ID_327619080" MODIFIED="1561827482931" TEXT="Fokussierung innerhalb">
<node CREATED="1456429106894" ID="ID_345392088" MODIFIED="1456437520774" TEXT="Belange des UI"/>
<node CREATED="1456429110702" ID="ID_1531485619" MODIFIED="1456437520774" TEXT="Notwendigkeiten des Edit-Vorganges"/>
<node CREATED="1456429159559" ID="ID_4036488" MODIFIED="1456437520774" TEXT="nach der inh&#xe4;renten Form suchen"/>
</node>
<node CREATED="1456429053206" ID="ID_643637016" MODIFIED="1456437520774" TEXT="wenig &#xdc;berlapp"/>
</node>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1456423477045" HGAP="146" ID="ID_1294023197" MODIFIED="1512926191957" TEXT="Stand der &#xdc;berlegungen" VSHIFT="11">
<icon BUILTIN="forward"/>
<node CREATED="1456423615274" ID="ID_40789197" MODIFIED="1512926191958" TEXT="Performance">
<node CREATED="1456423617763" ID="ID_524247634" MODIFIED="1456423622197" TEXT="wird von der Allokation bestimmt"/>
<node CREATED="1456423642687" ID="ID_1252228590" MODIFIED="1456423660940">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      reflektiert die Zahl der <i>Struktur</i>-Element
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1456423661669" ID="ID_1064355256" MODIFIED="1575133328660" TEXT="Collections sind au&#xdf;en vor">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...will sagen:
    </p>
    <p>
      f&#252;r die habe ich bereits eine effiziente Implementierung,
    </p>
    <p>
      die darauf beruht, den Content beiseite zu schieben.
    </p>
    <p>
      Ich brauche also nur ein Container-Frontend (z.B. einen Vector ohne Inhalt) zus&#228;tzlich,
    </p>
    <p>
      um den verschobenen Inhalt erst mal aufzunehmen.
    </p>
    <p>
      Also z&#228;hlen Kinder-Collections nur als <i>ein </i>Strukturelement.
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1456423839637" ID="ID_1087136823" MODIFIED="1512926191958" TEXT="Platzbedarf">
<node CREATED="1456423848028" ID="ID_212325084" MODIFIED="1456423851935" TEXT="ist signifikant"/>
<node CREATED="1456423860130" ID="ID_1592353572" MODIFIED="1456423872404" TEXT="Gr&#xf6;&#xdf;enordnung der Ziel-Struktur (ohne Collections)"/>
<node CREATED="1456423883159" ID="ID_229501623" MODIFIED="1456423918662" TEXT="permanentes Vorhalten in der Ziel-Datenstruktur ist keine gute Idee"/>
<node CREATED="1456423940695" ID="ID_301596165" MODIFIED="1456423963088" TEXT="Platz wird ausschlie&#xdf;lich zur Diff-Anwendung gebraucht"/>
<node CREATED="1456423964572" ID="ID_1023557891" MODIFIED="1456423986445" TEXT="Stack-Struktur ist sinnvoll"/>
<node CREATED="1456424025228" ID="ID_1821511383" MODIFIED="1456424051133" TEXT="Kacheln, blockweise"/>
</node>
<node CREATED="1456428753110" ID="ID_900159058" MODIFIED="1512926191959" TEXT="Struktur">
<node CREATED="1456428763108" ID="ID_158540274" MODIFIED="1456428768063" TEXT="Frontend-Backend"/>
<node CREATED="1456428768579" ID="ID_1251866964" MODIFIED="1456428772654" TEXT="aber das Backend ist inline"/>
<node CREATED="1456428774171" ID="ID_745180197" MODIFIED="1456428896734" TEXT="Puffergr&#xf6;&#xdf;e initial festlegen"/>
<node CREATED="1456429302212" ID="ID_377071784" MODIFIED="1456429313666">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      rekursiv,
    </p>
    <p>
      duch Bindung bestimmt
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1456429330129" ID="ID_1923625809" MODIFIED="1512926191960" TEXT="technische Probleme">
<node CREATED="1456429337736" ID="ID_398416910" MODIFIED="1456429344154" TEXT="runtime - compiletime"/>
<node CREATED="1456429403455" ID="ID_166294730" MODIFIED="1456429408386" TEXT="Festlegen der Binde-Struktur"/>
<node CREATED="1456429465015" ID="ID_1980478069" MODIFIED="1456429476745" TEXT="&#xdc;bersetzen in eine Typ-Spezifikation"/>
<node CREATED="1456429488492" ID="ID_393439057" MODIFIED="1456429496150" TEXT="aus dem Typ eine Gr&#xf6;&#xdf;e ableiten"/>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1456430088803" HGAP="129" ID="ID_481518617" MODIFIED="1576282411283" TEXT="L&#xf6;sung" VSHIFT="25">
<icon BUILTIN="idea"/>
<node CREATED="1456430099658" ID="ID_820279076" MODIFIED="1512926191960" TEXT="Entscheidung">
<linktarget COLOR="#b10046" DESTINATION="ID_820279076" ENDARROW="Default" ENDINCLINATION="14;-46;" ID="Arrow_ID_103087571" SOURCE="ID_343687995" STARTARROW="None" STARTINCLINATION="-137;-20;"/>
<font NAME="SansSerif" SIZE="14"/>
<node CREATED="1456430153555" ID="ID_1609974475" MODIFIED="1456430170074" TEXT="es ist wesentlich"/>
<node CREATED="1456430115696" ID="ID_546849410" MODIFIED="1456430120227" TEXT="es ist notwendig"/>
<node CREATED="1456430109105" ID="ID_366046751" MODIFIED="1456430172153" TEXT="es ist machbar"/>
</node>
<node CREATED="1456430178935" HGAP="22" ID="ID_1069025314" MODIFIED="1512926191961" TEXT="der Weg..." VSHIFT="5">
<node CREATED="1456430183863" ID="ID_464613085" MODIFIED="1456430193433" TEXT="expliziter Stack"/>
<node CREATED="1456430194117" ID="ID_943734591" MODIFIED="1456430211847" TEXT="enth&#xe4;lt Front-End"/>
<node CREATED="1456430212811" ID="ID_90339221" MODIFIED="1456430233644" TEXT="und Backend in Puffer"/>
<node CREATED="1456430234656" ID="ID_1583269810" MODIFIED="1456430240155" TEXT="der Puffer ist eingebettet"/>
<node CREATED="1456430240887" ID="ID_1308625708" MODIFIED="1512926191961" TEXT="Grundmuster der Bindung">
<node CREATED="1456430374141" ID="ID_1551177855" MODIFIED="1456430398830" TEXT="Collection + Element-Konstruktur"/>
<node CREATED="1456430440196" ID="ID_1922438930" MODIFIED="1456430445551" TEXT="Attribut-Map als Getter/Setter"/>
<node CREATED="1456430515186" ID="ID_831818012" MODIFIED="1456430519166" TEXT="Rec&lt;GenNode&gt;"/>
</node>
<node CREATED="1457120439360" ID="ID_1972741688" MODIFIED="1576282358009" TEXT="ID match ist Aufgabe der Implementierung">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      das ist der wesentliche Kniff,
    </p>
    <p>
      durch den das Problem mit der &quot;absrakten, opaquen&quot; Position entsch&#228;rft wird
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1456430363599" ID="ID_1608232847" MODIFIED="1456505525321" TEXT="erlaube typ-gefilterte Kinder"/>
</node>
</node>
<node COLOR="#338800" CREATED="1576201938680" HGAP="146" ID="ID_486184645" MODIFIED="1576202931124" VSHIFT="62">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <font size="4">Implementierung: <b>Diff-Bindung</b></font>&#160;-&gt; Diff-System
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#47e573" DESTINATION="ID_61713493" ENDARROW="Default" ENDINCLINATION="-3400;234;" ID="Arrow_ID_1763921751" STARTARROW="None" STARTINCLINATION="-792;48;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1576203018747" FOLDED="true" HGAP="-50" ID="ID_645743424" MODIFIED="1576282432827" TEXT="Diff: Einbindung in das UI-Framework" VSHIFT="38">
<edge COLOR="#5d7d78"/>
<linktarget COLOR="#298c9e" DESTINATION="ID_645743424" ENDARROW="Default" ENDINCLINATION="-928;-33;" ID="Arrow_ID_653906070" SOURCE="ID_1903460265" STARTARROW="None" STARTINCLINATION="-2105;61;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1473352465473" ID="ID_158999012" MODIFIED="1518487921086" TEXT="in Tangible">
<icon BUILTIN="button_ok"/>
<node CREATED="1475250911087" ID="ID_1042895809" MODIFIED="1518487921086" TEXT="zu kl&#xe4;ren">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1475250919286" ID="ID_211228413" MODIFIED="1518487921086" TEXT="wie sieht die initiale (diff)Nachricht aus">
<icon BUILTIN="help"/>
<node CREATED="1475355977081" ID="ID_1302138609" MODIFIED="1518487921087" TEXT="dediziertes API"/>
<node CREATED="1475356001462" ID="ID_1339165799" MODIFIED="1518487921087" TEXT="Nexus zerlegt das"/>
<node CREATED="1475356007860" ID="ID_1405013613" MODIFIED="1518487921087" TEXT="l&#xf6;st direkt Anwendung aus"/>
</node>
<node CREATED="1475251507800" ID="ID_1645310973" MODIFIED="1518487921087" TEXT="wo/wie wird Diff-Nachricht behandelt">
<icon BUILTIN="help"/>
<node CREATED="1475355925880" ID="ID_464242009" MODIFIED="1576282358009" TEXT="...analog zur &quot;mark&quot;-Nachricht">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <ul>
      <li>
        diese wird im Nexus behandelt, in dem die Tangible::mark()-Methode aktiviert wird
      </li>
      <li>
        in dieser wiederum steckt eine Default-Handler-Sequenz, plus ein Strategy-Pattern
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1475250930756" ID="ID_509435943" MODIFIED="1518487921087" TEXT="wo steckt der Diff selber">
<icon BUILTIN="help"/>
<node CREATED="1475251013513" ID="ID_1464747905" MODIFIED="1518487921087" TEXT="Diff == iterierbare &lt;DiffStep&gt;-Sequenz">
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1475251032255" ID="ID_824967618" MODIFIED="1518487921087" TEXT="pa&#xdf;t nicht in eine GenNode">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1475355960899" ID="ID_1468155641" MODIFIED="1518487921087">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Marker-Typ <b>MutationMessage</b>
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1475250947858" ID="ID_1438298132" MODIFIED="1518487921087" TEXT="wer ist der Kommunikationspartner">
<icon BUILTIN="help"/>
<node CREATED="1475356021762" ID="ID_1261042951" MODIFIED="1518487921087" TEXT="irrelevant, da abstrahiert"/>
</node>
<node CREATED="1475250957097" ID="ID_1839306136" MODIFIED="1518487921087" TEXT="wie kennt das Tangible diesen Partner">
<icon BUILTIN="help"/>
</node>
</node>
<node COLOR="#990000" CREATED="1475342135193" FOLDED="true" HGAP="31" ID="ID_336806935" MODIFIED="1576203487696" TEXT="Problem: Diff-Nachricht" VSHIFT="7">
<arrowlink COLOR="#a7afc1" DESTINATION="ID_1363153586" ENDARROW="Default" ENDINCLINATION="931;-187;" ID="Arrow_ID_324877454" STARTARROW="Default" STARTINCLINATION="835;592;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1475342157302" ID="ID_1383404259" MODIFIED="1475342166025" TEXT="&quot;Diff&quot; ist kein Typ"/>
<node CREATED="1475342185707" ID="ID_787925049" MODIFIED="1475342190662" TEXT="Lumiera-Iteratoren sind generisch"/>
<node CREATED="1475342218598" ID="ID_686706998" MODIFIED="1502453541592" TEXT="Alternativen">
<icon BUILTIN="idea"/>
<node CREATED="1475342242123" ID="ID_996905586" MODIFIED="1512926192149" TEXT="implizite Diff-Facade">
<icon BUILTIN="button_cancel"/>
<node CREATED="1475342267168" ID="ID_1015562836" MODIFIED="1475342372677" TEXT="nur ID eines Diff senden..."/>
<node CREATED="1475342283158" ID="ID_859890341" MODIFIED="1475342287497" TEXT="Diff ist dann hinterlegt"/>
<node CREATED="1475342309914" ID="ID_1398047498" MODIFIED="1475342360640" TEXT="Wo? im GuiModel??">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1475342301331" ID="ID_496549205" MODIFIED="1475342346474" TEXT="zwar implizit, aber starr">
<icon BUILTIN="button_cancel"/>
</node>
</node>
<node CREATED="1475342230013" ID="ID_129545687" MODIFIED="1502453545312" TEXT="UI-Bus-Interface erweitern">
<icon BUILTIN="button_ok"/>
<node CREATED="1475342469085" ID="ID_218240539" MODIFIED="1475342487060" TEXT="Ausgangspunkt: DiffMutable">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1475342391631" ID="ID_1330153391" MODIFIED="1502599884276" TEXT="Transport per MutationMessage">
<icon BUILTIN="forward"/>
</node>
<node CREATED="1475342401278" ID="ID_1020722080" MODIFIED="1502453642509" TEXT="abstrakte Koppelung"/>
</node>
</node>
<node CREATED="1475444207483" ID="ID_920212553" MODIFIED="1502550756115" TEXT="Festlegung: Tangible als Zieltyp">
<linktarget COLOR="#9287b2" DESTINATION="ID_920212553" ENDARROW="Default" ENDINCLINATION="398;0;" ID="Arrow_ID_52222580" SOURCE="ID_62520790" STARTARROW="None" STARTINCLINATION="360;0;"/>
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1475356047496" HGAP="29" ID="ID_667427572" MODIFIED="1502454682718" TEXT="Implementierung" VSHIFT="14">
<arrowlink COLOR="#71e5ac" DESTINATION="ID_60387485" ENDARROW="Default" ENDINCLINATION="50;-12;" ID="Arrow_ID_1384671312" STARTARROW="None" STARTINCLINATION="12;195;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1475356059342" ID="ID_1039482059" MODIFIED="1475444176904" TEXT="wie wird Diff eingebettet">
<icon BUILTIN="help"/>
</node>
<node CREATED="1475439403514" ID="ID_1619035258" MODIFIED="1502453694045" TEXT="Entscheidung">
<icon BUILTIN="yes"/>
<node CREATED="1502453744365" ID="ID_452337305" MODIFIED="1512926192150" TEXT="Schritt-1">
<icon BUILTIN="button_cancel"/>
<node CREATED="1475439416185" ID="ID_963854956" MODIFIED="1575133340883" TEXT="Builder-Funktion nicht sinnvoll">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ....denn dann m&#252;&#223;te der Benutzer die Mechanik sehr genau verstehen, und stets eine auto-Variable definieren.
    </p>
    <p>
      Sinnvoll w&#228;re dieser Ansatz nur, wenn das UI-Bus-API eine MutationMessage const&amp; nehmen w&#252;rde,
    </p>
    <p>
      denn dann k&#246;nnte man den Builder-Aufruf inline schreiben.
    </p>
    <p>
      Da wir aber stets den Diff moven und dann iterieren, scheidet const&amp; aus
    </p>
    <p>
      Und f&#252;r eine reine Ref erzeugt C++ niemals eine anonyme Instanz!
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1475439429055" ID="ID_1383518557" MODIFIED="1575133340899" TEXT="also: embeded Buffer">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...und diesen mit VTable best&#252;cken.
    </p>
    <p>
      Daf&#252;r wird die &#228;u&#223;ere H&#252;lle non-virtual
    </p>
    <p>
      und kann noncopyable gemacht werden..
    </p>
    <p>
      Das erlaubt dem Benutzer, einfach zu schreiben
    </p>
    <p>
      MutationMessage(blaBlubb())
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1475439436134" ID="ID_583247605" MODIFIED="1475444176904" TEXT="verwende InPlaceBuffer"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1475356066853" ID="ID_821643910" MODIFIED="1533608413996" TEXT="Problem: Puffergr&#xf6;&#xdf;e">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1475444135180" ID="ID_1434100612" MODIFIED="1475444176904" TEXT="sinnvoll: Spezialfall f&#xfc;r Tangible"/>
<node CREATED="1475444145458" ID="ID_62520790" MODIFIED="1502550756115" TEXT="kann dann DiffSizeTraits spezialisieren">
<arrowlink COLOR="#9287b2" DESTINATION="ID_920212553" ENDARROW="Default" ENDINCLINATION="398;0;" ID="Arrow_ID_52222580" STARTARROW="None" STARTINCLINATION="360;0;"/>
</node>
</node>
</node>
<node CREATED="1502453753155" ID="ID_89098030" MODIFIED="1564495786621" TEXT="Schritt-2">
<linktarget COLOR="#bdbad3" DESTINATION="ID_89098030" ENDARROW="Default" ENDINCLINATION="600;-1189;" ID="Arrow_ID_554743885" SOURCE="ID_1584846573" STARTARROW="None" STARTINCLINATION="1459;870;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1502453814499" ID="ID_727706359" MODIFIED="1533608413997" TEXT="Puffer-Ansatz...">
<node CREATED="1502453828721" ID="ID_1337002332" MODIFIED="1502453830621" TEXT="komplex"/>
<node CREATED="1502453831233" ID="ID_443299660" MODIFIED="1502453835332" TEXT="unflexibel"/>
<node CREATED="1502453842463" ID="ID_1995272746" MODIFIED="1502453861969" TEXT="unn&#xf6;tiges Kopieren"/>
<node CREATED="1502453836112" ID="ID_1547334309" MODIFIED="1502453841067" TEXT="insgeheim doch gekoppelt"/>
</node>
<node CREATED="1502454064930" ID="ID_1876117833" MODIFIED="1502454072133" TEXT="brauche Entkoppelung"/>
<node CREATED="1502454072649" ID="ID_1325287539" MODIFIED="1533608413997">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Abstraktion
    </p>
    <p>
      nach beiden Setien
    </p>
  </body>
</html></richcontent>
<node CREATED="1502454089783" ID="ID_104095093" MODIFIED="1502454093290" TEXT="zum Erzeuger"/>
<node CREATED="1502454093814" ID="ID_1063793799" MODIFIED="1502454099337" TEXT="zum Empf&#xe4;nger"/>
</node>
<node CREATED="1502454117907" ID="ID_995116747" MODIFIED="1533608413998" TEXT="abstrakter Iterator">
<icon BUILTIN="forward"/>
<node CREATED="1502454128617" ID="ID_1019985292" MODIFIED="1502454135844" TEXT="mu&#xdf; Interface sein"/>
<node CREATED="1502454136368" ID="ID_1196043940" MODIFIED="1502454138836" TEXT="IterSource"/>
<node CREATED="1502454139496" ID="ID_455247221" MODIFIED="1561827465611" TEXT="Problem: &#xdc;bergabe">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1502454152431" ID="ID_1452648004" MODIFIED="1502454163000" TEXT="Diff &#xfc;ber Thread-Grenzen hinweg"/>
<node CREATED="1502454163685" ID="ID_1591230048" MODIFIED="1502454169704" TEXT="Pull-Prinzip"/>
<node CREATED="1502454183682" ID="ID_1647826766" MODIFIED="1502454194490" TEXT="Callback aus anderen Thread"/>
<node CREATED="1502454170228" ID="ID_1401327421" MODIFIED="1502454181097" TEXT="mu&#xdf; Erzeugungskontext weitergeben">
<icon BUILTIN="forward"/>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1475449460694" HGAP="13" ID="ID_425831735" MODIFIED="1525124215236" TEXT="Prototyp: MockElm" VSHIFT="32">
<icon BUILTIN="button_ok"/>
<node CREATED="1475449491378" ID="ID_1309107114" MODIFIED="1475449505548" TEXT="f&#xfc;hre Spiel-Attribute und Kinder ein"/>
<node CREATED="1475449507224" ID="ID_1783640184" MODIFIED="1512926192154" TEXT="Kinder">
<node CREATED="1475449530565" ID="ID_284330532" MODIFIED="1475449531825" TEXT="collection von MockElm"/>
<node CREATED="1475449532556" ID="ID_1804332542" MODIFIED="1576282358008" TEXT="MockElm ist noncopyable">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...aus gutem Grund!
    </p>
    <p>
      Der Nexus speichert n&#228;mlich eine direkte Referenz in der Routingtabelle
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1475449544379" ID="ID_1132064603" MODIFIED="1475449583284" TEXT="also nur per shared_ptr">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1475449589725" ID="ID_460570633" MODIFIED="1512926192155" TEXT="Attribute">
<node CREATED="1475449594060" HGAP="27" ID="ID_1311933287" MODIFIED="1512926192155" TEXT="Typ" VSHIFT="14">
<icon BUILTIN="help"/>
<node CREATED="1475449959916" ID="ID_573697431" MODIFIED="1475449966244" TEXT="map&lt;string,string&gt;"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1475449611754" HGAP="33" ID="ID_275833424" MODIFIED="1576204191297" TEXT="Grundsatzfrage: Attribute-Manipulation per Map unterst&#xfc;tzen?" VSHIFT="1">
<arrowlink COLOR="#ef6e6e" DESTINATION="ID_1285123321" ENDARROW="Default" ENDINCLINATION="-571;0;" ID="Arrow_ID_524729956" STARTARROW="None" STARTINCLINATION="886;42;"/>
<linktarget COLOR="#c48c7d" DESTINATION="ID_275833424" ENDARROW="Default" ENDINCLINATION="-975;32;" ID="Arrow_ID_454192352" SOURCE="ID_789920101" STARTARROW="None" STARTINCLINATION="937;102;"/>
<icon BUILTIN="help"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1475546298721" HGAP="24" ID="ID_1646756860" MODIFIED="1475546316260" TEXT="vorkonfiguriertes TreeMutator-Binding" VSHIFT="10">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node CREATED="1473352470896" HGAP="21" ID="ID_864450713" MODIFIED="1518487921087" TEXT="Unit-Tests" VSHIFT="18">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1473352475375" ID="ID_731425414" MODIFIED="1518487921087" TEXT="AbstractTangible_test">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1473352482502" ID="ID_1891838260" MODIFIED="1518487921087" TEXT="BusTerm_test">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1502453280050" ID="ID_60387485" MODIFIED="1518487921087" TEXT="MutationMessage_test">
<linktarget COLOR="#71e5ac" DESTINATION="ID_60387485" ENDARROW="Default" ENDINCLINATION="50;-12;" ID="Arrow_ID_1384671312" SOURCE="ID_667427572" STARTARROW="None" STARTINCLINATION="12;195;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1502459245238" ID="ID_1193318639" MODIFIED="1518487921087" TEXT="Basisfall: Producer / Consumer">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1502459264523" ID="ID_640036069" MODIFIED="1518487921087" TEXT="Builder">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1502459259123" ID="ID_372973959" MODIFIED="1518487921087" TEXT="Diagnose-Dekorator">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1502459266371" ID="ID_883276790" MODIFIED="1518487921087" TEXT="Integrationstest">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1448658726090" HGAP="18" ID="ID_37610818" MODIFIED="1518487921087" TEXT="Commands" VSHIFT="36">
<icon BUILTIN="button_ok"/>
<node CREATED="1448658755071" ID="ID_1033500384" MODIFIED="1518487921087" TEXT="wie definieren">
<icon BUILTIN="help"/>
<node CREATED="1448658974985" ID="ID_974207484" MODIFIED="1518487921087" TEXT="Definition braucht Session-Modell"/>
<node CREATED="1448659018412" ID="ID_1988707066" MODIFIED="1518487921087" TEXT="zentral">
<icon BUILTIN="button_ok"/>
<node CREATED="1448659021803" ID="ID_1800666256" MODIFIED="1518487921087" TEXT="nah an der Session"/>
<node CREATED="1448659026042" ID="ID_831434285" MODIFIED="1518487921087" TEXT="ein Schnittstellen-Paket"/>
<node CREATED="1448669306480" ID="ID_1009169288" MODIFIED="1518487921087">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Problem: <b><font color="#8d02e1">InteractionControl</font></b>
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#5f0ac8" DESTINATION="ID_329609486" ENDARROW="Default" ENDINCLINATION="219;-148;" ID="Arrow_ID_1101633958" STARTARROW="None" STARTINCLINATION="-315;0;"/>
<linktarget COLOR="#b567c4" DESTINATION="ID_1009169288" ENDARROW="Default" ENDINCLINATION="254;0;" ID="Arrow_ID_200182911" SOURCE="ID_1002329025" STARTARROW="None" STARTINCLINATION="162;0;"/>
</node>
</node>
<node CREATED="1448659051823" ID="ID_1995941804" MODIFIED="1518487921087" TEXT="dezentral">
<icon BUILTIN="button_cancel"/>
<node CREATED="1448659059734" ID="ID_1682547207" MODIFIED="1518487921087" TEXT="im GUI-Kontext"/>
<node CREATED="1448659079044" ID="ID_508900352" MODIFIED="1576282358008" TEXT="mu&#xdf; Session referenzieren">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...was andernfalles komplett vermeidbar w&#228;re,
    </p>
    <p>
      da im &#220;brigen das UI-Modell nur mit LUIDs und generischen Namen arbeitet
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node CREATED="1448658773972" ID="ID_1826752340" MODIFIED="1518487921087" TEXT="referenzieren">
<node CREATED="1448659283641" ID="ID_209203268" MODIFIED="1518487921087" TEXT="letztlich ein String"/>
<node CREATED="1448659347728" ID="ID_508578010" MODIFIED="1518487921087" TEXT="Konstante bei der Command-Funktion"/>
<node CREATED="1448659334058" ID="ID_683316035" MODIFIED="1518487921087" TEXT="Makro + Namenskonvention">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1448683561882" ID="ID_839961131" MODIFIED="1518487921087">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Idee: <b>context-bound</b>
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#81759f" DESTINATION="ID_1690039650" ENDARROW="Default" ENDINCLINATION="513;-275;" ID="Arrow_ID_838588653" STARTARROW="None" STARTINCLINATION="702;0;"/>
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1448658819990" FOLDED="true" ID="ID_405705528" MODIFIED="1582388565907" TEXT="API explizit">
<icon BUILTIN="help"/>
<node CREATED="1448658861760" ID="ID_1373851015" MODIFIED="1518487921087" TEXT="pro">
<node CREATED="1448658867680" ID="ID_766147415" MODIFIED="1518487921087" TEXT="sauber"/>
<node CREATED="1448659206251" ID="ID_1542057563" MODIFIED="1518487921087" TEXT="nah am konkreten Widget"/>
<node CREATED="1448659217489" ID="ID_214385592" MODIFIED="1518487921087" TEXT="integriert in sonstiges UI-Verhalten"/>
<node CREATED="1448658947429" ID="ID_302940509" MODIFIED="1518487921087" TEXT="Fehlaufrufe ausgeschlossen"/>
</node>
<node CREATED="1448658873767" ID="ID_1028163948" MODIFIED="1518487921087" TEXT="con">
<node CREATED="1448658883341" ID="ID_543652783" MODIFIED="1518487921087" TEXT="Aufwand"/>
<node CREATED="1448658885973" ID="ID_1734626095" MODIFIED="1518487921087" TEXT="ctxt-Men&#xfc; aufbauen"/>
<node CREATED="1448659158177" ID="ID_1496901578" MODIFIED="1518487921087" TEXT="Namen m&#xfc;ssen matchen"/>
<node CREATED="1448659163089" ID="ID_431765107" MODIFIED="1518487921087" TEXT="man mu&#xdf; Korrektheit pr&#xfc;fen"/>
<node CREATED="1448683674443" ID="ID_1931753413" MODIFIED="1518487921087" TEXT="Einheitlichkeit gef&#xe4;hrdet"/>
</node>
</node>
<node CREATED="1448683454504" FOLDED="true" HGAP="42" ID="ID_510876193" MODIFIED="1582388564341" TEXT="API generisch" VSHIFT="-1">
<icon BUILTIN="button_ok"/>
<node CREATED="1448683636672" ID="ID_1485949406" MODIFIED="1518487921087" TEXT="verhindert Wildwuchs"/>
<node CREATED="1448683475853" ID="ID_24599710" MODIFIED="1518487921087">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Command und Verhaltensmuster
    </p>
    <p>
      bleiben zusammen
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1448683496794" ID="ID_821199097" MODIFIED="1518487921087" TEXT="unterst&#xfc;tzt weiterreichende Konzepte">
<node CREATED="1448683518496" ID="ID_1987782234" MODIFIED="1518487921087" TEXT="Perspektiven"/>
<node CREATED="1448683522359" ID="ID_723377610" MODIFIED="1518487921087" TEXT="Fokus-Konzept"/>
<node CREATED="1448683525822" ID="ID_1395068730" MODIFIED="1518487921087" TEXT="Gesten"/>
</node>
</node>
<node CREATED="1448691191042" FOLDED="true" HGAP="35" ID="ID_1710578352" MODIFIED="1561827465618" TEXT="Lebenszyklus" VSHIFT="-1">
<font NAME="SansSerif" SIZE="13"/>
<icon BUILTIN="go"/>
<node CREATED="1448691210544" ID="ID_242337741" MODIFIED="1448691218906" TEXT="Command-Skript: im Code"/>
<node CREATED="1448691219614" ID="ID_992447056" MODIFIED="1512926192187" TEXT="Bildungs-Regeln: ebenda">
<node CREATED="1448691243259" ID="ID_692910736" MODIFIED="1448691256433" TEXT="Frage: wie injizieren">
<icon BUILTIN="help"/>
</node>
</node>
<node CREATED="1448691264512" FOLDED="true" ID="ID_1193936433" MODIFIED="1582388577398" TEXT="InvocationTrail erstellen">
<icon BUILTIN="button_cancel"/>
<node CREATED="1450490467952" ID="ID_1453525628" MODIFIED="1450490480705" TEXT="verwendet zwei GenNode-bindings"/>
<node CREATED="1450490481270" ID="ID_1603770702" MODIFIED="1576282358007" TEXT="fertig implementiert">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...was ich einen Monat sp&#228;ter schon wieder vergessen hatte...
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1492442129540" ID="ID_284311341" MODIFIED="1492442138750" TEXT="Konzept wurde verworfen">
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node CREATED="1492442175974" ID="ID_23690520" MODIFIED="1512926192189" TEXT="Instanz-Management">
<icon BUILTIN="button_ok"/>
<node CREATED="1492442182205" ID="ID_1076303592" MODIFIED="1492442188344" TEXT="erfolgt automatisch und transparent"/>
<node CREATED="1492442190644" ID="ID_1654649004" MODIFIED="1492442204598" TEXT="kann optional explizit gemacht werden (Command-Cycle)"/>
<node CREATED="1492442207674" ID="ID_259490518" MODIFIED="1492442212700" TEXT="CommandInstanceManager"/>
<node CREATED="1492442213265" ID="ID_1455743867" MODIFIED="1492442221044" TEXT="sitzt in SessionCommandService"/>
<node CREATED="1448692240015" ID="ID_58254695" MODIFIED="1448692245826" TEXT="es geht um Allokationen in Proc"/>
<node CREATED="1448692247478" ID="ID_1199512787" MODIFIED="1492442343267" TEXT="Instanz">
<node CREATED="1492442343855" ID="ID_1475597297" MODIFIED="1492442351322" TEXT="benannt == Eintrag in der Command-Registry"/>
<node CREATED="1492442352269" ID="ID_1319878028" MODIFIED="1492442362576" TEXT="anonym == nur smart-Handle">
<node CREATED="1492442366676" ID="ID_52781679" MODIFIED="1492442372625" TEXT="Regelfall">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1492442373619" ID="ID_752576891" MODIFIED="1492442378644" TEXT="Prototype-Pattern">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node CREATED="1492442383849" ID="ID_1676576926" MODIFIED="1492442399303" TEXT="CommandDef == Prototyp">
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1448691315849" FOLDED="true" ID="ID_1198560195" MODIFIED="1582388582841" TEXT="Bindugs-Regel">
<icon BUILTIN="hourglass"/>
<node CREATED="1448691343406" ID="ID_642235825" MODIFIED="1448691350558" TEXT="funktor"/>
<node CREATED="1448691324304" ID="ID_1103199702" MODIFIED="1448691338522" TEXT="definiert Bezugs-Quellen"/>
<node CREATED="1448691355340" ID="ID_724965495" MODIFIED="1448691465633" TEXT="liefert Record&lt;GenNode&gt;"/>
<node CREATED="1452560897720" ID="ID_1869468443" MODIFIED="1576282358007" TEXT="vorerst noch nicht impl...">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      hier geht es darum, eine Regel zu generieren,
    </p>
    <p>
      die dann den zugrundeliegenden Command-Prototyp automatisch mit konkreten Aufrufparametern binden kann,
    </p>
    <p>
      sobald bestimmte Umst&#228;nde im UI einschl&#228;gig werden
    </p>
    <p>
      
    </p>
    <p>
      Das ist ein erweiterter / komplexerer Anwendungsfall.
    </p>
    <p>
      Der einfache Standard-Anwendungsfall ist, direkt die Command-ID zu senden
    </p>
    <p>
      das reicht f&#252;r die erste Integrationsrunde v&#246;llig aus
    </p>
  </body>
</html></richcontent>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
</node>
<node CREATED="1492443650460" ID="ID_223885519" MODIFIED="1512926192189" TEXT="einfacher direkter Aufruf">
<icon BUILTIN="button_ok"/>
<node CREATED="1492443656859" ID="ID_1242818576" MODIFIED="1492443663663" TEXT="Tangible / Bus-Term"/>
<node CREATED="1492443664602" ID="ID_263362527" MODIFIED="1576282358006" TEXT="reine Command-ID">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Instanz-Management ist automatisch
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1492443693582" ID="ID_1398931015" MODIFIED="1492443713695" TEXT="Argumente direkt in diff::Record einpacken"/>
<node CREATED="1492443715587" ID="ID_1695168160" MODIFIED="1492443719574" TEXT="dieser wird durchgereicht"/>
<node CREATED="1492443720234" ID="ID_1597671253" MODIFIED="1492443733860" TEXT="und im Command-Framework per Visitor ausgewertet"/>
</node>
</node>
</node>
</node>
<node CREATED="1582388591087" HGAP="65" ID="ID_457412600" MODIFIED="1582388675571" TEXT="Technik" VSHIFT="41">
<font NAME="SansSerif" SIZE="14"/>
<node CREATED="1582388650742" ID="ID_681444782" MODIFIED="1582388698969">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      &#187;<b>Tangible</b>&#171; : Basis
    </p>
  </body>
</html></richcontent>
<font NAME="SansSerif" SIZE="13"/>
<node CREATED="1582388710734" ID="ID_763140844" MODIFIED="1582388714337" TEXT="Komponenten"/>
<node CREATED="1582388714901" ID="ID_1965183860" MODIFIED="1582388717017" TEXT="Funktionen">
<node CREATED="1582388720805" ID="ID_1679585515" MODIFIED="1582388727816" TEXT="Diagnostik">
<node COLOR="#338800" CREATED="1582388728476" ID="ID_1154344311" MODIFIED="1582390885990" TEXT="operator string: Typ und ID">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1582390900917" ID="ID_1137278126" MODIFIED="1582390969068" TEXT="ID (Bus-Term-ID) bekommt man per getID()">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      anfangs hatte ich da eine implizite Konvertierung. Man konnte schreiben ID{xyz}. Das war cool; und verwirrend; und hat jede Menge &#196;rger gemacht, wie immer
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1448669332204" FOLDED="true" HGAP="76" ID="ID_329609486" MODIFIED="1694441087554">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Thema: <b>InteractionControl</b>
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#b694bf" DESTINATION="ID_430949603" ENDARROW="Default" ENDINCLINATION="178;425;" ID="Arrow_ID_1062305149" STARTARROW="Default" STARTINCLINATION="-629;-2354;"/>
<linktarget COLOR="#715f85" DESTINATION="ID_329609486" ENDARROW="Default" ENDINCLINATION="-368;-2533;" ID="Arrow_ID_575977434" SOURCE="ID_932507511" STARTARROW="None" STARTINCLINATION="1641;-256;"/>
<linktarget COLOR="#5f0ac8" DESTINATION="ID_329609486" ENDARROW="Default" ENDINCLINATION="219;-148;" ID="Arrow_ID_1101633958" SOURCE="ID_1009169288" STARTARROW="None" STARTINCLINATION="-315;0;"/>
<font NAME="SansSerif" SIZE="15"/>
<icon BUILTIN="forward"/>
<node CREATED="1448669439582" HGAP="41" ID="ID_307071507" MODIFIED="1518487921087" TEXT="ad-hoc oder systematisch" VSHIFT="-2">
<icon BUILTIN="help"/>
<node CREATED="1448669512988" ID="ID_1184892495" MODIFIED="1518487921087" TEXT="fundamentale Frage"/>
<node CREATED="1448669517796" ID="ID_1165902172" MODIFIED="1518487921087" TEXT="f&#xfc;r mich eigentlich sofort klar"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#990000" CREATED="1448669527274" ID="ID_129855368" MODIFIED="1518487921087" TEXT="aber Vorsicht">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1448669556607" ID="ID_493021007" MODIFIED="1518487921087" TEXT="das wird nie fertig...">
<icon BUILTIN="smily_bad"/>
</node>
<node CREATED="1448669562478" ID="ID_869338862" MODIFIED="1518487921087" TEXT="niemand wird es verstehen">
<icon BUILTIN="smiley-angry"/>
</node>
<node CREATED="1448669567765" ID="ID_1254931544" MODIFIED="1518487921087" TEXT="b&#xfc;rstet die UI-Toolkits &#xbb;gegen den Strich&#xab;"/>
</node>
</node>
<node CREATED="1448669636900" HGAP="51" ID="ID_1111001545" MODIFIED="1518487921087" TEXT="Einf&#xfc;hren einer Zwischenebene" VSHIFT="-24">
<node CREATED="1448669646474" ID="ID_1590745326" MODIFIED="1518487921087" TEXT="hyper-r&#xe4;umliche Anordnung"/>
<node CREATED="1448669657633" ID="ID_1054403772" MODIFIED="1518487921087" TEXT="Focus-Bewegung"/>
<node CREATED="1448669662417" ID="ID_828883183" MODIFIED="1518487921087" TEXT="Einteilung in Arbeits-R&#xe4;ume"/>
<node CREATED="1448669679694" ID="ID_729190965" MODIFIED="1518487921087" TEXT="Konfigurierbarkeit"/>
<node CREATED="1448669675495" ID="ID_1257367197" MODIFIED="1518487921088" TEXT="Perspektiven"/>
<node CREATED="1448669699148" ID="ID_1264820517" MODIFIED="1518487921088" TEXT="Gesten"/>
</node>
<node CREATED="1448669742334" HGAP="41" ID="ID_1679641405" MODIFIED="1518487921088" TEXT="InteractionState" VSHIFT="-4">
<linktarget COLOR="#382ab9" DESTINATION="ID_1679641405" ENDARROW="Default" ENDINCLINATION="-962;-111;" ID="Arrow_ID_1636278357" SOURCE="ID_1765572056" STARTARROW="None" STARTINCLINATION="-502;101;"/>
<font BOLD="true" NAME="SansSerif" SIZE="13"/>
<node CREATED="1448669742334" FOLDED="true" HGAP="41" ID="ID_1690039650" MODIFIED="1618498433404" TEXT="Plan: InteractionStateManager" VSHIFT="-4">
<linktarget COLOR="#81759f" DESTINATION="ID_1690039650" ENDARROW="Default" ENDINCLINATION="513;-275;" ID="Arrow_ID_838588653" SOURCE="ID_839961131" STARTARROW="None" STARTINCLINATION="702;0;"/>
<font NAME="SansSerif" SIZE="13"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1448669816476" ID="ID_1895677880" MODIFIED="1518487921088" TEXT="lauscht als Observer mit"/>
<node CREATED="1448669824243" ID="ID_1225519733" MODIFIED="1518487921088" TEXT="h&#xe4;ngt sich in diverse Punkte ein"/>
<node CREATED="1448669838745" ID="ID_1663939304" MODIFIED="1518487921088" TEXT="h&#xe4;llt ein lokales Zustansmodell"/>
<node CREATED="1448669854119" ID="ID_874080079" MODIFIED="1518487921088" TEXT="wertet Regeln aus"/>
<node CREATED="1448669869973" ID="ID_1259588429" MODIFIED="1518487921088" TEXT="sendet Enablement">
<node CREATED="1448669889514" ID="ID_1191247113" MODIFIED="1518487921088" TEXT="an die konkreten Trigger-Orte"/>
<node CREATED="1448669899113" ID="ID_990871123" MODIFIED="1518487921088" TEXT="er sendet jeweils die passende Command-ID"/>
</node>
<node CREATED="1618498269433" HGAP="14" ID="ID_1337185518" MODIFIED="1618498378416" VSHIFT="44">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <u>Stand 2021</u>:
    </p>
    <p>
      l&#228;uft ehr auf ein Framework hinaus,<br />denn auf eine zentrale Einrichtung
    </p>
  </body>
</html></richcontent>
<edge COLOR="#c91d1d" STYLE="linear"/>
<linktarget COLOR="#cf4c6f" DESTINATION="ID_1337185518" ENDARROW="Default" ENDINCLINATION="306;59;" ID="Arrow_ID_1170485905" SOURCE="ID_379254820" STARTARROW="None" STARTINCLINATION="-233;0;"/>
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node CREATED="1618493709187" FOLDED="true" ID="ID_1168598401" MODIFIED="1618495853582" TEXT="Komplexe zusammengesetze Interaktionen im Allgemeinen">
<linktarget COLOR="#436b85" DESTINATION="ID_1168598401" ENDARROW="Default" ENDINCLINATION="-1067;53;" ID="Arrow_ID_811903885" SOURCE="ID_1188739544" STARTARROW="None" STARTINCLINATION="325;54;"/>
<icon BUILTIN="edit"/>
<node CREATED="1618495879293" ID="ID_1360772859" MODIFIED="1618495885480" TEXT="systematisch-hierarchisch">
<node CREATED="1618496027489" ID="ID_433642660" MODIFIED="1618496038562" TEXT="Geten k&#xf6;nnen zusammengesetzt sein"/>
<node CREATED="1618496039575" ID="ID_447958440" MODIFIED="1618496053097" TEXT="Gesten k&#xf6;nnen aus verschiednen Interaktions-Systemen kommen">
<node CREATED="1618496175709" ID="ID_295780689" MODIFIED="1618496178440" TEXT="Beispiele">
<node CREATED="1618496180165" ID="ID_1445994046" MODIFIED="1618496198598" TEXT="mit der Maus ziehen bei gedr&#xfc;ckten Modifier-Tasten"/>
<node CREATED="1618496199625" ID="ID_254053569" MODIFIED="1618496214248" TEXT="mit der Maus ziehen, nachdem ein Modus (per Tastenkombi) eingeleitet wurde"/>
<node CREATED="1618496228147" ID="ID_388393264" MODIFIED="1618496241259" TEXT="Hardware-Controller (linke Hand) + Maus (rechte Hand)"/>
</node>
<node CREATED="1618496287798" ID="ID_36219632" MODIFIED="1618496306375" TEXT="Maus + Tastatur wird sehr gut im UI-Toolkit unterst&#xfc;tzt">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1618496307555" ID="ID_21337541" MODIFIED="1618496363210" TEXT="das ist tats&#xe4;chlich ein Architektur-Problem">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <ul>
      <li>
        weil es einer generischen L&#246;sung im Weg steht
      </li>
      <li>
        weil die partikul&#228;re Ebene tief in das UI-Toolkit verwoben ist
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="clanbomber"/>
</node>
<node CREATED="1618496370865" ID="ID_1338391945" MODIFIED="1618496636196" TEXT="Stichwort: GTK &#xbb;grabbing widget&#xab;">
<arrowlink COLOR="#6578a3" DESTINATION="ID_1346101076" ENDARROW="Default" ENDINCLINATION="-2521;108;" ID="Arrow_ID_1579913575" STARTARROW="None" STARTINCLINATION="-4417;512;"/>
</node>
</node>
</node>
<node CREATED="1618496053958" ID="ID_19157814" MODIFIED="1618496066054" TEXT="Gesten k&#xf6;nnen mehrere Interaktionssysteme &#xfc;bergreifen">
<node CREATED="1618496071304" ID="ID_78497449" MODIFIED="1618496104797" TEXT="hierf&#xfc;r fehlt jedwede Basis">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1618496127068" ID="ID_1355352407" MODIFIED="1618496134433" TEXT="warum f&#xe4;llt das niemandem auf?"/>
<node CREATED="1618496135139" ID="ID_1442135716" MODIFIED="1618496162854">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Spaltung in <b>Pragmatismus</b>&#160;und <b>Vision</b>
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1618496079577" ID="ID_563221674" MODIFIED="1618496098344" TEXT="das hei&#xdf;t, man l&#xf6;st das &#xbb;ad hoc&#xab;"/>
</node>
<node CREATED="1618496658035" ID="ID_135287349" MODIFIED="1618496668822" TEXT="Gesten k&#xf6;nnen miteinander konkurrieren">
<node CREATED="1618496682104" ID="ID_1913068365" MODIFIED="1618496695090" TEXT="erst der Abschlu&#xdf; trifft die Entscheidung"/>
<node CREATED="1618496744993" ID="ID_1229062418" MODIFIED="1618496754547" TEXT="Problem: was passiert mit den unterlegenen Gesten"/>
<node CREATED="1618496755358" ID="ID_716551546" MODIFIED="1618498427806" TEXT="L&#xf6;sungsans&#xe4;tze">
<icon BUILTIN="idea"/>
<node CREATED="1618496761069" ID="ID_379254820" MODIFIED="1618498420683" TEXT="zentral">
<arrowlink COLOR="#cf4c6f" DESTINATION="ID_1337185518" ENDARROW="Default" ENDINCLINATION="306;59;" ID="Arrow_ID_1170485905" STARTARROW="None" STARTINCLINATION="-233;0;"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1618496875438" ID="ID_1506165136" MODIFIED="1618496888277" TEXT="entspricht genau der Situation in einem LR-Parser"/>
<node CREATED="1618496888986" ID="ID_1950167576" MODIFIED="1618497035456" TEXT="l&#xe4;uft auf einen Table-driven-Approach hinaus">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Auf theoretischer Ebene handel es sich um eine (nicht notwendigerweise deterministische) State-Machine. Allerdings ist diese sehr breit, und daher nicht sinnvoll direkt zu konstruieren. Wohingegen eine Tabellen-Implementierung aus Regeln dynamisch populiert werden kann
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1618498401639" ID="ID_507606816" MODIFIED="1618498415609" TEXT="nur sinnvoll bei einer geschlossenen Grammatik">
<icon BUILTIN="closed"/>
</node>
</node>
<node CREATED="1618496767069" ID="ID_1798540136" MODIFIED="1618498423780" TEXT="dezentral">
<icon BUILTIN="forward"/>
<node CREATED="1618496774556" ID="ID_1999438460" MODIFIED="1618496815452" TEXT="pa&#xdf;t gut in bestehende UI-Toolkits">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      GTK macht das auch in der Tat genau so
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1618496819919" ID="ID_1097969614" MODIFIED="1618496835033" TEXT="es gibt dedizierte Gesten-Controller">
<node CREATED="1618497392949" ID="ID_88952849" MODIFIED="1618497404458" TEXT="jeder realisiert eine einzige Regel"/>
<node CREATED="1618497434424" ID="ID_1014765909" MODIFIED="1618497441669" TEXT="und feuert bei Abschlu&#xdf;"/>
<node CREATED="1618497485166" ID="ID_595584701" MODIFIED="1618497505049" TEXT="Konsequenz: &quot;R&#xfc;ckmeldung&quot; steht neben &quot;Feuern&quot;">
<node CREATED="1618497536204" ID="ID_1376398950" MODIFIED="1618497584286" TEXT="wird relevant wenn man Gesten wiederverwendet">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Also eine generische Implementierung einer Gesten-Erkennung (z.B. dragging), welche dann durch Parametrisierung eingebunden wird
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1618497591954" ID="ID_1424456420" MODIFIED="1618497607007" TEXT="wenn eine Geste aus Elementargesten zusammengesetzt wird"/>
<node CREATED="1618497615124" ID="ID_379280777" MODIFIED="1618497622069" TEXT="Stichwort: Multi-touch"/>
</node>
</node>
<node CREATED="1618497244266" ID="ID_1420529728" MODIFIED="1618497255222" TEXT="Konflikt wird ad hoc oder gar nicht gel&#xf6;st">
<node CREATED="1618497261101" ID="ID_1256260657" MODIFIED="1618497268700" TEXT="entweder beide konkurrieren um ein Widget">
<node CREATED="1618497357042" ID="ID_1520371593" MODIFIED="1618497369234" TEXT="das f&#xfc;rhrt dann entweder zu einem Defekt"/>
<node CREATED="1618497369928" ID="ID_731581277" MODIFIED="1618497376382" TEXT="oder wird im Einzelfall gel&#xf6;st"/>
</node>
<node CREATED="1618497269745" ID="ID_1183185638" MODIFIED="1618497294713" TEXT="und wenn nicht, kann die 2.Geste u.U. auch noch zum Zuge kommen"/>
<node CREATED="1618497299262" ID="ID_891092207" MODIFIED="1618497331892" TEXT="&quot;wen das st&#xf6;rt, der soll&apos;s es eben nicht so machen&quot;"/>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1618495906753" ID="ID_119188335" MODIFIED="1618495911709" TEXT="Konfigurierbarkeit">
<node CREATED="1618495927271" ID="ID_1746632538" MODIFIED="1618495993283" TEXT="mehrfach problematisch">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1618495945349" ID="ID_920863702" MODIFIED="1618495955348" TEXT="Konfigurations-System mu&#xdf; verst&#xe4;ndlich sein"/>
<node CREATED="1618495958122" ID="ID_74493493" MODIFIED="1618495986674" TEXT="ist ein &#xbb;cross-cutting Concern&#xab;"/>
</node>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1618498463806" HGAP="-1" ID="ID_420683622" MODIFIED="1618499095806" TEXT="Framework-Anforderungen" VSHIFT="13">
<arrowlink COLOR="#5c4052" DESTINATION="ID_1822212049" ENDARROW="Default" ENDINCLINATION="-834;0;" ID="Arrow_ID_1506237506" STARTARROW="None" STARTINCLINATION="112;439;"/>
<arrowlink COLOR="#5c4052" DESTINATION="ID_1267546019" ENDARROW="Default" ENDINCLINATION="-834;0;" ID="Arrow_ID_1826514843" STARTARROW="None" STARTINCLINATION="-58;-277;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node CREATED="1618498492515" ID="ID_434535661" MODIFIED="1618498499278" TEXT="wachstumsf&#xe4;hig und erweiterbar">
<node CREATED="1618498697295" ID="ID_985799133" MODIFIED="1618498710022" TEXT="die Grammatik bleibt auf Dauer offen"/>
</node>
<node CREATED="1618498500504" ID="ID_1449824942" MODIFIED="1618498513276" TEXT="nur relativ generische Bausteine">
<node CREATED="1618498677130" ID="ID_1157411868" MODIFIED="1618498680757" TEXT="Komposition"/>
<node CREATED="1618498683938" ID="ID_1253283120" MODIFIED="1618498686868" TEXT="R&#xfc;ckmeldung"/>
<node CREATED="1618498687576" ID="ID_1585243737" MODIFIED="1618498690994" TEXT="Konfigurierbarkeit"/>
</node>
<node CREATED="1618498580703" ID="ID_1269910425" MODIFIED="1618498648892" TEXT="konkrete Systembez&#xfc;ge an den Rand schieben">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <ul>
      <li>
        also entweder auf den top-Level
      </li>
      <li>
        oder auf die Bl&#228;tter hinunter<br />
      </li>
      <li>
        oder in Hilfskomponenten
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node CREATED="1618498735650" ID="ID_1694960381" MODIFIED="1618498748164" TEXT="einige Aspekte zentralisieren">
<node CREATED="1618498749104" ID="ID_1756775375" MODIFIED="1618498754793" TEXT="Namens-Schema"/>
<node CREATED="1618498755479" ID="ID_1965831950" MODIFIED="1618498759650" TEXT="Konfigurations-Service">
<node CREATED="1618498773365" ID="ID_855501540" MODIFIED="1618498780622" TEXT="im Besonderen: die Modifier"/>
<node CREATED="1618498781540" ID="ID_1040416937" MODIFIED="1618498794523" TEXT="in erster N&#xe4;herung: Lambda vorsehen"/>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1487213803525" HGAP="36" ID="ID_735655054" MODIFIED="1518487921088" TEXT="InteractionDirector" VSHIFT="-3">
<arrowlink COLOR="#1b3863" DESTINATION="ID_362749694" ENDARROW="Default" ENDINCLINATION="-518;1012;" ID="Arrow_ID_959577029" STARTARROW="Default" STARTINCLINATION="-376;-568;"/>
<linktarget COLOR="#586d86" DESTINATION="ID_735655054" ENDARROW="Default" ENDINCLINATION="549;166;" ID="Arrow_ID_1031406920" SOURCE="ID_1980246174" STARTARROW="None" STARTINCLINATION="1;-366;"/>
<font NAME="SansSerif" SIZE="14"/>
<node CREATED="1487270206369" ID="ID_582649017" MODIFIED="1518487921088" TEXT="betreibt SpotLocator"/>
<node CREATED="1487275297855" ID="ID_417844993" MODIFIED="1518487921088" TEXT="betreibt FocusTracker"/>
<node CREATED="1487273437019" ID="ID_1600127727" MODIFIED="1518487921088" TEXT="betreibt Navigator"/>
</node>
<node CREATED="1487270226342" HGAP="32" ID="ID_1501993794" MODIFIED="1561827465627" TEXT="SpotLocator">
<node CREATED="1487270240084" ID="ID_1171094973" MODIFIED="1518487921088" TEXT="Erf&#xfc;llungsgehilfe">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1487270245884" ID="ID_1688031043" MODIFIED="1518487921088" TEXT="zwei Aspekte">
<node CREATED="1487270262137" ID="ID_1256894684" MODIFIED="1518487921088" TEXT="Query">
<node CREATED="1487270288630" ID="ID_744259530" MODIFIED="1518487921088" TEXT="&quot;wo sind wir&quot;?"/>
<node CREATED="1487270294269" ID="ID_903348018" MODIFIED="1518487921088" TEXT="aktuelle WorkSite"/>
<node CREATED="1487270397967" ID="ID_1021036860" MODIFIED="1518487921088" TEXT="LRU history"/>
<node CREATED="1487270732305" ID="ID_702780522" MODIFIED="1518487921088" TEXT="current MediaObject"/>
</node>
<node CREATED="1487270263705" ID="ID_302637820" MODIFIED="1518487921088" TEXT="Act">
<node CREATED="1487270473421" ID="ID_911216598" MODIFIED="1518487921088" TEXT="go to FocusPath"/>
</node>
</node>
</node>
<node CREATED="1487270846218" ID="ID_419002057" MODIFIED="1561827465631" TEXT="WorkSite">
<node CREATED="1487270854793" ID="ID_1953389172" MODIFIED="1518487921088" TEXT="management">
<node CREATED="1487270860976" ID="ID_1497253556" MODIFIED="1518487921088" TEXT="Speicher">
<node CREATED="1487270865216" ID="ID_685718473" MODIFIED="1518487921088" TEXT="ref counted"/>
<node CREATED="1487270874103" ID="ID_1447761407" MODIFIED="1518487921088" TEXT="registration"/>
</node>
<node CREATED="1487270895587" ID="ID_167087353" MODIFIED="1518487921088" TEXT="established">
<node CREATED="1487270906322" ID="ID_1777452351" MODIFIED="1518487921088" TEXT="automatically"/>
<node CREATED="1487270909074" ID="ID_837195046" MODIFIED="1518487921088" TEXT="explicitly"/>
<node CREATED="1487270914353" ID="ID_810579522" MODIFIED="1518487921088" TEXT="derived">
<node CREATED="1487270924112" ID="ID_594873450" MODIFIED="1518487921088" TEXT="split"/>
<node CREATED="1487270926887" ID="ID_1400861012" MODIFIED="1518487921088" TEXT="clone"/>
</node>
</node>
</node>
<node CREATED="1487271257011" ID="ID_322579744" MODIFIED="1518487921088" TEXT="Bezugs-Rahmen">
<node CREATED="1487271264969" ID="ID_1714809239" MODIFIED="1518487921088" TEXT="Befehle/Aktionen binden"/>
<node CREATED="1487271279399" ID="ID_1349326625" MODIFIED="1518487921088" TEXT="Toolbar"/>
</node>
<node CREATED="1487272549027" ID="ID_380137967" MODIFIED="1518487921088" TEXT="Abgrenzung">
<node CREATED="1487272553075" ID="ID_743796483" MODIFIED="1518487921088" TEXT="schwierige Aufgabe"/>
<node CREATED="1487272557314" ID="ID_1783972929" MODIFIED="1518487921088" TEXT="mu&#xdf; dynamisch passieren"/>
<node CREATED="1487272580751" ID="ID_1313858813" MODIFIED="1518487921088" TEXT="verlassene WorkSites"/>
<node CREATED="1487273190221" ID="ID_1338036086" MODIFIED="1518487921088" TEXT="Genzen">
<node CREATED="1487273192636" ID="ID_1111226069" MODIFIED="1518487921088" TEXT="Dinge innerhalb"/>
<node CREATED="1487273196763" ID="ID_412767726" MODIFIED="1518487921088" TEXT="Dinge au&#xdf;erhalb"/>
<node CREATED="1487273226775" ID="ID_303777362" MODIFIED="1518487921088" TEXT="wann Grenzen anpassen"/>
</node>
<node CREATED="1487273234190" ID="ID_752073036" MODIFIED="1518487921088" TEXT="mehrere WorkSites">
<node CREATED="1487273239502" ID="ID_1735700195" MODIFIED="1518487921088" TEXT="k&#xf6;nnen sich &#xfc;berlappen"/>
<node CREATED="1487273245421" ID="ID_1239635545" MODIFIED="1518487921088" TEXT="k&#xf6;nnen naheliegen"/>
</node>
</node>
</node>
<node CREATED="1487210642170" HGAP="28" ID="ID_337241818" MODIFIED="1518487921088" TEXT="Rahmen global" VSHIFT="-1">
<node CREATED="1487210648449" ID="ID_1430752735" MODIFIED="1535638478130" TEXT="konzeptionell">
<arrowlink COLOR="#34dbd3" DESTINATION="ID_1259700796" ENDARROW="Default" ENDINCLINATION="473;607;" ID="Arrow_ID_114106295" STARTARROW="None" STARTINCLINATION="-1346;-1090;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<node CREATED="1487269963098" ID="ID_723170966" MODIFIED="1518487921088" TEXT="Raum als Metapher"/>
<node CREATED="1487269990582" ID="ID_164128588" MODIFIED="1518487921088">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Focus/Spot wird <i>mitbewegt</i>
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1487270008163" ID="ID_1916966167" MODIFIED="1518487921088" TEXT="operational">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1487270012283" ID="ID_212889115" MODIFIED="1518487921088" TEXT="noch unklar">
<icon BUILTIN="flag-yellow"/>
</node>
<node CREATED="1487270108238" ID="ID_1957235452" MODIFIED="1518487921088" TEXT="Wechselwirkung: konventioneller Fokus"/>
<node CREATED="1487270131499" ID="ID_1523536395" MODIFIED="1518487921088" TEXT="Observer f&#xfc;r Status-&#xc4;nderungen"/>
<node CREATED="1487270141994" ID="ID_1312242119" MODIFIED="1518487921088" TEXT="Problem: wo andocken?">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1487272791578" ID="ID_1159463727" MODIFIED="1518487921088" TEXT="Strukturen">
<node CREATED="1487272794426" ID="ID_1016756623" MODIFIED="1518487921088" TEXT="transient"/>
<node CREATED="1487272797857" ID="ID_1810657142" MODIFIED="1518487921088" TEXT="persistent">
<node CREATED="1487273054439" ID="ID_185665950" MODIFIED="1518487921088" TEXT="Worksites bleiben dauerhaft erhalten"/>
<node CREATED="1487273061054" ID="ID_1347275006" MODIFIED="1518487921088" TEXT="werden im Modell gespeichert"/>
<node CREATED="1487273078564" ID="ID_1502695356" MODIFIED="1518487921088" TEXT="aber an den Benutzer gebunden"/>
</node>
<node CREATED="1487272800417" ID="ID_344309590" MODIFIED="1518487921088" TEXT="Wurzel">
<node CREATED="1487273308748" ID="ID_1980246174" MODIFIED="1518487921088" TEXT="Ankerpunkt: InteractionDirector">
<arrowlink COLOR="#586d86" DESTINATION="ID_735655054" ENDARROW="Default" ENDINCLINATION="549;166;" ID="Arrow_ID_1031406920" STARTARROW="None" STARTINCLINATION="1;-366;"/>
</node>
<node CREATED="1487273377603" ID="ID_1842094630" MODIFIED="1518487921088" TEXT="SpotLocator"/>
</node>
<node CREATED="1487272813119" ID="ID_1794274698" MODIFIED="1518487921088" TEXT="Bezug">
<node CREATED="1504460091831" ID="ID_150523428" MODIFIED="1575131533888" TEXT="Koordinatensystem">
<linktarget COLOR="#a9a5cd" DESTINATION="ID_150523428" ENDARROW="Default" ENDINCLINATION="1417;-3062;" ID="Arrow_ID_1485937133" SOURCE="ID_50865654" STARTARROW="None" STARTINCLINATION="1030;-46;"/>
<node CREATED="1504462869149" ID="ID_248419130" MODIFIED="1518487921088" TEXT="beschreibt Zugangsweg">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1504462874221" ID="ID_259258109" MODIFIED="1518487921088" TEXT="[optional] top-level Fenster"/>
<node CREATED="1504462888107" ID="ID_291187993" MODIFIED="1518487921088" TEXT="[optional] Perspektive"/>
<node CREATED="1504462891394" ID="ID_1569864275" MODIFIED="1518487921088" TEXT="Panel"/>
<node CREATED="1504463016698" ID="ID_337670154" MODIFIED="1518487921088" TEXT="lokal">
<node CREATED="1504463028384" ID="ID_604807253" MODIFIED="1518487921088" TEXT="View-ID"/>
<node CREATED="1504463020913" ID="ID_1114832380" MODIFIED="1518487921088" TEXT="[optional] Gruppe bzw. Tab"/>
<node CREATED="1504463067051" ID="ID_1393457815" MODIFIED="1518487921088" TEXT="Komponente/Komponente/Komponente..."/>
</node>
</node>
<node CREATED="1506956495003" ID="ID_364730867" MODIFIED="1518487921088" TEXT="konktete Topologie">
<node CREATED="1506956525336" ID="ID_344871464" MODIFIED="1518487921088" TEXT="stateful"/>
<node CREATED="1506956501474" ID="ID_905779000" MODIFIED="1518487921088" TEXT="zug&#xe4;nglich duch Navigator">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1515556878797" ID="ID_1322161446" MODIFIED="1518487921088" TEXT="Resolver mit path matching">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1487273942038" HGAP="4" ID="ID_1254651309" MODIFIED="1561827465649" TEXT="Dynamik" VSHIFT="19">
<font NAME="SansSerif" SIZE="13"/>
<node CREATED="1487274013493" ID="ID_1949865241" MODIFIED="1518487921088" TEXT="mitbewegen">
<node CREATED="1487274017164" ID="ID_1079230717" MODIFIED="1518487921088" TEXT="Trigger">
<node CREATED="1487274021596" ID="ID_1455392363" MODIFIED="1518487921088" TEXT="Fenster wird aktiviert"/>
<node CREATED="1487274135596" ID="ID_1979220741" MODIFIED="1518487921088" TEXT="Keyboard-Focus shift"/>
<node CREATED="1487274145667" ID="ID_771196046" MODIFIED="1518487921088" TEXT="Selection gesetzt"/>
<node CREATED="1487274153058" ID="ID_624086875" MODIFIED="1518487921088" TEXT="Navigation expliizit"/>
</node>
<node CREATED="1487274921058" ID="ID_817413556" MODIFIED="1518487921088" TEXT="Ansatzpunkt">
<node CREATED="1487274932472" ID="ID_362677382" MODIFIED="1518487921088" TEXT="wie kann man Trigger installieren?"/>
<node CREATED="1487274942383" ID="ID_1727411524" MODIFIED="1518487921088" TEXT="model::Tangible">
<icon BUILTIN="idea"/>
<node CREATED="1487274952662" ID="ID_137454278" MODIFIED="1518487921089" TEXT="immer?">
<icon BUILTIN="help"/>
</node>
<node CREATED="1487274957301" ID="ID_1317780625" MODIFIED="1518487921089" TEXT="explizit?">
<icon BUILTIN="help"/>
</node>
</node>
<node CREATED="1487275149467" ID="ID_46033493" MODIFIED="1518487921089" TEXT="FocusListener"/>
</node>
<node CREATED="1487275167712" ID="ID_421642010" MODIFIED="1518487921089" TEXT="FocusTracker">
<node CREATED="1487275245822" ID="ID_1999993873" MODIFIED="1518487921089" TEXT="geh&#xf6;rt zum InteractionDirector"/>
<node CREATED="1487275255092" ID="ID_528280403" MODIFIED="1518487921089" TEXT="mu&#xdf; von jedem Listener erreichbar sein"/>
<node CREATED="1487275265227" ID="ID_1738811487" MODIFIED="1518487921089" TEXT="wie setzt man einen neuen Listener auf?">
<icon BUILTIN="help"/>
</node>
<node CREATED="1487275767543" ID="ID_1953432961" MODIFIED="1518487921089" TEXT="Idee: StateMark -&gt; UI-Bus">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1487275806658" ID="ID_46146913" MODIFIED="1518487921089" TEXT="CoreService &lt;-&gt; InteractionDirector">
<node CREATED="1487275821920" ID="ID_1911498338" MODIFIED="1518487921089" TEXT="Verbindung ohnehin notwendig"/>
<node CREATED="1487275829711" ID="ID_467014330" MODIFIED="1518487921089" TEXT="persistenter UI-State"/>
<node CREATED="1487275846133" ID="ID_1450222785" MODIFIED="1518487921089" TEXT="mu&#xdf; im Modell h&#xe4;ngen"/>
<node CREATED="1487275854899" ID="ID_1437855457" MODIFIED="1518487921089" TEXT="und daher unter dem InteractionDirector"/>
</node>
</node>
<node CREATED="1487275415415" ID="ID_625776285" MODIFIED="1518487921089" TEXT="Bewegungs-Erkennung">
<node CREATED="1487275419726" ID="ID_379201934" MODIFIED="1518487921089" TEXT="ist ein Problem">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1487275427165" ID="ID_196683293" MODIFIED="1518487921089" TEXT="was ist noch in einer WorkSite?">
<icon BUILTIN="help"/>
</node>
<node CREATED="1487275438371" ID="ID_1849848193" MODIFIED="1518487921089" TEXT="wohin bewegen wir uns?">
<icon BUILTIN="help"/>
</node>
</node>
<node CREATED="1487275567114" ID="ID_1956672414" MODIFIED="1518487921089" TEXT="Zusammenarbeit">
<node CREATED="1487275572706" ID="ID_1943137650" MODIFIED="1518487921089" TEXT="WorkSite">
<node CREATED="1487275575665" ID="ID_406351009" MODIFIED="1518487921089" TEXT="wei&#xdf;, was zu ihr geh&#xf6;rt"/>
</node>
<node CREATED="1487275584048" ID="ID_1846202031" MODIFIED="1518487921089" TEXT="WorkSiteTrail">
<node CREATED="1487275591375" ID="ID_1854949126" MODIFIED="1518487921089" TEXT="verfolgt die WorkSites und ihre Dynamik"/>
</node>
<node CREATED="1487275601373" ID="ID_786512805" MODIFIED="1518487921089" TEXT="FocusTracker">
<node CREATED="1487275654958" ID="ID_874086704" MODIFIED="1518487921089" TEXT="verfolgt die Einzelelemente"/>
</node>
</node>
<node CREATED="1487277157451" ID="ID_434494653" MODIFIED="1518487921089" TEXT="Teil-Aufgaben">
<node CREATED="1487277161738" ID="ID_400737524" MODIFIED="1518487921089" TEXT="Verlassen einer WorkSite erkennen"/>
<node CREATED="1487277171617" ID="ID_566526238" MODIFIED="1518487921089" TEXT="Ankommen in einer bestehenden WorkSite erkennen"/>
<node CREATED="1487277190310" ID="ID_34185478" MODIFIED="1518487921089" TEXT="Notwendigkeit, eine neue WorkSite zu konstituieren erkennen"/>
</node>
<node CREATED="1487277244375" ID="ID_375270405" MODIFIED="1518487921089" TEXT="Ansatz">
<node CREATED="1487277246766" ID="ID_747328276" MODIFIED="1518487921089" TEXT="wer?">
<icon BUILTIN="help"/>
<node CREATED="1487277261909" ID="ID_551475434" MODIFIED="1518487921089" TEXT="WorkSite">
<node CREATED="1487277266908" ID="ID_1718346792" MODIFIED="1518487921089" TEXT="k&#xf6;nnte das Verlassen erkennen"/>
</node>
<node CREATED="1487277274251" ID="ID_1319104550" MODIFIED="1518487921089" TEXT="WorkSiteTrail"/>
<node CREATED="1487277281882" ID="ID_620509405" MODIFIED="1518487921089" TEXT="FocusTracker"/>
</node>
<node CREATED="1487277256149" ID="ID_339253853" MODIFIED="1518487921089" TEXT="wie?">
<icon BUILTIN="help"/>
<node CREATED="1487277291305" ID="ID_1246038804" MODIFIED="1518487921089" TEXT="zentraler Tabellen-Lookup"/>
<node CREATED="1487277307374" ID="ID_335467287" MODIFIED="1518487921089" TEXT="lokalere Member-Tabelle"/>
<node CREATED="1487277317725" ID="ID_381402724" MODIFIED="1518487921089" TEXT="Reverse-Index"/>
</node>
</node>
</node>
<node CREATED="1487277349233" ID="ID_1249868383" MODIFIED="1518487921089" TEXT="Resultat">
<node CREATED="1487277352856" ID="ID_587566118" MODIFIED="1518487921089" TEXT="alte WorkSite: verlassen"/>
<node CREATED="1487277375317" ID="ID_977859604" MODIFIED="1518487921089" TEXT="neue WorkSite: aktiviert"/>
<node CREATED="1487277384604" ID="ID_958245251" MODIFIED="1518487921089" TEXT="WorkSiteTrail: aktualisiert"/>
<node CREATED="1487277407425" ID="ID_1880710738" MODIFIED="1518487921089" TEXT="FocusPath: aktualisiert"/>
<node CREATED="1487277414744" ID="ID_1564254807" MODIFIED="1518487921089" TEXT="FocusLocator: hat sich bewegt"/>
<node CREATED="1487277448219" ID="ID_681470264" MODIFIED="1518487921089" TEXT="InteratcionStateManager: benachrichtigt"/>
</node>
</node>
</node>
</node>
<node CREATED="1448070547667" FOLDED="true" HGAP="23" ID="ID_669457401" MODIFIED="1557498707235" TEXT="Bus-Terminal" VSHIFT="20">
<icon BUILTIN="go"/>
<node CREATED="1448070601165" ID="ID_1711137699" MODIFIED="1557498707235" TEXT="Methoden">
<node CREATED="1448407030239" ID="ID_619913132" MODIFIED="1557498707235">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      act, note: Nachricht <i>upstream</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1448407054900" ID="ID_1277028437" MODIFIED="1557498707235">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      mark: Nachricht <i>downstream</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1448560729734" ID="ID_431928237" MODIFIED="1557498707235" TEXT="Nachricht mit Subjekt == indirekt, zur Weiterleitung"/>
<node CREATED="1448560744380" ID="ID_310914031" MODIFIED="1557498707235" TEXT="Nachricht ohne Subjekt == direkt, Subjekt implizit"/>
<node CREATED="1448560790558" ID="ID_1545911136" MODIFIED="1557498707235" TEXT="Bedeutung der Nachricht ergibt sich aus ihrem Namen"/>
</node>
<node CREATED="1448070605948" ID="ID_1779744719" MODIFIED="1557498707235" TEXT="Verhalten">
<node CREATED="1448407128826" ID="ID_1974801494" MODIFIED="1557498707235" TEXT="Bus-Master ist ein speziell implementiertes BusTerm"/>
<node CREATED="1448407139441" ID="ID_392543622" MODIFIED="1557498707235" TEXT="das gew&#xf6;hnliche BusTerm ist einem Tangible zugeordnet"/>
<node CREATED="1448407187035" ID="ID_1622894914" MODIFIED="1557498707235" TEXT="sowie bus-seitig an ein &quot;upstream&quot; BusTerm"/>
</node>
<node CREATED="1448070618434" ID="ID_1925738380" MODIFIED="1557498707235" TEXT="Zuordnung">
<node CREATED="1448406963801" ID="ID_1506114314" MODIFIED="1557498707235">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Bus-Design is <b>selbst&#228;hnlich</b>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1448406977350" ID="ID_1450959387" MODIFIED="1557498707235" TEXT="jedes BusTerm ist lediglich eine personalisierte Bus-Anbindung"/>
<node CREATED="1450390181806" ID="ID_61666430" MODIFIED="1557498707235" TEXT="es registriert beim Bus-Mater einen Link zum zugeh&#xf6;rigen Tangible"/>
<node CREATED="1448406994860" ID="ID_846198635" MODIFIED="1557498707235">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Kennzeichen ist die <b>EntryID</b>&#160;des zugeh&#246;rigen Elements
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
<node CREATED="1434128059966" ID="ID_823283341" MODIFIED="1557498707235" TEXT="Connect">
<node CREATED="1434128071126" FOLDED="true" HGAP="13" ID="ID_1618124128" MODIFIED="1561827465658" TEXT="UI-Bus" VSHIFT="11">
<linktarget COLOR="#3a8df0" DESTINATION="ID_1618124128" ENDARROW="Default" ENDINCLINATION="-25;-141;" ID="Arrow_ID_539627804" SOURCE="ID_257833497" STARTARROW="Default" STARTINCLINATION="-18;110;"/>
<font NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="go"/>
<node CREATED="1448548216556" ID="ID_1971609445" MODIFIED="1518487921089" TEXT="Topologie">
<node CREATED="1448548225659" ID="ID_807917172" MODIFIED="1518487921089" TEXT="upstream = zum Verteiler"/>
<node CREATED="1448548310247" ID="ID_993096699" MODIFIED="1518487921089" TEXT="downstream = zum Empf&#xe4;nger"/>
<node CREATED="1448560840239" ID="ID_1912018032" MODIFIED="1518487921089" TEXT="indirekt = zur Weiterleitung"/>
</node>
<node CREATED="1434128297445" ID="ID_1971555917" MODIFIED="1518487921089" TEXT="Nachrichtenformat">
<node CREATED="1448560865804" ID="ID_907456829" MODIFIED="1518487921089" TEXT="Klassifikation">
<node CREATED="1448548400308" ID="ID_1714197552" MODIFIED="1518487921089" TEXT="dedicated"/>
<node CREATED="1448548404475" ID="ID_1237647034" MODIFIED="1518487921089" TEXT="targetted"/>
<node CREATED="1448548407819" ID="ID_1923087300" MODIFIED="1518487921089" TEXT="flooding"/>
</node>
<node CREATED="1448560887081" ID="ID_1783786781" MODIFIED="1518487921089" TEXT="Addressierung">
<node CREATED="1448560891416" ID="ID_1603035591" MODIFIED="1518487921089" TEXT="per Subjekt"/>
<node CREATED="1448560896232" ID="ID_931223590" MODIFIED="1518487921089" TEXT="implizit"/>
</node>
</node>
<node CREATED="1434128301525" ID="ID_187622243" MODIFIED="1518487921089" TEXT="Parallelit&#xe4;t">
<node CREATED="1450390447884" ID="ID_1176145978" MODIFIED="1518487921090" TEXT="nicht Threadsafe"/>
<node CREATED="1450390454236" ID="ID_1617539841" MODIFIED="1518487921090" TEXT="l&#xe4;uft ausschlie&#xdf;lich im Event-Thrad"/>
</node>
<node CREATED="1434128332277" ID="ID_33025591" MODIFIED="1561827465666" TEXT="Deregistrierung">
<node CREATED="1450390522393" ID="ID_1448879688" MODIFIED="1518487921090" TEXT="Uplink: implizit, h&#xe4;lt Link zu einem Router"/>
<node CREATED="1450390559805" ID="ID_1657985065" MODIFIED="1518487921090" TEXT="Downlink:">
<node CREATED="1450390566252" ID="ID_591456555" MODIFIED="1518487921090" TEXT="registriert eine Route zu einem Tangible"/>
<node CREATED="1450390585329" ID="ID_1371255341" MODIFIED="1518487921090" TEXT="der dtor entfernt diese Route wieder"/>
</node>
<node COLOR="#7212f4" CREATED="1481413366826" FOLDED="true" HGAP="34" ID="ID_1180928280" MODIFIED="1518487921090" TEXT="problematisch im Shutdown" VSHIFT="5">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1481413410588" ID="ID_1106063275" MODIFIED="1518487921090" TEXT="Shutdown von Zombie-Nodes">
<node CREATED="1481413418027" ID="ID_998027739" MODIFIED="1518487921090" TEXT="reines Test-Problem"/>
<node CREATED="1481413421795" ID="ID_1335417806" MODIFIED="1518487921090" TEXT="gel&#xf6;st durch self-link + tie break"/>
</node>
<node CREATED="1481413436529" ID="ID_195971284" MODIFIED="1518487921090" TEXT="Shutdown des CoreService">
<node CREATED="1481413462638" ID="ID_485427993" MODIFIED="1518487921090" TEXT="Problem: Backlink zum Nexus"/>
<node CREATED="1481413470268" ID="ID_688303898" MODIFIED="1576282358006" TEXT="Nexus ist zu dem Zeitpunkt schon destruiert">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Die L&#246;sung f&#252;r diese wecheslseitige Abh&#228;ngigkeit
    </p>
    <p>
      ist, den Nexus als Member im CoreService zu haben,
    </p>
    <p>
      weil man dann seine Addresse schon wei&#223;, bevor er erzeugt ist.
    </p>
    <p>
      
    </p>
    <p>
      Dummerweise rettet mich dieser Trick nicht im Shutdown,
    </p>
    <p>
      denn hier nun l&#228;uft tats&#228;chlicher Code aus dem Destruktor heraus!
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1481413489290" ID="ID_24882673" MODIFIED="1518487921090" TEXT="folglich l&#xe4;uft nur noch die Impl vom BusTerm"/>
<node CREATED="1481413520326" ID="ID_471345968" MODIFIED="1518487921090" TEXT="Endlosschleife (ping-pong)">
<icon BUILTIN="forward"/>
</node>
<node CREATED="1481414009877" ID="ID_269084554" MODIFIED="1518487921090" TEXT="...innerer Widerspruch">
<linktarget COLOR="#426895" DESTINATION="ID_269084554" ENDARROW="Default" ENDINCLINATION="36;87;" ID="Arrow_ID_708633830" SOURCE="ID_354799236" STARTARROW="None" STARTINCLINATION="369;0;"/>
<icon BUILTIN="stop-sign"/>
<node CREATED="1481414032482" ID="ID_1121261163" MODIFIED="1518487921090" TEXT="upstream und nicht upstream"/>
<node CREATED="1481414149018" ID="ID_1708781872" MODIFIED="1576282358005" TEXT="kann Reihenfolge nicht etablieren">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      bei einem <i>echten Downstream</i>&#160;k&#246;nnte man daf&#252;r sorgen,
    </p>
    <p>
      da&#223; er grunds&#228;tzlich vor dem Nexus weggeht. Aber nun kommt, auf dem Umweg
    </p>
    <p>
      &#252;ber den Core-Service, der Nexus nach dem Nexus....
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1481414420406" ID="ID_559357688" MODIFIED="1518487921090" TEXT="erschwerend...">
<icon BUILTIN="smily_bad"/>
<node CREATED="1481414434148" ID="ID_333480677" MODIFIED="1518487921090" TEXT="BusTerm ist stateless"/>
<node CREATED="1481414477766" ID="ID_695637715" MODIFIED="1576282358005" TEXT="soll auch so bleiben">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ich will nicht damit anfangen, da&#223; man einen Zeiger umsetzen kann....
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
</node>
<node CREATED="1481415983533" HGAP="37" ID="ID_1500277801" MODIFIED="1518487921090" TEXT="Trick l&#xf6;st beide" VSHIFT="6">
<icon BUILTIN="button_ok"/>
<node CREATED="1481415996732" ID="ID_98181285" MODIFIED="1518487921090" TEXT="ein &quot;circuit breaker&quot;"/>
<node CREATED="1481416013842" ID="ID_1905276259" MODIFIED="1518487921090">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      beendet Deregistrierung,
    </p>
    <p>
      wenn ein&#160;BusTerm sich selbst deregistriert
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1481416047509" ID="ID_1445652228" MODIFIED="1518487921090" TEXT="etwas halbseiden"/>
<node CREATED="1481416060843" ID="ID_354799236" MODIFIED="1518487921090" TEXT="aber... ein innerer Widerspruch liegt zugrunde">
<arrowlink COLOR="#426895" DESTINATION="ID_269084554" ENDARROW="Default" ENDINCLINATION="36;87;" ID="Arrow_ID_708633830" STARTARROW="None" STARTINCLINATION="369;0;"/>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
</node>
<node CREATED="1434128310005" ID="ID_644247390" MODIFIED="1518487921090" TEXT="Knoten-ID">
<node CREATED="1450390501876" ID="ID_1750345192" MODIFIED="1518487921090" TEXT="ist die EntryID des Tangible"/>
<node CREATED="1450390512635" ID="ID_43739373" MODIFIED="1518487921090" TEXT="dient auch zum Routing"/>
</node>
<node COLOR="#338800" CREATED="1453546261390" FOLDED="true" HGAP="25" ID="ID_1996322416" MODIFIED="1679358500828" TEXT="Test" VSHIFT="12">
<icon BUILTIN="button_ok"/>
<node CREATED="1453546264638" ID="ID_975821244" MODIFIED="1518487921090" TEXT="Test-Nexus">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1453546268998" ID="ID_1692848170" MODIFIED="1576282358004" TEXT="Event-Log">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Mechanismus, der es erlaubt
    </p>
    <ul>
      <li>
        log-Nachrichten aus Mocks zu hinterlassen
      </li>
      <li>
        in der Test-Fixture auf diese zu matchen
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1535815195338" ID="ID_1743938908" MODIFIED="1535815207849" TEXT="naive Implementierung">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1535815210288" ID="ID_1041148737" MODIFIED="1561827465667" TEXT="Problem: kein wirkliches Backtracking">
<linktarget COLOR="#80b3ba" DESTINATION="ID_1041148737" ENDARROW="Default" ENDINCLINATION="-1705;-7489;" ID="Arrow_ID_1257144480" SOURCE="ID_493114230" STARTARROW="None" STARTINCLINATION="838;114;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1535835597691" ID="ID_218241863" MODIFIED="1576282358004" TEXT="wird relevant bei Richtungs-Wechsel">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Beispiel:
    </p>
    <p>
      a-b-c-a
    </p>
    <p>
      match(&quot;a&quot;).after(&quot;b&quot;) scheitert, weil sich die Suche am ersten &quot;a&quot; festbei&#223;t.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
<node CREATED="1535835709996" ID="ID_239175550" MODIFIED="1535835723893" TEXT="wir brauchen zwingend eine Art Stack">
<icon BUILTIN="broken-line"/>
<node CREATED="1535835843019" ID="ID_772926928" MODIFIED="1535836462411" TEXT="die Sequenz der Filter mu&#xdf; verf&#xfc;gbar bleiben"/>
<node CREATED="1535836509369" ID="ID_391734023" MODIFIED="1535836566669" TEXT="wenn eine Konfiguration ersch&#xf6;pft (leer) ist m&#xfc;ssen wir..."/>
<node CREATED="1535836534934" ID="ID_371785386" MODIFIED="1535836558822" TEXT="auf dem n&#xe4;chsten Element der vorherigen Stufe neu aufsetezn"/>
</node>
<node CREATED="1535836610803" ID="ID_1351097381" MODIFIED="1535893429218" TEXT="das kommt mir bekannt vor...">
<icon BUILTIN="idea"/>
<node CREATED="1535836620898" ID="ID_1732889993" MODIFIED="1535836645399" TEXT="kann mein neuer Pipeline-Iter das?">
<icon BUILTIN="help"/>
</node>
<node CREATED="1535893406156" ID="ID_451238053" MODIFIED="1535893422972" TEXT="Ja: er wurde exakt f&#xfc;r solche Auswertungen konstruiert">
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#338800" CREATED="1535893431656" ID="ID_1626597975" MODIFIED="1537409091617" TEXT="Beschlu&#xdf;: umstellen auf TreeExplorer">
<arrowlink COLOR="#3eccac" DESTINATION="ID_1665477644" ENDARROW="Default" ENDINCLINATION="-4110;-2852;" ID="Arrow_ID_1163013232" STARTARROW="None" STARTINCLINATION="1631;0;"/>
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1536441983485" ID="ID_330124350" MODIFIED="1576282358003" TEXT="Warnung: anonymous namespace">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...ist mir nicht v&#246;llig klar, warum das bei einigen Includes auftritt,
    </p>
    <p>
      und bei anderen nicht. Beispiel
    </p>
    <p>
      
    </p>
    <p>
      In file included from src/lib/diff/test-mutation-target.hpp:55:0,
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;from tests/library/diff/diff-complex-application-test.cpp:35:
    </p>
    <p>
      src/lib/test/event-log.hpp:96:9: warning: 'lib::test::EventMatch' has a field 'lib::test::EventMatch::solution_' whose type uses the anonymous namespace [-Wsubobject-linkage]
    </p>
    <p>
      &#160;&#160;&#160;class EventMatch
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;^~~~~~~~~~
    </p>
    <p>
      In file included from src/lib/diff/test-mutation-target.hpp:55:0,
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;from tests/library/diff/tree-mutator-binding-test.cpp:32:
    </p>
    <p>
      src/lib/test/event-log.hpp:96:9: warning: 'lib::test::EventMatch' has a field 'lib::test::EventMatch::solution_' whose type uses the anonymous namespace [-Wsubobject-linkage]
    </p>
    <p>
      &#160;&#160;&#160;class EventMatch
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;^~~~~~~~~~
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1485548830035" FOLDED="true" HGAP="5" ID="ID_1295711115" MODIFIED="1518487921090" TEXT="Nutzen" VSHIFT="17">
<icon BUILTIN="bell"/>
<node CREATED="1485548856639" ID="ID_1677281474" MODIFIED="1518487921090" TEXT="spezifische Aktionen">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1485548894522" ID="ID_826011549" MODIFIED="1576282358002" TEXT="Problem: globale Aktionen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Beispiel: Aktionen, die im globalen Men&#252; stehen.
    </p>
    <p>
      &quot;Add Sequence&quot;
    </p>
    <ul>
      <li>
        wer bildet daraus ein Command?
      </li>
      <li>
        auf welchen Kontext bezieht sich das
      </li>
      <li>
        wen kann die Men&#252;-Registrierung konkret ansprechen (Verdrahtung ist statisch)
      </li>
    </ul>
  </body>
</html></richcontent>
<linktarget COLOR="#824f68" DESTINATION="ID_826011549" ENDARROW="Default" ENDINCLINATION="-872;-1178;" ID="Arrow_ID_1373278707" SOURCE="ID_1122969153" STARTARROW="Default" STARTINCLINATION="911;271;"/>
<icon BUILTIN="messagebox_warning"/>
<node COLOR="#338800" CREATED="1485555902731" ID="ID_1913236669" MODIFIED="1518487921090" TEXT="#1070 how to bind session commands into UI actions">
<icon BUILTIN="button_ok"/>
<node CREATED="1486767998242" ID="ID_1898269374" MODIFIED="1518487921090" TEXT="InteractionDirector verwenden">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1492444328031" ID="ID_1628732201" MODIFIED="1518487921090" TEXT="mu&#xdf; im Lauf der Zeit wachsen"/>
</node>
</node>
<node CREATED="1502452724107" ID="ID_689474303" MODIFIED="1518487921090" TEXT="Mutationen">
<node CREATED="1502452771285" ID="ID_1091994004" MODIFIED="1518487921090" TEXT="Diff-Format">
<arrowlink COLOR="#a9acc1" DESTINATION="ID_143203937" ENDARROW="Default" ENDINCLINATION="115;-2033;" ID="Arrow_ID_136706418" STARTARROW="None" STARTINCLINATION="1656;0;"/>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1502452875447" ID="ID_1363153586" MODIFIED="1576203487696" TEXT="MutationMessage">
<linktarget COLOR="#a7afc1" DESTINATION="ID_1363153586" ENDARROW="Default" ENDINCLINATION="931;-187;" ID="Arrow_ID_324877454" SOURCE="ID_336806935" STARTARROW="Default" STARTINCLINATION="835;592;"/>
<node CREATED="1502452903075" ID="ID_726723452" MODIFIED="1518487921090" TEXT="abstrahierter Iterator">
<node CREATED="1502453110640" ID="ID_1024081141" MODIFIED="1518487921090" TEXT="IterSource-Interface"/>
<node CREATED="1502453116327" ID="ID_1762714186" MODIFIED="1518487921090" TEXT="opaque generaction context"/>
<node CREATED="1502453128198" ID="ID_1311188906" MODIFIED="1518487921090" TEXT="per smart-ptr gehalten"/>
</node>
<node CREATED="1502452909091" ID="ID_638887155" MODIFIED="1518487921090" TEXT="nur einmal konsumierbar"/>
<node CREATED="1502452913906" ID="ID_1500100371" MODIFIED="1518487921090" TEXT="Framework zur Hanhabung">
<arrowlink COLOR="#afb1bd" DESTINATION="ID_1651893758" ENDARROW="Default" ENDINCLINATION="-1257;0;" ID="Arrow_ID_1786455458" STARTARROW="None" STARTINCLINATION="1858;0;"/>
</node>
</node>
</node>
<node CREATED="1485548866990" ID="ID_664933854" MODIFIED="1518487921090" TEXT="Commands"/>
<node CREATED="1485548878292" ID="ID_49934573" MODIFIED="1518487921090" TEXT="Broadcast"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1453545812389" FOLDED="true" HGAP="43" ID="ID_202253849" MODIFIED="1576282358002" TEXT="Core-Services" VSHIFT="2">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      konzeptionell: fertig
    </p>
    <p>
      Implementierung der real-world-Variante fehlt!
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#a9b4c1" DESTINATION="ID_1343270939" ENDARROW="Default" ENDINCLINATION="-197;638;" ID="Arrow_ID_1686519160" STARTARROW="Default" STARTINCLINATION="-83;-1020;"/>
<font NAME="SansSerif" SIZE="13"/>
<icon BUILTIN="go"/>
<node CREATED="1453545875627" ID="ID_1411740156" MODIFIED="1576282358001" TEXT="Definition &#xbb;Zentral-Dienste&#xab;">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Dienste im UI, erreichbar &#252;ber den Bus.
    </p>
    <p>
      Sie stellen die Verbindung zu zentralen Belangen her
    </p>
    <p>
      wie Session- und State-Managment, Commands etc.
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#338800" CREATED="1453545968166" ID="ID_399884859" MODIFIED="1561827465670" TEXT="Command-Handler">
<icon BUILTIN="button_ok"/>
<node CREATED="1453546129537" FOLDED="true" ID="ID_1926242869" MODIFIED="1518487921090" TEXT="empf&#xe4;ngt &quot;act&quot;-Nachrichten">
<icon BUILTIN="button_ok"/>
<node CREATED="1453546381255" ID="ID_1252400934" MODIFIED="1518487921090" TEXT="&quot;bind&quot; -&gt; Bindung">
<icon BUILTIN="button_ok"/>
<node CREATED="1453546393573" ID="ID_857178151" MODIFIED="1518487921090" TEXT="Paradigmen-Mismatch">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1453546417098" ID="ID_676713402" MODIFIED="1518487921090" TEXT="DOM vs. compiletime typing">
<icon BUILTIN="info"/>
</node>
<node CREATED="1453546436455" ID="ID_129001401" MODIFIED="1561827465674" TEXT="double-dispatch">
<icon BUILTIN="idea"/>
<node CREATED="1453546450317" ID="ID_1899026394" MODIFIED="1512926192213" TEXT="Variant-Visitor">
<icon BUILTIN="button_ok"/>
<node CREATED="1453546485737" ID="ID_491338311" MODIFIED="1453546493300" TEXT="Gen-Node-Typen"/>
<node CREATED="1453546493719" ID="ID_834270776" MODIFIED="1453546496947" TEXT="fest vorgegeben"/>
</node>
<node CREATED="1453546454484" ID="ID_1643300093" MODIFIED="1453590507167" TEXT="Trampolin">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1453546512277" ID="ID_968193365" MODIFIED="1453590559627" TEXT="Aufruf: generische Iteration">
<icon BUILTIN="info"/>
</node>
<node CREATED="1453590522161" ID="ID_1369411965" MODIFIED="1512926192215" TEXT="Problem: narrowing conversions">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1453590585865" ID="ID_350595711" MODIFIED="1453590606670" TEXT="explizit gef&#xe4;hrliche ausschlie&#xdf;en">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1453638973049" ID="ID_1350801390" LINK="https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63723" MODIFIED="1453639023645">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Compiler-Bug <font color="#c80219">Gcc-#63723</font>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1453639033250" ID="ID_1669831951" LINK="http://stackoverflow.com/questions/26705199/how-can-i-write-a-type-trait-to-check-if-a-type-is-convertible-to-another-by-a-n" MODIFIED="1453639049952" TEXT="s.a. Stackoverflow"/>
<node CREATED="1453639055478" ID="ID_1560466275" MODIFIED="1453639078468">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      gel&#246;st in GCC-5 --&#160;<i>backport unwahrscheinlich</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1453639119142" ID="ID_1472487058" MODIFIED="1453639126177" TEXT="inzwischen hartgecodet">
<icon BUILTIN="clanbomber"/>
</node>
</node>
<node CREATED="1453546467707" ID="ID_1543497504" MODIFIED="1512926192216" TEXT="Problem: template bloat">
<node CREATED="1453590622236" ID="ID_1084684065" MODIFIED="1512926192217" TEXT="h&#xe4;lt sich in Grenzen">
<icon BUILTIN="ksmiletris"/>
<node CREATED="1453590828976" ID="ID_659078492" MODIFIED="1453590855465" TEXT="eine VTable pro Zieltyp"/>
<node CREATED="1453590856220" ID="ID_376478329" MODIFIED="1453590879683">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      eine virtuelle Funktion
    </p>
    <p>
      pro m&#246;glichem Umwandlungs-Pfad
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1453590628419" ID="ID_1314031268" MODIFIED="1453590885601">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      wir verwenden die Basis-VTable
    </p>
    <p>
      und layern nur die tats&#228;chlich m&#246;glichen Umwandlungen dr&#252;ber
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
<node CREATED="1453590667630" ID="ID_792450888" MODIFIED="1453590699782" TEXT="&#xfc;berpr&#xfc;ft: mit -O3 und strip bleibt erstaunlich wenig &#xfc;brig"/>
<node CREATED="1453590741428" ID="ID_1733557933" MODIFIED="1453590749327" TEXT="1.6MiB -&gt; 100k"/>
</node>
</node>
</node>
<node CREATED="1453546367201" ID="ID_1473684366" MODIFIED="1518487921090" TEXT="&quot;bang&quot; -&gt; HandlingPattern">
<icon BUILTIN="button_cancel"/>
<node CREATED="1492205728949" ID="ID_730154835" MODIFIED="1518487921090" TEXT="abgeschafft"/>
<node CREATED="1492205732389" ID="ID_1080697951" MODIFIED="1518487921090" TEXT="wir k&#xf6;nnen stets gleich triggern"/>
</node>
<node CREATED="1492205741483" ID="ID_1132272888" MODIFIED="1518487921090" TEXT="Command wird sofort nach dem Binden getriggert"/>
<node COLOR="#338800" CREATED="1483925280108" HGAP="30" ID="ID_1479669922" MODIFIED="1582487520669" TEXT="Protokoll-Erweiterung" VSHIFT="8">
<arrowlink COLOR="#8ba05e" DESTINATION="ID_242219866" ENDARROW="Default" ENDINCLINATION="1170;1204;" ID="Arrow_ID_1617518648" STARTARROW="None" STARTINCLINATION="3617;-1097;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1483925298713" ID="ID_347702585" MODIFIED="1518487921090" TEXT="Command-Prototyp forken"/>
<node CREATED="1483925307385" ID="ID_509982277" MODIFIED="1518487921090" TEXT="ID durch Kontext-ID dekorieren"/>
<node CREATED="1483925311624" ID="ID_1592410347" MODIFIED="1518487921090" TEXT="Anforderung vom InvocationStateManager"/>
<node CREATED="1483925338796" ID="ID_348930186" MODIFIED="1518487921090" TEXT="implementiert in SessionCommandService">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node CREATED="1453546138215" ID="ID_621186206" MODIFIED="1518487921090" TEXT="Verbindung zum ProcDispatcher">
<icon BUILTIN="button_ok"/>
<node CREATED="1483927603312" ID="ID_1803909975" MODIFIED="1518487921090" TEXT="Aufruf der SessionCommand facade">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1483927624157" ID="ID_86978128" MODIFIED="1518487921090" TEXT="in CommandHandler gepackt">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1483927637022" ID="ID_455471953" MODIFIED="1518487921090" TEXT="total einfach hier">
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node CREATED="1453546183561" ID="ID_1080090125" MODIFIED="1518487921090" TEXT="Mock-Variante">
<node CREATED="1453546195240" ID="ID_1905175534" MODIFIED="1518487921090" TEXT="loggen">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1453546197727" ID="ID_606855270" MODIFIED="1518487921090" TEXT="verifizierbar machen">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1453546215117" ID="ID_31965862" MODIFIED="1518487921090" TEXT="pseudo-Command">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1483927678318" HGAP="25" ID="ID_1324099152" MODIFIED="1561827465674" TEXT="Notification-Facade &#xf6;ffnen" VSHIFT="4">
<arrowlink COLOR="#51517b" DESTINATION="ID_379585622" ENDARROW="Default" ENDINCLINATION="-476;439;" ID="Arrow_ID_1616528570" STARTARROW="Default" STARTINCLINATION="-541;0;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1483927692988" ID="ID_354422174" MODIFIED="1538263617013" TEXT="Lebenszyklus-Fragen verifizieren">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1483927735679" ID="ID_783490676" MODIFIED="1538263622227" TEXT="Integration in UI-Main verifizieren">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1483927710450" ID="ID_1085939201" MODIFIED="1522935005617" TEXT="Hochfahren des UI / Schlie&#xdf;en des UI">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1515977616903" ID="ID_1098045534" MODIFIED="1538263666187" TEXT="(vorl&#xe4;ufig) einfaches Fehler-Display">
<arrowlink COLOR="#ebf0a5" DESTINATION="ID_1007296291" ENDARROW="Default" ENDINCLINATION="-3154;1704;" ID="Arrow_ID_1091720734" STARTARROW="None" STARTINCLINATION="1220;0;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1501778430101" ID="ID_489078622" MODIFIED="1561827465675" TEXT="#1098 hand-over to UI thread">
<arrowlink COLOR="#7caaa8" DESTINATION="ID_1023343635" ENDARROW="Default" ENDINCLINATION="2513;3565;" ID="Arrow_ID_1832047032" STARTARROW="Default" STARTINCLINATION="2914;51;"/>
<linktarget COLOR="#6c5f80" DESTINATION="ID_489078622" ENDARROW="Default" ENDINCLINATION="712;-47;" ID="Arrow_ID_485145709" SOURCE="ID_31825421" STARTARROW="None" STARTINCLINATION="1538;-37;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1531583488816" ID="ID_626261980" MODIFIED="1531583585348" TEXT="Dispatcher">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1531583492656" ID="ID_1958336253" MODIFIED="1531583586580" TEXT="Queue mit explizitem Mutex-Locking">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1531583503318" ID="ID_1398440490" MODIFIED="1531583587884" TEXT="UI-Thread signalisieren per Gtk::Dispatcher">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1453546083296" ID="ID_1154674875" MODIFIED="1561827465677" TEXT="Presentation-State-Manager">
<icon BUILTIN="button_ok"/>
<node CREATED="1455290707481" ID="ID_551153117" MODIFIED="1518487921091">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      empf&#228;ngt alle <b>state mark notificatons</b>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1455290726358" ID="ID_386120755" MODIFIED="1518487921091" TEXT="mu&#xdf; gruppieren">
<node CREATED="1455290732805" ID="ID_1731455164" MODIFIED="1518487921091" TEXT="nach Ui-Element"/>
<node CREATED="1455290738044" ID="ID_1309710182" MODIFIED="1518487921091" TEXT="nach property innerhalb"/>
</node>
<node CREATED="1455290748539" ID="ID_504317246" MODIFIED="1518487921091" TEXT="zeichnet jeweils den letzten aktuellen Zustand auf">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1455290768888" ID="ID_1779151953" MODIFIED="1518487921091" TEXT="Wechselwirkungen">
<icon BUILTIN="info"/>
<node CREATED="1455290773936" ID="ID_533210684" MODIFIED="1518487921091" TEXT="geplant, absehbar">
<icon BUILTIN="bell"/>
</node>
<node CREATED="1455290807459" ID="ID_1222290895" MODIFIED="1518487921091" TEXT="mu&#xdf; Ausz&#xfc;ge aus dieser Info schaffen"/>
<node CREATED="1455290827193" ID="ID_1429808095" MODIFIED="1518487921091">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      nach <b>Perspektive</b>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1455290833048" ID="ID_1650274766" MODIFIED="1518487921091">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      nach <b>work site</b>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1455290849374" ID="ID_906623432" MODIFIED="1518487921091" TEXT="future work">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
</node>
<node CREATED="1488672534372" FOLDED="true" HGAP="78" ID="ID_1920838120" MODIFIED="1561827465685" TEXT="core commands" VSHIFT="21">
<icon BUILTIN="prepare"/>
<node CREATED="1488672580926" ID="ID_1920974710" MODIFIED="1518487921091" TEXT="konzeptionell">
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1488672621585" ID="ID_1461875887" MODIFIED="1679362063079" TEXT="Command-cycle">
<linktarget COLOR="#706a9a" DESTINATION="ID_1461875887" ENDARROW="Default" ENDINCLINATION="-923;-789;" ID="Arrow_ID_457540370" SOURCE="ID_969011841" STARTARROW="None" STARTINCLINATION="867;304;"/>
<icon BUILTIN="pencil"/>
<icon BUILTIN="hourglass"/>
<node CREATED="1488672838499" ID="ID_1617972329" MODIFIED="1518487921091" TEXT="Interaktionen">
<node CREATED="1492442637686" ID="ID_1148014554" MODIFIED="1518487921091" TEXT="brauche Command-ID">
<icon BUILTIN="button_ok"/>
<node CREATED="1492442643942" ID="ID_184523090" MODIFIED="1518487921091" TEXT="mu&#xdf; grunds&#xe4;tzlich bekannt sein"/>
<node CREATED="1492442652612" ID="ID_1774585291" MODIFIED="1518487921091" TEXT="ggfs fest definierte Konstante"/>
<node CREATED="1492442665858" ID="ID_48986283" MODIFIED="1518487921091" TEXT="definiert in proc/cmd.hpp">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1492442694199" ID="ID_502474813" MODIFIED="1518487921091" TEXT="CommandSetup">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1492442659060" ID="ID_707740928" MODIFIED="1518487921091" TEXT="lib::Symbol">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1488672957922" ID="ID_329010871" MODIFIED="1518487921091" TEXT="brauche InteractionStateManager">
<arrowlink COLOR="#5a80c1" DESTINATION="ID_121485208" ENDARROW="Default" ENDINCLINATION="9;-164;" ID="Arrow_ID_17404383" STARTARROW="None" STARTINCLINATION="1;52;"/>
<node CREATED="1488676089349" ID="ID_1584585045" MODIFIED="1518487921091" TEXT="Anfrage ...f&#xfc;r ein bestimmes Command"/>
<node CREATED="1488676629451" ID="ID_989334768" MODIFIED="1518487921091" TEXT="Problem: wie findet man den Zust&#xe4;ndigen">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1488676134951" ID="ID_1426727929" MODIFIED="1518487921091" TEXT="N : M">
<node CREATED="1488676119929" ID="ID_70646733" MODIFIED="1518487921091">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      einer k&#246;nnte f&#252;r
    </p>
    <p>
      mehrere Commands zust&#228;ndig sein
    </p>
  </body>
</html></richcontent>
<node CREATED="1488676210948" ID="ID_1003704499" MODIFIED="1518487921091" TEXT="verschiedene Auspr&#xe4;gungen"/>
<node CREATED="1488676230802" ID="ID_1711345566" MODIFIED="1518487921091" TEXT="generische Situation"/>
</node>
<node CREATED="1488676179840" ID="ID_1207866065" MODIFIED="1518487921091">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      mehrere k&#246;nnten f&#252;r
    </p>
    <p>
      ein Command zust&#228;ndig sein
    </p>
  </body>
</html></richcontent>
<node CREATED="1488676238120" ID="ID_62079120" MODIFIED="1518487921091" TEXT="da an ein Control/Interface-System gebunden"/>
<node CREATED="1488676280459" ID="ID_800780235" MODIFIED="1576282358001" TEXT="ist vermutlich keine gute Idee">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ....denn wir wollen ja grade
    </p>
    <p>
      den Widget-Code vom Control-System abstrahieren
    </p>
    <p>
      und ebenso die Gesten abstrahieren
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="stop-sign"/>
</node>
<node CREATED="1488676343170" ID="ID_1624806724" MODIFIED="1518487921091" TEXT="besser? InteractionStateManager == Geste">
<icon BUILTIN="help"/>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1488674244218" ID="ID_121485208" MODIFIED="1518487921091" TEXT="Aktivit&#xe4;ten">
<linktarget COLOR="#5a80c1" DESTINATION="ID_121485208" ENDARROW="Default" ENDINCLINATION="9;-164;" ID="Arrow_ID_17404383" SOURCE="ID_329010871" STARTARROW="None" STARTINCLINATION="1;52;"/>
<node COLOR="#338800" CREATED="1488674249665" ID="ID_1028887910" MODIFIED="1518487921091" TEXT="Command-Instanz">
<icon BUILTIN="button_ok"/>
<node CREATED="1488674520524" ID="ID_895059689" MODIFIED="1518487921091" TEXT="Prototyp-Pattern">
<icon BUILTIN="info"/>
</node>
<node CREATED="1488674528035" ID="ID_1084922722" MODIFIED="1576282358000">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <i>mu&#223;</i>&#160;Instanzen einsetzen
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...und zwar zwingend, sobald
    </p>
    <ul>
      <li>
        das command Argumente hat, die gebunden sein wollen
      </li>
      <li>
        mehrere Invocations des gleichen Grund-Commands &quot;gleichzeitig&quot; unterwegs sein k&#246;nnten
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node COLOR="#435e98" CREATED="1488674659521" FOLDED="true" ID="ID_1283697108" MODIFIED="1561827465687" TEXT="Problem: Instanz-Management">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1488674675895" ID="ID_1414738474" MODIFIED="1518487921091" TEXT="benannt oder anonyom">
<icon BUILTIN="help"/>
</node>
<node CREATED="1488674682869" ID="ID_1865712804" MODIFIED="1518487921091" TEXT="anonym == ref counted">
<icon BUILTIN="info"/>
</node>
<node CREATED="1488674692293" ID="ID_1154381764" MODIFIED="1518487921091" TEXT="bindet uns an Proc">
<icon BUILTIN="stop-sign"/>
<node CREATED="1488674807716" ID="ID_1220416942" MODIFIED="1518487921091" TEXT="ist das ein Problem?">
<icon BUILTIN="help"/>
</node>
<node CREATED="1488674815867" ID="ID_417989611" MODIFIED="1576282357999" TEXT="eigentlich nicht">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...vom Linken her nicht, da wir Gui gegen Proc linken
    </p>
    <p>
      vom Bauen auch nicht, und au&#223;erdem...
    </p>
    <p>
      ...coden wir ja nicht gegen die Implementierung,
    </p>
    <p>
      sondern gegen eine Abstraction (Command), die eigens daf&#252;r geschaffen wurde
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1488674905160" ID="ID_1688143285" MODIFIED="1518487921091" TEXT="ungutes Gef&#xfc;hl">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="smily_bad"/>
<node CREATED="1488674941243" ID="ID_1628081916" MODIFIED="1518487921091" TEXT="unterl&#xe4;uft das Interface-System"/>
<node CREATED="1488675139160" ID="ID_1466153465" MODIFIED="1518487921091" TEXT="unterl&#xe4;uft das Messaging / UI-Bus"/>
</node>
</node>
<node CREATED="1488674721265" ID="ID_1409487095" MODIFIED="1518487921091" TEXT="aber: benannte Instanzen leben einfach weiter">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1488677059648" ID="ID_1869818470" MODIFIED="1518487921091" TEXT="war eigentlich nur f&#xfc;r &quot;Spezialisierungen&quot; gedacht"/>
<node CREATED="1488936223175" ID="ID_1105962999" MODIFIED="1518487921091" TEXT="zu pr&#xfc;fen: overhead">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1488936242413" ID="ID_1255236132" MODIFIED="1518487921091" TEXT="k&#xf6;nnte eigener, dritter Typus werden">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1488936634128" ID="ID_857930488" MODIFIED="1518487921091" TEXT="Konsequenz">
<icon BUILTIN="button_ok"/>
<node CREATED="1488936638247" ID="ID_699367403" MODIFIED="1518487921091" TEXT="man sollte auf das Bauchgef&#xfc;hl h&#xf6;ren"/>
<node CREATED="1488936653341" ID="ID_629143054" MODIFIED="1518487921091" TEXT="Design leitet in richtige Bahnen"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1488936670970" ID="ID_697148715" MODIFIED="1613941754293" TEXT="die Trennung respektieren">
<arrowlink COLOR="#79d2c4" DESTINATION="ID_1131387570" ENDARROW="Default" ENDINCLINATION="-70;-129;" ID="Arrow_ID_1598234794" STARTARROW="None" STARTINCLINATION="-500;47;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1488675785223" FOLDED="true" ID="ID_134788782" MODIFIED="1561827465692" TEXT="L&#xf6;sung schaffen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1488675788278" ID="ID_241828684" MODIFIED="1518487921091" TEXT="wer erzeugt die Instanz?">
<icon BUILTIN="button_ok"/>
<node CREATED="1488676735628" ID="ID_845338567" MODIFIED="1518487921091" TEXT="der InteractionStateManager">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1488676746667" ID="ID_1675443482" MODIFIED="1518487921091" TEXT="jemand in Proc">
<icon BUILTIN="button_ok"/>
<node CREATED="1488936425628" ID="ID_273815265" MODIFIED="1518487921092" TEXT="neue Entit&#xe4;t"/>
<node CREATED="1488936429139" ID="ID_858892843" MODIFIED="1518487921092" TEXT="geh&#xf6;rt zum Command-System"/>
<node COLOR="#435e98" CREATED="1512926192223" ID="ID_283015913" MODIFIED="1613941797180" TEXT="CommandInstanceManager">
<icon BUILTIN="info"/>
</node>
</node>
</node>
<node CREATED="1488675795485" ID="ID_560742641" MODIFIED="1518487921092" TEXT="wer benennt die Instanz?">
<icon BUILTIN="help"/>
<node CREATED="1488676790165" ID="ID_450420022" MODIFIED="1518487921092" TEXT="der der sie erzeugt">
<icon BUILTIN="help"/>
</node>
<node CREATED="1488676796892" ID="ID_399980219" MODIFIED="1518487921092" TEXT="ein Benennungs-Service in Proc">
<icon BUILTIN="help"/>
</node>
<node CREATED="1488676805491" ID="ID_1995019439" MODIFIED="1518487921092" TEXT="ein Instanz-Pool">
<icon BUILTIN="help"/>
</node>
</node>
<node COLOR="#338800" CREATED="1488675800668" ID="ID_260870361" MODIFIED="1561827465694" TEXT="wer h&#xe4;lt die Instanz (am Leben)?">
<icon BUILTIN="button_ok"/>
<node CREATED="1488676827432" ID="ID_1354771185" MODIFIED="1576282357999" TEXT="Problem: air-Gap">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...wegen
    </p>
    <ul>
      <li>
        Command-Message via UI-Bus
      </li>
      <li>
        Durchreichen durch das Interface-System
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1488677586744" ID="ID_1077384395" MODIFIED="1488677612409" TEXT="AUA: Zwang zum Benennen">
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node CREATED="1488676941240" ID="ID_403164604" MODIFIED="1576282357998" TEXT="im Proc-Dispatcher kein Problem">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...da die DispatcherQueue direkt Command-Objekte (=frontend handle) speichert
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1488677212907" ID="ID_1525612446" MODIFIED="1488936784410" TEXT="Idee: im InteractionStateManager">
<icon BUILTIN="button_cancel"/>
<node CREATED="1488677232640" ID="ID_1033002023" MODIFIED="1488677274454" TEXT="null oder maximal eine pro Command"/>
<node CREATED="1488677258932" ID="ID_1695115228" MODIFIED="1488677268487" TEXT="andere Geste -&gt; andere Command-Instanz"/>
<node COLOR="#c15a5d" CREATED="1488677333066" ID="ID_182292267" MODIFIED="1488677344667" TEXT="Aber">
<node CREATED="1488677346473" ID="ID_712110821" MODIFIED="1488677350100" TEXT="air-Gap"/>
<node CREATED="1488677350640" ID="ID_901346570" MODIFIED="1488677370377" TEXT="Ausf&#xfc;hrung im Dispatcher erst sp&#xe4;ter"/>
<node COLOR="#338800" CREATED="1488677418087" ID="ID_644949863" MODIFIED="1576282357998" TEXT="ist doch kein Problem">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...denn das GUI l&#228;uft ja synchron.
    </p>
    <p>
      D.h. wir wissen, wenn wir das Air-Gap &#252;berstanden haben.
    </p>
    <p>
      Ab diesem Punkt h&#228;lt der Eintrag in der DispatcherQueue das Command am Leben,
    </p>
    <p>
      und wenn es stirbt, dann stirbt es halt...
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node CREATED="1488936070394" ID="ID_1131387570" MODIFIED="1488936736607" TEXT="Schlu&#xdf;folgerung">
<linktarget COLOR="#79d2c4" DESTINATION="ID_1131387570" ENDARROW="Default" ENDINCLINATION="-70;-129;" ID="Arrow_ID_1598234794" SOURCE="ID_697148715" STARTARROW="None" STARTINCLINATION="-500;47;"/>
<icon BUILTIN="forward"/>
<node CREATED="1488936102272" ID="ID_414025307" MODIFIED="1488936125740" TEXT="eigenes Instantiierungs-Protokoll">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1488936115534" ID="ID_1508575123" MODIFIED="1488936128074" TEXT="explizit in Proc zu unterst&#xfc;tzen">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1492443899058" ID="ID_1465290437" MODIFIED="1512926192223" TEXT="CommandInstanceManager">
<icon BUILTIN="button_ok"/>
<node CREATED="1492443908344" ID="ID_499675523" MODIFIED="1492443916643" TEXT="lebt in SessionCommandService"/>
<node CREATED="1492443917423" ID="ID_1829369544" MODIFIED="1492443926330" TEXT="an ProcDispatcher-Loop gebunden"/>
<node CREATED="1492443926806" ID="ID_1117512587" MODIFIED="1492443933129" TEXT="lebt und stirbt mit der Session"/>
<node CREATED="1492443933813" ID="ID_1185852649" MODIFIED="1492443940760" TEXT="hat eigene lokale Hashtable"/>
<node CREATED="1492443941260" ID="ID_870719620" MODIFIED="1576282357997" TEXT="unterst&#xfc;tzt einfachen Fallback">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      aufruf direkt mit Command-ID -&gt; erzeugt automatisch eine Klon-Kopie
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1488936129180" ID="ID_62638556" MODIFIED="1488936137127" TEXT="hand-over">
<node CREATED="1488936140275" ID="ID_61978297" MODIFIED="1488936152237" TEXT="entfernt Registrierung"/>
<node CREATED="1488936152849" ID="ID_525023498" MODIFIED="1488936164963" TEXT="erzeugt anonyme Instanz"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1488936910756" HGAP="200" ID="ID_208733336" MODIFIED="1538871084006" TEXT="neues Design" VSHIFT="14">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1488937072267" ID="ID_1765750778" MODIFIED="1488937082039" TEXT="separation of concerns">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1488936925448" ID="ID_1949523361" MODIFIED="1488937085712" TEXT="zwei neue Entit&#xe4;ten">
<icon BUILTIN="yes"/>
<node CREATED="1488936938742" ID="ID_1388901840" MODIFIED="1488939645006">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      GUI: <b>CmdAccessor</b>
    </p>
  </body>
</html></richcontent>
<node CREATED="1488936962690" ID="ID_399848637" MODIFIED="1488936995228" TEXT="vermittelt InvocationStateManager"/>
<node CREATED="1488937001406" ID="ID_1747520920" MODIFIED="1488937012304" TEXT="letzterer ist Interface f&#xfc;r UI-Entit&#xe4;ten"/>
</node>
<node CREATED="1488936942317" ID="ID_222608258" MODIFIED="1488939548823">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Proc: <b>CmdInstanceManager</b>
    </p>
  </body>
</html></richcontent>
<node CREATED="1488937028202" ID="ID_1121930542" MODIFIED="1488937033253" TEXT="erzeugt die Instanzen"/>
<node CREATED="1488937033769" ID="ID_1795817178" MODIFIED="1488937045947" TEXT="verwaltet deren Lebenszyklus"/>
<node CREATED="1488937046591" ID="ID_1911259949" MODIFIED="1488937055426" TEXT="vom UI allein per ID ansprechbar"/>
</node>
</node>
<node CREATED="1488938186100" ID="ID_98580620" MODIFIED="1489191362863" TEXT="Command-Definition erweitern">
<icon BUILTIN="hourglass"/>
<node CREATED="1488938195387" ID="ID_1831459518" MODIFIED="1488938202950" TEXT="M&#xf6;glichkeit, Regeln vorzugeben"/>
<node CREATED="1488938222135" ID="ID_1365861102" MODIFIED="1488938232250" TEXT="werden fest mit dem Command zusammen konfiguriert"/>
<node CREATED="1488938205266" ID="ID_1560120611" MODIFIED="1488938215411" TEXT="diese k&#xf6;nnen aus der Command-Def bezogen werden"/>
</node>
<node CREATED="1488939658004" ID="ID_726054321" MODIFIED="1488939668212" TEXT="Interaktionen">
<icon BUILTIN="info"/>
<node CREATED="1488939675705" ID="ID_1515081819" MODIFIED="1488939724134" TEXT="UI-Element fragt CmdAccessor nach InteractionStateManager"/>
<node CREATED="1488939946828" ID="ID_1817986480" MODIFIED="1488940966027" TEXT="CmdAccessor speichert InteractionStateManager"/>
<node CREATED="1492442881509" ID="ID_79816412" MODIFIED="1492442905342" TEXT="irgendjemand bindet ein Command an den Kontext und markiert die zu bindenden Argumente"/>
<node CREATED="1492442906642" ID="ID_1806470431" MODIFIED="1492442926595" TEXT="dabei werden Argumente mit bestimmten Rollen markiert (Subjekt, Scope, Wert)"/>
<node CREATED="1488939748247" ID="ID_589914539" MODIFIED="1489079785598" TEXT="InteractionStateManager belegt beim CmdInstanceManager neue ID..."/>
<node CREATED="1488940222591" ID="ID_1071611814" MODIFIED="1488940241768" TEXT="UI-Element fragt InteractionStateManager: &quot;kann dieses Command ausgef&#xfc;hrt werden&quot;?"/>
<node CREATED="1488940300116" ID="ID_172216455" MODIFIED="1488940331244" TEXT="UI-Element registriert sich beim InteractionStateManager (als Observer)"/>
<node CREATED="1488940435601" ID="ID_1906295137" MODIFIED="1492442861300" TEXT="InteractionState befriedigt die Parameter aus dem aktuellen Interaktions-Kontext"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1488940469365" ID="ID_130562988" MODIFIED="1576282357997" TEXT="TODO: wie werden die Parameter konkret &#xfc;bergeben?">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      es k&#246;nnte z.B. sein, da&#223; man vom InteractionState
    </p>
    <p>
      direkt einen Record&lt;GenNode&gt; bezieht, und bei diesem Zugriff
    </p>
    <p>
      automatisch die Kontext-Accessor-Ausdr&#252;cke ausgewertet werden
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#6b709e" DESTINATION="ID_131071232" ENDARROW="Default" ENDINCLINATION="275;0;" ID="Arrow_ID_1369499964" STARTARROW="Default" STARTINCLINATION="275;0;"/>
<icon BUILTIN="bell"/>
</node>
<node CREATED="1488940519518" ID="ID_1875791797" MODIFIED="1488940533992" TEXT="bei n&#xe4;chster Anfrage wird CmdInstanceManager daher neue Instanz anlegen"/>
</node>
</node>
<node BACKGROUND_COLOR="#fefc4e" COLOR="#351d75" CREATED="1488677859619" HGAP="-15" ID="ID_827179653" MODIFIED="1576282357996" TEXT="Problem: Service-Zugang" VSHIFT="24">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...da dies ein pervasiv genutzter Service ist,
    </p>
    <p>
      und wir nicht wollen, da&#223; jedes Widget
    </p>
    <p>
      mit dem InteractionDirector verdrahtet sein mu&#223;!
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#9f5680" DESTINATION="ID_850989325" ENDARROW="Default" ENDINCLINATION="211;189;" ID="Arrow_ID_1007188680" STARTARROW="None" STARTINCLINATION="963;-965;"/>
<linktarget COLOR="#758ba4" DESTINATION="ID_827179653" ENDARROW="Default" ENDINCLINATION="173;83;" ID="Arrow_ID_57938013" SOURCE="ID_1621107057" STARTARROW="None" STARTINCLINATION="384;-135;"/>
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1488936835940" ID="ID_1322149090" MODIFIED="1576282357996" TEXT="separates Problem">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      hat &#252;berhaupt nichts mit dem Zugang zu Commands zu tun,
    </p>
    <p>
      und auch nichts mit der Trennung zwischen Layern und Subsystemen
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#435e98" CREATED="1488936840059" ID="ID_1305671938" MODIFIED="1576282357995" TEXT="generisches Problem">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      es geht um Service-Dependencies
    </p>
    <p>
      aka DependencyInjection + Lifecycle Management
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#b6829b" DESTINATION="ID_1359158691" ENDARROW="Default" ENDINCLINATION="1134;-1646;" ID="Arrow_ID_927211935" STARTARROW="None" STARTINCLINATION="1359;916;"/>
<icon BUILTIN="info"/>
<node CREATED="1488937419308" ID="ID_994813744" MODIFIED="1518487921092" TEXT="lib::Depend ausbauen"/>
<node CREATED="1488937436890" ID="ID_1184288068" MODIFIED="1518487921092" TEXT="kann auf sp&#xe4;ter vertagt werden"/>
<node CREATED="1488937424996" ID="ID_1712367280" MODIFIED="1518487921092" TEXT="vorerst eigenes Front-End verwenden"/>
<node CREATED="1488937449896" ID="ID_1352702920" MODIFIED="1576282357995" TEXT="Idee klar">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <ul>
      <li>
        man hat ein statisches Front-End, d.h. by-name access
      </li>
      <li>
        hinter dem liegt eine Factory
      </li>
      <li>
        die Instanz kann von innen her wieder geschlossen werden
      </li>
      <li>
        wenn geschlossen, dann Fehler werfen
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1538868884651" ID="ID_92705586" MODIFIED="1538868888699" TEXT="gel&#xf6;st">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1614379178320" ID="ID_1221036425" MODIFIED="1614380579512" TEXT="komplexe Aktionen mit Satzcharakter und Kontext">
<linktarget COLOR="#5b4964" DESTINATION="ID_1221036425" ENDARROW="Default" ENDINCLINATION="717;-46;" ID="Arrow_ID_1875882072" SOURCE="ID_1624270915" STARTARROW="None" STARTINCLINATION="586;34;"/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1614379221818" ID="ID_970302446" MODIFIED="1614379248300" TEXT="zun&#xe4;chst wurde nur eine &#xbb;point and shot&#xab;-L&#xf6;sung realisiert">
<icon BUILTIN="info"/>
<node CREATED="1614379249966" ID="ID_1395628620" MODIFIED="1614379269183" TEXT="feste verdrahtete Command-ID"/>
<node CREATED="1614379269938" ID="ID_487933301" MODIFIED="1614379285059">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      nur eine Art <i>remote procedure call</i>
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1614379298743" ID="ID_1608963281" MODIFIED="1614379434193" TEXT="Frage: mu&#xdf; das UI-Bus-Protokoll erweitert werden?">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...und das hei&#223;t auch, wo werden die Aussage-S&#228;tze gebildet?<br />wird das Formen von kontextbezogenen Anweisungen im UI-Bus-Protokoll eigens verankert, oder erfolgt dies komplett intern im Stage-Layer?
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="help"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1614379467852" ID="ID_327990233" MODIFIED="1614379593877" TEXT="das hei&#xdf;t auch: Aufsammeln der Kontext-Information &#x2015; wer und wie?">
<icon BUILTIN="help"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1614379530868" ID="ID_131071232" MODIFIED="1614379614382" TEXT="werden Parameter sofort &#xfc;bersetzt, oder schrittweise aufgesammelt?">
<linktarget COLOR="#6b709e" DESTINATION="ID_131071232" ENDARROW="Default" ENDINCLINATION="275;0;" ID="Arrow_ID_1369499964" SOURCE="ID_130562988" STARTARROW="Default" STARTINCLINATION="275;0;"/>
<icon BUILTIN="help"/>
</node>
<node COLOR="#3301ae" CREATED="1616854028288" ID="ID_1575859119" MODIFIED="1616854070566" TEXT="neige mehr und mehr dazu, dies rein intern in gewissen &#xbb;Gesten-Controllern&#xab; zu regeln...">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1618493782498" ID="ID_1188739544" MODIFIED="1618495853582" TEXT="im Allgemeinen....">
<arrowlink COLOR="#436b85" DESTINATION="ID_1168598401" ENDARROW="Default" ENDINCLINATION="-1067;53;" ID="Arrow_ID_811903885" STARTARROW="None" STARTINCLINATION="325;54;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
</node>
<node CREATED="1488674268407" ID="ID_284516869" MODIFIED="1518487921092" TEXT="Parameter">
<node CREATED="1488937542963" ID="ID_853531623" MODIFIED="1518487921092" TEXT="passiert im InvocationStateManager"/>
<node CREATED="1488937551514" ID="ID_1024843173" MODIFIED="1518487921092" TEXT="es k&#xf6;nnte Binde-Regeln geben"/>
<node CREATED="1488937996901" ID="ID_1000532365" MODIFIED="1576282357994" TEXT="L&#xf6;sungsweg vom Command vorkonfiguriert">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...nicht klar, ob das notwendig (und gut) ist
    </p>
    <p>
      es k&#246;nnte auch ausreichen, einfach die passende InteractionStateManager-Impl zu verwenden
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="help"/>
</node>
<node CREATED="1488937565632" ID="ID_1990212985" MODIFIED="1576282357994" TEXT="dem User (UI-Element) ist das egal">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      denn InteractionStateManager ist ein <b>Interface</b>!
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1488937651021" ID="ID_1956085726" MODIFIED="1518487921092" TEXT="Binde-Muster">
<icon BUILTIN="idea"/>
<node CREATED="1488937670778" ID="ID_696645875" MODIFIED="1576282357993" TEXT="fest hinterlegte Eintit&#xe4;t einsetzen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...das UI wei&#223;,
    </p>
    <p>
      wer das konkret immer sein wird.
    </p>
    <p>
      D.h. beim Start des UI wird eine Verbindung irgendwo hinterlegt
    </p>
    <p>
      Das k&#246;nnte ein <i>Advice</i>&#160;sein
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1488937682649" ID="ID_1090053275" MODIFIED="1576282357993" TEXT="aktuelles Element (mit Typ-Check)">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      vom Command her ist der Typ festgelegt
    </p>
    <p>
      auf das &quot;aktuelle Element&quot; wir eine Art Typ-Match gemacht.
    </p>
    <p>
      Wenn der pa&#223;t, kann das aktuelle Element verwendet werden.
    </p>
    <p>
      In diesem Fall wird das Command <i>enabled</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1488937711053" ID="ID_586793367" MODIFIED="1576282357992" TEXT="partial application">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      eine Argumentliste mit mehreren Parametern wir Schritt f&#252;r Schritt geschlossen
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1488937724867" ID="ID_231519502" MODIFIED="1576282357991" TEXT="Ordnung nach Scope">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      wenn mehrere Objekte als Argumente in Frage kommen,
    </p>
    <p>
      wird das gem&#228;&#223; Scope &quot;n&#228;chstgelegne&quot; genommen
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1488937933566" ID="ID_170827087" MODIFIED="1518487921092" TEXT="das sind komplexe Pl&#xe4;ne">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1488937947004" ID="ID_1297081811" MODIFIED="1518487921092" TEXT="Schlu&#xdf;folgerung: nur die Strategie vorsehen">
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1618498875079" ID="ID_1822212049" MODIFIED="1618499095806" TEXT="Framework-Anforderungen beachten">
<linktarget COLOR="#5c4052" DESTINATION="ID_1822212049" ENDARROW="Default" ENDINCLINATION="-834;0;" ID="Arrow_ID_1506237506" SOURCE="ID_420683622" STARTARROW="None" STARTINCLINATION="112;439;"/>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node CREATED="1488672976664" ID="ID_476262016" MODIFIED="1518487921092" TEXT="Rollen">
<node CREATED="1488673008668" ID="ID_1231961413" MODIFIED="1518487921092" TEXT="InvocationTrail">
<icon BUILTIN="button_cancel"/>
<node CREATED="1488673045793" ID="ID_969627518" MODIFIED="1518487921092" TEXT="passiver Marker f&#xfc;r eine Instanz"/>
<node CREATED="1492443050502" ID="ID_333085641" MODIFIED="1518487921092" TEXT="Konzept aufgegeben">
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node CREATED="1488673032384" ID="ID_1621941781" MODIFIED="1518487921092" TEXT="InteractionStateManager">
<node CREATED="1488673053917" ID="ID_312201027" MODIFIED="1518487921092" TEXT="Vermittler"/>
<node CREATED="1488673066524" ID="ID_1129594057" MODIFIED="1518487921092" TEXT="Bildung von S&#xe4;tzen"/>
</node>
</node>
</node>
<node COLOR="#53102b" CREATED="1613947659276" ID="ID_1657972773" MODIFIED="1613947682366" TEXT="Stand">
<font NAME="SansSerif" SIZE="16"/>
<icon BUILTIN="forward"/>
<node CREATED="1613947688776" ID="ID_1133022481" MODIFIED="1613947709441" TEXT="2017 - 2/2021">
<node CREATED="1613947717729" ID="ID_1840082890" MODIFIED="1613948142348" TEXT="es gibt eine Vision">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <ul>
      <li>
        Interaktion mit einem UI formuliert Befehls-Aussagen indem sie die &#187;<b>Gesten</b>&#171; des Benutzers beobachtet; dieser bewegt sich dabei in konzeptionell in einem &#187;Interface-<b>Raum</b>&#171;
      </li>
      <li>
        das konkrete Interaktions-System (Keyboard, Mouse, Pen, Hardware-Controller, VR...) ist konsequent zu <b>abstrahieren</b>
      </li>
      <li>
        eine Zwischenschicht trennt die Widgets, die das UI realisieren, und die vom UI abgesetzten Handlungs-Anweisungen (&#187;Commands&#171;)
      </li>
      <li>
        diese Zwischenschicht &#8213; oder Interaktions-Schicht &#8213; zu entwickeln ist ein Kern-Belang; dieser Belang kann niemals von irgend einem Framework abgedeckt werden
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node CREATED="1613947727636" ID="ID_729788594" MODIFIED="1613948283484" TEXT="ein elaboriertes Framework wurde geplant und wieder verworfen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      2017 habe ich zun&#228;chst versucht, die Analyse soweit zu treiben, da&#223; sich daraus Strukturen ablesen lassen; die Intention war, darin die einfache Struktur eines direkt &quot;point and shot&quot; gegebenen Commands eingebettet zu finden. Dieses Bestreben mu&#223;te abgebrochen werden, da ich noch nicht genug &#252;ber das konrete Interface wei&#223;, um sachad&#228;quat beurteilen zu k&#246;nnen, was <i>notwendig ist.</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1613947757959" ID="ID_1626123352" MODIFIED="1613948424917" TEXT="darauf aufbauend wurde der einfachste Fall bereits fertig implementiert">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...stattdessen habe ich dann die schon bestehenden und definierten Teile zusammengebunden, um das direkte Absetzen von fest im Code vorgegebenen Commands zu erm&#246;glichen. Diese gehen seither als einfache symbolische Nachrichten &#252;ber den UI-Bus. Das gesamte Thema &quot;Argument Binding&quot; ist bereits abschlie&#223;end behandelt (Marshalling via GenNode). Ebenso der asynchrone Dispatch, und die ebenso asynchron entkoppelte R&#252;ckmeldung (&quot;push up&quot;) in das UI.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1613947778476" ID="ID_1664459728" MODIFIED="1613948672376" TEXT="an der Grundidee wird festgehalten">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      2018-2019 habe ich eine dieser Vision entsprechende, offene und generische Grundstruktur des UI angelegt, und begonnen, konkret f&#252;r die Timeline-Repr&#228;sentation auszuimplementieren. Auch dies ist grunds&#228;tzlich alles geregelt, wir k&#246;nnen ein Custom-Stylesheet aufgreifen, wir k&#246;nnen eigene Widgets mit custom-drawing realisieren, und trotzdem weitgehend auf das UI-Toolkitset mit allen seinen Zusatzfunktionen zur&#252;ckgreifen. Nun (2/2021) bin ich wieder an dem Punkt, an dem die erste, einfachste &#187;Geste&#171; zu realisieren w&#228;re: n&#228;mlich das Verschieben eines Clip in der Timeline. Und ich halte genau an der Einsicht fest, da&#223; diese Interaktions-Logik nicht fest in ein Widget eingebaut werden darf.<br /><i><font color="#a33449">Da stehe ich, und mehr wei&#223; ich noch nicht...</font></i>
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node CREATED="1488672585310" ID="ID_50525010" MODIFIED="1518487921092" TEXT="framework">
<node CREATED="1489191062441" ID="ID_772085108" MODIFIED="1518487921092" TEXT="Aktoren">
<node CREATED="1489191072415" ID="ID_546981226" MODIFIED="1518487921092" TEXT="Command Definition"/>
<node CREATED="1489191088613" ID="ID_1858363588" MODIFIED="1518487921092" TEXT="CmdAccessor"/>
<node CREATED="1489191103187" ID="ID_1016072906" MODIFIED="1518487921092" TEXT="InteractionStateManager"/>
<node CREATED="1489191095700" ID="ID_1053653890" MODIFIED="1518487921092" TEXT="InteractionDirector"/>
</node>
<node CREATED="1489191112026" FOLDED="true" ID="ID_1805268724" MODIFIED="1561827465703" TEXT="Implementierung">
<icon BUILTIN="go"/>
<node CREATED="1489191118705" ID="ID_1501573546" MODIFIED="1518487921092" TEXT="Aufbau">
<node CREATED="1489191126256" HGAP="24" ID="ID_127004361" MODIFIED="1518487921092" TEXT="Tickets" VSHIFT="26">
<icon BUILTIN="info"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1489191161395" ID="ID_346158251" MODIFIED="1518487921092" TEXT="#1087 GUI/Session command handling">
<linktarget COLOR="#606d94" DESTINATION="ID_346158251" ENDARROW="Default" ENDINCLINATION="671;0;" ID="Arrow_ID_726918944" SOURCE="ID_898481930" STARTARROW="None" STARTINCLINATION="1012;0;"/>
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1489191208557" FOLDED="true" ID="ID_632390561" MODIFIED="1561827465704" TEXT="#1088 Command definition registration">
<icon BUILTIN="button_ok"/>
<node CREATED="1490986190364" ID="ID_266121409" MODIFIED="1518487921092" TEXT="CommandSetup helper">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1490986198683" ID="ID_658767230" MODIFIED="1518487921092" TEXT="Build-Skript vertagt">
<icon BUILTIN="hourglass"/>
<node CREATED="1518487921092" ID="ID_1694595239" MODIFIED="1613943616179" TEXT="vorl&#xe4;ufig werden Commands von Hand definiert">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Der Plan ist, einmal Command-Skripts (C++ basierte DSL-Notation) direkt vom Build-System verarbeiten zu lassen; der Build wird daraus passende C++-Translation-Units generieren und &#252;bersetzen. Tats&#228;chlich ist all dies nicht besonders anspruchsvoll, denn die eigentliche Arbeit, die DSL-Notation ist bereits geschaffen. Trotzdem ist das Thema vorerst vertagt, weil zur praktischen Ausf&#252;hrung eine Menge zus&#228;tzlichem Wissen aus der Praxis notwendig ist, wie z.B. wie teilt man die Commands ein, wer definiert &#252;berhaupt Commands, und zu welchem Zweck. Beispielsweise ist es durchaus sp&#228;ter einmal denkbar, da&#223; auch eine Lumiera-Extension (Plug-in) zus&#228;tzliche Command-Scripts bereitstellt. Dann stellt sich nat&#252;rlich auf das (ziemlich anspruchsvolle) Problem der Belegung von Command-IDs erneut.
    </p>
    <p>
      
    </p>
    <p>
      Vorerst und auf l&#228;ngere Sicht gen&#252;gt es v&#246;llig, die Command-Scripts von Hand zu schreiben und in einigen Cpp-Files im Steam-Layer abzulegen. Als allgemein sichtbare Schnittstelle dient der Header cmd.hpp, in dem die Command-IDs fest als globale Konstanten definiert sind. Diesen Ansatz behalten wir solange bei, bis die Pflege dieser fest verdrahteten Definitionen und Command-Skripte tats&#228;chlich zum Problem wird.
    </p>
    <p>
      <b>YAGNI</b>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1613942454968" ID="ID_1870290710" MODIFIED="1613942458935" TEXT="proc/cmd.hpp">
<icon BUILTIN="forward"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1489191229098" FOLDED="true" ID="ID_341428100" MODIFIED="1582989005605" TEXT="#1089 Command instance management">
<linktarget COLOR="#584d79" DESTINATION="ID_341428100" ENDARROW="Default" ENDINCLINATION="1864;-1272;" ID="Arrow_ID_879741123" SOURCE="ID_1331796226" STARTARROW="None" STARTINCLINATION="769;78;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1489196572055" ID="ID_339289633" MODIFIED="1489196577154" TEXT="Command-ID">
<node CREATED="1489196578470" ID="ID_1460242316" MODIFIED="1490976980566" TEXT="extensible ID anschauen">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1490976981548" ID="ID_319912426" MODIFIED="1492169049860" TEXT="nein: es gen&#xfc;gen rein textuelle IDs">
<arrowlink DESTINATION="ID_119293304" ENDARROW="Default" ENDINCLINATION="153;-248;" ID="Arrow_ID_1691148413" STARTARROW="None" STARTINCLINATION="312;0;"/>
</node>
</node>
<node CREATED="1490985775995" ID="ID_1920622498" MODIFIED="1561827465707" TEXT="Instance-Manager">
<icon BUILTIN="yes"/>
<node CREATED="1490985786138" ID="ID_664659428" MODIFIED="1490985793244" TEXT="einfache Komponente"/>
<node CREATED="1490985793793" ID="ID_511499018" MODIFIED="1490985798436" TEXT="wo">
<node CREATED="1490985799639" ID="ID_1798979341" MODIFIED="1490985804979" TEXT="SessionCommandService"/>
<node CREATED="1490985805518" ID="ID_937609414" MODIFIED="1490985814593" TEXT="damit vom SessionLoopThread gemanaged"/>
</node>
<node CREATED="1490985820613" ID="ID_1526182884" MODIFIED="1490985823408" TEXT="API">
<node CREATED="1490985825844" ID="ID_1072463021" MODIFIED="1490985853020" TEXT="neue Instanz">
<node CREATED="1490986239341" ID="ID_1121928421" MODIFIED="1490986243065" TEXT="ID dekorieren"/>
<node CREATED="1490986243557" ID="ID_1457927529" MODIFIED="1490986249952" TEXT="slot / smart-ptr erzeugen"/>
</node>
<node CREATED="1490985938597" ID="ID_90790203" MODIFIED="1490985955039" TEXT="Dispatch">
<node CREATED="1490986252963" ID="ID_1745967844" MODIFIED="1490986257991" TEXT="smart-ptr move"/>
<node CREATED="1490986258483" ID="ID_462607969" MODIFIED="1490986261422" TEXT="slot leeren"/>
</node>
</node>
</node>
<node CREATED="1491005426763" ID="ID_1575553505" MODIFIED="1538870990460" TEXT="zu kl&#xe4;ren: duplikate Instanz">
<arrowlink COLOR="#ca978d" DESTINATION="ID_1805144008" ENDARROW="Default" ENDINCLINATION="594;0;" ID="Arrow_ID_191915626" STARTARROW="None" STARTINCLINATION="594;0;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1491005509448" ID="ID_709599195" MODIFIED="1491005512147" TEXT="Fehler?"/>
<node CREATED="1491005514015" ID="ID_66770459" MODIFIED="1491495268579" TEXT="bestehende Instanz &#xfc;berb&#xfc;geln"/>
<node CREATED="1491495244653" ID="ID_1710448495" MODIFIED="1491495254015" TEXT="stillschweigend die bestehende Instanz verwenden"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1491495254699" ID="ID_1848409976" MODIFIED="1613943705388" TEXT="per Fehler abweisen">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="forward"/>
</node>
</node>
<node COLOR="#338800" CREATED="1491008040105" FOLDED="true" HGAP="50" ID="ID_662216926" MODIFIED="1561827465708" TEXT="Implementierung">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1491008045936" ID="ID_1071153669" MODIFIED="1491008146180" TEXT="CommandInstanceManager_test">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1491008059366" ID="ID_1809405076" MODIFIED="1491008147195" TEXT="CommandInstanceManager">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1491008067046" ID="ID_1905446877" MODIFIED="1491008148076" TEXT="einfache Map-Impl">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1491008073989" ID="ID_1954195404" MODIFIED="1491008148995" TEXT="Symbol-Tabelle">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1491008079676" ID="ID_1262786130" MODIFIED="1491618841600" TEXT="Test">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1491008088699" ID="ID_1501876595" MODIFIED="1576282357991" TEXT="Basisfall l&#xe4;uft noch nicht">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      die Instanz kommt nicht in der Fixture-Queue an
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1491008118695" ID="ID_1595821007" MODIFIED="1491618830886" TEXT="Invocation abdecken">
<icon BUILTIN="button_ok"/>
<node CREATED="1491498978878" ID="ID_1001760576" MODIFIED="1576282357991" TEXT="nicht direkt">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      der Umstand, da&#223; Commands auch ausgef&#252;hrt werdern k&#246;nnen,
    </p>
    <p>
      geh&#246;rt nicht zum Thema &quot;Instanz-Management&quot;
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1491499005954" ID="ID_1944400975" MODIFIED="1576282357990" TEXT="aber im Hinblick auf den Lebenszyklus">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...denn ein Command geht dann in die Queue
    </p>
    <p>
      und kann noch ausgef&#252;hrt werden, w&#228;hrend ein weiteres
    </p>
    <p>
      schon &quot;in der Mache ist&quot;
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#338800" CREATED="1491008124550" ID="ID_249252999" MODIFIED="1491618833169" TEXT="Duplikate abdecken">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1491008129165" ID="ID_118623494" MODIFIED="1491618835441" TEXT="Lebenszyklus-Fehler">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node CREATED="1491753027936" HGAP="53" ID="ID_118278209" MODIFIED="1561827465709" TEXT="Refactoring" VSHIFT="4">
<icon BUILTIN="button_ok"/>
<node CREATED="1491753036895" ID="ID_1029946389" MODIFIED="1491753047201" TEXT="fall-back auf Command integrieren"/>
<node CREATED="1491753645531" ID="ID_597184850" MODIFIED="1491753650607" TEXT="maybeGet entfernen"/>
<node CREATED="1491753047981" FOLDED="true" ID="ID_1220888974" MODIFIED="1491753330643" TEXT="Referenz rausgeben">
<icon BUILTIN="button_cancel"/>
<node CREATED="1491753058620" ID="ID_1772710050" MODIFIED="1491753078866" TEXT="nicht thradsafe">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1491753170924" ID="ID_1947747818" MODIFIED="1576282357989" TEXT="Command-Zugriff ist by value">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...aus gutem Grund
    </p>
    <p>
      (kann mich erinnern, da&#223; ich mir das &#252;berlegt hatte).
    </p>
    <p>
      Sofern Definitionen wirklich concurrent ge&#228;ndert oder gel&#246;scht werden,
    </p>
    <p>
      k&#246;nnte es sein, da&#223; jemand auf einer stale reference arbeitet,
    </p>
    <p>
      denn das Lock sch&#252;tzt nur den Aufruf innerhalb der CommandRegistry.
    </p>
    <p>
      Sicher ist der Zugriff nur, wenn im Schutzbereich dieses Locks ein
    </p>
    <p>
      neues Command-Objekt kopiert wird. Was allerdings den RefCount erh&#246;ht.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1491753132377" ID="ID_1441469124" MODIFIED="1491753156451" TEXT="m&#xfc;&#xdf;te daf&#xfc;r direkt auf die CommandRegistry zugreifen">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1491753332318" ID="ID_889636506" MODIFIED="1491757384745" TEXT="nein: Wert rausgeben">
<linktarget COLOR="#3e657d" DESTINATION="ID_889636506" ENDARROW="Default" ENDINCLINATION="21;223;" ID="Arrow_ID_1428975472" SOURCE="ID_1707474386" STARTARROW="None" STARTINCLINATION="-541;0;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1491753337438" ID="ID_1228083262" MODIFIED="1491753342636" TEXT="KISS">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1491753354116" ID="ID_1070880433" MODIFIED="1576282357989" TEXT="Bus + CommandHandler + GenNode">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      aber sich mit einem Refcount verr&#252;ckt machen.....
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="smiley-oh"/>
</node>
</node>
</node>
<node CREATED="1491656361886" HGAP="62" ID="ID_1269299900" MODIFIED="1561827465713" TEXT="Einbindung" VSHIFT="12">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1491659172438" HGAP="34" ID="ID_1103739498" MODIFIED="1491757376165" TEXT="in SessionCommandService" VSHIFT="-3">
<icon BUILTIN="button_ok"/>
<node CREATED="1491659191155" ID="ID_586991718" MODIFIED="1491659216131" TEXT="Nutzung des Instance-Managers ist optional"/>
<node CREATED="1491659194283" ID="ID_1169808852" MODIFIED="1491659203949" TEXT="direkter Zugriff auf Commands bleibt offen"/>
<node CREATED="1491659224630" ID="ID_837055372" MODIFIED="1491659238608" TEXT="Entscheidung anhand der Command-ID"/>
<node CREATED="1491694300867" ID="ID_1838809343" MODIFIED="1576282357988" TEXT="Festlegung: CommandID wird als Symbol entgegengenommen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ....k&#252;nftige Weiterung:
    </p>
    <p>
      auch in EntryID k&#246;nnte ein Symbol stecken,
    </p>
    <p>
      mithin in der GenNode::ID
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1491659382161" ID="ID_948768193" MODIFIED="1576282357988" TEXT="Performance: maybeGet">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      da dieser Zugriff wirklich f&#252;r jedes Command passiert,
    </p>
    <p>
      m&#246;chte ich mit dem Minimum an Hashtable-Zugriffen auskommen.
    </p>
    <p>
      Daher pr&#252;fen wir als erstes den CommandInstanceManager,
    </p>
    <p>
      da dies der Regelfall ist. Wenn dies scheitert, suchen wir noch
    </p>
    <p>
      in der globalen Registry
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
<icon BUILTIN="stop-sign"/>
<node CREATED="1491702872058" ID="ID_487194706" MODIFIED="1491702875613" TEXT="keine gute Idee"/>
<node CREATED="1491702876137" ID="ID_141674543" MODIFIED="1491702880476" TEXT="doppelt das Interface"/>
<node CREATED="1491702881160" ID="ID_1657270200" MODIFIED="1491753472968" TEXT="Taschenspielerei">
<arrowlink COLOR="#a71f6e" DESTINATION="ID_1776414678" ENDARROW="Default" ENDINCLINATION="-8;-62;" ID="Arrow_ID_559634306" STARTARROW="None" STARTINCLINATION="-86;2;"/>
<icon BUILTIN="smily_bad"/>
</node>
</node>
<node CREATED="1491702805203" HGAP="26" ID="ID_1776414678" MODIFIED="1491757370278" TEXT="Performance / Standard-Fall" VSHIFT="22">
<linktarget COLOR="#a71f6e" DESTINATION="ID_1776414678" ENDARROW="Default" ENDINCLINATION="-8;-62;" ID="Arrow_ID_559634306" SOURCE="ID_1657270200" STARTARROW="None" STARTINCLINATION="-86;2;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1491702822568" ID="ID_1028353876" MODIFIED="1491702830531" TEXT="wir suchen stets zuerst eine Instanz"/>
<node CREATED="1491702831023" ID="ID_184396015" MODIFIED="1491702840810" TEXT="wir fallen auf die globale Registry zur&#xfc;ck"/>
<node CREATED="1491702841453" ID="ID_1707474386" MODIFIED="1491757384744" TEXT="das kann der InstanceManager am Besten selber!">
<arrowlink COLOR="#3e657d" DESTINATION="ID_889636506" ENDARROW="Default" ENDINCLINATION="21;223;" ID="Arrow_ID_1428975472" STARTARROW="None" STARTINCLINATION="-541;0;"/>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node CREATED="1491692398913" FOLDED="true" HGAP="27" ID="ID_1349137025" MODIFIED="1561827465708" TEXT="in UI-Bus" VSHIFT="6">
<icon BUILTIN="help"/>
<icon BUILTIN="closed"/>
<node COLOR="#990000" CREATED="1491692419958" ID="ID_411638678" MODIFIED="1582487370244" TEXT="#1058 consider expanding UI-Bus protocol for command cloning">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1491692431021" ID="ID_1526880552" MODIFIED="1491692436375" TEXT="wollen wir das?"/>
<node CREATED="1491692438907" ID="ID_1137204114" MODIFIED="1491692452509" TEXT="oder nur f&#xfc;r explizite Spezialisierungen?"/>
<node CREATED="1491692779933" ID="ID_184706664" MODIFIED="1491692783680" TEXT="Abw&#xe4;gung">
<node CREATED="1491692784692" ID="ID_875264954" MODIFIED="1533608414018" TEXT="pro">
<icon BUILTIN="button_cancel"/>
<node CREATED="1491692786876" ID="ID_1725123375" MODIFIED="1491692800733" TEXT="Einheitliches Interface"/>
<node CREATED="1491692887517" ID="ID_832151078" MODIFIED="1491692894912" TEXT="Bus k&#xf6;nnte weitere Trennschicht werden"/>
<node CREATED="1491692922625" ID="ID_1378937117" MODIFIED="1491692927444" TEXT="Bus ist gut unit-testbar"/>
</node>
<node CREATED="1491692931040" ID="ID_1678638713" MODIFIED="1533608414020" TEXT="con">
<icon BUILTIN="button_ok"/>
<node CREATED="1491692990840" ID="ID_1200979620" MODIFIED="1491692995939" TEXT="ziemlich indirekt"/>
<node CREATED="1491692996639" ID="ID_1249742943" MODIFIED="1491693005081" TEXT="double-dispatch"/>
<node CREATED="1491693382706" ID="ID_1886288474" MODIFIED="1576282357987" TEXT="CommandHandler hat keinen R&#xfc;ckgabewert">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      d.h. wir m&#252;&#223;ten dann auch noch das Interface brechen
    </p>
    <p>
      und die Form der ID-Dokoration zur Konvention machen
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1491693197435" ID="ID_1151359036" MODIFIED="1576282357987" TEXT="InteractionState ist kein Tangible">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      das hei&#223;t, f&#252;r das ganze Thema InteractionControl
    </p>
    <p>
      schwebt mir eine Zwischenschicht unabh&#228;ngig von den Widgets vor
    </p>
    <p>
      
    </p>
    <p>
      Wenn nun aber das Anfordern einer neuen Instanz &#252;ber den Bus laufen soll,
    </p>
    <p>
      dann w&#252;rde es wohl ehr direkt von den Tangibles (Widget / Controller) ausgehen.
    </p>
    <p>
      Das wollte ich <i>genau nicht</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1491693246284" ID="ID_553376017" MODIFIED="1576282357986">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Tangible sollte InteractionState <i>verwenden</i>
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ....und demnach sollte InteractionState eben grade nicht von Tangible wissen
    </p>
    <p>
      Demnach m&#252;&#223;te sich InteractionState irgendwo &quot;hinten rum&quot; an den Bus ranmachen,
    </p>
    <p>
      z.B. &#252;ber den InteractionDirector. Das ist aber nun wirklich absurrd,
    </p>
    <p>
      da es letztlich nur darum geht ein <i>ohnehin &#246;ffentliches</i>&#160; Interface aufzurufen
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
<node CREATED="1491659180516" ID="ID_655217923" MODIFIED="1492391121444" TEXT="in CmdAccess">
<icon BUILTIN="button_cancel"/>
<node CREATED="1492391124070" ID="ID_1515597578" MODIFIED="1492391129921" TEXT="nicht mehr notwendig"/>
<node CREATED="1492391131173" ID="ID_1089257513" MODIFIED="1492391139944" TEXT="CmdAccess wird komplett on top arbeiten"/>
</node>
</node>
<node CREATED="1492293088861" HGAP="28" ID="ID_1660020661" MODIFIED="1561827465721" TEXT="&#xdc;berarbeitung" VSHIFT="14">
<linktarget COLOR="#626a9e" DESTINATION="ID_1660020661" ENDARROW="Default" ENDINCLINATION="-324;0;" ID="Arrow_ID_876356993" SOURCE="ID_220910293" STARTARROW="None" STARTINCLINATION="-687;0;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1492293139398" ID="ID_1274577545" MODIFIED="1492293146721" TEXT="als Folge der Design-Kritik"/>
<node CREATED="1492293282803" ID="ID_1858980532" MODIFIED="1492293285150" TEXT="Ziel">
<node CREATED="1492293286802" ID="ID_980352671" MODIFIED="1492293292141" TEXT="weitgehend automatisch"/>
<node CREATED="1492293292801" ID="ID_556604895" MODIFIED="1492293305099" TEXT="Zyklus mu&#xdf; nicht explizit er&#xf6;ffnet werden"/>
<node CREATED="1492293307511" ID="ID_582978700" MODIFIED="1492293317442" TEXT="Instanzen selbst f&#xfc;r globale Commands"/>
<node CREATED="1561827465708" ID="ID_1337375396" MODIFIED="1613945493715" TEXT="zun&#xe4;chst einfach &#x2015; aber komplexere L&#xf6;sung kann sp&#xe4;ter noch realiseiert werden">
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1492293359944" ID="ID_1367582526" MODIFIED="1492293429410" TEXT="Konsequenzen">
<node CREATED="1492293430689" ID="ID_1472205001" MODIFIED="1492293430689" TEXT="weitgehender Verzicht auf Konsistenzpr&#xfc;fungen"/>
<node CREATED="1492293588400" ID="ID_1878334690" MODIFIED="1576282357985" TEXT="Binden und Dispatch m&#xfc;ssen kombiniert werden">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...sonst wird die ganze Sache absurd
    </p>
    <p>
      und unsinnigerweise aufwendig
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1492293433222" ID="ID_1665333497" MODIFIED="1492293442272" TEXT="Registry k&#xf6;nnte l&#xe4;ngerfristig wegfallen"/>
</node>
<node CREATED="1492293450067" ID="ID_1626482891" MODIFIED="1492293452767" TEXT="F&#xe4;lle">
<node CREATED="1492293499701" ID="ID_1165417078" MODIFIED="1492293504344" TEXT="voller Zyklus">
<node CREATED="1492293540943" ID="ID_432796112" MODIFIED="1492293561513">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Instanz <i>&#246;ffnen</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1492293553405" ID="ID_1787045274" MODIFIED="1492293557912" TEXT="Instanz herausgeben"/>
<node CREATED="1492293563028" ID="ID_713648189" MODIFIED="1492293583853" TEXT="Binden und Feuern"/>
</node>
<node CREATED="1492293984170" ID="ID_1495091918" MODIFIED="1492293990949" TEXT="fire-and-forget">
<node CREATED="1492294004119" ID="ID_1322819026" MODIFIED="1492294029307">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      CommandID <i>und</i>&#160;Argumente gegeben
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1492294031035" ID="ID_521535374" MODIFIED="1492294048357" TEXT="anonyme Instanz erzeugen, aber nicht speichern"/>
<node CREATED="1492294049089" ID="ID_631979849" MODIFIED="1492294052148" TEXT="Argumente binden"/>
<node CREATED="1492294052616" ID="ID_1477708688" MODIFIED="1492294062235" TEXT="direkt an Dispatcher &#xfc;bergeben"/>
<node CREATED="1492294063183" ID="ID_1341000232" MODIFIED="1492294094983" TEXT="hinterl&#xe4;&#xdf;t sonst keine Spur">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1492294104665" ID="ID_433710721" MODIFIED="1492294116796" TEXT="globales Command">
<node CREATED="1492294207251" ID="ID_1653497945" MODIFIED="1492294212303" TEXT="wenn ID nicht lokal bekannt"/>
<node CREATED="1492294212795" ID="ID_82885635" MODIFIED="1492294242178" TEXT="aber globales Command bereits ausf&#xfc;hrbar"/>
<node CREATED="1492294242862" ID="ID_1583400472" MODIFIED="1492294253689" TEXT="anonyme Instanz klonen"/>
<node CREATED="1492294254277" ID="ID_57256331" MODIFIED="1492294260560" TEXT="und an Dispatcher &#xfc;bergeben"/>
</node>
</node>
<node CREATED="1492294356319" ID="ID_1877638479" MODIFIED="1492294363265" TEXT="Semantik-&#xc4;nderung">
<node CREATED="1492294454001" ID="ID_356186975" MODIFIED="1492359481843">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      SessionCommandService::<b>trigger</b>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
<node CREATED="1492295091826" ID="ID_96156600" MODIFIED="1533608414021" TEXT="bisher">
<node CREATED="1492295094337" ID="ID_420834348" MODIFIED="1492295103364" TEXT="Instanz nur wenn vorher angelegt"/>
<node CREATED="1492295104096" ID="ID_104008616" MODIFIED="1492295116282" TEXT="Sonst wird einfach globales Command genomen"/>
<node CREATED="1492295116894" ID="ID_930409268" MODIFIED="1492295120945" TEXT="gebunden und gefeuert"/>
</node>
<node CREATED="1492295122765" ID="ID_1120774629" MODIFIED="1533608414022" TEXT="jetzt">
<node CREATED="1492295137387" ID="ID_1142805823" MODIFIED="1492295146318" TEXT="offene Instanz wird genommen"/>
<node CREATED="1492295146794" ID="ID_715268835" MODIFIED="1492295159372" TEXT="Sonst wird anonyme Instanz gebildet"/>
<node CREATED="1492295160320" ID="ID_289465814" MODIFIED="1492295164348" TEXT="gebunden und gefeuert"/>
<node CREATED="1492350125119" ID="ID_1349289727" MODIFIED="1613945576576" TEXT="Suche zuerst in der globalen Command-Registry"/>
</node>
</node>
<node CREATED="1492294454001" ID="ID_1498558942" MODIFIED="1492359486258">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      SessionCommandService::<b>bindArg</b>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
<node CREATED="1492295834844" ID="ID_1373400691" MODIFIED="1492295839063" TEXT="Semantik nicht ge&#xe4;ndert"/>
</node>
<node CREATED="1492294454001" ID="ID_48228210" MODIFIED="1492359489563">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      SessionCommandService::<b>invoke</b>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
<node CREATED="1492295834844" ID="ID_1465048391" MODIFIED="1533608414023" TEXT="bisher">
<node CREATED="1492295891844" ID="ID_219295848" MODIFIED="1492295983675" TEXT="offene Instanz wird zum Dispatcher verschoben"/>
<node CREATED="1492295914304" ID="ID_196991118" MODIFIED="1492295939921" TEXT="globales Command wird direkt an den Dispatcher &#xfc;bergeben"/>
</node>
<node CREATED="1492295855881" ID="ID_1570343929" MODIFIED="1533608414023" TEXT="jetzt">
<node CREATED="1492295965170" ID="ID_647547612" MODIFIED="1492350377230" TEXT="globales Command wird geklont"/>
<node CREATED="1492295941981" ID="ID_265372200" MODIFIED="1492295962382" TEXT="offene Instanz wird verschoben (unver&#xe4;ndert)"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1492359501220" ID="ID_1889001956" MODIFIED="1492391055336" TEXT="Test anpassen">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1489191252503" FOLDED="true" ID="ID_1621107057" MODIFIED="1561827465730" TEXT="#1090 Command access for UI-Elements">
<arrowlink COLOR="#758ba4" DESTINATION="ID_827179653" ENDARROW="Default" ENDINCLINATION="173;83;" ID="Arrow_ID_57938013" STARTARROW="None" STARTINCLINATION="384;-135;"/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1489196597635" ID="ID_850892898" MODIFIED="1518487921092" TEXT="Access-Front-End">
<node CREATED="1492095519827" HGAP="16" ID="ID_983435641" MODIFIED="1518487921092" TEXT="Grundprinzip" VSHIFT="-5">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1492095551151" ID="ID_1172833434" MODIFIED="1518487921092" TEXT="verweist auf andere Komponente"/>
<node CREATED="1492095590481" ID="ID_842137243" MODIFIED="1518487921092">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      managed diese Komponente <i>nicht</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1492095612678" ID="ID_836842226" MODIFIED="1518487921092" TEXT="open/closed state"/>
<node CREATED="1492095627868" ID="ID_463853539" MODIFIED="1518487921092" TEXT="Exception when closed"/>
</node>
<node CREATED="1489196605530" HGAP="104" ID="ID_1235925214" MODIFIED="1518487921092" TEXT="anschauen" VSHIFT="1">
<font NAME="SansSerif" SIZE="12"/>
<node CREATED="1489196613065" ID="ID_1738286518" MODIFIED="1518487921092" TEXT="Proxy-Instanz"/>
<node CREATED="1489196617873" ID="ID_1676140831" MODIFIED="1518487921092" TEXT="Session Services"/>
</node>
<node CREATED="1492094142303" ID="ID_12953370" MODIFIED="1518487921092" TEXT="Zukunft / Plan">
<node CREATED="1492094148054" ID="ID_988050021" MODIFIED="1518487921092" TEXT="lib::Depend"/>
<node CREATED="1492094154237" ID="ID_1058052889" MODIFIED="1518487921092" TEXT="m&#xfc;&#xdf;te generalisiert werden"/>
<node CREATED="1492094161724" ID="ID_657768231" MODIFIED="1518487921092" TEXT="Refactoring notwendig">
<node CREATED="1492094294218" ID="ID_531986736" MODIFIED="1518487921092" TEXT="Komplexit&#xe4;t wirklich notwendig?">
<icon BUILTIN="help"/>
</node>
<node CREATED="1492094305497" ID="ID_1689865131" MODIFIED="1518487921092" TEXT="Zweifel wegen double checked locking"/>
<node CREATED="1492094321039" ID="ID_1545149473" MODIFIED="1518487921092">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      aufwendiges <i>Nebenthema</i>
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node CREATED="1492094512876" HGAP="32" ID="ID_953384901" MODIFIED="1518487921092" TEXT="vorl&#xe4;ufig eigenst&#xe4;ndig" VSHIFT="4">
<node COLOR="#338800" CREATED="1492094528370" ID="ID_1032947061" MODIFIED="1518487921092" TEXT="sp&#xe4;ter mal integrieren">
<arrowlink COLOR="#8697be" DESTINATION="ID_451964727" ENDARROW="Default" ENDINCLINATION="200;-562;" ID="Arrow_ID_1211717131" STARTARROW="None" STARTINCLINATION="1387;-152;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1613916810040" HGAP="23" ID="ID_69431933" MODIFIED="1613916831791" TEXT="(DependencyInjection Schema)" VSHIFT="3"/>
</node>
<node CREATED="1492095379262" ID="ID_16023242" MODIFIED="1518487921092" TEXT="einfache Implementierung"/>
<node CREATED="1492096252231" ID="ID_1892095908" MODIFIED="1518487921092" TEXT="Problem">
<node CREATED="1492096257182" ID="ID_682054688" MODIFIED="1518487921092" TEXT="externe Komponente mu&#xdf; kooperieren"/>
<node CREATED="1492096285706" ID="ID_1257721538" MODIFIED="1518487921092" TEXT="oder externe Kompnente mu&#xdf; einen Adapter installieren"/>
<node CREATED="1492096269716" ID="ID_527173807" MODIFIED="1518487921092" TEXT="oder externe Komponente mu&#xdf; das Front-end betreiben"/>
</node>
</node>
</node>
<node CREATED="1492095433567" FOLDED="true" HGAP="69" ID="ID_1208499974" MODIFIED="1576282357985" TEXT="DSL schaffen" VSHIFT="1">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...das war der erste Entwurf
    </p>
    <ul>
      <li>
        overengineered
      </li>
      <li>
        am Bedarf vorbei
      </li>
    </ul>
  </body>
</html></richcontent>
<arrowlink COLOR="#b82856" DESTINATION="ID_73450627" ENDARROW="Default" ENDINCLINATION="-641;29;" ID="Arrow_ID_1593125080" STARTARROW="None" STARTINCLINATION="122;76;"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1492095437190" ID="ID_491978759" MODIFIED="1492095481564" TEXT="Wunsch: access(ID).&lt;operation&gt;(args)"/>
<node CREATED="1492096317382" ID="ID_554292510" MODIFIED="1492096319497" TEXT="m&#xf6;glich">
<node CREATED="1492096321341" ID="ID_543087109" MODIFIED="1492096656547" TEXT="CmdAccess::for(id).&lt;operation&gt;(args)"/>
<node CREATED="1492096678244" ID="ID_1032312440" MODIFIED="1492096690927" TEXT="cmdAccess(id).&lt;operation&gt;(args)"/>
</node>
<node CREATED="1492096751315" ID="ID_537448890" MODIFIED="1492096762621" TEXT="Frage: was ist ID ?">
<icon BUILTIN="help"/>
<node CREATED="1492096881433" ID="ID_446570438" MODIFIED="1492098926420" TEXT="frei w&#xe4;hlbare Kontext-ID">
<icon BUILTIN="idea"/>
<node CREATED="1492096925259" ID="ID_1180559929" MODIFIED="1492096943012" TEXT="m&#xfc;&#xdf;te ID-Konvention verwenden"/>
<node CREATED="1492096965205" ID="ID_1565773206" MODIFIED="1492096975304" TEXT="manuelle Administration"/>
<node CREATED="1492096958310" ID="ID_55881971" MODIFIED="1492096962961" TEXT="fehleranf&#xe4;llig"/>
</node>
<node CREATED="1492096850229" ID="ID_1267775472" MODIFIED="1492096880653" TEXT="instanceID">
<icon BUILTIN="idea"/>
<node CREATED="1492098995736" ID="ID_70721654" MODIFIED="1492099021254" TEXT="per Builder erzeugt"/>
<node CREATED="1492098935224" ID="ID_1545341249" MODIFIED="1492098943667" TEXT="erfordert DSL-Kontext"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1492098973515" HGAP="42" ID="ID_449212028" MODIFIED="1492281728466" TEXT="Syntax-Entwurf" VSHIFT="18">
<icon BUILTIN="idea"/>
<node CREATED="1492096992098" ID="ID_495973760" MODIFIED="1492132247519">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      Symbol ADD_CLIP = CmdAccess::to (cmd::scope_addClip, INTO_FORK);
    </p>
    <p>
      prepareCommand (cmdAccess(ADD_CLIP).bind (scope(HERE), element(RECENT)))
    </p>
    <p>
      issueCommand (cmdAccess(ADD_CLIP).execute());
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1492098948782" ID="ID_176273356" MODIFIED="1492098957764" TEXT="einigerma&#xdf;en komplex">
<icon BUILTIN="smiley-neutral"/>
</node>
<node CREATED="1492099069702" ID="ID_1623888568" MODIFIED="1492099073097" TEXT="Bestandteile">
<node CREATED="1492099077900" ID="ID_489218136" MODIFIED="1533608414024" TEXT="Standard-Kontexte">
<node CREATED="1492099101785" ID="ID_1493219189" MODIFIED="1492099107713" TEXT="INTO_PROJECT"/>
<node CREATED="1492099089419" ID="ID_1867923525" MODIFIED="1492099092055" TEXT="INTO_FORK"/>
<node CREATED="1492099093187" ID="ID_999642842" MODIFIED="1492099097382" TEXT="INTO_BIN"/>
</node>
<node CREATED="1492099122230" ID="ID_1025497514" MODIFIED="1492099129057" TEXT="Benennungs-Schema f&#xfc;r Command-Defs"/>
<node CREATED="1492099134053" ID="ID_358523293" MODIFIED="1492099143703" TEXT="lokal definierte Instanz-Symbole"/>
<node CREATED="1492099185350" ID="ID_209679519" MODIFIED="1492099189905" TEXT="Standard-Argument-Rollen"/>
<node CREATED="1492099167960" ID="ID_52357728" MODIFIED="1533608414024" TEXT="Argument-Resolver">
<node CREATED="1492099172695" ID="ID_1174757682" MODIFIED="1492099177035" TEXT="scope(HERE)"/>
<node CREATED="1492099177863" ID="ID_1060789301" MODIFIED="1492099182250" TEXT="element(RECENT)"/>
</node>
<node CREATED="1492099211058" ID="ID_518845722" MODIFIED="1492099413746" TEXT="(automatische) Nachrichten-Erzeugung"/>
</node>
</node>
<node CREATED="1492099456649" HGAP="39" ID="ID_1984335926" MODIFIED="1492099477994" TEXT="Konsequenzen" VSHIFT="10">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1492099466079" ID="ID_1013112793" MODIFIED="1576282357984" TEXT="gentle degradation">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      die DSL mu&#223; so konstruiert werden,
    </p>
    <p>
      da&#223; die Syntax-Elemente nahtlos simplifiziert werden k&#246;nnen,
    </p>
    <p>
      in eine Form, die sich unmittelbar jetzt implementieren l&#228;&#223;t
    </p>
    <p>
      und mit einfachen, direkt gegebenen Objekten
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1492099579824" ID="ID_727878406" MODIFIED="1492099585163" TEXT="CommandDef-DSL erweitern">
<node CREATED="1492099587359" ID="ID_453414313" MODIFIED="1492099599513" TEXT="mu&#xdf; Argument-Rollen auszeichnen k&#xf6;nnen"/>
<node CREATED="1492099622066" ID="ID_1927536817" MODIFIED="1492099630669" TEXT="erweiterbar auf binding rules"/>
<node CREATED="1576282357985" ID="ID_318475227" MODIFIED="1613917141790" TEXT="erster Entwurf: &#x2192; CmdContext">
<icon BUILTIN="forward"/>
<node CREATED="1518487921093" HGAP="57" ID="ID_1013004860" MODIFIED="1613917115257" TEXT="umgewidmet in einen komplexeren Spezialfall" VSHIFT="17">
<arrowlink COLOR="#6c9dbe" DESTINATION="ID_143339688" ENDARROW="Default" ENDINCLINATION="2023;-1563;" ID="Arrow_ID_1767017735" STARTARROW="None" STARTINCLINATION="303;19;"/>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1576282357985" HGAP="43" ID="ID_73450627" MODIFIED="1613917052881" TEXT="Thema vorerst vertagt und einfache L&#xf6;sung implementiert" VSHIFT="3">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      <u><font size="2">(Anmerkung 2/2021)</font></u>
    </p>
    <p>
      &#220;ber dieses Thema, und &#187;InteractionControl&#171; im Allgemeinen habe ich intensiv nachgedacht &#252;ber den Sommer 2017. Die damals aufgestellten Grundz&#252;ge erscheinen mir auch heute noch sinnvoll. Allerdings kann dieser Entwurf nicht nur allein aus first principles abgeleitet werden. Daher habe ich im Winter 2017/18 dann entschieden, eine Verkopplung mit dem direkten Aufruf von Commands aufzul&#246;sen, wodurch Letztere einfach implementiert werden konnte. &#220;berhaupt mu&#223; das UI ein gutes St&#252;ck weiter erst konkret gebaut werden, damit &#252;berhaupt ein Sachbezug f&#252;r die &#220;berlegungen gewonnen werden kann....
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#b82856" DESTINATION="ID_73450627" ENDARROW="Default" ENDINCLINATION="-641;29;" ID="Arrow_ID_1593125080" SOURCE="ID_1208499974" STARTARROW="None" STARTINCLINATION="122;76;"/>
<icon BUILTIN="stop-sign"/>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1492281599624" HGAP="22" ID="ID_1089419591" MODIFIED="1518487921092" TEXT="einfache L&#xf6;sung" VSHIFT="10">
<linktarget COLOR="#5f758e" DESTINATION="ID_1089419591" ENDARROW="Default" ENDINCLINATION="40;300;" ID="Arrow_ID_1986823533" SOURCE="ID_813754826" STARTARROW="None" STARTINCLINATION="1031;0;"/>
<icon BUILTIN="messagebox_warning"/>
<node COLOR="#338800" CREATED="1492281610286" ID="ID_1217333147" MODIFIED="1518487921093" TEXT="automatische Instanz-Erzeugung">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1492281619901" ID="ID_887103826" MODIFIED="1518487921093" TEXT="direkter Aufruf mit CommandDef-ID">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1492281659520" ID="ID_488879231" MODIFIED="1518487921093" TEXT="Argument-Resolver f&#xfc;r Kontext-Zugriff">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1492281675557" ID="ID_1256848300" MODIFIED="1518487921093" TEXT="InvocationState mit Callbacks">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1614378714385" ID="ID_1301868924" MODIFIED="1614378743497" TEXT="Adapter f&#xfc;r Event-Quellen">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1492463479663" ID="ID_1449859033" MODIFIED="1518487921093" TEXT="#1096 passing object IDs">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node CREATED="1489777406155" HGAP="74" ID="ID_1319269544" MODIFIED="1518487921093" TEXT="Grundstrukturen" VSHIFT="25">
<node CREATED="1489777414729" ID="ID_464574092" MODIFIED="1518487921093" TEXT="CommandID">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1489777420817" ID="ID_1146990209" MODIFIED="1518487921093" TEXT="Command access"/>
<node CREATED="1489777429111" ID="ID_148471534" MODIFIED="1518487921093" TEXT="InvocationTrail">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1489777438663" ID="ID_729917092" MODIFIED="1518487921093" TEXT="InteractionState">
<icon BUILTIN="hourglass"/>
<node CREATED="1613945185345" ID="ID_357126744" MODIFIED="1613945202633" TEXT="f&#xfc;r komplexe kontext-abh&#xe4;ngige &#xbb;Gesten&#xab;">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1489777502366" ID="ID_1798143241" MODIFIED="1518487921093" TEXT="Command-Definitionen">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1489777517315" ID="ID_922436346" MODIFIED="1518487921093" TEXT="instance management">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1489777523266" ID="ID_136474944" MODIFIED="1518487921093" TEXT="trigger Invocation">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1616946525068" FOLDED="true" ID="ID_1115109193" MODIFIED="1616946583608" TEXT="Service f&#xfc;r InteractionState">
<icon BUILTIN="button_ok"/>
<node CREATED="1616946542052" ID="ID_475841090" MODIFIED="1616946549992" TEXT="GestureState (Service)"/>
<node CREATED="1616946552171" ID="ID_441985158" MODIFIED="1616946565598" TEXT="vom InteractionDirector konfiguriert"/>
<node CREATED="1616946568902" ID="ID_290290362" MODIFIED="1616946580856" TEXT="verwaltet Art der Gesten und Scopes"/>
</node>
</node>
<node CREATED="1489778159357" HGAP="105" ID="ID_1046149430" MODIFIED="1518487921093" TEXT="Command-Zyklus" VSHIFT="36">
<node CREATED="1489544225984" ID="ID_695057205" MODIFIED="1518487921093" TEXT="Triggern">
<icon BUILTIN="forward"/>
<node CREATED="1489544261547" ID="ID_782648362" MODIFIED="1518487921093" TEXT="wer">
<icon BUILTIN="help"/>
<node CREATED="1489544403984" ID="ID_382753424" MODIFIED="1518487921093" TEXT="&quot;ein UI-Element&quot;">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
<node CREATED="1489544439187" ID="ID_278628492" MODIFIED="1518487921093" TEXT="Beispiel: Toolbar-Button"/>
<node CREATED="1489544452034" ID="ID_1252070479" MODIFIED="1518487921093" TEXT="Beispiel: Kontextmen&#xfc;-Eintrag"/>
<node CREATED="1489544513577" ID="ID_1918576059" MODIFIED="1518487921093" TEXT="Beispiel: Aktion per Keybinding"/>
<node CREATED="1489544524128" ID="ID_620530211" MODIFIED="1518487921093" TEXT="Beispiel: Signal drag-n-drop"/>
</node>
<node CREATED="1489544268018" ID="ID_317151852" MODIFIED="1518487921093" TEXT="was">
<icon BUILTIN="help"/>
<node CREATED="1489544652414" ID="ID_61156502" MODIFIED="1518487921093" TEXT="lokal bekannt"/>
<node CREATED="1489544640288" ID="ID_1660798945" MODIFIED="1518487921093" TEXT="fest verdrahtet"/>
<node CREATED="1489544659597" ID="ID_519858607" MODIFIED="1518487921093" TEXT="ggfs. Auswahl aus kleiner Menge"/>
</node>
<node CREATED="1489544717333" ID="ID_154924026" MODIFIED="1518487921093" TEXT="falls">
<icon BUILTIN="help"/>
<node CREATED="1489544722261" ID="ID_1252784107" MODIFIED="1518487921093" TEXT="ausf&#xfc;hrbar"/>
<node CREATED="1489544725860" ID="ID_1860103561" MODIFIED="1518487921093" TEXT="d.h. aktiviert"/>
<node CREATED="1489544826383" ID="ID_1190793385" MODIFIED="1518487921093" TEXT="zwei verschiedene Effekte">
<icon BUILTIN="idea"/>
<node CREATED="1489544836757" ID="ID_1364306635" MODIFIED="1576282357984" TEXT="Ausf&#xfc;hrung abweisen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...stattdessen einen Fehler-Indikator ausl&#246;sen
    </p>
    <p>
      (Beispiel &quot;in-point fehlt&quot;)
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1489544910395" ID="ID_909938815" MODIFIED="1576282357983" TEXT="enable Action">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...das ist eine Reaktion,
    </p>
    <p>
      die von einem managing Ui-Element ausgef&#252;hrt wird,
    </p>
    <p>
      aber von einem externen State-Change getriggert wird
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
<node CREATED="1491005020528" ID="ID_1665806173" MODIFIED="1561827465733" TEXT="zu kl&#xe4;ren">
<node CREATED="1491005025928" FOLDED="true" ID="ID_1805144008" MODIFIED="1561827465738" TEXT="duplikate Instanzen">
<linktarget COLOR="#ca978d" DESTINATION="ID_1805144008" ENDARROW="Default" ENDINCLINATION="594;0;" ID="Arrow_ID_191915626" SOURCE="ID_1575553505" STARTARROW="None" STARTINCLINATION="594;0;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1491005039414" ID="ID_378645276" MODIFIED="1492391288793" TEXT="mehrfach newInstance() mit gleicher ID"/>
<node CREATED="1491005054595" ID="ID_1987692266" MODIFIED="1492391288793" TEXT="drei M&#xf6;glichkeiten">
<icon BUILTIN="info"/>
<node CREATED="1491005058931" ID="ID_1108733153" MODIFIED="1492391288793" TEXT="mit neuem Klon &#xfc;berschreiben"/>
<node CREATED="1491495291966" ID="ID_703254591" MODIFIED="1492391288793" TEXT="stillschweigend bestehende Instanz ausgeben"/>
<node CREATED="1491005066706" ID="ID_1990482123" MODIFIED="1492391288793" TEXT="Fehler ausl&#xf6;sen">
<icon BUILTIN="forward"/>
<node CREATED="1491495356533" ID="ID_1948190107" MODIFIED="1492391288793" TEXT="einzig sichere Variante">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1491495398895" ID="ID_1958544932" MODIFIED="1492391288793" TEXT="es gibt jetzt auch getInstance"/>
<node CREATED="1491495405151" ID="ID_988620199" MODIFIED="1492391288793" TEXT="der Client mu&#xdf; geht von Exclusivit&#xe4;t aus"/>
</node>
</node>
<node CREATED="1491005071634" ID="ID_178338289" MODIFIED="1492443389733" TEXT="zur Kl&#xe4;rung">
<icon BUILTIN="bell"/>
<node CREATED="1491005078409" ID="ID_1515823316" MODIFIED="1492391288793" TEXT="...mu&#xdf; ich wissen, wie newInstance verwendet wird"/>
<node CREATED="1491005491226" ID="ID_1986906306" MODIFIED="1576282357983" TEXT="und das h&#xe4;ngt von InvocationTrail ab">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      invocationTral wurde aufgegeben.
    </p>
    <p>
      Insofern l&#246;st sich dieser Knoten langsam
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1492391213458" ID="ID_1535150206" MODIFIED="1492391288793" TEXT="Differenzierung">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1492391217961" ID="ID_1152426430" MODIFIED="1492391288793" TEXT="wir erzeugen nun Instanzen transparent">
<icon BUILTIN="info"/>
</node>
<node CREATED="1492391227720" ID="ID_475537616" MODIFIED="1492391288793" TEXT="d.h. eine reine Command-ID wird stillschweigend geklont"/>
<node CREATED="1492391240086" ID="ID_687060412" MODIFIED="1492391288793">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      allerdings, wenn man eine <b>explizite</b>&#160;Instanz-ID angibt,
    </p>
    <p>
      bleibt es bei der stringenten Fehlerbehandlung
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
<node CREATED="1491494748185" FOLDED="true" ID="ID_1589354901" MODIFIED="1518487921093" TEXT="Instanzen registrieren">
<icon BUILTIN="help"/>
<node CREATED="1491494779796" ID="ID_1437580350" MODIFIED="1576282357982" TEXT="oder nur Prototypen?">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      das hei&#223;t, es geht um die Haupt-Registry f&#252;r Commands.
    </p>
    <p>
      Wenn wir eine Instanz machen, um Parameter zu binden und sie dann schlie&#223;lich auszuf&#252;hren,
    </p>
    <p>
      k&#246;nnte man dieser Instanz einen Namen geben, und sie in die Haupt-Registry eintragen..
    </p>
    <p>
      Oder man k&#246;nnte sie anonym verarbeiten, weil Command selber ein smart-Handle ist.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1491494889781" ID="ID_737410509" MODIFIED="1518487921093" TEXT="Analyse">
<icon BUILTIN="idea"/>
<node CREATED="1491494903779" ID="ID_1388732102" MODIFIED="1518487921093" TEXT="ja">
<icon BUILTIN="button_cancel"/>
<node CREATED="1491494912266" ID="ID_32553701" MODIFIED="1518487921093" TEXT="Vorteil: Zugriff per-Name"/>
<node CREATED="1491494928040" ID="ID_76613856" MODIFIED="1518487921093" TEXT="Nachteil: Druck auf die Registry"/>
<node CREATED="1491494938614" ID="ID_189174601" MODIFIED="1518487921093" TEXT="Nachteil: IDs m&#xfc;ssen verwaltet werden"/>
</node>
<node CREATED="1491494957020" ID="ID_266987025" MODIFIED="1518487921093" TEXT="nein">
<icon BUILTIN="button_ok"/>
<node CREATED="1491494972658" ID="ID_1987998531" MODIFIED="1518487921093" TEXT="Vorteil: spart jede Menge Infrastruktur"/>
<node CREATED="1491494989215" ID="ID_1302849116" MODIFIED="1518487921093" TEXT="Nachteil: Aufruf-Protokol sehr festgelegt"/>
</node>
</node>
<node CREATED="1491495071460" ID="ID_597368143" MODIFIED="1518487921093" TEXT="wir registrieren nicht">
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1492167970338" FOLDED="true" ID="ID_1983035921" MODIFIED="1613945160418" TEXT="InteractionState &#x27fa; Invocation-Instance">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...ist jetzt gekl&#228;rt.
    </p>
    <p>
      InteractionState == Kontext
    </p>
    <p>
      CommandID.KontextID == Instanz
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
<node CREATED="1492168186700" ID="ID_501823967" MODIFIED="1518487921093" TEXT="InvocationTrail">
<icon BUILTIN="button_cancel"/>
<node CREATED="1492168200986" ID="ID_579400142" MODIFIED="1518487921093" TEXT="ist fest"/>
<node CREATED="1492168716660" ID="ID_644301358" MODIFIED="1518487921093" TEXT="ist ein front-End"/>
<node CREATED="1492168226078" ID="ID_1848898275" MODIFIED="1518487921093" TEXT="ist pro Command Instanz"/>
<node CREATED="1492443100375" ID="ID_1946114739" MODIFIED="1518487921093" TEXT="Konzept aufgegeben">
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node CREATED="1492168193355" ID="ID_841284230" MODIFIED="1518487921093" TEXT="InteractionState">
<node CREATED="1492168702845" ID="ID_1065430835" MODIFIED="1518487921093" TEXT="erm&#xf6;glicht Registrierung"/>
<node CREATED="1492168535004" ID="ID_93617758" MODIFIED="1518487921093" TEXT="sammelt dynamischen state"/>
<node CREATED="1492168515983" ID="ID_607058891" MODIFIED="1518487921093" TEXT="bedient einen ganzen Kontext"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1492168662947" ID="ID_1857185767" MODIFIED="1518487921093" TEXT="automatisiert die Argument-Versorgung">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1492169260089" HGAP="30" ID="ID_172791747" MODIFIED="1518487921093" TEXT="usage patterns" VSHIFT="18">
<icon BUILTIN="forward"/>
<node CREATED="1492169311714" ID="ID_1022909876" MODIFIED="1525124215278" TEXT="fire-and-forget">
<icon BUILTIN="button_cancel"/>
<node CREATED="1492170822396" ID="ID_1848739236" MODIFIED="1492170827759" TEXT="es ist alles klar"/>
<node CREATED="1492170841401" ID="ID_533459846" MODIFIED="1492170851803" TEXT="kein relevanter Kontext-Bezug"/>
<node CREATED="1492170863838" ID="ID_1183166030" MODIFIED="1533608414025" TEXT="Beispiel">
<node CREATED="1492170878863" ID="ID_90242022" MODIFIED="1492170878863" TEXT="globale Men&#xfc;-Aktion"/>
<node CREATED="1492170880371" ID="ID_594766034" MODIFIED="1492170903172" TEXT="schlie&#xdf;e Session!"/>
</node>
<node CREATED="1492170941739" ID="ID_1680428229" MODIFIED="1533608414025" TEXT="L&#xf6;sung">
<node CREATED="1492170947610" ID="ID_1247697440" MODIFIED="1492170955606" TEXT="Funktor bereitstellen"/>
<node CREATED="1492170966264" ID="ID_1737975858" MODIFIED="1492170972019" TEXT="kein Bus-Term notwendig"/>
<node CREATED="1492170957161" ID="ID_1082986883" MODIFIED="1492170963732" TEXT="Argumente und Trigger in einem"/>
</node>
</node>
<node CREATED="1492169345030" ID="ID_84243440" MODIFIED="1525124215279" TEXT="widget-local">
<icon BUILTIN="button_ok"/>
<node CREATED="1492171212350" ID="ID_1877488908" MODIFIED="1492171403696" TEXT="fest in einem Widget angesiedelt"/>
<node CREATED="1492171419802" ID="ID_393104252" MODIFIED="1492171434347" TEXT="lokale Verdrahtung mit etwas Logik"/>
<node CREATED="1492171517084" ID="ID_45739538" MODIFIED="1492171533742" TEXT="Widget verwendet eigene Command-Instanz"/>
<node CREATED="1492171540017" ID="ID_110960992" MODIFIED="1492171546252" TEXT="f&#xfc;hrt aber dann das Binden direkt aus"/>
<node CREATED="1492171547624" ID="ID_1140206188" MODIFIED="1533608414025" TEXT="L&#xf6;sung">
<node CREATED="1492171736734" ID="ID_685211506" MODIFIED="1492443151644" TEXT="lokal bekannte Command-ID"/>
<node CREATED="1492171753436" ID="ID_1576877235" MODIFIED="1492171764262" TEXT="Widget verwendet sein BusTerm"/>
</node>
<node CREATED="1492171774185" HGAP="23" ID="ID_11015489" MODIFIED="1533608414026" TEXT="Unterschied zu fire-and-forget?" VSHIFT="11">
<icon BUILTIN="help"/>
<node CREATED="1492171947257" ID="ID_1137709019" MODIFIED="1492171949469" TEXT="kaum einer"/>
<node CREATED="1492172515236" ID="ID_180853795" MODIFIED="1492172525262" TEXT="Binden ist ein separater Aufruf"/>
<node CREATED="1492172525946" ID="ID_1399943374" MODIFIED="1492172531749" TEXT="lokales BusTerm verwendet"/>
</node>
</node>
<node CREATED="1492169360148" ID="ID_1657289637" MODIFIED="1525124215281" TEXT="context-bound">
<icon BUILTIN="hourglass"/>
<node CREATED="1492172593201" ID="ID_1984505306" MODIFIED="1492172600644" TEXT="Command liegt in einem Kontext bereit"/>
<node CREATED="1492172621613" ID="ID_1344424432" MODIFIED="1492172637206" TEXT="Argument-Bindings werden per Accessor / Rules vorkonfiguriert"/>
<node CREATED="1492172984411" ID="ID_14678074" MODIFIED="1492173001613" TEXT="InteractionState wei&#xdf;, ob Command ausf&#xfc;hrbar ist"/>
<node CREATED="1492173003905" ID="ID_173633221" MODIFIED="1492173080128" TEXT="von beliebigem Tangible triggerbar"/>
<node CREATED="1492172679797" ID="ID_1836674310" MODIFIED="1492172684920" TEXT="Aktivierungs-Callbacks"/>
<node CREATED="1492173454299" HGAP="22" ID="ID_1346472068" MODIFIED="1533608414026" TEXT="L&#xf6;sung" VSHIFT="10">
<node CREATED="1492173481023" ID="ID_285008060" MODIFIED="1492173494690" TEXT="InteractionState pro Kontext(ID)"/>
<node CREATED="1492173497269" ID="ID_365694462" MODIFIED="1492173519950" TEXT="speichert binding patterns pro Command"/>
<node CREATED="1492173637978" ID="ID_1696162932" MODIFIED="1492173647765" TEXT="BindingPattern erkennt Ausf&#xfc;hrbarkeit"/>
<node CREATED="1492173787950" ID="ID_318157835" MODIFIED="1492173802664" TEXT="Command-Instanz wird erst sp&#xe4;t (bei Bedarf) gebildet"/>
<node CREATED="1492173813466" ID="ID_1383483945" MODIFIED="1492173828300" TEXT="sie wird sofort vom InteractionState fertig parametrisiert"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1492206477974" HGAP="28" ID="ID_1639842825" MODIFIED="1533608414027" TEXT="Zukunft" VSHIFT="14">
<icon BUILTIN="yes"/>
<node CREATED="1492206491525" ID="ID_1000204628" MODIFIED="1492206500103" TEXT="das wird einmal essentiell"/>
<node CREATED="1492206500643" ID="ID_1716565687" MODIFIED="1492206505343" TEXT="aber noch nicht gleich ben&#xf6;tigt"/>
<node CREATED="1492206505907" ID="ID_427665863" MODIFIED="1492206512494" TEXT="und im Moment auch nicht absch&#xe4;tzbar"/>
</node>
</node>
</node>
<node CREATED="1492173833368" HGAP="42" ID="ID_769512112" MODIFIED="1525124215283" TEXT="widerspr&#xfc;chlich" VSHIFT="12">
<icon BUILTIN="stop-sign"/>
<node CREATED="1492173862203" ID="ID_1492707816" MODIFIED="1492173876661" TEXT="wozu die ganzen UI-Bus-Nachrichten">
<icon BUILTIN="help"/>
</node>
<node CREATED="1492173887792" ID="ID_552249287" MODIFIED="1576282357981" TEXT="wozu Ausl&#xf6;sung &#xfc;ber BusTerm eines Widgets">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...wenn es doch offenbar f&#252;r den &quot;fire-and-forget&quot;-Fall
    </p>
    <p>
      genauso gut m&#246;glich ist, &#252;ber eine zentrale Stelle zu triggern.
    </p>
    <p>
      Nebenl&#228;ufigkeit ist kein Argument (da das UI single-threaded l&#228;uft)
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="help"/>
</node>
<node CREATED="1492174006016" ID="ID_1942935948" MODIFIED="1492174016504" TEXT="wozu getrennter Parametrisierungs-Call">
<icon BUILTIN="help"/>
</node>
<node CREATED="1492174212708" ID="ID_716714989" MODIFIED="1492174238508" TEXT="man k&#xf6;nnte auf die bang!-Nachricht verzichten">
<icon BUILTIN="idea"/>
<node CREATED="1492205847909" ID="ID_20433747" MODIFIED="1492205860240" TEXT="entfernt eine Menge Komplexit&#xe4;t">
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1492205861275" ID="ID_1520439061" MODIFIED="1492205867150" TEXT="der d&#xe4;mliche Visitor ist weg!"/>
<node COLOR="#338800" CREATED="1492205867738" ID="ID_1598058671" MODIFIED="1492206444561" TEXT="sofort ausgef&#xfc;hrt">
<linktarget COLOR="#78d7bb" DESTINATION="ID_1598058671" ENDARROW="Default" ENDINCLINATION="406;0;" ID="Arrow_ID_1788740270" SOURCE="ID_1018158934" STARTARROW="None" STARTINCLINATION="383;0;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1492174243863" ID="ID_900555701" MODIFIED="1492174267140">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      aber: Parametrisierung <i>k&#246;nnte</i>&#160;partiell sein
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
<node CREATED="1492174268716" ID="ID_995073060" MODIFIED="1492174273527" TEXT="not yet implemented"/>
<node CREATED="1492174274067" ID="ID_1334398441" MODIFIED="1492174279407" TEXT="YAGNI"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1492205884680" HGAP="22" ID="ID_1123687976" MODIFIED="1492205904295" TEXT="Schlu&#xdf;folgerung" VSHIFT="15">
<icon BUILTIN="forward"/>
<node CREATED="1492205906237" ID="ID_900884756" MODIFIED="1533608414027" TEXT="der UI-Bus ist eine Architektur-Entscheidung">
<icon BUILTIN="yes"/>
<node CREATED="1492205915980" ID="ID_1147449569" MODIFIED="1492205922022" TEXT="es geht hier nicht um Performance"/>
<node CREATED="1492205922851" ID="ID_64631579" MODIFIED="1492205930525" TEXT="der direkte Auf&#xfc;hrungs-Pfad ist egal"/>
<node CREATED="1492206055640" ID="ID_1375005290" MODIFIED="1492206059883" TEXT="es geht um die Struktur"/>
</node>
<node CREATED="1492205953694" ID="ID_801761661" MODIFIED="1533608414028" TEXT="deshalb werden Command nicht &quot;hintenrum&quot; getriggert">
<icon BUILTIN="yes"/>
<node CREATED="1492206398465" ID="ID_255699527" MODIFIED="1492206403349" TEXT="kein fire-and-forget"/>
<node CREATED="1492206423622" ID="ID_1494333022" MODIFIED="1492206428977" TEXT="widget-local ist immer gut genug"/>
<node CREATED="1492206404649" ID="ID_62238358" MODIFIED="1492206413723" TEXT="man kann den UI-Bus direkt nutzen"/>
</node>
<node CREATED="1492205969332" ID="ID_1018158934" MODIFIED="1492206444561" TEXT="aber auf die Trennung in bind / bang kann man verzichten">
<arrowlink COLOR="#78d7bb" DESTINATION="ID_1598058671" ENDARROW="Default" ENDINCLINATION="406;0;" ID="Arrow_ID_1788740270" STARTARROW="None" STARTINCLINATION="383;0;"/>
<icon BUILTIN="idea"/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1492268950187" HGAP="22" ID="ID_768535627" MODIFIED="1492269713606" TEXT="Rolle des InvocationTrail nicht klar" VSHIFT="6">
<arrowlink COLOR="#a24839" DESTINATION="ID_407290509" ENDARROW="Default" ENDINCLINATION="-90;-238;" ID="Arrow_ID_924621068" STARTARROW="None" STARTINCLINATION="-201;0;"/>
<icon BUILTIN="stop-sign"/>
</node>
</node>
</node>
</node>
<node CREATED="1492268981885" FOLDED="true" HGAP="105" ID="ID_1743832326" MODIFIED="1561827465755" TEXT="Design-Kritik" VSHIFT="-46">
<arrowlink COLOR="#f7335a" DESTINATION="ID_43582318" ENDARROW="Default" ENDINCLINATION="-123;-43;" ID="Arrow_ID_601519634" STARTARROW="Default" STARTINCLINATION="-63;109;"/>
<linktarget COLOR="#7b7696" DESTINATION="ID_1743832326" ENDARROW="Default" ENDINCLINATION="321;-3493;" ID="Arrow_ID_741454137" SOURCE="ID_1824168791" STARTARROW="None" STARTINCLINATION="-1170;44;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1492269138424" ID="ID_1682612433" MODIFIED="1492269153284" TEXT="gef&#xe4;hrlich stark vom komplexen Fall getrieben">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1492269185449" ID="ID_695030032" MODIFIED="1492269196091" TEXT="die Bedeutung der Command-Instanz ist &#xfc;bertrieben">
<node CREATED="1492269414362" ID="ID_1011798630" MODIFIED="1492269421708" TEXT="sie ist notwendig wegen Multithreading"/>
<node CREATED="1492269422257" ID="ID_921483875" MODIFIED="1492269432251" TEXT="aber nur im ProcDispatcher"/>
<node CREATED="1492269451181" ID="ID_800020285" MODIFIED="1492269548819">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      sie wird nicht zum <i>Parameter-Sammeln</i>&#160;verwendet
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1492269433415" ID="ID_55077056" MODIFIED="1492269446161" TEXT="es w&#xfc;rde gen&#xfc;gen, sie beim Einf&#xfc;gen transparent zu erzeugen"/>
<node CREATED="1492269567485" ID="ID_661748666" MODIFIED="1492269585470" TEXT="Ausnahme: context-bound">
<node CREATED="1492269751716" ID="ID_868922268" MODIFIED="1492269757167" TEXT="hier ist es eine Trenn-ID"/>
<node CREATED="1492269757659" ID="ID_1570623233" MODIFIED="1492269772333" TEXT="mehrere Control-Systeme k&#xf6;nnen koexistieren"/>
</node>
<node CREATED="1492269922724" ID="ID_806519829" MODIFIED="1576282357981" TEXT="Idee: on demand">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...eine Instanz wird dann erzeugt, wenn sie notwendig wird.
    </p>
    <p>
      Sie kann vom UI-Command-Framework erzeugt werden,
    </p>
    <p>
      sie wird automatisch erzeugt, sofern Parameter gebunden werden,
    </p>
    <p>
      oder ein Command an den Dispatcher &#252;bergeben...
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
<node CREATED="1492270021119" ID="ID_1461150467" MODIFIED="1492270028429" TEXT="praktikabel?">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="help"/>
</node>
<node CREATED="1492270033509" ID="ID_1721416097" MODIFIED="1492270045552" TEXT="w&#xfc;rde fall-Back auf globale Commands beseitigen"/>
<node CREATED="1492270075064" ID="ID_814785630" MODIFIED="1492270086423" TEXT="w&#xe4;re eigentlich sauberer als dieser Fall-back">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1492270046164" ID="ID_191900745" MODIFIED="1492270058746" TEXT="das k&#xf6;nnte viele Unit-Tests betreffen">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
<node CREATED="1492269260487" ID="ID_1242844034" MODIFIED="1492270114043" TEXT="es gibt kein wirkliches &quot;Protokoll&quot;">
<node CREATED="1492270115626" ID="ID_1073186006" MODIFIED="1492270139603" TEXT="...jenseits von &#xbb;Binden und Ausf&#xfc;hren&#xab;"/>
<node CREATED="1492270174242" ID="ID_884795984" MODIFIED="1492270187724" TEXT="die Varianten sind bis zur Beliebigkeit &quot;offen&quot;"/>
<node CREATED="1492270193216" ID="ID_667627556" MODIFIED="1492270205594" TEXT="erst der reale Gebrauch wird hier Klarheit schaffen">
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1492269210918" ID="ID_420603812" MODIFIED="1492269221064" TEXT="CmdAccess wirkt wie eine unn&#xf6;tige Last">
<node CREATED="1492270239793" ID="ID_1729040008" MODIFIED="1492270283358" TEXT="ist notwendig als factory f&#xfc;r InteractionState">
<icon BUILTIN="info"/>
</node>
<node CREATED="1492270258487" ID="ID_108374652" MODIFIED="1492270262186" TEXT="war als Facade gedacht"/>
<node CREATED="1492270262710" ID="ID_1958798996" MODIFIED="1492270276548" TEXT="macht aber den einfachen Fall verwirrend">
<icon BUILTIN="smily_bad"/>
</node>
</node>
<node CREATED="1492269372144" ID="ID_1386411981" MODIFIED="1492269383826" TEXT="Konkurrenz zwischen CmdAccess und UI-Bus">
<node CREATED="1492270323718" ID="ID_1980829815" MODIFIED="1492270337152" TEXT="suggeriert &#xbb;Zugriff auf Command&#xab;">
<node CREATED="1492270363992" ID="ID_386306013" MODIFIED="1492270382113" TEXT="man kommt aber nicht an Commands ran"/>
<node CREATED="1492270382565" ID="ID_1485765410" MODIFIED="1492270398351" TEXT="diese sollen unter dem Bus bleiben, in Proc"/>
<node CREATED="1492270411354" ID="ID_947388027" MODIFIED="1492270415125" TEXT="man bekommt nur eine ID"/>
<node CREATED="1492270415593" ID="ID_1624406053" MODIFIED="1492270424495" TEXT="die man schon kennen mu&#xdf;, um sie zu bekommen">
<icon BUILTIN="smily_bad"/>
</node>
</node>
<node CREATED="1492270339851" ID="ID_238907164" MODIFIED="1492270358381" TEXT="suggeriert &#xbb;Ausf&#xfc;hren von Commands&#xab;">
<node CREATED="1492271004097" ID="ID_511583689" MODIFIED="1492271014907" TEXT="mu&#xdf; man aber selber machen, via BusTerm"/>
<node CREATED="1492271017087" ID="ID_321529761" MODIFIED="1492271024673" TEXT="daf&#xfc;r braucht man nur die ID">
<icon BUILTIN="smily_bad"/>
</node>
<node CREATED="1492271198846" ID="ID_199345824" MODIFIED="1492271206009" TEXT="die Nachricht wird in Tangible generiert"/>
<node CREATED="1492271027654" ID="ID_42222873" MODIFIED="1492271052893" TEXT="im komplexen Fall k&#xf6;nte CmdAccess Parameter beisteuern"/>
</node>
<node CREATED="1492281019743" ID="ID_948470933" MODIFIED="1492281049526">
<richcontent TYPE="NODE"><html>
  <head>
    
  </head>
  <body>
    <p>
      grundlegender Widerspruch
    </p>
    <p>
      zwischen Command-Control-Interface
    </p>
    <p>
      und Messaging
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1492269623805" ID="ID_407290509" MODIFIED="1492444081051" TEXT="InvocationTrail ist fragw&#xfc;rdig">
<linktarget COLOR="#a24839" DESTINATION="ID_407290509" ENDARROW="Default" ENDINCLINATION="-90;-238;" ID="Arrow_ID_924621068" SOURCE="ID_768535627" STARTARROW="None" STARTINCLINATION="-201;0;"/>
<icon BUILTIN="stop-sign"/>
<node CREATED="1492281083479" ID="ID_970079498" MODIFIED="1492281138259" TEXT="fire-and-forget: superfluous"/>
<node CREATED="1492281103684" ID="ID_135245437" MODIFIED="1576282357980" TEXT="widget-bound: overengineered">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...und kaum erkennbarer Nutzen.
    </p>
    <p>
      Der einzige Nutzfall w&#228;re ein &quot;this&quot;-Parameter.
    </p>
    <p>
      Den kann man aber mit geeigneter Syntax auch direkt angeben
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1492281124705" ID="ID_256590492" MODIFIED="1576282357980" TEXT="context-bound: different structure needed">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      hier m&#252;&#223;te der InvocationTrail die aufgesammelten Argumente transportieren.
    </p>
    <p>
      allein <i>daf&#252;r</i>&#160;gen&#252;gt eine GenNode
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1492281297561" ID="ID_627059506" MODIFIED="1518487921093" TEXT="Schlu&#xdf;folgerung">
<icon BUILTIN="messagebox_warning"/>
<node COLOR="#338800" CREATED="1492281320758" ID="ID_1465764553" MODIFIED="1518487921093" TEXT="InvocationTrail f&#xe4;llt weg">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1492281327277" ID="ID_1090150746" MODIFIED="1518487921093" TEXT="Aufruf erfolgt mit reiner Command-ID">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1492281338555" ID="ID_220910293" MODIFIED="1518487921093" TEXT="Instanzen werden automatisch generiert">
<arrowlink COLOR="#626a9e" DESTINATION="ID_1660020661" ENDARROW="Default" ENDINCLINATION="-324;0;" ID="Arrow_ID_876356993" STARTARROW="None" STARTINCLINATION="-687;0;"/>
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1492281383613" ID="ID_143339688" MODIFIED="1518487921093" TEXT="CmdAccess wird f&#xfc;r den komplexen Fall umgewidmet">
<linktarget COLOR="#6c9dbe" DESTINATION="ID_143339688" ENDARROW="Default" ENDINCLINATION="2023;-1563;" ID="Arrow_ID_1767017735" SOURCE="ID_1013004860" STARTARROW="None" STARTINCLINATION="303;19;"/>
<icon BUILTIN="hourglass"/>
<node CREATED="1492281402666" ID="ID_1263822028" MODIFIED="1518487921093" TEXT="es bleibt ein Access-front-End"/>
<node COLOR="#435e98" CREATED="1492281417025" ID="ID_1229681605" MODIFIED="1518487921093" TEXT="der Name wird angepa&#xdf;t &#x2192; CmdContext">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1492281425672" ID="ID_1330862297" MODIFIED="1518487921093" TEXT="es dient zum Konfigurieren eines Kontextes"/>
<node CREATED="1492281434678" ID="ID_1036338249" MODIFIED="1518487921093" TEXT="f&#xfc;r Zugriff auf den InteractionState"/>
<node CREATED="1492281448845" ID="ID_1396633899" MODIFIED="1518487921093" TEXT="f&#xfc;r Callback-Registrierung"/>
<node CREATED="1492281466282" ID="ID_1012579063" MODIFIED="1518487921093" TEXT="Callbacks schicken direkt eine GenNode"/>
</node>
<node CREATED="1616946594556" ID="ID_54239665" MODIFIED="1616946613439" TEXT="das System der komplexeren Interaktionen wird ein reiner UI-Belang">
<icon BUILTIN="yes"/>
<node COLOR="#338800" CREATED="1616946615845" ID="ID_554876862" MODIFIED="1616946628768" TEXT="GestureState (Service im InteractionDirector)">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1616946630071" ID="ID_303553781" MODIFIED="1616946650346" TEXT="dort: Klassifkation und Zuordnung">
<icon BUILTIN="hourglass"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1616946652692" ID="ID_1401408143" MODIFIED="1616946776521" TEXT="erster Entwurf">
<arrowlink COLOR="#2381d3" DESTINATION="ID_1714668959" ENDARROW="Default" ENDINCLINATION="-533;1807;" ID="Arrow_ID_1818387200" STARTARROW="None" STARTINCLINATION="1260;198;"/>
<icon BUILTIN="pencil"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#252298" CREATED="1489546623162" HGAP="-24" ID="ID_1622574347" MODIFIED="1575131582794" TEXT="was wird gebraucht" VSHIFT="21">
<linktarget COLOR="#352c7d" DESTINATION="ID_1622574347" ENDARROW="Default" ENDINCLINATION="-461;-3358;" ID="Arrow_ID_1512127407" SOURCE="ID_1401258681" STARTARROW="None" STARTINCLINATION="1819;0;"/>
<font NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="help"/>
<node COLOR="#f10a1a" CREATED="1489546678250" ID="ID_228157787" MODIFIED="1518487921093" TEXT="Vorsicht UI-Programmierung">
<font NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1489546705798" ID="ID_43582318" MODIFIED="1518487921093" TEXT="keine neue Programmiersprache entwerfen">
<linktarget COLOR="#f7335a" DESTINATION="ID_43582318" ENDARROW="Default" ENDINCLINATION="-123;-43;" ID="Arrow_ID_601519634" SOURCE="ID_1743832326" STARTARROW="Default" STARTINCLINATION="-63;109;"/>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1489546724892" ID="ID_1763781107" MODIFIED="1518487921093" TEXT="mu&#xdf; letztlich explizit sein">
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1489546837172" ID="ID_665817500" MODIFIED="1518487921093" TEXT="aber">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1489546843356" ID="ID_1556795494" MODIFIED="1518487921093" TEXT="ich will Gestaltbarkeit"/>
<node CREATED="1489546855202" ID="ID_1824748232" MODIFIED="1518487921093" TEXT="ich will Konfigurierbarkeit"/>
</node>
<node CREATED="1489546994743" FOLDED="true" ID="ID_1851585461" MODIFIED="1561827465765" TEXT="im Einzelnen">
<icon BUILTIN="info"/>
<node CREATED="1489777326111" ID="ID_497480483" MODIFIED="1525124215293" TEXT="CommandID">
<node CREATED="1489715248861" ID="ID_999876408" MODIFIED="1492167362880" TEXT="brauche">
<icon BUILTIN="info"/>
<node CREATED="1489715276057" ID="ID_878658276" MODIFIED="1492167327317" TEXT="Basis-ID">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1489715297406" ID="ID_601143379" MODIFIED="1492167324342" TEXT="dekoriert durch Invocation-Trail">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1489715320435" ID="ID_1521007439" MODIFIED="1491003112168" TEXT="dekoriert durch laufende Nr">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1489715326210" ID="ID_1820734132" MODIFIED="1492167321470" TEXT="guten Hash von diesen">
<icon BUILTIN="button_ok"/>
<node CREATED="1492167331337" ID="ID_1262753230" MODIFIED="1492167341460" TEXT="lib::Symbol">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1489715461992" ID="ID_115322523" MODIFIED="1491003142993" TEXT="&quot;leere&quot; Basis-ID ohne lfdNr">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1489715591582" ID="ID_256884690" MODIFIED="1491003145193" TEXT="inkrement der lfdNr">
<icon BUILTIN="button_cancel"/>
</node>
</node>
<node CREATED="1489716825126" HGAP="38" ID="ID_969368347" MODIFIED="1492205500240" TEXT="Ans&#xe4;tze" VSHIFT="-1">
<node CREATED="1489716845980" ID="ID_816994670" MODIFIED="1489718875217" TEXT="Command-ID-Token">
<icon BUILTIN="button_cancel"/>
<node CREATED="1489716859034" ID="ID_1342799459" MODIFIED="1489716867940" TEXT="SubID o.&#xe4;."/>
<node CREATED="1489716870000" ID="ID_907818022" MODIFIED="1489716875547" TEXT="Wert-Semantik"/>
<node CREATED="1489716876183" ID="ID_880911498" MODIFIED="1489716883650" TEXT="enth&#xe4;lt die lfdNr"/>
</node>
<node CREATED="1489717087626" ID="ID_1304379039" MODIFIED="1489718872841" TEXT="Registrierungs-Instanz">
<icon BUILTIN="button_cancel"/>
<node CREATED="1489717094881" ID="ID_890501908" MODIFIED="1489717104332" TEXT="Referenz-Semantik"/>
<node CREATED="1489717108735" ID="ID_142693821" MODIFIED="1489717115730" TEXT="enth&#xe4;lt direkt den Z&#xe4;hler"/>
<node CREATED="1489717116246" ID="ID_1967376157" MODIFIED="1489717129232" TEXT="brauche front-End-Token"/>
</node>
<node CREATED="1489717203882" ID="ID_199366549" MODIFIED="1489718870140" TEXT="eingebettete Information">
<icon BUILTIN="button_ok"/>
<node CREATED="1489717237622" ID="ID_1384169115" MODIFIED="1492167147558" TEXT="Command + KontextID in Hashtable"/>
<node CREATED="1489717304621" ID="ID_1984888825" MODIFIED="1489717311967" TEXT="CmdInstanceManager hat Hashtable"/>
<node CREATED="1489717425684" ID="ID_205251145" MODIFIED="1489717436846" TEXT="Instance-Management komplett eingekapselt"/>
<node CREATED="1489717312532" ID="ID_1911293548" MODIFIED="1492443198294" TEXT="key ist Basis-Cmd-ID + Kontext-ID"/>
<node CREATED="1489717395312" ID="ID_1098297494" MODIFIED="1533608414028" TEXT="InvocationTrail speichert nur diese ID">
<icon BUILTIN="button_cancel"/>
<node CREATED="1492443231533" ID="ID_648420580" MODIFIED="1492443237416" TEXT="Konzept aufgegeben"/>
<node CREATED="1492443238668" ID="ID_516547594" MODIFIED="1492443243711" TEXT="unn&#xf6;tige Indirektion"/>
</node>
<node CREATED="1489717406447" ID="ID_1938762085" MODIFIED="1533608414028" TEXT="Bang sendet nur diese ID">
<icon BUILTIN="button_cancel"/>
<node CREATED="1492205513779" ID="ID_36883868" MODIFIED="1492205520773" TEXT="Bang gibts nicht mehr"/>
</node>
</node>
</node>
<node CREATED="1489717768805" HGAP="79" ID="ID_119293304" MODIFIED="1492169049860" TEXT="Entscheidung" VSHIFT="4">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_119293304" ENDARROW="Default" ENDINCLINATION="153;-248;" ID="Arrow_ID_1691148413" SOURCE="ID_319912426" STARTARROW="None" STARTINCLINATION="312;0;"/>
<icon BUILTIN="yes"/>
<node CREATED="1489717797353" ID="ID_899130819" MODIFIED="1489717807068" TEXT="die ersten beiden sind un&#xf6;tig generisch"/>
<node CREATED="1489717807872" ID="ID_1209104496" MODIFIED="1489717818826" TEXT="wir bauen ohnehin den Command-Cycle fest ein"/>
<node CREATED="1489717844003" ID="ID_97055123" MODIFIED="1489717853605" TEXT="letztgenannte L&#xf6;sung ist auf den Punkt"/>
<node CREATED="1489717927279" ID="ID_845301501" MODIFIED="1489717959263" TEXT="Command-ID erf&#xfc;llt keine regulierende Funktion"/>
<node CREATED="1491003369611" ID="ID_854080320" MODIFIED="1576282357979" TEXT="Instanz-Management funktioniert anonym">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...weil es zu jedem InvocationPath
    </p>
    <p>
      zu jeder Zeit nur eine &quot;offene&quot; Instanz gibt.
    </p>
    <p>
      Also gen&#252;gt es, einen anonymen Klon dieser Instanz zu halten
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1489717960331" ID="ID_1849715968" MODIFIED="1489717991603" TEXT="viel wichtiger sind die Aktivierungs-Regeln"/>
</node>
</node>
<node CREATED="1489546998918" HGAP="43" ID="ID_668687712" MODIFIED="1576282357978" TEXT="Aktivierung">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      gemeint ist:
    </p>
    <p>
      Ein UI-Control wird <i>aktivierbar,</i>&#160;weil das zugrundeliegende Command
    </p>
    <p>
      alle seine Argumente aus dem aktuellen Kontext befriedigen kann
    </p>
    <p>
      
    </p>
    <p>
      Beispiel: Men&#252;-Eintrag &quot;create duplicate&quot;
    </p>
  </body>
</html></richcontent>
<node CREATED="1489547002918" ID="ID_728456926" MODIFIED="1518487921094" TEXT="Callback installieren"/>
<node CREATED="1489547016564" ID="ID_41325273" MODIFIED="1518487921094" TEXT="Anfrage: ist dies aktivierbar?"/>
</node>
<node CREATED="1489547086458" HGAP="48" ID="ID_1858100202" MODIFIED="1525124215294" TEXT="Argumente" VSHIFT="-1">
<node CREATED="1489547096857" ID="ID_184341736" MODIFIED="1492167490875" TEXT="&quot;gib mir die Argumente!&quot;">
<icon BUILTIN="stop-sign"/>
<node CREATED="1489547170463" ID="ID_1981926549" MODIFIED="1489547178266" TEXT="wirklich?">
<icon BUILTIN="help"/>
</node>
<node CREATED="1489547179254" ID="ID_192306839" MODIFIED="1489547197378" TEXT="ist das der richtige Ansatz?">
<icon BUILTIN="help"/>
</node>
<node CREATED="1489547208282" ID="ID_99440101" MODIFIED="1489690731089" TEXT="l&#xe4;&#xdf;t sich das &#xfc;berhaupt je realisieren?">
<icon BUILTIN="help"/>
</node>
</node>
<node CREATED="1489547112255" ID="ID_270498008" MODIFIED="1576282357978" TEXT="generische Rollen">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      die Idee ist hier,
    </p>
    <p>
      da&#223; diese generischen Rollen bereits in der Einrichtung der Command-Definition verwendet werden.
    </p>
    <p>
      Das hei&#223;t, f&#252;r einen bestimmten Invocation-Trail legt man fest,
    </p>
    <p>
      da&#223; ein bestimmtes Argument an eine gewisse Rolle gebunden wird,
    </p>
    <p>
      oder andernfalls einen bestimmten Namen bekommt
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
<node CREATED="1489547124597" ID="ID_408090908" MODIFIED="1489547128224" TEXT="das Subjekt"/>
<node CREATED="1489547128837" ID="ID_865724442" MODIFIED="1489547131120" TEXT="der Container"/>
<node CREATED="1489547498122" ID="ID_1669169317" MODIFIED="1489547504003" TEXT="die Dauer"/>
<node CREATED="1489547283807" ID="ID_559442696" MODIFIED="1489547286467" TEXT="der Wert"/>
</node>
<node CREATED="1489547506625" ID="ID_1063184971" MODIFIED="1489719071018" TEXT="konkret....">
<arrowlink COLOR="#4d2a67" DESTINATION="ID_1622068086" ENDARROW="Default" ENDINCLINATION="-9;-36;" ID="Arrow_ID_717312728" STARTARROW="None" STARTINCLINATION="15;49;"/>
<node CREATED="1489547511224" ID="ID_954080965" MODIFIED="1489547530586" TEXT="das UI-Element wei&#xdf; explizit was gebraucht wird"/>
<node CREATED="1489547542852" ID="ID_271774122" MODIFIED="1489547548943" TEXT="und stellt selber das Tupel zusammen"/>
<node CREATED="1489547574504" ID="ID_49978062" MODIFIED="1489547582019" TEXT="oder ruft einen Funktor auf"/>
<node CREATED="1489547588102" ID="ID_985840704" MODIFIED="1489547597465" TEXT="wodurch die Argument-Typen dokumentiert sind"/>
</node>
</node>
<node CREATED="1489548252324" HGAP="47" ID="ID_1622068086" MODIFIED="1525124215295" TEXT="das k&#xf6;nnte der InvocationTrail sein" VSHIFT="27">
<linktarget COLOR="#4d2a67" DESTINATION="ID_1622068086" ENDARROW="Default" ENDINCLINATION="-9;-36;" ID="Arrow_ID_717312728" SOURCE="ID_1063184971" STARTARROW="None" STARTINCLINATION="15;49;"/>
<icon BUILTIN="idea"/>
<node CREATED="1489719178053" ID="ID_1509284806" MODIFIED="1489719184696" TEXT="hat Cmd-ID + eigene ID"/>
<node CREATED="1489719186276" ID="ID_929080602" MODIFIED="1489719196230" TEXT="kann entscheiden ob ausf&#xfc;hrbar"/>
<node CREATED="1489719200330" ID="ID_840062807" MODIFIED="1489719208197" TEXT="hat Argument-Accessor"/>
<node COLOR="#5e427f" CREATED="1489719212976" HGAP="-52" ID="ID_949699860" MODIFIED="1614373195459" TEXT="noch offen" VSHIFT="45">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="closed"/>
<node CREATED="1489719257426" ID="ID_1618753270" MODIFIED="1576282357977" TEXT="wer erzeugt den InvocationTrail">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...eben!
    </p>
    <p>
      Diese Frage hat dann dazu gef&#252;hrt,
    </p>
    <p>
      da&#223; ich das ganze Konzept &quot;InvocationTrail&quot;
    </p>
    <p>
      wieder komplett zur&#252;ckgebaut habe
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1489719267537" ID="ID_963145148" MODIFIED="1489719291065" TEXT="was ist bereits vom Command her definiert"/>
<node CREATED="1489719292181" ID="ID_804928267" MODIFIED="1489719304359" TEXT="kann es mehrere konkurrierende Auslegungen geben?"/>
</node>
</node>
<node CREATED="1492281599624" ID="ID_813754826" MODIFIED="1518487921094" TEXT="einfache L&#xf6;sung">
<arrowlink COLOR="#5f758e" DESTINATION="ID_1089419591" ENDARROW="Default" ENDINCLINATION="40;300;" ID="Arrow_ID_1986823533" STARTARROW="None" STARTINCLINATION="1031;0;"/>
<icon BUILTIN="messagebox_warning"/>
<node COLOR="#338800" CREATED="1492281610286" ID="ID_1542647024" MODIFIED="1518487921094" TEXT="automatische Instanz-Erzeugung">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1492281619901" ID="ID_423372741" MODIFIED="1518487921094" TEXT="direkter Aufruf mit CommandDef-ID">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1492281659520" ID="ID_1742758477" MODIFIED="1518487921094" TEXT="Argument-Resolver f&#xfc;r Kontext-Zugriff"/>
<node CREATED="1492281675557" ID="ID_1809773326" MODIFIED="1518487921094" TEXT="InvocationState mit Callbacks"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1616946803314" HGAP="-20" ID="ID_1642737972" MODIFIED="1616946817268" TEXT="System f&#xfc;r UI-Gesten" VSHIFT="13">
<icon BUILTIN="hourglass"/>
<node COLOR="#2b95af" CREATED="1616946819438" ID="ID_752209156" MODIFIED="1617979552380" TEXT="Kontext-Zuordnung ist reiner UI-Belang">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#435e98" CREATED="1617979322413" FOLDED="true" ID="ID_512298093" MODIFIED="1617979760982" TEXT="Gesten sollen im Lumiera-UI eine zentrale Rolle spielen">
<icon BUILTIN="yes"/>
<node CREATED="1617979344655" FOLDED="true" ID="ID_1851586839" MODIFIED="1617979758591" TEXT="deshalb wird die Grundstruktur im Projekt selber entwickelt">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...wir versuchen gar nicht erst, &#187;etwas Bestehendes zu nutzen&#171; &#8213; sondern wir machen <i>unser eigenes Ding.</i>
    </p>
  </body>
</html></richcontent>
<node CREATED="1617979579143" ID="ID_748564389" MODIFIED="1617979590729" TEXT="sp&#xe4;ter sollen Gesten-Frameworks mit integriert werden"/>
<node CREATED="1617979591490" ID="ID_1553590368" MODIFIED="1617979602103" TEXT="aber nur insofern das einen Mehrwert bringt"/>
<node CREATED="1617979616050" ID="ID_1797789056" LINK="https://developer.gnome.org/gtk3/stable/chap-input-handling.html#event-controllers-and-gestures" MODIFIED="1617979753210" TEXT="Beispiel: GTK Gesten-Controller">
<icon BUILTIN="info"/>
</node>
</node>
<node CREATED="1617979423537" ID="ID_1042187795" MODIFIED="1617979467715" TEXT="Gesten sollen eine Zwischenschicht bilden &#x2015; oberhalb des konkreten Interaktions-Systems"/>
<node CREATED="1617979477669" ID="ID_1946864730" MODIFIED="1617979494327" TEXT="die Koordination von Gesten darf nicht &#xfc;ber die Einzel-Widgets verstreut sein"/>
<node CREATED="1617979495483" ID="ID_118392564" MODIFIED="1617979506317" TEXT="Gesten werden nach dem Muster eines Aussage-Satzes modelliert"/>
</node>
<node COLOR="#338800" CREATED="1616946831044" ID="ID_160240965" MODIFIED="1616946847970" TEXT="angelegt im GestureState (Service im InteractionDirector)">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1616946854861" ID="ID_273700034" MODIFIED="1616947006922" TEXT="Thema wartet auf eine viel weiter gediehene konkrete Implementierung">
<arrowlink COLOR="#565ec8" DESTINATION="ID_1000039605" ENDARROW="Default" ENDINCLINATION="-1327;-47;" ID="Arrow_ID_33928560" STARTARROW="None" STARTINCLINATION="-397;16;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1616946652692" ID="ID_1570729566" MODIFIED="1616947147359" TEXT="Entwurf &quot;drag clip&quot;: Gesten-Controller vorl&#xe4;ufig fest gedrahtet">
<arrowlink COLOR="#5f7a9f" DESTINATION="ID_1714668959" ENDARROW="Default" ENDINCLINATION="-533;1807;" ID="Arrow_ID_1378120058" STARTARROW="None" STARTINCLINATION="1673;76;"/>
<icon BUILTIN="pencil"/>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1489781392694" ID="ID_1312397991" MODIFIED="1518487921094" TEXT="Festlegungen">
<icon BUILTIN="yes"/>
<node CREATED="1489781404925" ID="ID_1918933171" MODIFIED="1518487921094" TEXT="Command-ID">
<node CREATED="1489781409876" ID="ID_1973020417" MODIFIED="1518487921094" TEXT="Basis-ID ist ein Symbol"/>
<node CREATED="1491003215783" ID="ID_1537560721" MODIFIED="1518487921094" TEXT="es wird mit einer Invocation-ID dekoriert"/>
<node CREATED="1491003228101" ID="ID_661472357" MODIFIED="1518487921094" TEXT="wir brauchen keine laufende Nummer">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1491003237108" ID="ID_1167308664" MODIFIED="1518487921094" TEXT="Instance-Management funktioniert anonym"/>
</node>
<node CREATED="1489781426978" ID="ID_1543445405" MODIFIED="1518487921094" TEXT="konkrete Definition">
<icon BUILTIN="button_ok"/>
<node CREATED="1489781443184" ID="ID_966382785" MODIFIED="1518487921094" TEXT="Ort">
<node CREATED="1489781447639" ID="ID_588776773" MODIFIED="1518487921094" TEXT="proc/cmd/*-cmd.cpp"/>
<node CREATED="1489781476355" ID="ID_1953562265" MODIFIED="1518487921094" TEXT="Namespace proc::cmd"/>
</node>
<node COLOR="#435e98" CREATED="1489781611257" FOLDED="true" ID="ID_179887792" MODIFIED="1561827465774" TEXT="brauche">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1489781616257" ID="ID_1645536558" MODIFIED="1518487921094" TEXT="Schema f&#xfc;r ID-Konstanten"/>
<node CREATED="1489781628743" ID="ID_1733247268" MODIFIED="1518487921094" TEXT="Mechanismus, der die Definition treibt"/>
<node CREATED="1489781758389" ID="ID_1124650374" MODIFIED="1533608414029" TEXT="gew&#xfc;nscht">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1489781775443" ID="ID_379002135" MODIFIED="1518487921094" TEXT="Name und Definition nahe zusammen"/>
<node CREATED="1489781769500" ID="ID_998243238" MODIFIED="1518487921094" TEXT="keine Redundanz"/>
<node CREATED="1489781902770" ID="ID_1568226956" MODIFIED="1518487921094" TEXT="gut lesbar"/>
<node CREATED="1489781907906" ID="ID_1206063892" MODIFIED="1518487921094" TEXT="debuggbar"/>
<node CREATED="1489781923640" ID="ID_241861600" MODIFIED="1518487921094" TEXT="kommentierbar (Doxygen)"/>
<node CREATED="1489785114574" ID="ID_241665479" MODIFIED="1518487921094" TEXT="nur unsichtbare Magie"/>
</node>
<node CREATED="1489785137083" ID="ID_1466955376" MODIFIED="1533608414033" TEXT="M&#xf6;glichkeiten">
<node CREATED="1489785163216" ID="ID_1992894903" MODIFIED="1489785168547" TEXT="zu Fu&#xdf;...">
<node CREATED="1489785199131" ID="ID_111396262" MODIFIED="1489785207662" TEXT="ID-Konstanten im Header deklarieren"/>
<node CREATED="1489785208298" ID="ID_315886293" MODIFIED="1489785222188" TEXT="ID-Konstanten in der jeweiligen translation-Unit definieren"/>
<node CREATED="1489785250500" ID="ID_464247309" MODIFIED="1489785259671" TEXT="Lifecycle-Hook installieren..."/>
<node CREATED="1489785260523" ID="ID_1306260885" MODIFIED="1489785270590" TEXT="..der eine Registrierungs-Funktion aufruft"/>
<node CREATED="1489785276137" ID="ID_1526475921" MODIFIED="1489785285307" TEXT="in dieser die CommandDef absetzen"/>
<node CREATED="1489785285872" ID="ID_1304462599" MODIFIED="1489785296938" TEXT="und als Command-ID die definierte Konstante verwenden"/>
</node>
<node CREATED="1489786040203" ID="ID_1417335273" MODIFIED="1489786045870" TEXT="Vereinfachungen">
<node CREATED="1489786055057" ID="ID_565306146" MODIFIED="1489786059852" TEXT="decl/def">
<node CREATED="1489786238273" ID="ID_1957761383" MODIFIED="1489786331600" TEXT="marker-Makro"/>
<node CREATED="1489786245024" ID="ID_430222749" MODIFIED="1489786255810" TEXT="alle Definitionen in Makros einwickeln"/>
<node CREATED="1489786393908" ID="ID_1345826013" MODIFIED="1576282357977" TEXT="spezielle Inclusion-Rituale">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      vermutlich l&#228;uft es immer darauf hinaus
    </p>
    <ul>
      <li>
        da&#223; cmd.hpp die Implementierungs-Einheiten includiert
      </li>
      <li>
        oder da&#223; in einer ausgezeichneten Impl-Einheit das marker-Makro gesetzt wird und dann cmd.hpp includiert wird
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1489789880260" ID="ID_768121026" MODIFIED="1489789887822" TEXT="Template-Spezialisierung?">
<node CREATED="1489790030727" ID="ID_1780788892" MODIFIED="1489790046961" TEXT="k&#xf6;nnte const char* nehmen"/>
<node CREATED="1489790053044" ID="ID_1594786428" MODIFIED="1489790070534" TEXT="k&#xf6;nnte dann nach Literal konvertibel sein"/>
<node CREATED="1489790158335" ID="ID_1828195626" MODIFIED="1489790166017" TEXT="Template k&#xf6;nnte in Header definiert sein"/>
<node CREATED="1489790167669" ID="ID_156312862" MODIFIED="1489790182247" TEXT="und nur die explizite Spezialisierung generiert Code"/>
</node>
<node CREATED="1489790425251" ID="ID_1099709668" MODIFIED="1489790430606" TEXT="auto-Registrierung">
<icon BUILTIN="forward"/>
<node CREATED="1489790431810" ID="ID_1253214974" MODIFIED="1489790442380" TEXT="variable statisch initialisieren"/>
<node CREATED="1489790522958" ID="ID_1454213723" MODIFIED="1489790532345" TEXT="Lambda an Basis-Ctor geben"/>
</node>
<node CREATED="1489790555393" ID="ID_1281815871" MODIFIED="1489790574611" TEXT="DSL wie boost-test">
<node CREATED="1489790576831" ID="ID_84712572" MODIFIED="1489790584658" TEXT="definiert Klasse o.&#xe4;"/>
<node CREATED="1489790588749" ID="ID_1302974476" MODIFIED="1489790599656" TEXT="User schreibt direkt dahinter einen Codeblock"/>
<node CREATED="1489790689536" ID="ID_605065689" MODIFIED="1489790702050" TEXT="tats&#xe4;chlich wird das eine out-of-class definierte Methode"/>
<node CREATED="1489791695217" ID="ID_1529943414" MODIFIED="1489791705036" TEXT="...und kann sogar per Doxygen kommentiert werden"/>
</node>
<node CREATED="1489791741539" ID="ID_175521756" MODIFIED="1489791746686" TEXT="im Build-Proze&#xdf; parsen">
<node CREATED="1489791753074" ID="ID_1141751955" MODIFIED="1489791761893" TEXT="und z.B. den Header daraus generieren"/>
<node CREATED="1489791763313" ID="ID_1622970394" MODIFIED="1489791766588" TEXT="warum nicht...?"/>
<node CREATED="1489791777102" ID="ID_102161218" MODIFIED="1489791786937" TEXT="empfinde ich besser als komplex verschachtelte Makros"/>
</node>
</node>
</node>
<node CREATED="1489791729957" ID="ID_1986771449" MODIFIED="1525124215299" TEXT="kombinierte Magie">
<icon BUILTIN="button_ok"/>
<node CREATED="1489791798116" ID="ID_197500257" MODIFIED="1533608414034" TEXT="Definitions-Klasse">
<icon BUILTIN="idea"/>
<node CREATED="1489791805675" ID="ID_1517636242" MODIFIED="1489811237752" TEXT="ist konvertierbar nach Literal">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1489791817873" ID="ID_361574240" MODIFIED="1489811240833" TEXT="nimmt Lambda als Konstruktor-Argument">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1489791849245" ID="ID_262482724" MODIFIED="1489791860879" TEXT="bietet interne DSL"/>
<node CREATED="1489795277835" ID="ID_663997649" MODIFIED="1533608414035" TEXT="Name gesucht...?">
<icon BUILTIN="help"/>
<node CREATED="1489795288354" ID="ID_960791386" MODIFIED="1489795346577" TEXT="CommandInstance">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1489795292689" ID="ID_1059834523" MODIFIED="1489795346578" TEXT="CommandDefinition">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1489795318614" ID="ID_437740295" MODIFIED="1489795346578" TEXT="CommandName">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1489795321669" ID="ID_115829263" MODIFIED="1489795346579" TEXT="CommandItem">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1489795298832" ID="ID_1272194079" MODIFIED="1489795342763" TEXT="CommandSetup">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node CREATED="1489791864787" ID="ID_891631217" MODIFIED="1489791877373" TEXT="in den Impl-Einheiten eine Folge von Definitionen"/>
<node CREATED="1489791877913" ID="ID_387208356" MODIFIED="1489793604385" TEXT="zugh&#xf6;rigen Header proc/cmd.hpp im Build-Proze&#xdf; regenerieren">
<icon BUILTIN="idea"/>
<node CREATED="1613944850941" ID="ID_716808675" MODIFIED="1613944856389" TEXT="vorerst nicht">
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
</node>
<node CREATED="1489811274588" ID="ID_1635051629" MODIFIED="1518487921094" TEXT="Mechanismus">
<node COLOR="#338800" CREATED="1489811285746" ID="ID_1726037509" MODIFIED="1518487921094" TEXT="CommandSetup">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1489811291313" ID="ID_1780064476" MODIFIED="1518487921094" TEXT="Makro COMMAND_DEFINITION">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1489811304111" ID="ID_1976451454" MODIFIED="1518487921094" TEXT="Build-Generierung">
<icon BUILTIN="hourglass"/>
<node CREATED="1490927680004" ID="ID_1456638216" MODIFIED="1518487921094" TEXT="auf &quot;sp&#xe4;ter&quot; vertagt"/>
<node CREATED="1490927702128" ID="ID_1355040899" MODIFIED="1518487921094" TEXT="wenn die h&#xe4;ndische Pflege zum Problem wird"/>
</node>
</node>
</node>
<node CREATED="1490985673313" ID="ID_1705714293" MODIFIED="1561827465776" TEXT="Instanzen">
<icon BUILTIN="button_ok"/>
<node CREATED="1490985683359" FOLDED="true" ID="ID_476048128" MODIFIED="1525124215302" TEXT="Instanz-Manager">
<icon BUILTIN="button_ok"/>
<node CREATED="1490985692550" ID="ID_300485716" MODIFIED="1490985696321" TEXT="einfache Komponente"/>
<node CREATED="1490985710963" ID="ID_447657694" MODIFIED="1490985717974" TEXT="keinerlei Lifecycle-Magie"/>
<node CREATED="1490985720722" ID="ID_1386937508" MODIFIED="1561827465778" TEXT="ist nur eine Registry mit etwas Funktionalit&#xe4;t">
<node CREATED="1490986294710" ID="ID_558020871" MODIFIED="1533400457991" TEXT="Command-IDs dekorieren"/>
<node CREATED="1490986302197" ID="ID_1305641719" MODIFIED="1491004967731" TEXT="fortlaufenden Z&#xe4;hler verwalten">
<icon BUILTIN="button_cancel"/>
<node CREATED="1490986345879" ID="ID_1736956933" MODIFIED="1576282357976" TEXT="denn: Dispatch bedeutet Verz&#xf6;gerung">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...also ist eine Instanz durchaus noch am Leben,
    </p>
    <p>
      w&#228;hrend bereits die n&#228;chste Instanz f&#252;r das GUI ausgegeben wurde.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1490986395088" ID="ID_52247198" MODIFIED="1490986412151" TEXT="Stets nur eine Instanz im Instance-manager">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1490986336425" ID="ID_1955343463" MODIFIED="1576282357976" TEXT="Konsequenz: leerer Eintrag">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...damit die Nummer erhalten bleibt
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1491004971039" ID="ID_329531567" MODIFIED="1491004978482" TEXT="anonyme Instanz verwalten">
<node CREATED="1491004982341" ID="ID_1956457610" MODIFIED="1491495639478" TEXT="Frage: Duplikat &#xfc;berschreiben?">
<icon BUILTIN="help"/>
<node CREATED="1491495641174" ID="ID_1196432780" MODIFIED="1491495651041" TEXT="antwort (vorerst): nein"/>
<node CREATED="1491495651932" ID="ID_1393507104" MODIFIED="1491495656080" TEXT="w&#xe4;re gef&#xe4;hrlich"/>
<node CREATED="1491495656604" ID="ID_1592570029" MODIFIED="1491495669470" TEXT="weist auf Logik-Fehler hin"/>
</node>
<node CREATED="1491005133794" ID="ID_1003096513" MODIFIED="1491005393601" TEXT="vorl&#xe4;ufig &#xfc;berschreibe ich stillschweigend">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1490986309084" ID="ID_1432845924" MODIFIED="1490986319583" TEXT="sicher &#xdc;bergabe an Dispatch">
<node CREATED="1490986320434" ID="ID_1807848022" MODIFIED="1490986324558" TEXT="Dispatch als Closure"/>
<node CREATED="1490986325626" ID="ID_167499115" MODIFIED="1490986333421" TEXT="Exception-Safety!"/>
</node>
</node>
<node CREATED="1491003278638" ID="ID_516679033" MODIFIED="1491003300696" TEXT="Instanz-Management">
<node CREATED="1491003301379" ID="ID_997022970" MODIFIED="1491003305671" TEXT="funktioniert fast von selbst"/>
<node CREATED="1491003306451" ID="ID_1812101347" MODIFIED="1491003314278" TEXT="Command == smart-Handle"/>
<node CREATED="1491003314746" ID="ID_850841535" MODIFIED="1491003350337" TEXT="instanz kann anonym bleiben">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1491003323585" ID="ID_719524765" MODIFIED="1491003347758" TEXT="die lokale Registry h&#xe4;llt sie am Leben">
<icon BUILTIN="info"/>
</node>
</node>
<node CREATED="1490985696821" ID="ID_564026288" MODIFIED="1490985706464" TEXT="wird vom SessionCommandService betrieben"/>
</node>
<node CREATED="1490985748207" ID="ID_1314513556" MODIFIED="1518487921094" TEXT="Instanzbildung">
<icon BUILTIN="button_ok"/>
<node CREATED="1490985756381" ID="ID_1346029720" MODIFIED="1518487921094" TEXT="wird durch ID-Dekoration getrieben"/>
<node CREATED="1491656301121" ID="ID_566719122" MODIFIED="1518487921094" TEXT="es ist stets nur eine Instanz offen"/>
<node CREATED="1492359658654" ID="ID_712987844" MODIFIED="1518487921094" TEXT="erfolgt weitgehend automatisch/transparent">
<node CREATED="1492359686938" ID="ID_1447317770" MODIFIED="1518487921094" TEXT="anonyme Klon-Kopie von CommandDef">
<icon BUILTIN="forward"/>
</node>
<node CREATED="1492359678835" ID="ID_608610767" MODIFIED="1576282357975" TEXT="explizite Instanzbildung ist optional">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      ...implementiert &quot;f&#252;r die Zukunft&quot;,
    </p>
    <p>
      wenn wir context-bound -Commands verwenden
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
</node>
<node CREATED="1491694174845" ID="ID_344801148" MODIFIED="1576282357975" TEXT="Instanzbildung geh&#xf6;rt nicht in das Tangible">
<richcontent TYPE="NOTE"><html>
  <head>
    
  </head>
  <body>
    <p>
      das ist ein grundlegender Beschlu&#223;.
    </p>
    <p>
      InteractionControl ist eine eigene Schicht;
    </p>
    <p>
      deshalb ist auch der UI-Bus nicht <i>das </i>Universal-Interface schlechthin
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node CREATED="1492444212103" ID="ID_205822286" MODIFIED="1518487921094" TEXT="Regelfall">
<icon BUILTIN="button_ok"/>
<node CREATED="1492444215374" ID="ID_1593808752" MODIFIED="1518487921094" TEXT="einfacher direkter Aufruf"/>
<node CREATED="1492444220086" ID="ID_1379993947" MODIFIED="1518487921094" TEXT="rein die Command-ID gen&#xfc;gt"/>
<node CREATED="1492444235604" ID="ID_821909125" MODIFIED="1518487921094" TEXT="diese ist per proc/cmd.hpp festgelegt"/>
<node CREATED="1492444226909" ID="ID_1827091909" MODIFIED="1518487921094" TEXT="Instanzen werden automatisch erzeugt"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1492461052551" ID="ID_1120178298" MODIFIED="1518487921094" TEXT="Objekt-IDs">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1492461062788" ID="ID_685772910" MODIFIED="1518487921094" TEXT="was wird verwendet, um auf Objekte zu verweisen"/>
<node CREATED="1492461075842" ID="ID_1775175141" MODIFIED="1518487921094" TEXT="M&#xf6;glichkeiten">
<node CREATED="1492461081978" ID="ID_1041621476" MODIFIED="1518487921094" TEXT="LuidH">
<node CREATED="1492461102167" ID="ID_541671903" MODIFIED="1518487921094" TEXT="schon unterst&#xfc;tzt"/>
</node>
<node CREATED="1492461084232" ID="ID_1450157918" MODIFIED="1518487921094" TEXT="EntryID">
<icon BUILTIN="pencil"/>
<node CREATED="1492461110341" ID="ID_1884085083" MODIFIED="1518487921094" TEXT="m&#xfc;&#xdf;te in GenNode transportiert werden">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1492461121691" ID="ID_1456848003" MODIFIED="1518487921094" TEXT="GenNode-Datentypen erweitern">
<icon BUILTIN="help"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1616946908520" HGAP="14" ID="ID_616646922" MODIFIED="1616946925604" TEXT="Gesten und Kontext-IDs" VSHIFT="3">
<icon BUILTIN="hourglass"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1616946854861" ID="ID_1000039605" MODIFIED="1616947006922" TEXT="Thema wartet auf eine viel weiter gediehene konkrete Implementierung">
<linktarget COLOR="#565ec8" DESTINATION="ID_1000039605" ENDARROW="Default" ENDINCLINATION="-1327;-47;" ID="Arrow_ID_33928560" SOURCE="ID_273700034" STARTARROW="None" STARTINCLINATION="-397;16;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
<node COLOR="#435e98" CREATED="1616947016539" ID="ID_955611798" MODIFIED="1616947047035" TEXT="&#xdc;bersetzung findet statt">
<icon BUILTIN="info"/>
<node CREATED="1616947023730" ID="ID_1003665654" MODIFIED="1616947029562" TEXT="in CmdContext"/>
<node CREATED="1616947030273" ID="ID_892803974" MODIFIED="1616947043732" TEXT="in GestureState (Service"/>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1488672593812" ID="ID_1454459609" MODIFIED="1518487921094" TEXT="konkret"/>
</node>
<node CREATED="1448063874479" HGAP="43" ID="ID_739054690" MODIFIED="1557498707235" TEXT="UI-Binding" VSHIFT="1">
<icon BUILTIN="yes"/>
<node CREATED="1538957594154" ID="ID_2785316" MODIFIED="1557498707235" TEXT="erwartete Modell-Struktur">
<node COLOR="#435e98" CREATED="1538957611472" ID="ID_580392349" MODIFIED="1557498707235" TEXT="gem&#xe4;&#xdf; systematischem UI Modell-Schema">
<arrowlink COLOR="#919fc6" DESTINATION="ID_165150753" ENDARROW="Default" ENDINCLINATION="-641;482;" ID="Arrow_ID_593956858" STARTARROW="None" STARTINCLINATION="1171;75;"/>
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1538957611472" ID="ID_1483911882" MODIFIED="1557498707235" TEXT="Aufgabe: Placement GUI-Repr&#xe4;sentation">
<arrowlink COLOR="#919fc6" DESTINATION="ID_388585037" ENDARROW="None" ENDINCLINATION="-682;462;" ID="Arrow_ID_726807054" STARTARROW="Default" STARTINCLINATION="638;-81;"/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1540748268638" ID="ID_59379201" MODIFIED="1557498707235" TEXT="Grundkonzept">
<icon BUILTIN="yes"/>
<node CREATED="1540748279917" ID="ID_85147625" MODIFIED="1557498707235" TEXT="materialisierte Eigenschaften erscheinen auf dem Target"/>
<node CREATED="1540748293067" ID="ID_1744964690" MODIFIED="1557498707235" TEXT="(meta)-Einstellungen des Placements erscheinen in einem geschachtelten Objekt"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1544839734136" ID="ID_1725773887" MODIFIED="1557498707235" TEXT="Aufgabe: Model anreichern und explizieren">
<icon BUILTIN="flag-yellow"/>
<node COLOR="#435e98" CREATED="1544839748278" ID="ID_819383617" MODIFIED="1557498707235" TEXT="das systematische UI-Modell ist explizit">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1539134733747" ID="ID_1179407482" MODIFIED="1557498707235" TEXT="vom Diff-Constituent zu leisten">
<arrowlink COLOR="#4e31e2" DESTINATION="ID_1189184036" ENDARROW="Default" ENDINCLINATION="-432;-65;" ID="Arrow_ID_1794591374" STARTARROW="None" STARTINCLINATION="-1379;-131;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="yes"/>
<node CREATED="1539138549468" ID="ID_515593613" MODIFIED="1557498707235" TEXT="existiert &quot;irgendwo&quot; in der Session"/>
<node CREATED="1539138556651" ID="ID_1569094364" MODIFIED="1557498707235" TEXT="wird anderweitig getriggert"/>
<node CREATED="1539138563657" ID="ID_1039045631" MODIFIED="1557498707235" TEXT="erzeugt Diff-Emanation"/>
<node CREATED="1544840079986" ID="ID_1423447891" MODIFIED="1557498707235" TEXT="fertig aufbereitet">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1544839802910" ID="ID_1966850162" MODIFIED="1557498707235" TEXT="auszuf&#xfc;hren">
<node CREATED="1544839813006" ID="ID_790942961" MODIFIED="1557498707235" TEXT="Ruler-Configs f&#xfc;r jeden Track"/>
<node CREATED="1544839819212" ID="ID_685715164" MODIFIED="1557498707235" TEXT="Steuer-Elemente gem&#xe4;&#xdf; Placement"/>
</node>
</node>
</node>
<node CREATED="1680567463215" ID="ID_1184528519" MODIFIED="1680567476289" TEXT="Datenstrom-Routing">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1680567534405" ID="ID_212457558" MODIFIED="1680567618172" TEXT="Medien-Datenverbindung: Grundlagen definieren">
<linktarget COLOR="#ba4677" DESTINATION="ID_212457558" ENDARROW="Default" ENDINCLINATION="-1225;-80;" ID="Arrow_ID_1272242151" SOURCE="ID_1328492043" STARTARROW="None" STARTINCLINATION="360;22;"/>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
<node CREATED="1434128074725" HGAP="24" ID="ID_242797619" MODIFIED="1684277595333">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <b>Diff</b>-basiertes &#916;-Binding
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#512ad7" DESTINATION="ID_933994138" ENDARROW="Default" ENDINCLINATION="-542;-110;" ID="Arrow_ID_1056337952" STARTARROW="None" STARTINCLINATION="-376;205;"/>
<font NAME="SansSerif" SIZE="14"/>
<node CREATED="1561827465658" ID="ID_739233072" MODIFIED="1576202931124" TEXT="zun&#xe4;chst im Zusammenhang mit dem UI-Bus entwickelt"/>
<node CREATED="1611315117066" ID="ID_329316330" MODIFIED="1684277407974" TEXT="ausgeweitet als generischer Mechanismus loser Kopplung"/>
</node>
<node CREATED="1448063880238" ID="ID_159570161" MODIFIED="1557498707235" TEXT="Zyklus">
<node CREATED="1448063893293" ID="ID_1135705575" MODIFIED="1557498707235" TEXT="initial"/>
<node CREATED="1448063896300" ID="ID_1403759288" MODIFIED="1557498707235" TEXT="Zuordnung"/>
<node CREATED="1448063902387" ID="ID_1822852634" MODIFIED="1557498707235" TEXT="Aktion"/>
<node CREATED="1448063908243" ID="ID_474614648" MODIFIED="1557498707235" TEXT="Update"/>
<node CREATED="1448063913618" ID="ID_1967302094" MODIFIED="1557498707235" TEXT="Ende"/>
</node>
</node>
</node>
<node CREATED="1448314834155" ID="ID_1725514536" MODIFIED="1557498707235" POSITION="right" TEXT="Integral">
<node CREATED="1448315011484" ID="ID_867104544" MODIFIED="1557498707235" TEXT="generisch">
<node CREATED="1448315015107" FOLDED="true" ID="ID_1900900399" MODIFIED="1561827465884" TEXT="JSON">
<node CREATED="1448315031553" ID="ID_1177387568" MODIFIED="1518487921095" TEXT="parser">
<icon BUILTIN="button_ok"/>
<node CREATED="1448315067524" ID="ID_430746611" MODIFIED="1561827465890" TEXT="Libs">
<icon BUILTIN="info"/>
<node CREATED="1448315070908" ID="ID_1328571674" MODIFIED="1518487921095" TEXT="JSON-C">
<node CREATED="1448318526124" ID="ID_737325795" MODIFIED="1518487921095" TEXT="einfach"/>
<node CREATED="1448318531644" ID="ID_745699377" MODIFIED="1518487921095" TEXT="robust"/>
<node CREATED="1448318534203" ID="ID_1415146809" MODIFIED="1518487921095" TEXT="grottig"/>
</node>
<node CREATED="1448316910322" ID="ID_677006595" MODIFIED="1518487921095" TEXT="JsonCpp">
<node CREATED="1448318540363" ID="ID_269049852" MODIFIED="1518487921095" TEXT="sehr weit verbreitet"/>
<node CREATED="1448318569151" ID="ID_239373731" MODIFIED="1518487921095">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <i>schmerzloses </i>C++ API
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1448318701621" ID="ID_1339095142" MODIFIED="1518487921095" TEXT="unterst&#xfc;tzt Builder f&#xfc;r Integration in den Parse-Vorgang"/>
<node CREATED="1448318726098" ID="ID_1386753436" MODIFIED="1518487921095" TEXT="unterst&#xfc;tzt Kommentarte (non-Standard)"/>
<node CREATED="1448318671009" ID="ID_1620559470" MODIFIED="1518487921095" TEXT="kann als eine gro&#xdf;e CPP-Datei eingebunden werden"/>
<node CREATED="1448319454226" ID="ID_108762123" MODIFIED="1518487921095">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Performance: guter Schnitt (etw. besser als boost spirit)
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1448320352804" ID="ID_1738484079" MODIFIED="1518487921095" TEXT="MIT"/>
</node>
<node CREATED="1448316923520" ID="ID_1207744350" MODIFIED="1518487921095" TEXT="rapidjson">
<node CREATED="1448320356547" ID="ID_18433884" MODIFIED="1518487921095" TEXT="MIT / teils BSD"/>
<node CREATED="1448320418619" ID="ID_972456274" MODIFIED="1518487921095" TEXT="gilt als schnell und effizient"/>
<node CREATED="1448320428906" ID="ID_279600641" MODIFIED="1518487921095">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      hat ein DOM-API <i>und</i>&#160;ein SAX-artiges API
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1448320473828" ID="ID_681519615" MODIFIED="1576282357974" TEXT="header-only, self-contained, keine Abh&#xe4;ngigkeiten!">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      das hei&#223;t: <b>nicht einmal</b>&#160;abh&#228;ngig von der STL
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1448320555049" ID="ID_1836540415" MODIFIED="1518487921095" TEXT="erweiterter Unicode-Support, incl. recoding beim Parsen"/>
<node CREATED="1448321567452" ID="ID_933252727" MODIFIED="1576282357974" TEXT="kann auch in-situ parsen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      wie gson
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1448320545523" ID="ID_298176210" MODIFIED="1518487921095" TEXT="vollst&#xe4;ndig, incl Ersetzungen"/>
<node CREATED="1448321598848" ID="ID_1151875949" MODIFIED="1518487921095" TEXT="eigener Block-Allokator, ersetzbar"/>
</node>
<node CREATED="1448318965627" ID="ID_453761706" MODIFIED="1576282357973" TEXT="vjson / gason">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      vjson war Google Code;
    </p>
    <p>
      nach dem Umzug auf Github hei&#223;t es gason
    </p>
  </body>
</html></richcontent>
<node CREATED="1448319925356" ID="ID_1589130421" MODIFIED="1576282357973" TEXT="angeblich ziemlich schnell">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      lt. eigenen Benchmakrs deutlich schneller als rapidjson, welches eigentlich immer als der &quot;schnelle&quot; JSON-Parser gilt.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1448319936915" ID="ID_1093677957" MODIFIED="1518487921095" TEXT="C++, aber ehr C-artiges API"/>
<node CREATED="1448319955328" ID="ID_534293846" MODIFIED="1518487921095" TEXT="type-tag, switch-on-type"/>
<node CREATED="1448319963711" ID="ID_1858072437" MODIFIED="1576282357972" TEXT="Parser ist destruktiv">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      d.h. das Parsen schreibt den Eingabepuffer um, und Strings bleiben einfach liegen
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1448319973830" ID="ID_1495739376" MODIFIED="1518487921096" TEXT="Werte werden in IEEE double NaN geboxt"/>
<node CREATED="1448320035173" ID="ID_226864203" MODIFIED="1518487921096" TEXT="eigener Block-Allokator"/>
<node CREATED="1448320365290" ID="ID_1044522194" MODIFIED="1518487921096" TEXT="MIT"/>
</node>
<node CREATED="1448315073819" ID="ID_280907535" MODIFIED="1518487921096" TEXT="boost spirit">
<node CREATED="1448316823037" ID="ID_726858418" MODIFIED="1518487921096" TEXT="reiner parser"/>
<node CREATED="1448321185310" ID="ID_180554028" MODIFIED="1518487921096" TEXT="kann direkt in Vector parsen"/>
<node CREATED="1448316826444" ID="ID_263014084" MODIFIED="1518487921096" TEXT="grammatik via metaprogrmming"/>
<node CREATED="1448316840474" ID="ID_1878535070" MODIFIED="1518487921096" TEXT="code bloat, vor allem in Debug-builds">
<icon BUILTIN="smily_bad"/>
</node>
<node CREATED="1448321146283" ID="ID_1257942632" MODIFIED="1576282357972" TEXT="Ver&#xf6;ffentlichung undurchsichtig">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      kein Repo auffindbar
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1448315077731" ID="ID_439331220" MODIFIED="1518487921096" TEXT="boost property-tree">
<node CREATED="1448316790553" ID="ID_1199102717" MODIFIED="1518487921096" TEXT="einfaches API"/>
<node CREATED="1448316796240" ID="ID_1402766358" MODIFIED="1518487921096" TEXT="parst in einen boost::property_tree"/>
<node CREATED="1448316803799" ID="ID_534763461" MODIFIED="1518487921096" TEXT="keine Typisierung">
<icon BUILTIN="smily_bad"/>
</node>
</node>
</node>
<node CREATED="1448320959060" ID="ID_937046843" MODIFIED="1518487921096" TEXT="Entscheidung">
<icon BUILTIN="yes"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1448320963067" ID="ID_824752283" MODIFIED="1538870530138" TEXT="rapidjson">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="info"/>
</node>
<node CREATED="1448320987776" ID="ID_545245790" MODIFIED="1518487921096" TEXT="Begr&#xfc;ndung...">
<node CREATED="1448321001518" ID="ID_671858484" MODIFIED="1518487921096">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      ich will nicht <i>noch ein</i>&#160;Objekt-System
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1448321022444" ID="ID_658035448" MODIFIED="1518487921096" TEXT="das SAX-API ist genau, was ich brauche"/>
<node CREATED="1448321063078" ID="ID_923664235" MODIFIED="1518487921096" TEXT="au&#xdf;erdem klein und schmerzlos"/>
<node CREATED="1448321614174" ID="ID_1319618589" MODIFIED="1518487921096" TEXT="sch&#xf6;nes API, und ist schnell"/>
</node>
</node>
</node>
<node CREATED="1448315063541" ID="ID_430049414" MODIFIED="1518487921096" TEXT="framework">
<node CREATED="1448321310054" ID="ID_180974747" MODIFIED="1518487921096" TEXT="Forderungen">
<node CREATED="1448321258189" ID="ID_1374008180" MODIFIED="1518487921096" TEXT="diff::Record als Container"/>
<node CREATED="1448321329691" ID="ID_982254628" MODIFIED="1518487921096" TEXT="Validierung beim Parsen"/>
<node CREATED="1448321280178" ID="ID_1241470226" MODIFIED="1518487921096" TEXT="Erweiterbarkeit auf Objekt-Serialisieierung"/>
</node>
</node>
</node>
<node CREATED="1521843763852" FOLDED="true" ID="ID_1208981523" MODIFIED="1695565073595" TEXT="Microbenchmarks">
<icon BUILTIN="forward"/>
<node CREATED="1521843772026" ID="ID_1334641753" MODIFIED="1557498707235" TEXT="selber schreiben">
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1521843783161" ID="ID_1151208744" MODIFIED="1557498707235" TEXT="mehrere Threads unterst&#xfc;tzen"/>
<node COLOR="#338800" CREATED="1521843822020" ID="ID_1862348515" MODIFIED="1561827465891" TEXT="Library-Funktion">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1538870431318" ID="ID_1372513165" MODIFIED="1538870448900" TEXT="lib/test/microbenchmark.hpp"/>
<node CREATED="1521843838865" ID="ID_1649689781" MODIFIED="1521843944839" TEXT="bekommt eigentlichen Testcode als Lambda">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1521843849712" ID="ID_579604510" MODIFIED="1521843940495" STYLE="fork" TEXT="verwendet std::chrono::duration&lt;double&gt;">
<icon BUILTIN="info"/>
<node CREATED="1521843873173" ID="ID_952548619" MODIFIED="1521843938941" TEXT="mi&#xdf;t micro-Ticks"/>
<node CREATED="1521843880155" ID="ID_1245721460" MODIFIED="1521843938941" TEXT="Ergebnis f&#xe4;llt in Sekunden"/>
</node>
<node CREATED="1695564936006" ID="ID_1047132954" MODIFIED="1695566765609" TEXT="Subjekt-&#x3bb; mu&#xdf; einen Pr&#xfc;fsummen-Beitrag zur&#xfc;ckliefern">
<icon BUILTIN="messagebox_warning"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1695566770937" ID="ID_1948184681" MODIFIED="1695566791103" TEXT="die Pr&#xfc;fsummenbildung wird Teil der Zeitmessung">
<icon BUILTIN="clanbomber"/>
</node>
<node CREATED="1695566791879" ID="ID_751500561" MODIFIED="1695566816507">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      ohnehin sollte man stets einen <b>Leer-Test mitlaufen</b>&#160;lassen
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1695566829177" ID="ID_1508872070" MODIFIED="1695566856666" TEXT="Stichwort: richtiger Umgang mit Me&#xdf;ergebnisen ist nicht einfach">
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node COLOR="#244b56" CREATED="1695564457502" ID="ID_1031023773" MODIFIED="1695566888793" TEXT="single-threaded">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1695564595224" ID="ID_1455716133" MODIFIED="1695564912511" TEXT="microBenchmark (FUN const&amp; testSubject, const size_t repeatCnt)">
<arrowlink COLOR="#7388a1" DESTINATION="ID_1706287807" ENDARROW="Default" ENDINCLINATION="16;-40;" ID="Arrow_ID_1918242512" STARTARROW="None" STARTINCLINATION="94;4;"/>
</node>
<node CREATED="1695564698566" ID="ID_33467398" MODIFIED="1695564914223" TEXT="modular aufgebaut">
<node CREATED="1695564724843" ID="ID_1706287807" MODIFIED="1695564912511" TEXT="benchmarkTime(FUN const&amp; invokeTestLoop, const size_t repeatCnt) &#x27fc; timing result(&#xb5;s)">
<linktarget COLOR="#7388a1" DESTINATION="ID_1706287807" ENDARROW="Default" ENDINCLINATION="16;-40;" ID="Arrow_ID_1918242512" SOURCE="ID_1455716133" STARTARROW="None" STARTINCLINATION="94;4;"/>
</node>
<node CREATED="1695564757542" ID="ID_1758304968" MODIFIED="1695564775936" TEXT="benchmarkLoop (FUN const&amp; testSubject, const size_t repeatCnt) &#x27fc; checksum"/>
</node>
</node>
<node COLOR="#244b56" CREATED="1695564462358" ID="ID_1710443227" MODIFIED="1695566888792" TEXT="multi-threaded">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1521843959433" ID="ID_133306105" MODIFIED="1695566714239" TEXT="verwendet Lumiera&apos;s Threading-Framework">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      man h&#228;tte genausogut std::future und std::async verwenden k&#246;nnen.
    </p>
    <p>
      Vorteil von unseren Framework:
    </p>
    <ul>
      <li>
        wir verwenden es ohnehin durchgehend und es baut auf C++17 auf
      </li>
      <li>
        man baut ein Objekt f&#252;r einen Thread. Das ist explizit und sauber
      </li>
      <li>
        wir haben eine eingebaute Barriere und k&#246;nnen unseren Objekt-Monitor nutzen
      </li>
    </ul>
  </body>
</html></richcontent>
<linktarget COLOR="#3c3791" DESTINATION="ID_133306105" ENDARROW="Default" ENDINCLINATION="1998;124;" ID="Arrow_ID_1396114463" SOURCE="ID_1963760164" STARTARROW="None" STARTINCLINATION="1117;-1000;"/>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1695564523229" ID="ID_1256560553" MODIFIED="1695564538519" TEXT="threadBenchmark&lt;nThreads&gt;(FUN const&amp; subject, const size_t nRepeat)"/>
<node CREATED="1695566641331" ID="ID_691644019" MODIFIED="1695566749466" TEXT="sammelt Checksumme von allen Einzelausf&#xfc;hrungen ein">
<linktarget COLOR="#9da4ba" DESTINATION="ID_691644019" ENDARROW="Default" ENDINCLINATION="2059;113;" ID="Arrow_ID_613151166" SOURCE="ID_1075251985" STARTARROW="None" STARTINCLINATION="212;-242;"/>
</node>
</node>
<node COLOR="#338800" CREATED="1521843907144" ID="ID_848033940" MODIFIED="1521843935500" TEXT="Ergebnis normieren auf einzelnen Aufruf">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1521843926501" ID="ID_984510403" MODIFIED="1521843934725" TEXT="Ergebnis in Mirkosekunden">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1521844261439" ID="ID_1538240853" MODIFIED="1576282357970" TEXT="Korrektheit der Zeitangaben verifiziert">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      habe einen usleep(1000) getimed
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1521844101045" ID="ID_1065212487" MODIFIED="1557498707235" TEXT="Erfahrungen">
<node CREATED="1521844121043" ID="ID_1041692639" MODIFIED="1561827465893" TEXT="Optimizer">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1521844504174" ID="ID_318676926" MODIFIED="1521844520954" TEXT="Optimierung per -O3 ist sehr deutlich me&#xdf;bar">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1521844130561" ID="ID_1541346658" MODIFIED="1521844139739" TEXT="&#xfc;bergebene Lambdas werden tats&#xe4;chlich ge-inlined"/>
<node CREATED="1521844157909" ID="ID_1833250915" MODIFIED="1576282357970" TEXT="wenn wir in der Loop messen, messen wir die Aufrufe von chrono::system_clock mit">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      daher messen wir die Loop als Ganzes.
    </p>
    <p>
      Es gibt daher keine M&#246;glichkeit, den Loop-Overhead selber zu messen.
    </p>
    <p>
      Er sollte sich aber bei einer Wiederholung im Millionenbereich gut amortisieren
    </p>
    <p>
      
    </p>
    <p>
      Au&#223;erdem ist ja auch noch der Aufruf des Funktors mit im Spiel, wenngleich der auch typischerweise geinlined wird
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1521844236539" ID="ID_176799135" MODIFIED="1521844248411" TEXT="tats&#xe4;chlich verifiziert">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1521844204015" ID="ID_188310893" MODIFIED="1521844251027" TEXT="Gr&#xf6;&#xdf;enordnung 10 ns">
<icon BUILTIN="info"/>
</node>
</node>
<node CREATED="1521844141248" ID="ID_328319936" MODIFIED="1521844156769" TEXT="wenn man nicht aufpa&#xdf;t, wird die ganze Loop wegoptimiert"/>
<node CREATED="1521844306601" ID="ID_126627605" MODIFIED="1521844338425" TEXT="Beste L&#xf6;sung">
<node CREATED="1521844339269" ID="ID_1885600326" MODIFIED="1521844361265">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      volatile Variable <i>au&#223;en,</i>&#160;im Aufrufkontext
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1521844366944" ID="ID_1258575129" MODIFIED="1521844373484" TEXT="Zugriff via Closure und Referenz"/>
<node CREATED="1521844374503" ID="ID_1548234021" MODIFIED="1521844386090" TEXT="diese Variable mit Konstante vergleichen"/>
<node CREATED="1521844391605" ID="ID_1603234514" MODIFIED="1521844411462" TEXT="Lokale volatile Variable: Initialisierung kostet +5ns"/>
<node CREATED="1521844412602" ID="ID_1758142813" MODIFIED="1521844418949" TEXT="Inkrementieren kostet +10ns"/>
<node CREATED="1521844419657" ID="ID_1892679887" MODIFIED="1576282357969" TEXT="konkurrentes Inkrementieren auf globale Volatile: Faktor 100 !!!!">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...was sehr sch&#246;n beweist,
    </p>
    <p>
      da&#223; x86_64 tats&#228;chlich cache-koh&#228;rent ist
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1535890757430" ID="ID_3793753" MODIFIED="1557498707235" TEXT="Iterator">
<node CREATED="1535890775651" ID="ID_333704322" MODIFIED="1573230435834" TEXT="Lumiera Forward Iterator">
<linktarget COLOR="#3f76e9" DESTINATION="ID_333704322" ENDARROW="Default" ENDINCLINATION="-542;0;" ID="Arrow_ID_1390962202" SOURCE="ID_1939609996" STARTARROW="None" STARTINCLINATION="183;24;"/>
<node CREATED="1684279310565" HGAP="13" ID="ID_532771063" MODIFIED="1684279370305" TEXT="Schema / Konzept" VSHIFT="-6">
<font NAME="SansSerif" SIZE="15"/>
<icon BUILTIN="yes"/>
<node CREATED="1684279385274" ID="ID_1252988610" MODIFIED="1684279435376" TEXT="&#x201e;iterate once&#x201c;">
<node CREATED="1684279439140" ID="ID_1693732074" MODIFIED="1684279447103" TEXT="leichtgewichtiges Value-Objekt"/>
<node CREATED="1684279448931" ID="ID_747600474" MODIFIED="1684279474020" TEXT="kann direkt per bool() gepr&#xfc;ft werden auf aktiv/ersch&#xf6;pft"/>
<node CREATED="1684279475064" ID="ID_762005472" MODIFIED="1684279520293" TEXT="kann beliebig oft dereferenziert werden &#x27fc; Referenz"/>
<node CREATED="1684279487686" ID="ID_1722498491" MODIFIED="1684279503788" TEXT="kann lediglich vorw&#xe4;rts inkrementiert werden"/>
<node CREATED="1684279532947" ID="ID_241097911" MODIFIED="1684279553786" TEXT="equality-comparison m&#xf6;glich"/>
<node CREATED="1684279564972" ID="ID_1108195405" MODIFIED="1684279698749" TEXT="und sonst nichts">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      das ist der wichtigste Part: ich grenze mich hier explizit von der STL ab;&#160;&#160;ein &#187;Lumiera Forward Iterator&#171; ist nicht eine <i>besondere Art von Pointer</i>&#160;&#8212; wir wissen sonst wirklich nichts, und wir verzichten auf ein absolut optimale Performance. Und wir bieten <b>keinerlei</b>&#160; weitere Features, wie R&#252;ckw&#228;rts-Iteration, random-access, L&#246;schen und Einf&#252;gen. Einen einmal verbrauchten Iterator kann man nur noch wegwerfen.
    </p>
  </body>
</html></richcontent>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
</node>
<node CREATED="1684279763673" ID="ID_1832445793" MODIFIED="1684279766796" TEXT="Bestandteile"/>
<node CREATED="1684279781088" ID="ID_1111222852" MODIFIED="1684279784555" TEXT="Type-Rebindings">
<node CREATED="1684279862224" ID="ID_1434326257" MODIFIED="1684279873158" TEXT="aus praktischem Nutzen gewachsen">
<node CREATED="1684279886387" ID="ID_1565493893" MODIFIED="1684279914459" TEXT="lehnt sich an die Konventionen der STL an">
<node CREATED="1684198966392" ID="ID_1022974532" LINK="https://en.cppreference.com/w/cpp/named_req/Container" MODIFIED="1684199002450" TEXT="C++ named requirement: &#xbb;Container&#xab;">
<icon BUILTIN="info"/>
</node>
</node>
<node CREATED="1684279878549" ID="ID_1198063095" MODIFIED="1684279885718" TEXT="es gibt mehrere Auspr&#xe4;gungen">
<node CREATED="1684280120923" ID="ID_1958736590" MODIFIED="1684280150900" TEXT="und ein Wirrwar an Helper-Trait-Templates">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      offensichtlich habe ich das gleiche Problem hier mehrfach gel&#246;st und das dann wieder vergessen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="smiley-oh"/>
<node CREATED="1684280227062" ID="ID_1267159955" MODIFIED="1684280309727" TEXT="meta::TypeBinding&lt;IT&gt; (&quot;lib/meta/value-type-binding.hpp&quot;)"/>
<node CREATED="1684280251514" ID="ID_1628114025" MODIFIED="1684280266180" TEXT="meta::RefTraits&lt;TY&gt;  (&quot;lib/meta.hpp&quot;)"/>
</node>
</node>
<node CREATED="1684279917462" ID="ID_996958753" MODIFIED="1684279935488" TEXT="Inkonsistenzen im Lauf der Zeit">
<node CREATED="1684279940675" ID="ID_1930966790" MODIFIED="1684280069405" TEXT="Kritik im Zusammenhang mit Reimplementierung Dispatcher (#1276)">
<linktarget COLOR="#b76aa0" DESTINATION="ID_1930966790" ENDARROW="Default" ENDINCLINATION="643;27;" ID="Arrow_ID_1775444250" SOURCE="ID_156863476" STARTARROW="None" STARTINCLINATION="-1192;-62;"/>
</node>
<node CREATED="1684705588357" ID="ID_448631026" MODIFIED="1684705617644" TEXT="nun konsistenter; Pointer und CV besser ber&#xfc;cksichtigt"/>
</node>
</node>
<node CREATED="1684279832959" ID="ID_1653725436" MODIFIED="1684280092660" TEXT="formale Spezifikation">
<font NAME="SansSerif" SIZE="13"/>
<icon BUILTIN="yes"/>
<node CREATED="1684199406472" ID="ID_251453804" MODIFIED="1684199434386" TEXT="&#xbb;value&#xab; ist das, was der Iterator vorr&#xfc;bergehend zug&#xe4;nglich macht">
<icon BUILTIN="forward"/>
</node>
<node CREATED="1684199485120" ID="ID_1157221645" MODIFIED="1684199519934" TEXT="&#xbb;reference&#xab; ist ein referenzierender, nicht kopierender Zugriff darauf">
<icon BUILTIN="forward"/>
</node>
<node CREATED="1684199543918" ID="ID_580524240" MODIFIED="1684199621884" TEXT="&#xbb;pointer&#xab; ist die &#xdc;bersetzung der &#xbb;reference&#xab; in das Konzept &#xbb;language pointer&#xab;">
<icon BUILTIN="forward"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1684889964280" ID="ID_1406539973" MODIFIED="1684889985653" TEXT="&#x27f9; stets meta::ValueTypeBinding verwenden">
<node CREATED="1684890006274" ID="ID_1275439010" MODIFIED="1684890016858" TEXT="ordnet const dem Basistyp zu">
<node CREATED="1684890224549" ID="ID_1208887811" MODIFIED="1684890249555" TEXT="d.h. anders als die STL wirkt const auf den value_type"/>
<node CREATED="1684890250257" ID="ID_850627216" MODIFIED="1684890299139" TEXT="Vorsicht: RangeIter hat spezielle Magic, um STL-Iteratoren entsprechend korrekt zu handhaben"/>
</node>
<node CREATED="1684889997147" ID="ID_278450079" MODIFIED="1684890031955" TEXT="nivelliert Referenzen im gegebenen Typ"/>
<node CREATED="1684890039014" ID="ID_1653509655" MODIFIED="1684890203370" TEXT="verh&#xe4;lt sich sinngem&#xe4;&#xdf; anders f&#xfc;r Pointer">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Ein Pointer wird in diesem Kontext wie ein einfacher primitiver value behandelt, d.h. <font face="Monospaced">value_type</font>&#160;&#8801; der Pointer selber, <font face="Monospaced">reference</font>&#160; &#8801; eine Referenz auf den Pointer, <font face="Monospaced">pointer&#160;</font>&#8801; ein Pointer auf den Pointer. Und: aus einem Pointer werden niemals <i>nested type bindings</i>&#160;abgegriffen.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1684890048701" ID="ID_1515151471" MODIFIED="1684890070142" TEXT="greift nested type bindings aus dem gegebenen value_type ab"/>
</node>
</node>
</node>
<node CREATED="1684279342553" ID="ID_289621340" MODIFIED="1684279366302" TEXT="diverse Auspr&#xe4;gungen">
<icon BUILTIN="info"/>
<node CREATED="1535890788898" ID="ID_474606436" MODIFIED="1557498707235" TEXT="IterAdapter"/>
<node CREATED="1684279298314" ID="ID_734662702" MODIFIED="1684279301874" TEXT="RangeIterator"/>
<node CREATED="1535891020739" ID="ID_7899831" MODIFIED="1557498707235" TEXT="IterStateWrapper">
<node CREATED="1535891026946" ID="ID_958757780" MODIFIED="1689250762384" TEXT="sehr wichtiges Konzept">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1689250778284" ID="ID_1412378116" MODIFIED="1689250782728" TEXT="Eigenschaften ">
<icon BUILTIN="info"/>
<node CREATED="1535891041376" ID="ID_1943507267" MODIFIED="1689250787543" TEXT="Core ist opaque (private)"/>
<node CREATED="1689250792218" ID="ID_812557407" MODIFIED="1689250808684" TEXT="Core mu&#xdf; ein Iteration-Control-API bereitstellen"/>
</node>
<node CREATED="1535891031609" ID="ID_1246882752" MODIFIED="1689250747093" TEXT="manchmal braucht man aber Zugang zur Core">
<node CREATED="1689250848218" ID="ID_1379551481" MODIFIED="1689250877891" TEXT="proteced: Zugriffsfunktion stateCore()"/>
<node CREATED="1689250881790" ID="ID_1753762237" MODIFIED="1689250891320" TEXT="anderer Ansatz ...">
<node CREATED="1535891050566" ID="ID_89731232" MODIFIED="1689250895231" TEXT="von Core erben"/>
<node CREATED="1689250950915" ID="ID_1060787420" MODIFIED="1689250960641" TEXT="erlaubt ko&#xe4;hsives Layering">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1535895095322" ID="ID_1368242997" MODIFIED="1689251096364" TEXT="entstanden als Basis f&#xfc;r TreeExplorer">
<arrowlink COLOR="#423d73" DESTINATION="ID_552745986" ENDARROW="Default" ENDINCLINATION="54;-50;" ID="Arrow_ID_695542994" STARTARROW="None" STARTINCLINATION="-250;19;"/>
</node>
</node>
</node>
</node>
<node CREATED="1689250933722" ID="ID_552745986" MODIFIED="1689251096364" TEXT="IterableDecorator">
<arrowlink COLOR="#4f65c2" DESTINATION="ID_1169599821" ENDARROW="Default" ENDINCLINATION="-74;-108;" ID="Arrow_ID_680083681" STARTARROW="None" STARTINCLINATION="-68;10;"/>
<linktarget COLOR="#423d73" DESTINATION="ID_552745986" ENDARROW="Default" ENDINCLINATION="54;-50;" ID="Arrow_ID_695542994" SOURCE="ID_1368242997" STARTARROW="None" STARTINCLINATION="-250;19;"/>
<node CREATED="1689251037623" ID="ID_1841817797" MODIFIED="1689251043668" TEXT="minimalistischer Dekorator"/>
<node CREATED="1689251072049" ID="ID_1212593505" MODIFIED="1689251084516" TEXT="verwendet gleiches Core-API wie IterStateWrapper"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1689251044542" ID="ID_883315640" MODIFIED="1689251065411" TEXT="ausnahmsweise: keinerlei &#x27d8;-checks">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1535890793825" ID="ID_582282005" MODIFIED="1557498707236" TEXT="Itertool">
<node CREATED="1535893017063" ID="ID_859634605" MODIFIED="1557498707236" TEXT="zun&#xe4;chst naiv-direkt implementiert"/>
<node CREATED="1535893024102" ID="ID_1514691517" MODIFIED="1557498707236" TEXT="Sandwich-Design">
<node CREATED="1535893036132" ID="ID_827990682" MODIFIED="1557498707236" TEXT="nicht besonders sch&#xf6;n"/>
<node CREATED="1535893041324" ID="ID_1175882215" MODIFIED="1557498707236" TEXT="aber soweit wartbar"/>
<node CREATED="1684278976381" ID="ID_576913399" MODIFIED="1684279228613" TEXT="TreeExplorer hat ein &#xe4;hnliches Design &#x2014; aber klarer">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Das <i>Sandwich-Design</i>&#160;tritt durchaus h&#228;ufig auf, wenn man einen Builder hat, oder eine Pipeline mit einem terminalen Adapter. Aber beim TreeExplorer habe ich das viel klarer gel&#246;st, indem der Kern im Sandwich selbst wieder ein &#187;Lumiera Forward Iterator&#171; ist, nach dem &#187;State Core&#171;-Modell. Im Grunde laufen die &#187;Itertools&#171; auf den gleichen Ansatz hinaus, nur habe ich das damals noch nicht erkannt und stattdessen ein <i>privates Protokoll</i>&#160;entwickelt, wodurch die gesamte Implementierung relativ schwer zu verstehen ist, und dennoch weder kompakter, noch performanter wird.
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#5c69ae" DESTINATION="ID_908990971" ENDARROW="Default" ENDINCLINATION="554;27;" ID="Arrow_ID_1200185137" STARTARROW="None" STARTINCLINATION="134;7;"/>
</node>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1535893048363" ID="ID_794436728" MODIFIED="1684278915670" TEXT="Frage: abl&#xf6;sen durch Pipeline-Builder?">
<arrowlink COLOR="#afa9c1" DESTINATION="ID_114091640" ENDARROW="Default" ENDINCLINATION="-503;-426;" ID="Arrow_ID_956211493" STARTARROW="None" STARTINCLINATION="262;18;"/>
<icon BUILTIN="help"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1684278923108" HGAP="34" ID="ID_908990971" MODIFIED="1684279220707" TEXT="oder reimplementieren auf Basis von IterStateWrapper" VSHIFT="-1">
<linktarget COLOR="#5c69ae" DESTINATION="ID_908990971" ENDARROW="Default" ENDINCLINATION="554;27;" ID="Arrow_ID_1200185137" SOURCE="ID_576913399" STARTARROW="None" STARTINCLINATION="134;7;"/>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1689250615891" ID="ID_849288475" MODIFIED="1689250626018" TEXT="State-Core-Struktur">
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1689250630577" ID="ID_544376950" MODIFIED="1689250664508" TEXT="entwickelt sich zunehmend zu einem Basis-Protokoll f&#xfc;r Iteration">
<icon BUILTIN="forward"/>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1689250675659" ID="ID_328217249" MODIFIED="1689250679379" TEXT="Varianten?">
<icon BUILTIN="help"/>
</node>
<node COLOR="#435e98" CREATED="1689249180884" ID="ID_1169599821" MODIFIED="1689252396083" TEXT="IterableDecorator : minimalistischer Core-Adapter">
<linktarget COLOR="#4f65c2" DESTINATION="ID_1169599821" ENDARROW="Default" ENDINCLINATION="-74;-108;" ID="Arrow_ID_680083681" SOURCE="ID_552745986" STARTARROW="None" STARTINCLINATION="-68;10;"/>
<linktarget COLOR="#4b58db" DESTINATION="ID_1169599821" ENDARROW="Default" ENDINCLINATION="-1279;68;" ID="Arrow_ID_1606137974" SOURCE="ID_537950394" STARTARROW="None" STARTINCLINATION="-2178;95;"/>
<icon BUILTIN="yes"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1689249279721" ID="ID_1459410871" MODIFIED="1689249306148" TEXT="der Name ist gut &#x2014; es handelt sich um ein eigenst&#xe4;ndiges Konzept">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1689249498676" ID="ID_503269271" MODIFIED="1689250362522" TEXT="Historie: war notwendig im Iter(Tree)Explorer ... und dann wieder im BlockFlow">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Das Konzept des State-Core-Adapters hat sich im Lauf der Jahre herausgebildet, und wird mehr und mehr zu einer fundamentalen Struktur des Iteratoren-Framworks (in dem Ma&#223;, wie aus ad-hoc - Adaptern ein ganzes Framework entstanden ist). Im zweiten Anlauf f&#252;r den Iter(Tree)Explorer habe ich das bereits erkannt, und die gesamte Pipeline darauf aufgebaut; allerdings zeigte sich hier, da&#223; genau die Entscheidung, die &#187;StateCore&#171; als opaque zu betrachten, im gr&#246;&#223;eren Kontext nicht tr&#228;gt. Daher habe ich hier bewu&#223;t die Core als Basisklasse eingemischt; daraus ist der definierende Wesenszug des IterExplorers entstanden, der aber auch gleichzeitig seine gr&#246;&#223;te Gefahr und Schw&#228;che ist: das komplexe hoch-koh&#228;sive Layering. Und nun sto&#223;e ich beim Aufbauen der Allokator-Hierarchie f&#252;r den Scheduler enteut auf eine &#228;hnlich gelagerte Situation, kann aber (da es sich um high-Performance-Code handelt), definitiv nicht den IterExplorer einsetzen. Dies bewegt mich zu dem Schritt, den IterableDecorator als ein eigenst&#228;ndiges Konzept zu etablieren.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="list"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1689249315278" ID="ID_1697871189" MODIFIED="1689258312928" TEXT="bewu&#xdf;t keinerlei &#x27d8; - Checks">
<icon BUILTIN="clanbomber"/>
<node CREATED="1689249330748" ID="ID_1202020886" MODIFIED="1689250409855" TEXT="Begr&#xfc;ndung: das erm&#xf6;glicht auch Einsatz in performance-kritischem Bereich">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1689249349397" ID="ID_1821818883" MODIFIED="1689250418012" TEXT="Policy: dann m&#xfc;ssen eben im Zweifelsfall die Core-API-Funktionen defensiver sein">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1689249382304" ID="ID_1382698959" MODIFIED="1689249425284">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>damit w&#228;re dieser Adapter ein &#187;<b>Iterator-Implementierungs-Atom</b>&#171;</p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#338800" CREATED="1689258251541" ID="ID_1433183043" MODIFIED="1689258347587" TEXT="Adapter zum Nachr&#xfc;sten: lib::CheckedCore">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node CREATED="1535890810111" ID="ID_677938944" MODIFIED="1557498707236" TEXT="IterSource">
<node CREATED="1535890823613" ID="ID_1227701237" MODIFIED="1557498707236" TEXT="Lumiera Iterator als Abstraktion"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1535890830772" ID="ID_1558484735" MODIFIED="1557498707236" TEXT="bestehendes Design ist ungeschickt">
<icon BUILTIN="stop-sign"/>
<node CREATED="1535890890980" ID="ID_1370634828" MODIFIED="1557498707236" TEXT="unterstellt einen Pos-Pointer"/>
<node CREATED="1535890915576" ID="ID_8718412" MODIFIED="1557498707236" TEXT="Semantik der Abbruchbedingung ist verwirrend"/>
</node>
<node CREATED="1535890958987" ID="ID_71109348" MODIFIED="1557498707236" TEXT="alternatives Design">
<node CREATED="1535890965170" ID="ID_1363636315" MODIFIED="1557498707236" TEXT="was geht hier?">
<node CREATED="1535890972609" ID="ID_1586923063" MODIFIED="1557498707236" TEXT="wie state core?"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1535891065189" FOLDED="true" ID="ID_1233342893" MODIFIED="1695502596556" TEXT="Iterator-Monade">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      seit l&#228;ngerer Zeit ein Thema,
    </p>
    <p>
      f&#252;r das ich verschiedene L&#246;sungen ausprobiere
    </p>
    <ul>
      <li>
        IterExplorer : erster Anlauf, etwas schief
      </li>
      <li>
        TreeExplorer : Pipeline-Builder, vielversprechend
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1512925265295" HGAP="103" ID="ID_1502143527" MODIFIED="1687456622837" VSHIFT="-66">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Thema: <b>Monaden</b>
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#80c6b3" DESTINATION="ID_1499495468" ENDARROW="Default" ENDINCLINATION="-1812;12745;" ID="Arrow_ID_673178727" STARTARROW="None" STARTINCLINATION="4133;-10665;"/>
<linktarget COLOR="#6c79a2" DESTINATION="ID_1502143527" ENDARROW="Default" ENDINCLINATION="-606;743;" ID="Arrow_ID_616092581" SOURCE="ID_513357674" STARTARROW="None" STARTINCLINATION="229;19;"/>
<icon BUILTIN="flag-blue"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1510446221317" HGAP="37" ID="ID_1955430588" MODIFIED="1535892751360" VSHIFT="-14">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      sind Monaden
    </p>
    <p>
      wirklich hilfreich?
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#b26c7a" DESTINATION="ID_1955430588" ENDARROW="Default" ENDINCLINATION="-343;-748;" ID="Arrow_ID_920121069" SOURCE="ID_1590483406" STARTARROW="None" STARTINCLINATION="-38;43;"/>
<icon BUILTIN="help"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1510446351987" ID="ID_855693611" MODIFIED="1535892731992" TEXT="steile These">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node CREATED="1510446304314" ID="ID_1203762242" MODIFIED="1510446320689" TEXT="Zustand ist ein Ph&#xe4;nomen der wirklichen Welt"/>
<node CREATED="1510446255552" ID="ID_46197323" MODIFIED="1510446264587" TEXT="funktionale Sprachen sind kaputt by design"/>
<node CREATED="1510446265767" ID="ID_1283184818" MODIFIED="1510446275105" TEXT="nur deshalb brauchts dort Monaden"/>
</node>
<node CREATED="1510446363306" ID="ID_505111674" MODIFIED="1535892582314" TEXT="trotzdem gerechtfertigt?">
<node CREATED="1510446371480" ID="ID_247739078" MODIFIED="1510446394065" TEXT="Klarheit"/>
<node CREATED="1510446394965" ID="ID_1458617201" MODIFIED="1510446398689" TEXT="Trennung"/>
</node>
<node CREATED="1681004167322" ID="ID_187683678" LINK="#ID_641232618" MODIFIED="1681004305936" TEXT="siehe ausgearbeitete theoretische Darstellung im TiddlyWiki">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      &#187;AboutMonads&#171; : das k&#246;nnte mal eine Seite im Theorieteil werden (&quot;more about...&quot;)
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1512927162098" HGAP="93" ID="ID_1774532014" MODIFIED="1561827465901" TEXT="Einsichten" VSHIFT="37">
<icon BUILTIN="idea"/>
<node CREATED="1512927175056" ID="ID_516152902" MODIFIED="1518487921098" TEXT="nicht das Gelbe vom Ei">
<node CREATED="1512927204460" ID="ID_1166808329" MODIFIED="1518487921098" TEXT="kein wirkliches Design-Pattern"/>
<node CREATED="1512927213962" ID="ID_1374430987" MODIFIED="1518487921098" TEXT="es fehlt die Nennkraft"/>
</node>
<node CREATED="1512927667023" ID="ID_67694617" MODIFIED="1518487921098" TEXT="Probleme">
<node CREATED="1512927676973" ID="ID_1019834257" MODIFIED="1518487921098" TEXT="Mondaden sind eine rein technische L&#xf6;sung"/>
<node CREATED="1512927687844" ID="ID_1680797364" MODIFIED="1518487921098" TEXT="sie vereinigen Themen ohne innere Verwadtschaft"/>
<node CREATED="1512927766769" ID="ID_943419159" MODIFIED="1518487921098" TEXT="Zusammenspiel gebundener Funktionen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...bindet die Betrachtung auf einen technischen Level,
    </p>
    <p>
      und f&#252;hrt dazu, da&#223; die Abstraktion undicht wird
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1512927978133" ID="ID_1491853321" MODIFIED="1518487921098" TEXT="passen schlecht in C++">
<node CREATED="1512928064858" ID="ID_1221151193" MODIFIED="1518487921098" TEXT="entweder massiv Metaprogrammierung"/>
<node CREATED="1512928075920" ID="ID_491825441" MODIFIED="1518487921098" TEXT="oder man schafft ein runtime-Meta-System"/>
</node>
</node>
<node CREATED="1512928100557" ID="ID_767453821" MODIFIED="1518487921098" TEXT="n&#xfc;tzlich">
<node CREATED="1512928114707" ID="ID_21920250" MODIFIED="1518487921098" TEXT="um Zustand auszukoppeln">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      genau der Umstand,
    </p>
    <p>
      da&#223; funktionale Sprachen von einer Zustands-Phobie getrieben sind,
    </p>
    <p>
      macht Monaden n&#252;tzlich, um inh&#228;renten Zustand wegzuabstrahieren.
    </p>
    <p>
      Das kann genutzt werden, um den Zustand einer Wechselwirkung
    </p>
    <p>
      nach einer Seite der Glieder auszukoppeln.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1512928357202" ID="ID_360277857" MODIFIED="1518487921098" TEXT="um Konfigurierbarkeit zu schaffen"/>
<node CREATED="1512928258312" ID="ID_1469652928" MODIFIED="1518487921098" TEXT="um technische Details zu entflechten"/>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1512928287812" ID="ID_212632305" MODIFIED="1535892918047" TEXT="Fazit">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node CREATED="1512928291555" ID="ID_1651357350" MODIFIED="1518487921098" TEXT="nur ein &#xbb;Monaden-Motiv&#xab; nutzen"/>
<node CREATED="1512928301386" ID="ID_589389944" MODIFIED="1518487921098" TEXT="das Builder-Pattern in den Vordergrund stellen">
<node CREATED="1512928322567" ID="ID_462235185" MODIFIED="1518487921098" TEXT="Builder ist ein wirkliches Pattern">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1680567921049" ID="ID_1270335704" MODIFIED="1680567930279" TEXT="Pipeline-Builder-Framework entwickelt">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#5b280f" CREATED="1535891101400" FOLDED="true" ID="ID_673846521" MODIFIED="1687456617298" TEXT="IterExplorer (monade)">
<icon BUILTIN="button_cancel"/>
<node COLOR="#435e98" CREATED="1535891108199" ID="ID_1302968576" MODIFIED="1687456510053" TEXT="erster Anlauf">
<icon BUILTIN="licq"/>
<node CREATED="1535891111919" ID="ID_1088778723" MODIFIED="1535891123604" TEXT="funktioniert">
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1535891114310" ID="ID_799781858" MODIFIED="1535891120950" TEXT="ist h&#xe4;&#xdf;lich">
<icon BUILTIN="smily_bad"/>
</node>
<node COLOR="#5b280f" CREATED="1535891125877" ID="ID_131112709" MODIFIED="1687456491997" TEXT="nur einmal verwendet">
<icon BUILTIN="button_cancel"/>
<node CREATED="1535891130164" ID="ID_1396398506" MODIFIED="1535891135892" TEXT="f&#xfc;r das Job-Planning">
<icon BUILTIN="info"/>
</node>
</node>
</node>
<node COLOR="#5b280f" CREATED="1512925334501" FOLDED="true" ID="ID_409327286" MODIFIED="1687456500552" TEXT="IterExplorer-Design">
<linktarget COLOR="#625975" DESTINATION="ID_409327286" ENDARROW="Default" ENDINCLINATION="-843;1771;" ID="Arrow_ID_86323098" SOURCE="ID_185594200" STARTARROW="None" STARTINCLINATION="-493;-1123;"/>
<icon BUILTIN="stop-sign"/>
<node CREATED="1512925397741" ID="ID_1352590559" MODIFIED="1518487921098" TEXT="Design">
<node CREATED="1512925342773" ID="ID_1304424851" MODIFIED="1518487921098" TEXT="unbefriedigend"/>
<node CREATED="1512925350379" ID="ID_21486020" MODIFIED="1518487921098" TEXT="zu offen und flexibel"/>
<node CREATED="1512925358954" ID="ID_27814827" MODIFIED="1518487921098" TEXT="keine leitende Koh&#xe4;renz"/>
<node CREATED="1512925366562" ID="ID_581707193" MODIFIED="1518487921098" TEXT="daher wie ein Gestr&#xfc;pp"/>
</node>
<node CREATED="1512925431577" ID="ID_1834933729" MODIFIED="1518487921098" TEXT="Iterator-Chain">
<node CREATED="1512925436224" ID="ID_573800195" MODIFIED="1518487921098" TEXT="nice to have">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      geh&#246;rt zu dem Themenkomplex &quot;itertools&quot;
    </p>
    <p>
      Python hat das auch, Java neuerdings auch
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1512925438992" ID="ID_1273839582" MODIFIED="1518487921098" TEXT="bisher nicht verwendet"/>
</node>
<node CREATED="1512925491857" ID="ID_652705156" MODIFIED="1518487921098" TEXT="Depth-fist / breadth fist">
<node CREATED="1512925501216" ID="ID_1197407538" MODIFIED="1518487921098" TEXT="Programmier-&#xdc;bung"/>
<node CREATED="1512925508183" ID="ID_1861334930" MODIFIED="1518487921098" TEXT="ohne innere Notwendigkeit"/>
<node CREATED="1512925519653" ID="ID_1558680477" MODIFIED="1518487921098" TEXT="nicht verwendet"/>
</node>
<node CREATED="1512925529484" ID="ID_1844773201" MODIFIED="1518487921098" TEXT="SelfIntegration">
<node CREATED="1512925547393" ID="ID_1866032394" MODIFIED="1518487921098" TEXT="Design-Sackgasse">
<icon BUILTIN="stop-sign"/>
<node CREATED="1512925769363" ID="ID_582578425" MODIFIED="1518487921098" TEXT="geht gegen die Natur der Dinge"/>
<node CREATED="1512925732065" ID="ID_1377165331" MODIFIED="1518487921098" TEXT="verwirrendes Extension-API">
<node CREATED="1512925805416" MODIFIED="1518487921098" TEXT="build(...).wrapping(...)"/>
<node CREATED="1512925817645" MODIFIED="1518487921098" TEXT="build(...).usingSequence(...)"/>
</node>
</node>
<node CREATED="1512925552137" ID="ID_43735106" MODIFIED="1518487921098" TEXT="wollte den Stack vermeiden">
<icon BUILTIN="smiley-oh"/>
<node CREATED="1512925568958" ID="ID_1805640819" MODIFIED="1518487921098" TEXT="was gar nicht geht"/>
<node CREATED="1512925574782" ID="ID_22338010" MODIFIED="1518487921098" TEXT="Idee Inline-stack">
<icon BUILTIN="idea"/>
<node CREATED="1512925593195" ID="ID_1333973816" MODIFIED="1518487921098" TEXT="das w&#xe4;re aber eine reine Komponente"/>
<node CREATED="1512925599402" ID="ID_551236508" MODIFIED="1518487921098" TEXT="Bauprinzip wie in UI-Coord">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...will sagen, es ist klar, wie man sowas machen kann.
    </p>
    <p>
      Seinerzeit war mir das auch klar, aber ich wollte es nicht gleich ausprogrammieren.
    </p>
    <p>
      Inzwischen kam dann das Thema UI-Coordinaten, und dort <i>habe</i>&#160;ich es ausprogrammiert,
    </p>
    <p>
      und zwar direkt in die Low-Level-Schicht integriert, was nicht schlecht ist,
    </p>
    <p>
      da eine Abstraktion hier sehr technisch werden w&#252;rde
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node COLOR="#5b280f" CREATED="1512925864774" ID="ID_1543264108" MODIFIED="1687456480773" TEXT="verwendet f&#xfc;r JobPlanning">
<arrowlink COLOR="#5379b5" DESTINATION="ID_181262071" ENDARROW="Default" ENDINCLINATION="-150;-386;" ID="Arrow_ID_1786254694" STARTARROW="Default" STARTINCLINATION="-1298;0;"/>
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#338800" CREATED="1512925959074" ID="ID_30857289" MODIFIED="1687456358119" TEXT="komplett abgel&#xf6;st durch IterTreeExplorer">
<arrowlink COLOR="#83dfc7" DESTINATION="ID_845080696" ENDARROW="Default" ENDINCLINATION="-1109;3887;" ID="Arrow_ID_1645152965" STARTARROW="None" STARTINCLINATION="2051;-176;"/>
<arrowlink COLOR="#2c9fa6" DESTINATION="ID_896127270" ENDARROW="Default" ENDINCLINATION="-1310;-138;" ID="Arrow_ID_1052952035" STARTARROW="None" STARTINCLINATION="-424;31;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1680568272530" ID="ID_265531291" LINK="https://issues.lumiera.org/ticket/1276" MODIFIED="1687456383425" TEXT="#1276: Wiederaufnahme des Themas im Rahmen von &#xbb;PlaybackVerticalSlice&#xab;">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1680568313565" ID="ID_1547861521" MODIFIED="1687456380339" TEXT="Ziel: stattdessen  das neue TreeExplorer-Design ausbauen">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1535891140563" ID="ID_1503014369" MODIFIED="1687456594305" TEXT="IterExplorer (pipeline)">
<icon BUILTIN="forward"/>
<node CREATED="1535891145922" ID="ID_1982906906" MODIFIED="1535891149925" TEXT="zweiter Anlauf">
<node CREATED="1535891150825" ID="ID_451523751" MODIFIED="1535891155914" TEXT="funktioniert">
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1535891156816" ID="ID_679300718" MODIFIED="1535891164631" TEXT="ist komplex">
<icon BUILTIN="smiley-neutral"/>
<node CREATED="1535939100410" ID="ID_1893557511" MODIFIED="1535939107373" TEXT="aber von einer Art, die mir gef&#xe4;llt"/>
<node CREATED="1535939111640" ID="ID_1649632412" MODIFIED="1535939115932" TEXT="war bisher gut wartbar">
<node COLOR="#435e98" CREATED="1537050257419" FOLDED="true" HGAP="27" ID="ID_1397772054" MODIFIED="1573229603386" TEXT="naja...." VSHIFT="5">
<arrowlink DESTINATION="ID_913930564" ENDARROW="Default" ENDINCLINATION="-286;-25;" ID="Arrow_ID_1572610374" STARTARROW="None" STARTINCLINATION="-132;45;"/>
<node COLOR="#435e98" CREATED="1680568048455" ID="ID_1704957291" MODIFIED="1680568076524" TEXT="Komplexit&#xe4;t der Typsignaturen">
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#338800" CREATED="1680568063106" ID="ID_1678633435" MODIFIED="1680568073558" TEXT="Framework erfolgreich &#xfc;berarbeitet">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1514328717684" ID="ID_137835978" MODIFIED="1695502642488" TEXT="neuer Anlauf IterExplorer II">
<arrowlink COLOR="#8ad3a5" DESTINATION="ID_845080696" ENDARROW="Default" ENDINCLINATION="-230;134;" ID="Arrow_ID_253437970" STARTARROW="None" STARTINCLINATION="-387;0;"/>
<linktarget COLOR="#27998e" DESTINATION="ID_137835978" ENDARROW="Default" ENDINCLINATION="-521;-801;" ID="Arrow_ID_1873000120" SOURCE="ID_1860662881" STARTARROW="None" STARTINCLINATION="-1866;98;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1514328733272" ID="ID_1367581404" MODIFIED="1514328740811" TEXT="monadisierter Pipeline-Builder">
<node CREATED="1535891193740" ID="ID_114091640" MODIFIED="1684278911509" TEXT="Itertool-Funktionalit&#xe4;t">
<linktarget COLOR="#afa9c1" DESTINATION="ID_114091640" ENDARROW="Default" ENDINCLINATION="-503;-426;" ID="Arrow_ID_956211493" SOURCE="ID_794436728" STARTARROW="None" STARTINCLINATION="262;18;"/>
<node CREATED="1535891222952" ID="ID_1544390501" MODIFIED="1535891230659" TEXT="&#xdc;berschneidung / Redundanz">
<node CREATED="1535891232214" ID="ID_1564035277" MODIFIED="1535891244617" TEXT="komplett andere Implementierung"/>
<node CREATED="1535891245533" ID="ID_1869540879" MODIFIED="1535891251247" TEXT="konzeptionell aber gleich"/>
</node>
<node CREATED="1535891265106" ID="ID_483764241" MODIFIED="1535891275533" TEXT="hier aber: Integration mit &quot;explore&quot;-Funktion"/>
</node>
</node>
<node CREATED="1514328741687" ID="ID_1056450433" MODIFIED="1514328755457" TEXT="expandChildren() auf dem Iterator-API ausl&#xf6;sbar"/>
<node CREATED="1514328757725" ID="ID_1835412332" MODIFIED="1514328766544" TEXT="auch &#xfc;ber Transformer und Abstraktionsbarrieren hinweg"/>
<node CREATED="1535892081117" ID="ID_931408275" MODIFIED="1535892109957" TEXT="wraped State-Core">
<node CREATED="1535892112560" ID="ID_1137060893" MODIFIED="1535892121547" TEXT="bewu&#xdf;t halboffen"/>
<node CREATED="1535892122487" ID="ID_1852433674" MODIFIED="1535892137985" TEXT="Kollaboration mit downstream intendiert"/>
<node CREATED="1535892146588" ID="ID_1173791220" MODIFIED="1535892158246" TEXT="Layerering als Konstruktions-Hilfsmittel"/>
</node>
<node COLOR="#338800" CREATED="1535892165753" ID="ID_463934766" MODIFIED="1535892395441" TEXT="konkret: expandable ChildIter bauen">
<arrowlink COLOR="#236375" DESTINATION="ID_596422747" ENDARROW="Default" ENDINCLINATION="-1080;23;" ID="Arrow_ID_1748772698" STARTARROW="None" STARTINCLINATION="-1002;-57;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1535893109211" ID="ID_1112499323" MODIFIED="1535893117935" TEXT="Probleme mit dem IterSource-Interface">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1536410175049" ID="ID_1439541143" MODIFIED="1536516072058" TEXT="Erg&#xe4;nzungen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1535894221015" FOLDED="true" ID="ID_977007729" MODIFIED="1573229640628" TEXT="Bug im Filter-Layer">
<icon BUILTIN="button_ok"/>
<node CREATED="1535894239308" ID="ID_1809452702" MODIFIED="1535894251655" TEXT="Reihenfolge des Parent-Aufrufes in expandChildren()"/>
<node CREATED="1535894252195" ID="ID_373085595" MODIFIED="1535894291490" TEXT="kommt mir komisch vor; pullFilter() sollte doch danach kommen"/>
<node CREATED="1535894301413" ID="ID_1630859517" MODIFIED="1535894376961" TEXT="sieht nach copy-n-paste aus">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...von der entsprechenden Methode im Transformer
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="smiley-oh"/>
</node>
<node CREATED="1535894292222" ID="ID_1328694952" MODIFIED="1535894370745" TEXT="vermutlich im Test &#xfc;bersehen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...hatte die Notwendigkeit hierf&#252;r seinerzeit w&#228;hrend der Tests entdeckt,
    </p>
    <p>
      und im Unit-Test nur f&#252;r die Kombination Transformer + Explorer abgedeckt....
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="ksmiletris"/>
</node>
<node COLOR="#338800" CREATED="1535894385009" ID="ID_1130325761" MODIFIED="1535898198283" TEXT="Testfall schreiben">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1535893707036" FOLDED="true" ID="ID_650057716" MODIFIED="1573229642317" TEXT="Aufgabe: Filter erweiterbar machen">
<linktarget COLOR="#62909b" DESTINATION="ID_650057716" ENDARROW="Default" ENDINCLINATION="99;93;" ID="Arrow_ID_1700598512" SOURCE="ID_257876647" STARTARROW="None" STARTINCLINATION="-240;-19;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1535893718194" ID="ID_177803317" MODIFIED="1535893743691" TEXT="analog zum Filter in den Itertools"/>
<node CREATED="1535893752174" ID="ID_27030007" MODIFIED="1535893777011" TEXT="ggfs diesen dort abl&#xf6;sen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      sofern l&#228;ngerfristig Itertools durch TreeExplorer abgel&#246;st werden k&#246;nnte
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#338800" CREATED="1535903530421" ID="ID_326687543" MODIFIED="1535932193036" TEXT="Aua">
<icon BUILTIN="smily_bad"/>
<node CREATED="1535903536820" ID="ID_34512098" MODIFIED="1535903541919" TEXT="das wird komplex..."/>
<node CREATED="1535903542556" ID="ID_945730027" MODIFIED="1535903551375" TEXT="der Filter-Layer ist hochgradig generisch"/>
<node CREATED="1535904105560" ID="ID_1683260823" MODIFIED="1535904127224" TEXT="mu&#xdf; auch das Chain-Argument durch die Funktor-Traits schleusen"/>
<node CREATED="1535904128524" ID="ID_1305515398" MODIFIED="1535904140074" TEXT="Code wird grausam">
<icon BUILTIN="smiley-angry"/>
<node CREATED="1535904143098" ID="ID_62668261" MODIFIED="1535904152669" TEXT="funktioniert, aber gewaltig aufgebl&#xe4;ht"/>
<node CREATED="1535904153353" ID="ID_1229789568" MODIFIED="1535904403272" TEXT="ganz nah am Segfault vorbei">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...und das h&#228;ngt an einem hauchd&#252;nnen Faden,
    </p>
    <p>
      und ist subtil bis zum geht nicht mehr....
    </p>
    <p>
      
    </p>
    <p>
      Wenn man das Lambda einfach per [=] schreibt, und das Feld this-&gt;predicate_ verwendet,
    </p>
    <p>
      dann wird this gecaptured (und das ist effektiv per Referenz). Wenn ich dann den
    </p>
    <p>
      konstruierten Funktor an this-&gt;predicate_ zuweise, haben wir eine Endlos-Rekursion.
    </p>
    <p>
      
    </p>
    <p>
      L&#246;sung: man mu&#223; im lokalen Frame eine Referenz auf this-&gt;predicate definieren und binden.
    </p>
    <p>
      Diese wird dann per Value gecaptured, was die gew&#252;nschte Kopie bewirkt.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1535904168943" ID="ID_1486081044" MODIFIED="1535904249188" TEXT="eine unn&#xf6;tige Kopie">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...mu&#223; den Chain-Funktor aus dem Template-Argument erzeugen,
    </p>
    <p>
      und ihn dann in die per-Value-Closure des erzeugten neuen Lambda binden (=Kopie).
    </p>
    <p>
      
    </p>
    <p>
      Erst ab C++17 kann man Lambda-Captures pre move machen
    </p>
    <p>
      (und auch daf&#252;r ist die Syntax grausam)
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1535904461720" ID="ID_1122890797" MODIFIED="1561827465910" TEXT="will ich das wirklich.....?">
<node CREATED="1535904470670" ID="ID_1319028134" MODIFIED="1535904516890" TEXT="nat&#xfc;rlich nicht">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...es soll blo&#223; einfach funktionieren!!!!!!!!!!!
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1535906366785" ID="ID_772195469" MODIFIED="1535906388442" TEXT="Komplexit&#xe4;t entsteht aus der Flexibilit&#xe4;t der Argumente">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1535904517824" ID="ID_495813123" MODIFIED="1535904857801" TEXT="stattdessen Itertools-Filter verwenden?">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      keine gute Idee.
    </p>
    <p>
      Dann verwenden wir im einen Funktor-Framework eine Filter-Komponente
    </p>
    <p>
      aus dem anderen Framework, obwohl es direkt hier auch eine Filter-Komponente g&#228;be.
    </p>
    <p>
      
    </p>
    <p>
      Au&#223;erdem habe ich immer noch die Hoffnung, irgendwann mal
    </p>
    <p>
      die Itertools komplett durch den TreeExplorer abl&#246;sen zu k&#246;nnen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_cancel"/>
</node>
</node>
<node COLOR="#338800" CREATED="1535906261464" ID="ID_792586244" MODIFIED="1535909947735" TEXT="Auswege">
<icon BUILTIN="idea"/>
<node COLOR="#338800" CREATED="1535906265911" ID="ID_949648101" MODIFIED="1561827465911" TEXT="speziellen Filter-Layer nur hierf&#xfc;r">
<icon BUILTIN="button_ok"/>
<node CREATED="1535906327782" ID="ID_1362040513" MODIFIED="1535906334769" TEXT="letztlich nur Code-Kosmetik"/>
<node CREATED="1535909106704" ID="ID_1965298489" MODIFIED="1535909115714" TEXT="w&#xfc;rde aber sehr speziellen Fall markieren"/>
<node CREATED="1535909145091" ID="ID_1036104765" MODIFIED="1535909185418">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Name: <b>mutableFilter</b>()
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#338800" CREATED="1535906283948" ID="ID_1882070577" MODIFIED="1561827465912" TEXT="Chain-Filter-Bau in HIlfsfunktion">
<icon BUILTIN="button_ok"/>
<node CREATED="1535906394646" ID="ID_1941257576" MODIFIED="1535906399057" TEXT="w&#xfc;nschenswert"/>
<node CREATED="1535906399621" ID="ID_1167561151" MODIFIED="1535906407632" TEXT="nicht klar, ob &#xfc;berhaupt m&#xf6;glich"/>
<node CREATED="1535909021163" ID="ID_1877231025" MODIFIED="1535909030226" TEXT="geschachtelte generische Lambdas verwenden">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1535909041497" ID="ID_1207755293" MODIFIED="1535909052069" TEXT="AUA&#xb3;">
<icon BUILTIN="ksmiletris"/>
<node CREATED="1535909192572" ID="ID_1654371024" MODIFIED="1535909197055" TEXT="aber es geht...."/>
<node COLOR="#338800" CREATED="1535909967725" ID="ID_163021784" MODIFIED="1535912743392" TEXT="im Debugger verifizieren!">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...sieht gut aus.
    </p>
    <p>
      
    </p>
    <p>
      Folgendes habe ich gesehen
    </p>
    <ul>
      <li>
        zu Beginn zeigt das eingebettete Funktor-Objekt auf eine Position auf dem Stack
      </li>
      <li>
        beim Aufrufen der andFilter()-Funktion werden diverse Funktoren kopiert,<br />wobei nacheinander die (zu erwartenden) Argumente als Quelle auftauchen<br />
      </li>
      <li>
        danach hat sich der Funktor ge&#228;ndert: er zeigt nun auf eine Position auf dem Heap<br />
      </li>
      <li>
        der bisherige Funktor wurde mit der Closure des zusammengesetzten Funktors kollabiert (hat gleiche Addresse)<br />
      </li>
      <li>
        der Chain-Funktor hat eine Closure bekommen, die ebenfalls Heap-alloziert ist.<br />das deutet darauf hin, da&#223; das capturen per copy funktioniert hat<br />
      </li>
      <li>
        Beim Aufruf steppen wir nacheinander erst in den kombinierten Funktor,<br />und von dort wie erwartet in die beiden Lambdas.
      </li>
      <li>
        <br />
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1535919506060" ID="ID_1859852045" MODIFIED="1561827465912" TEXT="heterogene Pr&#xe4;dikat-Typen">
<arrowlink COLOR="#616f95" DESTINATION="ID_1587572708" ENDARROW="Default" ENDINCLINATION="49;-142;" ID="Arrow_ID_346491515" STARTARROW="None" STARTINCLINATION="-143;0;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1535919540560" ID="ID_1538734134" MODIFIED="1535932049581" TEXT="geht nicht?">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1535919549942" ID="ID_790617987" MODIFIED="1535919754360" TEXT="das zu Beginn verwendete Filter-Pr&#xe4;dikat legt den Typ fest">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...f&#252;r das dort hineingereichte Funktor-Objekt wird der Argument-Accessor ausgew&#228;hlt (Metaprogrammierung).
    </p>
    <p>
      Er ist dann im Typ des Wrappers == _Traits::Functor codiert.
    </p>
    <p>
      
    </p>
    <p>
      Wir k&#246;nnen zwar den im Wrapper enthaltenen Funktor neu zuweisen (in gewissen Grenzen),
    </p>
    <p>
      aber er wird stets den zu Beginn gew&#228;hlten Argument-Accessor nehmen.
    </p>
    <p>
      Typischerweise wird dieser ja sogar beim Aufruf des getemplateteten Funtions-Operators geInlined
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#338800" CREATED="1535919835337" ID="ID_1492056572" MODIFIED="1536409243145" TEXT="Ausweg: doppelt wrappen">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1536367874016" ID="ID_109911994" MODIFIED="1536516037376" TEXT="Filter deaktivierbar machen">
<linktarget COLOR="#67ac9b" DESTINATION="ID_109911994" ENDARROW="Default" ENDINCLINATION="1326;0;" ID="Arrow_ID_1556921295" SOURCE="ID_649387933" STARTARROW="None" STARTINCLINATION="142;0;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1535899873112" ID="ID_81164806" MODIFIED="1535932139639" TEXT="Unit-Test (replizieren)">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1535913527837" ID="ID_756446305" MODIFIED="1535913542932" TEXT="anlegen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1535913531701" ID="ID_1872325076" MODIFIED="1535932138102" TEXT="andere F&#xe4;lle auch covern">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1536410408473" ID="ID_1812410133" MODIFIED="1536515975946" TEXT="Filter deaktivieren">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1536367899301" ID="ID_1128977501" MODIFIED="1561827465913" TEXT="Neuzuweisung kompatibler Filter">
<icon BUILTIN="button_ok"/>
<node CREATED="1536367916619" ID="ID_411753478" MODIFIED="1536367919774" TEXT="geht das?"/>
<node CREATED="1536367921474" ID="ID_849620368" MODIFIED="1536367938773" TEXT="nur Signatur-Typ auf MutableFilter ">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1536368287265" ID="ID_29049674" MODIFIED="1536368351977">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Problem: std::function <b>in</b>&#160;FilterPredicate
    </p>
  </body>
</html></richcontent>
<node CREATED="1536368354288" ID="ID_1161186805" MODIFIED="1536368384597" TEXT="mu&#xdf; die richtige &quot;Kategorie&quot; haben">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      entweder Val -&gt; bool oder Iter -&gt; bool
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="broken-line"/>
</node>
</node>
<node COLOR="#338800" CREATED="1536499475717" ID="ID_1987289240" MODIFIED="1536499534632" TEXT="Nach Refactoring TreeExplorer nun m&#xf6;glich">
<arrowlink COLOR="#5cb3a1" DESTINATION="ID_1315131204" ENDARROW="Default" ENDINCLINATION="691;0;" ID="Arrow_ID_86390894" STARTARROW="None" STARTINCLINATION="167;37;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1536713790340" ID="ID_1436344296" MODIFIED="1561827465914" TEXT="Explorer: rootCurrent()">
<icon BUILTIN="button_ok"/>
<node CREATED="1536713813792" ID="ID_255912594" MODIFIED="1536713903337" TEXT="Hilfsmittel f&#xfc;r den IterChainSearch">
<linktarget COLOR="#5c8eb4" DESTINATION="ID_255912594" ENDARROW="Default" ENDINCLINATION="1465;0;" ID="Arrow_ID_1700114612" SOURCE="ID_1097583555" STARTARROW="None" STARTINCLINATION="798;71;"/>
</node>
<node CREATED="1536713912051" ID="ID_1531296292" MODIFIED="1536714003659" TEXT="Verhalten">
<icon BUILTIN="info"/>
<node CREATED="1536713937303" ID="ID_1307568676" MODIFIED="1536713956169" TEXT="macht die aktuelle (Kind)-Sequenz zur Root-Sequenz"/>
<node CREATED="1536713956780" ID="ID_940104678" MODIFIED="1536713969199" TEXT="verwirft den gesamten Inhalt des bestehendn Stack"/>
<node CREATED="1536713969931" ID="ID_1439776917" MODIFIED="1536714013625" TEXT="verwirft damit auch die urspr&#xfc;ngliche Root-Sequenz"/>
</node>
</node>
<node COLOR="#338800" CREATED="1536958962984" ID="ID_686602920" MODIFIED="1561827465914" TEXT="custom Layer erm&#xf6;glichen">
<linktarget COLOR="#61afb3" DESTINATION="ID_686602920" ENDARROW="Default" ENDINCLINATION="-230;613;" ID="Arrow_ID_1710661685" SOURCE="ID_519507996" STARTARROW="None" STARTINCLINATION="1241;-1305;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1536958972703" ID="ID_661166644" MODIFIED="1537050781115" TEXT="generische Builder-Funktion">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...ist einfach und offensichtlich;
    </p>
    <p>
      ohnehin laufen schon ziemlich alle konkreten Layer-Builder nach einem Schema-F
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1536958979046" ID="ID_700334374" MODIFIED="1537050782627" TEXT="Typ per Template-Parameter &#xfc;bergeben">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1536958994212" ID="ID_1735239890" MODIFIED="1537050791509" TEXT="flexible zus&#xe4;tzliche Argumente">
<icon BUILTIN="stop-sign"/>
</node>
<node COLOR="#338800" CREATED="1536973178765" ID="ID_1098421095" MODIFIED="1537052565699" TEXT="Unit-Test">
<icon BUILTIN="button_ok"/>
<node CREATED="1536959023376" ID="ID_928142688" MODIFIED="1536973192247" TEXT="Test implizit durch IterChainSearch">
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#338800" CREATED="1536973293197" ID="ID_858941900" MODIFIED="1537052564048" TEXT="eigens abdecken">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1689102663805" ID="ID_1911278306" MODIFIED="1689182022572" TEXT="Ausbau der Teminal-Ausdr&#xfc;cke">
<icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1689102690854" FOLDED="true" ID="ID_590768203" MODIFIED="1689182022574" TEXT="Terminal: effuse()">
<icon BUILTIN="button_ok"/>
<node CREATED="1689102718230" ID="ID_369108561" MODIFIED="1689182022601" TEXT="&#xbb;materialisieren&#xab; in einen STL-kompatiblen Container">
<icon BUILTIN="info"/>
</node>
<node CREATED="1695502747331" ID="ID_649346348" MODIFIED="1695502753165" TEXT="default: std::vector"/>
<node COLOR="#338800" CREATED="1695502784173" ID="ID_784847250" MODIFIED="1695502793772" TEXT="Element-Typ deduzieren">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1689102794716" ID="ID_1945080720" MODIFIED="1689182022810" TEXT="IterExplorer_test::verify_effuse()">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1695512295454" FOLDED="true" ID="ID_1064989908" MODIFIED="1695514089338" TEXT="Terminal: foreach()">
<icon BUILTIN="button_ok"/>
<node CREATED="1695512301615" ID="ID_651869472" MODIFIED="1695512313601" TEXT="nimmt einen Functor mit Seiteneffekt"/>
<node CREATED="1695512314557" ID="ID_1916788515" MODIFIED="1695512337373" TEXT="iteriert die Pipeline bis zur Ersch&#xf6;pfung"/>
<node CREATED="1695512338060" ID="ID_1549316849" MODIFIED="1695512340924" TEXT="liefert void"/>
</node>
<node COLOR="#338800" CREATED="1695502462736" FOLDED="true" ID="ID_450087248" MODIFIED="1695514087547" TEXT="Terminal: reduce()">
<linktarget COLOR="#6a889a" DESTINATION="ID_450087248" ENDARROW="Default" ENDINCLINATION="-1969;393;" ID="Arrow_ID_1649492875" SOURCE="ID_114527057" STARTARROW="None" STARTINCLINATION="632;33;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1695502911172" ID="ID_1225313847" MODIFIED="1695502915088" TEXT="API">
<node CREATED="1695502916012" ID="ID_225504492" MODIFIED="1695502926390" TEXT="resultSum() als einfache Abk&#xfc;rzung"/>
<node CREATED="1695502927449" ID="ID_741831244" MODIFIED="1695502948076" TEXT="Varianten mit Accessor-Funktion erm&#xf6;glichen"/>
</node>
<node COLOR="#435e98" CREATED="1695512137059" ID="ID_1411934639" MODIFIED="1695512149268" TEXT="Problem: Typ des Akkumulators">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1695512151393" ID="ID_1899092315" MODIFIED="1695512181985" TEXT="sum = junctor(sum, val)"/>
<node CREATED="1695512186437" ID="ID_1047872738" MODIFIED="1695512196559" TEXT="im allgemeinen k&#xf6;nnen sum und val verschiedenen Typ haben"/>
<node COLOR="#338800" CREATED="1695512197195" ID="ID_630687456" MODIFIED="1695512262021" TEXT="L&#xf6;sung: zur&#xfc;ckf&#xfc;hren auf seedVal-Parameter">
<icon BUILTIN="button_ok"/>
<node CREATED="1695512221932" ID="ID_1579992204" MODIFIED="1695512228211" TEXT="im allgemeinen explizit gegeben"/>
<node CREATED="1695512228679" ID="ID_1220995561" MODIFIED="1695512246300" TEXT="falls weggelassen: R&#xfc;ckgabetyp der Funktion verwenden"/>
<node COLOR="#338800" CREATED="1695512251076" ID="ID_1853093416" MODIFIED="1695512258892" TEXT="diesen per Trait extrahiert">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1695512266898" ID="ID_1659344661" MODIFIED="1695512463761" TEXT="schichtweise dekomponiert">
<icon BUILTIN="button_ok"/>
<node CREATED="1695512279781" ID="ID_763548095" MODIFIED="1695512293394" TEXT="Basis-Impl: das forech-Terminal"/>
<node CREATED="1695512360696" ID="ID_635415273" MODIFIED="1695512372768" TEXT="generische reduce-Operation"/>
<node CREATED="1695512373500" ID="ID_1555289108" MODIFIED="1695512384941" TEXT="resultSum als Abk&#xfc;rzung"/>
<node CREATED="1695512387896" ID="ID_1946298152" MODIFIED="1695512400300" TEXT="partielle Argumente">
<node CREATED="1695512401528" ID="ID_705361793" MODIFIED="1695512406113" TEXT="junktor"/>
<node CREATED="1695512406696" ID="ID_542869334" MODIFIED="1695512415205" TEXT="Akkumulator-seedVal"/>
<node COLOR="#5b280f" CREATED="1695512415630" ID="ID_477717353" MODIFIED="1695512425341" TEXT="sonst keine anderen F&#xe4;lle unterst&#xfc;tzen">
<icon BUILTIN="button_cancel"/>
<node CREATED="1695512428093" ID="ID_1248855126" MODIFIED="1695512434861" TEXT="da w&#xe4;ren diverse Mischf&#xe4;lle denkbar"/>
<node CREATED="1695512435364" ID="ID_1420288500" MODIFIED="1695512459125" TEXT="ich bef&#xfc;rchte aber Zweideutigkeiten in der Overload-Resolution">
<icon BUILTIN="stop-sign"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1695512469713" ID="ID_216858780" MODIFIED="1695512484630" TEXT="IterExplorer_test::verify_reduce()">
<icon BUILTIN="button_ok"/>
<node CREATED="1695512486237" ID="ID_929285288" MODIFIED="1695512494080" TEXT="einfacher Fall: Summe von Zahlen"/>
<node CREATED="1695512494652" ID="ID_762339385" MODIFIED="1695513993449" TEXT="komplexter Fall: expliziter Junktor, Accessor und seedVal">
<node CREATED="1695513997876" ID="ID_892793368" MODIFIED="1695514007193" TEXT="mach&apos;s hier besonders komplex"/>
<node CREATED="1695514007715" ID="ID_576675006" MODIFIED="1695514013022" TEXT="mehrfache Typkonvertierungen"/>
<node CREATED="1695514013490" ID="ID_1857974245" MODIFIED="1695514066210">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      junktor ist <i>asymetrisch:</i>&#160;<font face="Monospaced" color="#1f1b70">(string, float) &#10236; string</font>
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1695512506044" ID="ID_1751599897" MODIFIED="1695512531731" TEXT="halbkomplex: nur Accessor (und std::plus als default-Junktor)"/>
</node>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1536409170928" ID="ID_1850744645" MODIFIED="1536515953937" TEXT="Design-Probleme">
<icon BUILTIN="go"/>
<node COLOR="#338800" CREATED="1535919506060" FOLDED="true" ID="ID_1587572708" MODIFIED="1573229614688" TEXT="heterogene Pr&#xe4;dikat-Typen">
<linktarget COLOR="#616f95" DESTINATION="ID_1587572708" ENDARROW="Default" ENDINCLINATION="49;-142;" ID="Arrow_ID_346491515" SOURCE="ID_1859852045" STARTARROW="None" STARTINCLINATION="-143;0;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1535919549942" ID="ID_270773242" MODIFIED="1536409271272" TEXT="das zu Beginn verwendete Filter-Pr&#xe4;dikat legt den Typ fest">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...f&#252;r das dort hineingereichte Funktor-Objekt wird der Argument-Accessor ausgew&#228;hlt (Metaprogrammierung).
    </p>
    <p>
      Er ist dann im Typ des Wrappers == _Traits::Functor codiert.
    </p>
    <p>
      
    </p>
    <p>
      Wir k&#246;nnen zwar den im Wrapper enthaltenen Funktor neu zuweisen (in gewissen Grenzen),
    </p>
    <p>
      aber er wird stets den zu Beginn gew&#228;hlten Argument-Accessor nehmen.
    </p>
    <p>
      Typischerweise wird dieser ja sogar beim Aufruf des getemplateteten Funtions-Operators geInlined
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#338800" CREATED="1535919835337" ID="ID_619686338" MODIFIED="1561827465916" TEXT="1.L&#xf6;sung: doppelt wrappen?">
<icon BUILTIN="button_ok"/>
<node CREATED="1535923167297" ID="ID_1635196754" MODIFIED="1535923219590" TEXT="Basis-Filter sieht unspezifische Form des Pr&#xe4;dikates"/>
<node CREATED="1535923237336" ID="ID_508718189" MODIFIED="1535923251434" TEXT="im Funktor steckt eingewickelt eine spezifische Form"/>
<node CREATED="1535932069618" ID="ID_856161473" MODIFIED="1535932128786" TEXT="kein wirklicher overhead">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      der Aufruf vom &#228;u&#223;eren in den inneren Wrapper ist 1:1 und sollte vom Compiler wegoptimiert werden
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#338800" CREATED="1535924949587" ID="ID_835090820" MODIFIED="1535932018158" TEXT="L&#xf6;sung">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1535924955458" ID="ID_1924886650" MODIFIED="1535927205707" TEXT="Typ des gewrappten Funktors konstruieren">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1535924963017" ID="ID_1255665831" MODIFIED="1535927208519" TEXT="diesen schon in die Instanz der Basisklasse einflie&#xdf;en lassen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1535924983038" ID="ID_343931650" MODIFIED="1535927210570" TEXT="Konstruktor eigens definieren">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1535924991781" ID="ID_1047870457" MODIFIED="1535927212273" TEXT="inline wrappen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1535925016969" ID="ID_797104795" MODIFIED="1535927239938" TEXT="der Rest m&#xfc;&#xdf;te von selber funktionieren...">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1536514257510" ID="ID_1708992184" MODIFIED="1561827465916" TEXT="2.L&#xf6;sung: type erasure auf dem Funktor">
<icon BUILTIN="button_ok"/>
<node CREATED="1536514274780" ID="ID_767166560" MODIFIED="1536514286353" TEXT="l&#xe4;uft auch auf doppelt wrappen hinaus">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#435e98" CREATED="1536514288618" ID="ID_821501153" MODIFIED="1536514362703" TEXT="...nur machen wir das im umgebauten Desgin ohnehin immer">
<arrowlink COLOR="#3163b8" DESTINATION="ID_389572303" ENDARROW="Default" ENDINCLINATION="1208;0;" ID="Arrow_ID_1470957358" STARTARROW="None" STARTINCLINATION="627;32;"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1536409302285" FOLDED="true" ID="ID_913930564" MODIFIED="1573229616333" TEXT="extrem komplexe Typen">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_913930564" ENDARROW="Default" ENDINCLINATION="-286;-25;" ID="Arrow_ID_1572610374" SOURCE="ID_1397772054" STARTARROW="None" STARTINCLINATION="-132;45;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1536409316172" ID="ID_1468538186" MODIFIED="1536409340127" TEXT="Call-Traces sind nahezu unlesbar">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...ich verbrenne Stunden beim Debuggen von neuem Code
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="stop-sign"/>
</node>
<node CREATED="1536409470623" ID="ID_862991864" MODIFIED="1536409494631" TEXT="Ansatzpunkte">
<node CREATED="1536409438003" ID="ID_254117479" MODIFIED="1536409449286" TEXT="erhebliche Redundanzen in den Typen"/>
<node CREATED="1536409503106" ID="ID_377815860" MODIFIED="1536409513965" TEXT="konkrete Lambdas in der Typsignatur"/>
</node>
<node CREATED="1536409720285" ID="ID_610904065" MODIFIED="1561827466009" TEXT="Untersuchung">
<icon BUILTIN="info"/>
<node CREATED="1536409726421" ID="ID_1705785900" MODIFIED="1536409738318" TEXT="welche Typen werden wirklich ben&#xf6;tigt">
<icon BUILTIN="help"/>
<node CREATED="1536409761248" ID="ID_753549743" MODIFIED="1536409843345" TEXT="Quelle == Basis-Typ"/>
<node CREATED="1536409788637" ID="ID_87247261" MODIFIED="1536409835506" TEXT="bei Transofmation: neuer value_type"/>
</node>
<node CREATED="1536420551954" ID="ID_1265946119" MODIFIED="1536420561095" TEXT="Rolle der Traits">
<node CREATED="1536420562706" ID="ID_1510273577" MODIFIED="1536420573085" TEXT="Baumuster erkennen">
<node CREATED="1536420576968" ID="ID_1438017036" MODIFIED="1536420618407" TEXT="monadisch: res(val)"/>
<node CREATED="1536420581231" ID="ID_790634219" MODIFIED="1536420608360" TEXT="imperativ: res(SRC&amp;)"/>
</node>
<node CREATED="1536420632457" ID="ID_1027876524" MODIFIED="1536420638164" TEXT="Signatur abnehmen"/>
<node CREATED="1536420639016" ID="ID_221776251" MODIFIED="1536420654441" TEXT="Funktor(Holder)-Typ konstruieren"/>
<node CREATED="1536420659869" ID="ID_176968684" MODIFIED="1536420669838" TEXT="Resultat">
<icon BUILTIN="idea"/>
<node CREATED="1536420671212" ID="ID_1077375672" MODIFIED="1536420678038" TEXT="Funktor(Holder)-Typ"/>
<node CREATED="1536420678842" ID="ID_1524886712" MODIFIED="1536420681830" TEXT="Ergebnis-Typ"/>
</node>
</node>
<node CREATED="1536420803778" ID="ID_1315131204" MODIFIED="1536499525208" TEXT="Funktions-Signatur verbergen">
<linktarget COLOR="#5cb3a1" DESTINATION="ID_1315131204" ENDARROW="Default" ENDINCLINATION="691;0;" ID="Arrow_ID_86390894" SOURCE="ID_1987289240" STARTARROW="None" STARTINCLINATION="167;37;"/>
<node CREATED="1536420811265" ID="ID_1167994865" MODIFIED="1536420823683" TEXT="reduzieren auf res(SRC)"/>
<node CREATED="1536420824983" ID="ID_784540518" MODIFIED="1536420836185" TEXT="konkrete Funktion in Adapter setzen"/>
<node CREATED="1536420932944" ID="ID_512498364" MODIFIED="1536420940219" TEXT="ArgAccessor beim Aufruf">
<node CREATED="1536420941519" ID="ID_1927165900" MODIFIED="1536420945112" TEXT="kann wegfallen">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1536420945998" ID="ID_582317324" MODIFIED="1536420989876" TEXT="trotzdem notwendig">
<icon BUILTIN="help"/>
<node CREATED="1536420950054" ID="ID_1462776992" MODIFIED="1536420952593" TEXT="wegen Expander">
<node CREATED="1536421001935" ID="ID_1416192275" MODIFIED="1536421016769" TEXT="unterschiedliche Iter-Typen m&#xf6;glich"/>
<node CREATED="1536421023732" ID="ID_293881968" MODIFIED="1536421035374" TEXT="in beiden Baumuster-F&#xe4;llen"/>
</node>
<node CREATED="1536421204268" ID="ID_1225988621" MODIFIED="1536421235479">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Konsequenz: brauche <b>Template</b>&#160;Funktions-Operator
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1536499557658" ID="ID_1939855291" MODIFIED="1536499572569" TEXT="daf&#xfc;r verschwindet konkreter Funktor-Typ vom Template">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1536441211468" HGAP="84" ID="ID_435661366" MODIFIED="1536515901080" TEXT="L&#xf6;sungs-Idee" VSHIFT="15">
<icon BUILTIN="idea"/>
<node CREATED="1536441217427" ID="ID_1508660342" MODIFIED="1536441270931" TEXT="die Signatur im Builder konstruieren. Traits nur noch auf Signatur abst&#xfc;tzen">
<icon BUILTIN="full-1"/>
</node>
<node CREATED="1536441337478" ID="ID_1343620192" MODIFIED="1536441363753" TEXT="Traits bieten nun einen Funktor-Konstruktur">
<icon BUILTIN="full-2"/>
<node CREATED="1536441426912" ID="ID_1985454424" MODIFIED="1536441520374">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      der Funktor f&#252;r den Expander wird <i>explizit als Sonderfall</i>&#160; aufgefa&#223;t
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      das <i>eigentliche Problem </i>mit der bestehenden L&#246;sung ist,
    </p>
    <p>
      da&#223; ich ausgerechnet mit diesem Sonderfall angefangen habe.
    </p>
    <p>
      Daher ist jetzt das gesamte Design &quot;anders herum&quot;
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1536441367354" ID="ID_1778093460" MODIFIED="1536441424596" TEXT="welcher eine gegebene Funktion in eine vorgegebene function&lt;SIG&gt; einpasst"/>
</node>
</node>
<node COLOR="#338800" CREATED="1536451222025" FOLDED="true" HGAP="9" ID="ID_389572303" MODIFIED="1573229603386" TEXT="Umbau" VSHIFT="5">
<linktarget COLOR="#3163b8" DESTINATION="ID_389572303" ENDARROW="Default" ENDINCLINATION="1208;0;" ID="Arrow_ID_1470957358" SOURCE="ID_821501153" STARTARROW="None" STARTINCLINATION="627;32;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1536451240308" ID="ID_241157222" MODIFIED="1536451273762" TEXT="den SRC-Parameter optional machen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1536451256034" ID="ID_645889218" MODIFIED="1561827466009" TEXT="FunTraits sind idempotent">
<icon BUILTIN="button_ok"/>
<icon BUILTIN="ksmiletris"/>
<node CREATED="1536451303308" ID="ID_1343290323" MODIFIED="1536451313142" TEXT="man kann sie mit dem Funktor aufrufen -&gt; Sig"/>
<node CREATED="1536451313778" ID="ID_439029617" MODIFIED="1536451336475" TEXT="man kann sie mit Sig aufrufen -&gt; Arg, Ret"/>
</node>
<node COLOR="#338800" CREATED="1536451345998" ID="ID_1853688774" MODIFIED="1561827466010" TEXT="Funktor-Konstruktor-Funktion">
<icon BUILTIN="button_ok"/>
<node CREATED="1536451365731" ID="ID_552359289" MODIFIED="1536451394878" TEXT="f&#xfc;r Aufruf aus dem Konstruktor-Kontext">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...wo der volle Typ des Funktors FUN bekannt ist
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1536451415725" ID="ID_1712691133" MODIFIED="1536451426247" TEXT="Bekommt SRC-Iterator als Template-Param"/>
<node CREATED="1536451430508" ID="ID_224998497" MODIFIED="1536451471881" TEXT="wirft eine std::function&lt;Ret(SRC&amp;)&gt; ab"/>
<node CREATED="1536451473013" ID="ID_1179844665" MODIFIED="1536451543886" TEXT="in die der eigentliche Funktor geeignet adaptiert ist">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...und in dem besonders wichtigen Fall,
    </p>
    <p>
      in dem der Funktor direkt den SRC-Iterator akzeptiert,
    </p>
    <p>
      wird er ohne Weiteres durchgereicht.
    </p>
    <p>
      In dem Fall dann <b>keine</b>&#160;doppelte Verpackung mehr!
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#338800" CREATED="1536453317787" ID="ID_975974776" MODIFIED="1536514227734" TEXT="integrieren in...">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1536453326978" ID="ID_1071395763" MODIFIED="1561827466010" TEXT="Transformer">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1536455906647" ID="ID_603515158" MODIFIED="1536455919470" TEXT="im Debugger beobachtet">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1536455920701" ID="ID_1992285034" MODIFIED="1536455938637" TEXT="&#xe4;u&#xdf;erer Funktor liegt im Heap">
<icon BUILTIN="smily_bad"/>
</node>
<node CREATED="1536455947209" ID="ID_1054869208" MODIFIED="1536455959131" TEXT="innerer Funktor ist aber direkt dort eingebettet"/>
</node>
<node COLOR="#338800" CREATED="1536453368676" ID="ID_1560078731" MODIFIED="1536499292336" TEXT="Filter">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1536453373605" ID="ID_1544724438" MODIFIED="1536499295024" TEXT="MutableFilter">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1536453408359" ID="ID_63715215" MODIFIED="1561827466014" TEXT="Anpassen an Expander">
<icon BUILTIN="button_ok"/>
<node CREATED="1536507478977" ID="ID_1869401041" MODIFIED="1536508603516" TEXT="zwei Alternativen">
<icon BUILTIN="info"/>
<node CREATED="1536507484384" ID="ID_1235979491" MODIFIED="1536507500681" TEXT="wie bisher">
<node CREATED="1536507602416" ID="ID_42128364" MODIFIED="1536508634353" TEXT="konkreter Funktor Typ-Parameter">
<icon BUILTIN="smily_bad"/>
</node>
<node CREATED="1536507659208" FOLDED="true" ID="ID_35307754" MODIFIED="1561827483838" TEXT="Adapter im konkreten Aufruf">
<icon BUILTIN="ksmiletris"/>
<node CREATED="1536507751800" ID="ID_941404287" MODIFIED="1536507757104" TEXT="in expandChildren()"/>
<node CREATED="1536507757860" ID="ID_133943734" MODIFIED="1536507768814" TEXT="jeweils beide Varianten instantiiert"/>
</node>
<node CREATED="1536507818274" ID="ID_1978344432" MODIFIED="1536508645416" TEXT="Adapter-Lambda ruft (inneren) Basis-Funktor">
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node CREATED="1536507882434" ID="ID_216951915" MODIFIED="1536507892221" TEXT="type erasure">
<node CREATED="1536507918965" FOLDED="true" ID="ID_1992478190" MODIFIED="1561827483838" TEXT="expanded Iter als 2.Typ-Parameter">
<icon BUILTIN="smiley-neutral"/>
<node CREATED="1536507954841" ID="ID_281799195" MODIFIED="1536507969106" TEXT="weil wir ihn speichern m&#xfc;ssen"/>
<node CREATED="1536507960432" ID="ID_164121163" MODIFIED="1536507962403" TEXT="im Stack"/>
</node>
<node CREATED="1536508021816" FOLDED="true" ID="ID_1317784150" MODIFIED="1561827483838" TEXT="m&#xfc;ssen zwei Funktoren speichern">
<icon BUILTIN="smily_bad"/>
<node CREATED="1536508097204" ID="ID_1486255600" MODIFIED="1536508101760" TEXT="unvermeidbar, egal wo"/>
<node CREATED="1536508116330" ID="ID_156138966" MODIFIED="1536508135549">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      da sich die Iteratoren <i>wirklich</i>&#160;unterscheiden k&#246;nnen d&#252;rfen
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1536508169610" ID="ID_1935713564" MODIFIED="1536508703334" TEXT="beide Funktoren direkt in expandChildren() verwendet">
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1536508188208" FOLDED="true" ID="ID_220313082" MODIFIED="1561827483838" TEXT="&#xe4;u&#xdf;erer Adapter-Funktor ruft inneren Basis-Funktor">
<icon BUILTIN="smily_bad"/>
<node CREATED="1536508254591" ID="ID_1794037057" MODIFIED="1536508268217" TEXT="mehr Overhead wie alte L&#xf6;sung"/>
<node CREATED="1536508268765" ID="ID_1221492112" MODIFIED="1536508288165" TEXT="aber genauso viel wie f&#xfc;r die anderen F&#xe4;lle (neue L&#xf6;sung)"/>
<node CREATED="1536508292026" ID="ID_775504670" MODIFIED="1536508307124" TEXT="verwendet gleichen Code, Funktor-struct f&#xe4;llt weg"/>
</node>
</node>
</node>
<node CREATED="1536508310935" ID="ID_838394264" MODIFIED="1536508324120" TEXT="Entscheidung: type erasure">
<icon BUILTIN="forward"/>
<node CREATED="1536508326877" ID="ID_206041639" MODIFIED="1536508777424" TEXT="die gesamte neue L&#xf6;sung ist etwas aufwendiger zur Laufzeit">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...wobei der konkrete Overhead noch nicht wirklich klar ist;
    </p>
    <p>
      h&#228;ngt davon ab, wie geschickt der Optimizer ist, und was man konkret als Funktoren angibt.
    </p>
    <p>
      
    </p>
    <p>
      Vermutlich haben wir hier
    </p>
    <ul>
      <li>
        zwingend eine Indirektion durch einen Funktions-Pointer (weil eine Type Erasure stattfindet)
      </li>
      <li>
        m&#246;glicherweise eine zus&#228;tzliche Heap-Allocation (es sei denn, der Optimizer ist wirklich clever)
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="down"/>
</node>
<node CREATED="1536508343419" ID="ID_1905482399" MODIFIED="1536508782549" TEXT="und hat daf&#xfc;r einfacheren Code und klarere Template-Argumente">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      und <b>das</b>&#160;ist das Argument, das sticht
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="up"/>
</node>
<node CREATED="1536508376894" ID="ID_1216206461" MODIFIED="1536508787136" TEXT="Erhalten der alten L&#xf6;sung w&#xfc;rde zwei redundante Code-Pfade erfordern">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...will sagen, wenn schon eine neue L&#246;sung, dann von A bis Z
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="up"/>
</node>
</node>
<node COLOR="#338800" CREATED="1536514206125" HGAP="-18" ID="ID_1018008959" MODIFIED="1536514219722" TEXT="Implementierung umschreiben" VSHIFT="13">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1536453419141" ID="ID_564310637" MODIFIED="1561827466015" TEXT="vereinfachen">
<icon BUILTIN="button_ok"/>
<node CREATED="1536515844176" ID="ID_1550470066" MODIFIED="1536515856523" TEXT="nested Functor f&#xe4;llt weg"/>
<node CREATED="1536515857230" ID="ID_1234982362" MODIFIED="1536515868816" TEXT="zugeh&#xf6;rige Builder fallen weg"/>
<node CREATED="1536515869405" ID="ID_1548641638" MODIFIED="1536515881255" TEXT="alle darauf aufbauenden Typen sind &#xfc;berfl&#xfc;ssig"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1686757225113" FOLDED="true" ID="ID_1735448615" MODIFIED="1686757642923" TEXT="Koordination Quell-Pipeline bei Expansion">
<icon BUILTIN="button_ok"/>
<node CREATED="1686757298364" ID="ID_21721602" MODIFIED="1686757336765" TEXT="relevant, da explizit die Quell-Pipeline / &#xbb;StateCore&#xab; sichtbar bleibt">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1686757343809" ID="ID_1434845387" MODIFIED="1686757369648" TEXT="Symptome">
<icon BUILTIN="info"/>
<node CREATED="1686757371055" ID="ID_1827960339" MODIFIED="1686757384974" TEXT="expandChildren schaltet auch sofort die Basis-Pipeline weiter"/>
<node CREATED="1686757385767" ID="ID_755880918" MODIFIED="1686757420451" TEXT="wenn die Kinder verbraucht sind, wird die bereits weitergeschaltete Basis-Pipeline sichtbar"/>
<node COLOR="#435e98" CREATED="1686757428518" ID="ID_1278230520" MODIFIED="1686757502868" TEXT="konkretes Beispiel">
<icon BUILTIN="forward"/>
<node CREATED="1686757433466" ID="ID_526100016" MODIFIED="1686757438562" TEXT="Frame-Dispatcher-Pipeline"/>
<node CREATED="1686757485358" ID="ID_390992774" MODIFIED="1686757494673" TEXT="JobPlanningSetup_test::exploreJobTickets()"/>
<node CREATED="1686708460080" ID="ID_1791894372" MODIFIED="1686708540153">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <font color="#801111" face="Monospaced" size="2">FAIL___expectation___________ </font>
    </p>
    <p>
      <font color="#801111" face="Monospaced" size="2">expect:J(11|200ms)-J(22|200ms)-J(11|240ms)-J(22|240ms)-J(11|280ms)-J(22|280ms) </font>
    </p>
    <p>
      <font color="#801111" face="Monospaced" size="2">actual:J(11|200ms)-J(22|</font><font color="#ff0000" face="Monospaced" size="2">240</font><font color="#801111" face="Monospaced" size="2">ms)-J(11|240ms)-J(22|</font><font color="#ff0000" face="Monospaced" size="2">280</font><font color="#801111" face="Monospaced" size="2">ms)-J(11|280ms)-J(22|</font><font color="#ff0000" face="Monospaced" size="2">320</font><font color="#801111" face="Monospaced" size="2">ms) </font>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#4343af" CREATED="1686749596410" ID="ID_660032494" MODIFIED="1686757331988">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p style="text-align: center">
      L&#246;sung: Quelle erst weiter iterieren,
    </p>
    <p style="text-align: center">
      wenn wirklich notwendig
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#4a85b5" DESTINATION="ID_660032494" ENDARROW="Default" ENDINCLINATION="-821;104;" ID="Arrow_ID_1758558464" SOURCE="ID_1861299504" STARTARROW="None" STARTINCLINATION="956;47;"/>
<icon BUILTIN="idea"/>
<node COLOR="#338800" CREATED="1686749659842" ID="ID_128221783" MODIFIED="1686756787780" TEXT="Ansatz: incrementCurrent() &#x27f6; verschieben in dropExhaustedChildren()">
<icon BUILTIN="button_ok"/>
<node CREATED="1686749721562" ID="ID_804693591" MODIFIED="1686749744086">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Bedeutung der <b>Invariante</b>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
<node CREATED="1686749871599" ID="ID_810008134" MODIFIED="1686749946830" TEXT="wenn &#xfc;berhaupt entfaltet wurde, liegt auch ein KInd bereit"/>
<node CREATED="1686749949462" ID="ID_419936745" MODIFIED="1686749970031" TEXT="man k&#xf6;nnte auch sagen: Kind-Iteration hat Vorrang bis zur Ersch&#xf6;pfung"/>
<node CREATED="1686749996449" ID="ID_923043359" MODIFIED="1686750064046">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <u>technisch</u>:
    </p>
    <ul>
      <li>
        entweder Expansions-Stack ist leer
      </li>
      <li>
        oder der oberste Iterator auf dem Stack ist nichtleer
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="forward"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1686750400101" ID="ID_1494367031" MODIFIED="1686751896580" TEXT="wozu dient(e) das vorauseilende Inkrementieren des Vorg&#xe4;ngers?">
<font NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="help"/>
<node CREATED="1686750461874" ID="ID_1920000064" MODIFIED="1686750491477" TEXT="um das expandierte Quell-Element sofort zu verwerfen"/>
<node CREATED="1686751833197" ID="ID_1444579002" MODIFIED="1686751857463" TEXT="damit auch: stets einen klaren Status haben"/>
<node CREATED="1686751901767" ID="ID_754804911" MODIFIED="1686751928448" TEXT="(naiv) zus&#xe4;tzliche Status-Variable vermeiden"/>
</node>
<node COLOR="#435e98" CREATED="1686751932235" ID="ID_1269020997" MODIFIED="1686757570575" TEXT="Alternative: auf den operationalen Status verlassen">
<icon BUILTIN="idea"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1686751984221" ID="ID_1676806677" MODIFIED="1686752536819" TEXT="das ist nicht sch&#xf6;n aber hier vertretbar">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Und zwar wegen der Objektorientierung: die gesamte Logik ist verkapselt, und nur wenige Operationen sind f&#252;r abgeleitete Klassen zug&#228;nglich; im Besonderen ist incrementCurrent() private und das ist der einzige Weg um an die Iteration des Quell-Iterators zu kommen, aber genau dort wird auch dropExhaustedChildren aufgerufen()
    </p>
  </body>
</html></richcontent>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1686752539218" ID="ID_737156085" MODIFIED="1686752560042" TEXT="die Invariante wird in jeder Operation wieder hergestellt"/>
<node CREATED="1686752561157" ID="ID_1590943755" MODIFIED="1686752573856" TEXT="das bedingt das Aufruffen der Aufr&#xe4;um-Aktion"/>
<node CREATED="1686752575419" ID="ID_1015024147" MODIFIED="1686752652969">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      insofern kann das Verwerfen des Quell-Objekts verz&#246;gert werden,
    </p>
    <p>
      solange bis die daraus resultierenden Kinder aufgebraucht sind;
    </p>
    <p>
      da wir ohnehin einen Stack ben&#246;tigen, l&#228;&#223;t sich dieser Status
    </p>
    <p>
      auch verschachtelt aufrechterhalten
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1686752682867" ID="ID_1430157017" MODIFIED="1686752803422" TEXT="F&#xfc;r die Pipeline insgesamt ist dies sichtbare verhalten logischer">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <ul>
      <li>
        Expansion: Quell wird noch nicht angefa&#223;t, aber Kind-Iterator wird bereitgelegt und daraus ggfs. das erste Element exponiert
      </li>
      <li>
        Wenn eine Kind-Ebene leer wird, wird sie verworfen &#8212; <i>und erst an dieser Stelle </i>&#160;wird <b>das n&#228;chste Quell-Element<i>&#160;</i></b>wirklich ben&#246;tigt
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1686755589510" ID="ID_1548186297" MODIFIED="1686756785363" TEXT="Spezialfall beachten: wenn Expansion leeres Ergebnis liefert">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1686755609035" ID="ID_1318211867" MODIFIED="1686755643933" TEXT="streng logisch m&#xfc;&#xdf;te man auch das erst auf den Stack legen..."/>
<node CREATED="1686755644695" ID="ID_187524722" MODIFIED="1686755645459" TEXT="und dann dropExhaustedChildren()"/>
<node CREATED="1686755684401" ID="ID_328751898" MODIFIED="1686755965125" TEXT="stattdessen: nur in diesem Fall iterNext()">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      bisher stand hier das dropExhaustedChildren(), aber das f&#228;llt in disem Fall leer durch, wenn wir uns bereits wieder auf Basis-Level befinden &#8212; was bisher kein Problem war, denn es war bereits das Quell-Element konsumiert worden. Da wir aber diesen Fall klar zu fassen bekommen direkt in expandChildren()&#160;&#160;(weil eben die Expansion sich leer ergibt), k&#246;nnen wir explizit in diesem Fall das Konsumieren der Quelle direkt machen. Ist im Ergebnis sogar logischer.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1686757573863" ID="ID_135133706" MODIFIED="1686757618838" TEXT="&#xfc;berarbeitete Implementierung ist nun sogar konsistenter geworden">
<linktarget COLOR="#38bbd1" DESTINATION="ID_135133706" ENDARROW="Default" ENDINCLINATION="-42;106;" ID="Arrow_ID_485074689" SOURCE="ID_742355681" STARTARROW="None" STARTINCLINATION="261;13;"/>
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node COLOR="#338800" CREATED="1686756791749" ID="ID_1725472093" MODIFIED="1686756944993" TEXT="sehr gut: das ge&#xe4;nderte Verhalten war auch in einem Testfall sichtbar">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...ich hatte es seinerzeit wohl bemerkt, aber f&#252;r nicht relevant bzw sogar &#8222;eigentlich logisch&#8220; gehalten...&#160;&#160;jedenfalls war es im Testfall&#160; <font face="Monospaced" color="#2823a5">verify_IterSource()</font>&#160; dokumentiert, da dort auch die Source-Pipeline (hinter dem IterSource-Interface) sichtbar ist und mit beobachtet wird. Dieser Fall (Zeile 1229) hat nun angesprochen und wurde entsprechend korrigiert
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1686757519200" ID="ID_742355681" MODIFIED="1686757624654" TEXT="&#xdc;berarbeitung der Implementierungs-Logik im Expander">
<arrowlink COLOR="#38bbd1" DESTINATION="ID_135133706" ENDARROW="Default" ENDINCLINATION="-42;106;" ID="Arrow_ID_485074689" STARTARROW="None" STARTINCLINATION="261;13;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1686757630758" ID="ID_272013045" MODIFIED="1686757636109" TEXT="Testsuite GR&#xdc;N">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node CREATED="1535893137527" ID="ID_994961372" MODIFIED="1535893142488" TEXT="Verwendungen">
<icon BUILTIN="info"/>
<node CREATED="1535893144518" ID="ID_1137736223" MODIFIED="1535893214860" TEXT="ViewSpec solver im UI">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <ul>
      <li>
        Suche wird geleitet durch die ViewSpecDSL
      </li>
      <li>
        hinter dem (opaquen) TreeExplorer steckt die konkrete UI-Topologie
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node CREATED="1535893231835" FOLDED="true" ID="ID_637460742" MODIFIED="1573229918492" TEXT="Such-Pr&#xe4;dikate auf EventLog">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      EventLog ist ein Test-Hilfsmittel,
    </p>
    <p>
      um Unit-Tests &#252;ber UI-Bus-Interaktionen schreiben zu k&#246;nnen.
    </p>
    <p>
      Es gibt hierzu Test-Varianten, die jeden Aufruf in ein internes Log notieren.
    </p>
    <p>
      Im Test verwendet man dann eine Pattern-Such-DSL,
    </p>
    <p>
      hinter der sich eine verkettete Suche mit Backtracking verbirgt
    </p>
  </body>
</html></richcontent>
<node COLOR="#338800" CREATED="1535893353955" ID="ID_1665477644" MODIFIED="1561827466017" TEXT="bestehende L&#xf6;sung umstellen">
<linktarget COLOR="#3eccac" DESTINATION="ID_1665477644" ENDARROW="Default" ENDINCLINATION="-4110;-2852;" ID="Arrow_ID_1163013232" SOURCE="ID_1626597975" STARTARROW="None" STARTINCLINATION="1631;0;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1535893608745" ID="ID_11389264" MODIFIED="1535893673457" TEXT="Idee: Auswertungs-State">
<icon BUILTIN="idea"/>
<node CREATED="1535893623463" ID="ID_371015216" MODIFIED="1535893629458" TEXT="als State Core im Iterator"/>
<node CREATED="1535893631990" ID="ID_129119743" MODIFIED="1535893641848" TEXT="h&#xe4;lt den Quell-Iterator"/>
<node CREATED="1535893643956" ID="ID_279421694" MODIFIED="1535893667251" TEXT="delegiert / wrappt">
<icon BUILTIN="help"/>
</node>
</node>
<node COLOR="#338800" CREATED="1535893707036" ID="ID_257876647" MODIFIED="1536533157472" TEXT="Aufgabe: Filter erweiterbar machen">
<arrowlink COLOR="#62909b" DESTINATION="ID_650057716" ENDARROW="Default" ENDINCLINATION="99;93;" ID="Arrow_ID_1700598512" STARTARROW="None" STARTINCLINATION="-240;-19;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1535899922873" ID="ID_1971708144" MODIFIED="1535937992260" TEXT="bestehende Aufrufe in EventMatch konsolidieren">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1535934086931" ID="ID_805705448" MODIFIED="1535934155059" TEXT="internes API f&#xfc;r die Such-Konfiguration einf&#xfc;hren">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...so da&#223; es nur noch wenige Zugangs-Punkte zum unterliegenden Iterator gibt
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1535934121614" ID="ID_757923717" MODIFIED="1535937964888" TEXT="umstellen von IterTools -&gt; TreeExplorer">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1535938792363" ID="ID_428321880" MODIFIED="1535938844914" TEXT="CursorGear direkt als Core verwenden">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      TreeExplorer macht das Wrappen f&#252;r uns automatisch,
    </p>
    <p>
      und au&#223;erdem haben wir nun ein direktes API f&#252;r die Laufrichtung
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1535938028929" FOLDED="true" ID="ID_1910123172" MODIFIED="1573229808484" TEXT="Backtracking Search-Engine einbauen">
<arrowlink COLOR="#23408f" DESTINATION="ID_1801538785" ENDARROW="Default" ENDINCLINATION="20;-55;" ID="Arrow_ID_1048873840" STARTARROW="None" STARTINCLINATION="-120;0;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1535939763441" ID="ID_132867774" MODIFIED="1535939780642" TEXT="mu&#xdf; &quot;nur noch&quot; Cursor gegen neue State-Core austauschen"/>
<node CREATED="1535939781302" ID="ID_285459121" MODIFIED="1535939796824" TEXT="diese h&#xe4;lt den Cursor plus einen Stack mit den Filtern"/>
<node COLOR="#338800" CREATED="1537058259201" ID="ID_1249469718" MODIFIED="1561827466019" TEXT="Anpassungen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1537058272183" ID="ID_1629184923" MODIFIED="1537059375100" TEXT="Alles per Filter-Chain machen">
<icon BUILTIN="button_ok"/>
<node CREATED="1537058280542" ID="ID_1820744744" MODIFIED="1537058284929" TEXT="ist zwar aufwendiger..."/>
<node CREATED="1537058285286" ID="ID_1430429521" MODIFIED="1537058383182" TEXT="aber das einzig Sinnvolle">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...denn durch das Backtracking
    </p>
    <p>
      w&#252;rde man nun ziemlich undurchsichtige Misch-Zust&#228;nde bekommen.
    </p>
    <p>
      Und: jeder direkt gesetzte Filter k&#246;nnte die Invariante im Expander verletzen
    </p>
    <p>
      (weil er einen Kind-Iterator leer machen k&#246;nnte, ohne da&#223; dieser gePOPpt wird)
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#338800" CREATED="1537058418739" ID="ID_232136872" MODIFIED="1537059386568" TEXT="Umstellung">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1537058434897" ID="ID_1021441779" MODIFIED="1537059381029" TEXT="attachNextSerchStep">
<icon BUILTIN="button_ok"/>
<node CREATED="1537058445064" ID="ID_1377843323" MODIFIED="1537058450843" TEXT="kompletten Filter-Konfigurator"/>
<node CREATED="1537058451527" ID="ID_1849109468" MODIFIED="1537058459138" TEXT="stets auch die Richtung setzen"/>
<node CREATED="1537316776292" ID="ID_507846374" MODIFIED="1537316870949" TEXT="hier nun stets einen Schritt machen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...um &quot;H&#228;ngenbleiben&quot; auf dem gleichen Element auszuschlie&#223;en.
    </p>
    <p>
      Vorsicht: um sauber genau einen Schritt machen zu k&#246;nnen, m&#252;ssen wir explizit vor&#252;bergehend den Filter abschalten
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#5174b2" DESTINATION="ID_256131209" ENDARROW="Default" ENDINCLINATION="-241;-10;" ID="Arrow_ID_73536182" STARTARROW="None" STARTINCLINATION="169;19;"/>
</node>
</node>
<node COLOR="#338800" CREATED="1537058470628" ID="ID_244817932" MODIFIED="1537059384506" TEXT="refineSerach">
<icon BUILTIN="button_ok"/>
<node CREATED="1537058473468" ID="ID_1720204552" MODIFIED="1537058480839" TEXT="ebenfalls kompletten Filter-Konfigurator"/>
<node CREATED="1537058485338" ID="ID_738059771" MODIFIED="1537058694225" TEXT="Vorsicht: das gibt nun zus&#xe4;ztliche L&#xf6;sungen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      weil wir uns bisher bei allen vorausgegangenen Bedingungen
    </p>
    <p>
      auf den ersten Match &quot;festgebissen&quot; haben, und nur &#252;ber den Iterator mit der
    </p>
    <p>
      zuletzt gesetzen Bedingung weiter iteriert haben.
    </p>
    <p>
      
    </p>
    <p>
      
    </p>
    <p>
      K&#252;nftig gibt es nach jedem Fail ein Backtracking.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1537058600555" ID="ID_717984419" MODIFIED="1537058656433" TEXT="sollte aber bei reinen AND-Klauseln egal sein">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...d.h es findet zwar ein Backtracking statt, aber wenn alle konjunktiven Klauseln gesetzt sind,
    </p>
    <p>
      sollte sich erneut ein FAIL ergeben
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1537058662202" ID="ID_654601259" MODIFIED="1537058688483" TEXT="und blo&#xdf; zus&#xe4;tzlichen overhead bei NOT-Match-Tests bewirken"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1537059388025" ID="ID_1276869558" MODIFIED="1561827466024" TEXT="Tests scheitern...">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1537059395184" ID="ID_77123611" MODIFIED="1537316730803" TEXT="EventLog_test">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      est-event-log-test.cpp:228:&#160;&#160;verify_callLogging: (log.ensureNot(&quot;fun&quot;).after(&quot;fun&quot;).after(&quot;fun2&quot;))
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1537059455216" ID="ID_318014472" MODIFIED="1537309403475">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Verdacht: <b>Negation</b>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1537230016114" ID="ID_1768475576" MODIFIED="1537309001137" TEXT="nein... es war bisher kaputt">
<icon BUILTIN="broken-line"/>
<node CREATED="1537230071267" ID="ID_325369118" MODIFIED="1537230244388" TEXT="und funktioniert jetzt korrekt">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      fun after fun matcht auf den immer gleichen Record
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1537230078498" ID="ID_746060961" MODIFIED="1537230098331" TEXT="wir setzen am vorherigen Match auf"/>
<node CREATED="1537230100031" ID="ID_831756745" MODIFIED="1537230107546" TEXT="das ist &#xfc;berraschend"/>
<node COLOR="#435e98" CREATED="1537230108686" FOLDED="true" ID="ID_256131209" MODIFIED="1561827483838" TEXT="sollten wir das &#xe4;ndern?">
<arrowlink COLOR="#73a3ae" DESTINATION="ID_1088562812" ENDARROW="Default" ENDINCLINATION="255;0;" ID="Arrow_ID_1747758330" STARTARROW="None" STARTINCLINATION="191;47;"/>
<linktarget COLOR="#5174b2" DESTINATION="ID_256131209" ENDARROW="Default" ENDINCLINATION="-241;-10;" ID="Arrow_ID_73536182" SOURCE="ID_507846374" STARTARROW="None" STARTINCLINATION="169;19;"/>
<icon BUILTIN="help"/>
<node CREATED="1537230118588" ID="ID_173358506" MODIFIED="1537308994452" TEXT="principle of least surprise">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1537230125716" FOLDED="true" ID="ID_2590903" MODIFIED="1561827482932" TEXT="aber...">
<icon BUILTIN="button_cancel"/>
<node CREATED="1537230132898" FOLDED="true" ID="ID_595305834" MODIFIED="1561827469159" TEXT="manche Tests haben das ausgen&#xfc;tzt">
<node CREATED="1537230371514" ID="ID_1967930414" MODIFIED="1537230375734" TEXT="real world?"/>
</node>
<node CREATED="1537230143633" FOLDED="true" ID="ID_1378112667" MODIFIED="1561827469159" TEXT="brauche dann eigene Einstiegs-Methode">
<node CREATED="1537308984470" ID="ID_1575859366" MODIFIED="1537308986984" TEXT="besser so"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1537309349547" ID="ID_1102778316" MODIFIED="1537315501823" TEXT="bestehende Tests korrigieren">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1537309372867" FOLDED="true" ID="ID_1847253086" MODIFIED="1561827483838" TEXT="verify_simpleUsage">
<icon BUILTIN="button_ok"/>
<node CREATED="1537312791212" ID="ID_510039930" MODIFIED="1537312803182" TEXT="weiterer Fehler"/>
<node CREATED="1537312804010" ID="ID_1081351208" MODIFIED="1537312892636" TEXT="vorherigien Filter vor dem Step abschalten">
<arrowlink COLOR="#cb8fa1" DESTINATION="ID_665208250" ENDARROW="Default" ENDINCLINATION="55;0;" ID="Arrow_ID_1772260988" STARTARROW="None" STARTINCLINATION="-39;46;"/>
</node>
</node>
<node COLOR="#338800" CREATED="1537309378682" ID="ID_129678233" MODIFIED="1537315494792" TEXT="verify_callLogging">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1537316714860" ID="ID_84746570" MODIFIED="1537320053126" TEXT="Tests zur Klarstellung erg&#xe4;nzen">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1537059402359" ID="ID_1670401833" MODIFIED="1537320056202" TEXT="BusTerm_test">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1537320056985" ID="ID_1069836812" MODIFIED="1537320066440" TEXT="AbstractTangible_test">
<icon BUILTIN="button_ok"/>
<node CREATED="1537320067432" ID="ID_1996707326" MODIFIED="1537320080797" TEXT="der hat diesen ganzen Umbau ausgel&#xf6;st">
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1537230718644" ID="ID_1760678465" MODIFIED="1537320265399" TEXT="Fix">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1537230726491" ID="ID_1088562812" MODIFIED="1537315479387" TEXT="before / after gehen stets einen Schritt">
<linktarget COLOR="#73a3ae" DESTINATION="ID_1088562812" ENDARROW="Default" ENDINCLINATION="255;0;" ID="Arrow_ID_1747758330" SOURCE="ID_256131209" STARTARROW="None" STARTINCLINATION="191;47;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1537312702960" HGAP="37" ID="ID_665208250" MODIFIED="1537315479387" VSHIFT="15">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      und zwar mit <i>abgeschaltetem </i>Filter
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      f&#252;r diesen einen Schritt
    </p>
    <p>
      mu&#223; die Filter-Funktion vor&#252;bergehend deaktiviert werden,
    </p>
    <p>
      damit wir exakt das n&#228;chste / vorhergehende Element bekommen
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#cb8fa1" DESTINATION="ID_665208250" ENDARROW="Default" ENDINCLINATION="55;0;" ID="Arrow_ID_1772260988" SOURCE="ID_1081351208" STARTARROW="None" STARTINCLINATION="-39;46;"/>
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#338800" CREATED="1537230751079" ID="ID_1776084088" MODIFIED="1561827466025" TEXT="neue reine Filter-Funktionen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1537230790179" ID="ID_1688121233" MODIFIED="1537308959793" TEXT="wechseln nur den Filter">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1537230809608" ID="ID_132845471" MODIFIED="1537308961598" TEXT="attached as Step">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1537230937167" FOLDED="true" ID="ID_83896289" MODIFIED="1561827483838" TEXT="Namen">
<node CREATED="1537230952405" ID="ID_36863841" MODIFIED="1537230954560" TEXT="locate"/>
<node CREATED="1537230955156" ID="ID_1450598514" MODIFIED="1537230957952" TEXT="locateMatch"/>
<node CREATED="1537230958684" ID="ID_288175427" MODIFIED="1537230961695" TEXT="locateEvent"/>
<node CREATED="1537230962475" ID="ID_1446509249" MODIFIED="1537230964919" TEXT="locateCall"/>
</node>
<node COLOR="#338800" CREATED="1537230778540" ID="ID_985799795" MODIFIED="1537308964650" TEXT="diese auch f&#xfc;r den Einstieg verwenden">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1536368106394" FOLDED="true" ID="ID_1324169393" MODIFIED="1573229781539" TEXT="in eigene Translation-Unit verschieben">
<icon BUILTIN="button_ok"/>
<node CREATED="1537059357301" ID="ID_1501687281" MODIFIED="1537059360761" TEXT="Beobachtungen">
<node CREATED="1536368121224" ID="ID_684768731" MODIFIED="1536368139195">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      die Search-Engine bl&#228;ht die Debug-Infos <b>gewaltig</b>&#160;auf
    </p>
  </body>
</html></richcontent>
<node CREATED="1536368144661" ID="ID_184622907" MODIFIED="1537058233640" TEXT="BusTerm_test = 13.1 MB">
<icon BUILTIN="smiley-angry"/>
</node>
<node CREATED="1536368166242" ID="ID_280400966" MODIFIED="1537058245743" TEXT="EventLog_test = 6.2 MB">
<icon BUILTIN="smiley-angry"/>
</node>
</node>
<node CREATED="1537058044500" ID="ID_637125647" MODIFIED="1537058178984" TEXT="Aber: Such-Iterator im Event-Log ist nicht der Hauptschuldige">
<icon BUILTIN="idea"/>
<node CREATED="1537058071056" ID="ID_1523796232" MODIFIED="1537058162420" TEXT="Versuchsweise auskommentiert"/>
<node CREATED="1536368144661" ID="ID_1550616773" MODIFIED="1537058237543" TEXT="BusTerm_test = 11 MB">
<icon BUILTIN="smiley-neutral"/>
</node>
<node CREATED="1536368166242" ID="ID_1244843669" MODIFIED="1537058249425" TEXT="EventLog_test = 4 MB">
<icon BUILTIN="smiley-neutral"/>
</node>
</node>
<node CREATED="1537059265873" ID="ID_798187553" MODIFIED="1537059347543" TEXT="leider merkt man aber die Umstellung auf IterChainSearch">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1536368144661" ID="ID_1266326166" MODIFIED="1537320654812" TEXT="BusTerm_test = 14.6 MB">
<icon BUILTIN="smiley-oh"/>
</node>
<node CREATED="1536368166242" ID="ID_1222359374" MODIFIED="1537320670162" TEXT="EventLog_test = 7.8 MB">
<icon BUILTIN="smiley-angry"/>
</node>
</node>
<node CREATED="1537408492185" ID="ID_1391232995" MODIFIED="1537408509710" TEXT="nach Umstellung: hat nicht sonderlich viel gebracht">
<icon BUILTIN="smily_bad"/>
<node CREATED="1536368144661" ID="ID_1457614262" MODIFIED="1537408979742" TEXT="BusTerm_test = 11.7 MB">
<icon BUILTIN="smiley-neutral"/>
</node>
<node CREATED="1537408924511" ID="ID_764968453" MODIFIED="1537408971969" TEXT="AbstractTangible_test = 8.7">
<icon BUILTIN="smiley-neutral"/>
</node>
<node CREATED="1536368166242" ID="ID_40278059" MODIFIED="1537408966779" TEXT="EventLog_test = 4.5 MB">
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1537409213000" ID="ID_980087931" MODIFIED="1537409228912" TEXT="aber: event-log.os = 5 MB">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node CREATED="1537059850803" ID="ID_253192903" MODIFIED="1537059853438" TEXT="Plan">
<node CREATED="1537059854290" ID="ID_1281790716" MODIFIED="1537059867700" TEXT="der Typ der Search-Engine mu&#xdf; nicht verborgen werden"/>
<node CREATED="1537059868337" ID="ID_138143272" MODIFIED="1537059878979" TEXT="es kann daher ein direktes Objektfeld bleiben"/>
<node CREATED="1537059879759" ID="ID_893108945" MODIFIED="1537059904472" TEXT="alle Suchpr&#xe4;dikate sind Lambdas -&gt; Template Argumente"/>
<node CREATED="1537059905107" ID="ID_133126017" MODIFIED="1537059924085" TEXT="d.h. auch die Such-Funktionen m&#xfc;ssen nach hinten in das CPP gedr&#xfc;ckt werden"/>
<node COLOR="#338800" CREATED="1537059925313" ID="ID_1283278546" MODIFIED="1537400192425" TEXT="Problem Var-Arg">
<icon BUILTIN="button_ok"/>
<node CREATED="1537059941287" ID="ID_1072965326" MODIFIED="1537059944938" TEXT="Argument-Match"/>
<node CREATED="1537059945310" ID="ID_1104771437" MODIFIED="1537059950057" TEXT="RegExp-Sequenz"/>
<node CREATED="1537059950597" ID="ID_1688685593" MODIFIED="1537059976646" TEXT="beide erzeugen aber einen STL-container als Intermediary">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1537059978146" ID="ID_1403964414" MODIFIED="1537059984405" TEXT="d.h. man kann dazwischen schneiden"/>
</node>
</node>
<node COLOR="#338800" CREATED="1537059994048" ID="ID_1556879726" MODIFIED="1537408486805" TEXT="Umbau">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1537060007341" ID="ID_137118669" MODIFIED="1537402606149" TEXT="eigene Translation-Unit EventLog.cpp anlegen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1537060024891" ID="ID_416527676" MODIFIED="1537407285711" TEXT="Ctor nach hinten schieben">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1537060040409" ID="ID_440163527" MODIFIED="1537407287283" TEXT="Auswerte-Logik nach hinten schieben">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1537060054767" ID="ID_1081334498" MODIFIED="1537407288629" TEXT="Problem: private Matcher-Builder">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1537060094809" ID="ID_442340693" MODIFIED="1537407293640" TEXT="in freie Template-Funktionen verwandeln">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1537060267290" ID="ID_1006625301" MODIFIED="1537407322172" TEXT="die direkten Filter-Konfigurier-Funktionen ebenso">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      geht gar nicht anders, denn diese sind templates
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1537060121158" ID="ID_1857002867" MODIFIED="1537407306625" TEXT="Such-Funktionen nach hinten reichen">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1535893799799" ID="ID_706866636" MODIFIED="1535938019075" TEXT="Auswertungs-Stack">
<icon BUILTIN="idea"/>
<node CREATED="1535893826972" ID="ID_352546105" MODIFIED="1535894073967" TEXT="aktueller Frame">
<node CREATED="1535894074891" ID="ID_1972842519" MODIFIED="1535923151832" TEXT="== aktuell wirksamer Suchfilter"/>
<node CREATED="1535894076546" ID="ID_880245387" MODIFIED="1535894084445" TEXT="schie&#xdf;t Suchposition ein"/>
</node>
<node CREATED="1535893989214" ID="ID_875812160" MODIFIED="1535894010499">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <u>Invariante</u>: <b>pullMatch</b>()
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
<node CREATED="1535894029921" ID="ID_152779506" MODIFIED="1535894037411" TEXT="den Stack schrittweise hochsteigen"/>
</node>
</node>
<node COLOR="#338800" CREATED="1535894097279" ID="ID_1801538785" MODIFIED="1561827466033" TEXT="als eigene Lib-Klasse bauen">
<linktarget COLOR="#23408f" DESTINATION="ID_1801538785" ENDARROW="Default" ENDINCLINATION="20;-55;" ID="Arrow_ID_1048873840" SOURCE="ID_1910123172" STARTARROW="None" STARTINCLINATION="-120;0;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1535894115317" ID="ID_1507592237" MODIFIED="1536018340937" TEXT="Design-Frage: wie konkret?">
<icon BUILTIN="help"/>
<node CREATED="1536018209730" ID="ID_1130583934" MODIFIED="1536018221348" TEXT="nur das generische Auswertungs-Schema"/>
<node CREATED="1536018222528" ID="ID_1509547591" MODIFIED="1536018255176" TEXT="die einzelnen Auswertungs-Schritte als Funktor (Monaden-Stil)"/>
<node CREATED="1536018255860" ID="ID_1267468732" MODIFIED="1536018275981" TEXT="der unterliegende Iterator als Template-Parameter"/>
<node CREATED="1536018293535" ID="ID_361886715" MODIFIED="1536018315757" TEXT="Abk&#xfc;rzung f&#xfc;r direkten Wert-equality-Match"/>
<node CREATED="1536018276593" ID="ID_1222260775" MODIFIED="1536018287299" TEXT="prekonfigurierte Builder-Funktionen f&#xfc;r Standardf&#xe4;lle"/>
</node>
<node COLOR="#338800" CREATED="1536018364845" FOLDED="true" ID="ID_1351452920" MODIFIED="1573229908166" TEXT="Implementierung">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1536018375244" ID="ID_1906913554" MODIFIED="1536717634181" TEXT="Kern: Explore-Mechanismus">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1536018644456" ID="ID_477475522" MODIFIED="1536329729458" TEXT="Signatur der Explore-Funktion festlegen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1536018705511" ID="ID_1131109871" MODIFIED="1536329731179" TEXT="greedy Tiefensuche">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1536018802738" ID="ID_1560348563" MODIFIED="1536353099280" TEXT="Abbruchbedingung">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1536018816272" ID="ID_40740226" MODIFIED="1536353104580" TEXT="Ende der Filterkette">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1536018829583" ID="ID_722941976" MODIFIED="1536353106355" TEXT="aktueller Filter ersch&#xf6;pft">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1536340043113" ID="ID_1162927294" MODIFIED="1561827466034" TEXT="aktuellen Zustand als Argument">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1536340051461" ID="ID_1232898317" MODIFIED="1536345629500" TEXT="Wichtig: Referenz">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1232898317" ENDARROW="Default" ENDINCLINATION="550;0;" ID="Arrow_ID_1329838760" SOURCE="ID_1977741990" STARTARROW="None" STARTINCLINATION="109;0;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1536340255596" ID="ID_1394539187" MODIFIED="1536340348029" TEXT="&#xfc;berfl&#xfc;ssige Kopie erstellt">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1536340275802" ID="ID_1689368781" MODIFIED="1536340292559" TEXT="im Aufruf des inneren (grwrappten) Funktors">
<icon BUILTIN="info"/>
</node>
<node CREATED="1536340301958" ID="ID_932937045" MODIFIED="1536340319264" TEXT="das reingegebene Argument zeigt noch (korrekt) auf die aktuelle Pipeline"/>
<node CREATED="1536340325843" ID="ID_1834736142" MODIFIED="1536340342005" TEXT="aber das eingwickelte Lambda sieht eine const&amp; auf eine Kopie"/>
</node>
<node COLOR="#338800" CREATED="1536342792784" ID="ID_363834044" MODIFIED="1536342806527" TEXT="doppeltes Wrappen unn&#xf6;tig">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1536342807526" ID="ID_1490056918" MODIFIED="1536342900054" TEXT="stattdessen im vector&lt;Step&gt; wrappen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...d.h. die <i>einzelnen</i>&#160;Steps in der Pipeline direkt wrappen.
    </p>
    <p>
      Dann ist au&#223;en herum keine Anpassung der Argumente mehr notwendig,
    </p>
    <p>
      und man kann die Expand-Funktion direkt als std::function-Objekt durchgeben
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1536340063062" ID="ID_1554385479" MODIFIED="1536340152896" TEXT="und zwar const&amp;">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...um den Expand-Funktor zu zwingen, eine Kopie zu machen;
    </p>
    <p>
      es sollte die Filter-Konfiguration auf der Kopie manipuliert werden,
    </p>
    <p>
      w&#228;hrend das Original auf dem Auswertungs-Stack liegen bleibt,
    </p>
    <p>
      f&#252;r sp&#228;teres Backtracking...
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#338800" CREATED="1536345349807" ID="ID_219089137" MODIFIED="1536345462776" TEXT="TreeExplorer strippen">
<icon BUILTIN="button_ok"/>
<node CREATED="1536345360133" ID="ID_23274093" MODIFIED="1536345384449" TEXT="wird immer noch au&#xdf;ern herumgewickelt">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...damit man stets weitere Builder-Funktionen auf der Pipeline aufrufen kann
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1536345386770" ID="ID_1554908631" MODIFIED="1536345421597" TEXT="wir brauchen aber den Filter-Iterator selber">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      weil wir <i>diesen</i>&#160;manipulieren
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1536345422997" ID="ID_1977741990" MODIFIED="1536345460034" TEXT="nur so kann man eine Referenz auf den Zustand in den Expand-Funktor geben">
<arrowlink DESTINATION="ID_1232898317" ENDARROW="Default" ENDINCLINATION="550;0;" ID="Arrow_ID_1329838760" STARTARROW="None" STARTINCLINATION="109;0;"/>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1536018862802" ID="ID_1044555993" MODIFIED="1536329736419" TEXT="abgeleiteten Frame konstruieren">
<linktarget COLOR="#65a7b1" DESTINATION="ID_1044555993" ENDARROW="Default" ENDINCLINATION="70;92;" ID="Arrow_ID_575633930" SOURCE="ID_1532889609" STARTARROW="None" STARTINCLINATION="149;-3;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1536857187385" FOLDED="true" ID="ID_1180686110" MODIFIED="1573229874089" TEXT="Bug! Referenz auf *this">
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1536857213605" ID="ID_1051501156" MODIFIED="1536857238050" TEXT="...und dann moved man *this aus dem Builder!!!">
<icon BUILTIN="broken-line"/>
</node>
<node CREATED="1536857284075" ID="ID_887891479" MODIFIED="1536857344032" TEXT="brauche *this...">
<icon BUILTIN="info"/>
<node CREATED="1536857289235" ID="ID_1909570040" MODIFIED="1536857313452" TEXT="in configureFilterChain"/>
<node CREATED="1536857326814" ID="ID_149310473" MODIFIED="1536857328426" TEXT="this-&gt;depth()"/>
<node CREATED="1536857336620" ID="ID_1691329557" MODIFIED="1536857806626" TEXT="this-&gt;stepChain_">
<linktarget COLOR="#d22d65" DESTINATION="ID_1691329557" ENDARROW="Default" ENDINCLINATION="147;-23;" ID="Arrow_ID_828211693" SOURCE="ID_396903078" STARTARROW="None" STARTINCLINATION="1;-33;"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1536857741221" ID="ID_1903828771" MODIFIED="1536958903408" TEXT="bricht das ganze Konzept hier zusammen??">
<icon BUILTIN="forward"/>
<node COLOR="#435e98" CREATED="1536880103264" HGAP="27" ID="ID_1970250282" MODIFIED="1536958907215" TEXT="so schaugts aus...." VSHIFT="-10">
<icon BUILTIN="smily_bad"/>
</node>
<node CREATED="1536857782632" ID="ID_396903078" MODIFIED="1536857806626" TEXT="stepChain_ ist das Problem">
<arrowlink COLOR="#d22d65" DESTINATION="ID_1691329557" ENDARROW="Default" ENDINCLINATION="147;-23;" ID="Arrow_ID_828211693" STARTARROW="None" STARTINCLINATION="1;-33;"/>
</node>
<node CREATED="1536880086127" ID="ID_1559582643" MODIFIED="1536882591818" TEXT="depth wohl noch ein Gr&#xf6;&#xdf;eres">
<node CREATED="1536882781354" ID="ID_1998865921" MODIFIED="1536882788421" TEXT="weil daran die Abbruchbedingung h&#xe4;ngt"/>
<node CREATED="1536882789057" ID="ID_170176785" MODIFIED="1536882873905" TEXT="und depth sich aber automatisch ergibt -&gt; Backtracking"/>
</node>
<node CREATED="1536882920310" ID="ID_1625878480" MODIFIED="1536882937553" TEXT="eigentlich m&#xfc;&#xdf;te...">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...nach der &#187;reinen Lehre&#171;
    </p>
  </body>
</html></richcontent>
<node CREATED="1536882938955" FOLDED="true" ID="ID_475907399" MODIFIED="1561827483838" TEXT="der Baum entweder sich selber entfalten k&#xf6;nnen">
<node CREATED="1536883521914" ID="ID_857765324" MODIFIED="1536883531340" TEXT="und dazu den Chain in sich tragen"/>
<node CREATED="1536883532120" ID="ID_153639655" MODIFIED="1536883537739" TEXT="und auch seinen eigenen Level kennen"/>
</node>
<node CREATED="1536882952177" FOLDED="true" ID="ID_563964508" MODIFIED="1561827483838" TEXT="oder von au&#xdf;erhalb entfaltet werden">
<node CREATED="1536883544846" ID="ID_224633668" MODIFIED="1536883607066" TEXT="dann aber auch die Entfaltung von au&#xdf;en bekommen"/>
<node CREATED="1536883607966" ID="ID_1870181162" MODIFIED="1536883618816" TEXT="also klassich-imperativ"/>
<node CREATED="1536883623932" ID="ID_567889201" MODIFIED="1536883629455" TEXT="nix Monade!"/>
</node>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1536958857294" ID="ID_1302534828" MODIFIED="1536958940320" TEXT="Fazit: nur der zweite Ansatz ist durchf&#xfc;hrbar">
<arrowlink COLOR="#81445a" DESTINATION="ID_1848331022" ENDARROW="Default" ENDINCLINATION="72;-412;" ID="Arrow_ID_1608996048" STARTARROW="None" STARTINCLINATION="672;68;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node CREATED="1536969411521" HGAP="36" ID="ID_1686255544" MODIFIED="1536969491348" TEXT="und selbst der braucht eine Art Hintert&#xfc;r" VSHIFT="8">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...insofern wir n&#228;mlich zwingend auf den jeweilign Kind-<i>Iterator</i>&#160;zugreifen m&#252;ssen.
    </p>
    <p>
      Nicht nur auf den aktuellen Wert (=dereferenzierter Iterator, d.h. die Funktion yield())
    </p>
  </body>
</html></richcontent>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="smily_bad"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1536018406232" ID="ID_1330264339" MODIFIED="1561827466037" TEXT="Schritte als Funktoren">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1536018684754" FOLDED="true" ID="ID_1076606298" MODIFIED="1573229877554" TEXT="geeignete Signatur f&#xfc;r die Schritt-Funktoren">
<icon BUILTIN="button_ok"/>
<node CREATED="1536184281271" ID="ID_1736323474" MODIFIED="1536184299802" TEXT="Problem: Funktor-Signatur zu Beginn nicht bekannt">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1536184313018" ID="ID_306473960" MODIFIED="1536184367056" TEXT="es w&#xfc;rde gen&#xfc;gen, wenn der Werttyp kompatibel ist">
<icon BUILTIN="info"/>
</node>
<node CREATED="1536184383689" ID="ID_1457889497" MODIFIED="1536184509943">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      wir <i>m&#252;ssen </i>hier eine Festlegung treffen
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...weil die Ergebnisse der einzelnen Schritt-Funktoren,
    </p>
    <p>
      jeweils in den Auswertungs-Stack gepackt werden sollen.
    </p>
    <p>
      
    </p>
    <p>
      Daher m&#252;ssen sie untereinander kompatibel sein.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1536184509936" ID="ID_936035440" MODIFIED="1536184832177" TEXT="pragmatische Wahl: Kopie des Basis-Filters">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      im typischen Fall kopiert man den Basis-Iterator,
    </p>
    <p>
      und manipuliert dann einige Einstellungen auf diesem.
    </p>
    <p>
      
    </p>
    <p>
      Wir k&#246;nnten diese Kopie-Semantik sogar <i>erzwingen,</i>
    </p>
    <p>
      indem wir als Argument-Typ des Schritt-Funktors eine const&amp; vorgeben
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1536185340920" ID="ID_1706168706" MODIFIED="1536185362297" TEXT="also: konstruiere Pipeline mit Filter"/>
<node CREATED="1536185364045" ID="ID_301562283" MODIFIED="1536185381295" TEXT="dann: Filter -&gt; Filter als Funktor vorgeben"/>
<node COLOR="#338800" CREATED="1536194368432" ID="ID_665607293" MODIFIED="1561827466042" TEXT="kniffelig in der Praxis">
<icon BUILTIN="smiley-angry"/>
<node CREATED="1536194407802" ID="ID_752443094" MODIFIED="1536194421332" TEXT="der &quot;Filter&quot;-Typ ist in einen TreeExplorer gewrappt"/>
<node CREATED="1536194422544" ID="ID_1594827200" MODIFIED="1536194440618" TEXT="konkret ist der Quell-Typ aber nur ein IterableDecorator"/>
<node CREATED="1536194493975" ID="ID_1706559693" MODIFIED="1536194563398" TEXT="und der doppelt gewrappter Funktor....">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...den ich mache, um den Adapter in jedem Einzelfall zu bekommen
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1536194565261" ID="ID_892309176" MODIFIED="1536194581751" TEXT="...f&#xfc;hrt dazu, da&#xdf; der innere Funktor ein Template ist"/>
<node CREATED="1536194582411" ID="ID_427362932" MODIFIED="1536194600916" TEXT="und deshalb mit IterableDecorator&amp; ge-probed wird"/>
<node CREATED="1536195443615" ID="ID_1532213156" MODIFIED="1536195450119" TEXT="Problem">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1536195452006" ID="ID_1758963929" MODIFIED="1536195513457" TEXT="IterableDecorator hat einen Wildcard-Konstruktor"/>
<node CREATED="1536195515142" ID="ID_207755200" MODIFIED="1536271102169" TEXT="deshalb scheint die Konvertierung string -&gt; IterableDecorator m&#xf6;glich">
<linktarget COLOR="#d83e76" DESTINATION="ID_207755200" ENDARROW="Default" ENDINCLINATION="262;10;" ID="Arrow_ID_1979852913" SOURCE="ID_360255766" STARTARROW="None" STARTINCLINATION="262;5;"/>
</node>
<node CREATED="1536195621631" ID="ID_1458745075" MODIFIED="1536195633265" TEXT="...was dann aber im eingewickelten MutableFunctor scheitert"/>
<node CREATED="1536195633854" ID="ID_1469022446" MODIFIED="1536195641136" TEXT="(und ohnehin ein Schmarrrn w&#xe4;re)"/>
</node>
<node CREATED="1536195694269" ID="ID_260759561" MODIFIED="1536273228593" TEXT="L&#xf6;sung?">
<icon BUILTIN="button_ok"/>
<node CREATED="1536195707299" ID="ID_1061111376" MODIFIED="1536273251780" TEXT="der innere Funktor ist generisch">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1536195819221" FOLDED="true" ID="ID_730902625" MODIFIED="1561827483839" TEXT="auf den flexiblen Adapter verzichten">
<icon BUILTIN="button_cancel"/>
<node CREATED="1536270307241" ID="ID_1232849452" MODIFIED="1536270310156" TEXT="bringt nix"/>
<node CREATED="1536270310936" ID="ID_1638227415" MODIFIED="1536270381734" TEXT="string -&gt; IterableDecorator greift trotzdem">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ....und f&#228;llt dann beim Instantiieren des Template auf die Schnautze
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1536271061916" ID="ID_360255766" MODIFIED="1536271107605" TEXT="ist ein grunds&#xe4;tzliches Problem">
<arrowlink COLOR="#d83e76" DESTINATION="ID_207755200" ENDARROW="Default" ENDINCLINATION="262;10;" ID="Arrow_ID_1979852913" STARTARROW="None" STARTINCLINATION="262;5;"/>
<icon BUILTIN="broken-line"/>
</node>
</node>
<node COLOR="#338800" CREATED="1536271137786" FOLDED="true" ID="ID_618430280" MODIFIED="1561827483839" TEXT="Fehl-Konvertierung gezielt unterbinden">
<icon BUILTIN="forward"/>
<node CREATED="1536271169845" ID="ID_481868916" MODIFIED="1536271374301">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      sofern eine Initialisierung ausidem Source-Iterator <i>m&#246;glich ist</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1536271209768" ID="ID_1767817102" MODIFIED="1536271396476" TEXT="...weil es dann grunds&#xe4;tzch nicht notwendig ist, eigens etwas zu tun"/>
</node>
</node>
<node CREATED="1536273280517" ID="ID_422856174" MODIFIED="1536273415840">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      und sonst ist das <i>nicht wirklich</i>&#160;&quot;kniffelig&quot;
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...blo&#223; sind die zig-fach geschachtelten Template-Typen,
    </p>
    <p>
      die dann die Intantiierungs-Call-Hierarchie bev&#246;lkern,
    </p>
    <p>
      nahezu unlesbar....
    </p>
    <p>
      
    </p>
    <p>
      
    </p>
    <p>
      AAber ... wenn es erst mal duch den Compiler ist,
    </p>
    <p>
      dann <i>sollte </i>der Optimizer diese gesamten x-fachen Wrapper nahezu restlos entfernen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="smiley-neutral"/>
</node>
</node>
</node>
<node CREATED="1536273453876" HGAP="46" ID="ID_1094128800" MODIFIED="1536326529585" TEXT="verwende nun  BoundFunctor&lt;Filter(Filter const&amp;)&gt; als Signatur" VSHIFT="5">
<icon BUILTIN="info"/>
<node CREATED="1536273527418" ID="ID_180233427" MODIFIED="1536273554776">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Konsequenz: jede Argument-Funktion wird <i>nochmal</i>&#160;gewrappt
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1536273556422" ID="ID_368248341" MODIFIED="1536273569201" TEXT="...und kann damit auch ein generisches Lambda sein">
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#338800" CREATED="1536018696977" ID="ID_1710558292" MODIFIED="1536326467718" TEXT="Sequenz solcher Funktoren">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1536018923378" ID="ID_1163666446" MODIFIED="1561827466043" TEXT="Pipeline konstruieren">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1536018931433" FOLDED="true" ID="ID_1532889609" MODIFIED="1573229882688" TEXT="treeExplorer-Konfiguration">
<arrowlink COLOR="#65a7b1" DESTINATION="ID_1044555993" ENDARROW="Default" ENDINCLINATION="70;92;" ID="Arrow_ID_575633930" STARTARROW="None" STARTINCLINATION="149;-3;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1536353107155" HGAP="33" ID="ID_1163131751" MODIFIED="1561827466043" TEXT="Problem: Basis-Layer" VSHIFT="37">
<arrowlink COLOR="#4471b4" DESTINATION="ID_942897075" ENDARROW="Default" ENDINCLINATION="37;-79;" ID="Arrow_ID_537236489" STARTARROW="None" STARTINCLINATION="30;44;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1536353117930" ID="ID_625995057" MODIFIED="1536353132265" TEXT="hinzugef&#xfc;gt f&#xfc;r &quot;leeren&quot; Zustand">
<icon BUILTIN="info"/>
</node>
<node CREATED="1536353133264" ID="ID_597888311" MODIFIED="1536353144626" TEXT="Backtracking in leeren Zustand">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1536357642662" ID="ID_77507334" MODIFIED="1536357654371" TEXT="Basis-Layer wird eigentlich nie mehr besucht">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node COLOR="#338800" CREATED="1536353280436" ID="ID_967254721" MODIFIED="1561827466044" TEXT="Problem: clearFilter()">
<icon BUILTIN="button_ok"/>
<node CREATED="1536353286739" ID="ID_1451254899" MODIFIED="1536353295077" TEXT="bauchen wir das &#xfc;berhaupt">
<icon BUILTIN="help"/>
<node CREATED="1536353310976" ID="ID_809196267" MODIFIED="1536353322688" TEXT="&quot;Filter komplett abschalten&quot;">
<icon BUILTIN="info"/>
</node>
<node CREATED="1536353297546" ID="ID_1841672356" MODIFIED="1536353306185" TEXT="war erst mal nur f&#xfc;r Test">
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#338800" CREATED="1536353335500" ID="ID_698525366" MODIFIED="1536717475219" TEXT="mu&#xdf; Stack der partiellen Auswertungen verwerfen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      wir sind irgendwo im Baum, nicht auf dem Basis-Layer.
    </p>
    <p>
      Und der Basis-Layer steht irgendwo, nicht an der aktuellen Position.
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#60a2d5" DESTINATION="ID_33678789" ENDARROW="Default" ENDINCLINATION="315;0;" ID="Arrow_ID_1930258825" STARTARROW="None" STARTINCLINATION="106;0;"/>
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1536717586774" ID="ID_47823025" MODIFIED="1536717611106" TEXT="mit HIlfsfunktion im TreeExplorer / Expander einfach zu implementieren">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1536115788134" ID="ID_1444917457" MODIFIED="1536281847097" TEXT="Problem: Basis-Typ inferieren">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1536115842002" ID="ID_1601482334" MODIFIED="1536121336222" TEXT="resultiert aus treeExplorer-Aufruf">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1536121365113" ID="ID_1114285918" MODIFIED="1536121373905" TEXT="const STL container unterst&#xfc;tzen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1536115852336" ID="ID_1044191557" MODIFIED="1536281849860" TEXT="mu&#xdf; aber geeignete Funktoren binden">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1536018420398" ID="ID_41628967" MODIFIED="1537050023015" TEXT="Adaptieren der Quell-Datensequenz">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1536018880168" ID="ID_1619721301" MODIFIED="1536326442522" TEXT="macht normalerweise TreeExplorer">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1619721301" ENDARROW="Default" ENDINCLINATION="129;0;" ID="Arrow_ID_1721152439" SOURCE="ID_1700266521" STARTARROW="None" STARTINCLINATION="76;-5;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1536018887223" ID="ID_832237706" MODIFIED="1537050024641" TEXT="speziell: gear switch">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1536018442123" ID="ID_829730232" MODIFIED="1536329759111" TEXT="Abk&#xfc;rzung f&#xfc;r direkten Match">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1536018985450" ID="ID_1700266521" MODIFIED="1536329755895" TEXT="Wert-Typ deduzieren">
<arrowlink DESTINATION="ID_1619721301" ENDARROW="Default" ENDINCLINATION="129;0;" ID="Arrow_ID_1721152439" STARTARROW="None" STARTINCLINATION="76;-5;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1536019008151" ID="ID_29813547" MODIFIED="1536329757422" TEXT="equality comparision in Lambda">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1536018471975" ID="ID_1115030606" MODIFIED="1537050027130" TEXT="Variante f&#xfc;r bidirektionale Suche">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1536018956285" ID="ID_128441804" MODIFIED="1537050078736" TEXT="einfach CursorGear als Quelle verwenden">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1536357666667" ID="ID_886527146" MODIFIED="1561827466049" TEXT="Design-Kritik">
<icon BUILTIN="button_ok"/>
<node CREATED="1536357672802" ID="ID_2301559" MODIFIED="1536357696186" TEXT="aktuelles Design ist minimalistisch aber nicht elegant">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1536357853649" ID="ID_1868098250" MODIFIED="1536357864980" TEXT="API geradliniger als die interne Struktur">
<node CREATED="1536357700806" ID="ID_484166025" MODIFIED="1536357804847" TEXT="der Basis-Layer ist aufgrund des API vorhanden">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...denn
    </p>
    <ul>
      <li>
        es ist praktisch, zun&#228;chst &quot;leer&quot; zu konstruieren
      </li>
      <li>
        es ist verst&#228;ndlicher, wenn alle Bedingungen symmetrisch angegeben werden
      </li>
      <li>
        es ist nat&#252;rlich, da&#223; ein &quot;leerer&quot; Filter alles durchl&#228;&#223;t
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node CREATED="1536357809367" ID="ID_118025251" MODIFIED="1536357830652" TEXT="die clearFilter()-Funktion folgt derselben Logik">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Filter leer == alles durchlassen
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#338800" CREATED="1536357878006" FOLDED="true" ID="ID_1225195123" MODIFIED="1573229898167" TEXT="Aufr&#xe4;umen und nachr&#xfc;sten">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1536357891412" ID="ID_942897075" MODIFIED="1561827466050" TEXT="den Basis-Layer eliminieren">
<linktarget COLOR="#4471b4" DESTINATION="ID_942897075" ENDARROW="Default" ENDINCLINATION="37;-79;" ID="Arrow_ID_537236489" SOURCE="ID_1163131751" STARTARROW="None" STARTINCLINATION="30;44;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1536357900635" ID="ID_646733499" MODIFIED="1536533192790" TEXT="brauche einen &quot;leer&quot;-Status im Filter">
<icon BUILTIN="button_ok"/>
<node CREATED="1536367745114" ID="ID_945289619" MODIFIED="1536367753030" TEXT="explizit als bool-Flag">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1536367754089" ID="ID_649387933" MODIFIED="1536533189307" TEXT="im Filter-Funktor verstecken">
<arrowlink COLOR="#67ac9b" DESTINATION="ID_109911994" ENDARROW="Default" ENDINCLINATION="1326;0;" ID="Arrow_ID_1556921295" STARTARROW="None" STARTINCLINATION="142;0;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1536357917385" ID="ID_1615410357" MODIFIED="1536539160556" TEXT="wenn leer, dann direkt den Basis-Layer konfigurieren">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1536357952068" ID="ID_876149668" MODIFIED="1536539163737" TEXT="nur an die Kette anf&#xfc;gen, wenn nicht leer">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1536539178616" HGAP="1" ID="ID_708494808" MODIFIED="1536632461895" TEXT="defekt" VSHIFT="20">
<icon BUILTIN="broken-line"/>
<node COLOR="#338800" CREATED="1536539306399" FOLDED="true" ID="ID_639133520" MODIFIED="1561827483839" TEXT="Basis-Layer wird zwei mal gepullt">
<icon BUILTIN="button_ok"/>
<node CREATED="1536539323716" ID="ID_1627599615" MODIFIED="1536539353260" TEXT="einmal beim direkten Rekonfigurieren"/>
<node CREATED="1536539357408" ID="ID_834480997" MODIFIED="1536539373834" TEXT="dann nochmal generisch"/>
<node COLOR="#338800" CREATED="1536541001266" ID="ID_1480503625" MODIFIED="1536632457387" TEXT="in else-Zweig ziehen">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1536539386764" ID="ID_487266350" MODIFIED="1536632452032" TEXT="ersch&#xf6;pfter Iter bricht ab">
<arrowlink COLOR="#c5789c" DESTINATION="ID_1288939799" ENDARROW="Default" ENDINCLINATION="99;3;" ID="Arrow_ID_1528021143" STARTARROW="None" STARTINCLINATION="-35;27;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1536539286897" ID="ID_1288939799" MODIFIED="1561827466050" TEXT="overconstrained triggert Assertion">
<linktarget COLOR="#c5789c" DESTINATION="ID_1288939799" ENDARROW="Default" ENDINCLINATION="99;3;" ID="Arrow_ID_1528021143" SOURCE="ID_487266350" STARTARROW="None" STARTINCLINATION="-35;27;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1536631251921" HGAP="51" ID="ID_588077559" MODIFIED="1536631280009" TEXT="sollte stattdessen leer werden" VSHIFT="23">
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#338800" CREATED="1536357967826" ID="ID_634133289" MODIFIED="1561827466050" TEXT="clearFilter()">
<icon BUILTIN="button_ok"/>
<node CREATED="1536357973769" ID="ID_33678789" MODIFIED="1536358316984" TEXT="brauche Unterst&#xfc;tzung vom Expander">
<linktarget COLOR="#60a2d5" DESTINATION="ID_33678789" ENDARROW="Default" ENDINCLINATION="315;0;" ID="Arrow_ID_1930258825" SOURCE="ID_698525366" STARTARROW="None" STARTINCLINATION="106;0;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#338800" CREATED="1536357986087" ID="ID_1097583555" MODIFIED="1536716860209" TEXT="rootCurrent()">
<arrowlink COLOR="#5c8eb4" DESTINATION="ID_255912594" ENDARROW="Default" ENDINCLINATION="1465;0;" ID="Arrow_ID_1700114612" STARTARROW="None" STARTINCLINATION="798;71;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1536358193211" ID="ID_601406114" MODIFIED="1536716881154" TEXT="hebt aktuelle Sequenz auf Root-Level"/>
<node COLOR="#338800" CREATED="1536358204137" ID="ID_1724606451" MODIFIED="1536716878774" TEXT="verwirft den sonstigen Stack komplett"/>
</node>
</node>
<node COLOR="#338800" CREATED="1536792181982" ID="ID_548701484" MODIFIED="1536846067609" TEXT="search direkt per Pr&#xe4;dikat">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...d.h. direkt das Pr&#228;dikat, und nicht eine Funktion, die den Filter konfiguriert
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
<node CREATED="1536792241949" ID="ID_613611906" MODIFIED="1536792249583" TEXT="setzt direkt nur ein neues Pr&#xe4;dikat"/>
<node CREATED="1536792250124" ID="ID_10955924" MODIFIED="1536792257390" TEXT="spart viel Syntax ein">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#435e98" CREATED="1536845264898" ID="ID_1033092941" MODIFIED="1536845289109" TEXT="Problem: capture forward">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1536845290596" ID="ID_1184113483" MODIFIED="1536845467915" TEXT="Lamda soll eine &quot;universelle referenz&quot; capturen">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1536845309386" ID="ID_1593606355" MODIFIED="1536845460398" TEXT="Ausweg: forward-into captured value">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1536845374585" ID="ID_794602132" LINK="https://stackoverflow.com/a/20669290" MODIFIED="1536845438985" TEXT="geht seit C++14"/>
<node CREATED="1536845439219" FOLDED="true" ID="ID_372370252" MODIFIED="1561827483839" TEXT="nur Eclipse / CDT mault herum">
<icon BUILTIN="smily_bad"/>
<node CREATED="1536845496960" ID="ID_1490455562" MODIFIED="1536845539474" TEXT="und deshalb...">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...habe ich noch gar nicht gemerkt, da&#223; das geht,
    </p>
    <p>
      und manchen komischen Workaround implementiert.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1536845594971" ID="ID_1942437093" MODIFIED="1536845602373" TEXT="Eclipse updaten?">
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1536958590136" ID="ID_1848331022" MODIFIED="1537050002466" TEXT="Refactoring Pipeline-Struktur">
<linktarget COLOR="#81445a" DESTINATION="ID_1848331022" ENDARROW="Default" ENDINCLINATION="72;-412;" ID="Arrow_ID_1608996048" SOURCE="ID_1302534828" STARTARROW="None" STARTINCLINATION="672;68;"/>
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1536958603857" ID="ID_610488133" MODIFIED="1536958622137" TEXT="das urspr&#xfc;ngliche Implementierungs-Konzept scheitert">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1536958626605" ID="ID_1277097786" MODIFIED="1536958638227" TEXT="aber ich will an dem Pipeline-Konzept festhalten">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1536958647378" ID="ID_270574796" MODIFIED="1536958666418" TEXT="Konsequenz: Schlu&#xdf; mit der Magie">
<icon BUILTIN="yes"/>
<node COLOR="#338800" CREATED="1536958668327" ID="ID_392267635" MODIFIED="1536977591699" TEXT="keine geheimnisvollen Lambda-Closures mehr">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1536958680150" ID="ID_1572201908" MODIFIED="1561827466054" TEXT="zwei Layer verwenden">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1536958702987" FOLDED="true" ID="ID_1313964418" MODIFIED="1561827483839" TEXT="Basis == trivialer Explorer">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1536958719665" ID="ID_806425486" MODIFIED="1536977595267" TEXT="macht lediglich eine Kopie des Filters">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1536958727368" ID="ID_1206856632" MODIFIED="1536958732419" TEXT="nichts mehr automatisch"/>
</node>
<node COLOR="#338800" CREATED="1536958733950" FOLDED="true" ID="ID_374374485" MODIFIED="1561827483839" TEXT="Dekorator == Steuer-Logik">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1536958744325" ID="ID_151094681" MODIFIED="1536977615339" TEXT="h&#xe4;lt den stepChain_">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1536958772594" FOLDED="true" ID="ID_365283571" MODIFIED="1561827482932" TEXT="klinkt sich in iterNext ein">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1536958792215" FOLDED="true" ID="ID_519507996" MODIFIED="1561827469160" TEXT="TreeExplorer: custom-Layer">
<arrowlink COLOR="#61afb3" DESTINATION="ID_686602920" ENDARROW="Default" ENDINCLINATION="-230;613;" ID="Arrow_ID_1710661685" STARTARROW="None" STARTINCLINATION="1241;-1305;"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1536973229630" ID="ID_1567071992" MODIFIED="1536973238830" TEXT="brauche doch keinen Custom-Layer">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1536973239964" ID="ID_1858748865" MODIFIED="1536973282118" TEXT="ist besser ohne....">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      weil ich dann auf dem IterChainSearch unmittelbar die builder-Funktionen definieren kann
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#338800" CREATED="1536977661129" FOLDED="true" ID="ID_700598895" MODIFIED="1561827469160" TEXT="Vorsicht: brauche nochmal IterableDecorator">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      denn: TreeExplorer == IterableDecorator&lt; Pipeline &gt;
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
<node CREATED="1536977678590" ID="ID_747407291" MODIFIED="1537022078175" TEXT="sonst wird meine spezielle IterNext() nicht aufgerufen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      der oberste Layer, also hier IterChainSearch
    </p>
    <p>
      ist selbst ein StateCore. Also brauche ich noch einen Dekocator
    </p>
    <p>
      Wenn der fehlt, wird der n&#228;chste darunterliegende Decorator gepullt,
    </p>
    <p>
      und der wickellt direkt den Expander ein
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="broken-line"/>
</node>
<node CREATED="1537022084564" ID="ID_447764404" MODIFIED="1537022104224" TEXT="brauche doch einen top-Level TreeExplorer + custom-Layer">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1537022109392" ID="ID_1885636592" MODIFIED="1537022142275" STYLE="fork" TEXT="pragmatisch: direkt auch operator++ &#xfc;berschreiben">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1536958815668" FOLDED="true" ID="ID_327461551" MODIFIED="1561827482932">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      konfiguriert <i>danach direkt</i>&#160;den Filter
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1536969507092" ID="ID_1318810550" MODIFIED="1536977610592" TEXT="braucht dazu eine Hintert&#xfc;r im Explorer-Layer">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1536969537728" ID="ID_1955805225" MODIFIED="1536969691123" TEXT="kann/darf diese nicht f&#xfc;r Basis-Iterator nutzen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...weil der Basis-Iterator (also der Template-Parameter SRC)
    </p>
    <p>
      explizit und absichtlich einen anderen Typ haben <i>k&#246;nnte,</i>&#160;als der expandierte Kind-Iterator.
    </p>
    <p>
      Das ist ein wesentliches Feature dieses Expander-Designs, w&#252;rde aber leider eine
    </p>
    <p>
      komplett generische Accessor-Funktion unm&#246;glich machen (das Template w&#252;rde in
    </p>
    <p>
      einem Solchen Fall insgesamt vom Compiler zur&#252;ckgewiesen)
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1537022195013" ID="ID_1801625619" MODIFIED="1537050004022" TEXT="Korrektheit der Auswertungs-Logik">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1537022206627" ID="ID_983878679" MODIFIED="1561827466055" TEXT="mit komplexem Funktor">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1537022226504" FOLDED="true" ID="ID_1825074472" MODIFIED="1561827483839" TEXT="faul?">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      sausage-bacon-tomato-and-sausage-spam-spam-bacon-spam-tomato-and-spam-spam-bacon-tomato-and-spam-bacon-tomato-and-spam-tomato-and-spam
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
<node CREATED="1537024323509" ID="ID_22995423" MODIFIED="1537024327665" TEXT="ja">
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1537024330564" ID="ID_1923248765" MODIFIED="1537024353996" TEXT="das Element, auf das wir backtracken, kommt raus"/>
</node>
<node COLOR="#338800" CREATED="1537024363024" ID="ID_197150338" MODIFIED="1537024376343" TEXT="mu&#xdf; nach Backtracking explizit neu aufsetzen und hochspulen">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1537024386500" ID="ID_792998865" MODIFIED="1537024403713" TEXT="schon besser....">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      sausage-bacon-tomato-and-spam-spam-bacon-spam-tomato-and-spam-bacon-tomato-and-bacon-tomato-and-tomato-and
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#338800" CREATED="1537022216506" ID="ID_794497840" MODIFIED="1537050005604" TEXT="mit Backtracking">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1535894132587" ID="ID_1888561007" MODIFIED="1537050042593" TEXT="Unit-Test: IterChainSearch_test">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1536018569210" ID="ID_1083474400" MODIFIED="1536018578102" TEXT="Test-Fixture">
<icon BUILTIN="button_ok"/>
<node CREATED="1536018580388" ID="ID_186304417" MODIFIED="1536018584425" TEXT="lovely spam">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
<node CREATED="1536121351659" ID="ID_1756544626" MODIFIED="1536121358722" TEXT="const container">
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#338800" CREATED="1536018539621" ID="ID_1857591081" MODIFIED="1536717648741" TEXT="simpleSearch()">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1536018544936" ID="ID_1750921303" MODIFIED="1537050039988" TEXT="chainedIteration()">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1536018552912" ID="ID_385004210" MODIFIED="1537050041216" TEXT="backtracking()">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1536015468698" ID="ID_1045359957" MODIFIED="1557498707236" TEXT="utils">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1536015471377" ID="ID_1732583592" MODIFIED="1557498707236" TEXT="regex-Iteratoren">
<icon BUILTIN="hourglass"/>
<node CREATED="1536015489143" ID="ID_979562288" MODIFIED="1557498707236" TEXT="std::sregex_token_itertor"/>
<node CREATED="1536015509308" ID="ID_1011220828" MODIFIED="1557498707236" TEXT="geschickt verpacken"/>
<node CREATED="1536015513076" ID="ID_849722427" MODIFIED="1557498707236" TEXT="den Regex-Include opaque halten"/>
<node CREATED="1536015525154" ID="ID_1039059758" MODIFIED="1557498707236" TEXT="soll mal in util.hpp"/>
</node>
<node COLOR="#338800" CREATED="1685583627381" FOLDED="true" ID="ID_1193075176" MODIFIED="1685631528263" TEXT="iterierbare Integer-Sequenz">
<linktarget COLOR="#64a3bc" DESTINATION="ID_1193075176" ENDARROW="Default" ENDINCLINATION="-872;80;" ID="Arrow_ID_49892110" SOURCE="ID_1477861363" STARTARROW="None" STARTINCLINATION="-1069;-69;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1685583658136" ID="ID_208810625" MODIFIED="1685631307702" TEXT="Basis-Baustein f&#xfc;r diverse Iterations-Schemata">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#435e98" CREATED="1685584188194" ID="ID_1817394648" MODIFIED="1685631521912" TEXT="NumIter gibt&apos;s schon in iter-adapter.hpp &#x2014; ausreichend?">
<icon BUILTIN="idea"/>
<node COLOR="#435e98" CREATED="1685584668136" ID="ID_1575464239" MODIFIED="1685630942654" TEXT="nebenbei: warum in iter-adapter #include &lt;iterator&gt; ?">
<font NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="help"/>
<node COLOR="#338800" CREATED="1685630944569" ID="ID_263069891" MODIFIED="1685630959773" TEXT="kann problemlos weg">
<icon BUILTIN="idea"/>
</node>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1685584919441" ID="ID_340863958" MODIFIED="1685584940405" TEXT="NumIter wird bisher noch &#xfc;berhaupt nicht verwendet!">
<icon BUILTIN="idea"/>
<node CREATED="1685584987258" ID="ID_92718284" MODIFIED="1685584996537" TEXT="doch: in FormatHelper_test">
<icon BUILTIN="stop-sign"/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1685585015569" ID="ID_808211730" MODIFIED="1685585032068" TEXT="hilfsfunktion eachNum()">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1685585034287" ID="ID_1701190023" MODIFIED="1685585152408" TEXT="ein gef&#xe4;hrlich allgemeiner Name">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      das hei&#223;t, diese Funktion darf es nur einmal geben, und das mu&#223; dann &#187;die&#171; einschl&#228;gige Implementierung sein, ohne Wenn und Aber
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1685584692820" ID="ID_1638518253" MODIFIED="1685631035675" TEXT="ggfs eine Variante ohne Stop-Bedingung schaffen?">
<icon BUILTIN="hourglass"/>
</node>
<node COLOR="#338800" CREATED="1685584741200" ID="ID_1542512900" MODIFIED="1685631186794" TEXT="IterStateCore-Adapter schaffen">
<linktarget COLOR="#91c390" DESTINATION="ID_1542512900" ENDARROW="Default" ENDINCLINATION="-103;177;" ID="Arrow_ID_1478600662" SOURCE="ID_1531711213" STARTARROW="None" STARTINCLINATION="-149;129;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1685584762627" ID="ID_336248643" MODIFIED="1685584825968" TEXT="das Gegenst&#xfc;ck zu IterStateWrapper">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      also...
    </p>
    <ul>
      <li>
        nimmt einen Lumiera Forward-Iterator
      </li>
      <li>
        verpackt ihn als &#187;state-core&#171;
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node COLOR="#435e98" CREATED="1685584828250" ID="ID_500985590" MODIFIED="1685630992855" TEXT="sinnvoll hier? oder doch in TreeExplorer?">
<icon BUILTIN="help"/>
<node CREATED="1685630996913" ID="ID_1014456461" MODIFIED="1685631016990" TEXT="pa&#xdf;t hier perfekt (auch f&#xfc;r Doku)"/>
<node CREATED="1685631002757" ID="ID_1375154872" MODIFIED="1685631008736" TEXT="braucht keinerlei weitere Hilfsmittel"/>
</node>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1685631328816" ID="ID_1360074797" MODIFIED="1685631519429" TEXT="ja: vorerst ausreichend">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      einfach und minimalistisch implementiert &#8212; und zudem sind <i>undendliche Folgen</i>&#160;nur etwas f&#252;r Mathematiker und Freunde der funktionalen Programmierung; in der Praxis braucht man <b>zwingend</b>&#160;stets eine Abbruch-Bedingung, allein schon weil sonst die Engine &#8222;Amok laufen&#8220; k&#246;nnte (man bedenke nur, da&#223; die interne Zeit-Repr&#228;sentation bereits <i>lange vor der Frame-Nummer </i>wrappt)
    </p>
  </body>
</html></richcontent>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#338800" CREATED="1685583679366" ID="ID_132953496" MODIFIED="1685631288209">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <b>optional</b>&#160;die M&#246;glichkeit f&#252;r einen getriggerten Stop vorsehen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1685583844103" ID="ID_1089487517" MODIFIED="1685631284892" TEXT="until-Dekorator">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1685584282950" ID="ID_537873518" MODIFIED="1685631096769" TEXT="wo ansiedeln?">
<icon BUILTIN="help"/>
<node CREATED="1685584292265" ID="ID_1449788515" MODIFIED="1685584302429" TEXT="iter-adapter w&#xe4;re sch&#xf6;n..."/>
<node CREATED="1685584303269" ID="ID_535538930" MODIFIED="1685584316100" TEXT="aber der hat kein #include &lt;functional&gt;">
<icon BUILTIN="stop-sign"/>
</node>
<node COLOR="#5b280f" CREATED="1685584323374" ID="ID_553274601" MODIFIED="1685631108394" TEXT="itertools w&#xe4;re OK (mit Einschr&#xe4;nkung)">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <ul>
      <li>
        Hilfsfunktionen fehlen (z.B. Adaptieren des Funktors an StateCore)
      </li>
      <li>
        TreeExplorer sollte itertools nicht includieren (gegenw&#228;rtig tut er's aber nur wegen IterSource, und das k&#246;nnte man refactorn)
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#338800" CREATED="1685584350243" ID="ID_72915504" MODIFIED="1685631094358" TEXT="sonst: direkt in TreeExplorer">
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1685584477881" ID="ID_1127172208" MODIFIED="1685631208219" TEXT="sollte eine Trigger-Funktion auswerten und daraufhin destruktiv stoppen">
<icon BUILTIN="info"/>
</node>
<node COLOR="#338800" CREATED="1685584554975" ID="ID_1326522890" MODIFIED="1685631217868" TEXT="sehr einfach als StateCore zu implementieren">
<icon BUILTIN="button_ok"/>
<node CREATED="1685584586562" ID="ID_1932788934" MODIFIED="1685584592110" TEXT="ganz analog wie Filter"/>
<node COLOR="#435e98" CREATED="1685584593570" ID="ID_1531711213" MODIFIED="1685631233266" TEXT="profitiert von einer &#xbb;IterStateCore&#xab; implementierung">
<arrowlink COLOR="#91c390" DESTINATION="ID_1542512900" ENDARROW="Default" ENDINCLINATION="-103;177;" ID="Arrow_ID_1478600662" STARTARROW="None" STARTINCLINATION="-149;129;"/>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1685631237101" ID="ID_301315375" MODIFIED="1685631283904" TEXT="while-Dokorator">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1685631243653" ID="ID_1585823301" MODIFIED="1685631281410" TEXT="gegebenes Pr&#xe4;dikat negiert verpacken">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1685631253952" ID="ID_688524471" MODIFIED="1685631280458" TEXT="&#x3bb; verschieben und Argument-Typ abgreifen">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1695850005910" ID="ID_673181142" MODIFIED="1695851233120" TEXT="&#xbb;Either&#xab; : lib::Result">
<linktarget COLOR="#fdfbd7" DESTINATION="ID_673181142" ENDARROW="Default" ENDINCLINATION="-862;-131;" ID="Arrow_ID_956072053" SOURCE="ID_1274858318" STARTARROW="None" STARTINCLINATION="-678;66;"/>
<linktarget COLOR="#fdfbd7" DESTINATION="ID_673181142" ENDARROW="Default" ENDINCLINATION="-977;134;" ID="Arrow_ID_1350491310" SOURCE="ID_1460243569" STARTARROW="None" STARTINCLINATION="-878;104;"/>
<node CREATED="1695850798876" ID="ID_944309627" MODIFIED="1695850810799" TEXT="gebaut als generischer Wrapper">
<node CREATED="1695850813548" ID="ID_1035651286" MODIFIED="1695850824213" TEXT="der Value-Type liegt also zur compile-Zeit fest"/>
<node CREATED="1695850824801" ID="ID_826042426" MODIFIED="1695850833764" TEXT="er kann aber eine beliebige Exception fangen"/>
<node CREATED="1695850834428" ID="ID_1544865707" MODIFIED="1695850857976" TEXT="und hat einen pr&#xfc;fbaren &#xbb;success&#xab; / &#xbb;failure&#xab; state"/>
</node>
<node CREATED="1695850868467" ID="ID_570550847" MODIFIED="1695850893049" TEXT="Eigenschaften">
<node CREATED="1695850893945" ID="ID_1051379159" MODIFIED="1695850911427" TEXT="Result&lt;void&gt; als Baiss (nur Exception / Erfolg)"/>
<node CREATED="1695779117581" ID="ID_505417061" MODIFIED="1695851004118" TEXT="perfect forwarding&#xa0;per direkt Konstruktor erm&#xf6;glicht">
<arrowlink COLOR="#7c86a6" DESTINATION="ID_1103669600" ENDARROW="Default" ENDINCLINATION="-1340;79;" ID="Arrow_ID_344305057" STARTARROW="None" STARTINCLINATION="-2530;150;"/>
</node>
<node CREATED="1695851007782" ID="ID_1355815987" MODIFIED="1695851113493" TEXT="Konstruktor zum Aufruf beliebiger &#xbb;callables&#xab;">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      das bedeutet: man kann alles, was per std::invoke aufrufbar ist, in eine Ergebnis-Repr&#228;sentation materialisieren. Im Besonderen nivelliert das automatisch (zur compile-Zeit) die Unterscheidung void / R&#252;ckgabewert. Jedwede Exception beim Aufruf wird gefangen
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1695851116458" ID="ID_959394199" MODIFIED="1695851131276" TEXT="left-biassed (monaden-artig)">
<node CREATED="1695851159396" ID="ID_666656019" MODIFIED="1695851168759" TEXT="get&lt;TY&gt;()"/>
<node CREATED="1695851134800" ID="ID_1354531664" MODIFIED="1695851149258" TEXT="or_else(&#x3bb;)"/>
<node CREATED="1695851149966" ID="ID_1505972862" MODIFIED="1695851154705" TEXT="value_or(default)"/>
</node>
<node CREATED="1695851198847" ID="ID_1666239217" MODIFIED="1695851220353" TEXT="Wert per direkter Typkonvertierung (throws!)">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1695851240025" ID="ID_1334071764" MODIFIED="1695851245041" TEXT="Result_test">
<icon BUILTIN="info"/>
</node>
</node>
<node CREATED="1573230287134" ID="ID_1958309835" MODIFIED="1573230291318" TEXT="Concepts">
<icon BUILTIN="hourglass"/>
<node CREATED="1573230307678" ID="ID_1856823830" MODIFIED="1573230336518" TEXT="&#xbb;Lumiera Forward Iterator&#xab; integrieren"/>
</node>
<node CREATED="1540682664865" ID="ID_1702211999" MODIFIED="1557498707236" TEXT="Metaprogramming">
<node CREATED="1540682674455" ID="ID_1625152878" MODIFIED="1557498707236" TEXT="Typliste filtern">
<node CREATED="1540682680286" ID="ID_1172485112" MODIFIED="1557498707236" TEXT="nach canConvert">
<node CREATED="1540682731631" ID="ID_1059841081" MODIFIED="1557498707236" TEXT="die Typen, in die man umwandeln kann">
<icon BUILTIN="info"/>
</node>
<node CREATED="1540682747461" ID="ID_1097757447" MODIFIED="1557498707236" TEXT="sinnvoll zum Binden an Rec&lt;GenNode&gt;">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1540682686558" ID="ID_349304672" MODIFIED="1576282357968" TEXT="aber das eigentliche Problem ist...">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...wie bekommt man dann den konvertierten Wert 'raus.
    </p>
    <p>
      Visitor ist entweder void, oder bool
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node CREATED="1697906135803" ID="ID_47415467" MODIFIED="1697927623614" TEXT="Function utils">
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1697906141042" FOLDED="true" ID="ID_334205441" MODIFIED="1697927708161" TEXT="lib::meta::_Fun">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="forward"/>
<node CREATED="1697906147625" ID="ID_940224255" MODIFIED="1697906184451">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      damit kann man von jedem <i>&#187;Invocable&#171; </i>eine Signatur abgreifen
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#690f14" CREATED="1697906227094" ID="ID_1918952021" LINK="https://issues.lumiera.org/ticket/994" MODIFIED="1697906274433" TEXT="inzwischen auch f&#xfc;r &#x3bb; verwendbar (siehe #994)">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1697906296845" ID="ID_1333452635" MODIFIED="1697906312015" TEXT="potentielle Gefahr: generische &#x3bb;">
<node CREATED="1697906315163" ID="ID_1259843032" MODIFIED="1697906324382" TEXT="diese sind Templates"/>
<node CREATED="1697906360413" ID="ID_1391705943" MODIFIED="1697906588857" TEXT="man mu&#xdf; sie instantiieren &#x2014; mit vorgegebenen Argument-Typ(en)">
<linktarget COLOR="#ee5278" DESTINATION="ID_1391705943" ENDARROW="Default" ENDINCLINATION="161;7;" ID="Arrow_ID_1833361444" SOURCE="ID_648143154" STARTARROW="None" STARTINCLINATION="-42;-40;"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1697906435810" FOLDED="true" ID="ID_717292125" MODIFIED="1697927695084" TEXT="beliebige funktions-artige Member analysieren">
<linktarget COLOR="#6e85a1" DESTINATION="ID_717292125" ENDARROW="Default" ENDINCLINATION="-1818;113;" ID="Arrow_ID_979493428" SOURCE="ID_118455784" STARTARROW="None" STARTINCLINATION="-869;-95;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1697905686767" ID="ID_1640341474" MODIFIED="1697927541329" TEXT="lib::meta::_Fun f&#xfc;r einfache Member-Pointer erg&#xe4;nzen">
<icon BUILTIN="button_ok"/>
<node CREATED="1697905716970" ID="ID_1853665060" MODIFIED="1697905729917" TEXT="unterst&#xfc;tzt bisher nur Function-Member-Pointer"/>
<node CREATED="1697905731145" ID="ID_1467529623" MODIFIED="1697906017054" TEXT="die Erweiterung erscheint mir relativ ungef&#xe4;hrlich">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...denn man verwendet diese Metafunktion ja stets explizit mit einem gegebenen Typ, und im Falle eines Ausdrucks mu&#223; man noch einen decltype() darum wickeln. M&#246;gliche Probleme:
    </p>
    <ul>
      <li>
        der Ausdruck in decltype()&#160;ist syntaktisch gar nicht valide (z.B. Scope::member&#160;&#160;bei einer Member-Funktion)
      </li>
      <li>
        der sich ergebende Typ ist keine Funktion, und deshalb sind die nested-typedefs (Sig, Args...) nicht vorhanden &#10233; compile Fehler bzw. SFINAE
      </li>
    </ul>
  </body>
</html></richcontent>
<node CREATED="1697906024514" ID="ID_1643639913" MODIFIED="1697906047450" TEXT="m&#xf6;gliche Gefahr: generische &#x3bb;"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1697906053470" ID="ID_648143154" MODIFIED="1697906588857" TEXT="wenn man diese per negativ-Check zu erkennen versucht">
<arrowlink COLOR="#ee5278" DESTINATION="ID_1391705943" ENDARROW="Default" ENDINCLINATION="161;7;" ID="Arrow_ID_1833361444" STARTARROW="None" STARTINCLINATION="-42;-40;"/>
<icon BUILTIN="clanbomber"/>
</node>
<node CREATED="1697906594973" ID="ID_1834320957" MODIFIED="1697906613333" TEXT="lib::IterExplorer macht das">
<icon BUILTIN="info"/>
<node CREATED="1697906663564" ID="ID_1606991462" MODIFIED="1697906676958" TEXT="aber an einer Stelle, an der man einen Funktor &#xfc;bergibt"/>
<node CREATED="1697906678426" ID="ID_1127757601" MODIFIED="1697906784367" TEXT="ein blanken Member-Pointer macht an dieser Stelle &#xfc;berhaupt keinen Sinn">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Beispiel: explore(elements).transform(....irgendwas....)
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1697906733939" ID="ID_798052808" MODIFIED="1697906747346" TEXT="m&#xf6;glicherweise ist die Fehlermeldung dann aber verwirrend">
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
<node CREATED="1697905742823" ID="ID_1985279591" MODIFIED="1697905792612" TEXT="es gibt ja immer noch den bool-check (&#x27fc; ist eine Funktion)"/>
</node>
<node COLOR="#338800" CREATED="1697906799162" ID="ID_1510624814" MODIFIED="1697927539161" TEXT="Hilfsmittel f&#xfc;r einfache Signatur-Checks">
<icon BUILTIN="button_ok"/>
<node CREATED="1697925677041" ID="ID_1103856898" MODIFIED="1697925691803" TEXT="has_Sig w&#xe4;re eigentlich bereits hinreichend">
<node CREATED="1697925743952" ID="ID_949441284" MODIFIED="1697925765736" TEXT="man k&#xf6;nnte einen Konstruktor verwenden und template argument deduction"/>
<node CREATED="1697925766453" ID="ID_503135543" MODIFIED="1697925790856" TEXT="weiteres Problem: wenn das &#xfc;bergebene Objekt &#xfc;berhaupt keine Funktion ist...."/>
</node>
<node CREATED="1697925692678" ID="ID_1669099345" MODIFIED="1697925712517" TEXT="aber die Reihenfolge der Template-Argumente ist genau falsch herum"/>
<node CREATED="1697925713308" ID="ID_770980099" MODIFIED="1697925732217" TEXT="dann besser eine free-Function">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1697925795562" ID="ID_340665610" MODIFIED="1697925947597" TEXT="und catch-all-Specialisation">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      has_Sig sollte keine Compile-Fehler ausl&#246;sen, wenn der gegebene Typ &#252;berhaupt nicht Funktions-artig ist (&#10233; denn dann ist die Aussage trivialer Weise wiederlegt; was gar keine Signatur hat, kann auch nicht eine bestimmte Signatur haben). Realisieren kann man das &#252;ber den bool-Check, den ich vor einiger Zeit bereits in lib::meta::_Fun eingebaut habe (im Zusammenhang mit IterExplorer)
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1697925949821" ID="ID_1361817287" MODIFIED="1697926000759" TEXT="dann auch gleich noch ein spezielles ASSERT-Macro bereitstellen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Warum Macro? damit man per STRINGIFY() einen lesbareren Hinweis in die Static-Assertion bekommt
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1700669580665" FOLDED="true" ID="ID_1852128670" MODIFIED="1700703920205" TEXT="Funktor-Manipulationen">
<icon BUILTIN="hourglass"/>
<icon BUILTIN="pencil"/>
<node CREATED="1700669596447" ID="ID_1886923243" MODIFIED="1700669617888" TEXT="einige Werkzeuge hatte ich vor sehr langer Zeit schon gebaut....">
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1700669619116" ID="ID_1944223150" MODIFIED="1700669643528" TEXT="diese m&#xfc;&#xdf;ten schrittweise modernisiert werden">
<icon BUILTIN="bell"/>
</node>
<node CREATED="1700669672781" ID="ID_1958398990" MODIFIED="1700669703266" TEXT="Function-composition: lib::meta::func::chained">
<node CREATED="1700669726758" ID="ID_611933272" MODIFIED="1700669730829" TEXT="function-closure.hpp"/>
<node CREATED="1700669750587" ID="ID_1086294542" MODIFIED="1700669760357" TEXT="Type-Binding helper _Chain&lt;FUN1,FUN2&gt;"/>
<node COLOR="#338800" CREATED="1700669762041" ID="ID_1323418254" MODIFIED="1700670034955" TEXT="11/23 auf variadic-&#x3bb; umgestellt">
<linktarget COLOR="#20b763" DESTINATION="ID_1323418254" ENDARROW="Default" ENDINCLINATION="1071;87;" ID="Arrow_ID_636352614" SOURCE="ID_80963960" STARTARROW="None" STARTINCLINATION="-916;62;"/>
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1700669857972" HGAP="52" ID="ID_507646276" MODIFIED="1700670005919" TEXT="Vorsicht Falle" VSHIFT="4">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      der R&#252;ckgabetyp mu&#223; explizit deklariert werden &#8212; &#228;hnlich wie decltype(auto) &#8212; denn es kann sein, da&#223; die zusammengesetzte Funktion eine Referenz liefert
    </p>
  </body>
</html></richcontent>
<edge COLOR="#528497"/>
<font NAME="SansSerif" SIZE="10"/>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
<node CREATED="1700670186153" ID="ID_753645097" MODIFIED="1700670190204" TEXT="partial-Application">
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1700670130760" ID="ID_1114511607" MODIFIED="1700686530654" TEXT="partielle Funktions-Anwendung modernisieren">
<linktarget COLOR="#994a7b" DESTINATION="ID_1114511607" ENDARROW="Default" ENDINCLINATION="1203;76;" ID="Arrow_ID_448010949" SOURCE="ID_67786691" STARTARROW="None" STARTINCLINATION="615;22;"/>
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1700672135424" ID="ID_1984801808" MODIFIED="1700672141808" TEXT="was ist daran erhaltenswert?">
<icon BUILTIN="help"/>
<node CREATED="1700672144271" ID="ID_1090292620" MODIFIED="1700672187951" TEXT="das Funktions-Manipulations-API">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...also eine Funktion, der man andere Funktoren gibt, und diese baut einen manipulierten Funktor. Sowas ist <i>extrem n&#252;tzlich...</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1700672199664" ID="ID_912990030" MODIFIED="1700672350154" TEXT="das generische bindFirst/bindLast &#x2014; wenn dann aber verallgemeinert">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      also die M&#246;glichkeit, Argumente durch Funktions-artige &#187;Binder&#171; zu schlie&#223;en, die dann aber erst zum Aufruf-Zeitpunkt aktiviert werden. In verallgemeinterter Form k&#246;nnten das beliebige passende Funktoren sein, die auch weiterhin Argumente ben&#246;tigen &#8212; und es m&#252;&#223;te ein neuer Funktionstyp synthetisiert werden (klingt schlimmer als es tats&#228;chlich umzusetzen ist, da wir so viele Tuple-Manipulationsfunktionen haben)
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1700672372605" ID="ID_980669454" MODIFIED="1700672383347" TEXT="was weg mu&#xdf;...">
<icon BUILTIN="yes"/>
<node CREATED="1700672384495" ID="ID_1640467092" MODIFIED="1700672393458" TEXT="die HIlfs-Konstrukte"/>
<node CREATED="1700672393926" ID="ID_1776633246" MODIFIED="1700672401537" TEXT="die Argument-Tupel, die gespeichert werden"/>
<node CREATED="1700672402029" ID="ID_566925298" MODIFIED="1700672412031" TEXT="jedwede Kopie mu&#xdf; durch perfect-Forwarding ersetzt werden"/>
<node CREATED="1700672479034" ID="ID_1530548191" MODIFIED="1700672699321" TEXT="nach M&#xf6;glichkeit nur noch Lambdas liefern (keine std::function mehr)">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      warum? weil das leichtgewichtiger und inline-freundlicher ist. Ein &#955; ist ja erst mal eine anonyme Klasse mit jedweder Storage direkt inline; es l&#228;&#223;t sich per Kopie und Verschiebung handhaben. Wer damit Probleme hat, kann sich das resultierende Lambda immer in eine Funktion packen, und den daf&#252;r passenden Funktor-Typ sollten wir auch als Metafunktion anbieten. Der Nachteil (oder auch Vorteil) von std::function ist, da&#223; das ein Objekt fester (relativ begrenzter) Gr&#246;&#223;e ist, und notfalls automatisch ein Erweiterungsspeicher auf dem Heap mitgef&#252;hrt wird.
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#338800" CREATED="1700672430249" HGAP="136" ID="ID_975422639" MODIFIED="1700686519692" TEXT="schrittweise vorgehen...." VSHIFT="-7">
<icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1700672449602" ID="ID_1457801203" MODIFIED="1700680981796" TEXT="erst mal applyFirst neu implementieren">
<icon BUILTIN="button_ok"/>
<node CREATED="1700680821756" ID="ID_1820837495" MODIFIED="1700680834943" TEXT="mit einem generic &#x3bb; ist es einfach..."/>
<node CREATED="1700680835467" ID="ID_1512849078" MODIFIED="1700680849404" TEXT="aber das Resultat ist keine Funktion (sondern ein Template)"/>
<node CREATED="1700680854471" ID="ID_908786228" MODIFIED="1700680868809" TEXT="besser: die neue Argument-Liste explizit umbauen und verwenden"/>
<node CREATED="1700680871677" ID="ID_290742590" MODIFIED="1700680955304" TEXT="Prototyp lokal im Test verifiziert: geht auch mit Referenzen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      und zwar
    </p>
    <ul>
      <li>
        Referenz irgendwo in den <i>sonstigen Argumenten</i>
      </li>
      <li>
        Referenz als das Argument, das gebunden wird (&#10230; bleibt eine Referenz)
      </li>
      <li>
        den Funktor selber als Referenz &#252;bergeben (&#10230; bleibt eine Referenz, man kann die konkrete Funktion austauschen)
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1700680640125" ID="ID_1600167237" MODIFIED="1700680810430" TEXT="neuer Trick: _Fun&lt;Sig&gt; als Transporter f&#xfc;r variadische Argument-Typen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...das bekannte leidige Problem: <i>argument packs</i>&#160;sind keine Typen; man kann sie daher nicht verarbeiten und weitergeben; stattdessen m&#252;sen wir einen Typ <i>mit varidadic parameters</i>&#160;verwenden, um am Zielort in der Argumentliste dagegen zu matchen. Da lib::meta::_Fun mehr und mehr zum Analyse-Tool f&#252;r Funktions-artige Entit&#228;ten wird, bietet es sich an, diese Metafunktion selber auch als Transporter f&#252;r Funktionssignaturen zu verwenden
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1700680962986" ID="ID_417878820" MODIFIED="1700686489900" TEXT="applyFirst / applyLast gegen neue Implementierung austauschen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1700686490730" ID="ID_270581080" MODIFIED="1700686505300" TEXT="zus&#xe4;tzlicher Test: auch Referenzen werden korrekt gehandhabt">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#fafe99" COLOR="#fa002a" CREATED="1700695114162" ID="ID_500305347" MODIFIED="1700695192940" TEXT="latente Gefahr">
<linktarget COLOR="#fe160e" DESTINATION="ID_500305347" ENDARROW="Default" ENDINCLINATION="261;671;" ID="Arrow_ID_1976339789" SOURCE="ID_1002912269" STARTARROW="None" STARTINCLINATION="787;-1438;"/>
<icon BUILTIN="broken-line"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1700695163411" ID="ID_1909834293" MODIFIED="1700695354305" TEXT="Binden von ownership-managing objects">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      wenn man ein Objekt wie einen unique_ptr oder einen vector <b>per value</b>&#160; an den partial-application-Functor &#252;bergibt, dann wandert die Ownership zu der Kopie, die in der Closure gespeichert ist. Mit dem ersten Aufruf der Funktion wander die Ownership weiter zum jeweils gebunden Funktions-Argument, und hinterl&#228;&#223;t in der Closure ein &#187;verbrauchtes Objekt&#171;. Weitere Aufrufe der gleichen Funktion bekommen dann dieses potentiell invalidierte Objekt.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="clanbomber"/>
</node>
<node CREATED="1700695355441" ID="ID_689943340" MODIFIED="1700695375247" TEXT="den Fall kann man nicht generisch ausschlie&#xdf;en"/>
<node CREATED="1700695395388" ID="ID_1350839643" MODIFIED="1700695411652" TEXT="...denn er ist ununterscheidbar von einfacher Value-Semantik"/>
<node CREATED="1700695452420" ID="ID_1957737949" MODIFIED="1700695465479" TEXT="nebenbei gesagt, auch die ganzen Gefahren mit Referenzen bestehen hier"/>
<node CREATED="1700695466163" ID="ID_1802183241" MODIFIED="1700695479173" TEXT="und das ist t&#xfc;ckisch, weil der Aufruf so sch&#xf6;n abstrakt aussieht"/>
<node CREATED="1700695502549" ID="ID_469484936" MODIFIED="1700695511389" TEXT="(wei&#xdf;nichtwasichmachensoll)">
<font NAME="SansSerif" SIZE="10"/>
<node COLOR="#9c1d18" CREATED="1700695502549" HGAP="25" ID="ID_1903078800" MODIFIED="1700703914915" TEXT="@warning" VSHIFT="8">
<font NAME="SansSerif" SIZE="10"/>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1573230375839" ID="ID_270568302" MODIFIED="1573230382276" TEXT="policies">
<node CREATED="1573230393523" ID="ID_1929317164" MODIFIED="1573230398694" TEXT="wie viel const-correctness?">
<node CREATED="1573230673519" ID="ID_269010776" MODIFIED="1573230690445" TEXT="prefer immutable over const-correct">
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1573230399348" ID="ID_963172794" MODIFIED="1573230404213" TEXT="Rolle der Iteration">
<node CREATED="1573230406221" ID="ID_1939609996" MODIFIED="1573230435834" TEXT="als funktionale Quelle">
<arrowlink COLOR="#3f76e9" DESTINATION="ID_333704322" ENDARROW="Default" ENDINCLINATION="-542;0;" ID="Arrow_ID_1390962202" STARTARROW="None" STARTINCLINATION="183;24;"/>
</node>
</node>
<node CREATED="1573230456930" ID="ID_1636521851" MODIFIED="1573230459836" TEXT="utils">
<node CREATED="1573230461194" ID="ID_225640230" MODIFIED="1573230465260" TEXT="knapp halten">
<icon BUILTIN="yes"/>
<node CREATED="1573230469672" ID="ID_1095270711" MODIFIED="1573230478491" TEXT="minimale Includes haben absolute Priorit&#xe4;t"/>
<node CREATED="1573230497284" ID="ID_1008077184" MODIFIED="1573230520598" TEXT="Subgruppen">
<node CREATED="1573230502540" ID="ID_1611372107" MODIFIED="1573230505064" TEXT="meta/util"/>
<node CREATED="1573230513506" ID="ID_197961459" MODIFIED="1573230516350" TEXT="ID-Helper"/>
</node>
</node>
<node CREATED="1573230535302" ID="ID_1413538720" MODIFIED="1576282357968" TEXT="&quot;contains&quot; / Suche nur &#xfc;ber Container">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <ul>
      <li>
        kein allgemeines Such-Framework bauen!
      </li>
      <li>
        den Begriff des &quot;Containers&quot; knapp halten: was keine const_reference bietet, ist kein Container
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1696123512914" ID="ID_1907944246" MODIFIED="1696123517031" TEXT="Fehlerbehandlung">
<node CREATED="1696123519551" ID="ID_1260806652" MODIFIED="1696123525010" TEXT="Status-quo">
<node CREATED="1696123526614" ID="ID_494414016" MODIFIED="1696123536532" TEXT="zwei konkurrierende Systeme"/>
<node CREATED="1696123537225" ID="ID_1573590963" MODIFIED="1696123548249" TEXT="Versuch, sie miteinander zu verbinden"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1696109905830" ID="ID_1320347721" MODIFIED="1696123617052" TEXT="konzeptioneller Rahmen nicht klar">
<arrowlink COLOR="#fdcfce" DESTINATION="ID_853481552" ENDARROW="Default" ENDINCLINATION="-959;56;" ID="Arrow_ID_1749710199" STARTARROW="None" STARTINCLINATION="-1130;86;"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1696123584407" ID="ID_100243936" MODIFIED="1696123592153" TEXT="was soll die Fehlerbehandlung leisten?"/>
<node CREATED="1696123593053" ID="ID_1989612078" MODIFIED="1696123604000" TEXT="wann darf man die Applikation einfach stoppen"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1696123633856" ID="ID_938884061" MODIFIED="1696123679262" TEXT="weiterentwickeln">
<icon BUILTIN="pencil"/>
<icon BUILTIN="hourglass"/>
<node CREATED="1696123685033" ID="ID_1288168258" MODIFIED="1696123908702" TEXT="10/2023 : C-Fehlerflag wird zweitrangig">
<linktarget COLOR="#743762" DESTINATION="ID_1288168258" ENDARROW="Default" ENDINCLINATION="-1572;111;" ID="Arrow_ID_1929499179" SOURCE="ID_693954886" STARTARROW="None" STARTINCLINATION="-1669;-68;"/>
<icon BUILTIN="yes"/>
<node CREATED="1696123727542" ID="ID_1991627324" MODIFIED="1696123743073" TEXT="bidirektionale Verbindung aufgeben"/>
<node CREATED="1696123744977" ID="ID_383359061" MODIFIED="1696123762047" TEXT="C-Fehlerflag soll nur noch aus C-Code gesetzt werden">
<icon BUILTIN="yes"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1696123916050" ID="ID_336075850" MODIFIED="1696123953390" TEXT="kein automatisches Setzen mehr beim Erzeugen einer Exception">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1700762558645" ID="ID_1575178578" MODIFIED="1700762562411" TEXT="Hilfsmittel">
<node CREATED="1700762565756" ID="ID_449088160" MODIFIED="1700762567887" TEXT="Container"/>
<node CREATED="1700762569236" ID="ID_1666233122" MODIFIED="1700762579454" TEXT="Simulation / Generierung">
<node COLOR="#11660e" CREATED="1700761069915" FOLDED="true" ID="ID_1582937575" MODIFIED="1700763387735">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <font face="Monospaced" size="4"><b>RandomDraw</b></font>: &#187;ziehen&#171; von zuf&#228;lligen Parameterwerten
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#719f60" DESTINATION="ID_1225692248" ENDARROW="Default" ENDINCLINATION="1568;-1210;" ID="Arrow_ID_298662468" STARTARROW="None" STARTINCLINATION="2265;134;"/>
<node CREATED="1700762711185" ID="ID_480904605" MODIFIED="1700762727571" TEXT="verwendet Zufalls-Quelle">
<node CREATED="1700762728959" ID="ID_357941849" MODIFIED="1700762732068" TEXT="entweder intern"/>
<node CREATED="1700762732458" ID="ID_1178405756" MODIFIED="1700762736706" TEXT="oder extern (Hash)"/>
</node>
<node CREATED="1700762746820" ID="ID_328353521" MODIFIED="1700762765310" TEXT="Funktion: Quelle &#x27fc; Parameterwert"/>
<node CREATED="1700762781855" ID="ID_1600374242" MODIFIED="1700762791370" TEXT="per Policy-Template konfigurierbar"/>
<node CREATED="1700762801525" HGAP="39" ID="ID_275978401" MODIFIED="1700763374091" TEXT="Verwendung" VSHIFT="-44">
<node CREATED="1700762810604" ID="ID_1875359700" MODIFIED="1700763355301" TEXT="11/2023 TestChainLoad">
<arrowlink COLOR="#3f42ac" DESTINATION="ID_1285189810" ENDARROW="Default" ENDINCLINATION="-1000;-147;" ID="Arrow_ID_1839143434" STARTARROW="None" STARTINCLINATION="-1005;122;"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1701698319632"
ID="ID_883682364" MODIFIED="1701699545121" TEXT="Hash-Berechnung">
<icon BUILTIN="hourglass"/>
<icon BUILTIN="clanbomber"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1701698589858" ID="ID_1039799906" MODIFIED="1701698595947" TEXT="#722 uniform uses of hash values">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1701698037531" ID="ID_167943021" MODIFIED="1701698050090" TEXT="verwirrender Misch-Zustand hier">
<icon BUILTIN="broken-line"/>
<node CREATED="1701698058280" ID="ID_1250091422" MODIFIED="1701698189464" TEXT="teilweise boost, teilweise STDLIB">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ein Grund ist: STDLIB ist umst&#228;ndlich und unvollst&#228;ndig...
    </p>
    <ul>
      <li>
        w&#228;hrend Boost-functional-hash direkt per free-function (hash_value(x)) erweitert werden kann, mu&#223; man f&#252;r die STDLIB-Variante immer den Namespace std aufmachen
      </li>
      <li>
        Boost bietet automatisch bereits Hash-Spezialisierungen f&#252;r alle erdenklichen Container, Tupel und sonstiges
      </li>
    </ul>
  </body>
</html></richcontent>
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1701698621411" ID="ID_1690934543" MODIFIED="1701698648712" TEXT="Vorsicht: lib::hash::combine ist schwach">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1701698649934" ID="ID_1402802007" MODIFIED="1701698665460" TEXT="das ist die Fallback-Implementierung aus boost::hash"/>
<node CREATED="1701698666056" ID="ID_1059722984" MODIFIED="1701698723192" TEXT="boost::hash verwendet aber auf 64bit eine st&#xe4;rkere Impl">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      12/2023&#160;&#160;per Debugger verifiziert &#10230; TestChainLoad
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node CREATED="1701698191775" ID="ID_1333941621" MODIFIED="1701698305483" TEXT="wir haben unsere LUID, die ist 128bit">
<icon BUILTIN="bell"/>
<node CREATED="1701698271332" ID="ID_615812427" MODIFIED="1701698278751" TEXT="Performance-Implikationen nicht klar"/>
<node CREATED="1701698280027" ID="ID_786194248" MODIFIED="1701698299569" TEXT="es gibt hierf&#xfc;r keinerlei Framework (Hasher, compbiner, Container-Adapter)"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1701698215387" ID="ID_1138411401" MODIFIED="1701698269652" TEXT="Hash-Values sind plattformabh&#xe4;ngig (Problem: Tests)">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      de-facto wird nur noch 64-bit entwickelt. Inzwischen habe ich einige Tests, bei denen ich Hash-Values direkt pr&#252;fe. Die w&#252;rden auf 32bit alle brechen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1701698319632" ID="ID_1255956298" MODIFIED="1701698326482" TEXT="Bedeutung der Hash-Values">
<icon BUILTIN="hourglass"/>
<node CREATED="1701698328124" ID="ID_420862396" MODIFIED="1701698341086" TEXT="ein Zweck ist nat&#xfc;rlich: Hashtables"/>
<node CREATED="1701698342243" ID="ID_2662858" MODIFIED="1701698366532" TEXT="Invocation-Instance-ID &#x27fc; Cache-Keys"/>
</node>
</node>
</node>
<node CREATED="1667336713909" ID="ID_259014029" MODIFIED="1667336726184" TEXT="Framework">
<font NAME="SansSerif" SIZE="14"/>
<node CREATED="1667336734205" FOLDED="true" ID="ID_1054510557" MODIFIED="1667336746223" TEXT="Lumiera Time">
<node CREATED="1667336756809" ID="ID_286019153" MODIFIED="1667336765133" TEXT="lib::time::Time ist ein Zeitpunkt"/>
<node CREATED="1667336768112" ID="ID_120722451" MODIFIED="1667336788066" TEXT="lib::time::TimeValue ist ein interne Zeit-Implementierung"/>
<node CREATED="1667336795340" ID="ID_1772915486" MODIFIED="1667336809222" TEXT="lib::time::TimeSpan ist ein Intervall mit Start und Dauer"/>
<node CREATED="1667336814578" ID="ID_443069684" MODIFIED="1667337242282" TEXT="Quantisierung">
<node CREATED="1667336818154" ID="ID_228764070" MODIFIED="1667336839107" TEXT="TimeValue + symbolische Grid-Referenz"/>
<node CREATED="1667336841967" ID="ID_1852849270" MODIFIED="1667336856426" TEXT="Grid &#xfc;ber das Advice-System publiziert"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1667476797049" FOLDED="true" ID="ID_767502481" MODIFIED="1670204015059" TEXT="Diskussion: interne Zeitbasis">
<linktarget COLOR="#af1a4c" DESTINATION="ID_767502481" ENDARROW="Default" ENDINCLINATION="96;-430;" ID="Arrow_ID_1672039685" SOURCE="ID_1838246834" STARTARROW="None" STARTINCLINATION="-670;38;"/>
<linktarget COLOR="#535cb5" DESTINATION="ID_767502481" ENDARROW="Default" ENDINCLINATION="-9;23;" ID="Arrow_ID_1371034703" SOURCE="ID_368365221" STARTARROW="None" STARTINCLINATION="-97;6;"/>
<icon BUILTIN="hourglass"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1667486621881" ID="ID_566152244" MODIFIED="1667486629636" TEXT="#1258 clarify internal time base">
<icon BUILTIN="flag-yellow"/>
</node>
<node CREATED="1667486644110" ID="ID_1984451593" MODIFIED="1667486648120" TEXT="Problem">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1667486649845" ID="ID_93808620" MODIFIED="1667486680650" TEXT="grid-based Time-Scale kann niemals alle relevanten Werte exakt repr&#xe4;sentieren"/>
<node CREATED="1667486681289" ID="ID_1245609548" MODIFIED="1667486715504" TEXT="egal ob man nun floating-point nimmt, oder eine feste integrale Basis (&#xb5;-Ticks)"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1667486847011" ID="ID_1394182591" MODIFIED="1667486860346" TEXT="sehe folgende L&#xf6;sungen">
<linktarget COLOR="#b3a5d6" DESTINATION="ID_1394182591" ENDARROW="Default" ENDINCLINATION="-42;135;" ID="Arrow_ID_1017363931" SOURCE="ID_945218071" STARTARROW="None" STARTINCLINATION="-118;6;"/>
<icon BUILTIN="hourglass"/>
<node CREATED="1667486862210" ID="ID_860525476" MODIFIED="1667487583167" TEXT="Umstellen auf Bruch-Darstellung">
<icon BUILTIN="full-1"/>
<node CREATED="1667487232831" ID="ID_1006730826" MODIFIED="1667487247673" TEXT="rein auf logischer Basis w&#xe4;re das die 1.Wahl"/>
<node CREATED="1667487249733" ID="ID_344272813" MODIFIED="1667487263783" TEXT="hat aber m&#xf6;glicherweise einen starken Performance-Impact">
<node CREATED="1667487265203" ID="ID_1416124429" MODIFIED="1667487277405" TEXT="doppelt so viel Daten pro Zeitpunk"/>
<node CREATED="1667487277956" ID="ID_1373749694" MODIFIED="1667487299330" TEXT="gcd-Normalisierung nach jeder Multiplikation"/>
</node>
</node>
<node CREATED="1667486880606" ID="ID_293148639" MODIFIED="1667487585840" TEXT="mehrere Basis-Zeitformate erlauben">
<icon BUILTIN="full-2"/>
<node CREATED="1667486901227" ID="ID_869733709" MODIFIED="1667486908494" TEXT="eines davon w&#xe4;re dann FSecs"/>
<node CREATED="1667486909138" ID="ID_1371778930" MODIFIED="1667486921835" TEXT="ein anderes das &#xb5;-Grid"/>
<node CREATED="1667486924968" ID="ID_1851075217" MODIFIED="1667486937530" TEXT="Integration problematisch">
<node CREATED="1667486951149" ID="ID_1186754865" MODIFIED="1667486966790" TEXT="std::chrono macht genau dies">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1667486938994" ID="ID_1194275689" MODIFIED="1667486950390" TEXT="erfordert Metaprogrammierung"/>
<node CREATED="1667486968874" ID="ID_782557379" MODIFIED="1667487226117" TEXT="Alternative: breite APIs">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Man w&#252;rde also neben das Standard-Format ein toleriertes zweites Format stellen, welches dann ein B&#252;rger zweiter Klasse w&#228;re, aber auf allen wichtien APIs als 2.Alternative mit auftaucht. Zudem w&#252;rde man gewisse Abk&#252;rzungs-Pfade schaffen, auf denen die alternative Spec dann <i>verlustfrei durchgereicht </i>werden kann.
    </p>
    <ul>
      <li>
        es ist &#252;berhaupt nicht klar, welches Format dann der Standardfall sein sollte
      </li>
      <li>
        das l&#228;uft vor allem auf eine Performance-Betrachtung hinaus, und einen trade-off, wo man ggfs Fehler durch&#160;andere Programmierer akzeptiert
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node CREATED="1667487313780" ID="ID_605045817" MODIFIED="1667487588066" TEXT="Problem nur umgehen">
<icon BUILTIN="full-3"/>
<node CREATED="1667487323563" ID="ID_255906636" MODIFIED="1667487341802" TEXT="es sind ja nur ganz wenige Stellen, die mit einem &#xb5;-Grid wirklich Probleme haben"/>
<node CREATED="1667487342753" ID="ID_463347104" MODIFIED="1667487469159">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      wenn man zum &#181;-Grid eine eindeutige Rundungs-Regel hinzuf&#252;gt,
    </p>
    <p>
      kann es praktisch auch Sound-Samples korrekt addressieren:<br /><br />1/96000 &#8793; 10,41666666666666666667 <i>&#181;Ticks</i>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
<node CREATED="1667487486510" ID="ID_1354208250" MODIFIED="1667487501583" TEXT="Notwendigkeit einer genaueren Behandlung per Metadaten durchreichen">
<node CREATED="1667487512650" ID="ID_968209763" MODIFIED="1667487526228" TEXT="&quot;dies sind 96kHz-Samples&quot;"/>
<node CREATED="1667487528568" ID="ID_745033416" MODIFIED="1667487546865" TEXT="dann kann eine Implementierung &quot;downstream&quot; mit Divisor arbeiten"/>
<node CREATED="1667487547957" ID="ID_1232559601" MODIFIED="1667487568454" TEXT="und Output geht an die Soundkarte mit 96kHz"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1667592184752" ID="ID_1933332619" MODIFIED="1667592189752" TEXT="Aufr&#xe4;um-Arbeiten">
<linktarget COLOR="#d42360" DESTINATION="ID_1933332619" ENDARROW="Default" ENDINCLINATION="120;134;" ID="Arrow_ID_1382957344" SOURCE="ID_1052463489" STARTARROW="None" STARTINCLINATION="-43;-56;"/>
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1667592193783" ID="ID_1808934689" MODIFIED="1667592204255" TEXT="#1259 organise raw time base implementation">
<icon BUILTIN="flag-yellow"/>
</node>
<node CREATED="1667592218952" ID="ID_1463501252" MODIFIED="1667592230199" TEXT="Einsichten">
<icon BUILTIN="idea"/>
<node CREATED="1667592232354" ID="ID_1809679126" MODIFIED="1667592268849" TEXT="die unterliegende Roh-Implementierung wird stets &#x201e;durchscheinen&#x201c;"/>
<node CREATED="1667592285128" ID="ID_945218071" MODIFIED="1667592349554">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      im Besonderen bei den <i>pragmatischen L&#246;sungen</i>
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#b3a5d6" DESTINATION="ID_1394182591" ENDARROW="Default" ENDINCLINATION="-42;135;" ID="Arrow_ID_1017363931" STARTARROW="None" STARTINCLINATION="-118;6;"/>
<icon BUILTIN="full-2"/>
<icon BUILTIN="full-3"/>
</node>
<node CREATED="1667592366001" ID="ID_170684768" LINK="#ID_745987096" MODIFIED="1667592483713" TEXT="Zeit-Berechnungen brauchen einen validen Zugang">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1667592593027" ID="ID_1398816169" MODIFIED="1667592611842" TEXT="Aufgaben">
<icon BUILTIN="yes"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1667592613824" ID="ID_1877249067" MODIFIED="1667593560997" TEXT="keine externen Library-Typen mehr im normalen Implementierungs code">
<icon BUILTIN="yes"/>
<node CREATED="1667592632302" ID="ID_1344505411" MODIFIED="1667592635745" TEXT="boost::rational"/>
<node CREATED="1667592636666" ID="ID_392219650" MODIFIED="1667592641529" TEXT="gavl_time_t"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1667592643724" ID="ID_504422240" MODIFIED="1667592665218" TEXT="LibGavl-Dependency hier entfernen">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1667592666825" ID="ID_1632149108" MODIFIED="1667592677380" TEXT="so sehr ich Gavl im allgemeinen gut finde"/>
<node CREATED="1667592677944" ID="ID_130946855" MODIFIED="1667592698682" TEXT="wir brauchen keine Lib um einen int64_t zu deklarieren">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1667592700101" ID="ID_942374659" MODIFIED="1667592737240" TEXT="ansonsten wird Gavl nicht / noch nicht verwendet">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      und ganz im Besonderen: wir st&#252;tzen uns f&#252;r die Zeitbehandlung nicht auf libGavl ab
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1667593471839" ID="ID_1651396499" MODIFIED="1670203676799" TEXT="gavl_time_t ersetzen durch Wrapper MicroTicks">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1667593606149" ID="ID_1259605001" MODIFIED="1670203652106" TEXT="_raw() &#x27f6; _microTicks()">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1670203683451" ID="ID_937451574" MODIFIED="1670203743053" TEXT="direkt konvertierbar auf int64_t">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1670203743874" ID="ID_1876693617" MODIFIED="1670203758849" TEXT="nicht direkt konvertierbar aus time::Time">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1667592743130" ID="ID_675688540" MODIFIED="1667593547383">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      FSecs durch einen neuen Wrapper <font face="Monospaced" color="#1e178c"><b>RSec</b></font>&#160;ersetzen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1667592790281" ID="ID_1680785799" MODIFIED="1667592800092" TEXT="au&#xdf;erdem den neuen lib/rational.hpp hier einbinden"/>
<node CREATED="1667592805748" ID="ID_290360900" MODIFIED="1667592820329" TEXT="explizit als Typ RSec verwenden f&#xfc;r alle Konvertierungen"/>
<node CREATED="1667592821013" ID="ID_289952678" MODIFIED="1667592916791" TEXT="RSec">
<icon BUILTIN="info"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1667592825916" ID="ID_66335543" MODIFIED="1667592941549" TEXT="implizit konstruierbar aus Rat">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1667592930415" ID="ID_569654636" MODIFIED="1670203770202" TEXT="implizit konstruierbar aus time::Time">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1667592835795" ID="ID_1955597942" MODIFIED="1667592942626">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <b>nicht</b>&#160;implizit konstruierbar aus int64_t
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1667592866911" ID="ID_416309268" MODIFIED="1667592869523" TEXT="ganz wichtig"/>
<node CREATED="1667592870151" ID="ID_1316405427" MODIFIED="1667592884425" TEXT="denn int64_t impliziert &#xb5;-Ticks"/>
<node CREATED="1667592895059" ID="ID_556517411" MODIFIED="1667592912143" TEXT="sollte explizit konstruierbar sein, mit Skalen-Transformation"/>
</node>
<node CREATED="1667592989079" ID="ID_531764150" MODIFIED="1667593020006" TEXT="minimale Arithmetik-Integration mit Time und Duration"/>
<node CREATED="1667593029266" ID="ID_1518807557" MODIFIED="1667593045317" TEXT="aber Zeit-Gr&#xf6;&#xdf;en nur explizit konstruierbar (= Status quo)"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1667593084541" ID="ID_737389227" MODIFIED="1667593105376" TEXT="C-Library effektiv entfernen">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1667593106935" ID="ID_1453484901" MODIFIED="1667593139782" TEXT="ich will keine C-Implementierungen mehr">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1667593146938" ID="ID_572582896" MODIFIED="1667593420308" TEXT="die C-Library verf&#xfc;hrt dazu, das Time-Framework zu umgehen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...seinerzeit fand ich diese Art &#187;Offenheit&#171; noch gut; auch weil ich mir erhoffte, damit mehr Contributors zu bekommen. Die Erfahrungen sprechen dagegen; klar, die Leute m&#246;gen erst einmal gerne &#8222;move fast and break things&#8220; &#8212; aber wenn dann Aufr&#228;umen oder anstrengende Konzeptions-Arbeit notwendig w&#252;rde, bleibt alles liegen und man verschwindet aus dem Projekt.
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1667593164461" ID="ID_1585303440" MODIFIED="1667593241126" TEXT="Umbau">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1667593169047" ID="ID_377190169" MODIFIED="1667593239462" TEXT="Header umbenennen">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1667593179870" ID="ID_1823116307" MODIFIED="1667593239462" TEXT="Header und Implementierung in C++">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1667593196675" ID="ID_530670970" MODIFIED="1667593239463" TEXT="plain-C-Tests in C++-Tests umziehen">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1667593209815" ID="ID_1675418151" MODIFIED="1667593239463" TEXT="Hinweise aus Dokumentation entfernen">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1667336859796" ID="ID_1810244902" MODIFIED="1667337099718" TEXT="Timecode">
<icon BUILTIN="hourglass"/>
<node CREATED="1667336865688" ID="ID_1539710424" MODIFIED="1667336875998" TEXT="kann aus einer lib::time::QuTime erzeugt werden"/>
<node CREATED="1667336880473" ID="ID_789960595" MODIFIED="1667337093278" TEXT="Stand 2011... (2022) nur SMPTE-Format implementiert">
<icon BUILTIN="flag-orange"/>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1670203198923" FOLDED="true" ID="ID_195957857" MODIFIED="1670204958743" TEXT="Design-Kritik">
<font NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="bell"/>
<node CREATED="1670203232878" ID="ID_368365221" MODIFIED="1670204032769" TEXT="Verh&#xe4;ltnis zur Implementierungs-Basis unklar">
<arrowlink COLOR="#535cb5" DESTINATION="ID_767502481" ENDARROW="Default" ENDINCLINATION="-9;23;" ID="Arrow_ID_1371034703" STARTARROW="None" STARTINCLINATION="-97;6;"/>
</node>
<node CREATED="1670203264566" ID="ID_428273621" MODIFIED="1670203286172" TEXT="Debugging und Testcode schafft doch literale Zug&#xe4;nge"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1670203289398" ID="ID_809304620" MODIFIED="1670203870830" TEXT="Immutabilit&#xe4;t erscheint fragw&#xfc;rdig">
<icon BUILTIN="bell"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1667770629647" ID="ID_1236820860" MODIFIED="1670203851793" TEXT="#1261 reconsider (im)mutability of time entities">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1670204619655" ID="ID_1759515738" MODIFIED="1670204679042" TEXT="TimeVar f&#xfc;r Berechnungen niveliert semantische Markierung">
<linktarget COLOR="#f2343e" DESTINATION="ID_1759515738" ENDARROW="Default" ENDINCLINATION="166;8;" ID="Arrow_ID_1959295757" SOURCE="ID_1588461392" STARTARROW="None" STARTINCLINATION="-129;-5;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1670204052113" ID="ID_1534149938" MODIFIED="1670204073846" TEXT="Problem mit der Werte-Limitierung">
<icon BUILTIN="messagebox_warning"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1670204087132" ID="ID_1403269339" MODIFIED="1670204092980" TEXT="#1263 consistent clipping of time duration">
<icon BUILTIN="flag-yellow"/>
</node>
<node CREATED="1670204097323" ID="ID_1011988316" MODIFIED="1670204161413" TEXT="Offset und Duration braucht eine andere (gr&#xf6;&#xdf;ere) Dom&#xe4;ne">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Begr&#252;ndung: sie entstehen als Delta aus validen Zeitpunkten
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
<node COLOR="#338800" CREATED="1670204169634" ID="ID_1754685572" MODIFIED="1670204363701" TEXT="Refactoring Offset-Konstruktion">
<linktarget COLOR="#26b81b" DESTINATION="ID_1754685572" ENDARROW="Default" ENDINCLINATION="331;-981;" ID="Arrow_ID_636518434" SOURCE="ID_1491328900" STARTARROW="None" STARTINCLINATION="-1095;84;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1670204184655" ID="ID_1092716549" MODIFIED="1670204199898" TEXT="Offset macht nun die Limitierungen"/>
<node CREATED="1670204200509" ID="ID_699139338" MODIFIED="1670204213099" TEXT="delegiert dazu an einen protected-ctor auf TimeValue"/>
<node CREATED="1670204214419" ID="ID_1562184209" MODIFIED="1670204223542" TEXT="Duration macht nur noch den Absoutbetrag"/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1670204367479" ID="ID_600631420" MODIFIED="1670204378958" TEXT="Design noch nicht optimal">
<icon BUILTIN="bell"/>
<node CREATED="1670204381408" ID="ID_12412150" MODIFIED="1670204393672" TEXT="Zugang zur Limitierungsfunktion problematisch">
<node CREATED="1670204394437" ID="ID_328468461" MODIFIED="1670204422149" TEXT="sollte protected sein">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1670204407834" ID="ID_1521072795" MODIFIED="1670204413020" TEXT="kein general-purpose Util"/>
<node CREATED="1670204413617" ID="ID_1825520187" MODIFIED="1670204420067" TEXT="Limitierung sollte nicht wahlfrei sein"/>
</node>
<node CREATED="1670204429399" ID="ID_256174974" MODIFIED="1670204448043" TEXT="braucht damit aber unterscheidbare ctor-Signatur">
<icon BUILTIN="broken-line"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1670204461587" ID="ID_1011570785" MODIFIED="1670204488608" TEXT="Limitierung auf dem Basis-ctor kommt in die Quere">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1670204449421" ID="ID_788489713" MODIFIED="1670204497787" TEXT="mu&#xdf; deshalb x-fach ein/auspacken">
<icon BUILTIN="smily_bad"/>
</node>
</node>
<node CREATED="1670204511138" ID="ID_1144294293" MODIFIED="1670204539603" TEXT="Limitierung tritt in Arrithmetik ehr zuf&#xe4;llig auf">
<node CREATED="1670204540718" ID="ID_1255308536" MODIFIED="1670204561965" TEXT="es ist praktisch nicht vorhersagbar, wann limitiert wird"/>
<node CREATED="1670204592570" ID="ID_1588461392" MODIFIED="1670204684420" TEXT="das liegt an dem transparenten &#xdc;bergang in TimeVar">
<arrowlink COLOR="#f2343e" DESTINATION="ID_1759515738" ENDARROW="Default" ENDINCLINATION="166;8;" ID="Arrow_ID_1959295757" STARTARROW="None" STARTINCLINATION="-129;-5;"/>
</node>
<node CREATED="1670204715456" ID="ID_647133339" MODIFIED="1670204719419" TEXT="Wunsch">
<node CREATED="1670204720743" ID="ID_87999446" MODIFIED="1670204735721" TEXT="LImitieren bei expliziten Konstruktoren (semantische Markierung)"/>
<node CREATED="1670204736590" ID="ID_1752769748" MODIFIED="1670204759294" TEXT="nahtloser Einstieg in Arithmetik aus allen Typen"/>
<node CREATED="1670204764337" ID="ID_591425903" MODIFIED="1670204776244" TEXT="Ergebnis-Typ nach inhaltlicher Logik">
<node CREATED="1670204803999" ID="ID_1882907381" MODIFIED="1670204814909" TEXT="Differenz &#x27f9; Offset"/>
<node CREATED="1670204815956" ID="ID_672733611" MODIFIED="1670204833364" TEXT="Linearkombination: Zeitpunkte bzw. Offsets"/>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1670203323167" ID="ID_1083592054" MODIFIED="1670203328942" TEXT="Refactoring">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1670203333148" ID="ID_1052463489" MODIFIED="1670203824726" TEXT="Wrapper f&#xfc;r die Implementierungs-Basis">
<arrowlink COLOR="#d42360" DESTINATION="ID_1933332619" ENDARROW="Default" ENDINCLINATION="120;134;" ID="Arrow_ID_1382957344" STARTARROW="None" STARTINCLINATION="-43;-56;"/>
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1670203448666" ID="ID_1420123614" MODIFIED="1670203482999" TEXT="MicroTick ersetzt gavl_time_t">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1670203464680" ID="ID_349050555" MODIFIED="1670203482999" TEXT="RSec ersetzt FSecs">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1670203472359" ID="ID_1087095065" MODIFIED="1670203483000" TEXT="bisherige C-Library aufl&#xf6;sen">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1670203346727" ID="ID_1489900097" MODIFIED="1670203553277" TEXT="time::Time als Basis">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1670203370236" ID="ID_974452608" MODIFIED="1670203375393" TEXT="algebraisch und mutable"/>
<node CREATED="1670203376013" ID="ID_72780058" MODIFIED="1670203381494" TEXT="TimeVar komplett entfernen"/>
<node CREATED="1670203387130" ID="ID_1357163033" MODIFIED="1670203395404" TEXT="time::Mutation komplett entfernen"/>
</node>
<node CREATED="1670203401635" ID="ID_135612509" MODIFIED="1670203425528" TEXT="Design der Zeit-Enit&#xe4;ten verifizieren"/>
<node CREATED="1670203429905" ID="ID_1045402545" MODIFIED="1670203445062" TEXT="Algebra / Operatoren konsolidieren"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1670203488757" ID="ID_1532708654" MODIFIED="1670203541963" TEXT="time::Control anpassen und vereinfachen">
<icon BUILTIN="hourglass"/>
<node CREATED="1670203509562" ID="ID_1543321531" MODIFIED="1670203517718" TEXT="soll weiterhin">
<node CREATED="1670203518560" ID="ID_1636215930" MODIFIED="1670203523492" TEXT="als Mediator fungieren"/>
<node CREATED="1670203524072" ID="ID_758755449" MODIFIED="1670203535578" TEXT="die verschiedenen Ziel-Typen nivellieren"/>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1434128074725" FOLDED="true" HGAP="28" ID="ID_933994138" MODIFIED="1561827465790" TEXT="Diff-System" VSHIFT="1">
<linktarget COLOR="#512ad7" DESTINATION="ID_933994138" ENDARROW="Default" ENDINCLINATION="-542;-110;" ID="Arrow_ID_1056337952" SOURCE="ID_242797619" STARTARROW="None" STARTINCLINATION="-376;205;"/>
<font NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="go"/>
<node CREATED="1434128278990" ID="ID_106354755" MODIFIED="1518487921094" TEXT="Diff-Darstellung"/>
<node CREATED="1434128267381" ID="ID_823706141" MODIFIED="1518487921094" TEXT="List-diff">
<icon BUILTIN="go"/>
</node>
<node CREATED="1434128078638" ID="ID_1704749549" MODIFIED="1518487921094" TEXT="Tree-Diff">
<icon BUILTIN="go"/>
<node CREATED="1434128095838" ID="ID_419405890" MODIFIED="1518487921094" TEXT="Detector">
<icon BUILTIN="stop"/>
</node>
<node CREATED="1434128092877" ID="ID_105246595" MODIFIED="1518487921094" TEXT="Applikator">
<node CREATED="1434128115462" ID="ID_1299653797" MODIFIED="1518487921094" TEXT="Tree-Mutator"/>
</node>
<node BACKGROUND_COLOR="#c9cfe1" COLOR="#435e98" CREATED="1434128083878" FOLDED="true" ID="ID_937754899" MODIFIED="1573834757669" TEXT="Format">
<icon BUILTIN="yes"/>
<node CREATED="1434128153773" ID="ID_1289483934" MODIFIED="1518487921094" TEXT="Objekt-Repr&#xe4;s">
<icon BUILTIN="button_ok"/>
<node CREATED="1434128243334" ID="ID_1828331212" MODIFIED="1518487921094" TEXT="Typ-Darstellung"/>
<node CREATED="1434128239517" ID="ID_1886740948" MODIFIED="1518487921094" TEXT="Mapping"/>
<node CREATED="1434128170381" ID="ID_976705384" MODIFIED="1573834546731" TEXT="GenNode">
<linktarget COLOR="#4f7ffc" DESTINATION="ID_976705384" ENDARROW="Default" ENDINCLINATION="-55;132;" ID="Arrow_ID_1285375088" SOURCE="ID_553361956" STARTARROW="Default" STARTINCLINATION="-5;-77;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1435421658394" ID="ID_1938259420" MODIFIED="1518487921094" TEXT="ID">
<node CREATED="1435421670349" ID="ID_1358247529" MODIFIED="1561827465793" TEXT="verwende EntryID">
<icon BUILTIN="button_ok"/>
<node CREATED="1435421678004" ID="ID_691179282" MODIFIED="1512926192296" TEXT="Abh&#xe4;ngigkeitsprobleme">
<node CREATED="1435421693260" ID="ID_1314021887" MODIFIED="1435942753226" TEXT="generische ID-Funktionen">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1435421739988" ID="ID_405602814" MODIFIED="1435885199446" TEXT="EntryID geh&#xf6;rt in Library">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1435885214592" ID="ID_1198930165" MODIFIED="1512926192296" TEXT="sanitise st&#xf6;rt">
<node CREATED="1435885226222" ID="ID_776697956" MODIFIED="1435942745458" TEXT="verschiebe in EntryID">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1435885235583" ID="ID_444167455" MODIFIED="1435942747401" TEXT="verwende Subklasse">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node CREATED="1439842285584" ID="ID_334339765" MODIFIED="1518487921094" TEXT="spezielle Ref-IDs"/>
</node>
<node CREATED="1434128174030" ID="ID_1395250463" MODIFIED="1525124215304" TEXT="Variant">
<node CREATED="1435943070542" ID="ID_949070153" MODIFIED="1561827465794" TEXT="Wert-Semantik">
<icon BUILTIN="button_ok"/>
<node CREATED="1435943077974" ID="ID_280152814" MODIFIED="1435943080682" TEXT="kopierbar"/>
<node CREATED="1435943081438" ID="ID_159359464" MODIFIED="1435943083738" TEXT="zuweisbar"/>
<node CREATED="1435943085206" ID="ID_734188530" MODIFIED="1512926192298" TEXT="const-ness liegt beim User">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      d.h. der usage context entscheidet, ob wir einen Wert,
    </p>
    <p>
      eine Referenz oder einen konstanten Wert verwenden
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
<node CREATED="1435943194398" ID="ID_587131941" MODIFIED="1435943203161" TEXT="GenNode gibt Referenz auf Wert"/>
<node CREATED="1435943203662" ID="ID_1772960325" MODIFIED="1435943274743" TEXT="const GenNode gibt const&amp;">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1435943214822" ID="ID_723738462" MODIFIED="1435943233983">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Record selber ist immuable
    </p>
    <p>
      aber hat eine Builder-Mechanik
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node CREATED="1435943121046" ID="ID_16399922" MODIFIED="1435943145278" TEXT="brauche const Variante">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      eigentlich fehlte nur die get()-Operation
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1434128217645" FOLDED="true" ID="ID_1790054544" MODIFIED="1573834533842" TEXT="Monade">
<icon BUILTIN="button_cancel"/>
<node CREATED="1435932580854" ID="ID_1307223527" MODIFIED="1512926192300" TEXT="Daten einwickeln">
<node CREATED="1435932589853" ID="ID_180643071" MODIFIED="1435932595665" TEXT="ctor forward"/>
<node CREATED="1435932598197" ID="ID_951223738" MODIFIED="1512926192301" TEXT="Problem mit copy ctor">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      erledigt... &#228;hm vertagt
    </p>
    <p>
      aber nicht wirklich; der workaround k&#246;nnte schon die L&#246;sung sein #963
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1435932667701" HGAP="22" ID="ID_1069242347" MODIFIED="1512926192302" TEXT="Copy matcht generischen ctor" VSHIFT="-9">
<icon BUILTIN="idea"/>
<node CREATED="1435932714261" ID="ID_1395890846" MODIFIED="1435932719281" TEXT="gleiches Problem schon bei Variant"/>
<node CREATED="1435932719709" ID="ID_188423010" MODIFIED="1435932783846" TEXT="dort explizit gemacht, da komplex">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ich hatte damals beim Variant und zugeh&#246;rigen Buffer die Sorge,
    </p>
    <p>
      da&#223; ich die Implikationen einer generischen L&#246;sung nicht durchdringen kann.
    </p>
    <p>
      Und ich wollte keine Zeit auf einen exzessiven Unit-Test verwenden
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1435942764328" ID="ID_1740355148" MODIFIED="1435942879414">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      generische L&#246;sung verschoben <font color="#990033">#963</font>
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#ff3333" DESTINATION="ID_1935900779" ENDARROW="Default" ENDINCLINATION="188;0;" ID="Arrow_ID_1626382520" STARTARROW="Default" STARTINCLINATION="2;73;"/>
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1435942827511" ID="ID_614756812" MODIFIED="1435942844839">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      C++11 erlaubt <b>=default</b>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1435932611653" ID="ID_1701726752" MODIFIED="1435932628945" TEXT="Ansatz-1 (einfach): explizit"/>
<node CREATED="1435932629517" ID="ID_1935900779" MODIFIED="1435942879415" TEXT="Ansatz-2: Selbst-Typ ausblenden">
<linktarget COLOR="#ff3333" DESTINATION="ID_1935900779" ENDARROW="Default" ENDINCLINATION="188;0;" ID="Arrow_ID_1626382520" SOURCE="ID_1740355148" STARTARROW="Default" STARTINCLINATION="2;73;"/>
</node>
</node>
</node>
<node CREATED="1435942891695" ID="ID_947731706" MODIFIED="1561827465802" TEXT="Iteration">
<linktarget COLOR="#98e2df" DESTINATION="ID_947731706" ENDARROW="Default" ENDINCLINATION="-78;95;" ID="Arrow_ID_197324270" SOURCE="ID_1665153106" STARTARROW="None" STARTINCLINATION="168;-25;"/>
<font NAME="SansSerif" SIZE="12"/>
<node CREATED="1440983732337" HGAP="35" ID="ID_792682966" MODIFIED="1440983809484" TEXT="monadische Iteration" VSHIFT="12">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      nicht klar, ob wir das &#252;berhaupt brauchen
    </p>
    <ul>
      <li>
        entweder nur die unmittelbaren Kinder -&gt; komplexe Logik f&#228;llt auf den Client
      </li>
      <li>
        oder nur die Bl&#228;tter -&gt; man kann die Baum-Struktur nicht wirklich nutzen
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="help"/>
</node>
<node CREATED="1440983598369" ID="ID_1025556053" MODIFIED="1512926192305">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Entscheidung
    </p>
    <p>
      <font size="1">was wir brauchen</font>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
<node CREATED="1440983617193" ID="ID_532213208" MODIFIED="1440983627459" TEXT="bracketing"/>
<node CREATED="1440983628399" ID="ID_1711016962" MODIFIED="1440983642457" TEXT="node prefix"/>
<node CREATED="1440983643445" ID="ID_1023025658" MODIFIED="1440983656648" TEXT="depth-first"/>
</node>
<node CREATED="1440983661027" ID="ID_507018481" MODIFIED="1512926192307" TEXT="Impl">
<node CREATED="1440983668537" ID="ID_1230038295" MODIFIED="1441936954788" TEXT="IterExplorer verwenden">
<icon BUILTIN="help"/>
</node>
<node CREATED="1440984024736" ID="ID_1554494729" MODIFIED="1512926192308" TEXT="Chained Iters">
<node CREATED="1440984028959" ID="ID_896818992" MODIFIED="1440984040210" TEXT="pfiffig"/>
<node CREATED="1440984040870" ID="ID_1008957395" MODIFIED="1440984048057" TEXT="m&#xfc;&#xdf;te der IterIter implementieren"/>
<node CREATED="1440984048380" ID="ID_917358570" MODIFIED="1440984080184">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      geht nicht:
    </p>
    <p>
      rekursiver Abstieg in der Mitte eines Iterators
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_cancel"/>
</node>
</node>
<node CREATED="1440983855875" ID="ID_1991218497" MODIFIED="1561827465804" TEXT="RecursiveSelfIntegration">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      das war die Quintessenz der ganzen Entwicklung zum IterExplorer
    </p>
    <p>
      Nachdem ich die depth-first / breadth-first -Strategien systematisch aufgebaut hatte,
    </p>
    <p>
      habe ich das dann reduziert und kompakt nochmal geschrieben.
    </p>
    <p>
      Sehr sch&#246;n!
    </p>
    <p>
      
    </p>
    <p>
      
    </p>
    <p>
      &#252;brigens: genau den verwenden wir auch zur Job-Planung
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="full-1"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1440983865102" ID="ID_306959180" MODIFIED="1440983871265" TEXT="hoch effizient"/>
<node CREATED="1440983872517" ID="ID_1633584594" MODIFIED="1440983880175" TEXT="pa&#xdf;t genau"/>
<node CREATED="1440983880715" ID="ID_617483189" MODIFIED="1440983893678" TEXT="erfordert speziellen ResultIter"/>
<node COLOR="#999999" CREATED="1440984125546" ID="ID_461442477" MODIFIED="1533608414037" TEXT="TODO">
<font NAME="SansSerif" SIZE="10"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1440984130872" ID="ID_579146044" MODIFIED="1561827465804" TEXT="ResultIter">
<node CREATED="1440984214126" ID="ID_1124020862" MODIFIED="1441937180496" TEXT="GenNode-Zeiger"/>
<node CREATED="1440984221636" ID="ID_1279195509" MODIFIED="1441937180496" TEXT="Scope-Marker"/>
</node>
<node CREATED="1440984158949" ID="ID_1602941967" MODIFIED="1441937180496" TEXT="BuilderTrait"/>
<node CREATED="1440984166132" ID="ID_761913732" MODIFIED="1561827465804" TEXT="explorer Funktion">
<node CREATED="1440984256512" ID="ID_1965762804" MODIFIED="1441937180496" TEXT="verwendet Variant::Visitor"/>
<node CREATED="1440984273357" ID="ID_153302412" MODIFIED="1441937180496" TEXT="steigt in Records ein"/>
</node>
</node>
</node>
<node CREATED="1441935566556" ID="ID_128176235" MODIFIED="1561827465805" TEXT="oder doch depthFirst?">
<icon BUILTIN="full-2"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1441935596503" ID="ID_119941709" MODIFIED="1441935613232" TEXT="verwendet einen einfacheren Iterator"/>
<node CREATED="1441935617115" ID="ID_1743908800" MODIFIED="1441935704268" TEXT="hat daf&#xfc;r den Stack (deque) explizit"/>
<node CREATED="1441935708383" ID="ID_1709495985" MODIFIED="1441936067879" TEXT="Erkenntnis: Stack ist unvermeidbar">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...denn wir m&#252;ssen den Weg zur&#252;ck finden.
    </p>
    <p>
      Wenn also eine Datenstruktur nur einfach verzeigert ist, oder direkt rekursiv (wie bei uns),
    </p>
    <p>
      dann ist es <i>absolut unm&#246;glich,</i>&#160;eine Traversierung mit konstantem Speicher zu machen.
    </p>
    <p>
      Das geht nur bei einer Struktur mit R&#252;ckreferenzen -- diese enthalten dann n&#228;mlich genau den Speicher,
    </p>
    <p>
      der w&#228;hrend dem Einstieg in die einfach verzeigerte Struktur auf dem Stack liegt. Aber letztere
    </p>
    <p>
      braucht nur eine logarithmische Menge an Speicher, und das auch nur w&#228;hrend der Traversierung.
    </p>
    <p>
      Dies ist die Abw&#228;gung, und darunter l&#228;&#223;t sich nichts weghandeln.
    </p>
    <p>
      
    </p>
    <p>
      Der einzige verbleibende Freiheitsgrad ist, bei einer unmittelbaren rekursiven Programmierung
    </p>
    <p>
      direkt den Prozessor-Stack f&#252;r die Speicherung des R&#252;ckweges mitzuverwenden;
    </p>
    <p>
      in dem Moment, wo ich mich f&#252;r einen Iterator entscheide, ist diese M&#246;glichkeit weg.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1441936092427" ID="ID_199084223" MODIFIED="1441936126886">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      kann genauso effizient werden
    </p>
    <p>
      aber nur, wenn man die Initialisierung hinbekommt
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1441936132022" ID="ID_183615098" MODIFIED="1441936141832" TEXT="trotzdem mu&#xdf; man die Funktion speichern"/>
<node CREATED="1441936142563" ID="ID_161796731" MODIFIED="1441936150975" TEXT="und wir brauchen gar keine flexible Funktion"/>
</node>
<node CREATED="1441936154834" ID="ID_1320687783" MODIFIED="1561827465806">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      oder diese Logik
    </p>
    <p>
      fest verdrahten
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="full-3"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1441936260132" ID="ID_600953695" MODIFIED="1441936270614" TEXT="der IterExplorer zeigt genau, was zu tun ist"/>
<node CREATED="1441936271274" ID="ID_567626167" MODIFIED="1441936284756" TEXT="aber das mehrfache Kopieren zur Initialisierung entf&#xe4;llt"/>
<node CREATED="1441936285368" ID="ID_1119180152" MODIFIED="1441936296746" TEXT="wir brauchen genauso einen ma&#xdf;geschneiderten Scope-Iterator"/>
<node CREATED="1441936356831" ID="ID_1423049913" MODIFIED="1441936372500" TEXT="aber die Indirektion f&#xfc;r die Funktion f&#xe4;llt weg">
<icon BUILTIN="ksmiletris"/>
</node>
<node COLOR="#338800" CREATED="1441936386803" ID="ID_588658088" MODIFIED="1533608414039" TEXT="TODO">
<icon BUILTIN="button_ok"/>
<node CREATED="1441936422725" ID="ID_1581368426" MODIFIED="1441936433181" TEXT="ScopeExplorer-Mechanismus mit Stack">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1441936434644" ID="ID_455233841" MODIFIED="1561827465807" TEXT="innerer Iterator">
<icon BUILTIN="button_ok"/>
<node CREATED="1441936451042" ID="ID_1773948072" MODIFIED="1441936476114" TEXT="disjunktiver Typ"/>
<node CREATED="1441936869273" ID="ID_864580946" MODIFIED="1441936878867" TEXT="entweder GenNode, oder Rec"/>
<node CREATED="1441936494164" ID="ID_1837843513" MODIFIED="1441936749098" TEXT="Variant ohne Selector?">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      da es sich um einen disjunktiven Typ (entweder-oder-Typ) handelt,
    </p>
    <p>
      k&#246;nnte man die Storage mit beiden Bedeutungen &#252;berlagern.
    </p>
    <p>
      
    </p>
    <p>
      Voraussetzung w&#228;re, da&#223; man anhand der konkreten Daten <b>gefahrlos</b>&#160; jeweils herausfinden kann,
    </p>
    <p>
      welcher Zweig grade gilt. Da wir aber keine Introspektion haben (und auch nicht wollen!),
    </p>
    <p>
      w&#252;rde das auf Taschenspielertricks mit der Implementierung hinauslaufen
    </p>
    <ul>
      <li>
        GenNode und Record beginnen beide fraktisch mit einem String. Man m&#252;&#223;te diesen interpretieren k&#246;nnen
      </li>
      <li>
        oder man nutzt die letzten Bits des Pointers, um sich dort eine Flag zu speichern...
      </li>
    </ul>
    <p>
      Damit ist schon klar: <i>sowas macht man nicht ohne Grund</i>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1441936883063" ID="ID_428834793" MODIFIED="1441936894393" TEXT="GenNode erfordert nur einen Pointer">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1441936900076" ID="ID_1582043438" MODIFIED="1561827465808" TEXT="Explorer-Funktion">
<node CREATED="1441936911211" ID="ID_722452490" MODIFIED="1441936917230" TEXT="kommt in DataCap"/>
<node CREATED="1441936983313" ID="ID_1843183144" MODIFIED="1441936990892" TEXT="mu&#xdf; den inneren Iterator liefern"/>
<node CREATED="1441937000487" ID="ID_312630797" MODIFIED="1441937028412">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Entscheidung: <i>falls</i>&#160;eingebetteter Record
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1441937037498" ID="ID_1964865459" MODIFIED="1443147539495" TEXT="Initialisierung bedenken">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node CREATED="1443147571765" ID="ID_1651952492" MODIFIED="1512926192315" TEXT="HierarchyOrientation">
<node CREATED="1443147582018" ID="ID_1791945362" MODIFIED="1443147603945" TEXT="fest einbauen">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1443147586241" ID="ID_904848069" MODIFIED="1443147706043" TEXT="besser: nur level zug&#xe4;nglich machen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Begr&#252;ndung: das Durchlaufen und Rekonstruieren eines Baumes
    </p>
    <p>
      ist letztlich doch ein sehr spezieller Fall, und rechtfertigt nicht,
    </p>
    <p>
      den HierarchyOrientationIndicator in jeden Iterator einzubetten.
    </p>
    <p>
      Zumal -- wenn der level zug&#228;nglich ist -- kann man diese Mechanik genauso gut
    </p>
    <p>
      dort direkt ansiedeln, wo sie gebraucht wird.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node CREATED="1443147730941" ID="ID_196989292" MODIFIED="1443147751954">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      also <i>keine</i>&#160;Monade
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1440984348699" HGAP="64" ID="ID_1327214042" MODIFIED="1518487921094" TEXT="Pr&#xe4;dikate" VSHIFT="-26">
<icon BUILTIN="button_ok"/>
<node CREATED="1440984366937" ID="ID_1806640214" MODIFIED="1518487921094">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Gleichheit
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1440984381982" ID="ID_187772178" MODIFIED="1518487921095" TEXT="Wert-Match">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1440984392453" ID="ID_1665153106" MODIFIED="1518487921095" TEXT="Contains">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      kombiniert den Wert-Match mit der Iteration
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#98e2df" DESTINATION="ID_947731706" ENDARROW="Default" ENDINCLINATION="-78;95;" ID="Arrow_ID_197324270" STARTARROW="None" STARTINCLINATION="168;-25;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1434128176918" ID="ID_863330674" MODIFIED="1561827465814" TEXT="Record">
<icon BUILTIN="button_ok"/>
<node CREATED="1434128198957" ID="ID_1224215957" MODIFIED="1512926192319" TEXT="Konstuktor">
<icon BUILTIN="button_ok"/>
<node CREATED="1434421381345" ID="ID_752165044" MODIFIED="1436042396321" TEXT="DSL zur Daten-Definition">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1434421403406" ID="ID_1085825017" MODIFIED="1434421414073" TEXT="Alternative zur Diff-Repr&#xe4;sentation"/>
<node CREATED="1434421422582" ID="ID_1730569377" MODIFIED="1434421448187">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Zweck: kompaktes Anschreiben
    </p>
    <p>
      von literalen Daten
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1435973418262" ID="ID_1847939996" MODIFIED="1512926192321">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Object <b>builder</b>
    </p>
  </body>
</html></richcontent>
<node CREATED="1435973448902" ID="ID_1729239555" MODIFIED="1512926192322" TEXT="wie definieren">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Problem ist, wir definieren den Typ Record generisch,
    </p>
    <p>
      verwenden dann aber nur die Spezialisierung Record&lt;GenNode&gt;
    </p>
    <p>
      Und die Builder-Funktionen brauchen eigentlich spezielles Wissen &#252;ber den zu konstruierenden Zieltyp
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="help"/>
<node CREATED="1436042433806" ID="ID_601307933" MODIFIED="1436042451130" TEXT="Erweiterungspunkt"/>
<node CREATED="1436042451694" ID="ID_1270184731" MODIFIED="1436042458786" TEXT="durch explizite Spezialiserung"/>
<node CREATED="1436042460726" ID="ID_818066421" MODIFIED="1436042468802" TEXT="nur f&#xfc;r genNode()"/>
<node CREATED="1436042480886" ID="ID_1194557524" MODIFIED="1436042502641">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Mutator selber is <i>noncopyable</i>
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1435973566277" ID="ID_1320441333" MODIFIED="1512926192323">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Ergebnis move
    </p>
    <p>
      <font size="1">pro / contra</font>
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Move ist <b>gef&#228;hrlich </b>
    </p>
    <p>
      aber auch deutlich effizienter,
    </p>
    <p>
      denn wir m&#252;ssen sonst das ganze erzeugte Ergebnis einmal kopieren.
    </p>
    <p>
      Nicht sicher, ob der Optimiser das hinbekommt
    </p>
  </body>
</html></richcontent>
<node CREATED="1436042507254" ID="ID_1832904297" MODIFIED="1436042518877">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <i>nur</i>&#160;auf dem Mutator
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1436042520942" ID="ID_1700762999" MODIFIED="1436042539843">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      dieser ist nicht kopierbar
    </p>
    <p>
      und mu&#223; dediziert erstellt werden
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1436042542502" ID="ID_890092502" MODIFIED="1436042552578" TEXT="move passiert immer explizit"/>
</node>
</node>
</node>
<node CREATED="1436042774669" FOLDED="true" ID="ID_714336641" MODIFIED="1573834498253" TEXT="Implementierung">
<icon BUILTIN="button_ok"/>
<node CREATED="1436042783700" ID="ID_381817780" MODIFIED="1436042788584" TEXT="zwei Collections"/>
<node CREATED="1436042814044" ID="ID_1455779230" MODIFIED="1436042818312" TEXT="aber semantisch eine Liste"/>
<node CREATED="1436924462201" ID="ID_1369837914" MODIFIED="1512926192324" TEXT="Probleme">
<icon BUILTIN="button_ok"/>
<node CREATED="1436924502056" ID="ID_1085481788" MODIFIED="1512926192326" TEXT="R&#xfc;ckgabetyp von Attribut-Gettern">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      m&#246;glicherweise schon gel&#246;st,
    </p>
    <p>
      denn Record ist insgesamt immutable.
    </p>
    <p>
      Also k&#246;nnen wir einen Find mit einem const_iterator machen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
<node CREATED="1439826834113" ID="ID_1331810475" MODIFIED="1439826858261">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      was sinnvoll ist,
    </p>
    <p>
      h&#228;ngt vom Payload-Typ ab
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1439826859630" ID="ID_658403513" MODIFIED="1439826896096">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      bei einer 'key = value' -Syntax mit strings
    </p>
    <p>
      ist nur ein Value-R&#252;ckgabewert sinnvoll
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1439826896985" ID="ID_180703618" MODIFIED="1439826904996" TEXT="habe es daher generisch/konfigurierbar gemacht"/>
<node CREATED="1439826905728" ID="ID_955222288" MODIFIED="1439826937458" TEXT="-&gt; &#xfc;berhaupt eine Typkonfiguration ist sinnvoll">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...auch kann man auf diesem Weg die Storage konfigurierbar machten
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1436924529208" ID="ID_1300693998" MODIFIED="1512926192327" TEXT="Handhabung des Typ-Feldes">
<icon BUILTIN="button_ok"/>
<node CREATED="1436925315589" ID="ID_327577903" MODIFIED="1533608414041" TEXT="herausfiltern">
<icon BUILTIN="help"/>
<node CREATED="1439826509444" ID="ID_333663358" MODIFIED="1439826524386" TEXT="ja">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1439826512572" ID="ID_1522833188" MODIFIED="1439826522070" TEXT="aus beliebigem Attribut"/>
</node>
<node CREATED="1436924568352" ID="ID_1243616839" MODIFIED="1533608414041" TEXT="in Attribut-Iterator">
<icon BUILTIN="help"/>
<node CREATED="1439826529649" ID="ID_1514781996" MODIFIED="1439826559628" TEXT="w&#xe4;re sch&#xf6;n">
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1439826535625" ID="ID_872404626" MODIFIED="1439826563061" TEXT="ist aber aufwendig">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1439826545167" ID="ID_185501908" MODIFIED="1439826726913" TEXT="geht nur mit Metadata-Collection">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      da wir einen IterAdapter verwenden, k&#246;nnen wir nur eine 'pos' (einen Quell-Iterator)
    </p>
    <p>
      als Zustands-Markierung verwenden; die gleiche 'pos' wird aber auch inkrementiert und dereferenziert.
    </p>
    <p>
      Daher ist die einzige praktikable L&#246;sung, da&#223; die Typ-ID in einem weiteren Vektor gespeichert wird.
    </p>
    <p>
      Das k&#246;nnte dann ein Metadaten-Vektor sein.
    </p>
    <p>
      
    </p>
    <p>
      Nat&#252;rlich ist dieser Ansatz nur sinnvoll, <i>wenn wir wirklich Metadaten brauchen.</i>
    </p>
    <p>
      Denn jeder Record zahlt den Preis f&#252;r die komplexere (zus&#228;tzliche) Datenstruktur!
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
</node>
<node CREATED="1436924578936" ID="ID_677097690" MODIFIED="1533608414042" TEXT="in Attribut-Collection ablegen">
<icon BUILTIN="help"/>
<node CREATED="1439826758699" ID="ID_873913305" MODIFIED="1439826761999" TEXT="pfiffige Idee"/>
<node CREATED="1439826762731" ID="ID_339809602" MODIFIED="1439826766758" TEXT="aber eigentlich ein Pfusch"/>
<node CREATED="1439826767274" ID="ID_1506445345" MODIFIED="1439826777093" TEXT="man m&#xfc;&#xdf;te jede Eingans-Collection normalisieren"/>
<node CREATED="1439826782368" ID="ID_386953463" MODIFIED="1439826789763" TEXT="man m&#xfc;&#xdf;te Duplikate filtern"/>
<node CREATED="1439826792343" ID="ID_775227666" MODIFIED="1439826804002" TEXT="NJET">
<icon BUILTIN="button_cancel"/>
</node>
</node>
</node>
<node CREATED="1439827003483" ID="ID_514691403" MODIFIED="1512926192329" TEXT="&apos;magische&apos; IDs als Attribute">
<icon BUILTIN="button_ok"/>
<node CREATED="1439827021297" ID="ID_154339557" MODIFIED="1439827028484" TEXT="brauche ich f&#xfc;r die Diff-Language"/>
<node CREATED="1439827061051" ID="ID_1563625085" MODIFIED="1439827543682" TEXT="implementiert als spezielle, magische ID-Referenzen">
<arrowlink COLOR="#5bf0d0" DESTINATION="ID_913220298" ENDARROW="Default" ENDINCLINATION="366;-59;" ID="Arrow_ID_806648905" STARTARROW="None" STARTINCLINATION="347;320;"/>
</node>
<node CREATED="1439827599485" ID="ID_426467512" MODIFIED="1439827625675" TEXT="ist es problematisch, wenn solche in die normalen Attribute geraten">
<icon BUILTIN="help"/>
</node>
<node CREATED="1439827636256" ID="ID_339472941" MODIFIED="1439827645763" TEXT="entscheidet sich im Diff-Algorithmus, sonst wurscht"/>
<node CREATED="1439827647038" ID="ID_1668349556" MODIFIED="1439827693504" TEXT="also geh&#xf6;rt das in einen h&#xf6;heren Layer">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1439827663860" ID="ID_582619719" MODIFIED="1439827698437" TEXT="Record sollte sich hier neutral verhalten">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
</node>
<node CREATED="1434128179406" HGAP="25" ID="ID_1833179523" MODIFIED="1512926192330" TEXT="Referez" VSHIFT="13">
<icon BUILTIN="button_ok"/>
<node CREATED="1434129158157" ID="ID_1777328498" MODIFIED="1512926192330" TEXT="sicher dereferenzierbar">
<node CREATED="1434205928410" ID="ID_733269570" MODIFIED="1434205947253" TEXT="entweder zwangsweise gebunden"/>
<node CREATED="1434205947841" ID="ID_871233558" MODIFIED="1434205955964" TEXT="oder NULL-Zustand mit Exception"/>
<node CREATED="1434205957177" ID="ID_499991180" MODIFIED="1434205968740" TEXT="inherente Unsicherheit einer Referenz"/>
</node>
<node CREATED="1434129167805" ID="ID_819452470" MODIFIED="1512926192330" TEXT="stand-in">
<arrowlink COLOR="#00ff33" DESTINATION="ID_654762061" ENDARROW="Default" ENDINCLINATION="-390;37;" ID="Arrow_ID_724106052" STARTARROW="Default" STARTINCLINATION="-48;187;"/>
<icon BUILTIN="help"/>
<node CREATED="1434129196709" ID="ID_1004519740" MODIFIED="1436042656829" TEXT="Subklasse von Rec">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      scheidet aus, wegen Wertsemantik
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1434129204149" ID="ID_1688475597" MODIFIED="1561827465820" TEXT="GenNode">
<linktarget COLOR="#66ff66" DESTINATION="ID_1688475597" ENDARROW="Default" ENDINCLINATION="219;91;" ID="Arrow_ID_57985873" SOURCE="ID_60404225" STARTARROW="Default" STARTINCLINATION="23;-52;"/>
<node CREATED="1434205661969" ID="ID_1484374626" MODIFIED="1434205705054">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      mit <i>speziellem </i>Ref-Typ
    </p>
    <p>
      <font size="1">-- im DataCap</font>
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#ffcccc" COLOR="#990033" CREATED="1434205598709" ID="ID_235720343" MODIFIED="1533608414042" TEXT="stand-in hei&#xdf;t...">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1434205739609" ID="ID_1185983904" MODIFIED="1434205778045" TEXT="kann anstelle eines Objektes treten"/>
<node CREATED="1434205834506" ID="ID_1477654683" MODIFIED="1434205859229" TEXT="transparent f&#xfc;r den Aufrufer"/>
<node CREATED="1434205862449" ID="ID_1736858324" MODIFIED="1434205879837" TEXT="Konsequenz: DataCap mu&#xdf; das verstehen"/>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1434128128869" ID="ID_244966341" MODIFIED="1518487921095" TEXT="Verben">
<node CREATED="1434128134508" ID="ID_553361956" MODIFIED="1573834578527" TEXT="ID-Repr&#xe4;s">
<arrowlink COLOR="#4f7ffc" DESTINATION="ID_976705384" ENDARROW="Default" ENDINCLINATION="-55;132;" ID="Arrow_ID_1285375088" STARTARROW="Default" STARTINCLINATION="-5;-77;"/>
<node CREATED="1434128393429" ID="ID_1275202366" MODIFIED="1518487921095" TEXT="mu&#xdf; GenNode sein">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1434128412934" ID="ID_1319614474" MODIFIED="1561827465826" TEXT="Repr&#xe4;s entscheiden">
<icon BUILTIN="go"/>
<node CREATED="1434128438565" ID="ID_913220298" MODIFIED="1512926192335" TEXT="als ID erkennbar">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      hei&#223;t: in der Diff-Verarbeitung wird dieser spezielle check verwendet
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#5bf0d0" DESTINATION="ID_913220298" ENDARROW="Default" ENDINCLINATION="366;-59;" ID="Arrow_ID_806648905" SOURCE="ID_1563625085" STARTARROW="None" STARTINCLINATION="347;320;"/>
<node CREATED="1434128740117" ID="ID_1537979881" MODIFIED="1434128764209" TEXT="spezielles Baumuster"/>
<node CREATED="1434128764893" ID="ID_1430586148" MODIFIED="1434128768689" TEXT="Gefahr von clashes"/>
<node CREATED="1434128769325" ID="ID_866845827" MODIFIED="1512926192335" TEXT="entscheide">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1434128779661" ID="ID_1739097548" MODIFIED="1434236311060" TEXT="marker-ID + string-Payload">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1434128917125" ID="ID_392407967" MODIFIED="1436021562160" TEXT="&quot;fehlkonstruierte&quot; ID + pr&#xfc;f-Pr&#xe4;dikat">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1434128981381" ID="ID_101281763" MODIFIED="1436042656881" TEXT="spezielle Ref-Payload">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      m.E. die einzig saubere Desgin-Variante!
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1436021576224" ID="ID_1239136010" MODIFIED="1512926192336" TEXT="Begr&#xfc;ndung">
<font NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="idea"/>
<node CREATED="1436021581655" ID="ID_124352424" MODIFIED="1436021603779" TEXT="hash-identische ID sorgt f&#xfc;r transparente Integration"/>
<node CREATED="1436021610648" ID="ID_1621632066" MODIFIED="1436021618067" TEXT="das nimmt Komplexit&#xe4;t aus der Anwendung heraus"/>
<node CREATED="1436021623799" ID="ID_929212705" MODIFIED="1436021637115" TEXT="f&#xfc;r die Dereferenzierung zahlt nur die Referenz"/>
<node CREATED="1436021694039" ID="ID_1657867881" MODIFIED="1436021817445" TEXT="Nachteil ist Gefahr der Verwirrung">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      gemeint ist:
    </p>
    <ul>
      <li>
        man kann alternativ auch eine RecordRef direkt in eine elementare GenNode packen
      </li>
      <li>
        diese verh&#228;lt sich dann nicht transparent, denn sie hat eine andere Identit&#228;t als ihr Ziel
      </li>
      <li>
        das kann aber als spezielles Ausdrucksmittel genutzt werden
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node CREATED="1436021719055" ID="ID_1039111553" MODIFIED="1436021730099" TEXT="ist nur ein halber Nachteil"/>
<node CREATED="1436021731615" ID="ID_1576857183" MODIFIED="1436021741970" TEXT="kann n&#xe4;mlich auch Ausdrucksmittel sein"/>
<node CREATED="1436021848790" ID="ID_742066846" MODIFIED="1436021874042" TEXT="problematisch ist die Implementerung des Erkennungs-Pr&#xe4;dikates"/>
</node>
</node>
</node>
<node CREATED="1434128446029" ID="ID_1779802587" MODIFIED="1512926192338" TEXT="hash-identisch">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      hei&#223;t: wird direkt von standard-equality so behandelt
    </p>
  </body>
</html></richcontent>
<node CREATED="1434128685597" ID="ID_690649535" MODIFIED="1434128705631">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      brauche speziellen Builder,
    </p>
    <p>
      der das so fabriziert
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1434128706589" ID="ID_1001559218" MODIFIED="1512926192339">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      bekomme einen
    </p>
    <p>
      &quot;ungenutzten&quot; DataCap
    </p>
  </body>
</html></richcontent>
<node CREATED="1434128996949" ID="ID_654762061" MODIFIED="1434239007746" TEXT="k&#xf6;nnte zur Ref ausgebaut werden">
<linktarget COLOR="#00ff33" DESTINATION="ID_654762061" ENDARROW="Default" ENDINCLINATION="-390;37;" ID="Arrow_ID_724106052" SOURCE="ID_819452470" STARTARROW="Default" STARTINCLINATION="-48;187;"/>
</node>
<node CREATED="1434130839653" HGAP="22" ID="ID_60404225" MODIFIED="1512926192341" VSHIFT="8">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Idee: <font color="#990033"><b>Ref-GenNode</b></font>
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#66ff66" DESTINATION="ID_1688475597" ENDARROW="Default" ENDINCLINATION="219;91;" ID="Arrow_ID_57985873" STARTARROW="Default" STARTINCLINATION="23;-52;"/>
<icon BUILTIN="idea"/>
<node CREATED="1434130866693" ID="ID_1402852366" MODIFIED="1434130886826">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      als Ref erkennbar
    </p>
    <p>
      <font size="1">(Pr&#228;dikat)</font>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1434130888581" ID="ID_369455584" MODIFIED="1434130912181">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      hash-identische
    </p>
    <p>
      Ziel-ID ableitbar
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1434206472689" ID="ID_561057428" MODIFIED="1434206482829" TEXT="Variant-Subklasse"/>
<node CREATED="1434206483657" ID="ID_473311646" MODIFIED="1434206508445" TEXT="Cast auf Rec-Typ pr&#xfc;fen"/>
<node CREATED="1434206509201" ID="ID_717222987" MODIFIED="1434206522117" TEXT="nur Ref-Fall zahlt Overhead"/>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1434129043245" ID="ID_1120430427" MODIFIED="1518487921095" TEXT="brauchen wir einen ref-Typ">
<font NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="help"/>
<node CREATED="1434129063053" ID="ID_1242923371" MODIFIED="1518487921095">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Verarbeiten
    </p>
    <p>
      von Teilb&#228;umen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1436019533354" ID="ID_1500539399" MODIFIED="1518487921095" TEXT="Konzept-Bruch">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1436042718309" ID="ID_109270255" MODIFIED="1518487921095" TEXT="Ja!">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1573834946400" ID="ID_1344414345" MODIFIED="1573834960224" TEXT="Erg&#xe4;nzungen/Weiterungen">
<icon BUILTIN="stop"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1573834997505" ID="ID_358670935" MODIFIED="1573835010544" TEXT="Diagnose">
<icon BUILTIN="bell"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1573834982323" ID="ID_1326387627" MODIFIED="1573834995669" TEXT="Hilfen zur Erzeugung">
<icon BUILTIN="hourglass"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1573835265349" ID="ID_352943196" MODIFIED="1573835276049" TEXT="Diff-Anwendung einbinden">
<icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1611218580537" ID="ID_1387738684" MODIFIED="1611218916752" TEXT="&quot;habituellen&quot; Standard-Fall etablieren">
<icon BUILTIN="button_ok"/>
<node CREATED="1611218653199" ID="ID_353919229" MODIFIED="1611218879611" TEXT="einzelne Objekt-Properties werden explizit gebunden">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1611218673196" ID="ID_104829523" MODIFIED="1611218882295" TEXT="ansonsten nur Sub-Collections">
<icon BUILTIN="idea"/>
<node CREATED="1611218685874" ID="ID_503186465" MODIFIED="1611218887833" TEXT="STL-Collection von Smart-Pointern">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1611218698241" ID="ID_766067661" MODIFIED="1611218890019" TEXT="das Pointee ist wieder DiffMutable">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#435e98" CREATED="1611218724397" ID="ID_495328814" MODIFIED="1611218907878" TEXT="Bindungs-Schema">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="forward"/>
<node CREATED="1611218730812" ID="ID_718558563" MODIFIED="1611218900241" TEXT="der Selector pr&#xfc;ft ein Typfeld">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1611218788908" ID="ID_1503520124" MODIFIED="1611218900241" TEXT="der Matcher pr&#xfc;ft die Objekt-ID">
<arrowlink COLOR="#4a72bc" DESTINATION="ID_1274607629" ENDARROW="Default" ENDINCLINATION="366;0;" ID="Arrow_ID_289559805" STARTARROW="None" STARTINCLINATION="155;13;"/>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1611218813169" ID="ID_1174818531" MODIFIED="1611218900241" TEXT="der Konstruktor enth&#xe4;lt das relevante Closure-Binding">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#435e98" CREATED="1611218846053" ID="ID_1626706964" MODIFIED="1611402381612" TEXT="Standard-Implementierung f&#xfc;r den rekursiven Kind-Mutator">
<arrowlink COLOR="#64b2d0" DESTINATION="ID_341242193" ENDARROW="Default" ENDINCLINATION="-1947;126;" ID="Arrow_ID_1779456185" STARTARROW="None" STARTINCLINATION="1123;53;"/>
<icon BUILTIN="yes"/>
</node>
<node COLOR="#435e98" CREATED="1611402402991" ID="ID_1274607629" MODIFIED="1611402440457" TEXT="Standard-Implementierung f&#xfc;r Matcher auf Objekt-ID">
<linktarget COLOR="#4a72bc" DESTINATION="ID_1274607629" ENDARROW="Default" ENDINCLINATION="366;0;" ID="Arrow_ID_289559805" SOURCE="ID_1503520124" STARTARROW="None" STARTINCLINATION="155;13;"/>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
</node>
<node CREATED="1573835763482" ID="ID_1220310042" MODIFIED="1576441741737" TEXT="Problem: Slave-Collection">
<arrowlink COLOR="#519b84" DESTINATION="ID_727500820" ENDARROW="Default" ENDINCLINATION="-67;7;" ID="Arrow_ID_115955006" STARTARROW="None" STARTINCLINATION="71;200;"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1573835793926" ID="ID_13734498" MODIFIED="1573835796913" TEXT="Situation">
<node CREATED="1573835798165" ID="ID_71062099" MODIFIED="1573835827477" TEXT="Diff-System verwaltet eine Master-Collection (Node-Children)"/>
<node CREATED="1573835830889" ID="ID_866446286" MODIFIED="1573835845435" TEXT="jedes Element in dieser hat einen/mehrere Delegates"/>
<node CREATED="1573835848966" ID="ID_1735677052" MODIFIED="1573835898353">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      diese Delegates sind <i>anderswo </i>in eine Collection eingebunden
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1573835862988" ID="ID_1733434217" MODIFIED="1573835890810">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      und deren Reihenfolge <i>ist dort </i>von Bedeutung
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1573837634757" ID="ID_101148427" MODIFIED="1575577381370" TEXT="Aufgabe: Ordnung (re)Konstruieren">
<linktarget COLOR="#624d7d" DESTINATION="ID_101148427" ENDARROW="Default" ENDINCLINATION="-3637;-782;" ID="Arrow_ID_498364014" SOURCE="ID_646844971" STARTARROW="None" STARTINCLINATION="2862;94;"/>
<linktarget COLOR="#624d7d" DESTINATION="ID_101148427" ENDARROW="Default" ENDINCLINATION="-3637;-782;" ID="Arrow_ID_1277214644" SOURCE="ID_350484232" STARTARROW="None" STARTINCLINATION="3792;340;"/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1573837829595" ID="ID_613778773" MODIFIED="1573837833320" TEXT="immer wenn...">
<node CREATED="1573837834482" ID="ID_980057100" MODIFIED="1573837839549" TEXT="ein Element hinzugekommen ist"/>
<node CREATED="1573837840543" ID="ID_749166782" MODIFIED="1573837845620" TEXT="ein Element entfernt wurde"/>
<node CREATED="1573837847552" ID="ID_1255347678" MODIFIED="1573837852995" TEXT="Element umgeordnet wurden"/>
</node>
<node COLOR="#338800" CREATED="1576441498133" ID="ID_1914385407" MODIFIED="1576441705766">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      brauche Detektor f&#252;r <i>structural change</i>
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#2340b6" DESTINATION="ID_1914385407" ENDARROW="Default" ENDINCLINATION="-316;5;" ID="Arrow_ID_960988463" SOURCE="ID_727500820" STARTARROW="None" STARTINCLINATION="306;48;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1576168044826" ID="ID_230800629" MODIFIED="1576441618407" TEXT="#1206 diff structure change listener">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1576360824678" ID="ID_1466401339" MODIFIED="1576441463530" TEXT="API definieren">
<icon BUILTIN="button_ok"/>
<node CREATED="1576360879043" ID="ID_1998526926" MODIFIED="1576361042423" TEXT="Entscheidung: allgemein in TreeMutator-DSL">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...man k&#246;nnte auch auf die Idee kommen, es nur in das Collection-Binding einzuh&#228;ngen.
    </p>
    <p>
      Das w&#228;re aber zu kurz gedacht; auch wenn im Moment dieses die einzige Implementierung ist, die den Listener tats&#228;chlich triggern kann, verbietet uns niemand in der Zukunft, noch eine anderes TreeMutator-Binding zu erfinden. Hinzu kommt, da&#223; ein Listener zus&#228;tzliche Storage und zus&#228;tzlichen Aufwand bedeutet, und deshalb besser als eigener &#187;onion layer&#171; implementiert wird
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node COLOR="#435e98" CREATED="1576361062012" ID="ID_591681960" MODIFIED="1576441459874" TEXT="Name: onSeqChange(lambda)">
<icon BUILTIN="forward"/>
</node>
</node>
<node COLOR="#338800" CREATED="1576189076819" FOLDED="true" ID="ID_817894648" MODIFIED="1576441575820" TEXT="Implementierung">
<icon BUILTIN="button_ok"/>
<node CREATED="1576189086866" ID="ID_99179892" MODIFIED="1576189103864" TEXT="Ansatzpunkt: TreeMutator">
<icon BUILTIN="idea"/>
<node CREATED="1576189115934" ID="ID_1929426370" MODIFIED="1576189130272" TEXT="vermutlich direkt in&apos;s collection-binding"/>
<node COLOR="#338800" CREATED="1576189131908" ID="ID_1843660348" MODIFIED="1576441468375" TEXT="brauche Testfall">
<icon BUILTIN="button_ok"/>
<node CREATED="1576189189125" FOLDED="true" ID="ID_791562073" MODIFIED="1576282487252" TEXT="huch... brauche einfachen Diff-Test">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="smiley-oh"/>
<node CREATED="1576281969322" ID="ID_163244559" MODIFIED="1576281981742">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      und zwar etwas <i>wirklich Einfaches</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1576281982520" ID="ID_1973953856" MODIFIED="1576282009657" TEXT="und nicht etwas Elementares">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      denn &quot;elementar&quot; bedeutet in diesem Fall, es wird ziemlich technisch und komplex
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#338800" CREATED="1576199505619" FOLDED="true" ID="ID_1589343634" MODIFIED="1576281940111" TEXT="erweitern auf einfaches Vector-Binding">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1576199519956" ID="ID_446671513" MODIFIED="1576281889609" TEXT="AUA... Inkonsistenzen im Collection-Binding">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      oh ja....
    </p>
    <p>
      das war ziemlich halbgar, und w&#228;re fr&#252;her oder sp&#228;ter ganz &#252;bel in's Auge gegangen.
    </p>
    <p>
      
    </p>
    <p>
      Erinnere mich, da&#223; ich damals beim Einf&#252;hren des MockElm dann eben doch eine &#187;Attribute-Map&#171; gebaut habe, obwohl ich vorher mich eigentlich gegen dieses Konzept entschieden hatte. Es ist in der Praxis dann doch manchmal sinnvolle, wie dieser Fall zeigt. Damit wurde aber mein TreeMutator-Collection-Binding &quot;wackelig&quot;, und ich hab mich da mehr oder weniger durchgefrickelt.
    </p>
    <p>
      
    </p>
    <p>
      Jetzt gibt es also echte ContainerTraits, und damit ist der Aufbau zukunftsfest.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="smiley-oh"/>
</node>
<node CREATED="1576281616730" ID="ID_1695910920" MODIFIED="1576281693124" TEXT="gel&#xf6;st durch Einf&#xfc;hren von ContainerTraits">
<arrowlink COLOR="#2eb28a" DESTINATION="ID_640546093" ENDARROW="Default" ENDINCLINATION="-191;-682;" ID="Arrow_ID_562122794" STARTARROW="None" STARTINCLINATION="485;33;"/>
</node>
<node CREATED="1576281921050" ID="ID_1921471268" MODIFIED="1576281938762" TEXT="erkennt nun sogar von STL-Containern abgeleitete Typen">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1576281890992" ID="ID_171789869" MODIFIED="1576281906090" TEXT="gutda&#xdf;wirdar&#xfc;bergeredethaben">
<font ITALIC="true" NAME="SansSerif" SIZE="10"/>
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node COLOR="#338800" CREATED="1576359839479" ID="ID_1358290407" MODIFIED="1576441467264" TEXT="direkt an die Test-Klasse binden, incl Listener">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1576361096645" ID="ID_643127461" MODIFIED="1576441434562" TEXT="Change-Listener-Layer implementieren">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1576366663548" ID="ID_656541265" MODIFIED="1576366682488" TEXT="Arbeitsmuster definieren">
<icon BUILTIN="yes"/>
<node CREATED="1576366684169" ID="ID_110323698" MODIFIED="1576366703873" TEXT="TreeMutator is disposable one-way">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1576366712798" ID="ID_801623795" MODIFIED="1576366723977" TEXT="d.h. wir setzen eine Flag direkt im Objekt"/>
</node>
<node CREATED="1576366728980" ID="ID_1022783655" MODIFIED="1576366739950" TEXT="welche Operationen?">
<node CREATED="1576367767800" ID="ID_1235301864" MODIFIED="1576367778488" TEXT="siehe tree-diff.cpp">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1576366782896" ID="ID_179852387" MODIFIED="1576367797511" TEXT="INS -&gt; injectNew"/>
<node CREATED="1576366789484" ID="ID_405222529" MODIFIED="1576367822460" TEXT="DEL -&gt; skipSrc"/>
<node CREATED="1576366797722" ID="ID_1163886447" MODIFIED="1576367834487" TEXT="FIND -&gt; findSrc"/>
<node CREATED="1576366804866" ID="ID_1100124063" MODIFIED="1576367840849" TEXT="SKIP -&gt; skipSrc"/>
<node CREATED="1576366806910" FOLDED="true" ID="ID_1967747316" MODIFIED="1576367751236" TEXT="AFTER">
<icon BUILTIN="button_cancel"/>
<node CREATED="1576366810811" ID="ID_604915658" MODIFIED="1576366818740" TEXT="aber nicht AFTER (Ref::END)"/>
<node CREATED="1576366829887" ID="ID_1189421464" MODIFIED="1576366936668" TEXT="weil ein dediziertes AFTER zum partiellen Akzeptieren verwendet werden k&#xf6;nnte"/>
<node COLOR="#435e98" CREATED="1576366942761" ID="ID_1416606569" MODIFIED="1576367685024" TEXT="Vorsicht ... da ist eine L&#xfc;cke im Argument">
<icon BUILTIN="clanbomber"/>
<node CREATED="1576367086708" ID="ID_1929510503" MODIFIED="1576367168398" TEXT="man kann indirekt das Ende kappen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...indem man nur teilweise PICK-Verben sendet, und dann einfach weggeht.
    </p>
    <p>
      Dann wir der Rest mit dem Mutator zusammen weggeworfen.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1576367169888" ID="ID_1591005930" MODIFIED="1576367275787">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      um <i>das</i>&#160;zu unterbinden, m&#252;&#223;ten alle Binding-Layer kollaborieren
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ..weil man diesen Umstand nicht generisch erkennen kann.
    </p>
    <p>
      Nach gegenw&#228;rtigem Stand kann das nur im Collection-Binding auftreten;
    </p>
    <p>
      dieses aber h&#228;tte auch die notwendigen Informationen, um diese Situation zu erkennen
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1576367369197" ID="ID_1086320549" MODIFIED="1576367380152" TEXT="HA! daran hab ich schon gedacht">
<icon BUILTIN="idea"/>
<node CREATED="1576367381612" ID="ID_197359864" MODIFIED="1576367388367" TEXT="TreeMutator::completeScope()"/>
<node CREATED="1576367467232" ID="ID_1177835259" MODIFIED="1576367468924" TEXT="TreeDiffMutatorBinding::__expect_end_of_scope"/>
<node CREATED="1576367469960" ID="ID_785965079" MODIFIED="1576367476719" TEXT="aufgerufen von EMU"/>
<node CREATED="1576367477423" ID="ID_1067589529" MODIFIED="1576367508185" TEXT="CollectionBinding pr&#xfc;ft tats&#xe4;chlich auf Vollst&#xe4;ndigkeit hier">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      d.h. es pr&#252;ft, ob keine Elemente im Arbeitspuffer &#252;brig sind
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1576367510259" ID="ID_1290532508" MODIFIED="1576367530122" TEXT="leider bleibt top-level hier au&#xdf;en vor">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1576367556845" ID="ID_1005031158" MODIFIED="1576367744992" TEXT="Konsequenz: ein solches DIFF ist formal nicht korrekt">
<arrowlink COLOR="#ca636f" DESTINATION="ID_332168125" ENDARROW="Default" ENDINCLINATION="23;-62;" ID="Arrow_ID_761091686" STARTARROW="None" STARTINCLINATION="-147;8;"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1576367573138" ID="ID_332168125" MODIFIED="1576367744992" TEXT="STOP. Dieser fall ist mithin zu 99% redundant">
<linktarget COLOR="#ca636f" DESTINATION="ID_332168125" ENDARROW="Default" ENDINCLINATION="23;-62;" ID="Arrow_ID_761091686" SOURCE="ID_1005031158" STARTARROW="None" STARTINCLINATION="-147;8;"/>
<icon BUILTIN="stop-sign"/>
<node CREATED="1576367626367" ID="ID_1026459150" MODIFIED="1576367638221" TEXT="es bleibt zwar eine L&#xfc;cke auf top-level"/>
<node CREATED="1576367638889" ID="ID_829309668" MODIFIED="1576367650884" TEXT="aber rein formal sollte es nicht auftreten"/>
<node CREATED="1576367652203" ID="ID_141662474" MODIFIED="1576367665480" TEXT="und damit wird AFTER selber immer neutral sein"/>
<node CREATED="1576367666205" ID="ID_392117818" MODIFIED="1576367677816" TEXT="und es braucht dann schon ein explizites INS, DEL, FIND, SKIP"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1576377684248" ID="ID_1419015987" MODIFIED="1576414100918" TEXT="Probleme mit der Builder-Konstruktion">
<icon BUILTIN="button_ok"/>
<node CREATED="1576377697727" ID="ID_202863640" MODIFIED="1576377709748" TEXT="Template-Error....">
<icon BUILTIN="smiley-angry"/>
</node>
<node CREATED="1576377711045" ID="ID_108442931" MODIFIED="1576377734670" TEXT="seltsamerweise... denn im Prinzip das Gleiche funktioniert doch f&#xfc;r collection und Attribute"/>
<node CREATED="1576378164751" ID="ID_326483835" MODIFIED="1576378173210" TEXT="mehrere Probleme">
<node COLOR="#435e98" CREATED="1576378177126" ID="ID_940209297" MODIFIED="1576413723637" TEXT="doppelt gewickelter Builder tritt auf">
<icon BUILTIN="messagebox_warning"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1576378190100" ID="ID_1161663563" MODIFIED="1576413711984" TEXT="Verdacht: implizite Konversion?">
<icon BUILTIN="broken-line"/>
</node>
<node CREATED="1576378201634" ID="ID_1282623104" MODIFIED="1576378225818" TEXT="mache mal den Builder-ctor explizit">
<node CREATED="1576378226991" ID="ID_553975580" MODIFIED="1576378241185" TEXT="den ein-elementigen Template ctor"/>
<node CREATED="1576378241893" ID="ID_1087579586" MODIFIED="1576378246208" TEXT="mit move-Argument"/>
<node CREATED="1576378247040" ID="ID_1200403421" MODIFIED="1576378259841" TEXT="denn der k&#xf6;nnte versehentlich einen Move-ctor generieren"/>
</node>
<node CREATED="1576378261915" ID="ID_564333709" MODIFIED="1576378272885" TEXT="einige Stellen im Code repariert"/>
<node CREATED="1576378273593" ID="ID_539526347" MODIFIED="1576378331296" TEXT="ist wohl insgesamt besser so, da explizit">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      denn <i>einfacher</i>&#160;wird der Code dadurch nicht, nur k&#252;rzer.
    </p>
    <p>
      Und m&#252;hsam f&#252;r den Leser ist er so oder so... dann also lieber alles ausschreiben
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#435e98" CREATED="1576378343418" ID="ID_1269344650" MODIFIED="1576413734213" TEXT="angeblich Aufruf gesperrter Copy-Ctorn">
<icon BUILTIN="broken-line"/>
<node CREATED="1576378359957" ID="ID_1488794757" MODIFIED="1576378478485" TEXT="das ist immer ein Ketten-Argument">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      da mu&#223; man auch erst mal drauf kommen, was einem der Compiler da so sagen will.
    </p>
    <p>
      use of deleted function &lt;some copy-ctor&gt;
    </p>
    <p>
      note: function &lt;some-copy-ctor&gt; is deleted, because the default definition would be ill formed
    </p>
    <p>
      error: <b>...und hier kommt nun die default-definition... </b>
    </p>
    <p>
      <i>und damit wiederholt sich das Ketten-Argument bis zur Basisklasse runter!!!</i>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1576378488388" ID="ID_467081251" MODIFIED="1576378531986" TEXT="schlie&#xdf;lich lande ich beim class TreeMutator  : util::MoveOnly"/>
<node CREATED="1576378541509" ID="ID_1269318107" MODIFIED="1576378548503" TEXT="wenn ich das entferne....">
<node CREATED="1576378549586" ID="ID_557832776" MODIFIED="1576378560918" TEXT="und auch noch diverse redundante definitionen mit dazu"/>
<node CREATED="1576378561650" ID="ID_270407327" MODIFIED="1576378578043" TEXT="(beachte: sobald irgendwo ein Move-ctor definiert ist, gibt es keinen copy-ctor mehr)"/>
</node>
<node CREATED="1576378580863" ID="ID_761583276" MODIFIED="1576378586645" TEXT="...dann gehts"/>
</node>
<node COLOR="#338800" CREATED="1576378589343" ID="ID_1164539927" MODIFIED="1576413693950" TEXT="also: irgendwo schwenkt die Kette auf einen copy-ctor um">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1576378609851" ID="ID_669880694" MODIFIED="1576413678942" TEXT="Frage-1 : wo?">
<icon BUILTIN="help"/>
<node CREATED="1576413599727" ID="ID_601054330" MODIFIED="1576413602019" TEXT="in Detector4StructuralChanges"/>
<node CREATED="1576413602872" ID="ID_1037688378" MODIFIED="1576413616834" TEXT="der hat einen explizit definierten dtor"/>
<node CREATED="1576413622373" ID="ID_676470389" MODIFIED="1576413665197" TEXT="und damit keinen impliziten move-ctor mehr!!">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      selbst wenn er &#252;ber x Basisklassen von MoveOnly erbt
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="clanbomber"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1576378616851" ID="ID_1283591083" MODIFIED="1576413685202" TEXT="Frage-2 : warum?">
<icon BUILTIN="help"/>
<node CREATED="1576410342653" ID="ID_1010651919" MODIFIED="1576413594966" TEXT="weil der betr. move-Ctor nicht (implizit) definiert ist">
<arrowlink COLOR="#4963d8" DESTINATION="ID_1999847041" ENDARROW="Default" ENDINCLINATION="-4316;0;" ID="Arrow_ID_809724531" STARTARROW="None" STARTINCLINATION="-6312;349;"/>
<icon BUILTIN="info"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1576416522053" ID="ID_910911447" MODIFIED="1576418727445" TEXT="listener wird nicht getriggert">
<linktarget COLOR="#3fe09e" DESTINATION="ID_910911447" ENDARROW="Default" ENDINCLINATION="-217;7;" ID="Arrow_ID_929225071" SOURCE="ID_159550911" STARTARROW="None" STARTINCLINATION="-2;-97;"/>
<icon BUILTIN="broken-line"/>
<node CREATED="1576416597927" ID="ID_805984773" MODIFIED="1576416619356" TEXT="ctor vom top-Level nicht aufgerufen"/>
<node CREATED="1576416620136" ID="ID_1598925580" MODIFIED="1576416632057" TEXT="denn der top-Level-TreeMutator lebt weiter"/>
<node CREATED="1576416632790" ID="ID_141285194" MODIFIED="1576416640381" TEXT="...solange der DiffApplikator lebt"/>
<node CREATED="1576416641269" ID="ID_605158809" MODIFIED="1576416645584" TEXT="ist das gut so?">
<node CREATED="1576416647561" ID="ID_486491592" MODIFIED="1576416658877" TEXT="viele Tests verwenden den Applikator mehrfach"/>
<node CREATED="1576416659587" ID="ID_791956106" MODIFIED="1576416715929" TEXT="nicht jedoch die produktive Verwendung in ctrl::Nexus::change (ID, MutationMessage&amp;&amp; diff)">
<icon BUILTIN="forward"/>
</node>
<node CREATED="1576416749566" ID="ID_1371891888" MODIFIED="1576417191286" TEXT="das k&#xf6;nnte sp&#xe4;ter auch ein Ansatzpunkt f&#xfc;r Caching sein">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1576417156080" ID="ID_1679161356" MODIFIED="1576417199243" TEXT="aber: jede neue Anwendung konstruiert einen neuen TreeMutator">
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#338800" CREATED="1576417208152" ID="ID_974220547" MODIFIED="1576418711474" TEXT="also braucht die Diff-Anwendung einen Abschlu&#xdf;">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1576189140651" FOLDED="true" ID="ID_835328626" MODIFIED="1576441578044" TEXT="Test">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1576189161697" ID="ID_1786250967" MODIFIED="1576441422008" TEXT="Struktur&#xe4;nderungen triggern Listener">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1576416511260" ID="ID_159550911" MODIFIED="1576418741174" TEXT="tut noch nicht...">
<arrowlink COLOR="#3fe09e" DESTINATION="ID_910911447" ENDARROW="Default" ENDINCLINATION="-217;7;" ID="Arrow_ID_929225071" STARTARROW="None" STARTINCLINATION="-2;-97;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1576419878367" ID="ID_1026985691" MODIFIED="1576441431851" TEXT="sonstiger Testfall l&#xe4;uft nicht">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1576419891302" ID="ID_1789182359" MODIFIED="1576441417632" TEXT="mein spezielles SET-Val-Konstrukt scheitert">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1576419910287" ID="ID_1413678907" MODIFIED="1576419939398" TEXT="default-Binding f&#xfc;r collection definiert Matcher">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      matchElement([](GenNode const&amp; spec, ELM const&amp; elm)
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;return spec.matches(elm);
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;})
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1576419949229" ID="ID_1686698811" MODIFIED="1576419955465" TEXT="spec.matches(elm)"/>
<node CREATED="1576419966419" ID="ID_394542951" MODIFIED="1576419977223" TEXT="GenNode::match(string)"/>
<node CREATED="1576419982536" ID="ID_1434821598" MODIFIED="1576419998348" TEXT="data.matchText">
<icon BUILTIN="broken-line"/>
<node CREATED="1576420000406" ID="ID_241418574" MODIFIED="1576420012017" TEXT="d.h. er matcht gegen den Content"/>
<node CREATED="1576420021236" ID="ID_1847609894" MODIFIED="1576420035463" TEXT="und nicht gegen die ID, wie ich geglaubt habe">
<icon BUILTIN="stop-sign"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1576420037817" ID="ID_1216654521" MODIFIED="1576441407046" TEXT="brauche wohl speziellen Matcher">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1576189172445" ID="ID_1803915875" MODIFIED="1576441423630" TEXT="andere &#xc4;nderungen triggern nicht">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1573835063441" ID="ID_1630863893" MODIFIED="1573835079773" TEXT="Architektur-Anpassungen">
<icon BUILTIN="forward"/>
<node CREATED="1573835082117" ID="ID_1921828362" MODIFIED="1573835086169" TEXT="Konsequenzen">
<node CREATED="1573835152100" ID="ID_31277125" MODIFIED="1573835175700" TEXT="Spannungen mit einem konvetionellen Datenmodell"/>
</node>
<node CREATED="1573835389094" ID="ID_1063481542" MODIFIED="1573835396665" TEXT="Protokoll-Adapter">
<node CREATED="1573837337894" ID="ID_414910178" MODIFIED="1573837342377" TEXT="Observer">
<node CREATED="1573837508831" ID="ID_1332948192" MODIFIED="1573837531855" TEXT="onChangeLocal">
<icon BUILTIN="hourglass"/>
</node>
<node CREATED="1573837514565" ID="ID_1974559184" MODIFIED="1573837528817" TEXT="onChangeSubtree">
<icon BUILTIN="hourglass"/>
</node>
<node COLOR="#338800" CREATED="1573837592850" ID="ID_727500820" MODIFIED="1582988538202" TEXT="onSeqChange">
<arrowlink COLOR="#2340b6" DESTINATION="ID_1914385407" ENDARROW="Default" ENDINCLINATION="-316;5;" ID="Arrow_ID_960988463" STARTARROW="None" STARTINCLINATION="306;48;"/>
<linktarget COLOR="#4d8b82" DESTINATION="ID_727500820" ENDARROW="Default" ENDINCLINATION="-1160;0;" ID="Arrow_ID_680446238" SOURCE="ID_1492167964" STARTARROW="None" STARTINCLINATION="-1645;0;"/>
<linktarget COLOR="#519b84" DESTINATION="ID_727500820" ENDARROW="Default" ENDINCLINATION="-67;7;" ID="Arrow_ID_115955006" SOURCE="ID_1220310042" STARTARROW="None" STARTINCLINATION="71;200;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1584309662354" ID="ID_274485695" MODIFIED="1584309897727" TEXT="onLocalChange">
<linktarget COLOR="#427176" DESTINATION="ID_274485695" ENDARROW="Default" ENDINCLINATION="-1913;0;" ID="Arrow_ID_1484023114" SOURCE="ID_161551669" STARTARROW="None" STARTINCLINATION="926;63;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1584309681495" HGAP="26" ID="ID_466790810" MODIFIED="1584309702146" TEXT="einfache Erg&#xe4;nzung" VSHIFT="14"/>
<node CREATED="1584309688390" ID="ID_9063913" MODIFIED="1584309697322" TEXT="schlie&#xdf;t auch Wert-Zuweisungen mit ein"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1475449611754" FOLDED="true" HGAP="33" ID="ID_1285123321" MODIFIED="1576281597012" TEXT="Grundsatzfrage: Attribut-Map" VSHIFT="1">
<linktarget COLOR="#ef6e6e" DESTINATION="ID_1285123321" ENDARROW="Default" ENDINCLINATION="-571;0;" ID="Arrow_ID_524729956" SOURCE="ID_275833424" STARTARROW="None" STARTINCLINATION="886;42;"/>
<linktarget COLOR="#9f719e" DESTINATION="ID_1285123321" ENDARROW="Default" ENDINCLINATION="170;-624;" ID="Arrow_ID_23523127" SOURCE="ID_1739941135" STARTARROW="None" STARTINCLINATION="875;242;"/>
<linktarget COLOR="#b85f4e" DESTINATION="ID_1285123321" ENDARROW="Default" ENDINCLINATION="-735;0;" ID="Arrow_ID_1644325647" SOURCE="ID_854221294" STARTARROW="None" STARTINCLINATION="-651;70;"/>
<icon BUILTIN="help"/>
<node CREATED="1475449654357" ID="ID_1802368116" MODIFIED="1475449659480" TEXT="Ordnung / Unordnung"/>
<node CREATED="1475449660020" ID="ID_286191859" MODIFIED="1475449740005" TEXT="Diff geht von Listen-Ordnung aus">
<icon BUILTIN="info"/>
</node>
<node CREATED="1475449777532" ID="ID_476663339" MODIFIED="1575133341421" TEXT="Symptom: Compile-Fehler">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <ul>
      <li>
        Map hat kein emplace_back
      </li>
      <li>
        Map hat kein back()
      </li>
    </ul>
    <p>
      Beides ist erst mal sinnvoll. Map hat zwar ein emplace, aber das f&#252;gt eben <i>irgendwo</i>&#160;ein
    </p>
    <p>
      Und es gibt nicht sowas wie das &quot;zuletzt behandelte&quot; Element
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1475506967550" HGAP="42" ID="ID_1112268061" MODIFIED="1576203628630" TEXT="ist aber implementierbar" VSHIFT="8">
<arrowlink COLOR="#9f96d9" DESTINATION="ID_453712930" ENDARROW="Default" ENDINCLINATION="722;-59;" ID="Arrow_ID_1263259661" STARTARROW="Default" STARTINCLINATION="1873;0;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
<node CREATED="1475449719180" ID="ID_6178930" MODIFIED="1533608413999" TEXT="Sinnvoll das zu erweitern">
<icon BUILTIN="help"/>
<node CREATED="1475450034810" ID="ID_445949466" MODIFIED="1561827465612" TEXT="pro">
<icon BUILTIN="button_cancel"/>
<node CREATED="1475450042009" FOLDED="true" ID="ID_1941838908" MODIFIED="1561827483837" TEXT="man k&#xf6;nnte">
<node CREATED="1475450050824" ID="ID_1660008285" MODIFIED="1475450053243" TEXT="ins"/>
<node CREATED="1475450055775" ID="ID_1213643084" MODIFIED="1475450058698" TEXT="after::END"/>
<node CREATED="1475450064470" ID="ID_754885592" MODIFIED="1475450069265" TEXT="assign / mutate"/>
</node>
<node CREATED="1475450148771" FOLDED="true" ID="ID_736367412" MODIFIED="1561827483837">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Reihenfolge
    </p>
    <p>
      erhalten!
    </p>
  </body>
</html></richcontent>
<node CREATED="1475450179591" ID="ID_793985703" MODIFIED="1475450197936" TEXT="dann sogar del"/>
<node CREATED="1475450053927" ID="ID_1110207658" MODIFIED="1475450055018" TEXT="pick"/>
</node>
</node>
<node CREATED="1475450038953" ID="ID_1285250844" MODIFIED="1561827465614" TEXT="con">
<icon BUILTIN="button_ok"/>
<node CREATED="1475450285336" ID="ID_288261682" MODIFIED="1475450300712" TEXT="kein Schutz gegen sinnlose Operationen"/>
<node CREATED="1475450229944" ID="ID_957217069" MODIFIED="1475450239042" TEXT="Reihenfolge ist Impl-Detail"/>
<node CREATED="1475450240318" ID="ID_1993698586" MODIFIED="1575133341545" TEXT="Hashmap">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...hat eine &quot;zuf&#228;llige&quot; Reihenfolge, die von den Hash-Werten der gespeicherten Daten abh&#228;ngt.
    </p>
    <p>
      Das bricht mit unserem grunds&#228;tzlichen Konzept der <b>kongruenten</b>&#160; Daten-Strukturen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1475450272442" ID="ID_567969130" MODIFIED="1575133341561" TEXT="inkompatibel mit GenNode">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Ein Diff, das von einer ETD gezogen wurde,
    </p>
    <p>
      l&#228;&#223;t sich nicht auf eine Map-Implementierung aufspielen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
<node CREATED="1475506346525" ID="ID_574367406" MODIFIED="1533608414015" VSHIFT="6">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Entscheidung
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
<node CREATED="1475506358863" ID="ID_120379432" MODIFIED="1475506391795" TEXT="wird nicht empfohlen">
<font ITALIC="true" NAME="SansSerif" SIZE="13"/>
</node>
<node CREATED="1475506368078" ID="ID_1568414977" MODIFIED="1475506381941" TEXT="vollst&#xe4;ndigkeitshalber unterst&#xfc;tzt">
<font NAME="SansSerif" SIZE="11"/>
</node>
<node CREATED="1475506411768" ID="ID_583086851" MODIFIED="1575133341643" TEXT="kann sinnvoll sein...">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...zum Beispiel wie grade hier, beim MockElm
    </p>
    <p>
      das wird vermutlich niemals wirklich in einem vollen Diff-Zusammenhang gebraucht.
    </p>
    <p>
      
    </p>
    <p>
      Und dann ist unbestreitbar eine Map eine sehr einfache Implementierung
    </p>
    <p>
      und auch im Diff-Applikator nicht wirklich schwierig zu unterst&#252;tzen
    </p>
  </body>
</html></richcontent>
<font NAME="SansSerif" SIZE="10"/>
</node>
<node COLOR="#338800" CREATED="1475506514203" HGAP="45" ID="ID_1183193114" MODIFIED="1561827465614" TEXT="Begr&#xfc;ndung" VSHIFT="23">
<node CREATED="1475506528937" ID="ID_1971084550" MODIFIED="1475506538324" TEXT="es verletzt die Prinzipien"/>
<node CREATED="1475506538983" ID="ID_1555995664" MODIFIED="1475506547491" TEXT="insofern aber wie Feld-Attribute auch"/>
<node CREATED="1475506549886" ID="ID_275560362" MODIFIED="1475506558609" TEXT="eingeschr&#xe4;nkt unterst&#xfc;tzbar"/>
<node CREATED="1475506559309" ID="ID_1767038604" MODIFIED="1475506896798" TEXT="Objekt -&gt; ETD -&gt; Objekt">
<arrowlink COLOR="#807bce" DESTINATION="ID_1795458386" ENDARROW="Default" ENDINCLINATION="671;0;" ID="Arrow_ID_1621793396" STARTARROW="Default" STARTINCLINATION="994;0;"/>
</node>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1443733567706" FOLDED="true" HGAP="325" ID="ID_143203937" MODIFIED="1573834336766" TEXT="Diff-Language" VSHIFT="41">
<cloud COLOR="#cfba9d"/>
<linktarget COLOR="#a9acc1" DESTINATION="ID_143203937" ENDARROW="Default" ENDINCLINATION="115;-2033;" ID="Arrow_ID_136706418" SOURCE="ID_1091994004" STARTARROW="None" STARTINCLINATION="1656;0;"/>
<font NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="go"/>
<node CREATED="1443733726563" ID="ID_410650103" MODIFIED="1443733731422" TEXT="Grundlagen">
<node CREATED="1443733732938" ID="ID_73184558" MODIFIED="1443733737277" TEXT="Folge von Verben"/>
<node CREATED="1443733738296" ID="ID_994909291" MODIFIED="1443733743181" TEXT="konstante Gr&#xf6;&#xdf;e"/>
<node CREATED="1443733744169" ID="ID_1410679171" MODIFIED="1443733756330" TEXT="ein Argument pro Verb"/>
<node CREATED="1443733768621" ID="ID_183648684" MODIFIED="1443733796453">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <b>Interpreter</b>&#160;definiert Sprache
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#56397a" CREATED="1443733800322" ID="ID_1544242343" MODIFIED="1488423307267" TEXT="Nutz-Muster">
<font NAME="SansSerif" SIZE="13"/>
<node CREATED="1443733822780" ID="ID_756812969" MODIFIED="1512926192344" TEXT="Basis-F&#xe4;lle">
<node CREATED="1443733856089" ID="ID_1358940500" MODIFIED="1512926192345">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      ROOT
    </p>
  </body>
</html></richcontent>
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1443733978248" ID="ID_724172314" MODIFIED="1443733983252" TEXT="Wurzel pflanzen"/>
<node CREATED="1443733984336" ID="ID_109703386" MODIFIED="1443733993674" TEXT="Au&#xdf;erhalb der Sprache"/>
<node CREATED="1443733994310" ID="ID_52662692" MODIFIED="1443733998417" TEXT="...oder rekursiv"/>
</node>
<node CREATED="1443733868958" ID="ID_676848577" MODIFIED="1512926192345">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      INIT
    </p>
  </body>
</html></richcontent>
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1443734005660" ID="ID_1028914628" MODIFIED="1512926192346">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      leeres
    </p>
    <p>
      Objekt
    </p>
  </body>
</html></richcontent>
<node CREATED="1443734026466" ID="ID_1051774321" MODIFIED="1512926192346" TEXT="typen">
<node CREATED="1443735007685" ID="ID_1426207394" MODIFIED="1443735015668" TEXT="&quot;type&quot;-Attribut">
<font NAME="SansSerif" SIZE="11"/>
</node>
</node>
<node CREATED="1443734030329" ID="ID_257027438" MODIFIED="1443734033052" TEXT="bef&#xfc;llen"/>
</node>
</node>
<node CREATED="1443733903314" ID="ID_1973278843" MODIFIED="1512926192347" TEXT="NAV">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1443734039776" ID="ID_1572908212" MODIFIED="1512926192347" TEXT="pick">
<font NAME="SansSerif" SIZE="12"/>
<node CREATED="1444349667741" ID="ID_1407797227" MODIFIED="1444349672062" TEXT="by-name"/>
<node CREATED="1444349672792" ID="ID_267468753" MODIFIED="1444349690748" TEXT="anonym">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      pick(Ref::CHILD)
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1443734637416" ID="ID_461220696" MODIFIED="1512926192348" TEXT="after">
<node CREATED="1443741466072" ID="ID_1108877437" MODIFIED="1444349773888" TEXT="Frage: wrap erlauben">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      w&#252;rde sagen: ja, aber auch <i>nur</i>&#160;f&#252;r das after-Verb!
    </p>
    <p>
      allgemein halte ich einen wrap-around f&#252;r keine gute Idee,
    </p>
    <p>
      weil er zu Zweideutigekeigen f&#252;hrt und daher Struktur oder Konsistenzfehler &#252;berspielt
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="help"/>
</node>
</node>
</node>
<node CREATED="1443733891492" ID="ID_1727724941" MODIFIED="1512926192348" TEXT="MOD">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1443734646734" ID="ID_841341176" MODIFIED="1512926192349" TEXT="INS">
<node CREATED="1443734713781" ID="ID_10743682" MODIFIED="1443734720912" TEXT="vorne"/>
<node CREATED="1443734721692" ID="ID_1206301961" MODIFIED="1443734723047" TEXT="innen"/>
<node CREATED="1443734723899" ID="ID_614189310" MODIFIED="1443734740809" TEXT="APPEND">
<font NAME="SansSerif" SIZE="11"/>
</node>
</node>
<node CREATED="1443734649902" ID="ID_1557261619" MODIFIED="1512926192349" TEXT="DEL">
<node CREATED="1443734770118" ID="ID_1863350908" MODIFIED="1443734772777" TEXT="n&#xe4;chsten"/>
<node CREATED="1443734773317" ID="ID_738630660" MODIFIED="1443734775409" TEXT="letzten"/>
</node>
<node CREATED="1443734652509" ID="ID_72317753" MODIFIED="1512926192349" TEXT="PERM">
<node CREATED="1443734781868" ID="ID_868966231" MODIFIED="1443734785215" TEXT="find-fetch"/>
<node CREATED="1443734785971" ID="ID_1082279397" MODIFIED="1512926192350" TEXT="push">
<icon BUILTIN="button_cancel"/>
<node CREATED="1443734808360" ID="ID_1918783570" MODIFIED="1443734832562" TEXT="Parameter">
<icon BUILTIN="help"/>
</node>
<node CREATED="1443734796346" ID="ID_1017278649" MODIFIED="1443734869522" TEXT="&#xfc;berfl&#xfc;ssig">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      l&#228;&#223;t sich stets duch eine inverse Folge von <i>find</i>&#160;und <i>pick</i>&#160; emulieren
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
<node CREATED="1443733895611" ID="ID_1632274940" MODIFIED="1512926192350" TEXT="MUT">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1443734664572" ID="ID_602667530" MODIFIED="1512926192351" TEXT="by-name">
<node CREATED="1443734917130" ID="ID_583238947" MODIFIED="1443734923740" TEXT="nur im Scope"/>
<node CREATED="1443734926912" ID="ID_634765493" MODIFIED="1443734937699" TEXT="er&#xf6;ffnet sub-Scope"/>
</node>
<node CREATED="1443734668267" ID="ID_1281243531" MODIFIED="1512926192351" TEXT="_THIS_">
<font NAME="SansSerif" SIZE="11"/>
<node CREATED="1443734884526" ID="ID_1720972097" MODIFIED="1443734907375" TEXT="gilt postfix"/>
<node CREATED="1443734942974" ID="ID_72035627" MODIFIED="1443734946841" TEXT="sonst wie normales MUT"/>
<node CREATED="1443734955012" ID="ID_132520838" MODIFIED="1443734972286" TEXT="erlaubt Anlegen + Populieren"/>
<node CREATED="1460934541540" ID="ID_789170184" MODIFIED="1460934562112" TEXT="von fragw&#xfc;rdigem Nutzen!">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
</node>
<node CREATED="1443735171208" HGAP="46" ID="ID_1757651048" MODIFIED="1525124215375" TEXT="Objekt-Baum-Semantik" VSHIFT="13">
<icon BUILTIN="info"/>
<node CREATED="1443735379267" ID="ID_628105032" MODIFIED="1512926192352" TEXT="Wurzel">
<node CREATED="1443735418201" ID="ID_1521312079" MODIFIED="1443735418201" TEXT="wird vorausgesetzt"/>
<node CREATED="1443735385523" ID="ID_1179435276" MODIFIED="1443735425593" TEXT="ist stets ein Record"/>
</node>
<node CREATED="1443735531351" ID="ID_1428234818" MODIFIED="1512926192353" TEXT="Objekt">
<node CREATED="1443735554379" ID="ID_676366486" MODIFIED="1443735571653" TEXT="Inhalt als Liste"/>
<node CREATED="1443735572833" ID="ID_343264561" MODIFIED="1512926192353" TEXT="Zonen">
<node CREATED="1443735596550" ID="ID_236186740" MODIFIED="1443735598258" TEXT="Meta"/>
<node CREATED="1443735598966" ID="ID_1441633165" MODIFIED="1443735601009" TEXT="Attribute"/>
<node CREATED="1443735601477" ID="ID_1740180586" MODIFIED="1443735605393" TEXT="Scope"/>
</node>
<node CREATED="1443735621027" ID="ID_850995598" MODIFIED="1512926192353" TEXT="Protokoll">
<node CREATED="1443735625714" ID="ID_1979053137" MODIFIED="1443735638372" TEXT="Reihenfolge erhaltend"/>
<node CREATED="1443735638840" ID="ID_1930287259" MODIFIED="1443735642020" TEXT="nicht sortiert"/>
<node CREATED="1443735643536" ID="ID_1397296376" MODIFIED="1443735648747" TEXT="nach Zonen geordnet"/>
</node>
<node CREATED="1443735736427" ID="ID_735577464" MODIFIED="1512926192354" TEXT="Konformit&#xe4;t">
<node CREATED="1443736349465" ID="ID_1312270317" MODIFIED="1561827465845" TEXT="strikt">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      vorerst verworfen, da zus&#228;tzlicher Pr&#252;f-Aufwand
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_cancel"/>
<node CREATED="1443736367255" ID="ID_1634633098" MODIFIED="1443736380225" TEXT="Meta-Attribute zuerst"/>
<node CREATED="1443736626731" ID="ID_600165347" MODIFIED="1443736652396" TEXT="keine Attribut-Duplikate"/>
<node CREATED="1443736388180" ID="ID_435516555" MODIFIED="1443736666538" TEXT="Attribute strikt vor Kindern"/>
</node>
<node CREATED="1443736354800" FOLDED="true" ID="ID_1024688383" MODIFIED="1573834317454" TEXT="locker">
<icon BUILTIN="button_ok"/>
<node CREATED="1443735740907" ID="ID_1103250008" MODIFIED="1443735747902" TEXT="Meta-Attribute sind magisch"/>
<node CREATED="1473353076877" ID="ID_1936057196" MODIFIED="1561827465846" TEXT="2-Layer binding">
<icon BUILTIN="button_ok"/>
<node CREATED="1473353083492" ID="ID_1800912467" MODIFIED="1512926192356" TEXT="es gibt eine Schicht">
<node CREATED="1473353090435" ID="ID_708279376" MODIFIED="1473353094535" TEXT="f&#xfc;r Attribute"/>
<node CREATED="1473353095051" ID="ID_484062615" MODIFIED="1473353096974" TEXT="f&#xfc;r Kinder"/>
</node>
<node CREATED="1473353098274" ID="ID_1387467215" MODIFIED="1473353107805" TEXT="jede Schicht arbeitet in sich konsistent"/>
<node CREATED="1473353109241" ID="ID_132411161" MODIFIED="1473353115884" TEXT="sichtbare Reihenfolge bleibt fest"/>
</node>
<node CREATED="1443736688027" ID="ID_1189409086" MODIFIED="1512926192357" TEXT="Attribut-Handhabung">
<node CREATED="1443737483704" ID="ID_1359413673" MODIFIED="1561827465846" TEXT="Modell &quot;Liste&quot;">
<icon BUILTIN="button_ok"/>
<node CREATED="1443737510238" ID="ID_1135997794" MODIFIED="1443737510238" TEXT="Duplikate anh&#xe4;ngen"/>
<node CREATED="1443737516852" ID="ID_636329172" MODIFIED="1443737527750" TEXT="Einf&#xfc;gen erlauben"/>
<node CREATED="1443737528578" ID="ID_1554159544" MODIFIED="1443737538461" TEXT="Umordnen erlauben"/>
<node CREATED="1443737570229" ID="ID_28119998" MODIFIED="1443737576392" TEXT="L&#xf6;schen erfordert Ansteuern"/>
</node>
<node CREATED="1443737497870" ID="ID_113467015" MODIFIED="1561827465847" TEXT="Modell &quot;Map&quot;">
<icon BUILTIN="button_cancel"/>
<node CREATED="1443737705058" ID="ID_1320189713" MODIFIED="1443737716690" TEXT="Operationen an Storage delegieren"/>
<node CREATED="1443737578803" ID="ID_1670234515" MODIFIED="1443737602756" TEXT="Duplikate &#xfc;berschreiben"/>
<node CREATED="1443737605080" ID="ID_609776485" MODIFIED="1443737739674" TEXT="Neue an Standardort anf&#xfc;gen"/>
<node CREATED="1443737747941" ID="ID_1552219906" MODIFIED="1443737757207" TEXT="Umordnungen verweigern/ignorieren"/>
<node CREATED="1443737769122" ID="ID_697980786" MODIFIED="1443737777276" TEXT="L&#xf6;schen an beliebiger Stelle wirksam"/>
</node>
<node CREATED="1443738082216" HGAP="38" ID="ID_870184525" MODIFIED="1561827465848" TEXT="Abw&#xe4;gung" VSHIFT="7">
<icon BUILTIN="button_ok"/>
<node CREATED="1443738097022" ID="ID_1609921484" MODIFIED="1443738178020" TEXT="Modelle schlie&#xdf;en sich aus">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...Grund: sie werden durch einen jeweils komplett anderen Ansatz implementiert
    </p>
    <ul>
      <li>
        &quot;Liste&quot; beruht auf dem Attribut-Iterator und dem Aufbauen einer neuen Attribut-Sammlung
      </li>
      <li>
        &quot;Map&quot; beruht darauf, alle Operationen an die Storage zu delegieren
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node CREATED="1443738179947" ID="ID_1249607715" MODIFIED="1533608414043" TEXT="&quot;Liste&quot;">
<node CREATED="1443738196336" ID="ID_855336404" MODIFIED="1561827465849" TEXT="Vorteile">
<node CREATED="1443738556296" ID="ID_340267804" MODIFIED="1443738562763" TEXT="verwendet vorhandene Impl"/>
<node CREATED="1443738563263" ID="ID_583767245" MODIFIED="1443738575817" TEXT="uniforme Semantik der Diff-Sprache"/>
<node CREATED="1443738577781" ID="ID_1622210655" MODIFIED="1443738793488" TEXT="partielle Ordnung darstellbar">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      das hei&#223;t, man kann Attribute in einer &quot;sinnvoll lesbaren&quot; Ordnung anschreiben
    </p>
    <p>
      und sp&#228;ter angef&#252;gte Attribute bleiben so erkennbar.
    </p>
    <p>
      Vorteilhaft f&#252;r Version-Management
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1443738653931" ID="ID_604966063" MODIFIED="1443738813866" TEXT="Effizienz des List-Diff">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      profitiert also von allen Verbesserungen des allgemeinen Algorithmus
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1443738592971" ID="ID_790837479" MODIFIED="1455841731908" TEXT="bei uns: hoch effizient">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      &quot;hoch effizient&quot;, unter der Annahme, da&#223; fast immer nur konforme &#196;nderungen kommen.
    </p>
    <p>
      Weil dann n&#228;mlich die in unserer Implementierung ggfs. kostspieligen Umordnungen entfallen,
    </p>
    <p>
      kommen wir auf lineare Komplexit&#228;t f&#252;r die Verarbeitung
    </p>
    <p>
      + NlogN f&#252;r den Index zur Diff-Erzeugung
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1443738199160" ID="ID_955544777" MODIFIED="1561827465849" TEXT="Nachteile">
<node CREATED="1443738500000" ID="ID_201650237" MODIFIED="1443738505571" TEXT="Duplikate toleriert"/>
<node CREATED="1443738929854" ID="ID_852940283" MODIFIED="1443739153420" TEXT="sinnloser Index-Aufbau (Diff-Erzeugung)">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      unsere Impl der <i>Diff-Erzeugung&#160;(!)</i>
    </p>
    <p>
      baut einen Index auf (N*logN), um Einf&#252;gungen/Entfernungen zu erkennen und Umordnungs-Suche zu unterst&#252;tzen.
    </p>
    <p>
      Wenn wir aber von ausschlie&#223;lich konformen Operationen ausgehen,
    </p>
    <p>
      wird dieser Index nicht ben&#246;tigt. Leider k&#246;nnen wir das aber nicht garantieren, denn
    </p>
    <p>
      es k&#246;nnte ja zwischenzeitlich ein Attribut gel&#246;scht und dann sp&#228;ter (am Ende) wieder
    </p>
    <p>
      angeh&#228;ngt worden sein, was dann eben doch einen Index erfordert, um einen
    </p>
    <p>
      korrekten Listen-Diff zu erzeugen
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node CREATED="1443738179947" ID="ID_1861982554" MODIFIED="1533608414045" TEXT="&quot;Map&quot;">
<node CREATED="1443738196336" ID="ID_997066012" MODIFIED="1561827465849" TEXT="Vorteile">
<node CREATED="1443738237731" ID="ID_1438410748" MODIFIED="1443738244389" TEXT="Konformit&#xe4;t garantiert"/>
</node>
<node CREATED="1443738199160" ID="ID_571621671" MODIFIED="1561827465851" TEXT="Nachteile">
<node CREATED="1443738352419" ID="ID_439396381" MODIFIED="1443738730869" TEXT="Effizienz der Storage">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      d.h. <i>wenn</i>&#160;die Storage hoch-optimiert ist,
    </p>
    <p>
      dann &#252;bertr&#228;gt sich das auf die Diff-Behandlung
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1443738371545" ID="ID_1959160321" MODIFIED="1443738695968" TEXT="bei uns: voll-Quadratisch">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      da wir Attribute in einer Liste speichern,
    </p>
    <p>
      m&#252;ssen wir f&#252;r jede Einf&#252;gung eine vollst&#228;ndige Suche machen
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1443738416083" ID="ID_793860786" MODIFIED="1443738470421" TEXT="erfordert separate Impl">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...gemeint ist: extra, anders als die normale Listenverarbeitung.
    </p>
    <p>
      Auch wenn diese andere Implementierung nur delegiert
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1443738471955" ID="ID_315855253" MODIFIED="1443738478894" TEXT="versteckte 2.Semantik"/>
</node>
</node>
</node>
<node CREATED="1443739215487" HGAP="42" ID="ID_1540836182" MODIFIED="1512926192361" TEXT="Entscheidung">
<icon BUILTIN="info"/>
<node CREATED="1443739221631" ID="ID_338047062" MODIFIED="1443739227649" TEXT="&quot;Listen&quot;-Modell"/>
<node CREATED="1443739228542" ID="ID_773218806" MODIFIED="1443739244615" TEXT="eindeutig vorzuziehen"/>
<node CREATED="1443739245483" ID="ID_1943112941" MODIFIED="1533608414046" TEXT="zwei Gr&#xfc;nde">
<node CREATED="1443739308651" ID="ID_1436069181" MODIFIED="1443739311142" TEXT="Performance"/>
<node CREATED="1443739311562" ID="ID_1848034442" MODIFIED="1443739314222" TEXT="Wartbarkeit"/>
</node>
<node CREATED="1443739323033" ID="ID_1428762486" MODIFIED="1561827465852" TEXT="&quot;zwei Listen&quot;-Modell">
<icon BUILTIN="button_ok"/>
<node CREATED="1443739335823" ID="ID_860198617" MODIFIED="1443739349777" TEXT="intern f&#xfc;hren wir zwei Listen-Diffs durch"/>
<node CREATED="1443739350869" ID="ID_464299464" MODIFIED="1443739368974" TEXT="ein Trennkriterium f&#xfc;hrt zum Umschalten"/>
<node CREATED="1443739399718" ID="ID_686887994" MODIFIED="1443739426315">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      danach noch auftretende Attribute
    </p>
    <p>
      erfordern Sonder-Behandlung,
    </p>
    <p>
      indem sie an die Attributs-Liste angeh&#228;ngt werden
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1443733831475" HGAP="1" ID="ID_1421473885" MODIFIED="1512926192364" TEXT="Fehler-F&#xe4;lle" VSHIFT="7">
<node CREATED="1443736788646" ID="ID_672669721" MODIFIED="1512926192364" TEXT="formal">
<node CREATED="1443736804803" ID="ID_1706990948" MODIFIED="1512926192365" TEXT="Syntax">
<node CREATED="1443737154028" ID="ID_143683919" MODIFIED="1443737159781" TEXT="durch Typsystem unterbunden">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
<node CREATED="1443738002250" ID="ID_1398802900" MODIFIED="1443738006115" TEXT="sicher">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
</node>
<node CREATED="1443736824112" ID="ID_1520561537" MODIFIED="1512926192365" TEXT="unpassende Parameter">
<node CREATED="1443737180297" ID="ID_1748864612" MODIFIED="1443737193859" TEXT="Laufzeit-Check">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
<node CREATED="1443738011018" ID="ID_1408814832" MODIFIED="1443738023248" TEXT="ggfs unvollst&#xe4;ndig">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
</node>
<node CREATED="1443736846078" ID="ID_1354240107" MODIFIED="1512926192365" TEXT="Mismatch am Ziel">
<node CREATED="1443736895663" ID="ID_1436447416" MODIFIED="1443736897539" TEXT="erkennbar"/>
<node CREATED="1443736897983" ID="ID_636884790" MODIFIED="1443736900051" TEXT="unbemerkt"/>
</node>
</node>
<node CREATED="1443736791421" ID="ID_23907569" MODIFIED="1512926192366" TEXT="semantisch">
<node CREATED="1443737005833" ID="ID_1457267751" MODIFIED="1512926192367" TEXT="INIT aber nicht leer">
<node CREATED="1443737222707" ID="ID_1242625886" MODIFIED="1443737241501" TEXT="sehr gef&#xe4;hrlich bei strikter Konformit&#xe4;t"/>
<node CREATED="1443737242824" ID="ID_461820743" MODIFIED="1443737260482" TEXT="harmlos sonst; wird glattgebogen"/>
<node CREATED="1443737279172" ID="ID_1485388967" MODIFIED="1443737290806" TEXT="kann dann aber zu undefiniertem Zustand f&#xfc;hren"/>
</node>
<node CREATED="1443737017511" ID="ID_744413839" MODIFIED="1512926192367" TEXT="INS Attribut-Duplikat">
<node CREATED="1443739508920" ID="ID_914206763" MODIFIED="1443739536363" TEXT="wird toleriert">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      wegen Entscheidung f&#252;r das &quot;Listen&quot;-Modell zur Attribut-Handhabung
    </p>
  </body>
</html></richcontent>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
</node>
<node CREATED="1443737036108" ID="ID_641574289" MODIFIED="1512926192367" TEXT="INS Child in Attribut-Zone">
<node CREATED="1473352901693" ID="ID_1444450254" MODIFIED="1473352907657" TEXT="wird toleriert">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
<node CREATED="1473352908876" ID="ID_288202266" MODIFIED="1473352998161" TEXT="bricht aus der Reihenfolge aus">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      das hei&#223;t:
    </p>
    <ul>
      <li>
        es wird einfach vom zust&#228;ndigen Layer (der f&#252;r die Attribute) aufgegriffen
      </li>
      <li>
        es hat keinen Einflu&#223; auf die nach au&#223;en sichtbare Reihenfolge
      </li>
      <li>
        diese Reihenfolge bleibt gruppiert nach Attributen / Kindern
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1443737051419" ID="ID_364647539" MODIFIED="1512926192367" TEXT="INS Attribut in Scope">
<node CREATED="1473352922946" ID="ID_23438081" MODIFIED="1473352926387" TEXT="wird toleriert">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
<node CREATED="1473352927098" ID="ID_1791498124" MODIFIED="1473353001242" TEXT="bricht aus der reihenfolge aus">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1443737064633" ID="ID_67819372" MODIFIED="1512926192368" TEXT="PERM-fetch Child in Attribut-Zone">
<icon BUILTIN="button_cancel"/>
<node CREATED="1443739787850" ID="ID_31775669" MODIFIED="1443739831711" TEXT="f&#xfc;hrt zum Fehler wg. &quot;zwei Listen&quot;-Modell">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...da das Kind in der Liste der Attribute n&#228;mlich garnicht gefunden wird
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1443739798889" ID="ID_1992435989" MODIFIED="1443739912310" TEXT="Spezialbehandlung am Ende der Attributzone notwendig">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...wenn wir am Ende der Attribut-Zone stehen,
    </p>
    <p>
      und die n&#228;chste Operation ein fetch eines Kindes ist, m&#252;ssen wir implizit den
    </p>
    <p>
      Wechsel in den Scope vollziehen und die Operation dort ausf&#252;hren.
    </p>
    <p>
      Aber an allen anderen Stellen in der Attribut-Zone ist ein solcher Fetch ein Fehler!
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#338800" CREATED="1473353036195" ID="ID_371361214" MODIFIED="1473353045794" TEXT="obsolet durch neue Implementierung">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1443735208090" HGAP="99" ID="ID_117472593" MODIFIED="1488423307279" TEXT="Entscheidungen" VSHIFT="8">
<icon BUILTIN="info"/>
<node CREATED="1443735230768" ID="ID_1544379221" MODIFIED="1443735318881">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      standardm&#228;&#223;ig <b>strikt</b>
    </p>
  </body>
</html></richcontent>
<font NAME="SansSerif" SIZE="12"/>
</node>
<node CREATED="1443735286496" ID="ID_1442661683" MODIFIED="1512926192368" TEXT="fuzzy-mode">
<node CREATED="1443740092337" ID="ID_563359094" MODIFIED="1443740142638" TEXT="PICK nicht Vorhandenes"/>
<node CREATED="1443740127021" ID="ID_1839086508" MODIFIED="1443740137239" TEXT="DEL nicht Vorhandenes"/>
<node CREATED="1443740193692" ID="ID_1962095124" MODIFIED="1443740200542" TEXT="FIND nicht Vorhandenes"/>
<node CREATED="1443740261859" ID="ID_96033673" MODIFIED="1443740266837" TEXT="MUT nicht Vorhandenes"/>
<node CREATED="1443740311300" ID="ID_1645049477" MODIFIED="1443740327245" TEXT="PICK wird zu AFTER nicht Folgendes"/>
<node CREATED="1443740353686" ID="ID_1996517233" MODIFIED="1443740369848" TEXT="Rest-&#xdc;berschu&#xdf; am Ende"/>
</node>
<node CREATED="1443735322787" ID="ID_1404399616" MODIFIED="1512926192369" TEXT="Bindung">
<node CREATED="1443735336009" ID="ID_1123815488" MODIFIED="1443735347412" TEXT="Diff vs. Daten"/>
<node CREATED="1443735348800" ID="ID_1003830940" MODIFIED="1443735353234" TEXT="erst hier die Semantik"/>
<node CREATED="1443740402472" ID="ID_341902192" MODIFIED="1443740407355" TEXT="&quot;zwei Listen&quot;-Modell"/>
</node>
</node>
</node>
<node CREATED="1443741905157" FOLDED="true" HGAP="342" ID="ID_1960988662" MODIFIED="1561827465879" TEXT="Diff-Implementierung" VSHIFT="91">
<font NAME="SansSerif" SIZE="16"/>
<icon BUILTIN="go"/>
<node CREATED="1444522932841" HGAP="-19" ID="ID_48288704" MODIFIED="1573834426834" TEXT="Architektur" VSHIFT="-52">
<edge STYLE="linear"/>
<node CREATED="1444522939928" ID="ID_490994681" MODIFIED="1444522986895" TEXT="destruktiv?">
<icon BUILTIN="help"/>
</node>
<node CREATED="1444522961462" ID="ID_1164434859" MODIFIED="1512926192369">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      List-Diff
    </p>
    <p>
      als Spezialfall
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="help"/>
<node CREATED="1444523008207" ID="ID_385890020" MODIFIED="1512926192370" TEXT="Sprache: geht nicht">
<icon BUILTIN="button_cancel"/>
<node CREATED="1444523018726" ID="ID_874967614" MODIFIED="1444523024345" TEXT="Problem DiffStep"/>
<node CREATED="1444523025148" ID="ID_1403562226" MODIFIED="1444523033774" TEXT="ist eingebettet in die Sprache"/>
<node CREATED="1444523034795" ID="ID_1203331178" MODIFIED="1444523041573" TEXT="es gibt keinen gemeinsamen Obertyp"/>
<node CREATED="1444523042138" ID="ID_675305475" MODIFIED="1512926192371">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      kann auch nicht
    </p>
    <p>
      wegen dem Interpreter
    </p>
  </body>
</html></richcontent>
<node CREATED="1444523078581" ID="ID_318811786" MODIFIED="1444523091591" TEXT="liefert Token -&gt; kovariant"/>
<node CREATED="1444523091939" ID="ID_720826260" MODIFIED="1444523103670" TEXT="akzeptiert Interpreter -&gt; kontravariant"/>
</node>
</node>
<node CREATED="1444523111792" ID="ID_1544468161" MODIFIED="1512926192373" TEXT="Implementierungs-Ebene">
<icon BUILTIN="button_ok"/>
<node CREATED="1444523131486" ID="ID_37078397" MODIFIED="1444523139993" TEXT="Anwendung setzt nur Vector voraus"/>
<node CREATED="1444523140605" ID="ID_1673268008" MODIFIED="1444523237002">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      leicht auf generischen Container
    </p>
    <p>
      zu verallgemeinern
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1444523168561" ID="ID_1180296210" MODIFIED="1444523205481">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Erkennung hat die Sprache als Parameter,
    </p>
    <p>
      und verwendet sie zur Token-Generierung
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1444523206427" ID="ID_713432486" MODIFIED="1444523230705">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      man kann auch dem List-Detector
    </p>
    <p>
      eine Tree-Diff-Language geben
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
<node CREATED="1444522881125" ID="ID_172319057" MODIFIED="1444522895130" TEXT="Anwendung">
<node CREATED="1443741923547" ID="ID_1978439060" MODIFIED="1443741930738" TEXT="Listen-Diff">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1443741931858" FOLDED="true" ID="ID_484829805" MODIFIED="1576202977258" TEXT="Baum-Diff">
<icon BUILTIN="button_ok"/>
<node CREATED="1445295424277" ID="ID_1084177503" MODIFIED="1525124215397">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <font size="5" color="#e97664">Frage</font>: <i>in-Place?</i>
    </p>
  </body>
</html></richcontent>
<font NAME="SansSerif" SIZE="13"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1445295501531" ID="ID_1542006741" MODIFIED="1512926192377" TEXT="Problem: Teilb&#xe4;ume">
<node CREATED="1445295582392" ID="ID_243770452" MODIFIED="1445295587819" TEXT="Umh&#xe4;ngen von Teilb&#xe4;umen"/>
<node CREATED="1445295588127" ID="ID_1541079773" MODIFIED="1445295598746" TEXT="Abstieg in Teilb&#xe4;ume"/>
</node>
<node CREATED="1445295543653" ID="ID_39528388" MODIFIED="1512926192377" TEXT="wie wird das UI-Model verwendet">
<icon BUILTIN="help"/>
<node CREATED="1445295714215" ID="ID_472108592" MODIFIED="1445295722937" TEXT="um Diffs aufzuspielen"/>
<node CREATED="1445295726940" ID="ID_1067776624" MODIFIED="1445295736327" TEXT="um UI-Elemente anzusprechend"/>
<node CREATED="1445295737436" ID="ID_1529650757" MODIFIED="1512926192378" TEXT="f&#xfc;r Callbacks vom UI">
<node CREATED="1445299235061" ID="ID_336159819" MODIFIED="1445299267675">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <b>entscheidende Frage</b>: wie addressieren?
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1445299271761" ID="ID_1895578975" MODIFIED="1445299278275" TEXT="Bus-Term hat eine ID..."/>
</node>
</node>
<node CREATED="1445299292301" HGAP="134" ID="ID_1169271905" MODIFIED="1512926192378" TEXT="pro" VSHIFT="12">
<node CREATED="1445299310971" ID="ID_1955674144" MODIFIED="1445299339570" TEXT="vermeidet Kopieren"/>
<node CREATED="1445299340375" ID="ID_485304706" MODIFIED="1445299346562" TEXT="speziell der nicht betroffenen Teile"/>
<node CREATED="1445299347173" ID="ID_232158633" MODIFIED="1445299356224" TEXT="das ist genau der Sinn des Diff"/>
</node>
<node CREATED="1445299298932" HGAP="127" ID="ID_602638586" MODIFIED="1512926192379" TEXT="contra" VSHIFT="-5">
<node CREATED="1445299306659" ID="ID_1695051638" MODIFIED="1445299308751" TEXT="Locking"/>
<node CREATED="1445389209031" ID="ID_1394943777" MODIFIED="1445389223268" TEXT="GenNode ist ein value type"/>
</node>
<node CREATED="1445389251289" HGAP="39" ID="ID_1700933130" MODIFIED="1512926192380" TEXT="Entscheidung" VSHIFT="28">
<font NAME="SansSerif" SIZE="15"/>
<node CREATED="1445389298770" ID="ID_1935262520" MODIFIED="1512926192381" TEXT="Kompromi&#xdf;">
<icon BUILTIN="help"/>
<node CREATED="1445389275998" ID="ID_1081466244" MODIFIED="1512926192382" TEXT="intern kopieren">
<node CREATED="1445389355802" ID="ID_745348631" MODIFIED="1445389365541" TEXT="wir arbeiten auf einer interen Kopie"/>
<node CREATED="1445389366298" ID="ID_432143676" MODIFIED="1445389372460" TEXT="diese geh&#xf6;rt der Implementierung"/>
<node CREATED="1445389373168" ID="ID_1925613497" MODIFIED="1445389404465">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      und wird durch die Diff-Anwendung <i>konsumiert</i>
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1445389291404" ID="ID_309801260" MODIFIED="1512926192382" TEXT="aber move-ctor anbieten">
<node CREATED="1445389423050" ID="ID_802906323" MODIFIED="1445389433477" TEXT="zur Initialisierung ein bestehendes Objekt &#xfc;bernehmen"/>
<node CREATED="1445389434753" ID="ID_532431684" MODIFIED="1445389454234" TEXT="das Ergebnis in ein bestehendes Objekt schieben"/>
</node>
</node>
<node CREATED="1445550734547" ID="ID_960791539" MODIFIED="1512926192443" TEXT="oder doch den Mutator erweitern">
<icon BUILTIN="yes"/>
<node CREATED="1445550748169" ID="ID_1764723062" MODIFIED="1445550752365" TEXT="Vorteil: explizit"/>
<node CREATED="1445550752832" ID="ID_1506018584" MODIFIED="1445550807621" TEXT="Manipulation hat gewisse Vorteile"/>
<node CREATED="1445550808281" ID="ID_1970167609" MODIFIED="1445550842143">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <i>Immutablility</i>&#160;erzwingt
    </p>
    <ul>
      <li>
        persistente Datenstrukturen
      </li>
      <li>
        garbage-collector
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1445555721981" ID="ID_292803227" MODIFIED="1512926192444">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      L&#246;sung: wir arbeiten <i>auf </i>einem Mutator
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
<node CREATED="1445556525714" ID="ID_1223708278" MODIFIED="1445556595037" TEXT="damit funktioniert es 1:1 wie List-Diff">
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1445556567980" ID="ID_783100840" MODIFIED="1445556591370" TEXT="Voraussetzung: der Mutator mu&#xdf; die Attribut/Kinder-Listen exponieren">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1445644203808" ID="ID_1105228896" MODIFIED="1445644221661">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      auf dem Umweg &#252;ber einen <b>ContentMutator</b>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1445550873904" ID="ID_1781797833" MODIFIED="1445556509368" TEXT="copy + transaktional als optionaler 2.Layer"/>
<node CREATED="1445550893222" ID="ID_2118555" MODIFIED="1445550915111" TEXT="Diff-Applikator = destruktiver Mutator"/>
<node CREATED="1445389311690" ID="ID_1926972913" MODIFIED="1445389323819" TEXT="und dieses rekursiv..."/>
</node>
</node>
<node COLOR="#391f9e" CREATED="1445391990778" HGAP="148" ID="ID_464295846" MODIFIED="1576203232155" TEXT="Implementierung" VSHIFT="4">
<arrowlink COLOR="#2ab880" DESTINATION="ID_61713493" ENDARROW="Default" ENDINCLINATION="-125;-80;" ID="Arrow_ID_958576106" STARTARROW="None" STARTINCLINATION="-317;9;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1445392080175" ID="ID_341024968" MODIFIED="1445392101243">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Innereien des alten Record <i>verbrauchen</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1445392105075" ID="ID_1377567733" MODIFIED="1445392113677" TEXT="zwei neue, lokale Vektoren aufbauen"/>
<node CREATED="1445392114217" ID="ID_71124283" MODIFIED="1445392120973" TEXT="daraus den neuen Record konstruieren"/>
<node CREATED="1445556634395" FOLDED="true" ID="ID_1143865339" MODIFIED="1576201918968" TEXT="technische Komplikation: &quot;2 Listen&quot;-Modell">
<icon BUILTIN="button_ok"/>
<node CREATED="1445620914088" ID="ID_1919426539" MODIFIED="1445621018036" TEXT="Verhalten &#xe4;ndert sich je nach Scope">
<icon BUILTIN="info"/>
</node>
<node CREATED="1445620938421" ID="ID_557124057" MODIFIED="1445621022038" TEXT="Verzweigung in jedem Diff-Fall">
<icon BUILTIN="info"/>
</node>
<node CREATED="1445620947332" ID="ID_1684844100" MODIFIED="1445621010162" TEXT="Code-Redundanz">
<icon BUILTIN="smily_bad"/>
</node>
<node CREATED="1445620961570" ID="ID_965863635" MODIFIED="1445621006245" TEXT="in Wrapper wegpacken!">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1445620972825" ID="ID_1467461119" MODIFIED="1445621002208" TEXT="schon in den Record::Mutator einbinden">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1445620991326" ID="ID_513677356" MODIFIED="1445620998003" TEXT="eigener Test">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1473352753713" HGAP="10" ID="ID_1353201178" MODIFIED="1512926192448" TEXT="besserer Ansatz" VSHIFT="22">
<icon BUILTIN="idea"/>
<node CREATED="1473352767432" ID="ID_1220456854" MODIFIED="1473352784089" TEXT="als interne Repr&#xe4;sentation klassifizieren"/>
<node CREATED="1473352784533" ID="ID_1907760521" MODIFIED="1473352794511" TEXT="das normale Binding f&#xfc;r opaque Datenstrukturen verwenden"/>
<node CREATED="1473352794988" ID="ID_652168710" MODIFIED="1473352818517" TEXT="vorkonfiguriert: 2-Layer Binding"/>
<node CREATED="1473352820096" ID="ID_329351043" MODIFIED="1473352835764" TEXT="Spezialf&#xe4;lle aus der Sprache entfernen">
<icon BUILTIN="button_ok"/>
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1473352801547" ID="ID_1001891556" MODIFIED="1473352809203" TEXT="integriert in generischen Diff-Applikator">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node CREATED="1446159438278" FOLDED="true" HGAP="29" ID="ID_563496669" MODIFIED="1576201937328" VSHIFT="8">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Problem: <b><font color="#ed1c02" size="4">Rekursion</font></b>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
<icon BUILTIN="clanbomber"/>
<node CREATED="1446159517914" ID="ID_1749096609" MODIFIED="1446159530661" TEXT="wir m&#xfc;ssen rekursiv in Sub-Scope einsteigen"/>
<node CREATED="1446159531745" ID="ID_1660140345" MODIFIED="1446159550795" TEXT="eingeschachtelt wieder ein Record::Mutator"/>
<node CREATED="1446159551718" ID="ID_608514705" MODIFIED="1446159563593" TEXT="Wohin mit der Storage?"/>
<node CREATED="1446159564725" ID="ID_893302390" MODIFIED="1512926192449" TEXT="zwei L&#xf6;sungsans&#xe4;tze">
<icon BUILTIN="info"/>
<node CREATED="1446159584034" ID="ID_1845322273" MODIFIED="1512926192450" TEXT="rekursiv konsumieren">
<node CREATED="1446159632603" ID="ID_1950074103" MODIFIED="1446160677236">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      wenn ein MUT kommt
    </p>
    <p>
      erzeugt man lokal einen DiffApplikator f&#252;r den geschachtelten Kontext
    </p>
    <p>
      und gibt ihm rekursiv den Diff hinein. Wenn dieser Aufruf zur&#252;ckkehrt
    </p>
    <p>
      ist der gesammte Diff f&#252;r den eingeschachtelten Kontext konsumiert
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1446159744053" ID="ID_1735127502" MODIFIED="1512926192451" TEXT="pro">
<node CREATED="1446159775161" ID="ID_192461503" MODIFIED="1446159832244" TEXT="elegant, selbst&#xe4;hnlich"/>
<node CREATED="1446159790702" ID="ID_905335387" MODIFIED="1446159823622" TEXT="sauber, state bleibt lokal"/>
<node CREATED="1446159833753" ID="ID_539121048" MODIFIED="1446159854442" TEXT="kein expliziter Stack, Daten auf dem Callstack"/>
</node>
<node CREATED="1446159751068" ID="ID_1466026714" MODIFIED="1512926192451" TEXT="contra">
<node CREATED="1446159936323" ID="ID_1344861000" MODIFIED="1446159961793" TEXT="keine einfache Iteration mehr"/>
<node CREATED="1446159910374" ID="ID_1307975840" MODIFIED="1446159998967" TEXT="man mu&#xdf; das Token anschauen"/>
<node CREATED="1446159999939" ID="ID_1385561919" MODIFIED="1446160014569" TEXT="nicht kompatibel mit userem &quot;Interpreter&quot;-Modell"/>
<node CREATED="1446159858701" ID="ID_751122481" MODIFIED="1446160039239" TEXT="Applikator mu&#xdf; selber Diff konsumieren"/>
</node>
</node>
<node CREATED="1446159589369" ID="ID_1854873736" MODIFIED="1512926192453" TEXT="internen Stack">
<node CREATED="1446160049196" ID="ID_893515494" MODIFIED="1446160680983">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      wenn ein MUT kommt,
    </p>
    <p>
      pusht der Applikator seinen privaten Zustand
    </p>
    <p>
      auf einen explizit im Heap verwalteten std::stack
    </p>
    <p>
      und legt einen neuen Mutator an f&#252;r den nested scope
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1446160209758" ID="ID_1949126696" MODIFIED="1512926192453" TEXT="pro">
<node CREATED="1446160223212" ID="ID_189646771" MODIFIED="1446160248517" TEXT="kompatibel mit unserem &quot;Interpreter&quot;-Modell"/>
<node CREATED="1446160249609" ID="ID_1437127411" MODIFIED="1446160256555" TEXT="Diff wird einfach weiter iteriert"/>
</node>
<node CREATED="1446160212502" ID="ID_572617599" MODIFIED="1512926192453" TEXT="contra">
<node CREATED="1446160522212" ID="ID_1824677628" MODIFIED="1446160588767" TEXT="wir manipulieren state in einer Komponente"/>
<node CREATED="1446160621127" ID="ID_391572254" MODIFIED="1446160635561" TEXT="diese Manipulation passiert mitten aus einem Token-Aufruf"/>
<node CREATED="1446160592347" ID="ID_126615043" MODIFIED="1446160608364" TEXT="Storage-Management ist verwirrend"/>
</node>
</node>
</node>
<node CREATED="1446168257072" HGAP="81" ID="ID_91568209" MODIFIED="1446168481874" VSHIFT="5">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Entscheidung:
    </p>
    <p>
      interner Stack
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ....begr&#252;ndet duch die generische Architektur.
    </p>
    <p>
      Die Trennung von Diff-Iteration und dem Interpreter erm&#246;glicht verschiedene Sprach-Ebenen.
    </p>
    <p>
      Allerdings werde ich f&#252;r die Anwendung auf konkrete Datenstrukturen,
    </p>
    <p>
      also den TreeMutator, vermutlich das andere Modell (rekursiv konsumieren) verwenden.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node CREATED="1446356556349" ID="ID_1068649765" MODIFIED="1512926192454" TEXT="offen...">
<node COLOR="#338800" CREATED="1446356765393" ID="ID_293921295" MODIFIED="1473352607814" TEXT="IDs in Testdaten f&#xfc;r GenNode_test">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Problem sind mal wieder die automatisch generierten IDs.
    </p>
    <p>
      Die sind nat&#252;rlich anders, wenn wir die ganze Testsuite ausf&#252;hren...
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1446356588505" ID="ID_895292312" MODIFIED="1512926192454" TEXT="gr&#xfc;ndlicher Test">
<icon BUILTIN="yes"/>
<node CREATED="1473352634730" ID="ID_955392554" MODIFIED="1473352641908" TEXT="bis jetzt nur &quot;positiv-Tests&quot;"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1473352642473" ID="ID_839131437" MODIFIED="1473352654368" TEXT="Abdeckung der Grenzf&#xe4;lle">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1444522895718" ID="ID_598781690" MODIFIED="1444522897802" TEXT="Generierung">
<node CREATED="1443741923547" ID="ID_1091408512" MODIFIED="1443741930738" TEXT="Listen-Diff">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#990000" CREATED="1443741931858" ID="ID_826609799" MODIFIED="1443741945481" TEXT="Baum-Diff">
<icon BUILTIN="flag"/>
</node>
</node>
<node CREATED="1576202545211" ID="ID_862025814" MODIFIED="1582387512534" TEXT="Diff-Bindung">
<font NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="forward"/>
<node CREATED="1576202990623" ID="ID_1903460265" MODIFIED="1576203228840" TEXT="konkret entwickelt f&#xfc;r das UI-Element">
<arrowlink COLOR="#298c9e" DESTINATION="ID_645743424" ENDARROW="Default" ENDINCLINATION="-928;-33;" ID="Arrow_ID_653906070" STARTARROW="None" STARTINCLINATION="-2105;61;"/>
</node>
<node COLOR="#338800" CREATED="1456506101544" FOLDED="true" HGAP="322" ID="ID_61713493" MODIFIED="1611315117066" TEXT="Implementierung: Diff-Anbindung" VSHIFT="87">
<linktarget COLOR="#47e573" DESTINATION="ID_61713493" ENDARROW="Default" ENDINCLINATION="-3400;234;" ID="Arrow_ID_1763921751" SOURCE="ID_486184645" STARTARROW="None" STARTINCLINATION="-792;48;"/>
<linktarget COLOR="#2ab880" DESTINATION="ID_61713493" ENDARROW="Default" ENDINCLINATION="-125;-80;" ID="Arrow_ID_958576106" SOURCE="ID_464295846" STARTARROW="None" STARTINCLINATION="-317;9;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1456506128581" FOLDED="true" HGAP="-12" ID="ID_158225677" MODIFIED="1576200599620" TEXT="Abw&#xe4;gungen" VSHIFT="184">
<icon BUILTIN="yes"/>
<node CREATED="1456506135028" HGAP="29" ID="ID_780210307" MODIFIED="1512926191965" TEXT="Indirektionen" VSHIFT="-5">
<node CREATED="1456506145826" ID="ID_1611309527" MODIFIED="1575133329132" TEXT="kosten">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <ul>
      <li>
        Diff-Anwendung wird massiv und in der Breite stattfinden
      </li>
      <li>
        sie wird als Reaktion auf UI-Events auftreten
      </li>
      <li>
        sie dient dazu, andere UI-Operationen einzusparen
      </li>
      <li>
        also mu&#223; speziell das Traversieren bis an den Anwendungsort bedacht werden
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node CREATED="1456506151065" ID="ID_258224244" MODIFIED="1575133329148" TEXT="bisher nur drei">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...d.h. die bis jetzt geschriebene TreeApplikator-Implementierung
    </p>
    <p>
      ist erstaunlich leichtgewichtig. Zu den zwei Indirektionien der Sprache
    </p>
    <p>
      kommt nur entweder ein weiterer aus der GenNode bzw stattedessen ein dynamic cast hinzu.
    </p>
    <p>
      Alles andere steckt in dem <b>expliziten Mutator-Typ </b>
    </p>
    <p>
      &#160;-- das gibt einen wichtigen Hinweis --
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1456506160472" ID="ID_1961176321" MODIFIED="1575133329163" TEXT="zwei sind das Minimum">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...da wir eine verb-basierte Sprache implementieren,
    </p>
    <p>
      also einen double-dispatch haben
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1456506385130" ID="ID_310848516" MODIFIED="1512926191966" TEXT="f&#xfc;r generische Zieldaten">
<node CREATED="1456506446002" ID="ID_1039988752" MODIFIED="1456506470075" TEXT="kommt eine Indirektion hinzu"/>
<node CREATED="1456506471159" ID="ID_1219883167" MODIFIED="1512926191966" TEXT="es sei denn...">
<node CREATED="1456506475686" ID="ID_1548290778" MODIFIED="1456506487232" TEXT="man tauscht jeweils den Sprach-Interpreter aus"/>
<node CREATED="1456506487796" ID="ID_1287273135" MODIFIED="1456506499239" TEXT="das setzt aber rekursives Konsumieren des Diff voraus"/>
<node CREATED="1456506500187" ID="ID_860348703" MODIFIED="1456506511565" TEXT="und das zwingt uns, den Typ des Diff explizit zu machen"/>
<node CREATED="1456506512721" ID="ID_1880366369" MODIFIED="1575133329277" TEXT="der nicht-explizite Typ ist im Moment von Vorteil....">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      weil wir den Anwendungs-Kontext noch &#252;berhaupt nicht kennen.
    </p>
    <p>
      Man k&#246;nnte also sp&#228;ter, wenn das ganze System &quot;steht&quot;,
    </p>
    <p>
      das Diff-System noch einmal reimplementieren, dann mit einem vorgegebenen Diff-Typ
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1456506607428" HGAP="31" ID="ID_1872426329" MODIFIED="1456506627511" VSHIFT="8">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Beschlu&#223;: <i>akzeptiert</i>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1456506647447" HGAP="32" ID="ID_821326055" MODIFIED="1512926191967" TEXT="Zielvorgabe: weitere vermeiden" VSHIFT="12">
<node CREATED="1456506661421" ID="ID_1563053672" MODIFIED="1456506689357" TEXT="d.h. nur entweder front-end oder back-end sind virtuell"/>
<node CREATED="1456506689834" ID="ID_748345000" MODIFIED="1456506713270">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      im Sinn von &quot;polymorpic value&quot; ist <b>das Backend virtuell</b>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1456506719949" ID="ID_819603941" MODIFIED="1456506725568" TEXT="keine virtuellen Iteratoren"/>
<node CREATED="1456506726060" ID="ID_327781503" MODIFIED="1456506738455" TEXT="Front-End mu&#xdf; Typedefs bereitstellen"/>
<node CREATED="1456506740323" ID="ID_605676202" MODIFIED="1456506747838" TEXT="elaboriertes Typkonstrukt notwendig"/>
<node CREATED="1456506749234" ID="ID_1370097863" MODIFIED="1575133329379" TEXT="zumindest f&#xfc;r jeden Compund-Zieltyp ein eigener Interpreter">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ....wenngleich auch dieser aus einem Template generiert wird
    </p>
    <p>
      (will sagen, es ist nicht sofort offensichtlich, da&#223; wir jeweils einen Interpreter generieren)
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node CREATED="1457038737878" HGAP="44" ID="ID_1927444795" MODIFIED="1512926191968" TEXT="Abstraktions-Grad">
<node CREATED="1457119812475" ID="ID_1000349478" MODIFIED="1457119817575" TEXT="Elemente bleiben opaque"/>
<node CREATED="1457119818091" ID="ID_72516983" MODIFIED="1512926191969">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      wir <i>verzichten</i>&#160;auf Introspektion der Elemente
    </p>
  </body>
</html></richcontent>
<node CREATED="1457119990420" ID="ID_417857" MODIFIED="1457120011276" TEXT="...denn die m&#xfc;&#xdf;te die jeweilige Implementierung erbringen"/>
<node CREATED="1457120011721" ID="ID_130453051" MODIFIED="1457120024027" TEXT="und das w&#xfc;rde das &#xdc;bel der Introspektion &#xfc;berall hineindr&#xfc;cken"/>
<node CREATED="1457120026343" ID="ID_1643851302" MODIFIED="1457120043288" TEXT="Nachteil: keine klare Fehlerdiagnose m&#xf6;glich"/>
<node CREATED="1457120043925" ID="ID_1806333421" MODIFIED="1512926191970" TEXT="ist akzeptierbar...">
<node CREATED="1457120079542" ID="ID_680592754" MODIFIED="1457120079542">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      denn genau zu diesem Zweck haben wir die &quot;External Tree Description&quot;
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1457120084135" ID="ID_1299212353" MODIFIED="1457120093706" TEXT="auf diese sollte ein Diff zuerst angewendet werden"/>
<node CREATED="1457120094302" ID="ID_629900491" MODIFIED="1457120105488" TEXT="und diese bietet Introspektion und klare Diagnose"/>
<node CREATED="1457120105908" ID="ID_702164974" MODIFIED="1457120131741" TEXT="Annahme ist also, da&#xdf; ein Diff auf real-Datenstrukturen per Konstruktion erfolgreich ist"/>
<node CREATED="1457120134297" ID="ID_790286427" MODIFIED="1457120154250" TEXT="und ein Fehler dabei ist zwingenderweise ein Fehler in der Programmlogik"/>
</node>
</node>
<node CREATED="1457119844767" ID="ID_1188396825" MODIFIED="1457119861265" TEXT="wir bieten nur einen Match auf die Diff-Spec"/>
<node CREATED="1457119876899" ID="ID_1854037055" MODIFIED="1457119902755" TEXT="Mutations-Primitive bieten bool Erfolgs-Check"/>
<node CREATED="1457119903391" ID="ID_71718000" MODIFIED="1457119909602" TEXT="aber keine Exceptions"/>
</node>
</node>
<node CREATED="1456506821808" ID="ID_1291391164" MODIFIED="1512926191970" TEXT="Typ-Konstrukt">
<node CREATED="1461879209050" ID="ID_819509222" MODIFIED="1461879267131" TEXT="Kernproblem: wie gro&#xdf; mu&#xdf; der Buffer sein?">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1461879239310" ID="ID_1466777093" MODIFIED="1461879260051" TEXT="wie bekomme ich diese Info von nicht a priori bekannten Typen">
<icon BUILTIN="help"/>
</node>
</node>
<node CREATED="1456523437616" FOLDED="true" HGAP="34" ID="ID_769898615" MODIFIED="1576200587803" TEXT="Manipulations-Interface" VSHIFT="6">
<node COLOR="#338800" CREATED="1456523455997" ID="ID_451867054" MODIFIED="1561827465480" TEXT="Design l&#xf6;sen">
<icon BUILTIN="button_ok"/>
<node CREATED="1456523507910" ID="ID_10011481" MODIFIED="1456523518005" TEXT="Henne oder Ei?"/>
<node CREATED="1456523471851" ID="ID_1473020572" MODIFIED="1456523485597" TEXT="komm nicht vom Fleck"/>
<node CREATED="1456523487089" ID="ID_996191540" MODIFIED="1456523501995" TEXT="zirkul&#xe4;re Bez&#xfc;ge im Design"/>
<node CREATED="1456523522693" ID="ID_258858244" MODIFIED="1512926191971" TEXT="abstrakter Entwurf">
<arrowlink COLOR="#6b77a6" DESTINATION="ID_1103254276" ENDARROW="Default" ENDINCLINATION="-116;0;" ID="Arrow_ID_1002137074" STARTARROW="None" STARTINCLINATION="-819;487;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1456523558304" ID="ID_157371441" MODIFIED="1456523564050" TEXT="baue einen Dummy">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1456523569111" ID="ID_27774245" MODIFIED="1456523580721" TEXT="...als eine Spezialisierung des Adapters"/>
<node CREATED="1456523593731" ID="ID_1278455785" MODIFIED="1456528188767" TEXT="Interface ohne reale Daten"/>
<node CREATED="1456528076005" ID="ID_1627557179" MODIFIED="1512926191972" TEXT="Diagnose">
<node CREATED="1456528119297" ID="ID_1804796459" MODIFIED="1456528119297" TEXT="hat ein EventLog eingebaut"/>
<node CREATED="1456528148107" ID="ID_423438892" MODIFIED="1456528165925" TEXT="protokolliert Schatten-Kinder-Liste"/>
<node CREATED="1456528167440" ID="ID_1949477356" MODIFIED="1575133329792" TEXT="transparenter Dekorator">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...d.h,
    </p>
    <p>
      kann zus&#228;tzlich zu einem anderen Adaptor
    </p>
    <p>
      in die Mutator-Dekorator-Kette geh&#228;ngt werden
    </p>
    <p>
      und protokolliert somit &quot;nebenbei&quot; was an Anforderungen an ihm vorbeigeht
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1456523612849" ID="ID_1653882286" MODIFIED="1456523625883" TEXT="Test zum Aufbau des Interfaces"/>
</node>
</node>
<node CREATED="1456528418823" HGAP="30" ID="ID_823162035" MODIFIED="1561827465487" TEXT="Bestandteile" VSHIFT="-1">
<icon BUILTIN="info"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1456528424246" FOLDED="true" ID="ID_478070427" MODIFIED="1576200583821" STYLE="fork" TEXT="Selektor">
<linktarget COLOR="#7caed5" DESTINATION="ID_478070427" ENDARROW="Default" ENDINCLINATION="466;133;" ID="Arrow_ID_1332735015" SOURCE="ID_1033631571" STARTARROW="None" STARTINCLINATION="681;0;"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1457741609884" ID="ID_631276890" MODIFIED="1512926191973" TEXT="bin ich zust&#xe4;ndig?">
<node CREATED="1458094312266" ID="ID_1589695576" MODIFIED="1458094316157" TEXT="isApplicable"/>
<node CREATED="1458094316697" ID="ID_954342243" MODIFIED="1512926191974" TEXT="Festlegung:">
<icon BUILTIN="yes"/>
<node CREATED="1458094327095" ID="ID_506349775" MODIFIED="1458094334354" TEXT="nur auf Basis der spec"/>
<node CREATED="1458094334991" ID="ID_559579301" MODIFIED="1458094343401" TEXT="ohne Daten-Introspektion"/>
</node>
<node CREATED="1458094507048" ID="ID_1527865890" MODIFIED="1512926191974" TEXT="Problem">
<node CREATED="1458094510463" ID="ID_1994183062" MODIFIED="1575133329935" TEXT="Spec bietet wenig Anhaltspunkte">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      streng genommen ist es nur erlaubt, das ID-Symbol auszuwerten
    </p>
  </body>
</html></richcontent>
<node CREATED="1458094562800" ID="ID_81556108" MODIFIED="1458094568467" TEXT="ID-Symbol"/>
<node CREATED="1458094569128" ID="ID_1725026097" MODIFIED="1458094579369" TEXT="attribute / child"/>
</node>
<node CREATED="1458094599835" HGAP="24" ID="ID_696146244" MODIFIED="1533608413876" TEXT="Zugang zum Payload-Typ" VSHIFT="10">
<icon BUILTIN="help"/>
<node CREATED="1458094616417" ID="ID_1705273642" MODIFIED="1458094632012" TEXT="Introspection / Switch-on-Type">
<icon BUILTIN="stop-sign"/>
</node>
<node CREATED="1458094634167" ID="ID_1910509473" MODIFIED="1575133329998">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Visitor bedeutet <b>zwei</b>&#160;Indirektionen
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...und das ist nicht akzeptabel f&#252;r ein reines Selektor-Pr&#228;dikat!
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1458094716364" ID="ID_1379758002" MODIFIED="1561827465489" TEXT="eingeschr&#xe4;nkt auf Objekt-Typ">
<icon BUILTIN="help"/>
<node CREATED="1458094735673" ID="ID_1998804888" MODIFIED="1458094743492" TEXT="Semantischer Typ"/>
<node CREATED="1458094743960" ID="ID_753315620" MODIFIED="1458094767704" TEXT="vs. Typisierung in der Sprache"/>
<node CREATED="1458094769365" ID="ID_1449818159" MODIFIED="1458094773848" TEXT="pattern match"/>
<node CREATED="1458094823973" ID="ID_384485794" MODIFIED="1458094841971">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      denkbar nur bei Sub-<i>Objekten</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1458094850490" ID="ID_1694517643" MODIFIED="1458094856797" TEXT="d.h. bei Record-Daten"/>
<node CREATED="1458094864424" ID="ID_1328934076" MODIFIED="1458094872787" TEXT="Record hat ein (semantisches) Typfeld"/>
<node CREATED="1458094922024" ID="ID_93367660" MODIFIED="1458094954604">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      gilt f&#252;r <i>alle</i>&#160;praktischen Anwendungen
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1458094956636" ID="ID_664751342" MODIFIED="1575133330121" TEXT="denn nur Objekt-Kinder machen Sinn">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ....auch wenn man zehnmal meinen k&#246;nnte,
    </p>
    <p>
      Kinder eines reinen Wert-Typs w&#228;ren sinnvoll --
    </p>
    <p>
      sie sind es nicht!
    </p>
    <p>
      Jede sinnvolle <i>Entit&#228;t</i>&#160;hat mehr als ein Attribut<i>! </i>
    </p>
    <p>
      denn es macht keinen Sinn, Entit&#228;ten und reine Wert-Elemente
    </p>
    <p>
      auf der gleichen Ebene in der gleichen Sammlung zu mischen.
    </p>
    <p>
      
    </p>
    <p>
      D.h., entweder man hat ein Objekt, das als Kinder z.B. eine Liste von Strings hat,
    </p>
    <p>
      oder man hat eine Entit&#228;t, die z.b. zwei getypte Objekt-Kinder-Sammlungen hat,
    </p>
    <p>
      wie z.B: eine Spur mit Labels und Clips
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1458095217737" FOLDED="true" ID="ID_438870027" MODIFIED="1561827483835" TEXT="um das zu unterst&#xfc;tzen...">
<icon BUILTIN="idea"/>
<node CREATED="1458095230175" ID="ID_1191105811" MODIFIED="1458095239258" TEXT="m&#xfc;&#xdf;te DataCap helfen"/>
<node CREATED="1458095367701" ID="ID_796317531" MODIFIED="1458095376400" TEXT="es g&#xe4;be dann einen Bottom-Wert"/>
<node CREATED="1458095240158" ID="ID_603223644" MODIFIED="1458095284084" TEXT="Introspektions-Verbot etwas aufgeweicht"/>
<node CREATED="1458095304886" ID="ID_164280831" MODIFIED="1458095318800" TEXT="dieser Gebrauch ist aber mit dem Objekt-Typfeld schon angelegt"/>
<node CREATED="1458095320692" ID="ID_842760339" MODIFIED="1458095332942" TEXT="die Bedeutung wird vom Client privat definiert"/>
<node CREATED="1458095409800" ID="ID_1254459851" MODIFIED="1458095442503" TEXT="ebenso wird aber auch die Bedeutung der ETD lokal definiert"/>
<node CREATED="1458095443115" ID="ID_1232895036" MODIFIED="1458095455459" TEXT="erscheint mir plausibel und vertretbar">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1461881999377" ID="ID_1658273003" MODIFIED="1461882004217" TEXT="so implementiert">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1458095528224" ID="ID_1210077486" MODIFIED="1512926191979" TEXT="falls nein...">
<node CREATED="1458095540807" ID="ID_1604150177" MODIFIED="1458095553929" TEXT="&#xfc;bernimmt der n&#xe4;chste Onion-Layer"/>
<node CREATED="1458095554548" ID="ID_841667917" MODIFIED="1458095566303" TEXT="scheitert am Ende die Diff-Anwendung"/>
<node CREATED="1458095567123" ID="ID_1522962628" MODIFIED="1533608413880" TEXT="das kann nicht sein">
<icon BUILTIN="ksmiletris"/>
<node CREATED="1458095599015" ID="ID_167965734" MODIFIED="1458095611129" TEXT="denn Struktur wird per Diff aufgebaut"/>
<node CREATED="1458095611645" ID="ID_381366724" MODIFIED="1458095623023" TEXT="und Diff wird von einer konsistenten Struktur generiert"/>
<node CREATED="1458095623563" ID="ID_616935645" MODIFIED="1458095636789" TEXT="wenngleich es sich auch um eine funktionale Struktur handeln kann..."/>
<node CREATED="1458095660150" ID="ID_521761960" MODIFIED="1458095668777" TEXT="wir sind nicht tolerant bei der Diff-Anwendung"/>
<node CREATED="1458095669437" ID="ID_1556672181" MODIFIED="1458095672801" TEXT="und das ist gut so."/>
</node>
</node>
</node>
<node CREATED="1457741617655" ID="ID_1780561133" MODIFIED="1512926191980" TEXT="was ist ein &quot;match&quot;?">
<node CREATED="1458094392679" ID="ID_160796096" MODIFIED="1460755241888">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      &quot;target <i>matches</i>&#160;spec&quot;
    </p>
  </body>
</html></richcontent>
<font NAME="SansSerif" SIZE="12"/>
</node>
<node CREATED="1458094428506" ID="ID_1974144009" MODIFIED="1458094435693" TEXT="darf Annahmen &#xfc;ber den Typ der Spec machen"/>
<node CREATED="1458094397350" ID="ID_1351948326" MODIFIED="1458094427326" TEXT="darf in die Payload der Spec schauen"/>
<node CREATED="1458094437249" ID="ID_636183740" MODIFIED="1458094463529" TEXT="darf Methoden des Datenobjekts aufrufen"/>
</node>
</node>
<node CREATED="1457038643034" ID="ID_2715278" MODIFIED="1515978009310" TEXT="abstrakte Position">
<node CREATED="1460755065016" ID="ID_505782373" MODIFIED="1460755138704" TEXT="wird niemals direkt repr&#xe4;sentiert">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1460755072903" ID="ID_1689810775" MODIFIED="1460755130181">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      aber existiert <i>nominell </i>und kontext-abh&#228;ngig
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1460755080894" ID="ID_433210103" MODIFIED="1460755106150" TEXT="und faktisch unabh&#xe4;ngig in jedem &#xbb;onion layer&#xab;"/>
</node>
<node CREATED="1457038527402" HGAP="16" ID="ID_1999301096" MODIFIED="1512926191982" TEXT="Mutations-Primitive" VSHIFT="7">
<node CREATED="1457038788583" ID="ID_745585126" MODIFIED="1457038801193" TEXT="einheitlich benannt"/>
<node CREATED="1457038801733" ID="ID_61865380" MODIFIED="1457038805816" TEXT="auf mehreren Ebenen"/>
<node CREATED="1457119943698" ID="ID_1184811956" MODIFIED="1512926191982" TEXT="Fehlerbehandlung">
<node CREATED="1457119949785" ID="ID_854748958" MODIFIED="1457119953012" TEXT="Match-Check"/>
<node CREATED="1457119953384" ID="ID_1221897136" MODIFIED="1457119957324" TEXT="aber keine Exception"/>
<node CREATED="1457119959408" ID="ID_1918915677" MODIFIED="1457119961803" TEXT="sondern NOP"/>
</node>
</node>
<node CREATED="1457227228502" ID="ID_1837209046" MODIFIED="1512926191983" TEXT="sub-Mutator">
<node CREATED="1457227237269" ID="ID_13363638" MODIFIED="1457227296340" TEXT="wird &#xfc;ber ein Handle implantiert">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1457227248779" ID="ID_1651719395" MODIFIED="1457227279155" TEXT="Implementierungs-Schicht kennt Typ"/>
<node CREATED="1457227279703" ID="ID_1075464109" MODIFIED="1457227288610" TEXT="aber Tree-Mutator &#xfc;bernimmt ownership"/>
</node>
</node>
</node>
<node CREATED="1456528462585" HGAP="48" ID="ID_777775203" MODIFIED="1512926191983" TEXT="Elemente" VSHIFT="21">
<node CREATED="1456528472016" ID="ID_1698126172" MODIFIED="1456528476211" TEXT="bleiben abstrakt"/>
<node CREATED="1456528477415" ID="ID_729445573" MODIFIED="1512926191984" TEXT="abstrakte &quot;Position&quot;">
<node CREATED="1456533135345" ID="ID_1812393019" MODIFIED="1465428629652" TEXT="Problem: wem geh&#xf6;rt diese Position?">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1456533146055" ID="ID_1492337931" MODIFIED="1456533213989" TEXT="mu&#xdf; stets &#xfc;ber API klar gemacht werden">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1456533166197" ID="ID_1236312189" MODIFIED="1456533204589" TEXT="der Selektor entscheidet, wer gemeint ist">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1456528485326" ID="ID_1937076501" MODIFIED="1512926191984" TEXT="getypte Kinder">
<node CREATED="1456528491109" ID="ID_1937415602" MODIFIED="1456528504567" TEXT="auf Einzelfall-Basis"/>
<node CREATED="1456528505395" ID="ID_644319871" MODIFIED="1456528519117" TEXT="wer per Selektor zust&#xe4;ndig ist"/>
<node CREATED="1456528539799" ID="ID_276410608" MODIFIED="1456528550465" TEXT="Typisierung ergibt sich als Effekt"/>
<node CREATED="1456528551029" ID="ID_998833201" MODIFIED="1465428643785" TEXT="Typisierung wird nicht eigens repr&#xe4;sentiert">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1457232376244" HGAP="29" ID="ID_45251842" MODIFIED="1575133330682" TEXT="onion layer" VSHIFT="26">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      das sind die konkreten Implementierungen
    </p>
    <p>
      f&#252;r spezifische Arten von Bindings
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
<node CREATED="1457232408368" FOLDED="true" HGAP="29" ID="ID_1582052207" MODIFIED="1576200546205" TEXT="TestWireTap / TestMutationTarget" VSHIFT="-6">
<icon BUILTIN="full-1"/>
<node CREATED="1457232426238" ID="ID_1103254276" MODIFIED="1457232567024" TEXT="brauche ich, um das API zu entwickeln">
<linktarget COLOR="#6b77a6" DESTINATION="ID_1103254276" ENDARROW="Default" ENDINCLINATION="-116;0;" ID="Arrow_ID_1002137074" SOURCE="ID_258858244" STARTARROW="None" STARTINCLINATION="-819;487;"/>
</node>
<node CREATED="1457232433157" ID="ID_176264041" MODIFIED="1457232443415" TEXT="ggfs sp&#xe4;ter n&#xfc;tzlich zur Diagnose"/>
<node CREATED="1457232444075" ID="ID_334975575" MODIFIED="1457232459765" TEXT="soll stets &#xfc;ber andere, konkrete Mutation-Layer gelegt werden"/>
<node CREATED="1457232579073" ID="ID_1549772477" MODIFIED="1512926191986" TEXT="Grenzen">
<node CREATED="1457232582704" ID="ID_1363198759" MODIFIED="1457232590595" TEXT="protokolliert nur String-Repr&#xe4;sentation"/>
<node CREATED="1457232591087" ID="ID_1500483325" MODIFIED="1575133330772">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      kann <i>niemals </i>geschachtelte sub-Mutatoren modellieren
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ja wirklich, das w&#228;re nicht sinnvoll!!!!!
    </p>
    <p>
      auch wenn man meinen k&#246;nnte, es geht.
    </p>
    <p>
      Grund ist n&#228;mlich, es kann jeweils nur ein Onion-Layer f&#252;r ein gegebenes Element &quot;zust&#228;ndig&quot; sein.
    </p>
    <p>
      Und aus Gr&#252;nden der logischen Konsistenz darf dieser Diagnose-Layer niemals f&#252;r ein Element zust&#228;ndig sein,
    </p>
    <p>
      denn sonst w&#252;rde er es f&#252;r darunter liegende Layer verschatten.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="closed"/>
</node>
</node>
</node>
<node CREATED="1457232734636" FOLDED="true" ID="ID_743556019" MODIFIED="1576281702665" TEXT="STL Collection">
<icon BUILTIN="full-2"/>
<node CREATED="1458175823858" ID="ID_1221299499" MODIFIED="1512926191990" TEXT="Design-Grundlagen">
<node CREATED="1457741673001" ID="ID_1785153368" MODIFIED="1512926191990" TEXT="konkrete Beispiele">
<icon BUILTIN="info"/>
<node CREATED="1457741683687" ID="ID_733055764" MODIFIED="1457741691409" TEXT="Timelines"/>
<node CREATED="1457741691837" ID="ID_458049766" MODIFIED="1457741697832" TEXT="Tracks"/>
<node CREATED="1457741753006" ID="ID_1923812777" MODIFIED="1457742102003" TEXT="Clips / Effekte / Marken"/>
<node CREATED="1457741809422" ID="ID_1768016408" MODIFIED="1457741815657" TEXT="Effekte / Transitions"/>
</node>
<node CREATED="1457742434714" ID="ID_340131034" MODIFIED="1457742717208">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      &#10233; <i>immer</i>&#160;Mitwirkung des Elements
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1457742547067" HGAP="33" ID="ID_585833263" MODIFIED="1512926191991" TEXT="Selector explizit bauen" VSHIFT="7">
<icon BUILTIN="yes"/>
<node CREATED="1457742554722" ID="ID_1033631571" MODIFIED="1469918265250" TEXT="Selector-Interface">
<arrowlink COLOR="#7caed5" DESTINATION="ID_478070427" ENDARROW="Default" ENDINCLINATION="466;133;" ID="Arrow_ID_1332735015" STARTARROW="None" STARTINCLINATION="681;0;"/>
</node>
<node CREATED="1457742626368" ID="ID_166928002" MODIFIED="1512926191991" TEXT="2.Ausdrucks-Ebene">
<node CREATED="1457742639703" ID="ID_285055499" MODIFIED="1457742645826" TEXT="neben der Identit&#xe4;t"/>
<node CREATED="1457742646366" ID="ID_1443547530" MODIFIED="1533608413881" TEXT="logische Typisierung">
<node CREATED="1457742667947" ID="ID_1038084970" MODIFIED="1457742677734" TEXT="entweder anhand Payload-Typ"/>
<node CREATED="1457742678185" ID="ID_298458662" MODIFIED="1457742684533" TEXT="oder versteckt in der ID"/>
</node>
</node>
</node>
</node>
<node CREATED="1458175861176" FOLDED="true" HGAP="33" ID="ID_1824353830" MODIFIED="1576200485063" TEXT="Design-Anforderungen">
<node CREATED="1458175880034" ID="ID_1162706656" MODIFIED="1512926191992" TEXT="gegeben ist eine STL-Collection">
<node CREATED="1458175892400" ID="ID_1414371056" MODIFIED="1458175904674" TEXT="allgemeinstes STL-Container-Interface"/>
<node CREATED="1458175905766" ID="ID_1684884906" MODIFIED="1458175919817" TEXT="Wert-Typ per typedef abgreifen"/>
</node>
<node CREATED="1455927276314" HGAP="91" ID="ID_1546815224" MODIFIED="1525124215145" TEXT="brauche zus&#xe4;tzliche Operationen" VSHIFT="-3">
<cloud COLOR="#fce9c0"/>
<font NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="info"/>
<node CREATED="1458175942866" ID="ID_1696569407" MODIFIED="1512926191994" TEXT="match">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1458177113846" ID="ID_1566509772" MODIFIED="1458177953094" TEXT="stellt fest, ob das Ziel pa&#xdf;t"/>
<node CREATED="1458177136475" ID="ID_595613576" MODIFIED="1458177953094" TEXT="greift auf eine ID des Zieles zur&#xfc;ck"/>
<node CREATED="1458177147897" ID="ID_1293563447" MODIFIED="1458177953094" TEXT="mu&#xdf; daher in der Regel bereitgestellt werden"/>
<node CREATED="1458177166543" ID="ID_1334737539" MODIFIED="1533608413881" TEXT="Ersatz">
<icon BUILTIN="idea"/>
<node CREATED="1458177169406" ID="ID_1424015065" MODIFIED="1458177953094" TEXT="content-Match"/>
<node CREATED="1458177173574" ID="ID_1148713847" MODIFIED="1575133331142" TEXT="Konsequenz: man kann keine Assignements machen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      weil beim Assignment die Spec (=GenNode) eben
    </p>
    <p>
      zwar die ID des Zieles, aber den neu zuzuweisenden Wert enth&#228;lt.
    </p>
    <p>
      Also wird sich das Ziel nicht anhand des neuen Wertes finden lassen,
    </p>
    <p>
      weil es eben grade noch nicht diesen neuen Wert tr&#228;gt.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1458177198643" ID="ID_179880742" MODIFIED="1458177953094" TEXT="Konsequenz: Suche kann das falsche Resultat erwischen"/>
</node>
</node>
<node CREATED="1458175960615" ID="ID_1831530423" MODIFIED="1512926191995" TEXT="ctor">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1458177315803" ID="ID_179295186" MODIFIED="1458177953094" TEXT="konstruiert aus der Spec ein neues Element"/>
<node CREATED="1458177335632" ID="ID_1308099027" MODIFIED="1458177953094" TEXT="mu&#xdf; typischerweise die Interna des Zieles kennen"/>
<node CREATED="1458177347622" ID="ID_1077558487" MODIFIED="1533608413881" TEXT="Ersatz">
<icon BUILTIN="idea"/>
<node CREATED="1458177489444" ID="ID_1781927029" MODIFIED="1458177953094" TEXT="unterstelle Payload == Zieltyp"/>
<node CREATED="1458177572865" ID="ID_1189103336" MODIFIED="1458177953094" TEXT="Konstruktor auf dem Ziel, der eine GenNode nimmt"/>
</node>
</node>
<node CREATED="1458175991795" ID="ID_711298865" MODIFIED="1512926191995" TEXT="optional...">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1458176002762" ID="ID_1018722356" MODIFIED="1533608413882" TEXT="selector">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1458177605869" ID="ID_405530200" MODIFIED="1458177953094" TEXT="bestimmt ob die Spec f&#xfc;r diesen Binding-Layer &#xfc;berhaupt relevant ist"/>
<node CREATED="1458177631409" ID="ID_1214963706" MODIFIED="1458177953094" TEXT="erlaubt das Filtern mit mehreren Bindings"/>
<node CREATED="1458177642144" ID="ID_60004797" MODIFIED="1561827465503" TEXT="Ersatz">
<icon BUILTIN="idea"/>
<node CREATED="1458177646671" ID="ID_231593517" MODIFIED="1458177953094" TEXT="kein Selector"/>
<node CREATED="1458177652662" ID="ID_65084807" MODIFIED="1458177953094" TEXT="es kann dann also nur ein Binding geben"/>
<node CREATED="1458177664868" ID="ID_643667548" MODIFIED="1458177953094" TEXT="das ist aber auch der h&#xe4;ufigste Fall"/>
</node>
</node>
<node CREATED="1458176008025" ID="ID_1481953509" MODIFIED="1533608413883" TEXT="setter">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1458177697657" ID="ID_1719649092" MODIFIED="1458177953095" TEXT="erlaubt Zuweisung"/>
<node CREATED="1458177712798" ID="ID_1927197411" MODIFIED="1458177953095" TEXT="setzt Auswahl per match voraus"/>
<node CREATED="1458177735635" ID="ID_760968660" MODIFIED="1561827465503" TEXT="Ersatz">
<icon BUILTIN="button_cancel"/>
<node CREATED="1458177738499" ID="ID_465396536" MODIFIED="1458177953095" TEXT="keiner"/>
<node CREATED="1458177741155" ID="ID_389524826" MODIFIED="1458177953095" TEXT="dann gibt&apos;s eben keine Zuweisung"/>
<node CREATED="1458177749233" ID="ID_137083197" MODIFIED="1458177953095" TEXT="auch nicht n&#xf6;tig bei sub-Scopes"/>
<node CREATED="1458177803730" ID="ID_796394975" MODIFIED="1458177953095" TEXT="auch nicht n&#xf6;tig bei immutable values"/>
</node>
</node>
<node CREATED="1458176018087" ID="ID_161071725" MODIFIED="1533608413884" TEXT="mutator">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1458177821712" ID="ID_1562278983" MODIFIED="1458177953095" TEXT="baut einen sub-Mutator f&#xfc;r einen nested scope"/>
<node CREATED="1458177851988" ID="ID_1086989195" MODIFIED="1458177953095" TEXT="setzt Auswahl per match voraus"/>
<node CREATED="1458177857939" ID="ID_1441498229" MODIFIED="1561827465504" TEXT="Ersatz">
<icon BUILTIN="button_cancel"/>
<node CREATED="1458177861162" ID="ID_895205483" MODIFIED="1458177953095" TEXT="keiner"/>
<node CREATED="1458177863506" ID="ID_1223351113" MODIFIED="1458177953095" TEXT="dann gibts eben keine Behandlung von nested scopse"/>
<node CREATED="1458177874760" ID="ID_1180989735" MODIFIED="1458177953095" TEXT="auch nicht n&#xf6;tig bei primitive values"/>
</node>
</node>
</node>
</node>
<node CREATED="1458176048564" ID="ID_1687741268" MODIFIED="1512926191998" TEXT="Flexibilit&#xe4;t">
<node CREATED="1458176054154" ID="ID_470009160" MODIFIED="1458176076851" TEXT="so wenig typ-Feslegung wie m&#xf6;glich"/>
<node CREATED="1458176077368" ID="ID_1813716923" MODIFIED="1458176092658" TEXT="fallback bei fehlendern Operationen"/>
<node CREATED="1458176093958" ID="ID_1948085876" MODIFIED="1512926191999" TEXT="Argument: &quot;dann halt nicht&quot;">
<node CREATED="1458176117266" ID="ID_1409813294" MODIFIED="1458176127813" TEXT="es ist so wie es ist"/>
<node CREATED="1458176128352" ID="ID_272673102" MODIFIED="1458176139563" TEXT="die Gegenseite wei&#xdf; schon was sie will"/>
<node CREATED="1458176252336" ID="ID_1153956310" MODIFIED="1533608413885" TEXT="ich bin, also bin ich konsistent">
<node CREATED="1458176267382" ID="ID_1638809288" MODIFIED="1458176296319" TEXT="konsistent ist, was der diff erzeugt"/>
<node CREATED="1458176297282" ID="ID_1916492291" MODIFIED="1458176305981" TEXT="alles wird per diff erzeugt"/>
<node CREATED="1458176306593" ID="ID_1118529331" MODIFIED="1458176314868" TEXT="also ist alles, was existiert, auch konsistent"/>
</node>
<node CREATED="1458176787953" ID="ID_289940321" MODIFIED="1533608413887" TEXT="sinnvoll gew&#xe4;hlt">
<node CREATED="1458176794848" ID="ID_1468708263" MODIFIED="1458176810370" TEXT="native datenstruktur ist so gew&#xe4;hlt, da&#xdf; sie ihren Zweck erf&#xfc;llt"/>
<node CREATED="1458176883836" ID="ID_1253939379" MODIFIED="1458176899324">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      generische Repr&#228;sentaton ist so gew&#228;hlt,
    </p>
    <p>
      da&#223; sich alle relevanten Eigenschaften darstellen lassen
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1458176911161" ID="ID_431800648" MODIFIED="1561827465504">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      wenn also ein Teil der diff-Funkttionalit&#228;t nicht verf&#252;gbar ist,
    </p>
    <p>
      dann wird es wohl so sein, da&#223; sie auch nicht gebraucht wird
    </p>
  </body>
</html></richcontent>
<node CREATED="1458176947972" ID="ID_1847366222" MODIFIED="1458176965869" TEXT="Beispiel: primitive Werte sind eben kein sub-Scope"/>
<node CREATED="1458176966665" ID="ID_332748706" MODIFIED="1458176981459" TEXT="Beispiel: immutable elements sind eben nicht zuweisbar"/>
</node>
</node>
</node>
<node CREATED="1458176998437" ID="ID_280086408" MODIFIED="1575133331758" TEXT="keine unn&#xf6;tigen Einschr&#xe4;nkungen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      zwar erscheint es nicht sonderlich sinnvoll,
    </p>
    <p>
      als target auch eine Menge von primitiven Werten zuzulassen.
    </p>
    <p>
      
    </p>
    <p>
      Es gibt aber auch keinen wirklichen Grund, dies zu verbieten,
    </p>
    <p>
      sofern es gelingt, die Funktionalit&#228;t gutm&#252;tig zu degradieren.
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node CREATED="1458178113697" HGAP="46" ID="ID_1695144986" MODIFIED="1512926192002" TEXT="Design-Schlu&#xdf;folgerungen" VSHIFT="-5">
<node CREATED="1458178126159" ID="ID_1000523444" MODIFIED="1458178131587" TEXT="Rahmenklasse + Closures"/>
<node CREATED="1458178133078" ID="ID_594771691" MODIFIED="1458851636692" TEXT="Closures mit der Ersatz-Impl vorbelegen">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1458178150916" ID="ID_184029363" MODIFIED="1458178174848" TEXT="Problem: komplexe Konstruktion">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1458178165322" ID="ID_813311479" MODIFIED="1512926192002" TEXT="L&#xf6;sung: nested DSL">
<icon BUILTIN="idea"/>
<node CREATED="1458178203821" ID="ID_1772782569" MODIFIED="1458178222190" TEXT="die Top-Level Builder-Funktion erwartet das volle Binding"/>
<node CREATED="1458178223723" ID="ID_489567599" MODIFIED="1458178247755" TEXT="es gibt eine freie Funktion, die einen nested Builder f&#xfc;r das Binding liefert"/>
</node>
</node>
<node COLOR="#338800" CREATED="1458178288690" FOLDED="true" ID="ID_788822286" MODIFIED="1576281513362" TEXT="Implementierung">
<icon BUILTIN="button_ok"/>
<node CREATED="1458178298328" ID="ID_1990195829" MODIFIED="1512926192003" TEXT="Builder">
<node CREATED="1458325962991" ID="ID_548735792" MODIFIED="1460753004725" TEXT="Typ-Definitionen schwierig anzuschreiben">
<icon BUILTIN="smiley-neutral"/>
</node>
<node CREATED="1458325973486" ID="ID_1681473580" MODIFIED="1458325992405" TEXT="Code ziemlich redundant und undurchsichtig">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1458326045724" ID="ID_65072201" MODIFIED="1575133331952" TEXT="Typ-Check erst sehr sp&#xe4;t">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...will sagen,
    </p>
    <p>
      da sind mehrere Layer an praktisch ungebundenem Template-Code dazwischen,
    </p>
    <p>
      so da&#223; zu bef&#252;rchten steht, da&#223; ein unpassendes Lambda erst weit entfernt
    </p>
    <p>
      eine wom&#246;glich irref&#252;hrende Meldung generiert
    </p>
  </body>
</html></richcontent>
<arrowlink DESTINATION="ID_1678218183" ENDARROW="Default" ENDINCLINATION="176;0;" ID="Arrow_ID_1136171372" STARTARROW="None" STARTINCLINATION="176;0;"/>
</node>
<node CREATED="1472498654730" ID="ID_4691477" MODIFIED="1472498676884" TEXT="gel&#xf6;st durch static_assert">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1458178300984" ID="ID_1281780083" MODIFIED="1512926192004" TEXT="Binding-Layer">
<node CREATED="1458850722203" ID="ID_1721325933" MODIFIED="1512926192004" TEXT="Fehler bei fehlender Funktionalit&#xe4;t">
<node CREATED="1458850733769" ID="ID_668556812" MODIFIED="1458850744620" TEXT="kein Setter"/>
<node CREATED="1458850746184" ID="ID_34346680" MODIFIED="1458850752370" TEXT="kein Mutator"/>
</node>
<node CREATED="1458850782747" ID="ID_956633485" MODIFIED="1458850793430" TEXT="Umgang mit fehlendem Selector"/>
<node CREATED="1458934854051" ID="ID_1793475507" MODIFIED="1512926192004" TEXT="Binding st&#xe4;rker abschlie&#xdf;en">
<node CREATED="1458934863225" ID="ID_1054692405" MODIFIED="1458934897237" TEXT="contentBuffer k&#xf6;nnte privat sein">
<icon BUILTIN="help"/>
</node>
<node CREATED="1458934878911" ID="ID_1685655700" MODIFIED="1458934893132" TEXT="welche Iteratoren m&#xfc;ssen exponiert werden">
<icon BUILTIN="help"/>
</node>
</node>
<node CREATED="1460762013033" ID="ID_513991249" MODIFIED="1512926192005" TEXT="Mutation">
<node CREATED="1460762015777" ID="ID_671701663" MODIFIED="1533608413888">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      erfordert <i>wirklich</i>&#160;Kooperation
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
<node CREATED="1460762025520" ID="ID_840517858" MODIFIED="1460762032675" TEXT="zwischen dem gesendeten Diff"/>
<node CREATED="1460762033119" ID="ID_104073581" MODIFIED="1460762045704" TEXT="und der empfangenden Implementierungs-Datenstruktur"/>
</node>
<node CREATED="1460762065371" ID="ID_1300484830" MODIFIED="1533608413889" TEXT="brauche wohl &quot;Introspection light&quot;">
<icon BUILTIN="smily_bad"/>
<node CREATED="1460762101046" ID="ID_1986146276" MODIFIED="1460762111448" TEXT="damit ich einen Sub-Scope vorbereiten kann"/>
<node CREATED="1460762111924" ID="ID_258947464" MODIFIED="1460762120759" TEXT="in separater privater Datenstrukcur"/>
<node CREATED="1460762121259" ID="ID_1701228640" MODIFIED="1575133332206" TEXT="ist aber nur rein hier im Test ein Problem">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...denn wir verwenden hier als &quot;private&quot; Datenstruktur
    </p>
    <p>
      eine etwas komische Collection von Strings,
    </p>
    <p>
      in die wir die String-Repr&#228;sentation der Spec-Payload schreiben.
    </p>
    <p>
      
    </p>
    <p>
      In der Praxis dagegen w&#252;rde man wirklich einen privaten Datentyp verwenden,
    </p>
    <p>
      und dann auch voraussetzen, da&#223; man <i>nur</i>&#160;Kinder dieses Typs (oder zuweisungskompatibel) bekommt.
    </p>
    <p>
      
    </p>
    <p>
      Mein Poblem hier ist, da&#223; ich in dieser Demonstrations-Datenstruktur keine nested scopes repr&#228;sentieren kann.
    </p>
    <p>
      Aber hey!, es ist meine private Datenstruktur -- also kann ich einfach eine Map von nested scopes
    </p>
    <p>
      daneben auf die gr&#252;ne Wiese stellen. Ist ja nur ein Test :-D
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1460762330487" ID="ID_1060781290" MODIFIED="1575133332223" TEXT="Nein! Schwein gehabt">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...dankenswerterweise hat der subscript-Operator von std::Map
    </p>
    <p>
      die nette Eigenschaft, beim ersten Zugriff auf einen neuen Key
    </p>
    <p>
      dessen payload per default-konstruktor zu erzeugen.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="ksmiletris"/>
</node>
</node>
</node>
<node CREATED="1458868836883" ID="ID_776863625" MODIFIED="1512926192006" TEXT="Beobachtungen">
<node CREATED="1458868852849" ID="ID_474120946" MODIFIED="1575133332262" TEXT="Sonderbarer &quot;this&quot;-Typ">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      der Builder in der nested DSL generiert einen sonderbar falschen &quot;this&quot;-Typ,
    </p>
    <p>
      genauer gesagt, eine TYPID die falsch ist.
    </p>
    <p>
      Und zwar kommt es da zum &quot;&#220;bersprechen&quot; von einem Typ-Parameter in den anderen.
    </p>
    <p>
      Im Besonderen hab ich beobachtet, da&#223;, wenn man auf den 3.Typparameter ein Lambda gibt,
    </p>
    <p>
      dann auf dem 4. oder 5. Typparameter der bisherige /alte Typ des 3.Typparameters auftaucht,
    </p>
    <p>
      u.U auch eingeschachtelt als ein Argument.
    </p>
    <p>
      
    </p>
    <p>
      Habe mich aber davon &#252;berzeugt, da&#223; die eigentlichen Typ-Parameter in Ordnung sind.
    </p>
    <p>
      Und zwar habe ich das verifiziert
    </p>
    <ul>
      <li>
        durch Ausgeben der Typen im Konstruktor (mithilfe meiner typeStr&lt;TY&gt;()
      </li>
      <li>
        durch Einbauen einer Static-Assertion mit Signatur-Match
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1458850516270" ID="ID_960489546" MODIFIED="1512926192006" TEXT="Test">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1458850521270" ID="ID_10780308" MODIFIED="1512926192007" TEXT="F&#xe4;lle">
<arrowlink COLOR="#639ad5" DESTINATION="ID_1333254858" ENDARROW="Default" ENDINCLINATION="1091;0;" ID="Arrow_ID_1011836019" STARTARROW="None" STARTINCLINATION="1150;185;"/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1458850526133" ID="ID_1314105749" MODIFIED="1458850550109" TEXT="Binden an Sammlung aus Primitiven"/>
<node CREATED="1458850550705" ID="ID_1183034205" MODIFIED="1458850572315" TEXT="Binden an Sammlung aus Spezialtypen"/>
</node>
<node CREATED="1458850656668" ID="ID_98190211" MODIFIED="1512926192007" TEXT="Defaults">
<node CREATED="1458850660523" ID="ID_907930269" MODIFIED="1575133332339" TEXT="GenNode-vertr&#xe4;glicher Payload-Typ">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      gemeint ist:
    </p>
    <p>
      die native Datenstruktur ist eine Collection von Elementen,
    </p>
    <p>
      welche ohne Weiteres direkt in eine GenNode gepackt werden k&#246;nnten. Denn dann l&#228;&#223;t
    </p>
    <p>
      sich eine einfache Default-Implementierung des Matchers angeben
    </p>
    <p>
      
    </p>
    <p>
      Typisches Beispiel: eine STL-Collection von Strings.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1458850672705" ID="ID_1189075551" MODIFIED="1458850675197" TEXT="kein Setter"/>
<node CREATED="1458850675641" ID="ID_1246319832" MODIFIED="1458850678564" TEXT="kein Mutator"/>
</node>
</node>
</node>
<node CREATED="1576201164862" ID="ID_1192285970" MODIFIED="1576201174765" TEXT="Anwendung/Weiterungen">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1576201177204" ID="ID_1553674095" MODIFIED="1576201185379" TEXT="konkrete STL-Container">
<node COLOR="#435e98" CREATED="1576201634998" ID="ID_1964972550" MODIFIED="1576201711423" TEXT="Kriterium: Anf&#xfc;gen in Iterations-Ordnung m&#xf6;glich">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      das hei&#223;t, wir k&#246;nnen Elemente in der gleichen Reihenfolge anf&#252;gen, in der sie sp&#228;ter dann in der Iteration erscheinen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
<node CREATED="1576201686151" ID="ID_621927049" MODIFIED="1576201705653" TEXT="das schlie&#xdf;t z.B. die std::forward_list aus">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1463687466573" ID="ID_453712930" MODIFIED="1576203666771" TEXT="&#xbb;Attribut-Map&#xab; via Collection-Binding">
<linktarget COLOR="#9f96d9" DESTINATION="ID_453712930" ENDARROW="Default" ENDINCLINATION="722;-59;" ID="Arrow_ID_1263259661" SOURCE="ID_1112268061" STARTARROW="Default" STARTINCLINATION="1873;0;"/>
<linktarget COLOR="#9f96d9" DESTINATION="ID_453712930" ENDARROW="Default" ENDINCLINATION="478;123;" ID="Arrow_ID_1448345273" SOURCE="ID_1994979880" STARTARROW="None" STARTINCLINATION="479;26;"/>
<node CREATED="1576201733178" ID="ID_150341491" MODIFIED="1576201748321" TEXT="clever aber etwas faul">
<icon BUILTIN="smiley-neutral"/>
<node CREATED="1576201756590" ID="ID_1699263676" MODIFIED="1576201764691" TEXT="im Widerspruch zum Konzept"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1576203601492" ID="ID_1611724080" MODIFIED="1576203790175" TEXT="auf technischer Ebene problematisch">
<linktarget COLOR="#e69f98" DESTINATION="ID_1611724080" ENDARROW="Default" ENDINCLINATION="-741;702;" ID="Arrow_ID_1638749746" SOURCE="ID_42201574" STARTARROW="None" STARTINCLINATION="1526;117;"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1475449660020" ID="ID_1478336994" MODIFIED="1475449740005" TEXT="Diff geht von Listen-Ordnung aus">
<icon BUILTIN="info"/>
</node>
<node CREATED="1475449777532" ID="ID_631032937" MODIFIED="1575133341421" TEXT="Symptom: Compile-Fehler">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <ul>
      <li>
        Map hat kein emplace_back
      </li>
      <li>
        Map hat kein back()
      </li>
    </ul>
    <p>
      Beides ist erst mal sinnvoll. Map hat zwar ein emplace, aber das f&#252;gt eben <i>irgendwo</i>&#160;ein
    </p>
    <p>
      Und es gibt nicht sowas wie das &quot;zuletzt behandelte&quot; Element
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1576204849307" ID="ID_1683329492" MODIFIED="1576204859597" TEXT="getriggert vom include von MockElm"/>
<node CREATED="1576204860969" ID="ID_886723912" MODIFIED="1576204978226" TEXT="dieses definiert CollectionBindingBuilder&lt;std::map&lt;string,string&gt;, ....">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      MockElm, Z 260 : .attach (collection(attrib)
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#338800" CREATED="1576281315883" ID="ID_640546093" MODIFIED="1576281693125" TEXT="L&#xf6;sung: ContainerTraits">
<linktarget COLOR="#2eb28a" DESTINATION="ID_640546093" ENDARROW="Default" ENDINCLINATION="-191;-682;" ID="Arrow_ID_562122794" SOURCE="ID_1695910920" STARTARROW="None" STARTINCLINATION="485;33;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1576281324121" ID="ID_1199488349" MODIFIED="1576281329357" TEXT="zun&#xe4;chst pragmatisch..."/>
<node CREATED="1576281330011" ID="ID_1351721283" MODIFIED="1576281335828" TEXT="f&#xfc;r std::vector"/>
<node CREATED="1576281336488" ID="ID_3661697" MODIFIED="1576281340447" TEXT="f&#xfc;r std::map">
<node CREATED="1576281341463" ID="ID_774200305" MODIFIED="1576281347109" TEXT="auch wenn&apos;s nicht sch&#xf6;n ist..."/>
<node CREATED="1576281347766" ID="ID_1789296590" MODIFIED="1576281368023" TEXT="prinzipiell gibt es keinen Grund, diese Alternative nicht zu bieten"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1576281371403" ID="ID_424557250" MODIFIED="1576281393116" TEXT="Zukunft: &quot;generischer STL container&quot;">
<icon BUILTIN="bell"/>
<node CREATED="1576281394776" ID="ID_847933754" MODIFIED="1576281409962" TEXT="vermutlich gibt es n&#xe4;mlich einen kleinsten gemeinsamen Nenner"/>
<node CREATED="1576281412733" ID="ID_193628368" MODIFIED="1576281422192" TEXT="m&#xf6;glicherweise mit C++20 / Concepts"/>
</node>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1457232752458" FOLDED="true" ID="ID_679000009" MODIFIED="1576203843960" TEXT="Attribute">
<icon BUILTIN="full-3"/>
<node CREATED="1458175823858" ID="ID_1006862973" MODIFIED="1512926192010" TEXT="Design-Grundlagen">
<node CREATED="1461882686190" ID="ID_1889353960" MODIFIED="1575133332435" TEXT="von praktischer Notwendigkeit getrieben">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      wir integrieren Attribute nicht, weil es so sch&#246;n symmetrisch ist,
    </p>
    <p>
      sondern weil sie essentiell zum Wesen von Objekten geh&#246;ren.
    </p>
    <p>
      Wenn wir &#196;nderungen an Objekt-Strukturen als Diff erfassen wollen,
    </p>
    <p>
      dann <i>m&#252;ssen</i>&#160;Attribute irgendwie sinnvoll integriert sein
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1457741673001" ID="ID_162846674" MODIFIED="1512926192010" TEXT="konkrete Beispiele">
<icon BUILTIN="info"/>
<node CREATED="1457741683687" ID="ID_1986089780" MODIFIED="1461888218005" TEXT="Position eines Clips"/>
<node CREATED="1461888218521" ID="ID_805889980" MODIFIED="1461888222508" TEXT="L&#xe4;nge eines Clips"/>
<node CREATED="1461888223024" ID="ID_1852444919" MODIFIED="1461888302874" TEXT="Typ eines Markers"/>
<node CREATED="1461888304126" ID="ID_446819203" MODIFIED="1461888305362" TEXT="..."/>
</node>
<node CREATED="1457742434714" ID="ID_1724305674" MODIFIED="1461888342584">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      &#10233; <i>immer</i>&#160;in der Klasse verankert
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1457742434714" ID="ID_1982563767" MODIFIED="1461888407600">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      &#10233; es geht eigentlich <i>nur</i>&#160;um den Wert des Attributes
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1458175861176" FOLDED="true" HGAP="39" ID="ID_9781860" MODIFIED="1576200444705" TEXT="Design-Anforderungen" VSHIFT="7">
<node CREATED="1458175880034" ID="ID_470578362" MODIFIED="1512926192012" TEXT="...ein Objekt hat schon ein bestimmtes Feld">
<node CREATED="1458175892400" ID="ID_775558171" MODIFIED="1461888660658" TEXT="Typ"/>
<node CREATED="1461888661462" ID="ID_274214255" MODIFIED="1461888668033" TEXT="default-Wert"/>
<node CREATED="1458175905766" ID="ID_625777549" MODIFIED="1461888693671">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      manche Felder sind <i>optional</i>
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1461888779999" ID="ID_1154997498" MODIFIED="1512926192012" TEXT="innerer Widerspruch">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1461888830680" ID="ID_1487174561" MODIFIED="1461888837867" TEXT="Feld vs Attribut"/>
<node CREATED="1461888838455" ID="ID_1479289808" MODIFIED="1461888848953" TEXT="das Diff dr&#xfc;ckt sich in Attributen aus"/>
<node CREATED="1461888982036" ID="ID_1968370725" MODIFIED="1512926192013" TEXT="Umgang mit den Diskrepanzen">
<icon BUILTIN="help"/>
<node CREATED="1461889012008" ID="ID_40654684" MODIFIED="1533608413889" TEXT="Einf&#xfc;gen eines Attributes">
<node CREATED="1461889021646" ID="ID_201631788" MODIFIED="1461889026273" TEXT="wo das Feld schon da ist"/>
<node CREATED="1461889026813" ID="ID_1640082452" MODIFIED="1461889040368" TEXT="wo es kein korrespondierendes Feld gibt"/>
</node>
<node CREATED="1461889146846" ID="ID_25411084" MODIFIED="1461889152792" TEXT="L&#xf6;schen eines Attributes"/>
<node CREATED="1461889107939" ID="ID_1826186779" MODIFIED="1461889133891" TEXT="Umordnen von Attributen"/>
</node>
<node CREATED="1461889187336" ID="ID_385261311" MODIFIED="1512926192015" TEXT="Leitgedanke">
<font NAME="SansSerif" SIZE="15"/>
<node CREATED="1461889203662" ID="ID_896442640" MODIFIED="1461889243250" TEXT="&#xbb;auf GenNode und Objekt gleicherma&#xdf;en anwendbar&#xab;">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
</node>
<node CREATED="1461889253087" ID="ID_1086093590" MODIFIED="1533608413908" TEXT="das hei&#xdf;t...">
<font NAME="SansSerif" SIZE="11"/>
<node CREATED="1461889261806" ID="ID_7827811" MODIFIED="1461889621538" TEXT="wende Diff auf GenNode an">
<font NAME="SansSerif" SIZE="11"/>
</node>
<node CREATED="1461889282580" ID="ID_915026064" MODIFIED="1461889621538" TEXT="wende gleichen Diff auf gebundenes Objekt an">
<font NAME="SansSerif" SIZE="11"/>
</node>
<node CREATED="1461889296634" ID="ID_1803163409" MODIFIED="1461889621537" TEXT="Ergebnis mu&#xdf; semantisch &#xe4;quivalent sein">
<font NAME="SansSerif" SIZE="11"/>
</node>
<node CREATED="1461889399932" ID="ID_384089086" MODIFIED="1461889621534">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      unter der Ma&#223;gabe,
    </p>
    <p>
      wie ETD ein Objekt rep&#228;sentiert
    </p>
  </body>
</html></richcontent>
<font NAME="SansSerif" SIZE="11"/>
</node>
<node CREATED="1461889470866" ID="ID_582798205" MODIFIED="1561827465534" TEXT="operational">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1461889474402" ID="ID_478945699" MODIFIED="1575133332828" TEXT="alle Informationen, die die Anwendung nicht nutzt">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      &quot;Anwendung&quot; : meint das Anwenden eines Diffs auf ein Ziel-Objekt
    </p>
    <p>
      &quot;nicht nutzen&quot; : meint ignorieren und verwerfen der Information
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1461889550072" ID="ID_1443097308" MODIFIED="1461889558442" TEXT="d&#xfc;rfen nur Zustands-&#xc4;nderungen bewirken"/>
<node CREATED="1461889558983" ID="ID_567185466" MODIFIED="1461889796278" TEXT="welche keinen Einflu&#xdf; auf nachfolgende Diffs haben">
<arrowlink COLOR="#be5b66" DESTINATION="ID_325506443" ENDARROW="Default" ENDINCLINATION="28;-28;" ID="Arrow_ID_1504152758" STARTARROW="None" STARTINCLINATION="13;20;"/>
</node>
</node>
</node>
<node CREATED="1461889656194" HGAP="73" ID="ID_325506443" MODIFIED="1533608413909" TEXT="ist das &#xfc;berhaupt m&#xf6;glich" VSHIFT="23">
<linktarget COLOR="#be5b66" DESTINATION="ID_325506443" ENDARROW="Default" ENDINCLINATION="28;-28;" ID="Arrow_ID_1504152758" SOURCE="ID_567185466" STARTARROW="None" STARTINCLINATION="13;20;"/>
<icon BUILTIN="help"/>
<node CREATED="1461889858863" ID="ID_1007257543" MODIFIED="1575133332880" TEXT="sicher nicht bidirektional">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      meint: ETD -&gt; Objekt und dann sp&#228;ter Objekt -&gt; ETD
    </p>
    <p>
      
    </p>
    <p>
      warum?
    </p>
    <p>
      Weil sich in der ETD die Reihenfolge &#228;ndern kann,
    </p>
    <p>
      und aber das Aufspielen eines Diffs auf beiden Seiten
    </p>
    <p>
      zwingend die gleiche Reihenfolge erfordert!
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1461890009355" ID="ID_1795458386" MODIFIED="1575133332917" TEXT="aber ETD als Zwischenstufe ist m&#xf6;glich">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Objekt -&gt; ETD -&gt; Objekt
    </p>
    <p>
      
    </p>
    <p>
      warum?
    </p>
    <p>
      weil das Quellobjekt keinen Diff erzeugen wird,
    </p>
    <p>
      der sich letztlich nicht auf das Zielobjekt aufspielen l&#228;&#223;t
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#807bce" DESTINATION="ID_1795458386" ENDARROW="Default" ENDINCLINATION="671;0;" ID="Arrow_ID_1621793396" SOURCE="ID_1767038604" STARTARROW="Default" STARTINCLINATION="994;0;"/>
</node>
<node CREATED="1461890240148" ID="ID_755605936" MODIFIED="1561827465535" TEXT="Schutzmechanismen">
<node CREATED="1461890266377" ID="ID_1129894756" MODIFIED="1461890283701">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      abweisen, was das Kriterium <i>sicher verletzt</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1461890289662" ID="ID_708422709" MODIFIED="1461890307247" TEXT="Einf&#xfc;gen eines Feldes, das die Klasse nicht kennt"/>
<node CREATED="1461891798533" ID="ID_689714781" MODIFIED="1461891807616" TEXT="explizites Umordnen (per seek)"/>
</node>
</node>
</node>
</node>
<node CREATED="1461892011913" HGAP="227" ID="ID_1646969790" MODIFIED="1525124215165" TEXT="Verhaltensmuster" VSHIFT="11">
<node CREATED="1461892073089" ID="ID_276124788" MODIFIED="1575133333003" TEXT="default vs mandatory">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      <b>mandatory</b>&#160;: Wert mu&#223; per Konstruktor gegeben sein
    </p>
    <p>
      <b>default</b>&#160;: es gibt einen ausgezeichneten Standardwert
    </p>
  </body>
</html></richcontent>
<node CREATED="1461892285965" ID="ID_649582218" MODIFIED="1533608413911" TEXT="mandatory ">
<node CREATED="1461892303666" ID="ID_1570612865" MODIFIED="1461892312404" TEXT="Problem der Konstruktor-Repr&#xe4;sentation"/>
<node CREATED="1461892313049" ID="ID_335222917" MODIFIED="1575133333052" TEXT="einziger Ausweg: komplette ETD-Repr&#xe4;sentation als Wert senden">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      das hei&#223;t, in dem ins-Verb ist dann ein komplettes Objekt enthalten,
    </p>
    <p>
      nicht nur eine leere Record-H&#252;lle, die nachfolgend populiert werden kann (aber nicht mu&#223;)
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1461892430466" ID="ID_215866993" MODIFIED="1461892440092" TEXT="ein mandatory-Feld darf nicht gel&#xf6;scht werden"/>
</node>
<node CREATED="1461892444727" ID="ID_1285291323" MODIFIED="1533608413912" TEXT="default">
<node CREATED="1461892490881" ID="ID_546743858" MODIFIED="1561827465535" TEXT="es gibt zwei Grade">
<node CREATED="1461892496377" ID="ID_682467781" MODIFIED="1575133333102" TEXT="minder">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Konstruktor bef&#252;llt das Feld halt irgendwie.
    </p>
    <p>
      Ab dem Punkt verh&#228;lt es sich aber wie ein normales (mandatory) Feld
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1461892554377" ID="ID_1327287438" MODIFIED="1575133333117" TEXT="vollwertig">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      das Objekt selber kann erkennen, ob das Feld sich im &quot;default-Zustand&quot; befindet
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1461892641949" ID="ID_747303496" MODIFIED="1461892653415" TEXT="Einf&#xfc;gen == vom Default-Wert abweichen"/>
<node CREATED="1461892654148" ID="ID_1992298354" MODIFIED="1461892662590" TEXT="L&#xf6;schen == zum Default-Wert zur&#xfc;ckkehren"/>
</node>
</node>
<node CREATED="1461966988471" ID="ID_84281476" MODIFIED="1512926192022" TEXT="pr&#xfc;fen vs ignorieren">
<node CREATED="1461967012164" ID="ID_1394333030" MODIFIED="1533608413912" TEXT="pr&#xfc;fen">
<icon BUILTIN="forward"/>
<node CREATED="1461967015883" ID="ID_659976910" MODIFIED="1461967028022" TEXT="ben&#xf6;tigt zus&#xe4;tzliche Mechanismen"/>
<node CREATED="1461967028489" ID="ID_720327121" MODIFIED="1461967042164" TEXT="verifiziert Validit&#xe4;t der Diff-Nachricht"/>
</node>
<node CREATED="1461967044480" ID="ID_989829670" MODIFIED="1533608413913" TEXT="ignorieren">
<icon BUILTIN="button_cancel"/>
<node CREATED="1461967051095" ID="ID_1280707953" MODIFIED="1461967056946" TEXT="wendet an, was anwendbar ist"/>
<node CREATED="1461967057462" ID="ID_1792972822" MODIFIED="1461967068248" TEXT="alles andere &quot;durchwinken&quot;"/>
</node>
<node COLOR="#990000" CREATED="1461967003141" HGAP="29" ID="ID_590789300" MODIFIED="1533608413916" TEXT="Design-Entscheidung" VSHIFT="19">
<font NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1461967143851" ID="ID_1683940966" MODIFIED="1575133333271">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      ohne Pr&#252;fen ist <b>emptySrc</b>&#160;nicht implementierbar
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...weil es f&#252;r <b>emptySrc</b>&#160;keine neutrale Antwort gibt.
    </p>
    <p>
      Denn dieses Pr&#228;dikat wird von der typischen Implementierung des Diff-Applikators
    </p>
    <p>
      in beiden Richtungen verwendet, also sowohl Pr&#252;fung auf empty (&quot;expect no further elements&quot;),
    </p>
    <p>
      alsauch der Check, da&#223; &#252;berhaupt noch Quellelemente anstehen
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1461967247093" ID="ID_820111448" MODIFIED="1461967294701">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      d.h., man kann nur <i>global auf Pr&#252;fung verzichten&#160;</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1461967274577" ID="ID_1940471621" MODIFIED="1461967310565">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      und da habe ich mich bereits <i><font color="#d3204b">dagegen entschieden</font></i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1461967364397" ID="ID_998476299" MODIFIED="1461967379991" TEXT="Pr&#xfc;fung erfordert eine Flag f&#xfc;r jedes bekannte Feld"/>
<node CREATED="1461967384579" ID="ID_602978912" MODIFIED="1461967401644" TEXT="diese Flag wird gesetzt, sobald der Diff das Feld &quot;ber&#xfc;hrt&quot;"/>
<node CREATED="1461967428061" ID="ID_515874429" MODIFIED="1561827465536" TEXT="au&#xdf;erdem gibt es noch zwei triviale Basis-Checks">
<node CREATED="1461967451610" ID="ID_1510037111" MODIFIED="1461967462700" TEXT="ist bekannter Attributsname"/>
<node CREATED="1461967463264" ID="ID_408683865" MODIFIED="1461967487243">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Feld unterst&#252;tzt <b>default</b>-Wert
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node CREATED="1475506680125" HGAP="58" ID="ID_1024927289" MODIFIED="1533608413932" TEXT="Variante" VSHIFT="13">
<node CREATED="1475506691595" ID="ID_1371631530" MODIFIED="1475506704861" TEXT="emptySrc -&gt; hasSrc"/>
<node CREATED="1475506705641" ID="ID_1680481140" MODIFIED="1475506735169" TEXT="und den nicht implementierbaren Fall tolerieren"/>
<node CREATED="1475506735949" ID="ID_798651428" MODIFIED="1475506746633" TEXT="im &#xdc;brigen: stets pr&#xfc;fen und scheitern">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1475506753523" HGAP="34" ID="ID_1091824657" MODIFIED="1475506765947" TEXT="so umgesetzt" VSHIFT="10">
<font NAME="SansSerif" SIZE="10"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node CREATED="1455927276314" HGAP="100" ID="ID_1988815933" MODIFIED="1525124215178" TEXT="Spezifikation" VSHIFT="18">
<cloud COLOR="#fce9c0"/>
<font NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="info"/>
<node CREATED="1461946125744" HGAP="55" ID="ID_803569564" MODIFIED="1512926192031">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Auslegung der
    </p>
    <p>
      <font size="5">Primitiven</font>
    </p>
  </body>
</html></richcontent>
<node CREATED="1455927425726" ID="ID_585793339" MODIFIED="1533608413934" TEXT="hasSrc">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1455928216420" ID="ID_906145373" MODIFIED="1464116966043" TEXT="can not sensibly be implemented">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1464116995888" ID="ID_705527711" MODIFIED="1464117033135" TEXT="always returns true">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1464116967676" ID="ID_289977872" MODIFIED="1464117025435">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      rationale: object fields are hard wired,
    </p>
    <p>
      thus always available
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1455927425726" ID="ID_1191281077" MODIFIED="1533608413934" TEXT="skipSrc">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="closed"/>
<node CREATED="1464212421708" ID="ID_151349875" MODIFIED="1464212429644" TEXT="prohibited, raise error"/>
<node CREATED="1455928216420" ID="ID_1382605808" MODIFIED="1464212390729" TEXT="reset to default">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1461964714068" ID="ID_537168917" MODIFIED="1463690748989" TEXT="mandatory fields raise error">
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1455927396505" ID="ID_1179824183" MODIFIED="1533608413935" TEXT="matchSrc">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1455928268589" ID="ID_1175359759" MODIFIED="1461964779839" TEXT="ID comparison to field known by name"/>
</node>
<node CREATED="1455982947867" ID="ID_597958919" MODIFIED="1533608413935" TEXT="injectNew">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1455982969073" ID="ID_657399174" MODIFIED="1463675987940" TEXT="set known field&apos;s contents"/>
<node CREATED="1457047512175" ID="ID_1007532661" MODIFIED="1464212464658" TEXT="mandatory fields raise error">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1461964818054" ID="ID_432635855" MODIFIED="1461964825281" TEXT="unknown fields raise error"/>
</node>
<node CREATED="1455927413191" ID="ID_515347130" MODIFIED="1533608413935" TEXT="acceptSrc">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1464212476461" ID="ID_934414787" MODIFIED="1464212481606" TEXT="NOP"/>
<node CREATED="1461964863217" ID="ID_1667143687" MODIFIED="1464212474879" TEXT="mark known field as mentioned">
<icon BUILTIN="button_cancel"/>
</node>
</node>
<node CREATED="1455928166683" ID="ID_440876181" MODIFIED="1533608413938" TEXT="accept_until">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="stop-sign"/>
<node CREATED="1455928383765" ID="ID_1341082886" MODIFIED="1461965340133" TEXT="nicht implementierbar">
<font BOLD="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1457231714541" ID="ID_721485398" MODIFIED="1465428399592" TEXT="fraglich: mu&#xdf; vielleicht aus der Sprache entfernt werden">
<arrowlink COLOR="#592379" DESTINATION="ID_832194713" ENDARROW="Default" ENDINCLINATION="577;0;" ID="Arrow_ID_1785459194" STARTARROW="Default" STARTINCLINATION="1205;231;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
<node CREATED="1463675830732" ID="ID_1936468017" MODIFIED="1561827465536">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Einschr&#228;nkung:&#160;<b>accept_until END</b>
    </p>
  </body>
</html></richcontent>
<node CREATED="1463675866200" ID="ID_836526909" MODIFIED="1575133333756" TEXT="ist implementierbar">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...n&#228;mlich indem alle Attribute als &quot;ber&#252;hrt&quot; und akzeptiert markiert werden.
    </p>
    <p>
      Somit k&#246;nnten sofort Zuweisungen als N&#228;chstes passieren
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1463675872239" ID="ID_357902233" MODIFIED="1463675882809" TEXT="ist sehr sinnvoll"/>
<node CREATED="1463675883853" ID="ID_1598959525" MODIFIED="1464212598924" TEXT="k&#xf6;nnte sogar Standardfall sein">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1464212588886" ID="ID_1794610293" MODIFIED="1464212594754" TEXT="ist effektiv NOP">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node CREATED="1455927413191" ID="ID_15287291" MODIFIED="1533608413939" TEXT="findSrc">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="closed"/>
<node CREATED="1461946965569" ID="ID_641654199" MODIFIED="1461963646230" TEXT="Umordnen wird nicht unterst&#xfc;tzt"/>
<node CREATED="1461963648481" ID="ID_424736619" MODIFIED="1461963654996" TEXT="l&#xf6;st einen Logik-Fehler aus"/>
</node>
<node CREATED="1455928184504" ID="ID_7150585" MODIFIED="1533608413940" TEXT="assignElm">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1461963697714" ID="ID_1611504203" MODIFIED="1461963707499" TEXT="Setter aufrufen"/>
<node CREATED="1461963686556" ID="ID_1024151478" MODIFIED="1461963697214" TEXT="namentlich bekanntes Feld"/>
<node CREATED="1461963708449" ID="ID_1297402022" MODIFIED="1461963718804" TEXT="nicht bekannte Felder l&#xf6;sen Fehler aus"/>
</node>
<node CREATED="1455928189695" ID="ID_802620360" MODIFIED="1533608413941" TEXT="mutateChild">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1461963754651" ID="ID_74917900" MODIFIED="1461963776115">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      analog wie&#160;<b>assignElm</b>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1461963748604" ID="ID_15098291" MODIFIED="1461963753895" TEXT="namentlich bekanntes Feld"/>
<node CREATED="1461963777440" ID="ID_1640944406" MODIFIED="1461963787443" TEXT="aber nicht Setter, sondern Mutator bauen"/>
</node>
<node CREATED="1464113688645" ID="ID_1176289974" MODIFIED="1533608413942" STYLE="fork" TEXT="completeScope">
<edge COLOR="#808080" STYLE="bezier" WIDTH="thin"/>
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1464113727192" ID="ID_1067616469" MODIFIED="1464113954773" TEXT="hier NOP implementiert"/>
<node CREATED="1464113740005" ID="ID_142294253" MODIFIED="1464114004153">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      das hei&#223;t, es findet <b>keine Verifikation</b>&#160;statt
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1455928193863" ID="ID_623558191" MODIFIED="1533608413943" TEXT="CTOR">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1461946885292" ID="ID_1815209308" MODIFIED="1461965407132" TEXT="mark all known fields as not yet mentioned"/>
<node COLOR="#e5500c" CREATED="1461946693701" ID="ID_1970580003" MODIFIED="1461965425322" STYLE="fork" TEXT="meta-Operation">
<edge COLOR="#808080" STYLE="bezier" WIDTH="thin"/>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
</node>
</node>
<node CREATED="1461946112906" HGAP="14" ID="ID_1014423358" MODIFIED="1512926192037" VSHIFT="21">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      zu bindende
    </p>
    <p>
      <font size="4">Operationen</font>
    </p>
  </body>
</html></richcontent>
<node CREATED="1458175991795" ID="ID_1060725077" MODIFIED="1533608413943" TEXT="fest eingebaut...">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1458175942866" ID="ID_243703127" MODIFIED="1561827465536" TEXT="match">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1458177113846" ID="ID_1805676364" MODIFIED="1461966728693" TEXT="pr&#xfc;ft ID-Name der Spec gegen Feldname des Zieles"/>
</node>
<node CREATED="1458176002762" ID="ID_1807951993" MODIFIED="1561827465537" TEXT="selector">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1458177605869" ID="ID_1366865034" MODIFIED="1461966119517" TEXT="ein default-Selector ist automatisch stets konfiguriert"/>
<node CREATED="1461966120082" ID="ID_1815206712" MODIFIED="1461966665670" TEXT="default ist Pr&#xfc;fen, ob die Spec ein Attribut bezeichnet"/>
</node>
</node>
<node CREATED="1458175991795" ID="ID_568449972" MODIFIED="1533608413946" TEXT="optional...">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1458176008025" ID="ID_1898233888" MODIFIED="1561827465537" TEXT="setter">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1458177697657" ID="ID_1919536488" MODIFIED="1458177953095" TEXT="erlaubt Zuweisung"/>
<node CREATED="1458177712798" ID="ID_711029038" MODIFIED="1458177953095" TEXT="setzt Auswahl per match voraus"/>
<node CREATED="1458177735635" FOLDED="true" ID="ID_965106517" MODIFIED="1561827483835" TEXT="Ersatz">
<icon BUILTIN="button_cancel"/>
<node CREATED="1458177738499" ID="ID_1141876143" MODIFIED="1458177953095" TEXT="keiner"/>
<node CREATED="1458177741155" ID="ID_512515009" MODIFIED="1458177953095" TEXT="dann gibt&apos;s eben keine Zuweisung"/>
<node CREATED="1458177749233" ID="ID_709608820" MODIFIED="1458177953095" TEXT="auch nicht n&#xf6;tig bei sub-Scopes"/>
<node CREATED="1458177803730" ID="ID_176238190" MODIFIED="1458177953095" TEXT="auch nicht n&#xf6;tig bei immutable values"/>
</node>
</node>
<node CREATED="1458176018087" ID="ID_1939286828" MODIFIED="1561827465538" TEXT="mutator">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1458177821712" ID="ID_776830345" MODIFIED="1458177953095" TEXT="baut einen sub-Mutator f&#xfc;r einen nested scope"/>
<node CREATED="1458177851988" ID="ID_726523372" MODIFIED="1458177953095" TEXT="setzt Auswahl per match voraus"/>
<node CREATED="1458177857939" FOLDED="true" ID="ID_556346121" MODIFIED="1561827483835" TEXT="Ersatz">
<icon BUILTIN="button_cancel"/>
<node CREATED="1458177861162" ID="ID_889666207" MODIFIED="1458177953095" TEXT="keiner"/>
<node CREATED="1458177863506" ID="ID_99047676" MODIFIED="1463690716478" TEXT="dann gibts eben keine Behandlung von nested scopes"/>
<node CREATED="1458177874760" ID="ID_947844223" MODIFIED="1458177953095" TEXT="auch nicht n&#xf6;tig bei primitive values"/>
</node>
</node>
<node CREATED="1463687547746" ID="ID_1901457184" MODIFIED="1561827465539" TEXT="defaulter">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1463687553569" ID="ID_9295162" MODIFIED="1463687602782" TEXT="veranla&#xdf;t R&#xfc;ckkehr zum default-Zustand"/>
<node CREATED="1463687629319" ID="ID_143858987" MODIFIED="1463687644409" TEXT="erfordert explizite Unterst&#xfc;tzung durch das Zielobjekt"/>
<node CREATED="1463687644973" ID="ID_1450965693" MODIFIED="1575133334303" TEXT="fragw&#xfc;rdig">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      sieht nach Ober-engineering aus,
    </p>
    <p>
      zumal das erhebliche Statefulness bewirkt
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1463687649812" FOLDED="true" ID="ID_223867304" MODIFIED="1561827483836" TEXT="Ersatz">
<icon BUILTIN="button_cancel"/>
<node CREATED="1463687668218" ID="ID_1355941236" MODIFIED="1463687670469" TEXT="keiner"/>
<node CREATED="1463687672649" ID="ID_1680005619" MODIFIED="1463687689779" TEXT="dann kann eben nur gebunden werden"/>
<node CREATED="1463687865175" ID="ID_462333966" MODIFIED="1463687869987" TEXT="normalerweise verzichtbar"/>
</node>
</node>
<node CREATED="1458175960615" ID="ID_324885" MODIFIED="1561827465540" TEXT="ctor">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1461966391478" ID="ID_235916217" MODIFIED="1461966404134" TEXT="wird dem Setter vorgeschaltet"/>
<node CREATED="1458177315803" ID="ID_1514272147" MODIFIED="1458177953094" TEXT="konstruiert aus der Spec ein neues Element"/>
<node CREATED="1461966815950" ID="ID_382468761" MODIFIED="1461966831208" TEXT="notwendig bei Attribut-Werten, die tats&#xe4;chlich Objekte sind"/>
<node CREATED="1458177335632" ID="ID_1162845397" MODIFIED="1458177953094" TEXT="mu&#xdf; typischerweise die Interna des Zieles kennen"/>
<node CREATED="1458177347622" FOLDED="true" ID="ID_751382358" MODIFIED="1561827483836" TEXT="Ersatz">
<icon BUILTIN="idea"/>
<node CREATED="1458177489444" ID="ID_1075338030" MODIFIED="1461966901007">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      unterstelle Ziel als <i>konstruierbar</i>&#160;aus Payload
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1463691200369" ID="ID_424486867" MODIFIED="1575133334436" TEXT="&#xfc;berfl&#xfc;ssiges Konzept">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      da effektiv bereits der Setter diese Funktionalit&#228;t enthalten kann und mu&#223;,
    </p>
    <p>
      denn der Setter nimmt eine GenNode
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1458176048564" HGAP="-11" ID="ID_1832020270" MODIFIED="1512926192045" TEXT="Variationen" VSHIFT="4">
<node CREATED="1464117242535" ID="ID_1516044777" MODIFIED="1512926192045" TEXT="Binden auf eine klassische struct">
<node CREATED="1464117391859" ID="ID_1067159129" MODIFIED="1464117396430" TEXT="Setter weisen einfach zu"/>
<node CREATED="1464117397026" ID="ID_2633866" MODIFIED="1464117404773" TEXT="bereits die Neuanlage mu&#xdf; alles populieren"/>
</node>
<node CREATED="1464117250262" ID="ID_1940768897" MODIFIED="1512926192046" TEXT="Binden auf ein Objekt mit Initialisierungs-Semantik">
<node CREATED="1464117412896" ID="ID_203383408" MODIFIED="1464117450662" TEXT="Erzeugungs-Diff mu&#xdf; mit den Anforderungen des Konstruktors harmonieren"/>
<node CREATED="1464117487974" ID="ID_1233071043" MODIFIED="1464117499776" TEXT="R&#xfc;ckkehr zum Default wird nicht unterst&#xfc;tzt / abgebildet"/>
</node>
<node CREATED="1464117317517" ID="ID_680707594" MODIFIED="1512926192046" TEXT="Binden auf &quot;konzeptionelle&quot; Properties">
<node CREATED="1464117513722" ID="ID_272177291" MODIFIED="1464117537611" TEXT="der &quot;Key&quot; ist nur eine ID, um speziellen Zugriffsmechanismus auszul&#xf6;sen"/>
<node CREATED="1464117553885" ID="ID_116286814" MODIFIED="1464117567271" TEXT="u.U ist man &#xfc;berhaupt nur an sub-Mutation interessiert"/>
</node>
</node>
</node>
<node CREATED="1458178113697" FOLDED="true" HGAP="61" ID="ID_1703314461" MODIFIED="1576203843959" TEXT="Design-Schlu&#xdf;folgerungen" VSHIFT="48">
<node CREATED="1463687362843" HGAP="116" ID="ID_500584513" MODIFIED="1561827465553" TEXT="Eingrenzung" VSHIFT="-28">
<node CREATED="1463687373889" ID="ID_90253723" MODIFIED="1512926192049" TEXT="Art von Attributen">
<node CREATED="1463687402462" ID="ID_1494575064" MODIFIED="1533608413953" TEXT="Objekt-Feld">
<icon BUILTIN="forward"/>
<node CREATED="1463689795357" ID="ID_75375725" MODIFIED="1463689801592" TEXT="kann nur zugewiesen werden"/>
<node CREATED="1463689912853" ID="ID_18475641" MODIFIED="1561827465554">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <b>injectNew</b>&#160;tolerieren
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="help"/>
<node CREATED="1463690238314" ID="ID_644067355" MODIFIED="1575133334661" TEXT="eigentlich redundant">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ....man k&#246;nnte genausogut auch beim ersten Mal zuweisen
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1463690487032" ID="ID_348837680" MODIFIED="1575133334684" TEXT="Aber: isomorph zu GenNode">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      denn die Diff-Anwendung auf GenNode unterst&#252;tzt Zuweisung
    </p>
    <p>
      ausschlie&#223;lich bei schon existierenden Elementen. Demnach mu&#223; dort auch jedes Attribut
    </p>
    <ul>
      <li>
        entweder schon mit dem Konstruktor mit gegeben worden sein
      </li>
      <li>
        oder vorher einmal explizit eingef&#252;gt
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node CREATED="1463687408597" ID="ID_1363008589" MODIFIED="1533608413954" TEXT="optional Property">
<icon BUILTIN="stop-sign"/>
<node CREATED="1463688083594" ID="ID_11895941" MODIFIED="1463688087910" TEXT="fragw&#xfc;rdiger Nutzen"/>
<node CREATED="1463688088457" ID="ID_406507446" MODIFIED="1463688100116" TEXT="mutet &quot;theoretisch&quot; an"/>
<node CREATED="1463688147802" ID="ID_490338350" MODIFIED="1561827465554" TEXT="Alternative">
<node CREATED="1463688157472" ID="ID_489631928" MODIFIED="1463688173746" TEXT="auf &quot;mindere defaults&quot; setzen"/>
<node CREATED="1463688215752" ID="ID_1086442520" MODIFIED="1463688230896" TEXT="kann man einfach mitlaufen lassen"/>
<node CREATED="1463688184269" ID="ID_60958115" MODIFIED="1463688193863" TEXT="immer m&#xf6;gliche Degradierung des Konzepts"/>
<node CREATED="1463688232550" FOLDED="true" ID="ID_1915653142" MODIFIED="1561827483836" TEXT="fehlende Funktionalit&#xe4;t ersetzbar">
<icon BUILTIN="idea"/>
<node CREATED="1463688247980" ID="ID_105443751" MODIFIED="1463688253639" TEXT="durch komplettes Neukonstruieren"/>
<node CREATED="1463688254251" ID="ID_1822426402" MODIFIED="1463688262902" TEXT="durch eine explizite Reset-Methode"/>
</node>
</node>
</node>
<node CREATED="1463687451791" ID="ID_1708498507" MODIFIED="1533608413956" TEXT="Attribut-Map">
<icon BUILTIN="button_cancel"/>
<node CREATED="1463687461925" ID="ID_1513625124" MODIFIED="1463687496231" TEXT="hier ausgeschlossen">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1475506967550" ID="ID_1994979880" MODIFIED="1576203653282" TEXT="kann auf Basis des Collection-Binding emuliert werden">
<arrowlink COLOR="#9f96d9" DESTINATION="ID_453712930" ENDARROW="Default" ENDINCLINATION="478;123;" ID="Arrow_ID_1448345273" STARTARROW="None" STARTINCLINATION="479;26;"/>
<font NAME="SansSerif" SIZE="12"/>
</node>
<node CREATED="1463687484338" FOLDED="true" ID="ID_1430772851" MODIFIED="1576201413269" TEXT="k&#xf6;nnte f&#xfc;r GenNode relevant sein">
<icon BUILTIN="button_cancel"/>
<node CREATED="1576201374385" ID="ID_1783873229" MODIFIED="1576201388980" TEXT="nein war nicht notwendig"/>
<node CREATED="1576201389839" ID="ID_367063389" MODIFIED="1576201411474" TEXT="hab dort direkt mit zwei Collections gearbeitet">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      und die Keys der Attribute stecken in der GenNode selber!
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1576201416347" ID="ID_311569009" MODIFIED="1576201424054" TEXT="k&#xf6;nnte n&#xfc;tzlich sein f&#xfc;r Tests">
<node CREATED="1576201427058" ID="ID_1739941135" MODIFIED="1576204086360" TEXT="MockElm">
<arrowlink COLOR="#9f719e" DESTINATION="ID_1285123321" ENDARROW="Default" ENDINCLINATION="170;-624;" ID="Arrow_ID_23523127" STARTARROW="None" STARTINCLINATION="875;242;"/>
</node>
</node>
</node>
</node>
<node CREATED="1463691267608" ID="ID_659149145" MODIFIED="1512926192052" TEXT="Typisierung">
<node CREATED="1463691273431" ID="ID_366034077" MODIFIED="1463691276947" TEXT="pro Attribut"/>
<node CREATED="1463691277726" ID="ID_143796822" MODIFIED="1533608413957" TEXT="implizit">
<node CREATED="1463691290845" ID="ID_1709842697" MODIFIED="1464226408020" TEXT="das Setter-lambda nimmt einen Wert"/>
<node CREATED="1464226412567" ID="ID_98271808" MODIFIED="1561827465555" TEXT="der Wert-Typ mu&#xdf; einer der GenNode-Payload-Typen sein">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1464227158027" ID="ID_1268661637" MODIFIED="1464227176058" TEXT="TODO: dies zur compile-Zeit pr&#xfc;fen">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node CREATED="1463691359988" ID="ID_1757946882" MODIFIED="1464226506135" TEXT="der Setter mu&#xdf; jedwede weitere Konvertierung in andere Typen selber machen"/>
<node CREATED="1464226461041" ID="ID_17502992" MODIFIED="1464226487843" TEXT="die Implementierung greift auf den passenden GenNode-Payload zu"/>
<node CREATED="1463691372258" ID="ID_1258654359" MODIFIED="1463691550094" TEXT="alle Typkonvertierungs-Fragen auf client abgew&#xe4;lzt"/>
<node CREATED="1463691552514" ID="ID_1080486847" MODIFIED="1575133334971" TEXT="das ist gut so">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...denn wir vermeiden dadurch Komplexit&#228;t.
    </p>
    <p>
      Der gesendete Diff mu&#223; einfach passen!
    </p>
    <p>
      Genau deshalb haben wir auch in GenNode verschiedene Varianten des gleichen Grundtyps,
    </p>
    <p>
      damit wir nicht in die ganzen Ungewissheiten der widening conversions laufen!
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="ksmiletris"/>
</node>
</node>
</node>
<node CREATED="1463691680849" ID="ID_694873075" MODIFIED="1512926192054" TEXT="Striktheit">
<node CREATED="1463691716821" ID="ID_533693199" MODIFIED="1463691724243" TEXT="soweit einfach zu gew&#xe4;hrleisten">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1463691725515" ID="ID_1992867150" MODIFIED="1463691741484" TEXT="d.h. soweit nicht zus&#xe4;tzlicher State notwendig ist"/>
<node CREATED="1463691767421" ID="ID_245127286" MODIFIED="1463691780901" TEXT="Flexibilit&#xe4;t mu&#xdf; stets praktisch gerechtfertigt sein">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1463691793010" ID="ID_1913675552" MODIFIED="1512926192056" TEXT="F&#xe4;lle">
<node CREATED="1463691796825" ID="ID_826581062" MODIFIED="1575133335055" TEXT="Setter">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      d.h. der Attributwert hat Wertsemantik und wird einfach zugewiesen
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1463691804696" ID="ID_1828509710" MODIFIED="1575133335070" TEXT="Mutator">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...d.h. der Attributwert ist ein Objekt und damit ein nested Scope
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1463691807824" ID="ID_1263942224" MODIFIED="1463691814860" TEXT="keine Mischformen">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1463692054415" ID="ID_41980996" MODIFIED="1533608413958">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Problem: <i>immutable values</i>
    </p>
  </body>
</html></richcontent>
<node CREATED="1463692505987" ID="ID_391357034" MODIFIED="1463692515040" TEXT="wirklich ein Problem?">
<icon BUILTIN="help"/>
</node>
<node CREATED="1463692519993" ID="ID_909159783" MODIFIED="1463692550512" TEXT="Diff handelt ohnehin nur von ver&#xe4;nderbaren Dingen"/>
<node CREATED="1463692663853" ID="ID_721907669" MODIFIED="1561827465555" TEXT="Aber: wie &#xe4;ndert man die L&#xe4;nge eins Clips im UI?">
<node CREATED="1463695438538" ID="ID_1254169267" MODIFIED="1463695450620" TEXT="indem man sich auf ein Pr&#xe4;sentations-Grid bezieht"/>
<node CREATED="1463695454504" ID="ID_1309064983" MODIFIED="1463695469602" TEXT="und folglich nur Grid-Punkt-Koordinaten &#xe4;ndert"/>
<node CREATED="1463695472134" ID="ID_887292467" MODIFIED="1463695494714" TEXT="die eigentlichen Time-Entit&#xe4;ten leben in der Session, nicht im UI">
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1463695573392" ID="ID_160957596" MODIFIED="1561827465556" TEXT="im &#xdc;brigen: Problem des client-Codes">
<node CREATED="1463695588814" ID="ID_584993993" MODIFIED="1463695605096" TEXT="man kann einen time::Mutator erzeugen"/>
<node CREATED="1463695605708" ID="ID_1510075145" MODIFIED="1463695620401" TEXT="es gibt vorgefertigte EmbeddedMutators">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1463695633144" ID="ID_967555989" MODIFIED="1463695657196">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      das alles passiert dann <i>im</i>&#160;Lambda
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1463695640231" ID="ID_102452255" MODIFIED="1463695645090" TEXT="und ist somit nicht unser Problem"/>
</node>
</node>
<node CREATED="1463849505993" HGAP="42" ID="ID_1449079591" MODIFIED="1533608413963" VSHIFT="25">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Dilemma:&#160;<i>defaultable fields</i>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1463849536789" ID="ID_1111494683" MODIFIED="1561827465556" TEXT="ich m&#xf6;chte sie unterst&#xfc;tzen">
<node CREATED="1463849545196" ID="ID_1803662045" MODIFIED="1463849547316" TEXT="warum">
<icon BUILTIN="help"/>
</node>
</node>
<node CREATED="1463849556474" ID="ID_1880489788" MODIFIED="1575133335311" TEXT="Unterst&#xfc;tzung mu&#xdf; konsistent sein">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ....mit der ETD,
    </p>
    <p>
      bzw der Anwendung des selben Diffs auf eine GenNode-Struktur.
    </p>
    <p>
      
    </p>
    <p>
      Konsequenz: wenn ein feld <i>defaulted</i>&#160;war, und nun explizit gesetzt wird,
    </p>
    <p>
      mu&#223; dies als INS geschehen, denn eine Zuweisung an nicht aufgef&#252;hrtes Element ist verboten
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1463849716869" ID="ID_178223886" MODIFIED="1463849742347" TEXT="in der Bindung auf ein Objekt habe ich aber keine Attribut-Menge">
<icon BUILTIN="stop-sign"/>
</node>
<node CREATED="1463849761127" ID="ID_360434579" MODIFIED="1463849778956">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      folglich ein Problem,
    </p>
    <p>
      zu erkennen, wenn wir fertig sind
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1463849986345" ID="ID_1998073123" MODIFIED="1561827465557" TEXT="genauer...">
<node CREATED="1463850017285" ID="ID_550997337" MODIFIED="1463850033879" TEXT="wenn ein feld zwar gebunden ist"/>
<node CREATED="1463850034699" ID="ID_1498215556" MODIFIED="1463850053756" TEXT="aber bisher keinen Wert bekommen hat"/>
<node CREATED="1463850060359" ID="ID_1911362794" MODIFIED="1463850081800" TEXT="dann darf der Diff es auch nicht per pick auff&#xfc;hren"/>
<node CREATED="1463850086044" ID="ID_709383845" MODIFIED="1463850099574" TEXT="wenn dann alle mandatory fields behandelt sind"/>
<node CREATED="1463850100634" ID="ID_1773433984" MODIFIED="1575133335440" TEXT="glauben wir, wir sind noch nicht fertig">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ....weil das defaultable field noch nicht vom Diff ber&#252;hrt wurde.
    </p>
    <p>
      Aber es ist kein optional field, d.h. wir haben keine Flag, die es als &quot;defaulted&quot; kennzeichnet
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1463850138853" ID="ID_679588836" MODIFIED="1561827465558" TEXT="also ist das Grundproblem">
<icon BUILTIN="idea"/>
<node CREATED="1463850144180" ID="ID_1873291301" MODIFIED="1463850157454" TEXT="da&#xdf; der TreeMutator global stateless ist"/>
<node CREATED="1463850163257" ID="ID_824612635" MODIFIED="1463850171716" TEXT="denn er wird immer wieder neu konstruiert"/>
<node CREATED="1463850280082" ID="ID_947931218" MODIFIED="1463850294324">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      L&#246;sung: <b>alles immer explizit</b>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="help"/>
</node>
</node>
<node CREATED="1463934907474" ID="ID_813075700" MODIFIED="1561827465559" TEXT="Auswege">
<node CREATED="1463934969522" FOLDED="true" ID="ID_1350271693" MODIFIED="1561827483836" TEXT="keine optional fields">
<node COLOR="#a0345c" CREATED="1463937048979" ID="ID_897669733" MODIFIED="1463937120794" TEXT="widerspricht den Anforderungen">
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node CREATED="1463935105351" FOLDED="true" ID="ID_452667918" MODIFIED="1561827483836" TEXT="Protokoll-Auflagen">
<node CREATED="1463935116670" ID="ID_446798186" MODIFIED="1463935125304" TEXT="nach dem ersten Durchgang mu&#xdf; alles gebunden sein"/>
<node CREATED="1463935126461" ID="ID_1872628226" MODIFIED="1463935247552" TEXT="wenn ungebundene optionals, stets Abschlie&#xdf;en mit &quot;after END&quot;"/>
<node COLOR="#a0345c" CREATED="1463937146214" ID="ID_235743901" MODIFIED="1463937452255" TEXT="attraktiv, aber unehrlich">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      diese L&#246;sung war zun&#228;chst mein Favorit.
    </p>
    <p>
      Sie erscheint sehr elegant, weil man im TreeMutator <i>&#252;berhaupt nichts</i>&#160;daf&#252;r tun mu&#223;.
    </p>
    <p>
      Und die Zusatz-Forderung, da&#223; dann eben das Diff richtig gesendet werden mu&#223;,
    </p>
    <p>
      erscheint &quot;geschenkt&quot;, da wir ohnehin zun&#228;chst einmal die Diffs explizit im Code erzeugen.
    </p>
    <p>
      
    </p>
    <p>
      Aber, nach l&#228;ngerer &#220;berlegung wurde mir der Ansatz mehr und mehr zweifelhaft.
    </p>
    <p>
      Das ist die Art von Verkoppelungen, hier die implizite Annahme einer bestimmten Implementierung,
    </p>
    <p>
      die ein System unerkl&#228;rbar und schwer wartbar machen. Das ist die Art von &quot;Features&quot;,
    </p>
    <p>
      f&#252;r die man sich nach einiger Zeit entschuldigen mu&#223;.
    </p>
    <p>
      
    </p>
    <p>
      Und noch schlimmer: eigentlich l&#228;uft dieser Ansatz darauf hinaus, die Konsistenzpr&#252;fung
    </p>
    <p>
      am Ende zu deaktivieren. Nur wir machen das nicht explizit, sondern durch die Hintert&#252;r.
    </p>
    <p>
      Also dann besser klar und ehrlich!
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node CREATED="1463934995110" FOLDED="true" ID="ID_1861082499" MODIFIED="1561827483836" TEXT="dem Mutator sagen, was optional ist">
<node CREATED="1463935368308" ID="ID_246550021" MODIFIED="1463935375919" TEXT="was grunds&#xe4;tzlich optional sein kann"/>
<node CREATED="1463935377123" ID="ID_965278928" MODIFIED="1463935387005" TEXT="was aktuell nicht gebunden ist"/>
<node COLOR="#a0345c" CREATED="1463937178689" ID="ID_1202653468" MODIFIED="1463937550363" TEXT="Over-Engineering / L&#xf6;sung eines nicht vorhandenen Problems">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...denn unter dem Strich w&#252;rden wir hiermit volle Unterst&#252;tzung f&#252;r opitonale Attribute einf&#252;hren,
    </p>
    <p>
      also eine Attribut-Semantik auf eine Feld-Semantik draufpflanzen.
    </p>
    <p>
      Aber in der vorausgegangenen Analyse habe ich mich schon davon &#252;berzeugt,
    </p>
    <p>
      da&#223; wir keine Attribut-Semantik brauchen. Und wenn doch, dann bietet das Diff-System
    </p>
    <p>
      immer noch die M&#246;glichkeit, die Attribute explizit als Sammlung darzustellen.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node CREATED="1463935030953" ID="ID_1231044846" MODIFIED="1463938073583">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      auf die <i>empty</i>-Pr&#252;fung am Ende verzichten
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#f36478" DESTINATION="ID_644127921" ENDARROW="Default" ENDINCLINATION="181;0;" ID="Arrow_ID_1868541511" STARTARROW="None" STARTINCLINATION="181;0;"/>
<icon BUILTIN="forward"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1463937883299" HGAP="85" ID="ID_8371094" MODIFIED="1533608413968" TEXT="Konsequenzen" VSHIFT="26">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1463937922318" ID="ID_795883612" MODIFIED="1561827465561" TEXT="isEmpty">
<node CREATED="1463937972255" ID="ID_644127921" MODIFIED="1575133335596" TEXT="mu&#xdf; umdefiniert werden">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      denn in den meisten, wichtigsten F&#228;llen get es um einen non-empty-check,
    </p>
    <p>
      bevor ein anderes Verifikations-Pr&#228;dikat angewendet wird.
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#f36478" DESTINATION="ID_644127921" ENDARROW="Default" ENDINCLINATION="181;0;" ID="Arrow_ID_1868541511" SOURCE="ID_1231044846" STARTARROW="None" STARTINCLINATION="181;0;"/>
</node>
<node CREATED="1463937980222" ID="ID_932494564" MODIFIED="1463937986216" TEXT="kann nicht mehr negativ gepr&#xfc;ft werden"/>
<node CREATED="1463937988180" ID="ID_653804102" MODIFIED="1463938000454" TEXT="das gilt leider f&#xfc;r alle Bindings"/>
<node CREATED="1464212233893" ID="ID_823232649" MODIFIED="1464212254420" TEXT="umdrehen in: hasSrc">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1463938033527" FOLDED="true" ID="ID_697212736" MODIFIED="1561827483836" TEXT="neue Primitive: completeScope">
<icon BUILTIN="button_ok"/>
<node CREATED="1464113590258" ID="ID_1258294190" MODIFIED="1464113600260" TEXT="auch ein hook f&#xfc;r Aufr&#xe4;um-Arbeiten"/>
<node CREATED="1464113600897" ID="ID_671689357" MODIFIED="1464113642335" TEXT="return true -- wenn alles sauber ist"/>
<node CREATED="1464113642899" ID="ID_1915175788" MODIFIED="1464113648966" TEXT="kann NOP implementiert werden"/>
</node>
</node>
<node CREATED="1464114047781" ID="ID_1325307049" MODIFIED="1561827465561" TEXT="reduzierte Verifikation">
<icon BUILTIN="yes"/>
<node CREATED="1464114078672" ID="ID_1492664671" MODIFIED="1464114085171" TEXT="nicht bekannte Felder werden erkannt"/>
<node CREATED="1464114086111" ID="ID_592980670" MODIFIED="1464114139188" TEXT="der Versuch von Umordnungen wird erkannt"/>
<node COLOR="#990000" CREATED="1464114156574" ID="ID_270104965" MODIFIED="1464114190655" TEXT="fehlende Angaben werden nicht bemerkt"/>
</node>
</node>
</node>
</node>
<node CREATED="1461897111747" HGAP="79" ID="ID_802377541" MODIFIED="1512926192064" TEXT="Ein Attribut oder viele Attribute" VSHIFT="17">
<icon BUILTIN="help"/>
<node CREATED="1463696053440" ID="ID_1754643119" MODIFIED="1464226693401" TEXT="Standardfall: eine kleine Zahl von Attributen ">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1463696031715" ID="ID_1260056252" MODIFIED="1464226781810" TEXT="&quot;ein Attribut&quot; ist aber der nat&#xfc;rliche Basisfall f&#xfc;r die Implementierung"/>
<node CREATED="1463695809296" ID="ID_1828617017" MODIFIED="1464226736308" TEXT="problematisch sind Selektor und (ignorierte) Reihenfolge">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1464226806914" HGAP="25" ID="ID_1600614692" MODIFIED="1512926192065" TEXT="Selector" VSHIFT="5">
<icon BUILTIN="button_cancel"/>
<node CREATED="1464226813953" ID="ID_489744078" MODIFIED="1464226834307" TEXT="fest verdrahtet: istAttribut"/>
<node CREATED="1464226834831" ID="ID_1398159123" MODIFIED="1464226848617" TEXT="Verzicht auf einen konfigurierbaren Selector"/>
<node CREATED="1464226849277" ID="ID_1083142087" MODIFIED="1464226870862" TEXT="im Zweifelsfall: anderen &#xbb;onion-Layer&#xab; verwenden"/>
<node CREATED="1464226871930" ID="ID_1656706742" MODIFIED="1464226897116" TEXT="gut zur Reduktion der Komplexit&#xe4;t">
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node CREATED="1461894614295" ID="ID_665631895" MODIFIED="1512926192065" TEXT="Attribut-Glieder">
<node CREATED="1461894619054" ID="ID_1204916244" MODIFIED="1512926192066" TEXT="implementieren die API-Primitive">
<node CREATED="1461894676063" ID="ID_1957652861" MODIFIED="1461894678714" TEXT="durch Aktion"/>
<node CREATED="1461894679190" ID="ID_1193521445" MODIFIED="1461894683857" TEXT="durch Ignorieren"/>
<node CREATED="1461894684326" ID="ID_182706257" MODIFIED="1461894692888" TEXT="als Fehler"/>
</node>
<node CREATED="1461894634029" ID="ID_634211646" MODIFIED="1464226938524" TEXT="f&#xfc;gen sich nat&#xfc;rlich durch Layering zusammen"/>
<node CREATED="1461894666248" ID="ID_1466917621" MODIFIED="1464226987286" TEXT="Setter / Mutator durch Template-Spezialisierung"/>
<node CREATED="1464226992090" ID="ID_567861080" MODIFIED="1512926192066" TEXT="lineare Suche">
<icon BUILTIN="button_ok"/>
<node CREATED="1464227021205" ID="ID_1227031045" MODIFIED="1464227032960" TEXT="akzeptabel f&#xfc;r &lt; 30 Attribute"/>
<node CREATED="1464227042771" ID="ID_581148359" MODIFIED="1575133335969" TEXT="vermeidet heap-basierte Collection">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      jedwede &quot;bessere&quot; Implementierung mu&#223; zwingend einen Container verwenden,
    </p>
    <p>
      der dann die Lambdas f&#252;r die einzelnen Setter auf den Heap legt.
    </p>
    <p>
      Das ist hier tats&#228;chlich viel schlechter, als das bischen lineare Suche
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1464227213180" FOLDED="true" HGAP="29" ID="ID_1322038165" MODIFIED="1576200469487" TEXT="Implementierung" VSHIFT="66">
<icon BUILTIN="button_ok"/>
<node CREATED="1464227218795" ID="ID_240211297" MODIFIED="1575133336008" TEXT="ist grunds&#xe4;tzlich &quot;schon da&quot;">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ....durch meinen allerersten Draft,
    </p>
    <p>
      f&#252;r den ich damals gezwungen war, die GenNode zu erfinden :)
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
<node COLOR="#338800" CREATED="1464227273572" ID="ID_641114043" MODIFIED="1465428151809" TEXT="TODO: alten Testfall anpassen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1464227285562" ID="ID_1467378259" MODIFIED="1465428159480" TEXT="TODO: Setter aus erstem Entwurf vom TreeMutator-API entfernen">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1464227227610" ID="ID_1283798929" MODIFIED="1464227235981" TEXT="aber: alle Primitive durchimplementieren"/>
<node COLOR="#338800" CREATED="1464386998240" ID="ID_145703376" MODIFIED="1512926192069" TEXT="key: EntryID">
<icon BUILTIN="button_ok"/>
<node CREATED="1464396284551" ID="ID_1820812766" MODIFIED="1512926192069" TEXT="Problem: sanitise">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1464396756424" ID="ID_292993552" MODIFIED="1464397132659" TEXT="nur US-ASCII">
<icon BUILTIN="info"/>
</node>
<node CREATED="1464396761967" ID="ID_1853390961" MODIFIED="1464397146966" TEXT="erweiterte Zeichen bedingen Locale">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1464396769974" ID="ID_1765409740" MODIFIED="1533608413970" TEXT="und welche dann??">
<node CREATED="1464396835581" ID="ID_880270228" MODIFIED="1464396859658" TEXT="System-Locale: Recipe for Desaster"/>
<node CREATED="1464396793123" ID="ID_84577480" MODIFIED="1464396815972" TEXT="en_US.UTF-8"/>
<node CREATED="1464396816696" ID="ID_1549234272" MODIFIED="1464396866584" TEXT="Einschr&#xe4;nkung nicht sinnvoll zu begr&#xfc;nden">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node CREATED="1464396320922" ID="ID_557201534" MODIFIED="1512926192070" TEXT="GenNode umgeht das (bewu&#xdf;t)">
<node CREATED="1464396885391" ID="ID_1826102565" MODIFIED="1464397164031" TEXT="Begr&#xfc;ndung: interne Schnittstelle">
<icon BUILTIN="info"/>
</node>
<node CREATED="1464396899252" ID="ID_238800946" MODIFIED="1464396964843" TEXT="verwendet bereits valide Symbole">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1464396908371" ID="ID_714542679" MODIFIED="1464397170109" TEXT="vermeidet den Performance overhead">
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node CREATED="1464397008078" ID="ID_1318792158" MODIFIED="1464397019505" TEXT="soll sich symmetrisch verhalten">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1464397020996" ID="ID_1539077842" MODIFIED="1512926192070" TEXT="L&#xf6;sung: Variante f&#xfc;r EntryID">
<icon BUILTIN="idea"/>
<node CREATED="1464397032747" ID="ID_52447284" MODIFIED="1575133336250" TEXT="f&#xfc;r interne Schnittstellen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      gleiches Argument...
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1464397039834" ID="ID_842182814" MODIFIED="1575133336266" TEXT="verwendet Symbol-Datentyp">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...damit unterstellen wir, da&#223; sp&#228;ter eine Symbol-Tabelle aufgebaut wird.
    </p>
    <p>
      Dann kann man sich immer noch &#252;berlegen, ob man dann <i>an dieser Stelle</i>&#160;bereinigt
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node CREATED="1464387004423" ID="ID_1665317497" MODIFIED="1512926192071" TEXT="Fehlerbehandlung">
<node CREATED="1464387034539" ID="ID_368572405" MODIFIED="1512926192071" TEXT="injectNew">
<icon BUILTIN="button_ok"/>
<node CREATED="1464387043146" ID="ID_1626945131" MODIFIED="1465045655821" TEXT="API erweitern">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1464387046769" ID="ID_572522334" MODIFIED="1465045658691" TEXT="R&#xfc;ckgabewert">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1464387055632" ID="ID_1950008212" MODIFIED="1465045661504" TEXT="andere Layer fragen">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1464387071669" ID="ID_1015524397" MODIFIED="1512926192072" TEXT="skip">
<icon BUILTIN="button_cancel"/>
<node CREATED="1464387092091" ID="ID_1520028053" MODIFIED="1464387095959" TEXT="hat kein Argument"/>
<node CREATED="1464387096498" ID="ID_1251857254" MODIFIED="1464387158085" TEXT="kann daher Selektor nicht ausf&#xfc;hren">
<icon BUILTIN="smily_bad"/>
</node>
<node CREATED="1464387102850" ID="ID_1482608502" MODIFIED="1464387148396" TEXT="Fehlererkennung nicht m&#xf6;glich">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node CREATED="1464386771270" ID="ID_166516904" MODIFIED="1512926192072" TEXT="setter vs mutator">
<node CREATED="1464386870265" ID="ID_1508130332" MODIFIED="1464387168773" TEXT="Metaprogrammierung"/>
<node CREATED="1464386878983" ID="ID_1309713526" MODIFIED="1464386887354" TEXT="Code selber mu&#xdf; es implizit wissen"/>
<node CREATED="1464386904676" ID="ID_1123923779" MODIFIED="1512926192073" TEXT="entweder-oder">
<icon BUILTIN="help"/>
<node CREATED="1464386910099" ID="ID_1644956745" MODIFIED="1464386913750" TEXT="nicht notwendig"/>
<node CREATED="1464386929745" ID="ID_1569654621" MODIFIED="1464386936708" TEXT="es greift der Layer, der es kann"/>
</node>
<node CREATED="1464483482949" HGAP="32" ID="ID_1655303588" MODIFIED="1512926192073" TEXT="Code-Struktur" VSHIFT="15">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1464483497524" ID="ID_1510305109" MODIFIED="1464483503639" TEXT="Basisklasse + Overlay"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1464483504155" ID="ID_1310567997" MODIFIED="1533608413971" TEXT="unsch&#xf6;n und verwirrend">
<node CREATED="1464483533863" ID="ID_1330926314" MODIFIED="1464483617082" TEXT="mehrfach geschachtelte Typdefinitionen">
<icon BUILTIN="smily_bad"/>
</node>
<node CREATED="1464483544429" ID="ID_1556868157" MODIFIED="1575133336535" TEXT="Problem mit der EntryID">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      in einem Fall kann man sie aus der Closure abgreifen
    </p>
    <p>
      im anderen Fall mu&#223; es doch der Client leisten.
    </p>
    <p>
      Keine klare Linie
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="smily_bad"/>
</node>
<node CREATED="1464483601318" ID="ID_244819234" MODIFIED="1464483610226" TEXT="gibt es &#xfc;berhaupt eine Alternative">
<icon BUILTIN="help"/>
</node>
<node CREATED="1465041597680" ID="ID_379389753" MODIFIED="1561827465568" TEXT="Abw&#xe4;gung">
<node CREATED="1465040677452" ID="ID_1570943594" MODIFIED="1575133336577" TEXT="OK: Klassen sind geschnitten nach Belang">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...das hei&#223;t, es gibt nur minimale, themantische &#220;berlappung.
    </p>
    <p>
      Also ist die Verwendung von Vererbung hier sogar die <i>beste</i>&#160;L&#246;sung
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1465040780654" ID="ID_1719566689" MODIFIED="1465040812722">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Geschachtelte Typdefs lassen sich vermeiden:
    </p>
    <p>
      BareEntryID speichern!
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1465040890735" ID="ID_530818537" MODIFIED="1575133336607" TEXT="API f&#xfc;r die ID ist ein Dilemma">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...das hei&#223;t, wie rum man es auch aufl&#246;st, wird die L&#246;sung auf einer Seite schlechter
    </p>
    <ul>
      <li>
        wenn wir f&#252;r den Payload-Typ einen Typ-Parameter nehmen, bl&#228;hen wir den Standard-Fall (Setter) auf
      </li>
      <li>
        andererseits <i>ist es unbstreitbar einfach so,</i>&#160;da&#223; f&#252;r den Mutator-Builder die Typisierung komplett implizit ist, das mu&#223; die Closure mit sich&#160;selbst ausmachen, einfach indem in der Closure ein geschachtelter TreeMutator konstruiert wird, der eben mit diesem impliziten Kind-Typ umgehen kann.
      </li>
      <li>
        wenn wir stattdessen nur einen Key-String speichern, wird zum Einen die Match-Pr&#252;fung aufwendiger (Stringvergleich statt Vergleich von Hashes), und au&#223;erdem wird ein Typ-Mismatch nicht mehr auf der Ebene der Verb-Anwendung entdeckt und entsprechend gekennzeichnet, sondern wir hoffen, da&#223; es dann innerhalb der Closure zu einem Fehlzugriff auf die Payload der GenNode kommt. Noch schlimmer im Mutator-Fall, da sind wir dann schon im geschachtelten Scope und hoffen, da&#223; dann der eingeschachtelte Mutator irgendwo auf Widerspruch l&#228;uft.
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="stop-sign"/>
</node>
<node CREATED="1465041611663" ID="ID_1520147808" MODIFIED="1575133336640" TEXT="man kann auf DSL-Ebene mehrere Alternativen anbieten">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...gedacht f&#252;r verschiedene UseCases.
    </p>
    <ul>
      <li>
        Fall 1: String-Key und der Typ mu&#223; irgendwie implizit/explizit gegeben sein
      </li>
      <li>
        Fall2: GenNodeID
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1465139405203" ID="ID_208234192" MODIFIED="1575133336658" TEXT="...hey, der Typ ist implizit klar! es ist immer Rec">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...die offensichtlichsten Dinge &#252;bersieht man nur zu leicht!!!!!
    </p>
    <p>
      Da es ein nested scope ist, ist es immer ein Objekt,
    </p>
    <p>
      also repr&#228;sentiert als Rec&lt;GenNode&gt;
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1457232746179" FOLDED="true" ID="ID_35428480" MODIFIED="1576200552588" TEXT="Rec&lt;GenNode&gt;" VSHIFT="11">
<icon BUILTIN="full-4"/>
<node COLOR="#435e98" CREATED="1464305377785" ID="ID_1029321620" MODIFIED="1576200521001" TEXT="Vor&#xfc;berlegungen">
<node CREATED="1464305417066" ID="ID_227151593" MODIFIED="1512926192077" TEXT="w&#xfc;nschenswert">
<icon BUILTIN="help"/>
<node CREATED="1464305708891" ID="ID_273948396" MODIFIED="1512926192077" TEXT="Vorteile">
<node CREATED="1464305431944" ID="ID_1510210328" MODIFIED="1464305641440" TEXT="den RecordContentMutator loswerden"/>
<node CREATED="1464305660018" ID="ID_33964570" MODIFIED="1464305687458" TEXT="die speziellen Regeln f&#xfc;r Attribute / Kinder loswerden"/>
</node>
<node CREATED="1464305712115" ID="ID_937724979" MODIFIED="1512926192078" TEXT="Nachteile">
<node CREATED="1464305722209" ID="ID_815912844" MODIFIED="1464305733108" TEXT="man braucht immer einen TreeMutator"/>
<node CREATED="1464305735032" ID="ID_146394449" MODIFIED="1464305745786" TEXT="das ist sehr komplexer Code"/>
<node CREATED="1464305756189" ID="ID_239782768" MODIFIED="1464305766735" TEXT="zus&#xe4;tzliche Indirektion / VTable"/>
<node CREATED="1464305800207" ID="ID_1466205270" MODIFIED="1464305818736" TEXT="das &quot;Backdoor&quot; in Record::Mutator bleibt bestehen"/>
</node>
<node CREATED="1464305842833" ID="ID_1675290116" MODIFIED="1525124215201" TEXT="Abw&#xe4;gung">
<node CREATED="1464305847001" ID="ID_674702374" MODIFIED="1533608413973" TEXT="Aufwand">
<node CREATED="1464305850440" ID="ID_1548441801" MODIFIED="1561827465572" TEXT="dedizierte Impl">
<node CREATED="1464305871806" ID="ID_202305183" MODIFIED="1464305874249" TEXT="ein Stack"/>
<node CREATED="1464306044598" FOLDED="true" ID="ID_905327861" MODIFIED="1561827483836" TEXT="pro Stackframe">
<node CREATED="1464305896754" ID="ID_1490549138" MODIFIED="1464305908965" TEXT="ref Rec::Mutator"/>
<node CREATED="1464305910520" FOLDED="true" ID="ID_1267020121" MODIFIED="1561827482931" TEXT="Puffer: RecordContentMutator">
<node CREATED="1464305921943" ID="ID_884726801" MODIFIED="1464305927370" TEXT="Vector Attribute"/>
<node CREATED="1464305927910" ID="ID_1753475894" MODIFIED="1464305933817" TEXT="Vector Kinder"/>
<node CREATED="1464305989422" ID="ID_312208418" MODIFIED="1464305994825" TEXT="ein vector::iterator"/>
</node>
</node>
</node>
<node CREATED="1464305854040" ID="ID_1249348832" MODIFIED="1561827465573" TEXT="per TreeMutator">
<node CREATED="1464305876237" ID="ID_1159160542" MODIFIED="1464305878376" TEXT="ein Stack"/>
<node CREATED="1464306061588" FOLDED="true" ID="ID_746468831" MODIFIED="1561827483836" TEXT="pro Stackframe">
<node CREATED="1472781610135" FOLDED="true" ID="ID_784986236" MODIFIED="1561827482931">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <i>zwei </i>Bindings
    </p>
  </body>
</html></richcontent>
<node CREATED="1472781728046" ID="ID_642515736" MODIFIED="1472781744825" TEXT="ref Quell-Vector"/>
<node CREATED="1472781629036" ID="ID_1770081141" MODIFIED="1472781751975" TEXT="Puffer: Vector GenNode"/>
<node CREATED="1472781648571" ID="ID_129841438" MODIFIED="1472781677753" TEXT="ein zugeh&#xf6;riger Iterator"/>
</node>
</node>
</node>
</node>
<node CREATED="1472781868035" HGAP="40" ID="ID_1179886087" MODIFIED="1533608413976" TEXT="Unterschied minimal" VSHIFT="-3">
<node CREATED="1472781885352" ID="ID_563320689" MODIFIED="1472781888836" TEXT="zwei Iteratoren"/>
<node CREATED="1472781889328" ID="ID_852723828" MODIFIED="1472781899051" TEXT="zwei Quell-Referenzen"/>
</node>
</node>
</node>
<node CREATED="1472653531806" HGAP="76" ID="ID_1315184227" MODIFIED="1512926192083" TEXT="Ansatz" VSHIFT="-10">
<node CREATED="1472653541019" ID="ID_961055257" MODIFIED="1472653569512">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <i>zwei</i>&#160;Collection-Bindings
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1472653548905" ID="ID_259592710" MODIFIED="1472653553124" TEXT="speziell konfiguriert"/>
<node CREATED="1472654905416" ID="ID_1967321401" MODIFIED="1472654910067" TEXT="minimaler Code"/>
</node>
</node>
<node COLOR="#338800" CREATED="1464305382975" FOLDED="true" ID="ID_692712808" MODIFIED="1576200534494" TEXT="Implementierung">
<icon BUILTIN="button_ok"/>
<node CREATED="1457742036967" ID="ID_1625216231" MODIFIED="1512926192084" TEXT="Attribute">
<node CREATED="1472781560508" ID="ID_1860994485" MODIFIED="1472781584718" TEXT="Selector: isNamed"/>
<node CREATED="1472930964666" ID="ID_737827437" MODIFIED="1473014470867" TEXT="Behandlung f&#xfc;r Typ-Feld"/>
</node>
<node CREATED="1457742040782" ID="ID_1865296889" MODIFIED="1457742042442" TEXT="Kinder"/>
<node CREATED="1472781922380" ID="ID_26493762" MODIFIED="1512926192085" TEXT="Problem: rekursiver Mutator">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1472781942185" ID="ID_438122395" MODIFIED="1472781946644" TEXT="rein code-technisches Problem"/>
<node CREATED="1472781957063" ID="ID_1039824965" MODIFIED="1472781964177" TEXT="durch forward-decl aufzul&#xf6;sen"/>
<node CREATED="1472781977156" ID="ID_1725507816" MODIFIED="1472782008196" TEXT="erfordert Umbau der Code-Struktur">
<icon BUILTIN="smily_bad"/>
</node>
</node>
<node CREATED="1472930979111" ID="ID_1556242161" MODIFIED="1512926192086" TEXT="Problem: Typ-Feld">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1472931031568" ID="ID_1654000393" MODIFIED="1512926192087" TEXT="Kompromi&#xdf; in GenNode">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1472931061612" ID="ID_603006916" MODIFIED="1472931066111" TEXT="halbherziges Design"/>
<node CREATED="1472931066635" ID="ID_1880164855" MODIFIED="1472931074166" TEXT="wollte nicht wirklich Metadaten einf&#xfc;hren"/>
<node CREATED="1472931074754" ID="ID_660840872" MODIFIED="1472931083789" TEXT="hab&apos;s daher dann fest verdrahtet"/>
<node CREATED="1472931084281" ID="ID_1848053126" MODIFIED="1472931095987" TEXT="erlaube &quot;Abk&#xfc;rzung&quot; &#xfc;ber das Typ-Attribut"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1472931096647" ID="ID_1241833509" MODIFIED="1575133337240" TEXT="aber nicht wirklich konsequent...">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...diese Abk&#252;rzung ist nur auf den Konstruktur aufgepflanzt,
    </p>
    <p>
      nicht aber in der eigentlichen Implementierung verankert.
    </p>
    <p>
      Das wollte ich nicht, weil ich l&#228;ngerfristig doch davon ausgehe,
    </p>
    <p>
      da&#223; es einfach einen Metadaten-Scope gibt
    </p>
    <p>
      
    </p>
    <p>
      Die Inkonsequenz nun ist, da&#223; im Rec::Mutator keine Magie daf&#252;r vorgesehen ist
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1472931195618" ID="ID_1254454459" MODIFIED="1512926192087" TEXT="aber Meta-Attribut f&#xfc;r Diff">
<node CREATED="1472931234165" ID="ID_1010565523" MODIFIED="1472931239279" TEXT="geht nicht anders"/>
<node CREATED="1472931241027" ID="ID_1886048314" MODIFIED="1472931247263" TEXT="direkte Folge des Objekt-Modells"/>
<node CREATED="1472931391998" ID="ID_1851028882" MODIFIED="1533608413977" TEXT="betrifft">
<node CREATED="1472931395526" ID="ID_147828188" MODIFIED="1472931403393" TEXT="ins(type = X)"/>
<node CREATED="1472931404525" ID="ID_727467625" MODIFIED="1561827465582" TEXT="set(type = X)">
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1472931416323" ID="ID_780639854" MODIFIED="1472931434577" TEXT="AUA: bisher &#xfc;bersehen">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
</node>
<node CREATED="1472931275575" ID="ID_36604643" MODIFIED="1512926192088" TEXT="Collection-Binding">
<node CREATED="1472931287229" ID="ID_1748994811" MODIFIED="1472931308630" TEXT="klinkt sich unterhalb vom Mutator ein"/>
<node CREATED="1472931309122" ID="ID_669812273" MODIFIED="1472931324740" TEXT="umgeht den Mutator"/>
<node CREATED="1472931326512" ID="ID_1698822987" MODIFIED="1472931332867" TEXT="arbeitet direkt auf den Collections"/>
<node CREATED="1472931333975" ID="ID_1945169133" MODIFIED="1472931342433" TEXT="reicht Werte unbetrachtet 1:1 durch"/>
</node>
<node CREATED="1472931711315" ID="ID_1325514083" MODIFIED="1512926192089" TEXT="L&#xf6;sung">
<icon BUILTIN="idea"/>
<node CREATED="1472931716482" ID="ID_1029866083" MODIFIED="1575133337450" TEXT="Lambdas nicht ausreichend">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...mit den Lambdas kann ich nur die Sicht auf die Werte steuern,
    </p>
    <p>
      nicht aber das eigentliche Verhalten des Bindings.
    </p>
    <p>
      
    </p>
    <p>
      Denn die Lambdas haben keinen Zugriff auf die Ziel-Datenstruktur!
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1472931806958" ID="ID_1424193694" MODIFIED="1472931822190" TEXT="m&#xfc;&#xdf;te Binding-Operationen anpassen">
<icon BUILTIN="smily_bad"/>
</node>
<node COLOR="#338800" CREATED="1472931829467" ID="ID_1855554360" MODIFIED="1533608413978" STYLE="fork" TEXT="Dekorator">
<icon BUILTIN="button_ok"/>
<node CREATED="1472934618917" ID="ID_1788521857" MODIFIED="1472934744607" TEXT="legt sich um den &#xe4;u&#xdf;eren Collection-Binding-Layer"/>
<node CREATED="1472934635426" ID="ID_1872796326" MODIFIED="1472934744607" TEXT="greift bei der injectNew und assignElm-Operation ein"/>
<node CREATED="1472934671013" ID="ID_900235786" MODIFIED="1472934744607" TEXT="braucht Zugang zum Rec::Mutator">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1472934695226" ID="ID_53406841" MODIFIED="1472934744607" TEXT="Code wird schwer lesbar"/>
<node CREATED="1472934710032" ID="ID_1169855604" MODIFIED="1561827465582" TEXT="umformulieren">
<icon BUILTIN="button_ok"/>
<node CREATED="1473014547678" ID="ID_1416366234" MODIFIED="1473014763323" TEXT="geht nur bedingt">
<icon BUILTIN="smily_bad"/>
</node>
<node CREATED="1473014552677" ID="ID_198496738" MODIFIED="1575133337582" TEXT="Problem ist der Builder">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...wir wollen mehrfach geschichtete TreeMutator-Subklassen,
    </p>
    <p>
      aber tats&#228;chlich liefert jeder DSL-Aufruf einen Builder&lt;TreeMutator&lt;...&gt;&gt;.
    </p>
    <p>
      Die normalen DSL-Aufrufe sind eben genau so gestrickt, da&#223; jeweils der oberste Builder entfernt wird,
    </p>
    <p>
      ein neuer Layer dar&#252;bergebaut und das Ganze wieder in einen Builder eingewickelt wird.
    </p>
    <p>
      
    </p>
    <p>
      Dadurch ist es schwer bis unm&#246;glich (wg. den Lambdas), den resultierenden Typ anzuschreiben.
    </p>
    <p>
      Daher bin ich zwingend auf Wrapper-Funktionen angewiesen, die diesen resultierenden Typ
    </p>
    <p>
      vom konkreten Aufruf wieder &quot;abgreifen&quot;. Ich kann daher nicht die DSL-Notation verwenden,
    </p>
    <p>
      um den Dekorator f&#252;r die Behandlung des Typ-Feldes einzubringen.
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1472782025318" ID="ID_806642349" MODIFIED="1512926192091" TEXT="Standard-Lambdas f&#xfc;r GenNode">
<node CREATED="1472782055217" ID="ID_748812918" MODIFIED="1472782069243" TEXT="Selector -&gt; ID-Vergleich"/>
<node CREATED="1472782069784" ID="ID_1481800599" MODIFIED="1472782075874" TEXT="Constructor -&gt; copy"/>
<node CREATED="1472782077062" ID="ID_105976983" MODIFIED="1472782092512" TEXT="Setter -&gt; assign DataCap"/>
<node CREATED="1472782093956" ID="ID_1112310070" MODIFIED="1472782120696">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Mut -&gt; <font color="#e43e2a">Rekursion</font>
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1472830089042" ID="ID_680894810" MODIFIED="1512926192092" TEXT="until after Ref::ATTRIBS">
<node CREATED="1472830107591" ID="ID_1855713162" MODIFIED="1472830118609" TEXT="mu&#xdf; Semantik im TreeMutator API korrigieren"/>
<node CREATED="1472830131284" ID="ID_362004035" MODIFIED="1472830153132" TEXT="Problem: nur die Implementierung wei&#xdf;, was ein &quot;Attribut&quot; ist"/>
<node CREATED="1472830122757" ID="ID_127070842" MODIFIED="1472830129487" TEXT="brauche Unterst&#xfc;tzung vom Selector"/>
<node CREATED="1472830164119" ID="ID_894543850" MODIFIED="1512926192093" TEXT="L&#xf6;sungsansatz">
<node CREATED="1472830177221" ID="ID_1697807817" MODIFIED="1472830181729" TEXT="wie Ref::END"/>
<node CREATED="1472830182101" ID="ID_698099374" MODIFIED="1472830195511" TEXT="aber nur einige Layer reagieren darauf"/>
<node CREATED="1472830199203" ID="ID_321429589" MODIFIED="1533608413978" TEXT="default-return mu&#xdf; true sein">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1472830226455" ID="ID_416259906" MODIFIED="1472830232658" TEXT="aber nat&#xfc;rlich nur wenn leer..."/>
<node CREATED="1472830286462" ID="ID_105472568" MODIFIED="1472830298035" TEXT="Einsicht: END und ATTRIBS k&#xf6;nnen nicht scheitern">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1472830304844" ID="ID_1240058977" MODIFIED="1472840380057" TEXT="...es geht nur um das Layer-Chaining"/>
</node>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#4a273f" CREATED="1461882151581" HGAP="29" ID="ID_316724242" MODIFIED="1512926192094" TEXT="Selector integrieren" VSHIFT="23">
<icon BUILTIN="button_ok"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1461967533959" ID="ID_1695271883" MODIFIED="1468761946715" TEXT="korrekte logische Verkettung"/>
<node CREATED="1461967541166" ID="ID_1781788406" MODIFIED="1468761946715" TEXT="mu&#xdf; von jeder Primitive unterst&#xfc;tzt werden">
<icon BUILTIN="messagebox_warning"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1461967571042" ID="ID_1117096619" MODIFIED="1512926192095">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <b>Problem</b><font color="#4e094b">: partielle Ordnung</font>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1461967744747" ID="ID_1780100456" MODIFIED="1468761946715" TEXT="Diff setzt totale Ordnung voraus"/>
<node CREATED="1461967765080" ID="ID_1598311122" MODIFIED="1468761946715" TEXT="verletzt durch &#xbb;onion-layer&#xab;"/>
<node CREATED="1461967839110" ID="ID_1596717420" MODIFIED="1512926192095" TEXT="Relevanz">
<icon BUILTIN="help"/>
<node CREATED="1461967850797" ID="ID_1675158405" MODIFIED="1468761946715" TEXT="bei Einzelschritt irrelevant"/>
<node CREATED="1461967876521" ID="ID_744310541" MODIFIED="1512926192096" TEXT="zwingend bei &quot;AFTER&quot;-Verb">
<node CREATED="1461967962814" ID="ID_517095615" MODIFIED="1575133337967" TEXT="weil das Zwischenschritte &#xfc;berspringt">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...das hei&#223;t,
    </p>
    <p>
      das AFTER-Verb wird &#252;bersetzt in ein skip_until,
    </p>
    <p>
      und das l&#228;uft dann entweder in jedem Layer
    </p>
    <p>
      oder nur in dem Layer, der auf die Spec pa&#223;t.
    </p>
    <p>
      In jedem Fall ger&#228;t dadurch die relative Verzahnung der Elemente untereinander aus dem Takt
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1461967992042" ID="ID_315533174" MODIFIED="1468761946715" TEXT="nur ein Ausweg..."/>
<node CREATED="1461968004720" ID="ID_201527265" MODIFIED="1575133337998" TEXT="Ordnung der onion-layer verbindlich machen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...das hei&#223;t also, es wird stets der zuerst gebundene Layer komplett durchgespult,
    </p>
    <p>
      gefolgt dann von dem n&#228;chsten Layer.
    </p>
    <p>
      
    </p>
    <p>
      Die Konsequenz ist, da&#223; es keine Mischung der Typen geben kann.
    </p>
    <p>
      Es m&#252;ssen immer zwingend alle Elemente eines Typs von einem Layer behandelt werden
    </p>
    <p>
      und diese Elemente m&#252;ssen geschlossen hintereinander in der Reihenfolge liegen
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1465428839332" ID="ID_655341963" MODIFIED="1561827465587" TEXT="Diff-Anwendung" VSHIFT="36">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1465428850946" FOLDED="true" MODIFIED="1611218290572">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      auf Basis des neu geschaffenen <b>TreeMutator</b>s
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="forward"/>
<node CREATED="1465664755169" ID="ID_1006974987" MODIFIED="1561827465591" TEXT="Modus der Anwendung">
<node CREATED="1465664762944" ID="ID_1572264709" MODIFIED="1465665479208" TEXT="DiffApplicator&lt;TreeMutator&gt;">
<icon BUILTIN="help"/>
</node>
<node CREATED="1465664777398" ID="ID_1214269061" MODIFIED="1575133338075" TEXT="Automatismen sind denkbar">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ....man k&#246;nnte sp&#228;ter geeignete Automatismen schaffen,
    </p>
    <p>
      die sich diesen TreeMutator beschaffen
    </p>
    <ul>
      <li>
        indem erkannt wird, da&#223; das eigentliche Zielobjekt ein bestimmtes API bietet
      </li>
      <li>
        indem andere relevante Eigenschaften des Zielobjekts erkannt werden
      </li>
    </ul>
  </body>
</html></richcontent>
<arrowlink COLOR="#994062" DESTINATION="ID_254742738" ENDARROW="Default" ENDINCLINATION="1028;0;" ID="Arrow_ID_62544040" STARTARROW="None" STARTINCLINATION="978;42;"/>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1465665483456" FOLDED="true" ID="ID_1302308143" MODIFIED="1576200010672" TEXT="Problem: konkreter Mutator">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...das so h&#228;ufig in C++ auftretende Problem:
    </p>
    <p>
      wie baue und verwalte ich eine konkrete Implementierung,
    </p>
    <p>
      ohne gleich ein ganzes Management-Framework einf&#252;hren zu m&#252;ssen.
    </p>
    <p>
      Letzten Endes lief&#160;&#160;das auch in diesem Fall auf inline-Storage hinaus...
    </p>
  </body>
</html></richcontent>
<node CREATED="1465665492727" ID="ID_871587416" MODIFIED="1465665500210" TEXT="mu&#xdf; vom Target gebaut werden"/>
<node CREATED="1465665500830" ID="ID_575550821" MODIFIED="1465665561681" TEXT="Typ nicht bekannt">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1465665511580" ID="ID_1245550673" MODIFIED="1465665556325" TEXT="soll auf Stack top-Level ">
<icon BUILTIN="yes"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1465665579587" ID="ID_1399616554" MODIFIED="1525124215211" TEXT="problematisch">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1465665594969" ID="ID_274492161" MODIFIED="1533608413979" TEXT="unbekannte Gr&#xf6;&#xdf;e">
<node CREATED="1465665884698" ID="ID_1454370216" MODIFIED="1465665893757" TEXT="default-Bufferg&#xf6;&#xdf;e vorlegen"/>
<node CREATED="1465665894273" ID="ID_704262320" MODIFIED="1465665901124" TEXT="Gr&#xf6;&#xdf;e proben und anpassen"/>
<node CREATED="1465665901640" ID="ID_67642439" MODIFIED="1465665920298" TEXT="Gr&#xf6;&#xdf;e f&#xfc;r &quot;bekannte&quot; Targets statisch hinterlegen"/>
<node CREATED="1465852237233" HGAP="27" ID="ID_483230622" MODIFIED="1561827465592" TEXT="Beschlu&#xdf;" VSHIFT="12">
<icon BUILTIN="yes"/>
<node CREATED="1465852248487" ID="ID_758697883" MODIFIED="1465852255154" TEXT="zun&#xe4;chst die einfachste L&#xf6;sung"/>
<node CREATED="1465852255694" ID="ID_877813979" MODIFIED="1472122166677" TEXT="statisch (fest) festlegen"/>
<node CREATED="1465852268252" ID="ID_190196051" MODIFIED="1465852274743" TEXT="ggfs. noch nach Zieltyp differenziert"/>
<node CREATED="1465852275859" ID="ID_61230636" MODIFIED="1465852288510" TEXT="dynamisch / Lernen als M&#xf6;glichkeit vorsehen"/>
</node>
</node>
<node CREATED="1465665614990" ID="ID_1119567524" MODIFIED="1533608413980" TEXT="verwirrendes API">
<node CREATED="1465665980686" ID="ID_1492023749" MODIFIED="1465665991232" TEXT="Anwendung sollte selbstevident sein"/>
<node CREATED="1465666009690" ID="ID_1649443825" MODIFIED="1561827465592" TEXT="Typ-Signatur sollte den Weg weisen">
<node CREATED="1465674483754" ID="ID_618303620" MODIFIED="1465674558135" TEXT="sehe nur eine L&#xf6;sung">
<icon BUILTIN="forward"/>
</node>
<node CREATED="1465674488874" ID="ID_1053641252" MODIFIED="1465674563848" TEXT="Mutator-Builder-Funktion">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1465674529460" ID="ID_1090489809" MODIFIED="1465674571112" TEXT="pflanzt in ein gegebenes Buff-Handle">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
</node>
<node CREATED="1465665993012" ID="ID_267337231" MODIFIED="1465666003750" TEXT="keine komplexen &quot;Riten&quot;"/>
<node CREATED="1465666524573" HGAP="30" ID="ID_18958581" MODIFIED="1561827465592" TEXT="Schlu&#xdf;folgerung" VSHIFT="18">
<icon BUILTIN="yes"/>
<node CREATED="1465666541419" ID="ID_787956112" MODIFIED="1465666552293" TEXT="entweder ein festes Interface"/>
<node CREATED="1465666552842" ID="ID_1360512685" MODIFIED="1465666574594" TEXT="oder &#xfc;ber Metaprogrammierung / Spezialisierung"/>
<node CREATED="1468761997202" FOLDED="true" ID="ID_206940182" MODIFIED="1611219082511" TEXT="kombinierte L&#xf6;sung">
<icon BUILTIN="idea"/>
<node CREATED="1468762009304" ID="ID_170152384" MODIFIED="1611219253284" TEXT="Interface DiffMutable">
<icon BUILTIN="forward"/>
<node COLOR="#435e98" CREATED="1611219255178" ID="ID_790740828" MODIFIED="1611221058698" TEXT="dies entwickelt sich zum Standardfall...">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...zumindest im GUI, wo parktisch alle Empf&#228;nger auch ein Tangible (Widget oder Controller) sind
    </p>
  </body>
</html></richcontent>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
<node CREATED="1611221009482" ID="ID_1797198606" MODIFIED="1611226329184" TEXT="exponiert builder-Methode">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...und genau diese virtuelle Builder-Methode ist &#252;blicherweise der Ort, wo mit einer DSL und &#252;ber Lambdas das Mapping auf die internen Strukturen des DiffMutable hergestellt wird; deshalb kann auch DiffMutable selber ein sehr schlankes Interface sein; der resultierende TreeMutator ist dann eine f&#252;r den jeweiligen konkreten Typ aus Bausteinen generierte Hilfsklasse
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1611226844354" ID="ID_252206662" MODIFIED="1611227312132" TEXT="oft in einer Collection...">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...und dort per smart-Ptr.<br />F&#252;r diesen Fall kann die Verdrahtung weitgehend automatisch konfiguiert werden, und man mu&#223; eigentlich nur noch den Konstruktor-Aufruf explizit (per Lambda) in das TreeMuator-Binding integrieren. Wenn es mehrere &#187;onion layer&#171; gibt, mu&#223; allerdings auch noch ein &#187;Selector&#171; definiert werden, um zu steuern, wo genau dieses Binding angewendet wird, und wo sonst auf einen anderen Layer delegiert wird, z.B. f&#252;r explizit gebundene Objekt-Attribute.
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#1ebca6" DESTINATION="ID_489519336" ENDARROW="Default" ENDINCLINATION="689;-28;" ID="Arrow_ID_1973768518" STARTARROW="None" STARTINCLINATION="490;52;"/>
</node>
</node>
<node CREATED="1468762031701" FOLDED="true" ID="ID_1455212830" MODIFIED="1561827482931" TEXT="Meta-Adapter">
<linktarget COLOR="#503382" DESTINATION="ID_1455212830" ENDARROW="Default" ENDINCLINATION="32;58;" ID="Arrow_ID_1591967504" SOURCE="ID_993360353" STARTARROW="None" STARTINCLINATION="222;18;"/>
<node CREATED="1468762052858" ID="ID_1870920189" MODIFIED="1468762066764" TEXT="synthetisiert dieses Interface"/>
<node CREATED="1468762067383" ID="ID_1801995068" MODIFIED="1468762075059" TEXT="erkennt passende Methoden"/>
<node CREATED="1468762075671" ID="ID_1201929549" MODIFIED="1611219223899" TEXT="Problem: Storage">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1468762092660" ID="ID_1968257665" MODIFIED="1468762097264" TEXT="Adapter oder Lambda"/>
<node CREATED="1468762097684" ID="ID_438037423" MODIFIED="1468762107374" TEXT="mu&#xdf; l&#xe4;nger leben als der Adapter"/>
<node CREATED="1468762118913" ID="ID_900380797" MODIFIED="1468762128867" TEXT="L&#xf6;sung: Wert / Reftyp per Spezialisierung"/>
<node CREATED="1468762138318" ID="ID_897808839" MODIFIED="1472219338878" TEXT="Restrisiko bleibt">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ....da&#223; ein unbedarfter client diesen Trick &#252;bershieht
    </p>
    <p>
      und daher den R&#252;ckgabewert wegwirft.
    </p>
    <p>
      
    </p>
    <p>
      Argument: we soweit einsteigt, die Metaprogramming-L&#246;sung zu nutzen,
    </p>
    <p>
      sollte auch intelligent genug sein, die API-Doc zu lesen.
    </p>
    <p>
      
    </p>
    <p>
      Standard == Interface DiffMutable implementieren
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1469121877371" FOLDED="true" HGAP="38" ID="ID_1614796496" MODIFIED="1561827469159" TEXT="freie Funktion" VSHIFT="16">
<icon BUILTIN="yes"/>
<node CREATED="1469121882782" ID="ID_695291968" MODIFIED="1469121933463" TEXT="keine Spezialisierung notwendig">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1469121890060" ID="ID_743882721" MODIFIED="1469121930007">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Client soll direkt <b>mutatorBinding</b>&#160;bieten
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1469544027620" HGAP="38" ID="ID_125815178" MODIFIED="1533608413984" TEXT="Storage-Probleme" VSHIFT="11">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1469544055624" ID="ID_1154293782" MODIFIED="1561827465596" TEXT="Beobachtung: Template-bloat">
<icon BUILTIN="stop-sign"/>
<node CREATED="1469544072709" ID="ID_1774421000" MODIFIED="1469544083016" TEXT="Ursache: wir generieren die Klasse jedesmal neu"/>
<node CREATED="1469544084220" ID="ID_1256237924" MODIFIED="1469544104909" TEXT="...obwohl keinerlei Bezug zum Target-Typ vorliegt">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1469544123271" ID="ID_1177495661" MODIFIED="1469544133675" TEXT="Funktionalit&#xe4;t ist zu 90% generisch">
<icon BUILTIN="info"/>
</node>
<node CREATED="1469544171176" ID="ID_993360353" MODIFIED="1469544253263">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <i>nicht</i>&#160;generisch: <b><font color="#923977">mutatorBinding</font></b>
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#503382" DESTINATION="ID_1455212830" ENDARROW="Default" ENDINCLINATION="32;58;" ID="Arrow_ID_1591967504" STARTARROW="None" STARTINCLINATION="222;18;"/>
</node>
</node>
<node CREATED="1469544264955" HGAP="35" ID="ID_1303383911" MODIFIED="1561827465596" VSHIFT="16">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      L&#246;sungsversuch: <b>extern template</b>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_cancel"/>
<node CREATED="1469544293574" ID="ID_543205456" MODIFIED="1469544318455" TEXT="Template bereits in Lumiera-Lib vor-generieren">
<icon BUILTIN="info"/>
</node>
<node CREATED="1469544337408" ID="ID_155206283" MODIFIED="1469544349252" TEXT="nur ctor ist nochmals ge-Templated">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1469544323331" FOLDED="true" ID="ID_1187319781" MODIFIED="1561827483836" TEXT="flexibler Teil verbleibt in ctor">
<icon BUILTIN="forward"/>
<node CREATED="1469544368180" ID="ID_782870983" MODIFIED="1469544377687" TEXT="hier kann das mutatorBinding stattfinden"/>
<node CREATED="1469544385882" ID="ID_1613566026" MODIFIED="1469544397396" TEXT="...in Abh&#xe4;ngigkeit vom konkreten Zieltyp"/>
<node CREATED="1469544400544" ID="ID_601582921" MODIFIED="1469544413058" TEXT="Resultat ist ein TreeMutator im internen Puffer"/>
</node>
<node CREATED="1469544471294" FOLDED="true" ID="ID_274473608" MODIFIED="1561827483837" TEXT="Problem-1: Puffer-Gr&#xf6;&#xdf;e">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1469544519439" ID="ID_1593158621" MODIFIED="1469544535057" TEXT="Plan: Heuristik + Traits"/>
<node CREATED="1469544536309" ID="ID_1666794304" MODIFIED="1469544546951" TEXT="h&#xe4;ngt von konkretem Zieltyp ab"/>
<node CREATED="1469544547731" ID="ID_1790199261" MODIFIED="1469544596453" TEXT="kann nicht im generischen Teil stecken">
<icon BUILTIN="stop-sign"/>
</node>
<node CREATED="1469544575808" ID="ID_1467987209" MODIFIED="1469544599880" TEXT="Problem: vom generischen Teil ansprechen">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1469544601444" ID="ID_235522874" MODIFIED="1469544616515" TEXT="L&#xf6;sung: weitere Indirektion">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1469544618738" ID="ID_1808730903" MODIFIED="1472122283229" TEXT="vertretbar, da nur beim Scope-Wechsel....">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...im Klartext: diesen Zugriff von der generischen Implementierung
    </p>
    <p>
      auf den eingebauten Stack-Mechanismus ben&#246;tigen wir nur...
    </p>
    <ul>
      <li>
        einmal zu Beginn, bei der Konstruktion
      </li>
      <li>
        wenn wir in einen geschachtelten Scope eintreten
      </li>
      <li>
        wenn wir einen Solchen verlassen
      </li>
    </ul>
    <p>
      Zwar sind indirekte Calls aufwendiger, aber letzten Endes auch wieder nicht soooo aufwendig,
    </p>
    <p>
      da&#223; sie uns im gegebenen Kontext umbringen...
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1469544496907" FOLDED="true" ID="ID_1217165446" MODIFIED="1561827483837" TEXT="Problem-2: re-Initialisierung">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1469544831244" ID="ID_1325104278" MODIFIED="1469544838662" TEXT="bestehendes Protokoll">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
<node CREATED="1469544839795" ID="ID_193708850" MODIFIED="1469544858420" TEXT="Diff-Applikator kan beliebige Folge von Diffs akzeptieren"/>
<node CREATED="1469544859392" ID="ID_1737941680" MODIFIED="1469544964778">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <i>intern:</i>&#160;eingebaute <b>initDiffApplication()</b>
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...wird automatisch vor Konsumieren eines Diff aufgerufen
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1469544965890" ID="ID_386723562" MODIFIED="1469545023179">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <i>Widerspruch:</i>&#160;TreeMutator ist <b>Wegwerf</b>-Objekt
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="broken-line"/>
</node>
<node COLOR="#f61b01" CREATED="1469545033584" ID="ID_442523056" MODIFIED="1469545058652" TEXT="Abbruch">
<icon BUILTIN="button_cancel"/>
<icon BUILTIN="stop-sign"/>
</node>
</node>
</node>
<node CREATED="1469545080826" HGAP="41" ID="ID_775671732" MODIFIED="1561827465600" VSHIFT="17">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      L&#246;sungsversuch: <b>doppelte H&#252;lle</b>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
<node CREATED="1469545168798" FOLDED="true" ID="ID_370635458" MODIFIED="1561827483837" TEXT="Architektur">
<node CREATED="1469545173893" ID="ID_814298904" MODIFIED="1469545190599" TEXT="opaque: Kern == TreeMutator"/>
<node CREATED="1469545191899" ID="ID_397109000" MODIFIED="1469545206853" TEXT="generisch: TreeMutator-Bindung"/>
<node CREATED="1469545208440" ID="ID_244347713" MODIFIED="1469545246870" TEXT="dediziert: Typ-Adapter"/>
</node>
<node CREATED="1469545401582" FOLDED="true" ID="ID_721753756" MODIFIED="1561827483837" TEXT="konkrete Folgen...">
<node CREATED="1469545417579" ID="ID_1940199475" MODIFIED="1469545427486" TEXT="alle virtuellen Methoden im generischen Teil"/>
<node CREATED="1469545428289" FOLDED="true" ID="ID_1499107269" MODIFIED="1561827482932" TEXT="generischer Teil verwendet nur Interfaces">
<node CREATED="1469545452406" ID="ID_190085940" MODIFIED="1469545455778" TEXT="TreeMutator"/>
<node CREATED="1469545456549" ID="ID_300958644" MODIFIED="1469545459401" TEXT="ScopeManager"/>
</node>
<node CREATED="1469545522445" FOLDED="true" ID="ID_1403539911" MODIFIED="1561827482932" TEXT="ScopeManager">
<icon BUILTIN="info"/>
<node CREATED="1469545526380" ID="ID_1121286637" MODIFIED="1469545535550" TEXT="Imp. wird per Zieltyp generiert"/>
<node CREATED="1469545536139" ID="ID_53324473" MODIFIED="1469545543750" TEXT="lebt in opaquem Buffer"/>
<node CREATED="1469545546209" ID="ID_347304855" MODIFIED="1469545561067" TEXT="enth&#xe4;lt Stack,"/>
<node CREATED="1469545562151" ID="ID_1493051731" MODIFIED="1469545568130" TEXT="mit passender Puffergr&#xf6;&#xdf;e"/>
</node>
<node CREATED="1469545592171" FOLDED="true" ID="ID_606899967" MODIFIED="1561827482932" TEXT="dedizierter Applikator">
<icon BUILTIN="idea"/>
<node CREATED="1469545598922" ID="ID_999031051" MODIFIED="1469545609733" TEXT="h&#xe4;llt Referenz auf Zielobjekt"/>
<node CREATED="1469545611177" ID="ID_1578280004" MODIFIED="1469545670672">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      kann daher <b>TreeMutator</b>&#160;konstruieren
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1469545641644" ID="ID_719025162" MODIFIED="1469545662506">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      ...und zwar per <b>mutatorBinding</b>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1469545691349" ID="ID_1537085784" MODIFIED="1469545705980">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      implementiert somit <b>initDiffApplication()</b>
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1469545778873" FOLDED="true" HGAP="37" ID="ID_1238563884" MODIFIED="1561827483837" VSHIFT="53">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      TODO: <font color="#010101">Namensgebung</font>
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#7c4b8e" DESTINATION="ID_1238563884" ENDARROW="Default" ENDINCLINATION="-438;877;" ID="Arrow_ID_701265417" SOURCE="ID_1433722735" STARTARROW="Default" STARTINCLINATION="2134;135;"/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1469545959160" ID="ID_1653202468" MODIFIED="1469545961076" TEXT="DiffApplicationStrategy&lt;DiffMutable&gt;"/>
<node CREATED="1469545962192" ID="ID_363293414" MODIFIED="1469545971051" TEXT="feste explizite Spezialisierung"/>
<node CREATED="1469545972470" ID="ID_1576991625" MODIFIED="1469545983800" TEXT="in non-Template-Basisklasse verwandeln"/>
<node CREATED="1469545990956" ID="ID_516103477" MODIFIED="1469546010389" TEXT="oder zumindest in Trait-Template + enable_if"/>
</node>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1465855369239" ID="ID_832033113" MODIFIED="1525124215221" STYLE="fork" TEXT="Architektur">
<icon BUILTIN="button_ok"/>
<node CREATED="1465855402346" ID="ID_76313075" MODIFIED="1512926192122" TEXT="Grundgedanke">
<node CREATED="1465855407129" ID="ID_840507910" MODIFIED="1472219324297" TEXT="Trennung von DiffInterpreter und TreeMutator"/>
<node CREATED="1465855418880" ID="ID_1224291834" MODIFIED="1472219324297" TEXT="ersterer wird auf Basis von letzterem implementiert"/>
<node CREATED="1465855507380" ID="ID_794764888" MODIFIED="1472219324297">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      TreeMutator-<i>Binding</i>&#160;mu&#223; opaque bleiben
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1465855561877" ID="ID_23704873" MODIFIED="1512926192123">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Buffer-Gr&#246;&#223;en-Management <i>vorsehen</i>
    </p>
  </body>
</html></richcontent>
<node CREATED="1465855596992" ID="ID_805593649" MODIFIED="1472219324298" TEXT="passiert im Scope des Ctors"/>
<node CREATED="1465855605879" ID="ID_730704715" MODIFIED="1472219324298" TEXT="bzw. im Scope des MUT-Verbs"/>
<node CREATED="1465855641898" ID="ID_1440271595" MODIFIED="1575133338771" TEXT="Heuristik + Versuch&amp;Irrtum">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      das hei&#223;t
    </p>
    <ul>
      <li>
        ein sinnvoller Startwert wird heuristisch vorgegeben
      </li>
      <li>
        wenn die Allokation scheitert, die Exception fangen und die tats&#228;chlich ben&#246;tigte Gr&#246;&#223;e merken
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node CREATED="1465855653265" ID="ID_440676779" MODIFIED="1472219324298" TEXT="konfigurieren und lernen"/>
</node>
<node CREATED="1465855576187" ID="ID_1868954632" MODIFIED="1472219324298" TEXT="zun&#xe4;chst jedoch primitiv implementieren"/>
</node>
<node CREATED="1465856069657" ID="ID_1337282940" MODIFIED="1512926192123" TEXT="Struktur">
<node CREATED="1465856074888" ID="ID_835346056" MODIFIED="1472219324298" TEXT="TreeMutator == PImpl"/>
<node CREATED="1465856092638" ID="ID_1061297702" MODIFIED="1472219324298" TEXT="BufferManager : opaque aber inline"/>
</node>
</node>
<node CREATED="1465864106739" ID="ID_254742738" MODIFIED="1575133338859" TEXT="Zugang zum Mutator-Binding">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...das hei&#223;t:
    </p>
    <p>
      gegeben ein syntaktisch sinnvoller top-level-Aufruf (&quot;wende das Diff an&quot;)
    </p>
    <p>
      -- wie bzw. von wem bekommen wir dann ein Binding, das einen passenden TreeMutator konstruiert?
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#994062" DESTINATION="ID_254742738" ENDARROW="Default" ENDINCLINATION="1028;0;" ID="Arrow_ID_62544040" SOURCE="ID_1214269061" STARTARROW="None" STARTINCLINATION="978;42;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1465864167187" ID="ID_1014149687" MODIFIED="1465864171974" TEXT="Aufruf: freie Funktion"/>
<node CREATED="1465864172514" ID="ID_1938000921" MODIFIED="1465864180668" TEXT="delegiert auf Template"/>
<node CREATED="1465864181193" ID="ID_1416910409" MODIFIED="1465864192611" TEXT="explizite / regelbasierte Spezialisierung"/>
<node CREATED="1465864193607" ID="ID_1086360419" MODIFIED="1512926192124" TEXT="Problem: Storage f&#xfc;r die Closure">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1465864217628" ID="ID_868183917" MODIFIED="1465864228510" TEXT="typischerweise sind alles transiente Objekte"/>
<node CREATED="1465864229170" ID="ID_442975692" MODIFIED="1465864240501" TEXT="also mu&#xdf; die Closure als Wert-Objekt rausgegeben werden"/>
<node CREATED="1472495487478" ID="ID_1246712083" MODIFIED="1512926192125" TEXT="L&#xf6;sung...">
<node CREATED="1472495496574" ID="ID_1728009713" MODIFIED="1472495510056" TEXT="auto typed return value"/>
<node CREATED="1472495510531" ID="ID_39881553" MODIFIED="1472495513703" TEXT="keep in local scope"/>
<node CREATED="1472495514203" ID="ID_1953453853" MODIFIED="1472495529197" TEXT="tightly integrate into ctor of DiffAplicator"/>
</node>
<node CREATED="1465864247152" ID="ID_369875178" MODIFIED="1512926192125" TEXT="gesucht: elegantes API">
<node CREATED="1472494557762" ID="ID_1362626195" MODIFIED="1472494575309" TEXT="DiffAplicator&lt;TargetTyp&gt;">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1472494413960" ID="ID_1029844890" MODIFIED="1472494571740" TEXT="Erweiterungspunkt f&#xfc;r ADL..."/>
<node CREATED="1472494432219" ID="ID_410727246" MODIFIED="1472494446981" TEXT="...wird vom ctor des Diff-Applikators verwendet"/>
<node CREATED="1472494466926" ID="ID_1047421260" MODIFIED="1472494484296" TEXT="...und der wiederum greift nur"/>
<node CREATED="1472494485388" ID="ID_470796053" MODIFIED="1472494501141" TEXT="...wenn TreeDiffTraits definiert sind"/>
<node CREATED="1472494501778" ID="ID_1970090360" MODIFIED="1472494506323" TEXT="not too bad">
<icon BUILTIN="ksmiletris"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1465860736044" ID="ID_554117057" MODIFIED="1561827465611" TEXT="Implementierung">
<icon BUILTIN="button_ok"/>
<node CREATED="1472121965308" ID="ID_762131895" MODIFIED="1472121974646" TEXT="Verb delegiert an Mutator-Primitive"/>
<node CREATED="1472121976018" ID="ID_1667890765" MODIFIED="1472121995995" TEXT="Fehlerbehandlung anhand R&#xfc;ckgabewert dieser"/>
<node CREATED="1472122015157" ID="ID_507093208" MODIFIED="1472122038334" TEXT="sinnvolle interne Fehler-Funktionen aufbauen"/>
<node CREATED="1472141026525" ID="ID_215668060" MODIFIED="1512926192127" TEXT="Scope-Wechsel">
<icon BUILTIN="button_ok"/>
<node CREATED="1472172154624" FOLDED="true" ID="ID_916630849" MODIFIED="1512926192127" TEXT="Zugang zum erzeugten Mutator....">
<node CREATED="1472172310187" ID="ID_487326937" MODIFIED="1575133339222" TEXT="via buffer-Handle">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      erscheint mir die am wenigsten &#252;berraschende L&#246;sung.
    </p>
    <p>
      und zwar per handle.get()
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1472172348526" ID="ID_1189257051" MODIFIED="1533608413996" TEXT="m&#xf6;gliche Alternativen">
<node CREATED="1472172364204" ID="ID_1693509282" MODIFIED="1575133339255" TEXT="Closure gibt TreeMutator&amp; zur&#xfc;ck">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      erscheint mir fehleranf&#228;llig und irref&#252;hrend f&#252;r den Nutzer der Schnittstelle.
    </p>
    <p>
      Denn er mu&#223; zwar das Objekt in das Handle platzieren, dann aber auch noch einen Pointer zur&#252;ckgeben,
    </p>
    <p>
      der dann auch noch NULL sein kann, zum Signalisieren von Fehlern.
    </p>
    <p>
      Ich empfinde das als schlechten Stil
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1472172467934" ID="ID_1540495826" MODIFIED="1575133339270" TEXT="ScopeManager-Interface erweitern">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      naja, das w&#228;re billig, aber auch wieder beliebig.
    </p>
    <p>
      Es macht keinen Sinn vom API-Design her, sondern man m&#252;&#223;te es halt machen,
    </p>
    <p>
      weil die Implementierung den Zeiger auf den geschachtelen sub-Mutator umsetzen mu&#223;.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_cancel"/>
</node>
</node>
</node>
<node CREATED="1472172586703" ID="ID_1282826388" MODIFIED="1512926192128" TEXT="pr&#xfc;fen">
<node CREATED="1472172593710" ID="ID_539813118" MODIFIED="1472172608024" TEXT="geschachtelter Scope mu&#xdf; beim Verlassen komplett abgearbeitet sein"/>
<node CREATED="1472172608636" ID="ID_904329399" MODIFIED="1472172634020" TEXT="wir steigen niemals &#xfc;ber den root-Scope hinaus auf"/>
</node>
<node COLOR="#435e98" CREATED="1472172651974" FOLDED="true" ID="ID_717242686" MODIFIED="1611218246329" TEXT="ins-Problem beim Mutieren von  Attributen">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1472172658349" ID="ID_279579205" MODIFIED="1472172806077">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      die Diff-Sprache verlangt,
    </p>
    <p>
      da&#223; vor dem &#214;ffnen des geschachtelten Scopes
    </p>
    <p>
      dieser zumindest einmal per ins &quot;angelegt&quot; wurde.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1472172711846" ID="ID_67509104" MODIFIED="1472172809794" TEXT="wir haben es hier mit objektwertigen Attributen zu tun">
<icon BUILTIN="info"/>
</node>
<node CREATED="1472172723853" ID="ID_397776543" MODIFIED="1472172732503" TEXT="das ist ein sonderbarer Grenzfall">
<icon BUILTIN="idea"/>
<node CREATED="1611218058623" ID="ID_948845594" MODIFIED="1611218075752" TEXT="Attribute tendieren zur Wertsemantik"/>
<node CREATED="1611218104017" ID="ID_1247405117" MODIFIED="1611218113067" TEXT="Attribute kann man eigentlich auch nicht umordnen"/>
<node CREATED="1611218115055" ID="ID_1628532981" MODIFIED="1611218183029" TEXT="Objekte k&#xf6;nnen zudem Ctor-Constraints haben"/>
</node>
<node CREATED="1472172733307" ID="ID_1698922494" MODIFIED="1611217973598" TEXT="Attribute werden normalerweise fest in der Objekt-Impl erzeugt"/>
<node CREATED="1472172754136" ID="ID_205435085" MODIFIED="1472172765458" TEXT="ein INS hat dann nichts sinnvolles zu tun"/>
<node COLOR="#435e98" CREATED="1472172772494" ID="ID_842638924" MODIFIED="1472172795138" TEXT="default-Implementierung absorbiert das INS stillschweigend">
<icon BUILTIN="forward"/>
</node>
</node>
<node COLOR="#338800" CREATED="1611218339864" FOLDED="true" ID="ID_341242193" MODIFIED="1611402354322" TEXT="Abk&#xfc;rzung f&#xfc;r rekursives Standard-Binding">
<linktarget COLOR="#64b2d0" DESTINATION="ID_341242193" ENDARROW="Default" ENDINCLINATION="-1947;126;" ID="Arrow_ID_1779456185" SOURCE="ID_1626706964" STARTARROW="None" STARTINCLINATION="1123;53;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1611227233973" ID="ID_489519336" MODIFIED="1611227312132" TEXT="f&#xfc;r den h&#xe4;ufigsten Fall: STL-Collection von Smart-Ptr auf DiffMutable">
<linktarget COLOR="#1ebca6" DESTINATION="ID_489519336" ENDARROW="Default" ENDINCLINATION="689;-28;" ID="Arrow_ID_1973768518" SOURCE="ID_252206662" STARTARROW="None" STARTINCLINATION="490;52;"/>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1611227337956" ID="ID_284850401" MODIFIED="1611227346387" TEXT="wird per MetaPr&#xe4;dikat erkannt">
<node CREATED="1611227487011" ID="ID_1701933719" MODIFIED="1611227500783" TEXT="wenn die Elemente entweder selber direkt DiffMutable sind"/>
<node CREATED="1611227501552" ID="ID_752689541" MODIFIED="1611227529633" TEXT="oder alternativ ein (smart)Pointer/Wrapper auf ein DiffMutable"/>
</node>
<node COLOR="#338800" CREATED="1611261538911" ID="ID_498748918" MODIFIED="1611402319966" TEXT="Standard-Imlementierung">
<icon BUILTIN="button_ok"/>
<node CREATED="1611261602057" ID="ID_160823769" MODIFIED="1611261614523" TEXT="inzwischen hat sich ein Standard-Schema etabliert">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#435e98" CREATED="1611261556183" ID="ID_236586609" MODIFIED="1611402310840" TEXT="Frage: warum machen wir einen ID-Match?">
<icon BUILTIN="help"/>
<node CREATED="1611261593546" ID="ID_1666826303" MODIFIED="1611261791971" TEXT="typischerweise pr&#xfc;fen wir zu Beginn, ob das zu mutierende Sub-Element auch matcht"/>
<node CREATED="1611261792751" ID="ID_1188415737" MODIFIED="1611261815910" TEXT="man k&#xf6;nnte hierf&#xfc;r den &#xbb;Matcher&#xab; des Collection-Bindings verwenden"/>
<node CREATED="1611261840272" ID="ID_922368010" MODIFIED="1611261871424" TEXT="mehr noch: wie kommt es zu diesem Match-Guard?">
<node CREATED="1611261874508" ID="ID_1431589128" MODIFIED="1611261892215" TEXT="das Standard-Schema hat sich per Copy-n-Paste entwickelt">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1611261893793" ID="ID_1503357970" MODIFIED="1611261910755" TEXT="k&#xf6;nnte durchaus sein, da&#xdf; dieser Schritt redundant ist"/>
<node CREATED="1611270254702" ID="ID_781667464" MODIFIED="1611271568520" TEXT="und genau so ist es">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Das ist verst&#228;ndlich aus der Historie: Zun&#228;chst einmal war der TreeMutator gedacht als ein Interface, das der client des Diff-Frameworks zu implementieren hat. Nachdem ich diese &#220;bung aber drei mal gemacht hatte, war mir klar, da&#223; dies zu viel verlangt ist. Denn der TreeMutator ist notwendigerweise stark an den Implementierungs-Ansatz im Diff-Framework gebunden. Das hei&#223;t, man kann dieses Interface nur implementieren, wenn man diese interne Funktionsweise verstanden hat. Und das Diff-Framework w&#252;rde seinen Zweck verfehlen, wenn der Nutzer dieses Wissen haben m&#252;&#223;te. Also habe ich &#252;ber den TreeMutator ein Baukastensystem errichtet, welches &#252;ber Lambdas in den Anwendungskontext gebunden wird.
    </p>
    <p>
      
    </p>
    <p>
      In einem zweiten Anlauf habe ich schlie&#223;lich die schon bestehenden, explizitien Implementierungen des TreeMutator-Interfaces allesamt &quot;eingefangen&quot; und durch ein Meshup aus dem Bauskastensystem ersetzt. Daher gibt es jetzt nur noch eine einzige valide Implementierung, n&#228;mlich die im Baukasen. Und das soll auch so bleiben.
    </p>
    <p>
      
    </p>
    <p>
      Daher ist es zul&#228;ssig, sich diese Implementierung anzuschauen: in der Tat geht n&#228;mlich dort jedem Aufruf des Mutators ein Suchvorgang voraus, und dieser endet immer mit einer erfolgreichen Anwendung des Matchers. Daher ist es grunds&#228;tzlich nicht notwendig, den ID-Match nochmal zu pr&#252;fen, bevor man in die rekursive Mutation einsteigt.
    </p>
    <p>
      
    </p>
    <p>
      Wie kommt nun aber dieser explizit ausprogrammierte ID-Match in die Standard-Implementierung? Die Antwort ist, letztlich aus Verlegenheit. Denn zun&#228;chst einmal hatte ich f&#252;r den Unit-Test alles f&#252;r ein sehr spezielles Setup ausprogrammiert. Das ist auch gut so, denn dieses Setup deckt auch Grenzf&#228;lle mit ab. Also im Besonderen auch Bindings, die sich sehr speziell in Implementierungsstrukturen einklinken, und eben grade nicht direkt an ein DiffMutable-Subobjekt delegieren. Und diese Offenheit ist der essentielle Grund, warum ich auf ein Diff-Framework setze, und nicht auf ein Datenmodell mit festen Interfaces. Diese Offenheit bedingt aber auch, da&#223; man dem Client die letztendliche &#220;bersetzung der IDs &#252;berlassen mu&#223;. F&#252;r die rekursive Kind-Mutation mu&#223; der Client sich ggfs ein internes Implementierungs-Objekt anhand der gegebenen ID heraussuchen.
    </p>
    <p>
      
    </p>
    <p>
      Im einfachen Standardfall jedoch ist das nicht notwendig, denn in diesem h&#228;ufigsten Standardfall haben wir mehr oder weniger direkt das Objekt aus der Collection in der Hand, auf welches dann der rekursive Mutator angewendet werden soll. Also stand ich beim ersten Schreiben einer Implementierung f&#252;r diesen einfachen Standardfall vor dem Paradoxon, da&#223; die Funktion einen ID-Parameter bekommt, den man anscheinend hier gar nicht braucht. Und, ohne diese Zusammenh&#228;nge damals zu verstehen, habe ich dann aus Verlegenheit noch eine Zeile Code eingebaut, die &quot;was Sinnvolles mit dieser ID macht&quot;, denn es war ja zun&#228;chst auch erst mal ein Proof-of-Concept (und zu diesem Zeitpunkt gab es noch zwei weitere, alternative Implementierungen des TreeMutator-Interfaces). Letztlich hat sich dann dieses &quot;anstandshalber&quot; eingebaute Zeile, eben genau der ID-match, welcher mithin &quot;etwas Sinnvolles&quot; mit der ID macht, per Copy-n-Paste in alle konkreten Implementierungen fortgepflanzt. Wiewohl dieser Schritt im Stand der gegenw&#228;rtigen Implementierung stets redundant ist.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1611271855692" ID="ID_1449093831" MODIFIED="1611271873489" TEXT="Fazit: der Match-Guard kann aus allen Implementierungen entfernt werden">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node CREATED="1611271971948" ID="ID_1541118749" MODIFIED="1611271982750" TEXT="der ID-Parameter wird normalerweise nicht gebraucht"/>
<node CREATED="1611271983506" ID="ID_1671925205" MODIFIED="1611272055176" TEXT="er ist nur f&#xfc;r Grenzf&#xe4;lle gedacht">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...falls die clientseitige Datenstruktur einen Index verwendet, um per ID die eigentliche Zieldatenstruktur zu betreten.
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1611402003818" ID="ID_1246335581" MODIFIED="1611402016011" TEXT="den ID-Matcher ebenfalls generieren">
<icon BUILTIN="button_ok"/>
<node CREATED="1611402016970" ID="ID_1067306968" MODIFIED="1611402027948" TEXT="wir brauchen zwar keinen ID-Match beim Erzeugen des Mutators"/>
<node CREATED="1611402028489" ID="ID_809714103" MODIFIED="1611402068427" TEXT="aber der ID-basierte Matcher ist ebenfalls generisch, und sollte automatisch generiert werden">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1611402077673" ID="ID_361760144" MODIFIED="1611402210308" TEXT="Problem: Zugang zur Target-Objekt-ID">
<icon BUILTIN="button_ok"/>
<node CREATED="1611402092625" ID="ID_19089272" MODIFIED="1611402150879" TEXT="k&#xf6;nnte man in DiffMutable-Interface aufnehmen">
<icon BUILTIN="button_cancel"/>
<node CREATED="1611402121148" ID="ID_1241594472" MODIFIED="1611402129847" TEXT="Vorsicht: DiffMutable ist opitonal"/>
<node CREATED="1611402130459" ID="ID_899835141" MODIFIED="1611402146172" TEXT="man m&#xfc;&#xdf;te dann trotzdem noch Duck-Typing verwenden"/>
</node>
<node CREATED="1611402151832" ID="ID_1518275784" MODIFIED="1611402160776" TEXT="Duck-Typing verwenden">
<icon BUILTIN="forward"/>
<node CREATED="1611402162870" ID="ID_697592973" MODIFIED="1611402180642">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      erwarte eine Funktion <b>getID()</b>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1611402182252" ID="ID_12989992" MODIFIED="1611402197061" TEXT="und deren Resultat mu&#xdf; per == vergleichbar sein"/>
<node CREATED="1611402199145" ID="ID_317509193" MODIFIED="1611402204788" TEXT="...mit einer GenNode::ID"/>
</node>
<node CREATED="1611402212151" ID="ID_543092941" MODIFIED="1611402232768" TEXT="wenn dies gegeben ist, dann kann man auch den &#xbb;Matcher&#xab; generieren">
<node CREATED="1611402234140" ID="ID_1471601030" MODIFIED="1611402244652" TEXT="f&#xfc;r stage::model::Tangible stets gegeben">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1611402245626" ID="ID_1721371942" MODIFIED="1611402285886" TEXT="sonst: Exception werfen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...d.h. man mu&#223; dann halt doch noch den Matcher explizit in der DSL konfigurieren
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1465860740971" ID="ID_1905457534" MODIFIED="1512926192131" TEXT="Unit-Test">
<icon BUILTIN="button_ok"/>
<node CREATED="1472122365079" ID="ID_781825543" MODIFIED="1512926192131" TEXT="Aussagekr&#xe4;ftiges Beispiel-Diff">
<node CREATED="1472122379548" ID="ID_1273829051" MODIFIED="1472122384864" TEXT="sollte alle Features vorf&#xfc;hren"/>
<node CREATED="1472122385380" ID="ID_537172522" MODIFIED="1472122391943" TEXT="sollte wichtige Grenzf&#xe4;lle aktivieren"/>
<node CREATED="1472122394387" ID="ID_1852750941" MODIFIED="1472122409477" TEXT="sollte keine sinnlosen Operationen verlangen"/>
</node>
<node CREATED="1472122416040" ID="ID_1497249607" MODIFIED="1575133339504" TEXT="Analog zu den Primitiven in TreeDiffBinding_test">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...das ist ein Versuch, den Code f&#252;r den Leser verst&#228;ndlich zu halten.
    </p>
    <p>
      Die Idee ist, da&#223; es einen high-level Unit-Test gibt, der die gesamte Diff-Anwendung durchspielt
    </p>
    <p>
      und dazu passend einen low-level Unit-Test, der analog die gleichen Operationen macht,
    </p>
    <p>
      allerdings direkt auf dem TreeDiff-Interface durch Aufruf der passenden Primitiv-Operaionen.
    </p>
    <p>
      Letztere m&#252;ssen f&#252;r jede Art von &quot;onion-layer&quot; (konkretes Binding) erneut implementiert
    </p>
    <p>
      und daher auch jeweils eigens per Unit-Test abgedeckt werden.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1472122581698" ID="ID_646408964" MODIFIED="1575133339521" TEXT="sehr komplexes Binding auf privaten Datentyp">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      das ist hier sinnvoll. Das Binding sollte komplexer sein,
    </p>
    <p>
      als in der Praxis auftretende Bindings. Warum? Weil letztere immer etwas einseitg sind
    </p>
    <p>
      und damit Abk&#252;rzungen im Code-Pfad ausn&#252;tzen. Die Gefahr schlummert aber im Zusammenspiel
    </p>
    <p>
      der konkreten Bindings mit mehreren &quot;onion layers&quot;!
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node CREATED="1465428871136" ID="ID_1530542113" MODIFIED="1512926192131" TEXT="integration mehrerer Bindungs-Layer">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1469918339329" ID="ID_1268899355" MODIFIED="1576204739930" TEXT="geplant: DiffVirtualisedApplication_test">
<icon BUILTIN="flag-yellow"/>
</node>
<node CREATED="1469918356432" ID="ID_402479849" MODIFIED="1469918363427" TEXT="Selector korrekt integrieren">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1465428882150" ID="ID_1713615701" MODIFIED="1512926192132" TEXT="komplexer Integrationstest"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1458850101524" HGAP="-22" ID="ID_233819266" MODIFIED="1512926192133" TEXT="TODO" VSHIFT="29">
<font NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1458850122091" ID="ID_558028717" MODIFIED="1512926192134" TEXT="Collection-Binding: bessere Fehlermeldungen">
<node CREATED="1458850141920" ID="ID_1678218183" MODIFIED="1575133339634" TEXT="bei Signatur-Mismatch">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...denn es ist sehr verwirrend, welche Signatur denn nun die Lambdas haben m&#252;ssen
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1678218183" ENDARROW="Default" ENDINCLINATION="176;0;" ID="Arrow_ID_1136171372" SOURCE="ID_65072201" STARTARROW="None" STARTINCLINATION="176;0;"/>
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1458850154575" ID="ID_1092417051" MODIFIED="1575133339650" TEXT="wenn der Default-Matcher greift">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...denn es kann keinen Default-Matcher geben....
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1458850212503" ID="ID_1633140516" MODIFIED="1472498583464" TEXT="Signaturen f&#xfc;r Lambdas dokumentieren">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1465860661877" ID="ID_1725052487" MODIFIED="1472498127725" TEXT="Builder-API f&#xfc;r Attribut-Binding dokumentieren">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1465860672852" ID="ID_1572924206" MODIFIED="1512926192134" TEXT="Variante zum Attribut-Binding, wobei die Attribut-ID als GenNode::ID gegeben ist">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1472498724880" ID="ID_1915142911" MODIFIED="1472498733392" TEXT="f&#xfc;r sp&#xe4;ter">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1472498734359" ID="ID_1700021018" MODIFIED="1472498742262" TEXT="brauchen wir das wirklich">
<icon BUILTIN="help"/>
</node>
</node>
<node CREATED="1460847222865" ID="ID_1183333475" MODIFIED="1575133339750" TEXT="abstrakte operationale Semantik der Diff-Anwendung dokumentieren">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...sonst wird niemand Lambdas bereitstellen k&#246;nnen, oder gar Diff-Nachrichten erzeugen.
    </p>
    <p>
      Das ist nun kein spezielles Problem der gew&#228;hlten Implementierungs-Technik, sondern r&#252;hrt daher,
    </p>
    <p>
      da&#223; der Client hier eigentlich ein Protokoll implementieren mu&#223;.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1458850263688" ID="ID_1575858667" MODIFIED="1512926192135" TEXT="Zusammenf&#xfc;hren">
<node CREATED="1458850294083" ID="ID_1035255319" MODIFIED="1458850302901" TEXT="der normale GenNode-Applikator"/>
<node CREATED="1458850282285" ID="ID_315551572" MODIFIED="1512926192135" TEXT="Pr&#xfc;fen ob sinnvoll">
<node CREATED="1458850328775" ID="ID_640982298" MODIFIED="1458850333475" TEXT="Indirektionen"/>
<node CREATED="1458850334110" ID="ID_1172428601" MODIFIED="1458850338898" TEXT="Speicherbedarf"/>
<node CREATED="1458850339413" ID="ID_317541225" MODIFIED="1458850359702" TEXT="Aufwand bei der Verwendung"/>
</node>
<node CREATED="1458850306506" ID="ID_1166040145" MODIFIED="1458850323212" TEXT="durch Binding f&#xfc;r Tree-Applikator ersetzen"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1461968295826" ID="ID_832194713" MODIFIED="1512926192135" TEXT="pr&#xfc;fen: soll das &#xbb;AFTER&#xab;-Verb aus der Sprache entfernt werden">
<linktarget COLOR="#592379" DESTINATION="ID_832194713" ENDARROW="Default" ENDINCLINATION="577;0;" ID="Arrow_ID_1785459194" SOURCE="ID_721485398" STARTARROW="Default" STARTINCLINATION="1205;231;"/>
<icon BUILTIN="help"/>
<node CREATED="1461968428712" ID="ID_1763138890" MODIFIED="1461968442674" TEXT="es ist n&#xfc;tzlich f&#xfc;r handgeschriegbene Diffs"/>
<node CREATED="1461968443334" ID="ID_269699254" MODIFIED="1461968454521" TEXT="es vertr&#xe4;gt sich nicht mit gemischten Kindern"/>
<node CREATED="1465428190234" ID="ID_1562546651" MODIFIED="1512926192136" TEXT="Kompromi&#xdf;">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1562546651" ENDARROW="Default" ENDINCLINATION="-27;14;" ID="Arrow_ID_477931579" SOURCE="ID_1962067597" STARTARROW="None" STARTINCLINATION="139;3;"/>
<icon BUILTIN="idea"/>
<node CREATED="1465428196730" ID="ID_1910351001" MODIFIED="1465428204548" TEXT="belassen"/>
<node CREATED="1465428205352" ID="ID_28950544" MODIFIED="1465428215635" TEXT="akzeptieren, da&#xdf; es nicht immer anwendbar ist"/>
<node CREATED="1465428216271" ID="ID_814487938" MODIFIED="1465428234145" TEXT="die generische Variante &quot;after Ref::END&quot; ist sehr gut"/>
<node CREATED="1465428236860" ID="ID_866203929" MODIFIED="1465428248614" TEXT="speziell Attribut-Binding unterst&#xfc;tzt zur generische Variante"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1469545751885" ID="ID_1433722735" MODIFIED="1469545906061" TEXT="Namensgebung f&#xfc;r generisches Mutator-Binding">
<arrowlink COLOR="#7c4b8e" DESTINATION="ID_1238563884" ENDARROW="Default" ENDINCLINATION="-438;877;" ID="Arrow_ID_701265417" STARTARROW="Default" STARTINCLINATION="2134;135;"/>
<icon BUILTIN="flag-yellow"/>
</node>
<node CREATED="1472216217388" HGAP="21" ID="ID_1534804117" MODIFIED="1512926192136" TEXT="Semantik der Diff-Sprache" VSHIFT="5">
<node CREATED="1472216261102" ID="ID_1793923006" MODIFIED="1472216264937" TEXT="sinnvoll definiert"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1472216265486" ID="ID_936601452" MODIFIED="1512926192137" TEXT="sp&#xe4;ter re-evaluieren (Ticket #996)">
<node CREATED="1472216306208" ID="ID_1962067597" MODIFIED="1512926192137" TEXT="AFTER">
<arrowlink DESTINATION="ID_1562546651" ENDARROW="Default" ENDINCLINATION="-27;14;" ID="Arrow_ID_477931579" STARTARROW="None" STARTINCLINATION="139;3;"/>
<node CREATED="1473040688153" ID="ID_1832205907" MODIFIED="1473040722530" TEXT="bleibt vorerst erhalten">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1473040705207" ID="ID_1976880201" MODIFIED="1473040710378" TEXT="kann sinnvoll implementiert werden"/>
<node CREATED="1473040711582" ID="ID_1725936766" MODIFIED="1473040717859" TEXT="ist sehr n&#xfc;tzlich">
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node CREATED="1472219973288" ID="ID_827760350" MODIFIED="1512926192139" TEXT="Ref::THIS">
<icon BUILTIN="button_cancel"/>
<node CREATED="1472220009699" ID="ID_668003504" MODIFIED="1472220054293">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <i>wenn &#252;berhaupt, </i>dann im Matcher im Binding-Layer implementieren
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1473040485789" ID="ID_1455054542" MODIFIED="1575133340122" TEXT="nein: f&#xfc;hrt zu verworrener Implementierung bzw. ist unm&#xf6;glich">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...denn wir haben nun mehrere Layer,
    </p>
    <p>
      und der Selector kann einfach anhand von Ref::THIS keine sinnvolle Entscheidung treffen.
    </p>
    <p>
      Daher versuchen dann alle Layer dieses Element zu behandeln, oder gar keiner
    </p>
    <p>
      
    </p>
    <p>
      Und da der Selector <i>nur die Spec anschauen darf, </i>l&#228;&#223;t sich das auch nachher nicht mehr korrigieren
    </p>
    <p>
      
    </p>
    <p>
      Daher habe ich mich <b>entschlossen, dieses Sprachkonstrukt zu entfernen</b>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1473040662653" ID="ID_618762286" MODIFIED="1473040680738">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <b>entfernt</b>, da schlechtes Design
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1472216312295" ID="ID_1775308081" MODIFIED="1512926192140" TEXT="Ref::CHILD">
<icon BUILTIN="button_cancel"/>
<node CREATED="1472219981838" ID="ID_574042505" MODIFIED="1472219987506" TEXT="was genau soll das sein??"/>
<node CREATED="1472219987983" ID="ID_1555757607" MODIFIED="1472219997032" TEXT="was ist der Unterschied zu Ref::THIS"/>
<node CREATED="1472219998405" ID="ID_581974405" MODIFIED="1472220005255" TEXT="funktioniert das &#xfc;berhaupt noch??"/>
<node CREATED="1473040662653" ID="ID_1276623149" MODIFIED="1473040680738">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <b>entfernt</b>, da schlechtes Design
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
<node CREATED="1458850387823" HGAP="19" ID="ID_425389577" MODIFIED="1512926192141" TEXT="allgemein" VSHIFT="13">
<node CREATED="1458850397158" ID="ID_824208782" MODIFIED="1512926192141" TEXT="GenNode">
<node CREATED="1458850406396" ID="ID_1751784080" MODIFIED="1512926192141" TEXT="string-Repr&#xe4;sentation der Payload">
<icon BUILTIN="hourglass"/>
<node CREATED="1473352291785" ID="ID_1072989957" MODIFIED="1473352300715" TEXT="vorerst nicht ben&#xf6;tigt"/>
<node CREATED="1473352306190" ID="ID_1614247363" MODIFIED="1473352310810" TEXT="w&#xe4;re besser da&#xdf; nicht"/>
<node CREATED="1473352312206" ID="ID_182553929" MODIFIED="1473352316377" TEXT="Entscheidung vertagt"/>
</node>
<node COLOR="#338800" CREATED="1458850422587" ID="ID_687485992" MODIFIED="1458851592866" TEXT="Metafunktion f&#xfc;r m&#xf6;gliche Payload">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1458850437017" ID="ID_374347760" MODIFIED="1512926192142" TEXT="Planting-Handle">
<node CREATED="1458850456134" ID="ID_1314676676" MODIFIED="1575133340337" TEXT="Zwischenschicht einziehen im TreeMutator">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      anscheinend nicht notwendig
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1458850463389" ID="ID_1264284471" MODIFIED="1473352257250" TEXT="Generische Impl herausl&#xf6;sen">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1458850471228" ID="ID_1582586681" MODIFIED="1473352333631" TEXT="Unit-Test hierf&#xfc;r">
<icon BUILTIN="bell"/>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1576203266079" HGAP="-33" ID="ID_814331726" MODIFIED="1576203320920" TEXT="Probleme" VSHIFT="81">
<edge COLOR="#a35858" STYLE="linear"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1576203334745" ID="ID_469932361" MODIFIED="1576203344231" TEXT="STL Collection-Binding">
<node COLOR="#435e98" CREATED="1576203346447" ID="ID_233848651" MODIFIED="1576281488712" TEXT="&quot;wackelig&quot; f&#xfc;r manche Typen">
<icon BUILTIN="clanbomber"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1576203375592" ID="ID_1979742309" MODIFIED="1576203381993" TEXT="std::Map">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1576203383258" ID="ID_854221294" MODIFIED="1576204502727" STYLE="fork" TEXT="eigentlich ein Widerspruch">
<arrowlink COLOR="#b85f4e" DESTINATION="ID_1285123321" ENDARROW="Default" ENDINCLINATION="-735;0;" ID="Arrow_ID_1644325647" STARTARROW="None" STARTINCLINATION="-651;70;"/>
</node>
<node CREATED="1576203390673" ID="ID_1579012788" MODIFIED="1576203404067" TEXT="praktisch aber bequem"/>
<node CREATED="1576203728291" ID="ID_42201574" MODIFIED="1576203790175" TEXT="code-teschnisch problematisch">
<arrowlink COLOR="#e69f98" DESTINATION="ID_1611724080" ENDARROW="Default" ENDINCLINATION="-741;702;" ID="Arrow_ID_1638749746" STARTARROW="None" STARTINCLINATION="1526;117;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1576203459624" ID="ID_789920101" MODIFIED="1576204104302" TEXT="&#xbb;Attribut-Map&#xab; in MockElm">
<arrowlink COLOR="#c48c7d" DESTINATION="ID_275833424" ENDARROW="Default" ENDINCLINATION="-975;32;" ID="Arrow_ID_454192352" STARTARROW="None" STARTINCLINATION="937;102;"/>
</node>
</node>
<node COLOR="#338800" CREATED="1576281451040" ID="ID_256253463" MODIFIED="1576281485757" TEXT="f&#xfc;hre ContainerTraits ein">
<icon BUILTIN="button_ok"/>
<node CREATED="1576281457704" ID="ID_1923676658" MODIFIED="1576281466799" TEXT="organisiere den Zugriff &#xfc;ber wenige Primitive"/>
<node CREATED="1576281467534" ID="ID_141840018" MODIFIED="1576281475848" TEXT="recentElmRawIter"/>
<node CREATED="1576281477030" ID="ID_1772245201" MODIFIED="1576281484407" TEXT="emplace-Operation"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1582387518143" FOLDED="true" ID="ID_1511785718" MODIFIED="1582402573961" TEXT="Aufspiel-Fehler beim 2.Timeline-Diff">
<icon BUILTIN="button_ok"/>
<node CREATED="1582387575560" ID="ID_1823810514" MODIFIED="1582387638910" TEXT="Reihenfolge egal">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      es ist wohl nicht ein spezieller Diff. Es tritt sogar auf, wenn man zweimal den gleichen Diff schickt
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1582393056148" ID="ID_229440778" MODIFIED="1582393060752" TEXT="Beobachtungen">
<node CREATED="1582393085696" ID="ID_1075791214" MODIFIED="1582393107401" TEXT="DiffApplicationStrategie::completeDiffApplication()">
<node CREATED="1582393112229" ID="ID_1475137884" MODIFIED="1582393122112" TEXT="ruft treeMutator_-&gt; completeScope"/>
</node>
<node CREATED="1582393123699" ID="ID_1039117196" MODIFIED="1582393142133" TEXT="treeMutator_ ist ein ChildCollectionMutator"/>
<node CREATED="1582393142889" ID="ID_1845205771" MODIFIED="1582393160850" TEXT="beim 2.Mal ist noch ein Element im contentBuffer">
<node CREATED="1582393170325" ID="ID_1722906303" MODIFIED="1582393180658" TEXT="und zwar ein TimelineGui"/>
<node CREATED="1582393189518" ID="ID_1633116205" MODIFIED="1582394694300" TEXT="HA! das weitere Element im anderen Tab?">
<arrowlink COLOR="#d51f26" DESTINATION="ID_679335170" ENDARROW="Default" ENDINCLINATION="78;0;" ID="Arrow_ID_1157526655" STARTARROW="None" STARTINCLINATION="51;30;"/>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node COLOR="#990000" CREATED="1582393210408" ID="ID_1214546082" MODIFIED="1582402538776" TEXT="wenn diese Hypothese stimmt, dann w&#xe4;re das gesendete Diff falsch">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="idea"/>
<node CREATED="1582394658942" ID="ID_679335170" MODIFIED="1582394694300" TEXT="so isses">
<linktarget COLOR="#d51f26" DESTINATION="ID_679335170" ENDARROW="Default" ENDINCLINATION="78;0;" ID="Arrow_ID_1157526655" SOURCE="ID_1633116205" STARTARROW="None" STARTINCLINATION="51;30;"/>
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1582394706704" ID="ID_1236044094" MODIFIED="1582394709051" TEXT="siehe DummySessionConnection::fabricateSeq1"/>
<node CREATED="1582394712392" ID="ID_1029818508" MODIFIED="1582394730872" TEXT="der Diff f&#xe4;ngt ganz naiv an mit &quot;ins(timeline)&quot;"/>
<node CREATED="1582394734004" ID="ID_587085406" MODIFIED="1582394749618" TEXT="es fehlt ein after(Ref::END)">
<icon BUILTIN="forward"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1582402556417" ID="ID_1819542704" MODIFIED="1582402568155" TEXT="kaum macht ma&apos;s richtig, schon funktioniert&apos;s">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
</node>
</node>
</node>
<node CREATED="1502452581379" FOLDED="true" HGAP="3" ID="ID_1651893758" MODIFIED="1576281567403" TEXT="Darstellung" VSHIFT="31">
<linktarget COLOR="#afb1bd" DESTINATION="ID_1651893758" ENDARROW="Default" ENDINCLINATION="-1257;0;" ID="Arrow_ID_1786455458" SOURCE="ID_1500100371" STARTARROW="None" STARTINCLINATION="1858;0;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1502452597604" ID="ID_172363215" MODIFIED="1512926192454" TEXT="MutationMessage">
<icon BUILTIN="button_ok"/>
<node CREATED="1502454531772" ID="ID_445867436" MODIFIED="1502454536184" TEXT="abstrakter Iterator"/>
<node CREATED="1502454536636" ID="ID_643452930" MODIFIED="1502454542390" TEXT="opaque generation context"/>
<node CREATED="1502499523442" ID="ID_1849662627" MODIFIED="1502499532441" TEXT="verwaltet diesen per shared_ptr">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1502499556422" ID="ID_914381104" MODIFIED="1502499574412" TEXT="convenience- builder">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1502452625232" ID="ID_328973433" MODIFIED="1512926192456" TEXT="Diagnose">
<icon BUILTIN="button_ok"/>
<node CREATED="1502454361347" ID="ID_1601614353" MODIFIED="1502550968543" TEXT="toString">
<icon BUILTIN="button_ok"/>
<node CREATED="1502454303107" ID="ID_712801862" MODIFIED="1575133360185" TEXT="Problem: Pull-Prinzip">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Diff ist eine abstrakte Quelle,
    </p>
    <p>
      die nur einmal verbraucht werden kann
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1502454341085" ID="ID_1620101988" MODIFIED="1502454351680" TEXT="L&#xf6;sung: Adapter mit Snapshot"/>
<node CREATED="1502454374017" ID="ID_355618162" MODIFIED="1502454376725" TEXT="Konsequenz">
<node CREATED="1502454377713" ID="ID_1122938295" MODIFIED="1502454386323" TEXT="normaler Diff bleibt opaque"/>
<node CREATED="1502454387047" ID="ID_1949389197" MODIFIED="1502454395770" TEXT="Dekorator f&#xfc;r Tests">
<node CREATED="1502454398686" ID="ID_1736428769" MODIFIED="1502454409496" TEXT="Anforderung: drop-in"/>
<node CREATED="1502454410012" ID="ID_364935696" MODIFIED="1575133360305" TEXT="durch Allokations-Kette l&#xf6;sen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Dekorator-Prinzip.
    </p>
    <p>
      Pa&#223;t hier, da IterSource genau dieses Vorgehen nahelegt
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1502550828691" ID="ID_382976334" MODIFIED="1575133360325" TEXT="fest eingebaut">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      MutationMessage::updateDiagnostics()
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1502550853144" ID="ID_1494004239" MODIFIED="1502550857267" TEXT="Snapshot"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1502550876621" ID="ID_146736971" MODIFIED="1502550911076" TEXT="operationale Semantik">
<icon BUILTIN="clanbomber"/>
<node CREATED="1502550912144" ID="ID_1989059056" MODIFIED="1502550917571" TEXT="Seiteneffekt"/>
<node CREATED="1502550918087" ID="ID_1305779780" MODIFIED="1502550932761" TEXT="DiffGenerator wird gepullt"/>
<node CREATED="1502550933253" ID="ID_1994991409" MODIFIED="1575133360409" TEXT="immer nur Rest-Sequenz sichtabar">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...diejenige, die zum Zeitpunkt des updateDiagnostics() noch anstand
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1502454451191" ID="ID_1968344683" MODIFIED="1502454502337" TEXT="pretty-print">
<icon BUILTIN="hourglass"/>
<node CREATED="1502454475268" ID="ID_1399873401" MODIFIED="1502454479199" TEXT="f&#xfc;r Systemdiagnose"/>
<node CREATED="1502454479907" ID="ID_234469818" MODIFIED="1502454491525" TEXT="lesbare Formattierung"/>
<node CREATED="1502454492162" ID="ID_983774503" MODIFIED="1502454496237" TEXT="auf sp&#xe4;ter vertagt"/>
</node>
</node>
</node>
</node>
<node CREATED="1460934597764" HGAP="223" ID="ID_1014666775" MODIFIED="1576202239196" TEXT="Review" VSHIFT="32">
<font NAME="SansSerif" SIZE="15"/>
<icon BUILTIN="bell"/>
<node CREATED="1460934670043" ID="ID_1299827687" MODIFIED="1518487921095" TEXT="sp&#xe4;ter zu &#xfc;berpr&#xfc;fen">
<node CREATED="1460934686017" ID="ID_900313780" MODIFIED="1518487921095" TEXT="Klarheit"/>
<node CREATED="1460934698430" ID="ID_1527149180" MODIFIED="1518487921095" TEXT="praktischer Kontext"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1460934704022" ID="ID_369718039" MODIFIED="1518487921095" TEXT="fragw&#xfc;rdig">
<icon BUILTIN="help"/>
<node CREATED="1460934726315" ID="ID_865694069" MODIFIED="1518487921095" TEXT="Immutabilit&#xe4;t">
<node CREATED="1460934748064" ID="ID_321786426" MODIFIED="1518487921095" TEXT="keine klare Linie"/>
<node CREATED="1460934753440" ID="ID_44139402" MODIFIED="1518487921095" TEXT="einerseits ja, feste Datenwerte"/>
<node CREATED="1460934764830" ID="ID_594837209" MODIFIED="1518487921095" TEXT="dann aber doch Assignment"/>
<node CREATED="1460934771253" ID="ID_1299180901" MODIFIED="1518487921095" TEXT="und ein Gemurkse bei den Records"/>
</node>
<node CREATED="1460934785067" ID="ID_945933568" MODIFIED="1518487921095" TEXT="Abk&#xfc;rzungen in der Sprache">
<node CREATED="1460934793738" ID="ID_1602968303" MODIFIED="1518487921095" TEXT="Ref::CHILD"/>
<node CREATED="1460934799137" ID="ID_1189559717" MODIFIED="1518487921095" TEXT="Ref::THIS"/>
<node CREATED="1460934802385" ID="ID_961490107" MODIFIED="1518487921095" TEXT="Ref::ATTRIBS"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#990000" CREATED="1443740543812" HGAP="17" ID="ID_1766169268" MODIFIED="1518487921095" TEXT="Tests" VSHIFT="20">
<font NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="bell"/>
<node CREATED="1443740549220" ID="ID_167459949" MODIFIED="1518487921095" TEXT="List-Diff">
<icon BUILTIN="button_ok"/>
<node CREATED="1443740554315" ID="ID_1970336632" MODIFIED="1518487921095" TEXT="Anwenden">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1443740556587" ID="ID_1725890953" MODIFIED="1518487921095" TEXT="Erzeugen">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1443740566042" FOLDED="true" ID="ID_632827470" MODIFIED="1576204707968" TEXT="Baum-Diff">
<icon BUILTIN="prepare"/>
<node CREATED="1443740576744" ID="ID_335386387" MODIFIED="1525124215410" TEXT="Anwenden">
<icon BUILTIN="button_ok"/>
<node CREATED="1443741563019" HGAP="-20" ID="ID_1944319966" MODIFIED="1512926192458" TEXT="Demo-Beispiel" VSHIFT="8">
<icon BUILTIN="button_ok"/>
<node CREATED="1443741578993" ID="ID_318844233" MODIFIED="1443741582069" TEXT="INIT"/>
<node CREATED="1443741591616" ID="ID_1102292452" MODIFIED="1443741607633" TEXT="INS + MUT _THIS_"/>
<node CREATED="1443741620052" ID="ID_1065499540" MODIFIED="1443741633054" TEXT="MOD"/>
<node CREATED="1443741736636" ID="ID_1110914687" MODIFIED="1443741738320" TEXT="PERM"/>
<node CREATED="1443741711120" ID="ID_1289424857" MODIFIED="1443741714651" TEXT="Rekursion"/>
</node>
<node CREATED="1443740607172" HGAP="21" ID="ID_1836453078" MODIFIED="1512926192458" TEXT="INIT" VSHIFT="14">
<node CREATED="1443740625649" ID="ID_1466659920" MODIFIED="1443740670333" TEXT="Attribute + Kinder"/>
<node CREATED="1443740621098" ID="ID_987166264" MODIFIED="1443740625134" TEXT="nur Kinder"/>
<node CREATED="1443740615699" ID="ID_93430092" MODIFIED="1443740679948" TEXT="Attribute"/>
</node>
<node CREATED="1443741317885" ID="ID_1933201882" MODIFIED="1512926192458" TEXT="NAV">
<node CREATED="1443741324236" ID="ID_1812765289" MODIFIED="1512926192459" TEXT="PICK">
<node CREATED="1443741332691" ID="ID_1059350985" MODIFIED="1443741335518" TEXT="Attribut"/>
<node CREATED="1443741337786" ID="ID_70415473" MODIFIED="1443741342997" TEXT="letztes Attribut"/>
<node CREATED="1443741507347" ID="ID_1882468426" MODIFIED="1443741513958" TEXT="nicht vorhandenes"/>
<node CREATED="1444349824563" ID="ID_572700596" MODIFIED="1444349836702" TEXT="anonym: Ref::CHILD"/>
</node>
<node CREATED="1443741349576" ID="ID_1257145184" MODIFIED="1512926192460" TEXT="AFTER">
<node CREATED="1443741365526" ID="ID_1412112386" MODIFIED="1443741372089" TEXT="Attribut"/>
<node CREATED="1443741373013" ID="ID_1922596569" MODIFIED="1512926192460" TEXT="letztes Attribut">
<node CREATED="1443741379924" ID="ID_1574470178" MODIFIED="1443741382960" TEXT="Attribut anf&#xfc;gen"/>
<node CREATED="1443741383579" ID="ID_69718214" MODIFIED="1443741387039" TEXT="Kind anf&#xfc;gen"/>
</node>
<node CREATED="1443741399145" ID="ID_625711902" MODIFIED="1443741409900" TEXT="Kind"/>
<node CREATED="1443741519689" ID="ID_1627922512" MODIFIED="1443741523076" TEXT="nicht vorhandenes"/>
<node CREATED="1443742264333" ID="ID_1331320583" MODIFIED="1443742268596" TEXT="_END_">
<font NAME="SansSerif" SIZE="11"/>
</node>
<node CREATED="1443741448683" ID="ID_1149106472" MODIFIED="1443741456637" TEXT="Frage: wrap erlauben">
<icon BUILTIN="help"/>
</node>
</node>
</node>
<node CREATED="1443740818144" ID="ID_1606823522" MODIFIED="1512926192460" TEXT="INS">
<node CREATED="1443740822151" ID="ID_1509080074" MODIFIED="1512926192461" TEXT="Attribut">
<node CREATED="1443740849731" ID="ID_1736662710" MODIFIED="1443740851743" TEXT="vorne"/>
<node CREATED="1443740852219" ID="ID_546949723" MODIFIED="1443740853615" TEXT="hinten"/>
<node CREATED="1443740854491" ID="ID_730025656" MODIFIED="1443740858070" TEXT="Duplikat"/>
<node CREATED="1443740862570" ID="ID_899234602" MODIFIED="1443740866621" TEXT="Typ-Attribut"/>
<node CREATED="1443740918266" ID="ID_1583583367" MODIFIED="1443740923149" TEXT="Attribut in Kind-Zone"/>
</node>
<node CREATED="1443740870057" ID="ID_1029684307" MODIFIED="1512926192461" TEXT="Kind">
<node CREATED="1443740874416" ID="ID_1507242638" MODIFIED="1443740884674" TEXT="nach dem letzten Attribut"/>
<node CREATED="1443740885287" ID="ID_839165655" MODIFIED="1443740909455" TEXT="im Scope"/>
<node CREATED="1443740967099" ID="ID_1771095243" MODIFIED="1443740976438" TEXT="noch in der Attribut-Zone"/>
</node>
</node>
<node CREATED="1443740986217" ID="ID_1868954463" MODIFIED="1512926192462" TEXT="DEL">
<node CREATED="1443740988710" ID="ID_1745624753" MODIFIED="1512926192462" TEXT="Attribut">
<node CREATED="1443740997760" ID="ID_1984040083" MODIFIED="1443741004867" TEXT="normal"/>
<node CREATED="1443741005718" ID="ID_1595612872" MODIFIED="1443741014489" TEXT="in falscher Ordnung"/>
<node CREATED="1443741015221" ID="ID_587604738" MODIFIED="1443741030671" TEXT="Duplikat"/>
</node>
<node CREATED="1443741060111" ID="ID_1609626537" MODIFIED="1512926192462" TEXT="Kind">
<node CREATED="1443741062863" ID="ID_1087964841" MODIFIED="1443741072913" TEXT="normal"/>
<node CREATED="1443741074333" ID="ID_625561892" MODIFIED="1443741087863" TEXT="noch in der Attribut-Zone"/>
<node CREATED="1443741088619" ID="ID_290604972" MODIFIED="1443741095374" TEXT="in falscher Ordnung"/>
</node>
<node CREATED="1443741637530" ID="ID_397839136" MODIFIED="1443741640949" TEXT="Teilbaum"/>
</node>
<node CREATED="1443741106905" ID="ID_1001938821" MODIFIED="1512926192463" TEXT="PERM">
<node CREATED="1443741110392" ID="ID_513982563" MODIFIED="1443741112764" TEXT="Attribut"/>
<node CREATED="1443741113584" ID="ID_1631505651" MODIFIED="1512926192463" TEXT="Kind">
<node CREATED="1443741137141" ID="ID_300777204" MODIFIED="1443741140008" TEXT="normal"/>
<node CREATED="1443741140596" ID="ID_1663721251" MODIFIED="1443741147135" TEXT="mitten in Attribut-Zone"/>
<node CREATED="1443741147491" ID="ID_1992350599" MODIFIED="1443741152822" TEXT="am Ende der Attribut-Zone"/>
</node>
</node>
<node CREATED="1443741163385" ID="ID_1770431599" MODIFIED="1512926192463" TEXT="MUT">
<node CREATED="1443741167465" ID="ID_1585288084" MODIFIED="1512926192464" TEXT="Objekt by-name">
<node CREATED="1443741182559" ID="ID_1263613083" MODIFIED="1443741185922" TEXT="Attribut"/>
<node CREATED="1443741186486" ID="ID_1416713573" MODIFIED="1443741188010" TEXT="Kind"/>
<node CREATED="1443741654263" ID="ID_68796444" MODIFIED="1443741686295" TEXT="Teilbaum umordnen"/>
</node>
<node CREATED="1443741189590" ID="ID_407606511" MODIFIED="1512926192464" TEXT="Objekt _THIS_">
<node CREATED="1443741204516" ID="ID_899173442" MODIFIED="1443741207247" TEXT="nach INS"/>
<node CREATED="1443741212547" ID="ID_979817893" MODIFIED="1443741225989" TEXT="nach PICK"/>
<node CREATED="1443741226673" ID="ID_1242761745" MODIFIED="1443741229165" TEXT="nach AFTER"/>
<node CREATED="1443741229984" ID="ID_926730195" MODIFIED="1443741233636" TEXT="nach FIND"/>
</node>
</node>
<node CREATED="1460753406868" HGAP="-18" ID="ID_289459316" MODIFIED="1502593581651" TEXT="Spezialf&#xe4;lle" VSHIFT="25">
<node COLOR="#338800" CREATED="1460753417178" ID="ID_1333254858" MODIFIED="1512926192465" TEXT="native bindings">
<linktarget COLOR="#639ad5" DESTINATION="ID_1333254858" ENDARROW="Default" ENDINCLINATION="1091;0;" ID="Arrow_ID_1011836019" SOURCE="ID_10780308" STARTARROW="None" STARTINCLINATION="1150;185;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1460753433312" ID="ID_94456036" MODIFIED="1502593626008" TEXT="Binden an Collection von Primitiven">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1460753444735" ID="ID_1100731476" MODIFIED="1502593621731" TEXT="Binden an Collection von intelligenten Spezialtypen">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1460753460940" ID="ID_677690723" MODIFIED="1502593616768" TEXT="Komposit aus Attribut-Bindung und Kinder-Collection-Bindung">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1686440015880" ID="ID_1210980349" MODIFIED="1686440023702" TEXT="Allokatoren">
<node CREATED="1686439921942" ID="ID_414891440" MODIFIED="1686440085275" TEXT="API-Scheme + Concept f&#xfc;r Allokator">
<linktarget COLOR="#61748b" DESTINATION="ID_414891440" ENDARROW="Default" ENDINCLINATION="-1705;141;" ID="Arrow_ID_1346780792" SOURCE="ID_1468838708" STARTARROW="None" STARTINCLINATION="-606;-35;"/>
<node CREATED="1686440109090" ID="ID_9110272" MODIFIED="1686440111594" TEXT="Allo">
<node CREATED="1686440112617" ID="ID_1724629144" MODIFIED="1686440118311" TEXT="ein Funktor">
<node CREATED="1686440141688" ID="ID_34122927" MODIFIED="1686440150192" TEXT="hat variadischen Function-call-Operator"/>
<node CREATED="1686440152351" ID="ID_466400198" MODIFIED="1686440164225" TEXT="liefert Referenz auf ein neu erzeugtes Objekt"/>
</node>
<node CREATED="1686440796916" ID="ID_1611026360" MODIFIED="1686440803081" TEXT="Zugriff">
<node CREATED="1686440803679" ID="ID_398802090" MODIFIED="1686440811090" TEXT="per Referenz auf eine Implementierung"/>
<node CREATED="1686440811749" ID="ID_1364654659" MODIFIED="1686440816921" TEXT="per Value Front-End">
<node CREATED="1686440832060" ID="ID_976218427" MODIFIED="1686440839350" TEXT="dieses verpackt einen Pointer"/>
<node CREATED="1686440839859" ID="ID_863438543" MODIFIED="1686440847211" TEXT="ist kopierbar und zuweisbar"/>
<node CREATED="1686440850702" ID="ID_40446495" MODIFIED="1686440971872" TEXT="implementiert den Function-call-Operator per Delegation">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      und zwar typischerweise per <i>Indirektion</i>&#160;an einen low-level Allocator, bei dem es sich aber auch um einen Slot in einem Allocation-Cluster handeln kann
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node CREATED="1686440973261" ID="ID_778520978" MODIFIED="1686441058168" TEXT="Lifecycle mu&#xdf; im Einzelfall gekl&#xe4;rt werden">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <ul>
      <li>
        bevorzugt: die &#187;achitektonische L&#246;sung&#171; : es ist daf&#252;r gesorgt da&#223; die Allokator-Impl garantiert l&#228;nger lebt als der Client
      </li>
      <li>
        in schwierigen F&#228;llen: ref-counting Front-End-Handle denkbar
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1686440286925" ID="ID_1913917309" MODIFIED="1686440290128" TEXT="AlloP">
<node CREATED="1686440291217" ID="ID_1760718510" MODIFIED="1686440311118" TEXT="wie Allo; aber liefert smart-Ptr/Handle per Value "/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1686696361018" ID="ID_320473769" MODIFIED="1686696804492" TEXT="generischen Rahmen + front-End schaffen">
<linktarget COLOR="#5954b6" DESTINATION="ID_320473769" ENDARROW="Default" ENDINCLINATION="-929;56;" ID="Arrow_ID_593145833" SOURCE="ID_1712895163" STARTARROW="None" STARTINCLINATION="-1213;-50;"/>
<linktarget COLOR="#5954b6" DESTINATION="ID_320473769" ENDARROW="Default" ENDINCLINATION="-1037;63;" ID="Arrow_ID_34332665" SOURCE="ID_725756209" STARTARROW="None" STARTINCLINATION="-1213;-50;"/>
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1686696687820" ID="ID_576907632" MODIFIED="1686696698610" TEXT="Entwurf: AllocatorHandle">
<icon BUILTIN="pencil"/>
<node CREATED="1686696703507" ID="ID_1801575044" MODIFIED="1686696716990" TEXT="entspricht dem API-Schema/Konzept"/>
<node COLOR="#338800" CREATED="1686696718121" ID="ID_1035772269" MODIFIED="1686696767814" TEXT="vorl&#xe4;ufig implementiert durch std::list mit Inline-Buffer">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1686696768847" ID="ID_48162464" MODIFIED="1686696788657" TEXT="das gleiche Aufruf-Pattern in AllocationCluster integrieren">
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
</node>
<node CREATED="1696538097698" ID="ID_762902476" MODIFIED="1696538102051" TEXT="Concurrency">
<node BACKGROUND_COLOR="#d2beaf" COLOR="#46418e" CREATED="1696538113039" ID="ID_314350695" MODIFIED="1696538164825" TEXT="#1279 : Beschlu&#xdf;(9/23) &#x27f9; auf C++ Standardlib aufgebaut">
<icon BUILTIN="button_ok"/>
<node CREATED="1696538113039" MODIFIED="1696538113039" TEXT="fr&#xfc;her gab es einen in C implementieren Threadpool-Service"/>
<node CREATED="1696538113039" MODIFIED="1696538113039" TEXT="im Zuge &#xbb;Playback Vertical Slice&#xab; wurde Anforderungs-Analyse gemacht"/>
</node>
<node COLOR="#338800" CREATED="1695597011139" FOLDED="true" ID="ID_956380031" MODIFIED="1696538202836" TEXT="Neues Design Thread-Wrapper">
<linktarget COLOR="#499ca8" DESTINATION="ID_956380031" ENDARROW="Default" ENDINCLINATION="-1261;104;" ID="Arrow_ID_482806479" SOURCE="ID_125138411" STARTARROW="None" STARTINCLINATION="-1063;-42;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1695597146529" ID="ID_938038908" MODIFIED="1695948178166" TEXT="std::thread liefert fast alle Funktionalit&#xe4;t">
<icon BUILTIN="idea"/>
<node COLOR="#435e98" CREATED="1695600626208" ID="ID_688465099" MODIFIED="1695602235450" TEXT="als Basisklasse sichtbar?">
<icon BUILTIN="help"/>
<node CREATED="1695600644749" ID="ID_1230170765" MODIFIED="1695600664138" TEXT="damit k&#xf6;nnte man &#xbb;wie mit C++ - Threads&#xab; programmieren"/>
<node CREATED="1695600666050" ID="ID_642355226" MODIFIED="1695600701593" TEXT="das h&#xe4;tte aber auch den Nachteil, da&#xdf; man die join/detach()-Unterscheidung unterl&#xe4;uft"/>
<node CREATED="1695602083733" ID="ID_1989367844" MODIFIED="1695602231389" TEXT="also besser nicht exponieren &#x2014; ggfs Funktionalit&#xe4;t nachr&#xfc;sten">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>YAGNI.</p>
    <p>
      Zun&#228;chst einmal so wenig Funktionalit&#228;t wie m&#246;glich durchreichen, und das nur auf den festen Bahnen gem&#228;&#223; Design; im Zweifelsfall ist es besser, spezielle Funktionalit&#228;t im Bedarfsfall in den Wrapper zu packen; genau das ist ja <i>der Vorteil einer Hilfsklasse direkt im Projekt.</i>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1695602445469" ID="ID_705070648" MODIFIED="1695602458204" TEXT="Problem mit Init / Sync">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1695602459300" ID="ID_1560126243" MODIFIED="1695602546925" TEXT="das ist ein inh&#xe4;rentes Problem mit diesem &#xbb;Thread-Objekt&#xab; - Design">
<icon BUILTIN="clanbomber"/>
</node>
<node CREATED="1695602549712" ID="ID_331491775" MODIFIED="1695602590334" TEXT="tritt nur auf, wenn die Implementierung vom Thread erbt"/>
<node CREATED="1695602592608" ID="ID_207463236" MODIFIED="1695603506751" TEXT="Gefahr: Race zwischen dem abgeleiteten Ctor und der bereits startenden Thread-Funktion">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Zwar sichert der Standard zu, da&#223; das Ende des ctor-Aufrufs <i>synchronizes_with</i>&#160; dem Start der Thread-Funktion. Streng logisch kann das aber nur f&#252;r den std::thread-Konstruktor <i>selber </i>gelten (andernfalls h&#228;tte man mit einem Sequence-Point argumentieren m&#252;ssen, und nicht mit dem ctor selber; das w&#252;rde dann aber auch wieder eine unerw&#252;nschte Statefulness einf&#252;hren, weil dann im gesamten umschlie&#223;enden Ausdruck der Thread <i>eben noch nicht l&#228;uft, </i>was das RAII-Konzept untergraben w&#252;rde).
    </p>
    <br/>
    <p>
      Das ist nun zwar ziemlich unwahrscheinlich (weil normalerweise der Scheduler immer eine erhebliche Zeit braucht, bis ein anderer Thread &#252;berhaupt zum Zug kommt), aber leider ist es demzufolge <i>theoretisch m&#246;glich, </i>da&#223; eine im abgeleiteten Objekt definierte Thread-Funktionalit&#228;t bereits auf eine noch nicht vollst&#228;ndig initialisierte Objektinstanz zugreift, oder da&#223; die Initialisierung der abgeleiteten Klasse Werte in lokalen Feldern &#252;berschreibt, die aus der bereits startenden Thread-Funktion gesetzt wurden. Unerkl&#228;rliches und reproduzierbares Verhalten w&#228;re die Folge. Und das l&#228;&#223;t sich aus dem Wrapper heraus nicht beheben (zumindest nicht ohne verwirrende Konventionen einzuf&#252;hren).
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="broken-line"/>
</node>
<node CREATED="1695603509089" ID="ID_710810951" MODIFIED="1695603513019" TEXT="Abhilfe">
<icon BUILTIN="idea"/>
<node CREATED="1695603514279" ID="ID_1788387529" MODIFIED="1695603548957">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      explizit eine <font face="Monospaced" color="#5e1caa">lib::SyncBarrier</font>&#160;<i>in der Implementierung </i>einbinden
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1695603557370" ID="ID_1092955208" MODIFIED="1695603572524" TEXT="den Thread-Wrapper nur als Member-Feld verwenden, nicht als Basisklasse"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1695597148544" ID="ID_1135683799" MODIFIED="1695651329233" TEXT="die  sync() / syncThread() -Barrier ersatzlos zur&#xfc;ckbauen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1695597151336" FOLDED="true" ID="ID_854108015" MODIFIED="1695948193281" TEXT="Konstruktor-Syntax anpassen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1695606839044" ID="ID_1024366951" MODIFIED="1695607662788" TEXT="ausweiten auf std::invoke">
<icon BUILTIN="yes"/>
<node CREATED="1695606859838" ID="ID_1502075570" MODIFIED="1695606889162" TEXT="kann damit alles &#xbb;function-like&#xab; ausf&#xfc;hren (auch Member-Functions)">
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#338800" CREATED="1695606903540" FOLDED="true" ID="ID_1827438483" MODIFIED="1695859113052" TEXT="Textuelle Thread-Kennung setzen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1695606935311" ID="ID_1002758793" MODIFIED="1695688125602" TEXT="nimmt jetzt einen string...">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...damit man auch zusammengesetzte/formatierte Werte bauen kann
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1695606971754" ID="ID_1204181207" MODIFIED="1695948106014" TEXT="kann man das per PTHREAD setzen?">
<icon BUILTIN="help"/>
<node CREATED="1695685220762" ID="ID_850524224" MODIFIED="1695685236149" TEXT="die POSIX-L&#xf6;sung ist unklar"/>
<node CREATED="1695685236698" ID="ID_443970152" MODIFIED="1695685253886" TEXT="es gibt eine GNU-Erweiterung in der glibc">
<icon BUILTIN="idea"/>
<node CREATED="1695685262204" ID="ID_163592402" LINK="https://linux.die.net/man/3/pthread_getname_np" MODIFIED="1695685265264" TEXT="manpage"/>
<node CREATED="1695685265924" ID="ID_1458536316" LINK="https://stackoverflow.com/a/7989973" MODIFIED="1695685429000" TEXT="Stackoverflow"/>
</node>
</node>
<node COLOR="#338800" CREATED="1695685434157" ID="ID_68260611" MODIFIED="1695859111067" TEXT="Implementierung">
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1695688011733" ID="ID_706080445" MODIFIED="1695688040471" TEXT="Linux-spezifisch">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1695688043077" ID="ID_1889925462" MODIFIED="1695688084658">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      std::thread::native_handle() &#10236; liefert hier <font face="Monospaced" color="#ff270c">pthread_t</font>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1695688094422" ID="ID_1651431673" MODIFIED="1695688112227" TEXT="verwende pthread_setname_np() aus der Glibc"/>
</node>
<node COLOR="#338800" CREATED="1695688145491" ID="ID_295533997" MODIFIED="1695948095403" TEXT="pr&#xfc;fen: auch individuell?">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1695688164064" ID="ID_421411220" MODIFIED="1695688173273" TEXT="Eclipse: sehe den Identifier">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1695948075335" ID="ID_1873157858" MODIFIED="1695948093811" TEXT="sehe auch variabel dekorierte IDs">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1695948115970" ID="ID_1540583557" MODIFIED="1695948165115" TEXT="die mehrfach auf Stackoverflow berichteten Probleme sind also gefixt">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      es wurde von Race-Problemen berichtet, und davon, da&#223; der zuletzt gesetzte Identifier pl&#246;tzlich auf allen Threads auftaucht
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1695607699183" ID="ID_470294434" MODIFIED="1695948172946" TEXT="Ctor-Varianten">
<icon BUILTIN="button_ok"/>
<node COLOR="#5b280f" CREATED="1695607713041" ID="ID_1988127528" MODIFIED="1695947917413" TEXT="ohne Thread-Kennung">
<icon BUILTIN="button_cancel"/>
<node CREATED="1695947918452" ID="ID_1572774749" MODIFIED="1695947927175" TEXT="keine gute Idee"/>
<node CREATED="1695947927691" ID="ID_1741044845" MODIFIED="1695947938603" TEXT="Gefahr von overload-ambiguity">
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node COLOR="#338800" CREATED="1695607745859" ID="ID_1296792416" MODIFIED="1695947904446" TEXT="direkt mit einem Member-Fun-Ptr">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      sollte dann den this-Typ extrahieren und den this-Ptr automatisch injizieren
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#7898aa" DESTINATION="ID_1296792416" ENDARROW="Default" ENDINCLINATION="-613;39;" ID="Arrow_ID_1122896333" SOURCE="ID_1888383911" STARTARROW="None" STARTINCLINATION="88;-226;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1695915569144" FOLDED="true" ID="ID_1968434740" MODIFIED="1695947900416" TEXT="auch die Thread-ID generieren">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1695915584543" ID="ID_1434344091" MODIFIED="1695915603355" TEXT="erste Fassung: joinArgList">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1695946203234" ID="ID_499999802" MODIFIED="1695947847905" TEXT="Nebenthema: API-Design f&#xfc;r join()">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1695946248572" ID="ID_836851069" MODIFIED="1695946460622" TEXT="es fehlt eine Varargs-Variante">
<icon BUILTIN="broken-line"/>
<node CREATED="1695946473966" ID="ID_1960717352" MODIFIED="1695946522852" TEXT="join (Seq, delim) : Sequenz /Container ist inh&#xe4;rent homogen"/>
<node CREATED="1695946523910" ID="ID_1452548190" MODIFIED="1695946550905" TEXT="join (Initializer-list, delim) : ebenso, homogener Typ"/>
</node>
<node CREATED="1695946258298" ID="ID_1253418449" MODIFIED="1695946448060" TEXT="die kann man aber in dem gew&#xe4;hlten API-Schema nicht (mehr) realisieren">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      es ergeben sich zwei Schwierigkeiten...
    </p>
    <ul>
      <li>
        eine Varargs-Variante w&#252;rde die bestehenden Overloads kanibalisieren bzw. w&#252;rde f&#252;r 1-2 Argumente&#160;einen &quot;ambiguous overload&quot; provozieren
      </li>
      <li>
        mit einer Varargs-Variante gibt es keine M&#246;glichkeit, den Delimiter anzugeben
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="stop-sign"/>
</node>
<node CREATED="1695946572960" ID="ID_810272356" MODIFIED="1695946595159" TEXT="man k&#xf6;nnte es leicht per stringify(args...) realisieren">
<node CREATED="1695946597085" ID="ID_25917917" MODIFIED="1695946612918" TEXT="aber stringify selber braucht einen Container-Parameter"/>
<node CREATED="1695946617794" ID="ID_1039128025" MODIFIED="1695946642579" TEXT="es gibt daf&#xfc;r bisher nur eine Verwendung in EventLog">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1695946643647" ID="ID_175299311" MODIFIED="1695946663576" TEXT="ansonsten k&#xf6;nnte man das n&#xe4;mlich auf vector&lt;string&gt; festlegen"/>
<node CREATED="1695946673835" ID="ID_1137129563" MODIFIED="1695946859221" TEXT="der Name &quot;stingify&quot; ist gut, aber nicht variierbar">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Er ist aus mehreren Gr&#252;nden gut
    </p>
    <ul>
      <li>
        er ist bereits konventionell; im Besonderen in der C-Marko-Form (die Lumiera auch verwendet)
      </li>
      <li>
        er teilt sich sprachlich gut mit
      </li>
    </ul>
    <p>
      Aber es ist ein sehr fester Name; er erm&#246;glicht kaum Verk&#252;rzungen oder Varianten
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1695946866425" ID="ID_702636837" MODIFIED="1695947005107" TEXT="&#x27f9; gib der flexiblen stringify-Variante einen neuen Namen: collectStr"/>
<node CREATED="1695947721359" ID="ID_1899069832" MODIFIED="1695947749039" TEXT="damit gen&#xfc;gt in den allermeisten F&#xe4;llen der kurze Nahme stringify"/>
</node>
</node>
<node CREATED="1695947879402" ID="ID_93040397" MODIFIED="1695947896944" TEXT="au&#xdf;erdem: verwende nur den Typnamen vom Tr&#xe4;ger der Member-Funktion"/>
<node COLOR="#5b280f" CREATED="1695947851257" ID="ID_1517502415" MODIFIED="1695947872327" TEXT="das Thema nicht &#xfc;bertreiben">
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node COLOR="#338800" CREATED="1695915605227" ID="ID_414676042" MODIFIED="1695915614639" TEXT="downcast von *this machen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1695915623001" ID="ID_284696799" MODIFIED="1695915685105" TEXT="keine weiteren compile-Time-Checks">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      das macht nur den Code komplex, macht aber die Diagnostik nicht besser; std::invoke hat bereits gute Diagnostik (man mu&#223; sie nur lesen k&#246;nnen)
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1695597337839" FOLDED="true" ID="ID_1776858144" MODIFIED="1696357531093" TEXT="detach() / join-Differenzierung">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1695647408544" ID="ID_805151848" MODIFIED="1695651308867" TEXT="isValid() bzw. bool-Check">
<icon BUILTIN="button_ok"/>
<node CREATED="1695647421701" ID="ID_1863075325" MODIFIED="1695647426362" TEXT="noch notwendig?">
<node CREATED="1695647427993" ID="ID_1136703438" MODIFIED="1695647736631" TEXT="bisher nur intern verwendet">
<icon BUILTIN="info"/>
<node CREATED="1695647469998" ID="ID_1784422581" MODIFIED="1695647479753" TEXT="invokedWithinThread()"/>
<node CREATED="1695647480310" ID="ID_1790796451" MODIFIED="1695647497911" TEXT="sync() / syncPoint()"/>
</node>
<node CREATED="1695647503234" ID="ID_1607779605" MODIFIED="1695647520450">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      der Name ist <i>nicht besonders klar</i>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#435e98" CREATED="1695647529423" ID="ID_73599708" MODIFIED="1695647771420" TEXT="wof&#xfc;r sinnvoll?">
<arrowlink COLOR="#5321e5" DESTINATION="ID_1350304000" ENDARROW="Default" ENDINCLINATION="19;1;" ID="Arrow_ID_795204262" STARTARROW="None" STARTINCLINATION="14;24;"/>
<node CREATED="1695647550628" ID="ID_90948508" MODIFIED="1695647582331" TEXT="f&#xfc;r joinable-Threads &#x27fc; sie durchlaufen einen Proze&#xdf;"/>
<node CREATED="1695647620445" ID="ID_1998559139" MODIFIED="1695647729498" TEXT="es gibt die &#xbb;Hintert&#xfc;r&#xab; mit dem protected default-Ctor">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Die hatte ich eingebaut, um f&#252;r spezialisierte abgeleitete Klassen doch noch erweiterte Zustands&#252;berg&#228;nge zu erm&#246;glichen
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node CREATED="1695647738890" ID="ID_1350304000" MODIFIED="1695647759234" TEXT="besser nur bool-check">
<linktarget COLOR="#5321e5" DESTINATION="ID_1350304000" ENDARROW="Default" ENDINCLINATION="19;1;" ID="Arrow_ID_795204262" SOURCE="ID_73599708" STARTARROW="None" STARTINCLINATION="14;24;"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1695677839257" ID="ID_1013931122" MODIFIED="1695859029074" TEXT="Problem: R&#xfc;ckgabewert von join()">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1695677870757" ID="ID_1158604113" MODIFIED="1695678100114" TEXT="war f&#xfc;r die alte Implementierung kein Problem">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...da die Implementierung mit einem aktiven Threadpool verbunden war, gab es dort auch eine Managment-Datenstruktur; die Threadpool-Logik hat eine eventuell im Thread noch erkannte Fehlerflag dorthin gespeichert &#8212; und join() konnte diese Fehlerflag dann einfach abholen.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1695678101764" ID="ID_411970965" MODIFIED="1695678328883" TEXT="hat bisher aber nur Fehlerflags abgedeckt, keine Exceptions">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...C kennt ja keine Exceptions &#8212; und der Author des Threadpool-Frameworks hielt Exceptions f&#252;r ein bestenfalls &#252;berfl&#252;ssiges Feature, das es ganz bestimmt nicht rechtfertigt, zus&#228;tzlichen Aufwand zu treiben
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1695678330517" ID="ID_1924651405" MODIFIED="1695678362369" TEXT="der R&#xfc;ckgabewert wurde bisher &#xfc;ber einen &#xbb;Either-Typ&#xab; dargestellt">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      gemeint ist lib::Result
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#e4f1c2" DESTINATION="ID_47372972" ENDARROW="Default" ENDINCLINATION="740;34;" ID="Arrow_ID_339818403" STARTARROW="None" STARTINCLINATION="851;32;"/>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1695679266329" FOLDED="true" ID="ID_1299395095" MODIFIED="1695679291989" TEXT="das Feature erscheint mir &#x201e;halbgar&#x201c;...">
<icon BUILTIN="smiley-neutral"/>
<node CREATED="1695679293241" ID="ID_782789148" MODIFIED="1695679338571" TEXT="Exceptions k&#xf6;nnten strukturierte Diagnose-Info transportieren"/>
<node CREATED="1695679339661" ID="ID_292233702" MODIFIED="1695679357836" TEXT="aber genau das wird nicht unterst&#xfc;tzt"/>
<node CREATED="1695679358706" ID="ID_1430818138" MODIFIED="1695679382617" TEXT="speziell f&#xfc;r ReturnValue wird dann eine pseudo-Exception fabriziert"/>
<node CREATED="1695679388033" ID="ID_785338496" MODIFIED="1695679526638" TEXT="das Abholen+Auswerfen von Exceptions widerspricht dem Sinn einer join()-Operation">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...und zwar im Besonderen, wenn man in einer &#187;reaping-loop&#171; alle Kind-Threads ernten m&#246;chte; dann w&#252;rde nur ein Fehler ausgeworfen, und die weiteren Kinder bleiben ungeerntet (und terminieren jetzt, mit der C++14-L&#246;sung sogar das Programm)
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1695679527561" ID="ID_1584831418" MODIFIED="1695679550241" TEXT="und das Naheliegendste, n&#xe4;mlich das Abholen von Ergebnissen ist nicht implementiert"/>
<node CREATED="1695679555637" ID="ID_1907767140" MODIFIED="1695679621871" TEXT="zu allem &#xdc;berfluss...">
<node CREATED="1695679622825" ID="ID_1467930204" MODIFIED="1695679633789" TEXT="auf Fehlerbehandlung sollte man besser doch keine Logik aufbauen"/>
<node CREATED="1695679639113" ID="ID_928695067" MODIFIED="1695679655850" TEXT="und eigentlich sollte man Futures verwenden, und nicht thread::join()"/>
</node>
</node>
<node CREATED="1695679664326" FOLDED="true" ID="ID_1421960449" MODIFIED="1695679670065" TEXT="bisher nur zwei Verwendungen in Tests">
<icon BUILTIN="info"/>
<node CREATED="1695679685747" ID="ID_1845700436" MODIFIED="1695679693430" TEXT="DiagnosticContext_test::verify_heavilyParallelUsage">
<node CREATED="1695679695554" ID="ID_1757482897" MODIFIED="1695679724753" TEXT="hier erscheint das Feature sinnvoll"/>
<node CREATED="1695679747450" ID="ID_787283000" MODIFIED="1695679769915" TEXT="die eigentliche Verifikation f&#xfc;r den Testfall mu&#xdf; noch im Thread erfolgen"/>
<node CREATED="1695679770671" ID="ID_740996244" MODIFIED="1695679787345" TEXT="...und sollte dann per join().maybeThrow() in den Test-Thread durchgeworfen werden"/>
</node>
<node CREATED="1695679805882" ID="ID_1362144709" MODIFIED="1695679814293" TEXT="SessionCommandFunction_test::perform_massivelyParallel">
<node CREATED="1695679822509" ID="ID_1148407803" MODIFIED="1695679907392" TEXT="hier wirkt das Feature nur wie Zusatz-Check"/>
<node CREATED="1695679908023" ID="ID_1958313345" MODIFIED="1695679933919" TEXT="wenn Fehler irgendwo in der Command-Verarbeitung auftreten w&#xfc;rden"/>
<node CREATED="1695679934545" ID="ID_1686820062" MODIFIED="1695679967433" TEXT="dann w&#xfc;rden zumindest der Erste Fehler druchgeworfen &#x27f9; test scheitert"/>
<node CREATED="1695680196374" ID="ID_1112893340" MODIFIED="1695680217919" TEXT="Naja ... der Test sollte auch so scheitern, wenn die Command-Sequenz gebrochen w&#xe4;re"/>
<node CREATED="1695680219739" ID="ID_1686565092" MODIFIED="1695680272271" TEXT="AAAaber &#x2014; diese Logik erscheint ziemlich trickreich und undurchsichtig"/>
<node CREATED="1695680292241" ID="ID_971197976" MODIFIED="1695680319761" TEXT="und deckt nicht alles Ab, was einem Command so &#x201e;zusto&#xdf;en&#x201c; kann..."/>
<node CREATED="1695680321963" ID="ID_1003295003" MODIFIED="1695680331789" TEXT="insgesamt ehr ungl&#xfc;cklich damit...">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="smily_bad"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1695680809244" FOLDED="true" ID="ID_530073405" MODIFIED="1695859093316" TEXT="YAGNI &#x27f9; aufgeben?">
<font NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="help"/>
<icon BUILTIN="stop-sign"/>
<node CREATED="1695680837800" ID="ID_556594754" MODIFIED="1695680932789" TEXT="das ganze Thread-Join-Ged&#xf6;ns hat sich generell als nicht so gl&#xfc;cklich herausgestellt">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Das ist ein klassischer Fall f&#252;r ein Feature, das zu Beginn so offensichtlich und irre n&#252;tzlich aussieht &#8212; dann aber in der Realit&#228;t nicht wirklich &#8222;fliegt&#8220;
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1695680933859" ID="ID_9664587" MODIFIED="1695680967629">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      heute bevorzugt man f&#252;r &#228;hnliche Anforderungen das <b>Future / Promise</b>&#160;- Konstrukt
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1695680969567" ID="ID_854612368" MODIFIED="1695681002718" TEXT="oder man sammelt gleich Ergebnis-Nachrichten in einer Lock-free-Queue"/>
<node CREATED="1695681067025" ID="ID_1829988819" MODIFIED="1695681202200" TEXT="Fehler in Threads k&#xf6;nnen im Einzelfall sehr relevant sein &#x2014; das ist aber nix Generisches">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Denn tats&#228;chlich sind aufgetretene Fehler dann ehr schon eine Form von Zustand, den man mit einem speziellen Protokoll im Thread-Objekt erfassen und nach dem join() abfragen sollte; so kann man auch die Ergebnisse mehrerer Threads korrekt kombinieren
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1695681207655" ID="ID_1998022902" MODIFIED="1695681463386" TEXT="brauche dann aber einen Ersatz f&#xfc;r die zwei Tests">
<arrowlink COLOR="#b65b7a" DESTINATION="ID_478666570" ENDARROW="Default" ENDINCLINATION="41;-72;" ID="Arrow_ID_1595086726" STARTARROW="None" STARTINCLINATION="-427;24;"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1695747229306" FOLDED="true" ID="ID_1952535260" MODIFIED="1695747238936" TEXT="am n&#xe4;chsten Tag dann wieder Zweifel">
<icon BUILTIN="smily_bad"/>
<node BACKGROUND_COLOR="#d7cfb0" COLOR="#3fa41b" CREATED="1695747248047" ID="ID_1584465729" MODIFIED="1695747828936" TEXT="&#xbb;es ist so sch&#xf6;ne Physik&#xab;"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1695748401477" ID="ID_1245905649" MODIFIED="1695748490377" TEXT="ohne einen R&#xfc;ckgabewert wirkt die &#xbb;Joinable&#xab;-Variante insgesamt fragw&#xfc;rdig">
<linktarget COLOR="#8c5869" DESTINATION="ID_1245905649" ENDARROW="Default" ENDINCLINATION="10;123;" ID="Arrow_ID_155554446" SOURCE="ID_1803056303" STARTARROW="None" STARTINCLINATION="129;7;"/>
<icon BUILTIN="stop-sign"/>
</node>
<node COLOR="#641f4f" CREATED="1695748527108" ID="ID_964369484" MODIFIED="1695748573531" TEXT="Policy-Design ungerechtfertigt">
<icon BUILTIN="broken-line"/>
</node>
<node COLOR="#9b0f8e" CREATED="1695748885164" ID="ID_1477111545" MODIFIED="1695749387232" TEXT="verdammt noch einmal!!">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      <b>Knoten durchhauen</b>!
    </p>
    <p>
      Warum qu&#228;le ich mich damit herum, was ich k&#252;nftig d&#252;rfen darf, und was unangemessen w&#228;re? Meine Einstellung ist doch, da&#223; eine Library strukturieren sollte, aber nicht vorgreifen und bestimmen. Wenn die letzten 10 Jahre eines gezeigt haben, dann den Umstand, da&#223; der Thread-Wrapper vor <b>allem f&#252;r Tests</b>&#160;verwendet wird. Und genau da gelten die ganzen Performance- und Architektur-&#220;berlegungen &#252;berhaupt nicht; sondern es kommt auf die den Umst&#228;nden entsprechende, gradlinige Formulierung im Testcode an. Und da k&#246;nnte <i>unter Umst&#228;nden </i>Fork-Join genau die KISS-L&#246;sung sein. Insofern w&#228;re das Design bereits nahezu gelungen: es trennt einen intendierten Standardfall ab, l&#228;&#223;t aber sonst alle T&#252;ren offen....
    </p>
  </body>
</html></richcontent>
<edge COLOR="#9a3d6d"/>
<arrowlink COLOR="#dd26d2" DESTINATION="ID_1308996711" ENDARROW="Default" ENDINCLINATION="194;-5;" ID="Arrow_ID_1982134212" STARTARROW="None" STARTINCLINATION="172;16;"/>
<font NAME="SansSerif" SIZE="15"/>
<icon BUILTIN="smiley-angry"/>
</node>
<node COLOR="#435e98" CREATED="1695749294374" HGAP="18" ID="ID_1090986395" MODIFIED="1695749396815" TEXT="besser machen!!!!" VSHIFT="3">
<font NAME="SansSerif" SIZE="9"/>
<icon BUILTIN="ksmiletris"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1695749704247" ID="ID_827179831" MODIFIED="1695859019302" TEXT="R&#xfc;ckgabewert per lib::Result">
<icon BUILTIN="button_ok"/>
<node CREATED="1695749715525" ID="ID_1460243569" MODIFIED="1695851233120" TEXT="das ist ein Either-Typ">
<arrowlink COLOR="#fdfbd7" DESTINATION="ID_673181142" ENDARROW="Default" ENDINCLINATION="-977;134;" ID="Arrow_ID_1350491310" STARTARROW="None" STARTINCLINATION="-878;104;"/>
<icon BUILTIN="yes"/>
<node CREATED="1695850216514" ID="ID_47372972" MODIFIED="1695850512560" TEXT="hatte ich damals genau f&#xfc;r diesen Zweck hier eingef&#xfc;hrt">
<linktarget COLOR="#e4f1c2" DESTINATION="ID_47372972" ENDARROW="Default" ENDINCLINATION="740;34;" ID="Arrow_ID_339818403" SOURCE="ID_1924651405" STARTARROW="None" STARTINCLINATION="851;32;"/>
</node>
<node CREATED="1695850229353" ID="ID_411434486" MODIFIED="1695850236531" TEXT="...und dann sp&#xe4;ter verallgemeinert"/>
<node CREATED="1695850237105" ID="ID_543765362" MODIFIED="1695850245163" TEXT="wird jetzt bereits im GUI verwendet"/>
</node>
<node COLOR="#338800" CREATED="1695749719789" FOLDED="true" ID="ID_1636786367" MODIFIED="1695776447431" TEXT="diesen modernisieren">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1695749730882" ID="ID_720335444" MODIFIED="1695776449174" TEXT="sollte einen std::exception_ptr nehmen">
<icon BUILTIN="idea"/>
<node CREATED="1695749758416" ID="ID_1018098640" MODIFIED="1695749764076" TEXT="dieser dient als Varianten-Flag"/>
<node CREATED="1695749764647" ID="ID_160637410" MODIFIED="1695749781209">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      und kann zugleich <b>jedwede</b>&#160;Exception halten
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1695749796803" ID="ID_1154699124" MODIFIED="1695749823763" TEXT="API sollte k&#xfc;nftig eine Exception als &#xbb;right value&#xab; nehmen"/>
<node CREATED="1695749825847" ID="ID_1357368217" MODIFIED="1695749841931">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      und ansonsten aber <i>left-biassed</i>&#160;sein
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#435e98" CREATED="1695779117581" ID="ID_313781081" MODIFIED="1695779285785">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      incl <i>perfect forwarding</i>
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#7c86a6" DESTINATION="ID_1103669600" ENDARROW="Default" ENDINCLINATION="-1340;79;" ID="Arrow_ID_171962477" STARTARROW="None" STARTINCLINATION="-729;83;"/>
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1695779300895" ID="ID_877020791" MODIFIED="1695779311935" TEXT="Result_test">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1695776467076" ID="ID_992547663" MODIFIED="1695859016294" TEXT="den &#xbb;Either&#xab; value (lib::Result) per policy einbringen">
<linktarget COLOR="#4a94b9" DESTINATION="ID_992547663" ENDARROW="Default" ENDINCLINATION="70;74;" ID="Arrow_ID_1159950145" SOURCE="ID_836153579" STARTARROW="None" STARTINCLINATION="245;15;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node CREATED="1695657061352" ID="ID_1954347934" MODIFIED="1695747338448" TEXT="Code-Anordnung">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1695657067583" ID="ID_1218314116" MODIFIED="1695657096921" TEXT="Problem: weitgehend redundant">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1695657076966" ID="ID_535675901" MODIFIED="1695657084689" TEXT="aber dennoch variabel"/>
<node CREATED="1695657085260" ID="ID_1430248620" MODIFIED="1695657093224" TEXT="keine VTable erw&#xfc;nscht"/>
</node>
<node CREATED="1695657098101" ID="ID_273999408" MODIFIED="1695657107014" TEXT="L&#xf6;sung: parametrisierbare Basisklasse"/>
<node CREATED="1695657111918" ID="ID_463997820" MODIFIED="1695657217094" TEXT="in Sub-Namespace lib::thread">
<arrowlink COLOR="#6e85a1" DESTINATION="ID_750029588" ENDARROW="Default" ENDINCLINATION="-741;56;" ID="Arrow_ID_1885189676" STARTARROW="None" STARTINCLINATION="-489;0;"/>
</node>
<node COLOR="#435e98" CREATED="1695747369039" FOLDED="true" ID="ID_1807166092" MODIFIED="1695858985050" TEXT="immer noch unklar und problematisch">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Es w&#228;re zwar so irgendwie hinzubekommen &#8212; aber <i>weit entfernt von einem guten Design.</i>
    </p>
    <p>
      Ich baue hier eine auf Dauer angelegte L&#246;sung, die auch sichtbar ist und in Frage gestellt werden wird!
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1695747533905" ID="ID_990711241" MODIFIED="1695747552434" TEXT="der bool-Template-Parameter wirkt unbeholfen"/>
<node CREATED="1695747554262" ID="ID_1830373313" MODIFIED="1695747660353" TEXT="dadurch ist es erschwert, Grundbausteine in eine CPP-Unit wegzupacken">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      hab das gestern versucht &#8212; so kann das nicht stehen bleiben, das ist ja l&#228;cherlich (brauche explizite Template-Instantiierung) &#8212; zumindest solange wir keine C++-Module verwenden (C++20)
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1695747673046" ID="ID_1466067755" MODIFIED="1695747692667">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      die Code-Anordnung&#160;<i>hat keinen Flow</i>
    </p>
  </body>
</html></richcontent>
<font NAME="SansSerif" SIZE="12"/>
</node>
<node CREATED="1695747880669" ID="ID_1803056303" MODIFIED="1695748482205" TEXT="die erzwungene &#xbb;Joinable&#xab;-Variante wirkt mutwillig">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Ich habe doch selber oben diese Prinzipien formuliert: eine Library-L&#246;sung sollte nicht mutwillig beschr&#228;nken, sondern eine sinnvolle Gliederung anbieten...
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#fed5c5" DESTINATION="ID_1859841213" ENDARROW="Default" ENDINCLINATION="1276;51;" ID="Arrow_ID_1453893581" STARTARROW="None" STARTINCLINATION="1738;-79;"/>
<arrowlink COLOR="#8c5869" DESTINATION="ID_1245905649" ENDARROW="Default" ENDINCLINATION="10;123;" ID="Arrow_ID_155554446" STARTARROW="None" STARTINCLINATION="129;7;"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1695748592388" FOLDED="true" ID="ID_836153579" MODIFIED="1695859217832">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      also vielleicht doch <b>Policy-based-Design</b>?
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#4a94b9" DESTINATION="ID_992547663" ENDARROW="Default" ENDINCLINATION="70;74;" ID="Arrow_ID_1159950145" STARTARROW="None" STARTINCLINATION="245;15;"/>
<icon BUILTIN="help"/>
<node CREATED="1695748635886" ID="ID_859201330" MODIFIED="1695748676734" TEXT="aaber ... dann wird ja alles noch umst&#xe4;ndlicher">
<icon BUILTIN="clanbomber"/>
</node>
<node CREATED="1695748653462" ID="ID_763671935" MODIFIED="1695748671048" TEXT="dann kann ich nicht mehr die Konstruktor-Varianten erben">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1695748787634" ID="ID_1593689414" MODIFIED="1695748855312">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      &#10233; wenn &#252;berhaupt, m&#252;&#223;te die Policy einen <i>mittleren Binding-Layer </i>bilden
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1695749319298" ID="ID_1308996711" MODIFIED="1695749370296" TEXT="eine Policy f&#xfc;r Fehlerbehandlung + R&#xfc;ckgabewert + Join w&#xe4;re gerechtfertigt">
<linktarget COLOR="#dd26d2" DESTINATION="ID_1308996711" ENDARROW="Default" ENDINCLINATION="194;-5;" ID="Arrow_ID_1982134212" SOURCE="ID_1477111545" STARTARROW="None" STARTINCLINATION="172;16;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
<node COLOR="#435e98" CREATED="1695749427868" ID="ID_1042254250" MODIFIED="1695749686462" TEXT="L&#xf6;sung">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="forward"/>
<node CREATED="1695749436922" ID="ID_1431671531" MODIFIED="1695749455500" TEXT="Unterlage: &#xbb;ThreadWrapper&#xab;"/>
<node CREATED="1695749456164" ID="ID_1054598766" MODIFIED="1695749478601" TEXT="Mittelschicht: &#xbb;ThreadLifecycle&#xab;">
<node CREATED="1695749538333" ID="ID_1896384393" MODIFIED="1695749549565" TEXT="definiert alle Konstruktoren"/>
<node CREATED="1695749531182" ID="ID_1148976245" MODIFIED="1695749537508" TEXT="definiert den Destruktor"/>
<node CREATED="1695749523263" ID="ID_1222427695" MODIFIED="1695749551050" TEXT="f&#xfc;hrt eine Policy ein">
<node CREATED="1695836703221" ID="ID_1826750646" MODIFIED="1695859209399" TEXT="Umgang mit R&#xfc;ckgabewerten">
<linktarget COLOR="#77abb7" DESTINATION="ID_1826750646" ENDARROW="Default" ENDINCLINATION="-391;34;" ID="Arrow_ID_1834673532" SOURCE="ID_1313290148" STARTARROW="None" STARTINCLINATION="203;16;"/>
<node COLOR="#435e98" CREATED="1695836742647" ID="ID_1537554363" MODIFIED="1695849764232" TEXT="hier lib::Result einf&#xfc;hren">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1695836757205" FOLDED="true" ID="ID_231445329" MODIFIED="1695858842909" TEXT="die void / non-void-Unterscheidung &#x27f9; handhaben per lib::Result">
<icon BUILTIN="button_ok"/>
<node CREATED="1695836841642" ID="ID_29705339" MODIFIED="1695836854994" TEXT="std::invoke mit constexpr if">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#5b280f" CREATED="1695836855928" ID="ID_812193758" MODIFIED="1695836897006" TEXT="in Wrapper-Funktion einbauen">
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#338800" CREATED="1695836898202" ID="ID_1691988936" MODIFIED="1695848934909" TEXT="Nein: gleich in einen Konstruktor &#xfc;bernehmen">
<icon BUILTIN="button_ok"/>
<node CREATED="1695836911753" ID="ID_440888656" MODIFIED="1695836922568" TEXT="meine neuen F&#xe4;higkeiten gassi f&#xfc;hren">
<icon BUILTIN="ksmiletris"/>
</node>
<node COLOR="#338800" CREATED="1695838533698" ID="ID_387182382" MODIFIED="1695848924951" TEXT="Hilfsmittel: failsafeInvoke ">
<icon BUILTIN="button_ok"/>
<node COLOR="#5b280f" CREATED="1695838550590" ID="ID_652620368" MODIFIED="1695838678578" TEXT="beruht auf std::invoke_r">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1695838679373" ID="ID_1879095081" LINK="https://en.cppreference.com/w/cpp/utility/functional/invoke#Version_2" MODIFIED="1695838723112" TEXT="die &#xe4;quivaltente C++17-Impl per constexpr if"/>
<node CREATED="1695838556170" ID="ID_1446507689" MODIFIED="1695838569693" TEXT="setzt einen std::exception_ptr per Seiteneffekt"/>
</node>
<node COLOR="#435e98" CREATED="1695838577806" ID="ID_1120414496" MODIFIED="1695848941054" TEXT="die void / non-Void-Unterscheidung leistet der deduction-guard">
<linktarget COLOR="#aba9c1" DESTINATION="ID_1120414496" ENDARROW="Default" ENDINCLINATION="-273;13;" ID="Arrow_ID_1598212790" SOURCE="ID_1076000638" STARTARROW="None" STARTINCLINATION="96;-5;"/>
<icon BUILTIN="idea"/>
</node>
<node COLOR="#435e98" CREATED="1695848949084" ID="ID_409709339" MODIFIED="1695848979720" TEXT="Problem: Argument-loser Funktor kollidiert mit Wrapper-ctor">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1695848982471" ID="ID_1780819608" MODIFIED="1695848995149" TEXT="mu&#xdf; man explizit aussteuern"/>
<node CREATED="1695848995758" ID="ID_557992131" MODIFIED="1695849002136" TEXT="mit enable_if und is_callable"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#732d9e" CREATED="1695851257943" ID="ID_1076000638" MODIFIED="1695851350009">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Uh-Oh ... jetzt bin ich <b>richtig stolz</b>&#160;auf mich...
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#aba9c1" DESTINATION="ID_1120414496" ENDARROW="Default" ENDINCLINATION="-273;13;" ID="Arrow_ID_1598212790" STARTARROW="None" STARTINCLINATION="96;-5;"/>
<icon BUILTIN="ksmiletris"/>
</node>
<node COLOR="#435e98" CREATED="1695858872831" ID="ID_1986862077" MODIFIED="1695858961691" TEXT="Komplexit&#xe4;t gut versteckt">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...oder gut gegliedert; das jetzt gefundene Design trennt n&#228;mlich das Starten der Funktion, Fangen von Fehlern und Speichern von Ergebnissen als eigenen Belang ab (&#10230; lib::Result); dadurch wird die Policy nun wirklich kurz und klar
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1695836714439" ID="ID_1467866217" MODIFIED="1695836729182" TEXT="Aktionen zum Thread-Ende"/>
<node CREATED="1695836729993" ID="ID_357017376" MODIFIED="1695836738339" TEXT="Umgang mit noch laufenden Threads"/>
</node>
<node CREATED="1695749552627" ID="ID_573772960" MODIFIED="1695836690424">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <font color="#7118a9" size="4">&#9881;</font>&#160;Thread <font size="5"><b>&#10549;</b></font>&#160;<font color="#07097c" face="Monospaced">main&lt;FUN,ARGS...&gt;</font>
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1695749669204" ID="ID_1950929730" MODIFIED="1695749680246" TEXT="Front-End: wie bisher"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1696357544203" FOLDED="true" ID="ID_1208501979" MODIFIED="1696358077856" TEXT="detach() API?">
<icon BUILTIN="clanbomber"/>
<node CREATED="1696357565724" ID="ID_332128317" MODIFIED="1696358075753" TEXT="ziemlich gef&#xe4;hrlich &#x2014; eigentlich sollte es das nicht geben">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Hier zeigt sich ein Widerspruch in den Konzepten selber an
    </p>
    <ul>
      <li>
        ein &#187;launch-only&#171;-Thread sollte sich eigentlich komplett abkoppeln
      </li>
      <li>
        aber andererseits soll das Thead-Objekt auch den zugeh&#246;rigen State kapseln, mu&#223; also irgendwo existieren
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node CREATED="1696357587969" ID="ID_857278701" MODIFIED="1696357619392" TEXT="&#xf6;ffnet eine &#xbb;Hintert&#xfc;r&#xab; : mann kann detac() aufrufen und dann das Thread-Objekt l&#xf6;schen">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1696357622045" ID="ID_1238132894" MODIFIED="1696357864016" TEXT="genau das brauche ich f&#xfc;r das bestehende Design vom Session-Thread (DispatcherLoop)">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      dieses habe ich als RAII-Objekt angelegt, und der zugeh&#246;rige Unique-Ptr markiert gleichzeitig den Lifecycle-State; das hat zur Konsequenz, da&#223; der Session-Thread am Ende <i>selber sein eigenes Objekt zerst&#246;ren mu&#223;</i>
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#8c91b2" DESTINATION="ID_876148747" ENDARROW="Default" ENDINCLINATION="521;-2055;" ID="Arrow_ID_638014906" STARTARROW="None" STARTINCLINATION="295;9;"/>
<icon BUILTIN="smiley-oh"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#190f69" CREATED="1696357865684" FOLDED="true" ID="ID_1810679254" MODIFIED="1696357973110" TEXT="Aua: die threadID_ wird f&#xfc;r das Shutdown-Log gebraucht">
<icon BUILTIN="stop-sign"/>
<node CREATED="1696357887177" ID="ID_1835825008" MODIFIED="1696357893004" TEXT="also daf&#xfc;r eine lokale Kopie"/>
<node CREATED="1696357893592" ID="ID_1813261494" MODIFIED="1696357915937" TEXT="die threadImpl_ ist eigentlich auch dangling">
<icon BUILTIN="smily_bad"/>
</node>
<node CREATED="1696357936249" ID="ID_854400443" MODIFIED="1696357959467" TEXT="aber sie wird zuletzt vom Thread-Objekt gebraucht"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1695597475293" FOLDED="true" ID="ID_1100470933" MODIFIED="1695859224044" TEXT="Aufruf der Thread-Funktion">
<icon BUILTIN="button_ok"/>
<node CREATED="1695859157169" ID="ID_1142804524" MODIFIED="1695859174014" TEXT="in die Policy verlagert">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1695859162808" ID="ID_1313290148" MODIFIED="1695859214934" TEXT="im Join-Fall an lib::Result delegiert">
<arrowlink COLOR="#77abb7" DESTINATION="ID_1826750646" ENDARROW="Default" ENDINCLINATION="-391;34;" ID="Arrow_ID_1834673532" STARTARROW="None" STARTINCLINATION="203;16;"/>
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#338800" CREATED="1695597447169" ID="ID_35947260" MODIFIED="1695859231223" TEXT="Fehlerbehandlung">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1696468379848" FOLDED="true" ID="ID_1146069423" MODIFIED="1697133540550" TEXT="Erg&#xe4;nzung: autonomous Thread">
<linktarget COLOR="#5a83aa" DESTINATION="ID_1146069423" ENDARROW="Default" ENDINCLINATION="444;909;" ID="Arrow_ID_516910789" SOURCE="ID_137837629" STARTARROW="None" STARTINCLINATION="-1280;-32;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1696468398477" ID="ID_1775921981" MODIFIED="1696966299356" TEXT="neue Anforderung: komplett abgekoppelt">
<icon BUILTIN="yes"/>
<node CREATED="1696468424018" ID="ID_1127252428" MODIFIED="1696468584146" TEXT="ergibt sich aus dem Protokoll der C++14 -  Threads">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...diese erzwingen, da&#223; das Thread-Objekt w&#228;hrend der gesamten Ausf&#252;hrung der Thread-Funktion erhalten bleibt; dies Design erscheint auch sinnvoll
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1696468446119" ID="ID_328360890" MODIFIED="1696468533131" TEXT="unser bisheriger Thread-Wrapper konnte das (wegen dem Threadpool)">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      der bisherige Lumiera-Threadwrapper hat zwar ein Thread-Handle gehalten, das aber letztlich beim Threadpool registriert war. Daher war das Thread-Objekt selber im Grunde verzichtbar (es sei denn, man hat davon abgeleitet und dort weitere Felder untergebracht)
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1696468721033" ID="ID_1633697433" MODIFIED="1696468747969" TEXT="alle bisher realisierten Subsystem-Threads verhalten sich so">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node COLOR="#338800" CREATED="1696468596155" ID="ID_1909710868" MODIFIED="1696966286228" TEXT="Design: auf den neuen Thread-Wrapper aufsetzen">
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1696468627430" ID="ID_1189676257" MODIFIED="1696966303504" TEXT="Anforderungen">
<icon BUILTIN="yes"/>
<node CREATED="1696468151894" ID="ID_1613034704" MODIFIED="1696468650111" TEXT="der Thread-Funktor mu&#xdf; das Thread-Objekt als selbst halten"/>
<node CREATED="1696468197640" ID="ID_1523718397" MODIFIED="1696468221818" TEXT="der Aufruf-context gibt jeden Bezug dazu auf"/>
</node>
<node COLOR="#435e98" CREATED="1696522906584" FOLDED="true" ID="ID_1207549127" MODIFIED="1696525458994" TEXT="ist dieser Ansatz sinnvoll?">
<icon BUILTIN="help"/>
<node CREATED="1696523014919" ID="ID_385522841" MODIFIED="1696523029472" TEXT="es ginge auch anders: optional&lt;Thread&gt;">
<icon BUILTIN="idea"/>
<node CREATED="1696523057014" ID="ID_1079397369" MODIFIED="1696523063109" TEXT="w&#xe4;re minimalistisch"/>
<node CREATED="1696523064101" ID="ID_1019507545" MODIFIED="1696523316513">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      der Thread selber k&#246;nnte (m&#252;&#223;te aber nicht)
    </p>
    <p>
      am Ende den optional auf &#187;empty&#171; setzen
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...das m&#252;&#223;te dann so aufgebaut werden, wie es derzeit beim Session-Thread geschieht (nur da&#223; dort aktuell ein unique_ptr und kein optional diese M&#246;glichkeit schafft); das hei&#223;t, die Thread-Funktion mu&#223; irgendwie eine R&#252;ckreferenz auf den umschlie&#223;enden Scope haben, sie mu&#223; auf ihrem eigenen Handle schlie&#223;lich ein detach() aufrufen, bevor sie den Manager auf &#187;leer&#171; setzt, und sie sollte unmittelbar danach enden.
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1696523394089" ID="ID_1477646387" MODIFIED="1696523443089" TEXT="ein BackgroundThread ist v&#xf6;llig abgekoppelt">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1696523444602" ID="ID_353467756" MODIFIED="1696523452925" TEXT="er ist auf normalem Weg nicht mehr erreichbar"/>
<node CREATED="1696523453759" ID="ID_1421249993" MODIFIED="1696525233985" TEXT="was aber keinen wirklichen Unterschied bedeutet">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      regul&#228;re Threads sind auch nicht beeinflu&#223;bar, es sei denn, man programmiert das explizit... Und verklemmen k&#246;nnen se sich immer
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1696525272906" ID="ID_989494535" MODIFIED="1696525285609" TEXT="...und ob man das will, wei&#xdf; man vorher"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1696525311645" ID="ID_810319559" MODIFIED="1696525456979" TEXT="das Sicherstellen der Storage-Lebensdauer erfordert aktive Planung">
<icon BUILTIN="forward"/>
<node CREATED="1696525363134" ID="ID_669863900" MODIFIED="1696525374256" TEXT="will sagen: das ist nicht selbstverst&#xe4;ndlich gegeben"/>
<node CREATED="1696525375128" ID="ID_1094341765" MODIFIED="1696525390391" TEXT="man kann hier Fehler machen, und dann terminiert (oder h&#xe4;ngt) die Applikation"/>
<node CREATED="1696525391367" ID="ID_588897907" MODIFIED="1696525438396">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      ...und wenn ein Thread nicht <i>joinable </i>ist, bringt es oft nichts
    </p>
  </body>
</html></richcontent>
<font NAME="SansSerif" SIZE="12"/>
</node>
</node>
<node CREATED="1696525461505" ID="ID_950885600" MODIFIED="1696525525070">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <u><font color="#1ac00e">Antwort</font></u><font color="#1ac00e">:</font>&#160;<b>ja</b>&#160;&#8212; es kann daf&#252;r gute Gr&#252;nde geben
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1696528863266" FOLDED="true" ID="ID_1924635467" MODIFIED="1696966145777" TEXT="soll aber sauberes Design sein">
<icon BUILTIN="yes"/>
<node CREATED="1696528894446" ID="ID_658666182" MODIFIED="1696528900161" TEXT="das hei&#xdf;t">
<node CREATED="1696528900773" ID="ID_1777061932" MODIFIED="1696528909994" TEXT="in das Policy-Schema integriert"/>
<node CREATED="1696528910592" ID="ID_37081487" MODIFIED="1696528915654" TEXT="hinter ein Front-End gestellt"/>
<node CREATED="1696528934440" ID="ID_493018971" MODIFIED="1696529030677" TEXT="es mu&#xdf; aber nicht &#x201e;wasserdicht&#x201c; sein">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      letzten Endes ist das hier keine <i>general purpose Library </i>&#8212; es wird ein interner Nutzer voraussgesetzt, die die betroffenen Belange im Prinzip versteht (und durch die Library lediglich rascher zu klarererm Code kommt)
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1696529041064" ID="ID_922354226" MODIFIED="1696966057189" TEXT="L&#xf6;sungsansatz">
<icon BUILTIN="info"/>
<node COLOR="#5b280f" CREATED="1696529056400" FOLDED="true" ID="ID_996247672" MODIFIED="1696966067068" TEXT="ein Wrapper um den Thread-Funktor">
<icon BUILTIN="button_cancel"/>
<node CREATED="1696529067175" ID="ID_1003871751" MODIFIED="1696529073338" TEXT="w&#xe4;re zwar besonders modular"/>
<node CREATED="1696529074075" ID="ID_1746987039" MODIFIED="1696529190075" TEXT="w&#xe4;re aber auch offensichtlich zus&#xe4;tzliche Komplexit&#xe4;t">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      man m&#252;&#223;te das entweder direkt in den Konstruktor einbauen &#8212; und das w&#228;re eine Verschlechterung, denn bisher sind die Konstruktoren mehr oder weniger orthogonal zu den Policies
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1696529119120" ID="ID_611372463" MODIFIED="1696529316635" TEXT="und verbessert die Situation nicht insgesamt">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      es w&#252;rde zwar genau diesen einen Fall l&#246;sen, aber keinen Zugang zur L&#246;sung &#228;hnlich gelagerter Probleme bieten &#8212; welche im Besonderen (siehe Session-Thread) dann mit dem threadID-String zu k&#228;mpfen haben, und spezielle Einschr&#228;nkungen die Storage betreffend zu beachten haben; es w&#228;re besser, wenn man das herausgef&#252;hrte <font face="Monospaced" color="#8b0236">detach()</font>&#160;wieder loswerden k&#246;nnte!
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#435e98" CREATED="1696529335091" FOLDED="true" ID="ID_1772510094" MODIFIED="1696529606844" TEXT="Erweiterungspunkt in der Policy ausbauen">
<icon BUILTIN="forward"/>
<node CREATED="1696529349169" ID="ID_722473249" MODIFIED="1696529353436" TEXT="und zwar den zum Thread-Ende">
<node CREATED="1696529438893" ID="ID_842811550" MODIFIED="1696529439969" TEXT="handle_end_of_thread">
<node CREATED="1696529808620" ID="ID_1279546223" MODIFIED="1696529832292" TEXT="umbenennen: &#x27fc; handle_after_thread"/>
<node CREATED="1696529836760" ID="ID_1373519021" MODIFIED="1696529944892" TEXT="zus&#xe4;tzlich: &#x27ff; handle_begin_thread">
<linktarget COLOR="#fdfcc6" DESTINATION="ID_1373519021" ENDARROW="Default" ENDINCLINATION="-114;10;" ID="Arrow_ID_736802000" SOURCE="ID_1539716722" STARTARROW="None" STARTINCLINATION="116;8;"/>
</node>
</node>
<node CREATED="1696529442564" ID="ID_1663580492" MODIFIED="1696529946947" TEXT="mit dem habe ich bereits das 2.Problem beim Session-Thread gel&#xf6;st"/>
<node CREATED="1696529466361" ID="ID_893037276" MODIFIED="1696529491182">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      und er ist <i>semantisch </i>genau f&#252;r diesen Zweck gedacht
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1696529494934" ID="ID_1328896040" MODIFIED="1696529517158" TEXT="damit liegt die Probleml&#xf6;sung genau auf der richtigen Ebene"/>
<node CREATED="1696529517771" ID="ID_1174907927" MODIFIED="1696529556497" TEXT="so da&#xdf; dadurch benachbarte Probleme mit addressiert werden k&#xf6;nnen"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#3b0f69" CREATED="1696529569099" ID="ID_1525269984" MODIFIED="1696529622959" TEXT="&#xd83e;&#xdc32; klar der bessere Design-Ansatz">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1696529645817" ID="ID_461966137" MODIFIED="1696966078558" TEXT="Varianten/Weiterungen">
<icon BUILTIN="list"/>
<node COLOR="#435e98" CREATED="1696529655008" ID="ID_1683255981" MODIFIED="1697050739549" TEXT="Variante-1 : self-managed">
<node CREATED="1696529705915" ID="ID_731698797" MODIFIED="1696532569698" TEXT="in der Policy liegt ein unique_ptr">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      <font color="#c80202">&#55357;&#56481;</font>&#160;...der Thread-Funktor (innen) managed seine eigene 
      H&#252;lle (Thread-Objekt) &#8212; <i>ziemlich irre </i>diese L&#246;sung
    </p>
  </body>
</html></richcontent>
<node CREATED="1696890454577" ID="ID_430553780" MODIFIED="1696890460170" TEXT="geht so gar nicht">
<icon BUILTIN="stop-sign"/>
</node>
<node CREATED="1696890461256" ID="ID_1183918146" MODIFIED="1696890497276" TEXT="ein unique_ptr w&#xfc;rde ja nie gel&#xf6;scht">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1696890472062" ID="ID_484865968" MODIFIED="1696890493175" TEXT="&#x27f9; vielmehr mu&#xdf; sich das Objekt selber einfach vom Heap l&#xf6;schen"/>
</node>
<node CREATED="1696529718984" ID="ID_1539716722" MODIFIED="1696529944892" TEXT="zus&#xe4;tzlichen Erweiterungspunkt nutzen">
<arrowlink COLOR="#fdfcc6" DESTINATION="ID_1373519021" ENDARROW="Default" ENDINCLINATION="-114;10;" ID="Arrow_ID_736802000" STARTARROW="None" STARTINCLINATION="116;8;"/>
<arrowlink COLOR="#fdfcc6" DESTINATION="ID_1004228427" ENDARROW="Default" ENDINCLINATION="-114;10;" ID="Arrow_ID_936715522" STARTARROW="None" STARTINCLINATION="116;8;"/>
<icon BUILTIN="idea"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1696529962087" FOLDED="true" ID="ID_683965677" MODIFIED="1696531663483" TEXT="ownership wird hier gekapert">
<icon BUILTIN="clanbomber"/>
<node CREATED="1696531683840" ID="ID_1453668397" MODIFIED="1696531729036" TEXT="w&#xfc;rde zu schwer diagnostizierbaren Fehler f&#xfc;hren, wenn Objekt anderweitig erzeugt wurde">
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#435e98" CREATED="1696531737104" ID="ID_750115370" MODIFIED="1696532283416" TEXT="sollte man intendierte Verwendung erzwingen?">
<node CREATED="1696531870609" ID="ID_175119751" MODIFIED="1696532163127" TEXT="dazu m&#xfc;&#xdf;te man Verwendung der Front-End-Funktion nahelegen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      das ist ziemlich einfach und nat&#252;rlich bei der gebenen Code-Struktur &#8212; die &#8222;schreit&#8220; ja gradezu danach, da&#223; man seine Finger von thread::ThreadLifecycle lassen soll
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1696531942085" ID="ID_513079050" MODIFIED="1696532237122" TEXT="und jedweden anderen Zugang unterbinden">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      das w&#228;re der schwierige Part, denn normalerweise kann immer jemand anderen Code daneben stellen, der diese Bausteine geschickt anders verwendet &#8212; und aller Erfahrung nach k&#246;nnte dieser &#8222;jemand&#8220; ich selber sein...
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="stop-sign"/>
</node>
<node CREATED="1696532024162" ID="ID_1610623312" MODIFIED="1696532044661" TEXT="beides w&#xe4;re m&#xf6;glich &#x2014; aber aufwendig und verwirrend"/>
<node CREATED="1696532247925" ID="ID_469430466" MODIFIED="1696533444831" TEXT="Fazit: besser nicht &#x2014; bei der Warnung belassen">
<linktarget COLOR="#7f7b91" DESTINATION="ID_469430466" ENDARROW="Default" ENDINCLINATION="149;261;" ID="Arrow_ID_481332862" SOURCE="ID_1317798504" STARTARROW="None" STARTINCLINATION="842;36;"/>
<icon BUILTIN="forward"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1696898745626" ID="ID_1404625774" MODIFIED="1696958131450" TEXT="mu&#xdf; einen gewaltsamen Upcast machen">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1696898767838" ID="ID_982197270" MODIFIED="1696898773034" TEXT="und zwar &#xfc;ber void*"/>
<node CREATED="1696898773597" ID="ID_1027296232" MODIFIED="1696898787176" TEXT="weil wir einmal protected-Inheritance verwenden"/>
<node CREATED="1696898788100" ID="ID_229678951" MODIFIED="1696898804634" TEXT="&quot;PolicyAutonomous&quot; is inaccessible base">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1696898808050" ID="ID_649658845" MODIFIED="1696898912722" TEXT="w&#xe4;re potentiell gef&#xe4;hrlich">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      und zwar, sofern oben in der konkreten Subklasse irgendwo ein mix-in verwendet wird &#8212; in dem Fall m&#252;&#223;te n&#228;mlich der Pointer nachjustiert werden
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="clanbomber"/>
</node>
<node COLOR="#435e98" CREATED="1696958144365" ID="ID_1650867169" MODIFIED="1696958397510" TEXT="stattdessen: sichere L&#xf6;sung &#xfc;ber den Launch-config builder">
<arrowlink COLOR="#3bacb8" DESTINATION="ID_1240123723" ENDARROW="Default" ENDINCLINATION="561;0;" ID="Arrow_ID_187329351" STARTARROW="None" STARTINCLINATION="386;18;"/>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node COLOR="#5b280f" CREATED="1696897248135" FOLDED="true" ID="ID_433063268" MODIFIED="1696965815605" TEXT="Subklassen erm&#xf6;glichen?">
<icon BUILTIN="help"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1696897270002" ID="ID_944165024" MODIFIED="1696897420063">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <i>ohne Subclassing</i>&#160;ist die ganze &#220;bung etwas &#252;berzogen
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...es ist ja nett, da&#223; der Thread-Wrapper sich selbst verwaltet &#8212; und der ganze Aufwand blo&#223; f&#252;r zwei interne Datenfelder?&#160;&#160;w&#228;re da nicht ein &#187;workaround&#171; angemessener?
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1696897426970" ID="ID_419436552" MODIFIED="1696898701788" TEXT="mit Subklasse wird aber das Front-End fragiler &#x2014; und beliebiger">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      wozu dann &#252;berhaupt noch das Front-End? Um einen etwas sonderbaren new-Aufruf einzupacken?
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#5b280f" CREATED="1696897485658" ID="ID_885031549" MODIFIED="1696965757557" TEXT="Problem: mu&#xdf; die konkrete Klasse als Template-Parameter in die Policy einf&#xfc;hren">
<icon BUILTIN="messagebox_warning"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1696897535396" ID="ID_1827915916" MODIFIED="1696897641026" TEXT="das macht die ganze Kette ziemlich komplex"/>
<node CREATED="1696897641633" ID="ID_309942358" MODIFIED="1696897719398" TEXT="auch das Front-End braucht nun einen Template-Parameter"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1696897720103" ID="ID_785903718" MODIFIED="1696965765382" STYLE="fork" TEXT="noch schlimmer: das verhindert Verwendung ohne Subclassing">
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1696899336883" ID="ID_241659538" MODIFIED="1696965889077" TEXT="andere Idee: man k&#xf6;nnte nun Variante-1 auf Variante-2 zur&#xfc;ckf&#xfc;hren">
<arrowlink COLOR="#ffffd1" DESTINATION="ID_1909867794" ENDARROW="Default" ENDINCLINATION="-11;-9;" ID="Arrow_ID_315230822" STARTARROW="None" STARTINCLINATION="-51;2;"/>
<icon BUILTIN="idea"/>
<node CREATED="1696899356785" ID="ID_1810857858" MODIFIED="1696899370834" TEXT="...und zwar weil Variante-1 jetzt ziemlich hohl geworden ist"/>
<node CREATED="1696899371359" ID="ID_204770506" MODIFIED="1696899384536" TEXT="im Besonderen wird gar keine spezielle Storage ben&#xf6;tigt"/>
<node CREATED="1696899394883" ID="ID_221270967" MODIFIED="1696899414119" TEXT="das hei&#xdf;t: das k&#xf6;nnte genausogut ein lifecycle-Hook machen">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1696899431703" ID="ID_804029707" MODIFIED="1696899484220" TEXT="...und dieser w&#xfc;rde eine ThreadLifecycle-Instanz als Argument bekommen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...und wir w&#228;ren aus der Nummer raus: das ist n&#228;mlich oberhalb der protected inheritance
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1696965775488" FOLDED="true" ID="ID_1909867794" MODIFIED="1696965923694">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      das ist die <i>viel elegantere </i>L&#246;sung: <u>Variante-1</u>&#160;durch <u>Variante-2</u>&#160; implemenitert
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#ffffd1" DESTINATION="ID_1909867794" ENDARROW="Default" ENDINCLINATION="-11;-9;" ID="Arrow_ID_315230822" SOURCE="ID_241659538" STARTARROW="None" STARTINCLINATION="-51;2;"/>
<icon BUILTIN="yes"/>
<node CREATED="1696965933149" ID="ID_1573026703" MODIFIED="1696965943299" TEXT="damit sind alle Probleme auf einmal erschlagen!"/>
<node CREATED="1696965943955" ID="ID_1421528010" MODIFIED="1696965960462" TEXT="der Code der Callbacks steht direkt neben dem &#xbb;freien&#xab; Heap-new"/>
<node CREATED="1696965962769" ID="ID_250643272" MODIFIED="1696965971748" TEXT="die down-cast ist nun sicher"/>
<node COLOR="#5b280f" CREATED="1696965987578" ID="ID_1670280316" MODIFIED="1696976650429" TEXT="man kann beliebige Subtypen verwenden">
<arrowlink COLOR="#f73362" DESTINATION="ID_1651696265" ENDARROW="Default" ENDINCLINATION="-61;-30;" ID="Arrow_ID_120849360" STARTARROW="None" STARTINCLINATION="283;19;"/>
<icon BUILTIN="closed"/>
</node>
<node CREATED="1696965973496" ID="ID_1562329556" MODIFIED="1696965986393" TEXT="und eine sonderbare spezial-Policy f&#xe4;llt komplett weg"/>
<node CREATED="1696965999636" ID="ID_1837122164" MODIFIED="1696966015867" TEXT="es gibt keine spezielle Thread-Klasse mehr, die man &#xbb;nicht verwenden&#xab; soll"/>
<node COLOR="#435e98" CREATED="1696976539898" FOLDED="true" ID="ID_57182560" MODIFIED="1697050703737" TEXT="ABER: kann mit diesem Design keine Member-Funktionen in den Thread binden">
<linktarget COLOR="#5d6faa" DESTINATION="ID_57182560" ENDARROW="Default" ENDINCLINATION="-230;791;" ID="Arrow_ID_1090153547" SOURCE="ID_92765841" STARTARROW="None" STARTINCLINATION="772;-34;"/>
<icon BUILTIN="broken-line"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1696976568054" ID="ID_1651696265" MODIFIED="1696976852099" TEXT="das macht abgeleitete Klassen effektiv sinnlos">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      denn: grade hier f&#252;r den &#187;Autonomous Thread&#171; kommt man von au&#223;en nicht an die Addresse des Objektes ran
    </p>
    <ul>
      <li>
        die Addresse ist vor der Allokation nicht bekannt, kann daher nicht in ein Lambda gebunden werden
      </li>
      <li>
        eine statische Funktion w&#252;rde zus&#228;tzlich noch einen Singleton-Mechanismus brauchen
      </li>
      <li>
        ohne Zugang zum Objekt ist es aber auch sinnlos, zus&#228;tzliche Daten und Funktionen im abgeleiteten Objekt zu haben
      </li>
    </ul>
  </body>
</html></richcontent>
<linktarget COLOR="#f73362" DESTINATION="ID_1651696265" ENDARROW="Default" ENDINCLINATION="-61;-30;" ID="Arrow_ID_120849360" SOURCE="ID_1670280316" STARTARROW="None" STARTINCLINATION="283;19;"/>
</node>
<node CREATED="1696976853336" ID="ID_372976819" MODIFIED="1696976877733" TEXT="das f&#xfc;hrt die Idee mit einer selbst-verwalteten Allokation ad absurdum">
<icon BUILTIN="smiley-angry"/>
</node>
<node CREATED="1696976940356" ID="ID_232121625" MODIFIED="1696977061323" TEXT="hier r&#xe4;cht sich auch das &#xbb;Zwiebelschalen-Design&#xab;: der Launch-builder ist opaque"/>
<node COLOR="#435e98" CREATED="1696978145159" ID="ID_314579443" MODIFIED="1697050413021" TEXT="gibt es &#xfc;berhaupt einen Fix?">
<icon BUILTIN="help"/>
<node COLOR="#5b280f" CREATED="1696978155858" ID="ID_229604383" MODIFIED="1696978809501" TEXT="&#xfc;bler Hack: Fake-Allokation + placement-New">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Wenn wir es irgendwie schaffen k&#246;nnten, das Objekt schon auf den Heap zu allozieren, aber zu verhindern, da&#223; es &#8222;fliegt&#8220; (bzw. wirklich konstruiert wird). Dann w&#252;&#223;ten wir die Addresse. Danach w&#252;rden wir ein placement-New in die Allokation machen, und k&#246;nnten diesem <i>tats&#228;chlichen </i>Konstruktor-Aufruf <i>ganz vertr&#228;umt </i>den richtigen Instanz-Pointer mitgeben. Vorraussetzung w&#228;re allerdings, da&#223; sich diese manipulierte Allokation sp&#228;ter ganz gew&#246;hnlich per operator delete wieder entfernen lie&#223;e. Das w&#228;re dann entweder ein fragiler Hack, der sich auf Plattform-Interna abst&#252;tzt, oder es w&#228;re ein custom-operator-new im Stil der 90er-Jahre
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="closed"/>
</node>
<node CREATED="1696978523249" ID="ID_1356286451" MODIFIED="1697023022905" TEXT="einen Platzhalter sp&#xe4;t an die eigentliche Instanz binden">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Daf&#252;r br&#228;uchte ich eine Stelle, an der die tats&#228;chliche Instanz bereits 
      bekannt ist, aber die Invocation nochin generischer Form vorliegt. In 
      einem solchen Kontext k&#246;nnte man dann einen Marker-Typ erkennen und an 
      die tats&#228;chliche Instanz binden.
    </p>
    <p>
      
    </p>
    <p>
      <u>&#55357;&#56481; Und in der Tat</u>: diesen Kontext g&#228;be es in der 
      Hilfsfunktion buildLauncher()
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#3551b4" DESTINATION="ID_1017963709" ENDARROW="Default" ENDINCLINATION="8;-31;" ID="Arrow_ID_855336150" STARTARROW="None" STARTINCLINATION="-132;6;"/>
<icon BUILTIN="forward"/>
<node CREATED="1696978822594" ID="ID_1410342065" MODIFIED="1696979058894" TEXT="diese L&#xf6;sung w&#xe4;re zuverl&#xe4;ssig, sicher und effizient">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <ul>
      <li>
        zuverl&#228;ssig: sie wird zur Compile-Zeit eingebunden und ist &#252;ber das Typsystem abgesichert
      </li>
      <li>
        sicher: sie baut auf einen speziellen Marker-Typ auf &#8212; wenn er fehlt, passiert nichts an der Stelle
      </li>
      <li>
        effizient: da sie in einer Funktionstemplate-Instantiierung steht, wird sie nur im fraglichen Spezialfall getriggert
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node CREATED="1696978865091" ID="ID_1134916435" MODIFIED="1696978893087" TEXT="aber sch&#xf6;n ist sie nicht &#x2014; bestenfalls gut versteckt"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1696979065849" ID="ID_1017963709" MODIFIED="1697050405966" TEXT="Umsetzung versuchen">
<linktarget COLOR="#3551b4" DESTINATION="ID_1017963709" ENDARROW="Default" ENDINCLINATION="8;-31;" ID="Arrow_ID_855336150" SOURCE="ID_1356286451" STARTARROW="None" STARTINCLINATION="-132;6;"/>
<icon BUILTIN="yes"/>
<node CREATED="1697022864978" ID="ID_360386085" MODIFIED="1697022989269" TEXT="im Prinzip &#x201e;ganz einfach&#x201c;">
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1697022883830" ID="ID_996336424" MODIFIED="1697022924582" TEXT="C++17 - Trick: std::invoke verwenden mit einem &#x3bb; zum Tupel-Umbau">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1697022927591" ID="ID_1968515341" MODIFIED="1697022985926" TEXT="hab ein paar Stunden gebraucht umd den &#x201e;ganz einfachen&#x201c; Aufruf richtig einzubauen">
<icon BUILTIN="smiley-angry"/>
</node>
</node>
<node COLOR="#338800" CREATED="1697050416768" ID="ID_1615729676" MODIFIED="1697050582236" TEXT="die Hilfsfunktion ...">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1697050430395" ID="ID_1669320853" MODIFIED="1697050438782" TEXT="extrahieren &#x27f6; lib/function.hpp">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1697050439986" ID="ID_1328885131" MODIFIED="1697050554033" TEXT="k&#xf6;nnte einfacher und generisher sein">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Es gibt keinen Grund, die Ersetzung nur an 2.Stelle im Tupel zu machen; auch ist es nicht notwendig, die Typen irgendwie festzunageln. Allein die Gegenwart des Marker-Typs gen&#252;gt, denn diesen setzt man nur explizit ein. Damit w&#228;re diese Funktion auch auf reine Argument-Tupel anwendbar, nicht nur (wie hier) auf Invocation-Tupel (functor, args...)
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1697050554898" ID="ID_1031448830" MODIFIED="1697050570497" TEXT="sollte jedwede Kopie vermeiden">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1697050571552" ID="ID_333850507" MODIFIED="1697050580451" TEXT="...und geh&#xf6;rt im Test abgedeckt">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1697050588182" ID="ID_1656504822" MODIFIED="1697050631074" TEXT="Problem damit gel&#xf6;st">
<arrowlink COLOR="#07a068" DESTINATION="ID_1379899935" ENDARROW="Default" ENDINCLINATION="479;18;" ID="Arrow_ID_645882664" STARTARROW="None" STARTINCLINATION="268;31;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1696532404400" ID="ID_1917558827" MODIFIED="1697054094884" TEXT="Variante-2 : optional-Lifecycle">
<linktarget COLOR="#898bab" DESTINATION="ID_1917558827" ENDARROW="Default" ENDINCLINATION="-1027;99;" ID="Arrow_ID_1553665185" SOURCE="ID_104020495" STARTARROW="None" STARTINCLINATION="532;77;"/>
<node CREATED="1696532578904" ID="ID_1181618773" MODIFIED="1696532615943" TEXT="erlaubt explizit einen noch nicht / nicht mehr laufenden Zustand"/>
<node CREATED="1696532628426" ID="ID_295807620" MODIFIED="1696532638596" TEXT="in der Tat: das wird manchmal gebraucht"/>
<node CREATED="1696532639478" ID="ID_1592818853" MODIFIED="1696532821180" TEXT="so w&#xfc;rde es sauber...">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      da nicht der Thread-Wrapper selber damit &#252;berladen wird
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#5b280f" CREATED="1696532676404" FOLDED="true" ID="ID_91266848" MODIFIED="1697054120642" TEXT="Front-End">
<icon BUILTIN="button_cancel"/>
<node CREATED="1696532680835" ID="ID_553798887" MODIFIED="1696536376316">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      user bekommt einen Typ <font color="#321c9f" face="Monospaced">OptionalThread </font>&#8801; ein opaquer ma&#223;geschneiderter Wrapper
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1696532733604" ID="ID_1013220634" MODIFIED="1696532744490" TEXT="und kann ihn nur starten mit einer statischen Factory-Funktion"/>
<node COLOR="#5b280f" CREATED="1696536644665" ID="ID_1557332698" MODIFIED="1696624156275" TEXT="Beschlu&#xdf;: Storage ist inline und an die Lebensdauer gekoppelt">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      das w&#228;re nicht zwingend so; viel einfacher w&#228;re die Implementierung, wenn man blo&#223; Variante-2 weiter ausbaut; allerdings impliziert ein Thread-Objekt eben genau die Verwendung von lokaler Storage, und ein mit dem Thread-Ende gekoppelter Destruktor-Aufruf ist <i>n&#252;tzlich und einfach zu realisieren.</i>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#5b280f" CREATED="1696536837512" ID="ID_1958442975" MODIFIED="1696934192282" TEXT="Lebenszyklus-Zustand wird atomar verwaltet (acquire_release)">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Das bedeutet, man bekommt in diesem Fall sogar eine Barriere geschenkt, die man dann nicht mehr mit SyncBarrier explizit coden mu&#223;. Einzige Vorraussetzung: pr&#252;fen und verzweigen auf den Lebenszyklus-Zustand
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_cancel"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1696934162253" ID="ID_724180880" MODIFIED="1696934184964" STYLE="fork" TEXT="das f&#xfc;hrt zu starker Kopplung im Design">
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1696934198943" ID="ID_737180308" MODIFIED="1696958409322" TEXT="besser: funktionale Erweiterungspunkte">
<icon BUILTIN="yes"/>
<node CREATED="1696934212695" ID="ID_1626568717" MODIFIED="1696934238138" TEXT="diese werden als std::function gespeichert"/>
<node CREATED="1696934261703" ID="ID_266607477" MODIFIED="1696934280168" TEXT="und aus entsprechenden Policy-hooks heraus aufgerufen"/>
<node CREATED="1696934280923" ID="ID_787857879" MODIFIED="1696934285592" TEXT="Hooks">
<node CREATED="1696529808620" ID="ID_78597801" MODIFIED="1696529832292" TEXT="umbenennen: &#x27fc; handle_after_thread"/>
<node CREATED="1696529836760" ID="ID_1004228427" MODIFIED="1696934402647" TEXT="zus&#xe4;tzlich: &#x27ff; handle_begin_thread">
<linktarget COLOR="#fdfcc6" DESTINATION="ID_1004228427" ENDARROW="Default" ENDINCLINATION="-114;10;" ID="Arrow_ID_936715522" SOURCE="ID_1539716722" STARTARROW="None" STARTINCLINATION="116;8;"/>
</node>
<node CREATED="1696529836760" ID="ID_1153306127" MODIFIED="1696934476853" TEXT="zus&#xe4;tzlich: &#x27ff; handle_loose_thread">
<linktarget COLOR="#fdfcc6" DESTINATION="ID_1153306127" ENDARROW="Default" ENDINCLINATION="-341;27;" ID="Arrow_ID_880044186" SOURCE="ID_1868637331" STARTARROW="None" STARTINCLINATION="263;12;"/>
<node CREATED="1696933886929" HGAP="25" ID="ID_796423082" MODIFIED="1696933932976" TEXT="(wird aufgerufen aus dem Destruktor &#x2014; falls der Thread noch l&#xe4;uft)" VSHIFT="7">
<font NAME="SansSerif" SIZE="11"/>
<icon BUILTIN="info"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1696958202741" FOLDED="true" ID="ID_1577864867" MODIFIED="1696958412378" TEXT="diese bereits im Launch-config-builder adaptieren">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1696958220491" ID="ID_1240123723" MODIFIED="1696958388855" TEXT="das l&#xf6;st das Problem mit dem downcast auf einen Subklassen-Typ">
<linktarget COLOR="#3bacb8" DESTINATION="ID_1240123723" ENDARROW="Default" ENDINCLINATION="561;0;" ID="Arrow_ID_187329351" SOURCE="ID_1650867169" STARTARROW="None" STARTINCLINATION="386;18;"/>
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1696958235467" ID="ID_1922263135" MODIFIED="1696958334910">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <i>ganz elegant </i>erst mal auf TheadLifecycle downcasten
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      was &#8222;rein zuf&#228;llig&#8220; hier in diesem nested scope in ThreadLifecycle erlaubt und auch sicher ist, denn hier haben wir noch Zugriff auf die protected geerbten Policy-Klassen...
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1696958336516" ID="ID_564028687" MODIFIED="1696958350950" TEXT="im zweiten Schritt von dort dann auf einen beliebigen Subtyp"/>
<node CREATED="1696958351770" ID="ID_174542726" MODIFIED="1696958368388" TEXT="den konkret vom gegebenen &#x3bb; erwarteten Argument-Typ verwenden"/>
</node>
</node>
<node COLOR="#338800" CREATED="1696532838782" ID="ID_46766207" MODIFIED="1696966093550" TEXT="der Konflikt im Lebensdauer-Thema ist damit beigelegt">
<icon BUILTIN="button_ok"/>
<node CREATED="1696532860011" ID="ID_132397075" MODIFIED="1696532867737" TEXT="bisher hatten wir hier einen Zielkonflikt"/>
<node CREATED="1696532868282" ID="ID_1051552803" MODIFIED="1696532889722" TEXT="indem nun die widersprechenden use-Cases explizit addressiert werden..."/>
<node CREATED="1696532890359" ID="ID_446007102" MODIFIED="1696533163041" TEXT="kann man hart auf den restriktiven default zur&#xfc;ckkehren">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Im Klartext: der Thread-Wrapper mu&#223; <b>immer</b>&#160;w&#228;hrend der Ausf&#252;hrung der Thread-Funktion am Leben bleiben; die im Spezialfall notwendigen Ausnahmen sind in der Policy selber verborgen.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1696532913146" ID="ID_340088761" MODIFIED="1696533055925" TEXT="und &#x201e;Hintert&#xfc;ren&#x201c; wieder schlie&#xdf;en">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      das hei&#223;t: keine Tricks mehr, indem man im laufenden Thread das Desaster nur umschifft. Der threadID-string liegt einfach im ThreadWrapper und <b>basta</b>. Und es gibt keine &#8222;besseren&#8220; Statusvariablen mehr, die im Thread-Funktor leben m&#252;ssen
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#ab1d25" CREATED="1696620911198" FOLDED="true" ID="ID_1727345298" MODIFIED="1696620937599" TEXT="Kritik (n&#xe4;chster Tag)">
<icon BUILTIN="stop-sign"/>
<node CREATED="1696620943304" ID="ID_211890661" MODIFIED="1696620971910" TEXT="gestern nur in fertigen Komponenten gedacht &#x2014; das war zu kurz gegriffen">
<icon BUILTIN="broken-line"/>
<node CREATED="1696620974692" ID="ID_408561702" MODIFIED="1696621055594" TEXT="jede der beiden Varianten impliziert eine abgeleitete Klasse">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...sonst w&#228;re das ganze Unterfangen theoretischer Natur; nur dadurch wird es interessant, Storage zu verwalten und einen Zugang freizuschalten
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1696621067492" ID="ID_1848245258" MODIFIED="1696621085856" TEXT="der Session-Thread braucht einen smart-ptr als Front-End">
<node CREATED="1696621086981" ID="ID_427538750" MODIFIED="1696621153920" TEXT="1. es ist ein PImpl (mit eigenem API)"/>
<node CREATED="1696621100107" ID="ID_1434548951" MODIFIED="1696621148849" TEXT="2. und die Impl h&#xe4;lt den Thread als Member"/>
<node CREATED="1696621167042" ID="ID_558727357" MODIFIED="1696621177756" TEXT="3. Zugang wird eigens &#xfc;ber Monitor gesch&#xfc;tzt">
<node CREATED="1696621182464" ID="ID_813154978" MODIFIED="1696621189603" TEXT="essentiell f&#xfc;r die Logik"/>
<node CREATED="1696621190455" ID="ID_613730831" MODIFIED="1696621206993" TEXT="stets nur eine Aktion in Transit"/>
</node>
</node>
<node COLOR="#611224" CREATED="1696621234330" ID="ID_481499226" MODIFIED="1696621321463" TEXT="&#x27f9; in beiden F&#xe4;llen gelingt es nicht, alles in eine einzige opaque Komponente zu packen"/>
</node>
<node CREATED="1696621353177" ID="ID_1935311062" MODIFIED="1696621378012" TEXT="was ich aber dennoch unbedingt realisieren m&#xf6;chte: Ordnung der Lifecycle-Klammern">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#435e98" CREATED="1696621626749" ID="ID_1402437857" MODIFIED="1696961415243" TEXT="Konsequenz: callback-Hooks im Lifecycle bereitstellen">
<icon BUILTIN="yes"/>
<node CREATED="1696621694652" ID="ID_489753305" MODIFIED="1696621702239" TEXT="das wirft Probleme auf...">
<node CREATED="1696621703203" ID="ID_1346123872" MODIFIED="1696621709128" TEXT="brauche daf&#xfc;r zus&#xe4;tzliche Storage"/>
<node CREATED="1696621709770" ID="ID_1531634936" MODIFIED="1696621727446" TEXT="Initialisierung vor Thread-Start">
<node CREATED="1696621761419" ID="ID_1692673814" MODIFIED="1696621789787" TEXT="das hei&#xdf;t: lazy builder oder ctor-Args"/>
<node CREATED="1696621792391" ID="ID_1048165021" MODIFIED="1696621801098" TEXT="Lesbarkeit ist ebenfalls ein Problem"/>
<node CREATED="1696623868041" ID="ID_1255108830" MODIFIED="1696623893825" TEXT="und: wenig Spielraum">
<node CREATED="1696623897565" ID="ID_787579556" MODIFIED="1696623905791" TEXT="Thread ist ohnehin schon (zu) komplex"/>
<node CREATED="1696623906508" ID="ID_373461507" MODIFIED="1696623932988" TEXT="es gibt eine Variadic-Argumentliste mit perfect-forwarding"/>
<node CREATED="1696623940239" ID="ID_1472826799" MODIFIED="1696623960000" TEXT="bisweilen ohnehin schon Typdeduktions-Probleme"/>
<node CREATED="1696623960757" ID="ID_400335187" MODIFIED="1696623997084" TEXT="die Typen werden auch noch durch zwei Ebenen druchgegeben und &quot;decayed&quot;"/>
<node CREATED="1696623997956" ID="ID_801709365" MODIFIED="1696624021191" TEXT="und der Thread-Start steckt in der Basisklasse"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1696624455507" ID="ID_771623143" MODIFIED="1696640533961">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      &#10233;&#160;<i>Initialisierung</i>&#160;von Policy-Bausteinen <i>ist nicht m&#246;glich</i>
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#fe225e" DESTINATION="ID_1852065850" ENDARROW="Default" ENDINCLINATION="147;-294;" ID="Arrow_ID_1803073395" STARTARROW="None" STARTINCLINATION="-332;18;"/>
<node CREATED="1696624710262" ID="ID_798050443" MODIFIED="1696624792744" TEXT="Konsequenz: ThreadJoinable ist (latent) racy">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      (seufz)
    </p>
    <p>
      <i>streng genommen</i>&#160;k&#246;nnte die Thread-Funktion bereits mit der Initialisierung des lib::Result beginnen, w&#228;hrend ihr dann die default-Initialisierung dazwischenfunkt
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1696624920612" ID="ID_1218441049" MODIFIED="1696624940325" TEXT="...und jede Erweiterung, die Daten in der Policy hat, ebenfalls"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1696861323485" ID="ID_1893882898" MODIFIED="1696961412982" TEXT="mu&#xdf; flexible Konfiguration hierf&#xfc;r erm&#xf6;glichen">
<arrowlink COLOR="#8184a8" DESTINATION="ID_997556571" ENDARROW="Default" ENDINCLINATION="-767;-772;" ID="Arrow_ID_1317755297" STARTARROW="None" STARTINCLINATION="-380;22;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#dec38f" COLOR="#990000" CREATED="1696628443151" ID="ID_1852065850" MODIFIED="1696861406605" TEXT="das Race-Problem stellt das ganze Design in Frage">
<arrowlink COLOR="#393653" DESTINATION="ID_218116618" ENDARROW="Default" ENDINCLINATION="20;-87;" ID="Arrow_ID_1655702369" STARTARROW="None" STARTINCLINATION="-29;62;"/>
<linktarget COLOR="#fe225e" DESTINATION="ID_1852065850" ENDARROW="Default" ENDINCLINATION="147;-294;" ID="Arrow_ID_1803073395" SOURCE="ID_771623143" STARTARROW="None" STARTINCLINATION="-332;18;"/>
<icon BUILTIN="broken-line"/>
<node CREATED="1696628561935" ID="ID_183158925" MODIFIED="1696628612622" TEXT="so ziemlich jede Form von Layering und Composition ist betroffen">
<icon BUILTIN="closed"/>
</node>
<node CREATED="1696628634743" ID="ID_860811090" MODIFIED="1696639826869" TEXT="andererseits ist das Problem sehr wahrscheinlich theoretischer Natur">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      da erfahrungsgem&#228;&#223; der OS-Scheduler immer <i>eine gewisse</i>&#160;Latenz hat, bis ein Thread tats&#228;chlich ausf&#252;hrbar wird
    </p>
  </body>
</html></richcontent>
<node COLOR="#338800" CREATED="1696628723995" ID="ID_1617045707" MODIFIED="1696639807086" TEXT="nochmal Beobachtungen machen">
<icon BUILTIN="button_ok"/>
<node CREATED="1696639643860" ID="ID_82825911" MODIFIED="1696639649431" TEXT="std::system_clock"/>
<node CREATED="1696639649973" ID="ID_136142260" MODIFIED="1696639668596" TEXT="Zeitpunkte erfassen"/>
<node CREATED="1696639669120" ID="ID_580835805" MODIFIED="1696639673243" TEXT="am Ende vergleichen"/>
</node>
<node COLOR="#435e98" CREATED="1696639673735" ID="ID_125089777" MODIFIED="1696639838019" TEXT="&#x27f9; Thread-Funktion startet stets &gt; 100&#xb5;s nach dem Ende des ctors">
<node CREATED="1696639722881" ID="ID_1727068743" MODIFIED="1696639726364" TEXT="das ist eine Menge"/>
<node CREATED="1696639726816" ID="ID_1384372347" MODIFIED="1696639753848" TEXT="(i.d.R sehe ich sogar &#x2248; 500&#xb5;s)"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1696639754464" ID="ID_279169592" MODIFIED="1696639859888">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      und trotzdem: das ist <b>kein Gegenbeweis</b>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="stop-sign"/>
</node>
<node CREATED="1696639771290" ID="ID_1990815963" MODIFIED="1696639789477" TEXT="...sondern &#x201e;undefined behaviour in action&#x201c;"/>
</node>
</node>
<node CREATED="1696628756484" ID="ID_602079301" MODIFIED="1696629021008">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      man k&#246;nnte das Thema entsch&#228;rfen,
    </p>
    <p>
      indem man das Thread-Handle zun&#228;chst leer initialisiert
    </p>
    <p>
      und dann erst ganz oben im ctor-chain den Thread startet
    </p>
    <p>
      und per move-assign auf das Handle schiebt.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
<node CREATED="1696628821820" ID="ID_1115877978" MODIFIED="1696628844773" TEXT="std::thread is default constructible &#x27f6; inaktiv"/>
<node CREATED="1696628845625" ID="ID_1290073525" MODIFIED="1696628855357" TEXT="und es gibt einen move-assignment-Operator"/>
<node CREATED="1696629037023" ID="ID_1091879283" MODIFIED="1696629059464" TEXT="man k&#xf6;nnte dann zumindest bei diesem Policy-based-Design bleiben"/>
<node CREATED="1696629077442" ID="ID_955648903" MODIFIED="1696629089884" TEXT="und immerhin auch Member in den Policies initialisieren"/>
</node>
<node COLOR="#435e98" CREATED="1696634919834" ID="ID_1703278814" LINK="https://stackoverflow.com/q/77247752/444796" MODIFIED="1696640406805" TEXT="sicherheitshalber auch nochmal auf Stackoverflow gefragt">
<icon BUILTIN="info"/>
<node COLOR="#338800" CREATED="1696639626943" ID="ID_167373706" MODIFIED="1696640356700" TEXT="mehrere Antworten und alle best&#xe4;tigen mein Argument">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#e4ddaa" COLOR="#435e98" CREATED="1696639898702" ID="ID_1364351681" MODIFIED="1696640392300" TEXT="einer hat ebenfalls die L&#xf6;sung mit dem move-assign vorgeschlagen">
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1696861236797" ID="ID_678601526" MODIFIED="1696861262107" TEXT="es mu&#xdf; mir gelingen, den Workaround mit move-assign zu integrieren">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff00bd" CREATED="1696639942907" ID="ID_773629884" MODIFIED="1696639967679" TEXT="und was nun?">
<font NAME="SansSerif" SIZE="13"/>
<icon BUILTIN="smiley-angry"/>
<node CREATED="1696639992869" ID="ID_237693887" MODIFIED="1696639998160" TEXT="sehe folgende M&#xf6;glichkeiten">
<node CREATED="1696640023536" ID="ID_470066396" MODIFIED="1696640047849" TEXT="&#x201e;ich hab mich verrant&#x201c; &#x27f9; das Wrapper-Design aufgeben">
<node CREATED="1696640075401" ID="ID_1516484124" MODIFIED="1696640085620" TEXT="stets std::thread als direktes Member verwenden"/>
<node CREATED="1696640111893" ID="ID_25607343" MODIFIED="1696640134822" TEXT="per anderweitiger Struktur f&#xfc;r ausreichende Lebensdauer sorgen"/>
<node CREATED="1696640139849" ID="ID_1633568429" MODIFIED="1696640159524" TEXT="Werte in Atomics ablegen und austauschen"/>
</node>
<node CREATED="1696640180387" ID="ID_1878688951" MODIFIED="1696640198386" TEXT="die Wrapper auf das anfangs definierte Minimum beschr&#xe4;nken">
<node CREATED="1696640214151" ID="ID_548509988" MODIFIED="1696640256973" TEXT="typischerweise auf Subsystem-Ebene und dort eine member-Var"/>
<node CREATED="1696640278102" ID="ID_362520772" MODIFIED="1696640302706" TEXT="Thread (Standardfall) so &#xe4;ndern, da&#xdf; er im dtor intern ein detach() macht"/>
<node CREATED="1696640304051" ID="ID_838020700" MODIFIED="1696640339522" TEXT="daf&#xfc;r f&#xe4;llt detach() auf dem API weg und der SteamDispatcher bleibt wie er war"/>
</node>
<node CREATED="1696640573023" ID="ID_1848128254" MODIFIED="1696860986291" TEXT="Komplexit&#xe4;t akzeptieren und das Baukasten-System erweitern">
<linktarget COLOR="#717cb7" DESTINATION="ID_1848128254" ENDARROW="Default" ENDINCLINATION="-84;4;" ID="Arrow_ID_501556845" SOURCE="ID_207476991" STARTARROW="None" STARTINCLINATION="-14;-12;"/>
<node CREATED="1696640688951" ID="ID_308046854" MODIFIED="1696640722766" TEXT="Leistungen">
<node CREATED="1696640723816" ID="ID_1672854598" MODIFIED="1696640771200" TEXT="anheben der Abstraktions-Ebene"/>
<node CREATED="1696640729546" ID="ID_1634619318" MODIFIED="1696640763097" TEXT="explizit und klar in der Verwendung"/>
</node>
<node CREATED="1696640782282" ID="ID_808167181" MODIFIED="1696640793141" TEXT="Konfigurations-Schema einf&#xfc;hren">
<node CREATED="1696640794928" ID="ID_32135588" MODIFIED="1696640811229" TEXT="siehe ElementBoxWidget &#x27f9; BuilderQualifierSupport"/>
<node CREATED="1696641111343" ID="ID_605754599" MODIFIED="1696641133479" TEXT="dieses erweitern um positionale Argumente (Filter)"/>
<node CREATED="1696641170367" ID="ID_1556266623" MODIFIED="1696641175588" TEXT="im Konstruktor-Rumpf">
<node CREATED="1696641176734" ID="ID_1085483271" MODIFIED="1696641183329" TEXT="zuerst die Konfig auswerten"/>
<node CREATED="1696641183773" ID="ID_1987401059" MODIFIED="1696641191081" TEXT="dann explizit den Thread starten"/>
</node>
</node>
<node CREATED="1696641206002" ID="ID_284758018" MODIFIED="1696641255688" TEXT="Ausblick auf die Zukunft: Priority-Klassen, Supervisor anbinden"/>
</node>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1696860909069" ID="ID_207476991" MODIFIED="1696860986291" TEXT="bevor ich aufgebe ... versuche ich die komplexe L&#xf6;sung">
<arrowlink COLOR="#717cb7" DESTINATION="ID_1848128254" ENDARROW="Default" ENDINCLINATION="-84;4;" ID="Arrow_ID_501556845" STARTARROW="None" STARTINCLINATION="-14;-12;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node CREATED="1696861025916" ID="ID_1055867359" MODIFIED="1696861051215" TEXT="diese stellt sich (nat&#xfc;rlich) als viel schwieriger heraus als gedacht...">
<icon BUILTIN="smiley-angry"/>
</node>
<node CREATED="1696861063639" ID="ID_573856897" MODIFIED="1696861076422" TEXT="nach zwei erfolglosen Anl&#xe4;ufen setzte ich auf ein Builder-design">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1696861055152" ID="ID_1482641387" MODIFIED="1696861092287" TEXT="durchgebissen; Problem gel&#xf6;st">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1696861129528" ID="ID_218116618" MODIFIED="1696861206606" TEXT="mit einer Builder-L&#xf6;sung l&#xe4;&#xdf;t sich das Race-Problem &#xbb;einhegen&#xab;">
<linktarget COLOR="#393653" DESTINATION="ID_218116618" ENDARROW="Default" ENDINCLINATION="20;-87;" ID="Arrow_ID_1655702369" SOURCE="ID_1852065850" STARTARROW="None" STARTINCLINATION="-29;62;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1696861147603" ID="ID_1523039562" MODIFIED="1696861176557" TEXT="das Design bleibt dadurch insgesamt fragw&#xfc;rdig">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1696861160426" ID="ID_1982657992" MODIFIED="1696861181025" TEXT="aber auf der Plus-Seite steht das Einkapseln von Komplexit&#xe4;t">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1696533317806" FOLDED="true" ID="ID_641021700" MODIFIED="1696966141682" TEXT="Sicherheit">
<icon BUILTIN="yes"/>
<node CREATED="1696533340931" ID="ID_1317798504" MODIFIED="1696533569753" TEXT="Manipulations-Schutz &#x27f9; wird auf vern&#xfc;nftige Nutzung zur&#xfc;ckgef&#xfc;hrt">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      dies hier ist eine Application-Support-Library; die Nutzer kommen <i>intern aus dem Projekt </i>&#8212; Verst&#228;ndnis der Belange wird vorausgesetzt; wer die Library ihren M&#246;glichkeiten gem&#228;&#223; nutzt, ist sicher, wer Bausteine aus der Library mit eigenem Code verbindet, sollte wissen, was er tut
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#7f7b91" DESTINATION="ID_469430466" ENDARROW="Default" ENDINCLINATION="149;261;" ID="Arrow_ID_481332862" STARTARROW="None" STARTINCLINATION="842;36;"/>
</node>
<node CREATED="1696534019072" ID="ID_1122773717" MODIFIED="1696534097525" TEXT="Storage-Schutz &#x27f9; wieder komplett auf das Thread-Objekt reduziert">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Hintert&#252;ren wie das detach() gibt es k&#252;nftig nicht mehr &#8212; und die Destruktoren terminieren die Applikation, wenn der Thread noch lebt
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1696534115747" ID="ID_1162019250" MODIFIED="1696534126477" TEXT="Race-Schutz">
<node CREATED="1696534735153" ID="ID_392003911" MODIFIED="1696534744447" TEXT="Variante-1">
<node CREATED="1696534747633" ID="ID_977193073" MODIFIED="1696534767400" TEXT="die Heap-Allokation wird erst mal einfach &#xbb;in die Luft geworfen&#xab;"/>
<node CREATED="1696534767964" ID="ID_581508909" MODIFIED="1696537092278">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      es gibt die <i>theoretische </i>M&#246;glichkeit f&#252;r ein Memory-Leak
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1696534813654" ID="ID_1412510556" MODIFIED="1696890781755" TEXT="was aber exterm unwahrscheinlich ist">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...und zwar m&#252;&#223;te
    </p>
    <ul>
      <li>
        die <i>Einrichtung</i>&#160;des Thread ohne Probleme m&#246;glich sein (sonst w&#252;rde der ctor von std::thread scheitern)
      </li>
      <li>
        das Kopieren des Funktors und der Argumente ebenfalls ohne Probleme erfolgt sein
      </li>
      <li>
        aber <i>danach</i>&#160;ein Problem <i>im bereits eingerichteten Thread</i>&#160;auftreten, bevor unser in den try-catch-Block eintritt.
      </li>
    </ul>
    <p>
      Hierzu kommt nur wenig in Frage: einmal die <i>Invocation</i>&#160;des Funktors selber mit als Wert vorliegenden Parametern, sowie dann unser eigener Library-Code bis zu der Stelle, an der der control-flow in den try-catch eintritt, sowie das Logging danach. Da sehe ich im Moment wenig Raum f&#252;r Fehler. Funktoren sind ja entweder Pointer oder Objekte, und durch die erzwungene Kopie sind die tats&#228;chlich dann aktiven Instanzen bereits konstruiert. Ein std::function verwendet zwar einen <i>Invoker, </i>aber das ist ein Trampolin, um die verschiedenen Aufruf-Technologien zu nivellieren; mir ist nicht bekannt, da&#223; das <i>f&#252;r den Aufruf</i>&#160;noch irgend etwas macht, was scheitern k&#246;nnte. Bleiben also nur noch <b>spezielle esoterische Argument-Typen</b>. Und au&#223;erdem m&#252;&#223;te der Optimiser so d&#228;mlich sein, ein bereits kopiertes Argument<i>&#160;noch einmal zu kopieren</i>&#160;nur f&#252;r den Aufruf. Abgesehen davon k&#246;nnten diese &#187;esoterischen&#171; Typen nur bei den weiteren Funktions-Argumenten auftreten (nicht der Funktor, nicht der this-Pointer). Danach haben wir nur noch nicht-virtuelle Aufrufe in die Policy (ist inline) und das Logging &#8212; <i>dieses</i>&#160; stellt vermutlich <i>die gr&#246;&#223;te Gefahr dar; </i>da hier aber kein sch&#252;tzender try-catch mehr dar&#252;ber liegt, f&#252;hren Fehler hier sofort zu std::terminate.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1696534820637" ID="ID_385953120" MODIFIED="1696534913314" TEXT="und keinen Schaden anrichtet, falls es doch auftritt">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Diese Library ist f&#252;r ein Konzept von &#187;Thread&#171; entworfen, das sicherlich nicht erm&#246;glicht, solche Massen an Threads zu erzeugen, da&#223; ein Leak sich praktisch bemerkbar machen w&#252;rde....
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1696535943001" ID="ID_946236947" MODIFIED="1696535969320" TEXT="abgesehen davon ist der Thread selbst der Aktor &#x2014; und alle Daten sind lokal"/>
<node CREATED="1696536052409" ID="ID_1110278116" MODIFIED="1696536192004" TEXT="und die Anordnung in handle_after_thread schlie&#xdf;t weiteren Spielraum aus">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...man kann es so einrichten, da&#223; zuerst das detach() und dann der Destruktor-Aufruf wirklich als Letztes im Thread passieren, und danach nur noch der Funktor vom Framework de-alloziert wird. Falls hier was schief geht, terminiert die Applikation (und das ist gut so)
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1696972878105" FOLDED="true" ID="ID_880873658" MODIFIED="1697299089216">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      allerdings: abgeleitete Klassen <b>leben gef&#228;hrlich</b>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1696972938795" ID="ID_1194001800" MODIFIED="1696972960949" TEXT="wenn im Konstruktor etwas schiefgeht"/>
<node CREATED="1696972967768" ID="ID_1795585703" MODIFIED="1696972989481" TEXT="dann gelingt nicht einmal die Heap-Allokation vollst&#xe4;ndig"/>
<node CREATED="1696973111469" ID="ID_229806295" MODIFIED="1696973186990" TEXT="und der Destruktor blockt und scheitert nicht...">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Ein normaler Thread (und ein Joinable) w&#252;rden den Aufruf des Destruktors verbieten, und damit die Applikation terminieren
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1696972994851" ID="ID_983723928" MODIFIED="1696973016584">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      aber der Thread <i>ist schon &#8222;unterwegs&#8220;</i>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="clanbomber"/>
</node>
<node COLOR="#5b280f" CREATED="1696973047334" FOLDED="true" ID="ID_1485957927" MODIFIED="1697298971369" TEXT="Mitigation: nicht in die Thread-Funktion eintreten wenn nicht isAlive()">
<icon BUILTIN="idea"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1696973209112" ID="ID_1135397788" MODIFIED="1696973227449" TEXT="die C++ Lib schlie&#xdf;t diesen Fall eigentlich aus"/>
<node CREATED="1696973227990" ID="ID_481018550" MODIFIED="1696976336073" TEXT="aber wenn jemand explizit detach() macht..."/>
<node CREATED="1696973241644" ID="ID_1093970050" MODIFIED="1696973309225" TEXT="eigentlich m&#xfc;&#xdf;te man diesen Fall auf einen &#xbb;Autonomous Thread&#xab; einschr&#xe4;nken">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...aber das gibt mein Framework nicht her
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#e2b8ba" COLOR="#690f14" CREATED="1697298179939" ID="ID_439430070" LINK="#ID_141412141" MODIFIED="1697298970738" TEXT="Zu kurz gedacht: wirkt nicht wie gedacht &#x2014; und f&#xfc;hrt in anderen F&#xe4;llen zu Fehlverhalten">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Da bin ich einem Kurzschlu&#223; aufgesessen: wenn die Konstruktion scheitert, und der Destruktor (so wie hier) sich einfach auskoppelt, dann wird nichts im Wrapper selber gemacht, sondern dieser existiert nicht mehr. Der Thread greift damit wild auf freien Speicher zu, der zudem in keinster Weise synchronisiert ist (d.h. selbst wenn wir das Handle vorher auf 0 setzen, wird der schon startende Thread das wahrscheinlich nicht mehr mitbekommen). Dieses Synchronisations-Problem ist es aber auch, das zu <b>Fehlfunktionen</b>&#160;in anderen Konstellationen f&#252;hrt: es kommt sporadisch vor, da&#223; isLive() zu Beginn des Threads noch nicht wahr liefert; die Gr&#252;nde lie&#223;en sich nicht aufkl&#228;ren. In einem solchen Fall w&#252;rde der Thread spurlos terminieren &#8212; und dadurch an anderer Stelle m&#246;glichrweise ein Protokoll brechen oder einen Deadlock verursachen.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="stop-sign"/>
</node>
</node>
</node>
</node>
<node CREATED="1696536197821" ID="ID_817844637" MODIFIED="1696536200313" TEXT="Variante-2">
<node CREATED="1696536201285" ID="ID_688200807" MODIFIED="1696536223893" TEXT="die Analyse f&#xfc;r Variante-1 gilt entsprechend"/>
<node CREATED="1696536407816" ID="ID_347319599" MODIFIED="1696536425835" TEXT="die Allokation erfolgt hier inline und f&#xe4;llt mit dem Wrapper-ctor zusammen"/>
<node CREATED="1696536994395" ID="ID_388805404" MODIFIED="1696537011293" TEXT="der Lebenszyklus-Zustand wird in einem atomic&lt;bool&gt; gespeichert">
<node CREATED="1696537013489" ID="ID_409432066" MODIFIED="1696537023939" TEXT="Wichtig: das mu&#xdf; aus dem Thread heraus passieren"/>
<node CREATED="1696537024504" ID="ID_144595571" MODIFIED="1696537033633" TEXT="und v&#xf6;llig entkoppelt von den Belangen der Allokation"/>
</node>
<node CREATED="1696537035102" ID="ID_1470833223" MODIFIED="1696537079703" TEXT="der Destruktor-Aufruf passiert analog wie bei Variante-1 ebenfalls aus dem Thread"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1696538531430" HGAP="16" ID="ID_1068646904" MODIFIED="1696538556791" TEXT="Fazit: halte es in dieser Form f&#xfc;r eine gelungene L&#xf6;sung" VSHIFT="13">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#338800" CREATED="1696538580339" ID="ID_741763330" MODIFIED="1696966311070" TEXT="Implementierung">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1696687299435" ID="ID_1271362386" MODIFIED="1696961347895" TEXT="Konfiguration erm&#xf6;glichen">
<icon BUILTIN="button_ok"/>
<node COLOR="#5b280f" CREATED="1696687326411" FOLDED="true" ID="ID_682366843" MODIFIED="1696773642410" TEXT="BuilderQualfierSupport nutzbar machen">
<icon BUILTIN="button_cancel"/>
<node COLOR="#435e98" CREATED="1696687354848" FOLDED="true" ID="ID_1619359990" MODIFIED="1696860882593" TEXT="Einsatz kl&#xe4;ren">
<icon BUILTIN="info"/>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1696687359967" ID="ID_1324063173" MODIFIED="1696687373111" TEXT="mix-in wo?">
<icon BUILTIN="help"/>
<node CREATED="1696687398879" ID="ID_477151920" MODIFIED="1696687401765" TEXT="Regeln">
<node CREATED="1696687405817" ID="ID_1328952315" MODIFIED="1696687444511" TEXT="parameter TAR &#x2261; auf diesem Typ arbeiten die Qualifier"/>
<node CREATED="1696687576066" ID="ID_590991660" MODIFIED="1696688207005" TEXT="mix-in &#x27f9; ab diesem Scope ist der Typ Qualifier eingef&#xfc;hrt"/>
<node CREATED="1696687670085" ID="ID_1105883283" MODIFIED="1696688213833" TEXT="Argument-Builder als friends deklariert: Zugriff auf Interna"/>
</node>
<node CREATED="1696690647960" ID="ID_1742846503" MODIFIED="1696690658740" TEXT="deute ich so: es mu&#xdf; kein Mix-in sein"/>
<node CREATED="1696690659376" ID="ID_1064920188" MODIFIED="1696690678293" TEXT="viel wichtiger ist, wo die Argument-Builder als frieds stehen"/>
</node>
<node CREATED="1696690683733" ID="ID_805253305" MODIFIED="1696690770426" TEXT="TAR(Ziel-Typ) : ThreadLifecylce&lt;POL,RES&gt;">
<node CREATED="1696690772137" ID="ID_221934621" MODIFIED="1696690779324" TEXT="das bedeutet: alle Friends sind getemplated"/>
<node CREATED="1696690796286" ID="ID_548905336" MODIFIED="1696690806521" TEXT="sollte kein Problem darstellen">
<node CREATED="1696690810981" ID="ID_1972833988" MODIFIED="1696690824006" TEXT="zur Definition mu&#xdf; man POL nicht explizieren"/>
<node CREATED="1696690824506" ID="ID_105598857" MODIFIED="1696690856753" TEXT="und bei der Anwendung wird es per ADL gebunden"/>
</node>
<node CREATED="1696690871300" ID="ID_1528488763" MODIFIED="1696690893245" TEXT="die Argument-Builder sitzen dann auch dort, und wirken effektiv auf diese Konstruktoren"/>
<node CREATED="1696690894145" ID="ID_1214632249" MODIFIED="1696690928341" TEXT="es gibt (Plan.A) einen separaten, dedizierten Konstruktor ebenda"/>
</node>
</node>
<node COLOR="#fe0548" CREATED="1696691310924" FOLDED="true" ID="ID_252708158" MODIFIED="1696860866131" TEXT="Qualifier-Konstruktor">
<icon BUILTIN="closed"/>
<node CREATED="1696773422943" ID="ID_155610622" MODIFIED="1696773469213" TEXT="es gelingt nicht, die Builder-Funktionen sichtbar zu machen">
<icon BUILTIN="stop-sign"/>
</node>
<node CREATED="1696773470136" ID="ID_252509370" MODIFIED="1696773483525" TEXT="das ganze Konzept h&#xe4;ngt daran, da&#xdf; man unqualifizierte Terme verwendet"/>
<node CREATED="1696773486776" ID="ID_1067885474" MODIFIED="1696773504616" TEXT="diese m&#xfc;ssen aber &#xbb;indirekt&#xab; verdrahtet sein">
<node CREATED="1696773505628" ID="ID_1352395228" MODIFIED="1696773511054" TEXT="n&#xe4;mlich &#xfc;ber den R&#xfc;ckgabewert"/>
<node CREATED="1696773511517" ID="ID_666982787" MODIFIED="1696773517550" TEXT="dieser ist ein Funktor"/>
<node CREATED="1696773518114" ID="ID_1614803911" MODIFIED="1696773532948" TEXT="und arbeitet als Friend auf der zu konfiguierenden Klasse"/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1696773535645" ID="ID_1992973527" MODIFIED="1696773553635" TEXT="das geht bei einfachen Typen, nicht aber bei Templates">
<icon BUILTIN="stop-sign"/>
<node CREATED="1696773558085" ID="ID_181042282" MODIFIED="1696773573941" TEXT="entweder es gelingt &#xfc;berhaupt nicht, die Friend-Deklarationen zu erzeugen"/>
<node CREATED="1696773574594" ID="ID_1440508280" MODIFIED="1696773603811" TEXT="oder sie generieren Funktionen, die im Namespace kollidieren"/>
<node CREATED="1696773604543" ID="ID_1045148333" MODIFIED="1696773618273" TEXT="oder die generierten Funktionen werden nicht ohne Qualifikation gefunden"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1696773620748" ID="ID_1084392128" MODIFIED="1696773634824" TEXT="damit bricht das gesamte Konzept zusammen">
<icon BUILTIN="yes"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990070" CREATED="1696773651080" ID="ID_1779067664" MODIFIED="1696773681597" TEXT="(Verzweiflung ... die Uhr tickt)">
<font ITALIC="true" NAME="SansSerif" SIZE="11"/>
<icon BUILTIN="smily_bad"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1696773689915" FOLDED="true" ID="ID_505123094" MODIFIED="1696961344649" TEXT="Configuration-Builder ist die einzige L&#xf6;sung">
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1696773711584" ID="ID_1136655892" MODIFIED="1696773718472" TEXT="Alternativen?">
<icon BUILTIN="help"/>
<node CREATED="1696773722487" ID="ID_1069796427" MODIFIED="1696773786376">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      es <b>mu&#223;</b>&#160;ein Konstruktor-Aufruf sein
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      zwar k&#246;nnte man nun generell an eine Factory denken, aber diese verlagert die gesamten Gefahren mit dem Instance-Management auf den usage-Kontext, und untergr&#228;bt damit den Zweck des Unterfangens...
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1696773788022" ID="ID_103067174" MODIFIED="1696773810341">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      er <b>soll</b>&#160;einfach und sprechend sein
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1696773813191" ID="ID_921625697" MODIFIED="1696773886262">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      der Einstieg mu&#223; <b>zuverl&#228;ssig</b>&#160;im Typ verankert sein
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#435e98" CREATED="1696773922124" ID="ID_310300656" MODIFIED="1696774335094" TEXT="&#x27f9; bleibt nur der Einstieg &#xfc;ber eine statische Methode im Zieltyp"/>
<node CREATED="1696773947217" ID="ID_897608956" MODIFIED="1696817454466">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      also....
    </p>
    <p>
      
    </p>
    <p>
      <font color="#1b0d7b" face="Monospaced" size="2">unique_ptr&lt;ThreadHookable&gt; thread; </font>
    </p>
    <p>
      <font color="#1b0d7b" face="Monospaced" size="2">thread.reset( </font>
    </p>
    <p>
      <font color="#1b0d7b" face="Monospaced" size="2">&#160;&#160;&#160;&#160;new&#160;ThreadHookable{ </font>
    </p>
    <p>
      <font color="#1b0d7b" face="Monospaced" size="2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ThreadHookable::Launch(myFunctor, arg) </font>
    </p>
    <p>
      <font color="#1b0d7b" face="Monospaced" size="2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;.atStart(initHook) </font>
    </p>
    <p>
      <font color="#1b0d7b" face="Monospaced" size="2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;.atEnd(terminationHook)}); </font>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1696774321215" ID="ID_1696275940" MODIFIED="1696774330486" TEXT="Suche nach sonstigen Alternativen vertagt">
<icon BUILTIN="hourglass"/>
</node>
</node>
<node COLOR="#338800" CREATED="1696774572285" ID="ID_882374829" MODIFIED="1696961281464" TEXT="Zwiebelschalen-Design">
<icon BUILTIN="button_ok"/>
<node CREATED="1696774580118" ID="ID_1750789171" MODIFIED="1696774597403" TEXT="der Builder ist ein tempor&#xe4;rer Typ (f&#xfc;r jeden aufruf spezifisch)"/>
<node CREATED="1696774626822" ID="ID_1811542479" MODIFIED="1696774694500">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      er bietet als internes API eine Funktion <font color="#5c403a" face="Monospaced"><b>configure(this)</b></font>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1696774705297" ID="ID_1802183110" MODIFIED="1696774767328" TEXT="jede zus&#xe4;tzliche chained-Builder-Methode legt dar&#xfc;ber eine weitere Zwiebelschale"/>
<node COLOR="#338800" CREATED="1696778510767" ID="ID_1939881196" MODIFIED="1696778521972" TEXT="Konzept-Studie">
<icon BUILTIN="button_ok"/>
<node CREATED="1696778523133" ID="ID_1413219977" MODIFIED="1696778539719" TEXT="verkettete &#x3bb; verwenden"/>
<node CREATED="1696778542855" ID="ID_1727243560" MODIFIED="1696799211641" TEXT="noch gewisse Probleme mit dem decay_t und dem Kopieren von Argumenten">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1696778568283" ID="ID_999434014" MODIFIED="1696778580090" TEXT="ich mu&#xdf; jetzt Funktor und Argumente in das &#x3bb; kopieren"/>
<node CREATED="1696778580835" ID="ID_1429363688" MODIFIED="1696778795182" TEXT="bekanntes Problem ohne einfache L&#xf6;sung">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      da bin ich schon x-mal dar&#252;ber gestolpert: man kann per Reference oder per Value initialisieren; was nicht funktioniert ist eine move-Initialisierung, d.h. jeder move-only Argument-Typ macht Probleme. Einziger Ausweg war f&#252;r mich bisher, die captures explizit zu benennen und per std::forward-assign zu initialisieren
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1696778678441" ID="ID_381933482" MODIFIED="1696778697722" TEXT="...und zwar weil es ein &#x3bb;-capture by value sein mu&#xdf;"/>
</node>
<node CREATED="1696812275033" ID="ID_964321328" MODIFIED="1696812333238" TEXT="materialisiere Funktor + Argumente in ein Tupel">
<icon BUILTIN="idea"/>
<node CREATED="1696812336727" ID="ID_798176244" MODIFIED="1696812344930" TEXT="dabei kann man decay_t bilden"/>
<node CREATED="1696812345990" ID="ID_1021291890" MODIFIED="1696812369394" TEXT="und dieses Tupel dann in das &#x3bb; verschieben"/>
</node>
<node CREATED="1696812299764" ID="ID_166961627" MODIFIED="1696812330308" TEXT="und entlade das mit einer Hilfsfunktion in den std::thread-Konstruktor">
<node CREATED="1696812379266" ID="ID_870864473" MODIFIED="1696812462503" TEXT="ja... varargs &#x27f9; die Hilfsfunktion ist unvermeidlich">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      wenn halt Argument-Packs einfach als Typ repr&#228;sentierbar w&#228;ren &#8212; aber dem ist nicht so; man mu&#223; gegen ein getemplatetes Argument matchen, um aus einem Argument-Pack einen anderen Argument-Pack zu konstruieren
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1696812473885" ID="ID_1487641552" MODIFIED="1696812488838" TEXT="wie &#xfc;blich: std::index_sequence_for&lt;TYPES...&gt;"/>
</node>
<node CREATED="1696812766502" ID="ID_124892301" MODIFIED="1696812776928" TEXT="Thread-start funktioniert, auch mit Parameter"/>
</node>
<node COLOR="#338800" CREATED="1696812791066" ID="ID_1789709297" MODIFIED="1696860711274" TEXT="Code sinnvoll anordnen">
<icon BUILTIN="button_ok"/>
<node CREATED="1696813183208" ID="ID_100161158" MODIFIED="1696813227123" TEXT="jetzt noch die invokeThreadFunctor-Memberfunktion mit in das Tupel packen..."/>
<node CREATED="1696813171800" ID="ID_155742882" MODIFIED="1696813229500" TEXT="Ha! std::make_from_tuple">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1696816614379" ID="ID_1380705903" MODIFIED="1696816646902" TEXT="das Starten und Zuweisen in eine Hilfsfunktion &#x2b0a; in die ThreadWrapper-Basisklasse">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#2c236a" CREATED="1696817088763" ID="ID_1405496774" MODIFIED="1696860766981" TEXT="so langsam nimmt dieses Konstrukt eine Form an, mit der ich leben kann...">
<icon BUILTIN="smiley-neutral"/>
</node>
<node COLOR="#338800" CREATED="1696860735220" ID="ID_1665003127" MODIFIED="1696860750337" TEXT="das &#x3bb;-chaining in Hilfsmethode extrahiert">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1696860784996" ID="ID_997556571" MODIFIED="1696861419491" TEXT="spezielle Builder-Methoden">
<linktarget COLOR="#8184a8" DESTINATION="ID_997556571" ENDARROW="Default" ENDINCLINATION="-767;-772;" ID="Arrow_ID_1317755297" SOURCE="ID_1893882898" STARTARROW="None" STARTINCLINATION="-380;22;"/>
<icon BUILTIN="hourglass"/>
<node COLOR="#338800" CREATED="1696860795349" ID="ID_1603578610" MODIFIED="1696961291961" TEXT="atStart">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1696860798554" ID="ID_772861645" MODIFIED="1696961291535" TEXT="atExit">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1696961287137" ID="ID_1678356315" MODIFIED="1696961290790" TEXT="onOrphan">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1696860810473" ID="ID_1620627301" MODIFIED="1696860829244" TEXT="...more to follow...">
<font ITALIC="true" NAME="SansSerif" SIZE="10"/>
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1696817478656" ID="ID_1607424036" MODIFIED="1696860385081" TEXT="Umbau der bestehenden Konstruktoren">
<icon BUILTIN="button_ok"/>
<node CREATED="1696817511875" ID="ID_5608930" MODIFIED="1696817549173" TEXT="zwar wird weiterhin der Konstruktor mit threadID + Funktor am meisten verwendet"/>
<node CREATED="1696817550022" ID="ID_1116307132" MODIFIED="1696817567896" TEXT="...aber der neue Konstruktor mit Builder wird nun zum Basis-Fall"/>
<node COLOR="#338800" CREATED="1696860375811" ID="ID_51657413" MODIFIED="1696860383427" TEXT="bisherige Tests und Test-Suite l&#xe4;uft">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1696860541853" ID="ID_1468973098" MODIFIED="1696860551928" TEXT="Applikation funktioniert (bis auf den bad_alloc)">
<icon BUILTIN="button_ok"/>
<node CREATED="1696860554011" ID="ID_465972946" MODIFIED="1696860559110" TEXT="aktueller status-quo"/>
<node COLOR="#338800" CREATED="1696860559906" ID="ID_1976226630" MODIFIED="1696860565601" TEXT="Steam-Dispatcher funktioniert">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1696860845588" ID="ID_1651635592" MODIFIED="1696860853973" TEXT="Konzept geht auf">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1696538593318" ID="ID_1072499488" MODIFIED="1696961356753" TEXT="neue Policies...">
<icon BUILTIN="button_ok"/>
<node CREATED="1696538616428" ID="ID_203239471" MODIFIED="1696538652470" TEXT="spezialisieren beide auf PolicyLaunchOnly">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1696538662293" ID="ID_612737461" MODIFIED="1696961361599" TEXT="Hooks verwenden">
<icon BUILTIN="button_ok"/>
<node CREATED="1696538729479" ID="ID_1821271950" MODIFIED="1696538732072" TEXT="handle_begin_thread"/>
<node CREATED="1696538713759" ID="ID_743139495" MODIFIED="1696538713759" TEXT="handle_after_thread"/>
<node CREATED="1696961378726" ID="ID_1213403952" MODIFIED="1696961379986" TEXT="handle_loose_thread"/>
</node>
<node COLOR="#435e98" CREATED="1696538607372" FOLDED="true" ID="ID_479618351" MODIFIED="1697054175018" TEXT="f&#xfc;r Variante-1">
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1696890808413" ID="ID_569216542" LINK="#ID_1183918146" MODIFIED="1696890916407" TEXT="es zeigt sich: ein smart-ptr l&#xf6;st das Problem gar nicht">
<icon BUILTIN="stop-sign"/>
</node>
<node CREATED="1696890822723" ID="ID_1039222161" MODIFIED="1696890919584" TEXT="damit ist aber auch keine eigene Storage mehr notwendig">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1696890851961" ID="ID_397553721" MODIFIED="1696890865991" TEXT="und auch kein pre-Hook; einfach sich selbst wegschie&#xdf;en und gut is">
<icon BUILTIN="ksmiletris"/>
</node>
<node COLOR="#5b280f" CREATED="1696966181262" ID="ID_1560538998" MODIFIED="1696966195315" TEXT="letztlich gar nicht mehr explizit zu implementieren">
<icon BUILTIN="button_cancel"/>
<node CREATED="1696966202593" ID="ID_315221853" MODIFIED="1696966230107" TEXT="Variante-2 erschl&#xe4;gt alles"/>
<node CREATED="1696966232300" ID="ID_607167636" MODIFIED="1696966249766" TEXT="nur spezielles front-End"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1696538612261" FOLDED="true" ID="ID_661367597" MODIFIED="1697054174113" TEXT="f&#xfc;r Variante-2">
<node CREATED="1696933810166" ID="ID_906750178" MODIFIED="1696933829261" TEXT="stelle Storage bereit als std::function"/>
<node CREATED="1696529718984" ID="ID_1868637331" MODIFIED="1696934476853" TEXT="die schon definierten Hooks + zus&#xe4;tzlichen Erweiterungspunkt">
<arrowlink COLOR="#fdfcc6" DESTINATION="ID_1153306127" ENDARROW="Default" ENDINCLINATION="-341;27;" ID="Arrow_ID_880044186" STARTARROW="None" STARTINCLINATION="263;12;"/>
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1696958434135" ID="ID_1569167047" LINK="#ID_1240123723" MODIFIED="1696958461524" TEXT="Adaptierung auf beliebigen Subtyp automatisch">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1696690988844" FOLDED="true" ID="ID_480585061" MODIFIED="1696861459249" TEXT="das Race-Problem addressieren">
<icon BUILTIN="button_ok"/>
<node CREATED="1696690998156" ID="ID_394310225" MODIFIED="1696691010645" TEXT="der Thread wird erst aus dem Konstruktor-Rumpf gestartet"/>
<node CREATED="1696691012041" ID="ID_1592624785" MODIFIED="1696691021403" TEXT="daf&#xfc;r gibt es eine neue Policy-Funktion"/>
<node CREATED="1696691275142" ID="ID_178562434" MODIFIED="1696691300398" TEXT="aufgedoppelt f&#xfc;r den Qualifier-Konstruktor">
<node CREATED="1696691320304" ID="ID_1114482124" MODIFIED="1696691337153" TEXT="da dieser unbedingt vor dem Launch noch die Qualifier aktivieren mu&#xdf;"/>
<node CREATED="1696691363258" ID="ID_1604122768" MODIFIED="1696691380443" TEXT="es sei den...  man macht den Qualifier-Konstruktor zum Basisfall"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1696691391111" FOLDED="true" ID="ID_939791093" MODIFIED="1696861489816" TEXT="Problem: Funktor-Argumentliste">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1696691415615" ID="ID_167830298" MODIFIED="1696691425773" TEXT="im einfachen Fall problemlos (perfect forwarding)"/>
<node CREATED="1696691426433" ID="ID_921129676" MODIFIED="1696691497844" TEXT="aber mit Qualifier? pa&#xdf;t nicht so recht">
<node CREATED="1696691501159" ID="ID_1948526889" MODIFIED="1696691527488" TEXT="diese Argumentliste wirkt nicht wie ein Setter"/>
<node CREATED="1696691528052" ID="ID_867534321" MODIFIED="1696691543456" TEXT="sondern sie wird an einen Konstruktor (std::thread) weitergereicht"/>
<node CREATED="1696691549747" ID="ID_869387928" MODIFIED="1696691563483" TEXT="die Qualifier arbeiten aber auf einem bereits vorinitialisierten *this"/>
<node CREATED="1696691818733" ID="ID_1953646556" MODIFIED="1696691823856" TEXT="L&#xf6;sungsm&#xf6;glichkeiten">
<node CREATED="1696691830883" ID="ID_863734733" MODIFIED="1696691850173" TEXT="man mu&#xdf; eben doch irgendwo in *this einen Funktor vorbereiten"/>
<node CREATED="1696691855112" ID="ID_637690" MODIFIED="1696691890092" TEXT="die Thread-Funktion nicht per Qualifier &#xfc;bergeben">
<node CREATED="1696691894483" ID="ID_1033784353" MODIFIED="1696691903061" TEXT="sondern als positionale Parameter"/>
<node CREATED="1696691903618" ID="ID_1672986588" MODIFIED="1696691917300" TEXT="bedeutet: brauche Filter &#xfc;ber Variadische Argumente"/>
<node CREATED="1696692386490" ID="ID_1508032921" MODIFIED="1696692408223" TEXT="Qualifier ausf&#xfc;hren und alle sonstigen Argumente &#x27f6; Tupel">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1696691920306" ID="ID_528497572" MODIFIED="1696692215988" TEXT="ein Qualifier launch(fun, args...) ruft direkt das POL::launchThread auf">
<node CREATED="1696692108630" ID="ID_191058307" MODIFIED="1696692116545" TEXT="in dem Moment wird der Thread gestaret"/>
<node CREATED="1696692117109" ID="ID_540268205" MODIFIED="1696692134079" TEXT="das m&#xfc;&#xdf;te dann aber der letzte Qualifier sein"/>
<node CREATED="1696692179757" ID="ID_801136896" MODIFIED="1696692187135" TEXT="gef&#xe4;hrlich und verwirrend">
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node CREATED="1696692189756" ID="ID_1013652330" MODIFIED="1696692249462" TEXT="diesen speziellen Qualifier irgendwie filtern">
<node CREATED="1696692250836" ID="ID_495269824" MODIFIED="1696692276082" TEXT="nicht einfach... es ist kein Typ"/>
<node CREATED="1696692310201" ID="ID_485258287" MODIFIED="1696692318311" TEXT="sondern ein Term vom Typ Qualifier">
<node CREATED="1696692321929" ID="ID_1108650481" MODIFIED="1696692339883" TEXT="d.h, lediglich eine opaque std::function"/>
<node CREATED="1696692360530" ID="ID_604231909" MODIFIED="1696692369921" TEXT="auch einen Subtyp w&#xfc;rde man hier nicht mehr sehen"/>
</node>
</node>
<node CREATED="1696711803811" ID="ID_830334623" MODIFIED="1696711817207" TEXT="viel einfacher: ihn explizit am Anfang der Argumentliste erwarten"/>
<node CREATED="1696774366414" ID="ID_768133943" MODIFIED="1696774412701" TEXT="durch Builder-Syntax und tempor&#xe4;res Objekt explizit l&#xf6;sen">
<linktarget COLOR="#ab3573" DESTINATION="ID_768133943" ENDARROW="Default" ENDINCLINATION="-135;7;" ID="Arrow_ID_222249914" SOURCE="ID_423350033" STARTARROW="None" STARTINCLINATION="186;8;"/>
<node CREATED="1696774433105" ID="ID_1904794214" MODIFIED="1696774466735" TEXT="der Builder wird direkt mit dem eigentlichen Funktor er&#xf6;ffnet"/>
<node CREATED="1696774467368" ID="ID_138567453" MODIFIED="1696774473433" TEXT="alle weiteren Argumente sind optional"/>
</node>
</node>
</node>
</node>
<node COLOR="#5b280f" CREATED="1696773328397" ID="ID_423350033" MODIFIED="1696774419956" TEXT="L&#xf6;sung mit Qualifier-ctor scheitert an (nicht vorhandenem) ADL">
<arrowlink COLOR="#ab3573" DESTINATION="ID_768133943" ENDARROW="Default" ENDINCLINATION="-135;7;" ID="Arrow_ID_222249914" STARTARROW="None" STARTINCLINATION="186;8;"/>
<icon BUILTIN="closed"/>
</node>
<node COLOR="#338800" CREATED="1696861442309" ID="ID_252350603" MODIFIED="1696861456905" TEXT="L&#xf6;sung mit Konfigurations-Builder ist durchf&#xfc;hrbar">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1696893013891" ID="ID_1856740667" MODIFIED="1697133524821" TEXT="damit bestehende Probleme im Applikations-Code l&#xf6;sen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1696893026770" ID="ID_253995958" MODIFIED="1697079847058" TEXT="GtkLumiera">
<icon BUILTIN="button_ok"/>
<node CREATED="1696893056374" MODIFIED="1696893056374" TEXT="Variante-1"/>
</node>
<node COLOR="#338800" CREATED="1696893037535" ID="ID_1340852722" MODIFIED="1697068777127" TEXT="OutputDirector">
<icon BUILTIN="button_ok"/>
<node CREATED="1696893058148" MODIFIED="1696893058148" TEXT="Variante-1"/>
</node>
<node COLOR="#338800" CREATED="1696893032057" ID="ID_926131453" MODIFIED="1697133522544" TEXT="SteamDispatcher">
<icon BUILTIN="button_ok"/>
<node CREATED="1696893059260" ID="ID_109825250" MODIFIED="1696893063103" TEXT="Variante-2"/>
</node>
</node>
<node COLOR="#338800" CREATED="1696538743210" ID="ID_1370366397" MODIFIED="1697054081393" TEXT="Tests erg&#xe4;nzen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1696538756712" ID="ID_1688404846" MODIFIED="1697050726434" TEXT="ThreadWrapperAutonomous_test">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1696539571988" ID="ID_791561993" MODIFIED="1696966349054" TEXT="demonstriert: einen Thread komplett abgekoppelt starten">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1696966318864" ID="ID_1955344707" MODIFIED="1697050723749" TEXT="sauberes Memory-Management belegen">
<icon BUILTIN="button_ok"/>
<node CREATED="1696971867646" ID="ID_1915512401" MODIFIED="1696971888573" TEXT="lib/test/testdummy.hpp &#xd83e;&#xdc7a; als Member verwenden"/>
<node COLOR="#435e98" CREATED="1697050651493" ID="ID_92765841" MODIFIED="1697050712336" TEXT="AUA: das mit der member-Funktion geht ja gar nicht">
<arrowlink COLOR="#5d6faa" DESTINATION="ID_57182560" ENDARROW="Default" ENDINCLINATION="-230;791;" ID="Arrow_ID_1090153547" STARTARROW="None" STARTINCLINATION="772;-34;"/>
<icon BUILTIN="broken-line"/>
</node>
<node COLOR="#338800" CREATED="1697050598820" ID="ID_1379899935" MODIFIED="1697050718681" TEXT="Demonstration: kann in der Tat auch eine Member-Funktion aufrufen">
<linktarget COLOR="#07a068" DESTINATION="ID_1379899935" ENDARROW="Default" ENDINCLINATION="479;18;" ID="Arrow_ID_645882664" SOURCE="ID_1656504822" STARTARROW="None" STARTINCLINATION="268;31;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1696538825003" ID="ID_1787030725" MODIFIED="1697053977126" TEXT="ThreadWrapperLifecycle_test">
<icon BUILTIN="button_ok"/>
<node CREATED="1696538968712" ID="ID_1296694941" MODIFIED="1696538983238" TEXT="sollte das Thema &#xbb;Lifecycle&#xab; insgesamt beleuchten"/>
<node CREATED="1696538984394" ID="ID_1424729205" MODIFIED="1696538993373" TEXT="die neue Variante ist dann nur ein Sonderfall"/>
<node COLOR="#338800" CREATED="1696966333429" ID="ID_232799934" MODIFIED="1696966344964" TEXT="Lifecycle-Hooks in Einsatz zeigen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1697053980258" ID="ID_907514488" MODIFIED="1697054017174" TEXT="Interaktion mit der Umgebung">
<icon BUILTIN="button_ok"/>
<node CREATED="1697054018477" ID="ID_714874853" MODIFIED="1697054032319" TEXT="das ist eine vereinfachte Demo f&#xfc;r das Setup im Steam-Dispatcher"/>
<node CREATED="1697054033897" ID="ID_265930418" MODIFIED="1697054078497" TEXT="die Komponente erbt vom Thread und bindet Lifecycle-Hooks"/>
<node CREATED="1697054058064" ID="ID_1243838384" MODIFIED="1697054068656" TEXT="und schie&#xdf;t sich selbst am Ende weg"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1696538243989" FOLDED="true" ID="ID_963020368" MODIFIED="1697427316841" TEXT="Objekt-Monitor (Wrapper)">
<linktarget COLOR="#1e9fe8" DESTINATION="ID_963020368" ENDARROW="Default" ENDINCLINATION="-1386;137;" ID="Arrow_ID_750207085" SOURCE="ID_1209350338" STARTARROW="None" STARTINCLINATION="-379;-555;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1696538320106" ID="ID_1371656828" MODIFIED="1697427312681" TEXT="Wrapper bestand schon bisher">
<icon BUILTIN="info"/>
<node CREATED="1696538329153" ID="ID_23495962" MODIFIED="1696538341970" TEXT="war zun&#xe4;chst aufgebaut auf Christian&apos;s NoBug-Adapter"/>
<node CREATED="1696538342567" ID="ID_1615743688" MODIFIED="1696538354117" TEXT="dann umgestellt auf direkte Verwendung von POSIX"/>
<node CREATED="1696538357069" ID="ID_1873108466" MODIFIED="1696538370097" TEXT="hat sich sehr gut bew&#xe4;hrt">
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#338800" CREATED="1696538432819" FOLDED="true" ID="ID_1257702273" MODIFIED="1697321899332" TEXT="Analyse der Semantik">
<icon BUILTIN="button_ok"/>
<node CREATED="1696538453264" ID="ID_1672358651" MODIFIED="1696538455260" TEXT="POSIX">
<node CREATED="1696538464327" ID="ID_1024694040" MODIFIED="1696538476389" TEXT="ich hatte schon einen Basis-Adapter dazwischen">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1696538455872" ID="ID_795722171" MODIFIED="1696538460260" TEXT="C++14-Wrapper">
<node CREATED="1697151693240" ID="ID_254039362" MODIFIED="1697151699355" TEXT="relevant">
<node CREATED="1697151748256" ID="ID_1985516619" MODIFIED="1697151819444" TEXT="mutex">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1985516619" ENDARROW="Default" ENDINCLINATION="133;0;" ID="Arrow_ID_591394395" SOURCE="ID_1259850998" STARTARROW="None" STARTINCLINATION="115;0;"/>
</node>
<node CREATED="1697151750928" ID="ID_1683342529" MODIFIED="1697151811512" TEXT="recursive_mutex">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1683342529" ENDARROW="Default" ENDINCLINATION="51;0;" ID="Arrow_ID_1845277195" SOURCE="ID_1259850998" STARTARROW="None" STARTINCLINATION="51;0;"/>
</node>
<node CREATED="1697151767230" ID="ID_1435647108" MODIFIED="1697151769601" TEXT="condition_var">
<node CREATED="1697152084523" HGAP="95" ID="ID_605165052" MODIFIED="1697152104685" TEXT="zwingend an unique_lock + ein mutex gebunden" VSHIFT="6"/>
</node>
<node CREATED="1697151774377" ID="ID_1259850998" MODIFIED="1697151819444" TEXT="unique_lock">
<arrowlink DESTINATION="ID_1683342529" ENDARROW="Default" ENDINCLINATION="51;0;" ID="Arrow_ID_1845277195" STARTARROW="None" STARTINCLINATION="51;0;"/>
<arrowlink DESTINATION="ID_1985516619" ENDARROW="Default" ENDINCLINATION="133;0;" ID="Arrow_ID_591394395" STARTARROW="None" STARTINCLINATION="115;0;"/>
<node CREATED="1697152113215" HGAP="93" ID="ID_950739856" MODIFIED="1697152434282" TEXT="ist ein (flexiblerer) lock_guard..." VSHIFT="5">
<arrowlink DESTINATION="ID_944756854" ENDARROW="Default" ENDINCLINATION="171;0;" ID="Arrow_ID_120128551" STARTARROW="None" STARTINCLINATION="-9;17;"/>
<node CREATED="1697152145940" ID="ID_276145575" MODIFIED="1697152151934" TEXT="normalerweise im ctor gelockt"/>
<node CREATED="1697152152402" ID="ID_1887916464" MODIFIED="1697152158165" TEXT="kann aber ungelockt erstellt werden"/>
<node CREATED="1697152161546" ID="ID_802566279" MODIFIED="1697152196264" TEXT="kann trylock machen, auch im ctor"/>
<node CREATED="1697152207265" ID="ID_1526785209" MODIFIED="1697152220429" TEXT="kann explizit unlocked werden, und dann sp&#xe4;ter wieder gelockt"/>
</node>
</node>
<node CREATED="1697151783060" ID="ID_944756854" MODIFIED="1697152438468" TEXT="lock_guard">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_944756854" ENDARROW="Default" ENDINCLINATION="171;0;" ID="Arrow_ID_120128551" SOURCE="ID_950739856" STARTARROW="None" STARTINCLINATION="-9;17;"/>
<linktarget COLOR="#a9b4c1" DESTINATION="ID_944756854" ENDARROW="Default" ENDINCLINATION="300;0;" ID="Arrow_ID_253725530" SOURCE="ID_6034412" STARTARROW="None" STARTINCLINATION="300;0;"/>
</node>
<node CREATED="1697151896093" HGAP="22" ID="ID_1465275644" MODIFIED="1697151914560" TEXT="andere" VSHIFT="17">
<node CREATED="1697151926997" ID="ID_801192171" MODIFIED="1697151931804" TEXT="shared_mutex">
<node CREATED="1697152263803" ID="ID_1586207113" MODIFIED="1697152273528" TEXT="hat zwei lock-Modi: exclusive und shared"/>
<node CREATED="1697152275370" ID="ID_1656757256" MODIFIED="1697152297738" TEXT="shared-lock kann nur erlangt werden, wenn es kein exclusive lock gibt"/>
<node CREATED="1697152298207" ID="ID_1153249756" MODIFIED="1697152311099" TEXT="use-case: shared reading, exclusive writing"/>
</node>
<node CREATED="1697151937271" ID="ID_1732379198" MODIFIED="1697151940029" TEXT="timed_mutex">
<node CREATED="1697152313437" ID="ID_1264555835" MODIFIED="1697152324127" TEXT="bietet zus&#xe4;tzlich timeouts"/>
</node>
<node CREATED="1697152072365" ID="ID_1696650993" MODIFIED="1697152075403" TEXT="scoped_lock">
<node CREATED="1697152328107" ID="ID_6034412" MODIFIED="1697152438468" TEXT="ein spezieller lock-guard">
<arrowlink DESTINATION="ID_944756854" ENDARROW="Default" ENDINCLINATION="300;0;" ID="Arrow_ID_253725530" STARTARROW="None" STARTINCLINATION="300;0;"/>
</node>
<node CREATED="1697152345096" ID="ID_234957929" MODIFIED="1697152357178" TEXT="kann aber mehrere Locks atomar erlangen"/>
<node CREATED="1697152358271" ID="ID_35680042" MODIFIED="1697152371417" TEXT="und dabei eine Deadlock-Vermeidungsstrategie anwenden">
<node CREATED="1697152546245" ID="ID_1179913701" MODIFIED="1697152553352" TEXT="ruft eigentlich den algo std::lock auf"/>
<node CREATED="1697152558001" ID="ID_721786307" MODIFIED="1697152570462" TEXT="dieser pr&#xfc;ft intelligent den locking-Zustand"/>
<node CREATED="1697152611045" ID="ID_16304346" MODIFIED="1697152621727" TEXT="und entsperrt alle Locks im Fehlerfall"/>
</node>
</node>
</node>
</node>
<node CREATED="1697152640957" ID="ID_1468664263" MODIFIED="1697152644272" TEXT="Einsch&#xe4;tzung">
<node CREATED="1697152645136" ID="ID_1133656270" MODIFIED="1697152651011" TEXT="v&#xf6;llig unproblematisch"/>
<node CREATED="1697152651631" ID="ID_683393307" MODIFIED="1697152662130" TEXT="hier wird die POSIX-Semantik 1:1 durchgereicht"/>
<node CREATED="1697152671557" ID="ID_591975919" MODIFIED="1697152945571" TEXT="Twist">
<node CREATED="1697152946704" ID="ID_828959106" MODIFIED="1697152946704" TEXT="condition_var will ein bereits erlangtes unique_lock">
<node CREATED="1697153345130" ID="ID_1006609083" MODIFIED="1697153357503" TEXT="bei POSIX ist das einfach eine Precondition"/>
<node CREATED="1697153358136" ID="ID_833851692" MODIFIED="1697153372234" TEXT="unsere bisherige Impl stellt das auch nur kontextuell sicher"/>
<node CREATED="1697153375126" ID="ID_84530625" MODIFIED="1697153390904" TEXT="dagegen durch das unique_lock wird das materialisiert"/>
<node COLOR="#5b280f" CREATED="1697153721983" ID="ID_1120978458" MODIFIED="1697211295181" TEXT="es gibt aber den &#xbb;adopt lock&#xab;-Mechanismus">
<icon BUILTIN="button_cancel"/>
<node CREATED="1697211296788" ID="ID_516008091" MODIFIED="1697211306007" TEXT="nein: das hilft nicht"/>
<node CREATED="1697211306619" ID="ID_20444784" MODIFIED="1697211430279" TEXT="unique_lock kann selber nicht rekursiv assoziiert werden">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Es kann zwar ein rekursives Mutex verwenden, aber jede Ebene von Locking mu&#223; dann als eigenes unique_lock-Token repr&#228;sentiert werden.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1697211431074" ID="ID_921453654" MODIFIED="1697211474012" TEXT="&#x27f9; unique_lock kann daher nicht gemeinsam mit mehreren Threads arbeiten"/>
</node>
<node CREATED="1697211475596" ID="ID_1432080537" MODIFIED="1697211499297" TEXT="alternativ: die allgemeine condition_var_any verwenden">
<icon BUILTIN="idea"/>
<node CREATED="1697211738347" ID="ID_1470675670" MODIFIED="1697211757821">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      diese setzt nur ein <i>BasicLockable</i>&#160;voraus
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1697211758557" ID="ID_1308356052" MODIFIED="1697211769888">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Mutex selber ist bereits <i>BasicLockable</i>
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node CREATED="1697153008914" ID="ID_939982348" MODIFIED="1697153033086" TEXT="keine Error-R&#xfc;ckgabecodes mehr. Stattdessen throw std::system_error"/>
<node COLOR="#435e98" CREATED="1697208294038" ID="ID_724408266" MODIFIED="1697208642249">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      die C++ - Wrapper sind <b>non-copyable</b>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1697208611826" ID="ID_1407647722" MODIFIED="1697226243538" TEXT="was man synchronisiert, hat typischerweise Referenz-Semantik">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#435e98" CREATED="1697208590782" FOLDED="true" ID="ID_1383871199" MODIFIED="1697301734198" TEXT="aber: class Monitor erlaubt Brechen dieser Bedingung">
<linktarget COLOR="#7168c3" DESTINATION="ID_1383871199" ENDARROW="Default" ENDINCLINATION="-768;38;" ID="Arrow_ID_1367033811" SOURCE="ID_1311077272" STARTARROW="None" STARTINCLINATION="-220;-13;"/>
<icon BUILTIN="broken-line"/>
<node CREATED="1697226328908" ID="ID_1205179392" MODIFIED="1697226343430" TEXT="er hat einen Copy-Konstruktor und Assignment"/>
<node CREATED="1697226345928" ID="ID_244225602" MODIFIED="1697226360003" TEXT="diese erzeugen jeweils einfach eine neue Implementierung"/>
<node CREATED="1697226360536" ID="ID_1800556938" MODIFIED="1697226426877" TEXT="nicht die feine englische Art">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...gegebenfalls kann es dadurch passieren, da&#223; man ein grade gesperrtes Mutex einfach &#8222;fahren l&#228;&#223;t&#8220; &#8212; mit unabsehbaren Folgen
    </p>
  </body>
</html></richcontent>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
<node COLOR="#338800" CREATED="1697301705066" ID="ID_249445320" MODIFIED="1697301728385" TEXT="weg damit">
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#338800" CREATED="1697301688052" ID="ID_1729479673" MODIFIED="1697301694299" TEXT="stellt sich aber als irrelevant heraus">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1697153970230" ID="ID_1218189224" MODIFIED="1697321893506" TEXT="Herangehensweise?">
<icon BUILTIN="help"/>
<node CREATED="1697153994987" ID="ID_678749516" MODIFIED="1697153998214" TEXT="Situation">
<node CREATED="1697153999066" ID="ID_1857771089" MODIFIED="1697154022235" TEXT="ich habe ein relativ koh&#xe4;sives St&#xfc;ck Code mit einem schmalen API nach au&#xdf;en"/>
<node CREATED="1697154049196" ID="ID_1905385027" MODIFIED="1697154074365" TEXT="der Code wurde bereits mehrfach umgeschrieben und &#x201e;aufgebohrt&#x201c; f&#xfc;r Timeouts"/>
<node CREATED="1697154093695" ID="ID_680368704" MODIFIED="1697154108078" TEXT="der Code ist sehr gut gegliedert; es gibt einen low-Level-Layer"/>
<node CREATED="1697154131456" ID="ID_1645036069" MODIFIED="1697154252320" TEXT="der Code orientiert sich an POSIX &#x27f9; er ist Konventions-orientiert">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Genauer gesagt, der Code versucht, die Konventions-basierte Herangehensweise aus POSIX / C in einen Token-orientierten Ansatz f&#252;r C++ zu &#252;bersetzen. Das bedeutet aber, auch das Monitor-API ist noch Konventions-basiert
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1697154260247" ID="ID_685378325" MODIFIED="1697154263707" TEXT="M&#xf6;glichkeiten">
<node CREATED="1697154266598" ID="ID_1270232575" MODIFIED="1697154286783" TEXT="transparenter Switch">
<node CREATED="1697154290739" ID="ID_760570676" MODIFIED="1697154353526" TEXT="in den low-Level Wrapper wird einfach der POSIX-Code durch C++-Wrapper ersetzt"/>
<node CREATED="1697154355514" ID="ID_165826479" MODIFIED="1697154371436" TEXT="nach M&#xf6;glichkeit sollte bereits das API der low-Level Wrapper unver&#xe4;ndert bleiben"/>
<node CREATED="1697154383255" ID="ID_1951392587" MODIFIED="1697211542815" TEXT="kein unique_lock verwenden, sondern die unspezifische condition_var_any"/>
<node CREATED="1697154499291" ID="ID_1226519053" MODIFIED="1697154527047" TEXT="in ConditionVar wird versucht, die R&#xfc;ckgabe-Werte und den Timeout analog nachzubilden"/>
<node CREATED="1697154535460" ID="ID_353347483" MODIFIED="1697154557475" TEXT="Resultat &#x27f9; der Lock-Guard dar&#xfc;ber verh&#xe4;lt sich 1:1 identisch"/>
<node CREATED="1697154566590" ID="ID_1192462258" MODIFIED="1697154587375" TEXT="anschlie&#xdf;end k&#xf6;nnte man noch &#x3bb;-support einbauen"/>
</node>
<node CREATED="1697154592299" ID="ID_1809860327" MODIFIED="1697154630897" TEXT="strukturelle Verbesserung">
<node CREATED="1697154638261" ID="ID_1493391144" MODIFIED="1697154656991" TEXT="nur die Monitor-Klasse bleibt &#xe4;quivalent erhalten"/>
<node CREATED="1697154664352" ID="ID_453928483" MODIFIED="1697154681027" TEXT="die zwei Ebenen Wrapper darunter werden durch Typedefs auf C++-Wrapper ersetzt"/>
<node CREATED="1697155716573" ID="ID_1758887952" MODIFIED="1697155738480" TEXT="oder genauer: in Policy-Klassen zusammengefa&#xdf;t"/>
<node CREATED="1697155742090" ID="ID_311928425" MODIFIED="1697211635523" TEXT="auch hier kann kein unique_lock verwendet werden"/>
</node>
<node CREATED="1697155790803" ID="ID_1122062252" MODIFIED="1697155795238" TEXT="Monitor-Refactoring">
<node CREATED="1697155797458" ID="ID_1050112760" MODIFIED="1697155862237" TEXT="Monitor l&#xf6;st sich vom Lehrbuch-Schema"/>
<node CREATED="1697155866508" ID="ID_607921464" MODIFIED="1697155887706" TEXT="stattdessen wird der Token-Ansatz bereits im Monitor verankert"/>
<node CREATED="1697155965676" ID="ID_736666954" MODIFIED="1697155999305" TEXT="das hei&#xdf;t: man bekommt vom Monitor einen Guard-mit-Proze&#xdf;-API"/>
<node CREATED="1697156007104" ID="ID_1780881398" MODIFIED="1697156030745" TEXT="der Lock-Guard ist dann nur noch ein Konstruktor-Wrapper dar&#xfc;ber"/>
<node CREATED="1697156077365" ID="ID_1535123758" MODIFIED="1697156103949" TEXT="Zus&#xe4;tzlich Erg&#xe4;nzung um eine TryLock-Variante (als optional&lt;Guard&gt;)"/>
</node>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1697156128590" ID="ID_731556592" MODIFIED="1697385802949" TEXT="Abw&#xe4;gung">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node CREATED="1697156137517" ID="ID_817522107" MODIFIED="1697385837580" TEXT="der &#xbb;transparente Switch&#xab; ist rasch und ohne Risiko umsetzbar">
<arrowlink COLOR="#58a8bf" DESTINATION="ID_1417792791" ENDARROW="Default" ENDINCLINATION="94;-287;" ID="Arrow_ID_1502905066" STARTARROW="None" STARTINCLINATION="-173;8;"/>
<icon BUILTIN="full-1"/>
<node CREATED="1697156194805" ID="ID_520707349" MODIFIED="1697156316185" TEXT="Ziel ist, den status-quo zu erhalten"/>
<node CREATED="1697156375349" ID="ID_854423215" MODIFIED="1697156397382" TEXT="erweiterte Analyse + Tests sind nicht notwendig"/>
<node CREATED="1697156317135" ID="ID_935065583" MODIFIED="1697156350020" TEXT="das wird erkauft durch eine exzessiv indirekte Code-Struktur"/>
<node CREATED="1697156412448" ID="ID_659475954" MODIFIED="1697156527005" TEXT="das Ergebnis ist offen f&#xfc;r &#x201e;wilden&#x201c; Direkt-Gebrauch">
<node CREATED="1697156532544" ID="ID_273574678" MODIFIED="1697156637966" TEXT="denn urspr&#xfc;nglich war das sogar die Intention">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Ganz am Anfang hatte ich die Makros aus NoBug, deren Gebrauch im C++-Code schwierig ist. Daher dachte ich, ich packe die jeweils in einen Wrapper. Der Monitor ist dann nur ein Zustatz-Feature
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1697156544607" ID="ID_1900999328" MODIFIED="1697156780356" TEXT="solcher Gebrauch ist dann aber in der Praxis bisher nie notwendig gewesen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...aber nachdem ich den Monitor entwickelt hatte, war mir klar, da&#223; ich an den Basis-Elementen gar kein Interesse mehr habe, weil der Monitor ein Design-Pattern ist und damit ordnend auf den Code wirkt. Im Lauf der Jahre hat sich dann gezeigt, da&#223; ich &#252;berhaupt nichts anderes brauche, als nur das Lock-Guard front-End (+Atomics f&#252;r alle nicht-trivialen F&#228;lle).
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1697156786102" ID="ID_1309147992" MODIFIED="1697156842803" TEXT="die C++ Wrapper allerdings machen &#x201e;wilden&#x201c; Gebrauch unattraktiv und unwahrscheinlich"/>
</node>
<node CREATED="1697156922980" ID="ID_1251565315" MODIFIED="1697156937622" TEXT="das Ergebnis stellt aber keine strukturelle Verschlechterung dar"/>
<node CREATED="1697156941858" ID="ID_933669206" MODIFIED="1697156948146" TEXT="...und k&#xf6;nnte daher ein Zwischenschritt sein"/>
</node>
<node CREATED="1697156852566" ID="ID_1056176020" MODIFIED="1697385897702" TEXT="die &#xbb;strukturelle Verbesserung&#xab; stellt l&#xe4;ngerfristig das Minimum an Code-Qualit&#xe4;t dar">
<arrowlink COLOR="#18889d" DESTINATION="ID_785406259" ENDARROW="Default" ENDINCLINATION="22;-279;" ID="Arrow_ID_1406241214" STARTARROW="None" STARTINCLINATION="-290;10;"/>
<icon BUILTIN="full-2"/>
<node CREATED="1697156959663" ID="ID_1687873684" MODIFIED="1697156975190" TEXT="da klar ist, da&#xdf; nur der Monitor verwendet werden soll..."/>
<node CREATED="1697156976195" ID="ID_681854744" MODIFIED="1697156985008" TEXT="deshalb kann auch alles Andere zur&#xfc;ckgebaut werden"/>
<node CREATED="1697157070044" ID="ID_1501146985" MODIFIED="1697157223059" TEXT="die unique_lock-Instanz ist zugleich Verbesserung und zus&#xe4;tzlicher Ballast">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Verbesserung, weil sie die Implementierung einfach und klar macht, und mehr dem C++-Stil entspricht. Aber sie ist auch ein stets vorhandener zus&#228;tzlicher Storage-Ballast, der eigentlich nicht notwendig w&#228;re
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1697157236623" ID="ID_1796494876" MODIFIED="1697157269817" TEXT="die Implementierung im Monitor m&#xfc;&#xdf;te schrittweise aufgebaut/konsolidiert werden"/>
<node CREATED="1697157270541" ID="ID_1316555147" MODIFIED="1697157286077" TEXT="dazu sollte vorher f&#xfc;r ausreichende Test-Coverage gesorgt sein"/>
</node>
<node CREATED="1697157349262" ID="ID_871141135" MODIFIED="1697157349262" TEXT="das &#xbb;Monitor-Refactoring&#xab; entspricht meinem eigenen Qualit&#xe4;ts-Anspruch">
<icon BUILTIN="full-3"/>
<node CREATED="1697157372112" ID="ID_247839273" MODIFIED="1697157389225" TEXT="das bedeutet: l&#xe4;ngerfristig sollte das das Ziel sein"/>
<node CREATED="1697157390189" ID="ID_1494264417" MODIFIED="1697157417062" TEXT="Nachteil: es ist ein Privat-Konzept und theoretisch nicht untersucht"/>
<node CREATED="1697157432440" ID="ID_30899784" MODIFIED="1697157455160" TEXT="es w&#xfc;rde das Ballast-Problem der mittleren Variante beheben"/>
<node CREATED="1697157469806" ID="ID_1885906639" MODIFIED="1697157489020" TEXT="das Ausarbeiten eines sinnvollen Proze&#xdf;-API braucht Zeit und Experimente"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1697157515644" ID="ID_91141549" MODIFIED="1697157775531" TEXT="Fazit">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="forward"/>
<node CREATED="1697157519076" ID="ID_319583115" MODIFIED="1697157532140" TEXT="es handelt sich nicht um Alternativen, sondern einen Stufen-Plan"/>
<node CREATED="1697157566462" ID="ID_652673137" MODIFIED="1697157722839" TEXT="zur Vermeidung von Entwicklungs-Risiken sollten alle Schritte durchlaufen werden">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      zwar traue ich mir zu, die mittlere Stufe der &#187;strukturellen Verbesserung&#171; direkt zu implementieren, aber in dieser Hinsicht &#252;bersch&#228;tze ich h&#228;ufig die reale Komplexit&#228;t und die Projekt-Risiken. Schon allein um aufwendige Regressionen zu vermeiden sollte stets auf gute Test-Coverage geachtet werden, was nurch durch schritweises Vorgehen m&#246;glich ist
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1697157736647" ID="ID_1786481655" MODIFIED="1697385915735" TEXT="da ich unter Zeitdruck stehe, ist es denkbar, zun&#xe4;chst nur die erste Stufe umzusetzen">
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1696538492114" ID="ID_1214186481" MODIFIED="1697427298475" TEXT="Umarbeiten">
<icon BUILTIN="yes"/>
<node COLOR="#338800" CREATED="1697208267170" FOLDED="true" ID="ID_1417792791" MODIFIED="1697385829109" TEXT="Stufe-1">
<linktarget COLOR="#58a8bf" DESTINATION="ID_1417792791" ENDARROW="Default" ENDINCLINATION="94;-287;" ID="Arrow_ID_1502905066" SOURCE="ID_817522107" STARTARROW="None" STARTINCLINATION="-173;8;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1697211709960" ID="ID_1334084058" MODIFIED="1697211722231" TEXT="mutex, shared_mutex und condition_var_any einf&#xfc;hren"/>
<node CREATED="1697212577546" ID="ID_701908821" MODIFIED="1697212604297" TEXT="elementare Wait-Logik in wrapped_condition nachbauen">
<node CREATED="1697212819465" ID="ID_1989441029" MODIFIED="1697212843810" TEXT="die Timeout-Flag wird hintenrum durch lumiera_lockerror hochgegeben">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1697212844861" ID="ID_1361936196" MODIFIED="1697212864910" TEXT="aber die n&#xe4;chste Ebene in Condition::wait() setzt das bereits in einen bool um"/>
<node CREATED="1697212907981" ID="ID_1359746473" MODIFIED="1697212958572" TEXT="ebenso wird die Timeout-Zeit im Monitor in einen ulong(millis) umgesetzt"/>
</node>
<node CREATED="1697212978323" ID="ID_1878302471" MODIFIED="1697213004811" TEXT="also sollte den &#xbb;timeout&#xab; sofort modernisieren">
<node CREATED="1697226451516" ID="ID_1234718286" MODIFIED="1697226471469" TEXT="erst mal auf Millisekunden-Parameter, der 0 sein kann"/>
<node CREATED="1697226473433" ID="ID_1085819281" MODIFIED="1697226495115" TEXT="brauche keine Klasse Timeout mehr, die einen Timeout fest speichert"/>
<node COLOR="#5b280f" CREATED="1697226910607" ID="ID_1996109798" MODIFIED="1697375725185" TEXT="bisher gab es das Konzept isTimedWait()">
<icon BUILTIN="button_cancel"/>
<node CREATED="1697227170044" ID="ID_1914088992" MODIFIED="1697227366621" TEXT="der Subsystem-Runner verwendet das (einzige Verwendung)"/>
<node CREATED="1697227176603" ID="ID_1461108141" MODIFIED="1697227196532" TEXT="er kann im Emergency-Fall nachtr&#xe4;glich ein Timeout setzen"/>
<node CREATED="1697227368355" ID="ID_8720299" MODIFIED="1697227492130" TEXT="vermeidet Deadlock mit nur einem Thread">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...zumindest war das wohl die Motivation, wenn ich die Kommentare im Test hinzunehme.
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1697227493003" ID="ID_1899195103" MODIFIED="1697227520087" TEXT="erscheint mir halbgar">
<icon BUILTIN="smiley-angry"/>
</node>
<node COLOR="#338800" CREATED="1697229575552" ID="ID_756306663" MODIFIED="1697375743316" TEXT="saubere L&#xf6;sung">
<arrowlink COLOR="#456a93" DESTINATION="ID_1987547541" ENDARROW="Default" ENDINCLINATION="-595;-40;" ID="Arrow_ID_1122128450" STARTARROW="None" STARTINCLINATION="-831;116;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1697226501663" ID="ID_1038438154" MODIFIED="1697321884423" TEXT="Problem Kopierbarkeit">
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1697226517446" ID="ID_1311077272" MODIFIED="1697226570220" TEXT="Monitor hat das Problem bisher verborgen">
<arrowlink COLOR="#7168c3" DESTINATION="ID_1383871199" ENDARROW="Default" ENDINCLINATION="-768;38;" ID="Arrow_ID_1367033811" STARTARROW="None" STARTINCLINATION="-220;-13;"/>
<icon BUILTIN="info"/>
</node>
<node CREATED="1697301758212" ID="ID_1983338613" MODIFIED="1697301848459" TEXT="Sync sollte nicht kopierbar sein">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      rein konzeptionell sollte ein synchronisierbares Objekt nicht kopierbar sein, schon allein weil sich dadurch der Status der gemeinsamen Nutzbarkeit verwischt
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#338800" CREATED="1697301861004" ID="ID_153945609" MODIFIED="1697315802188" TEXT="Monitor non-copyalbe">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1697238392317" FOLDED="true" ID="ID_785406259" MODIFIED="1697406726244" TEXT="Stufe-2">
<linktarget COLOR="#18889d" DESTINATION="ID_785406259" ENDARROW="Default" ENDINCLINATION="22;-279;" ID="Arrow_ID_1406241214" SOURCE="ID_1056176020" STARTARROW="None" STARTINCLINATION="-290;10;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1697315816914" ID="ID_1924043938" MODIFIED="1697315839198" TEXT="Implementierung in eine einzige Policy-Klasse">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1697315846032" ID="ID_1084339407" MODIFIED="1697321834835" TEXT="direkt von den Wrappern erben">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1697315859207" ID="ID_735098743" MODIFIED="1697321831696" TEXT="Namen/Signaturen an C++ anpassen">
<icon BUILTIN="button_ok"/>
<node CREATED="1697315946757" ID="ID_1745363491" MODIFIED="1697315950887" TEXT="lock / unlock"/>
<node CREATED="1697315951457" ID="ID_1757955784" MODIFIED="1697315957631" TEXT="wait / wait_for"/>
<node CREATED="1697315958179" ID="ID_1463728870" MODIFIED="1697315962775" TEXT="std::chrono-Argument"/>
<node CREATED="1697318219189" ID="ID_1715699621" MODIFIED="1697318225992" TEXT="notify_one | notify_all">
<node CREATED="1697318228429" ID="ID_85018579" MODIFIED="1697318237200" TEXT="da sind die neuen Namen wirklich besser"/>
<node CREATED="1697318237762" ID="ID_178110028" MODIFIED="1697318254517" TEXT="und die Trennung ist ebenfalls vorzuzuziehen"/>
</node>
</node>
<node COLOR="#338800" CREATED="1697318278751" ID="ID_986327606" MODIFIED="1697385688333" TEXT="wait-API vereinheitlichen">
<icon BUILTIN="button_ok"/>
<node CREATED="1697318295168" ID="ID_1779444313" MODIFIED="1697321848775" TEXT="das Timeout-Feature wird (wie erwartet) nur selten genutzt">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      daher erscheint es sinnvoll
    </p>
    <ul>
      <li>
        diese seltenen F&#228;lle als separate Methode herauszuf&#252;hren
      </li>
      <li>
        die Signatur komplett an C++ anzupassen
      </li>
    </ul>
  </body>
</html></richcontent>
<arrowlink COLOR="#6879a1" DESTINATION="ID_620668033" ENDARROW="Default" ENDINCLINATION="8;-31;" ID="Arrow_ID_542802268" STARTARROW="None" STARTINCLINATION="-148;7;"/>
</node>
<node COLOR="#338800" CREATED="1697318385528" ID="ID_1149590819" MODIFIED="1697318406151" TEXT="den nachtr&#xe4;glich setzbaren Timeout schaffe ich ab">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#435e98" CREATED="1697318411673" FOLDED="true" ID="ID_1823152866" MODIFIED="1697385716288" TEXT="besserer Funktor-Support">
<icon BUILTIN="yes"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1697319813178" ID="ID_939382602" MODIFIED="1697319816230" TEXT="F&#xe4;lle">
<node CREATED="1697318513548" ID="ID_1134079993" MODIFIED="1697318618743" TEXT="allgemeiner Funktor bool(void)">
<node CREATED="1697318602298" ID="ID_1305749510" MODIFIED="1697318609292" TEXT="das ist der Haupt-Eingang"/>
<node CREATED="1697318609864" ID="ID_1803337240" MODIFIED="1697318617563" TEXT="alle anderen werden darauf zur&#xfc;ckgef&#xfc;hrt"/>
</node>
<node CREATED="1697318499319" ID="ID_1385588809" MODIFIED="1697318512954" TEXT="Member-Funktion des Monitor-Tr&#xe4;gers">
<node CREATED="1697318580841" ID="ID_1410594297" MODIFIED="1697318588414" TEXT="kann nur auf dem Guard realisiert werden"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1697323173068" ID="ID_1950494758" MODIFIED="1697370139917" TEXT="Problem: der this-Pointer ist nur im Lock-ctor bekannt">
<arrowlink COLOR="#b16c50" DESTINATION="ID_420557101" ENDARROW="Default" ENDINCLINATION="667;0;" ID="Arrow_ID_1731288409" STARTARROW="None" STARTINCLINATION="172;9;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1697318531847" ID="ID_127095654" MODIFIED="1697318579016" TEXT="Referenz auf etwas bool-Konvertierbares">
<node CREATED="1697318671961" ID="ID_557138075" MODIFIED="1697318690658" TEXT="intuitiv einfach aber technisch schwierig"/>
<node CREATED="1697318723114" ID="ID_50273287" MODIFIED="1697318732265" TEXT="brauche wohl einen enable-if-Helper">
<node CREATED="1697320210624" ID="ID_941432569" MODIFIED="1697320292946" TEXT="es gen&#xfc;gt, die Referenz per Signatur zu erzwingen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Hier gibt es zwar eine L&#252;cke, n&#228;mlich die const&amp; auf einen rvalue &#8212; aber das hier ist keine general-purpose-Library!
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1697320296110" ID="ID_393798254" MODIFIED="1697320326400" TEXT="Hauptproblem ist, das kompakt im Code darzustellen">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
</node>
<node CREATED="1697319828481" ID="ID_245082806" MODIFIED="1697319861973" TEXT="sollte kombinatorische Explosion vermeiden">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      also entweder ganz oben oder ganz unten, und ansonsten nur noch einen Template-Parameter durchgeben
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node COLOR="#5b280f" CREATED="1697319863019" ID="ID_122504390" MODIFIED="1697327099006" TEXT="wegen Member-Funktion: mu&#xdf; im Guard behandelt werden">
<linktarget COLOR="#c12834" DESTINATION="ID_122504390" ENDARROW="Default" ENDINCLINATION="-5;64;" ID="Arrow_ID_234610428" SOURCE="ID_1582251486" STARTARROW="None" STARTINCLINATION="-330;-9;"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1697319898631" ID="ID_859529089" MODIFIED="1697320109488" TEXT="dann Satz &#xfc;berladener Template-Funktionen">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#435e98" CREATED="1697319960874" ID="ID_317811010" MODIFIED="1697327037668" TEXT="die Member-Funktion ist aufgrund der speziellen Signatur unproblematisch">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      man mu&#223; nicht speziell auf den Typ des Tr&#228;gers abstellen; vielmehr kann man dann einen static-cast nachschalten, und der scheitert dann halt gegebenfalls beim Bauen. Das habe ich grade eben genauso beim neuen Thread-Wrapper gemacht, und es hat sich bisher gut bew&#228;hrt. Spezielle static-asserts sind dann gar nicht notwendig
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#435e98" CREATED="1697325938478" ID="ID_230563569" MODIFIED="1697326972528" TEXT="Zweifel: ist es dann &#xfc;berhaupt sinnvoll, Member-Pr&#xe4;dikate speziell zu unterst&#xfc;tzen?">
<icon BUILTIN="help"/>
<node CREATED="1697326582105" ID="ID_1184603595" MODIFIED="1697326597675" TEXT="denn die Situation ist...">
<node CREATED="1697326598743" ID="ID_28762827" MODIFIED="1697326670280" TEXT="wir k&#xf6;nnen sie nur in einem Spezial-Konstruktor direkt unterst&#xfc;tzen">
<arrowlink COLOR="#9f5f73" DESTINATION="ID_420557101" ENDARROW="None" ENDINCLINATION="231;-36;" ID="Arrow_ID_1797357140" STARTARROW="Default" STARTINCLINATION="-262;11;"/>
</node>
<node CREATED="1697326707584" ID="ID_1941844220" MODIFIED="1697326728051">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      man h&#228;tte dann also zwei verschiedene APIs f&#252;r <i>essentiell das Gleiche</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1697326681404" ID="ID_88758521" MODIFIED="1697326701517" TEXT="andererseits ist durch die Lambdas eine generische L&#xf6;sung gegeben"/>
<node CREATED="1697326743932" ID="ID_956630359" MODIFIED="1697326921888" TEXT="...und diese ist nahezu genauso kompakt">
<node CREATED="1697326763018" ID="ID_25024903" MODIFIED="1697326821669" TEXT="Lock sync{this, &amp;MyClass::predicate}"/>
<node CREATED="1697326825569" ID="ID_1892485138" MODIFIED="1697326884997" TEXT="Lock sync{this, [&amp;]{ return predicate(); }}"/>
</node>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1697326947256" ID="ID_1582251486" MODIFIED="1697327107741" TEXT="Beschlu&#xdf;: Support f&#xfc;r Member-Funktionen wird aufgegeben">
<arrowlink COLOR="#c12834" DESTINATION="ID_122504390" ENDARROW="Default" ENDINCLINATION="-5;64;" ID="Arrow_ID_234610428" STARTARROW="None" STARTINCLINATION="-330;-9;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1697327466147" ID="ID_893621038" MODIFIED="1697370007455" TEXT="dann wohl doch besser ganz unten die Spezalbehandlung f&#xfc;r bool-Flags?">
<icon BUILTIN="help"/>
<node CREATED="1697327490408" ID="ID_608568247" MODIFIED="1697327514952" TEXT="zumindest ist die Policy ein besserer Ort f&#xfc;r solche technischen Spezialit&#xe4;ten"/>
<node CREATED="1697327515500" ID="ID_1897397765" MODIFIED="1697327536325" TEXT="andererseits ist es dann &#xfc;berhaupt nicht mehr offensichtlich, da&#xdf; hier Magie passiert"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1697327536914" ID="ID_623387180" MODIFIED="1697327566298" TEXT="STOP! was soll der Schei&#xdf;??">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="stop-sign"/>
<icon BUILTIN="yes"/>
<node CREATED="1697327583331" ID="ID_31944681" MODIFIED="1697327614419" TEXT="so viel Aufwand f&#xfc;r so was Abstruses...."/>
<node CREATED="1697327570448" ID="ID_1381500606" MODIFIED="1697327582072" TEXT="&#x3bb; und gut is!!!!">
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1697327624318" ID="ID_532856293" MODIFIED="1697327699095" TEXT="is besser so">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      &#955;-Notation ist inzwischen allgemein bekannt, und hat den Vorteil, da&#223; das Binding nahe am verwendeten Code liegt. Das gilt ganz besonders auch f&#252;r bool-Flags, und zudem m&#252;ssen wir uns dann nicht mehr mit Konvertierungen, volatile und Atomics herumschlagen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1697370016112" ID="ID_939950597" MODIFIED="1697370131589">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <u>Fazit</u>: Nein &#8212; denn &#955; <i>sind bereits </i>der bessere &#8222;Support&#8220;
    </p>
  </body>
</html></richcontent>
<font NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="forward"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1697320502329" ID="ID_195583180" MODIFIED="1697385697483" TEXT="Umbau">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1697320475144" ID="ID_1616210437" MODIFIED="1697329834862" TEXT="Anpassungen nur bis in den Lock-Guard treiben">
<icon BUILTIN="full-1"/>
</node>
<node COLOR="#435e98" CREATED="1697320520036" ID="ID_304531035" MODIFIED="1697385534795" TEXT="Lock-Guard-API umbauen">
<icon BUILTIN="full-2"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1697317281147" ID="ID_1588035403" MODIFIED="1697385681007" TEXT="API-Anpassungen Codebasis">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1697320909394" ID="ID_1421524615" MODIFIED="1697406683805" TEXT="Darstellung der Condition">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1697321092943" ID="ID_719498386" MODIFIED="1697406676602" TEXT="Tickets">
<icon BUILTIN="info"/>
<node COLOR="#338800" CREATED="1697320925209" ID="ID_709630203" MODIFIED="1697404878163" TEXT="#1057 conditional wait (monitor) const correctness">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1697321013532" ID="ID_1169031361" MODIFIED="1697404879079" TEXT="#1051 allow lambdas for conditional wait (object monitor)">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1697382313627" ID="ID_882837775" MODIFIED="1697399890334" TEXT="#1056 integrate wait / object-Monitor with std::chrono">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1697321077876" ID="ID_1989704229" MODIFIED="1697406669038" TEXT="#994 integrate lambdas into function signature helpers">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1697321125783" ID="ID_1918158334" MODIFIED="1697385539816" TEXT="erst mal nur das API im Lock-Guard damit reproduzieren">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1697321155723" ID="ID_1441525836" MODIFIED="1697385542831" TEXT="dann alle Verwendungen auf Modernisierungs-Potential pr&#xfc;fen">
<icon BUILTIN="button_ok"/>
<node CREATED="1697326991042" ID="ID_163598257" MODIFIED="1697327008100" TEXT="alle Member-Pr&#xe4;dikate durch &#x3bb; ersetzen"/>
<node CREATED="1697369952877" ID="ID_599746501" MODIFIED="1697369991005" TEXT="einige notify_* k&#xf6;nnen ohne Lock operieren"/>
</node>
<node COLOR="#338800" CREATED="1697321173920" ID="ID_599504048" MODIFIED="1697406681787" TEXT="Tickets dokumentieren und schlie&#xdf;en">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Im Besonderen #994 kann <i>nun wirklich langsam zugemacht werden! </i>Das schiebe ich nun schon so lange &#190; fertig vor mir her ... und es ist klar da&#223; ich den letzten Schritt (TYPES&lt;TY....&gt;) noch l&#228;nger vor mir her schiebe, wiewohl das eigentliche Problem effetiv bereits seit 2017 gel&#246;st ist
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1697317300096" ID="ID_169404073" MODIFIED="1697385550127" TEXT="direct-wait">
<icon BUILTIN="button_ok"/>
<node CREATED="1697317305951" ID="ID_59576653" MODIFIED="1697386058818">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      hier hatte ich einen &#187;convenience-shortcut&#171; &#8212; und der <b><font color="#ae1010">ist broken</font></b>
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#555dcb" DESTINATION="ID_276811059" ENDARROW="Default" ENDINCLINATION="-1328;-99;" ID="Arrow_ID_707193075" STARTARROW="None" STARTINCLINATION="-1717;72;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#5b280f" CREATED="1697317397853" FOLDED="true" ID="ID_1226608020" MODIFIED="1697369759666" TEXT="Ersatz: anonyme-Instanz">
<icon BUILTIN="button_cancel"/>
<node COLOR="#5b280f" CREATED="1697317413302" ID="ID_973377416" MODIFIED="1697369715879" TEXT="setzt besseren Support f&#xfc;r Member-Fun vorraus">
<icon BUILTIN="button_cancel"/>
<node CREATED="1697323263283" ID="ID_420557101" MODIFIED="1697327252114" TEXT="geht nur bedingt">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      hab dummerweise den this-Ptr nicht mehr an dem Punkt; und das will ich auch nicht &#228;ndern &#8212; sonst hab ich in jeder dieser delegierenden Funktionen das getMonitor(this), und es ist auch inhaltlich nicht besonders pr&#228;zise, schlie&#223;lich arbeitet der Guard auf dem Monitor (siehe ClassLock)
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#b16c50" DESTINATION="ID_420557101" ENDARROW="Default" ENDINCLINATION="667;0;" ID="Arrow_ID_1731288409" SOURCE="ID_1950494758" STARTARROW="None" STARTINCLINATION="172;9;"/>
<linktarget COLOR="#9f5f73" DESTINATION="ID_420557101" ENDARROW="None" ENDINCLINATION="231;-36;" ID="Arrow_ID_1797357140" SOURCE="ID_28762827" STARTARROW="Default" STARTINCLINATION="-262;11;"/>
<icon BUILTIN="stop-sign"/>
</node>
<node COLOR="#5b280f" CREATED="1697323594831" ID="ID_779865512" MODIFIED="1697324219364" TEXT="ich k&#xf6;nnte was GRAUSAMES tun....">
<icon BUILTIN="help"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1697323619881" ID="ID_1097132135" MODIFIED="1697323650468" TEXT="reinterpret_cast&lt;Sync&amp;&gt; (montitor_)">
<icon BUILTIN="smiley-oh"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1697323756673" ID="ID_1871015044" MODIFIED="1697324176249" TEXT="das w&#xe4;re sogar einigerma&#xdf;en sicher">
<richcontent TYPE="NOTE"><html>
  <head>
    
    
  </head>
  <body>
    <p>
      ...und zwar wegen der Typedef &quot;Monitor&quot;, die nur im Scope von Sync&lt;CONF&gt; 
      definiert ist &#8212; das geht gut, SOLANGE niemand das Layout der Klasse Sync 
      &#228;ndert, niemand &#8222;aus Versehen&#8220; eine VTable einf&#252;hrt, und solange niemand 
      den Typ Monitor abgreift, woanders instantiiert und dann diese Referenz 
      &#252;ber eine von Lock abgeleitete Klasse in die Referenz einspielt. <b><font color="#ea1b82">TJA</font></b>&#160;
      &#9785; diesen &#8222;Jemand&#8220; gibt es bereits: SyncClasslock <font color="#ad0000">&#55357;&#56817;</font>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="closed"/>
</node>
<node CREATED="1697324181717" ID="ID_1476992683" MODIFIED="1697324227340" TEXT="Fazit: anst&#xe4;ndige Leute und so &#x2014; und au&#xdf;erdem w&#xe4;re es gef&#xe4;hrlich">
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1697323476231" ID="ID_1501185422" MODIFIED="1697324272133" TEXT="immerhin: Lambdas verringern den Schmerz">
<icon BUILTIN="idea"/>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1697318786633" ID="ID_336024786" MODIFIED="1697318873967" TEXT="ist aber u.U irref&#xfc;hrend">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      und zwar, weil eine solche anonyme Instanz den umschlie&#223;enden Scope nicht sch&#252;tzt; sie sieht aber syntaktisch genauso aus wie ein wirksamer Scope-Guard
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="stop-sign"/>
</node>
<node CREATED="1697369732182" ID="ID_1980534053" MODIFIED="1697369920976" TEXT="Beschlu&#xdf;: die M&#xf6;glichkei bleibt bestehen, wird aber nicht verwendet">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...vielmehr wird das Problem tats&#228;chlich gefixt, durch einen try-catch-Block; die spezielle Konstruktor-Variante bleibt damit erhalten, aber wir bieten generell keinen Support mehr f&#252;r Member-Funktionen, da dies nur f&#252;r den Konstruktor m&#246;glich w&#228;re, aber nich f&#252;r die frei stehende wait()-Variante. Ohnehin werden nun Lambdas bevorzugt, weil sie meist am Ort der Verwendung definiert werden und damit besser selbsterkl&#228;rend sind...
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="forward"/>
</node>
</node>
<node COLOR="#338800" CREATED="1697318875030" ID="ID_1198984970" MODIFIED="1697329903095" TEXT="2.Alternative: den convenience-shortcut intern reparieren">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1697319005754" ID="ID_62443704" MODIFIED="1697329904503" TEXT="die interne delegation an die wait-Funktion per try-catch sch&#xfc;tzen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1697319026138" ID="ID_383274889" MODIFIED="1697329905701" TEXT="im Fehlerfall explizit das Lock l&#xf6;sen">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1697319081650" ID="ID_1686143008" MODIFIED="1697385547988" TEXT="alle Verwendungen explizit durchpr&#xfc;fen">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1697317628925" ID="ID_620668033" MODIFIED="1697385554584" TEXT="wait-timeout">
<linktarget COLOR="#6879a1" DESTINATION="ID_620668033" ENDARROW="Default" ENDINCLINATION="8;-31;" ID="Arrow_ID_542802268" SOURCE="ID_1779444313" STARTARROW="None" STARTINCLINATION="-148;7;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1697317643443" ID="ID_1921626506" MODIFIED="1697317648474" TEXT="Subsystem-Runner"/>
<node CREATED="1697317651618" ID="ID_694175448" MODIFIED="1697317655678" TEXT="Steam-Dispatcher"/>
</node>
<node COLOR="#338800" CREATED="1697318178258" ID="ID_1033097807" MODIFIED="1697385557081" TEXT="notify_one|all">
<icon BUILTIN="button_ok"/>
<node CREATED="1697319530923" ID="ID_914687428" MODIFIED="1697319578775" TEXT="sollte ohne Lock aufrufbar sein">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...rein konzeptionell ist es n&#228;mlich nicht notwendig, das Lock zu erlangen; aber unser bisheriges API hat dazu gezwungen. Nicht schlimm, aber auch nicht sch&#246;n
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#435e98" CREATED="1697319626249" FOLDED="true" ID="ID_1229703089" MODIFIED="1697385605448" TEXT="static Sync::getMonitor(this) kann man verwenden">
<icon BUILTIN="idea"/>
<node CREATED="1697319680566" ID="ID_875413808" MODIFIED="1697319698527" TEXT="das &quot;this&quot; ist hier eine ungl&#xfc;ckliche Konsequenz des Monitor-Patterns"/>
<node CREATED="1697319733263" ID="ID_1982854355" MODIFIED="1697319793219" TEXT="...denn es geht um andere Threads, nicht um die Instanz"/>
<node CREATED="1697385563278" ID="ID_1846180648" MODIFIED="1697385592633">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      mu&#223; dazu getMonitor() <b><font color="#58312c">public</font></b>&#160;machen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1697385611400" FOLDED="true" ID="ID_1181983883" MODIFIED="1697406722707" TEXT="es gibt eine sinnvolle Verwendung im Steam-Dispatcher">
<icon BUILTIN="info"/>
<node CREATED="1697385640834" ID="ID_1277267659" MODIFIED="1697385652405" TEXT="am Ende der Verarbeitungs-Loop"/>
<node CREATED="1697385655730" ID="ID_778822522" MODIFIED="1697385677098" TEXT="kurz darauf w&#xfc;rde er das Lock ein zweites Mal acquiren f&#xfc;r awaitAction()">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1697238399214" ID="ID_38924085" MODIFIED="1697238402259" TEXT="Stufe-3">
<icon BUILTIN="hourglass"/>
</node>
<node COLOR="#338800" CREATED="1697212016574" ID="ID_567956121" MODIFIED="1697427296940" TEXT="R&#xfc;ckbau">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1697212020164" ID="ID_69317330" MODIFIED="1697427254794" TEXT="POSIX">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1697212022651" ID="ID_1532773678" MODIFIED="1697427295351" TEXT="lumiera_lockerror_set">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1697213046906" ID="ID_1074499968" MODIFIED="1697427295350" TEXT="timespec und clock_gettime">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1482524641484" ID="ID_1651495185" MODIFIED="1557498707236" TEXT="Architektur">
<font NAME="SansSerif" SIZE="14"/>
<node CREATED="1544199543455" ID="ID_970297070" MODIFIED="1557498707236" TEXT="Struktur">
<node CREATED="1544199550166" ID="ID_16943853" MODIFIED="1557498707236" TEXT="Layer">
<node CREATED="1544199559524" ID="ID_1685135526" MODIFIED="1557498707236" TEXT="rein gedankliche Gliederung"/>
<node BACKGROUND_COLOR="#fefc4e" COLOR="#351d75" CREATED="1544199565372" FOLDED="true" ID="ID_39523665" MODIFIED="1576282357967" TEXT="(neue)Namen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <ul>
      <li>
        denke etwa seit einem halben Jahr dar&#252;ber nach.
      </li>
      <li>
        bisher hatte ich mich nicht getraut...
      </li>
      <li>
        im September mit Benny besprochen (per Mail). Seine Reaktion klang sogar begeistert; das hat mich ermutigt
      </li>
      <li>
        nat&#252;rlich ist es eine Menge Arbeit, aber jetzt, wo ich allein bin, kann ich sowas einfach durchziehen, ohne da&#223; es zerredet wird
      </li>
    </ul>
  </body>
</html></richcontent>
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="idea"/>
<node CREATED="1544199568851" ID="ID_1812468720" MODIFIED="1544199771897" TEXT="Stage">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node COLOR="#435e98" CREATED="1544199791747" ID="ID_852392563" MODIFIED="1544199874242" TEXT="interaction layer">
<icon BUILTIN="info"/>
</node>
<node CREATED="1544199811227" ID="ID_799439008" MODIFIED="1544199868636">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      bisher <i>&quot;GUI&quot;</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1544199916181" ID="ID_398666439" MODIFIED="1544199920920" TEXT="stage and backstage"/>
</node>
<node CREATED="1544199570723" ID="ID_1872450664" MODIFIED="1544199772984" TEXT="Steam">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node COLOR="#435e98" CREATED="1544199800697" ID="ID_778136654" MODIFIED="1544199879626" TEXT="translation layer">
<icon BUILTIN="info"/>
</node>
<node CREATED="1544199822802" ID="ID_1885697959" MODIFIED="1544199858919">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      bisher <i>&quot;Proc-Layer&quot;</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1544199922788" ID="ID_40712142" MODIFIED="1544199936342" TEXT="where does the actual magic happen?"/>
</node>
<node CREATED="1544199573307" ID="ID_730329516" MODIFIED="1544199773973" TEXT="Vault">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node COLOR="#435e98" CREATED="1544199808170" ID="ID_1715886507" MODIFIED="1544199883499" TEXT="adaptation layer">
<icon BUILTIN="info"/>
</node>
<node CREATED="1544199828825" ID="ID_830501554" MODIFIED="1544199848431">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      bisher <i>&quot;Backend&quot;</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1544199952785" ID="ID_1989078064" MODIFIED="1544199955148" TEXT="deep down"/>
</node>
</node>
<node CREATED="1687556508704" ID="ID_431446810" MODIFIED="1687556579475" TEXT="Namespaces">
<icon BUILTIN="info"/>
<node CREATED="1687556588554" ID="ID_329807646" MODIFIED="1687556590245" TEXT="stage"/>
<node CREATED="1687556584353" ID="ID_1889681441" MODIFIED="1687556586623" TEXT="steam"/>
<node CREATED="1687556472975" ID="ID_735349056" MODIFIED="1687556555928" TEXT="vault">
<node CREATED="1687481181547" ID="ID_873971075" MODIFIED="1687481185746" TEXT="vault::io"/>
<node CREATED="1687481158310" ID="ID_616065524" MODIFIED="1687481178193" TEXT="vault::out"/>
<node CREATED="1687481369475" ID="ID_1291504357" MODIFIED="1687481387314" TEXT="vault::mem"/>
<node CREATED="1687481240852" ID="ID_144816295" MODIFIED="1687481343154" TEXT="vault::gear"/>
<node CREATED="1687481191768" ID="ID_12320912" MODIFIED="1687481195319" TEXT="vault::cache"/>
<node CREATED="1687481220759" ID="ID_568286499" MODIFIED="1687481233535" TEXT="vault::toolkit"/>
<node CREATED="1687481208317" ID="ID_1663294300" MODIFIED="1687481213324" TEXT="vault::storage"/>
</node>
</node>
</node>
<node CREATED="1584202142543" ID="ID_1162501513" MODIFIED="1584202145125" TEXT="Subsysteme">
<node CREATED="1687475100398" ID="ID_875692100" MODIFIED="1687475103561" TEXT="Gui"/>
<node CREATED="1687475104709" ID="ID_395691865" MODIFIED="1687475107788" TEXT="Session"/>
<node CREATED="1687475121914" ID="ID_1816829147" MODIFIED="1687475124942" TEXT="PlayOut"/>
<node CREATED="1687475211318" ID="ID_1096951161" MODIFIED="1687475213686" TEXT="Engine"/>
<node CREATED="1687475229300" ID="ID_768400893" MODIFIED="1687475234772" TEXT="(NetNode)"/>
<node CREATED="1687475218948" ID="ID_1699167582" MODIFIED="1687475228664" TEXT="(ScriptRunner)"/>
</node>
<node CREATED="1584202146097" ID="ID_876294763" MODIFIED="1584202148362" TEXT="ETD">
<node CREATED="1584202158174" ID="ID_1136082827" MODIFIED="1584202164409" TEXT="inh&#xe4;rente Einschr&#xe4;nkungen">
<node CREATED="1584202165470" ID="ID_1464264076" MODIFIED="1584202167873" TEXT="Diff-System">
<node CREATED="1584202213999" ID="ID_795618786" MODIFIED="1584202220155" TEXT="Ausdrucksformen">
<node CREATED="1584202221198" ID="ID_1125078676" MODIFIED="1584202224996" TEXT="Population"/>
<node CREATED="1584202225838" ID="ID_510134595" MODIFIED="1584202239327" TEXT="Mutation">
<node CREATED="1584202244254" ID="ID_900246695" MODIFIED="1584202249039" TEXT="Umordnen"/>
<node CREATED="1584202249610" ID="ID_663093917" MODIFIED="1584202253667" TEXT="Hinzuf&#xfc;gen / L&#xf6;schen"/>
</node>
<node CREATED="1584202239940" ID="ID_1326489257" MODIFIED="1584202242808" TEXT="Wert-Manipulation"/>
</node>
<node CREATED="1584201875333" ID="ID_1634323626" MODIFIED="1584202923362" TEXT="Konstruktor vs. Populations-Diff">
<linktarget COLOR="#2e3f60" DESTINATION="ID_1634323626" ENDARROW="Default" ENDINCLINATION="-1672;80;" ID="Arrow_ID_1671674197" SOURCE="ID_1310327519" STARTARROW="None" STARTINCLINATION="-1407;99;"/>
<node CREATED="1584202280926" ID="ID_1191279412" MODIFIED="1584202293547" TEXT="Objekte geben Invarianten via Konstruktor vor"/>
<node CREATED="1584202294330" ID="ID_930873161" MODIFIED="1584202321186" TEXT="INS liefert einen Wert ohne Einschr&#xe4;nkungen"/>
<node CREATED="1584202321796" ID="ID_78459313" MODIFIED="1584202344074" TEXT="Diskrepanz -&gt; Policy">
<node CREATED="1584202427011" ID="ID_187571593" MODIFIED="1584202439683" TEXT="Default: leere H&#xfc;lle nur mit ID"/>
<node CREATED="1584202441233" ID="ID_1377510165" MODIFIED="1584202571097" TEXT="Strukturmodel und Ctor im Einzelfall abgestimmt">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      wenn im Einzelfall bereits mit der INS-Nachricht bestimmte global sichtbare Properties mit gegeben sein m&#252;ssen
    </p>
    <ul>
      <li>
        dann bedeutet das, auch das betreffende Objekt erzwingt diese als Invariante per ctor
      </li>
      <li>
        und das Struktur-Modell verlangt per Konvention an dieser Stelle das Senden eines entsprechenden Rumpf-Record
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
<node CREATED="1584202179452" ID="ID_149859727" MODIFIED="1584202181656" TEXT="Datentypen"/>
</node>
<node CREATED="1584202591061" ID="ID_413326869" MODIFIED="1584202595479" TEXT="Struktur-Modell">
<node CREATED="1584202600843" ID="ID_306089528" MODIFIED="1584202604263" TEXT="per Dom&#xe4;ne">
<node CREATED="1584202604970" ID="ID_192625861" MODIFIED="1584202873530" TEXT="f&#xfc;r das GUI">
<arrowlink COLOR="#3041c7" DESTINATION="ID_165150753" ENDARROW="Default" ENDINCLINATION="-3211;307;" ID="Arrow_ID_1316612875" STARTARROW="None" STARTINCLINATION="-1533;0;"/>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1531419748046" ID="ID_1791265013" MODIFIED="1557498707236" TEXT="Lebenszyklus">
<node COLOR="#338800" CREATED="1531419790153" ID="ID_1605635763" MODIFIED="1582443076662" TEXT="#1145 define startup sequence">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1531419814485" ID="ID_373568821" MODIFIED="1557498707236" TEXT="#1146 complete application startup sequence">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1531419837826" ID="ID_719335579" MODIFIED="1557498707236" TEXT="#1147 establish UI start-up sequence">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1531420231598" ID="ID_1997153046" MODIFIED="1557498707236" TEXT="#1148 populate initial session">
<arrowlink COLOR="#665692" DESTINATION="ID_1392317817" ENDARROW="Default" ENDINCLINATION="-1993;202;" ID="Arrow_ID_609042013" STARTARROW="Default" STARTINCLINATION="1943;108;"/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1582443973100" HGAP="47" ID="ID_1989055863" MODIFIED="1582443988612" TEXT="getriggert von InteractionDirector::populateContent_afterStart()" VSHIFT="22">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node CREATED="1697229705261" ID="ID_764850645" MODIFIED="1697229713192" TEXT="Steuerung der Subsysteme">
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1697229736548" ID="ID_327697277" MODIFIED="1697229753890" TEXT="Entwicklung Subsystem-Konzept">
<icon BUILTIN="hourglass"/>
<node CREATED="1697229756390" ID="ID_1054796650" MODIFIED="1697230627356" TEXT="erster Wurf seit vielen Jahren im Einsatz">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...hatte ich damals sehr schnell geschrieben, um zu zeigen da&#223; eine C++ - L&#246;sung auch &#187;einfach&#171; sein kann. Chistian wollte damals unbedingt die Application-main in C implementieren, &#8222;damit alles wirklich einfach und verst&#228;ndlich bleibt&#8220;. Ich hatte das Gef&#252;hl, da stand eine Agenda im Raum, da&#223; alles Wichtige in C sein sollte. Ich vertrat (und vertrete bis heute) den Standpunkt, da&#223; die Erweiterungen in C++ aus gutem Grunde geschaffen wurden, weil C in wesentlichen Aspekten mutwillig zu einfach gehalten ist. F&#252;r den Traum von der <i>sch&#246;nen einfachen L&#246;sung</i>&#160;zahlt man dann jeden Tag Zinsen f&#252;r technische Schulden.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="smiley-oh"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697230306599" ID="ID_1415549362" MODIFIED="1697230637141" TEXT="Kritik an der ersten Version des Konzepts">
<icon BUILTIN="broken-line"/>
<node CREATED="1697230653730" ID="ID_777823460" MODIFIED="1697230691378">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      sie erf&#252;llt alle Anforderungen, ist aber <i>zu sehr vereinfacht</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1697230694524" ID="ID_939615565" MODIFIED="1697230717045" TEXT="der Subsystem-Lebenszyklus setzt zu stark auf Konventionen"/>
<node CREATED="1697230726208" ID="ID_1811646071" MODIFIED="1697231115768" TEXT="es fehlen &#xdc;bergangs-Zust&#xe4;nde, die in der Realit&#xe4;t eben auftreten">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Vor allem...
    </p>
    <ul>
      <li>
        ein Subsystem ist nicht einfach <i>gestartet </i>oder <i>nicht-gestartet. </i>Vielmehr ist der Start zun&#228;chst <i>initiiert, </i>und nach Erf&#252;llung lokaler Kriterien ist der Start <i>vollst&#228;ndig.</i>
      </li>
      <li>
        entsprechend ist ein Subsystem nicht einfach <i>gestoppt. </i>Vielmehr ist <i>der Shutdown-angek&#252;ndigt, </i>dann die <i>aktive-Phase-verlassen </i>und schlie&#223;lich der <i>shutdown-abgeschlossen.</i>
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node CREATED="1697231128386" ID="ID_148831636" MODIFIED="1697231157458" TEXT="bedingt dadurch wird die Fehlerbehandlung extrem komplex und br&#xfc;chig"/>
<node CREATED="1697231166101" ID="ID_1734528491" MODIFIED="1697231545488" TEXT="die Bedeutung des &#xbb;emergency Shutdown&#xab; ist nicht gekl&#xe4;rt">
<arrowlink COLOR="#fdfbae" DESTINATION="ID_1349710577" ENDARROW="Default" ENDINCLINATION="-59;-2;" ID="Arrow_ID_1841665742" STARTARROW="None" STARTINCLINATION="-62;3;"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1697231321617" ID="ID_1987547541" MODIFIED="1697375790320" TEXT="&#xdc;berarbeitung &#xbb;Emergency-Shutdown&#xab;">
<linktarget COLOR="#456a93" DESTINATION="ID_1987547541" ENDARROW="Default" ENDINCLINATION="-595;-40;" ID="Arrow_ID_1122128450" SOURCE="ID_756306663" STARTARROW="None" STARTINCLINATION="-831;116;"/>
<node CREATED="1697231405941" ID="ID_1349710577" MODIFIED="1697231547383" TEXT="Vorschlag: es soll ein Deadlock vermieden werden">
<linktarget COLOR="#fdfbae" DESTINATION="ID_1349710577" ENDARROW="Default" ENDINCLINATION="-59;-2;" ID="Arrow_ID_1841665742" SOURCE="ID_1734528491" STARTARROW="None" STARTINCLINATION="-62;3;"/>
<icon BUILTIN="idea"/>
<node CREATED="1697231438932" ID="ID_1169428609" MODIFIED="1697231453874" TEXT="normalerweise wird beliebig lange gewartet"/>
<node CREATED="1697231455104" ID="ID_330146897" MODIFIED="1697231479415" TEXT="Application-main wird erst verlassen, wenn alle Subsysteme sich abgemeldet haben"/>
<node CREATED="1697231502864" ID="ID_903747246" MODIFIED="1697231589888" TEXT="Fehlerausgang aus einem Subsystem &#x27f9; Heuristik f&#xfc;r korrumpiertes Gesamtsystem"/>
<node CREATED="1697231841691" ID="ID_480459566" MODIFIED="1697231861116" TEXT="daher bei Emergency die Wartezeit begrenzen (und Folgefehler in Kauf nehmen)"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1697231867607" ID="ID_894790570" MODIFIED="1697375783672" TEXT="war durch einen Trick im Object-Monitor implementiert">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      In lib::Sync (genauer: in der Implementierung Monitor-wait) war eine Unterst&#252;tzung f&#252;r Timeout nach POSIX eingebaut worden. Dies erfordert, da&#223; die Timeout-Spec in der Storage des Client bereitgehalten wird (weil man POSIX-Funktionen nur einen Pointer &#252;bergibt). Das habe ich hierf&#252;r ausgen&#252;tzt, indem nachtr&#228;glich, im Fall einer Emergency, noch ein Timeout definiert wird. Da Condition-Variablen zur Pr&#252;fung der Bedingung immer wieder aufgeweckt werden, kann man so nachtr&#228;glich eine Art vorzeitigen Abbruch realisieren...
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#338800" CREATED="1697232118254" ID="ID_793166861" MODIFIED="1697375755154" TEXT="besser: explizit einen zweiten Wait mit Timemout machen">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697231265769" ID="ID_28627055" MODIFIED="1697231276175" TEXT="Subsystem-Definition">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697231270063" ID="ID_1888527843" MODIFIED="1697231276175" TEXT="Subsystem-Runner">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
</node>
<node CREATED="1482524498822" ID="ID_431883229" MODIFIED="1557498707236" TEXT="Datenstrom">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1680567302856" ID="ID_599503027" MODIFIED="1680567686765" TEXT="Output-Management">
<icon BUILTIN="stop"/>
<node CREATED="1680567318639" ID="ID_1726615423" MODIFIED="1680567321766" TEXT="Verdrahtung">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1680567648993" ID="ID_1721405470" MODIFIED="1680567663524" TEXT="Grundkonzept">
<icon BUILTIN="flag-yellow"/>
</node>
<node CREATED="1681340561579" ID="ID_852560386" MODIFIED="1681340580970" TEXT="Output-Protokoll">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1681340585412" ID="ID_1620112929" MODIFIED="1681340749166" TEXT="TODO: ownership + Fehlerbehandlung f&#xfc;r &#xbb;Allocation&#xab; nochmal &#xfc;berdenken">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Es f&#228;llt auf, da&#223; ich in dem Entwurf von 2011 die Allocation selber nur als Referenz rausgegeben habe, und dann f&#252;r jeden darauf er&#246;ffneten Slot ein smart-Handle. Zun&#228;chst einmal sieht das <i>vern&#252;nftig</i>&#160; aus, weil die Slots typischerweise sofort noch im gleichen Thread belegt werden. Was ist aber wenn...&#8623; &#8212; kann sich dann die belegte Allocation <i>verklemmen?</i>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="bell"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1681340821574" ID="ID_91498886" LINK="https://issues.lumiera.org/ticket/878" MODIFIED="1681340858985" TEXT="#878 OutputSlot lifecycle and re-entrance">
<icon BUILTIN="hourglass"/>
</node>
</node>
<node CREATED="1685057613713" ID="ID_1402118663" MODIFIED="1685057622892" TEXT="&#xf6;ffnen / Belegen einer Output-Verbindung">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685057626464" ID="ID_106757636" MODIFIED="1685057709903" TEXT="Anpassung notwendig: Match auf ModelPort">
<linktarget COLOR="#fb1160" DESTINATION="ID_106757636" ENDARROW="Default" ENDINCLINATION="-78;630;" ID="Arrow_ID_1247503914" SOURCE="ID_1172676625" STARTARROW="None" STARTINCLINATION="1533;-30;"/>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
</node>
<node CREATED="1680567322328" ID="ID_1487342906" MODIFIED="1680567331604" TEXT="externe Schnittstellen"/>
<node CREATED="1680567342943" ID="ID_1794041409" MODIFIED="1680567346762" TEXT="Video-Widergabe">
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1680567215056" ID="ID_1644608240" MODIFIED="1680567628091" TEXT="Einbinden: GUI-Output-Manager">
<linktarget COLOR="#fe756b" DESTINATION="ID_1644608240" ENDARROW="Default" ENDINCLINATION="-1507;-562;" ID="Arrow_ID_246148002" SOURCE="ID_73360951" STARTARROW="None" STARTINCLINATION="-591;33;"/>
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
</node>
<node CREATED="1482524516371" ID="ID_396707258" MODIFIED="1557498707236" TEXT="Event-Sourcing">
<node CREATED="1539135156755" ID="ID_1302245670" MODIFIED="1557498707236" TEXT="vermittelnder Tr&#xe4;ger">
<node CREATED="1539134733747" ID="ID_1189184036" MODIFIED="1557498707236" TEXT="DiffConstituent">
<linktarget COLOR="#4e31e2" DESTINATION="ID_1189184036" ENDARROW="Default" ENDINCLINATION="-767;-123;" ID="Arrow_ID_156898929" SOURCE="ID_353086867" STARTARROW="None" STARTINCLINATION="-1608;-84;"/>
<linktarget COLOR="#4e31e2" DESTINATION="ID_1189184036" ENDARROW="Default" ENDINCLINATION="-432;-65;" ID="Arrow_ID_1794591374" SOURCE="ID_1179407482" STARTARROW="None" STARTINCLINATION="-1379;-131;"/>
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1539134841549" ID="ID_818387120" MODIFIED="1557498707236" TEXT="neues Konzept">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1539134848420" ID="ID_4911843" MODIFIED="1557498707236" TEXT="ein selbstbez&#xfc;glicher substanzloser Strukturkern"/>
<node CREATED="1539134911707" ID="ID_847488848" MODIFIED="1557498707236" TEXT="DiffConstituent -&gt; emanation as diff"/>
<node CREATED="1539395579133" ID="ID_589161293" MODIFIED="1557498707236" TEXT="Anforderungen">
<node CREATED="1539395591547" ID="ID_1807468145" MODIFIED="1557498707236" TEXT="Population-Diff erzeugen"/>
<node CREATED="1539395603034" ID="ID_1342955865" MODIFIED="1557498707236" TEXT="Delta-Diff erzeugen">
<node CREATED="1539395609169" ID="ID_1189203662" MODIFIED="1557498707236" TEXT="mu&#xdf; exakt den vorherigen Stand kennen"/>
<node CREATED="1539395620120" ID="ID_1953087376" MODIFIED="1576282357967" TEXT="Stichwort: asynchrone Kommunkiation">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      GUI und Session schicken Nachrichten.
    </p>
    <p>
      W&#228;hrend der Builder l&#228;uft, kann das GUI schon weitere Nachrichten geschickt haben,
    </p>
    <p>
      die dann noch in der ProcDispatcher-Queue h&#228;ngen. Daher kann sich die Antwort
    </p>
    <p>
      als Resultat auf einen Builder-Lauf noch auf einen vorherigen Zustand beziehen.
    </p>
    <p>
      Es kann aber auch ein Builder-Lauf die kummulierten Ergebnisse von mehreren Commands behandeln.
    </p>
    <p>
      In jedem Fall mu&#223; der DiffConstituent genau wissen, was der zuletzt geschickte Stand war,
    </p>
    <p>
      damit er einen Diff erzeugt, der garantiert auf der anderen Seite anwendbar ist.
    </p>
    <p>
      Denn letzteres ist bei uns eine Grundannahme. Es gibt keine ungef&#228;hren Diffs!
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1544840221709" ID="ID_790020807" MODIFIED="1557498707236" TEXT="Aufbereiten gem&#xe4;&#xdf; &#xbb;systematisches UI-Modell&#xab;">
<arrowlink COLOR="#5f7288" DESTINATION="ID_531041967" ENDARROW="Default" ENDINCLINATION="-964;-27;" ID="Arrow_ID_603305631" STARTARROW="None" STARTINCLINATION="1678;0;"/>
</node>
</node>
</node>
<node CREATED="1539270491013" ID="ID_1435731309" MODIFIED="1557498707236" TEXT="Problem der korrekten Diff-Struktur">
<arrowlink COLOR="#d47366" DESTINATION="ID_1555798999" ENDARROW="Default" ENDINCLINATION="590;-127;" ID="Arrow_ID_308349501" STARTARROW="None" STARTINCLINATION="915;0;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1482524530842" FOLDED="true" ID="ID_606738640" MODIFIED="1573230611958" TEXT="Dependency-Injection">
<icon BUILTIN="wizard"/>
<node CREATED="1515975589922" ID="ID_367021032" MODIFIED="1538868806804" TEXT="Architektur">
<icon BUILTIN="yes"/>
<node CREATED="1522738923747" ID="ID_1842493496" MODIFIED="1522738930926" TEXT="feste Ordnung der Komponenten"/>
<node CREATED="1522738931490" ID="ID_1729361793" MODIFIED="1522738935077" TEXT="Lebenszyklus"/>
</node>
<node COLOR="#338800" CREATED="1515975593614" ID="ID_79714950" MODIFIED="1538868845282" TEXT="Technik">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Fr&#252;hjahr 2018 komplett &#252;berarbeitet.
    </p>
    <p>
      L&#246;sung scheint nun &quot;rund&quot; zu sein
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
<node CREATED="1515975596673" ID="ID_1304673048" MODIFIED="1515975599660" TEXT="f&#xfc;r Services">
<node CREATED="1515975622405" ID="ID_962877206" MODIFIED="1515975633971" TEXT="Dependency-Injection-Manager">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1515975635484" ID="ID_225934542" MODIFIED="1538868853937" TEXT="einfache L&#xf6;sungen">
<icon BUILTIN="forward"/>
<node CREATED="1515975650458" ID="ID_1359158691" MODIFIED="1522738941329" TEXT="Serivice by-Name">
<linktarget COLOR="#b6829b" DESTINATION="ID_1359158691" ENDARROW="Default" ENDINCLINATION="1134;-1646;" ID="Arrow_ID_927211935" SOURCE="ID_1305671938" STARTARROW="None" STARTINCLINATION="1359;916;"/>
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1515975677462" ID="ID_1848164117" MODIFIED="1515975685784" TEXT="Problem: Lebenszyklus">
<node COLOR="#338800" CREATED="1492094235291" FOLDED="true" HGAP="36" ID="ID_451964727" MODIFIED="1563022756032" TEXT="#1086 unify Depend singleton and instance management" VSHIFT="-20">
<linktarget COLOR="#7188b5" DESTINATION="ID_451964727" ENDARROW="Default" ENDINCLINATION="2227;-4042;" ID="Arrow_ID_1654818003" SOURCE="ID_871055051" STARTARROW="None" STARTINCLINATION="775;393;"/>
<linktarget COLOR="#5c71a3" DESTINATION="ID_451964727" ENDARROW="Default" ENDINCLINATION="767;-2073;" ID="Arrow_ID_1454095581" SOURCE="ID_1714114896" STARTARROW="None" STARTINCLINATION="1892;380;"/>
<linktarget COLOR="#8697be" DESTINATION="ID_451964727" ENDARROW="Default" ENDINCLINATION="200;-562;" ID="Arrow_ID_1211717131" SOURCE="ID_1032947061" STARTARROW="None" STARTINCLINATION="1387;-152;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1520722130803" ID="ID_1194364308" MODIFIED="1561827466066" TEXT="Anforderungen">
<icon BUILTIN="yes"/>
<node CREATED="1520722192387" ID="ID_1178804552" MODIFIED="1520722204325" TEXT="leicht zu verwenden">
<node CREATED="1520722210416" ID="ID_18853847" MODIFIED="1520722214920" TEXT="access by-name"/>
<node CREATED="1520722205225" ID="ID_187805501" MODIFIED="1520722209444" TEXT="klare einfache Syntax"/>
<node CREATED="1520722223159" ID="ID_1464262858" MODIFIED="1520722243728" TEXT="geringer Overhead beim Zugriff"/>
</node>
<node CREATED="1520722250315" ID="ID_1739587251" MODIFIED="1520722257494" TEXT="Standard-Fall: Singleton">
<node CREATED="1520722258346" ID="ID_601560365" MODIFIED="1520722263109" TEXT="meint: lazy initialisation"/>
</node>
<node CREATED="1520722285614" ID="ID_243579470" MODIFIED="1520722297840" TEXT="rekonfigurierbar als Service">
<node CREATED="1520722553009" ID="ID_186796738" MODIFIED="1520722562724" TEXT="Service-Instanz kontrolliert Lebenszyklus"/>
<node CREATED="1520722565023" ID="ID_705029613" MODIFIED="1520722569219" TEXT="kann geschlossen werden"/>
</node>
<node CREATED="1520722582981" ID="ID_412048061" MODIFIED="1520722588312" TEXT="Konfigurierbarkeit" VGAP="2">
<node CREATED="1520722616336" ID="ID_609325041" MODIFIED="1520722635842" TEXT="Policy">
<node CREATED="1520722600227" ID="ID_1619106434" MODIFIED="1520722604870" TEXT="klar"/>
<node CREATED="1520722606698" ID="ID_1509953000" MODIFIED="1520722608430" TEXT="sicher"/>
<node CREATED="1520722594371" ID="ID_1430939011" MODIFIED="1520722647022" TEXT="ad hoc"/>
</node>
<node CREATED="1520722662066" ID="ID_1398252383" MODIFIED="1520722668845" TEXT="Eigenschaften">
<node CREATED="1520722689638" ID="ID_555318445" MODIFIED="1520722702296" TEXT="Service"/>
<node CREATED="1520723536370" ID="ID_98564224" MODIFIED="1520723551009" TEXT="Mockbarkeit"/>
<node CREATED="1520722720322" ID="ID_1574090447" MODIFIED="1520722762564" TEXT="Implementierung"/>
</node>
<node CREATED="1521081597008" HGAP="23" ID="ID_198915567" MODIFIED="1561827466071" TEXT="Design-Schlu&#xdf;folgerungen" VSHIFT="11">
<icon BUILTIN="info"/>
<node CREATED="1521081661071" ID="ID_500707872" MODIFIED="1533608414048" TEXT="L&#xf6;sung-1">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      war im Einsatz seit Beginn der Lumiera-Projektes.
    </p>
    <p>
      Wurde aufgegeben da
    </p>
    <ul>
      <li>
        die Policies komplexe L&#246;sungsvarianten implementierten, die nie gebraucht wurden
      </li>
      <li>
        die Implementierung einen t&#252;ckischen Fehler in CLang aufgedeckt hat
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
<node CREATED="1521081684036" ID="ID_1402765741" MODIFIED="1521081692822" TEXT="Polycy-based"/>
<node CREATED="1521081693419" ID="ID_889786982" MODIFIED="1521081703773" TEXT="Spezialisierung des Depend-Templates"/>
<node CREATED="1521081709169" ID="ID_390237547" MODIFIED="1521081723794" TEXT="ein zentraler Header, wird per depend.hpp includiert"/>
<node CREATED="1521081724766" ID="ID_1002030069" MODIFIED="1521081739408" TEXT="erfordert Forwards aller zu spezialisierenden Payload-Typen"/>
</node>
<node CREATED="1521081775631" ID="ID_1326847098" MODIFIED="1533608414048" TEXT="L&#xf6;sung-2">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Im Einsatz seit der Behebung des CLang-Problems bis heute (3/2018).
    </p>
    <p>
      Wird nun aufgegeben, da sich auf dieser Basis keine DI implementieren l&#228;&#223;t,
    </p>
    <p>
      welche auf einem Service mit explizitem Lebenszyklus beruht.
    </p>
    <p>
      Au&#223;erdem stellte sich diese L&#246;sung als ziemlich fragil heraus
    </p>
    <p>
      und ben&#246;tigt diverse Laufzeit-Konsistenzchecks, die den Implementierungscode schwer lesbar machen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
<node CREATED="1521081796836" ID="ID_1599810209" MODIFIED="1521081803975" TEXT="Zuweisung eines Factory-Funktors"/>
<node CREATED="1521082335930" ID="ID_1689932476" MODIFIED="1521082347044" TEXT="via Depend-Instanz-Initialisierung"/>
<node CREATED="1521082503275" ID="ID_230807085" MODIFIED="1521082510286" TEXT="erst zur Laufzeit"/>
<node CREATED="1521082510738" ID="ID_1074113096" MODIFIED="1521082525452" TEXT="jederzeit und an beliebiger Stelle m&#xf6;glich"/>
<node CREATED="1521082548173" ID="ID_1948451513" MODIFIED="1521082559567" TEXT="Konsistenz nur per Laufzeit-Check"/>
<node CREATED="1521082560611" ID="ID_1943270534" MODIFIED="1521082576132" TEXT="fragil da von Init-Ordnung abh&#xe4;ngig"/>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1521082621363" ID="ID_1344462005" MODIFIED="1538868598480" TEXT="L&#xf6;sung-NEU">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node COLOR="#338800" CREATED="1521082670076" ID="ID_916083959" MODIFIED="1521160630521" TEXT="geeignete Technik gesucht">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1521082703384" ID="ID_510028220" MODIFIED="1561827466072" TEXT="Anforderungen / W&#xfc;nsche">
<icon BUILTIN="idea"/>
<node CREATED="1521082629322" ID="ID_1026313608" MODIFIED="1521082657826" TEXT="Storage und Zugriffs-Steuerung in einem Modul zusammen"/>
<node CREATED="1521083235390" ID="ID_816115467" MODIFIED="1521153348286" TEXT="Konfiguration ad hoc, am Ort des Service-Providers"/>
<node CREATED="1521083250124" ID="ID_914104558" MODIFIED="1521154409699" TEXT="Optional per Mix-In an die Provider-Instanz gebunden"/>
<node CREATED="1521083332673" ID="ID_1445046036" MODIFIED="1521083346179" TEXT="tempor&#xe4;r global schattierbar f&#xfc;r Test-Mocking"/>
<node CREATED="1521083598077" ID="ID_1129579564" MODIFIED="1521083604836" TEXT="Problem Konsistenz">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1521158992344" ID="ID_985106186" MODIFIED="1538868483324" TEXT="Fazit">
<icon BUILTIN="forward"/>
<node CREATED="1521159000968" ID="ID_1381648131" MODIFIED="1521159186533">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Bei <i>diesem</i>&#160;Wunsch-Profil bleibt nur eine Variante von <b>L&#246;sung-2</b>
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...denn nur eine dynamische Laufzeit-Factory erm&#246;glicht, <i>jederzeit</i>&#160; den Konstruktionsmodus zu wechseln
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1521159238935" ID="ID_1109622706" MODIFIED="1521159663752" TEXT="Ein Instanz-Pointer ist zwingend notwendig und auch besser">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...denn nur ein Instanz-Pointer kann umgebogen oder auf NULL zur&#252;ckgesetzt werden.
    </p>
    <p>
      Der einzige Ausweg aus diesem Dilemma w&#228;re eine statische L&#246;sung,
    </p>
    <p>
      in der bereits durch den #include von lib/depend.hpp endg&#252;ltig klar w&#228;re,
    </p>
    <p>
      was f&#252;r eine Art von Dependency-Factory zum Einsatz kommen soll. Denn nur auf <i>diesem</i>
    </p>
    <p>
      Weg k&#246;nnte der Optimiser unmittelbar auf eine Singleton-Instanz im statischen Speicher
    </p>
    <p>
      zugreifen, nach einem Check auf ein atomic&lt;bool&gt;.
    </p>
    <p>
      
    </p>
    <p>
      Eine solche statische L&#246;sung allerdings widerspricht nicht nur meinen W&#252;nschen,
    </p>
    <p>
      sondern w&#228;re auch architektonisch ung&#252;nstig, denn dadurch
    </p>
    <ul>
      <li>
        entsteht eine zentrale DI-Konfiguration
      </li>
      <li>
        erfolgt eine R&#252;ckverkopplung von lib/depend.hpp auf die Applikations-Struktur
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node CREATED="1521159870784" ID="ID_1588722588" MODIFIED="1521160019955" TEXT="der Zugang zur DependencyFactory ist stets ein virtueller Funktionsaufruf">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...denn er mu&#223; komplett generisch sein, und lib/depend.hpp darf keinerlei Kenntnis
    </p>
    <p>
      &#252;ber die konkrete DependencyFactory voraussetzen. Denn sonst w&#252;rden wir die
    </p>
    <p>
      Freiheit der dynamischen Laufzeit-Konfiguration verlieren.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1521160020971" ID="ID_1097297428" MODIFIED="1521160553255" TEXT="Deshalb sollte die Factory konventionell implementiert werden, nicht als Lambda">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...denn ein Lambda kann in dieser Lage grunds&#228;tzlich keinen optimierungs-Vorteil bringen,
    </p>
    <p>
      und die konventionelle L&#246;sung hat demgegen&#252;ber den Vorteil, da&#223; sie Struktur und Kontrakt explizit macht.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1521160107759" ID="ID_669924852" MODIFIED="1521239034598" TEXT="Das Konsistenz-Problem ist in Wirklichkeit ein Architekturproblem">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...denn es l&#228;uft darauf hinaus, da&#223; die Nutzung eines Dienstes zwar <i>on demand</i>&#160;erfolgt,
    </p>
    <p>
      jedoch <i>stets erst nach</i>&#160;seiner Bereitstellung. So etwas l&#228;&#223;t sich niemals &#252;ber einzelne
    </p>
    <p>
      technische Einrichtungen l&#246;sen, denn es ist eine Frage des Aufbaues der gesamten Applikation.
    </p>
    <p>
      Es gibt hierf&#252;r nur zwei L&#246;sungswege
    </p>
    <ul>
      <li>
        dynamisch: man definiert alle Abh&#228;ngigkeiten durch Regeln und zieht das System nach Bedarf konsistent hoch, was bedingt, da&#223; <i>alle </i>Abh&#228;ngigkeiten &#252;ber diesen Mechanismus laufen m&#252;ssen
      </li>
      <li>
        statisch: man strukturiert das System so, da&#223; Nutzer erst nach dem Hochfahren der von ihnen ben&#246;tigten Subsysteme aktiv sein k&#246;nnen
      </li>
    </ul>
  </body>
</html></richcontent>
<linktarget COLOR="#a9c1bb" DESTINATION="ID_669924852" ENDARROW="Default" ENDINCLINATION="795;125;" ID="Arrow_ID_949036001" SOURCE="ID_1505788760" STARTARROW="None" STARTINCLINATION="779;51;"/>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1520722136029" ID="ID_1922898574" MODIFIED="1561827466075" TEXT="Problem: double checked locking">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1520725664365" ID="ID_1453945091" MODIFIED="1520725671423" TEXT="was bringt C++11?">
<node CREATED="1520725673123" ID="ID_574000501" LINK="http://preshing.com/20130930/double-checked-locking-is-fixed-in-cpp11/" MODIFIED="1520726129608" TEXT="Jeff Preshings: double-checked-locking-is-fixed-in-cpp11"/>
<node CREATED="1520726409894" ID="ID_1296403824" LINK="http://www.modernescpp.com/index.php/thread-safe-initialization-of-a-singleton" MODIFIED="1520726425377" TEXT="Rainer Grimm: thread local initialization of singletons"/>
</node>
<node COLOR="#338800" CREATED="1520726342863" ID="ID_1875729983" MODIFIED="1531584013606" TEXT="moderne L&#xf6;sung">
<icon BUILTIN="button_ok"/>
<node CREATED="1520726350894" ID="ID_47446040" MODIFIED="1522421521283" TEXT="Atomics">
<icon BUILTIN="button_ok"/>
<node CREATED="1522421526272" ID="ID_406901713" MODIFIED="1522421532577" TEXT="Performance sehr gut"/>
<node CREATED="1522421537122" ID="ID_1012365029" MODIFIED="1522421553659" TEXT="nahe an einem direkten lokalen Zugriff"/>
<node CREATED="1522421554271" ID="ID_1930807074" MODIFIED="1522421564034" TEXT="etwa halb so schnell wie DCL alleine"/>
<node CREATED="1522421564582" ID="ID_596046075" MODIFIED="1522421575992" TEXT="Zugriff etwa 1 Nanosekunde">
<icon BUILTIN="info"/>
</node>
</node>
<node CREATED="1520726354878" ID="ID_1241761015" MODIFIED="1522421518773" TEXT="vorgeschaltetes thread_local">
<icon BUILTIN="button_cancel"/>
<node CREATED="1520726364612" ID="ID_818685184" MODIFIED="1520726369804" TEXT="Performance nicht klar">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1521160832611" ID="ID_1479783938" MODIFIED="1521161094120">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <i>scheidet</i>&#160;f&#252;r unser Nutzungsmuster aus
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...denn es bedutet effektiv, da&#223; viele Instanz-Zeiger &quot;herumfliegen&quot;,
    </p>
    <p>
      welche man in einer zentralen Registry erfassen m&#252;&#223;te, um sie bei Bedarf
    </p>
    <p>
      wieder auf NULL zur&#252;cksetzen zu k&#246;nnen.
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1520722149761" ID="ID_39179906" MODIFIED="1531584013616" TEXT="neue Implementierung" VGAP="6">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1521160662691" FOLDED="true" ID="ID_1475127406" MODIFIED="1563022738735" TEXT="Design Syntax und Nutzungsmuster">
<icon BUILTIN="button_ok"/>
<node CREATED="1521161117092" ID="ID_672223000" MODIFIED="1521161119935" TEXT="Syntax">
<node CREATED="1521161120859" ID="ID_1236102866" MODIFIED="1521161279265" TEXT="Depend&lt;Bla&gt; instance"/>
<node CREATED="1521161130050" ID="ID_1706757665" MODIFIED="1521161170232" TEXT="instance().doIt()"/>
<node CREATED="1521161171324" ID="ID_744864215" MODIFIED="1521330199058" TEXT="DependInject&lt;Bla&gt;::useSingleton&lt;UnterBla&gt;"/>
<node CREATED="1521161572133" ID="ID_1327949928" MODIFIED="1521330165247" TEXT="DependInject&lt;Bla&gt;::ServiceInstance&lt;UnterBla&gt; service{p1, p2, p3}"/>
<node CREATED="1521161634205" ID="ID_619508229" MODIFIED="1521330190739" TEXT="DependInject&lt;Bla&gt;::Local&lt;UnterBla&gt; mock"/>
<node CREATED="1521161919893" ID="ID_1606842354" MODIFIED="1521161929704" TEXT="mock-&gt;doItSpecial()"/>
</node>
<node CREATED="1521207954859" ID="ID_631339002" MODIFIED="1521418307590" TEXT="Analyse">
<icon BUILTIN="idea"/>
<node CREATED="1521208242178" ID="ID_539882602" MODIFIED="1533608414052" TEXT="erforderliche Mechanismen">
<icon BUILTIN="info"/>
<node COLOR="#338800" CREATED="1521208254376" ID="ID_1933406851" MODIFIED="1561827466082" TEXT="Singleton">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1521208339124" ID="ID_287433738" MODIFIED="1521696567487" TEXT="Closure &#xfc;ber konkreten Ctor">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1521208339124" ID="ID_826329078" MODIFIED="1521696572039" TEXT="(optional)Closure mit speziellen Argumenten">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1521209708336" ID="ID_1667188609" MODIFIED="1521332921903" TEXT="Storage f&#xfc;r UnterBla-Instanz bereitstellen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1521208380663" ID="ID_1434723425" MODIFIED="1521332927022" TEXT="neuen lazy-init-Service-Zugang in Depend&lt;Bla&gt; installieren">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1521208395181" ID="ID_1161468794" MODIFIED="1521332931094" TEXT="Check, ob der vorher dort bestehende Zugang bereits verwendet wurde">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1521208451621" ID="ID_1429591553" MODIFIED="1521332932846" TEXT="Exception aus DependInject, falls ja">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1521208257336" ID="ID_1129640741" MODIFIED="1561827466083" TEXT="ServiceInstance">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1521208859989" ID="ID_549061661" MODIFIED="1521387920055" TEXT="Lazy-Init-Factory deaktivieren">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1521208793630" ID="ID_1357481546" MODIFIED="1521335430941" TEXT="Service-Zugang in Depend&lt;Bla&gt; injizieren">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1521208889297" ID="ID_214019029" MODIFIED="1521335434588" TEXT="Lebenszyklus-Koppelung">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...d.h. Service-Zugang wird automatisch geschlossen,
    </p>
    <p>
      wenn die DependInject-Instanz stirbt
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1521208943105" ID="ID_295121984" MODIFIED="1521335440371" TEXT="Ownership an &#xfc;bergebener Service-Impl &#xfc;bernehmen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1521208724943" ID="ID_1527628667" MODIFIED="1521335442003" TEXT="smart-ptr-artiger Zugriff auf die Service-Impl">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1521208339124" FOLDED="true" ID="ID_1092066450" MODIFIED="1561827483839" TEXT="(optional)Closure &#xfc;ber konkreten Ctor">
<icon BUILTIN="button_cancel"/>
<node CREATED="1521688310369" ID="ID_1697840327" MODIFIED="1521688369496" TEXT="sinnlos">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      sie werden ja sofort ausgewertet, da die Service-Instanz unmittelbar gebaut wird
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="ksmiletris"/>
</node>
<node COLOR="#338800" CREATED="1521688321599" ID="ID_764253251" MODIFIED="1521688339230" TEXT="stattdessen: ctor-Argumente forwarden">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1521208261887" ID="ID_384054163" MODIFIED="1561827466085" TEXT="Local">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1521209044203" ID="ID_1994153994" MODIFIED="1521696576989" TEXT="(optional)Closure mit speziellen Argumenten ">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1521209708336" ID="ID_1870723126" MODIFIED="1521411844636" TEXT="Storage f&#xfc;r UnterBla-Instanz bereitstellen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1521209447572" ID="ID_1106858165" MODIFIED="1521411847148" TEXT="bestehenden Service-Zugang aus Depend&lt;Bla&gt; beiseite speichern">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1521209547606" ID="ID_1693604174" MODIFIED="1521411853636" TEXT="tempor&#xe4;r neuen Service-Zugang in Depend&lt;Bla&gt; installieren, an erzeugte Closure delegierend">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1521209759585" FOLDED="true" ID="ID_267047467" MODIFIED="1561827483839" TEXT="Lebenszyklus-Koppelung">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1521209811802" ID="ID_1712617923" MODIFIED="1521411860363" TEXT="f&#xfc;r die UnterBla-Instanz">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1521209827775" ID="ID_280216675" MODIFIED="1521411861265" TEXT="f&#xfc;r den tempor&#xe4;r installierten Service-Zugang">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1521208724943" ID="ID_221402501" MODIFIED="1521411863017" TEXT="smart-ptr-artiger Zugriff auf die Service-Impl">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1521209904013" FOLDED="true" ID="ID_1098048607" MODIFIED="1561827483839" STYLE="fork" TEXT="debug/Kontroll-API">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1521209958014" ID="ID_1638584681" MODIFIED="1521411938195" TEXT="Lebenszustand">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1521209945287" FOLDED="true" ID="ID_42798820" MODIFIED="1561827482933" TEXT="Erzeugen/Zerst&#xf6;ren der Instanz">
<icon BUILTIN="button_cancel"/>
<node CREATED="1521411917770" ID="ID_50731939" MODIFIED="1521411938195" TEXT="YAGNI"/>
</node>
<node CREATED="1521210051457" ID="ID_1794637059" MODIFIED="1521411938195" TEXT="explizites Deinstallieren">
<icon BUILTIN="button_cancel"/>
</node>
</node>
</node>
</node>
<node CREATED="1521213011289" ID="ID_1360216253" MODIFIED="1533608414058" TEXT="Vereinheitlichung">
<icon BUILTIN="idea"/>
<node CREATED="1521213017168" ID="ID_1734833663" MODIFIED="1561827466087" TEXT="alle Varianten">
<node CREATED="1521213036670" ID="ID_1288760048" MODIFIED="1521416387077" TEXT="sind move-only">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1521213116611" ID="ID_1639434185" MODIFIED="1521213127773" TEXT="enthalten eine Closure &#xfc;ber einen konkreten Ctor"/>
<node CREATED="1521213855997" ID="ID_1959805856" MODIFIED="1521213868751" TEXT="installieren eine mit dieser parametrisierte Factory"/>
<node CREATED="1521236923444" FOLDED="true" ID="ID_909632246" MODIFIED="1561827483840" TEXT="irgendwie...">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1521236930715" ID="ID_1673303474" MODIFIED="1521236948604" TEXT="managen alle die Service-Instanz"/>
<node CREATED="1521236972917" ID="ID_513518069" MODIFIED="1521236991993">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <b>aber</b>&#160;Lebenszyklus ist an die Factory gebunden
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1521236997978" ID="ID_937624268" MODIFIED="1521237012251" TEXT="...und im Fall Singleton lebt die Factory l&#xe4;nger"/>
</node>
</node>
<node CREATED="1521237050866" ID="ID_306994173" MODIFIED="1561827466088" TEXT="die Factory">
<node CREATED="1521237057169" FOLDED="true" ID="ID_1684411297" MODIFIED="1561827483840" TEXT="ist stets stateless">
<node CREATED="1521237078919" ID="ID_576191440" MODIFIED="1521237088921" TEXT="Zustand steckt im instance-Ptr"/>
<node CREATED="1521237089413" ID="ID_961860289" MODIFIED="1521237111238" TEXT="Zustand steckt im DependInject-Lebenszyklus"/>
</node>
<node CREATED="1521237387044" ID="ID_1004256215" MODIFIED="1521237394199" TEXT="speichert aber eine konkrete Closure"/>
<node CREATED="1521237410713" ID="ID_1848566975" MODIFIED="1521237417420" TEXT="der default-Fall k&#xf6;nnte generisch sein"/>
</node>
<node CREATED="1521238550267" ID="ID_722062331" MODIFIED="1561827466089" TEXT="Ort f&#xfc;r Storage">
<node CREATED="1521238557210" FOLDED="true" ID="ID_674365093" MODIFIED="1561827483840" TEXT="f&#xfc;r die Factory">
<node CREATED="1521238571832" ID="ID_53152012" MODIFIED="1521238597166" TEXT="Heap">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1521238576920" FOLDED="true" ID="ID_1251870411" MODIFIED="1561827482933" TEXT="in DependInject">
<icon BUILTIN="button_cancel"/>
<node CREATED="1521238764190" ID="ID_1859795284" MODIFIED="1521238777840" TEXT="f&#xfc;r zwei F&#xe4;lle ist das die nat&#xfc;rliche Wahl"/>
<node CREATED="1521238796793" ID="ID_1719458168" MODIFIED="1521238815844" TEXT="den ersten Fall (Singleton) quetschen wir hier mit rein">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1521242379731" ID="ID_1396082906" MODIFIED="1521242418936" TEXT="erzwingt lokalen Typ oder opaque holder">
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node CREATED="1521240566398" FOLDED="true" ID="ID_1596629515" MODIFIED="1561827482933" TEXT="in den Trampolin-Funktionen">
<icon BUILTIN="button_ok"/>
<node CREATED="1521242426269" ID="ID_256868222" MODIFIED="1521242434728" TEXT="normalerweise inline"/>
<node CREATED="1521242435292" ID="ID_503349041" MODIFIED="1521242454674" TEXT="automatisch heap-alloziert f&#xfc;r komplexe closure">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node CREATED="1521238641935" FOLDED="true" ID="ID_1638918713" MODIFIED="1561827483840" TEXT="Factory-Trampolin">
<node CREATED="1521238662196" ID="ID_1029621449" MODIFIED="1521238671488" TEXT="Heap">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1521238665347" FOLDED="true" ID="ID_1310408215" MODIFIED="1561827482933" TEXT="statisch">
<icon BUILTIN="button_ok"/>
<node CREATED="1521238747512" ID="ID_183342291" MODIFIED="1521238753603" TEXT="bietet sich an..."/>
<node CREATED="1521238754287" ID="ID_1930878495" MODIFIED="1521238758794" TEXT="pa&#xdf;t zum Design-Stil"/>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1521238885741" HGAP="116" ID="ID_378163884" MODIFIED="1521238895249" TEXT="Stil-Fragen" VSHIFT="-29">
<node CREATED="1521238918577" ID="ID_592274908" MODIFIED="1521238925476" TEXT="Wunsch: unscheinbar-elegant"/>
<node CREATED="1521238926208" ID="ID_1895053354" MODIFIED="1521238933626" TEXT="explizite &quot;Maschinerie&quot; vermeiden"/>
<node CREATED="1521239771475" ID="ID_658740954" MODIFIED="1521239917171" TEXT="Storage ist wenn m&#xf6;glich statisch"/>
<node BACKGROUND_COLOR="#e3d49b" COLOR="#990000" CREATED="1521238998374" ID="ID_1505788760" MODIFIED="1521239221405" TEXT="keine Architektur-Fragen technisch &quot;l&#xf6;sen&quot;">
<arrowlink COLOR="#a9c1bb" DESTINATION="ID_669924852" ENDARROW="Default" ENDINCLINATION="795;125;" ID="Arrow_ID_949036001" STARTARROW="None" STARTINCLINATION="779;51;"/>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1521239059741" ID="ID_1063831478" MODIFIED="1533608414063" TEXT="Grenzf&#xe4;lle ausklammern">
<node CREATED="1521239073363" ID="ID_1392431590" MODIFIED="1521239273497" STYLE="fork" TEXT="Shutdown von Singletons">
<font NAME="SansSerif" SIZE="12"/>
</node>
<node CREATED="1521239466149" ID="ID_178901788" MODIFIED="1521239728744" TEXT="Local schattiert Lebensende">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Folgendes Szenario ignorieren wir:
    </p>
    <ul>
      <li>
        eine Dependency ist als Service konfiguriert
      </li>
      <li>
        f&#252;r einen Testmock wird eine Local-Konfiguration dar&#252;bergelegt
      </li>
      <li>
        der Service wechselt seinen Lebenszyklus-Status (aktiv/inaktiv)
      </li>
    </ul>
    <p>
      &#10233; der Service zerschie&#223;t den Local, oder der Local restauriert am Ende den bereits toten Service.
    </p>
    <p>
      Har Har Har! Selber schuld wer sowas macht.
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1521169086441" ID="ID_284471203" MODIFIED="1522557526161" TEXT="Design">
<icon BUILTIN="button_ok"/>
<node CREATED="1521240056932" ID="ID_1189728630" MODIFIED="1533608414064" TEXT="Strukturen">
<node CREATED="1521240105285" ID="ID_711335043" MODIFIED="1561827466092" TEXT="Dependency-Factory">
<node CREATED="1521240317600" FOLDED="true" ID="ID_1626104494" MODIFIED="1561827483840" TEXT="Design-1">
<icon BUILTIN="button_cancel"/>
<node CREATED="1521240110948" ID="ID_219745040" MODIFIED="1521240117087" TEXT="ist ein Interface"/>
<node CREATED="1521240117611" ID="ID_786865088" MODIFIED="1521240124694" TEXT="nicht getemplated"/>
<node CREATED="1521240284429" ID="ID_1132898054" MODIFIED="1521240294807" TEXT="eingebettetes getyptes Trampolin"/>
<node CREATED="1521240298267" ID="ID_116565565" MODIFIED="1521240312364" TEXT="Folge: static_cast nach Factory-Aufruf"/>
</node>
<node CREATED="1521240336717" FOLDED="true" ID="ID_468626388" MODIFIED="1561827483840" TEXT="Design-2">
<icon BUILTIN="button_ok"/>
<node CREATED="1521241524730" ID="ID_267557752" MODIFIED="1521241530652" TEXT="ist generisches Front-End"/>
<node CREATED="1521241625115" ID="ID_469205839" MODIFIED="1521241635214" TEXT="bietet API zum (re)Konfigurieren"/>
<node CREATED="1521241544559" FOLDED="true" ID="ID_1174783081" MODIFIED="1561827482933" TEXT="nur eine Funktion konfigurierbar">
<node CREATED="1521241553590" ID="ID_1087180465" MODIFIED="1521241560816" TEXT="entweder ins Trampolin eingebettet"/>
<node CREATED="1521241561380" ID="ID_437866764" MODIFIED="1521241569823" TEXT="oder als Funktionszeiger"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1521245885376" ID="ID_1336783261" MODIFIED="1521416492280" TEXT="k&#xf6;nnte komplett wegfallen">
<linktarget COLOR="#b4a9c1" DESTINATION="ID_1336783261" ENDARROW="Default" ENDINCLINATION="224;0;" ID="Arrow_ID_37940927" SOURCE="ID_870619413" STARTARROW="None" STARTINCLINATION="83;-7;"/>
<icon BUILTIN="stop-sign"/>
</node>
<node COLOR="#338800" CREATED="1522389217216" FOLDED="true" ID="ID_1137026613" MODIFIED="1561827483840" TEXT="bekommt neue Rolle">
<icon BUILTIN="button_ok"/>
<node CREATED="1522389224063" ID="ID_913743224" MODIFIED="1522389235913" TEXT="speichert ctor und automatischen dtor"/>
<node CREATED="1522389236525" ID="ID_773636278" MODIFIED="1522389243256" TEXT="&#xfc;bernimmt das Managen der Objekte"/>
<node CREATED="1522389243868" ID="ID_104693188" MODIFIED="1522389252479" TEXT="ist interne Schnittstelle zur Konfiguration"/>
</node>
</node>
<node CREATED="1521242246702" ID="ID_650712800" MODIFIED="1561827466094" TEXT="DependInject">
<node CREATED="1521242468983" ID="ID_956915310" MODIFIED="1521242481313" TEXT="ist nur ein Lebenszyklus-Manager"/>
<node CREATED="1521242666204" ID="ID_219666575" MODIFIED="1521242758283" TEXT="delegiert an eine funktionale Konfig"/>
<node CREATED="1521242758775" ID="ID_594637783" MODIFIED="1521242762355" TEXT="ist komplett generisch"/>
</node>
<node CREATED="1521242784556" ID="ID_1052722676" MODIFIED="1561827466094" TEXT="Konfig-Selektor">
<node CREATED="1521242793458" ID="ID_1174857326" MODIFIED="1521242802085" TEXT="baut die Closure"/>
<node CREATED="1521242805641" ID="ID_68866373" MODIFIED="1521242811164" TEXT="baut die funktionale Konfig"/>
<node CREATED="1521242824239" ID="ID_1013563756" MODIFIED="1521242834313" TEXT="inline-wegwerf-Objekt"/>
</node>
</node>
<node CREATED="1521240053852" ID="ID_666003564" MODIFIED="1533608414069" STYLE="fork" TEXT="Detail-Fragen">
<icon BUILTIN="button_ok"/>
<node COLOR="#990000" CREATED="1521169099047" ID="ID_1183392158" MODIFIED="1561827466094" TEXT="DependencyFactory-Rahmenklasse">
<icon BUILTIN="button_cancel"/>
<node CREATED="1521416462342" ID="ID_1333178845" MODIFIED="1521418281285" TEXT="f&#xe4;llt weg"/>
<node CREATED="1521416471820" ID="ID_870619413" MODIFIED="1521418281285" TEXT="wir arbeiten direkt mit Lambdas">
<arrowlink COLOR="#b4a9c1" DESTINATION="ID_1336783261" ENDARROW="Default" ENDINCLINATION="224;0;" ID="Arrow_ID_37940927" STARTARROW="None" STARTINCLINATION="83;-7;"/>
</node>
</node>
<node COLOR="#338800" CREATED="1521169111957" ID="ID_1706232823" MODIFIED="1521418281285" TEXT="Ort f&#xfc;r den Implementierungs-Pointer">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1521169130251" ID="ID_1252056818" MODIFIED="1521418281285" TEXT="Zugang f&#xfc;r DependInject">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1521324229082" ID="ID_1398878858" MODIFIED="1561827466096" TEXT="Storage">
<icon BUILTIN="button_ok"/>
<node CREATED="1521324240124" ID="ID_1099103129" MODIFIED="1521418281285">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      statische Storage ist <i>irgendwie cool</i>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1521324275919" FOLDED="true" ID="ID_1710451095" MODIFIED="1561827483840" TEXT="sehe aber auch keinen wirklichen Vorteil">
<icon BUILTIN="smiley-neutral"/>
<node CREATED="1521324529228" ID="ID_1786667023" MODIFIED="1521418281285" TEXT="man mu&#xdf; sich nicht um die de-Allokation k&#xfc;mmern"/>
<node CREATED="1521324554465" ID="ID_1577416641" MODIFIED="1521418281285" TEXT="Storage ist garantiert vorhanden, kein out-of-Memory"/>
<node CREATED="1521324668449" ID="ID_1013908061" MODIFIED="1521418281285" TEXT="Meyers Singleton ist elegant und schnell"/>
</node>
<node CREATED="1521324321601" ID="ID_805959606" MODIFIED="1521418281285" TEXT="Nachteil: Storage ist stets belegt, auch wenn nicht notwendig">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      das gilt im Besonderen f&#252;r eine default-Storage als Singleton.
    </p>
    <p>
      Wofern wir dynamisch konfigurieren (wollen), mu&#223; dieser Default stets statisch bereitgestellt werden,
    </p>
    <p>
      selbst wenn die dynamische Konfiguration so angelegt ist, da&#223; die Storage nie ben&#246;tigt wird
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#338800" CREATED="1521324883035" ID="ID_1438637057" MODIFIED="1521418281285" TEXT="Heap-Allokation k&#xf6;nnte insgesamt einfacher sein">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1521326541575" ID="ID_966508253" MODIFIED="1521418281285" TEXT="umgebaut auf Heap">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1521254014422" ID="ID_961824675" MODIFIED="1561827466096" TEXT="Meyers Singleton oder explizit ausprogrammieren?">
<icon BUILTIN="help"/>
<node CREATED="1521303577633" ID="ID_1665490706" MODIFIED="1521418281285" TEXT="das w&#xe4;re die &quot;Standard-L&#xf6;sung&quot; f&#xfc;r Singletons"/>
<node CREATED="1521303616675" FOLDED="true" ID="ID_135579041" MODIFIED="1561827483840" TEXT="hier aber nicht sinnvoll...">
<node CREATED="1521303634705" FOLDED="true" ID="ID_433169847" MODIFIED="1561827482933" TEXT="weil wir explizit ein Lock halten m&#xfc;ssen">
<node CREATED="1521303738410" ID="ID_213625497" MODIFIED="1521418281286" TEXT="um den Instanz-Pointer und die Factory zu managen"/>
<node CREATED="1521303749169" ID="ID_762346402" MODIFIED="1521418281286" TEXT="und der Compiler f&#xfc;r Meyers Singleton nochmal ein Lock generiert"/>
</node>
<node CREATED="1521303775845" ID="ID_1256913997" MODIFIED="1521418281286" TEXT="weil wir unsere Singletons ggfs explizit zerst&#xf6;ren wollen"/>
<node CREATED="1521303816879" ID="ID_1463480909" MODIFIED="1521418281286" TEXT="weil wir eine Closure f&#xfc;r den Konstruktor erzeugen wollen"/>
<node CREATED="1521303847923" ID="ID_917362189" MODIFIED="1521418281286" TEXT="weil wir Abstrakte Typen explizit ausschlie&#xdf;en m&#xfc;ssen"/>
</node>
<node CREATED="1521303869768" ID="ID_712811337" MODIFIED="1521418281286" TEXT="all das w&#xe4;re auch mit Meyers Singleton irgendwie hinzubekommen....">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...aber dann eben nicht mehr <i>elegant.</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1521303905491" ID="ID_1749674332" MODIFIED="1521418281286" TEXT="Fazit: explizit ist besser">
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#338800" CREATED="1521253797733" ID="ID_1640990866" MODIFIED="1561827466098" TEXT="Fehlerbehandlung">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1521253803963" ID="ID_100415207" MODIFIED="1521418281286" TEXT="Installation wenn Factory bereits genutzt wurde">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1521253831776" FOLDED="true" ID="ID_1332033733" MODIFIED="1561827483840" TEXT="Zugriff auf Service bevor er hochgefahren wurde">
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1521253858692" ID="ID_442301762" MODIFIED="1521418281286" TEXT="t&#xfc;ckisch">
<icon BUILTIN="broken-line"/>
</node>
<node CREATED="1521253867787" ID="ID_662728746" MODIFIED="1521418281286" TEXT="Lifecycle-Handle existiert erst viel sp&#xe4;ter">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1521385652999" FOLDED="true" ID="ID_1974848336" MODIFIED="1561827482933" TEXT="statischer Schutz">
<icon BUILTIN="button_cancel"/>
<node CREATED="1521385660206" FOLDED="true" ID="ID_200575604" MODIFIED="1561827469160" TEXT="fragil">
<icon BUILTIN="stop-sign"/>
<node CREATED="1521385687874" ID="ID_1561975152" MODIFIED="1521418281286" TEXT="C++ kennt keine statische Klassen-Initialisierung">
<icon BUILTIN="info"/>
</node>
<node CREATED="1521385709463" FOLDED="true" ID="ID_713439022" MODIFIED="1561827469140" TEXT="workaround">
<node CREATED="1521385721637" ID="ID_1822970415" MODIFIED="1521418281286" TEXT="Initialisieren eines statischen member">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1521385768359" FOLDED="true" ID="ID_1123247553" MODIFIED="1525124215436" TEXT="ist unzuverl&#xe4;ssig">
<node CREATED="1521385782861" ID="ID_1190214158" MODIFIED="1521418281286" TEXT="erfordert non-const member"/>
<node CREATED="1521385787980" ID="ID_81600101" MODIFIED="1521418281286" TEXT="wird vom Compiler wegoptimiert"/>
<node CREATED="1521385795059" ID="ID_1426898485" MODIFIED="1521418281286" TEXT="sofern er Wirkungslosigkeit nachweisen kann...">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Und das h&#228;ngt nur von den Umst&#228;nden ab.
    </p>
    <p>
      In einem einfachen statisch gelinkten Executable entfernt gcc die gesamte Variable sogar ohne Optimierung.
    </p>
    <p>
      
    </p>
    <p>
      In Zukunft k&#246;nnten Compiler/Linker noch &quot;schlauer&quot; werden...
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1521386182598" ID="ID_1671815821" MODIFIED="1521418281286" TEXT="ist undurchsichtig">
<icon BUILTIN="smily_bad"/>
</node>
</node>
</node>
<node CREATED="1521386206627" ID="ID_1928841192" MODIFIED="1521418281286" TEXT="erzeugt eh blo&#xdf; eine Fehlermeldung"/>
<node CREATED="1521386219297" ID="ID_1181038545" MODIFIED="1521418281286" TEXT="...was auch noch beim Hochfahren des Service passieren kann"/>
</node>
<node CREATED="1521386241406" ID="ID_1481722887" MODIFIED="1521418281286" TEXT="es ist ein Architektur-Problem">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#338800" CREATED="1521253986491" ID="ID_546204807" MODIFIED="1521418281286" TEXT="Singleton wenn Interfaceklasse abstrakt ist">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1522557552545" FOLDED="true" ID="ID_399844845" MODIFIED="1561827483841" TEXT="Zugriff im statischen Shutdown">
<linktarget COLOR="#27a7a7" DESTINATION="ID_399844845" ENDARROW="Default" ENDINCLINATION="-36;283;" ID="Arrow_ID_1430148682" SOURCE="ID_1023585478" STARTARROW="None" STARTINCLINATION="104;0;"/>
<linktarget COLOR="#487bba" DESTINATION="ID_399844845" ENDARROW="Default" ENDINCLINATION="237;509;" ID="Arrow_ID_1393532861" SOURCE="ID_1003385410" STARTARROW="None" STARTINCLINATION="733;-537;"/>
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1522557562543" ID="ID_442673617" MODIFIED="1522558305695" TEXT="t&#xfc;ckisches Problem">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="broken-line"/>
</node>
<node CREATED="1522557575925" FOLDED="true" ID="ID_1228603701" MODIFIED="1561827482933" TEXT="Frage: eigenen Basis-Layer im System schaffen?">
<arrowlink COLOR="#af98b6" DESTINATION="ID_736034555" ENDARROW="Default" ENDINCLINATION="2208;-356;" ID="Arrow_ID_1927977085" STARTARROW="None" STARTINCLINATION="448;721;"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1522557704291" ID="ID_1761521925" MODIFIED="1522557712303" TEXT="durchdiskutiert und abgelehnt"/>
<node CREATED="1522557712890" ID="ID_898328822" MODIFIED="1522557717398" TEXT="wird sehr kompliziert"/>
<node CREATED="1522557718154" ID="ID_36441623" MODIFIED="1522557725172" TEXT="architektonisch nicht sinnvoll"/>
</node>
<node CREATED="1522557731064" FOLDED="true" ID="ID_164363356" MODIFIED="1561827482933" TEXT="Untersuchung: statische Init">
<icon BUILTIN="idea"/>
<node CREATED="1522557739071" ID="ID_1920814871" MODIFIED="1522557754025" TEXT="verh&#xe4;lt sich tats&#xe4;chlich korrekt lt. Standard"/>
<node CREATED="1522557754877" ID="ID_1831893028" MODIFIED="1522557767223" TEXT="das ClassLock wird erst on-demand erzeugt"/>
<node CREATED="1522557767787" ID="ID_405329609" MODIFIED="1522557791751">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      daher <b>mu&#223;</b>&#160;sein dtor <b>vor</b>&#160;dem dtor von DependencyFactory laufen
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1522557924661" FOLDED="true" ID="ID_1965837896" MODIFIED="1561827469160" TEXT="konsistent?">
<node CREATED="1522557833985" ID="ID_449005089" MODIFIED="1522557848371" TEXT="Bis zum dtor-Aufruf ist alles koh&#xe4;rent"/>
<node CREATED="1522557848983" ID="ID_612135780" MODIFIED="1522557867537" TEXT="da man nur via lib::Depend reinkommt..."/>
<node CREATED="1522557868197" ID="ID_497122193" MODIFIED="1522557918362" TEXT="wird der statische dtor nach dem letzten zugreifenden Kontext laufen"/>
<node CREATED="1522557968159" ID="ID_838129103" MODIFIED="1522557989248" TEXT="Aber ein solcher Aufruf kann selber in eine andere Translation-Unit umgeleitet worden sein"/>
<node CREATED="1522557990388" ID="ID_1629893682" MODIFIED="1522558003636" TEXT="kann daher niemals wasserdicht sein">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="forward"/>
</node>
</node>
</node>
<node CREATED="1522557828066" FOLDED="true" ID="ID_1861289683" MODIFIED="1561827482934" TEXT="Fazit">
<icon BUILTIN="forward"/>
<node COLOR="#338800" CREATED="1522558005906" ID="ID_1914654214" MODIFIED="1522558192841" TEXT="re-entrance w&#xe4;hrend dem dtor-Aufruf eigens behandeln">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      denn w&#228;hrend dem dtor existiert das Lock nicht mehr.
    </p>
    <p>
      Man kann aber die Logik so umordnen, da&#223; der instance-Ptr nach dem eigentlichen Deleter auf NULL gesetzt wird.
    </p>
    <p>
      Das ist <b>nicht threadsafe</b>, was aber hier akzeptabel ist (Shutdown l&#228;uft &#252;berwiegend
    </p>
    <p>
      single-threaded, sofern man keine thread_locals einsetzt. Aber diese werden vor alle anderen
    </p>
    <p>
      Destruktoren gesequenced. Sollte passen.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1522558025471" ID="ID_408630768" MODIFIED="1522558194504" TEXT="danach spezielle Sperre einbauen, da die Factory nicht mehr existiert">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1522558045236" ID="ID_269006227" MODIFIED="1522558059135" TEXT="solche Konsistenz-Checks sind wertvoll">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1521160691830" FOLDED="true" ID="ID_53329830" MODIFIED="1563022733852" TEXT="Implementierung ausf&#xfc;hren">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1521418559868" ID="ID_592269917" MODIFIED="1521688403021" TEXT="Depend&lt;SRV&gt; Front-End">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1521418571594" ID="ID_1432227459" MODIFIED="1521688407751" TEXT="DependInject&lt;SRV&gt; ersetzt dependency-factory.hpp">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1521418598463" ID="ID_237484313" MODIFIED="1531584013617" TEXT="Objekterzeugung erweitern">
<icon BUILTIN="button_ok"/>
<node COLOR="#990000" CREATED="1521418618052" ID="ID_1253147848" MODIFIED="1533608414078" TEXT="auf beliebige Argumente">
<icon BUILTIN="stop-sign"/>
<node CREATED="1521688471643" ID="ID_1037697154" MODIFIED="1521688504558" TEXT="gef&#xe4;hrlich wenn Objekterzeugung lazy">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1521688505734" ID="ID_1656307893" MODIFIED="1521688520760" TEXT="der Client sieht ja nicht, wie wir die Argumente speichern"/>
<node CREATED="1521688524620" ID="ID_480802115" MODIFIED="1521688537015" TEXT="sinnvoll nur im Fall Service-Instanz">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1521418627130" ID="ID_206705145" MODIFIED="1533608414078" TEXT="auf allgemeine Closures">
<icon BUILTIN="button_ok"/>
<node CREATED="1521696315169" ID="ID_914761003" MODIFIED="1521696326988" TEXT="ob das wohl geht...."/>
<node CREATED="1521696477035" ID="ID_1232450528" MODIFIED="1521696510682" TEXT="Verdammter Mist! Wird die Closure nun kopiert oder geMOVEd?"/>
<node COLOR="#338800" CREATED="1521696673440" ID="ID_1408713510" MODIFIED="1521751343055" TEXT="compile-time Checks mal verifizieren">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1521696334383" ID="ID_1627167666" MODIFIED="1561827466112" TEXT="gef&#xe4;llt mir nicht wirklich">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      denn nun wird das &quot;singleton&quot; schon ziemlich gehaltlos,
    </p>
    <p>
      und es ist einigerma&#223;en undurchsichtig, wo nun die Instanz erzeugt wird.
    </p>
    <p>
      
    </p>
    <p>
      Allerdings gibt es auch kein stichhaltiges Argument, dieses Feature<i>&#160;nicht</i>&#160;zu implementieren.
    </p>
    <p>
      Es ist halt einfach nahheliegend, da&#223; man mal eine Subklasse mit abweichenden Parametern
    </p>
    <p>
      konstruieren wollen k&#246;nnte, und es ist von der Implementierung her &quot;quasi geschenkt&quot;.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="smily_bad"/>
<node COLOR="#338800" CREATED="1522389159792" ID="ID_1574961457" MODIFIED="1522389181299" TEXT="besserer Name">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1522389172206" ID="ID_14747848" MODIFIED="1522389177726" TEXT="komplettes Refactoring">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1522389165095" ID="ID_533975153" MODIFIED="1522389170272" TEXT="DependencyFactory">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1521433938944" ID="ID_546086969" MODIFIED="1531584013622" TEXT="double-checked-locking">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1521433948534" ID="ID_176845865" MODIFIED="1533608414081" TEXT="umstellen auf atomics">
<icon BUILTIN="button_ok"/>
<node CREATED="1521779239745" ID="ID_1772115642" MODIFIED="1561827466113">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <u>Thema</u>: Memory access order constraints
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#5a6caa" DESTINATION="ID_1416813337" ENDARROW="Default" ENDINCLINATION="-1755;162;" ID="Arrow_ID_751165448" STARTARROW="None" STARTINCLINATION="-4287;-237;"/>
<icon BUILTIN="info"/>
<node CREATED="1521783335195" ID="ID_594004742" LINK="http://en.cppreference.com/w/cpp/atomic/memory_order" MODIFIED="1521783351104" TEXT="CPP-Reference"/>
</node>
<node CREATED="1521783156564" ID="ID_1193354198" MODIFIED="1521783219950">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <font color="#45317b">Grundidee</font>: <b>synchronizes-with</b>-Beziehung herstellen <i>auf Guard-Variable</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1521788423421" ID="ID_992901826" MODIFIED="1561827466114" TEXT="use-cases">
<font NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="forward"/>
<node CREATED="1521788428588" FOLDED="true" ID="ID_1454492096" MODIFIED="1561827483841" TEXT="lazy init">
<node CREATED="1521788443562" ID="ID_699722245" MODIFIED="1521788611886" TEXT="acquire-release ist &quot;ausreichend&quot;">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...das meint zweierlei
    </p>
    <ul>
      <li>
        wir brauchen keine volle sequentielle Konsistenz
      </li>
      <li>
        eigentlich w&#252;rde <i>consume</i>&#160;statt <i>acquire</i>&#160;gen&#252;gen,<br />aber wir verzichten auf diesen ehr theoretischen Performance-Gewinn,<br />welcher nur relevant w&#228;re, wenn wir auf ARM einen modernen Compiler einsetzen
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node CREATED="1521788638623" ID="ID_16016457" MODIFIED="1521788679409">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      essentiell ist, im Mutex-gesch&#252;tzten Bereich
    </p>
    <p>
      auf einer tempor&#228;ren lokalen Instanz-Variable zu arbeiten
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1521788695911" FOLDED="true" ID="ID_326620949" MODIFIED="1561827483841" TEXT="config Singleton-sub">
<node CREATED="1521788724243" ID="ID_1337448866" MODIFIED="1521788751467" TEXT="hier wird synchronizes-with per Mutex (blocking) hergestellt"/>
<node CREATED="1521788777364" ID="ID_1496795291" MODIFIED="1521788787982" TEXT="der Atomic wird nur gelesen, um einen Fehler zu erkennen"/>
<node CREATED="1521788788546" ID="ID_1572121226" MODIFIED="1521788818778" TEXT="...es w&#xfc;rde sogar ein nicht-atomic gen&#xfc;gen"/>
<node CREATED="1521788825341" ID="ID_984179535" MODIFIED="1521788870307" TEXT="memory_order_relaxed w&#xe4;re korrekt"/>
<node CREATED="1521788871702" ID="ID_1445815040" MODIFIED="1521789034029" TEXT="aber seq_cst ist tolerierbar und lesbarer">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      warum?
    </p>
    <p>
      weil per Definitionem dieses gesamte Konfigurations-Thema
    </p>
    <p>
      als <i>nicht performance-kritisch</i>&#160;eingestuft wird -- und ich mehr Wert darauf lege,
    </p>
    <p>
      die verschiedenen Belange im Quelltext nicht zu vermischen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1521789050110" FOLDED="true" ID="ID_916308999" MODIFIED="1561827483841" TEXT="start Service">
<node CREATED="1521789241116" FOLDED="true" ID="ID_1521979010" MODIFIED="1561827482934" TEXT="Frage: besteht hier eine race-condition?">
<icon BUILTIN="help"/>
<node CREATED="1521789253954" ID="ID_1012950744" MODIFIED="1521789259925" TEXT="das ist eine Architektur-Frage"/>
<node CREATED="1521789283782" FOLDED="true" ID="ID_87566462" MODIFIED="1561827469160" TEXT="&quot;Ja&quot; w&#xfc;rde bedeuten....">
<node CREATED="1521789292172" ID="ID_1709140060" MODIFIED="1521789340386" TEXT="da&#xdf; Konkurrenz zwischen Singleton und Service vorgesehen ist"/>
<node CREATED="1521789342638" ID="ID_1682448407" MODIFIED="1521789361687" TEXT="und wir m&#xfc;&#xdf;ten in diesem Fall mit CAS den Service ver&#xf6;ffentlichen"/>
</node>
<node CREATED="1521789364195" ID="ID_603083662" MODIFIED="1521789452318" TEXT="die Antwort ist eindeutig &quot;Nein&quot;">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      es gilt schlichtweg als Architektur-Fehler, wenn hier eine Kollision geschiet.
    </p>
    <p>
      Und es gibt keinen sinnvollen Weg, wie die Applikation dann weiterarbeiten kann.
    </p>
    <p>
      Daher werfen wir ja auch error::Fatal
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1521789511870" ID="ID_553276693" MODIFIED="1521789526160" TEXT="Konsistenz-check und Service-Start im Mutex sind ausreichend"/>
<node CREATED="1521789611377" ID="ID_923887770" MODIFIED="1521789676331" TEXT="aber der Service mu&#xdf; per memory_order_release ver&#xf6;ffentlicht werden">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...denn sonst k&#246;nnte genau das gleiche Desaster passieren,
    </p>
    <p>
      das auch in fehlerhaftem Double-Checked-Locking auftritt
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1521789904872" ID="ID_1237807951" MODIFIED="1521789930400" TEXT="...was aber durch den default (memory_order_seq_cst) mit impliziert ist">
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node CREATED="1521789938539" FOLDED="true" ID="ID_1248059454" MODIFIED="1561827483841" TEXT="stop Service">
<node CREATED="1521789943683" ID="ID_128133787" MODIFIED="1521790025755" TEXT="v&#xf6;llig analog: instance = nullptr braucht release-Semantik"/>
<node CREATED="1521790091662" FOLDED="true" ID="ID_1518955379" MODIFIED="1561827482934" TEXT="Frage: besteht ein Race auf den Destruktor?">
<icon BUILTIN="help"/>
<node CREATED="1521790108228" ID="ID_1075157743" MODIFIED="1521790114983" TEXT="das ist wiederum eine Architektur-Frage"/>
<node CREATED="1521790115851" ID="ID_1077549103" MODIFIED="1521790219873" TEXT="theoretisch besteht er sehr wohl">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...d.h. das ganze Locking und die memory-order sch&#252;tzt uns hier <b>&#252;berhaupt nicht</b>!
    </p>
    <p>
      Es kann sehr wohl passieren, da&#223; ein anderer Thread grade eben noch
    </p>
    <p>
      sicht den Pointer auf den Service geholt hat, und wir dann den Service zerst&#246;ren, w&#228;hrend
    </p>
    <p>
      der andere Thread ihn grade nutzt.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1521790222356" ID="ID_168283882" MODIFIED="1521790445457">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      unsere Architektur stellt aber sicher,
    </p>
    <p>
      da&#223; dieser Fall nicht relevant ist
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      warum?
    </p>
    <p>
      Weil der &quot;andere Thread&quot; nur von zwei Subsystemen her kommen kann
    </p>
    <ul>
      <li>
        dem Subsystem selber, das auch den Service erzeugt.<br />Beispiel ist eine UI-Interaktion aus dem Event-Loop thread
      </li>
      <li>
        aus einem anderen Subsystem, das vom Serivce-Provider abh&#228;ngt
      </li>
    </ul>
    <p>
      In beiden F&#228;llen stellen unsere Prinzipien zum Betreiben von Subsystemen sicher,
    </p>
    <p>
      da&#223; dieser &quot;andere Thread&quot; nicht (mehr) aktiv sein darf, wenn der Shutdown erfolgt.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1521790458636" FOLDED="true" ID="ID_1895342635" MODIFIED="1561827469160" TEXT="Ausnahme: Emergency-Shutdown">
<icon BUILTIN="broken-line"/>
<node CREATED="1521790499246" ID="ID_671183540" MODIFIED="1521790505505" TEXT="wenn ein Subsystem zusammenbricht"/>
<node CREATED="1521790506069" ID="ID_1950061016" MODIFIED="1521790513032" TEXT="sind seine Services bereits weg,"/>
<node CREATED="1521790515308" ID="ID_1260618160" MODIFIED="1521790538596" TEXT="wenn der Subsystem-Manager den Applikations-Shutdown signalisiert"/>
<node CREATED="1521790557030" ID="ID_663628696" MODIFIED="1521790571891">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      hier ist ein <b>Segfault</b>&#160;m&#246;glich
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
<node CREATED="1521791102683" FOLDED="true" ID="ID_1344381807" MODIFIED="1561827483841" TEXT="Mock">
<node CREATED="1521791122872" FOLDED="true" ID="ID_236648459" MODIFIED="1561827482934" TEXT="Generell unterstellen wir hier gutm&#xfc;tige Verh&#xe4;ltnisse">
<node CREATED="1521791137678" ID="ID_1107870970" MODIFIED="1521791147768" TEXT="Mocks sollen niemals produktiv verwendet werden"/>
<node CREATED="1521791149596" ID="ID_301182144" MODIFIED="1521791176628" TEXT="Concurrency tritt (wenn &#xfc;berhaupt) nur sehr kontrolliert auf"/>
</node>
<node CREATED="1521791233344" ID="ID_1474658967" MODIFIED="1521791269115" TEXT="auch hier erschl&#xe4;gt Mutex + default-Memory-order alle Belange">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1521434009142" ID="ID_117782655" MODIFIED="1533608414088" TEXT="Performance-Messung">
<icon BUILTIN="button_ok"/>
<node CREATED="1521791686994" ID="ID_1750734364" MODIFIED="1521791753975" TEXT="Erwartetes Ergebnis: wird nur geringf&#xfc;gig langsamer">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...denn wir sind auf x86_64 -- und diese Plattform ist per default <i>fast &#252;berall</i>&#160;sequentially coherent
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#338800" CREATED="1521866206751" ID="ID_702466096" MODIFIED="1521882798384" TEXT="Bezugspunkt: Zugriff auf bereits existierenden Service">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1521791785677" ID="ID_565916879" MODIFIED="1561827466120" TEXT="drei F&#xe4;lle">
<icon BUILTIN="forward"/>
<node COLOR="#338800" CREATED="1521791790172" ID="ID_995415475" MODIFIED="1521882801672" TEXT="Mutex f&#xfc;r jeden Zugriff">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1521791805930" ID="ID_1036499157" MODIFIED="1521882803656" TEXT="L&#xf6;sung ohne Atomics (inkorrekt)">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1521791823055" ID="ID_1820322207" MODIFIED="1521882806238" TEXT="L&#xf6;sung mit Atomics">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1521791837014" ID="ID_1625592637" MODIFIED="1521882823105" TEXT="Messwerte als Verh&#xe4;ltniszahl angeben">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1522110414912" ID="ID_1861060212" MODIFIED="1531584013624" TEXT="Singleton-Erzeugung zusammenf&#xfc;hren">
<linktarget COLOR="#5f8d94" DESTINATION="ID_1861060212" ENDARROW="Default" ENDINCLINATION="-566;0;" ID="Arrow_ID_319700222" SOURCE="ID_1624172022" STARTARROW="None" STARTINCLINATION="205;-440;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1522110563499" ID="ID_470760423" MODIFIED="1533608414089" TEXT="stets ausf&#xfc;hrend">
<icon BUILTIN="idea"/>
<node CREATED="1522110568307" ID="ID_311971109" MODIFIED="1522110579069" TEXT="Depend&lt;SUB&gt;"/>
<node CREATED="1522110579561" ID="ID_1773742926" MODIFIED="1522110587404" TEXT="mit SUB == konkreter Typ"/>
</node>
<node CREATED="1522110657678" ID="ID_22217041" MODIFIED="1533608414089" TEXT="Locking/Korrektheit">
<node CREATED="1522110665733" ID="ID_329494929" MODIFIED="1522110676431" TEXT="Achtung abweichender Typ!">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1522110683363" ID="ID_352813223" MODIFIED="1522110710611" TEXT="Normaler Zugang via Depend&lt;SUB&gt; wird zum Synonym"/>
<node CREATED="1522111399080" ID="ID_753159927" MODIFIED="1561827466120" TEXT="kaskadierend">
<node CREATED="1522110724165" ID="ID_879974852" MODIFIED="1522110749614" TEXT="acquire Lock&lt;SUB&gt;"/>
<node CREATED="1522110842845" ID="ID_12886357" MODIFIED="1522110920894" TEXT="store into Depend&lt;SUB&gt;::instance"/>
</node>
</node>
<node CREATED="1522110508507" ID="ID_789229743" MODIFIED="1533608414090" TEXT="F&#xe4;lle">
<node CREATED="1522110513930" ID="ID_752814721" MODIFIED="1561827466120" TEXT="normal-default">
<node CREATED="1522113463844" ID="ID_1945711876" MODIFIED="1522113489197" TEXT="nur Konstruktor / Destruktor-Funktion"/>
<node CREATED="1522113490025" ID="ID_1330140057" MODIFIED="1522113531135" TEXT="Alternativ-Behandlung f&#xfc;r nicht-instantiierbare Typen"/>
</node>
<node CREATED="1522110520777" ID="ID_336202422" MODIFIED="1561827466120" TEXT="Subclass-default">
<node CREATED="1522113128835" ID="ID_166213716" MODIFIED="1522113152107" TEXT="kaskadierenden Zugriff als Factory"/>
<node CREATED="1522113152999" ID="ID_1443678098" MODIFIED="1522113288917" TEXT="Instantiierungs-Check kann entfallen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...man <i>k&#246;nnte</i>&#160;ihn aber genausogut auch machen.
    </p>
    <p>
      Das Argument ist: wenn wir kaskadierend aufrufen, dann ist das Ergebnis in jedem Fall korrekt,
    </p>
    <p>
      und wird auch durch das Installieren dieses (zweiten) Zuganges in keinster Weise beeintr&#228;chtigt.
    </p>
    <p>
      Sollte Depend&lt;SUB&gt; bereits instantiiert sein, dann auch gut.
    </p>
    <p>
      Der kaskadierende Aufruf liest dann einfach <i>dessen</i>&#160;Instanz-Pointer
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1522110531344" ID="ID_1376369013" MODIFIED="1561827466121" TEXT="custom-ctor">
<node CREATED="1522112368219" ID="ID_774074460" MODIFIED="1522112375518" TEXT="konkreten Typ feststellen"/>
<node CREATED="1522112376154" FOLDED="true" ID="ID_1394042003" MODIFIED="1561827483841" TEXT="f&#xfc;r diesen...">
<node CREATED="1522113449575" ID="ID_644735948" MODIFIED="1522113456734" TEXT="acquire Lock&lt;SUB&gt;"/>
<node CREATED="1522112395280" ID="ID_995036578" MODIFIED="1522113339076" TEXT="Instantiierungs-Check">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      hier notwendig, weil wir eine neue Factory-Funktion ablegen.
    </p>
    <p>
      Das k&#246;nnte mit dem Factory-Management einer bereits installierten Konfiguration kollidieren
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1522112400703" ID="ID_1562178283" MODIFIED="1522112404258" TEXT="Factory erstellen"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1522200092935" ID="ID_1314237888" MODIFIED="1533608414092" TEXT="Deleter-Behandlung">
<icon BUILTIN="button_ok"/>
<node CREATED="1522200102534" ID="ID_284894079" MODIFIED="1561827466121" TEXT="bisher">
<node CREATED="1522200106373" ID="ID_1981188993" MODIFIED="1522200226028" TEXT="was die Factory zur&#xfc;ckliefert, wird nicht gemanaged">
<icon BUILTIN="broken-line"/>
</node>
<node CREATED="1522200122883" ID="ID_564595724" MODIFIED="1522200229769" TEXT="der instance-Pointer bleibt bestehen, selbst wenn das Objekt weg ist">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1522200231404" ID="ID_357657857" MODIFIED="1522200238612" TEXT="ned schee">
<icon BUILTIN="smily_bad"/>
</node>
</node>
<node CREATED="1522200147696" ID="ID_929047067" MODIFIED="1561827466122" TEXT="gew&#xfc;nscht">
<icon BUILTIN="yes"/>
<node COLOR="#338800" CREATED="1522200152927" ID="ID_326569334" MODIFIED="1522382081602" TEXT="keine Memory-leaks">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1522200167861" ID="ID_908074030" MODIFIED="1522382083234" TEXT="alles soll zerst&#xf6;rt werden">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1522200189706" ID="ID_302642427" MODIFIED="1522382084962" TEXT="m&#xf6;glichst alle instance-Pointer zur&#xfc;cksetzen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1522384942847" ID="ID_1152640572" MODIFIED="1522387791802" TEXT="Fehlermeldung beim Zugriff nach Zerst&#xf6;rung">
<linktarget COLOR="#639d9e" DESTINATION="ID_1152640572" ENDARROW="Default" ENDINCLINATION="-89;0;" ID="Arrow_ID_1512382393" SOURCE="ID_1741501987" STARTARROW="None" STARTINCLINATION="28;-1;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1522200249626" ID="ID_215336836" MODIFIED="1522382087401" TEXT="Freunschafts-f&#xe4;hig">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1522384902500" ID="ID_1741501987" MODIFIED="1533608414094" TEXT="Zugriff beim Herunterfahren">
<arrowlink COLOR="#639d9e" DESTINATION="ID_1152640572" ENDARROW="Default" ENDINCLINATION="-89;0;" ID="Arrow_ID_1512382393" STARTARROW="None" STARTINCLINATION="28;-1;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1522387798572" HGAP="35" ID="ID_1522844249" MODIFIED="1522387935592" TEXT="war ein &#xfc;briggebliebener Destruktor in einem Mock" VSHIFT="12">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      zwar wird beim L&#246;schen des Mock
    </p>
    <p>
      die urspr&#252;ngliche Factory wieder an ihren Platz zur&#252;ckgeschoben,
    </p>
    <p>
      aber niemand sagt, da&#223; ein Move auch wirklich ein Move (swap) ist.
    </p>
    <p>
      Mu&#223; daher diese leer gewordene tempor&#228;re Factory explizit auf Default-Zustand zur&#252;cksetzen,
    </p>
    <p>
      damit nicht doch noch der Deleter l&#228;uft.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="ksmiletris"/>
</node>
<node COLOR="#338800" CREATED="1522387936585" ID="ID_1922190351" MODIFIED="1522388778471" TEXT="es w&#xe4;re besser, wenn Factory &#xfc;berhaupt nicht assignable w&#xe4;re">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...und man stattdessen explizit eine <i>gef&#228;hrliche Funktion</i>&#160; aufrufen mu&#223;
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1522334796724" ID="ID_1080992734" MODIFIED="1531584013626" TEXT="Funktoren zusammenf&#xfc;hren">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1522334843062" ID="ID_1526236017" MODIFIED="1533608414095" TEXT="DependencyFactory f&#xfc;r">
<icon BUILTIN="button_ok"/>
<node CREATED="1522334805635" ID="ID_315782435" MODIFIED="1522384992864" TEXT="Erzeugungs-Funktor"/>
<node CREATED="1522334818473" ID="ID_750129060" MODIFIED="1522334821036" TEXT="Deleter"/>
<node CREATED="1522334822001" ID="ID_644059909" MODIFIED="1522334935421" TEXT="automatisches Instanz-Management"/>
</node>
<node COLOR="#338800" CREATED="1522334859291" ID="ID_1496044958" MODIFIED="1533608414096" TEXT="korrekt handhaben">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1522334896942" ID="ID_1215786079" MODIFIED="1522382047552" TEXT="default-Fall">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1522334903741" ID="ID_1875541619" MODIFIED="1522382049855" TEXT="abstrakte Basisklasse">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1522381984647" ID="ID_136231234" MODIFIED="1561827466122" TEXT="Klasse ohne Default-ctor">
<icon BUILTIN="button_ok"/>
<node CREATED="1522384796267" FOLDED="true" ID="ID_1913154173" MODIFIED="1561827483841" TEXT="Problem">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1522384813129" ID="ID_502713353" MODIFIED="1522384821715" TEXT="private mit Freunschaft"/>
<node CREATED="1522384822583" ID="ID_1870041254" MODIFIED="1522384845999" TEXT="std::is_constructible&lt;X&gt; kann das nicht unterscheiden"/>
</node>
<node COLOR="#338800" CREATED="1522384848011" ID="ID_834547191" MODIFIED="1522384870993" TEXT="L&#xf6;sung: duck-Detector im Rumpf von DependencyFactory">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1522334912412" ID="ID_1391948557" MODIFIED="1522382053286" TEXT="custom-Funktor">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1522334917035" ID="ID_259163474" MODIFIED="1522382054565" TEXT="custom-Deleter">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1522367884794" ID="ID_42634215" MODIFIED="1533608414097" TEXT="Analyse der Schritte">
<icon BUILTIN="idea"/>
<node CREATED="1522367595914" ID="ID_615466863" MODIFIED="1561827466123" TEXT="Use-cases">
<node CREATED="1522367601081" FOLDED="true" ID="ID_1594593457" MODIFIED="1561827483841" TEXT="default">
<node CREATED="1522367513966" ID="ID_18197809" MODIFIED="1522381907638" TEXT="nominelle Target-Klasse">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1522367550688" ID="ID_1892572153" MODIFIED="1522381910426" TEXT="Objekt per default ctor erzeugen">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1522367555520" ID="ID_1067588123" MODIFIED="1522381912781" TEXT="instanz managen">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1522367604945" FOLDED="true" ID="ID_681132036" MODIFIED="1561827483841" TEXT="Subclass">
<node CREATED="1522367701660" ID="ID_381217567" MODIFIED="1522381919492" TEXT="Subklasse feststellen">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1522367650099" ID="ID_887791148" MODIFIED="1522381923778" TEXT="nur delegieren an Depend&lt;SUB&gt;">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1522367617999" FOLDED="true" ID="ID_1310241568" MODIFIED="1561827483842" TEXT="custom-Functor">
<node CREATED="1522367712338" ID="ID_1169276081" MODIFIED="1522381927169" TEXT="Functor speichern">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1522367731959" ID="ID_1766531478" MODIFIED="1522381929444" TEXT="Objekt per Funktor erzeugen">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1522367749229" ID="ID_1580519177" MODIFIED="1522381931877" TEXT="instanz managen">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node CREATED="1522367902872" ID="ID_272084666" MODIFIED="1561827466124" TEXT="grunds&#xe4;tzlich immer">
<node CREATED="1522367561111" ID="ID_604859300" MODIFIED="1522381935331" TEXT="instanz-Ptr NULLen">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1522367573173" ID="ID_1825315724" MODIFIED="1522381938038" TEXT="Factory sperren">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1525124188421" ID="ID_1086493226" MODIFIED="1525192911545" TEXT="Thema: statische Initialisierung">
<arrowlink COLOR="#9a97b5" DESTINATION="ID_1126260262" ENDARROW="Default" ENDINCLINATION="-1465;211;" ID="Arrow_ID_372705466" STARTARROW="None" STARTINCLINATION="-1025;0;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1525192915503" ID="ID_1930672036" MODIFIED="1525192926749" TEXT="Factory ist jetzt Meyer&apos;s Singleton">
<icon BUILTIN="idea"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1525192054281" ID="ID_1450620535" MODIFIED="1525192075199" TEXT="#1142 initialisation of static template members">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1525192963192" ID="ID_1702928731" MODIFIED="1533608414099" TEXT="ungekl&#xe4;rt: AppState-Factory-ctor mehrfach aufrerufen">
<icon BUILTIN="flag-pink"/>
<node CREATED="1525192993716" ID="ID_1211448815" MODIFIED="1525193027234" TEXT="und zwar ein zweites mal vom GUI-Plugin">
<icon BUILTIN="info"/>
</node>
<node CREATED="1525193011555" ID="ID_822581772" MODIFIED="1525193186771" TEXT="ungef&#xe4;hrlich, aber nicht sauber">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...da es sich ja nur um die <i>Factory</i>&#160;handelt,
    </p>
    <p>
      nicht um das AppState-Singleton selber, welches ja ohnehin nur von main.cpp
    </p>
    <p>
      verwendet werden sollte. Aber das deutet darauf hin, da&#223; irgend etwas mit der
    </p>
    <p>
      Initialisierung von Statics &quot;faul&quot; ist, wenn shared objects dynamisch geladen werden.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1522558319359" ID="ID_1023585478" MODIFIED="1522558353410" TEXT="Thema: Aufruf nach Zerst&#xf6;rung">
<arrowlink COLOR="#27a7a7" DESTINATION="ID_399844845" ENDARROW="Default" ENDINCLINATION="-36;283;" ID="Arrow_ID_1430148682" STARTARROW="None" STARTINCLINATION="104;0;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1521160700669" HGAP="4" ID="ID_978221585" MODIFIED="1561827466127" TEXT="Dokumentation" VSHIFT="25">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1521790595841" ID="ID_1874367277" MODIFIED="1521936684007" TEXT="Doku-Text im TiddlyWiki">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1521790681557" ID="ID_1346970835" MODIFIED="1521936679674" TEXT="die generelle Haltung bez&#xfc;gl. Performance / Korrektheit">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1521790613318" ID="ID_506011313" MODIFIED="1521936677400" TEXT="Diskussion der Locking / Atomic-Problematik">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1521885096858" ID="ID_1403195900" MODIFIED="1521885106977" TEXT="Benchmark-Zahlen dokumentieren">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1521790709017" ID="ID_1263887689" MODIFIED="1525124215458" TEXT="Doxygen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1521790767697" ID="ID_1445751091" MODIFIED="1521936696493" TEXT="Grunds&#xe4;tzliches zu Singleton und Dependency-Injection (aktualisieren)">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1521790800253" ID="ID_878208550" MODIFIED="1521946968361" TEXT="Eigenes Kapitel zum Thema Double-Checked Locking">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1521790816937" ID="ID_776249726" MODIFIED="1533608414100" TEXT="Grenzziehung zur Architektur">
<icon BUILTIN="button_ok"/>
<node CREATED="1521790858701" ID="ID_1382870211" MODIFIED="1521790870103" TEXT="Belange die hier nicht behandelt werden"/>
<node CREATED="1521790870898" ID="ID_662113030" MODIFIED="1521790886784">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Konsequenz: das ist <b>keine Library-Implementierung</b>
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#338800" CREATED="1521790951152" ID="ID_974126504" MODIFIED="1521946981024" TEXT="Semantik der Konfigurations-Varianten beschreiben">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1521790992538" ID="ID_1892242381" MODIFIED="1521947767631" TEXT="die hier ausgef&#xfc;hrte Analyse zusammenfassen">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1521791026749" ID="ID_1199387367" MODIFIED="1525124215459" TEXT="Doku-Subsysteme">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1521791034972" ID="ID_1629095174" MODIFIED="1533608414101" TEXT="&#xfc;berlegen, wo das Architektur-Thema dargestellt werden sollte">
<icon BUILTIN="button_ok"/>
<node CREATED="1521962966238" ID="ID_1724029235" MODIFIED="1521962976832" TEXT="geh&#xf6;rt in die Architektur-Sektion"/>
<node COLOR="#338800" CREATED="1521962977140" ID="ID_1121275609" MODIFIED="1521962995498" TEXT="Neue Seite &quot;Subsystems&quot; angelegt">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1521791058689" ID="ID_564899806" MODIFIED="1522025340181" TEXT="Hinweis auf die offene Flanke bei Emergency-Shutdown">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1521929151045" ID="ID_1800182456" MODIFIED="1522025351449" TEXT="Doku-Seite f&#xfc;r DependencyFactory anlegen">
<icon BUILTIN="button_ok"/>
<node CREATED="1521929165380" ID="ID_15396392" MODIFIED="1521929185272" TEXT="kann in etwa der Content aus dem TiddlyWiki sein">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1521963017631" ID="ID_380828830" MODIFIED="1521963032077" TEXT="Neue Seite angelegt und von The Inner Core verlinkt">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1521929186281" ID="ID_1078337367" MODIFIED="1522025355714" TEXT="ein, zwei Einleitungss&#xe4;tze dazu">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1521929199799" ID="ID_507602296" MODIFIED="1522738826337" TEXT="Wichtig: die Benchmark-Daten hier auch darstellen">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1520722160591" ID="ID_135546699" MODIFIED="1561827466130" TEXT="Unit-Test">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1521419576303" ID="ID_726128967" MODIFIED="1522042418343" TEXT="alte Tests portieren">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1521418937870" ID="ID_906296527" MODIFIED="1522033081893" TEXT="Singleton_test">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1521419045649" ID="ID_839295062" MODIFIED="1522035642960" TEXT="SingletonSubclass_test">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1521419134046" ID="ID_1638082455" MODIFIED="1522037930919" TEXT="SingletonTestMock_test">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1521419300765" ID="ID_417098537" MODIFIED="1522042501641" TEXT="DependencyFactory_test">
<linktarget COLOR="#b9274f" DESTINATION="ID_417098537" ENDARROW="Default" ENDINCLINATION="-118;36;" ID="Arrow_ID_606259386" SOURCE="ID_914313570" STARTARROW="Default" STARTINCLINATION="-127;0;"/>
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1521419730442" HGAP="42" ID="ID_657803548" MODIFIED="1533608414101" TEXT="nach der Umstellung etwas straffen" VSHIFT="-13">
<icon BUILTIN="yes"/>
<node CREATED="1522632317444" ID="ID_1018495070" MODIFIED="1522632325274" TEXT="ach was, zu faul...">
<icon BUILTIN="ksmiletris"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1521419563657" ID="ID_733291707" MODIFIED="1522034193646" TEXT="DependencyConfiguration_test">
<icon BUILTIN="button_ok"/>
<node CREATED="1521419590709" ID="ID_914313570" MODIFIED="1522042501641" TEXT="ziemlich redundant">
<arrowlink COLOR="#b9274f" DESTINATION="ID_417098537" ENDARROW="Default" ENDINCLINATION="-118;36;" ID="Arrow_ID_606259386" STARTARROW="Default" STARTINCLINATION="-127;0;"/>
<node CREATED="1521419624065" HGAP="29" ID="ID_477987875" MODIFIED="1533608414101" TEXT="weiterhin sinnvoll?" VSHIFT="14">
<node CREATED="1521419638943" ID="ID_717613154" MODIFIED="1521419705073" TEXT="TDD w&#xe4;hrend der re-Implementirung"/>
<node CREATED="1521419657356" ID="ID_1381265753" MODIFIED="1521419674957" TEXT="der alte Test mu&#xdf; weiterhin laufen (ohne nachzudenken!)"/>
<node CREATED="1521419676825" ID="ID_92062482" MODIFIED="1521419693987" TEXT="mehr Tests schaden nie">
<icon BUILTIN="ksmiletris"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1521433819705" ID="ID_797347707" MODIFIED="1521433827896" TEXT="&#xfc;bernehmen und aufteilen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1521433807714" ID="ID_655174082" MODIFIED="1521433832327" TEXT="Assertions explizit machen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1521433833942" ID="ID_841958834" MODIFIED="1521696534947" TEXT="Factory-Closure abdecken">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1521696537522" ID="ID_1639668362" MODIFIED="1521696552680" TEXT="f&#xfc;r subclass-Singleton">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1521696547161" ID="ID_413219021" MODIFIED="1521696551785" TEXT="f&#xfc;r Test-Mock">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1521433852660" ID="ID_1581010755" MODIFIED="1521433857543" TEXT="l&#xe4;uft">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1522033106576" ID="ID_278956866" MODIFIED="1525124215463" TEXT="weitere Tests...">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      die von der alten DependencyFactory abh&#228;ngen
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#15b89e" DESTINATION="ID_278956866" ENDARROW="Default" ENDINCLINATION="-6;80;" ID="Arrow_ID_1985884795" SOURCE="ID_513111416" STARTARROW="None" STARTINCLINATION="-88;0;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1522033940685" ID="ID_447878554" MODIFIED="1522451818368" TEXT="media-access-mock-test.cpp">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1522033969821" ID="ID_1706164763" MODIFIED="1522451819727" TEXT="create-asset-test.cpp">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1522033977816" ID="ID_15822506" MODIFIED="1522451820734" TEXT="dependent-assets-test.cpp">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1522033997907" ID="ID_458476877" MODIFIED="1522451821737" TEXT="identity-of-assets-test.cpp">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1522034004825" ID="ID_1008413222" MODIFIED="1522451822955" TEXT="make-clip-test.cpp">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1522034011921" ID="ID_1809290651" MODIFIED="1522451823845" TEXT="ordering-of-assets-test.cpp">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1522034021470" ID="ID_466658369" MODIFIED="1522451824965" TEXT="builder-tool-test.cpp">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1522034029190" ID="ID_1418985959" MODIFIED="1522451825981" TEXT="testclip.cpp">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1522034035772" ID="ID_1574270320" MODIFIED="1522451827133" TEXT="mobject-interface-test.cpp">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1522034044775" ID="ID_984134175" MODIFIED="1522451828205" TEXT="mobject-ref-test.cpp">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1522034052507" ID="ID_1667049787" MODIFIED="1522451830519" TEXT="placement-hierarchy-test.cpp">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1520722155112" FOLDED="true" ID="ID_1512641426" MODIFIED="1563022719444" TEXT="Integration">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1521160755182" ID="ID_678080556" MODIFIED="1522428573233" TEXT="Umbenennen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1521160765588" ID="ID_1857896991" MODIFIED="1561827466133" TEXT="Konfig-Aufrufe anpassen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1522033578207" HGAP="18" ID="ID_252429770" MODIFIED="1525124215470" TEXT="Name f&#xfc;r Freunschaft+" VSHIFT="-20">
<icon BUILTIN="button_ok"/>
<node CREATED="1522033614743" ID="ID_1110690522" MODIFIED="1533608414101" TEXT="friend class lib::InstanceHolder&lt;TargetObj&gt;;">
<node CREATED="1522033621114" ID="ID_1807735289" MODIFIED="1522033629872" TEXT="nicht so sexy">
<icon BUILTIN="smiley-oh"/>
</node>
<node CREATED="1522035656233" ID="ID_678532992" MODIFIED="1522035672143" TEXT="und std::checked_deltet&lt;TargetObj&gt; auch noch">
<icon BUILTIN="smiley-angry"/>
</node>
</node>
<node CREATED="1522033635991" ID="ID_321432260" MODIFIED="1533608414102" TEXT="k&#xf6;nnte das Depend selber sein?">
<icon BUILTIN="button_cancel"/>
<node CREATED="1522388820751" ID="ID_721931573" MODIFIED="1522388962542" TEXT="ist doch ehr ein irref&#xfc;hrender Name">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...wenn man n&#228;mlicht Lumiera's L&#246;sung nicht genau kennt,
    </p>
    <p>
      k&#246;nnte sich das so lesen, als w&#228;re Depend&lt;X&gt; ein Mixin,
    </p>
    <p>
      welches einer Klasse <i>magisch</i>&#160;eine Dependency als protected-Feld zug&#228;nglich macht.
    </p>
    <p>
      Und dann w&#228;re es ziemlich pervasiv, sowas zum Freund zu erkl&#228;ren.
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#338800" CREATED="1522388857786" ID="ID_1151074517" MODIFIED="1522389011363">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <b>DependencyFactory</b>&#160;ist viel besser geeignet
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="forward"/>
</node>
</node>
<node COLOR="#338800" CREATED="1522110432870" ID="ID_1624172022" MODIFIED="1522558395556" TEXT="dann m&#xfc;&#xdf;ten alle Singletons an einer Stelle erzeugt werden">
<arrowlink COLOR="#5f8d94" DESTINATION="ID_1861060212" ENDARROW="Default" ENDINCLINATION="-566;0;" ID="Arrow_ID_319700222" STARTARROW="None" STARTINCLINATION="205;-440;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1522033193572" ID="ID_508353720" MODIFIED="1525124215471" TEXT="DependencyFactory">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1522033199726" ID="ID_314595550" MODIFIED="1522445880917" TEXT="engine-config.h">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1522033210086" ID="ID_638295060" MODIFIED="1522445879580" TEXT="demo-gui-roundtrip.cpp">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1522033231644" ID="ID_1199449420" MODIFIED="1522445878005" TEXT="config-facade.h">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1522033250207" ID="ID_322012422" MODIFIED="1522445876212" TEXT="asset/db.hpp">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1522033810436" ID="ID_1074903860" MODIFIED="1522445875127" TEXT="assetmanager.hpp">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1522033264576" ID="ID_1266730565" MODIFIED="1522445874063" TEXT="stypemanager.hpp">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1522033697671" ID="ID_522765001" MODIFIED="1522445872867" TEXT="diagnostic-buffer-provider.hpp">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1522033733342" ID="ID_711202966" MODIFIED="1522445945626" TEXT="fake-configrules.hpp">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1522033740662" ID="ID_1194803087" MODIFIED="1522445974621" TEXT="dummy-session-connection.hpp">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1522033747205" ID="ID_1409425930" MODIFIED="1522446086935" TEXT="scope-locator.hpp">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1522033753484" ID="ID_1909328069" MODIFIED="1522446281045" TEXT="sess-manager-impl.hpp">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1522033760875" ID="ID_1097826895" MODIFIED="1522446426755" TEXT="output-director.hpp">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1522034066988" ID="ID_513111416" MODIFIED="1522729509491" TEXT="alle Mock-Tests">
<arrowlink COLOR="#15b89e" DESTINATION="ID_278956866" ENDARROW="Default" ENDINCLINATION="-6;80;" ID="Arrow_ID_1985884795" STARTARROW="None" STARTINCLINATION="-88;0;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1521858774321" FOLDED="true" ID="ID_302686020" MODIFIED="1563022715568" TEXT="aufr&#xe4;umen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1521858779614" ID="ID_62114860" MODIFIED="1521928808594" TEXT="was ist depend4test?">
<icon BUILTIN="help"/>
<node CREATED="1521928764171" ID="ID_507085354" MODIFIED="1521928798462" TEXT="die alte Testmock-L&#xf6;sung">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1521928773218" ID="ID_1837242179" MODIFIED="1522451811958" TEXT="nach Schwenken aller Unit-Tests wegfallend">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1521858791160" ID="ID_1863623429" MODIFIED="1521929094523" TEXT="brauchen wir DelStash noch?">
<icon BUILTIN="help"/>
<node CREATED="1521929071984" ID="ID_529951044" MODIFIED="1521929092199" TEXT="wird vom Advice-System genutzt"/>
<node CREATED="1521929080591" ID="ID_192438703" MODIFIED="1521929097694" TEXT="bleibt weiterhin notwendig">
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#338800" CREATED="1521861040846" ID="ID_1297884815" MODIFIED="1531584013639" TEXT="brauchen wir singleton-ref?">
<icon BUILTIN="help"/>
<node CREATED="1521928945937" ID="ID_1967326849" MODIFIED="1521929017586" TEXT="die alte (partielle) L&#xf6;sung f&#xfc;r externe Services">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1521928963447" ID="ID_1493572426" MODIFIED="1521929015463" TEXT="ziemlich eng mit den Interface-Proxies verbandelt">
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#338800" CREATED="1521928978853" ID="ID_47671209" MODIFIED="1533608414103" TEXT="diese sollten auf Depend umgestellt werden">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1522635397309" ID="ID_1630981728" MODIFIED="1522635457722" TEXT="SessionCommandService">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1522635417932" ID="ID_826517015" MODIFIED="1522637771050" TEXT="DisplayService">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1522635433910" ID="ID_578198662" MODIFIED="1522637772168" TEXT="GuiNotification">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1522635450269" ID="ID_609069219" MODIFIED="1522637773412" TEXT="DummyPlayerService">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1521929007449" ID="ID_451474924" MODIFIED="1522637778777" TEXT="danach kann es weg">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1522635350488" ID="ID_1673980887" MODIFIED="1531584013642" TEXT="InterfaceProxy auch umstellen?">
<icon BUILTIN="help"/>
<node CREATED="1522635366958" ID="ID_70940233" MODIFIED="1522639464220" TEXT="w&#xe4;re jetzt ebenfalls denkbar">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1522638768719" ID="ID_1027038623" MODIFIED="1533608414104" TEXT="InterfaceFacadeLink">
<icon BUILTIN="button_ok"/>
<node CREATED="1522638777486" ID="ID_1287650379" MODIFIED="1522638916886" TEXT="serivce-Handle"/>
<node CREATED="1522638783717" ID="ID_357133685" MODIFIED="1522638790235" TEXT="umgeht das Interface-system">
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1522638791268" ID="ID_965518210" MODIFIED="1522638800868" TEXT="tja, lib::Depend macht das jetzt auch">
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1522638812521" ID="ID_893221959" MODIFIED="1561827466138" TEXT="nur ein einziges mal verwendet">
<icon BUILTIN="idea"/>
<node CREATED="1522638830367" ID="ID_792298822" MODIFIED="1522638835178" TEXT="PlayService"/>
<node CREATED="1522638837022" ID="ID_362446492" MODIFIED="1522638876050">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      den habe ich <b>nicht mehr</b>&#160;&#252;ber das Interface-System gemappt
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      weil mir das ganze C-gefrickel zu bl&#246;d geworden ist.
    </p>
    <p>
      Also hat das hier Prototyp-Charakter!
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1522638877744" ID="ID_1175146695" MODIFIED="1522712862995" TEXT="sollte prototypisch-sauber umgestellt werden">
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#338800" CREATED="1522712059423" ID="ID_885178924" MODIFIED="1561827466138" TEXT="komplett auf lib::Depend umstellen">
<icon BUILTIN="yes"/>
<node CREATED="1522712083659" ID="ID_1397345256" MODIFIED="1522712851333" TEXT="das hei&#xdf;t: nicht einmal mehr die Fiktion einer Trennung">
<icon BUILTIN="messagebox_warning"/>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1522712827196" ID="ID_61159385" MODIFIED="1522712843093" TEXT="ein sauber gebautes C++ - Inteface ist Trennung genug">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#338800" CREATED="1522713332342" ID="ID_1078169696" MODIFIED="1522713348764" TEXT="der OutputDirector steuert nun diesen Service">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1522638949038" ID="ID_1756362217" MODIFIED="1533608414106" TEXT="interfaceproxy - Accessor">
<linktarget COLOR="#68baaa" DESTINATION="ID_1756362217" ENDARROW="Default" ENDINCLINATION="32;1321;" ID="Arrow_ID_1797728654" SOURCE="ID_1293938610" STARTARROW="None" STARTINCLINATION="-288;-420;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1522638978298" ID="ID_253383763" MODIFIED="1522638984645" TEXT="der Proxy selber bleibt wohl bestehen"/>
<node CREATED="1522638985329" ID="ID_1803368145" MODIFIED="1522638997699" TEXT="der Accessor ist wieder genau ein Access-handle"/>
<node COLOR="#338800" CREATED="1522639336921" ID="ID_1332611153" MODIFIED="1522716025758" TEXT="kann komplett durch lib::Depend ersetzt werden">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1522639301526" ID="ID_1959793943" MODIFIED="1533608414107" TEXT="InterfaceProxy umschreiben">
<icon BUILTIN="button_ok"/>
<node CREATED="1522639313964" ID="ID_620355867" MODIFIED="1522639322758" TEXT="er soll sich in lib::Depend einklinken"/>
<node CREATED="1522639904986" ID="ID_568095840" MODIFIED="1522639917092" TEXT="etwas wie den Holder brauchen wir weiterhin"/>
<node CREATED="1522640047991" ID="ID_965836148" MODIFIED="1561827466140" TEXT="wie funktioniert&apos;s?">
<icon BUILTIN="info"/>
<node CREATED="1522640064852" ID="ID_1332360368" MODIFIED="1522640101606">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      der Interface-<i>Anbieter</i>&#160;implementiert einen konkreten Proxy
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1522640103854" ID="ID_904543861" MODIFIED="1522640126272" TEXT="dieser implementiert das Interface durch forwarden in das Interface-System"/>
<node CREATED="1522640127923" ID="ID_1407739777" MODIFIED="1522640137926" TEXT="dieser konkrete Proxy erbt von Holder"/>
<node CREATED="1522640145337" ID="ID_164293090" MODIFIED="1522640155883" TEXT="Holder ist auf das InstanceHandle getemplated"/>
<node CREATED="1522640166686" ID="ID_1356700504" MODIFIED="1522640234520" TEXT="der Holder instanziiert einen Statische Buffer f&#xfc;r den Proxy als Meyer&apos;s Singleton"/>
<node CREATED="1522640235676" FOLDED="true" ID="ID_1807301195" MODIFIED="1561827483842" TEXT="der Holder hat statische open/close">
<node CREATED="1522640247947" ID="ID_1019392965" MODIFIED="1522640254990" TEXT="diese erzeugen/zerst&#xf6;ren den Proxy"/>
<node CREATED="1522640255578" ID="ID_1613444847" MODIFIED="1522640262284" TEXT="und schalten jeweils den Accessor frei"/>
</node>
<node CREATED="1522640539147" ID="ID_1868996451" MODIFIED="1522640553196" TEXT="das InstanceHandle hat einen member FacadeLink"/>
<node CREATED="1522640554305" FOLDED="true" ID="ID_1413272395" MODIFIED="1561827483842" TEXT="dieser ist ein RAII-Handle f&#xfc;r den Proxy">
<node CREATED="1522640572550" ID="ID_1609430700" MODIFIED="1522640579377" TEXT="ctor macht openProxy"/>
<node CREATED="1522640579965" ID="ID_1368405474" MODIFIED="1522640584304" TEXT="dtor macht closeProxy"/>
</node>
<node CREATED="1522640586812" ID="ID_1577947298" MODIFIED="1522640604677" TEXT="das InstanceHandle ist Member in der Service-Implementierung"/>
</node>
<node COLOR="#338800" CREATED="1522640617752" ID="ID_312762900" MODIFIED="1561827466141" TEXT="Plan zum Umschreiben">
<icon BUILTIN="button_ok"/>
<node CREATED="1522640706787" FOLDED="true" ID="ID_1205995335" MODIFIED="1561827483842" TEXT="Idee-1">
<icon BUILTIN="button_cancel"/>
<node CREATED="1522640624319" ID="ID_448652627" MODIFIED="1522640718658" TEXT="den Holder umbauen">
<icon BUILTIN="info"/>
</node>
<node CREATED="1522640682079" ID="ID_263562862" MODIFIED="1522640697696" TEXT="er bekommt das DependInject::ServiceInstance-Handle"/>
<node CREATED="1522642839772" ID="ID_1686904789" MODIFIED="1522642870342" TEXT="OK aber nicht wirklich inspiriert">
<icon BUILTIN="smily_bad"/>
</node>
<node CREATED="1522642851003" ID="ID_1594923332" MODIFIED="1522642864813" TEXT="die verwirrende doppelte Indirektion bleibt"/>
</node>
<node CREATED="1522640758484" FOLDED="true" ID="ID_1080447818" MODIFIED="1561827483842" TEXT="Idee-2">
<icon BUILTIN="button_ok"/>
<node CREATED="1522640769123" ID="ID_628473221" MODIFIED="1522640801850" TEXT="InstanceHandle selber betreibt den Proxy als Service">
<icon BUILTIN="info"/>
</node>
<node CREATED="1522640803358" ID="ID_105578434" MODIFIED="1522640833493" TEXT="sein member FacadeLink wird die DependInject::ServiceInstance"/>
<node CREATED="1522640847752" ID="ID_951535107" MODIFIED="1522640870343" TEXT="Holder und Accessor f&#xe4;llt komplett weg">
<icon BUILTIN="idea"/>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1522642882751" FOLDED="true" ID="ID_1084473697" MODIFIED="1561827482934" TEXT="Gute Idee -- zukunftsf&#xe4;hig">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node CREATED="1522642898548" ID="ID_1128431348" MODIFIED="1522643775604" TEXT="InstanceHandle als Typ-Marker"/>
<node CREATED="1522642909755" ID="ID_880187850" MODIFIED="1522643775604" TEXT="damit vom eigentlichen Interface-System entkoppelt"/>
<node CREATED="1522642945462" ID="ID_1624080534" MODIFIED="1522643775604" TEXT="der konkrete Proxy k&#xf6;nnte per SWIG generiert werden"/>
</node>
<node CREATED="1522640881187" FOLDED="true" ID="ID_1419416708" MODIFIED="1561827482934" TEXT="Frage: wie konstruiert man einen Proxy">
<icon BUILTIN="help"/>
<node CREATED="1522641344691" ID="ID_1154911224" MODIFIED="1522641358813" TEXT="gegenw&#xe4;rtig: bekommt das InstanceHandle"/>
<node CREATED="1522641378263" ID="ID_1762905192" MODIFIED="1522641389641" TEXT="k&#xf6;nnte aber direkt eine Interface-Ref sein"/>
</node>
<node COLOR="#338800" CREATED="1522641405299" FOLDED="true" ID="ID_676190433" MODIFIED="1561827482934" TEXT="Proxy">
<icon BUILTIN="button_ok"/>
<node CREATED="1522641413586" FOLDED="true" ID="ID_1187300065" MODIFIED="1561827469160" TEXT="Anforderungen">
<linktarget COLOR="#86d29d" DESTINATION="ID_1187300065" ENDARROW="Default" ENDINCLINATION="-35;65;" ID="Arrow_ID_1735914452" SOURCE="ID_1212106242" STARTARROW="None" STARTINCLINATION="-135;-67;"/>
<node CREATED="1522641419769" ID="ID_1008132394" MODIFIED="1522641450457" TEXT="erbt vom Business-Interface"/>
<node CREATED="1522641451309" ID="ID_535550980" MODIFIED="1522641460551" TEXT="h&#xe4;llt Ref auf C-Interface"/>
<node CREATED="1522643854048" ID="ID_728832529" MODIFIED="1522643860851" TEXT="ist konstruierbar"/>
<node CREATED="1522643863687" ID="ID_1695236696" MODIFIED="1522643867842" TEXT="nicht kopierbar"/>
<node CREATED="1522641463059" ID="ID_487803821" MODIFIED="1522641471349" TEXT="lebt nur so lange das Interface offen ist"/>
</node>
<node COLOR="#0e0099" CREATED="1522649799320" FOLDED="true" ID="ID_1473698958" MODIFIED="1561827469161" TEXT="Ort der Definition">
<icon BUILTIN="help"/>
<node CREATED="1522696074226" FOLDED="true" ID="ID_1811816913" MODIFIED="1561827469140" TEXT="G&#xfc;terabw&#xe4;gung notwendig">
<node CREATED="1522696114852" ID="ID_550024261" MODIFIED="1522696125095" TEXT="Entkoppelung Serivce / Interface"/>
<node CREATED="1522696125987" ID="ID_387527816" MODIFIED="1522696135565" TEXT="Wartbarkeit des Binding-Codes"/>
<node CREATED="1522696172285" ID="ID_958011405" MODIFIED="1522696180623" TEXT="Komplexit&#xe4;t der Implementierung"/>
</node>
<node CREATED="1522697094565" FOLDED="true" ID="ID_407823709" MODIFIED="1561827469140" TEXT="Wertung">
<node CREATED="1522697098420" ID="ID_640748324" MODIFIED="1522697195082" TEXT="Entkoppelung ist verpflichtend f&#xfc;r Plug-Ins">
<icon BUILTIN="full-1"/>
</node>
<node CREATED="1522697126545" ID="ID_942767861" MODIFIED="1522697197851" TEXT="Wartbarkeit ist eine Frage der Binding-Technologie">
<icon BUILTIN="full-2"/>
</node>
<node CREATED="1522697141710" ID="ID_1821904602" MODIFIED="1522697200469" TEXT="Komplexit&#xe4;t ist eine Folge der f&#xfc;hrenden Belange">
<icon BUILTIN="full-3"/>
</node>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1522697220012" FOLDED="true" ID="ID_153609314" MODIFIED="1561827469140" TEXT="Fazit">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node CREATED="1522697230906" ID="ID_1495746023" MODIFIED="1522697253419" TEXT="alle Bindings sind vom Instance-Handle zu entkoppeln"/>
<node CREATED="1522697255215" ID="ID_1841184306" MODIFIED="1522697273416" TEXT="f&#xfc;r jedes Binding soll eine TranslationUnit frei w&#xe4;hlbar sein"/>
<node COLOR="#338800" CREATED="1522697350106" ID="ID_138544872" MODIFIED="1522724906505" TEXT="Technik zur Entkoppelung ben&#xf6;tigt">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#0e0099" CREATED="1522649812255" FOLDED="true" ID="ID_624985973" MODIFIED="1561827469161" STYLE="fork">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Modus der Definition
    </p>
    <p>
      und Instantiierung
    </p>
  </body>
</html></richcontent>
<edge COLOR="#808080" STYLE="bezier" WIDTH="thin"/>
<icon BUILTIN="help"/>
<node CREATED="1522697375430" FOLDED="true" ID="ID_712460375" MODIFIED="1561827469140" TEXT="Instantiierung">
<node COLOR="#338800" CREATED="1522697381141" ID="ID_855121513" MODIFIED="1522729342788" TEXT="gesteuert nur durch Lebensdauer des InstanceHandle">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1522697396899" ID="ID_1172830820" MODIFIED="1522729342788" TEXT="Code der Proxy-Instantiierung in separater TU">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1522697475153" FOLDED="true" ID="ID_520808733" MODIFIED="1561827469140" TEXT="Definition">
<node CREATED="1522697495790" ID="ID_1870975704" MODIFIED="1522729342788" TEXT="von Hand geschrieben">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#990000" CREATED="1522697613893" ID="ID_1829346202" MODIFIED="1522729342788" TEXT="Idealerweise lediglich eigene TU">
<font NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1522729001386" ID="ID_242747417" MODIFIED="1522733826161" TEXT="ist mir bisher nicht gelungen...">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...wir m&#252;ssen immer, f&#252;r jeden Proxy
    </p>
    <p>
      explizit eine Template-Instaniierung triggern, und zwar f&#252;r
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#b49ca6" DESTINATION="ID_1547993807" ENDARROW="Default" ENDINCLINATION="10;-59;" ID="Arrow_ID_1421481593" STARTARROW="None" STARTINCLINATION="323;-44;"/>
</node>
<node COLOR="#338800" CREATED="1522733831301" ID="ID_1741953995" MODIFIED="1522733846627" TEXT="Spezialisierung + explizite Template-Instanz">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1522697501541" ID="ID_793991584" MODIFIED="1522729342788" TEXT="Forwading-Implementation des Business-Interface">
<icon BUILTIN="info"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1522697646161" FOLDED="true" ID="ID_1020206021" MODIFIED="1561827469161" TEXT="Technologie">
<icon BUILTIN="button_ok"/>
<node CREATED="1522697675229" FOLDED="true" ID="ID_1605136526" MODIFIED="1561827469140" STYLE="fork" TEXT="Indirektion notwendig">
<node COLOR="#338800" CREATED="1522697690651" ID="ID_1244533717" MODIFIED="1522724892373" TEXT="Erzeugung">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1522697699297" ID="ID_891061833" MODIFIED="1522724893954" TEXT="Zerst&#xf6;rung">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1522697702521" ID="ID_1874387796" MODIFIED="1522724895488" TEXT="Zugriff auf Facade(Proxy)">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1522697743604" FOLDED="true" ID="ID_829814208" MODIFIED="1561827469141" TEXT="m&#xf6;gliche L&#xf6;sungen">
<icon BUILTIN="forward"/>
<node CREATED="1522697764121" FOLDED="true" ID="ID_809124789" MODIFIED="1522733895572" TEXT="PImpl">
<icon BUILTIN="button_cancel"/>
<node CREATED="1522698166313" ID="ID_904988310" MODIFIED="1522698184466" TEXT="facade::Link h&#xe4;lt einen smart-Ptr"/>
<node CREATED="1522698185030" ID="ID_53125514" MODIFIED="1522698208087" TEXT="auf die eigentliche DependInject::ServiceInstance"/>
<node CREATED="1522698222201" ID="ID_1341541114" MODIFIED="1522698292643" TEXT="facade::Link mu&#xdf; Methoden (ctor/dtor und operator) separat definieren"/>
<node CREATED="1522698295719" ID="ID_381014397" MODIFIED="1522698339173" TEXT="das ist effektiv die L&#xf6;sung &quot;separat definieren&quot; + separate Storage"/>
</node>
<node CREATED="1522697803923" FOLDED="true" ID="ID_238110365" MODIFIED="1522733895572" TEXT="freie Funktionen">
<icon BUILTIN="button_cancel"/>
<node CREATED="1522698092963" ID="ID_433421738" MODIFIED="1522698105987" TEXT="ist die bisher bestehende L&#xf6;sung">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1522698013526" ID="ID_712885279" MODIFIED="1522698021465" TEXT="k&#xf6;nnen selber komplett generisch sein"/>
<node CREATED="1522698022005" ID="ID_518407557" MODIFIED="1522698033855" TEXT="m&#xfc;ssen jeweils explizit von einem Template instantiiert werden"/>
<node CREATED="1522698034563" ID="ID_1793485859" MODIFIED="1522698091426">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      brauchen eigenen Zugriffs-Mechanismus auf ein <i>weiteres</i>&#160;Handle-Objekt
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1522698124263" ID="ID_475034985" MODIFIED="1522698140464" TEXT="das ist effektiv ein PImpl, das aber auch noch gemanaged werden mu&#xdf;"/>
<node CREATED="1522729383029" ID="ID_212849140" MODIFIED="1522729398784" TEXT="Vorteil: erzeugen &quot;nebenbei&quot; die Template-Instantiierung">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1522697773903" FOLDED="true" ID="ID_116063224" MODIFIED="1525124215489" TEXT="Methoden separat definieren">
<icon BUILTIN="forward"/>
<node CREATED="1522698343480" ID="ID_1548420276" MODIFIED="1522733895572" TEXT="daf&#xfc;r sorgen, da&#xdf; die Definitionen nur in der Proxy-Instantiierung (TU) sichtbar sind"/>
<node CREATED="1522698386810" ID="ID_1773412414" MODIFIED="1522733895572" TEXT="diese Definitionen m&#xfc;ssen externe Linkage bekommen (d.h. nicht inline)"/>
<node CREATED="1522698437036" ID="ID_1400832405" MODIFIED="1522733895572" TEXT="Erzeugung ist automatisch, sofern dort das InstanceHandle-Template instantiiert wird"/>
<node CREATED="1522698892532" ID="ID_584280618" MODIFIED="1522733895572" TEXT="Fazit: in einer TU mu&#xdf; (nur) eine explizite Template-Instantiierung erfolgen"/>
<node COLOR="#338800" CREATED="1522699050727" FOLDED="true" ID="ID_1923832821" MODIFIED="1522733895572" TEXT="wie auch immer">
<icon BUILTIN="button_ok"/>
<node CREATED="1522699055062" FOLDED="true" ID="ID_1759934312" MODIFIED="1525124215488" TEXT="Spezialisierung Proxy&lt;IHA&gt; + Template Instanz dieser">
<icon BUILTIN="forward"/>
<node CREATED="1522699225239" ID="ID_894223806" MODIFIED="1522733778687" TEXT="das ist praktisch die bestehende L&#xf6;sung">
<icon BUILTIN="info"/>
</node>
<node CREATED="1522699240684" ID="ID_600377865" MODIFIED="1522733778687" TEXT="wird dort nur indirekt &#xfc;ber die Instanz der freinen Funktionen ausgel&#xf6;et"/>
</node>
<node CREATED="1522699093017" FOLDED="true" ID="ID_471646453" MODIFIED="1522733778687" TEXT="Definition einer ungetemplateten Proxy-Klasse + CRTP">
<icon BUILTIN="button_cancel"/>
<node CREATED="1522699211944" ID="ID_1925086643" MODIFIED="1522699223507" TEXT="geht das &#xfc;berhaupt?">
<icon BUILTIN="help"/>
</node>
<node CREATED="1522702931486" ID="ID_2039076" MODIFIED="1522702953351" TEXT="CRTP-Klasse mu&#xdf; in allen anderen TU abstrakt bleiben"/>
<node CREATED="1522703026153" FOLDED="true" ID="ID_1981862674" MODIFIED="1525124215488" TEXT="M&#xf6;glichkeiten">
<icon BUILTIN="help"/>
<node CREATED="1522703031009" ID="ID_1131804681" MODIFIED="1522703033909" TEXT="PImpl"/>
<node CREATED="1522703258857" ID="ID_1322673347" MODIFIED="1522703371845" TEXT="Service-Impl (=Proxy)"/>
<node CREATED="1522703996867" FOLDED="true" ID="ID_690162584" MODIFIED="1525124215488" TEXT="Proxy ist Subklasse">
<node CREATED="1522704019688" ID="ID_1004073220" MODIFIED="1522704033386" TEXT="mu&#xdf; per Lambda erzeugt werden"/>
<node CREATED="1522704033950" ID="ID_1313113320" MODIFIED="1522704041464" TEXT="mu&#xdf; virtuellen dtor haben"/>
<node CREATED="1522704194912" ID="ID_317190411" MODIFIED="1522704592454" TEXT="Problem: konkrete Proxy-Klasse mu&#xdf; in ServiceInstance::activate">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...oder sogar den ctor, das ist egal --
    </p>
    <p>
      denn das Problem ist, ctor (oder activate) werden aus <i>demjenigen</i>&#160;Kontext heraus aufgerufen,
    </p>
    <p>
      der die Service-Implementierung startet und damit die Erzeugung des Proxy triggert.
    </p>
    <p>
      
    </p>
    <p>
      Dieser Kontext darf den konkreten Typ des Proxy aber genau nicht kennen (wegen Entkopplung)&#8230;
    </p>
    <p>
      Genau aus diesem Grunde leiten wir ja ctor/dtor der ServiceInstance(Handle)-Klasse in eine ander TU um.
    </p>
    <p>
      
    </p>
    <p>
      <b>Problem</b>&#160;ist nun, diese umgeleiteten Funktionsdefinitionen k&#246;nnen <i>nur einen Typ</i>&#160;(Template-Parameter) bekommen, und dieser Typ&#160;wiederum mu&#223; -- zumindest als abstrakter Platzhalter -- in allen TU sichtbar sein.
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1522709471957" ID="ID_170352206" MODIFIED="1522709540572" TEXT="scheint nicht l&#xf6;sbar">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="stop-sign"/>
</node>
</node>
</node>
<node CREATED="1522709550450" ID="ID_1653470424" MODIFIED="1522733671833" TEXT="konnte keine ganbare L&#xf6;sung finden">
<linktarget COLOR="#4a2d79" DESTINATION="ID_1653470424" ENDARROW="Default" ENDINCLINATION="-1;58;" ID="Arrow_ID_362703203" SOURCE="ID_1800542023" STARTARROW="None" STARTINCLINATION="109;-22;"/>
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node CREATED="1522709579398" FOLDED="true" ID="ID_1445259032" MODIFIED="1525124215488" TEXT="kann man spezialisieren und zugleich Instantiieren?">
<icon BUILTIN="help"/>
<node CREATED="1522720815569" ID="ID_1906873483" MODIFIED="1522733778687" TEXT="nein"/>
<node CREATED="1522720818625" ID="ID_693558811" MODIFIED="1522733778687" TEXT="wie schade">
<icon BUILTIN="smily_bad"/>
</node>
</node>
</node>
<node CREATED="1522724948516" FOLDED="true" ID="ID_1547993807" MODIFIED="1525124215488" TEXT="explizite Instantiierung notwendig">
<linktarget COLOR="#b49ca6" DESTINATION="ID_1547993807" ENDARROW="Default" ENDINCLINATION="10;-59;" ID="Arrow_ID_1421481593" SOURCE="ID_242747417" STARTARROW="None" STARTINCLINATION="323;-44;"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1522724966777" ID="ID_650754221" MODIFIED="1522733895572" TEXT="h&#xe4;&#xdf;lich und umst&#xe4;ndlich"/>
<node CREATED="1522724973625" ID="ID_1016558302" MODIFIED="1522733895572" TEXT="Code dupliziert"/>
<node COLOR="#338800" CREATED="1522724977440" FOLDED="true" ID="ID_686663661" MODIFIED="1525124215488" TEXT="bessere L&#xf6;sung?">
<icon BUILTIN="button_ok"/>
<node CREATED="1522733470671" ID="ID_1296497133" MODIFIED="1522733895572" TEXT="nicht wirklich....">
<icon BUILTIN="smily_bad"/>
</node>
<node CREATED="1522733478510" ID="ID_1800542023" MODIFIED="1522733895572" TEXT="Proxy erbt per CRTP geht nicht">
<arrowlink COLOR="#4a2d79" DESTINATION="ID_1653470424" ENDARROW="Default" ENDINCLINATION="-1;58;" ID="Arrow_ID_362703203" STARTARROW="None" STARTINCLINATION="109;-22;"/>
</node>
<node CREATED="1522733542453" ID="ID_239191861" MODIFIED="1522733895572" TEXT="Proxy-Instantiierung triggert nicht InstanceHandle">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      obwohl es das sollte.
    </p>
    <p>
      Aber anscheinend macht der Compiler das nur partiell,
    </p>
    <p>
      denn es wird ja nur eine const&amp; an den ctor von Binding &#252;bergeben.
    </p>
    <p>
      
    </p>
    <p>
      Allerdings erscheint es mir nicht sinnvoll, hier mit Tricksereien zu arbeiten!
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1522733618506" ID="ID_1873321000" MODIFIED="1522733895572" TEXT="man k&#xf6;nnte stattdesen Link instantiieren">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1522733629233" ID="ID_424753876" MODIFIED="1522733895572" TEXT="Code-Duplizierung durch Typedefs beseitigt">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1522733866272" ID="ID_762156149" MODIFIED="1522734019934" TEXT="aktuelle L&#xf6;sung erscheint ad&#xe4;quat">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      sie ist zwar nicht sch&#246;n -- aber was ist an einem Interface-Binding schon &quot;sch&#246;n&quot;?
    </p>
    <p>
      
    </p>
    <p>
      Sie ist hinreichend wartbar, sofern man sie per copy-n-pate vervielf&#228;ltigt.
    </p>
    <p>
      Es w&#228;re sogar denkbar, in diesen Rump eine generierte Proxy-Klasse zu kleben,
    </p>
    <p>
      da nur wenige Variable erstetzt werden m&#252;&#223;ten.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1522649565217" ID="ID_1192073765" MODIFIED="1561827466150" TEXT="Probleme bei der Realisierung">
<icon BUILTIN="button_ok"/>
<node CREATED="1522649583511" ID="ID_709785832" MODIFIED="1522649600993" TEXT="Instancehandle mu&#xdf; jetzt die Proxy-Implementierung sehen"/>
<node CREATED="1522649601916" FOLDED="true" ID="ID_114261035" MODIFIED="1561827483842" TEXT="die beiden Seiten des Bindings sind damit fest verkoppelt">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      das ist ein konzeptionelles Problem.
    </p>
    <p>
      Eigentlich m&#246;chte man durch ein Interface Entkoppelung erreichen.
    </p>
    <p>
      
    </p>
    <p>
      Nun ist es so, da&#223;
    </p>
    <ul>
      <li>
        das Binding BusinessInterface -&gt; InterfaceSystem
      </li>
      <li>
        InterfaceSystem -&gt; Service-Implementierung
      </li>
    </ul>
    <p>
      an der gleichen Stelle erfolgen
    </p>
  </body>
</html></richcontent>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1522649701166" ID="ID_444680334" MODIFIED="1522649709173" TEXT="knock-out f&#xfc;r das GUI">
<icon BUILTIN="flag-pink"/>
</node>
<node CREATED="1522649711165" ID="ID_1651731483" MODIFIED="1522649729254" TEXT="erzeugt zyklische ABI-Abh&#xe4;ngigkeiten">
<icon BUILTIN="broken-line"/>
</node>
</node>
<node COLOR="#338800" CREATED="1522649763142" ID="ID_1212106242" MODIFIED="1522649902016" TEXT="aber der Rest w&#xfc;rde sch&#xf6;n funktionieren">
<arrowlink COLOR="#86d29d" DESTINATION="ID_1187300065" ENDARROW="Default" ENDINCLINATION="-35;65;" ID="Arrow_ID_1735914452" STARTARROW="None" STARTINCLINATION="-135;-67;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="ksmiletris"/>
</node>
<node COLOR="#338800" CREATED="1522709629935" ID="ID_151551561" MODIFIED="1522724915985" TEXT="L&#xf6;sung zum Entkoppeln der Proxy-Definition">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1522709654308" ID="ID_1059248114" MODIFIED="1561827466151" TEXT="bestehenden Code umschreiben">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1522709669498" FOLDED="true" ID="ID_9288802" MODIFIED="1561827483842" TEXT="alle bestehenden Proxies">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1522635397309" ID="ID_590180071" MODIFIED="1522724921600" TEXT="SessionCommandService">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1522635417932" ID="ID_1711611771" MODIFIED="1522724922888" TEXT="DisplayService">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1522635433910" ID="ID_444280759" MODIFIED="1522724924183" TEXT="GuiNotification">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1522635450269" ID="ID_1963184158" MODIFIED="1522724925717" TEXT="DummyPlayerService">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1522709729297" FOLDED="true" ID="ID_1293938610" MODIFIED="1561827483842" TEXT="Facade-Accessoren auf lib::Depend umstellen">
<arrowlink COLOR="#68baaa" DESTINATION="ID_1756362217" ENDARROW="Default" ENDINCLINATION="32;1321;" ID="Arrow_ID_1797728654" STARTARROW="None" STARTINCLINATION="-288;-420;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1522635397309" ID="ID_883916833" MODIFIED="1522710489037" TEXT="SessionCommand">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1522635417932" ID="ID_245882411" MODIFIED="1522710526832" TEXT="Display(Facade)">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1522635433910" ID="ID_1703058328" MODIFIED="1522710636764" TEXT="GuiNotification">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1522635450269" ID="ID_193152767" MODIFIED="1522710900353" TEXT="DummyPlayer">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1522711261733" FOLDED="true" ID="ID_1953483085" MODIFIED="1561827482934" TEXT="Play(Facade)">
<icon BUILTIN="button_ok"/>
<node CREATED="1522711269948" ID="ID_153188000" MODIFIED="1522711287118" TEXT="h&#xe4;ngt aber an dem InterfaceFacadeLink">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1522709748015" ID="ID_44849308" MODIFIED="1522717910945" TEXT="bestehenden Accessor zur&#xfc;ckbauen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1522709756798" ID="ID_1024028685" MODIFIED="1522717913716" TEXT="Header umorganisieren">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1522709763388" ID="ID_778622044" MODIFIED="1522728945187" TEXT="Doxygen-Doku aktualisieren">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1522033564057" FOLDED="true" ID="ID_1294295502" MODIFIED="1563022708690" TEXT="Nacharbeiten">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1522454023039" ID="ID_1828121921" MODIFIED="1525124215498" TEXT="Folge-Probleme">
<icon BUILTIN="button_ok"/>
<node CREATED="1522454040500" ID="ID_1674154774" MODIFIED="1533608414118" TEXT="Architektur">
<node CREATED="1522454061873" ID="ID_1012349550" MODIFIED="1561827466157" TEXT="unklare statische Abh&#xe4;ngigkeiten">
<node CREATED="1522454074760" FOLDED="true" ID="ID_1884600051" MODIFIED="1561827483842" TEXT="ClassLock">
<linktarget COLOR="#8195ac" DESTINATION="ID_1884600051" ENDARROW="Default" ENDINCLINATION="-604;0;" ID="Arrow_ID_648096672" SOURCE="ID_1287049121" STARTARROW="None" STARTINCLINATION="175;-122;"/>
<node CREATED="1522454289393" ID="ID_860238388" MODIFIED="1522454304036" TEXT="verwendet ein Meyers Singleton"/>
<node CREATED="1522454304576" ID="ID_692796029" MODIFIED="1522454312395" TEXT="und damit statische Init"/>
</node>
<node COLOR="#338800" CREATED="1522454152941" FOLDED="true" ID="ID_1003385410" MODIFIED="1561827483843" TEXT="lib::Depend">
<arrowlink COLOR="#487bba" DESTINATION="ID_399844845" ENDARROW="Default" ENDINCLINATION="237;509;" ID="Arrow_ID_1393532861" STARTARROW="None" STARTINCLINATION="733;-537;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1522454265837" ID="ID_405478687" MODIFIED="1522454275983" TEXT="braucht ClassLock bis zum bitteren Ende"/>
<node CREATED="1522454276667" ID="ID_1140029140" MODIFIED="1522454286502" TEXT="selbst wenn es nur darum geht, einen Fehler zu produzieren"/>
<node COLOR="#338800" CREATED="1522557434769" ID="ID_726345477" MODIFIED="1522557447919" TEXT="habe beide nun mit einem ZombieCheck gesch&#xfc;tzt">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1522557456894" ID="ID_627428103" MODIFIED="1522557498811">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      ...und lib::Depend so umarrangiert,
    </p>
    <p>
      da&#223; re-entrant-Aufrufe w&#228;hrend dem dtor erlaubt sind
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1522454146645" FOLDED="true" ID="ID_818640049" MODIFIED="1563022698843" TEXT="Advice-System">
<arrowlink DESTINATION="ID_1843874673" ENDARROW="Default" ENDINCLINATION="-398;-418;" ID="Arrow_ID_908178206" STARTARROW="None" STARTINCLINATION="1004;0;"/>
<linktarget COLOR="#7a8fa9" DESTINATION="ID_818640049" ENDARROW="Default" ENDINCLINATION="-384;-20;" ID="Arrow_ID_1167388040" SOURCE="ID_1527905225" STARTARROW="None" STARTINCLINATION="309;-116;"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1522454318558" ID="ID_65008261" MODIFIED="1522454338494" TEXT="braucht sicht selbst beim Runterfahren">
<icon BUILTIN="smiley-oh"/>
</node>
<node CREATED="1522455443139" FOLDED="true" ID="ID_57531429" MODIFIED="1561827482935" TEXT="Pfad...">
<node CREATED="1522455359030" ID="ID_1748706225" MODIFIED="1522455463636" TEXT="~AdviceSystem"/>
<node CREATED="1522455363486" ID="ID_1789501340" MODIFIED="1522455366137" TEXT="DelStash"/>
<node CREATED="1522455375636" ID="ID_890323979" MODIFIED="1522455397132" TEXT="Provision&lt;X&gt;::releaseAdviceData"/>
<node CREATED="1522455412007" ID="ID_1942444713" MODIFIED="1522455423217" TEXT="AdviceLink::releaseBuffer()"/>
<node CREATED="1522455439131" ID="ID_1655592437" MODIFIED="1522455440982" TEXT="aSys().releaseBuffer(buff, siz)"/>
<node CREATED="1522455488220" ID="ID_817525837" MODIFIED="1522455490927" TEXT="Tadaaaa!"/>
</node>
<node COLOR="#338800" CREATED="1522557127755" FOLDED="true" ID="ID_842175492" MODIFIED="1561827482935" TEXT="das ist grenzwertig">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1522557139721" ID="ID_1248571887" MODIFIED="1522557151307" TEXT="es handelt sich um eine re-entrance">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1522557152331" ID="ID_1546957816" MODIFIED="1522557415704">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      so wie das Advice-System geschrieben ist,
    </p>
    <p>
      kann und mu&#223; man das &quot;durchwinken&quot;
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      denn grunds&#228;tzlich ist das ganze Advice-System bewu&#223;t &quot;billig&quot; implementiert;
    </p>
    <p>
      Verbesserungen sp&#228;ter willkommen....
    </p>
    <p>
      
    </p>
    <p>
      Der Destructor r&#228;umt alle AdviceProvisions weg.
    </p>
    <p>
      Diese werden in einen statischen Kontext geschoben, damit sie unabh&#228;ngig vom Advisor weiterleben.
    </p>
    <p>
      Daher m&#252;ssen wir aus diesem statischen Kontext heraus wieder zur&#252;ck in's AdviceSystem kommen.
    </p>
    <p>
      
    </p>
    <p>
      Alternative w&#228;re, eine komplett spezielle De-Allokations-Routine zu schreiben,
    </p>
    <p>
      welche die Datenstrukturen direkt traversiert und freigibt, und dann die Provisions
    </p>
    <p>
      abfischt und ebenfalls alles wegwirft. Machbar, erscheint aber im Mi&#223;verh&#228;ltnis
    </p>
    <p>
      zum Level der gesamten &#252;brigen Implementierung (welche n&#228;mlich um einiges
    </p>
    <p>
      elaborierter sein k&#246;nnte, incl. Verwendung von Atomics und einem besseren
    </p>
    <p>
      Memory-Management.
    </p>
    <p>
      
    </p>
    <p>
      Aber wie gesagt, das ganze Advice-System ist eine Skizze
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
</node>
<node CREATED="1522454344402" ID="ID_1823464628" MODIFIED="1561827466161" TEXT="Singletons">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1522454381692" ID="ID_1785213595" MODIFIED="1522454381692" TEXT="wurden bisher praktisch gar nicht runtergefahren"/>
<node CREATED="1522454384941" FOLDED="true" ID="ID_1849825340" MODIFIED="1561827483843" TEXT="zwar pro-Forma schon">
<icon BUILTIN="idea"/>
<node CREATED="1522454395011" ID="ID_1147769502" MODIFIED="1522454420012" TEXT="aber die Storage blieb stehen"/>
<node CREATED="1522454407666" ID="ID_284304272" MODIFIED="1522454412948" TEXT="und so ist es nie aufgefallen"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1522455572377" FOLDED="true" ID="ID_995968267" MODIFIED="1561827483843" TEXT="Policy ist klar">
<icon BUILTIN="yes"/>
<node CREATED="1522455589150" ID="ID_720232530" MODIFIED="1522455637085" TEXT="Kein Service darf aus dem dtor eine Dependency ziehen!">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1522455619290" ID="ID_1340742552" MODIFIED="1522455634839" TEXT="im Zweifelsfalle ist ON_SHUTDOWN zu verwenden!">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node COLOR="#990000" CREATED="1522454132616" ID="ID_1054219137" MODIFIED="1561827466162" TEXT="brauchen wir einen Basis-Layer?">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1522455499003" ID="ID_323278727" MODIFIED="1522547122649" TEXT="vermutlich ja">
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#338800" CREATED="1522547104318" ID="ID_1075985632" MODIFIED="1522547119436" TEXT="nein besser nicht">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1522455507937" FOLDED="true" ID="ID_1029197196" MODIFIED="1561827483843" TEXT="f&#xfc;r wen?">
<linktarget COLOR="#512c6f" DESTINATION="ID_1029197196" ENDARROW="Default" ENDINCLINATION="-299;0;" ID="Arrow_ID_845867084" SOURCE="ID_22169859" STARTARROW="None" STARTINCLINATION="1419;0;"/>
<node CREATED="1522455514361" ID="ID_1288380071" MODIFIED="1522455518148" TEXT="ClassLock"/>
<node CREATED="1522455519448" ID="ID_77194477" MODIFIED="1522455527347" TEXT="Application-Object?"/>
<node CREATED="1522455527838" ID="ID_483432379" MODIFIED="1522455530186" TEXT="Nobug?"/>
</node>
<node CREATED="1522455653525" FOLDED="true" ID="ID_1606025045" MODIFIED="1561827483843" TEXT="wie?">
<node CREATED="1522455656181" FOLDED="true" ID="ID_1878626771" MODIFIED="1561827482935" TEXT="Schwartz-Counter">
<linktarget COLOR="#b12341" DESTINATION="ID_1878626771" ENDARROW="Default" ENDINCLINATION="166;90;" ID="Arrow_ID_1822166267" SOURCE="ID_695551107" STARTARROW="None" STARTINCLINATION="385;46;"/>
<icon BUILTIN="stop-sign"/>
<node CREATED="1522557054805" ID="ID_618759088" MODIFIED="1522557106032" TEXT="nein, besser gleich ganz wegwerfen">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1522557070059" ID="ID_286421321" MODIFIED="1522557102288" TEXT="Meyer&apos;s Singleton + ZombieCheck">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1522455662692" ID="ID_402293175" MODIFIED="1522455685565" TEXT="und zwar richtig implementiert">
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1522455672003" ID="ID_1633730200" MODIFIED="1522455677646" TEXT="mit Atomic"/>
</node>
</node>
</node>
<node CREATED="1522454162939" ID="ID_867445269" MODIFIED="1533608414127" TEXT="Subklassen-Konfig">
<node CREATED="1522454176426" ID="ID_964380935" MODIFIED="1522454188772" TEXT="mu&#xdf; jetzt in den Provider-Scope"/>
<node CREATED="1522454189359" ID="ID_1178508604" MODIFIED="1522454200306" TEXT="dieser ist meist nicht so offensichtlich klar"/>
<node COLOR="#338800" CREATED="1522454200902" ID="ID_1367664577" MODIFIED="1561827466164" TEXT="ConfigRules">
<linktarget COLOR="#8fbeb3" DESTINATION="ID_1367664577" ENDARROW="Default" ENDINCLINATION="-268;0;" ID="Arrow_ID_1637829369" SOURCE="ID_1789329281" STARTARROW="None" STARTINCLINATION="26;-32;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1522454211157" ID="ID_1826864875" MODIFIED="1522454217672" TEXT="Subclass MockConfigRules"/>
<node CREATED="1522454218267" ID="ID_1085608506" MODIFIED="1522628399085" TEXT="in die ConfigManager-Implementierung verelgt"/>
<node CREATED="1522454239657" ID="ID_746728834" MODIFIED="1522628416235" TEXT="passiert nun ON_GLOBAL_INIT"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1522018567685" ID="ID_1619059123" MODIFIED="1525124215499" TEXT="Frage: was ist mit AppState?">
<icon BUILTIN="help"/>
<node CREATED="1522018581283" ID="ID_132446315" MODIFIED="1533608414128" TEXT="macht es Sinn, das via Depend zug&#xe4;nglich zu machen?">
<icon BUILTIN="forward"/>
<node CREATED="1522630308841" ID="ID_1688145864" MODIFIED="1522630349227" TEXT="Ja">
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1522630312898" ID="ID_23962719" MODIFIED="1522630325291" TEXT="Wird zwar von lumiera::Config hochgezogen"/>
<node CREATED="1522630325999" ID="ID_976681959" MODIFIED="1522630344624" TEXT="...welches aber selber schon per lib::Depend instantiiert wird"/>
</node>
<node CREATED="1522018593697" ID="ID_1730197219" MODIFIED="1522018623361" TEXT="ist bisher ein Meyer&apos;s Singleton"/>
<node CREATED="1522018623861" ID="ID_1923633930" MODIFIED="1522018631776" TEXT="aber lebt bereits im globalen Speicher"/>
<node CREATED="1522630364690" ID="ID_1442746804" MODIFIED="1522630460073" TEXT="ABER: LifecycleRegistry mu&#xdf; Meyer&apos;s Singleton bleiben">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...weil Nobug-Init ON_BASIC_INIT braucht,
    </p>
    <p>
      und lib::Depend wiederum von Nobug-Init abh&#228;ngig ist.
    </p>
    <p>
      
    </p>
    <p>
      Also w&#252;rde DependencyFactory&lt;LifecycleRegistry&gt; aufgerufen,
    </p>
    <p>
      bevor es statisch initialisiert sein kann...
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="clanbomber"/>
</node>
<node COLOR="#338800" CREATED="1522630297899" ID="ID_365546675" MODIFIED="1522630305978" TEXT="umgestellt auf lib::Depend">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1521433694233" ID="ID_1951071885" MODIFIED="1525124215500" STYLE="fork" TEXT="Nebenbei: Schwartz-Counter in ClassLock abl&#xf6;sen">
<arrowlink COLOR="#735d7e" DESTINATION="ID_715588139" ENDARROW="Default" ENDINCLINATION="1087;0;" ID="Arrow_ID_1384015103" STARTARROW="None" STARTINCLINATION="-84;86;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1521433723421" ID="ID_1813539288" MODIFIED="1522557016686" TEXT="Meyers Singleton ist seit C++11 wasserdicht">
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1521433748650" ID="ID_1831581678" MODIFIED="1522557016686">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      und heute w&#252;rde ich den Code <i>so</i>&#160;nicht mehr schreiben
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="smiley-oh"/>
</node>
<node COLOR="#734e81" CREATED="1522451891933" ID="ID_695551107" MODIFIED="1522558416047" TEXT="...und er ist jetzt sogar kamputt">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      genauer:
    </p>
    <p>
      er ist nicht kaputt, sondern hat sehr gut funktioniert und diesen Unfug festgestellt.
    </p>
    <p>
      N&#228;mlich da&#223; unser lib::Depend ein ClassLock braucht, um einen Fehler zu melden.
    </p>
    <p>
      Das ist, f&#252;r sich betrachtet, eigentlich unvermeidlich, aber verlangt dann auch
    </p>
    <p>
      nach einer grundlegenden L&#246;sung. D.h. einem <i>echten</i>&#160;Schwartz-Counter.
    </p>
    <p>
      Nicht einem, der in einem Meyer's Singleton steckt...
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#b12341" DESTINATION="ID_1878626771" ENDARROW="Default" ENDINCLINATION="166;90;" ID="Arrow_ID_1822166267" STARTARROW="None" STARTINCLINATION="385;46;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1521160792856" FOLDED="true" ID="ID_367925099" MODIFIED="1563022707025" TEXT="System l&#xe4;uft wie zuvor">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1522457229331" ID="ID_1130290094" MODIFIED="1522632193064" TEXT="Test-Suite">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1522457238099" ID="ID_1287049121" MODIFIED="1522597557304" TEXT="ClassLock schl&#xe4;gt Alarm">
<arrowlink COLOR="#8195ac" DESTINATION="ID_1884600051" ENDARROW="Default" ENDINCLINATION="-604;0;" ID="Arrow_ID_648096672" STARTARROW="None" STARTINCLINATION="175;-122;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1522457377743" ID="ID_157728376" MODIFIED="1522628243174" TEXT="DefsManager_test">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1522630494375" ID="ID_787599487" MODIFIED="1533608414128" TEXT="PlacementHierarchy_test">
<icon BUILTIN="button_ok"/>
<node CREATED="1522632143740" ID="ID_1275561066" MODIFIED="1522632156461" TEXT="&lt;atomic&gt; includiert stdbool.h"/>
<node CREATED="1522632157338" ID="ID_4818535" MODIFIED="1522632168332" TEXT="und der macht #define false false"/>
<node CREATED="1522632168896" ID="ID_547171089" MODIFIED="1522632176011" TEXT="der Test hat #ifdef false"/>
<node CREATED="1522632177543" ID="ID_319056454" MODIFIED="1522632185383" TEXT="Hurgha">
<icon BUILTIN="smiley-oh"/>
</node>
</node>
<node COLOR="#338800" CREATED="1522632197852" ID="ID_453425962" MODIFIED="1522632208940" TEXT="GR&#xdc;&#xdc;&#xdc;&#xdc;&#xdc;&#xdc;&#xdc;N">
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node CREATED="1522457303466" ID="ID_28369083" MODIFIED="1522597732907" TEXT="Advice-System verpfuscht">
<icon BUILTIN="button_cancel"/>
<node CREATED="1522457315568" ID="ID_1527905225" MODIFIED="1522628482100" TEXT="Policy-Verletzung">
<arrowlink COLOR="#7a8fa9" DESTINATION="ID_818640049" ENDARROW="Default" ENDINCLINATION="-384;-20;" ID="Arrow_ID_1167388040" STARTARROW="None" STARTINCLINATION="309;-116;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#338800" CREATED="1522597569180" ID="ID_602663488" MODIFIED="1522597663372" TEXT="naja... nicht sch&#xf6;n aber OK">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...es ruft sich selbst rekursiv auf, via Depend&lt;AdviceSystem&gt;
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1522597604367" ID="ID_1036644185" MODIFIED="1522597629034" TEXT="Alternative w&#xe4;re aufwendig">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...n&#228;mlich eine ganz spezielle, dedzierte Aufr&#228;um-Routine schreiben
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1522597631464" ID="ID_1772415968" MODIFIED="1522597644885" TEXT="...und dazu ist das Advice-System zu experimentell"/>
</node>
<node COLOR="#338800" CREATED="1522457395749" ID="ID_1439882391" MODIFIED="1522628434994" TEXT="Subclass-Singleton">
<icon BUILTIN="button_ok"/>
<node CREATED="1522457406523" ID="ID_715525481" MODIFIED="1522628426366" TEXT="wer ist schuld?">
<icon BUILTIN="help"/>
</node>
<node COLOR="#338800" CREATED="1522628298319" ID="ID_1789329281" MODIFIED="1522628490770" TEXT="ein Nebeneffekt der Konfiguration f&#xfc;r ConfigResolver">
<arrowlink COLOR="#8fbeb3" DESTINATION="ID_1367664577" ENDARROW="Default" ENDINCLINATION="-268;0;" ID="Arrow_ID_1637829369" STARTARROW="None" STARTINCLINATION="26;-32;"/>
<icon BUILTIN="info"/>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1515975745485" ID="ID_132088730" MODIFIED="1515976000614" TEXT="Konzept">
<icon BUILTIN="info"/>
<node CREATED="1515975966400" ID="ID_1072605894" MODIFIED="1515975968459" TEXT="man hat ein statisches Front-End, d.h. by-name access"/>
<node CREATED="1515975976014" ID="ID_842891656" MODIFIED="1515975977346" TEXT="hinter dem liegt eine Factory"/>
<node CREATED="1515975984502" ID="ID_65481597" MODIFIED="1515975985545" TEXT="die Instanz kann von innen her wieder geschlossen werden"/>
<node CREATED="1515975995564" ID="ID_1901876074" MODIFIED="1515975996512" TEXT="wenn geschlossen, dann Fehler werfen"/>
</node>
</node>
<node CREATED="1515976632168" ID="ID_346073460" MODIFIED="1515976637675" TEXT="Verdrahtung">
<node CREATED="1522738962198" ID="ID_66084476" MODIFIED="1522738989254" TEXT="per ctor-Parameter bei Services"/>
<node CREATED="1522738949663" ID="ID_1169687839" MODIFIED="1522738958530" TEXT="per closure"/>
<node CREATED="1522738993353" ID="ID_134172826" MODIFIED="1522739006692" TEXT="per rekursivem Depend + Lifecycle"/>
</node>
</node>
<node CREATED="1515975646354" ID="ID_1049835373" MODIFIED="1561827466167" TEXT="Singleton">
<icon BUILTIN="idea"/>
<node COLOR="#338800" CREATED="1515976424292" ID="ID_357830540" MODIFIED="1515976443809" TEXT="meist gut genug">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1515976448409" FOLDED="true" ID="ID_775751243" MODIFIED="1563022778225" TEXT="Probleme">
<node CREATED="1515976471557" ID="ID_1775190424" MODIFIED="1515976477336" TEXT="Lebenszyklus tricky"/>
<node CREATED="1515976478852" ID="ID_443463816" MODIFIED="1515976504093" TEXT="API / Subklasse"/>
<node CREATED="1515976504801" ID="ID_1385819621" MODIFIED="1515976664450" TEXT="Test/Mocking">
<arrowlink COLOR="#c1a9ac" DESTINATION="ID_896967532" ENDARROW="Default" ENDINCLINATION="46;-116;" ID="Arrow_ID_618937075" STARTARROW="None" STARTINCLINATION="-41;116;"/>
</node>
<node CREATED="1515976514776" ID="ID_1223148072" MODIFIED="1515976595813" TEXT="Themen vermischt">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1515976519135" ID="ID_39360808" MODIFIED="1515976524490" TEXT="Service-Zugang"/>
<node CREATED="1515976525150" ID="ID_55041678" MODIFIED="1515976530322" TEXT="on-demand creation"/>
<node CREATED="1515976545956" ID="ID_1469471746" MODIFIED="1515976549743" TEXT="Lebenszyklus"/>
<node CREATED="1515976550427" ID="ID_321725023" MODIFIED="1515976560934" TEXT="Konfiguration / Parametrisierung"/>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1515975600368" ID="ID_896967532" MODIFIED="1515976656307" TEXT="f&#xfc;r Unit-Tests">
<linktarget COLOR="#c1a9ac" DESTINATION="ID_896967532" ENDARROW="Default" ENDINCLINATION="46;-116;" ID="Arrow_ID_618937075" SOURCE="ID_1385819621" STARTARROW="None" STARTINCLINATION="-41;116;"/>
<node COLOR="#338800" CREATED="1522506758042" ID="ID_1422898694" MODIFIED="1522506783584" TEXT="DependInject&lt;I&gt;::Local&lt;MOC&gt;">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node CREATED="1563022290903" ID="ID_1738614427" MODIFIED="1563022298518" TEXT="Logik/Informations-Technik">
<node CREATED="1563022305566" ID="ID_1375417763" MODIFIED="1563028982708">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      das &#171;<b>Regel</b>-System&#187;
    </p>
  </body>
</html></richcontent>
<node CREATED="1563029003092" ID="ID_1788007006" MODIFIED="1563029014836" TEXT="...ist bisher nicht mehr als eine Schnappsidee">
<icon BUILTIN="smiley-oh"/>
</node>
</node>
<node CREATED="1563022311632" ID="ID_1353415142" MODIFIED="1563028970867">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      das &#171;<b>Advice</b>-System&#187;
    </p>
  </body>
</html></richcontent>
<node CREATED="1563022363974" ID="ID_290527164" MODIFIED="1563022368517" TEXT="Konzept">
<node CREATED="1563022369373" ID="ID_201969563" MODIFIED="1563022372857" TEXT="von 2010"/>
<node CREATED="1563022373578" ID="ID_1190645627" MODIFIED="1576282357966" TEXT="immer noch experimentell">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      auch in 2019...
    </p>
    <ul>
      <li>
        nur einige sporadische Use-Cases
      </li>
      <li>
        ich halte es aber weiterhin f&#252;r wichtig
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node CREATED="1563022416308" ID="ID_1045079282" MODIFIED="1563022427519">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      ein <b>Whiteboard-System</b>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1563022428253" ID="ID_488828433" MODIFIED="1563022438478" TEXT="geplante Erweiterung: Unifikation">
<icon BUILTIN="hourglass"/>
</node>
</node>
<node CREATED="1563022526728" ID="ID_1836336225" MODIFIED="1563028919215" TEXT="Features">
<icon BUILTIN="info"/>
<node CREATED="1563022531695" ID="ID_1537850929" MODIFIED="1563022538906" TEXT="Topic">
<node COLOR="#338800" CREATED="1563022540464" ID="ID_1729592768" MODIFIED="1563022542831" TEXT="getypt">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1563022543998" ID="ID_1378204754" MODIFIED="1563022562327" TEXT="ground-atom">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1563022569367" ID="ID_912699059" MODIFIED="1563022575513" TEXT="Advice setzen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1563022582735" ID="ID_249193090" MODIFIED="1563022586647" TEXT="Advice &#xfc;berschreiben">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1563022576324" ID="ID_756916431" MODIFIED="1563022581713" TEXT="Advice zur&#xfc;ckziehen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1563022612700" FOLDED="true" ID="ID_1996378025" MODIFIED="1575240116524" TEXT="Vorliegen von Advice feststellen">
<linktarget COLOR="#1dba57" DESTINATION="ID_1996378025" ENDARROW="Default" ENDINCLINATION="3933;-460;" ID="Arrow_ID_1546347584" SOURCE="ID_1908316447" STARTARROW="None" STARTINCLINATION="2753;244;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1563023237085" ID="ID_1601131217" MODIFIED="1563023251307" TEXT="genauer: ein dediziertes Binding"/>
<node CREATED="1563023252134" ID="ID_1294314783" MODIFIED="1563023257630" TEXT="nicht die default-L&#xf6;sung"/>
<node CREATED="1563023271763" ID="ID_807996870" MODIFIED="1563023274919" TEXT="sinnvoll?">
<node CREATED="1563023275863" ID="ID_309537458" MODIFIED="1563023285142" TEXT="ja: das Advice-System ist inh&#xe4;rent stateful"/>
<node CREATED="1563023286238" ID="ID_1249260795" MODIFIED="1563023304193" TEXT="man mu&#xdf; es ja nicht nutzen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ....denn es gibt die default-L&#246;sung
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#338800" CREATED="1563023660812" ID="ID_1579367227" MODIFIED="1563028899851" TEXT="Implementierung">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1563023667023" ID="ID_1893665226" MODIFIED="1563028901796" TEXT="trivial">
<icon BUILTIN="button_ok"/>
<node CREATED="1563023671305" ID="ID_70860178" MODIFIED="1563023709037" TEXT="Request und Provision erben beide von PointOfAdvice"/>
<node CREATED="1563023710113" ID="ID_208212985" MODIFIED="1563023724579" TEXT="dort kann man auf Vorliegen einer NULL-L&#xf6;sung testen"/>
</node>
<node COLOR="#338800" CREATED="1563023728681" ID="ID_1738823249" MODIFIED="1563028903194" TEXT="Unit-Test">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1563023769944" ID="ID_621456362" MODIFIED="1563028904417" TEXT="AdviceSituations_test">
<icon BUILTIN="button_ok"/>
<node CREATED="1563023774448" ID="ID_139010445" MODIFIED="1563023779163" TEXT="bisher reiner Platzhalter"/>
<node CREATED="1563023779807" ID="ID_871541450" MODIFIED="1563028909666" TEXT="umfunktionieren">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      im Sinne des Erfinders...
    </p>
    <p>
      blo&#223; jetzt etwas abstrakter
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1563022446403" ID="ID_705506377" MODIFIED="1563022449971" TEXT="Implementierung">
<node CREATED="1563022451864" ID="ID_1018435620" MODIFIED="1563022457829" TEXT="globales Singleton"/>
<node CREATED="1563022462513" ID="ID_774294960" MODIFIED="1563022475492" TEXT="global gelockte Binding-Hashtable"/>
<node CREATED="1563022479454" ID="ID_184511843" MODIFIED="1563022496031" TEXT="Zugrif auf Advice ist &quot;wild&quot;, ohne Locking">
<node CREATED="1563022500900" ID="ID_1591934024" MODIFIED="1563022507279" TEXT="via Pointer"/>
<node CREATED="1563022509564" ID="ID_1679754158" MODIFIED="1563022512540" TEXT="daher atomar"/>
<node CREATED="1563022513810" ID="ID_283300133" MODIFIED="1563022521780" TEXT="aber ohne Zustellungs-Garantie"/>
</node>
</node>
<node CREATED="1563022664127" ID="ID_1843874673" MODIFIED="1563022698843" TEXT="Probleme">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1843874673" ENDARROW="Default" ENDINCLINATION="-398;-418;" ID="Arrow_ID_908178206" SOURCE="ID_818640049" STARTARROW="None" STARTINCLINATION="1004;0;"/>
</node>
</node>
</node>
<node COLOR="#990000" CREATED="1522457000411" FOLDED="true" ID="ID_736034555" MODIFIED="1563022234022" TEXT="Basis-System">
<linktarget COLOR="#af98b6" DESTINATION="ID_736034555" ENDARROW="Default" ENDINCLINATION="2208;-356;" ID="Arrow_ID_1927977085" SOURCE="ID_1228603701" STARTARROW="None" STARTINCLINATION="448;721;"/>
<icon BUILTIN="button_cancel"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1522457035478" ID="ID_1692167558" MODIFIED="1522556857858" TEXT="#1133 dependable base system">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1522457044789" ID="ID_22169859" MODIFIED="1522457177939" TEXT="f&#xfc;r einige minimale Einrichtungen">
<arrowlink COLOR="#512c6f" DESTINATION="ID_1029197196" ENDARROW="Default" ENDINCLINATION="-299;0;" ID="Arrow_ID_845867084" STARTARROW="None" STARTINCLINATION="1419;0;"/>
</node>
<node CREATED="1522506451269" ID="ID_55500881" MODIFIED="1522506467912" TEXT="Anforderungen">
<icon BUILTIN="yes"/>
<node CREATED="1522506486504" ID="ID_1878547223" MODIFIED="1522547691142" TEXT="Scope jeweils f&#xfc;r einen Payload-Typ"/>
<node CREATED="1522506518348" ID="ID_1014457759" MODIFIED="1522547692821" TEXT="gemeinsame statische Storage f&#xfc;r diesen Typ"/>
<node CREATED="1522506636907" ID="ID_662985730" MODIFIED="1522547695756" TEXT="ctor/dtor f&#xfc;r Payload werden aufgerufen">
<node CREATED="1522511826327" ID="ID_200801018" MODIFIED="1522511828746" TEXT="ctor">
<node CREATED="1522518918379" ID="ID_261980616" MODIFIED="1522518931653" TEXT="bevor Payload ben&#xf6;tigt wird"/>
</node>
<node CREATED="1522511829358" ID="ID_509925407" MODIFIED="1522511830546" TEXT="dtor">
<node CREATED="1522518935777" ID="ID_1823418824" MODIFIED="1522518941700" TEXT="&quot;m&#xf6;glichst sp&#xe4;t&quot;"/>
<node CREATED="1522518942263" ID="ID_203967064" MODIFIED="1522518945211" TEXT="aber zuverl&#xe4;ssig"/>
</node>
<node CREATED="1522514043309" ID="ID_1380359037" MODIFIED="1522514045656" TEXT="wann?">
<node CREATED="1522514050796" ID="ID_191668372" MODIFIED="1522514056079" TEXT="pro Typ">
<node CREATED="1522518875353" ID="ID_1629001557" MODIFIED="1522518882228" TEXT="ist das &#xfc;berhaupt m&#xf6;glich?"/>
<node CREATED="1522518882744" ID="ID_1818509600" MODIFIED="1522518901851" TEXT="l&#xe4;uft wieder auf ein Template-generiertes Static hinaus">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1522514056835" ID="ID_1693314028" MODIFIED="1522514067974" TEXT="f&#xfc;r alle DependableBase">
<node CREATED="1522514071649" ID="ID_433197904" MODIFIED="1522514079988" TEXT="erfordert DelStash"/>
<node CREATED="1522514086711" ID="ID_1216342984" MODIFIED="1522514117422" TEXT="an einem sicheren Ort"/>
<node CREATED="1522514120075" ID="ID_664406309" MODIFIED="1522514130012" TEXT="Idee: shared_ptr hierf&#xfc;r">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1522514148983" ID="ID_1331551985" MODIFIED="1522514165872" TEXT="jede neue DependableBase registriert sich"/>
<node CREATED="1522514307456" ID="ID_930138927" MODIFIED="1522514332529" TEXT="Problem: Deregistrierung von Eintr&#xe4;gen aus shared libs">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1522541153861" ID="ID_1598087575" MODIFIED="1522541200548" TEXT="Problem: mu&#xdf; auch jeden einzelnen ctor tracken">
<icon BUILTIN="stop-sign"/>
</node>
</node>
</node>
</node>
<node CREATED="1522506685708" ID="ID_172729748" MODIFIED="1522547698341" TEXT="...allerdings &#xfc;ber einen Refcount f&#xfc;r den Scope"/>
<node CREATED="1522506808180" ID="ID_962156028" MODIFIED="1522547700284" TEXT="Refcount verwendet Atomics"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1522518973331" ID="ID_136789565" MODIFIED="1522518988634" TEXT="Design-Dilemma">
<icon BUILTIN="broken-line"/>
<node CREATED="1522519009127" ID="ID_989945730" MODIFIED="1522519024864" TEXT="einfache Statics &quot;sollten&quot; lokal funktionieren"/>
<node CREATED="1522519025972" ID="ID_714585131" MODIFIED="1522519142036" TEXT="das Problem ist, wenn man sich auf externe Statics abst&#xfc;tzt">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...und das kann ziemlich indirekt passieren.
    </p>
    <p>
      Beispiel ist das ClassLock. Das ist ein Front-End, und verwendet verdeckt wieder einen Static.
    </p>
    <p>
      Und genau <i>daf&#252;r</i>&#160;gibt es anscheinend keine Garantieren
    </p>
  </body>
</html></richcontent>
<node CREATED="1522541262254" ID="ID_1609622536" MODIFIED="1522541279648" TEXT="genauer: wenn man sich auf on-demand (local) statics abst&#xfc;tzt"/>
<node CREATED="1522541280331" ID="ID_296029834" MODIFIED="1522541319853">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      C++ h&#228;llt die Erzeugungs/Zerst&#246;rungs-Reihenfolge <b>exakt</b>&#160;ein
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1522541321043" ID="ID_966332775" MODIFIED="1522541356223">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      d.h. wenn das local static <i>sp&#228;ter erzeugt</i>&#160;wird, wird es <b>vor</b>&#160; dem Hauptobjekt zerst&#246;rt
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1522519161785" ID="ID_608910503" MODIFIED="1522519198800" TEXT="aus Gr&#xfc;nden der Code-Organisation will man aber nicht immer alles in ein Objekt packen"/>
<node CREATED="1522519253645" ID="ID_1316230973" MODIFIED="1522519267958" TEXT="aber eine wirklich wasserdichte, genersche L&#xf6;sung ist komplex bis unm&#xf6;glich"/>
<node CREATED="1522519269002" ID="ID_1313794115" MODIFIED="1522519283292" TEXT="und statt einer halb-wasserdichten L&#xf6;sung k&#xf6;nnte man ja einfache Statics verwenden"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1522519308709" ID="ID_1997666438" MODIFIED="1522547255792" TEXT="Beschlu&#xdf;">
<icon BUILTIN="yes"/>
<node CREATED="1522547261520" ID="ID_539336828" MODIFIED="1522547285145" TEXT="das ist insgesamt eine schlechte Idee">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1522547285877" ID="ID_1921668956" MODIFIED="1525124102526">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Statische Initialisierung funktioniert <b>pr&#228;zise</b>, korrekt und <b>zuverl&#228;ssig</b>
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#9e9bae" DESTINATION="ID_1126260262" ENDARROW="Default" ENDINCLINATION="-1485;213;" ID="Arrow_ID_1269745634" STARTARROW="None" STARTINCLINATION="-1534;0;"/>
</node>
<node CREATED="1522547330726" ID="ID_994306275" MODIFIED="1522547749968" TEXT="C++ stellt das eigens sicher -- man mu&#xdf; es nur erst mal verstehen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Der Aufruf von Konstrukturen statischer Objekte konstituiert eine (dynamische) Reihenfolge.
    </p>
    <p>
      Desktuktoren werden exakt r&#252;ckw&#228;rts in dieser Reihenfolge aufgerufen.
    </p>
    <p>
      Statische Objektfelder werden vor der ersten Verwendung der Klassen<b>definition</b>&#160; initialisiert
    </p>
    <p>
      Dagegen Funktions-lokale statische Variablen werden initialisiert, wenn der Kontrollflu&#223; sie zum ersten mal ber&#252;hrt.
    </p>
    <p>
      Wenn ein Konstruktor ein statisches Feld verwendet, dann wird dieses Feld vor dem Konstruktor erzeugt.
    </p>
    <p>
      
    </p>
    <p>
      Beachte: in jedem dieser F&#228;lle wird auch die o.g. Reihenfolge konstituiert.
    </p>
    <p>
      
    </p>
    <p>
      <u>Corollar</u>: wenn man ein Meyer's Singleton erst indirekt aus dem Implementierungs-Code verwendet,
    </p>
    <p>
      so wird es garantiert zerst&#246;rt, <i>bevor</i>&#160;der Destruktor des aufrufenden Objekts l&#228;uft.
    </p>
    <p>
      Hallo ClassLock...
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
<node CREATED="1522547752788" ID="ID_1333812920" MODIFIED="1522547762343" TEXT="eine handgeschriebene L&#xf6;sung kann da nicht besser sein"/>
<node CREATED="1522547763547" ID="ID_1065493509" MODIFIED="1522547771413" TEXT="und verschiebt nur das Problem nach hinten"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1522457113044" ID="ID_1913798256" MODIFIED="1522547725898" TEXT="umzustellen">
<icon BUILTIN="stop-sign"/>
<node CREATED="1522457119491" ID="ID_715588139" MODIFIED="1522547714913" TEXT="ClassLock">
<linktarget COLOR="#735d7e" DESTINATION="ID_715588139" ENDARROW="Default" ENDINCLINATION="1087;0;" ID="Arrow_ID_1384015103" SOURCE="ID_1951071885" STARTARROW="None" STARTINCLINATION="-84;86;"/>
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1522457132025" ID="ID_828796576" MODIFIED="1522547718346" TEXT="Applikation-Objekt?">
<icon BUILTIN="button_cancel"/>
</node>
</node>
<node COLOR="#338800" CREATED="1522547772617" ID="ID_671236738" MODIFIED="1522556847447" TEXT="besser nur einen Zombie-Check bereitstellen">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1482524535575" ID="ID_387248900" MODIFIED="1557498707236" TEXT="Extension-System"/>
<node CREATED="1482524569705" ID="ID_1815572475" MODIFIED="1557498707236" TEXT="Parametrisierung"/>
</node>
<node CREATED="1448314890907" ID="ID_411012156" MODIFIED="1557498707236" POSITION="right" TEXT="Session">
<icon BUILTIN="go"/>
<node CREATED="1481688464060" ID="ID_53574817" MODIFIED="1557498707236" TEXT="Architektur">
<node CREATED="1481688469507" ID="ID_1691953889" MODIFIED="1557498707236" TEXT="Session-Subsystem">
<node CREATED="1481688478057" ID="ID_1082882066" MODIFIED="1557498707236" TEXT="&#xe4;quivalent zum ProcDispatcher"/>
<node CREATED="1481688490000" ID="ID_579694361" MODIFIED="1557498707236" TEXT="koordiniert die Abl&#xe4;ufe in Proc"/>
</node>
<node CREATED="1481688500943" ID="ID_1821833408" MODIFIED="1557498707236" TEXT="Session ist eine interne Datenstruktur">
<icon BUILTIN="yes"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1484377665971" HGAP="28" ID="ID_641757454" MODIFIED="1557498707236" TEXT="Logik" VSHIFT="5">
<icon BUILTIN="hourglass"/>
<node CREATED="1538939499138" ID="ID_367201519" MODIFIED="1557498707236" TEXT="open Session">
<node CREATED="1538939507425" ID="ID_389830085" MODIFIED="1557498707236" TEXT="new Session">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1477784813895" ID="ID_1478381189" MODIFIED="1557498707236">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <u>Aufgabe</u>: <i><font color="#821b58" size="4">produce dummy content</font></i>
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#f9b709" DESTINATION="ID_1478381189" ENDARROW="Default" ENDINCLINATION="-1009;-357;" ID="Arrow_ID_1072548081" SOURCE="ID_635303062" STARTARROW="None" STARTINCLINATION="-87;103;"/>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node CREATED="1538939511688" ID="ID_936661226" MODIFIED="1557498707236" TEXT="existing Session"/>
</node>
</node>
<node CREATED="1481688517437" HGAP="24" ID="ID_241232196" MODIFIED="1557498707236" TEXT="Lifecycle" VSHIFT="8">
<icon BUILTIN="info"/>
<node CREATED="1481688521532" ID="ID_1825349679" MODIFIED="1557498707236" TEXT="Session startet on demand"/>
<node CREATED="1481688529539" ID="ID_1972961763" MODIFIED="1557498707236" TEXT="SessionManager ist zust&#xe4;ndig"/>
<node CREATED="1481688544921" ID="ID_1934560784" MODIFIED="1557498707236" TEXT="wenn Session geladen, ist ProcDispatcher freigegeben"/>
<node CREATED="1481688562830" ID="ID_708961458" MODIFIED="1557498707236" TEXT="SessionSubsystem startet processing loop im ProcDispatcher"/>
<node CREATED="1481777252497" FOLDED="true" ID="ID_1789585729" MODIFIED="1557498707236" TEXT="Shutdown">
<linktarget COLOR="#5a97df" DESTINATION="ID_1789585729" ENDARROW="Default" ENDINCLINATION="3225;0;" ID="Arrow_ID_1930701586" SOURCE="ID_1392452935" STARTARROW="None" STARTINCLINATION="2096;-122;"/>
<node CREATED="1481777297635" ID="ID_483368010" MODIFIED="1557498707236" TEXT="Deadlock-Gefahr">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1481777308978" ID="ID_1380229085" MODIFIED="1557498707236" TEXT="Lebensdauer der Session-Datenstruktur">
<node CREATED="1481777328479" ID="ID_1668359018" MODIFIED="1557498707236" TEXT="unabh&#xe4;ngig vom Session-Subsystem">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1481777343548" ID="ID_354877994" MODIFIED="1557498707236" TEXT="irgendwann post main()"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534025083017" ID="ID_1484082332" MODIFIED="1557498707236" TEXT="weiterlaufende Render-Prozesse">
<linktarget COLOR="#eb4053" DESTINATION="ID_1484082332" ENDARROW="Default" ENDINCLINATION="568;0;" ID="Arrow_ID_936372806" SOURCE="ID_1126518975" STARTARROW="Default" STARTINCLINATION="291;0;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1481777355747" ID="ID_1804595708" MODIFIED="1557498707236" TEXT="Subsystem-&gt;end">
<node CREATED="1481777368330" ID="ID_1933237483" MODIFIED="1557498707236" TEXT="Halte-Nachricht"/>
<node COLOR="#338800" CREATED="1481777374801" ID="ID_1844558240" MODIFIED="1557498707236" TEXT="sicherstellen, da&#xdf; Loop anh&#xe4;lt">
<arrowlink COLOR="#10f1a2" DESTINATION="ID_1748096848" ENDARROW="Default" ENDINCLINATION="-480;-82;" ID="Arrow_ID_506637666" STARTARROW="None" STARTINCLINATION="-200;38;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1483654823454" ID="ID_397283548" MODIFIED="1557498707236" TEXT="shutdown -&gt; requireAction"/>
<node CREATED="1483654831773" ID="ID_911489519" MODIFIED="1557498707236" TEXT="shutdown-Trigger macht Notify"/>
<node CREATED="1483654846083" ID="ID_1926442698" MODIFIED="1557498707236" TEXT="Loop-Thread wacht auf"/>
<node CREATED="1483654853850" ID="ID_934617670" MODIFIED="1557498707236" TEXT="...und f&#xe4;llt aus der Loop heraus"/>
</node>
<node CREATED="1481777397542" ID="ID_1147135932" MODIFIED="1557498707236" TEXT="DispatcherLoop stirbt"/>
<node CREATED="1481777410972" ID="ID_457965735" MODIFIED="1557498707236" TEXT="sigTerm"/>
<node CREATED="1483927907096" ID="ID_1366384241" MODIFIED="1557498707236" TEXT="destruktor setzt auch PImpl auf NULL">
<icon BUILTIN="idea"/>
<node CREATED="1483927920718" ID="ID_409709261" MODIFIED="1557498707236" TEXT="niemand sonst fa&#xdf;t den PImpl an"/>
<node CREATED="1483927929773" ID="ID_1082393310" MODIFIED="1557498707237" TEXT="atomar wg. Lock auf ProcDispatcher"/>
</node>
</node>
</node>
</node>
<node CREATED="1533401481917" HGAP="31" ID="ID_1634540822" MODIFIED="1557498707237" TEXT="Struktur" VSHIFT="-19">
<icon BUILTIN="hourglass"/>
<node CREATED="1533918273704" ID="ID_1490841818" MODIFIED="1557498707237" TEXT="Modell">
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1533918279368" FOLDED="true" ID="ID_90099848" MODIFIED="1557498707237" TEXT="Assets">
<icon BUILTIN="yes"/>
<node CREATED="1533918370708" ID="ID_1044798440" MODIFIED="1557498707237" TEXT="Arten">
<node CREATED="1533918396480" ID="ID_1371207426" MODIFIED="1557498707237" TEXT="Media"/>
<node CREATED="1533918387145" ID="ID_421009475" MODIFIED="1557498707237" TEXT="Proc"/>
<node CREATED="1533918391201" ID="ID_1099238975" MODIFIED="1557498707237" TEXT="Struct"/>
<node CREATED="1533918403071" ID="ID_277977903" MODIFIED="1557498707237" TEXT="Meta"/>
</node>
<node CREATED="1533918425908" ID="ID_1069430929" MODIFIED="1557498707237" TEXT="Einordnung">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534001954612" ID="ID_1527156035" MODIFIED="1557498707237" TEXT="Probleme">
<icon BUILTIN="messagebox_warning"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534001984536" ID="ID_1186986383" MODIFIED="1557498707237" TEXT="#1156 clarify distinction between asset::Struct and asset::Meta">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534002074828" ID="ID_867232883" MODIFIED="1557498707237" TEXT="Asymetrie in asset::Category">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1534002102456" ID="ID_101543995" MODIFIED="1557498707237" TEXT="benutzer-orientiert"/>
<node CREATED="1534002106999" ID="ID_354946108" MODIFIED="1557498707237" TEXT="GUI ist aber noch nicht gebaut"/>
<node CREATED="1534002113086" ID="ID_1894075831" MODIFIED="1576282357965" TEXT="Audio und Video werden eigens unterschieden">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...obwohl die betreffenden Assets in die Kategorie &quot;Medien&quot; fallen,
    </p>
    <p>
      und wir einen eigenen StreamType definieren wollen, also explizit die Art der Medien offen lassen.
    </p>
    <p>
      Ganz prominent fehlt hier also z.B: MIDI
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1534002180893" ID="ID_1074039128" MODIFIED="1557498707237" TEXT="daf&#xfc;r erscheint die Unterscheidung STRUCT vs. META schwammig"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534002037961" ID="ID_95419141" MODIFIED="1557498707237" TEXT="Erzeugung und Lebenszyklus">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1534002202098" ID="ID_1411648485" MODIFIED="1557498707237" TEXT="diese Auto-Regisierung"/>
<node CREATED="1534002225888" ID="ID_138566211" MODIFIED="1576282357965" TEXT="smart-Ptr als Handle nicht immer sinnvoll">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...n&#228;mlich genau <i>nicht</i>&#160;f&#252;r alle Assets,
    </p>
    <p>
      die Aufgrund von Klassifikationen automatisch bereits existieren
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1534024950739" ID="ID_1395279965" MODIFIED="1557498707237" TEXT="Races und m&#xf6;gliche Kollisionen &#xfc;berall">
<icon BUILTIN="clanbomber"/>
</node>
<node CREATED="1534025017601" ID="ID_1126518975" MODIFIED="1557498707237" TEXT="Zusammenhang mit dem Session-Lebenszyklus">
<arrowlink COLOR="#eb4053" DESTINATION="ID_1484082332" ENDARROW="Default" ENDINCLINATION="568;0;" ID="Arrow_ID_936372806" STARTARROW="Default" STARTINCLINATION="291;0;"/>
</node>
</node>
</node>
<node CREATED="1533918431595" ID="ID_1121251191" MODIFIED="1561827466181" TEXT="ErrorLog(Asset)">
<linktarget COLOR="#68788a" DESTINATION="ID_1121251191" ENDARROW="Default" ENDINCLINATION="-1644;0;" ID="Arrow_ID_146013003" SOURCE="ID_1117749960" STARTARROW="None" STARTINCLINATION="-4766;280;"/>
<node CREATED="1533997520937" ID="ID_130549036" MODIFIED="1533997523524" TEXT="Typ">
<node CREATED="1533918806369" ID="ID_1198682609" MODIFIED="1533918809694" TEXT="Media">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1533918810848" ID="ID_29240989" MODIFIED="1533918815271" TEXT="Struct">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1533918821511" ID="ID_1150910919" MODIFIED="1533997535081" TEXT="Meta">
<icon BUILTIN="forward"/>
<node CREATED="1533919635505" ID="ID_353835069" MODIFIED="1533919642476" TEXT="pa&#xdf;t soweit schon"/>
<node CREATED="1533920004719" ID="ID_402802807" MODIFIED="1576282357964" TEXT="was hei&#xdf;t hier &quot;immutable&quot;?">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Meta-Assets sind per Definition <i>&quot;immutable&quot;</i><br />Es gibt einen Builder
    </p>
  </body>
</html></richcontent>
<node CREATED="1533994326945" ID="ID_1821159631" MODIFIED="1533994327255" TEXT="Eigenschaften des Log"/>
<node CREATED="1533994327584" ID="ID_780339362" MODIFIED="1533994784549" TEXT="Filter, Persistenz, Warnschwellen, Weiterleitung"/>
<node CREATED="1533994328152" ID="ID_538198315" MODIFIED="1533994328390" TEXT="k&#xf6;nnen bei bestehendem Log nicht ge&#xe4;ndert werden"/>
</node>
</node>
</node>
<node CREATED="1533997546077" ID="ID_1270326369" MODIFIED="1533997549209" TEXT="Rolle">
<node CREATED="1533997550413" ID="ID_1832028422" MODIFIED="1533997561821">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <i>das</i>&#160;ErrorLog
    </p>
  </body>
</html></richcontent>
<node CREATED="1533997846989" ID="ID_1324960272" MODIFIED="1533997854911" TEXT="zun&#xe4;chst nur Platzhalter">
<node CREATED="1533997938232" ID="ID_40537012" MODIFIED="1576282357964" TEXT="brauche EntryID&lt;ErrorLog&gt;">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ....weil hier ein allgemeines Schema entsteht:
    </p>
    <p>
      jede Aktion, die in das UI &quot;reflektiert&quot; wird, erfolgt, indem man eine Nachricht
    </p>
    <p>
      &#252;ber den UI-Bus schickt, an einen Empf&#228;nger mit bekannter ID.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1533997855707" ID="ID_663263517" MODIFIED="1533997862414" TEXT="nomineller Empf&#xe4;nger"/>
<node CREATED="1533997863858" ID="ID_680229716" MODIFIED="1533997880164" TEXT="entspricht dem UI">
<node CREATED="1533997895182" ID="ID_1179742637" MODIFIED="1533997924871">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      dort gibt es eine <b>ErrorLogView</b>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1533997901765" ID="ID_361019548" MODIFIED="1576202124808">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      und den Controller: <b>NotificationHub</b>
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#a9aac1" DESTINATION="ID_70134302" ENDARROW="Default" ENDINCLINATION="-1984;0;" ID="Arrow_ID_1885125683" STARTARROW="None" STARTINCLINATION="807;-66;"/>
</node>
</node>
<node CREATED="1533997881703" ID="ID_405103584" MODIFIED="1533997890166" TEXT="Persistenz">
<icon BUILTIN="hourglass"/>
</node>
</node>
<node CREATED="1533997570242" ID="ID_503070656" MODIFIED="1533997575269" TEXT="spezielle Detail-Logs">
<node CREATED="1534002311748" ID="ID_440257353" MODIFIED="1534002317208" TEXT="geplant/Idee">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1533997581280" ID="ID_398592361" MODIFIED="1533997591029" TEXT="Idee: Verallgemeinerung auf Logs">
<icon BUILTIN="idea"/>
<node CREATED="1533997595735" ID="ID_459951978" MODIFIED="1576282357963" TEXT="selbstreferentielle Struktur">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      das ist diese Idee, da&#223; eine Struktur sich selbst meta-repr&#228;sentiert;
    </p>
    <p>
      dadurch werden Meta-Operationen auf gleiche Ebene gestellt wie normale Struktur-Manipulationen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
<node CREATED="1533997603741" ID="ID_1980534712" MODIFIED="1576282357963" TEXT="die Command und Event-Logs k&#xf6;nnten repr&#xe4;sentiert sein">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...und dadruch w&#252;rden History-Operationen wie
    </p>
    <ul>
      <li>
        undo
      </li>
      <li>
        redo
      </li>
      <li>
        repeat command
      </li>
    </ul>
    <p>
      ...zu ganz normalen Manipulationen der Session, w&#252;rden ihrerseits geloggt und historisiert
    </p>
    <p>
      und verlieren ihren <i>magischen Charakter</i>&#160;au&#223;erhalb der Event-Sourcing-Struktur
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1533918281880" ID="ID_1584868520" MODIFIED="1557498707237" TEXT="MObject"/>
</node>
<node CREATED="1674160453319" ID="ID_1069058254" MODIFIED="1674160457633" TEXT="Fragen der Anordnung">
<node CREATED="1674160465628" ID="ID_1715063705" MODIFIED="1674160468831" TEXT="Konventionen"/>
<node CREATED="1674160469453" ID="ID_299990959" MODIFIED="1674160474856" TEXT="m&#xf6;glicher Spielraum">
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1674160530502" ID="ID_949776360" MODIFIED="1674160554933" TEXT="Thema: Content auf nested-Tracks">
<icon BUILTIN="hourglass"/>
<node CREATED="1674160565696" ID="ID_915488068" MODIFIED="1674160570917" TEXT="typische Erwartung">
<node CREATED="1674160572143" ID="ID_846540731" MODIFIED="1674160579754" TEXT="Content ist nur auf Leaf-Tracks"/>
<node CREATED="1674160581694" ID="ID_1996064052" MODIFIED="1674160601189" TEXT="sobald sub-Tracks auftreten, wird Content auf diese nach unten verschoben"/>
<node CREATED="1674160613610" ID="ID_1409730860" MODIFIED="1674161308527">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      1/2023: unklar &#8212; <i>wer macht das?</i>
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#8a4d65" DESTINATION="ID_1828648487" ENDARROW="Default" ENDINCLINATION="-2734;159;" ID="Arrow_ID_502951484" STARTARROW="None" STARTINCLINATION="-1113;-73;"/>
</node>
</node>
</node>
</node>
<node CREATED="1674160475478" ID="ID_1934740344" MODIFIED="1674160478839" TEXT="Wechselwirkungen">
<node CREATED="1674160479667" ID="ID_1846459378" MODIFIED="1674160484151" TEXT="mit UI-Mechanik">
<node CREATED="1674160486844" ID="ID_73340930" LINK="#ID_1440303749" MODIFIED="1674160516391" TEXT="Expand / Collapse"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1533401497075" FOLDED="true" ID="ID_598742497" MODIFIED="1557498707237" TEXT="Struktur-&#xc4;nderungen">
<icon BUILTIN="bell"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1533401543765" ID="ID_1439915831" MODIFIED="1557498707237" TEXT="erkennen">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1533401549900" ID="ID_98267055" MODIFIED="1557498707237" TEXT="Builder?"/>
</node>
<node CREATED="1533401523656" ID="ID_1710492737" MODIFIED="1557498707237" TEXT="Diff-Generierung">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1533401384155" ID="ID_1106740084" MODIFIED="1557498707237" TEXT="#1153 define foundation for live diff updates Session -&gt; UI">
<linktarget COLOR="#a47f9a" DESTINATION="ID_1106740084" ENDARROW="Default" ENDINCLINATION="2561;-1079;" ID="Arrow_ID_1276188897" SOURCE="ID_1494781570" STARTARROW="None" STARTINCLINATION="1703;327;"/>
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1533401567737" ID="ID_464225987" MODIFIED="1557498707237" TEXT="populationDiff">
<icon BUILTIN="hourglass"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1533401584887" ID="ID_181123777" MODIFIED="1557498707237" TEXT="aktuellen Zustand reflektieren">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1533401596470" ID="ID_1892595651" MODIFIED="1557498707237" TEXT="vorl&#xe4;ufig: hart gecodet">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node CREATED="1539270417847" ID="ID_1555798999" MODIFIED="1576203555715" TEXT="korrekte Diff-Struktur">
<linktarget COLOR="#cbada9" DESTINATION="ID_1555798999" ENDARROW="Default" ENDINCLINATION="1135;-119;" ID="Arrow_ID_46239762" SOURCE="ID_1136748343" STARTARROW="None" STARTINCLINATION="-408;50;"/>
<linktarget COLOR="#d47366" DESTINATION="ID_1555798999" ENDARROW="Default" ENDINCLINATION="713;-263;" ID="Arrow_ID_971172326" SOURCE="ID_1387553695" STARTARROW="None" STARTINCLINATION="-1999;120;"/>
<linktarget COLOR="#d47366" DESTINATION="ID_1555798999" ENDARROW="Default" ENDINCLINATION="590;-127;" ID="Arrow_ID_308349501" SOURCE="ID_1435731309" STARTARROW="None" STARTINCLINATION="915;0;"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1539270427702" ID="ID_1895500225" MODIFIED="1557498707237" TEXT="der Diff mu&#xdf; gewisse Regeln einhalten"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1539270457106" ID="ID_1865797145" MODIFIED="1557498707237" TEXT="diese sind implizit und lokal">
<icon BUILTIN="clanbomber"/>
<node CREATED="1539382866228" ID="ID_961794575" MODIFIED="1557498707237" TEXT="Timeline">
<node CREATED="1539386837229" ID="ID_563098407" MODIFIED="1557498707237" TEXT="sofort bei Population...">
<icon BUILTIN="yes"/>
<node CREATED="1539382950953" ID="ID_150037135" MODIFIED="1557498707237" TEXT="ID + Record"/>
<node CREATED="1539382957680" ID="ID_1525067830" MODIFIED="1557498707237" TEXT="Attribut ATTR_fork -&gt; ID + Record"/>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1539388046730" ID="ID_1028444200" MODIFIED="1557498707237" TEXT="Entscheidung: besser so">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node CREATED="1539388094636" ID="ID_545613641" MODIFIED="1557498707237" TEXT="Alternative w&#xe4;re...">
<node CREATED="1539388104018" ID="ID_1338813705" MODIFIED="1557498707237" TEXT="erst mal BOTTOM- Track-ID verwenden"/>
<node CREATED="1539388120696" ID="ID_532223861" MODIFIED="1557498707237" TEXT="dann Track-Attibut zuweisen"/>
<node CREATED="1539388127375" ID="ID_91044288" MODIFIED="1557498707237" TEXT="ggfs schon bestehende Objekte werkegeln"/>
<node CREATED="1539388139030" ID="ID_1167639326" MODIFIED="1557498707237" TEXT="w&#xfc;rde funkionieren, aber...">
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node CREATED="1539388158555" ID="ID_1745880313" MODIFIED="1557498707237" TEXT="besser geleich Exception werfen">
<arrowlink COLOR="#ea3f19" DESTINATION="ID_946219609" ENDARROW="Default" ENDINCLINATION="305;-104;" ID="Arrow_ID_22622466" STARTARROW="None" STARTINCLINATION="-367;13;"/>
</node>
</node>
</node>
</node>
<node CREATED="1541547600640" HGAP="79" ID="ID_659707505" MODIFIED="1560172942629" TEXT="Element-IDs m&#xfc;ssen eindeutig sein" VSHIFT="10">
<arrowlink COLOR="#c9876a" DESTINATION="ID_1850412206" ENDARROW="Default" ENDINCLINATION="369;179;" ID="Arrow_ID_1229280605" STARTARROW="None" STARTINCLINATION="586;-203;"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1541547743885" ID="ID_1112550435" MODIFIED="1557498707237" TEXT="wegen UI-Bus-Routing"/>
<node CREATED="1541547751020" ID="ID_566590492" MODIFIED="1557498707237" TEXT="Aber: Attribute werden lokal erzeugt"/>
</node>
</node>
<node CREATED="1539270417847" ID="ID_946219609" MODIFIED="1557498707237" TEXT="Reaktion auf Diff-Fehler">
<linktarget COLOR="#d47366" DESTINATION="ID_946219609" ENDARROW="Default" ENDINCLINATION="713;-263;" ID="Arrow_ID_1085344706" SOURCE="ID_19523487" STARTARROW="Default" STARTINCLINATION="-1999;120;"/>
<linktarget COLOR="#ea3f19" DESTINATION="ID_946219609" ENDARROW="Default" ENDINCLINATION="305;-104;" ID="Arrow_ID_22622466" SOURCE="ID_1745880313" STARTARROW="None" STARTINCLINATION="-367;13;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1533400671533" HGAP="45" ID="ID_1357977461" MODIFIED="1557498707237" TEXT="Command-Ausf&#xfc;hrung" VSHIFT="-27">
<icon BUILTIN="hourglass"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1533400693522" ID="ID_217032156" MODIFIED="1557498707237" TEXT="Commands sollen geloggt werden">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1533400707072" ID="ID_1192893155" MODIFIED="1557498707237" TEXT="#211 handling pattern for dispatch">
<linktarget COLOR="#ca91c2" DESTINATION="ID_1192893155" ENDARROW="Default" ENDINCLINATION="1415;0;" ID="Arrow_ID_207842771" SOURCE="ID_1072134705" STARTARROW="None" STARTINCLINATION="2581;0;"/>
<icon BUILTIN="hourglass"/>
</node>
<node CREATED="1533400727749" ID="ID_345730150" MODIFIED="1557498707237" TEXT="wartet auf Storage-Backend-Entscheidung">
<icon BUILTIN="info"/>
</node>
<node CREATED="1533400742979" HGAP="21" ID="ID_748308949" MODIFIED="1557498707237" TEXT="vorl&#xe4;ufiger Hack" VSHIFT="15">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="idea"/>
<node CREATED="1533400757737" ID="ID_1656760024" MODIFIED="1557498707237" TEXT="Pr&#xe4;fix &quot;test&quot; vor CommandID">
<icon BUILTIN="info"/>
</node>
<node COLOR="#338800" CREATED="1533400770320" ID="ID_1945470515" MODIFIED="1557498707237" TEXT="solche Commands werden vom Dispatcher direkt ausgef&#xfc;hrt">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1481778538165" FOLDED="true" HGAP="37" ID="ID_522398894" MODIFIED="1561827466184" TEXT="ProcDispatcher" VSHIFT="12">
<icon BUILTIN="button_ok"/>
<node CREATED="1481826274018" HGAP="18" ID="ID_1916296972" MODIFIED="1518487921096" TEXT="Requirements" VSHIFT="-7">
<icon BUILTIN="button_ok"/>
<node CREATED="1481826329819" ID="ID_1238318698" MODIFIED="1518487921096" TEXT="enqueue commands concurrently">
<node CREATED="1481827297122" ID="ID_860095678" MODIFIED="1518487921096" TEXT="FIFO for regular commands"/>
<node CREATED="1481827312024" ID="ID_850193431" MODIFIED="1518487921096" TEXT="LIFO for priority requests">
<node CREATED="1482712100745" ID="ID_1387300775" MODIFIED="1518487921096" TEXT="vorerst nicht implementiert">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node CREATED="1481826431861" ID="ID_328583048" MODIFIED="1518487921096" TEXT="process sequentially"/>
<node CREATED="1481826441884" ID="ID_952327020" MODIFIED="1518487921096" TEXT="until queue is empty"/>
<node CREATED="1481826997930" ID="ID_576341056" MODIFIED="1518487921096" TEXT="provide a check point">
<node CREATED="1481827040748" ID="ID_406205627" MODIFIED="1518487921096" TEXT="when">
<icon BUILTIN="help"/>
<node CREATED="1481827019615" ID="ID_1169845292" MODIFIED="1518487921096" TEXT="after each command"/>
<node CREATED="1481827024942" ID="ID_137101226" MODIFIED="1518487921096" TEXT="after each builder run"/>
</node>
<node CREATED="1481827051787" ID="ID_1911969568" MODIFIED="1518487921096" TEXT="why">
<icon BUILTIN="help"/>
<node CREATED="1483747048432" ID="ID_1165337571" MODIFIED="1518487921096" TEXT="to ensure sane state logic"/>
<node CREATED="1483747065326" ID="ID_896973402" MODIFIED="1576282357962" TEXT="allow to wait for disabled state">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...necessary when closing the session;
    </p>
    <p>
      we need to wait for the current command or builder run to be completed
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node CREATED="1481827548073" ID="ID_690689259" MODIFIED="1576282357962" TEXT="manage entries">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...noch nicht implementiert 1/17
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="bell"/>
<node CREATED="1481827558336" ID="ID_1026688096" MODIFIED="1518487921096" TEXT="match current session"/>
<node CREATED="1481827647491" ID="ID_1849886325" MODIFIED="1518487921096" TEXT="aggregate similar"/>
<node CREATED="1481827652539" ID="ID_313823253" MODIFIED="1518487921096" TEXT="supersede"/>
</node>
</node>
<node CREATED="1481917572639" FOLDED="true" HGAP="74" ID="ID_190109346" MODIFIED="1561827466189" TEXT="operational..." VSHIFT="-27">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1481917612602" ID="ID_567971228" MODIFIED="1518487921096" TEXT="Loop l&#xe4;uft stets, aber blockt ggfs"/>
<node CREATED="1481917641910" ID="ID_1157396234" MODIFIED="1518487921096" TEXT="anf&#xe4;nglich idle --&gt; schlafen"/>
<node CREATED="1481918441020" ID="ID_584625018" MODIFIED="1518487921096" TEXT="Command-Queue wird ohne Verz&#xf6;gerung abgearbeitet"/>
<node CREATED="1481918465680" ID="ID_973127249" MODIFIED="1518487921096" TEXT="Builder startet">
<node CREATED="1481918475295" ID="ID_1997533333" MODIFIED="1518487921096" TEXT="nach kurzer Idle-Periode"/>
<node CREATED="1481918481102" ID="ID_335740959" MODIFIED="1518487921096" TEXT="nach l&#xe4;ngerer Command-Abarbeitung"/>
</node>
<node CREATED="1481917691047" ID="ID_714937554" MODIFIED="1518487921096" TEXT="&#xc4;nderung der Umst&#xe4;nde">
<node CREATED="1481917700998" ID="ID_470084004" MODIFIED="1518487921096" TEXT="kommt stets &#xfc;ber Interface"/>
<node CREATED="1481917726683" ID="ID_962119246" MODIFIED="1518487921096" TEXT="weckt den Loop-Thread auf"/>
<node CREATED="1481917766837" ID="ID_1794908304" MODIFIED="1576282357961" TEXT="ist atomar (locking)">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Guard beim Zugang &#252;ber das Interface
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1481918074269" ID="ID_1984339005" MODIFIED="1518487921097">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <i>nur sie</i>&#160;ist atomar
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1481918117831" ID="ID_924462902" MODIFIED="1518487921097" TEXT="asynchron">
<icon BUILTIN="info"/>
<node CREATED="1481918130245" ID="ID_1624017067" MODIFIED="1518487921097">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <b>nur ein Thread</b>&#160;f&#252;r Commands und Builder
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#171ccb" DESTINATION="ID_1214851922" ENDARROW="Default" ENDINCLINATION="53;-5;" ID="Arrow_ID_1745317422" STARTARROW="None" STARTINCLINATION="42;2;"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1481918174199" ID="ID_364234189" MODIFIED="1518487921097" TEXT="essentiell f&#xfc;r Konsitenz der Session"/>
<node CREATED="1481918181254" ID="ID_1313994065" MODIFIED="1518487921097" TEXT="stellt bereits sicher, da&#xdf; der Builder blockt"/>
</node>
<node CREATED="1481918194356" ID="ID_1233041580" MODIFIED="1518487921097" TEXT="einf&#xfc;gen neuer Commands"/>
<node CREATED="1481918273490" ID="ID_1214851922" MODIFIED="1518487921097" TEXT="n&#xe4;chstes Command starten">
<arrowlink COLOR="#010de6" DESTINATION="ID_1857790160" ENDARROW="Default" ENDINCLINATION="86;0;" ID="Arrow_ID_1735750125" STARTARROW="Default" STARTINCLINATION="127;3;"/>
<linktarget COLOR="#171ccb" DESTINATION="ID_1214851922" ENDARROW="Default" ENDINCLINATION="53;-5;" ID="Arrow_ID_1745317422" SOURCE="ID_1624017067" STARTARROW="None" STARTINCLINATION="42;2;"/>
</node>
<node CREATED="1481918291351" ID="ID_1857790160" MODIFIED="1518487921097" TEXT="Builder-Lauf initiieren">
<linktarget COLOR="#010de6" DESTINATION="ID_1857790160" ENDARROW="Default" ENDINCLINATION="86;0;" ID="Arrow_ID_1735750125" SOURCE="ID_1214851922" STARTARROW="Default" STARTINCLINATION="127;3;"/>
</node>
<node CREATED="1481918212722" ID="ID_1376599707" MODIFIED="1518487921097" TEXT="Shutdown-Triggger"/>
<node CREATED="1481918222577" ID="ID_1588368762" MODIFIED="1518487921097" TEXT="Sperre setzen">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1481918517018" HGAP="11" ID="ID_916331172" MODIFIED="1518487921097" TEXT="Sperre" VSHIFT="8">
<icon BUILTIN="button_ok"/>
<node CREATED="1481918524673" ID="ID_1705856370" MODIFIED="1518487921097" TEXT="verhindert Command- und Builder-start">
<icon BUILTIN="info"/>
</node>
<node CREATED="1481918547182" ID="ID_920627724" MODIFIED="1518487921097" TEXT="bestehende Commands / Builder-L&#xe4;ufe werden noch abgeschlossen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1481920722100" ID="ID_1378897740" MODIFIED="1531584182083" TEXT="SessionManager mu&#xdf; auf Sperre warten">
<linktarget COLOR="#5a97df" DESTINATION="ID_1378897740" ENDARROW="Default" ENDINCLINATION="2126;95;" ID="Arrow_ID_1446486242" SOURCE="ID_284397306" STARTARROW="None" STARTINCLINATION="2592;-81;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1481926040310" ID="ID_667460598" MODIFIED="1518487921097" TEXT="Deadlock wenn der Session-Thread selber auf diese Sperre wartet">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1482197251133" ID="ID_1245878337" MODIFIED="1518487921097">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Ticket <font color="#e90426">#1054</font>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
<node CREATED="1482197270202" ID="ID_221875120" MODIFIED="1518487921097" TEXT="neues API auf unserem Thread-Wrapper schaffen">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1482197280297" ID="ID_1142010083" MODIFIED="1518487921097" TEXT="rein technisch bereits heute m&#xf6;glich">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1482197292263" ID="ID_669497196" MODIFIED="1576282357960" TEXT="jeder Lumiera-Thread speichert &quot;self&quot; in thread local storage">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...und &quot;self&quot; == LumieraThrea* == &quot;handle&quot; (im Wrapper).
    </p>
    <p>
      
    </p>
    <p>
      D.h. solange der Wrapper lebt (!), kann er selber leicht feststellen, ob die aktuelle Ausf&#252;hrung
    </p>
    <p>
      auch in einem Thread stattfindet, der
    </p>
    <ul>
      <li>
        von unserem Threadpool gestartet wurde
      </li>
      <li>
        ein Thread-Handle hat, das mit dem Handle dieses Wrappers identisch ist.
      </li>
    </ul>
    <p>
      
    </p>
    <p>
      Das Sch&#246;ne bei diesem Ansatz ist, da&#223; man daf&#252;r weder das Handle exponieren mu&#223;,
    </p>
    <p>
      noch irgendwelche komischen Policies aufmachen. Solange es das Objekt gibt, klappt das.
    </p>
    <p>
      OO rocks!
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
</node>
</node>
</node>
<node CREATED="1481828583551" HGAP="148" ID="ID_436508747" MODIFIED="1518487921097" TEXT="Aufbau" VSHIFT="-35">
<icon BUILTIN="button_ok"/>
<node CREATED="1481828611347" ID="ID_160907866" MODIFIED="1518487921097" TEXT="Front-End"/>
<node CREATED="1481828614827" ID="ID_1752707995" MODIFIED="1518487921097" TEXT="DispatcherLoop PImpl"/>
<node CREATED="1481828624042" ID="ID_1970372601" MODIFIED="1518487921097" TEXT="Looper f&#xfc;r Schleifen-Logik"/>
<node CREATED="1481828639584" ID="ID_1344182776" MODIFIED="1518487921097" TEXT="CommandQueue"/>
</node>
<node CREATED="1481778549940" FOLDED="true" HGAP="50" ID="ID_676848252" MODIFIED="1561827466194" TEXT="DispatcherLoop" VSHIFT="1">
<icon BUILTIN="button_ok"/>
<node CREATED="1481778741546" ID="ID_684867533" MODIFIED="1518487921097" TEXT="&#xf6;ffnet Session-Interface">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1481778565298" ID="ID_1803510423" MODIFIED="1518487921097" TEXT="Schleifen-Logik">
<node CREATED="1481778570153" ID="ID_6904207" MODIFIED="1518487921097" TEXT="beruht auf CondVar / wait"/>
<node CREATED="1481831352239" ID="ID_947882756" MODIFIED="1518487921097" TEXT="Looper-Hilfskomponente"/>
<node CREATED="1481831372092" ID="ID_411828431" MODIFIED="1518487921097" TEXT="mu&#xdf;...">
<icon BUILTIN="yes"/>
<node CREATED="1481831398297" ID="ID_1100709659" MODIFIED="1518487921097" TEXT="aufwachen wenn Commands anstehen"/>
<node CREATED="1481831722406" ID="ID_462123533" MODIFIED="1518487921097" TEXT="aufwachen wenn Checkpoint"/>
<node CREATED="1481831408415" ID="ID_1091888781" MODIFIED="1518487921097" TEXT="aufwachen bei Shutdown"/>
<node CREATED="1481831432220" ID="ID_1256743195" MODIFIED="1518487921097" TEXT="Shutdown-Flag verwalten"/>
<node CREATED="1481831886448" ID="ID_1022163658" MODIFIED="1518487921097" TEXT="Betriebszustand">
<icon BUILTIN="info"/>
<node CREATED="1481831945472" ID="ID_756400184" MODIFIED="1518487921097" TEXT="arbeitend"/>
<node CREATED="1481831948240" ID="ID_349500680" MODIFIED="1518487921097" TEXT="Leerlauf"/>
<node CREATED="1481831950160" ID="ID_602481733" MODIFIED="1518487921097" TEXT="gesperrt"/>
<node CREATED="1481831965253" ID="ID_1644273707" MODIFIED="1518487921097" TEXT="sterbend"/>
</node>
<node CREATED="1481831638089" ID="ID_209292609" MODIFIED="1518487921097" TEXT="Builder steuern">
<arrowlink COLOR="#5242a4" DESTINATION="ID_1311208726" ENDARROW="Default" ENDINCLINATION="2;-45;" ID="Arrow_ID_313252247" STARTARROW="None" STARTINCLINATION="-186;-13;"/>
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1481831642376" ID="ID_1301681872" MODIFIED="1518487921097" TEXT="Checkpoint bieten">
<icon BUILTIN="button_ok"/>
<node CREATED="1482365008444" ID="ID_1520027430" MODIFIED="1518487921097" TEXT="warum">
<icon BUILTIN="help"/>
</node>
<node CREATED="1482365012947" ID="ID_10844185" MODIFIED="1518487921097" TEXT="um zuverl&#xe4;ssig anhalten zu k&#xf6;nnen"/>
<node CREATED="1482712199900" ID="ID_1990071363" MODIFIED="1518487921097" TEXT="Checkpoint == Zustand ausgeglichen">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1482712212930" ID="ID_1065088226" MODIFIED="1518487921097" TEXT="das hei&#xdf;t">
<icon BUILTIN="info"/>
<node CREATED="1482712227048" ID="ID_172281578" MODIFIED="1518487921097" TEXT="keine schwebenden Zustands&#xe4;nderungen"/>
<node CREATED="1482712235016" ID="ID_943771142" MODIFIED="1518487921097" TEXT="Alle zustands-Relevanten &#xc4;nderungen sind ausgewertet"/>
<node CREATED="1482712250461" ID="ID_610930154" MODIFIED="1518487921097" TEXT="alle Pr&#xe4;dikate spiegeln den wirklichen Zustand wider"/>
<node CREATED="1482712261876" ID="ID_47966817" MODIFIED="1518487921097">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Kontrollflu&#223; ist <i>nicht</i>&#160;in einer Arbeitsfunktion
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
<node CREATED="1481831747042" ID="ID_134003952" MODIFIED="1576282357960" TEXT="sperrbar sein">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...und dann nur noch
    </p>
    <ul>
      <li>
        auf Shutdown reagieren
      </li>
      <li>
        mitbekommen wenn die Sperre aufgehoben wird
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node CREATED="1481778590790" ID="ID_1748096848" MODIFIED="1538871175327" TEXT="Anhalten">
<linktarget COLOR="#10f1a2" DESTINATION="ID_1748096848" ENDARROW="Default" ENDINCLINATION="-480;-82;" ID="Arrow_ID_506637666" SOURCE="ID_1844558240" STARTARROW="None" STARTINCLINATION="-200;38;"/>
<node CREATED="1481778666820" ID="ID_1860590145" MODIFIED="1518487921097" TEXT="Trigger-Variable im Looper">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1481917462421" ID="ID_200909201" MODIFIED="1518487921097" TEXT="shutdown-Trigger ebenda">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1481917478412" ID="ID_594556769" MODIFIED="1518487921097" TEXT="kombiniert enabled und shutdown">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1481778708207" FOLDED="true" HGAP="50" ID="ID_1311208726" MODIFIED="1561827466199" TEXT="Builder-Steuerung">
<linktarget COLOR="#5242a4" DESTINATION="ID_1311208726" ENDARROW="Default" ENDINCLINATION="2;-45;" ID="Arrow_ID_313252247" SOURCE="ID_209292609" STARTARROW="None" STARTINCLINATION="-186;-13;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1481828478741" ID="ID_1706868067" MODIFIED="1518487921097" TEXT="Hysterese"/>
<node CREATED="1481828498618" ID="ID_321199314" MODIFIED="1518487921097" TEXT="nach neuem Command, mit kleiner Verz&#xf6;gerung"/>
<node CREATED="1481828520176" ID="ID_239973202" MODIFIED="1518487921097" TEXT="bei voller Schlange mit Toleranzschwelle"/>
<node CREATED="1481828568129" ID="ID_295162940" MODIFIED="1518487921097" TEXT="Builder-Lauf ist monolithisch"/>
<node CREATED="1481928858318" ID="ID_1695005029" MODIFIED="1518487921097" TEXT="verdecken...">
<node CREATED="1481928864549" ID="ID_515765693" MODIFIED="1518487921097" TEXT="wenn gesperrt"/>
<node CREATED="1481928867893" ID="ID_1200076817" MODIFIED="1518487921097" TEXT="wenn in Shutdown"/>
</node>
<node CREATED="1481928874500" ID="ID_73724471" MODIFIED="1518487921097" TEXT="idle-timeout">
<node CREATED="1481928882723" ID="ID_770033134" MODIFIED="1518487921097" TEXT="dynamisch steuern">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1481928888035" ID="ID_927205346" MODIFIED="1518487921097" TEXT="kurz, wenn der Builder laufen mu&#xdf;">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1481928913687" ID="ID_696704157" MODIFIED="1518487921097" TEXT="lang sonst">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1481928939300" ID="ID_1625916543" MODIFIED="1518487921097" TEXT="kein Timeout wenn gesperrt">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1481928958233" ID="ID_350657817" MODIFIED="1518487921097" TEXT="Builder-Lauf erzwingen">
<icon BUILTIN="button_ok"/>
<node CREATED="1481928966167" ID="ID_1511723472" MODIFIED="1518487921097" TEXT="wenn lange Timeout-Spanne &#xfc;berschritten"/>
<node CREATED="1481928978223" ID="ID_106761868" MODIFIED="1518487921097" TEXT="Implementierung erfordert Zeitmessung">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1482365133332" ID="ID_99275973" MODIFIED="1518487921097" TEXT="moderne / zeitgem&#xe4;&#xdf;e Implementierung">
<icon BUILTIN="help"/>
</node>
<node CREATED="1482365613228" ID="ID_1195899391" MODIFIED="1518487921097">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <i>billig:</i>&#160;unsere Zeit-Lib nutzen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
<node CREATED="1482430715396" ID="ID_1005651794" MODIFIED="1518487921098" TEXT="nicht besonders sch&#xf6;n">
<icon BUILTIN="smily_bad"/>
</node>
<node CREATED="1482430724019" ID="ID_880234680" MODIFIED="1518487921098" TEXT="sollte mit std::chrono integrieren">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node CREATED="1482202066204" HGAP="23" ID="ID_41541843" MODIFIED="1518487921098" TEXT="L&#xf6;sungnsansatz" VSHIFT="16">
<icon BUILTIN="help"/>
<node CREATED="1482202080675" ID="ID_12774028" MODIFIED="1518487921098" TEXT="CommandQueue mu&#xdf; helfen und dirty-state verwalten">
<icon BUILTIN="button_cancel"/>
<node CREATED="1482202099752" ID="ID_434677221" MODIFIED="1518487921098" TEXT="geht, weil sie wei&#xdf;, wann ein Command wirklich l&#xe4;uft"/>
<node CREATED="1482202114630" ID="ID_1833945556" MODIFIED="1518487921098" TEXT="unsch&#xf6;n, weil wir nun massive Kopplung haben"/>
</node>
<node CREATED="1482202127252" ID="ID_1720469294" MODIFIED="1518487921098" TEXT="Looper in State-machine verwandeln">
<icon BUILTIN="button_ok"/>
<node CREATED="1482202136235" ID="ID_239151488" MODIFIED="1518487921098" TEXT="schwierig">
<icon BUILTIN="stop-sign"/>
</node>
<node CREATED="1482202142818" ID="ID_1412852448" MODIFIED="1518487921098" TEXT="ben&#xf6;tigt Hilfe von der DispatcherLoop">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1482202156416" ID="ID_1161547825" MODIFIED="1518487921098" TEXT="geht aber: nach jedem WHILE-Durchlauf">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1482202165423" ID="ID_1845799711" MODIFIED="1518487921098" TEXT="schaut sauberer aus">
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1482202187620" ID="ID_259250017" MODIFIED="1518487921098" TEXT="geht das &#xfc;berhaupt">
<icon BUILTIN="help"/>
<node CREATED="1482375716922" ID="ID_1702615812" MODIFIED="1518487921098" TEXT="ja">
<icon BUILTIN="forward"/>
</node>
<node CREATED="1482375724321" ID="ID_218202011" MODIFIED="1518487921098" TEXT="einfacher trap-door-Mechanismus">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1482375737327" ID="ID_1980564250" MODIFIED="1518487921098" TEXT="tendentiell bereits schwer zu verstehen">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1482202207242" ID="ID_1287224856" MODIFIED="1518487921098" TEXT="Test">
<icon BUILTIN="button_ok"/>
<node CREATED="1482202211049" ID="ID_1159832087" MODIFIED="1518487921098" TEXT="komplexen Ablauf als Szenario durchspielen">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1482375826635" ID="ID_1275445978" MODIFIED="1518487921098" TEXT="beinhaltet auch einen Timeout">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1482202223536" ID="ID_374030732" MODIFIED="1518487921098">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Logik im Looper auf Basis
    </p>
    <p>
      generischer &#220;berlegungen implementiert
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1482202243253" ID="ID_1342399342" MODIFIED="1518487921098" TEXT="verh&#xe4;lt er sich dann richtig">
<icon BUILTIN="help"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1533401628689" HGAP="7" ID="ID_36032481" MODIFIED="1557498707237" TEXT="Builder" VSHIFT="9">
<font NAME="SansSerif" SIZE="16"/>
<icon BUILTIN="hourglass"/>
<node COLOR="#435e98" CREATED="1533401646479" ID="ID_305001887" MODIFIED="1557498707237" TEXT="das gro&#xdf;e wartende MEGA-Integrations-Thema">
<font NAME="SansSerif" SIZE="12"/>
</node>
<node CREATED="1680563617807" ID="ID_1592313170" MODIFIED="1680563626215" TEXT="vorl&#xe4;ufig...">
<node CREATED="1680563627851" ID="ID_804147257" MODIFIED="1680563627851" TEXT="Fake-build: einfacher Clip">
<linktarget COLOR="#fec499" DESTINATION="ID_804147257" ENDARROW="Default" ENDINCLINATION="-696;77;" ID="Arrow_ID_521000760" SOURCE="ID_573821275" STARTARROW="None" STARTINCLINATION="-206;21;"/>
</node>
</node>
</node>
</node>
<node CREATED="1448314932726" ID="ID_669869188" MODIFIED="1557498707237" POSITION="right" TEXT="Render">
<icon BUILTIN="stop"/>
<node CREATED="1512923568305" ID="ID_1329323311" MODIFIED="1557498707237" TEXT="Player">
<node CREATED="1512923658341" ID="ID_1855109590" MODIFIED="1557498707237" TEXT="Interface">
<node CREATED="1681597122589" ID="ID_1328094537" MODIFIED="1681597126593" TEXT="Spec">
<node CREATED="1681597127282" ID="ID_761595186" MODIFIED="1681597130528" TEXT="Timings">
<node CREATED="1681597133168" ID="ID_1308926052" MODIFIED="1681597148947">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Zeitma&#223; f&#252;r <i>diesen </i>Wiedergabevorgang
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1681597167602" ID="ID_205208976" MODIFIED="1681597182099" TEXT="playbackUrgency = {ASAP,NICE,TIMEBOUND}"/>
<node CREATED="1681597212993" ID="ID_615732474" MODIFIED="1681597273762" TEXT="scheduledDelivery(nur TIMEBOUND) &#x2254; &#xbb;wall clock time&#xab; des Grid-Ursprungs">
<arrowlink COLOR="#b7376e" DESTINATION="ID_92039924" ENDARROW="Default" ENDINCLINATION="238;-13;" ID="Arrow_ID_1490237982" STARTARROW="None" STARTINCLINATION="311;12;"/>
</node>
</node>
</node>
</node>
<node CREATED="1512923661892" ID="ID_1580804608" MODIFIED="1557498707237" TEXT="Control">
<node CREATED="1681685173232" ID="ID_1497274477" MODIFIED="1681685179516" TEXT="Play-controller">
<node CREATED="1698871164434" ID="ID_779543101" MODIFIED="1698871172213" TEXT="Einrichten von Play-Prozessen"/>
<node CREATED="1698871173202" ID="ID_637667970" MODIFIED="1698871244822" TEXT="State-Machine">
<arrowlink COLOR="#4746b9" DESTINATION="ID_835313470" ENDARROW="Default" ENDINCLINATION="-257;-27;" ID="Arrow_ID_227028277" STARTARROW="None" STARTINCLINATION="-145;60;"/>
<node CREATED="1698871188696" ID="ID_803886546" MODIFIED="1698871193035" TEXT="transient changes"/>
<node CREATED="1698871193535" ID="ID_1512231483" MODIFIED="1698871196378" TEXT="breaking changes"/>
</node>
</node>
<node CREATED="1681685180222" ID="ID_1922002466" MODIFIED="1681685183138" TEXT="Play-Process"/>
<node CREATED="1681685183696" ID="ID_453528685" MODIFIED="1681685186032" TEXT="CalcStream">
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1683764496171" ID="ID_1519871278" MODIFIED="1683764510173" TEXT="Definition">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node CREATED="1683764524455" ID="ID_225445096" MODIFIED="1683764836855" TEXT="jeder CalcStream korrespondiert zu einem realen Daten-Strom">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Und zwar 1:1
    </p>
    <ul>
      <li>
        hierbei bedeutet &#187;Datenstrom&#171; eine Folge von Daten-Frames, die in <i>timed delivery</i>&#160;&#252;bergeben werden
      </li>
      <li>
        jeder Datenstrom entspricht <i>genau einer Instanz</i>&#160;eines Protokolls zur Puffer-&#220;bergabe
      </li>
      <li>
        jeder Datenstrom kann <i>f&#252;r sich gesondert</i>&#160;unterbrochen sein, sich verz&#246;gern und hat eine einzige, wohldefinierte Stromgeschwindigkeit
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1683764857963" ID="ID_852816952" MODIFIED="1683765160558" TEXT="ein CalcStream kann durchaus mehrere Berechnungs-Str&#xe4;nge f&#xfc;r logische Kan&#xe4;le beinhalten">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Aber nur, insofern diese logischen Kan&#228;le in den einzigen Datenstrom einflie&#223;en, und stets geb&#252;ndelt auftreten; sie m&#252;ssen hierf&#252;r durch einen Multiplex-Schritt in einen Datenstrom zusammengef&#252;hrt werden. Die rein logische Ordnung der Kan&#228;le zu einem Medium ist bedeutungslos; was z&#228;hlt ist was konkret in einem Strom hergestellt und geliefert werden mu&#223;
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1683764942060" ID="ID_272807498" MODIFIED="1683765236302" TEXT="ein CalcStream ist aber ein Unikat und ist nicht weiter differenzierbar">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Sofern eine CalcStream-Instanz besteht, bedeutet das, da&#223; Berechnungen laufen und Daten im Datenstrom anfallen. Ein Datenstrom ist insofern nicht weiter zerlegbar und auch nicht weiter parametrisierbar
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1681685187803" ID="ID_1654025761" MODIFIED="1698869904894" TEXT="Umbau 2023">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1681685197444" ID="ID_1313231227" MODIFIED="1681685335962" TEXT="kann man CalcStream move-only machen?">
<linktarget COLOR="#e0804f" DESTINATION="ID_1313231227" ENDARROW="Default" ENDINCLINATION="2513;164;" ID="Arrow_ID_861540006" SOURCE="ID_439004499" STARTARROW="None" STARTINCLINATION="686;-75;"/>
<icon BUILTIN="help"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1686695888671" ID="ID_1061886265" MODIFIED="1686696070777" TEXT="mu&#xdf; Zugang zum Dispatcher und ModelPort-Mapping vermitteln">
<linktarget COLOR="#b35d7b" DESTINATION="ID_1061886265" ENDARROW="Default" ENDINCLINATION="-1354;59;" ID="Arrow_ID_1911280206" SOURCE="ID_1778082418" STARTARROW="None" STARTINCLINATION="-1217;-45;"/>
<icon BUILTIN="yes"/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1686587670595" ID="ID_1397178542" MODIFIED="1686587735758" TEXT="RenderEnvironmentClosure">
<icon BUILTIN="info"/>
<node CREATED="1686587706724" ID="ID_1590315006" MODIFIED="1686587714337" TEXT="kennt die konkreten Timings"/>
<node CREATED="1686587714829" ID="ID_1834326796" MODIFIED="1686587726016" TEXT="kennt sinnvollerweise den ModelPort"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1686695997437" ID="ID_1676301176" MODIFIED="1686696013892" TEXT="mu&#xdf; bereits implizit auf eine Timeline festgelegt sein">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1686587807222" ID="ID_408686784" MODIFIED="1686696248703" TEXT="Dispatcher wird im CalcStream-ctor aufgerufen">
<linktarget COLOR="#7e59a0" DESTINATION="ID_408686784" ENDARROW="Default" ENDINCLINATION="531;627;" ID="Arrow_ID_1115341840" SOURCE="ID_1518154187" STARTARROW="None" STARTINCLINATION="2212;-102;"/>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1698869881413" ID="ID_594486869" MODIFIED="1698869889314" TEXT="Verbindung nach oben und unten">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1698869943277" ID="ID_1673323938" MODIFIED="1698869950487" TEXT="strukturell">
<node CREATED="1698869955868" ID="ID_1841694251" MODIFIED="1698869980788" TEXT="berechnet im Rahmen eines Play-Prozesses"/>
<node CREATED="1698869981842" ID="ID_191957834" MODIFIED="1698870006880" TEXT="auf einzelne ModelPorts heruntergebrochen"/>
<node CREATED="1698870070612" ID="ID_819396071" MODIFIED="1698870079805" TEXT="braucht Quellen und Senken"/>
<node CREATED="1698870019075" ID="ID_239624953" MODIFIED="1698870054242" TEXT="verankert ein RenderDrive"/>
<node CREATED="1698870091874" ID="ID_647946251" MODIFIED="1698870096253" TEXT="hat Betriebszustand">
<node CREATED="1698870104075" ID="ID_1771291843" MODIFIED="1698870107603" TEXT="laufend/pausiert"/>
<node CREATED="1698870108497" ID="ID_325646909" MODIFIED="1698870112858" TEXT="Stand/Fortschritt"/>
</node>
</node>
<node CREATED="1698873084866" ID="ID_1456507013" MODIFIED="1698873098700" TEXT="fliegende &#xc4;nderungen erm&#xf6;glichen">
<node CREATED="1698872727530" ID="ID_955918033" MODIFIED="1698873138080" TEXT="Manifestation-ID mitzuf&#xfc;hren">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      um fliegende &#196;nderungen durchf&#252;hren zu k&#246;nnen
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#684aa0" DESTINATION="ID_955918033" ENDARROW="Default" ENDINCLINATION="-785;72;" ID="Arrow_ID_1606662092" SOURCE="ID_1717369374" STARTARROW="None" STARTINCLINATION="-239;-19;"/>
<node CREATED="1698872967506" ID="ID_1562414462" MODIFIED="1698873747015" TEXT="durch Job-Planning durchgeben">
<arrowlink COLOR="#465596" DESTINATION="ID_66017169" ENDARROW="Default" ENDINCLINATION="661;-268;" ID="Arrow_ID_1020406097" STARTARROW="None" STARTINCLINATION="967;89;"/>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1698873077312" ID="ID_461425828" MODIFIED="1698873079087" TEXT="Aufbau"/>
</node>
<node CREATED="1685235060310" ID="ID_756189610" MODIFIED="1685235066850" TEXT="Steuerung der Timings">
<node CREATED="1685235106241" ID="ID_1118252767" MODIFIED="1685235110646" TEXT="Play-Modi">
<linktarget COLOR="#7c7b92" DESTINATION="ID_1118252767" ENDARROW="Default" ENDINCLINATION="28;123;" ID="Arrow_ID_485688053" SOURCE="ID_1134281208" STARTARROW="Default" STARTINCLINATION="-27;-30;"/>
<node CREATED="1685235134174" ID="ID_1510798334" MODIFIED="1685235162850" TEXT="ASAP ( &#x2259; &#xbb;freewheeling&#xab;)"/>
<node CREATED="1685235169786" ID="ID_1115240331" MODIFIED="1685235189342" TEXT="NICE (throtteled)"/>
<node CREATED="1685235189882" ID="ID_135856225" MODIFIED="1685235193367" TEXT="TIMEBOUND">
<node CREATED="1685235194618" ID="ID_1764599911" MODIFIED="1685235198389" TEXT="normale Wiedergabe"/>
<node CREATED="1685235200025" ID="ID_138155333" MODIFIED="1685235204223" TEXT="ggfs mit Speed-Faktor"/>
<node CREATED="1685235222582" ID="ID_176647138" MODIFIED="1685235224840" TEXT="setup">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685235225842" ID="ID_92039924" MODIFIED="1685235266821" TEXT="Timings werden mit scheduledDelivery initialisiert">
<linktarget COLOR="#b7376e" DESTINATION="ID_92039924" ENDARROW="Default" ENDINCLINATION="238;-13;" ID="Arrow_ID_1490237982" SOURCE="ID_615732474" STARTARROW="None" STARTINCLINATION="311;12;"/>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
</node>
<node CREATED="1685235111484" ID="ID_171207659" MODIFIED="1685235129154" TEXT="Umgang mit Slippage">
<node CREATED="1685235317993" ID="ID_881286142" MODIFIED="1685235327172" TEXT="M&#xf6;glichkeiten">
<node CREATED="1685235329248" ID="ID_277669126" MODIFIED="1685235371838" TEXT="Ziel-Grid verschieben (slip)"/>
<node CREATED="1685235340213" ID="ID_197210847" MODIFIED="1685235366742" TEXT="einzelne Frames fallen lassen (drop)"/>
<node CREATED="1685235373066" ID="ID_396967363" MODIFIED="1685235385412" TEXT="erkennen und anhalten (strict)"/>
</node>
<node CREATED="1685236445931" ID="ID_416061497" MODIFIED="1685236452637" TEXT="Probleme">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1685236454793" ID="ID_215956624" MODIFIED="1698872414679" TEXT="ASAP pa&#xdf;t konzeptionell nicht mit einem time-bound-Scheduler zusammen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <ul>
      <li>
        die Aufschl&#252;sselung nach Zeiten enth&#228;lt &#252;berall Puffer, die insgesamt zu einer Zeitverschwendung f&#252;hren
      </li>
      <li>
        normalerweise wird das Verletzen einer Deadline als Fehler interpretiert
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node CREATED="1698872380696" ID="ID_769948602" MODIFIED="1698872510316" TEXT="Ausweg: statistische Kapazit&#xe4;tssteuerung + verbindliche Zusagen">
<arrowlink COLOR="#feffb0" DESTINATION="ID_394986223" ENDARROW="Default" ENDINCLINATION="-162;-764;" ID="Arrow_ID_1487204658" STARTARROW="None" STARTINCLINATION="-1824;75;"/>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
<node CREATED="1698869460693" ID="ID_962702413" MODIFIED="1698869468399" TEXT="Koordination der Produkion">
<node CREATED="1698869489288" ID="ID_504483525" MODIFIED="1698869493587" TEXT="Ressourcen sicherstellen"/>
<node CREATED="1698869531658" ID="ID_1134281208" MODIFIED="1698870183858" TEXT="Nutz- und Produktionsmuster">
<arrowlink COLOR="#7c7b92" DESTINATION="ID_1118252767" ENDARROW="Default" ENDINCLINATION="28;123;" ID="Arrow_ID_485688053" STARTARROW="Default" STARTINCLINATION="-27;-30;"/>
<node CREATED="1698869545376" ID="ID_860434449" MODIFIED="1698869556379" TEXT="real-Time Playback"/>
<node CREATED="1698869558599" ID="ID_1781424291" MODIFIED="1698869563722" TEXT="live-Changes"/>
<node CREATED="1698869564758" ID="ID_1509867068" MODIFIED="1698869583648" TEXT="Quality-Render"/>
<node CREATED="1698869584575" ID="ID_112139960" MODIFIED="1698869591919" TEXT="Batch-Processing"/>
<node CREATED="1698869595154" ID="ID_312162121" MODIFIED="1698869600356" TEXT="Background-Processing"/>
</node>
<node CREATED="1698869712922" ID="ID_643790446" MODIFIED="1698869820416" TEXT="Play-Process Initiieren"/>
<node CREATED="1698869821061" ID="ID_835313470" MODIFIED="1698871232359" TEXT="fliegende &#xc4;nderungen">
<linktarget COLOR="#4746b9" DESTINATION="ID_835313470" ENDARROW="Default" ENDINCLINATION="-257;-27;" ID="Arrow_ID_227028277" SOURCE="ID_637667970" STARTARROW="None" STARTINCLINATION="-145;60;"/>
<node CREATED="1698871782376" ID="ID_1312153459" MODIFIED="1698871789531" TEXT="transienten Zustand propagieren"/>
<node CREATED="1698871790767" ID="ID_243027061" MODIFIED="1698871806641" TEXT="inkompatible &#xc4;nderungen ">
<node CREATED="1698871819483" ID="ID_610879765" MODIFIED="1698871829320" TEXT="konstituieren"/>
<node CREATED="1698871844450" ID="ID_676384691" MODIFIED="1698871848589" TEXT="durch Abl&#xf6;sen und Neubauen"/>
<node CREATED="1698872580749" ID="ID_970878575" MODIFIED="1698872631002" TEXT="durch Markieren einer Manifestation">
<node CREATED="1698872632278" ID="ID_1717369374" MODIFIED="1698873148240" TEXT="als ID im CalcStream verankert">
<arrowlink COLOR="#684aa0" DESTINATION="ID_955918033" ENDARROW="Default" ENDINCLINATION="-785;72;" ID="Arrow_ID_1606662092" STARTARROW="None" STARTINCLINATION="-239;-19;"/>
</node>
<node CREATED="1698872662986" ID="ID_643800031" MODIFIED="1698873883197" TEXT="ManifestationID im Scheduler erm&#xf6;glicht Abl&#xf6;sung">
<arrowlink COLOR="#9b4276" DESTINATION="ID_167266149" ENDARROW="Default" ENDINCLINATION="-856;-92;" ID="Arrow_ID_1049575123" STARTARROW="None" STARTINCLINATION="-524;32;"/>
</node>
</node>
</node>
</node>
<node CREATED="1698869828965" ID="ID_762567944" MODIFIED="1698869841001" TEXT="Fehler und Abschlu&#xdf;"/>
</node>
</node>
<node CREATED="1512923672275" ID="ID_1369059082" MODIFIED="1557498707237" TEXT="Wiring"/>
<node CREATED="1512923682530" ID="ID_1204903801" MODIFIED="1557498707237" TEXT="Planning">
<node CREATED="1512925214070" ID="ID_491842947" MODIFIED="1557498707237" TEXT="1.Entwurf">
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1512925217693" ID="ID_704714253" MODIFIED="1681837087287" TEXT="war seit 2012 steckengeblieben...">
<icon BUILTIN="smily_bad"/>
</node>
<node CREATED="1512925253328" HGAP="42" ID="ID_946385163" MODIFIED="1681168718652" TEXT="JobTicket" VSHIFT="-4">
<arrowlink COLOR="#82597c" DESTINATION="ID_922277724" ENDARROW="Default" ENDINCLINATION="43;-81;" ID="Arrow_ID_941233317" STARTARROW="None" STARTINCLINATION="-124;34;"/>
<node CREATED="1681166276225" ID="ID_1126956080" MODIFIED="1681168794426" TEXT="Konzept: Execution-Plan f&#xfc;r ein (Segment, ModelPort)">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      gedacht als ein strukturelles Verzeichnis oder eine Facade, die gleicherma&#223;en f&#252;r die Planung und die Ausf&#252;hrung nutzbar ist; dadurch sind beide Belange von der Struktur des low-level-Model entkoppelt
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1686873541317" ID="ID_1804172635" MODIFIED="1686873628786" TEXT="eng mit dem Monaden-basierten Auswertungsmechanismus verwoben">
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#5b280f" CREATED="1686873563463" ID="ID_1311610646" MODIFIED="1686873630966" TEXT="enth&#xe4;lt Differenzierung f&#xfc;r mehrere Channels">
<icon BUILTIN="button_cancel"/>
<node COLOR="#338800" CREATED="1686873634808" ID="ID_44461929" MODIFIED="1686873638856" TEXT="zur&#xfc;ckgebaut">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1686873575574" ID="ID_1754560865" MODIFIED="1686873615335" TEXT="Umbau: mit neuer Struktur ohne Monaden nutzbar machen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1686873596600" ID="ID_1924946981" MODIFIED="1687456456197" TEXT="Umbau: nun unter / hinter das JobPlanning legen">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1686873681722" ID="ID_574294902" MODIFIED="1686873692546" TEXT="in neuen Dispatcher + RenderDrive integriert">
<icon BUILTIN="hourglass"/>
</node>
</node>
<node CREATED="1512925246057" ID="ID_181262071" MODIFIED="1686839807822" TEXT="JobPlanning">
<linktarget COLOR="#5379b5" DESTINATION="ID_181262071" ENDARROW="Default" ENDINCLINATION="-150;-386;" ID="Arrow_ID_1786254694" SOURCE="ID_1543264108" STARTARROW="Default" STARTINCLINATION="-1298;0;"/>
<linktarget COLOR="#596573" DESTINATION="ID_181262071" ENDARROW="Default" ENDINCLINATION="336;992;" ID="Arrow_ID_1922586461" SOURCE="ID_608495626" STARTARROW="None" STARTINCLINATION="253;-27;"/>
<node CREATED="1535892806131" ID="ID_513357674" MODIFIED="1535892890103" TEXT="k&#xf6;nnte eine Monade sein.....?">
<arrowlink COLOR="#6c79a2" DESTINATION="ID_1502143527" ENDARROW="Default" ENDINCLINATION="-606;743;" ID="Arrow_ID_616092581" STARTARROW="None" STARTINCLINATION="229;19;"/>
<icon BUILTIN="help"/>
</node>
<node CREATED="1535891554587" ID="ID_185594200" MODIFIED="1687443459355" TEXT="Implementierung beruht auf IterExplorer">
<arrowlink COLOR="#625975" DESTINATION="ID_409327286" ENDARROW="Default" ENDINCLINATION="-843;1771;" ID="Arrow_ID_86323098" STARTARROW="None" STARTINCLINATION="-493;-1123;"/>
<node COLOR="#338800" CREATED="1680567733451" ID="ID_896127270" MODIFIED="1687456300887" TEXT="Kritik / Refactoring Monaden">
<linktarget COLOR="#2c9fa6" DESTINATION="ID_896127270" ENDARROW="Default" ENDINCLINATION="-1310;-138;" ID="Arrow_ID_1052952035" SOURCE="ID_30857289" STARTARROW="None" STARTINCLINATION="-424;31;"/>
<linktarget COLOR="#3598d7" DESTINATION="ID_896127270" ENDARROW="Default" ENDINCLINATION="-1096;-80;" ID="Arrow_ID_1764912075" SOURCE="ID_1805461369" STARTARROW="None" STARTINCLINATION="-511;24;"/>
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#a51558" CREATED="1680568362230" ID="ID_1855480415" MODIFIED="1680568445542" TEXT="Problem: Code selbst f&#xfc;r micht nicht mehr verst&#xe4;ndlich">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...und das liegt genau daran, da&#223; die Monaten auf eine rein-abstrakte strukturelle Eigenschaft hin abstrahieren, welche nicht in der Natur der verhandelten Dinge verwurzelt ist
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#435e98" CREATED="1680568453218" FOLDED="true" ID="ID_1951039343" MODIFIED="1681511763512" TEXT="was passiert in job-planning.hpp?">
<icon BUILTIN="help"/>
<node CREATED="1681007533926" ID="ID_282014609" MODIFIED="1681007543121" TEXT="der schrittweise Planungsmechanismus">
<node CREATED="1681007545653" ID="ID_1444648679" MODIFIED="1681007547984" TEXT="gegeben....">
<node CREATED="1681076758382" ID="ID_1270706413" MODIFIED="1681076762624" TEXT="ein JobTicket"/>
<node CREATED="1681076774890" ID="ID_402478510" MODIFIED="1681076778189" TEXT="Timings"/>
<node CREATED="1681076778945" ID="ID_460925627" MODIFIED="1681076788146" TEXT="ein TimeAnchor"/>
</node>
<node CREATED="1681077108429" ID="ID_176137428" MODIFIED="1681077120991" TEXT="f&#xfc;r jeden Chunk...">
<node CREATED="1681077129282" ID="ID_1894061712" MODIFIED="1681086711663" TEXT="erzeuge JobPlanningSequence">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      <font face="Monospaced" size="2" color="#431818">&#160;&#160;void </font>
    </p>
    <p>
      <font face="Monospaced" size="2" color="#431818">&#160;&#160;CalcPlanContinuation::performJobPlanningChunk(FrameCnt nextStartFrame) </font>
    </p>
    <p>
      <font face="Monospaced" size="2" color="#431818">&#160;&#160;{ </font>
    </p>
    <p>
      <font face="Monospaced" size="2" color="#431818">&#160;&#160;&#160;&#160;TimeAnchor refPoint(timings_, nextStartFrame); </font>
    </p>
    <p>
      <font face="Monospaced" size="2" color="#431818">&#160;&#160;&#160;&#160;JobPlanningSequence jobs = dispatcher_.onCalcStream(modelPort_, channel_) </font>
    </p>
    <p>
      <font face="Monospaced" size="2" color="#431818">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;.establishNextJobs(refPoint); </font>
    </p>
    <p>
      <font face="Monospaced" size="2" color="#431818">&#160;&#160;&#160; </font>
    </p>
    <p>
      <font face="Monospaced" size="2" color="#431818">&#160;&#160;&#160;&#160;Job nextChunkOfPlanning = buildFollowUpJobFrom (refPoint); </font>
    </p>
    <p>
      <font face="Monospaced" size="2" color="#431818">&#160;&#160;&#160; </font>
    </p>
    <p>
      <font face="Monospaced" size="2" color="#431818">&#160;&#160;&#160;&#160;UNIMPLEMENTED (&quot;the actual meat: access the scheduler and fed those jobs&quot;); </font>
    </p>
    <p>
      <font face="Monospaced" size="2" color="#431818">&#160;&#160;} </font>
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#5478ca" DESTINATION="ID_1894061712" ENDARROW="Default" ENDINCLINATION="252;-178;" ID="Arrow_ID_1478605615" SOURCE="ID_789025207" STARTARROW="None" STARTINCLINATION="312;-20;"/>
<icon BUILTIN="forward"/>
<node CREATED="1681077176827" ID="ID_728712867" MODIFIED="1681077182993" TEXT="FrameCoord des Ankerpunktes"/>
<node CREATED="1681077183565" ID="ID_96294471" MODIFIED="1681077188182" TEXT="Referenz auf den Dispatcher"/>
</node>
<node CREATED="1681089094840" ID="ID_573422091" MODIFIED="1681089145775" TEXT="hier steigen wir direkt in die Monaden-Kacke ein">
<arrowlink COLOR="#983ab0" DESTINATION="ID_256520127" ENDARROW="Default" ENDINCLINATION="34;-147;" ID="Arrow_ID_1652427615" STARTARROW="None" STARTINCLINATION="-162;10;"/>
</node>
</node>
<node CREATED="1681076854338" ID="ID_137032068" MODIFIED="1681076861563" TEXT="f&#xfc;r jeden Schritt...">
<node CREATED="1681076862694" ID="ID_474923430" MODIFIED="1681076918874" TEXT="baue aus TimeAnchor + offset &#x27fc; FrameCoord"/>
<node CREATED="1681076958274" ID="ID_1344252073" MODIFIED="1681076960709" TEXT="FrameCoord">
<node CREATED="1681076962646" MODIFIED="1681076962646" TEXT="TimeVar  absoluteNominalTime;"/>
<node CREATED="1681076962646" MODIFIED="1681076962646" TEXT="FrameCnt absoluteFrameNumber;"/>
<node CREATED="1681076962646" ID="ID_1729128720" MODIFIED="1681076962646" TEXT="TimeVar absoluteRealDeadline;"/>
<node CREATED="1681076962646" ID="ID_1261272955" MODIFIED="1681076962646" TEXT="ModelPort modelPort;"/>
<node CREATED="1681076962646" ID="ID_1120839302" MODIFIED="1681076962646" TEXT="uint      channelNr;"/>
</node>
</node>
<node CREATED="1681079892096" ID="ID_1253755992" MODIFIED="1681079896243" TEXT="Fortsetzung">
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1681082667504" ID="ID_547789227" MODIFIED="1681082717761" TEXT="CalcPlanContinuation">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1681086511956" ID="ID_456223503" MODIFIED="1681086520396" TEXT="ist selber eine JobClosure"/>
<node CREATED="1681086553182" ID="ID_789025207" MODIFIED="1681086615083" TEXT="invokeJobOperation() &#x27f9; performJobPlanningChunk">
<arrowlink COLOR="#5478ca" DESTINATION="ID_1894061712" ENDARROW="Default" ENDINCLINATION="252;-178;" ID="Arrow_ID_1478605615" STARTARROW="None" STARTINCLINATION="312;-20;"/>
</node>
</node>
<node BACKGROUND_COLOR="#fefc4e" COLOR="#351d75" CREATED="1681082677502" ID="ID_1891825875" MODIFIED="1681082693386" TEXT="hier steckt die Planungs-Logik">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1681089112917" ID="ID_256520127" MODIFIED="1681511734896" TEXT="was machen die Monaden hier?">
<linktarget COLOR="#983ab0" DESTINATION="ID_256520127" ENDARROW="Default" ENDINCLINATION="34;-147;" ID="Arrow_ID_1652427615" SOURCE="ID_573422091" STARTARROW="None" STARTINCLINATION="-162;10;"/>
<icon BUILTIN="help"/>
<node CREATED="1681089212896" ID="ID_337268997" MODIFIED="1681170523138" TEXT="JobPlanningSequence">
<linktarget COLOR="#b4597c" DESTINATION="ID_337268997" ENDARROW="Default" ENDINCLINATION="18;60;" ID="Arrow_ID_311262374" SOURCE="ID_1034254567" STARTARROW="None" STARTINCLINATION="-177;-12;"/>
<node CREATED="1681089218823" ID="ID_1821180666" MODIFIED="1681089224250" TEXT="ist eine Monade"/>
<node CREATED="1681089225590" ID="ID_871607291" MODIFIED="1681089236449" TEXT="stellt eine Sequenz geplanter Jobs dar"/>
</node>
<node CREATED="1681089479948" ID="ID_1765132212" MODIFIED="1681089502583" TEXT="der Typ-Kommentar &#xfc;ber JobPlanningSequence ist aufschlu&#xdf;reich">
<icon BUILTIN="forward"/>
<node CREATED="1681089505401" ID="ID_462054221" MODIFIED="1681089555850" TEXT="so gut es sein kann">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Hier zeigt sich das ganze Elend mit den Monaden: man mu&#223; dazu einen Leitfaden schreiben, anstatt da&#223; sie sich selber erkl&#228;ren w&#252;rden....
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1681089566409" ID="ID_1085499553" MODIFIED="1681089893458" TEXT="zweifelhaft dicht gepackter &#xbb;Twist&#xab;">
<node CREATED="1681089582543" ID="ID_965789758" MODIFIED="1681089609623" TEXT="einerseits eine Sequenz von JobPlanning-elementen"/>
<node CREATED="1681089611728" ID="ID_601644157" MODIFIED="1681089620757" TEXT="die dann aber wohl direkt konvertibel sind als Jobs"/>
<node CREATED="1681089660421" ID="ID_1491590859" MODIFIED="1681089670283" TEXT="aber die partielle Auswertung ist zugleich ein Planungs-Zustand"/>
<node CREATED="1681089690115" ID="ID_815917928" MODIFIED="1681089727285">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <font face="Monospaced" color="#d93278">expandPrerequisites</font>&#160;ist die Planungs-Operation und wird monadisch gebunden
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1681089744497" ID="ID_745863442" MODIFIED="1681089764956" TEXT="die Auswertung wird ge-seeded mit dem PlanningStepGenerator">
<node CREATED="1681089768902" ID="ID_1690425506" MODIFIED="1681089775563" TEXT="dieser erzeugt die Chunk-Struktur"/>
</node>
</node>
</node>
<node CREATED="1681089920298" ID="ID_923180973" MODIFIED="1681089925797" TEXT="unklare Nomenklatur">
<node CREATED="1681089943279" ID="ID_1215377203" MODIFIED="1681089946735" TEXT="Job"/>
<node CREATED="1681089940175" ID="ID_1162115878" MODIFIED="1681089942779" TEXT="JobPlanning">
<node CREATED="1681166025286" ID="ID_253282433" MODIFIED="1681166036328" TEXT="zentrale Status-View"/>
<node CREATED="1681166037181" ID="ID_1967937878" MODIFIED="1681166042520" TEXT="referenziert ">
<node CREATED="1681166052921" ID="ID_877761223" MODIFIED="1681166053958" TEXT="JobTicket::ExplorationState"/>
<node CREATED="1681166054906" ID="ID_112460186" MODIFIED="1681166060733" TEXT="FrameCoord"/>
</node>
<node CREATED="1681166081679" ID="ID_81862434" MODIFIED="1681166129475">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      ist eine <b>State-Core</b>&#160;( IterStateWrapper)
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1681166151117" ID="ID_1918457721" MODIFIED="1681166159224" TEXT="reduziertbar in einen Job"/>
</node>
<node CREATED="1681090084033" ID="ID_1968751118" MODIFIED="1681090086992" TEXT="PlanningState">
<node CREATED="1681170422864" ID="ID_1201866301" MODIFIED="1681170455125" TEXT="State-core-Iterator &#xfc;ber JobPlanning"/>
<node CREATED="1681170485540" ID="ID_1034254567" MODIFIED="1681170530962" TEXT="Verh&#xe4;ltnis zu JobPlanningSequence ist verwirrend">
<arrowlink COLOR="#b4597c" DESTINATION="ID_337268997" ENDARROW="Default" ENDINCLINATION="18;60;" ID="Arrow_ID_311262374" STARTARROW="None" STARTINCLINATION="-177;-12;"/>
<node CREATED="1681170600989" ID="ID_1127702818" MODIFIED="1681170615896" TEXT="es ist das Gleiche (nur nicht explizit dargestellt)"/>
<node CREATED="1681170616675" ID="ID_1213917365" MODIFIED="1681170632880" TEXT="liegt daran, da&#xdf; wir hier &#xbb;Monaden&#xab; nicht als Typklassen darstellen k&#xf6;nnen"/>
<node CREATED="1681170713246" ID="ID_678111828" MODIFIED="1681170747342" TEXT="C++ kennt keine partiell ausgewerteten rekursiven Typen"/>
<node CREATED="1681170750345" ID="ID_1806882257" MODIFIED="1681170768613" TEXT="JobPlanningSequence ist die fertig entfaltete Monade">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1681170811599" ID="ID_1363589659" MODIFIED="1681171010232">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <font color="#8d2828" face="Monospaced">SIG_expandPrerequisites</font>
    </p>
    <p>
      &#160;&#160;&#10233; per flatMap wird daraus ein <font face="Monospaced">PlanningState</font>&#160;&#8788; <font face="Monospaced">IterStateWrapper&lt;JobPlanning&gt;</font>
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1681171032503" ID="ID_1088269383" MODIFIED="1681171110306" TEXT="Kritik: unklar was hier &#x201e;state&#x201c; meint">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1681171111745" ID="ID_261557469" MODIFIED="1681171124803" TEXT="state: die StateCore, also JobPlanning"/>
<node COLOR="#d62a6d" CREATED="1681171170505" HGAP="29" ID="ID_519174430" MODIFIED="1681171183560" TEXT="&#x2260;" VSHIFT="1">
<font NAME="SansSerif" SIZE="13"/>
</node>
<node CREATED="1681171125559" ID="ID_150888686" MODIFIED="1681171143401" TEXT="state: die partielle Auswertung des Iterators, also PlanningState"/>
</node>
</node>
<node CREATED="1681090089907" ID="ID_1553722580" MODIFIED="1681090094599" TEXT="PlanningStepGenerator"/>
<node CREATED="1681090112749" ID="ID_528965729" MODIFIED="1681090113644" TEXT="ExpandedPlanningSequence">
<node CREATED="1681090118071" ID="ID_600100783" MODIFIED="1681090127602" TEXT="Ergebnistyp der FlatMap-Operation"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1681171685380" ID="ID_1860128661" MODIFIED="1681511730984" TEXT="wann / wie findet die eigentliche Planung(Auswertung) statt?">
<icon BUILTIN="help"/>
<node CREATED="1681171733502" ID="ID_433565768" MODIFIED="1681171751420" TEXT="expandPrerequisites(JobPlanning) wird monadisch gebunden (flatMap)"/>
<node CREATED="1681171757291" ID="ID_1142053734" MODIFIED="1681171885232">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Strategy:&#160;<font face="Monospaced" color="#3c41a3">lib::iter_explorer::RecursiveSelfIntegration</font>
    </p>
  </body>
</html></richcontent>
<node CREATED="1681172265271" ID="ID_770724358" MODIFIED="1681172273681" TEXT="zOMG">
<icon BUILTIN="smiley-angry"/>
</node>
<node CREATED="1681172281924" ID="ID_687991393" MODIFIED="1681179573174" TEXT="wertet depth-first aus bis zur H&#xfc;lle (Blatt-Ebene)"/>
<node CREATED="1681229060538" ID="ID_1426518727" MODIFIED="1681229100966" TEXT="verlagert Memory-Management per Extension-Point in den Payload-Typ"/>
<node CREATED="1681229106153" ID="ID_1596284582" MODIFIED="1681229132603" TEXT="tats&#xe4;chlich durchgereicht bis JobTicket::ExecutionState::push(subExploration)"/>
</node>
<node CREATED="1681229139349" ID="ID_149981075" MODIFIED="1681229216355">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      &#10233; die Auswertung und Organisation findet in <font color="#3f2257" face="Monospaced"><b>JobTicket::ExecutionState</b></font>&#160; statt
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1681249113814" HGAP="12" ID="ID_1134987645" MODIFIED="1681249480677" VSHIFT="4">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Monaden allein <b>leisten nicht</b>&#160;was hier ben&#246;tigt wird
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
<node CREATED="1681249199658" ID="ID_1832498470" MODIFIED="1681249214440">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      wir brauchen n&#228;mlich <b>rekursive Entfaltung</b>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1681249215248" ID="ID_515933435" MODIFIED="1681249303525">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Monad-bind <i>transformiert</i>&#160;und <i>expandiert</i>&#160;&#8212; jeweils nur einmal
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1681249520544" ID="ID_1957142208" MODIFIED="1681249556650">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      man <i>kann </i>die Tiefensuche extra noch hinzuf&#252;gen &#8212; als <b>Komplikation</b>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1681250256733" ID="ID_591477947" MODIFIED="1681250471971">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      dagegen das TreeExplorer::expand() ist <i><b>keine</b>&#160;monadische Operation</i>
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ....und zwar in mehrerlei Hinsicht....
    </p>
    <ul>
      <li>
        es wird in der Grundform nur explizit ausgel&#246;st
      </li>
      <li>
        expandierte und nicht expandierte Werte k&#246;nnen sich mischen
      </li>
      <li>
        Quell- und Ausgabe-Werte der Expander-Funktion m&#252;ssen kompatibel sein
      </li>
      <li>
        expandAll() bietet Auswertung-bis-zur-Ersch&#246;pfung, exponiert aber auch <b>alle Zwischenwerte</b>
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1681179592836" FOLDED="true" ID="ID_1534441402" MODIFIED="1687456297676" TEXT="Umbau-Planung">
<icon BUILTIN="list"/>
<node CREATED="1681179609394" ID="ID_655076663" MODIFIED="1681184137895" TEXT="Idee: JobPlanning direkt als StateCore nutzen">
<icon BUILTIN="idea"/>
<node CREATED="1681183957626" ID="ID_1460327799" MODIFIED="1681183981602" TEXT="Layer-1: Startpunkte f&#xfc;r Planning-Chunk"/>
<node CREATED="1681183982950" ID="ID_1134560942" MODIFIED="1681184074926" TEXT="Layer-2: Startpunkte in JobTickets &#xfc;bersetzen"/>
<node CREATED="1681184077058" ID="ID_1263780584" MODIFIED="1681184086844" TEXT="--Expander--"/>
<node CREATED="1681184116172" ID="ID_1292319298" MODIFIED="1681184131382" TEXT="Layer-3: Leaf-Tickets in Jobs &#xfc;bersetzen"/>
</node>
<node CREATED="1681179675524" ID="ID_1631190283" MODIFIED="1681179928963" TEXT="Custom-Allokator m&#xf6;glich: IterStack&lt;ResIter&gt; spezialisieren!">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      <font face="Monospaced" color="#5b232b">&#160;&#160;&#160;&#160;template&lt;class SRC&gt; </font>
    </p>
    <p>
      <font face="Monospaced" color="#5b232b">&#160;&#160;&#160;&#160;struct _DecoratorTraits&lt;SRC,&#160;&#160;&#160;enable_if&lt;is_StateCore&lt;SRC&gt;&gt;&gt; </font>
    </p>
    <p>
      <font face="Monospaced" color="#5b232b">&#160;&#160;&#160;&#160;&#160;&#160;{ </font>
    </p>
    <p>
      <font face="Monospaced" color="#5b232b">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;using SrcVal&#160;&#160;= typename CoreYield&lt;SRC&gt;::value_type; </font>
    </p>
    <p>
      <font face="Monospaced" color="#5b232b">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;using SrcIter = iter_explorer::IterableDecorator&lt;SrcVal, SRC&gt;; </font>
    </p>
    <p>
      <font face="Monospaced" color="#5b232b">&#160;&#160;&#160;&#160;&#160;&#160;}; </font>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node COLOR="#435e98" CREATED="1681181487438" ID="ID_1162267066" MODIFIED="1687444453838" TEXT="Frage: Memory-Footprint?">
<icon BUILTIN="help"/>
<node CREATED="1681229228809" ID="ID_208607615" MODIFIED="1681229238435" TEXT="auch die bestehende L&#xf6;sung braucht einen Stack"/>
<node CREATED="1681229243414" ID="ID_1553851683" MODIFIED="1681229405236" TEXT="dieser ist aber &#x201e;pfiffig&#x201c; in der Linked-List-Datenstruktur versteckt">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...und die Auswirkungen k&#246;nnen kaum sinnvoll vorhergesagt oder bewertet werden
    </p>
    <ul>
      <li>
        da wir die Datenstruktur nicht beliebig austauschen k&#246;nnen
      </li>
      <li>
        da sie mit dem Allokations-Schema verwoben ist
      </li>
      <li>
        da die erziehlbare Cache-Locality von den Anforderungen der <i>konkreten Render-Pipeline</i>&#160;abh&#228;ngt
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node CREATED="1681238369393" ID="ID_423908789" MODIFIED="1681238451197" TEXT="Ma&#xdf;gabe: Job-Planung mu&#xdf; lediglich &#xbb;abgespielt&#xab; werden">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      initial gibt es eine Allokation im AllocationCluster &#8212; ab diesem Teil soll die Planung weitgehend ohne &#8222;bewegliche Teile&#8220; ablaufen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1687444174519" ID="ID_1547339335" MODIFIED="1687444429968" TEXT="Grundsockel an Speicher stabilisiert sich im Lauf">
<richcontent TYPE="NOTE"><html>
  <head>
    
    
  </head>
  <body>
    <p>
      Einige Aspekte wachsen noch graduell, m&#246;glicherweise jedoch bis zum Ende 
      vom Playback
    </p>
    <ul>
      <li>
        besagter Stack f&#252;r die child-Prerequisites braucht Speicher gem&#228;&#223; 
        maximaler Rekursionstiefe (normalerweise wenig)
      </li>
      <li>
        in jedem neu ber&#252;hrtten Segment mu&#223; einmal das JobTicket aufgebaut 
        werden (wird dann aber von weiteren Play-Vorg&#228;ngen wiederverwendet)
      </li>
    </ul>
    <p>
      <font color="#1eac36">&#55357;&#56481;</font>&#160;abgesehen davon ist der Speicher stabil
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1687444439187" ID="ID_1133833184" MODIFIED="1687444451394" TEXT="neue L&#xf6;sung ist besser (nur eine Pipeline)">
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1681250556444" ID="ID_1991482624" MODIFIED="1681511717857" TEXT="Grundlegendes Auswertungs-Schema">
<icon BUILTIN="yes"/>
<node COLOR="#435e98" CREATED="1681250582708" ID="ID_1884826569" MODIFIED="1681511406548" TEXT="auf welcher Ebene wird die fortschreitende Planung angesetzt?">
<icon BUILTIN="help"/>
<node CREATED="1681250669452" ID="ID_1404510345" MODIFIED="1681511443549" TEXT="dar&#xfc;ber">
<arrowlink COLOR="#68678a" DESTINATION="ID_1399425577" ENDARROW="Default" ENDINCLINATION="-321;0;" ID="Arrow_ID_26789445" STARTARROW="None" STARTINCLINATION="-435;100;"/>
<icon BUILTIN="forward"/>
<node CREATED="1681250697202" ID="ID_591609787" MODIFIED="1681250718160" TEXT="die Pipeline beschreibt die fortlaufende Job-Planung l&#xfc;ckenlos"/>
<node CREATED="1681250769368" ID="ID_772063728" MODIFIED="1681250784298" TEXT="ein separater Taktgeber ist dar&#xfc;ber gesetzt..."/>
<node CREATED="1681250785294" ID="ID_1717449216" MODIFIED="1681250805743" TEXT="...und entnimmt jeweils einen &#xbb;chunk&#xab; an Planung"/>
</node>
<node CREATED="1681250684195" ID="ID_1446227888" MODIFIED="1681511427222" TEXT="darunter">
<icon BUILTIN="button_cancel"/>
<node CREATED="1681250819275" ID="ID_92926923" MODIFIED="1681250835367" TEXT="der &#xbb;chunk&#xab;-Taktgeber ist die Basis der Pipeline"/>
<node CREATED="1681250837199" ID="ID_947581885" MODIFIED="1681250885117" TEXT="jeder Schritt wird einmal monadisch entfaltet &#x27f6; Jobs f&#xfc;r einen &#xbb;chunk&#xab;"/>
<node CREATED="1681250898279" ID="ID_1453593011" MODIFIED="1681250924584" TEXT="der Konsument erkennt das Ende eines Chunk &#x2014; und pflanzt sich dann fort"/>
</node>
<node CREATED="1681250688531" ID="ID_1904669959" MODIFIED="1681511427227" TEXT="separat">
<icon BUILTIN="button_cancel"/>
<node CREATED="1681250972125" ID="ID_492221110" MODIFIED="1681250991302" TEXT="ein separater Dispatcher-Mechanismus konstruiert f&#xfc;r jeden &#xbb;chunk&#xab; eine Pipeline"/>
<node CREATED="1681251006417" ID="ID_115424466" MODIFIED="1681251032211" TEXT="der Planungs-Job konsumiert und wertet diese aus und generiert Jobs"/>
<node CREATED="1681251047923" ID="ID_1020628588" MODIFIED="1681251058990" TEXT="die Limitierung auf einen Chunk steckt in der Pipeline selber"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1681344133719" FOLDED="true" ID="ID_642967019" MODIFIED="1681424266741" TEXT="Diskussion">
<icon BUILTIN="info"/>
<node CREATED="1681344155430" ID="ID_1775975727" MODIFIED="1681344193644" TEXT="Separation of Concerns &#x27f9; spricht f&#xfc;r die reine l&#xfc;ckenlose Job-Planung"/>
<node CREATED="1681344197504" ID="ID_1110233377" MODIFIED="1681344469258" TEXT="das wirft das Problem auf: Invariante Time-Anchor &#x2261; alles bis dahin geregelt">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1681344478491" ID="ID_159991195" MODIFIED="1681344551872">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      wie erkennt man dies&#160;<i>von &#8222;oben&#8220; ?</i>
    </p>
  </body>
</html></richcontent>
<font NAME="SansSerif" SIZE="12"/>
</node>
<node CREATED="1681344561975" ID="ID_658725827" MODIFIED="1681344574018" TEXT="was hei&#xdf;t &#x201e;vollst&#xe4;ndig geregelt&#x201c;?"/>
<node CREATED="1681346552301" ID="ID_322305817" MODIFIED="1681346617402" TEXT="zun&#xe4;chst nur aus dem Planning-Chunk heraus explizit klar">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...denn es hei&#223;t, da&#223; die top-level-Jobs bis &lt;= der n&#228;chsten Deadline komplett entfaltet wurden
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
</node>
<node CREATED="1681346714903" ID="ID_1742816164" MODIFIED="1681346731768" TEXT="w&#xfc;rde bevorzugen, wenn die Deadline-Bestimmung ein lokales Detail bleibt">
<node CREATED="1681346762329" ID="ID_1402655083" MODIFIED="1681424061932" TEXT="Deadlines kann man nur mit Kenntnis der Dependencies festsetzen">
<arrowlink COLOR="#544b67" DESTINATION="ID_1191577011" ENDARROW="Default" ENDINCLINATION="22;-64;" ID="Arrow_ID_370847933" STARTARROW="None" STARTINCLINATION="-378;15;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1681347374347" ID="ID_594073373" MODIFIED="1681347486789" TEXT="&#x27f9; wirft die Frage auf, wie Dependencies fesgesetzt und aktualisiert werden">
<arrowlink COLOR="#9c738a" DESTINATION="ID_444443795" ENDARROW="Default" ENDINCLINATION="-1256;-1009;" ID="Arrow_ID_1047384894" STARTARROW="None" STARTINCLINATION="-902;35;"/>
<node CREATED="1681347495927" ID="ID_972266761" MODIFIED="1681347856721" TEXT="Modell-1: beim Planen vorsortieren">
<icon BUILTIN="button_cancel"/>
<node CREATED="1681347551175" ID="ID_875180659" MODIFIED="1681347563377" TEXT="bereits beim Planen wird ein Dependency-Graph aufgebaut"/>
<node CREATED="1681347564398" ID="ID_131120619" MODIFIED="1681347579368" TEXT="dieser wird dann traversiert, und die Deadlines werden r&#xfc;ckw&#xe4;rts festgesetzt"/>
</node>
<node CREATED="1681347514525" ID="ID_80362345" MODIFIED="1681347859365" TEXT="Modell-2: dynamisch konstituieren">
<icon BUILTIN="forward"/>
<node CREATED="1681347582164" ID="ID_278867248" MODIFIED="1681347600077" TEXT="den Jobs werden nur lokale Dependency-Beziehungen mitgegeben"/>
<node CREATED="1681347600785" ID="ID_48999687" MODIFIED="1681347611164" TEXT="au&#xdf;erdem bekommt jeder Job ein zun&#xe4;chst grobes Zeitfenster mit"/>
<node CREATED="1681347612232" ID="ID_1374144549" MODIFIED="1681347633816" TEXT="der Scheduler justiert die Zeitfenster dynamisch nach"/>
<node CREATED="1681347634500" ID="ID_1442392443" MODIFIED="1681347652126" TEXT="erst dadurch ergibt sich der globale Dependency-Graph als transitive H&#xfc;lle der Zeit-Sequenz"/>
</node>
</node>
<node CREATED="1681347681541" ID="ID_488964253" MODIFIED="1681396325874" TEXT="Modell-2 sieht richtig aus (ist aber auch anspruchsvoller)">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Es sieht f&#252;r mich dennoch nach dem erstrebenswerten Ansatz aus, da der Scheduler ja dynamisch nachjustieren soll, und daher ohnehin so eine Aktuaisierung der Zeitfenster machen mu&#223;; zudem w&#252;rde diese Berechnung und Steuerung nur intern im Scheduler stattfinden, und auch der Dispatch-Schritt w&#228;re noch im Wesentlichen deklarativ &#8212; er w&#252;rde nur eine heuristische Grob-Bestimmung der Zeitfenster vornehmen
    </p>
  </body>
</html></richcontent>
<node CREATED="1681398912107" ID="ID_845962402" MODIFIED="1681399086045" TEXT="Dependencies m&#xfc;ssen eigens repr&#xe4;sentiert werden">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...denn im JobTicket sind sie zwar explizit vorhanden, dieses ist aber nicht konkret instantiiert und gilt f&#252;r ein ganze Segment; mithin fehlt die Verbindung von einer Dependency zu dem konkreten Job, welcher diese Dependency realisiert. Im Gegensatz dazu ist <i>w&#228;hrend dem Dispatch-Schritt</i>&#160;diese Information implizit vorhanden, denn f&#252;r den Dispatch wird genau das JobTicket interpretiert, und die konkreten Jobs werden von diesem abgeleitet
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1681399099426" ID="ID_932754835" MODIFIED="1681399195400" TEXT="Diesem Dilemma kann man aber grunds&#xe4;tzlich nicht entgehen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Entweder, man verzichtet auf ein dynamisches Nachjustieren und l&#228;&#223;t die einmal eingef&#228;delten Berechnungen <i>einfach laufen</i>&#160;&#8212; oder man mu&#223; f&#252;r jede einzelne Berechnungkette die gesamte Dependency-Struktur <i>duplizieren und im Speicher halten.</i>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1681399845455" ID="ID_688481230" MODIFIED="1681399868776" TEXT="man kann aber limitieren, was &#xfc;berhaupt repr&#xe4;sentiert wird">
<icon BUILTIN="yes"/>
<node CREATED="1681399885521" ID="ID_1877681787" MODIFIED="1681399906234" TEXT="nur was einen tangiblen Effekt auf eine konkrete Berechnung hat"/>
<node CREATED="1681399906895" ID="ID_772103901" MODIFIED="1681399920265" TEXT="denn dieses mu&#xdf; ohnehin mit dieser konkreten Berechnung verlinkt sein"/>
<node CREATED="1681399949945" ID="ID_1604564614" MODIFIED="1681422135919">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      und man kann Nachfolger <i>benachrichtigen, </i>statt Vorg&#228;nger zu&#160;<i>suchen</i>
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1681422192014" ID="ID_686946668" MODIFIED="1681422278056" TEXT="&#x27f9; Verhalten und Benachrichtigungen planen &#x2014; ohne Dependencies explizit zu repr&#xe4;sentieren">
<arrowlink COLOR="#7c2e36" DESTINATION="ID_964028347" ENDARROW="Default" ENDINCLINATION="1221;-42;" ID="Arrow_ID_727391713" STARTARROW="None" STARTINCLINATION="-29;337;"/>
<font NAME="SansSerif" SIZE="12"/>
</node>
</node>
</node>
<node CREATED="1681422781457" ID="ID_1191577011" MODIFIED="1681424052805" TEXT="1-step lookahead ausnutzen">
<linktarget COLOR="#544b67" DESTINATION="ID_1191577011" ENDARROW="Default" ENDINCLINATION="22;-64;" ID="Arrow_ID_370847933" SOURCE="ID_1402655083" STARTARROW="None" STARTINCLINATION="-378;15;"/>
<icon BUILTIN="idea"/>
<node CREATED="1681422798726" ID="ID_679404345" MODIFIED="1681422879620" TEXT="das bekommen wir durch den Iterator &#x201e;for free&#x201c;">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...da man einen Lumiera-Forward-Iterator aktiv weiterschalten mu&#223;, aber stets auf das <i>aktuelle Element</i>&#160;zugreifen kann...
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1681422914837" ID="ID_709137224" MODIFIED="1681423016221" TEXT="ein &#xbb;Chunk&#xab; wird beendet wenn ein Job mit sp&#xe4;terer Deadline auftaucht"/>
<node CREATED="1681423023681" ID="ID_618849588" MODIFIED="1681423071566" TEXT="&#x27f9; das JobPlanning-Element mu&#xdf; ein Zeitfenster offenlegen">
<node CREATED="1681423079642" ID="ID_1790757865" MODIFIED="1681423118955" TEXT="Zeitpunkt der Planungs-Wiedervorlage &#x2260; Deadline"/>
<node CREATED="1681423128755" ID="ID_1032383879" MODIFIED="1681423175009" TEXT="Jeder Planungs-&#xbb;Chunk&#xab; hat eine abgedeckte Zeitspanne"/>
<node CREATED="1681423190299" ID="ID_1808919355" MODIFIED="1681423731839" TEXT="Prinzipiell ist die &#xbb;Chunk&#xab;-Einteilung beliebig">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...solange ein Planungs-&#187;Chunk&#171; hinreichend weit vor dem Ende seiner abgedeckten Zeitspanne aufgebaut wird; das Planungsintervall k&#246;nnte sogar dynamisch reguliert werden, wichtig ist nur, einen Mindest-Vorlauf vor der tats&#228;chlich abgedeckten Zeitspanne einzuhalten, so da&#223; idealerweise der n&#228;chste Planungs-&#187;Chunk&#171; bereits stattfindet, noch bevor die Deadlines f&#252;r den Vorg&#228;nger ganz abgelaufen sind. Denn unter diesen Umst&#228;nden m&#252;&#223;te nicht einmal ein vollst&#228;ndiger Dependency-Tree in einem Chunk abgearbeitet werden, solange nur die geplanten Jobs rechtzeitig in der Scheduler-Queue sind. Tats&#228;chlich aber tritt in unserem Iterator-Mechanismus der top-level Planungsschritt als erstes auf, und damit springt jeweils die Deadline um eine ganze Frame-Dauer in die Zukunft &#8212; dies w&#228;re dann in jedem Fall ein ganz klares Signal, um das &#220;berschreiten des zu planenden Zeitspanne zu erkennen
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
<node CREATED="1681423752401" ID="ID_1703609923" MODIFIED="1681423762827" TEXT="Fazit">
<icon BUILTIN="forward"/>
<node CREATED="1681423765518" ID="ID_1399425577" MODIFIED="1681424264776" TEXT="wir k&#xf6;nnen komplett trennen und die Pipeline ist nur noch die reine Planung">
<linktarget COLOR="#68678a" DESTINATION="ID_1399425577" ENDARROW="Default" ENDINCLINATION="-321;0;" ID="Arrow_ID_26789445" SOURCE="ID_1404510345" STARTARROW="None" STARTINCLINATION="-435;100;"/>
</node>
<node CREATED="1681423785083" ID="ID_83395390" MODIFIED="1681423811754" TEXT="das JobPlanning mu&#xdf; ein Zeitfenster sichtbar machen; das gen&#xfc;gt zur Planungs-Steuerung"/>
<node CREATED="1681423881164" ID="ID_947885657" MODIFIED="1681423903640" TEXT="die Job-Deskriptor-Datenstruktur wird erweitert, so da&#xdf; sie Scheduler-Actions beinhaltet"/>
<node CREATED="1681423904443" ID="ID_1758639000" MODIFIED="1681423917165" TEXT="&#xfc;ber diese Actions werden Dependency-Checks vorgeplant"/>
<node CREATED="1681423933821" ID="ID_1904536434" MODIFIED="1681423983716" TEXT="der Dispatcher sitzt dar&#xfc;ber und dient nur als &#xbb;Chunk&#xab;-Taktgeber"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1681424304209" HGAP="-38" ID="ID_722224370" MODIFIED="1681424867599" TEXT="Umbau-Schritte" VSHIFT="21">
<edge STYLE="linear"/>
<icon BUILTIN="flag-pink"/>
<node COLOR="#435e98" CREATED="1681424329079" ID="ID_292995208" MODIFIED="1686841541122" STYLE="bubble" TEXT="die Monaden enthalten keine substantielle Logik und k&#xf6;nnen einfach weggeworfen werden">
<edge COLOR="#725330"/>
<icon BUILTIN="full-1"/>
</node>
<node COLOR="#435e98" CREATED="1681424351736" ID="ID_141256625" MODIFIED="1687393283879" STYLE="bubble" TEXT="JobPlanning bleibt als Front-End/Strategy/StateCore erhalten (sp&#xe4;ter zu pr&#xfc;fen)">
<edge COLOR="#725330"/>
<icon BUILTIN="full-2"/>
</node>
<node COLOR="#435e98" CREATED="1681424610628" ID="ID_1888344503" MODIFIED="1687444497843" STYLE="bubble" TEXT="Dispatch so umschreiben, da&#xdf; er vom CalcDrive gesteuert wird">
<edge COLOR="#725330"/>
<arrowlink COLOR="#f4fec9" DESTINATION="ID_1928295133" ENDARROW="Default" ENDINCLINATION="-1068;-69;" ID="Arrow_ID_362199078" STARTARROW="None" STARTINCLINATION="1381;58;"/>
<icon BUILTIN="full-3"/>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1681424692274" ID="ID_1926192234" MODIFIED="1689001196260" STYLE="bubble" TEXT="Setup f&#xfc;r scheduler::Activity anlegen">
<edge COLOR="#725330"/>
<arrowlink COLOR="#f4fec9" DESTINATION="ID_688439359" ENDARROW="Default" ENDINCLINATION="-557;-136;" ID="Arrow_ID_1352278228" STARTARROW="None" STARTINCLINATION="1598;114;"/>
<icon BUILTIN="full-4"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1681424715326" ID="ID_566775911" MODIFIED="1681425341556" STYLE="bubble" TEXT="Job-Datenstruktur neu konzipieren">
<edge COLOR="#725330"/>
<arrowlink COLOR="#f4fec9" DESTINATION="ID_274575596" ENDARROW="Default" ENDINCLINATION="-522;-149;" ID="Arrow_ID_1673610733" STARTARROW="None" STARTINCLINATION="1598;114;"/>
<icon BUILTIN="full-5"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1681424909356" ID="ID_1912461724" MODIFIED="1687449596110" TEXT="Monaden-basierten IterExplorer zur&#xfc;ckbauen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1687449357545" ID="ID_404047671" MODIFIED="1687449591906" TEXT="HierarchyOrientationIndicator als Folge">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...auch das erscheint mir heute als eine Folge der <i>problematischen Monaden-Struktur</i>. In dem neueren Pipeline-Design liefert die Expand-Funktion eben ganz bewu&#223;t zun&#228;chst die Parent-Node, und dann erst die Kinder, bzw. man kann die Navigation sogar steuern (da expandChildren() explizit aufgerufen wird). Damit ist ein solcher Struktur-Marker gar nicht mehr notwendig. Diese These wird dadruch best&#228;titgt, da&#223; ich seither diverse rekursive Auswertungen implementiert habe, und nie mehr auf den HierarchyOrientationIndicator zur&#252;ckgekommen bin
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1687449598029" ID="ID_1969213651" MODIFIED="1687449617015" TEXT="alte Dispatcher und Job-Ticket-Impl stillgelegt">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1681424933809" ID="ID_377619970" MODIFIED="1687456440136" TEXT="Umbenennen: TreeExplorer &#x27fc; IterExplorer">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1681082793383" ID="ID_1314381934" MODIFIED="1681082807141" TEXT="Kritik Scheduler-Interface">
<icon BUILTIN="stop-sign"/>
<node CREATED="1681082814380" ID="ID_1475292843" MODIFIED="1681082839540" TEXT="wir dachten damals...">
<node CREATED="1681082840320" ID="ID_1603095908" MODIFIED="1681082845676" TEXT="C ist einfach"/>
<node CREATED="1681082846479" ID="ID_1336295362" MODIFIED="1681082850571" TEXT="deshalb ist es schnell"/>
<node CREATED="1681082851148" ID="ID_563185801" MODIFIED="1681082863297" TEXT="deshalb ist es gut f&#xfc;r die Aufgabe"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1681082876300" ID="ID_743791679" MODIFIED="1681082888427" TEXT="das ist eine Mystifikation">
<icon BUILTIN="stop-sign"/>
<node CREATED="1681082889754" ID="ID_1911631905" MODIFIED="1681082903428" TEXT="tats&#xe4;chlich gibt es performante Verarbeitungsmuster"/>
<node CREATED="1681082905864" ID="ID_1034659086" MODIFIED="1681082913243" TEXT="genauso wichtig ist aber klarer Code">
<node CREATED="1681082918734" ID="ID_1433754376" MODIFIED="1681082946174" TEXT="f&#xfc;r den Menschen"/>
<node CREATED="1681082932051" ID="ID_545301338" MODIFIED="1681082936956" TEXT="f&#xfc;r den Optimizer"/>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1681082963560" ID="ID_1172337937" MODIFIED="1681083058271" TEXT="nicht eine Sprache (C) oder eine Datenstruktur (LinkedList) ist substantiell &#x201e;performant&#x201c;">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990061" CREATED="1681083085671" ID="ID_670283864" MODIFIED="1681083328001" TEXT="Convey&apos;s Law">
<icon BUILTIN="messagebox_warning"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1681083093846" ID="ID_1045820854" MODIFIED="1681083294169" TEXT="der Scheduler ist eine denkbar ung&#xfc;nstige Schnittstelle zwischen verschiedenen Design-Stilen">
<icon BUILTIN="stop-sign"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1681083267223" ID="ID_1330479674" MODIFIED="1681083294171" TEXT="die Schnittstelle liegt an einer Grenze der Kopetenzen &#x2014; nicht einer Grenze der Dom&#xe4;nen">
<icon BUILTIN="stop-sign"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1681083159662" ID="ID_860686341" MODIFIED="1681083294170" TEXT="die Aufteilung in Session und Engine &#x27f9; zu einfaches mentales Modell">
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1681083619609" ID="ID_1647785356" MODIFIED="1681083636070" TEXT="Bessere L&#xf6;sung">
<icon BUILTIN="forward"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1681083639877" ID="ID_358030802" LINK="#ID_1372752844" MODIFIED="1681951396709" TEXT="klare performance-orientierte Datenstrukturen schaffen">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1681083683663" ID="ID_135955742" MODIFIED="1681084106386" TEXT="Job &#x27fc; Deskriptor(value, stateful)"/>
<node CREATED="1681083725400" ID="ID_201198910" MODIFIED="1681084115121" TEXT="JobFunktor &#x27fc; Strategy(reference, shared)"/>
<node CREATED="1681083935037" ID="ID_951868878" MODIFIED="1681084147700" TEXT="Activity &#x27fc; Verb(symbolic, algebraic)"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1681083656587" ID="ID_994543902" MODIFIED="1681084305066" TEXT="diese durchg&#xe4;ngig im gesamten Scheduler verwenden">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1681084260162" ID="ID_1346463753" MODIFIED="1681084305067">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Scheduler-Interface ist ein <b>Gefahren&#252;bergang</b>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1681084307651" ID="ID_876302640" MODIFIED="1681084319241" TEXT="Scheduler in zwei Layer zerlegen">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1681084330224" ID="ID_799114403" MODIFIED="1681084338824" TEXT="Eigentliche Schnittstellen">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1681084340127" ID="ID_396373123" LINK="#ID_1855109590" MODIFIED="1681085948888" TEXT="Interface: Player">
<font NAME="SansSerif" SIZE="12"/>
</node>
<node CREATED="1681085755729" ID="ID_859410938" LINK="#ID_667166448" MODIFIED="1681085948889" TEXT="Interface: Render Toolkit">
<font NAME="SansSerif" SIZE="12"/>
</node>
</node>
</node>
</node>
<node CREATED="1681511517424" ID="ID_1109133019" MODIFIED="1681511570233" TEXT="Aufteilung des eigentlichen Planungsvorgangs">
<node CREATED="1681511579310" ID="ID_1531444492" MODIFIED="1681511599329" TEXT="JobTicket stellt on-demand die Dependencies bereit"/>
<node CREATED="1681511631477" ID="ID_972174517" MODIFIED="1681511657301" TEXT="die Planungs-&#xbb;Mechanik&#xab; wird in JobPlanning &#xfc;bersetzt"/>
<node CREATED="1681511601097" ID="ID_964028347" MODIFIED="1681511694671" TEXT="daraus werden aber direkt einzel-Beziehungen f&#xfc;r den Scheduler gebaut">
<linktarget COLOR="#7c2e36" DESTINATION="ID_964028347" ENDARROW="Default" ENDINCLINATION="1221;-42;" ID="Arrow_ID_727391713" SOURCE="ID_686946668" STARTARROW="None" STARTINCLINATION="-29;337;"/>
</node>
<node CREATED="1681513765614" ID="ID_1274319760" MODIFIED="1681515077439" TEXT="Aufbau">
<icon BUILTIN="info"/>
<node CREATED="1681513770238" HGAP="30" ID="ID_1755305963" MODIFIED="1681514318606" TEXT="Play-Service">
<arrowlink COLOR="#5e5972" DESTINATION="ID_80916607" ENDARROW="Default" ENDINCLINATION="-60;-5;" ID="Arrow_ID_1602613098" STARTARROW="None" STARTINCLINATION="-23;5;"/>
<node CREATED="1681520404028" ID="ID_139747553" MODIFIED="1681520414735" TEXT="konfiguriert Modus und Timings"/>
<node CREATED="1681520421034" ID="ID_1253264357" MODIFIED="1681520442787" TEXT="verbindet ModelPorts &#x27fc; output-connection"/>
<node CREATED="1681520449253" ID="ID_616433102" MODIFIED="1681520472992" TEXT="resultierende RenderConfig &#x27f9; PlayProcess"/>
</node>
<node CREATED="1681513866097" HGAP="30" ID="ID_80916607" MODIFIED="1681514389653" TEXT="PlayProcess" VSHIFT="-1">
<arrowlink COLOR="#5e5972" DESTINATION="ID_1732223894" ENDARROW="Default" ENDINCLINATION="-60;-5;" ID="Arrow_ID_1129120203" STARTARROW="None" STARTINCLINATION="-23;5;"/>
<linktarget COLOR="#5e5972" DESTINATION="ID_80916607" ENDARROW="Default" ENDINCLINATION="-60;-5;" ID="Arrow_ID_1602613098" SOURCE="ID_1755305963" STARTARROW="None" STARTINCLINATION="-23;5;"/>
<node CREATED="1681520521181" ID="ID_127137475" MODIFIED="1681520530807" TEXT="verwendet gegebenen Render-Configurator"/>
<node CREATED="1681520531323" ID="ID_741530178" MODIFIED="1681520580039" TEXT="erstellt daraus die Feeds + CalcStreams"/>
</node>
<node CREATED="1681513775661" HGAP="30" ID="ID_1732223894" MODIFIED="1681515122691" TEXT="Engine-Service">
<arrowlink COLOR="#5e5972" DESTINATION="ID_1709285340" ENDARROW="Default" ENDINCLINATION="-55;-7;" ID="Arrow_ID_1166695691" STARTARROW="None" STARTINCLINATION="-42;8;"/>
<linktarget COLOR="#5e5972" DESTINATION="ID_1732223894" ENDARROW="Default" ENDINCLINATION="-60;-5;" ID="Arrow_ID_1129120203" SOURCE="ID_80916607" STARTARROW="None" STARTINCLINATION="-23;5;"/>
<node CREATED="1681520606402" ID="ID_833200775" MODIFIED="1681520624991" TEXT="Initiiert CalcStream(s)"/>
<node CREATED="1681520779187" ID="ID_809350382" MODIFIED="1681520811410" TEXT="verdrahtet dazu einen Dispatcher"/>
<node CREATED="1681520822876" ID="ID_4022163" MODIFIED="1681521853518" TEXT="erstellt ein RenderDrive mit Output"/>
</node>
<node CREATED="1681513782908" HGAP="30" ID="ID_1709285340" MODIFIED="1681515121003" TEXT="CalcStream">
<arrowlink COLOR="#5e5972" DESTINATION="ID_1418303343" ENDARROW="Default" ENDINCLINATION="-60;-5;" ID="Arrow_ID_1246156345" STARTARROW="None" STARTINCLINATION="-23;5;"/>
<linktarget COLOR="#5e5972" DESTINATION="ID_1709285340" ENDARROW="Default" ENDINCLINATION="-55;-7;" ID="Arrow_ID_1166695691" SOURCE="ID_1732223894" STARTARROW="None" STARTINCLINATION="-42;8;"/>
<node CREATED="1681520869358" ID="ID_248036437" MODIFIED="1681521862197" TEXT="betreibt den RenderDrive"/>
<node CREATED="1681520874613" ID="ID_1197599470" MODIFIED="1681520883624" TEXT="dieser ist intern mit dem Dispatcher verdrahtet"/>
<node CREATED="1685055290119" ID="ID_1913311410" MODIFIED="1685055313743" TEXT="er wird aktiviert und damit mit einem OutputSink verbunden"/>
</node>
<node CREATED="1681513790253" HGAP="30" ID="ID_1418303343" MODIFIED="1681515151463" TEXT="Dispatcher">
<arrowlink COLOR="#5e5972" DESTINATION="ID_786643460" ENDARROW="Default" ENDINCLINATION="-60;-5;" ID="Arrow_ID_876462297" STARTARROW="None" STARTINCLINATION="-29;7;"/>
<linktarget COLOR="#5e5972" DESTINATION="ID_1418303343" ENDARROW="Default" ENDINCLINATION="-60;-5;" ID="Arrow_ID_1246156345" SOURCE="ID_1709285340" STARTARROW="None" STARTINCLINATION="-23;5;"/>
<node CREATED="1681520888910" ID="ID_1891724948" MODIFIED="1681520896702" TEXT="ist angesiedelt in der Fixture"/>
<node CREATED="1681520912952" ID="ID_1717997829" MODIFIED="1681520920398" TEXT="bietet Anbindung an ein Frame-Grid"/>
<node CREATED="1681520921575" ID="ID_1652151815" MODIFIED="1681520933542" TEXT="bietet Anbindung an die JobTicket(s)"/>
</node>
<node CREATED="1681513796795" HGAP="30" ID="ID_786643460" MODIFIED="1681521871090" TEXT="RenderDrive">
<arrowlink COLOR="#5e5972" DESTINATION="ID_947997771" ENDARROW="Default" ENDINCLINATION="-60;-5;" ID="Arrow_ID_364168275" STARTARROW="None" STARTINCLINATION="-24;5;"/>
<linktarget COLOR="#5e5972" DESTINATION="ID_786643460" ENDARROW="Default" ENDINCLINATION="-60;-5;" ID="Arrow_ID_876462297" SOURCE="ID_1418303343" STARTARROW="None" STARTINCLINATION="-29;7;"/>
<node CREATED="1681520948109" ID="ID_1974741811" MODIFIED="1681520958397" TEXT="der aktive Nutzer des Dispatcher-Interfaces"/>
<node CREATED="1681520997813" ID="ID_1498779054" MODIFIED="1681521034522" TEXT="re-aktiviert sich fortlaufend selbst"/>
<node CREATED="1681521035833" ID="ID_744901458" MODIFIED="1681521051722" TEXT="ist verdrahtet mit der EngineFacade"/>
<node CREATED="1681521090001" ID="ID_1206046554" MODIFIED="1681521101922" TEXT="erstellt und betreibt die JobPlanning-Pipeline"/>
</node>
<node CREATED="1681513815536" HGAP="30" ID="ID_947997771" MODIFIED="1681515143216" TEXT="JobPlanning">
<arrowlink COLOR="#5e5972" DESTINATION="ID_839385817" ENDARROW="Default" ENDINCLINATION="-60;-5;" ID="Arrow_ID_1889540359" STARTARROW="None" STARTINCLINATION="-23;5;"/>
<linktarget COLOR="#5e5972" DESTINATION="ID_947997771" ENDARROW="Default" ENDINCLINATION="-60;-5;" ID="Arrow_ID_364168275" SOURCE="ID_786643460" STARTARROW="None" STARTINCLINATION="-24;5;"/>
<node CREATED="1681521107332" ID="ID_764418758" MODIFIED="1681521118625" TEXT="konkrete StateCore mit allen aktiven Verdrahtungen"/>
<node CREATED="1681521122833" ID="ID_479512654" MODIFIED="1681521129047" TEXT="wird wie ein Cursor navigiert"/>
<node CREATED="1681521246771" ID="ID_1361044565" MODIFIED="1681521267392" TEXT="bewegt sich auf Basis von JobTicket-Konfigurationen"/>
<node COLOR="#5b280f" CREATED="1681521294153" ID="ID_718588107" MODIFIED="1685050996829" TEXT="Mittel der Bewegung ist der JobTicket::ExplorationState">
<icon BUILTIN="button_cancel"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#ac0e17" CREATED="1685051000827" ID="ID_1306786593" MODIFIED="1685051071238" TEXT="@deprecated">
<linktarget COLOR="#fc295f" DESTINATION="ID_1306786593" ENDARROW="Default" ENDINCLINATION="-46;56;" ID="Arrow_ID_1518460249" SOURCE="ID_633522131" STARTARROW="None" STARTINCLINATION="93;-5;"/>
</node>
</node>
</node>
<node CREATED="1681513818806" HGAP="30" ID="ID_839385817" MODIFIED="1681514365078" TEXT="JobTicket">
<linktarget COLOR="#5e5972" DESTINATION="ID_839385817" ENDARROW="Default" ENDINCLINATION="-60;-5;" ID="Arrow_ID_1889540359" SOURCE="ID_947997771" STARTARROW="None" STARTINCLINATION="-23;5;"/>
<node CREATED="1681521333950" ID="ID_1882410873" MODIFIED="1681521341316" TEXT="ist ein passiver Bauplan"/>
<node CREATED="1681521341799" ID="ID_1831867258" MODIFIED="1681521349882" TEXT="wird on-demand konkretisiert"/>
<node COLOR="#5b280f" CREATED="1681521357484" ID="ID_633522131" MODIFIED="1686697191588" TEXT="kolaboriert mit einem aktiven ExplorationState">
<arrowlink COLOR="#fc295f" DESTINATION="ID_1306786593" ENDARROW="Default" ENDINCLINATION="-46;56;" ID="Arrow_ID_1518460249" STARTARROW="None" STARTINCLINATION="93;-5;"/>
<icon BUILTIN="button_cancel"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1681168811429" ID="ID_72728251" MODIFIED="1681168821401" TEXT="Aufr&#xe4;um-Arbeiten">
<icon BUILTIN="bell"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1681519830697" ID="ID_1168919012" MODIFIED="1681519846021" TEXT="Nomenklatur unscharf">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1681519851664" ID="ID_1426982855" MODIFIED="1681519854742" TEXT="Engine-Service">
<node CREATED="1681519855695" ID="ID_1479404578" MODIFIED="1681519922674" TEXT="&#x201e;die Renderengine&#x201c; &#x27f7; &#xbb;renderConfig&#xab;"/>
<node CREATED="1681519892562" ID="ID_1833190140" MODIFIED="1681519916866" TEXT="die gleiche Closure hei&#xdf;t aber auch &#xbb;engineCallback&#xab;"/>
</node>
<node CREATED="1681596404095" ID="ID_582234271" MODIFIED="1681596416421" TEXT="&#x201e;nominal time&#x201c;">
<node CREATED="1681596418090" ID="ID_1704128775" MODIFIED="1681596439782" TEXT="die Bedeutung von &#x201e;nominal&#x201c; ist zweifelhaft"/>
<node CREATED="1681596470078" ID="ID_184267509" MODIFIED="1681596498936" TEXT="es ist nicht &#xbb;wall clock time&#xab; &#x2014; aber welche Zeitachse ist es dann?"/>
</node>
</node>
<node CREATED="1681168823213" ID="ID_70139544" MODIFIED="1681168829891" TEXT="LinkedElements">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1681168834655" ID="ID_775810104" MODIFIED="1681168886034" TEXT="Kompatibilit&#xe4;t mit STL verifizieren">
<icon BUILTIN="flag-yellow"/>
<node COLOR="#338800" CREATED="1681168847009" ID="ID_394142249" MODIFIED="1681168879417" TEXT="sehe schon: man kann es als std::stack nutzen">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1681168860231" ID="ID_1896352742" MODIFIED="1681168874166" TEXT="was ist mit dem Allocator? ist der Standard-konform?">
<icon BUILTIN="help"/>
</node>
</node>
<node COLOR="#338800" CREATED="1681168890963" ID="ID_734971500" MODIFIED="1682009597938" TEXT="varargs durch variadic-templates ersetzen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      <i>verwendete noch den pre-C++11-Stil mit explizit ausgewalzten Template-Spezialisierungen f&#252;r 1...5 Argumente</i>
    </p>
    <p>
      
    </p>
    <p>
      ge&#228;ndert mit
    </p>
    <br/>
      <font face="Monospaced">
    <p>
commit 856d8a3b519e4fc99e7b6749fbed67df33128741<br/>
Author: Ichthyostega &lt;prg@ichthyostega.de&gt;<br/>
Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<br/>
&#160;&#160;&#160;&#160;Library: allow to reverse intrusive single linked list </font>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1681168945643" ID="ID_927049684" MODIFIED="1681168962346" TEXT="Verh&#xe4;ltnis zum AllocationCluster kl&#xe4;ren">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1681168963297" ID="ID_16461379" MODIFIED="1681168972656" TEXT="warum wird der hier explizit referenziert?">
<icon BUILTIN="help"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1686696297995" ID="ID_1712895163" MODIFIED="1686696804491" TEXT="k&#xf6;nnte ersetzt werdem durch geplantes front-End (AllocatorHandle)">
<arrowlink COLOR="#5954b6" DESTINATION="ID_320473769" ENDARROW="Default" ENDINCLINATION="-929;56;" ID="Arrow_ID_593145833" STARTARROW="None" STARTINCLINATION="-1213;-50;"/>
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
<node COLOR="#5b280f" CREATED="1685402933522" FOLDED="true" ID="ID_517929511" MODIFIED="1687456721467" TEXT="TimeAnchor">
<icon BUILTIN="button_cancel"/>
<node COLOR="#338800" CREATED="1685402939155" ID="ID_895439120" LINK="#ID_260441580" MODIFIED="1685402990260" TEXT="Konzept nochmal &#xfc;berpr&#xfc;ft: grunds&#xe4;tzlich OK">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#5b280f" CREATED="1685402993556" ID="ID_1110033319" MODIFIED="1687443336633" TEXT="Aber: sollte keine Latenz-Kompensation machen">
<icon BUILTIN="yes"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1685403027730" ID="ID_1618141786" MODIFIED="1685403315041" TEXT="das verwirrt die Konzepte &#xbb;realTime&#xab; und &#xbb;Deadline&#xab;">
<linktarget COLOR="#522b3c" DESTINATION="ID_1618141786" ENDARROW="Default" ENDINCLINATION="402;21;" ID="Arrow_ID_97219015" SOURCE="ID_1075266324" STARTARROW="None" STARTINCLINATION="250;-324;"/>
<icon BUILTIN="stop-sign"/>
</node>
<node CREATED="1685403065973" ID="ID_675806191" MODIFIED="1685403127990" TEXT="die Kompensation kann an dieser Stelle gar nicht korrekt/vollst&#xe4;ndig sein">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...denn dazu ben&#246;tigen wir <i>detailierte Timing-Beobachtungen, </i>welche erst im speziellen Job-Funktor vorliegen k&#246;nnen, nicht auf der Ebene eines ganzen Planning-Chunk
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#338800" CREATED="1685403325222" ID="ID_2694625" LINK="#ID_109124269" MODIFIED="1687443331744" TEXT="jedwede Latenz-Kompensation / Deadline-Bestimmung in die Planning-Pipeline verschieben">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1685406566342" ID="ID_524698195" MODIFIED="1685406623527" TEXT="dann bleibt aber nix mehr &#xfc;brig....???">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      dann reduziert sich der TimeAnchor komplett auf einen Proxy zu den Timings (die obendrein noch als Kopie mitgeschleppt werden)
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1685406639037" ID="ID_1524269116" MODIFIED="1687443350817" TEXT="Also: TimeAnchor ist &#xfc;berfl&#xfc;ssig">
<icon BUILTIN="yes"/>
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node COLOR="#5b280f" CREATED="1686841797580" FOLDED="true" ID="ID_781227780" MODIFIED="1687456723500" TEXT="Rolle der FrameCoord">
<icon BUILTIN="button_cancel"/>
<node CREATED="1686841807901" ID="ID_886837998" MODIFIED="1686841818018" TEXT="war ein zentraler Daten-Aggregator im 1.Entwurf"/>
<node CREATED="1686841818526" ID="ID_834625454" MODIFIED="1686841830837" TEXT="mit dem Wegfall des TimeAnchor nimmt die Bedeutung sehr ab"/>
<node CREATED="1686841831377" ID="ID_1948825773" MODIFIED="1686841838684" TEXT="derzeit noch in der Planning-Pipeline verwendet"/>
<node COLOR="#435e98" CREATED="1686867570930" ID="ID_1291057680" MODIFIED="1687456686167" TEXT="k&#xf6;nnten komplett aufgel&#xf6;st werden?">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      eigentlich werden nur zwei Felder genutzt, und davon der ModelPort-IDX nur an einer einzigen Stelle (beim Zugriff auf das JobTicket). Die absolute Frame-Nr geht bisher nirgends ein &#8212; sie ist redundant, wenn man die Timings kennt, und jenseits der Job-Erstellung komplett irrelevant (soll auch irrelevant sein)
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="help"/>
<node CREATED="1686878263958" ID="ID_1822381853" LINK="#ID_1008817240" MODIFIED="1686878292683" TEXT="jetzt brauch ich die Frame-Nr doch noch!">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      f&#252;r die Deadline-Berechnung...
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="stop-sign"/>
</node>
<node CREATED="1687044034446" ID="ID_1197569659" LINK="#ID_1471106329" MODIFIED="1687044160985" TEXT="werden jetzt die Arbeitsdaten des Tick-Generators">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...damit k&#246;nnten die FrameCoord ihre Bestimmung gefunden haben, denn in diesem Bezug sind auch FrameNr und nominalTime <i>nicht redundant (Quantisierung!)</i>, sondern machen die Grid-Anwendung explizit
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="stop-sign"/>
</node>
<node CREATED="1687047345857" ID="ID_875727046" MODIFIED="1687047359796" TEXT="nein .. ja .. oh">
<icon BUILTIN="smiley-angry"/>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1687047257837" ID="ID_354859977" MODIFIED="1687047467443" TEXT="FrameCoord sind inzwischen ein sinnloses Konstrukt">
<linktarget COLOR="#9f154b" DESTINATION="ID_354859977" ENDARROW="Default" ENDINCLINATION="867;47;" ID="Arrow_ID_715252746" SOURCE="ID_965148273" STARTARROW="None" STARTINCLINATION="-226;-425;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node BACKGROUND_COLOR="#f2dcc5" COLOR="#ff0000" CREATED="1687047415820" ID="ID_450940415" MODIFIED="1687456702082">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <u>Fazit</u>: haben keine Rolle mehr und werden <b>aufgegeben</b>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="forward"/>
</node>
</node>
<node CREATED="1681169265752" ID="ID_388188594" MODIFIED="1681169268100" TEXT="JobTicket">
<node COLOR="#435e98" CREATED="1681169270184" ID="ID_778864690" MODIFIED="1686697119512" TEXT="die schon gecodete Logik sieht sehr nach Skizze aus">
<linktarget COLOR="#cc608f" DESTINATION="ID_778864690" ENDARROW="Default" ENDINCLINATION="-105;0;" ID="Arrow_ID_1647546023" SOURCE="ID_380471864" STARTARROW="None" STARTINCLINATION="-62;-87;"/>
<icon BUILTIN="messagebox_warning"/>
<node COLOR="#5b280f" CREATED="1681169286078" ID="ID_514995150" MODIFIED="1686697084458" TEXT="Datenstrukturen konsistent?">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <ul>
      <li>
        Prerequisites und Channel-Tabelle als (single)linked-List <i>RLY?</i>
      </li>
      <li>
        SubTicketStack wirklich schon gut durchdacht? Funktionsweise?
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="help"/>
<node CREATED="1686696984126" ID="ID_1975204240" MODIFIED="1686697044147" TEXT="f&#xfc;r die Prerequisites: ja ist sinnvoll">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      die werden n&#228;mlich nur einfach traversiert, und dahinter verbergen sich verschachtelte JobTicket, die allesamt im gleichen Speicherblock (im AllocationCluster) liegen
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#338800" CREATED="1686697046607" ID="ID_1765761108" MODIFIED="1686697074312" TEXT="die Channel-Tabelle f&#xe4;llt aus logischen Gr&#xfc;nden weg">
<arrowlink COLOR="#32bc16" DESTINATION="ID_804638831" ENDARROW="Default" ENDINCLINATION="194;0;" ID="Arrow_ID_1177586994" STARTARROW="None" STARTINCLINATION="13;81;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#5b280f" CREATED="1681169607062" ID="ID_62995786" MODIFIED="1686697111394" TEXT="Auswertungs-Logik mit pullNext() / push()">
<font NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="help"/>
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#338800" CREATED="1686697094440" ID="ID_1061633626" MODIFIED="1686697105959" TEXT="Logik inzwischen nahezu zu 100% neu gecodet">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1684869532824" ID="ID_1031809806" MODIFIED="1684869549968" TEXT="Datenstrukturen &#x201e;begradigen&#x201c;">
<icon BUILTIN="flag-yellow"/>
<node COLOR="#338800" CREATED="1684869450278" ID="ID_804638831" MODIFIED="1686697068025" TEXT="Channel-Parameter zur&#xfc;ckbauen">
<arrowlink COLOR="#daffc5" DESTINATION="ID_122410804" ENDARROW="Default" ENDINCLINATION="-352;-925;" ID="Arrow_ID_194808318" STARTARROW="None" STARTINCLINATION="544;39;"/>
<linktarget COLOR="#32bc16" DESTINATION="ID_804638831" ENDARROW="Default" ENDINCLINATION="194;0;" ID="Arrow_ID_1177586994" SOURCE="ID_1765761108" STARTARROW="None" STARTINCLINATION="13;81;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1686696897576" ID="ID_218942560" MODIFIED="1687456730985" TEXT="ExplorationState komplett &#xfc;berfl&#xfc;ssig">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685227587042" ID="ID_1506519459" MODIFIED="1685227597731" TEXT="EngineConfig">
<icon BUILTIN="messagebox_warning"/>
<node COLOR="#5b280f" CREATED="1685227599324" ID="ID_996861061" MODIFIED="1687456742695" TEXT="Timings verwenden einen Singleton-Zugang">
<linktarget COLOR="#b03e6a" DESTINATION="ID_996861061" ENDARROW="Default" ENDINCLINATION="1914;0;" ID="Arrow_ID_280066938" SOURCE="ID_978050958" STARTARROW="None" STARTINCLINATION="202;-9;"/>
<icon BUILTIN="stop-sign"/>
<icon BUILTIN="button_cancel"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685227615700" ID="ID_233202097" MODIFIED="1685227641889" TEXT="sollte besser in die RenderEnvironmentClosure">
<icon BUILTIN="yes"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1685227910712" ID="ID_176838634" MODIFIED="1685227942987" TEXT="massively concurrent access">
<icon BUILTIN="clanbomber"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1681425106274" ID="ID_897788253" LINK="#ID_274575596" MODIFIED="1681425285122" TEXT="engine::Job und engine::Activity neu konzipieren">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
<node CREATED="1681007001033" ID="ID_777825192" MODIFIED="1681007003617" TEXT="Dispatcher">
<node CREATED="1681007004517" ID="ID_1144293741" MODIFIED="1681007079690" TEXT="Interface ist skizziert">
<icon BUILTIN="idea"/>
<node CREATED="1681007017379" ID="ID_1043419721" MODIFIED="1681007024046" TEXT="zwei von drei Operationen sind klar">
<node CREATED="1681007281927" ID="ID_1103925874" MODIFIED="1681007293626" TEXT="JobBuilder konstruieren (Innere Klasse mit R&#xfc;ckreferenz)"/>
<node CREATED="1681007297495" ID="ID_839377934" MODIFIED="1681007348145">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Impl: <font face="Monospaced" color="#232d7c">JobBuilder::relativeFrameLocation (TimeAnchor&amp;, FrameCnt)</font>
    </p>
  </body>
</html></richcontent>
<node CREATED="1681007367996" ID="ID_443275992" MODIFIED="1681007420359" TEXT="callback in Dispatcher::locateRelative()">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      <font face="Monospaced" size="2">&#160;&#160;&#160;&#160;&#160;&#160;/** core dispatcher operation: based on the coordinates of a reference point, </font>
    </p>
    <p>
      <font face="Monospaced" size="2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;*&#160;&#160;establish binding frame number, nominal time and real (wall clock) deadline. </font>
    </p>
    <p>
      <font face="Monospaced" size="2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;* @return new FrameCoord record (copy), with the nominal time, frame number </font>
    </p>
    <p>
      <font face="Monospaced" size="2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;*&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;and deadline adjusted in accordance to the given frame offset. </font>
    </p>
    <p>
      <font face="Monospaced" size="2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;*/ </font>
    </p>
    <p>
      <font face="Monospaced" size="2">&#160;&#160;&#160;&#160;&#160;&#160;virtual FrameCoord locateRelative (FrameCoord const&amp;, FrameCnt frameOffset)&#160;&#160;=0; </font>
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1681007375147" ID="ID_78887544" MODIFIED="1681007379315" TEXT="konkrete Impl fehlt">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
<node CREATED="1681007024520" ID="ID_387260351" MODIFIED="1681007033261" TEXT="es gibt dispatcher-interface-test.cpp">
<node CREATED="1681007105255" ID="ID_1477266939" MODIFIED="1681007112555" TEXT="compiliert"/>
<node CREATED="1681007136643" ID="ID_1804418785" MODIFIED="1681007149302" TEXT="halbfertig und partiell auskommentiert"/>
<node CREATED="1681007112998" ID="ID_534129946" MODIFIED="1681007156292" TEXT="l&#xe4;uft (vermutlich) noch &#xfc;berhaupt nicht"/>
</node>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1681007034731" ID="ID_380471864" MODIFIED="1681007071540" TEXT="Implementierung (dispatcher-table) nur gestubbed">
<arrowlink COLOR="#cc608f" DESTINATION="ID_778864690" ENDARROW="Default" ENDINCLINATION="-105;0;" ID="Arrow_ID_1647546023" STARTARROW="None" STARTINCLINATION="-62;-87;"/>
<icon BUILTIN="bell"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1684869703449" ID="ID_842973451" MODIFIED="1687398733423" TEXT="Frame Dispatch">
<icon BUILTIN="prepare"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1681425423695" ID="ID_1928295133" MODIFIED="1683836443972" TEXT="Reorganisation : RenderDrive verwenden">
<linktarget COLOR="#f4fec9" DESTINATION="ID_1928295133" ENDARROW="Default" ENDINCLINATION="-1068;-69;" ID="Arrow_ID_362199078" SOURCE="ID_1888344503" STARTARROW="None" STARTINCLINATION="1381;58;"/>
<linktarget COLOR="#fed5d7" DESTINATION="ID_1928295133" ENDARROW="Default" ENDINCLINATION="-463;400;" ID="Arrow_ID_1972838231" SOURCE="ID_580321819" STARTARROW="None" STARTINCLINATION="-412;-64;"/>
<linktarget COLOR="#ffe4c9" DESTINATION="ID_1928295133" ENDARROW="Default" ENDINCLINATION="-724;353;" ID="Arrow_ID_1773297165" SOURCE="ID_845968912" STARTARROW="None" STARTINCLINATION="-257;23;"/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1681597653622" ID="ID_1608883275" MODIFIED="1681597683317" TEXT="Eigenschaften">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...erschlossen aus den bestehenden Strukturen + der neuen Intention
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
<node COLOR="#5b280f" CREATED="1681597684802" ID="ID_1406063015" MODIFIED="1681683228188" TEXT="kleines Value-Parameter-Objekt">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1681598452915" ID="ID_573477354" MODIFIED="1681598473868" TEXT="ist der aktive Kern im Calcstream"/>
<node CREATED="1681598513826" ID="ID_1817819165" MODIFIED="1681598599379" TEXT="konstituiert eine Proze&#xdf;-Instanz-Identit&#xe4;t"/>
<node CREATED="1681683275337" ID="ID_1515003010" MODIFIED="1681683297990" TEXT="berwirkt repetitive Selbst-Aktivierung"/>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1681598877348" ID="ID_789757597" MODIFIED="1681683172391" TEXT="zu kl&#xe4;ren">
<icon BUILTIN="yes"/>
<node CREATED="1681598885498" ID="ID_1614960356" MODIFIED="1681598899763" TEXT="Redundanz / &#xdc;berschneidung mit dem CalcStream">
<node CREATED="1681598901535" ID="ID_1286823970" MODIFIED="1681599043639" TEXT="beide haben auff&#xe4;llig &#xe4;hnliche Eigenschaften">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <ul>
      <li>
        repr&#228;sentieren eine parameter-basierte Instanz-Identit&#228;t
      </li>
      <li>
        sind jeweils voll kopierbare Wertobjekte
      </li>
      <li>
        ben&#246;tigen zudem eine Dependency-Injection
      </li>
      <li>
        gespeichert im Play-Process und damit in der &#187;Prozess-Tafel&#171;
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node CREATED="1681599056122" ID="ID_458680948" MODIFIED="1681646642507" TEXT="Unterscheidung aus logischen/semantsichen Gr&#xfc;nden eingef&#xfc;hrt">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <ul>
      <li>
        Der CalcStream ist eben das, also ein Organisationsmerkmal bzw. die Identit&#228;t eines Teilprozesses
      </li>
      <li>
        Der RenderDrive soll ein zyklischer Mechanismus sein, und als JobFunctor genutzt werden
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node CREATED="1684869958460" ID="ID_588039580" MODIFIED="1684869978533" TEXT="&#x27f9; Schlu&#xdf;folgerung: RenderDrive ist der aktive Part"/>
</node>
<node CREATED="1681599191305" ID="ID_1167449829" MODIFIED="1681599208482" TEXT="ben&#xf6;tigte Dependency-Injection ">
<node CREATED="1681599223716" ID="ID_86738790" MODIFIED="1681599346318" TEXT="Timings (impliziert Frame-Grid)"/>
<node CREATED="1681599210089" ID="ID_684433972" MODIFIED="1681599218026" TEXT="Zugang zum Dispatcher"/>
<node CREATED="1681599257945" ID="ID_733064533" MODIFIED="1681599268652" TEXT="Zugang zum Scheduler"/>
</node>
<node CREATED="1681646460442" ID="ID_866977884" MODIFIED="1681646477449" TEXT="multiplicity and usage structure">
<node CREATED="1681646502158" ID="ID_1554914113" MODIFIED="1681646512969" TEXT="die Planungs-Pipeline wird strikt sequentiell bespielt"/>
<node CREATED="1681646532062" ID="ID_1383559792" MODIFIED="1681646551375" TEXT="es gibt nur einen Drive pro CalcStream"/>
<node CREATED="1681646829918" ID="ID_284324155" MODIFIED="1681646835657" TEXT="nur minimale bewegliche Teile"/>
<node CREATED="1681646836533" ID="ID_1000053188" MODIFIED="1681646846261" TEXT="k&#xf6;nnte im Heap sitzen">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node CREATED="1681646866174" ID="ID_246853832" MODIFIED="1681646885323" TEXT="&#x27f9; Struktur">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1681646891090" ID="ID_1766076946" MODIFIED="1681683127682" TEXT="non-copyable Heap-alloziert">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1681646907319" ID="ID_682236351" MODIFIED="1681683367234" TEXT="wird per smart-ptr gemanaged">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1681683094086" ID="ID_1384696790" MODIFIED="1681690034337" TEXT="beherbergt die Planungs-Pipeline">
<arrowlink COLOR="#fd4259" DESTINATION="ID_1735556854" ENDARROW="Default" ENDINCLINATION="20;-71;" ID="Arrow_ID_91051045" STARTARROW="None" STARTINCLINATION="-206;16;"/>
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1681646916186" ID="ID_806901618" MODIFIED="1681683127683" TEXT="wird erstellt aus">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1681646926897" ID="ID_1301053260" MODIFIED="1681646934364" TEXT="CalcStream-Kenndaten">
<node CREATED="1681646935872" ID="ID_1191393929" MODIFIED="1681646959241" TEXT="Timings&amp;"/>
<node CREATED="1681646946919" ID="ID_1576152420" MODIFIED="1681646966921" TEXT="ModelPort + channel"/>
</node>
<node CREATED="1681646971664" ID="ID_524941672" MODIFIED="1681646985378" TEXT="Environment-Resourcen">
<node CREATED="1681646987124" ID="ID_147954437" MODIFIED="1681647202903" TEXT="bereitgestellt f&#xfc;r Render-Quality">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ein Play/Renderproze&#223; wird mit einer definiten Quality-of-Service-Strategie aufgebaut; daraus ergibt sich implizit, was ben&#246;tigt wird &#8212; und das ist ein sehr erweiterungsf&#228;higes Konzept: beispielsweise k&#246;nnte man das auf die Verf&#252;gbarkeit gewisser Klassen von Mediendaten erweitern, und es m&#252;&#223;ten somit nicht alle Daten immer direkt greifbar sein
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1681646998860" ID="ID_375377074" MODIFIED="1681647365953" TEXT="garantiert Verf&#xfc;gbarkeit der Ressourcen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      mit der Erstellung eines CalcStream geht die Zusage einher, alle ben&#246;tigten Resourcen tats&#228;chlich im geforderten Ma&#223; verf&#252;gbar zu haben; diese Zusage m&#252;ndet in die &#220;bersetzung in eine abstrahierte RenderEnvironmentClosure; dahinter k&#246;nnen sehr weitreichende Dispositionen verborgen sein, z.B. verteilte Resourcen in einem Render-Cluster/Netwerk-Setup, oder spezielle Hardware
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1681647059168" ID="ID_403042221" MODIFIED="1681647527409" TEXT="steteless + fail-Fast">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      die Zusage ist verbindlich und ohne zeitliche Parametrisierung; sollte eine Resource wegbrechen, so l&#228;&#223;t man sofort den btr. Renderproze&#223; zusammenbrechen und markiert ihn als schadhaft
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1681647531976" ID="ID_438278550" MODIFIED="1681683133041" TEXT="ist selber ein JobFunktor">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1681647578298" ID="ID_328838794" MODIFIED="1681647594158" TEXT="usage-constraints werden grunds&#xe4;tzlich implizit gehandhabt">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1681647609917" ID="ID_1941277429" MODIFIED="1681647652741" TEXT="hat bereits alle operativen Dependencies fertig injiziert"/>
<node CREATED="1681647654353" ID="ID_1685443734" MODIFIED="1681647671007" TEXT="einziger beweglicher Parameter: die Start-Framenummer"/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1698873784371" ID="ID_306676852" MODIFIED="1698873809226" TEXT="Verkn&#xfc;pfungen">
<icon BUILTIN="yes"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1698873306853" ID="ID_155141069" MODIFIED="1699024283092" TEXT="ManifestationID f&#xfc;r &#xc4;nderungen verankern im RenderDrive">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...dient als Bezugspunkt um im Scheduler einen &#187;fliegenden Wechsel&#171; der unterliegenden Definition zu erm&#246;glichen
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#8c689b" DESTINATION="ID_167266149" ENDARROW="Default" ENDINCLINATION="-954;-136;" ID="Arrow_ID_412782099" STARTARROW="None" STARTINCLINATION="-289;354;"/>
<linktarget COLOR="#4f4c79" DESTINATION="ID_155141069" ENDARROW="Default" ENDINCLINATION="-990;150;" ID="Arrow_ID_551073171" SOURCE="ID_1446392402" STARTARROW="None" STARTINCLINATION="-394;-38;"/>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1681689961426" ID="ID_1735556854" MODIFIED="1687398710704" TEXT="was wird dann aber aus dem Dispatcher?">
<linktarget COLOR="#fd4259" DESTINATION="ID_1735556854" ENDARROW="Default" ENDINCLINATION="20;-71;" ID="Arrow_ID_91051045" SOURCE="ID_1384696790" STARTARROW="None" STARTINCLINATION="-206;16;"/>
<icon BUILTIN="help"/>
<node CREATED="1681689971576" ID="ID_497495407" MODIFIED="1681690040742">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      dieser wird nun mehr und mehr <i>entkernt....</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1681690048013" ID="ID_800389319" MODIFIED="1681690224577" TEXT="sieht aktuell mehr aus wie eine Facade zur Fixture">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...und das kommt nicht von ungef&#228;hr; schon im Entwurf von 2012 sollte ja&#160;<font color="#331eb5" face="Monospaced">Dispatcher</font>&#160; ein Interface sein, und die aktuelle Implementierung w&#228;re eine&#160; <font color="#331eb5" face="Monospaced">DispatchTable</font>, die direkt in der Fixture angesiedelt und gemanaged w&#252;rde
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1681690087200" ID="ID_14312341" MODIFIED="1681690107889" TEXT="folglich wird dieser Teil komplett entkoppelt von &#xbb;der Engine&#xab;"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#692e51" CREATED="1681690260176" ID="ID_1829278703" MODIFIED="1687398699759" TEXT="aber er sollte per DependencyInjection eingebracht werden (&#x2023; EngineService)">
<icon BUILTIN="bell"/>
</node>
</node>
<node COLOR="#338800" CREATED="1681741481500" ID="ID_384450703" MODIFIED="1687398665498" TEXT="Dispatcher-Interface neu definieren">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1681741493272" ID="ID_1834962194" MODIFIED="1687304951551" TEXT="der Builder wird durch einen Pipeline-Builder ersetzt">
<icon BUILTIN="yes"/>
</node>
<node BACKGROUND_COLOR="#bdb5cb" COLOR="#435e98" CREATED="1681741503343" ID="ID_852301467" MODIFIED="1687398622818" TEXT="Services">
<icon BUILTIN="info"/>
<node COLOR="#5b280f" CREATED="1681741523181" ID="ID_1358920776" MODIFIED="1687393566356" TEXT="FrameCoord locateRelative (FrameCoord, frameOffset)">
<icon BUILTIN="button_cancel"/>
<node COLOR="#338800" CREATED="1681741644460" ID="ID_498811202" MODIFIED="1681741652180" TEXT="schon implementiert">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1681741652742" ID="ID_615819221" MODIFIED="1687393534811" TEXT="&#xfc;berpr&#xfc;fen">
<icon BUILTIN="help"/>
</node>
<node CREATED="1687393536846" ID="ID_763423492" MODIFIED="1687393543030" TEXT="f&#xe4;llt weg">
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node COLOR="#5b280f" CREATED="1681741589427" ID="ID_1281351405" MODIFIED="1687393563710" TEXT="bool isEndOfChunk (frame, ModelPort)">
<icon BUILTIN="button_cancel"/>
<node COLOR="#435e98" CREATED="1681741635654" ID="ID_1118664905" MODIFIED="1687393555611" TEXT="fraglich ob noch ben&#xf6;tigt">
<icon BUILTIN="help"/>
</node>
<node CREATED="1687393536846" ID="ID_1434969503" MODIFIED="1687393543030" TEXT="f&#xe4;llt weg">
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node BACKGROUND_COLOR="#bdb5cb" COLOR="#435e98" CREATED="1681741688503" ID="ID_1430371522" MODIFIED="1687398658430">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <font face="Monospaced">JobTicket&amp; <b>accessJobTicket</b>&#160;(TimeValue nominalTime, ModelPort, channel)</font>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
<node COLOR="#338800" CREATED="1681741883229" ID="ID_15002134" MODIFIED="1681741890812" TEXT="Front-End: getJobTicketFor (FrameCoord)">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1681741893771" ID="ID_1417028935" MODIFIED="1684870358568" TEXT="Implementierung per R&#xfc;ckgriff auf die Segmentation">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node BACKGROUND_COLOR="#bdb5cb" COLOR="#435e98" CREATED="1686695464553" ID="ID_260036671" MODIFIED="1687398646974">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <font face="Monospaced">size_t <b>resolveModelPort</b>&#160;(ModelPort)</font>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
<node CREATED="1686695480435" ID="ID_1246751606" MODIFIED="1686695551021" TEXT="&#x201e;irgendwo dahinter&#x201c; mu&#xdf; es eine Mapping-Tabelle geben">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1686695530345" ID="ID_1488205205" MODIFIED="1686695546201" TEXT="ModelPorts werden vom Build-Proze&#xdf; aufgesammelt">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1686695555061" ID="ID_11476315" MODIFIED="1686695585744" TEXT="vorl&#xe4;ufig: billige Implementierung im MockDispatcher (DummyPlayConnection)">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1686695587015" ID="ID_963018599" MODIFIED="1686695612277" TEXT="&#xbb;PlaybackVerticalSlice&#xab; : es mu&#xdf; einen Mock-Build geben">
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#cad2e3" COLOR="#435e98" CREATED="1687217728753" ID="ID_41719122" MODIFIED="1687217974091">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <u>Aufbau</u>&#160;<font face="Monospaced">Dispatcher::<b>PipelineBuilder</b></font>
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#5371b8" DESTINATION="ID_41719122" ENDARROW="Default" ENDINCLINATION="-1453;105;" ID="Arrow_ID_70945648" SOURCE="ID_882875787" STARTARROW="None" STARTINCLINATION="-765;140;"/>
<icon BUILTIN="info"/>
<node CREATED="1685804229424" ID="ID_1243885994" MODIFIED="1685978811819" TEXT="PipeFrameTick">
<node COLOR="#435e98" CREATED="1685978816510" ID="ID_1060580138" MODIFIED="1685978833497" TEXT="&#xbb;stateCore&#xab;"/>
<node CREATED="1685804263831" ID="ID_1326960664" MODIFIED="1685804267603" TEXT="Zeitpunkte"/>
<node CREATED="1685804268663" ID="ID_1765378616" MODIFIED="1685804275894" TEXT="Stop am Ende"/>
</node>
<node CREATED="1685978664851" ID="ID_1570380564" MODIFIED="1685978673310" TEXT="PipeBuilder&lt;PIP&gt;">
<node CREATED="1685978674908" ID="ID_1693907267" MODIFIED="1685978689019" TEXT="wird jeweils terminal dar&#xfc;ber gesetzt"/>
<node CREATED="1685978689624" ID="ID_591717951" MODIFIED="1685978701290" TEXT="erbt damit von der jeweiligen TreeExplorer-Pipeline"/>
<node CREATED="1685978702466" ID="ID_661451432" MODIFIED="1685978707286" TEXT="Builder-Operationen">
<node CREATED="1685978721050" ID="ID_889695636" MODIFIED="1685978731093" TEXT="timeRange : setzt Start/Stop"/>
<node CREATED="1685978738620" ID="ID_759855849" MODIFIED="1685978781518" TEXT="pullFrom(ModelPort)">
<node CREATED="1685804280614" ID="ID_636246298" MODIFIED="1685804307946" TEXT="w&#xe4;hlt Verbindung zum low-level-Model"/>
<node COLOR="#5b280f" CREATED="1685804312326" ID="ID_1049622554" MODIFIED="1685925022016" TEXT="neue Idee:  &#xbb;FrameDropper&#xab; bereitstellen">
<linktarget COLOR="#fdfed9" DESTINATION="ID_1049622554" ENDARROW="Default" ENDINCLINATION="-118;8;" ID="Arrow_ID_109489850" SOURCE="ID_9551953" STARTARROW="None" STARTINCLINATION="124;-21;"/>
<icon BUILTIN="idea"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1685917810826" ID="ID_587704623" MODIFIED="1685917818007" TEXT="diese Idee ist nur rein formal"/>
<node CREATED="1685917818415" ID="ID_334221261" MODIFIED="1685917853964" TEXT="es gelingt mir nicht, sie inhaltlich einzubinden">
<arrowlink COLOR="#bd2b85" DESTINATION="ID_957312796" ENDARROW="Default" ENDINCLINATION="249;11;" ID="Arrow_ID_1688529545" STARTARROW="None" STARTINCLINATION="395;0;"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1687218008028" ID="ID_209123964" MODIFIED="1687218070812">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <b>JobPlanning</b>&#160;wird als Aggregator angelegt
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      liegt also im ItemWrapper eines Transformers, und wird ab hier von den oberen Layern der Pipeline referenziert
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="forward"/>
</node>
</node>
<node CREATED="1685978756949" ID="ID_708810901" MODIFIED="1685978761330" TEXT="expandPrerequisites">
<node CREATED="1685804397958" ID="ID_897391572" MODIFIED="1685804414527" TEXT="die rekursive monadische Tiefensuche"/>
<node COLOR="#435e98" CREATED="1685804425069" ID="ID_703856821" MODIFIED="1687218200080">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      erzeugt <b>verkettetes JobPlanning</b>
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Es gibt also eine verkettete Version vom JobPlanning, die per Pointer auf einen parent-Plan zur&#252;ckverweist, und dazu eine Prerequisite bereitstellt; tats&#228;chlich liegt dieses verkettete Job-Planning in einem ItemWrapper in einem TransformIterator, welcher wiederum auf dem Stack vom Explorer angesiedelt ist; damit entsteht jeweils f&#252;r ein Kind eine stabile Folge von Parent-Plannings bis zum Frame-Plan(root)
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1685978784259" ID="ID_648299167" MODIFIED="1685978792103" TEXT="feedTo(DataSink)">
<node CREATED="1685804493985" ID="ID_1670773237" MODIFIED="1685804500860" TEXT="Aggregat aller Planungsdaten"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1685804506903" ID="ID_1557824404" MODIFIED="1687218226867" TEXT="kann noch Parametrisierungen am JobPlanning vornehmen">
<icon BUILTIN="hourglass"/>
</node>
<node COLOR="#435e98" CREATED="1687218228294" ID="ID_137594360" MODIFIED="1687218252954" TEXT="ist eine Terminal-Funktion (beseitigt den Builder)">
<icon BUILTIN="info"/>
</node>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1681742238869" ID="ID_1876795011" MODIFIED="1681742244980" TEXT="Planungs-Pipeline aufbauen">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1684967502141" HGAP="43" ID="ID_611062440" LINK="https://issues.lumiera.org/ticket/920" MODIFIED="1684975121952" TEXT="#920 planning-chunk" VSHIFT="3">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      <i><font size="4" color="#500f57">sehr altes Ticket...</font></i>
    </p>
    <p>
      Effektiv ist das der Implementierungs-Kern; seinerzeit hatte ich unter diesem Ticket die Idee der <b><font face="Monospaced">CalcPlanContinuation</font></b>&#160;entwickelt, welche nun zum <b><font face="Monospaced">RenderDrive</font></b>&#160;wird...
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#942e62" DESTINATION="ID_611062440" ENDARROW="Default" ENDINCLINATION="-1068;115;" ID="Arrow_ID_590164748" SOURCE="ID_656533593" STARTARROW="None" STARTINCLINATION="-1389;145;"/>
<font NAME="SansSerif" SIZE="13"/>
<icon BUILTIN="flag-yellow"/>
</node>
<node COLOR="#338800" CREATED="1681742255171" ID="ID_1531898349" MODIFIED="1687304910760" TEXT="Draft im Test-Setup">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1681742836996" FOLDED="true" ID="ID_1978512771" MODIFIED="1687312278238" TEXT="scaffolding and mocking used for this test">
<icon BUILTIN="full-1"/>
<node CREATED="1681742863121" ID="ID_101929835" MODIFIED="1684878277170" TEXT="ben&#xf6;tigte Mocks">
<icon BUILTIN="info"/>
<node COLOR="#338800" CREATED="1682611217967" ID="ID_792021380" MODIFIED="1684878272344" TEXT="Segmentation">
<icon BUILTIN="button_ok"/>
<node CREATED="1684878221645" ID="ID_1469919037" MODIFIED="1684878223961" TEXT="neu bauen"/>
<node CREATED="1684878224453" ID="ID_1519678460" LINK="#ID_1176991982" MODIFIED="1684878249666" TEXT="dabei Grundlage schaffen: SplitSplice-Algo"/>
</node>
<node COLOR="#338800" CREATED="1681742879175" ID="ID_1375353236" MODIFIED="1686679650140" TEXT="Dispatcher">
<icon BUILTIN="button_ok"/>
<node CREATED="1681743458393" ID="ID_891681445" MODIFIED="1681743469323" TEXT="extrahieren aus DispatcherInterface_test"/>
<node CREATED="1686679652411" ID="ID_111433590" MODIFIED="1686679666968" TEXT="MockDispatcher nun integriert mit dem sonstigen Mock setup"/>
</node>
<node COLOR="#338800" CREATED="1681742890385" ID="ID_1681918468" MODIFIED="1684878273498" TEXT="JobTicket">
<icon BUILTIN="button_ok"/>
<node CREATED="1681775901704" ID="ID_1011961716" MODIFIED="1681775914876" TEXT="mu&#xdf; Prerequisite-Struktur von weiteren JobTIckets bieten"/>
<node CREATED="1681775915726" ID="ID_723266604" MODIFIED="1681775925599" TEXT="diese m&#xfc;ssen irgendwo in Storage gehalten werden"/>
<node CREATED="1681775956207" ID="ID_403116999" MODIFIED="1681775974479" TEXT="idealerweise kann der Test diese Stuktur in Grenzen selber vorgeben">
<node CREATED="1681776011645" ID="ID_398083887" MODIFIED="1681776024883" TEXT="das w&#xe4;re eine DSL...">
<icon BUILTIN="smiley-oh"/>
</node>
<node CREATED="1681776041364" ID="ID_581175494" MODIFIED="1681832931895" TEXT="man k&#xf6;nnte GenNode nutzen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...bevor ich jetzt anfange, eine symbolische Notation und einen Parser zu erfinden, w&#228;re ein einfache Konvetion f&#252;r <i>structured data</i>&#160; wohl sinnvoller; dann k&#246;nnte man die Builder-Notation f&#252;r GenNode nutzen
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#fef7d1" DESTINATION="ID_1664606019" ENDARROW="Default" ENDINCLINATION="139;-4;" ID="Arrow_ID_1184218305" STARTARROW="None" STARTINCLINATION="13;150;"/>
</node>
</node>
<node CREATED="1681776275452" ID="ID_952967108" MODIFIED="1681776292134" TEXT="damit w&#xfc;rde hier sogar eine Art Mock-Fixture gebaut">
<node CREATED="1681776316175" ID="ID_814536760" MODIFIED="1681776323218" TEXT="1.Ebene: Segmentation"/>
<node CREATED="1681776335491" ID="ID_1866146614" MODIFIED="1681776353238" TEXT="jedes Element: ein JobTicket"/>
</node>
</node>
<node COLOR="#338800" CREATED="1681742895901" ID="ID_594113874" MODIFIED="1684878274989" TEXT="Test-Job">
<icon BUILTIN="button_ok"/>
<node CREATED="1681777299523" ID="ID_252686764" MODIFIED="1681777342528" TEXT="alle Test-Jobs verwenden einen einzigen Funktor"/>
<node CREATED="1681777343685" ID="ID_572811753" MODIFIED="1681777357938" TEXT="dieser beherbergt ein TestLog"/>
<node CREATED="1681777358683" ID="ID_768023482" MODIFIED="1681777393914" TEXT="er kann aber mit einem Adapter speziell markiert werden"/>
<node CREATED="1681777394886" ID="ID_1582494030" MODIFIED="1681777440923" TEXT="bei Aufruf loggt der Job diese spezilelle Marke + gegebene Frame-Koord"/>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1681831353728" ID="ID_1982624809" MODIFIED="1681831371808" TEXT="l&#xe4;ngerfristig: DummyPlayConnection ausbauen">
<icon BUILTIN="hourglass"/>
<node CREATED="1681831376448" ID="ID_1561067125" MODIFIED="1681831389254" TEXT="dort soll eine integrierte Dummy-Fixture entstehen">
<icon BUILTIN="info"/>
</node>
<node CREATED="1681832399136" ID="ID_1606283048" MODIFIED="1681832419154" TEXT="diese baut auf den Test-Hilfsmitteln auf (die wir hier entwickeln)"/>
<node CREATED="1681832422005" ID="ID_1203832652" MODIFIED="1681832531957" TEXT="aber: das ist mehr ein Konfigurations Front-end">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      den skizzierten, wie &#252;blich weitreichenden Pl&#228;nen gem&#228;&#223; kann mit erheblicher Komplexit&#228;t gerechnet werden; es erscheint daher angemessen, die eigentlichen Mock-Bausteine separat nutzbar zu halten und die DummyPlayConnection zur Orchestrierung des jeweiligen Test-Setup zu verwenden
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#338800" CREATED="1681832844221" ID="ID_826966768" MODIFIED="1684878140956" TEXT="Aufbau">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1681832851795" ID="ID_1453467501" MODIFIED="1684877396857" TEXT="vom MockJobTicket aus beginnen...">
<icon BUILTIN="yes"/>
<node COLOR="#338800" CREATED="1681832899812" ID="ID_1664606019" MODIFIED="1684816357301" TEXT="GenNode-basierter Implementierungs-Kern">
<linktarget COLOR="#fef7d1" DESTINATION="ID_1664606019" ENDARROW="Default" ENDINCLINATION="139;-4;" ID="Arrow_ID_1184218305" SOURCE="ID_581175494" STARTARROW="None" STARTINCLINATION="13;150;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1681833031252" HGAP="29" ID="ID_1232985944" MODIFIED="1682953126289" TEXT="leer" VSHIFT="14">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1682205060282" ID="ID_290012620" MODIFIED="1683835350728" TEXT="mehrere Segmente">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1681833034545" ID="ID_1378629902" MODIFIED="1684816356127" TEXT="rekursiv mit Prerequisite">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1682419270798" ID="ID_1327152864" MODIFIED="1684889569515" TEXT="#1294 prototype / mock fixture components">
<icon BUILTIN="info"/>
<node COLOR="#435e98" CREATED="1682419302874" ID="ID_1541946258" MODIFIED="1684816351989" TEXT="Den Knoten aufl&#xf6;sen &#x27f9; Prototyping">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ich steck mit dem Entwurf fest,
    </p>
    <ul>
      <li>
        weil ein deduktives Interface-Design gef&#228;hrlich w&#228;re
      </li>
      <li>
        aber ich keine ausgearbeiteten Details f&#252;r einen induktiven Zugang habe
      </li>
    </ul>
    <p>
      Daher gehe ich von der bis jetzt entwickelten Architekturskizze aus, und baue zun&#228;chst ein System von Mock-Implementierungen bottom-up; auf dieser Basis kann ich dann (hoffentlich) in die Konstruktion der Engine eindringen, um so erst die Basis zu schaffen f&#252;r eine realistische Beurteilung der M&#246;glichkeiten und Anforderungen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
<node CREATED="1682419339405" ID="ID_1304787492" MODIFIED="1682419598749" TEXT="erst mal sch&#xf6;n &#x201e;hexagonale&#x201c; Mocks aufbauen">
<icon BUILTIN="full-1"/>
</node>
<node CREATED="1682419357534" ID="ID_784932569" MODIFIED="1682419600859" TEXT="aus diesen die Interfaces gewinnen">
<icon BUILTIN="full-2"/>
</node>
<node CREATED="1682419367267" ID="ID_426837392" MODIFIED="1682419603503" TEXT="dann die &#x201e;hexagonalen R&#xe4;der&#x201c; rund schleifen">
<icon BUILTIN="full-3"/>
</node>
</node>
<node CREATED="1682611316697" ID="ID_296140708" MODIFIED="1682614014464" TEXT="Vorschau auf die Fixture-Datenstruktur">
<arrowlink COLOR="#735061" DESTINATION="ID_1136070257" ENDARROW="Default" ENDINCLINATION="-651;-968;" ID="Arrow_ID_1804652676" STARTARROW="None" STARTINCLINATION="-518;37;"/>
<icon BUILTIN="idea"/>
<node CREATED="1682613713646" ID="ID_1897977418" MODIFIED="1682613726321" TEXT="l&#xe4;uft auf eine Doppel-H&#xfc;lle hinaus"/>
<node CREATED="1682613727302" ID="ID_1816573739" MODIFIED="1682613737271" TEXT="wir implementieren im Moment nur einen Level"/>
<node CREATED="1682613738020" ID="ID_3577348" MODIFIED="1682613823627" TEXT="&#x27f9; Konsequenzen">
<node CREATED="1682613762760" ID="ID_970667296" MODIFIED="1682613815597" TEXT="Datenstruktur kann (bedenkenlos) direkt manipuliert werden">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1682613782480" ID="ID_178794461" MODIFIED="1683809842806" TEXT="Split-and-Splice-Operation implementieren">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...das wird dann sp&#228;ter die Basis f&#252;r die Implementierung des Change-Builders
    </p>
    <ul>
      <li>
        diese Operation untersucht die bestehende Segmentation
      </li>
      <li>
        und spaltet bestehende Segmente auf
      </li>
      <li>
        sie kann unterscheiden zwischen Umbau(=replacement) und K&#252;rzen bzw. Klonen eines Segments
      </li>
      <li>
        Schlu&#223;folgerung: ein Segment selbst darf nichts &#252;ber seine Zeitspanne wissen
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1682384630010" ID="ID_1719484347" MODIFIED="1686679804479" TEXT="Test-Spezifikation">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="info"/>
<node CREATED="1682384645189" ID="ID_384048903" MODIFIED="1682384657607" TEXT="1 Record pro Segment">
<node CREATED="1682384866271" ID="ID_1100765917" MODIFIED="1682384873170" TEXT="start=Time"/>
<node CREATED="1682384873831" ID="ID_11801580" MODIFIED="1682384878098" TEXT="after=Time"/>
</node>
<node CREATED="1682384687176" ID="ID_610330883" MODIFIED="1682385008647" TEXT="das Haupt-Job-Ticket wird damit identifiziert">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Das mache ich ganz bewu&#223;t, um die Notation intuitiver lesbar zu machen. Tats&#228;chlich ist der Unterschied zwischen Segment und zugeh&#246;rigem JobTicket nur formaler oder systematischer Natur; es sind eben zwei verschiedene Entit&#228;ten, aber sie korrelieren 1:1 und repr&#228;sentieren lediglich eine unterschiedliche Sicht auf die gleiche Sache &#8212; denn ein Segmeint ist genau dadurch definiert, da&#223; die Verarbeitungs-Pipeline konstant ist
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1682385755668" ID="ID_192114797" MODIFIED="1682385838716" TEXT="ein leerer Record definiert bereits ein JobTicket">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...die Sache so einfach wie m&#246;glich halten, und keine spezielle ID-Logik nur f&#252;r die Tests erfinden!
    </p>
  </body>
</html></richcontent>
<node CREATED="1682385844965" ID="ID_1297348837" MODIFIED="1682385858720" TEXT="mark=&lt;int&gt;"/>
<node CREATED="1682385860578" ID="ID_1867818480" MODIFIED="1682385868229" TEXT="optional, sonst was Zuf&#xe4;lliges"/>
</node>
<node CREATED="1682384701245" ID="ID_621302512" MODIFIED="1682384816595" TEXT="nested Records f&#xfc;r Prerequisites">
<node CREATED="1682385047640" ID="ID_1371682614" MODIFIED="1682385052546" TEXT="sie liegen im Scope"/>
<node CREATED="1682385053111" ID="ID_285349039" MODIFIED="1682385061769" TEXT="Reihenfolge ist zu erhalten"/>
<node COLOR="#5b280f" CREATED="1682385069872" ID="ID_1300373934" MODIFIED="1685987819535" TEXT="dabei aber noch sortiert nach Channel">
<icon BUILTIN="button_cancel"/>
</node>
</node>
<node CREATED="1687226692385" ID="ID_1322717339" MODIFIED="1687226857990" TEXT="Latenz/Laufzeit testbar machen">
<linktarget COLOR="#8593a4" DESTINATION="ID_1322717339" ENDARROW="Default" ENDINCLINATION="-866;77;" ID="Arrow_ID_2406913" SOURCE="ID_1364608777" STARTARROW="None" STARTINCLINATION="443;31;"/>
<node CREATED="1687226834096" ID="ID_686916201" MODIFIED="1687226844369" TEXT="runtime=&lt;duration&gt;"/>
<node COLOR="#435e98" CREATED="1687307530172" ID="ID_1233686432" MODIFIED="1687307554028" TEXT="sonst: ExitNode DUMMY_JOB_DURATION = 1/50s">
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#5b280f" CREATED="1682384817342" ID="ID_1041945883" MODIFIED="1686679760838" TEXT="Channel-Zuordnung nur per Filter/Marker">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Ich bin weiterhin noch nicht davon &#252;berzeugt, da&#223; die Differenzierung in Channel &#252;berhaupt notwendig und hilfreich ist; aber ich kann das derzeit nicht belegen &#10233; daher spiele ich das Thema erst mal herunter
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_cancel"/>
<node COLOR="#435e98" CREATED="1683809711717" ID="ID_1916276594" LINK="#ID_1346581014" MODIFIED="1685987685173" TEXT="Channel sind tats&#xe4;chlich ModelPorts">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1683809741762" ID="ID_610603117" MODIFIED="1686581258295" TEXT="daher wandern sie vom JobTicket in das Segment">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1686679744191" ID="ID_1546924020" MODIFIED="1686679756422" TEXT="Channel-Differenzierung wurde aus dem JobTicket entfernt">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1685988083711" ID="ID_1973560674" MODIFIED="1686679703593" TEXT="Differenzierung nach ModelPort schwer umsetzbar">
<linktarget COLOR="#811354" DESTINATION="ID_1973560674" ENDARROW="Default" ENDINCLINATION="-1463;83;" ID="Arrow_ID_345386605" SOURCE="ID_1499657819" STARTARROW="None" STARTINCLINATION="-217;-8;"/>
<icon BUILTIN="hourglass"/>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1686498710958" ID="ID_200132237" MODIFIED="1686498774995" TEXT="nicht klar ob das f&#xfc;r die Mock-L&#xf6;sung &#xfc;berhaupt gebraucht wird">
<icon BUILTIN="help"/>
</node>
<node COLOR="#435e98" CREATED="1686498723556" ID="ID_1464720710" MODIFIED="1686608229845">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      derzeit erzeugt die Mock-L&#246;sung nur ein NodeGraphAttachment f&#252;r ModelPort-Index &#8788; 0
    </p>
    <p>
      und der MockDispatcher doppelt die definierte Exit-Node struktur identisch auf
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1686525035254" ID="ID_1328903780" MODIFIED="1686525426254" TEXT="man k&#xf6;nnte ein zus&#xe4;tzliches Attribut &quot;modelPort&quot; in die Spec einf&#xfc;hren">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      dieses w&#252;rde auf top-Level dann jeweils die generierte ExitNode-Struktur dieser ModelPort-ID zuordnen, und auf subtree-Ebene auf diesen ModelPort einschr&#228;nken / filtern; allerdings kann ein Attribut in Rec&lt;GenNode&gt; nur einmal gesetzt werden. Alternativ k&#246;nnte man in die Spec die M&#246;glichkeit einbauen, ein Segment mit gleichen Zeiten mehrfach zu definieren, und dann mit jeweils anderem modelPort.
    </p>
    <p>
      
    </p>
    <p>
      &#10233; <font color="#5a3484">alle offensichtlichen einfachen Erweiterungen der Spec <i>sind nicht sch&#246;n...</i></font>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1685987717673" ID="ID_1636681352" MODIFIED="1685987743599" TEXT="Umgang mit ModelPorts">
<node CREATED="1685987749304" ID="ID_771112192" MODIFIED="1685987767020" TEXT="das Haupt-Ticket ist f&#xfc;r jeden ModelPort stets vorhanden"/>
<node CREATED="1685987950917" ID="ID_1508383680" MODIFIED="1685988010119" TEXT="Prerequisites standardm&#xe4;&#xdf;ig auch aufdoppeln">
<linktarget COLOR="#473c5f" DESTINATION="ID_1508383680" ENDARROW="Default" ENDINCLINATION="210;13;" ID="Arrow_ID_167679696" SOURCE="ID_1014305317" STARTARROW="None" STARTINCLINATION="558;-28;"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1685987970674" ID="ID_430182913" MODIFIED="1685990226060" TEXT="aber Filter-M&#xf6;glichkeit vorsehen">
<icon BUILTIN="hourglass"/>
<node CREATED="1685990229531" ID="ID_865677439" MODIFIED="1685990235582" TEXT="YAGNI">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1685990238496" ID="ID_262692344" LINK="#ID_829030768" MODIFIED="1685990356186" TEXT="Thema erst mal ignorieren">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      auch wenn es irre scheint, sehr wahrscheinlich werde ich den ganzen Scheduler entwickeln k&#246;nnen, ohne jemals ein reales low-level-Model anzufassen; daher ist die Port-Nummer wahrscheinlich v&#246;llig egal, und es gn&#252;gt, lediglich die APIs entsprechend zu erweitern...
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1681833071385" FOLDED="true" ID="ID_1107925235" MODIFIED="1684816361001" TEXT="MockJob hinterlegen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1682036849793" ID="ID_1932533229" MODIFIED="1682047342244" TEXT="MockJob aufrufen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1682041035913" ID="ID_755113791" MODIFIED="1682047265222" TEXT="dann doch vielleicht besser den bestehenden DummyJob nehmen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1682047266117" ID="ID_435343452" MODIFIED="1682047333709" TEXT="zus&#xe4;tzliche Accessoren">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1682047285995" ID="ID_1230929061" MODIFIED="1682047293130" TEXT="den JobFunktor">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1682047278699" ID="ID_1344827300" MODIFIED="1682047293960" TEXT="die weiteren Invocation-Parameter">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1682047294527" ID="ID_180549719" LINK="#ID_689625560" MODIFIED="1682047331605" TEXT="dabei nochmal &#xfc;ber den Sinn der InvocationInstanceID nachgedacht">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1682036866495" ID="ID_901931862" MODIFIED="1682047344590" TEXT="MockJob verifizieren">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1682047349883" ID="ID_840362221" MODIFIED="1682047412550" TEXT="neues Feature: Systemzeit &#x201e;grad eben&#x201c;">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      definiert als: weniger als 1ms in der Vergangenheit
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1682047394076" ID="ID_1279848807" MODIFIED="1682047409293" TEXT="RealClock::wasRecently()">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1682047415969" ID="ID_1003810847" MODIFIED="1682047424039" TEXT="die anderen Parameter mit Zufallswerten">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1682204997554" ID="ID_599701197" MODIFIED="1684815618152" TEXT="Prerequisites hinzuf&#xfc;gen">
<linktarget COLOR="#92f974" DESTINATION="ID_599701197" ENDARROW="Default" ENDINCLINATION="-476;357;" ID="Arrow_ID_766289667" SOURCE="ID_728138659" STARTARROW="None" STARTINCLINATION="391;17;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1683836490113" ID="ID_1045524420" MODIFIED="1684815616170" TEXT="per rekursiver GenNode-Auswertung">
<icon BUILTIN="button_ok"/>
<node CREATED="1684815623800" ID="ID_837898404" MODIFIED="1684815629260" TEXT="tendentiell gef&#xe4;hrlich"/>
<node CREATED="1684815629809" ID="ID_1444428" MODIFIED="1684815642939" TEXT="Erzeugung und Auswertung erfolgen ineinander verschachtelt"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1684815644310" ID="ID_1683688581" MODIFIED="1684816178878" STYLE="fork" TEXT="der Allokator mu&#xdf; re-entrant aufgerufen werden k&#xf6;nnen">
<arrowlink COLOR="#9f1b69" DESTINATION="ID_447348202" ENDARROW="Default" ENDINCLINATION="-766;-108;" ID="Arrow_ID_1594018198" STARTARROW="None" STARTINCLINATION="596;0;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node COLOR="#338800" CREATED="1683836500089" ID="ID_993440863" MODIFIED="1684815606576" TEXT="testen &#xfc;ber neues Interface getPrerequisites()">
<arrowlink COLOR="#eb64a1" DESTINATION="ID_885444410" ENDARROW="Default" ENDINCLINATION="213;-1966;" ID="Arrow_ID_1011579074" STARTARROW="None" STARTINCLINATION="-384;23;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1683897388982" ID="ID_1523682954" MODIFIED="1684797093179" TEXT="dabei M&#xf6;glichkeiten zur Pipeline-Verarbeitung ausloten">
<linktarget COLOR="#dd399a" DESTINATION="ID_1523682954" ENDARROW="Default" ENDINCLINATION="-371;858;" ID="Arrow_ID_1803678506" SOURCE="ID_726660737" STARTARROW="None" STARTINCLINATION="267;-16;"/>
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1683897470433" FOLDED="true" ID="ID_293583902" MODIFIED="1684816340515" TEXT="ziemlich m&#xfc;hsam...">
<icon BUILTIN="smiley-angry"/>
<node COLOR="#ff0000" CREATED="1683897495069" ID="ID_668257697" MODIFIED="1683897532038" TEXT="Pipeline &#xfc;ber JobTicket&amp; gelingt &#xfc;berhaupt nicht">
<icon BUILTIN="broken-line"/>
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#435e98" CREATED="1683897542382" ID="ID_1067290974" MODIFIED="1684712493949" TEXT="auch mit JobTicket* geht nicht">
<icon BUILTIN="broken-line"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1683897566957" ID="ID_1817158319" MODIFIED="1683897573478" TEXT="das mu&#xdf; gehen!!">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1683897595136" ID="ID_971835812" MODIFIED="1684712472292" TEXT="Untersuchung">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1683897607352" ID="ID_985878681" MODIFIED="1683897830578" TEXT="Expander-Functor explizit definiert">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      FUN = std::function&lt;lib::TransformIter&lt;
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;lib::TransformIter&lt;
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;lib::IterStateWrapper&lt;
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;steam::engine::JobTicket::Prerequisite,
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; LinkedElements&lt;JobTicket::Prerequisite&gt;::IterationState
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&gt;,
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;const steam::engine::JobTicket&amp;
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&gt;,
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;steam::engine::JobTicket*
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&gt;(steam::engine::JobTicket*)
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&gt;&amp;
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1683897870753" ID="ID_259217789" MODIFIED="1683897957907" TEXT="zwei Assertion-Failures">
<icon BUILTIN="broken-line"/>
<node CREATED="1683897902860" ID="ID_809794871" MODIFIED="1683897955416" TEXT="iterator from the expansion must yield compatible values">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      src/lib/iter-tree-explorer.hpp:632
    </p>
  </body>
</html></richcontent>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
<node CREATED="1683897921602" ID="ID_1597038481" MODIFIED="1683897942154" TEXT="bound functor must accept the source iterator or state core as parameter">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      src/lib/iter-tree-explorer.hpp:513
    </p>
  </body>
</html></richcontent>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
</node>
<node COLOR="#338800" CREATED="1683897959342" FOLDED="true" ID="ID_1569391939" MODIFIED="1684712476011" TEXT="Analyse">
<icon BUILTIN="button_ok"/>
<node CREATED="1683897967984" ID="ID_98765669" MODIFIED="1684189289245" TEXT="der Pfad zur 1.Assertion ist dubios">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Er geht &#252;ber die Instantiierung des Expander-Typs -&gt; _DecoratorTraits&lt;RES&gt;::SrcIter
    </p>
    <ul>
      <li>
        wobei RES der sichtbare Ergebnis-Typ des Expand-Funktors ist, also ein Iterator.
      </li>
      <li>
        mir f&#228;llt auf, da&#223; die Auswertung von shall_wrap_STL_Iter&lt;RES&gt; geht
      </li>
      <li>
        <font color="#ac0122">etwas sonderbar ist</font>, da&#223; dieser Auswertungspfad als Call-Stack f&#252;r die Assertion-Failure auftaucht (k&#246;nnte aber einfach der Arbeitsweise des Compilers geschuldet sein)
      </li>
    </ul>
  </body>
</html></richcontent>
<linktarget COLOR="#7e8690" DESTINATION="ID_98765669" ENDARROW="Default" ENDINCLINATION="349;0;" ID="Arrow_ID_1245494875" SOURCE="ID_913649620" STARTARROW="None" STARTINCLINATION="-145;-3;"/>
</node>
<node COLOR="#5b280f" CREATED="1683898203764" ID="ID_1213067535" MODIFIED="1684710628254" TEXT="die 2. Assertion stellt ein allgemeineres Problem dar">
<icon BUILTIN="button_cancel"/>
<node CREATED="1683898228440" ID="ID_1125499200" MODIFIED="1683898237979" TEXT="Einstieg ist hier &#xfc;ber den Expander-ctor">
<node CREATED="1683898284523" ID="ID_589425980" MODIFIED="1683898284523" TEXT="_FunTraits&lt;FUN,ResIter&gt;::adaptFunctor"/>
<node CREATED="1683898287377" ID="ID_913649620" MODIFIED="1684189300723" TEXT="ResIter ist im Umfeld der 1. Assertion failure definiert">
<arrowlink COLOR="#7e8690" DESTINATION="ID_98765669" ENDARROW="Default" ENDINCLINATION="349;0;" ID="Arrow_ID_1245494875" STARTARROW="None" STARTINCLINATION="-145;-3;"/>
</node>
<node CREATED="1683898481412" ID="ID_660322820" MODIFIED="1683898487874" TEXT="das baut den ArgAdapter auf"/>
</node>
<node CREATED="1683898448043" ID="ID_860235777" MODIFIED="1684189469869" TEXT="offensichtlich l&#xe4;uft die Auswertung in den Base-Case">
<icon BUILTIN="info"/>
<node CREATED="1683898517698" ID="ID_1961360998" MODIFIED="1683898528437" TEXT="Base-Case: pass-through unaltered Fuctor"/>
<node CREATED="1683898531617" ID="ID_1959356638" MODIFIED="1683898557176" TEXT="Special-1: monadic">
<node COLOR="#990033" CREATED="1683898704072" ID="ID_345436088" MODIFIED="1684708632164" TEXT="wollen wir nicht hier hin?">
<icon BUILTIN="help"/>
<node CREATED="1684708634717" ID="ID_676379435" MODIFIED="1684708646730" TEXT="so ist es">
<icon BUILTIN="yes"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1684708688998" ID="ID_638390656" MODIFIED="1684708818150">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      aber ResIter::value_type war <b>JobTicket</b>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="broken-line"/>
</node>
<node COLOR="#338800" CREATED="1684708774975" ID="ID_1784988200" LINK="#ID_15316954" MODIFIED="1684708806278" TEXT="und das war eindeutig falsch">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1684708648107" ID="ID_1479488565" MODIFIED="1684710646188" TEXT="aber: deshalb mu&#xdf; das nicht der Base-Case sein">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Das Design an der Stelle ist schon in Ordnung: als Base-Case nehmen wir die Situation, in der der Funktor eben gar nicht mehr adaptiert werden mu&#223; &#8212; auch wenn das rein logisch ein Sonderfall ist; andererseits erfordert der <i>rein logisch &#8222;einfachste&#8220; Fall</i>&#160;eben eine zus&#228;tzliche Operation, n&#228;mlich eine Dereferenzierung des Quell-Iterators &#8212; und es ist sinnlos, diesen Spezialfall zu verdrahten, wenn die Typen nicht passen. Hinzu kommt, da&#223; wir mit dieser Anordnung auch gezielter die Parameter-Typen pr&#252;fen k&#246;nnen
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#756b83" DESTINATION="ID_1867856441" ENDARROW="Default" ENDINCLINATION="26;-82;" ID="Arrow_ID_439719980" STARTARROW="None" STARTINCLINATION="-197;11;"/>
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1683898653511" ID="ID_1532959059" MODIFIED="1683898662713" TEXT="Special-2: IterSource"/>
</node>
<node CREATED="1684710576829" ID="ID_1867856441" MODIFIED="1684710646189" TEXT="nein: das ist letztlich kein allgemeines Problem">
<linktarget COLOR="#756b83" DESTINATION="ID_1867856441" ENDARROW="Default" ENDINCLINATION="26;-82;" ID="Arrow_ID_439719980" SOURCE="ID_1479488565" STARTARROW="None" STARTINCLINATION="-197;11;"/>
<icon BUILTIN="yes"/>
<icon BUILTIN="stop-sign"/>
<node CREATED="1684710649023" ID="ID_169810584" MODIFIED="1684710660771" TEXT="das generelle Design ist in Ordnung"/>
<node CREATED="1684710661269" ID="ID_1617858211" MODIFIED="1684710688359" TEXT="die Konvertierung mu&#xdf; definitiv funktionieren f&#xfc;r den &#xbb;monadischen&#xab; Use-case">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1684710689627" ID="ID_445283289" MODIFIED="1684710708244" TEXT="man k&#xf6;nnte noch die Typ-Checks verfeinern">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1684191110019" ID="ID_1963874644" MODIFIED="1684192179077" TEXT="schon beim Ansetzen des Expander-Functors tritt ein Fehler auf">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1684191137018" ID="ID_1953636647" MODIFIED="1684191181425" TEXT="das war erst durch die anderen Assertions maskiert">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...insofern wurde es erst sichtbar, als ich angefangen habe, den Aufruf zu de/re-konstruieren
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1684191952212" ID="ID_486753512" MODIFIED="1684191996174" TEXT="passiert beim Instantiieren des nun eingef&#xfc;hrten nachgeschalteten Transformers">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...der daf&#252;r sorgen soll, da&#223; aus dem Expand-Funktor ein JobTicket* rauskommt
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1684192107069" ID="ID_1162698734" MODIFIED="1684192121793" TEXT="ist ein const-correctness-Problem">
<icon BUILTIN="idea"/>
<node CREATED="1684192131373" ID="ID_724171201" MODIFIED="1684192159133" TEXT="Vorsicht: ich hatte die JobTicket::getPrerequisites auf -&gt; JobTicket const&amp; umgestellt">
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#5b280f" CREATED="1684192160287" ID="ID_1810931642" MODIFIED="1684796998110" TEXT="tr&#xe4;gt aber nicht zum eigentlichen Problem bei">
<icon BUILTIN="button_cancel"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1684189641549" FOLDED="true" ID="ID_1940567504" MODIFIED="1684712468878" TEXT="Rekonstruktion">
<icon BUILTIN="button_ok"/>
<node CREATED="1684189652118" ID="ID_1161273177" MODIFIED="1684189992174" TEXT="Teile des Call-Graphen explizit nachbauen">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#435e98" CREATED="1684189997712" ID="ID_770060385" MODIFIED="1684796971056" TEXT="Aufruf der expand()-Funktion">
<icon BUILTIN="full-1"/>
<node CREATED="1684190290749" ID="ID_1560322036" MODIFIED="1684190302792" TEXT="Parameter sehen erst mal korrekt aus">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      FUN = std::function&lt;
    </p>
    <p>
      &#160;&#160;&#160; TransformIter&lt;TransformIter&lt;IterStateWrapper&lt;JobTicket::Prerequisite, LinkedElements&lt;JobTicket::Prerequisite&gt;::IterationState&gt;
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;,engine::JobTicket const&amp;&gt;
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;,engine::JobTicket*&gt;(steam::engine::JobTicket*)
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&gt;&amp;;
    </p>
    <p>
      SRC = iter_explorer::BaseAdapter&lt;SingleValIter&lt;engine::JobTicket*&gt; &gt;
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
<node CREATED="1684190865840" ID="ID_332062593" MODIFIED="1684191109085" TEXT="SRC kann ich auch direkt instantiieren">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      per TypeDebugger verifiziert: die explizit angeschriebene Variable 'start' hat den richtigen Typ
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1684190344981" ID="ID_355562629" MODIFIED="1684712272486" TEXT="Typdefinitionen im Scope nachstellen">
<icon BUILTIN="broken-line"/>
<node COLOR="#338800" CREATED="1684190359856" ID="ID_1556615567" MODIFIED="1684192734794" TEXT="ExpandedChildren">
<icon BUILTIN="button_ok"/>
<node CREATED="1684192421610" ID="ID_152699502" MODIFIED="1684192429943" TEXT="l&#xe4;&#xdf;t sich fehlerfrei konstruieren"/>
<node CREATED="1684192434370" ID="ID_115735723" MODIFIED="1684192861769" TEXT="Typ ist wie erwartet (&#x2261; Ergebnis-Typ vom Expand-Funktor)">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      TransformIter&lt;TransformIter&lt;IterStateWrapper&lt;engine::JobTicket::Prerequisite
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ,LinkedElements&lt;engine::JobTicket::Prerequisite&gt;::IterationState&gt;
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;,engine::JobTicket const&amp;
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&gt;
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;,steam::engine::JobTicket*
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&gt;
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1684190367907" ID="ID_172958877" MODIFIED="1684796978191" TEXT="ResCore">
<icon BUILTIN="broken-line"/>
<node CREATED="1684193043318" ID="ID_1720124636" MODIFIED="1684193145322" TEXT="l&#xe4;&#xdf;t sich fehlerfrei konstruieren (&#xdc;berraschung)">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1684193274123" ID="ID_1796870542" MODIFIED="1684193283864" TEXT="Typ sieht auch konsistent aus">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      lib::iter_explorer::Expander&lt;lib::iter_explorer::BaseAdapter&lt;lib::SingleValIter&lt;steam::engine::JobTicket*&gt; &gt;, lib::TransformIter&lt;lib::TransformIter&lt;lib::IterStateWrapper&lt;steam::engine::JobTicket::Prerequisite, lib::LinkedElements&lt;steam::engine::JobTicket::Prerequisite&gt;::IterationState&gt;, const steam::engine::JobTicket&amp;&gt;, steam::engine::JobTicket*&gt; &gt;
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1684193120895" ID="ID_242374698" MODIFIED="1684193148876" TEXT="aber sobald ich diesen Typ verwende, wird die 1.Assertion getriggert">
<icon BUILTIN="forward"/>
<icon BUILTIN="broken-line"/>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1684190373721" ID="ID_15651794" MODIFIED="1684712269686" TEXT="ResIter">
<icon BUILTIN="hourglass"/>
</node>
</node>
<node COLOR="#338800" CREATED="1684712274673" ID="ID_1278371704" MODIFIED="1684712282314" TEXT="nach den Bugfixes nun korrekt">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1684193643850" ID="ID_1282590268" MODIFIED="1684707828456" TEXT="Iteratoren im Expander">
<icon BUILTIN="full-2"/>
<node CREATED="1684193679461" ID="ID_1517572148" MODIFIED="1684193781438" TEXT="Parameter der Expander-Instantiierung sind konsistent mit der Erwartung">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Expander&lt;SrC, ExpandedChildren&gt;
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
<node COLOR="#338800" CREATED="1684193786647" ID="ID_785331918" MODIFIED="1684195906557" TEXT="Decorator-Traits-Instanz untersuchen">
<icon BUILTIN="button_ok"/>
<node CREATED="1684194433377" ID="ID_82593902" MODIFIED="1684194453222" TEXT="gew&#xe4;hlter Fall: shall_use_Lumiera_Iter&lt;SRC&gt;">
<icon BUILTIN="info"/>
<node COLOR="#338800" CREATED="1684194479811" ID="ID_1879611037" MODIFIED="1684194483057" TEXT="korrekt">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1684194489074" ID="ID_706865792" MODIFIED="1684194589443" TEXT="ist dann einfach der ExpandedChildren (ohne Referenz)"/>
</node>
<node CREATED="1684194906098" ID="ID_1480156019" MODIFIED="1684195807735" TEXT="SRC::value_type &#x2261; JobTicket*">
<arrowlink COLOR="#ed1b60" DESTINATION="ID_972416826" ENDARROW="Default" ENDINCLINATION="28;-107;" ID="Arrow_ID_233555923" STARTARROW="None" STARTINCLINATION="90;0;"/>
</node>
<node CREATED="1684194719091" ID="ID_752820718" MODIFIED="1684194943493">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      ResIter::value_type &#8801; <font color="#c9012e">JobTIcket</font>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1684194768462" ID="ID_1432190443" MODIFIED="1684194976969" TEXT="h&#xe4;?">
<icon BUILTIN="smiley-oh"/>
</node>
<node COLOR="#435e98" CREATED="1684194773868" ID="ID_15316954" MODIFIED="1684195753953" TEXT="wo ist der Pointer geblieben...?">
<icon BUILTIN="help"/>
<node CREATED="1684195382372" ID="ID_725421495" MODIFIED="1684195395436" TEXT="TransformingCore&lt;IT,VAL&gt;"/>
<node CREATED="1684195396117" ID="ID_1996678056" MODIFIED="1684195412585" TEXT="mit VAL = engine::JobTicket*"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1684195442602" ID="ID_412081462" MODIFIED="1684195470723" TEXT="value_type &#x2261; typename RefTraits&lt;VAL&gt;::value_type ">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1684195677474" ID="ID_972416826" MODIFIED="1684195803287" TEXT="dagegen SingleValIter geht anders vor">
<linktarget COLOR="#ed1b60" DESTINATION="ID_972416826" ENDARROW="Default" ENDINCLINATION="28;-107;" ID="Arrow_ID_233555923" SOURCE="ID_1480156019" STARTARROW="None" STARTINCLINATION="90;0;"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1684195699339" ID="ID_1562178442" MODIFIED="1684195708018" TEXT="SingleValCore&lt;VAL&gt;"/>
<node CREATED="1684195396117" ID="ID_1028989688" MODIFIED="1684195412585" TEXT="mit VAL = engine::JobTicket*"/>
<node CREATED="1684195724956" ID="ID_1264640517" MODIFIED="1684195739270" TEXT="value_&#x2261; type typename std::remove_reference&lt;VAL&gt;::type"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1684195841717" ID="ID_832391082" MODIFIED="1684707611730">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      was w&#228;re an der Stelle <i>logisch korrekt </i>?
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="help"/>
<node CREATED="1684196080429" ID="ID_1302071402" MODIFIED="1684196108330" TEXT="is_convertible&lt; ResIter::value_type &#x27fc; typename SRC::value_type &gt;"/>
<node CREATED="1684196119619" ID="ID_1880424042" MODIFIED="1684196250839">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      die Frage lautet:
    </p>
    <p>
      &#160;&#8222;k&#246;nnen die Expanded-Results verwendet werden,
    </p>
    <p>
      &#160;&#160;an Stellen, wo SRC-Results erwartet werden&#8220;&#160;
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1684196495453" ID="ID_5416756" MODIFIED="1684196584048">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      f&#252;r die Expanded-Results klar: brauche <i>exakt</i>&#160;den <b>Ergebnis-Typ</b>&#160; des Iterators
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1684196589209" ID="ID_1757225531" MODIFIED="1684196635199" TEXT="f&#xfc;r die Src-Results ist die Frage schwierig">
<node CREATED="1684196637531" ID="ID_478127624" MODIFIED="1684196727253" TEXT="man kann ja hier nicht wissen, was wirklich erwartet wird">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...denn das ergibt sich erst im Aufrufkontext; man denke z.B. an rvalue/lvalue-Probleme und temporaries, und das alles noch mit constness gemischt. Auf weia
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1684196742980" ID="ID_431433027" MODIFIED="1684196758118" TEXT="aber ist &#x201e;erwartet&#x201c; wirklich die richtige Frage?"/>
<node CREATED="1684196760602" ID="ID_1448595579" MODIFIED="1684196783658" TEXT="ersatzweise: man m&#xf6;chte beide Datentr&#xf6;me mischen"/>
<node CREATED="1684196867369" ID="ID_672540161" MODIFIED="1684196902035" TEXT="demnach &#x27f9; auch hier der Ergebnis-Typ &#x2014; ggfs. noch ohne Referenz">
<arrowlink DESTINATION="ID_247789540" ENDARROW="Default" ENDINCLINATION="-15;-42;" ID="Arrow_ID_830127139" STARTARROW="None" STARTINCLINATION="-53;2;"/>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#465496" CREATED="1684707547456" HGAP="-6" ID="ID_247789540" MODIFIED="1684707737627" VSHIFT="36">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <u>Fazit</u>: Konversion in SRC::value_type ist <i>per Abschw&#228;chung </i>die korrekte Forderung
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#a9b4c1" DESTINATION="ID_247789540" ENDARROW="Default" ENDINCLINATION="-15;-42;" ID="Arrow_ID_830127139" SOURCE="ID_672540161" STARTARROW="None" STARTINCLINATION="-53;2;"/>
<icon BUILTIN="forward"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1684718878713" ID="ID_741543772" MODIFIED="1684719029190" TEXT="Aber: rein-technisch kann es dabei zu Problemen kommen">
<arrowlink COLOR="#4c3853" DESTINATION="ID_368029592" ENDARROW="Default" ENDINCLINATION="-353;-1260;" ID="Arrow_ID_1815839573" STARTARROW="None" STARTINCLINATION="-394;19;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1684718925338" ID="ID_917570391" MODIFIED="1684718961903" TEXT="&quot;Konversion&quot; kann man nur testen, indem man zuweist oder konstruiert"/>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1684199691017" HGAP="11" ID="ID_791332898" MODIFIED="1684199727372" TEXT="was die Itertools bisher machen ist eindeutig falsch" VSHIFT="25">
<arrowlink COLOR="#ac0677" DESTINATION="ID_1944182984" ENDARROW="Default" ENDINCLINATION="-11;-31;" ID="Arrow_ID_570862373" STARTARROW="None" STARTINCLINATION="-171;9;"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1684195781941" ID="ID_1944182984" MODIFIED="1684707535449" TEXT="Assertion deckt eine Inkonsistenz in den Itertools auf">
<linktarget COLOR="#ac0677" DESTINATION="ID_1944182984" ENDARROW="Default" ENDINCLINATION="-11;-31;" ID="Arrow_ID_570862373" SOURCE="ID_791332898" STARTARROW="None" STARTINCLINATION="-171;9;"/>
<icon BUILTIN="broken-line"/>
<node CREATED="1684196920084" ID="ID_584323645" MODIFIED="1684196955699" TEXT="die Semantik der eingebetteten Typ-Bindings ist nicht klar">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1684196960688" ID="ID_1270509122" MODIFIED="1684196979224" TEXT="ich hab mich da so &#xbb;pragmatisch reingewurschtelt&#xab; in das Thema"/>
<node CREATED="1684196988795" ID="ID_1470485019" MODIFIED="1684197028434" TEXT="Vorlage war die STL, aber ich hatte nicht das Standing, um die STL wirklich zu verstehen"/>
<node CREATED="1684197029232" ID="ID_1741813636" MODIFIED="1684197154710" TEXT="mehr noch: ich wollte (und will) mich von der STL abgrenzen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Und zwar erscheint mir die STL zugleich als zu komplex und zu offen; sie verleitet zu einem Low-level-Geknobel. Genau deshalb habe ich die gesamte Iteratoren- und Konzept-Hierarchie der STL beiseite geschoben, und ein &#187;Lumiera Forward Iterator&#171;-Concept neu definiert.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1684197651402" ID="ID_1881371672" MODIFIED="1684198037445" TEXT="das ist ein berechtigter Ansatz">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Denn ganz bewu&#223;t habe ich es abgelehnt, mit Lumiera ein universelles Framework zu schaffen (wiewohl eine Tendenz dorthin nicht zu verleugnen ist). Vielmehr geht es mit allen Konventionen und Definitionen um eine <b>Gr&#252;ndung</b>, also darum, einen <i>Raum zu schaffen,</i>&#160;in dem sich etwas Neues von einem wohl bestimmten Charakter entwickeln kann. Ich richte mich also nicht nach <i>dem Vorhandenen</i>&#160;und ich mu&#223; nicht <i>dem Vorhandenen in allen seinen Weiterungen und Verzweigungen entsprechen.</i>&#160; Diese Haltung entspricht jedoch auch meinem Charakter: meine F&#228;higkeiten zum Erfassen und Sortieren vorgegebener Normen und Gepflogenheiten waren (und sind) gering, wenn ich mich auf einen solchen Anspruch einlasse, stehe ich schnell kr&#228;ftem&#228;&#223;ig mit dem R&#252;cken zur Wand. Anders die meisten meiner Kollegen, die bl&#252;hen da gradezu auf.
    </p>
  </body>
</html></richcontent>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1684197155852" ID="ID_400106521" MODIFIED="1684197165964" TEXT="hier besteht ein Zielkonflikt">
<arrowlink COLOR="#417491" DESTINATION="ID_308870405" ENDARROW="Default" ENDINCLINATION="19;-228;" ID="Arrow_ID_810121663" STARTARROW="None" STARTINCLINATION="-9;51;"/>
<icon BUILTIN="clanbomber"/>
<node CREATED="1684197167674" ID="ID_1605281324" MODIFIED="1684197185116" TEXT="&#x201e;value&#x201c; ist nicht klar">
<node CREATED="1684197187416" ID="ID_1389861872" MODIFIED="1684197193579" TEXT="kann hei&#xdf;en: Ergebnis"/>
<node CREATED="1684197193975" ID="ID_1959860874" MODIFIED="1684197219945" TEXT="kann auch hei&#xdf;en: der Basistyp (als rvalue)"/>
</node>
<node CREATED="1684197514402" ID="ID_1792502182" MODIFIED="1684197623183">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      der <i>Implementator</i>&#160;m&#246;chte mit den Typedefs die Signaturen aufbauen
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1684197535865" ID="ID_809112903" MODIFIED="1684197616452">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      der <i>Nutzer</i>&#160;m&#246;chte wissen, wie er mit Resultaten umgehen kann
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1684197640002" ID="ID_1847921817" MODIFIED="1684199328264" TEXT="Bezugname auf die STL">
<icon BUILTIN="idea"/>
<node CREATED="1684198966392" ID="ID_449397496" LINK="https://en.cppreference.com/w/cpp/named_req/Container" MODIFIED="1684199002450" TEXT="C++ named requirement: &#xbb;Container&#xab;">
<icon BUILTIN="info"/>
</node>
<node CREATED="1684199007763" ID="ID_1119161771" MODIFIED="1684199048138" TEXT="demnach baut das Schema auf einem Modell auf: Container enth&#xe4;lt &#xbb;values&#xab;"/>
<node CREATED="1684199056069" ID="ID_1539617529" MODIFIED="1684199087165" TEXT="&#x27f9; value_type ist &#x201e;das was im Container liegt&#x201c;">
<node CREATED="1684459356366" ID="ID_734793626" MODIFIED="1684460165746" TEXT="Vorsicht: gilt auch f&#xfc;r const_iterator wenn Werte im Container nicht const">
<linktarget COLOR="#8a5067" DESTINATION="ID_734793626" ENDARROW="Default" ENDINCLINATION="365;14;" ID="Arrow_ID_139514882" SOURCE="ID_472589448" STARTARROW="None" STARTINCLINATION="510;-24;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1684459431583" ID="ID_1927390361" MODIFIED="1684459550547" TEXT="f&#xfc;r meinen Ansatz w&#xe4;re das nicht korrekt">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...f&#252;r die STL schon, aber das ist genau meine Kritik: die STL ist hier zu konkret und zu sehr low-level &#8212; ein const_iterator ist demnach etwas Anderes als ein iterator von einem Container &#252;ber const-Werte, und das widerspricht meinem Konzept, einen Iterator als eine opaque Quelle zu betrachten
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="stop-sign"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1684199284567" ID="ID_156863476" MODIFIED="1684712462534" TEXT="&#xdc;bertragung auf das Konzept &#xbb;Lumiera Forward Iterator&#xab;">
<arrowlink COLOR="#b76aa0" DESTINATION="ID_1930966790" ENDARROW="Default" ENDINCLINATION="643;27;" ID="Arrow_ID_1775444250" STARTARROW="None" STARTINCLINATION="-1192;-62;"/>
<icon BUILTIN="yes"/>
<node CREATED="1684199406472" ID="ID_735062401" MODIFIED="1684199434386" TEXT="&#xbb;value&#xab; ist das, was der Iterator vorr&#xfc;bergehend zug&#xe4;nglich macht">
<icon BUILTIN="forward"/>
</node>
<node CREATED="1684199485120" ID="ID_741685332" MODIFIED="1684199519934" TEXT="&#xbb;reference&#xab; ist ein referenzierender, nicht kopierender Zugriff darauf">
<icon BUILTIN="forward"/>
</node>
<node CREATED="1684199543918" ID="ID_780125561" MODIFIED="1684199621884" TEXT="&#xbb;pointer&#xab; ist die &#xdc;bersetzung der &#xbb;reference&#xab; in das Konzept &#xbb;language pointer&#xab;">
<icon BUILTIN="forward"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1684283054061" ID="ID_308870405" MODIFIED="1684705269237" TEXT="besseres Schema entwickeln">
<linktarget COLOR="#417491" DESTINATION="ID_308870405" ENDARROW="Default" ENDINCLINATION="19;-228;" ID="Arrow_ID_810121663" SOURCE="ID_400106521" STARTARROW="None" STARTINCLINATION="-9;51;"/>
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#323686" CREATED="1684283167742" FOLDED="true" ID="ID_1215524261" MODIFIED="1684705263433" TEXT="Nutzung aufkl&#xe4;ren">
<icon BUILTIN="info"/>
<node CREATED="1684283181124" ID="ID_1050927524" MODIFIED="1684283195247" TEXT="(zum Gl&#xfc;ck) noch ein relativ abgeschlossenes &#xd6;kosystem">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1684283199105" ID="ID_50297024" MODIFIED="1684283359373" TEXT="die ::pointer Typedef wird nur in Iteratoren selber genutzt">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      auch das zum Gl&#252;ck
    </p>
    <p>
      denn diese ist am aller fragw&#252;rdigsten
    </p>
  </body>
</html></richcontent>
<node CREATED="1684283608938" ID="ID_789340133" MODIFIED="1684283616371" TEXT="iter-adapter">
<node CREATED="1684283310011" ID="ID_990692893" MODIFIED="1684283370038" TEXT="IterAdapter"/>
<node CREATED="1684283378578" ID="ID_1166144503" MODIFIED="1684283379781" TEXT="RangeIter"/>
<node CREATED="1684283387344" ID="ID_1190313211" MODIFIED="1684283388488" TEXT="ConstIter"/>
</node>
<node CREATED="1684283627248" ID="ID_354299966" MODIFIED="1684283632057" TEXT="iter-adapter-ptr-deref">
<node CREATED="1684283406102" ID="ID_849836531" MODIFIED="1684283407024" TEXT="AddressExposingIter"/>
</node>
<node CREATED="1684283635461" ID="ID_1405556473" MODIFIED="1684283637878" TEXT="iter-stl">
<node CREATED="1684283421052" ID="ID_441301812" MODIFIED="1684283425727" TEXT="iter_stl::DistinctIter"/>
<node CREATED="1684283468390" ID="ID_1941904857" MODIFIED="1684283471593" TEXT="iter_stl::WrappedStlIter"/>
<node CREATED="1684283518407" ID="ID_613758676" MODIFIED="1684283521890" TEXT="iter_stl::Wrapped_Identity"/>
</node>
<node CREATED="1684283541196" ID="ID_1130981792" MODIFIED="1684283542779" TEXT="CursorGear"/>
<node CREATED="1684283603787" ID="ID_295319539" MODIFIED="1684283680910" TEXT="itertools">
<node CREATED="1684283651262" MODIFIED="1684283651262" TEXT="IdentityCore"/>
<node CREATED="1684283659630" MODIFIED="1684283659630" TEXT="IterTool"/>
<node CREATED="1684283669309" MODIFIED="1684283669309" TEXT="TransformingCore"/>
</node>
<node CREATED="1684283549359" ID="ID_253489065" MODIFIED="1684283554422" TEXT="iter-explorer">
<node CREATED="1684283568814" MODIFIED="1684283568814" TEXT="IterExplorer"/>
<node CREATED="1684283579585" MODIFIED="1684283579585" TEXT="CombinedIteratorEvaluation"/>
<node CREATED="1684283585838" MODIFIED="1684283585838" TEXT="RecursiveExhaustingEvaluation"/>
<node CREATED="1684283592029" MODIFIED="1684283592029" TEXT="RecursiveSelfIntegration"/>
</node>
<node CREATED="1684283676882" ID="ID_302602630" MODIFIED="1684283679940" TEXT="tree-explorer">
<node CREATED="1684283690180" MODIFIED="1684283690180" TEXT="CoreYield"/>
<node CREATED="1684283697116" MODIFIED="1684283697116" TEXT="Transformer"/>
<node CREATED="1684283704016" MODIFIED="1684283704016" TEXT="TreeExplorer"/>
</node>
<node CREATED="1684283727698" ID="ID_759202877" MODIFIED="1684283733021" TEXT="(scoped-holder-transfer)"/>
</node>
<node CREATED="1684283866655" ID="ID_965975043" MODIFIED="1684283875634" TEXT="&#xe4;hnlich mit der ::reference Typedef">
<node CREATED="1684283879638" ID="ID_212976419" MODIFIED="1684283883785" TEXT="nicht in ptr-deref"/>
<node CREATED="1684283884301" ID="ID_1607463713" MODIFIED="1684283891624" TEXT="zus&#xe4;tzliche F&#xe4;lle in iter-stl"/>
<node CREATED="1684283947420" ID="ID_722744250" MODIFIED="1684283955028" TEXT="zus&#xe4;zlich in itertool-FilterCore"/>
<node CREATED="1684283972057" ID="ID_385243270" MODIFIED="1684283997555" TEXT="zus&#xe4;tzlich in iter-explorer-Expander und Filter"/>
<node CREATED="1684284028113" ID="ID_1563406808" MODIFIED="1684284039617" TEXT="zus&#xe4;tzlich in util-coll first()"/>
</node>
<node CREATED="1684284211026" ID="ID_156442038" MODIFIED="1684284222508" TEXT="aber ::value_type wird pervasiv genutzt">
<icon BUILTIN="messagebox_warning"/>
<node COLOR="#338800" CREATED="1684284223919" ID="ID_734158865" MODIFIED="1684285580759" TEXT="allerdings beziehen sich viele Stellen auch (nur) auf Container">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1684284314778" ID="ID_1890852329" MODIFIED="1684284318910" TEXT="speziell auf Iteratoren">
<node CREATED="1684284320306" ID="ID_116530211" MODIFIED="1684284326845" TEXT="die oben genannten Stellen"/>
<node CREATED="1684284327505" ID="ID_816690657" MODIFIED="1684284335564" TEXT="zus&#xe4;tzlich">
<node CREATED="1684284339871" ID="ID_1812914177" MODIFIED="1684284347578" TEXT="format-util stringify(iter)"/>
<node CREATED="1684284373891" ID="ID_1836452501" MODIFIED="1684284377542" TEXT="PtrDerefIter"/>
<node CREATED="1684284399479" ID="ID_616096341" MODIFIED="1684284410906" TEXT="viele in iter-stl">
<node CREATED="1684284412056" ID="ID_1219564586" MODIFIED="1684284418649" TEXT="die beziehen sich aber auf STL-Iteratoren"/>
</node>
<node CREATED="1684284499938" ID="ID_652866517" MODIFIED="1684284504133" TEXT="iter-chain-search">
<node CREATED="1684284505025" ID="ID_324867229" MODIFIED="1684284518651" TEXT="greift hier die btr. Typedef von IterTreeExplorer ab"/>
<node CREATED="1684284519232" ID="ID_1462271158" MODIFIED="1684284522398" TEXT="insofern transparent"/>
</node>
<node CREATED="1684284550304" ID="ID_1441767895" MODIFIED="1684284552583" TEXT="iter-cursor">
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1684284553387" ID="ID_335382362" MODIFIED="1684284559064" TEXT="hier speziell">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1684284560186" ID="ID_525459774" MODIFIED="1684284573100" TEXT="reicht den Typ von CursorGear an den eigentlichen Iter durch"/>
<node CREATED="1684284575680" ID="ID_467685696" MODIFIED="1684620273794" TEXT="dieser Typ l&#xe4;uft aber genau nicht &#xfc;ber ValueTypeBinding">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...was wohl genau daran liegt, da&#223; das TypeBinding bisher konzeptionell &quot;daneben&quot; war
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1684284640431" ID="ID_1879459253" MODIFIED="1684284646231" TEXT="IterSource">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1684284647134" ID="ID_463329633" MODIFIED="1684284654481" TEXT="hier spielt das re-Binding eine zentrale Rolle"/>
<node CREATED="1684284654949" ID="ID_418200307" MODIFIED="1684284663152" TEXT="wir greifen das Binding vom Quell-Iterator ab"/>
<node CREATED="1684284664320" ID="ID_435347817" MODIFIED="1684284683197" TEXT="und erzeugen daraus den Typ-Parameter der zugeh&#xf6;rigen IterSource&lt;VAL&gt;"/>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1684284697335" ID="ID_558539508" MODIFIED="1684284712093" TEXT="...sollte demnach sogar von einem Refactoring profitieren?">
<icon BUILTIN="help"/>
</node>
<node COLOR="#5b280f" CREATED="1684284727563" ID="ID_587842621" MODIFIED="1684284753464" TEXT="zus&#xe4;tzliche weitere re-Bindings in den STL-Adaptern (harmlos)">
<icon BUILTIN="button_cancel"/>
</node>
</node>
<node CREATED="1684284784947" ID="ID_957803733" MODIFIED="1684284787857" TEXT="itertools">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1684284789499" ID="ID_1617695204" MODIFIED="1684284799877" TEXT="erst einmal die internen Verwendungen wie oben"/>
<node CREATED="1684284800346" ID="ID_1611543891" MODIFIED="1684284823440" TEXT="Vorsicht: die helper-/wrapper-Funktionen verwenden das re-Binding">
<node CREATED="1684284866873" ID="ID_320875033" MODIFIED="1684284966992" TEXT="weitergeben an ItemWrapper">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_320875033" ENDARROW="Default" ENDINCLINATION="24;0;" ID="Arrow_ID_1229615243" SOURCE="ID_127538089" STARTARROW="None" STARTINCLINATION="24;0;"/>
</node>
<node CREATED="1684284882366" ID="ID_127538089" MODIFIED="1684284966993" TEXT="weitergeben an SkipRepetition">
<arrowlink DESTINATION="ID_320875033" ENDARROW="Default" ENDINCLINATION="24;0;" ID="Arrow_ID_1229615243" STARTARROW="None" STARTINCLINATION="24;0;"/>
</node>
</node>
<node CREATED="1684284970384" ID="ID_1811502584" MODIFIED="1684284978234" TEXT="sollte aber ebenso eigentlich besser werden">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1684285007678" ID="ID_771454865" MODIFIED="1684285013237" TEXT="iter-tree-explorer">
<icon BUILTIN="messagebox_warning"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1684285014467" ID="ID_221202092" MODIFIED="1684285028339" TEXT="hier wird es exzessiv verwendet, um Traits aufzurufen">
<icon BUILTIN="clanbomber"/>
</node>
<node CREATED="1684285051175" ID="ID_23315974" MODIFIED="1684285056971" TEXT="F&#xe4;lle">
<node CREATED="1684285059655" ID="ID_1968112556" MODIFIED="1684285063874" TEXT="_DecoratorTraits">
<node COLOR="#338800" CREATED="1684285101377" ID="ID_1063136702" MODIFIED="1684285107965" TEXT="weitergabe an IterableDecorator">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1684285120615" ID="ID_1228326356" MODIFIED="1684285127138" TEXT="selber exponiert als SrcVal"/>
</node>
<node CREATED="1684285267507" ID="ID_1098918155" MODIFIED="1684285277302" TEXT="Expander : das static_assert">
<node CREATED="1684285278138" ID="ID_854683459" MODIFIED="1684285284858" TEXT="drum sind wir ja hier...">
<icon BUILTIN="ksmiletris"/>
</node>
<node COLOR="#338800" CREATED="1684285290512" ID="ID_690499597" MODIFIED="1684285300282" TEXT="das wird definitiv besser dadurch">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1684285325714" ID="ID_1851917266" MODIFIED="1684285327119" TEXT="PackagedTreeExplorerSource">
<node CREATED="1684285334626" ID="ID_497482783" MODIFIED="1684285339518" TEXT="erbt von ChildExpandableSource&lt;typename SRC::value_type&gt;"/>
<node CREATED="1684285373486" ID="ID_128948181" MODIFIED="1684285395117">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      hier ist ein Hinweis auf <b>TICKET #1125 : get rid of Val</b>
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1684285185549" ID="ID_524136739" MODIFIED="1684285230007" TEXT="gef&#xe4;hrlich">
<icon BUILTIN="stop-sign"/>
<node CREATED="1684285189747" MODIFIED="1684285189747" TEXT="enable_if&lt;is_base_of&lt;IterSource&lt;typename ISO::value_type&gt;"/>
<node CREATED="1684285224494" MODIFIED="1684285224494" TEXT="ArgAdapter&lt;IT,   enable_if&lt;__and_&lt;is_convertible&lt;typename IT::value_type, Arg"/>
</node>
</node>
</node>
<node CREATED="1684285439002" ID="ID_1724453064" MODIFIED="1684285483458" TEXT="util.hpp linearSearch()"/>
<node CREATED="1684285471868" ID="ID_192604808" MODIFIED="1684285516311" TEXT="util-coll.hpp">
<node CREATED="1684285516977" ID="ID_239049887" MODIFIED="1684285518405" TEXT="last()"/>
<node CREATED="1684285519077" ID="ID_171567868" MODIFIED="1684285524228" TEXT="min() / max()">
<node CREATED="1684285526576" ID="ID_1490987941" MODIFIED="1684285534631" TEXT="verwenden schon ein remove_reference">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1684283073854" ID="ID_1161646513" MODIFIED="1684705071997" TEXT="Nutzung vereinheitlichen">
<icon BUILTIN="button_ok"/>
<node CREATED="1684283085033" ID="ID_637878819" MODIFIED="1684283100218" TEXT="der meta::RefWrapper wird nur von den Itertools genutzt"/>
<node CREATED="1684283104526" ID="ID_1800561250" MODIFIED="1684283143956" TEXT="TypeBinding wird von vielen anderen Lumiera-Forward-Iteratoren genutzt"/>
<node CREATED="1684283144761" ID="ID_378332003" MODIFIED="1684705069855" STYLE="fork" TEXT="manche machen&apos;s immer noch direkt"/>
<node CREATED="1684705076909" ID="ID_318662270" MODIFIED="1684705228200" TEXT="bessere Struktur">
<icon BUILTIN="idea"/>
<node COLOR="#338800" CREATED="1684705081314" ID="ID_869903897" MODIFIED="1684705238444" TEXT="meta::RefTraits f&#xfc;r die generische Typ-Behandlung">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      analog zu meta::Strip, nur weniger aggressiv
    </p>
    <ul>
      <li>
        Referenzen werden nivelliert
      </li>
      <li>
        Pointer bleiben ein separater Typ
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1684705201545" ID="ID_1849546034" MODIFIED="1684705238444" TEXT="ValueTypeBindings speziell f&#xfc;r Iteratoren und nested Typedefs">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1684705232117" ID="ID_1509834522" MODIFIED="1684705238445" TEXT="bauen nun aufeinander auf">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1684285740036" ID="ID_265016247" MODIFIED="1684705059043" TEXT="schrittweiser Umbau">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1684285746921" ID="ID_453018815" MODIFIED="1684453850245" TEXT="erst einmal alles in TypeBinding zusammenf&#xfc;hren">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1684285761285" ID="ID_399824938" MODIFIED="1684453848315" TEXT="dort zus&#xe4;tzliche Variante base_type einf&#xfc;hren">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1684285782158" FOLDED="true" ID="ID_1046713320" MODIFIED="1684705028570" TEXT="dann Semantik von value_type &#xe4;ndern">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1684457336456" FOLDED="true" ID="ID_668731240" MODIFIED="1684705007675" TEXT="Probleme">
<icon BUILTIN="messagebox_warning"/>
<node COLOR="#435e98" CREATED="1684457340219" ID="ID_349629435" MODIFIED="1684704996420" TEXT="const-correctness">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1684457356442" ID="ID_718673785" MODIFIED="1684457361150" TEXT="iter-curstor-test">
<node CREATED="1684457376306" ID="ID_1078884821" MODIFIED="1684457376306" TEXT="CIter = IterCursor&lt;Numz::const_iterator&gt;;"/>
<node CREATED="1684457442699" ID="ID_492340662" MODIFIED="1684457443679" TEXT="IterStateWrapper&lt;typename iter::CursorGear&lt;IT&gt;::value_type, iter::CursorGear&lt;IT&gt;&gt;"/>
<node CREATED="1684457445585" ID="ID_1783656179" MODIFIED="1684457469546" TEXT="die Core liefert einen int const&amp;, aber der IterStateWrapper baut eine int&amp;"/>
<node COLOR="#435e98" CREATED="1684457528365" ID="ID_581341012" MODIFIED="1684460086498" TEXT="was ist value_type = typename meta::ValueTypeBinding&lt;IT&gt;::value_type">
<icon BUILTIN="help"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1684458989282" ID="ID_9060398" MODIFIED="1684459000625" TEXT="const_iterator::value_type ist nicht const">
<icon BUILTIN="stop-sign"/>
</node>
<node CREATED="1684460102957" ID="ID_472589448" MODIFIED="1684460165746" TEXT="das ist eine Eigenschaft der STL">
<arrowlink COLOR="#8a5067" DESTINATION="ID_734793626" ENDARROW="Default" ENDINCLINATION="365;14;" ID="Arrow_ID_139514882" STARTARROW="None" STARTINCLINATION="510;-24;"/>
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1684460116154" ID="ID_458968493" MODIFIED="1684460124620" TEXT="mu&#xdf; hier eigens darum herumarbeiten">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1684457756467" ID="ID_1799112543" MODIFIED="1684704996421" TEXT="pointer strip">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1684457764640" ID="ID_589412032" MODIFIED="1684457771969" TEXT="scoped-collection-test">
<node CREATED="1684457794295" ID="ID_1727116794" MODIFIED="1684457799167" TEXT="CollI = ScopedCollection&lt;uint&gt;"/>
<node CREATED="1684457816624" ID="ID_1452815222" MODIFIED="1684457817291" TEXT="CollI coll (20, CollI::pull(source.begin()));"/>
<node CREATED="1684457846811" ID="ID_1577579858" MODIFIED="1684457849143" TEXT="erzeugt PullFrom&lt;IT&gt; (iter)"/>
<node COLOR="#338800" CREATED="1684457919935" ID="ID_1908868537" MODIFIED="1684457982649" TEXT="iter = IterAdapter&lt;uint*, const ScopedCollection&lt;uint&gt;*&gt;">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1684458334322" ID="ID_1259042868" MODIFIED="1684458359762" TEXT="ScopedCollection&lt;I,siz&gt;::PullFrom::operator()">
<icon BUILTIN="broken-line"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1684458361926" ID="ID_44705604" MODIFIED="1684458423543" TEXT="Fehler in der Verwendung von base_type">
<icon BUILTIN="broken-line"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1684458382800" ID="ID_1834051890" MODIFIED="1684458423543" TEXT="Fehler im Type-Forwarding aus dem Basis-Iter">
<icon BUILTIN="broken-line"/>
</node>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1684459906255" ID="ID_1378023279" MODIFIED="1684626459648" TEXT="placement-Index">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1684459919427" ID="ID_1436515063" MODIFIED="1684626423578" TEXT="has_any (elementsInScope, equalsTheElement);">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1436515063" ENDARROW="Default" ENDINCLINATION="953;0;" ID="Arrow_ID_233825462" SOURCE="ID_845601504" STARTARROW="None" STARTINCLINATION="953;0;"/>
</node>
<node CREATED="1684459973590" ID="ID_484139471" MODIFIED="1684459977363" TEXT="enable_if&lt;lib::meta::can_IterForEach&lt;IT&gt; scheitert"/>
<node CREATED="1684459996401" ID="ID_990292148" MODIFIED="1684460058465" TEXT="f&#xfc;r IT = PlacementIndex::iterator">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;using&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;_PID = PlacementMO::ID;
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;using&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ScopeIter = std::unordered_multimap&lt;_PID,_PID&gt;::const_iterator;
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;using&#160;&#160;&#160;&#160;ScopeRangeIter = lib::RangeIter&lt;ScopeIter&gt;;
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;using _ID_TableIterator = lib::TransformIter&lt;ScopeRangeIter, PlacementMO&amp;&gt;;
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#338800" CREATED="1684626148632" ID="ID_314534651" MODIFIED="1684626158039" TEXT="durch nachfolgende Korrekturen bereits behoben">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1684460327937" ID="ID_1243195068" MODIFIED="1684626167397" TEXT="JobTicket::buildProvisionSpec">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1684460427537" ID="ID_1226575987" MODIFIED="1684460443243" TEXT="von: MockSegmentation::buildTicketFromSpec(GenNode)">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1684460342898" ID="ID_1631135246" MODIFIED="1684460349919" TEXT="can_IterForEach">
<node CREATED="1684460350803" ID="ID_860677112" MODIFIED="1684460364845" TEXT="funktioniert f&#xfc;r den direkt gegebenen IT">
<node CREATED="1684460591828" ID="ID_1373150141" MODIFIED="1684460608948" TEXT="SingleValIter&lt;tuple&lt;...&gt;&gt;"/>
</node>
<node CREATED="1684460365809" ID="ID_1079060296" MODIFIED="1684460376780" TEXT="funktioniert nicht f&#xfc;r die Prereq, die wir da rausziehen">
<node CREATED="1684460663671" ID="ID_990738534" MODIFIED="1684460782775">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <font face="Monospaced" size="2">TransformIter&lt;RangeIter&lt;__normal_iterator&lt;const GenNode*,&#160;vector&lt;GenNode&gt; &gt; &gt; </font>
    </p>
    <p>
      <font face="Monospaced" size="2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;,JobTicket&amp; </font>
    </p>
    <p>
      <font face="Monospaced" size="2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&gt;</font>
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1684626170197" ID="ID_1147513606" MODIFIED="1684626278079" TEXT="war eine Folge von dem ersten &#x201e;zu forschen&#x201c; L&#xf6;sungsansatz">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Hatte zun&#228;chst gedacht, generell sollte value_type den Typparameter unver&#228;ndert durchreichen (sofern kein nested Binding erfolgt). Tats&#228;chlich bestand das Problem aber nur bei Pointern, und das l&#246;sen wir besser direkt in den RefTraits
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1147513606" ENDARROW="Default" ENDINCLINATION="782;0;" ID="Arrow_ID_803486255" SOURCE="ID_845601504" STARTARROW="None" STARTINCLINATION="782;0;"/>
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1684539208804" ID="ID_1954674721" MODIFIED="1684626143751" TEXT="iter-source-test">
<icon BUILTIN="broken-line"/>
<node CREATED="1684539307546" ID="ID_1311972803" MODIFIED="1684539316978" TEXT="StrIter &#xfc;ber C-Strings"/>
<node CREATED="1684539269802" ID="ID_403304388" MODIFIED="1684539272922" TEXT="IT = lib::IterSource&lt;const char*&gt;::iterator"/>
<node CREATED="1684539477912" ID="ID_887047226" MODIFIED="1684546668213" TEXT="operator*() : *pos_ fordert const char* &#x27fc; char">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1684539640794" ID="ID_1199240443" MODIFIED="1684539642585" TEXT="IterAdapter&lt;POS, CON&gt;::operator*()"/>
<node CREATED="1684539670393" ID="ID_277475548" MODIFIED="1684539765410" TEXT="POS = const char**"/>
<node CREATED="1684539670393" ID="ID_310218838" MODIFIED="1684539778471" TEXT="CON = std::shared_ptr&lt;lib::IterSource&lt;const char*&gt; &gt;"/>
<node CREATED="1684539670393" ID="ID_1854935145" MODIFIED="1684539789446" TEXT="IterAdapter&lt;POS, CON&gt;::reference = const char&amp;"/>
</node>
<node COLOR="#ff0000" CREATED="1684539583917" ID="ID_112700804" MODIFIED="1684539611127" TEXT="hier werden Typen aber ziemlich falsch zugeornet">
<icon BUILTIN="stop-sign"/>
<node CREATED="1684540675424" ID="ID_1620874341" MODIFIED="1684540690953">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      IterAdapter selber <i>sieht sauber aus....</i>
    </p>
  </body>
</html></richcontent>
<node CREATED="1684540734860" ID="ID_1048473009" MODIFIED="1684540742573" TEXT="Pos = TY *"/>
<node CREATED="1684540868210" ID="ID_261008232" MODIFIED="1684540885946" TEXT="man k&#xf6;nnte hier noch remove_reference&lt;TY&gt; machen"/>
<node CREATED="1684540890766" ID="ID_1617257613" MODIFIED="1684540976683" TEXT="aber sicher keine weitere Magic">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      und im Besonderen kein automatisches Entfernen von Indirektionen, und kein R&#252;ckgriff auf interne Typdefinitionen (also <i>grade nicht</i>&#160; ValueTypeBinding verwenden!)
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1684540984894" ID="ID_71878097" MODIFIED="1684701338581" TEXT="also mu&#xdf; das Desaster wohl direkt in ValueTypeBinding passieren">
<icon BUILTIN="clanbomber"/>
<node COLOR="#435e98" CREATED="1684541044909" ID="ID_829271566" MODIFIED="1684701330550" TEXT="was ist std::remove_pointer_t&lt;POS&gt;">
<icon BUILTIN="help"/>
</node>
<node COLOR="#435e98" CREATED="1684541062585" ID="ID_690843749" MODIFIED="1684701330550" TEXT="und wie ergibt sich dann daraus reference = char const&amp;">
<icon BUILTIN="help"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1684626148632" ID="ID_747512117" MODIFIED="1684626158039" TEXT="durch nachfolgende Korrekturen bereits behoben">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1684545378054" ID="ID_949809414" MODIFIED="1684626340506" TEXT="variadic-argument-picker-test">
<icon BUILTIN="broken-line"/>
<node CREATED="1684545421888" ID="ID_339637961" MODIFIED="1684545432171" TEXT="in der Test-Helper &quot;fun(Args....)&quot;">
<node CREATED="1684545465106" ID="ID_701958213" MODIFIED="1684545483864" TEXT="aufgerufen mit vier non-const-Referenzen auf Objekte">
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1684545757723" ID="ID_986888781" MODIFIED="1684545771325" TEXT="fehlt hier nicht ein std::forward&lt;&gt;??">
<icon BUILTIN="help"/>
</node>
</node>
<node CREATED="1684545504133" ID="ID_1380420727" MODIFIED="1684545531453" TEXT="ARGS = {N&lt;1&gt;&amp;, N&lt;2&gt;&amp;, N&lt;3&gt;&amp;, N&lt;3&gt;&amp;}"/>
<node CREATED="1684545687470" ID="ID_1546238335" MODIFIED="1684545710789" TEXT="join (initializer_list&lt;string&gt;&amp;&amp;)">
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1684545757723" ID="ID_1916732834" MODIFIED="1684545790142" TEXT="sollte hier nicht per std::forward&lt;&gt; weitergegeben werden??">
<icon BUILTIN="help"/>
</node>
<node CREATED="1684545909915" ID="ID_493146886" MODIFIED="1684545972282" TEXT="damit geht es an join(CON, delim) mit CON = initializer_list&lt;string&gt; const&amp;"/>
</node>
<node CREATED="1684546028926" ID="ID_34906560" MODIFIED="1684546088662" TEXT="stringify(IT&amp;&amp;) with IT = RangeIter&lt;const string *&gt;">
<node COLOR="#435e98" CREATED="1684546334838" ID="ID_547357409" MODIFIED="1684701330549" TEXT="woher kommt hier der const string* ?">
<icon BUILTIN="help"/>
<node CREATED="1684626094980" ID="ID_829378008" MODIFIED="1684626104491" TEXT="von einem direkt programmierten Type-Binding"/>
<node COLOR="#338800" CREATED="1684626105086" ID="ID_1025913285" MODIFIED="1684626122919" TEXT="durch ValueTypeBinding&lt;IT&gt;::value_type ersetzt">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node CREATED="1684546214885" ID="ID_1713896865" MODIFIED="1684546216393" TEXT="TransformIter&lt;IT, VAL&gt;::TransformIter(IT&amp;&amp;, FUN)">
<node CREATED="1684546235557" ID="ID_713854770" MODIFIED="1684546245891" TEXT="VAL = string"/>
<node CREATED="1684546253025" ID="ID_645791486" MODIFIED="1684546274610" TEXT="IT = RangeIter&lt;const string *&gt;"/>
<node CREATED="1684546286956" ID="ID_28115946" MODIFIED="1684546318515" TEXT="FUN = string (*)(const string* const&amp;) noexcept"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1684546426129" ID="ID_1263412941" MODIFIED="1684546733339" TEXT="hier rufen wir bereits mit dem falschen Argument-Type (const string*) auf">
<icon BUILTIN="stop-sign"/>
</node>
<node CREATED="1684546449894" ID="ID_6052563" MODIFIED="1684546461940" TEXT="aber trotzdem sollte ein RangeIter dar&#xfc;ber funktionieren">
<icon BUILTIN="yes"/>
<node CREATED="1684546491857" ID="ID_1736947794" MODIFIED="1684546499939" TEXT="RangeIter&lt;const string *&gt;"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1684546581725" ID="ID_1681461344" MODIFIED="1684546725943" TEXT="also ValueTypeBinding&lt;TY *&gt;  pa&#xdf;t hier nicht">
<arrowlink COLOR="#e12e5f" DESTINATION="ID_164341663" ENDARROW="Default" ENDINCLINATION="44;-16;" ID="Arrow_ID_926464248" STARTARROW="None" STARTINCLINATION="-265;16;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1684546673741" ID="ID_164341663" MODIFIED="1684626063307" TEXT="RangeIter&lt;TY *&gt; geht nicht korrekt mit Pointern um">
<linktarget COLOR="#e12e5f" DESTINATION="ID_164341663" ENDARROW="Default" ENDINCLINATION="44;-16;" ID="Arrow_ID_926464248" SOURCE="ID_1681461344" STARTARROW="None" STARTINCLINATION="-265;16;"/>
<icon BUILTIN="broken-line"/>
<node CREATED="1684546753135" HGAP="35" ID="ID_1396741432" MODIFIED="1684546926029" TEXT="operator*() : *p_ fordert const string &#x27fc; const string * &amp;" VSHIFT="22"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1684546891740" HGAP="40" ID="ID_915912294" MODIFIED="1684626059090" TEXT="Hinweis: der Kommentar impliziert &quot;Magic&quot;" VSHIFT="7">
<icon BUILTIN="idea"/>
<node CREATED="1684546933543" ID="ID_179350313" MODIFIED="1684546938867" TEXT="nicht sicher ob beabsichtigt"/>
<node CREATED="1684546939486" ID="ID_6236284" MODIFIED="1684546950832" TEXT="oder erst nachtr&#xe4;glich zum Feature erkl&#xe4;rt">
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1684546974033" ID="ID_1477759961" MODIFIED="1684546991075" TEXT="Spec laut Kommentar">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      <font face="Monospaced">&#160;&#160;&#160;* @note </font>
    </p>
    <p>
      <font face="Monospaced">&#160;&#160;&#160;*&#160;&#160;- when IT is just a pointer, we use the pointee as value type </font>
    </p>
    <p>
      <font face="Monospaced">&#160;&#160;&#160;*&#160;&#160;- but when IT is a class, we expect the usual STL style nested typedefs </font>
    </p>
    <p>
      <font face="Monospaced">&#160;&#160;&#160;*&#160;&#160;&#160;&#160;`value_type`, `reference` and `pointer` </font>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
<node CREATED="1684547049166" ID="ID_52771462" MODIFIED="1684547121647" TEXT="IT &#x27f9; value_type &#x2254; IT::value_type"/>
<node CREATED="1684547024027" ID="ID_861935637" MODIFIED="1684547046420" TEXT="TY*  &#x27f9; value_type &#x2254; TY">
<node CREATED="1684547257132" ID="ID_1641640973" MODIFIED="1684547283862" TEXT="demnach w&#xe4;re reference &#x2254; TY&amp;">
<icon BUILTIN="forward"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1684547123638" ID="ID_641824771" MODIFIED="1684547229342" TEXT="genau das wird aber durch die neueste &#xc4;nderung anders gehandhabt">
<linktarget COLOR="#af3f77" DESTINATION="ID_641824771" ENDARROW="Default" ENDINCLINATION="-189;8;" ID="Arrow_ID_697522858" SOURCE="ID_206554481" STARTARROW="None" STARTINCLINATION="110;-4;"/>
<icon BUILTIN="stop-sign"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1684547353367" ID="ID_727759660" MODIFIED="1684626054719" TEXT="mu&#xdf; die &#xbb;Magic&#xab; nun explizit programmieren">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1684621584827" ID="ID_1014436557" MODIFIED="1684704975335" TEXT="Zwischen-Befund / Reflexion">
<icon BUILTIN="yes"/>
<node COLOR="#338800" CREATED="1684621612562" ID="ID_641071847" MODIFIED="1684621699986" TEXT="diverse Probleme mit der const-correctness aufgekl&#xe4;rt">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1684621626500" ID="ID_845601504" MODIFIED="1684627435369" TEXT="aber: ich schie&#xdf;e &#xfc;ber das Ziel hinaus!">
<arrowlink DESTINATION="ID_1147513606" ENDARROW="Default" ENDINCLINATION="782;0;" ID="Arrow_ID_803486255" STARTARROW="None" STARTINCLINATION="782;0;"/>
<arrowlink DESTINATION="ID_1436515063" ENDARROW="Default" ENDINCLINATION="953;0;" ID="Arrow_ID_233825462" STARTARROW="None" STARTINCLINATION="953;0;"/>
<linktarget COLOR="#ed2d5d" DESTINATION="ID_845601504" ENDARROW="Default" ENDINCLINATION="-127;9;" ID="Arrow_ID_564685689" SOURCE="ID_1176556358" STARTARROW="None" STARTINCLINATION="-328;-13;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1684621638451" ID="ID_1737271679" MODIFIED="1684621694316" TEXT="das eigentliche Problem war, bei Pointern einen Level zu strippen">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1684621672478" ID="ID_727658054" MODIFIED="1684621697414" TEXT="denn: es ist keine gute Idee, wenn value_type jemals eine Referenz tr&#xe4;gt">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1684626429769" ID="ID_1909166035" MODIFIED="1684626440198" TEXT="im Besonderen bricht das diverse Metafunktionen"/>
<node CREATED="1684626441042" ID="ID_15567636" MODIFIED="1684626451554" TEXT="vor allem can_IterForEach">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1684701350915" ID="ID_43056917" MODIFIED="1684704973575" TEXT="Folge-Problem mit FormatUtils_test">
<icon BUILTIN="button_ok"/>
<node CREATED="1684701367882" ID="ID_561133382" MODIFIED="1684701388742" TEXT="bessere const-correctness hat Folgen...">
<icon BUILTIN="smiley-oh"/>
</node>
<node CREATED="1684701390886" ID="ID_1127329674" MODIFIED="1684701503856" TEXT="StringConv&lt;double&gt; ist speziell definiert">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      der Double wird n&#228;mlich (wohlweislich) f&#252;r diese Diagnostic-Anzeige auf 8 Stellen gerundet ... genau wegen Probemen wie hier
    </p>
  </body>
</html></richcontent>
<node CREATED="1684701416058" ID="ID_154721343" MODIFIED="1684701430372" TEXT="aber StringConv&lt;const double&gt; nicht"/>
<node CREATED="1684701438209" ID="ID_195122706" MODIFIED="1684701450439" TEXT="...und f&#xe4;llt daher in den generischen lexical-cast-Zweig"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1684701451533" ID="ID_223521412" MODIFIED="1684701462222" TEXT="wodurch der Test scheitert">
<icon BUILTIN="broken-line"/>
<node CREATED="1684701511699" ID="ID_1180510868" MODIFIED="1684701562681" TEXT="in den Testdaten ist n&#xe4;mlich &#xbb;Zahlenstaub&#xab;">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      1 * 1.1 = 1.100000000000000000000000000001
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1684701577650" ID="ID_508691413" MODIFIED="1684701594347" TEXT="und genau deshalb haben wir ja diese spezielle Formatfunktion!">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1684702676714" ID="ID_902426926" MODIFIED="1684704944797" TEXT="welches Problem ist hier zu l&#xf6;sen?">
<icon BUILTIN="help"/>
<node CREATED="1684702728539" ID="ID_672513912" MODIFIED="1684702799208" TEXT="util::StringConv&lt;val&gt; ist inkonsistent bzw. CV">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      konkret: double verh&#228;lt sich anders als const double oder volatile double
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1684703187279" ID="ID_258062015" MODIFIED="1684703232937" TEXT="andererseits ist StringConv ein Implementierungs-Delegate"/>
<node CREATED="1684703233757" ID="ID_138153655" MODIFIED="1684704163826" TEXT="und sollte eigentlich von util::toString aufgerufen werden">
<arrowlink COLOR="#233986" DESTINATION="ID_812758633" ENDARROW="Default" ENDINCLINATION="24;-33;" ID="Arrow_ID_1690463920" STARTARROW="None" STARTINCLINATION="-82;4;"/>
</node>
<node CREATED="1684704008121" ID="ID_947184317" MODIFIED="1684704119578" TEXT="header-Includes (Gewicht) bedenken...!">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <ul>
      <li>
        lib/meta/util.hpp wird pervasiv verwendet und darf daher nahezu keine weiteren Includes vorraussetzen
      </li>
      <li>
        demgegen&#252;ber wiegt lib/meta/trait.hpp schon mehr
      </li>
      <li>
        und die Format-Funktionen k&#246;nnen auch Itertools etc. mit includieren (denn sie werden i.d.r. aus der Implementierung heraus verwendet)
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#338800" CREATED="1684703889449" ID="ID_812758633" MODIFIED="1684704939920" TEXT="&#x27f9; util::toString (format-util.hpp) sollte CV strippen">
<linktarget COLOR="#233986" DESTINATION="ID_812758633" ENDARROW="Default" ENDINCLINATION="24;-33;" ID="Arrow_ID_1690463920" SOURCE="ID_138153655" STARTARROW="None" STARTINCLINATION="-82;4;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1684460928713" ID="ID_781322960" MODIFIED="1684705027179" TEXT="Analyse">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1684543492882" ID="ID_1765561986" MODIFIED="1684627380924" TEXT="zun&#xe4;chst value-type-binding-test durchpr&#xfc;fen">
<icon BUILTIN="button_ok"/>
<node CREATED="1684543612090" ID="ID_847618892" MODIFIED="1684543794926" TEXT="Problem-1">
<node CREATED="1684543795935" ID="ID_693680608" MODIFIED="1684544154186" TEXT="Check auf nested bindings scheitert an Referenzen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      das hei&#223;t, wir erkennen gar nicht mehr, da&#223; der Typ m&#246;glicherweise nested Bindings hat, weil viele Konstrukte f&#252;r Klassen gar nicht valide sind f&#252;r Referenzen, und daher die Erkennungs-Mechanismen ins Leer laufen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#338800" CREATED="1684543798547" ID="ID_144041413" MODIFIED="1684544080113" TEXT="brauche hier remove_reference_t&lt;TY&gt;">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1684544073327" ID="ID_33363993" MODIFIED="1684544077707" TEXT="Problem-2">
<node CREATED="1684544485429" ID="ID_78295540" MODIFIED="1684544500426" TEXT="eine Pointer-Indirektion wird absorbiert"/>
<node CREATED="1684544502202" ID="ID_1635049786" MODIFIED="1684544509486" TEXT="ja, genau so habe ich es implementiert"/>
<node CREATED="1684544517888" ID="ID_1457225235" MODIFIED="1684544533010" TEXT="das ist aber nicht sinnvoll...">
<node CREATED="1684544533985" ID="ID_259178564" MODIFIED="1684544541705" TEXT="TY ist was anderes als TY*"/>
<node CREATED="1684544543619" ID="ID_1302084338" MODIFIED="1684544559191" TEXT="f&#xfc;r das strikte Auspacken habe ich meta::Strip"/>
<node CREATED="1684544674884" ID="ID_1045605145" MODIFIED="1684544696800" TEXT="&quot;Pointer&quot; sollte wirklich wie ein Indirektions-Wrapper behandelt werden"/>
<node COLOR="#338800" CREATED="1684544698308" ID="ID_206554481" MODIFIED="1684547307830" TEXT="&#x27f9; die Spezialisierung meta::RefTraits&lt;TY*&gt; entsprechend umprogrammieren">
<arrowlink COLOR="#af3f77" DESTINATION="ID_641824771" ENDARROW="Default" ENDINCLINATION="-189;8;" ID="Arrow_ID_697522858" STARTARROW="None" STARTINCLINATION="110;-4;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#5b280f" CREATED="1684627391111" ID="ID_1176556358" MODIFIED="1684627440600" TEXT="dabei f&#xe4;llt auf: mein erster Ansatz ist zu aggressiv">
<arrowlink COLOR="#ed2d5d" DESTINATION="ID_845601504" ENDARROW="Default" ENDINCLINATION="-127;9;" ID="Arrow_ID_564685689" STARTARROW="None" STARTINCLINATION="-328;-13;"/>
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node COLOR="#5b280f" CREATED="1684460931749" ID="ID_1257295046" MODIFIED="1684627468131" TEXT="unter Labor-Bedingungen nachbauen">
<icon BUILTIN="button_cancel"/>
<node CREATED="1684627469601" ID="ID_1556079989" MODIFIED="1684627476286" TEXT="nicht mehr n&#xf6;tig..."/>
<node CREATED="1684627476967" ID="ID_1636586185" MODIFIED="1684627499527" TEXT="mit der 2. L&#xf6;sung und den Fixes verschwinden die Probleme"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1684453837677" ID="ID_870052730" MODIFIED="1684627517045" TEXT="Name &#xe4;ndern auf ValueTypeBinding">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1684707753705" HGAP="0" ID="ID_998535644" MODIFIED="1684707764863" TEXT="Problem damit behoben" VSHIFT="20">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1684707814171" ID="ID_1437344543" MODIFIED="1684707822323" TEXT="FunTraits nachstellen">
<icon BUILTIN="full-3"/>
<node COLOR="#338800" CREATED="1684712291207" ID="ID_1615266190" MODIFIED="1684712330306" TEXT="per TypeDebugger verifiziert: es wird nun der korrekte ArgAdapter gew&#xe4;hlt">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1684712316132" ID="ID_743886927" MODIFIED="1684712329475" TEXT="alle eingeschachtelten Typen sehen nun korrekt aus">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1684712345958" ID="ID_1006380679" MODIFIED="1684712448291" TEXT="Fazit">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="forward"/>
<node CREATED="1684712349044" ID="ID_660485605" LINK="#ID_584323645" MODIFIED="1684712633140" TEXT="Ursache war ein einziges lange schon bestehendes Problem">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...welches sich hier konkret so manifestiert hat, da&#223; der ResultIterator::value_type falsch deduziert wurde als <font face="Monospaced" color="#a30e30">JobTicket</font>&#160; (anstatt <font face="Monospaced">JobTicket*</font>&#160;)
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1684712361390" ID="ID_565619431" MODIFIED="1684712410527" TEXT="es lag in der saloppen Definition der &#xbb;nested typedefs&#xab; in Itertools und Iter-Adapter"/>
<node CREATED="1684712417420" ID="ID_991884799" MODIFIED="1684712439816" TEXT="nach &#xdc;berarbeitung und Verifikation der ValueTypeBindings sind alle Probleme verschwunden"/>
</node>
</node>
<node COLOR="#338800" CREATED="1684712494897" FOLDED="true" ID="ID_1651369451" MODIFIED="1684797031174" TEXT="nun die Pipeline auch noch mit Referenzen verwendbar machen">
<icon BUILTIN="button_ok"/>
<node CREATED="1684714660497" ID="ID_216562837" MODIFIED="1684714672132" TEXT="mit JobTicket const&amp;"/>
<node COLOR="#435e98" CREATED="1684714672777" ID="ID_1009372749" MODIFIED="1684714888355" TEXT="Problem mit singleValIterator">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1684714690142" ID="ID_1957543134" MODIFIED="1684714710351" TEXT="can const&amp; nicht per &#xbb;perfect forwarding&#xab; weitergeben..."/>
<node COLOR="#690f14" CREATED="1684714711059" ID="ID_967208436" MODIFIED="1684714776321" TEXT="wer macht denn auch sowas???">
<icon BUILTIN="closed"/>
<node CREATED="1684714743215" ID="ID_814301239" MODIFIED="1684714756026" TEXT="perfect forwarding allein gen&#xfc;gt"/>
<node CREATED="1684714756619" ID="ID_1346128339" MODIFIED="1684714763268" TEXT="genau deshalb haben wir es ja">
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node CREATED="1684714845060" ID="ID_604591501" MODIFIED="1684714883880" TEXT="&#xfc;berpr&#xfc;ft: ItermWraper sollte problemlos auch mit const&amp; und const-values umgehen k&#xf6;nnen">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1684714724138" ID="ID_313083920" MODIFIED="1684714885761" TEXT="da war von Anfang an ein unsinniger Overload definiert">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      m&#246;glicherweise hat damals (2017) das <i>perfect forwarding</i>&#160;noch nicht so gut funktioniert (wir verwenden ja debian/stable, das war dann von 2015 und hatte noch etwas &#228;ltere Compiler)
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1684714892122" ID="ID_329151858" MODIFIED="1684796083945" TEXT="nun triggert wieder die 1. Assertion">
<icon BUILTIN="broken-line"/>
<node CREATED="1684714917783" ID="ID_1666247735" MODIFIED="1684714918845" TEXT="iterator from the expansion must yield compatible values"/>
<node CREATED="1684714923061" ID="ID_383268607" MODIFIED="1684714930177" TEXT="also wieder die Typen analyiseren">
<node CREATED="1684714946435" ID="ID_334603007" MODIFIED="1684715091724" TEXT="SRC::value_type &#x2261; const JobTicket"/>
<node CREATED="1684715584636" ID="ID_76173507" MODIFIED="1684715618419" TEXT="ResIter::value_type &#x2261; const JobTicket"/>
<node COLOR="#653fa0" CREATED="1684715619286" ID="ID_904849887" MODIFIED="1684715630403" TEXT="???wtf">
<icon BUILTIN="smiley-oh"/>
</node>
</node>
<node CREATED="1684715638340" ID="ID_1365358435" MODIFIED="1684715658748" TEXT="hier tut sich wieder dieser sonderbare Seitenzweig der Auswertung auf">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1684716149222" ID="ID_1129612900" MODIFIED="1684716155410" TEXT="Beobachtungen">
<node CREATED="1684715758343" ID="ID_172131299" MODIFIED="1684716173203" TEXT="es passiert also nun eine Ebene h&#xf6;her (in der expand()-Funktion)"/>
<node COLOR="#435e98" CREATED="1684716157636" ID="ID_1561245265" MODIFIED="1684717262236" TEXT="warum gehen wir in enable_if&lt;shall_wrap_STL_Iter&lt;SRC&gt;&gt;">
<icon BUILTIN="help"/>
<node CREATED="1684717043510" ID="ID_1400705695" MODIFIED="1684717070089" TEXT="vermutlich &#x201e;gehen wir&#x201c; da gar nicht rein..."/>
<node CREATED="1684717070725" ID="ID_121719490" MODIFIED="1684717089749" TEXT="sondern der Compiler mu&#xdf; alle Alterativen Spezialisierungen instantiieren"/>
<node CREATED="1684717090466" ID="ID_1403746724" MODIFIED="1684717114554" TEXT="und der can_STL_ForEach&lt;Expander&gt; greift auf Expander::iterator zu"/>
<node CREATED="1684717115467" ID="ID_262814818" MODIFIED="1684717136990" TEXT="...und deshalb mu&#xdf; der Compiler an der stelle den Typ &quot;Expander&quot; vollst&#xe4;ndig instantiieren"/>
<node CREATED="1684717200092" ID="ID_98622165" MODIFIED="1684717208077" TEXT="gepr&#xfc;ft...">
<icon BUILTIN="forward"/>
<node CREATED="1684717209567" ID="ID_446917707" MODIFIED="1684717230204" TEXT="static_assert(lib::meta::can_IterForEach&lt;ResCore&gt;::value);  &#x27f6; OK"/>
<node CREATED="1684717209568" ID="ID_66269810" MODIFIED="1684717235771" TEXT="static_assert(lib::meta::can_STL_ForEach&lt;ResCore&gt;::value); &#x27f6; scheitert"/>
<node COLOR="#338800" CREATED="1684717240318" ID="ID_1718285675" MODIFIED="1684717243638" TEXT="so soll es sein">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node CREATED="1684717669978" ID="ID_744382124" MODIFIED="1684717705255">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      HA!&#160;&#160;std::is_convertible&lt;const JobTicket, const JobTicket&gt;()&#160;&#160;&#10230; <b><font color="#ec1f1f">false</font></b>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="broken-line"/>
<node CREATED="1684718697838" ID="ID_602944557" LINK="https://en.cppreference.com/w/cpp/types/is_convertible" MODIFIED="1684718723602" TEXT="Doku lesen">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1684718732856" ID="ID_1157631148" MODIFIED="1684718738269" TEXT="JobTicket test() { return std::declval&lt;JobTicket&gt;(); }"/>
<node CREATED="1684718752670" ID="ID_890763633" MODIFIED="1684718800585" TEXT="error: use of deleted function &apos;JobTicket::JobTicket(JobTicket&amp;&amp;)"/>
<node CREATED="1684718803063" ID="ID_661035421" MODIFIED="1684718815493" TEXT="denn JobTicket ist non-copyable">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1684718826468" ID="ID_368029592" MODIFIED="1684796105008" TEXT="also doch: besserer Test f&#xfc;r &#xbb;kompatible Werte&#xab; gesucht">
<linktarget COLOR="#4c3853" DESTINATION="ID_368029592" ENDARROW="Default" ENDINCLINATION="-353;-1260;" ID="Arrow_ID_1815839573" SOURCE="ID_741543772" STARTARROW="None" STARTINCLINATION="-394;19;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#5b280f" CREATED="1684719111734" ID="ID_1888723433" MODIFIED="1684768943114" TEXT="explizit das &#xbb;can stand-in&#xab; pr&#xfc;fen">
<icon BUILTIN="idea"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1684768973732" ID="ID_352142303" MODIFIED="1684768989706" TEXT="das k&#xf6;nnte man implementieren per Referenz-Zuweisung"/>
<node COLOR="#435e98" CREATED="1684768990580" ID="ID_289921899" MODIFIED="1684796058909" TEXT="m&#xfc;&#xdf;te dann aber (wenn schon) auch symmetrisch gemacht werden">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      denn es ist letztlich egal, welcher Typ f&#252;r welchen eintritt
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
<node CREATED="1684768944997" ID="ID_1112757073" MODIFIED="1684782022965" TEXT="noch besser: std::common_type&lt;T,U&gt; nutzen">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1684782029022" ID="ID_1755897416" MODIFIED="1684782061671">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <b>nein</b>! das Muster <i>ist nicht symmetrisch</i>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="closed"/>
<node CREATED="1684782073847" ID="ID_1123149907" MODIFIED="1684782097872" TEXT="und zwar mu&#xdf; die Expand-Funktion auch ihre eigenen Resultate verarbeiten k&#xf6;nnen"/>
<node CREATED="1684782099155" ID="ID_646129307" MODIFIED="1684782122002" TEXT="und au&#xdf;erdem auch die Werte vom Src-Iterator"/>
</node>
<node CREATED="1684782300304" ID="ID_236176565" MODIFIED="1684796071420" TEXT="vielmehr m&#xfc;ssen sie kreuzweise f&#xfc;reinander stehen k&#xf6;nnen">
<arrowlink COLOR="#516980" DESTINATION="ID_1446929219" ENDARROW="Default" ENDINCLINATION="215;-7;" ID="Arrow_ID_721235932" STARTARROW="None" STARTINCLINATION="-180;9;"/>
<node CREATED="1684782319772" ID="ID_1923233746" MODIFIED="1684782601445" TEXT="denn expandierte Ergebnisse werden mit Quell-Ergebnissen gemischt">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      was bedeutet, das Ergebnis mu&#223; ein gemeinsamer Schnitt-Typ von beiden sein
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1684782387453" ID="ID_1534599276" MODIFIED="1684782557960" TEXT="und expandierte Ergebnisse werden dann wiederum in den Expand-Funktor gef&#xfc;ttert">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      und das bedeutet, da&#223; beide Ergebnistypen einen gemeinsamen Schnitt-Typ haben m&#252;ssen, der auf den Argumenttyp des Expand-Funktors konvertierbar ist
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1684769047612" ID="ID_838898432" MODIFIED="1684789425825" TEXT="trotzdem auch das can_StandIn implementieren">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1684789434831" ID="ID_1446929219" MODIFIED="1684796064539" TEXT="bessere L&#xf6;sung: beide Typen auf einen gemeinsamen Typ vereinigen">
<linktarget COLOR="#516980" DESTINATION="ID_1446929219" ENDARROW="Default" ENDINCLINATION="215;-7;" ID="Arrow_ID_721235932" SOURCE="ID_236176565" STARTARROW="None" STARTINCLINATION="-180;9;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1684789534660" ID="ID_694264595" MODIFIED="1684789555569" TEXT="oh das wird komplex....">
<icon BUILTIN="smily_bad"/>
<node COLOR="#338800" CREATED="1684789574535" ID="ID_316752857" MODIFIED="1684790067988" TEXT="Nebenproblem: sollte eine static-Assertion mit einbauen">
<icon BUILTIN="button_ok"/>
<node CREATED="1684789594748" ID="ID_1799454021" MODIFIED="1684789631192" TEXT="aber leider l&#xe4;&#xdf;t sich std::common_type&lt;T,U&gt; nicht direkt &#x27fc; bool pr&#xfc;fen">
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#338800" CREATED="1684789632511" ID="ID_166021610" MODIFIED="1684790058387" TEXT="Hilfs-Template in meta/util.hpp">
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1684789645555" ID="ID_72793797" MODIFIED="1684790061401" TEXT="Problem: direkte Template-Spezialisierung funktioniert nicht">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ist vielleicht sogar ein Compiler-Bug?
    </p>
    <ul>
      <li>
        zwar hat std::common_type definitiv eine nested Typedef
      </li>
      <li>
        aber diese wird relativ indirekt erzeugt, &#252;ber den decltype einer Check-Funktion im Basis-Helper
      </li>
      <li>
        und eine einfache Template-Spezialisierung wird matcht darauf nicht
      </li>
      <li>
        obwohl die gleiche Technik bei einer einfachen Struct funktioniert (selbst bei Vererbung)
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="broken-line"/>
</node>
<node COLOR="#338800" CREATED="1684789660347" ID="ID_1197665422" MODIFIED="1684789683265" TEXT="dann eine Hilfs-Template nach dem &quot;duck-detector&quot;-Baumuster verwenden">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#5b280f" CREATED="1684789563585" ID="ID_901412607" MODIFIED="1684790633745" TEXT="brauche dann wohl ein verschachteltes Trait-Template">
<icon BUILTIN="button_cancel"/>
<node CREATED="1684790408327" ID="ID_321137337" MODIFIED="1684790417923" TEXT="dann k&#xf6;nnte man sogar die beiden Fuktoren wegpacken"/>
<node CREATED="1684790380788" ID="ID_901065738" MODIFIED="1684790407118" TEXT="nein...">
<icon BUILTIN="stop-sign"/>
</node>
<node CREATED="1684790392235" ID="ID_1037155961" MODIFIED="1684790630471" TEXT="das macht es nur undurchsichtiger">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...und zwar weil eben auch der IterStack mit involviert ist, und die State-Core-Implementierungs-Funktionen allesamt verzweigen, je nachdem ob schon expandierte Kinder da sind; es bringt nichts, diese Verzweigungs-Struktur irgendwo wegzupacken, entweder man zerrei&#223;t sie in zwei Teile (wodurch sie unverst&#228;ndlich wird), oder der Expander selber wird eine leere H&#252;lle, und alle Logik wandert in ein Delegate (wozu das?)
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1684790081801" ID="ID_1718594831" MODIFIED="1684796053717" TEXT="Implementierung">
<icon BUILTIN="button_ok"/>
<node CREATED="1684790647174" ID="ID_1207401632" MODIFIED="1684790663368" TEXT="nachdem ich mehrere Stunden herumgekonobelt habe....">
<icon BUILTIN="smiley-angry"/>
</node>
<node COLOR="#338800" CREATED="1684790665445" ID="ID_411175859" MODIFIED="1684796044584" TEXT="eine verbesserte Assertion">
<icon BUILTIN="button_ok"/>
<node CREATED="1684790815465" ID="ID_517001911" MODIFIED="1684790830587" TEXT="nur diese allein k&#xf6;nnte man in ein Trait-Template auslagern"/>
<node CREATED="1684790831558" ID="ID_1842116648" MODIFIED="1684790846059" TEXT="damit verschwinden technische Details">
<node CREATED="1684794221414" ID="ID_1312364680" MODIFIED="1684794229388" TEXT="rebinding &#xfc;ber common_type"/>
<node COLOR="#435e98" CREATED="1684794229976" ID="ID_1893749402" MODIFIED="1684796036589" TEXT="Problem: common_type entfernt cv und referenzen">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1684794301957" ID="ID_1686570526" MODIFIED="1684794321433" TEXT="in C++20 g&#xe4;be es common_reference_t">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1684794311174" ID="ID_1882627403" MODIFIED="1684796038475" TEXT="also darum herumarbeiten">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node CREATED="1684790847496" ID="ID_93335409" MODIFIED="1684790912014" TEXT="und man kann notfalls das Trait-Template isoliert debuggen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...das hat sich nun schon mehrfach als sehr hilfreich erwiesen: man instantiiert das Trait-Template &#8222;auf der gr&#252;nnen Wiese&#8220; und kann es dann direkt mit lib::test::TypeDebugger analysieren...
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#338800" CREATED="1684790699401" ID="ID_455599839" MODIFIED="1684796046584" TEXT="und nested type-defs aufbauen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1684790716001" ID="ID_1920868863" MODIFIED="1684796052395" TEXT="sonst besser alles autmatisch laufen lassen">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1684797078432" ID="ID_1374445822" MODIFIED="1684797091083" TEXT="sehr aufwendiger Umbau in der Library notwendig">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1684800083638" ID="ID_214202588" MODIFIED="1684816199551" TEXT="mehrfach verschachtelte Prerequisites">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1684800102308" FOLDED="true" ID="ID_1545603358" MODIFIED="1684816327520" TEXT="SEGFAULT bzw. ung&#xfc;liges Ticket">
<linktarget COLOR="#803360" DESTINATION="ID_1545603358" ENDARROW="Default" ENDINCLINATION="-178;-8;" ID="Arrow_ID_450625950" SOURCE="ID_353579055" STARTARROW="None" STARTINCLINATION="390;-16;"/>
<icon BUILTIN="broken-line"/>
<node CREATED="1684800122544" ID="ID_1359955499" MODIFIED="1684800143035" TEXT="wie kann das passieren...?">
<font ITALIC="true" NAME="SansSerif" SIZE="9"/>
<icon BUILTIN="smiley-oh"/>
</node>
<node COLOR="#435e98" CREATED="1684800182479" ID="ID_1699865620" MODIFIED="1684809943355" TEXT="Untersuchung">
<icon BUILTIN="info"/>
<node COLOR="#435e98" CREATED="1684800281091" ID="ID_888424202" MODIFIED="1684800984773" TEXT="getPrerequisites() auf offensichtlich leeres JobTIcket">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1684800326022" ID="ID_1067024943" MODIFIED="1684800358078" TEXT="Problem ist der Zugriff &#xfc;ber die Channel-Nummer als index">
<icon BUILTIN="info"/>
</node>
<node COLOR="#338800" CREATED="1684800304904" ID="ID_1087272387" MODIFIED="1684800982186" TEXT="hier fehlt wohl ein empty()-Check">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1684800990944" ID="ID_761480756" MODIFIED="1684801006632" TEXT="damit ist der SEGFAULT weg">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1684800373071" ID="ID_1430831381" MODIFIED="1684809869554" TEXT="aber wie kann ein leeres JobTicket hier auftreten?">
<icon BUILTIN="help"/>
<node CREATED="1684801562142" ID="ID_1605790902" MODIFIED="1684801578488" TEXT="...zwar ist das mit den Referenzen schon gef&#xe4;hrlich"/>
<node CREATED="1684801579316" ID="ID_372682624" MODIFIED="1684801596281" TEXT="...aber alle JobTickets sollten doch stabil im Speicher liegen"/>
<node CREATED="1684801485968" ID="ID_913020779" MODIFIED="1684801598211" TEXT="das Ticket liegt schon kaputt in der Segmentation">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1684801502795" ID="ID_1960449243" MODIFIED="1684808093527" TEXT="Problem tritt nur auf, wenn auf einer Ebene mehrere Prerequisites stehen">
<arrowlink DESTINATION="ID_949912580" ENDARROW="Default" ENDINCLINATION="6;-58;" ID="Arrow_ID_1790481096" STARTARROW="None" STARTINCLINATION="-130;5;"/>
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1684804513055" ID="ID_949912580" MODIFIED="1684809865284" TEXT="Builder-Iteration beobachten">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_949912580" ENDARROW="Default" ENDINCLINATION="6;-58;" ID="Arrow_ID_1790481096" SOURCE="ID_1960449243" STARTARROW="None" STARTINCLINATION="-130;5;"/>
<icon BUILTIN="list"/>
<node CREATED="1684804523586" ID="ID_1608815995" MODIFIED="1684804540156" TEXT="die zwei nested-Tickets (23 und 55) werden korrekt erzeugt"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1684804540768" ID="ID_1851251656" MODIFIED="1684806148264" TEXT="das top-level-Ticket ist unvollst&#xe4;ndig konstruiert oder korrumpiert">
<icon BUILTIN="broken-line"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1684806150056" ID="ID_1647779785" MODIFIED="1684806202639" TEXT="es findet eine Verwechslung statt">
<icon BUILTIN="clanbomber"/>
</node>
<node CREATED="1684806158743" ID="ID_1548270265" MODIFIED="1684806194070" TEXT="zwischen dem top-Level Ticket(id=11) und dem 2.Subticket(id=55)"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1684807049319" ID="ID_1694835244" MODIFIED="1684807993087" TEXT="Deque::emplace_back wird re-entrant aufgerufen">
<icon BUILTIN="broken-line"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1684808026054" ID="ID_295426763" MODIFIED="1684809879076" TEXT="wie kommt es zu dem re-entranten Aufruf?">
<icon BUILTIN="help"/>
<node CREATED="1684808108715" ID="ID_1801096639" MODIFIED="1684808131299" TEXT="dem Job-Ticket-ctor wird (eingepackt) nur ein Iterator f&#xfc;r die Prerequisites &#xfc;bergeben"/>
<node CREATED="1684808232459" ID="ID_1237322436" MODIFIED="1684808257034" TEXT="tats&#xe4;chlich ist das ein TransformIterator (welcher JobTicket baut)">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1684808150430" ID="ID_52443343" MODIFIED="1684808175181" TEXT="w&#xe4;hrend wir via emplace_back im top-Level ctor sind..."/>
<node CREATED="1684809408905" ID="ID_85213934" MODIFIED="1684809444816" TEXT="..wird zun&#xe4;chst die Spec ausgewertet">
<linktarget COLOR="#ff005c" DESTINATION="ID_85213934" ENDARROW="Default" ENDINCLINATION="44;42;" ID="Arrow_ID_1089227137" SOURCE="ID_324096076" STARTARROW="None" STARTINCLINATION="-159;8;"/>
</node>
<node CREATED="1684808175873" ID="ID_1817247393" MODIFIED="1684809424673" TEXT="...und dabei wird dieser Iterator aktiviert">
<node CREATED="1684809243689" ID="ID_577633189" MODIFIED="1684809255515" TEXT="ruft den transform-Funktor auf"/>
<node CREATED="1684809255935" ID="ID_687227041" MODIFIED="1684809279464" TEXT="dieser ruft re-entrant das emplace_back auf"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1684809282899" ID="ID_711686740" MODIFIED="1684809315951" TEXT="dieses belegt this mit einer bereits vergebenen Adresse">
<icon BUILTIN="clanbomber"/>
</node>
<node CREATED="1684809321046" ID="ID_546438489" MODIFIED="1684809327413" TEXT="und wertet dann die Spec aus"/>
<node CREATED="1684809328621" ID="ID_312188745" MODIFIED="1684809377598" TEXT="wegen der RVO arbeitet provisionSpec bereits im doppelt belegten Speicher">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1684809386287" ID="ID_324096076" MODIFIED="1684809462569">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      und <b>korrumpiert</b>&#160;daher die laufende Berechnung auf top-Level
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#ff005c" DESTINATION="ID_85213934" ENDARROW="Default" ENDINCLINATION="44;42;" ID="Arrow_ID_1089227137" STARTARROW="None" STARTINCLINATION="-159;8;"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1684809928901" ID="ID_1559101169" MODIFIED="1686449970876" TEXT="die re-entranten Aufrufe sauber handhaben">
<icon BUILTIN="button_ok"/>
<node CREATED="1684809953633" ID="ID_1013476722" MODIFIED="1684809961752" TEXT="strukturelles Problem">
<linktarget COLOR="#84a8bc" DESTINATION="ID_1013476722" ENDARROW="Default" ENDINCLINATION="-1306;143;" ID="Arrow_ID_1604056061" SOURCE="ID_96252432" STARTARROW="None" STARTINCLINATION="502;-1667;"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1684809963208" ID="ID_197980826" MODIFIED="1684810145770">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Prerequisites sind <b>privat</b>&#160;in JobTicket
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1684809974582" ID="ID_1124553578" MODIFIED="1684810053666">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      deshalb <i>k&#246;nnen sie erst</i>&#160;im Konstruktor gebaut werden
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1684810016680" ID="ID_440066044" MODIFIED="1684810138446">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      au&#223;erdem gibt es <b>kein Mutatons-API</b>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1684810031506" ID="ID_20132995" MODIFIED="1684810066790">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      also <i>m&#252;ssen sie auch bereits</i>&#160;im Konstruktor vollst&#228;ndig gebaut werden
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1684810092358" ID="ID_642183288" MODIFIED="1684810132046">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      und obendrein ist JobTicket <b>non-Copyable</b>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1684810104699" ID="ID_1982427509" MODIFIED="1684810125912">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      also <i>mu&#223; es per emplace</i>&#160;erzeugt werden
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1684811237684" ID="ID_1491313298" MODIFIED="1684815110975" TEXT="m&#xf6;gliche Auswege">
<icon BUILTIN="idea"/>
<node CREATED="1684811252562" ID="ID_1210649344" MODIFIED="1684815247084" TEXT="re-entrante Allokationen erm&#xf6;glichen">
<linktarget COLOR="#fef9d2" DESTINATION="ID_1210649344" ENDARROW="Default" ENDINCLINATION="-151;0;" ID="Arrow_ID_315568490" SOURCE="ID_95686416" STARTARROW="None" STARTINCLINATION="-105;-6;"/>
<icon BUILTIN="forward"/>
</node>
<node CREATED="1684811272864" ID="ID_977069915" MODIFIED="1684815243367" TEXT="die Prerequisite-Tickets bereits vor dem ctor-Aufruf bauen">
<icon BUILTIN="button_cancel"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1684815113734" HGAP="10" ID="ID_447348202" MODIFIED="1684816189525" TEXT="Entscheidung" VSHIFT="7">
<linktarget COLOR="#9f1b69" DESTINATION="ID_447348202" ENDARROW="Default" ENDINCLINATION="-766;-108;" ID="Arrow_ID_1594018198" SOURCE="ID_1683688581" STARTARROW="None" STARTINCLINATION="596;0;"/>
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1684815119061" ID="ID_66677317" MODIFIED="1684815145555" TEXT="ich erwarte re-entrante Allokationen">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1684815148892" ID="ID_95686416" MODIFIED="1684815385171">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Entscheidung im Hinblick auf den <b>AllocationCluster</b>
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      das kommt nicht von Ungef&#228;hr: dieses ganze (relativ fragile) Setup mit den Referenzen in LinkedElements mache ich ganz bewu&#223;t, weil am Ende ein Allocation-Schema beabsichtigt ist, bei dem viele Elemente in kurzer Zeit in einen gemeinsam allozierten gro&#223;en Block gelegt werden; dort bleiben sie bestehen, selbst nachdem ihr Destruktor aufgerufen wurde. Die De-Allokation erfolgt auf einmal, zusammen mit dem gesamten Segment
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#fef9d2" DESTINATION="ID_1210649344" ENDARROW="Default" ENDINCLINATION="-151;0;" ID="Arrow_ID_315568490" STARTARROW="None" STARTINCLINATION="-105;-6;"/>
<icon BUILTIN="info"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1684815414062" HGAP="-19" ID="ID_836227530" MODIFIED="1684815438692" TEXT="Mock-Implementierung: simuliere den Allokator durch std::list" VSHIFT="25">
<icon BUILTIN="idea"/>
<node CREATED="1684815440034" ID="ID_1890084327" MODIFIED="1684815464820">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      das ist eine <i>&#187;bastel-L&#246;sung&#171;</i>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1684815466385" ID="ID_578127251" MODIFIED="1684816314080" TEXT="rein pragmatisch herausgefunden">
<icon BUILTIN="info"/>
<node CREATED="1684815474222" ID="ID_1145733613" MODIFIED="1684816258000" TEXT="deque::emplace_back &#xd83e;&#xdc32; Korruption"/>
<node CREATED="1684816258635" ID="ID_347170626" MODIFIED="1684816287085" TEXT="list::emplace_front &#xd83e;&#xdc32; letztes Element ersetzt alle anderen"/>
<node CREATED="1684816287811" ID="ID_1223921866" MODIFIED="1684816309202">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      list::emplace_back&#160;&#160;<b><font color="#0d8c6a">funktioniert</font></b>
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1684816203960" ID="ID_1218889309" MODIFIED="1684816218544" TEXT="komplexer Testfall mit mehrfach geschachtelten Prerequisites">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1682868258074" ID="ID_1743148920" MODIFIED="1682898174253" TEXT="Job aus Ticket erstellen und ausf&#xfc;hrbar machen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1682885817579" ID="ID_1080671855" MODIFIED="1682886037986" TEXT="Hash f&#xfc;r Zeitwerte definieren">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Verwende eine halb-Rotation &#252;ber size_t &#10233;
    </p>
    <ul>
      <li>
        die beiden H&#228;lften des Bitstring der &#181;-ticks werden vertauscht
      </li>
      <li>
        damit erheblicher Abstand zwischen konsekutiven Werten
      </li>
      <li>
        hash&#178; &#8801; id
      </li>
      <li>
        impl sollte i.d.R. nach inlining eine einzige Assembler-Instruktion sein &#10230; https://stackoverflow.com/a/31488147
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1682885599653" ID="ID_1110668206" LINK="#ID_444576509" MODIFIED="1682885796274" TEXT="erster Entwurf der Hash-Verkettung">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1682885673339" ID="ID_1525753166" MODIFIED="1682885692857" TEXT="Instance-Hash: hier den Seed einfach durchreichen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1682890776694" ID="ID_1533405151" MODIFIED="1682898136722" TEXT="NOP-Job Stub">
<linktarget COLOR="#7b88b2" DESTINATION="ID_1533405151" ENDARROW="Default" ENDINCLINATION="-1179;197;" ID="Arrow_ID_1853160081" SOURCE="ID_10757245" STARTARROW="None" STARTINCLINATION="445;-24;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1682890841485" ID="ID_774211693" MODIFIED="1682890856303" TEXT="f&#xfc;r den Fall JobTicket::NIL"/>
<node COLOR="#338800" CREATED="1682898128631" ID="ID_1765265251" MODIFIED="1682898138153" TEXT="per lib::Depend einbinden">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1682898161611" ID="ID_98710848" MODIFIED="1682898165898" TEXT="im Test verifiziert">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#5b280f" CREATED="1682627654491" FOLDED="true" ID="ID_1371147624" MODIFIED="1683722703271" TEXT="Marker definieren und sichtbar machen">
<linktarget COLOR="#48417c" DESTINATION="ID_1371147624" ENDARROW="Default" ENDINCLINATION="-48;56;" ID="Arrow_ID_1753796050" SOURCE="ID_1110039315" STARTARROW="None" STARTINCLINATION="-284;-8;"/>
<icon BUILTIN="button_cancel"/>
<node COLOR="#435e98" CREATED="1682641810117" ID="ID_596391717" MODIFIED="1683722703271" TEXT="Problem: wie integieren?">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1682641827594" ID="ID_361324923" MODIFIED="1682641841154" TEXT="JobTicket selber hat keine VTable">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...und das ist gut so
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1682641932932" ID="ID_554797446" MODIFIED="1682642480303" TEXT="das geh&#xf6;rt damit eigentlich in den JobFunktor">
<node CREATED="1682641950985" ID="ID_775736069" MODIFIED="1682641959993" TEXT="denn der wird vermutlich ein generischer Baustein"/>
<node CREATED="1682641960512" ID="ID_1052805185" MODIFIED="1682641969181" TEXT="und k&#xf6;nnte dann auf die ProcNode delegieren"/>
</node>
<node CREATED="1682642490281" ID="ID_1787652965" MODIFIED="1682642992889">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <font color="#e62222">&#228;rgerliche Konsequenz</font>: bekomme <b>viele Instanzen</b>&#160;vom JobFunktor
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1682691820105" ID="ID_405339335" MODIFIED="1682691853870" TEXT="stattdessen: vom JobFunktor den konstanten Teil berechnen lassen">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#435e98" CREATED="1682718443540" ID="ID_116215580" MODIFIED="1683722703271" TEXT="es gen&#xfc;gt, den Marker/Seed zu best&#xe4;tigen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...ich darf nicht daran h&#228;ngenbleiben, da&#223; der Marker literal in der InvocationInstanceID steckt; das mit der Uniton ist ohnehin nur ein tempor&#228;rer Trick und kann nicht dauerhaft so bleiben &#8212; vielmehr ist die L&#246;sung, den chained-Hash-Mechanismus f&#252;r den Test so umzufunktionieren, da&#223; man mit ihm beweisen kann, da&#223; ein ganz bestimmter Job auch aufgerufen wurde.
    </p>
  </body>
</html></richcontent>
<arrowlink DESTINATION="ID_924000740" ENDARROW="Default" ENDINCLINATION="30;-95;" ID="Arrow_ID_1779817566" STARTARROW="None" STARTINCLINATION="-98;6;"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1682805859751" ID="ID_1020214107" MODIFIED="1682805886125" TEXT="es gibt zwei Implementierungen">
<icon BUILTIN="broken-line"/>
<node CREATED="1682805888320" ID="ID_1779572309" MODIFIED="1682805905593" TEXT="und es ist derzeit unklar, ob das so bleibt...."/>
<node CREATED="1682805906307" ID="ID_308580099" MODIFIED="1682806098603" TEXT="bisher gibt es schon den DummyJob">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...mit dem man zuf&#228;llige pseudo-Invocations erzeugen kann und diese auch sp&#228;ter mithilfe eines statischen Invocation-Log verifizieren.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1682807066972" ID="ID_1766437793" MODIFIED="1682808824748" TEXT="nun kommt die Konstruktion mit dem MockTicket dazu">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...und die setzt auf die f&#252;r sp&#228;ter tats&#228;chlich vorgesehene Hash-Verkn&#252;pfung auf, welche <i>in diesem Fall auch die nominelle Zeit </i>in die InvocationInstanceID mit einrechnet &#8212; nicht jedoch die reale Deadline (die in der Job-Instanz explizit vermerkt ist)
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1682808327555" ID="ID_782813898" MODIFIED="1682808633170" TEXT="Job-Invocation ist derzeit noch weitgehend ungekl&#xe4;rt">
<arrowlink COLOR="#b75269" DESTINATION="ID_1713196934" ENDARROW="Default" ENDINCLINATION="-871;-27;" ID="Arrow_ID_865176706" STARTARROW="None" STARTINCLINATION="-1263;70;"/>
<icon BUILTIN="stop-sign"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1682941524301" ID="ID_1050000340" MODIFIED="1682942127658" TEXT="die C-ismen sind problematisch und m&#xfc;ssen weg">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Bisher wird noch die Fiktion aufrecht erhalten, da&#223; die Basis-Schnittstelle zum Scheduler in reinem C geschrieben ist; tats&#228;chlich ist dadurch so mancher Teil der implementierung grenzwertig bzw. w&#252;rde tats&#228;chlich mit reinem C nicht (mehr) funktionieren; au&#223;erdem bekommen wir mehfrach geschichtete Vererbungen und m&#252;ssen regelm&#228;&#223;ig casten und implizite ungepr&#252;fte Annahmen machen.
    </p>
    <br/>
    <p>
      <i><font color="#f83434">Und das gemischte Setup ist t&#252;ckisch:</font></i>&#160;habe gestern Nacht und heute ein paar Stunden einen Link-Fehler gesucht, der auf ein fehlendes <font face="Monospaced" size="2" color="#1b1981">extern &quot;C&quot; { }</font>&#160;zur&#252;ckging, aber nicht aufgefallen war, solange C++ die Definitionen inlinen konnte...
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node BACKGROUND_COLOR="#b8c9da" COLOR="#435e98" CREATED="1682948593099" HGAP="-167" ID="ID_924000740" MODIFIED="1683722703272" STYLE="bubble" TEXT="stattdessen: verifizieren" VSHIFT="-5">
<edge COLOR="#1d699e"/>
<linktarget COLOR="#a9b4c1" DESTINATION="ID_924000740" ENDARROW="Default" ENDINCLINATION="30;-95;" ID="Arrow_ID_1779817566" SOURCE="ID_116215580" STARTARROW="None" STARTINCLINATION="-98;6;"/>
<icon BUILTIN="idea"/>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1682205189643" FOLDED="true" ID="ID_897564380" MODIFIED="1684876950217" TEXT="Problem: Umbau in JobTicket selber blockt">
<icon BUILTIN="stop-sign"/>
<node CREATED="1682205214637" ID="ID_451342844" MODIFIED="1682205353004" TEXT="kann nicht klar sehen, wie ich einen Marker im MockJob hinterlegen kann">
<icon BUILTIN="smiley-angry"/>
</node>
<node CREATED="1682205234442" ID="ID_1168362425" MODIFIED="1682205344594" TEXT="Grund ist...">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1682205280447" ID="ID_1890320289" MODIFIED="1682205280447" TEXT="derzeit reflektiert das JobTicket noch die Monaden-Struktur"/>
<node CREATED="1682205282092" ID="ID_577681512" MODIFIED="1682205305621" TEXT="und die Abl&#xe4;ufe sind daher ziemlich undurchsichtig"/>
<node CREATED="1682205306451" ID="ID_936014701" MODIFIED="1682715333366" TEXT="die eigentliche Ergebnis/Job-Erzeugung ist dabei halb mit eingewoben"/>
<node CREATED="1682205329192" ID="ID_1591053369" MODIFIED="1682205341296" TEXT="schwer f&#xfc;r einen Test/Mock zu isolieren"/>
</node>
<node COLOR="#435e98" CREATED="1682205419719" ID="ID_806137309" MODIFIED="1684877148005" TEXT="Job createJobFor (FrameCoord) war noch garnich nutzbar implementiert">
<arrowlink COLOR="#5cb854" DESTINATION="ID_1989334160" ENDARROW="Default" ENDINCLINATION="64;0;" ID="Arrow_ID_1232251004" STARTARROW="None" STARTINCLINATION="-4;26;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1684877157081" HGAP="-1" ID="ID_1004578992" MODIFIED="1684877170968" TEXT="Probleme vorl&#xe4;ufig umgehen" VSHIFT="5">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node COLOR="#338800" CREATED="1684876994406" FOLDED="true" ID="ID_596223452" MODIFIED="1684889587050" TEXT="also auch MockSegmentation aufbauen">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1684877008420" ID="ID_1844434779" MODIFIED="1684877046743" TEXT="Mock-setup: Segmentation &#x27f6; JobTicket &#x27f6; Job">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1684877089721" ID="ID_1075049046" MODIFIED="1684877102900" TEXT="fehlende Impl in JobTicket erg&#xe4;nzen">
<node COLOR="#338800" CREATED="1684877103800" ID="ID_1989334160" MODIFIED="1684877137469" TEXT="Job erzeugen">
<linktarget COLOR="#5cb854" DESTINATION="ID_1989334160" ENDARROW="Default" ENDINCLINATION="64;0;" ID="Arrow_ID_1232251004" SOURCE="ID_806137309" STARTARROW="None" STARTINCLINATION="-4;26;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1684877107395" ID="ID_33334184" MODIFIED="1684877124124" TEXT="Prerequisites abholen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1684877114676" ID="ID_1858174883" MODIFIED="1684877124124" TEXT="Invocation-ID generieren">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1686587531758" ID="ID_273720576" MODIFIED="1686619780748" TEXT="darauf MockDispatcher aufbauen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1686587545439" ID="ID_128090199" MODIFIED="1686617271302">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      hier Problem mit der Model-Port-Differenzierung geeignet <i>&#187;unter den Teppich kehren&#171;</i>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1686587918277" ID="ID_1788066497" MODIFIED="1686617252613" TEXT="Segmentation pro ModelPort-ID bereitstellen">
<linktarget COLOR="#21a5b7" DESTINATION="ID_1788066497" ENDARROW="Default" ENDINCLINATION="320;19;" ID="Arrow_ID_1763115482" SOURCE="ID_216367008" STARTARROW="None" STARTINCLINATION="-99;-383;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1686587983258" ID="ID_543272945" MODIFIED="1686617315622">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      tats&#228;chlich: erst mal nur <i>stupide aufdoppeln</i>
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...eine billige und manipulative Implementierung in MockSegmentation
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1686588011630" ID="ID_1683399826" MODIFIED="1686619779150" TEXT="Segmentation per Spec, mit 1-Segment-f&#xfc;r-Alles-Fallback">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1682385376739" FOLDED="true" ID="ID_576604811" MODIFIED="1686620311317" TEXT="Mock-Implementierung">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1682385392969" ID="ID_1317765253" MODIFIED="1684877385035" TEXT="Storage">
<node CREATED="1682385491724" ID="ID_1049416610" MODIFIED="1684877190112" TEXT="JobTickets in eine Deque allozieren">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      das erlaubt flexibles Hinzuf&#252;gen, ohne da&#223; Addressen invalidiert werden. Die Tickets selber m&#252;ssen NonCopyable sein
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="closed"/>
<node CREATED="1684877210298" ID="ID_1646659821" MODIFIED="1684877225717" TEXT="simuliert vorl&#xe4;ufig einen costom-Allocator">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#5b280f" CREATED="1684877227009" ID="ID_353579055" MODIFIED="1684877306099" TEXT="Problem: std::deque::emplace_back ist nicht re-entrant">
<arrowlink COLOR="#803360" DESTINATION="ID_1545603358" ENDARROW="Default" ENDINCLINATION="-178;-8;" ID="Arrow_ID_450625950" STARTARROW="None" STARTINCLINATION="390;-16;"/>
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node COLOR="#338800" CREATED="1684877192366" ID="ID_1618079442" MODIFIED="1684877311685" TEXT="stattdessen: nun in eine std::list allozieren">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#5b280f" CREATED="1682385911140" ID="ID_310070879" MODIFIED="1684877365893" TEXT="move-only Mock-Objekt herausgeben">
<icon BUILTIN="button_cancel"/>
<node CREATED="1682385936418" ID="ID_755704146" MODIFIED="1682385951914" TEXT="das ist aber &#x201e;das Ding selber&#x201c;"/>
<node CREATED="1682385963140" ID="ID_1239158970" MODIFIED="1682385993315" TEXT="also MockSegmentation, MockJobTicket,..."/>
</node>
<node COLOR="#338800" CREATED="1684877366605" ID="ID_1223106821" MODIFIED="1684877381834" TEXT="stattdessen: Mock-Instanzen k&#xf6;nnen einfach direkt (Stack) alloziert werden">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1682614081119" ID="ID_57760675" MODIFIED="1683722491527" TEXT="Interpretieren der jeweilgen Spec">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1682614092900" ID="ID_1252815318" MODIFIED="1683722500983" TEXT="Basis-Impl: ein Segment gibt es immer">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1682614117409" FOLDED="true" ID="ID_1176991982" MODIFIED="1683722521413" TEXT="splitSplice() implementieren">
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1682627110771" ID="ID_183754275" MODIFIED="1682627133820" TEXT="Invariante: l&#xfc;ckenlose Abdeckung">
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#435e98" CREATED="1682985654543" ID="ID_433290925" MODIFIED="1683076777480" TEXT="Algorithmus">
<icon BUILTIN="info"/>
<node CREATED="1682987424458" ID="ID_419424512" MODIFIED="1682987433683" TEXT="Invariante">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="info"/>
<node CREATED="1682987436544" ID="ID_274517946" MODIFIED="1682987447444" TEXT="vollst&#xe4;ndige l&#xfc;ckenlose Abdeckung der gesamten Zeitachse"/>
<node CREATED="1682987448551" ID="ID_1538436206" MODIFIED="1682987455003" TEXT="alle Eintr&#xe4;ge sind aufsteigend sortiert"/>
</node>
<node CREATED="1682985661822" ID="ID_851188636" MODIFIED="1682986190931" TEXT="Vorg&#xe4;nger und Nachfolger finden">
<icon BUILTIN="full-1"/>
<node CREATED="1682986432658" ID="ID_792953434" MODIFIED="1682989149768" TEXT="Predecessor">
<node CREATED="1682986511215" ID="ID_493462626" MODIFIED="1682986543401" TEXT="sep &#x2254; start oder after (wenn start fehlt)"/>
<node CREATED="1682986554783" ID="ID_750576553" MODIFIED="1682989185654" TEXT="Pstart &gt;= sep &#x27f9; &#x21af; Predecessor"/>
<node CREATED="1682986826346" ID="ID_727853130" MODIFIED="1682989193099" TEXT="suche gr&#xf6;&#xdf;ten mit Pstart &lt; sep">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_727853130" ENDARROW="Default" ENDINCLINATION="158;0;" ID="Arrow_ID_1115982284" SOURCE="ID_408822268" STARTARROW="None" STARTINCLINATION="158;0;"/>
</node>
</node>
<node CREATED="1682987368050" ID="ID_1970941364" MODIFIED="1682989212975" TEXT="Succsessor ist erster, der diese Bedingung verletzt"/>
<node CREATED="1682987507623" ID="ID_395536171" MODIFIED="1682989230851" TEXT="andernfalls: Successor == Predecessor (split)"/>
</node>
<node CREATED="1682985733848" ID="ID_1672899650" MODIFIED="1682986193244" TEXT="Start- und Endpunkt festsetzen">
<icon BUILTIN="full-2"/>
<node CREATED="1682987322728" ID="ID_320248563" MODIFIED="1682987335524" TEXT="definerter start/after-Punkt ist stets verbindlich">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1682987561688" ID="ID_1309770929" MODIFIED="1682987568688" TEXT="fehlernder start">
<node CREATED="1682987742720" ID="ID_1884018589" MODIFIED="1682987759318" TEXT="sep &#x2261; after">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1682987571207" ID="ID_571245598" MODIFIED="1682989244395" TEXT="Pend &lt; sep &#x27f9; start &#x2254; Pend"/>
<node CREATED="1682987616722" ID="ID_1354576577" MODIFIED="1682989250339" TEXT="sonst &#x27f9; start &#x2254; Pstart (replace or trunc)"/>
</node>
<node CREATED="1682987667594" ID="ID_1011955521" MODIFIED="1682987671861" TEXT="fehlender after">
<node CREATED="1682987742720" ID="ID_408822268" MODIFIED="1682989269792" TEXT="sep &#x2261; start &#x2227; Sstart &gt;= sep ">
<arrowlink DESTINATION="ID_727853130" ENDARROW="Default" ENDINCLINATION="158;0;" ID="Arrow_ID_1115982284" STARTARROW="None" STARTINCLINATION="158;0;"/>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1682987571207" ID="ID_491456235" MODIFIED="1682989275719" TEXT="Sstart &gt; sep &#x27f9; after &#x2254; Sstart"/>
<node CREATED="1682987616722" ID="ID_548072579" MODIFIED="1682989279922" TEXT="sonst &#x27f9; after &#x2254; Send (replace or trunc)"/>
</node>
<node CREATED="1682988627722" ID="ID_1905015650" MODIFIED="1682988633654" TEXT="POST">
<icon BUILTIN="yes"/>
<node CREATED="1682988637176" ID="ID_1261626912" MODIFIED="1682988645668" TEXT="start &lt; after">
<node CREATED="1682988713966" ID="ID_1690550958" MODIFIED="1682988744556">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      sonst &#10233; <b>REJECT</b>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1682988779297" ID="ID_28501272" MODIFIED="1682989283846" TEXT="Pstart &lt;= start"/>
<node CREATED="1682988911963" ID="ID_1061830050" MODIFIED="1682989418556" TEXT="Pstart == Sstart &#x2228; start &lt;= Sstart"/>
</node>
</node>
<node CREATED="1682985780238" ID="ID_1935969711" MODIFIED="1682986195716" TEXT="Relation zum Vor/Nachfolger bestimmen">
<icon BUILTIN="full-3"/>
<node CREATED="1682989072565" ID="ID_574776010" MODIFIED="1682989310210" TEXT="Pstart &lt; start">
<node CREATED="1682989100107" ID="ID_1303238476" MODIFIED="1682989331640" TEXT="Pend &lt; start &#x27f9; ins NOP-Predecessor"/>
<node CREATED="1682989363818" ID="ID_626589766" MODIFIED="1682989412757" TEXT="Pend == start &#x27f9; seamless"/>
<node CREATED="1682989432318" ID="ID_1285136346" MODIFIED="1682989453085" TEXT="Pend &lt;= after &#x27f9; truc(Predecessor)">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1285136346" ENDARROW="Default" ENDINCLINATION="218;0;" ID="Arrow_ID_1363539474" SOURCE="ID_7906079" STARTARROW="Default" STARTINCLINATION="189;0;"/>
</node>
<node CREATED="1682989463146" ID="ID_1057868667" MODIFIED="1682990037890" TEXT="Pend &gt; after &#x27f9; split(Predecessor)">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1057868667" ENDARROW="Default" ENDINCLINATION="192;0;" ID="Arrow_ID_638145525" SOURCE="ID_242314941" STARTARROW="Default" STARTINCLINATION="347;11;"/>
</node>
</node>
<node CREATED="1682989518809" ID="ID_994366359" MODIFIED="1682989523086" TEXT="Pstart == start">
<node CREATED="1682989432318" ID="ID_1069008527" MODIFIED="1683045577966" TEXT="Pend &lt;= after &#x27f9; drop(Predecessor)"/>
<node CREATED="1682989463146" ID="ID_514650224" MODIFIED="1682989628688" TEXT="Pend &gt; after &#x27f9; swap_trunc(Predecessor)"/>
</node>
<node CREATED="1682989799344" ID="ID_1899821024" MODIFIED="1682989806256" TEXT="Predecessor == Successor">
<node CREATED="1682989855439" ID="ID_7906079" MODIFIED="1682989886621" TEXT="Pend == after == Time::NEVER &#x27f9; trunc(Predecessor)">
<arrowlink DESTINATION="ID_1285136346" ENDARROW="Default" ENDINCLINATION="218;0;" ID="Arrow_ID_1363539474" STARTARROW="Default" STARTINCLINATION="189;0;"/>
</node>
<node CREATED="1682989964471" ID="ID_242314941" MODIFIED="1682990037890" TEXT="Pend &gt; after &#x27f9; split(Predecessor)">
<arrowlink DESTINATION="ID_1057868667" ENDARROW="Default" ENDINCLINATION="192;0;" ID="Arrow_ID_638145525" STARTARROW="Default" STARTINCLINATION="347;11;"/>
</node>
</node>
<node CREATED="1682990361746" ID="ID_540769988" MODIFIED="1682990378568" TEXT="Sstart &lt; after">
<node CREATED="1682990416619" ID="ID_1218355846" MODIFIED="1683044729239" TEXT="Send &lt; after &#x27f9; drop(Successor) and ++Successor and recurse (same base case)"/>
<node CREATED="1682990517405" ID="ID_1733924563" MODIFIED="1683044735150" TEXT="Send == after &#x27f9; drop(Successor)"/>
<node CREATED="1682990575017" ID="ID_1792970357" MODIFIED="1682990587208" TEXT="Send &gt; after &#x27f9; trunc(Successor)"/>
</node>
<node CREATED="1682990756277" ID="ID_1049988377" MODIFIED="1682990797692" TEXT="Sstart == after &#x27f9; seamless"/>
<node CREATED="1682990800343" ID="ID_744397196" MODIFIED="1682990839270" TEXT="after &lt; Sstart &#x27f9; ins NOP-Successor"/>
</node>
<node CREATED="1682986173785" ID="ID_1746212572" MODIFIED="1682986198143" TEXT="einf&#xfc;gen und l&#xf6;schen">
<icon BUILTIN="full-4"/>
<node CREATED="1682991925184" ID="ID_80874811" MODIFIED="1682991934113" TEXT="Predecessor">
<node CREATED="1682991935183" ID="ID_100248576" MODIFIED="1682991953832" TEXT="trunc &#x27f9; del"/>
<node CREATED="1682991959963" ID="ID_1359030638" MODIFIED="1682991991739" TEXT="split &#x27f9; del"/>
<node CREATED="1682991992375" ID="ID_1138806541" MODIFIED="1683046079451" TEXT="drop &#x27f9; del"/>
<node CREATED="1682991997084" ID="ID_1555435391" MODIFIED="1682992007785" TEXT="swap_trunc &#x27f9; del"/>
<node CREATED="1683046112074" ID="ID_1153918582" MODIFIED="1683046131523" TEXT="ins_nop | seamless &#x27f9; retain"/>
</node>
<node CREATED="1682992015840" ID="ID_1551079661" MODIFIED="1682992017823" TEXT="Successor">
<node CREATED="1682992042818" ID="ID_750532199" MODIFIED="1683046143586" TEXT="drop++ &#x27f9; del"/>
<node CREATED="1682992086602" ID="ID_79310561" MODIFIED="1682992091821" TEXT="trunc &#x27f9; del"/>
<node CREATED="1683046112074" ID="ID_288339130" MODIFIED="1683046131523" TEXT="ins_nop | seamless &#x27f9; retain"/>
</node>
<node CREATED="1682992101946" ID="ID_556573150" MODIFIED="1682992140097" TEXT="insert">
<node CREATED="1682992189962" ID="ID_981883843" MODIFIED="1682992192417" TEXT="before">
<node CREATED="1682992193388" ID="ID_230175279" MODIFIED="1682992198623" TEXT="ins NOP-Predecessor"/>
<node CREATED="1682992206197" ID="ID_1040208552" MODIFIED="1682992381127" TEXT="trunc(Predecessor) &#x27f9; ins copy Predecessor-shortened-end"/>
<node CREATED="1682992241669" ID="ID_817365471" MODIFIED="1682992378287" TEXT="split(Predecessor) &#x27f9; ins copy Predecessor shortened-end"/>
</node>
<node CREATED="1682992335801" ID="ID_1805568665" MODIFIED="1682992339549" TEXT="new Segment"/>
<node CREATED="1682992340041" ID="ID_196520321" MODIFIED="1682992341444" TEXT="after">
<node CREATED="1682992352925" ID="ID_1724212588" MODIFIED="1682992384559" TEXT="split(Predecessor) &#x27f9; ins copy Predecessor shortened-start"/>
<node CREATED="1682992393801" ID="ID_1960696922" MODIFIED="1682992413823" TEXT="swap_trunc(Predecessor) &#x27f9; ins copy Predecessor shortened-start"/>
<node CREATED="1682992484030" ID="ID_1216933300" MODIFIED="1682992501055" TEXT="trunc(Successor) &#x27f9; ins copy Successor shortened-start"/>
<node CREATED="1682992519007" ID="ID_804784169" MODIFIED="1682992526523" TEXT="ins NOP-Successor"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1682993086565" FOLDED="true" ID="ID_469257294" MODIFIED="1683250875747" TEXT="Implementierung">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1683042576253" ID="ID_1878728765" MODIFIED="1683076796339" TEXT="Konzept">
<icon BUILTIN="yes"/>
<node COLOR="#435e98" CREATED="1683042638127" ID="ID_1570983964" MODIFIED="1683076788355" TEXT="Deskriptor SpliceAct">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#5b280f" CREATED="1683042697806" ID="ID_1462476322" MODIFIED="1683043770315" TEXT="Task-Record">
<icon BUILTIN="button_cancel"/>
<node CREATED="1683042708897" ID="ID_1994905381" MODIFIED="1683042712143" TEXT="Tupel-derived"/>
<node CREATED="1683042713068" ID="ID_467754420" MODIFIED="1683042718110" TEXT="Enum als verb"/>
<node CREATED="1683042729238" ID="ID_1766658701" MODIFIED="1683042732508" TEXT="Argumente">
<node CREATED="1683042751566" ID="ID_1881769035" MODIFIED="1683042777102" TEXT="target : Iter"/>
<node CREATED="1683043762383" ID="ID_451784452" MODIFIED="1683043763464" TEXT="Time"/>
<node CREATED="1683043781546" ID="ID_924440661" MODIFIED="1683043804163" TEXT="gar nicht notwendig &#x2014; per Kontext klar">
<icon BUILTIN="stop-sign"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1683043806248" ID="ID_358437836" MODIFIED="1683076789875" TEXT="Enum als verb">
<node CREATED="1683043814387" ID="ID_312010971" MODIFIED="1683043834772" TEXT="jeweils separat f&#xfc;r pred und succ"/>
<node CREATED="1683043835634" ID="ID_1729162283" MODIFIED="1683043837062" TEXT="F&#xe4;lle">
<node CREATED="1683043887635" ID="ID_1329437740" MODIFIED="1683043891434" TEXT="SEAMLESS"/>
<node CREATED="1683043880347" ID="ID_836682678" MODIFIED="1683043882928" TEXT="INS_NOP"/>
<node CREATED="1683043904265" ID="ID_251771628" MODIFIED="1683043905981" TEXT="TRUNC"/>
<node CREATED="1683044668063" ID="ID_1598320614" MODIFIED="1683044671822" TEXT="DROP"/>
<node CREATED="1683044547460" ID="ID_1256792958" MODIFIED="1683044552526" TEXT="indirekt codiert....">
<node CREATED="1683044555202" ID="ID_1892772312" MODIFIED="1683044556606" TEXT="SPLIT">
<node CREATED="1683044601308" ID="ID_657233494" MODIFIED="1683044617686" TEXT="Predecessor auch als Successor markiert"/>
<node CREATED="1683044624433" ID="ID_1880803006" MODIFIED="1683044633275" TEXT="beide mit TRUNC - Verb"/>
</node>
<node CREATED="1683044559634" ID="ID_1736529823" MODIFIED="1683044562377" TEXT="SWAP_TRUNC">
<node CREATED="1683044638648" ID="ID_1428435516" MODIFIED="1683044680653" TEXT="Predecessor als DROP"/>
<node CREATED="1683044682001" ID="ID_531874522" MODIFIED="1683044696142" TEXT="Predecessor auch als Successor mit TRUNC markiert"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1683045976036" ID="ID_1600965970" MODIFIED="1683076793754" TEXT="Predecessor und Successor per Iterator referenzieren">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1683046583116" ID="ID_133574091" MODIFIED="1683076802821" TEXT="lokale Umsetzung">
<icon BUILTIN="button_ok"/>
<node CREATED="1683046618535" ID="ID_545931815" MODIFIED="1683046633053" TEXT="den Deskriptor als lokale/anonyme Klasse"/>
<node CREATED="1683046633701" ID="ID_1909003590" MODIFIED="1683046644503" TEXT="die Schritte des Algo als Methoden"/>
<node CREATED="1683046648011" ID="ID_884620601" MODIFIED="1683046664621" TEXT="Arbeitsdaten als Member"/>
<node CREATED="1683046711054" ID="ID_815326523" MODIFIED="1683046719941" TEXT="Integration als statische Funktion"/>
<node COLOR="#435e98" CREATED="1683076903128" ID="ID_1277889001" MODIFIED="1683077356643" TEXT="einige Vereinfachungen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Nach logischer Analyse der spezifiziereten F&#228;lle lassen sich einige Verzweigungen verk&#252;rzen
    </p>
    <ul>
      <li>
        die Suche nach dem Split-Punkt und das Festsetzen der Start/Endpunkte fasse ich zusammen in den Konstruktor; danach sind Start/Endzeit <i>immutable</i>
      </li>
      <li>
        sichere die Verk&#252;rzungen m&#246;glichst durch Assertions ab
      </li>
      <li>
        der SPLIT und SWAP-Fall wird dargestellt, indem ich den Predecessor auch als Successor verwende, und lediglich f&#252;r beide verschiedene Operationen codiere
      </li>
      <li>
        sofern f&#252;r beide bereits eine Operation definiert wurde, kann man die gesamte Untersuchung des Successors &#252;berspringen
      </li>
      <li>
        in dem Fall, in dem ggfs. mehrere &#252;berdeckte Successoren &#252;bersprungen werden, schiebe ich lediglich die Variablen
      </li>
      <li>
        den Umstand, da&#223; Predecessor/Successor verworfen werden, oder eben nicht, setze ich direkt durch Justieren des Iterator-Bereichs um
      </li>
      <li>
        anschlie&#223;end werden <i>zuerst</i>&#160;die neuen Elemente <i>davorgeh&#228;ngt</i>&#160;und dann der zu verwerfende Bereich gel&#246;scht
      </li>
      <li>
        als Ergebnis gebe ich die bezeichneten Iterator-Positionen zur&#252;ck
      </li>
      <li>
        alle Mutator-Operationen arbeiten auf Iteratoren (d.h. setzen eine nicht-invalidierende random-access-Liste vorraus)
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#338800" CREATED="1683046722945" ID="ID_113209914" MODIFIED="1683245591577" TEXT="Generalisierung">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1683046728800" ID="ID_1510597200" MODIFIED="1683081137760" STYLE="fork" TEXT="pr&#xfc;fen ob machbar">
<icon BUILTIN="help"/>
</node>
<node COLOR="#338800" CREATED="1683046739175" ID="ID_281973034" MODIFIED="1683081256994" TEXT="Operationen abstrahieren (&#x3bb;)">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1683046771373" ID="ID_668314224" MODIFIED="1683081327012" TEXT="getStart(elm)">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1683046786608" ID="ID_106487591" MODIFIED="1683081327011" TEXT="getEnd(elm)">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1683081197660" ID="ID_357336924" MODIFIED="1683245525718" TEXT="createSeg(pos, start,after)">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1683245530718" HGAP="29" ID="ID_1771563243" MODIFIED="1683245560983" TEXT="hierf&#xfc;r einfach das JobTicket per &#x3bb;-closure durchbeben" VSHIFT="3">
<font NAME="SansSerif" SIZE="11"/>
</node>
</node>
<node COLOR="#338800" CREATED="1683081213154" ID="ID_180921781" MODIFIED="1683245525719" TEXT="emptySeg(pos, start,after)">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1683081224201" ID="ID_886281397" MODIFIED="1683245525718" TEXT="cloneSeg(pos, start,after, src)">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1683245530718" HGAP="29" ID="ID_883714171" MODIFIED="1683245584960" TEXT="hierf&#xfc;r neue Segment-ctor Variante" VSHIFT="3">
<font NAME="SansSerif" SIZE="11"/>
</node>
</node>
<node COLOR="#338800" CREATED="1683081234023" ID="ID_263936802" MODIFIED="1683245525718" TEXT="discard(start,after)">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1683046873340" ID="ID_347563039" MODIFIED="1683081262904" TEXT="Template Parameter deduction einrichten">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1683081281809" ID="ID_805607489" MODIFIED="1683082821201" TEXT="in dedizierten Header extrahiert">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      lib/split-splice.hpp
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1683046958233" ID="ID_226373762" MODIFIED="1683208595655" TEXT="isoliert testbar machen">
<arrowlink COLOR="#2ec3d8" DESTINATION="ID_1714211009" ENDARROW="Default" ENDINCLINATION="-141;9;" ID="Arrow_ID_816334190" STARTARROW="None" STARTINCLINATION="-192;20;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1683158281268" ID="ID_1471352554" MODIFIED="1683158303513" TEXT="Verdrahtung f&#xfc;r Dummy-Integer-Segmente">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1683153490521" ID="ID_855593043" MODIFIED="1683153582188" TEXT="Diagnose-Helper zum Vergleichen mit erwartetem Inhalt">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      tja...
    </p>
    <p>
      das h&#228;tte ich schon seit JAHREN machen k&#246;nnen....
    </p>
    <p>
      
    </p>
    <p>
      (aber auf den Kniff mit dem Marker-Typ bin ich erst gekommen, seitdem ich mich neulich nochmal mit user-defined-Literals besch&#228;ftigt habe)
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1682993091685" FOLDED="true" ID="ID_988617455" MODIFIED="1683722512659" TEXT="systematische Testabdeckung">
<icon BUILTIN="button_ok"/>
<node CREATED="1682993100755" ID="ID_1651031348" MODIFIED="1682993128370" TEXT="es sind 12 Basis-F&#xe4;lle">
<icon BUILTIN="info"/>
</node>
<node CREATED="1682993108314" ID="ID_317827435" MODIFIED="1682993122827" TEXT="hinzu kommt die Variante, da&#xdf; leere Intervalle zusammengef&#xfc;hrt werden"/>
<node COLOR="#338800" CREATED="1683046966788" FOLDED="true" ID="ID_1714211009" MODIFIED="1683208598606" TEXT="splitSplice-Algo isoliert testen">
<linktarget COLOR="#2ec3d8" DESTINATION="ID_1714211009" ENDARROW="Default" ENDINCLINATION="-141;9;" ID="Arrow_ID_816334190" SOURCE="ID_226373762" STARTARROW="None" STARTINCLINATION="-192;20;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1683120139366" ID="ID_255513798" MODIFIED="1683120148509" TEXT="Test-Setup mit einfachen int-Intevallen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1683120149579" ID="ID_523859522" MODIFIED="1683120164828" TEXT="Diagnose-setup f&#xfc;r valide Segmentation">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1683120165480" ID="ID_1260440964" MODIFIED="1683120205165" TEXT="Diagnose-Setup f&#xfc;r Memory-Management">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1683158346179" ID="ID_1729448638" MODIFIED="1683158373910" TEXT="Demonstration: einfache Anwendung">
<icon BUILTIN="button_ok"/>
<node CREATED="1683158410507" ID="ID_1394829232" MODIFIED="1683158528764">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <font face="Monospaced" color="#2d258b">[-100~100[&#9508; </font>
    </p>
    <p>
      <font face="Monospaced" color="#2d258b">[-100~5[[5_23[[23~100[&#9508;</font>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node COLOR="#338800" CREATED="1683158382175" ID="ID_1213737514" MODIFIED="1683208577001" TEXT="Setup f&#xfc;r Einzelfall-Tests">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1683199848866" ID="ID_890601228" MODIFIED="1683199875667" TEXT="voll definierte Bouds">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1683208568957" ID="ID_1505138970" MODIFIED="1683208575478" TEXT="partiell definierte Bounds">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1683047015402" ID="ID_1729864005" MODIFIED="1683203798608" TEXT="M&#xf6;gliche Intervall-Anordnungen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1683047146727" ID="ID_1666065871" MODIFIED="1683199892426" TEXT="Seg in leer">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#5b280f" CREATED="1683047212062" ID="ID_378627927" MODIFIED="1683047503858" TEXT="Seg in Seg">
<arrowlink COLOR="#eee6fe" DESTINATION="ID_1715234114" ENDARROW="Default" ENDINCLINATION="-40;-6;" ID="Arrow_ID_821049970" STARTARROW="None" STARTINCLINATION="24;45;"/>
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#338800" CREATED="1683047231372" ID="ID_393126179" MODIFIED="1683203790082" TEXT="SegN &lt; Seg">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1683047290932" ID="ID_1714332119" MODIFIED="1683200066870" TEXT="links disjunkt">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1683047302426" ID="ID_255724966" MODIFIED="1683203758077" TEXT="links b&#xfc;ndig">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1683200290376" FOLDED="true" HGAP="33" ID="ID_230997836" MODIFIED="1683203752499" TEXT="bestehendes Segment dupliziert" VSHIFT="2">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      <font face="Monospaced">expect:&#9500;[-100~2[[4_5[[5_10[[10~100[&#9508; </font>
    </p>
    <p>
      <font face="Monospaced">actual:&#9500;[-100~4[[4_5[[5_10[[5_10[[10~100[&#9508;!gap_10&lt;&gt;5_! </font>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="broken-line"/>
<node COLOR="#435e98" CREATED="1683203453122" ID="ID_1856169568" MODIFIED="1683203627745" TEXT="copy-n-paste-Fehler">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      bei der Verarbeitung des Successors hat einer der F&#228;lle auf die Operation opPred_ f&#252;r den Predecessor gepr&#252;ft; im konkreten Fall war das TRUNC, wohingegen f&#252;r den Successor SEAMLESS vorgesehen war. Daher wurde dann an dieser Stelle eine Trucated-copy dies Successors eingef&#252;gt, wobei in diesem Fall das Trucate gar nicht verk&#252;rzt hat, da der Anfangspunkt des Successors b&#252;ndig liegt; so kommt es, da&#223; der Successor komplett aufgedoppelt wurde
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1683203473903" ID="ID_1971966278" MODIFIED="1683203739112" TEXT="bei der Gelegenheit gleich noch Variable f&#xfc;r insert-Position eingef&#xfc;hrt">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...habe im Debugger verifiziert, da&#223; das mit den Interatoren-Positionen wirklich klappt: sie bleiben stabil. Trotzdem wird der Code lesbarer, wenn man nur in diesem St&#252;ck pred_ explizit bezeichnet als &quot;insPos&quot; (und pred_ nicht weiter verwendet).
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1683047312185" ID="ID_361978590" MODIFIED="1683203771932" TEXT="links &#xfc;berlapp">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1683047321800" ID="ID_750704841" MODIFIED="1683203771935" TEXT="links in-b&#xfc;ndig">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1683047329359" ID="ID_1715234114" MODIFIED="1683203771935" TEXT="komplett in">
<linktarget COLOR="#eee6fe" DESTINATION="ID_1715234114" ENDARROW="Default" ENDINCLINATION="-40;-6;" ID="Arrow_ID_821049970" SOURCE="ID_378627927" STARTARROW="None" STARTINCLINATION="24;45;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1683047333150" ID="ID_1160806927" MODIFIED="1683203771934" TEXT="rechts in-b&#xfc;ndig">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1683047338246" ID="ID_74223802" MODIFIED="1683203771934" TEXT="rechts &#xfc;berlapp">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1683047342461" ID="ID_70002710" MODIFIED="1683203771933" TEXT="rechts b&#xfc;ndig">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1683047345829" ID="ID_115418057" MODIFIED="1683203771933" TEXT="rechts disjunkt">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1683047262589" ID="ID_1007407171" MODIFIED="1683203788677" TEXT="SegN &#x2259; Seg">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1683047391246" ID="ID_79897442" MODIFIED="1683203780180" TEXT="komplett ersetzend">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1683047282261" ID="ID_972492925" MODIFIED="1683203787431" TEXT="SegN &gt; Seg">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1683047421234" ID="ID_34267753" MODIFIED="1683203780179" TEXT="links &#xfc;berlapp rechts in-b&#xfc;ndig">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1683047431779" ID="ID_867118469" MODIFIED="1683203780179" TEXT="komplett &#xfc;berdeckend">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1683047436312" ID="ID_178416593" MODIFIED="1683203780179" TEXT="links in-b&#xfc;ndig rechts &#xfc;berlapp">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1683047063010" ID="ID_1521759912" MODIFIED="1683208562370" TEXT="degenerierte F&#xe4;lle">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1683047111300" ID="ID_592313563" MODIFIED="1683204557100" TEXT="Ende vor Start &#x27f9; flip">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1683047568998" ID="ID_717909997" MODIFIED="1683204814732" TEXT="nur Start in leer">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1683047600842" ID="ID_1296939767" MODIFIED="1683204815920" TEXT="nur Ende in leer">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1683047624559" ID="ID_1509703991" MODIFIED="1683205236476" TEXT="nur Start in Seg">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1683047654979" ID="ID_1521058039" MODIFIED="1683205236475" TEXT="nur Ende in Seg">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1683047688030" ID="ID_1363163343" MODIFIED="1683205615492" TEXT="nur Start vor Seg">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1683047693102" ID="ID_848292031" MODIFIED="1683205615492" TEXT="nur Ende vor Seg">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1683047688030" ID="ID_1243727539" MODIFIED="1683205615493" TEXT="nur Start vor Seg b&#xfc;ndig">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1683047693102" ID="ID_1566033672" MODIFIED="1683205615493" TEXT="nur Ende vor Seg b&#xfc;ndig">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1683047697837" ID="ID_1072007349" MODIFIED="1683205991794" TEXT="nur Start nach Seg">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1683047704284" ID="ID_695991119" MODIFIED="1683205991794" TEXT="nur Ende nach Seg">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1683047688030" ID="ID_338317609" MODIFIED="1683205991795" TEXT="nur Start nach Seg b&#xfc;ndig">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1683047693102" ID="ID_1890127575" MODIFIED="1683205991795" TEXT="nur Ende nach Seg b&#xfc;ndig">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1683207052920" ID="ID_1558440128" MODIFIED="1683207476505" TEXT="keine Angabe in leer">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1683207078324" ID="ID_1025210162" MODIFIED="1683207476505" TEXT="keine Angabe + bestehendes Segment">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1683207090858" ID="ID_149796036" MODIFIED="1683207476506" TEXT="keine Angabe + bestehendes Segment b&#xfc;ndig zum Ende">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1683120235864" ID="ID_1312143276" MODIFIED="1683722433263" TEXT="Segmentation-Standardf&#xe4;lle">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1683250843877" ID="ID_608613083" MODIFIED="1683250856171" TEXT="einfache Segmentation mit einem Segment ab 10s">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1683671441771" ID="ID_514353615" MODIFIED="1683683643566" TEXT="ein begrenztes Segment in ansonsten leerer Timeline">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1683683705942" ID="ID_1879543257" MODIFIED="1683720596444" TEXT="drei Segmente mit L&#xfc;cke und partieller &#xdc;berlappung">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1683047063010" ID="ID_1142231389" MODIFIED="1683722432346" TEXT="degenerierte F&#xe4;lle">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1683047076545" ID="ID_1966654915" MODIFIED="1683722393255" TEXT="weder Start noch Ende &#x27f9; ein einziges Segment &#xfc;berspannt ganze Timeline">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1683047111300" ID="ID_1355900780" MODIFIED="1683722394371" TEXT="Ende vor Start &#x27f9; flip">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1683047624559" ID="ID_710124982" MODIFIED="1683722431469" TEXT="nur Start in Seg">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1683047693102" ID="ID_49056874" MODIFIED="1683722430578" TEXT="nur Ende vor Seg">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1682627621082" ID="ID_1110039315" MODIFIED="1683722471063" TEXT="ein Segment hinzuf&#xfc;gen">
<arrowlink COLOR="#48417c" DESTINATION="ID_1371147624" ENDARROW="Default" ENDINCLINATION="-48;56;" ID="Arrow_ID_1753796050" STARTARROW="None" STARTINCLINATION="-284;-8;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1682948783048" ID="ID_1811722913" MODIFIED="1683722468966" TEXT="leere Spec">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1682948658996" ID="ID_1655049197" MODIFIED="1683722468542" TEXT="einfachste Spec">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1682948807668" ID="ID_343017535" MODIFIED="1683722468048" TEXT="zus&#xe4;tzlich mit Marker">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1682948677800" ID="ID_1669789277" MODIFIED="1683722486461" TEXT="zwei Segmente">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1682948692446" ID="ID_1376099012" MODIFIED="1683722483002" TEXT="disjunkt">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1682948687990" ID="ID_691398450" MODIFIED="1683722483752" TEXT="&#xfc;berlappend">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1682948709980" ID="ID_1056091678" MODIFIED="1683722484290" TEXT="verschachtelt">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1683722454141" ID="ID_895795487" MODIFIED="1683722467292" TEXT="sukzessiv weiter partitionieren">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1683838161297" ID="ID_751342695" MODIFIED="1683838171328" TEXT="nested Specs in prerequisites umsetzen">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1682385895644" ID="ID_89969390" MODIFIED="1683722539629" TEXT="Verifikation im Test unterst&#xfc;tzen">
<icon BUILTIN="button_ok"/>
<node CREATED="1682386003212" ID="ID_930954734" MODIFIED="1682386014176" TEXT="gibt die &quot;Mock&quot;-Variante der jeweiligen Objekte heraus"/>
<node CREATED="1682386015054" ID="ID_1516142014" MODIFIED="1682386033703" TEXT="darauf kann man z.B. die Marker-ID abfragen"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1682386040786" ID="ID_99654376" MODIFIED="1682386162332" TEXT="das ist explizit erst mal eine Skizze">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Ich kann an dieser Stelle noch nicht auf die tats&#228;chiche Implementierung vorgreifen, sonst wird das alles ein undurchdringbares Kn&#228;uel. Die eigentliche Implementierung mu&#223; stark auf Performance optimiert sein, und daher ist die Datenstruktur vermutlich schwierig zu navigieren. Also baue ich hier ganz bewu&#223;t erst mal eine Fake-Variante auf, mit einer anderen Implementierung und einer bequemen Datenstruktur
    </p>
  </body>
</html></richcontent>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#338800" CREATED="1684877323435" ID="ID_67085851" MODIFIED="1684889467446" TEXT="Mock-Code aufr&#xe4;umen">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1681839415291" FOLDED="true" ID="ID_310889374" MODIFIED="1684889622711" TEXT="bestehenden Code nutzbar machen">
<linktarget COLOR="#fe80b2" DESTINATION="ID_310889374" ENDARROW="Default" ENDINCLINATION="-503;-32;" ID="Arrow_ID_1927639949" SOURCE="ID_697548050" STARTARROW="None" STARTINCLINATION="230;9;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#823c96" CREATED="1681839541902" ID="ID_147064800" MODIFIED="1684889488786" TEXT="die Datenstrukturen im JobTicket sind m&#xfc;hsam">
<icon BUILTIN="smiley-neutral"/>
<node CREATED="1681839553444" ID="ID_1298986941" MODIFIED="1681839563846" TEXT="die intrusive Linked-List ist fragw&#xfc;rdig"/>
<node CREATED="1681839564362" ID="ID_1371203216" MODIFIED="1681839580980" TEXT="aber Storage mu&#xdf; zwingend l&#xfc;ckenlos sein"/>
<node CREATED="1681839581752" ID="ID_643256358" MODIFIED="1681839603985" TEXT="alternativ w&#xe4;re daher ein Builder / Subtyp-Ansatz notwendig"/>
<node CREATED="1681839605783" ID="ID_133261971" MODIFIED="1681839717383" TEXT="dieser wirft auch so seine Probleme auf">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ... vor allem eine zus&#228;tzliche Indirektion, deren Wirkung nicht einfach abzusch&#228;tzen ist. Die tats&#228;chliche Listenl&#228;nge mu&#223; letztlich immer irgendwo explizit repr&#228;sentiert werden, und wenn man dies in einem Subtyp verbirgt, mu&#223; jeder Datenzugriff zwingend einmal durch eine Indirektion laufen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="stop-sign"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1681839722781" ID="ID_1259093394" MODIFIED="1681839753677" TEXT="also erst mal so belassen">
<icon BUILTIN="yes"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1681839729932" ID="ID_734404270" MODIFIED="1681839744054" TEXT="sp&#xe4;ter nochmal analysieren">
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1681839764807" ID="ID_817794853" MODIFIED="1681839788158" TEXT="der mit eingebaute Stack mu&#xdf; jetzt irgendwie brach liegen bleiben">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1682034742882" ID="ID_944887323" MODIFIED="1682034750820" TEXT="ist kein Problem und st&#xf6;rt nicht"/>
<node CREATED="1682034751416" ID="ID_1279546753" MODIFIED="1682034762907" TEXT="da liegen nur Iterator (Value-Objekte) drauf"/>
</node>
<node COLOR="#338800" CREATED="1681839799283" ID="ID_830915873" MODIFIED="1684877947114" TEXT="selbst einfachste Tests brauchen...">
<icon BUILTIN="yes"/>
<node COLOR="#338800" CREATED="1682622337048" ID="ID_1026907820" MODIFIED="1684889506759" TEXT="Storage">
<icon BUILTIN="button_ok"/>
<node CREATED="1682622347831" ID="ID_1252057037" MODIFIED="1682622360738" TEXT="f&#xfc;r Tests: im MockSegment unterbringen">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1684877425598" ID="ID_736200810" MODIFIED="1684877438131" TEXT="einfacher pseudo-Allokator (std::list)">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1681839808074" ID="ID_389152221" MODIFIED="1684877790145" TEXT="Einstiegspunkt">
<icon BUILTIN="button_ok"/>
<node CREATED="1681839824481" ID="ID_1782808621" LINK="#ID_1656777068" MODIFIED="1681839924803" TEXT="HA! startExploration k&#xf6;nnte &#xfc;berfl&#xfc;ssig sein">
<icon BUILTIN="idea"/>
<node CREATED="1681839942912" ID="ID_1045793970" MODIFIED="1681839954754" TEXT="an der Stelle zeigten sich deutlich die inneren Widerspr&#xfc;che"/>
<node CREATED="1681839958747" ID="ID_506200323" MODIFIED="1681839992513" TEXT="kann mich erinnern, da&#xdf; ich damals mich dort massiv festgefahren habe">
<icon BUILTIN="smiley-angry"/>
</node>
<node CREATED="1681839975059" ID="ID_1105715936" MODIFIED="1681839987192" TEXT="und auch jetzt hab ich schon wieder ein paar Stunden gegr&#xfc;belt">
<icon BUILTIN="smiley-oh"/>
</node>
</node>
<node COLOR="#338800" CREATED="1681860325369" FOLDED="true" ID="ID_328096563" MODIFIED="1684889534615" TEXT="mu&#xdf; nun aber JobTicket-Ctor bereitstellen">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1681860349394" ID="ID_1525241951" MODIFIED="1684877767110" TEXT="wie definiert man ein JobTicket?">
<icon BUILTIN="help"/>
<node CREATED="1681860366713" ID="ID_161470410" MODIFIED="1681860416753" TEXT="erste N&#xe4;herung: eine Spec abliefern">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1681860397581" ID="ID_676680756" MODIFIED="1681860411652" TEXT="man kann Provision und Requirements zusammenlegen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1681860421530" ID="ID_1550922413" MODIFIED="1682034579135" TEXT="JobTicket braucht aber LinkedElements&lt;Provision&gt;">
<icon BUILTIN="messagebox_warning"/>
<node COLOR="#690f14" CREATED="1681860473137" ID="ID_1498832886" MODIFIED="1682034500105" TEXT="den RAII-Populations-ctor nutzen">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1681860490289" ID="ID_118026994" MODIFIED="1681860510052" TEXT="erst mal f&#xfc;r den Test definieren">
<icon BUILTIN="yes"/>
<node CREATED="1681860520930" ID="ID_770893349" MODIFIED="1681860570905" TEXT="Provision-Record anlegen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      geht nicht: ist privat (und das ist sinnvoll so!)
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="closed"/>
</node>
<node CREATED="1681860530027" ID="ID_1039467630" MODIFIED="1681860537190" TEXT="Provision-Record irgendwie bauen"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1681860641938" ID="ID_1900625689" MODIFIED="1681860659290" TEXT="AUA! JobTicket &#xfc;bernimmt Ownership">
<icon BUILTIN="clanbomber"/>
<node CREATED="1681860661257" ID="ID_1274485445" MODIFIED="1681860705389" TEXT="zwar nur ein vorl&#xe4;ufiges Problem (OwningHeapAllocated)">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1681860689006" ID="ID_160492283" MODIFIED="1681861171511" TEXT="aber dahinter steckt ein konzeptionelles Problem">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      und zwar ist die JobTicket-Struktur explizit darauf angelegt, anderweitig erstellte Deskriptoren zu verlinken; das soll so sein aus Performance-Gr&#252;nden (Cache Locality &#10233; AllocationCluster)
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#df2b36" DESTINATION="ID_1071396002" ENDARROW="Default" ENDINCLINATION="317;-20;" ID="Arrow_ID_375386930" STARTARROW="None" STARTINCLINATION="-437;23;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1681864684118" ID="ID_1606009220" MODIFIED="1684877688940">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <b>Spezifikation</b>: <font color="#342fa7" face="Monospaced" size="4">JobTicket</font>&#160;erstellen
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#5385a7" DESTINATION="ID_896864831" ENDARROW="Default" ENDINCLINATION="69;-1101;" ID="Arrow_ID_1685360717" STARTARROW="None" STARTINCLINATION="-344;28;"/>
<font NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="info"/>
<node CREATED="1684877708030" ID="ID_428523937" MODIFIED="1684877726290" TEXT="Iterator f&#xfc;r alle Channel">
<icon BUILTIN="stop-sign"/>
<node CREATED="1684877729483" ID="ID_1965794240" MODIFIED="1684877733350" TEXT="bleibt vorerst bestehen"/>
<node CREATED="1684877733890" ID="ID_693779832" MODIFIED="1684877738613" TEXT="aber wir nutzen immer nur einen"/>
</node>
<node CREATED="1684877740905" ID="ID_1421924463" MODIFIED="1684877747064" TEXT="darin: spezifikations-Tripel">
<node CREATED="1681864758749" ID="ID_941507735" MODIFIED="1684877476273" TEXT="JobFunktor"/>
<node CREATED="1684877477701" ID="ID_847995501" MODIFIED="1684877486921" TEXT="ein Hash-Seed"/>
<node CREATED="1681864799687" ID="ID_1244549458" MODIFIED="1681864834215" TEXT="Aufz&#xe4;hlung Prerequisites">
<node CREATED="1684877758441" ID="ID_1047908309" MODIFIED="1684877759974" TEXT="iterator"/>
<node CREATED="1684877760358" ID="ID_750561070" MODIFIED="1684877764130" TEXT="liefert JobTicket&amp;"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1681860589211" ID="ID_1071396002" MODIFIED="1684877462825" TEXT="Problem: Allokation f&#xfc;r die Provision-Records">
<linktarget COLOR="#df2b36" DESTINATION="ID_1071396002" ENDARROW="Default" ENDINCLINATION="317;-20;" ID="Arrow_ID_375386930" SOURCE="ID_160492283" STARTARROW="None" STARTINCLINATION="-437;23;"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1681860891883" HGAP="24" ID="ID_1751384108" MODIFIED="1681861186918" VSHIFT="7">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      die mu&#223; definitiv <i>von &#8222;wo anders&#8220;</i>&#160;kommen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#435e98" CREATED="1681861077210" ID="ID_506364370" MODIFIED="1682034446522" TEXT="sollte die Deskriptoren per pushNew() erzeugen (also emplace...)">
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#338800" CREATED="1681861418620" ID="ID_1440642182" MODIFIED="1683809676177" TEXT="Spezifikations-Schnittstelle schaffen">
<icon BUILTIN="button_ok"/>
<node CREATED="1681861430131" ID="ID_38853136" MODIFIED="1681861501198" TEXT="dort k&#xf6;nnte auch das ganze Problem Allokation mit verborgen werden">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Ziel sollte tats&#228;chlich sein, die Komplexit&#228;ten mit der Allokation aus dem funktionalen Code heraus zu verbergen; denn dies dient nur dem separaten Belang der Performance
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1681946822662" ID="ID_527151044" MODIFIED="1681946836012" TEXT="Form der Schnittstelle noch unklar">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1681946837591" ID="ID_1753359630" MODIFIED="1681947351700" TEXT="zun&#xe4;chst einmal nur getrieben vom Test">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1681946849061" ID="ID_1328735668" LINK="#ID_122410804" MODIFIED="1681947238611" TEXT="die ungekl&#xe4;rte Frage bez&#xfc;glich Aufteilung pro Medien-Channel">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...ist hier relevant, denn dies scheidet eine einfache Funktions/Konstruktor-Schnittstelle aus; wir m&#252;ssen einen strukturierten Datensatz bereitstellen
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1681946946288" ID="ID_735321008" LINK="#ID_514995150" MODIFIED="1681947691935" TEXT="&#xfc;berdies ist die interne Repr&#xe4;sentation des top-level fragw&#xfc;rdig">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Zun&#228;chst wurden LinkedElements lediglich aus Gr&#252;nden der Konsistenz auch hierf&#252;r verwendet. Eine intrusive-single-linked-List mag f&#252;r die Vernetzung der Prerequisites sinnvoll sein, aber f&#252;r eine Sprungtafel nach Channel-Nr lie&#223;e sich genauso gut eine Array-backed-Implementation konstruieren (vielleicht dann ein neuer Anlauf anstelle der alten Idee des &#187;RefArray&#171; ?)
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1681947254466" ID="ID_114148381" MODIFIED="1681947340793" TEXT="noch l&#xe4;ngerfristig unklar wie die Schnittstelle tats&#xe4;chlich produkiv genutzt werden wird">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...denn es wird noch deutlich &#252;ber dieses PlaybackVerticalSlice hinaus dauern, bis die erste rudiment&#228;re Implementierung des Builders am Start ist &#8212; und <i>erst dann gibt es eine praktischen Bezugspunkt f&#252;r das Design</i>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1681948120763" ID="ID_750154353" MODIFIED="1681948327526" TEXT="denkbar da&#xdf; sich das sp&#xe4;ter stets auf eine ProcNode-Referenz reduzieren l&#xe4;&#xdf;t">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...m&#246;glicherweise k&#246;nnte zumindest so der wichtigste Standardfall komplett ohne einen eigens allozierten JobFunktor dargestellt werden &#8212; einfach indem alle notwendigen Parameter direkt aus der referenzierten ProcNode gezogen werden. Um diese M&#246;glichkeit abzusch&#228;tzen, m&#252;&#223;te aber zuerst definiert werden, wie der &#220;bergang zu den Prerequisites konkret im Proc-Node-Graph dargestellt werden: durch spezielle Metadaten? oder durch eine besondere Marker-Node, die wie eine Quelle fungiert?
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#338800" CREATED="1681947704128" ID="ID_1307528426" MODIFIED="1683809658570" TEXT="vorl&#xe4;ufige L&#xf6;sung: Iterator &#xfc;ber std::tuple">
<icon BUILTIN="button_ok"/>
<node CREATED="1681947910447" ID="ID_1183443190" MODIFIED="1681947934893" TEXT="Begr&#xfc;ndung">
<node CREATED="1681947935610" ID="ID_218509707" MODIFIED="1681947935610" TEXT="sonst m&#xfc;&#xdf;ten wir hier doch einen Deskriptor-Record-Typ einf&#xfc;hren"/>
<node CREATED="1681947938444" ID="ID_1201610351" MODIFIED="1681947959060" TEXT="und damit einer sp&#xe4;teren ausgebauten Builder-Syntax vorgreifen"/>
<node CREATED="1681947964857" ID="ID_733464382" MODIFIED="1681947997559" TEXT="besser w&#xe4;re es, das in eine Subklasse zu verschieben"/>
</node>
<node COLOR="#338800" CREATED="1681948003825" ID="ID_1586450204" MODIFIED="1682034453286" TEXT="Hilfsfunktion: Transformator mit Allokation">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1681961414575" ID="ID_648708446" MODIFIED="1681961436412" TEXT="Argument-Typ validieren">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1681961449442" ID="ID_1664168385" MODIFIED="1681961462617" TEXT="Provision und Prerequisite per Allokator erzeugen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1681961464064" ID="ID_647784147" MODIFIED="1682026936579" TEXT="mu&#xdf; Reihenfolge der Linked-List umkehren">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1681961488869" ID="ID_1984454996" MODIFIED="1682026941393" TEXT="Hilfsfunktion in LinkedElements implementieren">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1681961499158" ID="ID_1061765881" MODIFIED="1682026940080" TEXT="Unit-Test hierf&#xfc;r">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1681948057567" ID="ID_923881429" MODIFIED="1682027001897" TEXT="mu&#xdf; zun&#xe4;chst den empty()-Testcase erf&#xfc;llen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1681948087120" ID="ID_555715675" MODIFIED="1682026994517" TEXT="brauche dazu einen NOP-JobFunktor">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1682026957482" ID="ID_637833464" MODIFIED="1682026990813" TEXT="schreibe den bestehenden dummy-job.cpp um">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1682026969063" ID="ID_32615180" MODIFIED="1682026989799" TEXT="verwende eine TestLog-Instanz">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1682026978301" ID="ID_347272426" MODIFIED="1684877782771" TEXT="als Singleton per lib::Depend">
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#df2bbd" CREATED="1682027074106" ID="ID_1659411020" MODIFIED="1682027096603" TEXT="tut">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...nach zwei Tagen Gew&#252;rge....
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node COLOR="#338800" CREATED="1681948045301" ID="ID_1777275098" MODIFIED="1683809657666" TEXT="dann Beispiel-Impl f&#xfc;r Mock">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1683809659597" ID="ID_1140176298" MODIFIED="1683809675249" TEXT="darauf aufbauend: GenNode-Spec f&#xfc;r eine MockSegmentation">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1681839812280" ID="ID_525360569" MODIFIED="1684877855255" TEXT="Iteration">
<icon BUILTIN="button_ok"/>
<node CREATED="1681840007512" ID="ID_1951568685" MODIFIED="1681840020471" TEXT="ist f&#xfc;r LinkedElements bereits fertig implementiert">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1684877802788" ID="ID_512421759" MODIFIED="1684877809589" TEXT="get Prerequisites">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1684877810281" ID="ID_1410059245" MODIFIED="1684877821196" TEXT="liefert Iteration &#xfc;ber JobTicket&amp;">
<icon BUILTIN="info"/>
</node>
<node COLOR="#338800" CREATED="1684877821874" ID="ID_1863425234" MODIFIED="1684877852389" TEXT="implementiert per TransformIterator">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      &#252;ber die interne Provision-Datastruktur (LinkedElements)
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#338800" CREATED="1684877860668" ID="ID_64705741" MODIFIED="1684877865545" TEXT="Iteration &#xfc;ber Segmente">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1681839815223" ID="ID_864479514" MODIFIED="1684877934345" TEXT="Verifikation">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1681840026883" ID="ID_43381502" MODIFIED="1684877893782" TEXT="empty() f&#xfc;r leere / Platzhalter-Tickets">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1684877895212" ID="ID_1666792015" LINK="#ID_1525753166" MODIFIED="1684878095119" TEXT="spezielles Rigging f&#xfc;r die Frame-Hashes schaffen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1684877915664" ID="ID_1533409441" MODIFIED="1684877929575" TEXT="damit kann man beweisen: dieser Job geh&#xf6;rt zu diesem Segment">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1684877930020" ID="ID_345323099" MODIFIED="1684877933809" TEXT="Hilfsfunktionen hierf&#xfc;r">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1684877969785" ID="ID_1253073647" MODIFIED="1684878015913" TEXT="MockSupport_test">
<icon BUILTIN="button_ok"/>
<node CREATED="1684878012464" MODIFIED="1684878012464" TEXT="simpleUsage();"/>
<node CREATED="1684878012464" MODIFIED="1684878012464" TEXT="verify_MockJob();"/>
<node CREATED="1684878012464" MODIFIED="1684878012464" TEXT="verify_MockJobTicket();"/>
<node CREATED="1684878012464" ID="ID_1761840218" LINK="#ID_1176991982" MODIFIED="1684878136078" TEXT="verify_MockSegmentation();"/>
<node CREATED="1684878012464" ID="ID_1911013145" LINK="#ID_599701197" MODIFIED="1684878033002" TEXT="verify_MockPrerequisites();"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1681742836995" FOLDED="true" ID="ID_456677168" MODIFIED="1687304899402" TEXT="using a frame step as base tick">
<icon BUILTIN="full-2"/>
<node COLOR="#338800" CREATED="1685063204038" FOLDED="true" ID="ID_1320162919" MODIFIED="1687304884053" TEXT="Vorarbeit">
<icon BUILTIN="button_ok"/>
<node CREATED="1685396470984" ID="ID_977131570" MODIFIED="1685396475818" TEXT="Grunds&#xe4;tzliches...">
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1685403171015" ID="ID_1491439076" MODIFIED="1685403230708" TEXT="der Code sieht konfus aus">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...was auf eine Verwirrung in den Konzepten und Begriffen hindeutet (die ich schon seit Tagen vermute, aber noch nicht recht fassen kann)
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="closed"/>
</node>
<node CREATED="1685396476863" ID="ID_639678188" MODIFIED="1685399823940" TEXT="die verschiedenen Zeiten sind verwirrend">
<arrowlink COLOR="#3048bc" DESTINATION="ID_334635354" ENDARROW="Default" ENDINCLINATION="-699;-102;" ID="Arrow_ID_1276385023" STARTARROW="None" STARTINCLINATION="-673;45;"/>
<icon BUILTIN="smiley-neutral"/>
<node CREATED="1685399857119" ID="ID_1465166407" MODIFIED="1685401807863" TEXT="mehrfach kaskadiert">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1685399869137" ID="ID_1340639570" MODIFIED="1685399872381" TEXT="TimeAnchor">
<node CREATED="1685399887711" ID="ID_1101109058" MODIFIED="1685399892290" TEXT="anchorPoint">
<node CREATED="1685399911211" ID="ID_1078648686" MODIFIED="1685399915129" TEXT="Frame-Nr"/>
<node CREATED="1685399915763" ID="ID_1286626168" MODIFIED="1685399941235" TEXT="relativ zur &#x201e;absoluten&#x201c; nominellen Zeitskala"/>
<node CREATED="1685399944455" ID="ID_556515153" MODIFIED="1685399962428">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      also relativ zum Ursprung des Time-Grid <i>dieser Timeline</i>
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1685401719809" ID="ID_892456481" MODIFIED="1685401724412" TEXT="relatedRealTime">
<node CREATED="1685401730920" ID="ID_1452346847" MODIFIED="1685401741562" TEXT="nominelle Zeit zur Frame-Nr"/>
<node CREATED="1685401764875" ID="ID_1929447704" MODIFIED="1685401777485" TEXT="verkn&#xfc;pft mit der Wall-Clock-Zeitachse"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1685403241929" ID="ID_1075266324" MODIFIED="1687304796068" TEXT="&#xbb;Deadline&#xab; und &#xbb;realTime&#xab; sind vermischt">
<arrowlink COLOR="#522b3c" DESTINATION="ID_1618141786" ENDARROW="Default" ENDINCLINATION="402;21;" ID="Arrow_ID_97219015" STARTARROW="None" STARTINCLINATION="250;-324;"/>
<icon BUILTIN="idea"/>
<node CREATED="1685403382547" ID="ID_1490411843" MODIFIED="1685403437934" TEXT="der Code ist zwar logisch korrekt aber inhaltlich sinnlos">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...deshalb kapiere ich ihn immer nicht
    </p>
    <p>
      ...dann lese ich ihn einzeln durch, und alles sieht &#8222;richtig&#8220; aus...
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="smiley-angry"/>
</node>
<node CREATED="1685403505076" ID="ID_1411221122" MODIFIED="1685403562528" TEXT="der TimeAnchor wurde mit Proze&#xdf;-Belangen aufgeladen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...weil ich erst mal einen Test schreiben wollte, und sonst noch keinerlei tragende Strukturen hatte
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1685403577421" ID="ID_1838234667" MODIFIED="1687304764180">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      &#10233; alles mit <i>Latency </i>und <i>Deadline </i>mu&#223; weg
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#338800" CREATED="1687304767321" ID="ID_1250391579" MODIFIED="1687304780895" TEXT="TimeAnchor verliert seinen Sinn und wird aufgegeben">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1685401871210" ID="ID_1279877312" MODIFIED="1687304864668" TEXT="Timings_test">
<node CREATED="1685063216695" ID="ID_918094283" MODIFIED="1685401873636" TEXT="ich bin immer wieder verwirrt...">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      also besser dann als separaten Test dokumentieren
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="smiley-angry"/>
<node CREATED="1685064270982" ID="ID_322776587" MODIFIED="1685064283466" TEXT="Ha! der Kern ist noch gar nicht implementiert">
<icon BUILTIN="idea"/>
<node CREATED="1685064289216" ID="ID_767771504" MODIFIED="1685064289216" TEXT="FrameCoord locateRelative (FrameCoord const&amp;, FrameCnt frameOffset)"/>
<node CREATED="1685064291715" ID="ID_1955955475" MODIFIED="1685064303415" TEXT="hier sollte das FrameGrid ins Spiel kommen">
<icon BUILTIN="info"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1687304836705" ID="ID_100230035" MODIFIED="1687304860893" TEXT="auf das Minimum der reienen Grid-Berechnungen reduzieren">
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#338800" CREATED="1685585183914" ID="ID_1477861363" MODIFIED="1685631559728" TEXT="einfache Integer-Sequenz iterieren">
<arrowlink COLOR="#64a3bc" DESTINATION="ID_1193075176" ENDARROW="Default" ENDINCLINATION="-872;80;" ID="Arrow_ID_49892110" STARTARROW="None" STARTINCLINATION="-1069;-69;"/>
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1685631561759" ID="ID_196221498" MODIFIED="1685631585003" TEXT="die bestehende Implementierung aus iter-adapter.hpp ist v&#xf6;llig ausreichend">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
<node BACKGROUND_COLOR="#fefc4e" COLOR="#351d75" CREATED="1685631586855" ID="ID_1043516162" MODIFIED="1685631663098" TEXT="Einsicht: wir wollen&#xa0;niemals&#xa0;eine unendliche Sequenz">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      allein schon, weil wir eine limitierte Dom&#228;ne haben bez&#252;glich lib::time::Time
    </p>
  </body>
</html></richcontent>
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1685066463050" ID="ID_1613334312" MODIFIED="1687192601623" TEXT="Mock-Setup schaffen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1685066492396" ID="ID_1906962794" MODIFIED="1686619854315" TEXT="API f&#xfc;r Zugriff kl&#xe4;ren">
<icon BUILTIN="button_ok"/>
<node CREATED="1685676202669" ID="ID_1528500239" MODIFIED="1685676214053" TEXT="analog zu MockSegmentation">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1685676215324" ID="ID_1375641669" MODIFIED="1685676224971" TEXT="MockDispatcher kann einfach instantiiert werden">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1685676225634" ID="ID_201099858" MODIFIED="1685676286815" TEXT="er h&#xe4;lt intern eine DummyPlayConnection">
<arrowlink COLOR="#58b681" DESTINATION="ID_161203143" ENDARROW="Default" ENDINCLINATION="79;-62;" ID="Arrow_ID_502535652" STARTARROW="None" STARTINCLINATION="90;6;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1685676320949" ID="ID_60016786" MODIFIED="1685802379535" TEXT="ein neuer Builder wird in der Dispatcher-Basisklasse implementiert">
<arrowlink COLOR="#4d8fa4" DESTINATION="ID_1622487483" ENDARROW="Default" ENDINCLINATION="121;-252;" ID="Arrow_ID_1017802335" STARTARROW="None" STARTINCLINATION="231;10;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#5b280f" CREATED="1685066474347" ID="ID_122826612" MODIFIED="1687192534572" TEXT="Grid in den Mock-Dispatcher legen">
<icon BUILTIN="button_cancel"/>
<node COLOR="#5b280f" CREATED="1687192536813" ID="ID_1552196636" MODIFIED="1687192595934" TEXT="Einsicht: die Fixture hat gar kein Grid">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#5b280f" CREATED="1687192560664" ID="ID_1507116951" MODIFIED="1687192595937" TEXT="das Frame-Grid geh&#xf6;rt zum Output &#x27f6; CalcStream">
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#338800" CREATED="1685662239880" ID="ID_1505090088" MODIFIED="1686620339199" TEXT="brauche ModelPort und Sink-Instanzen">
<icon BUILTIN="button_ok"/>
<node CREATED="1685662251607" ID="ID_1360980940" MODIFIED="1685662442877" TEXT="t&#xfc;ckisches Problem....">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...oder genauer gesagt, ein Design-Mismatch &#8212; das ganze ID-System in Lumiera ist <i>magisch</i>&#160;und &#8222;hintenrum&#8220; mit globalen Tabellen verbunden; <i>damals</i>&#160;erschien mir das gradezu nat&#252;rlich, <i>heute</i>&#160;sehe ich leider keine bessere L&#246;sung, die man in C++ realisieren kann (Scala l&#246;st dieses Problem mit den Implicits bzw. Givens)
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1685662448009" ID="ID_881674588" MODIFIED="1685662511675" TEXT="andererseits ist Lumiera &#x201e;blo&#xdf;&#x201c; eine Applikation">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...und nicht das ultimative Medien-Framework!!
    </p>
    <p>
      ....also ist es durchaus im Rahmen, wenn es eine fest vereinbarte Hintert&#252;r gibt f&#252;r die Tests
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1685662517358" ID="ID_161203143" MODIFIED="1685676286816">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      es lebe die <b><font face="Monospaced" color="#3d1ca2">DummyPlayConnection</font></b>
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#58b681" DESTINATION="ID_161203143" ENDARROW="Default" ENDINCLINATION="79;-62;" ID="Arrow_ID_502535652" SOURCE="ID_201099858" STARTARROW="None" STARTINCLINATION="90;6;"/>
<icon BUILTIN="idea"/>
<node CREATED="1685676072753" ID="ID_29155074" MODIFIED="1685676082592" TEXT="dort gibt es schon zwei fake-ModelPorts">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1685676083734" ID="ID_1387602910" MODIFIED="1685676114044" TEXT="nun auch noch zwei korrespondierende DataSink hinzugef&#xfc;gt">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1685676098707" ID="ID_970617797" MODIFIED="1685676172210" TEXT="und als Platzhalter: UnimplementedConnection">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      DataSink ist ein lib::Handle&lt;play::OutputSlot::Connection&gt;
    </p>
    <p>
      Also mu&#223; es im einfachsten Fall auf eine Subklasse von Connection zeigen; diese f&#252;ge ich hinzu mit lauter UNIMPLEMENTED stubs
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1685583450800" ID="ID_9210672" MODIFIED="1685978896104" TEXT="frame-step Core">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1685583477662" FOLDED="true" ID="ID_1520687206" MODIFIED="1685978983947" TEXT="den einfachst m&#xf6;glichen Frame-Step als &#xbb;state core&#xab; verpacken">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...denn eine &#187;state core&#171; wird automatisch von TreeExplorer erkannt und adaptiert...
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1685635382818" ID="ID_182297187" MODIFIED="1685635412661" TEXT="Vorstufe: die Kern-Funktionalit&#xe4;t direkt als Iterator-Pipeline demonstrieren">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1685635478500" ID="ID_1622487483" MODIFIED="1685978873316" TEXT="geeignetes Builder-API ausarbeiten">
<linktarget COLOR="#4d8fa4" DESTINATION="ID_1622487483" ENDARROW="Default" ENDINCLINATION="121;-252;" ID="Arrow_ID_1017802335" SOURCE="ID_60016786" STARTARROW="None" STARTINCLINATION="231;10;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1685676367077" ID="ID_497119837" MODIFIED="1685676383553" TEXT="Builder-Syntax schaffen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1685676373201" FOLDED="true" ID="ID_290916668" MODIFIED="1685978647418" TEXT="soll von TreeExplorer erben">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1685676390323" ID="ID_1302265239" MODIFIED="1685743982852" TEXT="geht das?">
<icon BUILTIN="help"/>
<node CREATED="1685676395607" ID="ID_840485660" MODIFIED="1685743976291" TEXT="erinnere mich an den EventLog-Filter">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      siehe <font face="Monospaced" size="2" color="#4c409c">iter-chain-search.hpp</font>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1685676405602" ID="ID_1339853853" MODIFIED="1685978618782" TEXT="das l&#xe4;uft auf einen decltype-Trick hinaus">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...man packt den eigentlichen TreeExplorer-Builder-Aufruf in eine Hilfsunktion und greift den decltype vom R&#252;ckgabewert ab; von diesem Typ kann man dann erben (und verwendet die erw&#228;hnte Hilfsfunktion im Konstruktor, um den Parent-Typ zu initialisieren)i
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1685978557837" ID="ID_768288490" MODIFIED="1685978611820" TEXT="oder auf ein Type-Rebinding via Template">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      So macht es der TreeExplorer selber, und nach etlichen Versuchen bin ich auch hier bei dieser L&#246;sung gelandet (und zufrieden damit)
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="forward"/>
</node>
</node>
<node COLOR="#338800" CREATED="1685744020440" ID="ID_189611589" MODIFIED="1685978550368" TEXT="das eigene Builder-API soll aber auf TreeExplorer aufbauen k&#xf6;nnen">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1685743991581" ID="ID_865546443" MODIFIED="1685978498740" TEXT="Type-Rebinding einrichten">
<arrowlink COLOR="#2741ab" DESTINATION="ID_681131446" ENDARROW="Default" ENDINCLINATION="-422;-16;" ID="Arrow_ID_1981008224" STARTARROW="None" STARTINCLINATION="66;259;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#5b280f" CREATED="1685744055315" ID="ID_115548313" MODIFIED="1685809647945" TEXT="f&#xfc;r Basis-Konstruktion">
<icon BUILTIN="button_cancel"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1685754130097" ID="ID_286369938" MODIFIED="1685754149459" TEXT="schwierig">
<icon BUILTIN="smily_bad"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1685754164717" ID="ID_1228626909" MODIFIED="1685754376312" TEXT="rekursive Struktur &#x27fa; type inference">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      In diesem Zusammenhang ist <i>type inference </i>praktisch unvermeidbar, denn die komplexen Typen vom TreeExplorer k&#246;nnen anders nicht explizit gemacht werden &#8212; aber das Problem ist, die Typen sind rekursiv, denn den neuen, erweiterten Builder-Typ mu&#223; ich schon kennen, um ihn in dem TreeEplorer-Builder als Core zu &#252;bergeben, aber erst <i>durch diesen Aufruf</i>&#160;wird dieser neue erweiterte Builder &#252;berhaupt definiert
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1685754386041" ID="ID_1627047385" MODIFIED="1685754500941" TEXT="Trick: NumIter ist assignable">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...also zun&#228;chst einen deaktivierten NumIter als Basisklasse, und an diesen sp&#228;ter einen aktivierten NumIter zuweisen...&#160; <b><font color="#ec1313">ziemlich h&#228;&#223;lich</font></b>, aber damit bekomme ich es &#252;berhaupt erst mal durch den Compiler...
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node BACKGROUND_COLOR="#e0bbaa" COLOR="#da1b25" CREATED="1685756935681" ID="ID_1637410723" MODIFIED="1685756972905" TEXT="f&#xfc;hrt zu gef&#xe4;hrlichen self-captures (SEGFAULT)">
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node COLOR="#338800" CREATED="1685809658922" ID="ID_1957536311" MODIFIED="1685809719591" TEXT="Basis-Fall besser ohne Type-Rebinding">
<arrowlink COLOR="#32c808" DESTINATION="ID_1438204358" ENDARROW="Default" ENDINCLINATION="283;12;" ID="Arrow_ID_1706669462" STARTARROW="None" STARTINCLINATION="280;20;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#5b280f" CREATED="1685744060666" ID="ID_676050987" MODIFIED="1685833565946" TEXT="f&#xfc;r Anwendung von TreeExplorer-Builder-Funktionen">
<icon BUILTIN="button_cancel"/>
<node COLOR="#435e98" CREATED="1685809751146" ID="ID_1263839813" MODIFIED="1685978514775" TEXT="&#xfc;ber Sequenz von dedizierten Builder-Typen l&#xf6;sen">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#435e98" CREATED="1685809771167" ID="ID_998998083" MODIFIED="1685978511009" TEXT="Problem: Definitions-Sequenz">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1685809782637" ID="ID_1994330949" MODIFIED="1685809800179" TEXT="(inline)-Funktionen sind erst nach dem Typ definiert"/>
<node CREATED="1685809800830" ID="ID_835161833" MODIFIED="1685809812910" TEXT="decltype kann erst auf vollst&#xe4;ndigen Typ angewendet werden"/>
<node CREATED="1685809816376" ID="ID_1605798061" MODIFIED="1685809838809" TEXT="brauche aber den decltype zu Beginn des n&#xe4;chsten Binder-Typs"/>
<node COLOR="#990033" CREATED="1685809839549" ID="ID_97735774" MODIFIED="1685831728915" TEXT="wo kann ich diesen Schlonz sauber unterbringen?">
<icon BUILTIN="help"/>
<icon BUILTIN="button_cancel"/>
<node COLOR="#5b280f" CREATED="1685830984120" ID="ID_1114059991" MODIFIED="1685831038447" TEXT="eine Traits-Klasse geht hier nicht">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...weil sie erst nach den Builder-Typen definiert werden kann, aber bereits vor ihnen gebraucht wird
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#5b280f" CREATED="1685830893511" ID="ID_293887488" MODIFIED="1685831715741" TEXT="k&#xfc;nstlich Templates einf&#xfc;gen?">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...weil man dadruch von der Definitionsreihenfolge entkoppeln kann
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#5b280f" CREATED="1685830943935" ID="ID_340189220" MODIFIED="1685836711378" TEXT="Funktionspointer und R&#xfc;ckgabewert von der Signatur abgreifen?">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      geht, ist aber alles andere als klar, da man zun&#228;chst den Member-Fun-Pointer abgreifen mu&#223;, und dann von diesem den <b><font color="#4d1e6d">decltype</font></b>&#160;ziehen (und erst damit kann man <font face="Monospaced">lib::meta::_Fun</font>&#160;anwenden)
    </p>
    <br/>
    <p>
      <font color="#62322e" face="Monospaced" size="2">
&#160;&#160;using Pointer = decltype(&amp;Dispatcher::PipeFrameTick::timeRange);<br/>
&#160;&#160;using ResType = lib::meta::_Fun&lt;Pointer&gt;::Ret;<br/>
&#160;<br/>
&#160;&#160;struct Dispatcher::PipeSelector<br/>
&#160;&#160;&#160;&#160;: ResType<br/>
&#160;&#160;&#160;&#160;{<br/>
&#160;&#160;&#160;&#160;&#160;&#160;...<br/>
&#160;&#160;&#160;&#160;};
      </font>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#435e98" CREATED="1685924688158" ID="ID_240274736" MODIFIED="1685924850417" TEXT="L&#xf6;sung: eine Template-Builder-Klasse oben dr&#xfc;ber layern">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      das l&#246;st ganz elegant beide Probleme
    </p>
    <ul>
      <li>
        da es sich um ein Template handelt, findet der Definitions-Check erst sp&#228;ter statt, wenn die tats&#228;chliche Pipeline gebaut wird
      </li>
      <li>
        der jeweilige Quell-Iterator-Typ ist als Template-Parameter gegeben, und kann damit direkt abgegriffen werden und in die n&#228;chste Instanz einflie&#223;en, welche einfach von ihm erbt
      </li>
    </ul>
  </body>
</html></richcontent>
<arrowlink COLOR="#374cb3" DESTINATION="ID_1780288961" ENDARROW="Default" ENDINCLINATION="-23;-87;" ID="Arrow_ID_755591193" STARTARROW="None" STARTINCLINATION="-413;20;"/>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1685830854298" ID="ID_1539456468" MODIFIED="1685833560849" TEXT="anders herum: brauchen wir &#xfc;berhaupt Zugang zum TreeExplorer-Builder?">
<font NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="help"/>
<node CREATED="1685831255381" ID="ID_300704569" MODIFIED="1685831305089" TEXT="&#x27f6; die Idee war heuristisch &#x2014; wird aber gar nicht gebraucht"/>
<node CREATED="1685831075727" ID="ID_1734873256" MODIFIED="1685831104437" TEXT="letztlich passiert der ganze Pipelie-Bau jetzt an einer einzigen Stelle"/>
<node CREATED="1685831111935" ID="ID_1008108972" MODIFIED="1685831156798" TEXT="und zwar vor dem Expander wird schon der &#xbb;FrameDropper&#xab; gebraucht"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1685843144859" ID="ID_164064059" MODIFIED="1685843320417" TEXT="allerdings geht damit auch das schrittweise Testen nicht mehr">
<arrowlink COLOR="#f62658" DESTINATION="ID_1520386382" ENDARROW="Default" ENDINCLINATION="147;-261;" ID="Arrow_ID_81911203" STARTARROW="None" STARTINCLINATION="-591;27;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node COLOR="#5b280f" CREATED="1685833510263" ID="ID_1962899865" MODIFIED="1685917704662">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <b>Zwischen-Fazit</b>: Anwendung von TreeExplorer passiert nur in einem Funktions-Scope
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node COLOR="#5b280f" CREATED="1685833568159" ID="ID_1859576493" MODIFIED="1685924611434" TEXT="also brauchen wir nur einen Wrapper-Typ am Ende">
<icon BUILTIN="button_cancel"/>
<node COLOR="#338800" CREATED="1685833591596" ID="ID_1247414372" MODIFIED="1685924608462" TEXT="der &#xfc;bernimmt den Iterator vom fertigen TreeExplorer">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1685833605178" ID="ID_433083338" MODIFIED="1685924609464" TEXT="und zwar kann man diesen dann durchaus per Template-Parameter &#xfc;bergeben">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1685917734217" ID="ID_1866369353" MODIFIED="1685924647424" TEXT="mehrere Aspekte sind aber problematisch">
<arrowlink COLOR="#5749b9" DESTINATION="ID_531896666" ENDARROW="Default" ENDINCLINATION="13;-50;" ID="Arrow_ID_1545948492" STARTARROW="None" STARTINCLINATION="-222;14;"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1685917742051" ID="ID_1886457132" MODIFIED="1685917751695" TEXT="die einzelnen Schritte sind nicht klar getrennt"/>
<node CREATED="1685917752196" ID="ID_1475349920" MODIFIED="1685917774301" TEXT="speziell die Expand-Funktion ist sehr verwoben mit der Pipeline"/>
<node CREATED="1685917782362" ID="ID_957312796" MODIFIED="1685917858352" TEXT="die Idee mit den k&#xfc;nstlichen Root-Tickets ist nicht gut durchf&#xfc;hrbar">
<linktarget COLOR="#bd2b85" DESTINATION="ID_957312796" ENDARROW="Default" ENDINCLINATION="249;11;" ID="Arrow_ID_1688529545" SOURCE="ID_334221261" STARTARROW="None" STARTINCLINATION="395;0;"/>
<icon BUILTIN="stop-sign"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1685917872249" ID="ID_531896666" MODIFIED="1685978495675" TEXT="doch nochmal Ansatz mit Builder-Typ versuchen">
<linktarget COLOR="#5749b9" DESTINATION="ID_531896666" ENDARROW="Default" ENDINCLINATION="13;-50;" ID="Arrow_ID_1545948492" SOURCE="ID_1866369353" STARTARROW="None" STARTINCLINATION="-222;14;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1685917908769" ID="ID_614051285" MODIFIED="1685924391262" TEXT="ein spezielles Builder-Template verwenden">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1685917990619" ID="ID_1176401324" MODIFIED="1685924592772" TEXT="dieses jeweils nach einem Schritt von der Pipeline wegsch&#xe4;len">
<icon BUILTIN="button_ok"/>
<node CREATED="1685919136874" ID="ID_1780288961" MODIFIED="1685924842956" TEXT="Anordnung">
<linktarget COLOR="#374cb3" DESTINATION="ID_1780288961" ENDARROW="Default" ENDINCLINATION="-23;-87;" ID="Arrow_ID_755591193" SOURCE="ID_240274736" STARTARROW="None" STARTINCLINATION="-413;20;"/>
<node CREATED="1685919141537" ID="ID_1712937407" MODIFIED="1685919145084" TEXT="Pipeline"/>
<node CREATED="1685919145781" ID="ID_1156318589" MODIFIED="1685919150899" TEXT="TreeExplorer"/>
<node CREATED="1685919151624" ID="ID_999213061" MODIFIED="1685919346619" TEXT="Builder">
<linktarget COLOR="#7181ad" DESTINATION="ID_999213061" ENDARROW="Default" ENDINCLINATION="9;34;" ID="Arrow_ID_1530989548" SOURCE="ID_1807352593" STARTARROW="None" STARTINCLINATION="-146;11;"/>
<node CREATED="1685919167547" ID="ID_1354500911" MODIFIED="1685919171225" TEXT="builder-Funktion">
<node CREATED="1685919173044" ID="ID_206249732" MODIFIED="1685919182519" TEXT="sch&#xe4;lt den Builder weg"/>
<node CREATED="1685919183114" ID="ID_1286862952" MODIFIED="1685919192492" TEXT="..indem sie den TreeExplorer verwendet"/>
<node CREATED="1685919291869" ID="ID_1262970496" MODIFIED="1685919303647" TEXT="....welcher sich selbst seinerseits wegsch&#xe4;lt"/>
<node CREATED="1685919305259" ID="ID_1807352593" MODIFIED="1685919355842" TEXT="und legt einen neuen Builder dar&#xfc;ber">
<arrowlink COLOR="#7181ad" DESTINATION="ID_999213061" ENDARROW="Default" ENDINCLINATION="9;34;" ID="Arrow_ID_1530989548" STARTARROW="None" STARTINCLINATION="-146;11;"/>
</node>
</node>
</node>
</node>
<node CREATED="1685924870380" ID="ID_529184023" MODIFIED="1685924873613" TEXT="Endresultat">
<node CREATED="1685924875931" ID="ID_1437755901" MODIFIED="1685924890134" TEXT="PipeFrameTick"/>
<node CREATED="1685924904806" ID="ID_1467750504" MODIFIED="1685924910898" TEXT="pullFrom() - Layer"/>
<node CREATED="1685924911534" ID="ID_1158824789" MODIFIED="1685924918553" TEXT="Expander - Layer"/>
<node CREATED="1685924919165" ID="ID_1384684809" MODIFIED="1685924924928" TEXT="JobPlanning - Layer"/>
<node CREATED="1685924933403" ID="ID_998006413" MODIFIED="1685924963731" TEXT="verpackt in ein PlanningPipeline&lt;IT&gt;"/>
</node>
</node>
<node COLOR="#5b280f" CREATED="1685918022280" ID="ID_905868944" MODIFIED="1685977886292" TEXT="Generische Expander-Funktion entwickeln">
<icon BUILTIN="button_cancel"/>
<node COLOR="#5b280f" CREATED="1685918038261" ID="ID_547403195" MODIFIED="1685978246222" TEXT="geht rein logisch nicht">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Der expand()-Mechanismus im TreeExplorer ist <i>kein monadisches <b>flatMap&#160; </b></i>&#8212; sondern nur &#228;hnlich (aber an den intendierten Nutzen angepa&#223;t): das Vater-Element erscheint zun&#228;chst selbst im Resultat-Iterator, und dann erst folgen expandierte Kind-Elemente; monadisches flatMap w&#252;rde den Vater sofort konsumieren und rekursives flatMap w&#252;rde sofort bis auf unterste Blatt-Ebene entfalten. Aber die Konsequenz ist: da wir den Vater selber <i>einmal durchreichen,</i>&#160;m&#252;ssen Ergebnistyp und Quelltyp kompatibel sein
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="closed"/>
</node>
<node COLOR="#338800" CREATED="1685918045844" ID="ID_494675571" MODIFIED="1685977941291" TEXT="markiere stattdessen den &#xbb;parent&#xab; auf root-level mit NULL">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1685918123634" ID="ID_1372348029" MODIFIED="1685978394612" TEXT="ItemWrapper auf non-copyable Typen anwendbar machen">
<icon BUILTIN="hourglass"/>
<node CREATED="1685978396373" ID="ID_1527864771" MODIFIED="1685978400506" TEXT="vorerst vertagt"/>
<node CREATED="1685978401013" ID="ID_443958342" MODIFIED="1685978419200" TEXT="der &#xbb;workaround&#xab; (Pointer verwenden) erweist sich hier sogar als n&#xfc;tzlich"/>
</node>
<node COLOR="#435e98" CREATED="1685978425523" HGAP="-26" ID="ID_681131446" MODIFIED="1685978484709" VSHIFT="14">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <b>Fazit</b>: in diesem dritten Anlauf konnte ich das Problem befriedigend l&#246;sen
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#2741ab" DESTINATION="ID_681131446" ENDARROW="Default" ENDINCLINATION="-422;-16;" ID="Arrow_ID_1981008224" SOURCE="ID_865546443" STARTARROW="None" STARTINCLINATION="66;259;"/>
<icon BUILTIN="forward"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1685757095009" ID="ID_707524538" MODIFIED="1685978849823" TEXT="Sequenz von Builder-Typen verwenden">
<icon BUILTIN="idea"/>
<node CREATED="1685757114222" ID="ID_1148981272" MODIFIED="1685757140497" TEXT="weil ohnehin die Builder-Funktionen in einer fixen Reihenfolge aufgerufen werden m&#xfc;ssen">
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#338800" CREATED="1685757512876" ID="ID_1438204358" MODIFIED="1685809712356" TEXT="den Tick-Generator besser explizit als StateCore ausimplementieren">
<linktarget COLOR="#32c808" DESTINATION="ID_1438204358" ENDARROW="Default" ENDINCLINATION="283;12;" ID="Arrow_ID_1706669462" SOURCE="ID_1957536311" STARTARROW="None" STARTINCLINATION="280;20;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1685802397240" ID="ID_958561473" MODIFIED="1685809511387" TEXT="direkt einen Zeitpunkt als Haltepunkt verwenden">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1685809519544" ID="ID_619200654" MODIFIED="1685809529263" TEXT="Haltepunkt-Semantik im Test verifiziert">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1685804222909" ID="ID_882875787" MODIFIED="1685978837548" TEXT="Gliederung">
<arrowlink COLOR="#5371b8" DESTINATION="ID_41719122" ENDARROW="Default" ENDINCLINATION="-1453;105;" ID="Arrow_ID_70945648" STARTARROW="None" STARTINCLINATION="-765;140;"/>
<icon BUILTIN="info"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1685583497277" ID="ID_1911386159" MODIFIED="1687228308472" TEXT="sinnvolles Erg&#xe4;nzungs-API bereitstellen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...denn TreeExplorer hat die Eigenschaft, von der &#187;state-core&#171; zu erben, und damit ihr public-API nach au&#223;en durchzureichen &#8212; im Besonderen auch f&#252;r obere Layer in der Pipeline
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1685809903965" ID="ID_1280247593" MODIFIED="1687228304549" TEXT="pr&#xfc;fen ob vor n&#xe4;chstem Chunk-Start">
<linktarget COLOR="#90417a" DESTINATION="ID_1280247593" ENDARROW="Default" ENDINCLINATION="160;0;" ID="Arrow_ID_1703119592" SOURCE="ID_1903725712" STARTARROW="None" STARTINCLINATION="246;11;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1687228290028" ID="ID_970384582" MODIFIED="1687228303957" TEXT="aktuelle Frame-Nr">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1687228294316" ID="ID_1401739047" MODIFIED="1687228303530" TEXT="buildJob und determineDeadline">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1685809977795" HGAP="-6" ID="ID_479052957" MODIFIED="1685809989039" TEXT="einfacher Test: funktioniert" VSHIFT="21">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1681742836996" FOLDED="true" ID="ID_1790705283" MODIFIED="1686696098642" TEXT="invoke the dispatcher to retrieve the top-level JobTicket">
<icon BUILTIN="full-3"/>
<node COLOR="#338800" CREATED="1685843183070" ID="ID_1520386382" MODIFIED="1685925294619" TEXT="L&#xf6;sung f&#xfc;r schichtweises Testen der Pipeline finden">
<linktarget COLOR="#f62658" DESTINATION="ID_1520386382" ENDARROW="Default" ENDINCLINATION="147;-261;" ID="Arrow_ID_81911203" SOURCE="ID_164064059" STARTARROW="None" STARTINCLINATION="-591;27;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1685925268894" ID="ID_1603468157" MODIFIED="1685925437087" TEXT="kehre zur urspr&#xfc;nglich geplanten L&#xf6;sung zur&#xfc;ck">
<icon BUILTIN="info"/>
</node>
<node CREATED="1685925279394" ID="ID_523904439" MODIFIED="1685925433781" TEXT="aber jetzt ist es mir endlich gelungen, sie sauber zu konstruieren">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...und zwar durch den gleichen Template-Slicing-Trick, der auch schon bei TreeExplorer selber so erfolgreich funktioniert: der Builder wird durch ein std::move auf die Basisklasse beschnitten und f&#228;llt dann als Temporary am Ende der Builder-Expressison einfach weg, aber aller relevanter Content ist in das Ergebnis geschoben worden, welches wegen RVO direkt am Zielort konstruiert wird
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#435e98" CREATED="1685843418766" FOLDED="true" ID="ID_311511953" MODIFIED="1685979141052" TEXT="JobTicket const&amp; oder JobTicket const* &#xfc;bergeben?">
<icon BUILTIN="help"/>
<node CREATED="1685843434561" ID="ID_787389984" MODIFIED="1685843465845" TEXT="const&amp; w&#xe4;re nat&#xfc;rlich sch&#xf6;n">
<icon BUILTIN="ksmiletris"/>
</node>
<node COLOR="#ff0000" CREATED="1685843440752" ID="ID_1684778826" MODIFIED="1685979119362" TEXT="aber: der Assignment-Operator im ItermWrapper (mal wieder)">
<icon BUILTIN="broken-line"/>
</node>
<node CREATED="1685979092865" ID="ID_91827998" MODIFIED="1685979109624" TEXT="NULLPTR sinnvoll um root-Level zu markieren">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#435e98" CREATED="1685979124917" ID="ID_1602555347" MODIFIED="1685979131683" TEXT="also bleibt&apos;s beim Pointer">
<icon BUILTIN="forward"/>
</node>
</node>
<node COLOR="#338800" CREATED="1685979146435" ID="ID_1554403810" MODIFIED="1686582620215" TEXT="Zugang zum JobTicket kl&#xe4;ren">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1685979157473" ID="ID_1156902335" MODIFIED="1686498920114" TEXT="allgemein (Plan f&#xfc;r operative L&#xf6;sung)">
<icon BUILTIN="yes"/>
<node COLOR="#338800" CREATED="1685986615408" ID="ID_114144357" MODIFIED="1686498905115" TEXT="JobTickets werden on-demand erzeugt">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1685986639787" ID="ID_966871848" MODIFIED="1686498905117" TEXT="aber in der Segment-Storage (AllocationCluster)">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1685986728208" ID="ID_720100639" MODIFIED="1686498905116" TEXT="also: Array-Access mit NULL-Check">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1685999762297" ID="ID_551644524" MODIFIED="1686498909689" TEXT="es gibt ein Koppel-Objekt zum low-level-Model">
<arrowlink COLOR="#656486" DESTINATION="ID_826544806" ENDARROW="Default" ENDINCLINATION="469;-18;" ID="Arrow_ID_1372033454" STARTARROW="None" STARTINCLINATION="487;30;"/>
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#5d0f69" CREATED="1686014265346" ID="ID_1087682281" MODIFIED="1686604464550" TEXT="Diskrepanz zwischen ModelPort und PortNr">
<arrowlink COLOR="#945b74" DESTINATION="ID_1552872944" ENDARROW="Default" ENDINCLINATION="-661;-43;" ID="Arrow_ID_1211078783" STARTARROW="None" STARTINCLINATION="-496;30;"/>
<linktarget COLOR="#fe3f50" DESTINATION="ID_1087682281" ENDARROW="Default" ENDINCLINATION="326;21;" ID="Arrow_ID_676319361" SOURCE="ID_252150549" STARTARROW="None" STARTINCLINATION="309;-20;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node COLOR="#338800" CREATED="1685979177023" FOLDED="true" ID="ID_886135870" MODIFIED="1686582622037" TEXT="Mock-L&#xf6;sung">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1685979197228" ID="ID_545092486" MODIFIED="1686498877227" TEXT="Thema: ModelPort">
<arrowlink COLOR="#6290c0" DESTINATION="ID_377967489" ENDARROW="Default" ENDINCLINATION="1458;-612;" ID="Arrow_ID_1683217879" STARTARROW="None" STARTINCLINATION="36;5;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1685986752098" ID="ID_225154274" MODIFIED="1686498869630" TEXT="erst der konkrete JobFunktor mu&#xdf; die ExitNode aufl&#xf6;sen">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#5b280f" CREATED="1685987227501" ID="ID_1649977820" MODIFIED="1686498874368" TEXT="daf&#xfc;r gen&#xfc;gt ihm eine Index-Nr als Parameter">
<icon BUILTIN="stop-sign"/>
</node>
<node COLOR="#435e98" CREATED="1685986766172" HGAP="28" ID="ID_491497133" MODIFIED="1686498858490" TEXT="Nein! besser direkt als Pointer durchschieben" VSHIFT="-5">
<arrowlink COLOR="#3e3f9b" DESTINATION="ID_666925478" ENDARROW="Default" ENDINCLINATION="426;-58;" ID="Arrow_ID_1306644139" STARTARROW="None" STARTINCLINATION="311;19;"/>
<arrowlink COLOR="#3e3f9b" DESTINATION="ID_1078372838" ENDARROW="Default" ENDINCLINATION="426;-58;" ID="Arrow_ID_1700206774" STARTARROW="None" STARTINCLINATION="311;19;"/>
</node>
</node>
<node COLOR="#338800" CREATED="1685987502422" FOLDED="true" ID="ID_1001471344" MODIFIED="1686581362539" TEXT="Segmentation-Spec erweitern">
<icon BUILTIN="button_ok"/>
<node CREATED="1685987531259" ID="ID_1014305317" MODIFIED="1685988022566" TEXT="minimal halten! f&#xfc;r Tests ist die ExitNode schei&#xdf;egal">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ich gehe davon aus, da&#223; praktisch alle Tests, die dieses Mock-Framework verwenden, lediglich pr&#252;fen da&#223; eine gewisse Connection durchgereicht wurde
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#473c5f" DESTINATION="ID_1508383680" ENDARROW="Default" ENDINCLINATION="210;13;" ID="Arrow_ID_167679696" STARTARROW="None" STARTINCLINATION="558;-28;"/>
<icon BUILTIN="yes"/>
</node>
<node COLOR="#5b280f" CREATED="1685988037609" ID="ID_1118666398" MODIFIED="1686009850660" TEXT="nun stets eager alle m&#xf6;glichen Duplikate (pro ModelPort) generieren">
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#338800" CREATED="1686009860309" ID="ID_1088673306" MODIFIED="1686581118894" TEXT="Generierung via Mock-ExitNodes">
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1686009877359" ID="ID_224370768" MODIFIED="1686450513497" TEXT="bisheriger Zugang via MockJobTicket f&#xe4;llt praktisch weg">
<icon BUILTIN="smiley-angry"/>
</node>
<node COLOR="#338800" CREATED="1686009918647" ID="ID_1552363345" MODIFIED="1686151106836" TEXT="Spec nun in Fake-ExitNode(s) &#xfc;bersetzen">
<linktarget COLOR="#599eb9" DESTINATION="ID_1552363345" ENDARROW="Default" ENDINCLINATION="623;43;" ID="Arrow_ID_940031570" SOURCE="ID_929102409" STARTARROW="None" STARTINCLINATION="738;-108;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1686092906718" HGAP="35" ID="ID_515771" MODIFIED="1686151102329" TEXT="NodeGraphAttachment_test" VSHIFT="-3">
<linktarget COLOR="#5aec6d" DESTINATION="ID_515771" ENDARROW="Default" ENDINCLINATION="1;286;" ID="Arrow_ID_1994759368" SOURCE="ID_31746915" STARTARROW="None" STARTINCLINATION="880;-201;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1686011373412" ID="ID_1341039933" MODIFIED="1686450479521" TEXT="Erzeugung l&#xe4;uft nun &#xfc;ber den realen JobTicket-ctor">
<icon BUILTIN="messagebox_warning"/>
<node COLOR="#435e98" CREATED="1686090517445" ID="ID_7221274" MODIFIED="1686450469474" TEXT="zum Gl&#xfc;ck bleibt die eigentliche Logik strukturell gleich">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1686090545569" ID="ID_1454267269" MODIFIED="1686270818455" TEXT="nun werden eben geFakete Exit-Nodes intern gehalten">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1686270785030" ID="ID_888586974" MODIFIED="1686270864625" TEXT="sp&#xe4;ter werden Exit-Nodes wohl ins low-level-Model wandern">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1686270836231" ID="ID_1399765030" MODIFIED="1686450475966" TEXT="herausfinden wie der realte JobTicket-ctor sinnvoll funktionieren kann">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1686450483193" ID="ID_668106612" MODIFIED="1686450642546" TEXT="er bekommt eine ExitNode">
<arrowlink COLOR="#5dc473" DESTINATION="ID_1172741628" ENDARROW="Default" ENDINCLINATION="1479;0;" ID="Arrow_ID_1986389145" STARTARROW="None" STARTINCLINATION="1111;113;"/>
</node>
<node COLOR="#435e98" CREATED="1686450490722" ID="ID_471950405" MODIFIED="1686450642546" TEXT="plus ein Handle auf einen custom-Allocator">
<arrowlink COLOR="#5fcb3f" DESTINATION="ID_785034065" ENDARROW="Default" ENDINCLINATION="62;-466;" ID="Arrow_ID_67103593" STARTARROW="None" STARTINCLINATION="131;9;"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1686263939639" ID="ID_1524676047" MODIFIED="1686270573171" STYLE="fork" TEXT="Problem: Enscheidung &#xfc;ber JobFunctor noch nicht m&#xf6;glich">
<linktarget COLOR="#535ca3" DESTINATION="ID_1524676047" ENDARROW="Default" ENDINCLINATION="321;15;" ID="Arrow_ID_176648571" SOURCE="ID_116606381" STARTARROW="None" STARTINCLINATION="-298;0;"/>
<font NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="messagebox_warning"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1686263988480" ID="ID_410782667" MODIFIED="1686270571977" TEXT="sp&#xe4;ter wird das von der tats&#xe4;chlichen ProcNode abh&#xe4;ngen">
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1686264027146" ID="ID_517145334" MODIFIED="1686270571977" TEXT="die ganze Infrastruktur ist ungekl&#xe4;rt">
<icon BUILTIN="hourglass"/>
</node>
<node COLOR="#338800" CREATED="1686264084220" ID="ID_584564107" MODIFIED="1686270586163" TEXT="f&#xfc;r Test: DummyJob-Functor injizieren">
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1686264107951" ID="ID_1608571844" MODIFIED="1686270581791" TEXT="problematisch da es kein Testcode ist">
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#5b280f" CREATED="1686264869561" ID="ID_195925154" MODIFIED="1686270571977" TEXT="Dependency-Injection + Mock nutzen">
<icon BUILTIN="button_cancel"/>
<node CREATED="1686264885982" ID="ID_1039850436" MODIFIED="1686270571978" TEXT="dann k&#xf6;nnte man test::DummyJob injizieren">
<icon BUILTIN="idea"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1686264912495" ID="ID_1612660724" MODIFIED="1686270571978" TEXT="NEIN! das wird irre komplex mit den lokalen Scopes">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ich will f&#252;r den ganzen Mock-Support eine L&#246;sung, die &#8222;einfach funktioniert&#8220; &#8212; sofern man mit einer Instanz von MockSegmentation bzw. MockDispatcher arbeitet (und sonst nichts beeinflu&#223;t)
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1686265008565" ID="ID_281343895" MODIFIED="1686270571978" TEXT="vorl&#xe4;ufig....">
<icon BUILTIN="idea"/>
<node COLOR="#338800" CREATED="1686265022475" ID="ID_462302958" MODIFIED="1686270632352" TEXT="nullptr als Fallback (f&#xfc;r einfache Tests)">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1686265038081" ID="ID_889617435" MODIFIED="1686270657046" TEXT="(optional) explizit einen JobFunctor-Pointer in die ExitNode legen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...denn das entspricht noch am Meisten dem sp&#228;ter mal erwarteten Ablauf
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1686270634650" ID="ID_1375749539" MODIFIED="1686270658949" TEXT="falls nicht definiert: JobTicket::NOP zur&#xfc;ckliefern">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#bfe9e4" COLOR="#338800" CREATED="1686498037899" ID="ID_1339088600" MODIFIED="1686498073888" TEXT="ExitNodes sind vorerst ein Stub und eine Facade">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1686090622242" ID="ID_671795357" MODIFIED="1686581104497" TEXT="MockSupport_test l&#xe4;uft weiterhin ohne jedwede Anpassung">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1686526128094" FOLDED="true" ID="ID_1870050910" MODIFIED="1686526191459" TEXT="isnil / isValid spricht an">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1686526140963" ID="ID_1797024393" MODIFIED="1686526167616" TEXT="default-Konstruierte ExitNode gilt nun als &quot;empty()&quot;"/>
<node CREATED="1686526168453" ID="ID_705562300" MODIFIED="1686526178995" TEXT="liegt an der Hash-ID 0"/>
<node CREATED="1686526179457" ID="ID_118789153" MODIFIED="1686526189272" TEXT="verwende stattdessen eine zuf&#xe4;llige Hash-ID"/>
</node>
<node COLOR="#435e98" CREATED="1686526117906" FOLDED="true" ID="ID_1738830063" MODIFIED="1686581096000" TEXT="verify_MockPrerequisites scheitert">
<icon BUILTIN="broken-line"/>
<node CREATED="1686526201442" ID="ID_1473295586" MODIFIED="1686526249802" TEXT="Bei Traversierung werden weniger Nodes gefunden als erwartet">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      <font face="Monospaced" color="#ae2828">FAIL___expectation___________ </font>
    </p>
    <p>
      <font face="Monospaced" color="#ae2828">expect:11-22-33-44-55 </font>
    </p>
    <p>
      <font face="Monospaced" color="#ae2828">actual:11-22-44 </font>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
<node CREATED="1686526266481" ID="ID_575739692" MODIFIED="1686581088814" TEXT="Debugger">
<icon BUILTIN="info"/>
<node CREATED="1686526690273" ID="ID_1760055838" MODIFIED="1686526698902" TEXT="Exit-Node-Struktur">
<node CREATED="1686526700791" ID="ID_687828548" MODIFIED="1686526703589" TEXT="sieht korrekt aus"/>
<node CREATED="1686526704367" ID="ID_1777144113" MODIFIED="1686526705524" TEXT="11">
<node CREATED="1686526711974" ID="ID_1256699551" MODIFIED="1686526713815" TEXT="33">
<node CREATED="1686526739721" ID="ID_318993671" MODIFIED="1686526742466" TEXT="55"/>
<node CREATED="1686526743570" ID="ID_1686347230" MODIFIED="1686526745125" TEXT="44"/>
</node>
<node CREATED="1686526714413" ID="ID_1736681420" MODIFIED="1686526715617" TEXT="22"/>
</node>
</node>
<node CREATED="1686526779381" ID="ID_1055145080" MODIFIED="1686526787176" TEXT="erzeugtes JobTicket">
<node CREATED="1686526788836" ID="ID_1867309369" MODIFIED="1686526803477" TEXT="11">
<node CREATED="1686526825312" ID="ID_1465787537" MODIFIED="1686526827050" TEXT="22"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1686526858914" ID="ID_1285276079" MODIFIED="1686526868568" TEXT="44">
<icon BUILTIN="broken-line"/>
</node>
</node>
</node>
<node CREATED="1686527041368" ID="ID_231787310" MODIFIED="1686527060995" TEXT="Beobachtung JobTIcket-Konstruktion">
<node CREATED="1686527952648" ID="ID_859476082" MODIFIED="1686527959754" TEXT="ctor-11">
<node CREATED="1686527960704" ID="ID_420937374" MODIFIED="1686527964378" TEXT="ctor-33">
<node CREATED="1686527965587" ID="ID_1147905298" MODIFIED="1686527971634" TEXT="ctor-55"/>
<node CREATED="1686527972594" ID="ID_890744074" MODIFIED="1686527987032" TEXT="Alloc[0] = 55"/>
<node CREATED="1686527988548" ID="ID_794827201" MODIFIED="1686527992242" TEXT="ctor-44"/>
</node>
<node CREATED="1686528212174" ID="ID_150383162" MODIFIED="1686528265745" TEXT="Alloc[0] = 44"/>
<node CREATED="1686528272902" ID="ID_562111175" MODIFIED="1686528281267" TEXT="Alloc[1] = 55"/>
<node CREATED="1686528289844" ID="ID_988688103" MODIFIED="1686528296482" TEXT="Alloc[2] = 33"/>
<node CREATED="1686528199854" ID="ID_688028990" MODIFIED="1686528207066" TEXT="ctor-22"/>
<node CREATED="1686528656483" ID="ID_581987844" MODIFIED="1686528666125" TEXT="&#x2934; Prereq"/>
<node CREATED="1686528667872" ID="ID_440026787" MODIFIED="1686528690608" TEXT="Aloc[0] = 22"/>
<node CREATED="1686528692393" ID="ID_1640878652" MODIFIED="1686528707232" TEXT="Aloc[1] = 44"/>
<node CREATED="1686528708348" ID="ID_915808925" MODIFIED="1686528741427" TEXT="Aloc[2] = 55"/>
<node CREATED="1686528742172" ID="ID_687459608" MODIFIED="1686528758897" TEXT="Aloc[3] = 33"/>
</node>
<node CREATED="1686529184786" ID="ID_388833565" MODIFIED="1686529206834" TEXT="&#x2934; gen Tickets"/>
<node CREATED="1686529209393" ID="ID_1308030983" MODIFIED="1686529318776" TEXT="Aloc[0] = 22"/>
<node CREATED="1686529209393" ID="ID_1617682174" MODIFIED="1686529303409" TEXT="Aloc[1] = 44"/>
<node CREATED="1686529209393" ID="ID_1042069745" MODIFIED="1686529290114" TEXT="Aloc[2] = 55"/>
<node CREATED="1686529209393" ID="ID_362110768" MODIFIED="1686529263764" TEXT="Aloc[3] = 33"/>
<node CREATED="1686529209393" ID="ID_907463462" MODIFIED="1686529249695" TEXT="Aloc[4] = 11">
<node CREATED="1686529425994" ID="ID_1754235261" MODIFIED="1686529433095" TEXT="prerequisites">
<node CREATED="1686529435825" ID="ID_1732242371" MODIFIED="1686529437407" TEXT="22">
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1686529439234" ID="ID_1861155393" MODIFIED="1686529451093" TEXT="44">
<icon BUILTIN="broken-line"/>
</node>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1686532456238" FOLDED="true" ID="ID_1351515424" MODIFIED="1686581083270" TEXT="Beobachtung nebenbei: R&#xfc;ckgabewert Allocator ist broken">
<icon BUILTIN="broken-line"/>
<node CREATED="1686532503200" ID="ID_1425175756" MODIFIED="1686532512938" TEXT="emplace_front gibt front() zur&#xfc;ck">
<node CREATED="1686532530564" ID="ID_1923007500" MODIFIED="1686532543233" TEXT="das ist aber zu dem Zeitpunkt schon ein anderes (sub-Ticket)"/>
<node CREATED="1686532543938" ID="ID_1286140342" MODIFIED="1686532568837" TEXT="da die re-entrant-Calls auch davorgeh&#xe4;ngt haben"/>
</node>
<node CREATED="1686532570287" ID="ID_1247471780" MODIFIED="1686532586636" TEXT="aktuelle Impl gibt back() zur&#xfc;ck">
<node CREATED="1686532587893" ID="ID_270597249" MODIFIED="1686532627829" TEXT="das ist tats&#xe4;chlich fehlerhaft programmiert">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...urspr&#252;nglich hatte ich n&#228;mlich per emplace_back() alloziert....
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1686532629023" ID="ID_1619507836" MODIFIED="1686532652164" TEXT="rein zuf&#xe4;llig funktioniert das aber beim ersten top-Level Ticket korrekt"/>
<node CREATED="1686532652723" ID="ID_1062601983" MODIFIED="1686532666205" TEXT="sp&#xe4;ter wird aber immer weiterhin das erste Ticket zur&#xfc;ckgegeben"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1686536440412" ID="ID_516930810" MODIFIED="1686536567177" TEXT="das erkl&#xe4;rt auch das beobachtete Fehlverhalten">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      an der Stelle, wo die Referenz auf Objekt-33 zur&#252;ckgeliefert werden sollte, kommt tats&#228;chlich eine Referenz auf das zuletzt rekursiv erzeugte Objekt-44&#160;&#160;zur&#252;ck, und wird daher in die Liste der Prerequisites eingef&#252;gt.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1686532668361" ID="ID_1079178057" MODIFIED="1686532679552" TEXT="Fazit: catch-22">
<icon BUILTIN="clanbomber"/>
</node>
</node>
<node COLOR="#338800" CREATED="1686536573402" ID="ID_354790762" MODIFIED="1686581073396" TEXT="Allocator mu&#xdf; Allocation von Konstruktion trennen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1686536609347" ID="ID_438107181" MODIFIED="1686581063347" TEXT="dies erst mal in dem existierenden quick-n-dirty-Setup realisieren">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1686536656584" ID="ID_1825504582" MODIFIED="1686581053009" TEXT="mu&#xdf; dazu einen InPlace-Buffer o.&#xe4;. in eine std::list legen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1686536684920" ID="ID_352953262" MODIFIED="1686581050434" TEXT="Holder-Buffer direkt selber implementieren">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      um den Lifecycle komplett kontrollieren zu k&#246;nnen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1686537621602" ID="ID_1483306813" MODIFIED="1686580970854" TEXT="Problem: Zwischen-Zust&#xe4;nde und der (automatische) Destruktor">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1686537703805" ID="ID_1688276605" MODIFIED="1686537712942" TEXT="wenn Konstruktion scheitert"/>
<node CREATED="1686537713502" ID="ID_122484633" MODIFIED="1686537733410" TEXT="aber rekursive Sub-Objekte erfolgreich erstellt wurden"/>
<node CREATED="1686537734091" ID="ID_1834409358" MODIFIED="1686537747765" TEXT="dann ist ein leerer Buffer irgendwo in der MItte"/>
<node COLOR="#5b280f" CREATED="1686580869575" ID="ID_782424657" MODIFIED="1686580966467" TEXT="und ein automatischer dtor w&#xfc;rde dort versehentlich aufgerufen">
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1686580911763" ID="ID_247522410" MODIFIED="1686581048259" TEXT="Clean-up vom umschlie&#xdf;enden Allocator aus steuern">
<icon BUILTIN="idea"/>
<node CREATED="1686580931500" ID="ID_1279157799" MODIFIED="1686581046140" TEXT="einzige Alternative w&#xe4;re ein &#xbb;canary&#xab; - Marker in der Allokation selber">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1686580978374" ID="ID_492593822" MODIFIED="1686581036638" TEXT="mu&#xdf; also eine Exception aus dem ctor fangen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1686580988763" ID="ID_257766330" MODIFIED="1686581035627" TEXT="und dann sofort die Allocation aus der Memory-Management-Datenstruktur entfernen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1686581013998" ID="ID_758804722" MODIFIED="1686581033020" TEXT="damit ist auch klar: nur std::list ist geeignet (oder eine eigene Implementierung)">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1686581098652" ID="ID_1812446016" MODIFIED="1686581102492" TEXT="Test GR&#xdc;N">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1685988083711" ID="ID_1499657819" MODIFIED="1686581324371" TEXT="Thema ModelPort-Differenzierung wird vorerst ausgeklammert">
<arrowlink COLOR="#811354" DESTINATION="ID_1973560674" ENDARROW="Default" ENDINCLINATION="-1463;83;" ID="Arrow_ID_345386605" STARTARROW="None" STARTINCLINATION="-217;-8;"/>
<icon BUILTIN="hourglass"/>
</node>
</node>
<node COLOR="#338800" CREATED="1685989418199" ID="ID_1214082390" MODIFIED="1686524477993" TEXT="Mock-Repr&#xe4;sentation f&#xfc;r Exit-Node bereitstellen">
<icon BUILTIN="button_ok"/>
<node CREATED="1685989458554" ID="ID_577122835" MODIFIED="1685989469824" TEXT="diese kann sich im Lauf der Zeit noch &#xe4;ndern">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1685989471022" ID="ID_1045668645" MODIFIED="1686524466583" TEXT="erst einmal gen&#xfc;gt es, da&#xdf; jedes gemockte Segment da einen Eintrag hat">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...auf <i>irgend ein</i>&#160;Objekt...
    </p>
    <p>
      Allerdings &#8212; da die Segmente vermutlich nicht gemockt werden (sondern nur die Segmentation), mu&#223; ich mich da schon um eine Allokation f&#252;r ein Dummy-Objekt k&#252;mmern
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1686524492032" ID="ID_1332592177" MODIFIED="1686524561638" TEXT="ExitNode kann vorl&#xe4;ufig einfach so konstruiert werden">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...da aktuell noch keine Verbindung zum Render-Nodes-Network besteht...
    </p>
    <p>
      (das hei&#223;t, das Problem mit den Mocks verschiebe ich in die Zukunft)
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1685988152809" FOLDED="true" ID="ID_255556137" MODIFIED="1686604197744" TEXT="API erweitern : portNum">
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1685990098487" ID="ID_829030768" MODIFIED="1686619889283" TEXT="grunds&#xe4;tzlich: YAGNI">
<linktarget COLOR="#67a7cd" DESTINATION="ID_829030768" ENDARROW="Default" ENDINCLINATION="22;176;" ID="Arrow_ID_1621721947" SOURCE="ID_1835927835" STARTARROW="None" STARTINCLINATION="-485;0;"/>
<icon BUILTIN="yes"/>
<node CREATED="1685990112190" ID="ID_463883334" MODIFIED="1685990125693" TEXT="blo&#xdf; nicht verr&#xfc;ckt machen mit dem konkreten Model"/>
<node CREATED="1685990126424" ID="ID_933157694" MODIFIED="1685990149034" TEXT="sehr wahrscheinlich werden die Mocks niemals ein differenziertes Model bespielen"/>
</node>
<node COLOR="#338800" CREATED="1685990173459" ID="ID_920554071" MODIFIED="1686498551489" TEXT="im Segment einen indizierten Zugriff vorsehen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1686000316132" FOLDED="true" ID="ID_826544806" LINK="#ID_1237481687" MODIFIED="1686498909689" TEXT="Kopplung per &#xbb;NodeGraphAttachment&#xab;">
<linktarget COLOR="#656486" DESTINATION="ID_826544806" ENDARROW="Default" ENDINCLINATION="469;-18;" ID="Arrow_ID_1372033454" SOURCE="ID_551644524" STARTARROW="None" STARTINCLINATION="487;30;"/>
<linktarget COLOR="#39ac70" DESTINATION="ID_826544806" ENDARROW="Default" ENDINCLINATION="-1208;77;" ID="Arrow_ID_1329123820" SOURCE="ID_862442414" STARTARROW="None" STARTINCLINATION="-609;-29;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1686008339600" HGAP="28" ID="ID_181839329" MODIFIED="1686092787399" TEXT="Dummy-Implementierung anlegen" VSHIFT="13">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1686008354738" ID="ID_1875142825" MODIFIED="1686092748594" TEXT="ExitNode : Platzhalter">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1686008421806" ID="ID_14455291" MODIFIED="1686092744552" TEXT="ExitNode::NIL">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1686008437892" HGAP="22" ID="ID_665376680" MODIFIED="1686092763453" TEXT="weitere rekursiv f&#xfc;r die &#xbb;Prerequisites&#xab;" VSHIFT="-11">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1686090677045" HGAP="17" ID="ID_1835927835" MODIFIED="1686090835594" TEXT="f&#xfc;r sp&#xe4;ter: fake-ExitNode ohne reales Modell dahinter erm&#xf6;glichen">
<arrowlink COLOR="#67a7cd" DESTINATION="ID_829030768" ENDARROW="Default" ENDINCLINATION="22;176;" ID="Arrow_ID_1621721947" STARTARROW="None" STARTINCLINATION="-485;0;"/>
<icon BUILTIN="hourglass"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1686009434197" ID="ID_1874481686" MODIFIED="1686498522807" TEXT="mu&#xdf; nun Segment / JobTicket-Erzeugung umstellen">
<icon BUILTIN="messagebox_warning"/>
<node COLOR="#338800" CREATED="1686088955494" ID="ID_683990266" MODIFIED="1686263708546" TEXT="Segment bekommt nun ein NodeGraphAttachment">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1686089017579" ID="ID_178364599" MODIFIED="1686263704530" TEXT="dieses bietet Array-Access auf die ExitNodes">
<icon BUILTIN="button_ok"/>
<node CREATED="1686089092489" ID="ID_579545168" MODIFIED="1686089092489" TEXT="...in ModelPort-Reihenfolge"/>
<node COLOR="#338800" CREATED="1686089096760" ID="ID_306119444" MODIFIED="1686263534817" TEXT="fehlertolerant &#x2016; ersatzweise ExitNode::NIL">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1686089194310" ID="ID_1557640858" MODIFIED="1686263706221" TEXT="ExitNode bietet Pipeline identity hash">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1686089236690" ID="ID_1356337031" MODIFIED="1686263707397" TEXT="und Iteration &#xfc;ber prerequisite - ExitNodes">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1686263894892" ID="ID_116606381" MODIFIED="1686270564820" TEXT="mu&#xdf; nun JobFunctor festlegen">
<arrowlink COLOR="#535ca3" DESTINATION="ID_1524676047" ENDARROW="Default" ENDINCLINATION="321;15;" ID="Arrow_ID_176648571" STARTARROW="None" STARTINCLINATION="-298;0;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1686089280610" ID="ID_331300527" MODIFIED="1686450653241" TEXT="Segment alloziert on-demand neues JobTicket">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1686089580864" ID="ID_1949359516" MODIFIED="1686270557984" TEXT="Zugriff indiziert nach NodePort-Nr">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1686089592469" ID="ID_1688607797" MODIFIED="1686270559655" TEXT="Storage mu&#xdf; stabil + erweiterungsf&#xe4;hig sein">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      und das hei&#223;t im Klartext: <font face="Monospaced" color="#262a9c">std::deque</font>&#160;&#8212; sp&#228;ter kombiniert mit einem custom-Allocator, der auf den AllocationCluster delegiert
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1686364650603" FOLDED="true" ID="ID_1148029855" MODIFIED="1686450295671" TEXT="Allozieren der prerequisite-JobTickets">
<linktarget COLOR="#366caa" DESTINATION="ID_1148029855" ENDARROW="Default" ENDINCLINATION="599;43;" ID="Arrow_ID_433931878" SOURCE="ID_812723541" STARTARROW="None" STARTINCLINATION="205;12;"/>
<icon BUILTIN="clanbomber"/>
<node COLOR="#435e98" CREATED="1686365033392" HGAP="42" ID="ID_73811690" MODIFIED="1686450276388" TEXT="zwei M&#xf6;glichkeiten?" VSHIFT="-2">
<icon BUILTIN="help"/>
<node COLOR="#144c4e" CREATED="1686365053474" ID="ID_1746219617" MODIFIED="1686497957768" TEXT="wie das Haupt-Ticket im Segment">
<icon BUILTIN="forward"/>
<node CREATED="1686413111863" ID="ID_1744350817" MODIFIED="1686413361556" TEXT="pa&#xdf;t so gar nicht in das sch&#xf6;ne einfache Schema">
<icon BUILTIN="smiley-angry"/>
</node>
<node COLOR="#435e98" CREATED="1686413174454" ID="ID_987285372" MODIFIED="1686497928488" TEXT="erfodert Fallback-L&#xf6;sung f&#xfc;r Unit-Tests">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1686413193278" ID="ID_350369436" MODIFIED="1686413373537" TEXT="ist aber kongruent mit der l&#xe4;ngerfristigen L&#xf6;sung">
<linktarget COLOR="#4f7fb7" DESTINATION="ID_350369436" ENDARROW="Default" ENDINCLINATION="-102;6;" ID="Arrow_ID_1687809337" SOURCE="ID_585786945" STARTARROW="None" STARTINCLINATION="-151;0;"/>
<icon BUILTIN="forward"/>
<node COLOR="#338800" CREATED="1686418348105" ID="ID_785034065" MODIFIED="1686450634782" TEXT="also gleich einen Allocator durchgeben">
<linktarget COLOR="#5fcb3f" DESTINATION="ID_785034065" ENDARROW="Default" ENDINCLINATION="62;-466;" ID="Arrow_ID_67103593" SOURCE="ID_471950405" STARTARROW="None" STARTINCLINATION="131;9;"/>
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1686418360062" FOLDED="true" ID="ID_39870309" MODIFIED="1686450266086" TEXT="AllocationCluster nutzbar?">
<icon BUILTIN="help"/>
<node CREATED="1686418368407" ID="ID_1859944923" MODIFIED="1686418378925" TEXT="naja.... OK">
<icon BUILTIN="smiley-oh"/>
</node>
<node CREATED="1686418380477" ID="ID_1966673617" MODIFIED="1686418388000" TEXT="es gibt einen Sch&#xf6;nwetter-Test"/>
<node CREATED="1686418388584" ID="ID_1037635245" MODIFIED="1686418400673" TEXT="ich sehe gleich X concurrency-Probleme"/>
<node COLOR="#435e98" CREATED="1686418401455" ID="ID_1403408841" MODIFIED="1686418448984" TEXT="und MemoryManager verwendete einen Vector">
<icon BUILTIN="broken-line"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1686418421807" ID="ID_368896849" MODIFIED="1686418436824" TEXT="wenn der reloziert, sind alle Addressen invalid">
<icon BUILTIN="clanbomber"/>
</node>
<node COLOR="#338800" CREATED="1686418437579" ID="ID_1800637749" MODIFIED="1686418442864" TEXT="umgestellt auf deque">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1686441550274" ID="ID_1919931806" MODIFIED="1686441600880" TEXT="erst mal zur&#xfc;ckstellen (und auf C++20 warten)">
<arrowlink COLOR="#638498" DESTINATION="ID_547425739" ENDARROW="Default" ENDINCLINATION="-17;-68;" ID="Arrow_ID_1341361393" STARTARROW="None" STARTINCLINATION="115;7;"/>
<icon BUILTIN="hourglass"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1686435337023" ID="ID_625457882" MODIFIED="1686449865371" TEXT="dann doch besser erst mal nur ein generisches &#xbb;Allo&#xab; concept">
<icon BUILTIN="yes"/>
<node COLOR="#435e98" CREATED="1686436153294" ID="ID_312944305" MODIFIED="1686441163818" TEXT="Problem: generisch oder spezifisch?">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1686436173657" ID="ID_1046876021" MODIFIED="1686436196164" TEXT="generisch &#x2261; kann beliebige Typen konstruieren"/>
<node CREATED="1686436197019" ID="ID_1405705756" MODIFIED="1686436217710" TEXT="spezifisch &#x2261; kann nur JobTicket-Instanzen allozieren"/>
<node CREATED="1686436296914" ID="ID_1997952244" MODIFIED="1686436346538">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      aktuell w&#228;re spezifisch besser &#8212;
    </p>
    <p>
      aber AllocationCluster w&#228;re generisch
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
</node>
<node COLOR="#338800" CREATED="1686436487594" ID="ID_261720071" MODIFIED="1686441533018" TEXT="API-Form">
<icon BUILTIN="yes"/>
<node CREATED="1686436505933" ID="ID_1399093834" MODIFIED="1686436517137" TEXT="wie dr&#xfc;ckt man klar aus, was erwartet wird?"/>
<node CREATED="1686438910086" ID="ID_547425739" MODIFIED="1686441600881" TEXT="l&#xe4;uft auf ein Concept hinaus....">
<linktarget COLOR="#638498" DESTINATION="ID_547425739" ENDARROW="Default" ENDINCLINATION="-17;-68;" ID="Arrow_ID_1341361393" SOURCE="ID_1919931806" STARTARROW="None" STARTINCLINATION="115;7;"/>
<icon BUILTIN="idea"/>
<node CREATED="1686439833069" ID="ID_1579820839" MODIFIED="1686439911617" TEXT="es gibt auch Concepts f&#xfc;r Templates">
<arrowlink COLOR="#415ab4" DESTINATION="ID_197491932" ENDARROW="Default" ENDINCLINATION="-1574;159;" ID="Arrow_ID_1382804093" STARTARROW="None" STARTINCLINATION="-2029;0;"/>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1686439480081" ID="ID_982475231" MODIFIED="1686439504225" TEXT="in den meisten F&#xe4;llen w&#xfc;rde aber die spezifische Form gen&#xfc;gen"/>
<node CREATED="1686439647154" ID="ID_1365242995" MODIFIED="1686439681562" TEXT="der konkrete Allokator w&#xfc;rde dann die spezifische Form erf&#xfc;llen"/>
<node CREATED="1686441227623" ID="ID_481507036" MODIFIED="1686441237721" TEXT="...und darf ansonsten ein komplex gebauter Typ sein"/>
</node>
<node CREATED="1686439686598" ID="ID_1468838708" MODIFIED="1686440085274">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <b>Beschlu&#223;</b>: Allo &#8801; Funktor mit variadischen Argumenten
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#61748b" DESTINATION="ID_414891440" ENDARROW="Default" ENDINCLINATION="-1705;141;" ID="Arrow_ID_1346780792" STARTARROW="None" STARTINCLINATION="-606;-35;"/>
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1686445235596" ID="ID_788695273" MODIFIED="1686445262013" TEXT="im Hinblick darauf: einface Fake-Impl aus Segment extrahiert">
<icon BUILTIN="button_ok"/>
<node CREATED="1686445301608" ID="ID_354239024" MODIFIED="1686445313956" TEXT="lib/allocator-handle.hpp">
<icon BUILTIN="info"/>
</node>
<node CREATED="1686445265684" ID="ID_1519805948" MODIFIED="1686445272535" TEXT="verpackt letztlich nur eine deque"/>
<node CREATED="1686445273243" ID="ID_872771317" MODIFIED="1686445286478" TEXT="aber hat schon eine Signatur gem&#xe4;&#xdf; Allo"/>
<node CREATED="1686445287457" ID="ID_1326242669" MODIFIED="1686445296363" TEXT="und ist getemplated auf den Ergebnistyp"/>
</node>
</node>
<node COLOR="#338800" CREATED="1686441276178" ID="ID_1870780666" MODIFIED="1686449834405" TEXT="JobTicket-ctor bekommt nun verbindlich eine Allo-Ref">
<icon BUILTIN="button_ok"/>
<node CREATED="1686441465496" ID="ID_749128062" MODIFIED="1686441521583" TEXT="sinnvoll, da es nun auch stets auf bestehende ExitNode angewiesen ist">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1686441482318" ID="ID_872674673" MODIFIED="1686449822579" TEXT="MockJobTicket bekommt damit den neuen Sinn, dies alles kompakt f&#xfc;r Tests zu verpacken">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1686449851892" ID="ID_96252432" MODIFIED="1686450255979" TEXT="der Allocator mu&#xdf; re-Entrance-f&#xe4;hig sein">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      exakt dieses Problem hatte ich schon vor einigen Wochen, bei der ersten (damals Mock)-Implementierung: da die Prerequisites private sind, gibt es keine andere L&#246;sung als sie aus dem &#252;bergeordneten ctor heraus zu konstruieren, und damit re-entrant aus dem JobTicket-ctor ein weiteres JobTicket zu allozieren. Vector und Deque k&#246;nnen das nicht hanhaben, und es kommt zu einem gef&#228;hrlichen Aliasing, bei dem das geschachtelte Ticket an der gleichen Stelle im Speicher steht wie das Haupt-Ticket, und damit dessen ctor-Aufruf korrumpiert
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#84a8bc" DESTINATION="ID_1013476722" ENDARROW="Default" ENDINCLINATION="-1306;143;" ID="Arrow_ID_1604056061" STARTARROW="None" STARTINCLINATION="502;-1667;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
<node COLOR="#5b280f" CREATED="1686365062469" ID="ID_1687391140" MODIFIED="1686497970752" TEXT="direkt in der Prerequisite-Struktur im Haupt-Ticket">
<icon BUILTIN="button_cancel"/>
<node CREATED="1686413048626" ID="ID_327677209" MODIFIED="1686413356388" TEXT="w&#xe4;re zun&#xe4;chst billig zu haben">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1686413060692" ID="ID_106604854" MODIFIED="1686413352163" TEXT="ist aber letztlich eine Heap-Allokation">
<icon BUILTIN="stop-sign"/>
</node>
<node CREATED="1686413069852" ID="ID_585786945" MODIFIED="1686413380860" TEXT="und m&#xfc;&#xdf;te sp&#xe4;ter auf einen explizit gegebenen Allocator umgestellt werden">
<arrowlink COLOR="#4f7fb7" DESTINATION="ID_350369436" ENDARROW="Default" ENDINCLINATION="-102;6;" ID="Arrow_ID_1687809337" STARTARROW="None" STARTINCLINATION="-151;0;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1686186370164" ID="ID_1270139229" MODIFIED="1686498520200" TEXT="Problem: Klon-Segmente wegen Split-Splice">
<icon BUILTIN="bell"/>
<node CREATED="1686186392505" ID="ID_581141216" MODIFIED="1686186413737" TEXT="der Algo k&#xfc;rzt Segmente oder teilt sie auf"/>
<node CREATED="1686186419019" ID="ID_1101347188" MODIFIED="1686186435605" TEXT="daf&#xfc;r wird ein Segment kopiert und &#xbb;umgeschrieben&#xab;"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1686186436835" ID="ID_909527462" MODIFIED="1686186454445" TEXT="das widerspricht der Referenz-Semantik f&#xfc;r ExitNodes">
<icon BUILTIN="broken-line"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1686186457031" ID="ID_1533110549" MODIFIED="1686186472687" TEXT="mu&#xdf; ungekl&#xe4;rt bleiben bis MemoryManagement gekl&#xe4;rt ist">
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1686089743535" FOLDED="true" ID="ID_1592596965" MODIFIED="1686498536536" TEXT="JobTicket-Erzeugung (vorl&#xe4;ufig) endg&#xfc;litig implementieren">
<icon BUILTIN="button_ok"/>
<node COLOR="#5b280f" CREATED="1686089827509" ID="ID_213320277" MODIFIED="1686270676731" TEXT="Spec-Erzeugung in das Segment verlagern">
<icon BUILTIN="button_cancel"/>
<node COLOR="#5b280f" CREATED="1686270962172" ID="ID_883202873" MODIFIED="1686270983572" TEXT="hier nun das Spec-Tupel rekursiv aufbauen">
<icon BUILTIN="button_cancel"/>
</node>
<node BACKGROUND_COLOR="#e0b7aa" COLOR="#690f14" CREATED="1686270985068" ID="ID_116441332" MODIFIED="1686271310159" STYLE="fork" TEXT="unm&#xf6;glich: rekursive Typ-Inferenz">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      damit sitz ich in der Falle...
    </p>
    <ul>
      <li>
        da ich rekursiv die Vorl&#228;ufer-Tickets allozieren mu&#223;, ist ein &#955; unabdingbar
      </li>
      <li>
        aber damit kann ich den Typ des Transform-Iterators nicht mehr explizit anschreiben
      </li>
      <li>
        anderseits kann ich aus dem gleichen Grund den Typ des Spec-Tuples nicht explizit anschreiben
      </li>
    </ul>
  </body>
</html></richcontent>
<arrowlink COLOR="#bf3856" DESTINATION="ID_1696777369" ENDARROW="Default" ENDINCLINATION="47;-15;" ID="Arrow_ID_1288742892" STARTARROW="None" STARTINCLINATION="-91;7;"/>
<icon BUILTIN="broken-line"/>
</node>
</node>
<node COLOR="#338800" CREATED="1686270678269" ID="ID_1696777369" MODIFIED="1686361087711" TEXT="Spec-Erzeugung durch ExitNode ersetzen">
<linktarget COLOR="#bf3856" DESTINATION="ID_1696777369" ENDARROW="Default" ENDINCLINATION="47;-15;" ID="Arrow_ID_1288742892" SOURCE="ID_116441332" STARTARROW="None" STARTINCLINATION="-91;7;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1686270700679" ID="ID_1172741628" MODIFIED="1686361068947" TEXT="JobTicket-ctor akzeptiert ExitNode const&amp;">
<linktarget COLOR="#5dc473" DESTINATION="ID_1172741628" ENDARROW="Default" ENDINCLINATION="1479;0;" ID="Arrow_ID_1986389145" SOURCE="ID_668106612" STARTARROW="None" STARTINCLINATION="1111;113;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1686270722814" ID="ID_1222081090" MODIFIED="1686361081278" TEXT="bisherige Traversierungs-Logik sinngem&#xe4;&#xdf; hier &#xfc;bersetzen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1686271328534" ID="ID_601604800" MODIFIED="1686271349144" TEXT="MockSegmentation baut jetzt ohnehin bereits eine ExitNode-Struktur">
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1686089789689" HGAP="31" ID="ID_1968297332" MODIFIED="1686498466909" STYLE="bubble" TEXT="Aufruf: bekommt ExitNode" VSHIFT="12">
<edge COLOR="#4b6f99"/>
<linktarget COLOR="#334242" DESTINATION="ID_1968297332" ENDARROW="Default" ENDINCLINATION="-57;70;" ID="Arrow_ID_1911874934" SOURCE="ID_634741286" STARTARROW="None" STARTINCLINATION="14;65;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1686089934319" ID="ID_1303596509" MODIFIED="1686498432609" STYLE="bubble" TEXT="entnimmt Pipeline-Identity">
<edge COLOR="#4b6f99"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1686089946582" ID="ID_1500234215" MODIFIED="1686498432609" STYLE="bubble" TEXT="entnimmt ExitNode*">
<edge COLOR="#4b6f99"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1686089957609" ID="ID_634741286" MODIFIED="1686498432597" STYLE="bubble" TEXT="on-demand-Mapping &#x27fc; prerequisite-ExitNode(s)">
<edge COLOR="#4b6f99"/>
<arrowlink COLOR="#334242" DESTINATION="ID_1968297332" ENDARROW="Default" ENDINCLINATION="-57;70;" ID="Arrow_ID_1911874934" STARTARROW="None" STARTINCLINATION="14;65;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1686090113552" HGAP="35" ID="ID_1222153026" MODIFIED="1686361148882" TEXT="ExitNode (wie bisher die Spec) an JobTicket-ctor weitergeben" VSHIFT="43">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1686090919949" HGAP="27" ID="ID_929102409" MODIFIED="1686450462296" VSHIFT="10">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      bisherige Mock-L&#246;sung<br />nun darauf aufsetzen
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      nach dem <i>ersten Schreck</i>&#160;<font size="1" color="#70005e">(weil ich es doch grade erst neu programmiert hatte...)</font>&#160;zeigt sich, da&#223; die bisherige Mock-Implementierung bereits sehr gut ist, und strukturell direkt in die endg&#252;ltige Implementierung &#252;bersetzt werden kann; wir machen dann lediglich zweimal eine strukturgleiche rekursive Verarbeitung (GenNode &#10236; ExitNode-Struktur sowie dann ExitNode-Struktur &#10236; JobTicket)
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#599eb9" DESTINATION="ID_1552363345" ENDARROW="Default" ENDINCLINATION="623;43;" ID="Arrow_ID_940031570" STARTARROW="None" STARTINCLINATION="738;-108;"/>
</node>
</node>
<node COLOR="#338800" CREATED="1686498590686" ID="ID_383464116" MODIFIED="1686520395591" TEXT="R&#xfc;ckbau Differenzierung nach Channel">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      urspr&#252;nglich dachte ich, im Ticket w&#252;rde intern noch nach einer Channel-ID (f&#252;r Mehrkanal-Medien) differenziert; die Analyse im Detail ergab jedoch, da&#223; dies stets unter dem Konstrukt &#187;ModelPort&#171; subsummiert werden kann &#8212; viele interne Komplexit&#228;ten fallen damit weg
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1686500288945" ID="ID_1009233034" MODIFIED="1686520383542" TEXT="neue L&#xf6;sung f&#xfc;r empty()">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1686500639546" ID="ID_1295818477" MODIFIED="1686520381909" TEXT="ExitNode::NIL">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#435e98" CREATED="1686500644738" ID="ID_1383857132" MODIFIED="1686520380349" STYLE="fork" TEXT="nopFunctor verwenden">
<icon BUILTIN="idea"/>
<node CREATED="1686520342843" ID="ID_1348881404" MODIFIED="1686520352350" TEXT="aber grunds&#xe4;tzlich nochmal pr&#xfc;fen"/>
<node CREATED="1686520353527" ID="ID_1138778172" MODIFIED="1686520370009" TEXT="es k&#xf6;nnte ja auch der Hash==0 sein"/>
</node>
</node>
<node COLOR="#338800" CREATED="1686500296179" ID="ID_988077733" MODIFIED="1686524305639" TEXT="neue L&#xf6;sung f&#xfc;r Validity self-check">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1686524307537" ID="ID_873423981" MODIFIED="1686524331678" TEXT="rekursiv die Prerequisites pr&#xfc;fen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1686524319479" ID="ID_1164062060" MODIFIED="1686524330865" TEXT="self-check in ExitNode anlegen">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1686092906718" HGAP="35" ID="ID_1605426517" MODIFIED="1686450454254" TEXT="FixtureSegment_test" VSHIFT="-3">
<linktarget COLOR="#5aec6d" DESTINATION="ID_1605426517" ENDARROW="Default" ENDINCLINATION="-104;-6;" ID="Arrow_ID_658388334" SOURCE="ID_31746915" STARTARROW="None" STARTINCLINATION="570;-91;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1686361157528" FOLDED="true" ID="ID_565360581" MODIFIED="1686450400722" TEXT="SEGFAULT">
<icon BUILTIN="broken-line"/>
<node CREATED="1686361493991" ID="ID_423058577" MODIFIED="1686361526825" TEXT="tritt nicht bei jedem Lauf auf &#x27f9; vermutlich dangling pointer"/>
<node CREATED="1686361820600" ID="ID_780766515" MODIFIED="1686361835540">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Testfall: <b>retrieve_JobTicket</b>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
<node CREATED="1686361839323" ID="ID_1748696798" MODIFIED="1686361869554" TEXT="nur ein Segment"/>
<node CREATED="1686361870451" ID="ID_833560905" MODIFIED="1686361907327" TEXT="aber zwei Prerequisites">
<linktarget COLOR="#ed2958" DESTINATION="ID_833560905" ENDARROW="Default" ENDINCLINATION="57;0;" ID="Arrow_ID_1523772194" SOURCE="ID_113479512" STARTARROW="None" STARTINCLINATION="60;-2;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1686361606310" ID="ID_288594511" MODIFIED="1686361716351" TEXT="requirements_ Linked-List is corruped">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      head_ steam::engine::JobTicket::Provision * 0x2525252525252525
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="clanbomber"/>
</node>
<node CREATED="1686361720232" ID="ID_113479512" MODIFIED="1686362543033" TEXT="auff&#xe4;llig: Sement::tickets_ enth&#xe4;lt nur ein Element">
<arrowlink COLOR="#ed2958" DESTINATION="ID_833560905" ENDARROW="Default" ENDINCLINATION="57;0;" ID="Arrow_ID_1523772194" STARTARROW="None" STARTINCLINATION="60;-2;"/>
<icon BUILTIN="idea"/>
<node CREATED="1686362546700" HGAP="31" ID="ID_1149307734" MODIFIED="1686362563929" TEXT="sollten das nicht drei sein??" VSHIFT="2"/>
<node CREATED="1686362575818" ID="ID_193094920" MODIFIED="1686362598693" TEXT="nein: die prereq-JobTickets werden von LinkedElements alloziert">
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1686364368098" ID="ID_1576782710" MODIFIED="1686450397352" TEXT="prereq-JobTickets werden nirgends alloziert/gespeichert">
<icon BUILTIN="broken-line"/>
<node CREATED="1686364436691" ID="ID_462388515" MODIFIED="1686364452584">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <font face="Monospaced">provision.requirements.emplace(</font><font face="Monospaced" color="#e61919">preNode</font><font face="Monospaced">)</font>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1686364460397" ID="ID_956048441" MODIFIED="1686364472840" TEXT="das alloziert eine struct Prerequisite"/>
<node CREATED="1686364475066" ID="ID_353638422" MODIFIED="1686364538445">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      und die nimmt im ctor ein <font face="Monospaced" color="#ef331d"><b>JobTicket const&amp;</b></font>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1686364486502" ID="ID_1943162539" MODIFIED="1686364548847" TEXT="der neue JobTicket-ctor ist nicht explicit &#x27f9; automatische Konversion">
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#435e98" CREATED="1686364557872" ID="ID_812723541" MODIFIED="1686450382137" TEXT="im Prerequisite wird nur ein Pointer gespeichert">
<arrowlink COLOR="#366caa" DESTINATION="ID_1148029855" ENDARROW="Default" ENDINCLINATION="599;43;" ID="Arrow_ID_433931878" STARTARROW="None" STARTINCLINATION="205;12;"/>
<icon BUILTIN="clanbomber"/>
</node>
<node COLOR="#338800" CREATED="1686450309353" ID="ID_1974551952" LINK="#ID_785034065" MODIFIED="1686450332417" TEXT="L&#xf6;sung: Custom-Allocator durchreichen">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1686450436378" ID="ID_751655173" MODIFIED="1686450451503" STYLE="fork" TEXT="l&#xe4;uft... (puh!)">
<icon BUILTIN="ksmiletris"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1686014291202" ID="ID_252150549" MODIFIED="1686604201029" TEXT="Problem: wie kommt man an die portNum?">
<arrowlink COLOR="#fe3f50" DESTINATION="ID_1087682281" ENDARROW="Default" ENDINCLINATION="326;21;" ID="Arrow_ID_676319361" STARTARROW="None" STARTINCLINATION="309;-20;"/>
<icon BUILTIN="help"/>
<node COLOR="#435e98" CREATED="1686017516585" ID="ID_1223330547" MODIFIED="1686617191140" TEXT="brauche &#xdc;bersetzung per Map">
<icon BUILTIN="yes"/>
<node COLOR="#338800" CREATED="1686590082295" ID="ID_1948089026" MODIFIED="1686617179681" TEXT="Dispatcher::resolveModelPort(ModelPort) implementieren">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#5b280f" CREATED="1686017538602" ID="ID_1818653429" MODIFIED="1686604215990" TEXT="pr&#xfc;fen: in der Segmentation implementieren">
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#338800" CREATED="1686604218914" ID="ID_1822598563" MODIFIED="1686617174630" TEXT="besser direkt im Dispatcher implementieren">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...denn das ist nicht wirklich ein Belang der Segmentation (diese arbeitet stets mit den Model-Port-Indices), sondern hat ehr mit dem globalen Mapping auf eine Timeline zu tun &#8212; also etwas, was&#160;&#160;irgendwo in der RenderEnvironmentClosure verborgen liegt, denn wir wollen <i>definitiv nicht ein globales &#187;Timelines&#171;-Array durch die Hintert&#252;r einf&#252;hren.</i>&#160; Das High-Level-Model ist auf oberster Ebene ein Wald, und nicht eine einzige koh&#228;rente Struktur
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1686587745207" ID="ID_125177626" MODIFIED="1686617224688" TEXT="ben&#xf6;tigt wird die &#xdc;bersetzung im Dispatcher / PipeineBuilder">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1686587899493" ID="ID_216367008" MODIFIED="1686617257686" TEXT="MockDispatcher mu&#xdf; zudem Segmentation vorbereiten">
<arrowlink COLOR="#21a5b7" DESTINATION="ID_1788066497" ENDARROW="Default" ENDINCLINATION="320;19;" ID="Arrow_ID_1763115482" STARTARROW="None" STARTINCLINATION="-99;-383;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1686590017562" ID="ID_1378616081" MODIFIED="1686590067746">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      neue Dispatcher-Operation: <font face="Monospaced"><b>size_t resolveModelPort(ModelPort)</b></font>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1686587381975" ID="ID_1778082418" MODIFIED="1686696074027" TEXT="mu&#xdf; aber per Dispatcher oder RenderEnvironmentClosure vermittelt werden">
<arrowlink COLOR="#b35d7b" DESTINATION="ID_1061886265" ENDARROW="Default" ENDINCLINATION="-1354;59;" ID="Arrow_ID_1911280206" STARTARROW="None" STARTINCLINATION="-1217;-45;"/>
<icon BUILTIN="yes"/>
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1686620377983" ID="ID_1217570779" MODIFIED="1686620392713" TEXT="JobTicket ist nun effektiv immutable nach Konstruktion">
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#338800" CREATED="1686182242381" ID="ID_31746915" MODIFIED="1686587864527" TEXT="Unit-Tests">
<arrowlink COLOR="#5aec6d" DESTINATION="ID_515771" ENDARROW="Default" ENDINCLINATION="1;286;" ID="Arrow_ID_1994759368" STARTARROW="None" STARTINCLINATION="880;-201;"/>
<arrowlink COLOR="#5aec6d" DESTINATION="ID_1605426517" ENDARROW="Default" ENDINCLINATION="-104;-6;" ID="Arrow_ID_658388334" STARTARROW="None" STARTINCLINATION="570;-91;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1681742836996" FOLDED="true" ID="ID_1224963303" MODIFIED="1686698178114" TEXT="expander function to explore prerequisite JobTickets">
<icon BUILTIN="full-4"/>
<node COLOR="#338800" CREATED="1685803059992" ID="ID_1436607523" MODIFIED="1685925254772" TEXT="expander-Funktor(einfach)">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1685803068234" ID="ID_1458286668" MODIFIED="1685925250184" TEXT="Gruppierung mit Dependent">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1685803252313" ID="ID_981519455" MODIFIED="1685925247927" TEXT="Problem: Ende des Kind-Levels erkennen">
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#435e98" CREATED="1685803392203" ID="ID_1347930311" MODIFIED="1685925216605" TEXT="Idee: Level-Shift als positional shift in Expander selber einbauen">
<icon BUILTIN="idea"/>
<node CREATED="1685803432791" ID="ID_612766289" MODIFIED="1685803491700" TEXT="das hei&#xdf;t: die Verklammerung macht der Expander selber">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...denn dieser hat nat&#252;rlicherweise beide Elemente in der Hand...
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1685803493398" ID="ID_312364874" MODIFIED="1685803517871" TEXT="&#x27f9; Folge schrittweise verschobener Paare"/>
<node COLOR="#5b280f" CREATED="1685803519291" FOLDED="true" ID="ID_1625457703" MODIFIED="1685925038510" TEXT="&#x27f9; neue Idee: k&#xfc;nstlichen Root einf&#xfc;hren">
<icon BUILTIN="idea"/>
<icon BUILTIN="button_cancel"/>
<node COLOR="#5b280f" CREATED="1685803556486" ID="ID_9551953" MODIFIED="1685925058966" TEXT="der mu&#xdf; vom Basis-Iterator-Level k&#xfc;nstlich eingef&#xfc;hrt werden">
<arrowlink COLOR="#fdfed9" DESTINATION="ID_1049622554" ENDARROW="Default" ENDINCLINATION="-118;8;" ID="Arrow_ID_109489850" STARTARROW="None" STARTINCLINATION="124;-21;"/>
<icon BUILTIN="yes"/>
</node>
<node COLOR="#5b280f" CREATED="1685803612926" ID="ID_755957373" MODIFIED="1685925050534" TEXT="damit k&#xf6;nnte man nebenbei das Problem der Output-Sink-Steuerung l&#xf6;sen">
<icon BUILTIN="button_cancel"/>
<node CREATED="1685840292823" ID="ID_1498997864" MODIFIED="1685840301432" TEXT="zweifelhafte Idee">
<icon BUILTIN="smiley-neutral"/>
</node>
<node CREATED="1685840431446" ID="ID_1003465771" MODIFIED="1685840455821" TEXT="Diskussion">
<icon BUILTIN="info"/>
<node CREATED="1685840438031" ID="ID_335807680" MODIFIED="1685840439519" TEXT="pro">
<node CREATED="1685840479768" ID="ID_1500115702" MODIFIED="1685840492596" TEXT="macht das Dependency-Schema formal einfach"/>
<node CREATED="1685840517829" ID="ID_255096122" MODIFIED="1685840750650" TEXT="l&#xf6;st das Problem mit dem &#xbb;beweglichen Teil&#xab; des JobFunctors">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Eigentlich k&#246;nnte das JobTicket f&#252;r ein ganzes Segment konstant sein, ggfs noch aufdifferenziert nach ModelPort &#8212; der eigentliche JobFunctor (im Ticket) w&#228;re vom Prinzip her in jedem Fall konstant und damit nur einmal alloziert. Aber jeder separate CalcStream braucht die Daten in einem anderen Ausgabe-Puffer, gegeben durch das DataSink-Handle.
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1685840443054" ID="ID_1482139155" MODIFIED="1685840444010" TEXT="con">
<node CREATED="1685840753973" ID="ID_1826791596" MODIFIED="1685840872613" TEXT="eigentlich war die Idee, da&#xdf; der top-level-Job direkt in den Ausgabepuffer rendert">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <ul>
      <li>
        &#187;just in time&#171;
      </li>
      <li>
        wir sparen uns eine weitere Buffer-Allokation
      </li>
      <li>
        und einen weiteren Kopiervorgang
      </li>
    </ul>
    <p>
      Wenn wir das erhalten wollen, dann m&#252;&#223;ten Jobs untereinander kollaborieren und einen gemeinsamen Buffer verwenden, oder ein Buffer-Handle weitergeben
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1685840306224" ID="ID_1196814104" MODIFIED="1685840874245" TEXT="noch v&#xf6;llig ungekl&#xe4;rt, wie die Buffer-&#xdc;bergabe zwischen dependent-Jobs funktioniert">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1685925070561" ID="ID_1350090008" MODIFIED="1685925209423" TEXT="bessere L&#xf6;sung : Root-Level markieren">
<icon BUILTIN="button_ok"/>
<node CREATED="1685925085231" ID="ID_1953140621" MODIFIED="1685925089485" TEXT="Pointer verwenden"/>
<node CREATED="1685925161208" ID="ID_517704881" MODIFIED="1685925194593" TEXT="Tupel (parent, current)"/>
<node CREATED="1685925090438" ID="ID_9907786" MODIFIED="1685925207649" TEXT="root &#x27f9; parent ist NULL"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1686698185293" ID="ID_611682817" MODIFIED="1686757781839" TEXT="Verifikation im Test">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1686705330560" ID="ID_603570215" MODIFIED="1686705437819" TEXT="analog zu vorherigem Testfall + expandPrerequisites()">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1686705344942" ID="ID_1723569587" MODIFIED="1686707637095" TEXT="erst mal erstes Element der Pipeline verifizieren">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1686705447273" FOLDED="true" ID="ID_221817969" MODIFIED="1686707595983" TEXT="mark kommt nicht an">
<icon BUILTIN="broken-line"/>
<node COLOR="#435e98" CREATED="1686705467174" ID="ID_1522933004" MODIFIED="1686708560481" TEXT="Debugger">
<icon BUILTIN="info"/>
<node CREATED="1686705473382" ID="ID_96197356" MODIFIED="1686705488951" TEXT="schon im Dispatcher steckt eine falsche Spec"/>
<node CREATED="1686705489536" ID="ID_1332854132" MODIFIED="1686705514221" TEXT="die 1. aufgedoppelte ExitNode hat pipeline-ID == 2"/>
<node CREATED="1686705514739" ID="ID_588643481" MODIFIED="1686705525626" TEXT="die 2. aufgedoppelte ExitNode ist wie erwartet"/>
<node CREATED="1686705529934" ID="ID_1632731907" MODIFIED="1686705535953" TEXT="in Einzelschritte zerlegen">
<node CREATED="1686705564953" ID="ID_711721855" MODIFIED="1686705598323" TEXT="Oh-Oh : das hat bisher nur zuf&#xe4;llig funktioniert">
<icon BUILTIN="smiley-oh"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1686705610559" ID="ID_239110834" MODIFIED="1686705625441" TEXT="ExitNodes dingens{times, dings}">
<icon BUILTIN="broken-line"/>
<node CREATED="1686705626841" ID="ID_560123463" MODIFIED="1686705648264" TEXT="die VER****te std::initializer_list mal wieder">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1686705649990" ID="ID_1216105715" MODIFIED="1686705665128" TEXT="das baut einen Vector mit (rein zuf&#xe4;llig) zwei Elementen"/>
<node CREATED="1686705665908" ID="ID_558118178" MODIFIED="1686705688868" TEXT="und die erste ExitNode wird mit Seed == 2 gebaut (der times-Parameter)"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1686707572008" ID="ID_794052549" MODIFIED="1686707589325" TEXT="Fix: runde Klammern verwenden f&#xfc;r Vector-ctor">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1686707605322" ID="ID_808486766" MODIFIED="1686707627529" TEXT="convenience-Ctors f&#xfc;r FrameCoord">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1686707628165" ID="ID_1904306767" MODIFIED="1686707629880" TEXT="tut">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1686705365836" ID="ID_138010755" MODIFIED="1686757687312" TEXT="Visualisierung f&#xfc;r das jeweils aktuelle JobTicket">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      also stets das 2.Element im Tupel. Bin n&#228;mlich zu faul, hier auch noch das Tupel irgendwie zu rendern. Das mach ich dann im n&#228;chsten Testfall...
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1686708389268" ID="ID_285309447" MODIFIED="1686708455385" TEXT="grunds&#xe4;tzlich kommen die Daten jetzt wie erwartet an">
<icon BUILTIN="ksmiletris"/>
</node>
<node COLOR="#435e98" CREATED="1686708410704" FOLDED="true" ID="ID_441152759" MODIFIED="1686757689878" TEXT="Koordination der Gesamt-Pipeline funktioniert nicht richtig">
<icon BUILTIN="broken-line"/>
<node CREATED="1686708460080" ID="ID_990579031" MODIFIED="1686708540153">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <font color="#801111" face="Monospaced" size="2">FAIL___expectation___________ </font>
    </p>
    <p>
      <font color="#801111" face="Monospaced" size="2">expect:J(11|200ms)-J(22|200ms)-J(11|240ms)-J(22|240ms)-J(11|280ms)-J(22|280ms) </font>
    </p>
    <p>
      <font color="#801111" face="Monospaced" size="2">actual:J(11|200ms)-J(22|</font><font color="#ff0000" face="Monospaced" size="2">240</font><font color="#801111" face="Monospaced" size="2">ms)-J(11|240ms)-J(22|</font><font color="#ff0000" face="Monospaced" size="2">280</font><font color="#801111" face="Monospaced" size="2">ms)-J(11|280ms)-J(22|</font><font color="#ff0000" face="Monospaced" size="2">320</font><font color="#801111" face="Monospaced" size="2">ms) </font>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
<node COLOR="#435e98" CREATED="1686708564668" ID="ID_1705252197" MODIFIED="1686749574616" TEXT="schaltet da der Tick-Generator zu fr&#xfc;h weiter?">
<icon BUILTIN="help"/>
<node CREATED="1686708691354" ID="ID_429578844" MODIFIED="1686708711789" TEXT="weil das expand() in die Iterate-Operation eingeh&#xe4;ngt ist..."/>
<node CREATED="1686749244896" ID="ID_792673014" MODIFIED="1686749263390" TEXT="und weil in expandChildren stets sofort incrementCurrent() aufgerufen wird"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1686749294140" ID="ID_1511416899" MODIFIED="1686749591908" TEXT="deshalb wird die Basis-Pipeline bereits vorgreifend weitergeschaltet">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1686757130262" ID="ID_1861299504" MODIFIED="1686757271045" TEXT="logische Inkonsistenz in der Expander-Implementierung">
<arrowlink COLOR="#4a85b5" DESTINATION="ID_660032494" ENDARROW="Default" ENDINCLINATION="-821;104;" ID="Arrow_ID_1758558464" STARTARROW="None" STARTINCLINATION="956;47;"/>
<icon BUILTIN="broken-line"/>
</node>
<node COLOR="#338800" CREATED="1686757667127" ID="ID_803521582" MODIFIED="1686757673328" TEXT="Implementierung &#xfc;berarbeitet">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1686757673981" ID="ID_1339385656" MODIFIED="1686757678536" TEXT="alle Tests GR&#xdc;N">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1686757716091" ID="ID_1984151542" MODIFIED="1686757736741" TEXT="Pipeline funktioniert nun konsistent, incl. End-Bedingung">
<icon BUILTIN="button_ok"/>
<node CREATED="1686757754298" ID="ID_1544300725" MODIFIED="1686757772691" TEXT="200ms ... 300ms"/>
<node CREATED="1686757773327" ID="ID_1310335603" MODIFIED="1686757774227" TEXT="J(11|200ms)-J(22|200ms)-J(11|240ms)-J(22|240ms)-J(11|280ms)-J(22|280ms)"/>
</node>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1681742836996" FOLDED="true" ID="ID_1332543018" MODIFIED="1687304903527" TEXT="integration: generate a complete sequence of (dummy)Jobs">
<arrowlink COLOR="#4d3a6e" DESTINATION="ID_92268538" ENDARROW="Default" ENDINCLINATION="184;0;" ID="Arrow_ID_1841184971" STARTARROW="None" STARTINCLINATION="146;7;"/>
<icon BUILTIN="full-5"/>
<node BACKGROUND_COLOR="#c0bdd3" COLOR="#690f14" CREATED="1685986952878" ID="ID_819115625" MODIFIED="1687302695659" TEXT="offen: Umgang mit der DataSink">
<arrowlink COLOR="#7d3f56" DESTINATION="ID_519176123" ENDARROW="Default" ENDINCLINATION="-1337;-138;" ID="Arrow_ID_1252848442" STARTARROW="None" STARTINCLINATION="-721;60;"/>
<icon BUILTIN="bell"/>
</node>
<node COLOR="#338800" CREATED="1686793340860" HGAP="80" ID="ID_121519729" MODIFIED="1687228266870" TEXT="Pipeline abschlie&#xdf;en" VSHIFT="-44">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1687217276854" ID="ID_586887396" MODIFIED="1687217295244" TEXT="den TreeExplorer und den Pipelinebuilder weg-slicen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1687217297461" ID="ID_682398761" MODIFIED="1687217331625" TEXT="Front-End-Template PlanningPipeline dar&#xfc;ber legen">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1681742264338" ID="ID_627755845" MODIFIED="1687465589629" TEXT="in RenderDrive &#xfc;berf&#xfc;hren">
<icon BUILTIN="hourglass"/>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1684975260910" ID="ID_675928767" MODIFIED="1684975279714" TEXT="wo genau wird die Pipeline angesiedelt?">
<icon BUILTIN="help"/>
<node CREATED="1685058111671" ID="ID_1591073548" MODIFIED="1685058114306" TEXT="Datenstruktur">
<node CREATED="1685058115678" ID="ID_1234845094" MODIFIED="1685058131762" TEXT="ein Feed ist ein Descriptor (Value-Objekt)"/>
<node CREATED="1685058133308" ID="ID_605529757" MODIFIED="1685058146198" TEXT="ein PlayProcess hat einen vector&lt;Feed&gt;"/>
<node CREATED="1685058150242" ID="ID_1251514808" MODIFIED="1685058160434" TEXT="ein Feed kann mehrere CalcStreams haben (vector)"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685058172991" ID="ID_1595485074" MODIFIED="1685062339730" TEXT="RenderDrive is non-Copyable &#x27f9; mu&#xdf; irgendwo abgefangen werden">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <ul>
      <li>
        non-Copyable-Objekte in einem Vector sind nicht m&#246;glich...
      </li>
      <li>
        die Zahl der Feeds und CalcStreams mu&#223; offen bleiben &#10233; Heap
      </li>
      <li>
        aber sp&#228;testens vom RenderDrive darf es nur noch eine Instanz geben (pro realem CalcStream)
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node CREATED="1686696155270" ID="ID_1449641019" MODIFIED="1686696177741" TEXT="mu&#xdf; effektiv beim Start des Play-Prozesses erstellt werden">
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1686696187981" ID="ID_1518154187" MODIFIED="1686696256320" TEXT="wird dann in den CalcStream geschoben">
<arrowlink COLOR="#7e59a0" DESTINATION="ID_408686784" ENDARROW="Default" ENDINCLINATION="531;627;" ID="Arrow_ID_1115341840" STARTARROW="None" STARTINCLINATION="2212;-102;"/>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685063128431" ID="ID_1958871740" MODIFIED="1685063140918" TEXT="Startpunkt gewinnen">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1685231891079" FOLDED="true" ID="ID_260441580" MODIFIED="1687192632849" TEXT="Rolle des Start-Punktes (TimeAnchor) kl&#xe4;ren">
<icon BUILTIN="yes"/>
<node CREATED="1685231941823" ID="ID_1623940961" MODIFIED="1685231953912" TEXT="verankert jeden Planning-Chunk erneut">
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1685235436161" ID="ID_468996444" MODIFIED="1685235443249" TEXT="ggfs dynamisch">
<icon BUILTIN="hourglass"/>
<node CREATED="1685235444928" ID="ID_302855619" MODIFIED="1685235467177" TEXT="slip &#x27f9; die Timings nachjustieren"/>
<node CREATED="1685235468131" ID="ID_124817718" MODIFIED="1685235532934" TEXT="drop &#x27f9; den ersten noch errichbaren Frame nehmen"/>
<node CREATED="1685235541603" ID="ID_1822458773" MODIFIED="1685235553877" TEXT="strict &#x27f9; erkennen da&#xdf; die Deadline bereits gerissen ist"/>
</node>
<node CREATED="1685235561543" ID="ID_1064939356" MODIFIED="1685235568611" TEXT="Basis-Fall">
<node CREATED="1685235946749" ID="ID_639180264" LINK="#ID_92039924" MODIFIED="1685236163177" TEXT="TIMEBOUND &#x27f9; die Timings m&#xfc;ssen relativ zur Wall-Clock-Time definiert sein (+Puffer)"/>
<node CREATED="1685236006596" ID="ID_844227051" MODIFIED="1685236120369" TEXT="sonst &#x27f9; aktuelle Zeit + Puffer f&#xfc;r Latency"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1685063142277" ID="ID_1900307953" MODIFIED="1685497387571" TEXT="Problem: mu&#xdf; die Frame-Nummer an diese Stelle bekommen">
<arrowlink COLOR="#fb1618" DESTINATION="ID_548686360" ENDARROW="Default" ENDINCLINATION="-59;-351;" ID="Arrow_ID_567963048" STARTARROW="None" STARTINCLINATION="-369;18;"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1685497366726" ID="ID_1549936323" MODIFIED="1685497373377" TEXT="nein ist kein Problem (mehr)"/>
<node CREATED="1685497375539" ID="ID_1837741010" MODIFIED="1685497384679" TEXT="wir z&#xe4;hlen einfach weiter"/>
</node>
<node COLOR="#5b280f" CREATED="1685231918246" ID="ID_1408660753" MODIFIED="1685497362335" TEXT="stellt zugleich den Link zur Wall-Clock-Time her">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1685406699651" ID="ID_789896275" MODIFIED="1685406708225" TEXT="das machen aber die Timings auch bereits"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1685406743623" ID="ID_1294162294" MODIFIED="1685406767041" TEXT="TimeAnchor ist ohne sinnvollen Gehalt">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node COLOR="#5b280f" CREATED="1685369565772" FOLDED="true" ID="ID_1409610431" MODIFIED="1687192631570" TEXT="der TimeAnchor selber bestimmt das">
<icon BUILTIN="button_cancel"/>
<node CREATED="1685369583234" ID="ID_173951952" MODIFIED="1685369590725" TEXT="implementiert unter R&#xfc;ckgriff auf die Timings">
<node CREATED="1685369618821" ID="ID_591055660" MODIFIED="1685369635383" TEXT="Timings::establishNextPlanningChunkStart (oldAnchorFrame)"/>
<node CREATED="1685369819711" ID="ID_92215727" MODIFIED="1685369839386" TEXT="dort findet nur Aufruf von Grid-API-Funktionen statt">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1685369847871" ID="ID_962123040" MODIFIED="1685369878551" TEXT="und verwendet Timings::getPlanningChunkDuration()">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1685369901303" ID="ID_437509684" MODIFIED="1685369913102" TEXT="push/pull und Locking beachten">
<icon BUILTIN="clanbomber"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1685369887513" ID="ID_978050958" MODIFIED="1685406802098" TEXT="Problematik: dynamische Updates von Engine-Werten">
<arrowlink COLOR="#b03e6a" DESTINATION="ID_996861061" ENDARROW="Default" ENDINCLINATION="1914;0;" ID="Arrow_ID_280066938" STARTARROW="None" STARTINCLINATION="202;-9;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
<node COLOR="#5b280f" CREATED="1685369987788" ID="ID_920255984" MODIFIED="1685406837547" TEXT="&#xdc;berpr&#xfc;fen: Quantisierung logisch korrekt?">
<icon BUILTIN="help"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1685370021456" ID="ID_1840609510" MODIFIED="1685370045718" TEXT="Spezialfall: wenn der n&#xe4;chste Frame exakt getroffen wird">
<icon BUILTIN="messagebox_warning"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1685370055315" ID="ID_1311898937" MODIFIED="1685406806410" TEXT="generelle Policy in Lumiera: auf den vorherigen Frame abrunden">
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#5b280f" CREATED="1685401941899" ID="ID_36079260" MODIFIED="1685406843234" TEXT="API festlegen">
<icon BUILTIN="button_cancel"/>
<node CREATED="1685401954481" ID="ID_807804418" MODIFIED="1685402029862">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      bisher: <font face="Monospaced" size="2" color="#7b2b47">FrameCnt</font><font face="Monospaced" size="2">&#160;</font><font face="Monospaced" size="2" color="#cc2727">getNextAnchorPoint()</font>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
<node CREATED="1685406846904" ID="ID_923084245" MODIFIED="1685406864116" TEXT="sollte den TImeAnchor inkrementell weitersetzen...?">
<icon BUILTIN="button_cancel"/>
</node>
</node>
</node>
<node CREATED="1685406878775" ID="ID_143543979" MODIFIED="1685406890912" TEXT="Nein: alles komplett &#xfc;berfl&#xfc;ssig">
<icon BUILTIN="idea"/>
<icon BUILTIN="yes"/>
<node CREATED="1685406892909" ID="ID_877192337" MODIFIED="1685406903491" TEXT="wir z&#xe4;hlen einfach die Frame-Nummer hoch und gut is"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685406904249" ID="ID_1903725712" MODIFIED="1685406939765" TEXT="aus dem TimeAnchor wird eine einfache Variable chunkStart">
<arrowlink COLOR="#90417a" DESTINATION="ID_1280247593" ENDARROW="Default" ENDINCLINATION="160;0;" ID="Arrow_ID_1703119592" STARTARROW="None" STARTINCLINATION="246;11;"/>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1684984505425" ID="ID_92268538" MODIFIED="1684984529415" TEXT="Job-Erzeugung festlegen">
<linktarget COLOR="#4d3a6e" DESTINATION="ID_92268538" ENDARROW="Default" ENDINCLINATION="184;0;" ID="Arrow_ID_1841184971" SOURCE="ID_1332543018" STARTARROW="None" STARTINCLINATION="146;7;"/>
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1684984549427" HGAP="40" ID="ID_206055852" MODIFIED="1684984923938" TEXT="zu repr&#xe4;sentierende Daten" VSHIFT="20">
<icon BUILTIN="info"/>
<node CREATED="1685050891692" ID="ID_726774749" MODIFIED="1685050895237" TEXT="FrameCoord">
<node CREATED="1685052033040" MODIFIED="1685052033040" TEXT="TimeVar  absoluteNominalTime;"/>
<node CREATED="1685052033041" MODIFIED="1685052033041" TEXT="FrameCnt absoluteFrameNumber;"/>
<node COLOR="#5b280f" CREATED="1685052033041" ID="ID_414066208" MODIFIED="1686841366213" TEXT="TimeVar absoluteRealDeadline;">
<linktarget COLOR="#688dbf" DESTINATION="ID_414066208" ENDARROW="Default" ENDINCLINATION="736;59;" ID="Arrow_ID_1765709992" SOURCE="ID_889938405" STARTARROW="None" STARTINCLINATION="185;-30;"/>
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1685052033041" ID="ID_784744470" MODIFIED="1686841193971" TEXT="size_t modelPortIDX"/>
</node>
<node CREATED="1685050895873" ID="ID_1305413793" MODIFIED="1686789885547" TEXT="JobTicket &#xd83e;&#xdc32; JobFunctor"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685050903817" ID="ID_947140645" MODIFIED="1685058047977" TEXT="konkrete Output-Sink">
<linktarget COLOR="#a95a75" DESTINATION="ID_947140645" ENDARROW="Default" ENDINCLINATION="188;21;" ID="Arrow_ID_686370160" SOURCE="ID_1575034395" STARTARROW="None" STARTINCLINATION="747;-40;"/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1685058050639" ID="ID_143173446" MODIFIED="1685058108822" TEXT="Sink ist ein Handle (ref-counting)">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      lib::Handle&lt;OutputSlot::Connection&gt;
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685062340977" ID="ID_1162744930" MODIFIED="1685062405034" TEXT="diese Info geh&#xf6;rt in den JobFunktor">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      denn die Inovcation mu&#223; in diese Sink rendern
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1684984896696" FOLDED="true" HGAP="36" ID="ID_727075583" MODIFIED="1687228182161" VSHIFT="3">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Verh&#228;ltnis von JobPlanning
    </p>
    <p>
      und JobTicket::Provision kl&#228;ren
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1685034217649" ID="ID_838263980" MODIFIED="1687228200592" TEXT="Job(Closure) kann eigene Performance-Charakteristik beobachten">
<icon BUILTIN="idea"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685034865250" ID="ID_321040814" MODIFIED="1687228211440" TEXT="Me&#xdf;punkte per TimingObservable">
<arrowlink COLOR="#8f29b2" DESTINATION="ID_1462535336" ENDARROW="Default" ENDINCLINATION="885;-44;" ID="Arrow_ID_1037995856" STARTARROW="None" STARTINCLINATION="503;38;"/>
<icon BUILTIN="idea"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1685034976707" ID="ID_655578250" MODIFIED="1687228208239" TEXT="als strukturierter Term repr&#xe4;sentiert">
<icon BUILTIN="hourglass"/>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1685034247837" ID="ID_1377875222" MODIFIED="1687228197036" TEXT="nur die Provision kennt die grunds&#xe4;tzliche Abh&#xe4;ngigkeits-Struktur">
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1686840707781" ID="ID_886260955" MODIFIED="1687228197036" TEXT="nur die ExitNode wei&#xdf; im Detail, wie die Ausf&#xfc;hrung auszul&#xf6;sen ist">
<icon BUILTIN="info"/>
</node>
<node COLOR="#338800" CREATED="1685034304654" ID="ID_187208942" MODIFIED="1687191797464" TEXT="JobPlanning">
<linktarget COLOR="#5a459d" DESTINATION="ID_187208942" ENDARROW="Default" ENDINCLINATION="-864;159;" ID="Arrow_ID_426419648" SOURCE="ID_288857114" STARTARROW="None" STARTINCLINATION="1067;-60;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1685052158905" ID="ID_298268641" MODIFIED="1687191693244" TEXT="ist eine State-Facade f&#xfc;r den aktuellen Planungs-Stand">
<icon BUILTIN="yes"/>
<node COLOR="#338800" CREATED="1685052155282" ID="ID_1374932582" MODIFIED="1687191730982" TEXT="verlinkt auf Frame-Nr und nominalTime">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1685802434530" ID="ID_84580124" MODIFIED="1687191738145" TEXT="f&#xfc;gt die DataSink(Handle) hinzu">
<icon BUILTIN="hourglass"/>
</node>
</node>
<node COLOR="#338800" CREATED="1686793407407" FOLDED="true" ID="ID_194609603" MODIFIED="1687191688480" TEXT="Erzeugung">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1686840957950" ID="ID_845216336" MODIFIED="1686867992404" TEXT="ben&#xf6;tigte Daten">
<icon BUILTIN="info"/>
<node CREATED="1686840974924" ID="ID_652755563" MODIFIED="1686840977248" TEXT="FrameCoord">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_652755563" ENDARROW="Default" ENDINCLINATION="45;0;" ID="Arrow_ID_153003944" SOURCE="ID_84700425" STARTARROW="None" STARTINCLINATION="45;0;"/>
</node>
<node CREATED="1686840978452" ID="ID_265897681" MODIFIED="1686840982768" TEXT="JobTIcket"/>
<node CREATED="1686846340230" ID="ID_84700425" MODIFIED="1686866970333" TEXT="ModelPort-IDX">
<arrowlink DESTINATION="ID_652755563" ENDARROW="Default" ENDINCLINATION="45;0;" ID="Arrow_ID_153003944" STARTARROW="None" STARTINCLINATION="45;0;"/>
</node>
<node CREATED="1686846346240" ID="ID_599217760" MODIFIED="1686846349747" TEXT="DataSink"/>
</node>
<node COLOR="#435e98" CREATED="1686868037369" ID="ID_240161255" MODIFIED="1686868049388" TEXT="Design: RAII-style oder builder-style?">
<node CREATED="1686868053988" ID="ID_1964324480" MODIFIED="1686868070029" TEXT="Berechnungen k&#xf6;nnen nicht wirklich scheitern"/>
<node CREATED="1686868070689" ID="ID_391399208" MODIFIED="1686868077468" TEXT="aber in manchen F&#xe4;llen kommen Infos dazu"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1686868079216" ID="ID_20062168" MODIFIED="1686868093219" TEXT="Builder">
<icon BUILTIN="forward"/>
</node>
<node COLOR="#435e98" CREATED="1686868094902" ID="ID_1505078713" MODIFIED="1687191655603" TEXT="&#x27f9; Timing-Berechnungen erfolgen erst bei Bedarf"/>
</node>
</node>
<node COLOR="#338800" CREATED="1686793412168" ID="ID_566542363" MODIFIED="1687191659953" TEXT="Deadline festsetzen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1686793444999" FOLDED="true" ID="ID_890638508" MODIFIED="1686964333735" TEXT="einfacher Job">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1686873856076" ID="ID_1099231430" MODIFIED="1686964330736" TEXT="eigentlich liegt das Wissen dar&#xfc;ber im JobFunktor">
<arrowlink COLOR="#a56c6d" DESTINATION="ID_1464401657" ENDARROW="Default" ENDINCLINATION="-74;-579;" ID="Arrow_ID_1368232066" STARTARROW="None" STARTINCLINATION="933;50;"/>
<icon BUILTIN="idea"/>
<node COLOR="#338800" CREATED="1686874175948" HGAP="50" ID="ID_525505445" MODIFIED="1686878346429" TEXT="vorl&#xe4;ufige Fake-Info vorsehen" VSHIFT="-3">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1686874325457" ID="ID_1367759543" MODIFIED="1686878348271" TEXT="in ExitNode">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1686874330784" ID="ID_1065139085" MODIFIED="1687191647885" TEXT="und dort per Test-Spec aus dem Mock injizieren">
<arrowlink COLOR="#566fc3" DESTINATION="ID_1364608777" ENDARROW="Default" ENDINCLINATION="1055;-65;" ID="Arrow_ID_167964463" STARTARROW="None" STARTINCLINATION="590;34;"/>
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1686874081293" ID="ID_1358950308" MODIFIED="1686964328409" TEXT="Zugriff sollte aber &#xfc;ber das JobTicket-API gef&#xfc;hrt werden">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      und zwar wegen <i>Separation of Concerns</i>&#160;&#160;&#160;&#8212;&#160;&#160;der JobFunctor ist kein Informations-Service (genau daf&#252;r haben wir ja das JobTicket geschaffen)
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1686874427511" ID="ID_109124269" MODIFIED="1686878357594" TEXT="die bisher in TimeAnchor gecodete Logik hierher verschieben">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1686875298675" ID="ID_981450024" MODIFIED="1686964324302" TEXT="Logik der Berechnung ausarbeiten">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1686878372095" ID="ID_735392622" MODIFIED="1686878381499" TEXT="Gesamt-Latenz">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1686878360841" ID="ID_26327492" MODIFIED="1686879600114" TEXT="f&#xfc;r Deadline eigentlich nur bei TIMEBOUND">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1686964484692" ID="ID_833129888" MODIFIED="1686964599342" TEXT="Rechenweg">
<icon BUILTIN="info"/>
<node CREATED="1686964521084" ID="ID_1952042504" MODIFIED="1686964541624" TEXT="Wall-Clock-Anchor-Punkt f&#xfc;r Grid-Origin"/>
<node CREATED="1686964542236" ID="ID_633743901" MODIFIED="1686964571926" TEXT="nominellen Offest dahinter &#x27fc; required time of arrival"/>
<node CREATED="1686964573870" ID="ID_1589778051" MODIFIED="1686964595226" TEXT="um die Gesamt-Latenz davor &#x27fc; Deadline"/>
</node>
<node COLOR="#435e98" CREATED="1686879601311" ID="ID_1446511354" MODIFIED="1686963909785" TEXT="Frage: wo wird nun der Anker zur wall-clock-Time etabliert?">
<icon BUILTIN="help"/>
<node CREATED="1686963864527" ID="ID_1675965203" MODIFIED="1686963907132" TEXT="liegt nun in den Timings">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1686963873774" ID="ID_1368816821" MODIFIED="1686963903814" TEXT="wird also au&#xdf;erhalb der Dispatcher-Pipeline verwaltet">
<icon BUILTIN="forward"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1686963884292" ID="ID_713008551" MODIFIED="1687191640923" TEXT="dann wohl im CalcStream">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1686793449011" FOLDED="true" ID="ID_1790599874" MODIFIED="1687191683372" TEXT="abh&#xe4;ngiger Job">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1686964367620" ID="ID_673983932" MODIFIED="1687191633500" TEXT="braucht Deadline des unmittelbar abh&#xe4;ngigen Nachfolger-Jobs">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#435e98" CREATED="1686964642887" ID="ID_1372706833" MODIFIED="1687191631837" TEXT="verwende diese anstelle der erwarteten real-Grid-Time">
<icon BUILTIN="idea"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1686965001287" ID="ID_1948616906" MODIFIED="1687137549677">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <u>Problem</u>&#160;: habe nur <b>JobTicket</b>&#160;des <i>unmittelbaren</i>&#160; Vorg&#228;ngers
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1686965066686" ID="ID_419807071" MODIFIED="1686965089388" TEXT="w&#xfc;rde aber die ganze Kette der JobPlannings bis zum Root-Job brauchen">
<icon BUILTIN="info"/>
</node>
<node CREATED="1686965163417" ID="ID_1358303460" MODIFIED="1686965216709" TEXT="eine Deadline ist Ergebnis einer Integration">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1686965322397" ID="ID_966792976" MODIFIED="1686965331679" TEXT="das JobTIcket kann die gar nicht errechnen"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1686965332609" ID="ID_1561329377" MODIFIED="1687137693493" TEXT="Rechnung w&#xe4;re rekursiv, quadratisch">
<linktarget COLOR="#e42d77" DESTINATION="ID_1561329377" ENDARROW="Default" ENDINCLINATION="361;27;" ID="Arrow_ID_242786471" SOURCE="ID_1507798641" STARTARROW="None" STARTINCLINATION="481;-20;"/>
<icon BUILTIN="clanbomber"/>
</node>
<node CREATED="1686965354284" ID="ID_172681606" MODIFIED="1687039516255" TEXT="oder erfordert &#xbb;schleppenden&#xab; Zustand">
<arrowlink COLOR="#8e5572" DESTINATION="ID_1929351072" ENDARROW="Default" ENDINCLINATION="28;-47;" ID="Arrow_ID_753643955" STARTARROW="None" STARTINCLINATION="-70;5;"/>
</node>
</node>
<node CREATED="1687039335006" ID="ID_1929351072" MODIFIED="1687039516255" TEXT="&#xbb;schleppender Zustand&#xab;">
<linktarget COLOR="#8e5572" DESTINATION="ID_1929351072" ENDARROW="Default" ENDINCLINATION="28;-47;" ID="Arrow_ID_753643955" SOURCE="ID_172681606" STARTARROW="None" STARTINCLINATION="-70;5;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1687039436665" ID="ID_510256966" MODIFIED="1687039436665" TEXT="mu&#xdf; f&#xfc;r Job-Planning-Berechnung zug&#xe4;nglich sein"/>
<node CREATED="1687039484904" ID="ID_846229350" MODIFIED="1687039649451" TEXT="mu&#xdf; aber in der Expander-Funktion bereits vorliegen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      weil das die einzige Stelle ist in der zugleich Dependent und Dependency zug&#228;nglich sind
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1687039664958" ID="ID_1390938163" MODIFIED="1687039709039" TEXT="oder mu&#xdf; in die dort erzeugte Datenstruktur nachtr&#xe4;glich gespeichert werden"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1687039717162" FOLDED="true" ID="ID_59086385" MODIFIED="1687137591057" TEXT="L&#xf6;sungsansatz: Expander arbeitet bereits auf JobPlanning als Datenstruktur">
<icon BUILTIN="idea"/>
<node CREATED="1687039778410" ID="ID_696364803" MODIFIED="1687039807242" TEXT="damit w&#xe4;re das (etwas sonderbare) Tupel aus JobPlanning-Pointern abzul&#xf6;sen"/>
<node CREATED="1687040058436" ID="ID_1402323400" MODIFIED="1687040071534" TEXT="JobPlanning h&#xe4;tte dann einen &#xbb;chaining-ctor&#xab;"/>
<node COLOR="#435e98" CREATED="1687042205845" ID="ID_1147372599" MODIFIED="1687043621026" TEXT="Performance-Konsequenzen">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1687042313601" ID="ID_891484053" MODIFIED="1687042479747" TEXT="redundante Storage f&#xfc;r die JobTIcket* f&#xe4;llt weg">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      da im JobPlanning nochmal eine JobTicket&amp; liegt, sind die zwei bisher im darunter liegenden Tupel gespeicherten JobTicket* eigentlich redundant und werden nur f&#252;r die Explorer-Mechanik gebraucht
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1687042241003" ID="ID_513934853" MODIFIED="1687042834774" TEXT="erheblicher Speicher-Mehrverbrauch im Explorer">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      weil nun auf jeder Ebene im Explorer-Stack eine JobPlanning-Instanz liegt, und zwar dort im ItemWrapper f&#252;r den jeweiligen TransformIterator (der die Explorer-Funktion implementiert)
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="clanbomber"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1687042899983" ID="ID_55365542" MODIFIED="1687042927481" TEXT="Moves werden aufwendiger (Kopieren von Wert-Tupeln)">
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#5b280f" CREATED="1687042939750" ID="ID_573111234" MODIFIED="1687184137904" TEXT="l&#xe4;&#xdf;t sich abmildern &#x27f9; FrameCoord per Referenz nehmen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ....und das gilt aber auch f&#252;r die einzelnen Felder darin, nachdem nun <b>FrameCoord als Konzept aufgegeben</b>&#160;wurden: es sind nun zwei Referenzen statt einer, aber ich erwarte, da&#223; alle diese Referenzen vom Optimiser erkannt und ausgelassen werden...
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1687043326502" ID="ID_1349100996" MODIFIED="1687043610100" TEXT="nach Aussch&#xf6;pfen der Optimierung gar nicht mehr so schlimm">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Wenn man die Daten entsprechend reorganisiert und dadurch die Redundanzen in der Pipeline minimiert kann der Optimiser viel machen, da (private) Referenzen &#252;berhaupt nicht repr&#228;sentiert werden m&#252;ssen, sofern die referenzierte Quelle (wie hier) stabil im gleichen Objekt liegt. Wenn ich richtig sch&#228;tze, habe ich mit dem Umbau nur einen &#187;slot&#171; mehr Speicher verbraucht (weil drei redundante &#187;slots&#171; wegfallen k&#246;nnen)
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1687043611150" HGAP="15" ID="ID_106958242" MODIFIED="1687184167780" STYLE="bubble" TEXT="go for it!" VSHIFT="7">
<edge COLOR="#f81313"/>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#338800" CREATED="1687043634555" ID="ID_71179253" MODIFIED="1687137392702" TEXT="Umschichten der Daten">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1687043695271" ID="ID_497206730" MODIFIED="1687137643989" TEXT="JobTicket-parent-Pointer in JobPlanning-parent verwandeln" VSHIFT="10">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      <b><font color="#f32157">AUA</font></b>: dieser parent-Pointer war bisher sogar eine <i>dangling reference </i>&#8212; er zeigte n&#228;mlich auf einen Pointer im Stack-Frame des &#955;-Aufrufs, der aber gar nicht mehr existiert, wenn man den Transform-Iterator auswertet. Soschnellkannsgehen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#5b280f" CREATED="1687043645122" ID="ID_1471106329" MODIFIED="1687131535956" TEXT="FrameCoord m&#xfc;ssen bereits in den TickGenerator">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...denn sonst m&#252;&#223;te ich sie in eine &#955;-Closure binden, was aber f&#252;r zwei der drei Felder redundate Storage w&#228;re; es macht auch sonst Sinn, wenn der Tick-Generator eben auf den FrameCoord arbeitet
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_cancel"/>
<node CREATED="1687047126863" ID="ID_1211205955" MODIFIED="1687047136938" TEXT="das ist aber nicht sch&#xf6;n">
<icon BUILTIN="smily_bad"/>
</node>
<node CREATED="1687047139677" ID="ID_1123653637" MODIFIED="1687047160987" TEXT="es bl&#xe4;ht den TickGenerator auf und macht ihn asymetrisch"/>
<node COLOR="#4a4398" CREATED="1687047169092" ID="ID_1819824079" MODIFIED="1687137416207">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      dann m&#252;ssen die FrameCoord jetzt <b>sterben</b>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
<node CREATED="1687047218784" ID="ID_965148273" MODIFIED="1687047467443" TEXT="sie werden eigentlich nie wirklich zusammen gebraucht">
<arrowlink COLOR="#9f154b" DESTINATION="ID_354859977" ENDARROW="Default" ENDINCLINATION="867;47;" ID="Arrow_ID_715252746" STARTARROW="None" STARTINCLINATION="-226;-425;"/>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1687047521489" ID="ID_1343365951" MODIFIED="1687047537890" TEXT="meistens sind sie nur halb g&#xfc;ltig &#x2014; oder redundant"/>
<node COLOR="#435e98" CREATED="1687047541216" FOLDED="true" ID="ID_3859431" MODIFIED="1687131788560" TEXT="wichtige bestehende Verwendungen">
<icon BUILTIN="info"/>
<node COLOR="#338800" CREATED="1687047579697" ID="ID_737360799" MODIFIED="1687052483835" TEXT="JobTicket::createJobFor (FrameCoord)">
<icon BUILTIN="button_ok"/>
<node CREATED="1687047618686" ID="ID_1365656833" MODIFIED="1687047628283">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      verwendet nur absoluteNominalTime
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
<node COLOR="#338800" CREATED="1687047629475" ID="ID_1969143286" MODIFIED="1687052485668" TEXT="direkt nehmen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1687047634050" ID="ID_663032785" MODIFIED="1687052486714" TEXT="damit fallen sie aus vielen Tests weg">
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#5b280f" CREATED="1687047718249" ID="ID_522193319" MODIFIED="1687052473908" TEXT="DispatchTable::locateRelative (FrameCoord, FrameCnt)">
<icon BUILTIN="button_cancel"/>
<node CREATED="1687047726324" ID="ID_618604807" MODIFIED="1687047732761" TEXT="ist eh schon stillgelegt"/>
</node>
<node COLOR="#5b280f" CREATED="1687047796700" ID="ID_1266801851" MODIFIED="1687052429106" TEXT="FrameSequencer::getNextFrame (FrameCoord)">
<icon BUILTIN="button_cancel"/>
<node CREATED="1687047808307" ID="ID_539998564" MODIFIED="1687047816009" TEXT="dto... nicht mehr verwendet"/>
<node COLOR="#338800" CREATED="1687047841006" ID="ID_480900539" MODIFIED="1687052420738" TEXT="FrameSequencer insgesamt &#xfc;berfl&#xfc;ssig">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1687047986424" ID="ID_1866280940" MODIFIED="1687052469428" TEXT="FrameLocator::getJobTicketFor (FrameCoord)">
<icon BUILTIN="button_ok"/>
<node CREATED="1687047995665" ID="ID_1960158539" MODIFIED="1687048015259">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      das ist die <i>einzige Verwendung</i>&#160;von zwei Feldern
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1687048209934" ID="ID_258966675" MODIFIED="1687048220362" TEXT="Verwendungen">
<icon BUILTIN="info"/>
<node CREATED="1687048232475" ID="ID_564390430" MODIFIED="1687048406468" TEXT="PipelineBuilder::pullFrom()">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Das ist <i>genau der Grund warum sie jetzt zum Problem</i>&#160;werden: diese Funktion erzeugt FrameCoord, die irgendwo leben m&#252;ssen, und das blo&#223;, um den einen Aufruf zu machen. Das <b>best&#228;tigt die Enscheidung</b>, sie zur&#252;ckzubauen
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#fafede" DESTINATION="ID_564390430" ENDARROW="Default" ENDINCLINATION="-200;20;" ID="Arrow_ID_141914814" SOURCE="ID_1690783604" STARTARROW="None" STARTINCLINATION="127;-8;"/>
</node>
<node CREATED="1687048434734" ID="ID_1902873210" MODIFIED="1687048446376" TEXT="JobPlanning_test : getJobTicket..."/>
<node CREATED="1687048458307" ID="ID_1324647389" MODIFIED="1687048595459" TEXT="dispatcher.getJobTicketFor(frame).createJobFor(frame)">
<arrowlink DESTINATION="ID_650695722" ENDARROW="Default" ENDINCLINATION="114;-7;" ID="Arrow_ID_1664199496" STARTARROW="None" STARTINCLINATION="114;6;"/>
</node>
</node>
<node CREATED="1687048477373" ID="ID_810957582" MODIFIED="1687048487150" TEXT="alle Verwendungen nur auf dem Dispatcher">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1687048516587" ID="ID_1263916587" MODIFIED="1687052444704" TEXT="FrameLocator insgesamt &#xfc;berfl&#xfc;ssig">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1687048542480" ID="ID_313742999" MODIFIED="1687052450991" TEXT="Dispatcher-Umbau">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1687048547919" ID="ID_1929140105" MODIFIED="1687052453813" TEXT="getJobTicket wird virtuelle Funktion (nun public)">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1687048568620" ID="ID_650695722" MODIFIED="1687052452753" TEXT="convenience-shortcut f&#xfc;r den Test-Bandwurm">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_650695722" ENDARROW="Default" ENDINCLINATION="114;-7;" ID="Arrow_ID_1664199496" SOURCE="ID_1324647389" STARTARROW="None" STARTINCLINATION="114;6;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1687047874264" ID="ID_59699296" MODIFIED="1687131543337" TEXT="Feld in JobPlanning">
<icon BUILTIN="button_ok"/>
<node CREATED="1687047881181" ID="ID_1499402798" MODIFIED="1687047886577" TEXT="grade neu gebaut">
<icon BUILTIN="ksmiletris"/>
</node>
<node COLOR="#435e98" CREATED="1687047888296" ID="ID_1054027313" MODIFIED="1687131548328" TEXT="m&#xf6;glichst durch Referenzen ersetzen">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1687048371598" ID="ID_1690783604" MODIFIED="1687048406468" TEXT="best&#xe4;tigt: gute Enscheidung">
<arrowlink COLOR="#fafede" DESTINATION="ID_564390430" ENDARROW="Default" ENDINCLINATION="-200;20;" ID="Arrow_ID_141914814" STARTARROW="None" STARTINCLINATION="127;-8;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#338800" CREATED="1687053133875" ID="ID_613644358" MODIFIED="1687137361826" TEXT="...und stattdessen wird direkt auf die Felder im TickGenerator verwiesen (const&amp;)">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1687131811965" ID="ID_1192855537" MODIFIED="1687137517231" TEXT="Pipeline-Definition umbauen">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1687131819547" ID="ID_1957351479" MODIFIED="1687133763828" TEXT="Problem: ItemWrapper weist Werte zu">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1687131845108" ID="ID_1247271270" MODIFIED="1687131867304" TEXT="...und kann deshalb keine non-copyable-Typen handhaben">
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1687131868445" ID="ID_1704149630" MODIFIED="1687133767953" TEXT="jetzt REICHTS mir langsam mit diesem d&#xe4;mlichen Problem">
<icon BUILTIN="yes"/>
<icon BUILTIN="smiley-angry"/>
<node CREATED="1687131919997" ID="ID_830496483" MODIFIED="1687132086162">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      leider ist das ziemlich <i>absch&#252;ssiges Gel&#228;nde</i>
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ....per SFINAE feststellen, da&#223; ein Asignment-Operator unterdr&#252;ckt wurde; lt. Standard sollte das gehen (das war eine sp&#228;te &#196;nderung zu C++11, da es in der Stdlib so viel Probleme gemacht hat) &#8212; aber in der Praxis wei&#223; ich, da&#223; das fragil ist, manchmal Fehler ausl&#246;sen kann (statt SFINAE), und da&#223; es Diskrepanzen zwischen den Compilern gibt. Ich hatte auch schon F&#228;lle, wo std::is_assignable rundweg versagt hat....
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1687133791082" ID="ID_76046380" MODIFIED="1687134081357">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      also k&#228;me erst mal nur in Frage, dort stets die alte Payload
    </p>
    <p>
      zu zerst&#246;ren und eine neue aus dem zugewiesenen Argument
    </p>
    <p>
      zu konstruieren, was aber meist auch das ist, was man dort m&#246;chte
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Der typische use-case, f&#252;r den dieser ItemWrapper geschaffen wurde, ist, ein beliebiges Lambda auszuwerten, und das Resultat dann im Puffer vorzuhalten; speziell wenn das Lambda ein neues Objekt konstruiert und per Value zur&#252;ckgibt, sorgt die RVO daf&#252;r, da&#223; dieses Objekt dann (per copy elision) sofort im Puffer im ItemWrapper konstruiert wird &#8212; in der Praxis ist das der h&#228;ufigste use-case und tritt im Besonderen in einem Transform-Iterator auf. Wenn andererseits die Payload ein POD oder einfacher Wert ist, dann sind Destruktor und Konstruktor ohnehin trivial...
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#338800" CREATED="1687133731282" ID="ID_555251890" MODIFIED="1687133759710" TEXT="Also umbauen: nun zerst&#xf6;rt er und copy/move-konstruiert eine neue Payload">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1687134089434" ID="ID_1039273215" MODIFIED="1687134115826" TEXT="Nach nahezu komplettem reBuild: Testsuite l&#xe4;uft weiterhin">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1687137207845" ID="ID_41795599" MODIFIED="1687137250587" TEXT="JobPlanning nun bereits auf der pull-From-Ebene erzeugen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1687137268479" ID="ID_1427542554" MODIFIED="1687137280067" TEXT="chained-Planning-Konstruktor einf&#xfc;hren">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1687137281027" ID="ID_387219967" MODIFIED="1687137332964" TEXT="TransformIterator in JobPlanning erstellen">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#1768b8" CREATED="1687137306215" ID="ID_1183352863" MODIFIED="1687137343253" TEXT="Ohh ...alles vieeel besser so">
<icon BUILTIN="ksmiletris"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1687044355596" ID="ID_1593217439" MODIFIED="1687137510008" TEXT="JobPlanningPipeline_test anpassen">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1687044370372" ID="ID_1608005431" MODIFIED="1687137469706" TEXT="der hat bisher das JobTicket-Tupel verwendet">
<icon BUILTIN="info"/>
</node>
<node COLOR="#338800" CREATED="1687044384151" ID="ID_228309908" MODIFIED="1687137487850" TEXT="speziellen Accessoren">
<font NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1687137489231" ID="ID_641532111" MODIFIED="1687137497724" TEXT="ticket()">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1687137491791" ID="ID_1927053233" MODIFIED="1687137497725" TEXT="isTopLevel()">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1687137501852" ID="ID_32393171" MODIFIED="1687137508724" TEXT="Hey... l&#xe4;uft">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1687137618239" ID="ID_1445585564" MODIFIED="1687191627752" TEXT="Verkettung der Deadlines implementieren">
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1687044201408" ID="ID_1507798641" MODIFIED="1687188666784" TEXT="die Deadline sollte man als Wert speichern (caching)">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...denn sonst w&#252;rde es genau zu rekursiven kaskadierenden (quadratisch aufwendigen) Aufrufen der Deadline-Berechnungs-Logik kommen; um das Caching zu steuern, kann ich einen Marker-Wert Time::NEVER verwenden
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#e42d77" DESTINATION="ID_1561329377" ENDARROW="Default" ENDINCLINATION="361;27;" ID="Arrow_ID_242786471" STARTARROW="None" STARTINCLINATION="481;-20;"/>
<icon BUILTIN="messagebox_warning"/>
<icon BUILTIN="hourglass"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1687188669884" HGAP="30" ID="ID_419509522" MODIFIED="1687191103504" TEXT="ja .... aber YAGNI" VSHIFT="15">
<linktarget COLOR="#955173" DESTINATION="ID_419509522" ENDARROW="Default" ENDINCLINATION="-1499;205;" ID="Arrow_ID_1313834873" SOURCE="ID_503672803" STARTARROW="None" STARTINCLINATION="-455;22;"/>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1687188700992" HGAP="30" ID="ID_1176783672" MODIFIED="1687188838995" TEXT="die ersten paar sind billig, und die Kosten sind nicht klar" VSHIFT="2">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Ich kann mir nicht vorstellen, da&#223; die gro&#223;e Mehrheit der Jobs mehr als eine Prerequisite bekommt...&#160;&#160;der Aufwand ist n/2 * (n+1), das bringt uns erst mal solange nicht um (bis es uns nachweislich umbringt...)
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#338800" CREATED="1687137710306" ID="ID_1967222999" MODIFIED="1687191110809" TEXT="Refactoring: Berechnung symmetrisch machen">
<icon BUILTIN="button_ok"/>
<node CREATED="1687137733390" ID="ID_1496251627" MODIFIED="1687137744225" TEXT="top-Level: Deadline stammt von den Timings"/>
<node CREATED="1687137744907" ID="ID_348107888" MODIFIED="1687137759424" TEXT="Prerequisite: Deadline stammt vom dependent Plan"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1686840122729" FOLDED="true" ID="ID_1592165499" MODIFIED="1687191673155" TEXT="Ergebnis">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1686840134669" ID="ID_1671465923" MODIFIED="1686840507523" TEXT="Form?">
<icon BUILTIN="help"/>
<node COLOR="#5b280f" CREATED="1686840163409" ID="ID_936153920" MODIFIED="1686840418535" TEXT="per direkter Konversion">
<icon BUILTIN="button_cancel"/>
<node CREATED="1686840207193" ID="ID_1893116179" MODIFIED="1686840230345" TEXT="war notwendig im 1. Monaden-basierten Entwurf">
<icon BUILTIN="info"/>
</node>
<node CREATED="1686840175160" ID="ID_476650558" MODIFIED="1686840407070" TEXT="macht (weiterhin) Sinn">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...weil es der Sache nach wirklich nur eine Konversion der aufgesammelten Infos ist, und nicht eine komplexe Berechnung; au&#223;erdem pa&#223;t es so halbwegs auch syntaktisch zum beabsichtigen Nutzen &#8212; aber genau dieser Nutz-Kontext ist auch ein Gegen-Argument: der Sinn der Sache erschlie&#223;t sich n&#228;mlich nicht intuitiv, wenn man da sieht: <font color="#462394">*pipeline</font>
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1686840195773" ID="ID_1373256074" MODIFIED="1686840205625" TEXT="aber nur wenn es ein einziges Ergebnis ist">
<icon BUILTIN="hourglass"/>
</node>
</node>
<node CREATED="1686840419958" ID="ID_525181993" MODIFIED="1686840433464" TEXT="per explizitem build*-Aufruf">
<icon BUILTIN="forward"/>
<node CREATED="1686840445907" ID="ID_1086563585" MODIFIED="1686840456211" TEXT="damit w&#xe4;ren wir vollends beim Builder-Pattern"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1686840457560" ID="ID_1030796040" MODIFIED="1686840483623" TEXT="hat den Vorteil, da&#xdf; man damit den Sinn des Aufrufs klar macht">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1686840484878" ID="ID_1550602324" MODIFIED="1686840502914" TEXT="ohnehin zwingend sofern mehr als ein Resultat erzeugt werden mu&#xdf;">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1686840512979" ID="ID_1663666286" MODIFIED="1686963839430" TEXT="buildJob">
<icon BUILTIN="button_ok"/>
<node CREATED="1686840520442" ID="ID_91633433" MODIFIED="1686840534807" TEXT="eigentliche Implementierung an das JobTicket delegiert">
<icon BUILTIN="idea"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1686840535983" ID="ID_1083625373" MODIFIED="1686963837475" TEXT="zus&#xe4;tzliche Parameter nachtr&#xe4;glich anreichern">
<icon BUILTIN="hourglass"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1686841321049" ID="ID_1620874793" MODIFIED="1686841334925" TEXT="Einsicht: Deadline wird hier gar nicht ben&#xf6;tigt">
<icon BUILTIN="idea"/>
<node COLOR="#338800" CREATED="1686841336620" ID="ID_889938405" MODIFIED="1686963825447" TEXT="Konsequenz: kann aus FrameCoord entfernt werden">
<arrowlink COLOR="#688dbf" DESTINATION="ID_414066208" ENDARROW="Default" ENDINCLINATION="736;59;" ID="Arrow_ID_1765709992" STARTARROW="None" STARTINCLINATION="185;-30;"/>
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1686841400731" ID="ID_873313888" MODIFIED="1686841424007" TEXT="die Bedeutung von FrameCoord reduziert sich auf die Planning-Pipeline">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1686873234880" ID="ID_1662721717" MODIFIED="1686963805749" TEXT="determineDeadline">
<icon BUILTIN="button_ok"/>
<node CREATED="1686874949274" ID="ID_355623699" MODIFIED="1686875277005">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <b>Definition</b>: der letzte Zeitpunkt an dem der Job starten darf
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
<node COLOR="#338800" CREATED="1686876114974" ID="ID_914514510" MODIFIED="1686963803996" TEXT="Argument: Timings">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1686878317271" ID="ID_1008817240" MODIFIED="1686964036173" TEXT="auch die FrameNr nun stets in den FrameCoord notwendig">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1008817240" ENDARROW="Default" ENDINCLINATION="305;14;" ID="Arrow_ID_1123194112" SOURCE="ID_1015776153" STARTARROW="None" STARTINCLINATION="438;-16;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1686960694336" HGAP="37" ID="ID_942074087" MODIFIED="1686963795512" TEXT="passenden ctor definieren..." VSHIFT="-4">
<node CREATED="1686960711741" ID="ID_198926017" MODIFIED="1686961091454" TEXT="Nutzungs-Konstext: Dispatcher-Pipeline">
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1686961051933" ID="ID_614235198" MODIFIED="1686963790897" TEXT="&#x27f9; (nominalTime, frameNr, portIDX)"/>
<node COLOR="#338800" CREATED="1686963750830" ID="ID_1514275316" MODIFIED="1686963782233" TEXT="&#xe4;ndern in Dispatcher::PipelineBuilder::pullFrom(port)">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1686875085793" ID="ID_922531661" MODIFIED="1687191669854" TEXT="determineLeeway">
<icon BUILTIN="hourglass"/>
<node CREATED="1686874949274" ID="ID_1842763016" MODIFIED="1686875271688">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <b>Definition</b>: Pufferzeit, um die der Job bereits fr&#252;her starten kann
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
<node CREATED="1686876114974" ID="ID_1618175383" MODIFIED="1686876118761" TEXT="Argument: Timings"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685802570984" ID="ID_1417369009" MODIFIED="1685802579931" TEXT="Daten-Anordnung f&#xfc;r Jobs vorbereiten">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1685802581055" ID="ID_1626475025" MODIFIED="1685802602595" TEXT="Umbau der Job-Struktur noch nicht gleich">
<icon BUILTIN="yes"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685802605380" ID="ID_1316148159" MODIFIED="1685802617500" TEXT="aber schon mal die ben&#xf6;tigten Daten analysieren">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685802625130" ID="ID_148642807" MODIFIED="1688601316599" TEXT="Kernproblem: welche Daten f&#xfc;r den Einzelfall">
<arrowlink COLOR="#fe3665" DESTINATION="ID_1442656492" ENDARROW="Default" ENDINCLINATION="-1161;156;" ID="Arrow_ID_1073485120" STARTARROW="None" STARTINCLINATION="-478;30;"/>
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685802655901" ID="ID_554344836" MODIFIED="1685802665981" TEXT="nomineller Zeitpunkt">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685802711785" ID="ID_296909810" MODIFIED="1685802724498" TEXT="JobFunctor">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685802725228" ID="ID_848236204" MODIFIED="1685802740418" TEXT="Parameter-Paket">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685802741818" ID="ID_87044302" MODIFIED="1685803707711" TEXT="DataSink(Handle)">
<linktarget COLOR="#4b3ea5" DESTINATION="ID_87044302" ENDARROW="Default" ENDINCLINATION="248;-35;" ID="Arrow_ID_594271482" SOURCE="ID_953619048" STARTARROW="None" STARTINCLINATION="669;36;"/>
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685986803653" ID="ID_666925478" MODIFIED="1686498849033" TEXT="Exit-Node(Referenz)">
<linktarget COLOR="#3e3f9b" DESTINATION="ID_666925478" ENDARROW="Default" ENDINCLINATION="426;-58;" ID="Arrow_ID_1306644139" SOURCE="ID_491497133" STARTARROW="None" STARTINCLINATION="311;19;"/>
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685802759365" ID="ID_377618445" MODIFIED="1685802764857" TEXT="InstanceID">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1685802968612" ID="ID_733865950" MODIFIED="1685802988724" TEXT="Problem: Variabilit&#xe4;t erm&#xf6;glichen und steuern">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1685987182252" ID="ID_635328003" MODIFIED="1685987190819" TEXT="zun&#xe4;chst pragmatisch angehen">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1685987314640" ID="ID_1818827605" MODIFIED="1685987329772" TEXT="zwei size_t-Parameter vorsehen">
<node CREATED="1685987350453" ID="ID_1727500517" MODIFIED="1685987360913" TEXT="&quot;srcArg&quot; und &quot;sinkArg&quot;"/>
<node CREATED="1685987363811" ID="ID_1364612519" MODIFIED="1685987421131" TEXT="der Funktor &#xfc;bersetzt die wieder in Pointer">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      das ist ad&#228;quat, da in diesem Bereich grunds&#228;tzlich nichts mehr gecheckt wird (das hat alles schon der Builder getan)
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1688998359233" HGAP="15" ID="ID_1834678491" MODIFIED="1693270990056" TEXT="ActivityTerm f&#xfc;r Scheduler erstellen" VSHIFT="1">
<linktarget COLOR="#fc5172" DESTINATION="ID_1834678491" ENDARROW="Default" ENDINCLINATION="-410;29;" ID="Arrow_ID_139741662" SOURCE="ID_1642755650" STARTARROW="None" STARTINCLINATION="-339;0;"/>
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1693239022015" ID="ID_1162137081" MODIFIED="1693258569252" TEXT="brauche stets Startzeit + Deadline">
<arrowlink COLOR="#b84d5d" DESTINATION="ID_1858134894" ENDARROW="Default" ENDINCLINATION="348;-10;" ID="Arrow_ID_1937059043" STARTARROW="None" STARTINCLINATION="10;223;"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1693258577776" ID="ID_590569538" MODIFIED="1693258595762" TEXT="diese Info ist implizit in der Planning-Pipeline vorhanden">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1686793470108" FOLDED="true" HGAP="-9" ID="ID_1024827381" MODIFIED="1687226399165" TEXT="JobPlanning_test" VSHIFT="7">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1686793496442" ID="ID_1934790434" MODIFIED="1686873178829" TEXT="simpleUsage">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1686793496443" ID="ID_1476053415" MODIFIED="1686964042077" TEXT="calculateDeadline">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1686880606987" FOLDED="true" ID="ID_1127724242" MODIFIED="1686964025478" TEXT="TIMEBOUND - Berechnung wohl nicht korrekt">
<icon BUILTIN="broken-line"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1686880632623" ID="ID_1121171298" MODIFIED="1686880760729" TEXT="Deadline = 0:04:59.908"/>
<node CREATED="1686880647956" ID="ID_1076439422" MODIFIED="1686880753302" TEXT="w&#xfc;rde erwarten">
<icon BUILTIN="info"/>
<node CREATED="1686880655108" ID="ID_1642227624" MODIFIED="1686880681337" TEXT="EngineLatency  = 80% der Frame-Dur  &#x2259; 32ms"/>
<node CREATED="1686880685685" ID="ID_1840636821" MODIFIED="1686880697546" TEXT="Job-Zeit habe ich hart gecodet auf 20ms"/>
<node CREATED="1686880702989" ID="ID_462263183" MODIFIED="1686880715360" TEXT="nominalTime = 200ms"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1686880716476" ID="ID_1325275413" MODIFIED="1686880748644" TEXT="&#xd83e;&#xdc32; 5h +200ms - 52ms"/>
</node>
<node COLOR="#435e98" CREATED="1686960633094" ID="ID_1015776153" MODIFIED="1686964036173" TEXT="ganz banal: FrameNummer in den FrameCoord nicht gesetzt">
<arrowlink DESTINATION="ID_1008817240" ENDARROW="Default" ENDINCLINATION="305;14;" ID="Arrow_ID_1123194112" STARTARROW="None" STARTINCLINATION="438;-16;"/>
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#338800" CREATED="1686964045025" ID="ID_1229789651" MODIFIED="1686964056421" TEXT="im Test explizit nachrechnen zur Dokumentation">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1686793496443" ID="ID_1152978912" MODIFIED="1687226393826" TEXT="setupDependentJob">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1687226442603" FOLDED="true" HGAP="-25" ID="ID_1588706779" MODIFIED="1687393224652" TEXT="JobPlanningPIpeline_test::integration()" VSHIFT="17">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1687226500123" ID="ID_667484740" MODIFIED="1687226507025" TEXT="3-stufige Prerequisites">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1687226507900" ID="ID_1756462027" MODIFIED="1687226520762" TEXT="PlanningPipeline-Front-End verifizieren">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1687226522249" ID="ID_461341429" MODIFIED="1687226552650" TEXT="visualise() : mark|nomTime|deadline">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1687226553736" ID="ID_1364608777" MODIFIED="1687312226495" TEXT="Deadline per Spec steuerbar machen">
<arrowlink COLOR="#8593a4" DESTINATION="ID_1322717339" ENDARROW="Default" ENDINCLINATION="-866;77;" ID="Arrow_ID_2406913" STARTARROW="None" STARTINCLINATION="443;31;"/>
<linktarget COLOR="#566fc3" DESTINATION="ID_1364608777" ENDARROW="Default" ENDINCLINATION="1055;-65;" ID="Arrow_ID_167964463" SOURCE="ID_1065139085" STARTARROW="None" STARTINCLINATION="590;34;"/>
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1687228400573" HGAP="35" ID="ID_442962812" MODIFIED="1687312226495" TEXT="auch die Engine-Latency" VSHIFT="19">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      sonst wird der Test sp&#228;ter instabil
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="hourglass"/>
<node CREATED="1687306680366" ID="ID_1892396695" MODIFIED="1687312226495" TEXT="schwierig....">
<icon BUILTIN="smiley-neutral"/>
</node>
<node CREATED="1687306685054" ID="ID_1200560410" MODIFIED="1687312226495" TEXT="Start Play-Process not weitgehend ungekl&#xe4;rt">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...aktuell denke ich, die Details der Timings kommen aus der RenderEnvironmentClosure (aber was das hei&#223;t sei dahingestellt....)
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#c12397" CREATED="1687309822442" ID="ID_1786133103" MODIFIED="1687312226495" TEXT="HA! 2 Fehler in der Impl">
<icon BUILTIN="smiley-oh"/>
<node COLOR="#435e98" CREATED="1687309867006" HGAP="25" ID="ID_1756952210" MODIFIED="1687312226495" TEXT="Wichtig: OutputLatency nur auf den top-Level-Job" VSHIFT="18">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1687312289435" ID="ID_269400382" MODIFIED="1687393222723" TEXT="use multiple Segments with different config">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685062609797" ID="ID_51155918" MODIFIED="1685062617634" TEXT="(re)-Trigger-Mechanismus">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685062620764" ID="ID_1394015015" MODIFIED="1685062646843" TEXT="Job analog zum JobTicket konstruieren">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      InvocationInstanceID invoKey{timeHash (nominalTime, provision.invocationSeed)};
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="flag-yellow"/>
</node>
<node COLOR="#5b280f" CREATED="1685062686774" ID="ID_548686360" MODIFIED="1685497417257">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      brauche dann aber einen Weg,
    </p>
    <p>
      um die Frame-Nummer zu transportieren
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#fb1618" DESTINATION="ID_548686360" ENDARROW="Default" ENDINCLINATION="-59;-351;" ID="Arrow_ID_567963048" SOURCE="ID_1900307953" STARTARROW="None" STARTINCLINATION="-369;18;"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1685062714666" ID="ID_1331730136" MODIFIED="1685062746213" TEXT="bisher habe ich mit der InvocationInstaceID &quot;getrickst&quot;">
<icon BUILTIN="info"/>
</node>
<node COLOR="#5b280f" CREATED="1685062757986" ID="ID_1983441100" MODIFIED="1685497399474" TEXT="TimeAnchor braucht die Frame-Nr">
<icon BUILTIN="messagebox_warning"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1685231530086" ID="ID_1373995955" MODIFIED="1685231549597" TEXT="sollte man nicht ohnehin neu re-Quantisieren?">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1685231562523" ID="ID_301732404" MODIFIED="1685231586603" TEXT="...denn das ist genau eine Basis-Operation des Grid"/>
<node CREATED="1685313146595" ID="ID_206943359" MODIFIED="1685313167055">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      im Job w&#228;re die <i>nominelle </i>Zeit gegeben
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
</node>
<node CREATED="1685497428581" ID="ID_708086030" MODIFIED="1685497517768" TEXT="mit dem Verzicht auf TimeAnchor l&#xf6;st sich auch dieses Problem">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      die aktuelle Frame-Nummer ist nun nur noch ein lokales Detail in der Planning-Pipeline; f&#252;r den re-Trigger-Job gen&#252;gt eine Zeitangabe, aus der dann eine realTime-Deadline abgeleitet wird
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1693270158886" ID="ID_988010346" MODIFIED="1693270168221" TEXT="Zeit-Steuerung und Deadlines">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1693269947939" ID="ID_1716270984" MODIFIED="1693271022228" TEXT="Untersuchung: Concurrent Job-planning">
<linktarget COLOR="#fe123a" DESTINATION="ID_1716270984" ENDARROW="Default" ENDINCLINATION="-2763;178;" ID="Arrow_ID_883377376" SOURCE="ID_370064738" STARTARROW="None" STARTINCLINATION="657;50;"/>
<icon BUILTIN="flag-pink"/>
<node CREATED="1693270175188" ID="ID_1754324125" MODIFIED="1693270573569" TEXT="sinnvolle Parametrisierung notwendig &#x2014; Restrisiko bleibt">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Das k&#246;nnte potentiell t&#252;ckisch werden; vermutlich ist es aber harmlos in der Praxis, sofern durch sinnvolle Parametrisierung f&#252;r ausreichenden Zeitpuffer gesorgt wird. Das <b>Restrisiko</b>&#160;besteht darin, da&#223; die Aktivierung bereits geplanter Jobs den Planungsvorgang &#252;berholt, welcher dann nachtr&#228;glich noch Vorraussetzungen aufschaltet auf einen bereits gestarteten Job; schlimmstenfalls gibt sogar der BlockFlow bereits die ganze Epoche frei, w&#228;hrend der aktuell laufende Planning-Chunk noch auf den damit verbundenen Activities arbeitet &#10233; <font color="#d33c58">data corruption, Segfault</font>
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1693270584100" ID="ID_1421532909" MODIFIED="1693270639808">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      bekommen wir das Problem durch Checks in den Griff &#8212;
    </p>
    <p>
      oder brauchen wir eine transaktionelle Schnittstelle?
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="help"/>
<node CREATED="1693270676024" ID="ID_670456864" MODIFIED="1693270704990" TEXT="man k&#xf6;nnte vorm &#xdc;bergeben jedes POSTs die aktuelle Zeit pr&#xfc;fen..."/>
<node COLOR="#338800" CREATED="1693270834579" ID="ID_362449143" MODIFIED="1693270967108" TEXT="damit ist ein &#xdc;berholen von Jobs aus dem aktuellen Chunk ausgeschlossen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...denn auch das Entnehmen und Starten von Jobs mu&#223; unter Grooming-Token erfolgen, kann also erst erfolgen, nachdem der Planning-Chunk komplett abgeschlossen wurde
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1693270719026" ID="ID_842390392" MODIFIED="1699566672295" TEXT="die Planung mu&#xdf; im Grooming-Modus stattfinden">
<linktarget COLOR="#4d42d4" DESTINATION="ID_842390392" ENDARROW="Default" ENDINCLINATION="-552;30;" ID="Arrow_ID_565359964" SOURCE="ID_1361396246" STARTARROW="None" STARTINCLINATION="358;16;"/>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1684967502141" ID="ID_470129345" LINK="https://issues.lumiera.org/ticket/1301" MODIFIED="1687465619217" TEXT="#1301 Render-Drive extrahieren">
<linktarget COLOR="#942e62" DESTINATION="ID_470129345" ENDARROW="Default" ENDINCLINATION="-1340;103;" ID="Arrow_ID_1563903339" SOURCE="ID_1293956051" STARTARROW="None" STARTINCLINATION="-1408;109;"/>
<font NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
</node>
<node CREATED="1512925253328" ID="ID_922277724" MODIFIED="1686620124221" TEXT="JobTicket">
<linktarget COLOR="#82597c" DESTINATION="ID_922277724" ENDARROW="Default" ENDINCLINATION="43;-81;" ID="Arrow_ID_941233317" SOURCE="ID_946385163" STARTARROW="None" STARTINCLINATION="-124;34;"/>
<icon BUILTIN="go"/>
<node CREATED="1681166276225" HGAP="5" ID="ID_877524227" MODIFIED="1686873733037" TEXT="ein Execution-Plan g&#xfc;litg f&#xfc;r ein Segment + ModelPort" VSHIFT="-7">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1681167308878" HGAP="34" ID="ID_43374924" MODIFIED="1686873721547" TEXT="Entwicklungs-Stand" VSHIFT="-2">
<icon BUILTIN="info"/>
<node COLOR="#435e98" CREATED="1681167354768" ID="ID_728804120" MODIFIED="1681167483523" TEXT="seit 2012">
<icon BUILTIN="forward"/>
<node CREATED="1681167362351" ID="ID_1740546811" MODIFIED="1681167371954" TEXT="Konzept und Struktur definiert"/>
<node CREATED="1681167383228" ID="ID_1536175314" MODIFIED="1681167401168" TEXT="noch g&#xe4;nzlich unklar wie die Auswertung / Job-Konstruktion funktionieren soll"/>
<node CREATED="1681167406089" ID="ID_1405586078" MODIFIED="1681167443145" TEXT="begr&#xfc;ndet durch die ebenfalls seinerzeit nur skizzierte Arbeitsweise der ProcNode"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1681167868332" ID="ID_1179827139" MODIFIED="1681167938418">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <u>unklar</u>: <font face="Monospaced" color="#43226f">JobTicket::startExploration()</font>&#160;&#8212; wie wird die eigentliche Planung eingef&#228;delt?
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1681167470153" ID="ID_1806361283" MODIFIED="1686873362861" TEXT="PlaybackVerticalSlice">
<icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1681839381459" ID="ID_697548050" MODIFIED="1686873358538" TEXT="im ersten Schritt: mit der neuen Struktur ohne Monaden nutzbar machen">
<arrowlink COLOR="#fe80b2" DESTINATION="ID_310889374" ENDARROW="Default" ENDINCLINATION="-503;-32;" ID="Arrow_ID_1927639949" STARTARROW="None" STARTINCLINATION="230;9;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1686873778318" ID="ID_1659931389" MODIFIED="1686873796563" TEXT="das ganze Konzept &#xbb;ExplorationState&#xab; komplett durch eine Iterator-Pipeline abgel&#xf6;st">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1686873367196" ID="ID_194165702" MODIFIED="1686873380336" TEXT="Bedeutung der dahinter stehenden ExitNode herausarbeiten">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1686873389042" ID="ID_1200787712" MODIFIED="1686873402712" TEXT="dahinter stehende JobFunctor + Parameter kl&#xe4;ren">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
<node CREATED="1681167533752" ID="ID_1794156121" MODIFIED="1681167538096" TEXT="Anforderungen">
<node COLOR="#5b280f" CREATED="1681167546919" ID="ID_1656777068" MODIFIED="1683836193612" TEXT="startExploration()">
<icon BUILTIN="button_cancel"/>
<node CREATED="1681239526094" ID="ID_1262163051" MODIFIED="1681239557592" TEXT="redundant">
<icon BUILTIN="closed"/>
</node>
<node CREATED="1681239544411" ID="ID_294349606" MODIFIED="1681239552793" TEXT="nur den Monaden geschuldet">
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#5b280f" CREATED="1681167559614" ID="ID_1796690712" MODIFIED="1683836188333" TEXT="discoverPrerequisites()">
<icon BUILTIN="button_cancel"/>
<node CREATED="1681239648250" ID="ID_543821327" MODIFIED="1681239654691" TEXT="lazy-on-demand gestartet"/>
<node CREATED="1681239661863" ID="ID_893985229" MODIFIED="1681239699686" TEXT="liefert Iterator &#xfc;ber alle Voraussetzungen"/>
<node CREATED="1681239735718" ID="ID_464013545" MODIFIED="1681239741761" TEXT="rekursive Tiefensuche"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1683836139691" ID="ID_1421998826" MODIFIED="1683836159152" TEXT="wird durch neue Impl ersetzt">
<icon BUILTIN="closed"/>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1683836197004" ID="ID_885444410" MODIFIED="1684870427760" TEXT="getPrerequisites">
<linktarget COLOR="#eb64a1" DESTINATION="ID_885444410" ENDARROW="Default" ENDINCLINATION="213;-1966;" ID="Arrow_ID_1011579074" SOURCE="ID_993440863" STARTARROW="None" STARTINCLINATION="-384;23;"/>
<icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1684870442737" ID="ID_728138659" MODIFIED="1684870510425" TEXT="implementiert durch Transformation interner Datenstrukturen">
<arrowlink COLOR="#92f974" DESTINATION="ID_599701197" ENDARROW="Default" ENDINCLINATION="-476;357;" ID="Arrow_ID_766289667" STARTARROW="None" STARTINCLINATION="391;17;"/>
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1683836203943" ID="ID_1933667832" MODIFIED="1683836212926" TEXT="liefert einen Iterator &#xfc;ber JobTicket&amp;"/>
<node CREATED="1683836213973" ID="ID_571829359" MODIFIED="1683836218117" TEXT="nur eine Ebene tief"/>
<node CREATED="1683836226928" ID="ID_580321819" MODIFIED="1683836458419" TEXT="f&#xfc;r RenderDrive">
<arrowlink COLOR="#fed5d7" DESTINATION="ID_1928295133" ENDARROW="Default" ENDINCLINATION="-463;400;" ID="Arrow_ID_1972838231" STARTARROW="None" STARTINCLINATION="-412;-64;"/>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1683845331533" ID="ID_113782501" MODIFIED="1683845345276" TEXT="ist es wirklich das was ich daf&#xfc;r brauche?">
<icon BUILTIN="help"/>
<node CREATED="1683845356009" ID="ID_682794726" MODIFIED="1683845392833" TEXT="mu&#xdf; Dependency-Paare erzeugen f&#xfc;r den Scheduler"/>
<node CREATED="1683845394796" ID="ID_1093414619" MODIFIED="1683845414877" TEXT="d.h. brauche stets das abh&#xe4;ngige Ticket ebenfalls"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1683897360871" ID="ID_726660737" MODIFIED="1683897457247" TEXT="schon mal im Test die M&#xf6;glichkeiten ausloten">
<arrowlink COLOR="#dd399a" DESTINATION="ID_1523682954" ENDARROW="Default" ENDINCLINATION="-371;858;" ID="Arrow_ID_1803678506" STARTARROW="None" STARTINCLINATION="267;-16;"/>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node CREATED="1697754985639" ID="ID_799408544" MODIFIED="1697755265544" TEXT="Verschaltung: Prerequisite &#x21b7; Dependent-Job">
<linktarget COLOR="#7a96a6" DESTINATION="ID_799408544" ENDARROW="Default" ENDINCLINATION="651;46;" ID="Arrow_ID_1767879061" SOURCE="ID_1696760158" STARTARROW="None" STARTINCLINATION="267;-849;"/>
<linktarget COLOR="#3e9bb9" DESTINATION="ID_799408544" ENDARROW="Default" ENDINCLINATION="1223;78;" ID="Arrow_ID_184937137" SOURCE="ID_107749731" STARTARROW="None" STARTINCLINATION="370;22;"/>
<icon BUILTIN="info"/>
<node CREATED="1697755215608" HGAP="42" ID="ID_70962304" MODIFIED="1697755242505" TEXT="wird in der Activity-Language im Scheduler genau so ben&#xf6;tigt" VSHIFT="-4">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
<node CREATED="1681167579899" ID="ID_428564529" MODIFIED="1681167585941" TEXT="createJobFor(FrameCoord)"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1681861351924" ID="ID_446140172" MODIFIED="1681861366116" TEXT="Builder-Mechanismus bereitstellen">
<icon BUILTIN="flag-yellow"/>
</node>
<node CREATED="1681167633659" ID="ID_374689298" MODIFIED="1681167759825" TEXT="abstrakt-referentiell">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      es wird das Vorhandensein abstrakt definierter Zustands-Deskriptoren impliziert, deren Sinn der Implementierung vorbehalten bleibt
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
<node CREATED="1681167647585" ID="ID_1721954285" MODIFIED="1681167652349" TEXT="Prerequisite(s)"/>
<node CREATED="1681167653769" ID="ID_1301968397" MODIFIED="1681167655572" TEXT="Provision"/>
</node>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1682622153437" ID="ID_524720976" MODIFIED="1682622219250" TEXT="zu kl&#xe4;ren...">
<icon BUILTIN="help"/>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1682622220974" ID="ID_136220191" MODIFIED="1682622223749" TEXT="NIL-Ticket?">
<icon BUILTIN="help"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1682887222315" ID="ID_786532593" MODIFIED="1682887238132" TEXT="brauche generischen NOP-Job">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1682890662127" ID="ID_952568490" MODIFIED="1682890669817" TEXT="#1296 NOP job">
<icon BUILTIN="hourglass"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1682890725729" ID="ID_10757245" MODIFIED="1682898144599" TEXT="vorerst mal als JobFunctor-Stub implementieren">
<arrowlink COLOR="#7b88b2" DESTINATION="ID_1533405151" ENDARROW="Default" ENDINCLINATION="-1179;197;" ID="Arrow_ID_1853160081" STARTARROW="None" STARTINCLINATION="445;-24;"/>
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1682890675172" ID="ID_1935070165" MODIFIED="1682890762548" TEXT="nicht klar ob das Output-Protokoll einfach &quot;leer&quot; laufen kann">
<icon BUILTIN="bell"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1682626547198" ID="ID_1401129193" MODIFIED="1686620211668" TEXT=" macht ein const JobTicket Sinn?">
<icon BUILTIN="help"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1682626583859" ID="ID_959446855" MODIFIED="1682626669241" TEXT="zun&#xe4;chst nur aus Gr&#xfc;nden der Interface-Logik eingef&#xfc;hrt">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      weil Segment inh&#228;rent ein mutabler Typ ist (ich denke an das Umbauen und Modifizieren), gibt der reine Access nur ein Segment const&amp; raus
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1682626596442" ID="ID_627099643" MODIFIED="1685982230662" TEXT="w&#xfc;rde darauf hinauslaufen, da&#xdf; JobTicket selber bei der Job-Planung nicht ver&#xe4;ndert wird"/>
<node COLOR="#435e98" CREATED="1686620184180" ID="ID_4906179" MODIFIED="1686620204117" TEXT="JobTicket ist effektiv immutable nach Konstruktion">
<icon BUILTIN="forward"/>
</node>
<node COLOR="#338800" CREATED="1686620213993" ID="ID_1624402855" MODIFIED="1686620234923" TEXT="insofern k&#xf6;nnen alle JobTicket const&amp; in einfache Referenzen verwandelt werden">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1682622228183" ID="ID_1660287725" MODIFIED="1682622235360" TEXT="Redundanz in der Storage?">
<icon BUILTIN="help"/>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1683764368252" ID="ID_304759385" MODIFIED="1683764379441" TEXT="Mehrere Channel oder Slots?">
<icon BUILTIN="help"/>
<node CREATED="1683765330093" ID="ID_1932564452" LINK="#ID_1519871278" MODIFIED="1683765371671" TEXT="vgl: Identit&#xe4;t eines CalcStream">
<icon BUILTIN="idea"/>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1683765386669" ID="ID_891227892" MODIFIED="1683765880297" TEXT="Entscheidung: jeder Slot entspricht einem m&#xf6;glichen CalcStream">
<arrowlink COLOR="#b9234e" DESTINATION="ID_1133872595" ENDARROW="Default" ENDINCLINATION="78;-135;" ID="Arrow_ID_1952784533" STARTARROW="Default" STARTINCLINATION="-66;89;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node CREATED="1683765419921" ID="ID_1234868983" MODIFIED="1683765568907" TEXT="es w&#xe4;re auch anders denkbar">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...uns anders w&#228;re es sogar erst mal viel plausibler; ich selber habe lange Zeit anders gedacht, n&#228;mlich das die Channel hier den Medienkan&#228;len entsprechen. Dann m&#252;&#223;te man aber jedem CalcStream noch ein Channel-Mapping mitgeben, und auch f&#252;r Prerequisites m&#252;&#223;te eine Transformation f&#252;r dieses Mapping mit angegeben werden. Daraus wird plausibel, warum ich diesen <i>naiven Ansatz</i>&#160;verworfen habe....
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1683765427639" ID="ID_394509672" MODIFIED="1683765784137" TEXT="diese Entscheidung ist eine Konsequenz des Builder-Ansatzes">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...denn der Builder-Ansatz bedeutet, da&#223; das semantische / dom&#228;nen-bezogene high-level-Modell explizit &#252;bersetzt wird in ein reines Ausf&#252;hrungs-Modell. Letzteres soll keine Intelligenz mehr zur Interpretation enthalten, sondern nur noch zwangsl&#228;ufig ausgef&#252;hrt werden. Dem entsprechend mu&#223; in diesem Ausf&#252;hrungs-Modell (low-level-Modell) jedweder <i>dynamische Auswertungszustand</i>&#160;soweit m&#246;glich vermieden werden. Zur konkreten Ausf&#252;hrung dennoch erforderlicher Zustand wird symbolisch repr&#228;sentiert (&quot;representational state&quot;)
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1685984734260" ID="ID_218785465" MODIFIED="1685985016494" TEXT="Verh&#xe4;ltnis zum ModelPort?">
<icon BUILTIN="help"/>
<node CREATED="1685984745585" ID="ID_121976349" MODIFIED="1685984779760" TEXT="f&#xfc;r jede Timeline gibt es einen festen geordneten Satz an ModelPorts">
<icon BUILTIN="info"/>
</node>
<node CREATED="1685984786196" ID="ID_374911492" MODIFIED="1685984819701" TEXT="der ModelPort bestimmt, auf welche konkrete ExitNode letztlich zugegriffen wird"/>
<node CREATED="1685984821489" ID="ID_131703123" MODIFIED="1685984844982" TEXT="&#x27f9; in jedem Segment gibt es zu jedem ModelPort eine ExitNode"/>
<node COLOR="#5b280f" CREATED="1685984852892" ID="ID_1859218444" MODIFIED="1685984879809" TEXT="man k&#xf6;nnte nun aber die Nr der Exit-Node einfach durch das JobTicket durchreichen">
<icon BUILTIN="button_cancel"/>
<node CREATED="1685984881202" ID="ID_79372787" MODIFIED="1685984942175" TEXT="geht nicht so">
<icon BUILTIN="closed"/>
</node>
<node CREATED="1685984892770" ID="ID_1858620144" MODIFIED="1685984934826" TEXT="denn die Prerequisites h&#xe4;ngen vom konkreten Render-Node-Graph ab">
<icon BUILTIN="info"/>
</node>
<node CREATED="1685984914595" ID="ID_1013067366" MODIFIED="1685985083511" TEXT="und Prerequisites sind wieder JobTickets">
<arrowlink COLOR="#274b82" DESTINATION="ID_1941085260" ENDARROW="Default" ENDINCLINATION="43;-1;" ID="Arrow_ID_1201489072" STARTARROW="None" STARTINCLINATION="-109;7;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1685984945792" ID="ID_1941085260" MODIFIED="1685985107798" TEXT="die Aufteilung nach ModelPort mu&#xdf; oberhalb der JobTickets erfolgen">
<arrowlink COLOR="#1d4574" DESTINATION="ID_377967489" ENDARROW="Default" ENDINCLINATION="-5;-27;" ID="Arrow_ID_265259078" STARTARROW="None" STARTINCLINATION="44;34;"/>
<linktarget COLOR="#274b82" DESTINATION="ID_1941085260" ENDARROW="Default" ENDINCLINATION="43;-1;" ID="Arrow_ID_1201489072" SOURCE="ID_1013067366" STARTARROW="None" STARTINCLINATION="-109;7;"/>
<icon BUILTIN="forward"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1684877569538" ID="ID_1875449471" MODIFIED="1684877576667" TEXT="Spezifikation schrittweise entwickeln">
<icon BUILTIN="pencil"/>
<node COLOR="#435e98" CREATED="1684877636400" ID="ID_896864831" MODIFIED="1684889708951" TEXT="JobTicket erstellen">
<linktarget COLOR="#5385a7" DESTINATION="ID_896864831" ENDARROW="Default" ENDINCLINATION="69;-1101;" ID="Arrow_ID_1685360717" SOURCE="ID_1606009220" STARTARROW="None" STARTINCLINATION="-344;28;"/>
<node CREATED="1681864758749" ID="ID_1590189421" MODIFIED="1684877476273" TEXT="JobFunktor"/>
<node CREATED="1684877477701" ID="ID_1567452222" MODIFIED="1684877486921" TEXT="ein Hash-Seed"/>
<node CREATED="1681864799687" ID="ID_750179276" MODIFIED="1681864834215" TEXT="Aufz&#xe4;hlung Prerequisites"/>
</node>
<node COLOR="#338800" CREATED="1686620035670" ID="ID_862442414" MODIFIED="1686620118378" TEXT="Umstellung: ExitNode als Spezifikation verwenden">
<arrowlink COLOR="#39ac70" DESTINATION="ID_826544806" ENDARROW="Default" ENDINCLINATION="-1208;77;" ID="Arrow_ID_1329123820" STARTARROW="None" STARTINCLINATION="-609;-29;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#5b280f" CREATED="1681167767260" FOLDED="true" ID="ID_247185233" MODIFIED="1685982428864" TEXT="JobTicket::ExplorationState">
<icon BUILTIN="button_cancel"/>
<node CREATED="1685982376368" ID="ID_879209020" MODIFIED="1685982383683" TEXT="war eine Folge des Monaden-Ansatzes"/>
<node CREATED="1685982384265" ID="ID_1557604605" MODIFIED="1685982427088" TEXT="ersetzt druch einen TransformIterator">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...zur &#220;bersetzung der internen Strukturen im JobTicket in eine Folge verschachtelter Prerequisite-JobTicket
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1686839549684" ID="ID_1993726562" MODIFIED="1686839569471" TEXT="Planning-Pipeline">
<icon BUILTIN="stop"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1686839583633" ID="ID_1246004743" MODIFIED="1686839611442" TEXT="Erzeugung / Einbindung">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1686839595101" ID="ID_820009401" MODIFIED="1686839603205" TEXT="Start Play-Proze&#xdf;">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1686839605000" ID="ID_1798920925" MODIFIED="1686839608748" TEXT="in CalcStram">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1686839648763" ID="ID_1362535653" MODIFIED="1686839653608" TEXT="Einbindung Dispatcher">
<icon BUILTIN="hourglass"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1698873001765" ID="ID_66017169" MODIFIED="1698873747015" TEXT="Manifestation des CalcStream mitf&#xfc;hren">
<linktarget COLOR="#465596" DESTINATION="ID_66017169" ENDARROW="Default" ENDINCLINATION="661;-268;" ID="Arrow_ID_1020406097" SOURCE="ID_1562414462" STARTARROW="None" STARTINCLINATION="967;89;"/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1698873027843" ID="ID_1446392402" MODIFIED="1699024283092" TEXT="im RenderDrive verankern">
<arrowlink COLOR="#4f4c79" DESTINATION="ID_155141069" ENDARROW="Default" ENDINCLINATION="-990;150;" ID="Arrow_ID_551073171" STARTARROW="None" STARTINCLINATION="-394;-38;"/>
</node>
<node CREATED="1698873015323" ID="ID_51768091" MODIFIED="1699024218029" TEXT="Planning: Manifestation an den Scheduler weitergeben">
<arrowlink COLOR="#d8566f" DESTINATION="ID_167266149" ENDARROW="Default" ENDINCLINATION="-891;-508;" ID="Arrow_ID_1627844312" STARTARROW="None" STARTINCLINATION="-585;31;"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1686839612561" ID="ID_1063970902" MODIFIED="1686839664503" TEXT="Aufbau">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1686839623817" ID="ID_1628576354" MODIFIED="1686839639856" TEXT="Dispatcher">
<icon BUILTIN="pencil"/>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1686839630592" ID="ID_172082311" MODIFIED="1686839636872" TEXT="Pipeline-Builder">
<icon BUILTIN="pencil"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1688998333890" ID="ID_1642755650" MODIFIED="1693270990056" TEXT="Integration mit Scheduler">
<arrowlink COLOR="#fc5172" DESTINATION="ID_1834678491" ENDARROW="Default" ENDINCLINATION="-410;29;" ID="Arrow_ID_139741662" STARTARROW="None" STARTINCLINATION="-339;0;"/>
<linktarget COLOR="#ff3681" DESTINATION="ID_1642755650" ENDARROW="Default" ENDINCLINATION="-874;84;" ID="Arrow_ID_846448701" SOURCE="ID_1433064275" STARTARROW="None" STARTINCLINATION="-223;-228;"/>
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1699563656019" ID="ID_1361396246" MODIFIED="1699566672294" TEXT="Job-Planung mu&#xdf; aus Konsistenzgr&#xfc;nden in einem Job laufen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...damit sie das Grooming-Token hat und damit Zugriff auf die Scheduler-Ressourcen. Au&#223;erdem ist damit ein konsitenter Rahmen sichergestellt: geplante Startzeiten sollten fr&#252;hestend 20ms danach beginnen
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#3c55cf" DESTINATION="ID_916265093" ENDARROW="Default" ENDINCLINATION="-74;-350;" ID="Arrow_ID_1386478293" STARTARROW="None" STARTINCLINATION="673;31;"/>
<arrowlink COLOR="#4d42d4" DESTINATION="ID_842390392" ENDARROW="Default" ENDINCLINATION="-552;30;" ID="Arrow_ID_565359964" STARTARROW="None" STARTINCLINATION="358;16;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1686839683285" ID="ID_36707137" MODIFIED="1687191788043" TEXT="JobPlanning">
<icon BUILTIN="pencil"/>
<node COLOR="#5b280f" CREATED="1686839707718" ID="ID_608495626" MODIFIED="1686839807822" TEXT="1.Entwurf (Monaden)">
<arrowlink COLOR="#596573" DESTINATION="ID_181262071" ENDARROW="Default" ENDINCLINATION="336;992;" ID="Arrow_ID_1922586461" STARTARROW="None" STARTINCLINATION="253;-27;"/>
<icon BUILTIN="button_cancel"/>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1686839823154" ID="ID_288857114" MODIFIED="1687191778565" TEXT="&#xdc;berarbeitung (&#xbb;PlaybackVerticalSlice&#xab;)">
<arrowlink COLOR="#5a459d" DESTINATION="ID_187208942" ENDARROW="Default" ENDINCLINATION="-864;159;" ID="Arrow_ID_426419648" STARTARROW="None" STARTINCLINATION="1067;-60;"/>
<icon BUILTIN="pencil"/>
</node>
<node CREATED="1686839910080" ID="ID_713870050" MODIFIED="1686839917267" TEXT="Aufbau">
<icon BUILTIN="info"/>
<node CREATED="1686839920541" ID="ID_1585147259" MODIFIED="1686839936339" TEXT="sitzt am Ende der Job-Planning-Pipeline"/>
<node CREATED="1686839944175" ID="ID_83456308" MODIFIED="1686839971157" TEXT="bekommt Planungs-Daten explizit"/>
<node CREATED="1686840065886" ID="ID_1226491985" MODIFIED="1686840080221" TEXT="aggregiert/konstruiert daraus...">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1686840081424" ID="ID_158368778" MODIFIED="1686840103748" TEXT="Render-Job">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1686840091595" ID="ID_1142084560" MODIFIED="1686840101352" TEXT="welche Infos braucht der Scheduler sonst?">
<icon BUILTIN="help"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1693238755343" HGAP="29" ID="ID_1858134894" MODIFIED="1693239064719" TEXT="Deadline-Service f&#xfc;r &#xbb;free wheeling&#xab; und background rendering" VSHIFT="10">
<arrowlink COLOR="#683034" DESTINATION="ID_917322834" ENDARROW="Default" ENDINCLINATION="445;-22;" ID="Arrow_ID_57467075" STARTARROW="None" STARTINCLINATION="494;26;"/>
<linktarget COLOR="#b84d5d" DESTINATION="ID_1858134894" ENDARROW="Default" ENDINCLINATION="348;-10;" ID="Arrow_ID_1937059043" SOURCE="ID_1162137081" STARTARROW="None" STARTINCLINATION="10;223;"/>
<linktarget COLOR="#743f58" DESTINATION="ID_1858134894" ENDARROW="Default" ENDINCLINATION="-547;24;" ID="Arrow_ID_313746889" SOURCE="ID_1276102583" STARTARROW="None" STARTINCLINATION="-1607;-121;"/>
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1693501342420" ID="ID_1800524836" MODIFIED="1693501398786" TEXT="async-IO mu&#xdf; Memory-Manager blocken">
<arrowlink COLOR="#fe3e84" DESTINATION="ID_623622318" ENDARROW="Default" ENDINCLINATION="-812;50;" ID="Arrow_ID_1026891728" STARTARROW="None" STARTINCLINATION="437;29;"/>
<icon BUILTIN="hourglass"/>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1512923605740" ID="ID_319280946" MODIFIED="1679783009427" TEXT="Fixture">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1679783052390" ID="ID_176106926" MODIFIED="1679783057287" TEXT="gr&#xfc;nden">
<linktarget COLOR="#fec499" DESTINATION="ID_176106926" ENDARROW="Default" ENDINCLINATION="-584;114;" ID="Arrow_ID_1229368159" SOURCE="ID_51005656" STARTARROW="None" STARTINCLINATION="-150;36;"/>
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1680563536655" ID="ID_1180632123" MODIFIED="1680565151548" TEXT="Fixture: einfacher Clip">
<linktarget COLOR="#f6e1c2" DESTINATION="ID_1180632123" ENDARROW="Default" ENDINCLINATION="-985;-61;" ID="Arrow_ID_1052251062" SOURCE="ID_1704865245" STARTARROW="None" STARTINCLINATION="-2243;270;"/>
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1681742004652" ID="ID_806189817" MODIFIED="1681742017755" TEXT="Addressierung ModelPort / ExitNode">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1681742024628" ID="ID_1133872595" MODIFIED="1683765880297" TEXT="bis auf welchen Level wird differenziert?">
<linktarget COLOR="#b9234e" DESTINATION="ID_1133872595" ENDARROW="Default" ENDINCLINATION="78;-135;" ID="Arrow_ID_1952784533" SOURCE="ID_891227892" STARTARROW="Default" STARTINCLINATION="-66;89;"/>
<icon BUILTIN="help"/>
<node CREATED="1685985051895" ID="ID_377967489" MODIFIED="1685986596181" TEXT="ein JobTicket gilt jeweils nur f&#xfc;r eine ExitNode">
<linktarget COLOR="#6290c0" DESTINATION="ID_377967489" ENDARROW="Default" ENDINCLINATION="1458;-612;" ID="Arrow_ID_1683217879" SOURCE="ID_545092486" STARTARROW="None" STARTINCLINATION="36;5;"/>
<linktarget COLOR="#1d4574" DESTINATION="ID_377967489" ENDARROW="Default" ENDINCLINATION="-5;-27;" ID="Arrow_ID_265259078" SOURCE="ID_1941085260" STARTARROW="None" STARTINCLINATION="44;34;"/>
<icon BUILTIN="yes"/>
<node CREATED="1685985128633" ID="ID_1088306991" MODIFIED="1685985343741" TEXT="Knackpunkt sind die Prerequisites">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      denn diese w&#228;ren rekursiv wieder JobTickets; w&#252;rde man die Aufteilung nach ModelPort <i>in das JobTicket selber</i>&#160;hineinnehmen, dann w&#228;ren auch die Prerequisites wieder nach ModelPort untergliedert; das wiederspricht den Freiheitsgraden der Struktur (Prerequisites sind an die einzelne ExitNode gebunden)
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
<node CREATED="1685986378709" ID="ID_758202290" MODIFIED="1685986501318" TEXT="weiteres Argument: Storage">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Grunds&#228;tzlich ist es erst mal egal, man braucht eben einen Descriptor-Record pro Segment pro ModelPort. Da aber JobTickets on-demand erzeugt werden, wird der Aufwand hierf&#252;r verschoben in die Job-Planung (und findet gar nicht statt, solange eine bestimmte ExitNode konkret noch gar nicht bespielt wurde)
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1685986221696" ID="ID_651519223" MODIFIED="1685986274220" TEXT="f&#xfc;r das JobTicket ist die ExitNode nur ein Functor-Parameter-Wert"/>
<node CREATED="1685986283724" ID="ID_1876084248" MODIFIED="1685986316444" TEXT="analog zum (aber separat) Invocation-Instance-Seed"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1681742053502" ID="ID_122410804" MODIFIED="1681742065769" TEXT="Idee: auch noch Channel aufl&#xf6;sen">
<linktarget COLOR="#daffc5" DESTINATION="ID_122410804" ENDARROW="Default" ENDINCLINATION="-352;-925;" ID="Arrow_ID_194808318" SOURCE="ID_804638831" STARTARROW="None" STARTINCLINATION="544;39;"/>
<icon BUILTIN="idea"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685055490012" ID="ID_583565421" MODIFIED="1685055782306" TEXT="Komplikation">
<arrowlink COLOR="#f82653" DESTINATION="ID_444040470" ENDARROW="Default" ENDINCLINATION="104;-230;" ID="Arrow_ID_298674260" STARTARROW="None" STARTINCLINATION="-271;47;"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1685055516660" ID="ID_256799905" MODIFIED="1685055529299" TEXT="es k&#xf6;nnte OutputConnection mit mehreren Feeds geben"/>
<node CREATED="1685055530054" ID="ID_161856895" MODIFIED="1685055709088" TEXT="diese M&#xf6;glichkeit halte ich mir bewu&#xdf;t offen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Und zwar, weil es so am Einfachsten ist f&#252;r die Implementierung der OutputConnection = slot.allocate() ....
    </p>
    <p>
      Denn es kann durchaus so sein, da&#223; sich hinter einer Connection gleich mehrere Sinks auf Hardware / Driver-Ebene befinden. In diesem Fall w&#228;re es andernfalls notwendig, wieder innerhalb der OutputConnection ein de-Multiplexing zu machen. Und das will ich nicht, sowas geh&#246;rt in die Engine. Der OutputSink ist wirklich nur noch ein Buffer, der mit gewissen Timing-Constraints <i>bespielt werden mu&#223;</i>
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1681742068918" ID="ID_1859739609" MODIFIED="1681742080663" TEXT="Frage: sinnvoll f&#xfc;r den ModelPort?">
<icon BUILTIN="help"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1681742084938" ID="ID_202138467" MODIFIED="1681742119293" TEXT="ExitNode k&#xf6;nnte nach Bedarf differenziert sein">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1681742124316" ID="ID_1362949228" MODIFIED="1681742128580" TEXT="Diskussion">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1681742129796" ID="ID_189050777" MODIFIED="1681742134141" TEXT="pro">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1681838331575" ID="ID_239877433" MODIFIED="1681838347337" TEXT="einfachere Primitive im eigentlichen Render-Netzwerk"/>
<node CREATED="1681838400094" ID="ID_1608524064" MODIFIED="1681838415480" TEXT="ein pervasives, fast &#xfc;berall irrelevantes Meta-Datum f&#xe4;llt weg"/>
<node CREATED="1681838767717" ID="ID_1175513068" MODIFIED="1681838892572" TEXT="potentielle Komplexit&#xe4;ten der Channel-Selektion werden in den Build-Proze&#xdf; verlagert">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...es ist keineswegs sicher, da&#223; wir mit einer blo&#223;en Addressierung per Channel-Nummer auskommen; es k&#246;nnte durchaus passieren, da&#223; Erweiterung auf eine generische Selektions-Sprache notwendig wird
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1681742131726" ID="ID_1521704856" MODIFIED="1681742134141" TEXT="contra">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1681838010874" ID="ID_646358803" MODIFIED="1681838019972" TEXT="identisch pro channel aufgedoppelte Pipelines">
<node CREATED="1681838041838" ID="ID_1433619565" MODIFIED="1681838054376" TEXT="...m&#xfc;&#xdf;ten tats&#xe4;chlich nur einmal geplant und realisiert werden"/>
<node CREATED="1681838058588" ID="ID_1606171759" MODIFIED="1681838075957" TEXT="sie werden dann lediglich mehrfach mit anderer Parametrisierung bespielt"/>
<node CREATED="1681838082068" ID="ID_262950828" MODIFIED="1681838121263" TEXT="die Parametrisierung wird typischerweise lediglich zur Quelle/Mediencontainer druchgereicht"/>
</node>
<node CREATED="1681838495277" ID="ID_314464979" MODIFIED="1681838672355" TEXT="f&#xfc;hrt zumindest zu massiver Duplikation von Deskriptoren und Metadaten zur Steuerung">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      man denke nur an higher-order Ambisonics...
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1681742137539" ID="ID_1756656706" MODIFIED="1681742142187" TEXT="Entscheidung">
<icon BUILTIN="hourglass"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1681742149953" ID="ID_1733561384" MODIFIED="1681742202136" TEXT="erst mal andere Teile bauen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      den Channel-Parameter kann man leichter wegfallen lassen, als ihn nachtr&#228;glich durchzuf&#228;deln; die Entscheidung selber wird erst relevant, wenn wir das low-Level-Model konkretisieren
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="flag-yellow"/>
</node>
<node CREATED="1683809347294" ID="ID_1241935016" MODIFIED="1683809573348" TEXT="l&#xe4;uft darauf hinaus da&#xdf; nein!">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...Kernargument ist: das Multiplexing von Medienchannels ist Teil der Berechnungen selber, tritt also nicht auf Interface-Ebene auf. Selbst die Funktionalit&#228;t des <b>Switch-Board</b>&#160;im GUI-Player wird <i>in der Renderpipeline selber</i>&#160;implementiert...
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#889fa8" DESTINATION="ID_1346581014" ENDARROW="Default" ENDINCLINATION="80;-96;" ID="Arrow_ID_377227941" STARTARROW="None" STARTINCLINATION="-288;25;"/>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1683766106245" ID="ID_1346581014" MODIFIED="1683809411187">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Kl&#228;rung: &#8222;Channel&#8220; ist hier eine <i>Port-Nummer</i>
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Dies folgt aus den &#220;berlegungen zur Identit&#228;t eines CalcStream, sowie aus dem Builder-Ansatz: es handelt sich demnach nicht um den Medien-Channel, sondern nur um die Auswahl aus N an dieser Stelle theoretisch m&#246;glichen CalcStrams / Daten-Str&#246;men. Im klassischen Standard-Beispiel g&#228;be es also einen Port f&#252;r Video und einen Port f&#252;r Sound, und ein Play-Proze&#223; k&#246;nnte optional nur einen oder alle beide abspielen, aber jeder von diesen geht an ein anderes Device und l&#228;uft deshalb selbst&#228;ndig. Die Zuordnung eines solchen m&#246;glichen Datenstroms zu einer ganz bestimmten Processing-Pipeline ist schon im Build-Vorgang vorentschieden worden, und ist im Job-Ticket jeweils f&#252;r ein Segment komplett voreingestellt; soll dann konkret ein bestimmter Datenstrom erzeugt werden, mu&#223; man nur noch diese Port-Nummer anzugeben, um daf&#252;r die passenden Jobs zu generieren
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#889fa8" DESTINATION="ID_1346581014" ENDARROW="Default" ENDINCLINATION="80;-96;" ID="Arrow_ID_377227941" SOURCE="ID_1241935016" STARTARROW="None" STARTINCLINATION="-288;25;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node CREATED="1683766676673" ID="ID_1958408222" MODIFIED="1683766698835" TEXT="alle weitere Flexibilit&#xe4;t ist im JobFunktor bereits vorverdrahtet"/>
<node CREATED="1683766700206" ID="ID_945659088" MODIFIED="1683809030223" TEXT="es ist sinnvoll, die Segmentation &#xfc;ber alle Port-Nummern hinweg zu machen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Dies ist erst mal nicht offensichtlich, denn grunds&#228;tzlich wird ja immer auf einheitliche Topologie hin segmentiert; es w&#228;re sehr wohl denkbar, da&#223; z.B. der Sound fast durchgehend nur eine einzige Topologie der Processing-Pipeline hat, w&#228;hrend f&#252;r Video mehrfach die Topologie gewechselt wird (Fades, Overlays...). Aber eine praktische Absch&#228;tzung ergibt, da&#223; im Regelfall f&#252;r jeden Clip sowohl die Sound-Quelle, alsauch die Video-Quelle jeweils spezifish ist, auch bez&#252;glich des Offset im Quellmedium; wenn ein Clip wechselt, dann wechseln sowohl Bild und Ton. Daher ist es wahrscheinlich, da&#223; eine feingranularer angesetzte Segmentation in der Regel redundant w&#228;re. Und diese Redundanz w&#228;re kostspielig, denn die Zahl der Segmente ist erwartungsgem&#228;&#223; hoch.
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#666dd9" DESTINATION="ID_793444617" ENDARROW="Default" ENDINCLINATION="249;-20;" ID="Arrow_ID_632376357" STARTARROW="None" STARTINCLINATION="-454;17;"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685055718338" ID="ID_444040470" MODIFIED="1685055775753" TEXT="Aufdr&#xf6;seln der Kan&#xe4;le l&#xf6;sen">
<linktarget COLOR="#f82653" DESTINATION="ID_444040470" ENDARROW="Default" ENDINCLINATION="104;-230;" ID="Arrow_ID_298674260" SOURCE="ID_583565421" STARTARROW="None" STARTINCLINATION="-271;47;"/>
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1685055799951" ID="ID_1193173193" MODIFIED="1685055809850" TEXT="CalcStream::sendToOutput (play::DataSink)">
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685055837068" ID="ID_1575034395" MODIFIED="1685058047977" TEXT="hier mu&#xdf; ggfs. eine Sub-Adressierung eingerichtet werden">
<arrowlink COLOR="#a95a75" DESTINATION="ID_947140645" ENDARROW="Default" ENDINCLINATION="188;21;" ID="Arrow_ID_686370160" STARTARROW="None" STARTINCLINATION="747;-40;"/>
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685056049002" HGAP="40" ID="ID_1330403717" LINK="https://issues.lumiera.org/ticket/1297" MODIFIED="1685056111380" TEXT="#1297 uniform handling of channels and output slots" VSHIFT="10">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1685056117433" ID="ID_543449333" MODIFIED="1685056202074" TEXT="Wunsch: 1:1 Relation ModelPort &#x27f7; Sink">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1685056152876" ID="ID_287943939" MODIFIED="1685056199158" TEXT="Realit&#xe4;t: eine OutputConnection k&#xf6;nnte mehrere Sinks erfordern">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1685056209644" ID="ID_915182218" MODIFIED="1685056239177" TEXT="ich hatte zun&#xe4;chst gedacht, dann eben Channels innerhalb des ModelPort mitzuschleifen">
<icon BUILTIN="info"/>
</node>
<node CREATED="1685056240542" ID="ID_809031507" MODIFIED="1685056271549" TEXT="aber das f&#xfc;hrt zu unerw&#xfc;nschter Redundanz im JobTicket und Model">
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1685057413132" HGAP="58" ID="ID_1258310036" LINK="https://issues.lumiera.org/ticket/1297#comment:1" MODIFIED="1685057450791" TEXT="Widerspruch zum Design f&#xfc;r Output-Connections">
<icon BUILTIN="broken-line"/>
<node CREATED="1685057458886" ID="ID_1801490861" MODIFIED="1685057497316" TEXT="bisher: eine Allocation &#x27f6; viele Sinks">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      und alle m&#252;ssen an dieser Stelle auf einen Schlag angebunden werden
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1685057500160" ID="ID_573982703" MODIFIED="1685057531295" TEXT="aber: eigentlich m&#xfc;&#xdf;ten hier mehrere ModelPorts beigestellt werden">
<icon BUILTIN="yes"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685057532500" ID="ID_1172676625" MODIFIED="1685057709903" TEXT="&#x27f9; brauche ein Matching auf passende Ports">
<arrowlink COLOR="#fb1160" DESTINATION="ID_106757636" ENDARROW="Default" ENDINCLINATION="-78;630;" ID="Arrow_ID_1247503914" STARTARROW="None" STARTINCLINATION="1533;-30;"/>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1686014326348" ID="ID_1552872944" MODIFIED="1686014444967" TEXT="Thema: Addressierung von ModelPorts">
<linktarget COLOR="#945b74" DESTINATION="ID_1552872944" ENDARROW="Default" ENDINCLINATION="-661;-43;" ID="Arrow_ID_1211078783" SOURCE="ID_1087682281" STARTARROW="None" STARTINCLINATION="-496;30;"/>
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1686017254862" ID="ID_1981217285" MODIFIED="1686017261083" TEXT="wo ist was sinnvoll?">
<icon BUILTIN="help"/>
<node CREATED="1686017262347" ID="ID_198460233" MODIFIED="1686017272718" TEXT="Addressierung als ID">
<node CREATED="1686017300862" ID="ID_764101202" MODIFIED="1686017313016" TEXT="die ID ist (wahrscheinlich) stabil"/>
</node>
<node CREATED="1686017273682" ID="ID_670985811" MODIFIED="1686017280610" TEXT="Addressierung per Index-Nr">
<node CREATED="1686017369441" ID="ID_49340826" MODIFIED="1686017384854" TEXT="&#xfc;berall in der Engine und im Job-Planning gen&#xfc;gt eine Slot-Nr"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1686017387713" ID="ID_114295882" MODIFIED="1686017404291" TEXT="m&#xf6;gliche &#xdc;bersetzung">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1686017441247" ID="ID_1297182726" MODIFIED="1686017449146" TEXT="sinnvollerweise an einem Eingangs-Punkt">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1686017478558" ID="ID_1523741879" MODIFIED="1686017490165" TEXT="naheliegend: die Segmentation">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1686587237685" ID="ID_1617624236" MODIFIED="1686587276120" TEXT="mu&#xdf; dann aber im Dispatcher (oder RenderEnvironmentClosure) &#xfc;bersetzt werden">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1686017451774" ID="ID_377104983" MODIFIED="1686017492895" TEXT="dort mu&#xdf; eine Map-Datenstruktur gepflegt werden">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1686587293266" ID="ID_223711252" MODIFIED="1686587356943" TEXT="im CalcStream darf nur noch eine Index-Nr stehen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Begr&#252;ndung: wir wollen definitiv nicht f&#252;r jedes Segment wieder einen Map-Lookup machen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1681742018442" ID="ID_596503548" MODIFIED="1681742022940" TEXT="Addressierung JobTicket">
<icon BUILTIN="flag-yellow"/>
<node COLOR="#338800" CREATED="1682626961915" ID="ID_1266598906" MODIFIED="1682626982746" TEXT="direkter Zugriff auf das Segment nach Zeit-Partitionierung">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1682626986572" ID="ID_785390936" MODIFIED="1682627018574" TEXT="hierzu stets komplett ersch&#xf6;pfende Partitionierung notwendig">
<icon BUILTIN="flag-yellow"/>
<node COLOR="#338800" CREATED="1682627019680" ID="ID_1706448688" MODIFIED="1682627042580" TEXT="Segmentation mit TimeSpan::ALL initialisiert">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1682627043510" ID="ID_1053406793" LINK="#ID_1176991982" MODIFIED="1682627105439" TEXT="Implementierung von splitSplice() mu&#xdf; Konsistenz sicherstellen">
<icon BUILTIN="bell"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685999849385" ID="ID_1436753704" MODIFIED="1685999865729" TEXT="Anbindung Segment &#x27fc; Node-Graph">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685999881980" ID="ID_1237481687" MODIFIED="1685999917839" TEXT="Koppel-Facade: &#xbb;NodeGraphAttachment&#xab;">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1686184053235" ID="ID_1172335387" MODIFIED="1686184459579" TEXT="Achtung: Gefahr von &#xbb;dangling references&#xab;">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Nach aktuellem Stand verweist das JobTicket per Pointer oder Referenz auf ein ExitNode-Objekt, und diese Referenz wird sp&#228;ter an den JobFunktor durchgereicht. Irgendwo dahinter verbirgt sich <b>ein Element mit fester Identit&#228;t</b>&#160;(Referenz-Semantik), aber ich wei&#223; noch nicht wo genau. Meine Vorstellung ist, da&#223; das Segment an einer festen Position im Speicher fixiert bleibt, solange noch CalcStreams bzw. Jobs aktiv sind, die die dahinter h&#228;ngenden Render-Nodes referenzieren &#8212; das ist die Grundidee hinter dem &#187;AllocationCluster&#171;
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="clanbomber"/>
</node>
<node CREATED="1686184460760" ID="ID_1127858198" MODIFIED="1686184569008" TEXT="behandle trotzdem dieses Descriptor-Objekt mit value-Semantik">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...und zwar, um den Umgang mit der Datenstrutur und das Testing nicht unn&#246;tig zu verkomplizieren; ich hoffe, der Umstand, da&#223; ExitNode als MoveOnly markiert ist, sorgt f&#252;r ausreichend Sicherheit (deshalb d&#252;rfte sich die Collection der ExitNodes nicht ohne Weiteres kopieren lassen)
    </p>
  </body>
</html></richcontent>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1686186280320" ID="ID_944603905" MODIFIED="1686186296287" TEXT="vorerst sogar &quot;Clonable&quot;">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1686186306847" ID="ID_651846502" MODIFIED="1686186315175" TEXT="weil das Memory-Management noch fehlt"/>
<node CREATED="1686186316027" ID="ID_136341744" MODIFIED="1686186330533" TEXT="Alternative w&#xe4;re: Pointer auf shared descriptor"/>
</node>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1686185213666" ID="ID_1644196914" MODIFIED="1686185224270" TEXT="k&#xf6;nnen Node-Pipelines shared sein?">
<icon BUILTIN="help"/>
<node CREATED="1686185229717" ID="ID_1132211364" MODIFIED="1686185398383" TEXT="das ist das eigentliche Problem hinter der Move/Clone-Semantik der ExitNode">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Also konkret die Frage: kann ein-und-diesselbe ProcNode mit allen darunter h&#228;ngenden Strukturen gleichzeitig von mehreren Segmenten verwendet werden? Das klingt zun&#228;chst einmal durchaus nach einer plausiblen M&#246;glichkeit, da ja die Render-Nodes selber nichts &#252;ber ihre nominelle Zeit wissen sollen; demnach w&#228;ren die Render-Nodes eine <b>persistente Datenstruktur</b>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1686185406665" ID="ID_1472855858" MODIFIED="1686185440562">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      &#10233; Render-Nodes als <b>persistente Datenstruktur</b>&#160;behandeln?
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1686266765287" ID="ID_1482721725" MODIFIED="1686266805196">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      &#8623; ABER dann brauchen wir einen <i>Ref-count...</i>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1686263854024" ID="ID_1705328706" MODIFIED="1686263879705" TEXT="mu&#xdf; f&#xfc;r ExitNode passenden JobFunctor bereitstellen">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node CREATED="1685999923288" ID="ID_43857242" MODIFIED="1685999987298" TEXT="grunds&#xe4;tzlich">
<icon BUILTIN="yes"/>
<node CREATED="1686000020721" ID="ID_1371246719" MODIFIED="1686000111143" TEXT="Varianten werden explizit ausgefaltet">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      im low-level-Model selber gibt es keine Entscheidungslogik mehr; sofern es mehrere Auspr&#228;gungen oder Verzweigungen gibt, werden diese als Zweige im Modell explizit gemacht
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1685999948139" ID="ID_1191809084" MODIFIED="1686000234616" TEXT="konkrete Auspr&#xe4;gung im Node-Graph">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      die konkrete Auspr&#228;gung jedweder Eigenschaft findet im Node-Graph statt, nicht sonstwo in der Fixture. Beispielsweise ist im Node-Graph festgelegt, wo Caching stattfinden kann, oder welche Sub-Zweige als Prerequisites separat gescheduled werden. Die ExitNode aggregiert diese Informationen nur, und im JobTicket werden sie aufgeh&#228;ngt
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1685999962811" ID="ID_299964044" MODIFIED="1686000278191" TEXT="Anordnung derselben: per Ankopplung an die Fixture">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      sofern irgend eine Eigenschaft <i>renderbar</i>&#160;ist, gibt es eine Ankn&#252;pfung aus einem Segment per ModelPort-Nr in das Modell
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1687302599709" ID="ID_1237500630" MODIFIED="1687302620405" TEXT="Render-Node-Invocation">
<icon BUILTIN="hourglass"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1687302631000" ID="ID_229742286" MODIFIED="1687302644211" TEXT="erster Enwurf von 2010">
<icon BUILTIN="info"/>
</node>
<node CREATED="1687302645431" ID="ID_1377069136" MODIFIED="1687302651074" TEXT="Aufruf-Schnittstelle"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1687302361438" ID="ID_519176123" MODIFIED="1687302695659" TEXT="Umgang mit der DataSink">
<linktarget COLOR="#7d3f56" DESTINATION="ID_519176123" ENDARROW="Default" ENDINCLINATION="-1337;-138;" ID="Arrow_ID_1252848442" SOURCE="ID_819115625" STARTARROW="None" STARTINCLINATION="-721;60;"/>
<icon BUILTIN="hourglass"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1685986971920" ID="ID_1354248617" MODIFIED="1685987005822" TEXT="vorsicht ref-counting &#x27f9; darf nicht in den Job-Parameter">
<icon BUILTIN="yes"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685987007275" ID="ID_953619048" MODIFIED="1685987465547" TEXT="daher per Pointer auf den Calc-Stream verweisen">
<arrowlink COLOR="#4b3ea5" DESTINATION="ID_87044302" ENDARROW="Default" ENDINCLINATION="248;-35;" ID="Arrow_ID_594271482" STARTARROW="None" STARTINCLINATION="669;36;"/>
<arrowlink COLOR="#4b3ea5" DESTINATION="ID_1078372838" ENDARROW="Default" ENDINCLINATION="416;-39;" ID="Arrow_ID_209843242" STARTARROW="None" STARTINCLINATION="669;36;"/>
<icon BUILTIN="flag-yellow"/>
</node>
<node COLOR="#435e98" CREATED="1687217341462" ID="ID_877655155" MODIFIED="1687218491894" TEXT="Problem: API-Design und Builder-Operationen">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1687218323318" ID="ID_221977098" MODIFIED="1687218375802" TEXT="eigentlich ist diese Funktion nun &#xfc;berfl&#xfc;ssig">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...damit, da&#223; das JobPlanning bereits in der Mitte der Pipeline erzeugt wird...
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1687218376742" ID="ID_1708598294" MODIFIED="1687218463295" TEXT="aber ich m&#xf6;chte eine explizite Terminal-Funktion">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      hier spielt auch mit, da&#223; man das expandPrerequisites() stets weglassen kann (das folgt schon aus den Eigenschaften einer solchen Expander-Funktion &#8212; sie mu&#223; auch ohne Expansion <i>funktionieren</i>)
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1687218467222" ID="ID_234544119" MODIFIED="1687218482227" TEXT="und &quot;sendTo(sink)&quot; ist halt einfach zu sch&#xf6;n">
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1687218507489" ID="ID_1398426631" MODIFIED="1687219641251">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <u>Vorl&#228;ufig</u>: einen Transformer vorsehen, der das JobPlanning noch manipulieren kann
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Wichtig: dieser Transformer mu&#223; explizit JobPlanning&amp; als Ergebnistyp deklarieren: damit bekommt man die &#187;Referenz-Variante&#171; vom ItemWrapper &#8212; leider aber auch eine zus&#228;tzliche Indirektion, die nicht wegoptimiert werden kann (weil sie je nach darunter liegendem Expander woanders hin zeigt)
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
<node CREATED="1682611423253" ID="ID_1136070257" MODIFIED="1682611949376" TEXT="Vorschau: Datenstruktur">
<linktarget COLOR="#735061" DESTINATION="ID_1136070257" ENDARROW="Default" ENDINCLINATION="-651;-968;" ID="Arrow_ID_1804652676" SOURCE="ID_296140708" STARTARROW="None" STARTINCLINATION="-518;37;"/>
<node CREATED="1682611979955" ID="ID_853916933" MODIFIED="1682611992260">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      es gibt einen <b>commit</b>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1682612009427" ID="ID_1994458742" MODIFIED="1682612053494" TEXT="vermutlich eine referentielle nicht-intrusive Linked-List">
<node CREATED="1682612056884" ID="ID_303611553" MODIFIED="1682612072158">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Eintr&#228;ge sind <i>woanders </i>alloziert
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1682612075770" ID="ID_1368353614" MODIFIED="1682612084845" TEXT="ein Eintrag kann in mehreren Instanzen der Liste liegen"/>
<node CREATED="1682612094504" ID="ID_250365879" MODIFIED="1682612109226" TEXT="&#x27f9; die umgebaute Liste kann auf einen Schlag aktualisiert werden"/>
</node>
<node CREATED="1682612125996" ID="ID_34027511" MODIFIED="1682612133736" TEXT="re-Partitionierung per Builder">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node CREATED="1682611408260" ID="ID_408388335" MODIFIED="1682611410703" TEXT="Interface">
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1683762819868" ID="ID_876134804" MODIFIED="1683762858623" TEXT="Fragen / zu kl&#xe4;ren">
<icon BUILTIN="help"/>
<node CREATED="1683764133596" ID="ID_499268961" MODIFIED="1683764143358" TEXT="Struktur und Kardinalit&#xe4;t">
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1683764154161" ID="ID_1601922359" MODIFIED="1683764220217" TEXT="wie viele Fixtures gibt es?">
<icon BUILTIN="help"/>
<node CREATED="1683809057766" ID="ID_1299037485" MODIFIED="1683809073293">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      nur eine einzige, <i>die Aktive</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1683809084326" ID="ID_470102835" MODIFIED="1683809104940" TEXT="innerhalb der Fixture gibt es jedoch eine Gruppierung nach effektiver Timeline"/>
<node CREATED="1683809110335" ID="ID_506724008" MODIFIED="1683809142582" TEXT="jedwede &#xc4;nderung zieht eine partielle transaktionale Modifikation der Fixture nach sich"/>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1683764165757" ID="ID_793444617" MODIFIED="1683809030223" TEXT="wie viele Segmentations gibt es?">
<linktarget COLOR="#666dd9" DESTINATION="ID_793444617" ENDARROW="Default" ENDINCLINATION="249;-20;" ID="Arrow_ID_632376357" SOURCE="ID_945659088" STARTARROW="None" STARTINCLINATION="-454;17;"/>
<icon BUILTIN="help"/>
<node CREATED="1683767134444" ID="ID_666242122" MODIFIED="1683767143720" TEXT="nur eine einzige pro Timeline">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1683767157932" ID="ID_1466742626" MODIFIED="1683767175611" TEXT="jedes Segment bietet N Port-Nummern"/>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1683764191932" ID="ID_1401439878" MODIFIED="1683764220219" TEXT="was ist das Verh&#xe4;ltnis von ModelPorts und Segmenten?">
<icon BUILTIN="help"/>
<node CREATED="1683809160424" ID="ID_652410728" MODIFIED="1683809196086" TEXT="jeder m&#xf6;glicherweise unabh&#xe4;ngig laufende Output-stream wird durch einen Port repr&#xe4;sentiert"/>
<node CREATED="1683809196931" ID="ID_1982770217" MODIFIED="1683809220505" TEXT="ModelPorts entstehen also als effektives Residuum des Build-Vorganges"/>
<node CREATED="1683809222486" ID="ID_407178268" MODIFIED="1683809261695" TEXT="ModelPorts sind jeweils noch einer Timeline (und separaten Segmentation) zugeordnet"/>
<node CREATED="1683809266764" ID="ID_742096528" LINK="#ID_945659088" MODIFIED="1683809302469" TEXT="innerhalb einer Timeline gilt die Segmentation f&#xfc;r alle Ports gleicherma&#xdf;en"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1686696552906" ID="ID_1183618451" MODIFIED="1686696573197" TEXT="Verbindung zur Speicherverwaltung">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1686696297995" ID="ID_725756209" MODIFIED="1686696584128">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      geplant: generisches front-End f&#252;r <i>Custom Allocator</i>
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#5954b6" DESTINATION="ID_320473769" ENDARROW="Default" ENDINCLINATION="-1037;63;" ID="Arrow_ID_34332665" STARTARROW="None" STARTINCLINATION="-1213;-50;"/>
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
<node CREATED="1683762860166" ID="ID_1202392530" MODIFIED="1683762863249" TEXT="Konzepte"/>
</node>
<node CREATED="1680563454868" ID="ID_1187556686" MODIFIED="1680563459014" TEXT="Backbone"/>
<node CREATED="1680563460649" ID="ID_127710483" MODIFIED="1680563474067" TEXT="MemManagement"/>
</node>
<node CREATED="1512923592590" ID="ID_540019681" MODIFIED="1557498707237" TEXT="Engine">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1679783052390" ID="ID_1851394144" MODIFIED="1684869799933" TEXT="gr&#xfc;nden">
<icon BUILTIN="stop"/>
<node CREATED="1680563559852" ID="ID_580288207" MODIFIED="1680563577773" TEXT="plainPlay">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1681086194343" ID="ID_1293419166" MODIFIED="1681086200999" TEXT="gemeinsame Datenstrukturen">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1681086202821" ID="ID_274575596" MODIFIED="1681425341555" TEXT="Job">
<linktarget COLOR="#f4fec9" DESTINATION="ID_274575596" ENDARROW="Default" ENDINCLINATION="-522;-149;" ID="Arrow_ID_1673610733" SOURCE="ID_566775911" STARTARROW="None" STARTINCLINATION="1598;114;"/>
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1681086220019" ID="ID_1372752844" MODIFIED="1681086232986" TEXT="Umbau: C-Struct - Layer zur&#xfc;ckbauen">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1681951421768" ID="ID_283868393" MODIFIED="1687555435111" TEXT="Schrittweiser Umbau: alte C-Struct vorw&#xe4;rts-kompatibel machen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      das bedeutet: die alten Interfaces m&#252;ssen von den neuen Interfaces erben, dann kann schon st&#252;ckweise Code geschrieben werden, der die neuen Interfaces vorraussetzt...
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1681951529483" ID="ID_737477406" MODIFIED="1681951551777" TEXT="JobFunctor &#x2023; JobClosure">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node CREATED="1701486985336" ID="ID_651799474" MODIFIED="1701486990571" TEXT="Eigenschaften">
<node CREATED="1681086385917" ID="ID_1193213661" MODIFIED="1701487006678" TEXT="leichtgewichtig, kopierbar, stateful, Scheduler-impl-owned">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1701486993815" ID="ID_391790753" MODIFIED="1701486999993" TEXT="Struktur der Argumente">
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1701487016324" ID="ID_1155865731" MODIFIED="1701487021931" TEXT="Diskussion...?">
<icon BUILTIN="help"/>
<node CREATED="1701487039849" ID="ID_616254801" MODIFIED="1701487064754" TEXT="Bedeutung der Argumente k&#xf6;nnte teilweise vom konkreten Funktor abh&#xe4;ngig sein"/>
<node CREATED="1701487125231" ID="ID_802893295" MODIFIED="1701487151022" TEXT="nominal Time : mu&#xdf; ganz sicher downstream per Grid &#xfc;bersetzt werden"/>
<node CREATED="1701487219433" ID="ID_1120029380" MODIFIED="1701487242906" TEXT="einige Argumente stellen eigentlich Parametrisierung eines generischen Funktors dar"/>
<node CREATED="1701487268101" ID="ID_1972068234" MODIFIED="1701487296471" TEXT="Argumente sind sinnvoll, wenn sie f&#xfc;r jeden Frame verschieden sind"/>
<node CREATED="1701487308645" ID="ID_53693227" MODIFIED="1701487328511">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      &#10233; man <i>k&#246;nnte </i>Argumente <b>encodieren</b>
    </p>
  </body>
</html></richcontent>
<node CREATED="1701487334353" ID="ID_1667403852" MODIFIED="1701487363785" TEXT="per Trampolin in den JobFunctor-Ptr"/>
<node CREATED="1701487366693" ID="ID_617390332" MODIFIED="1701487406662" TEXT="per Argument-Key und zus&#xe4;tzlichen Translator"/>
<node COLOR="#435e98" CREATED="1701487464472" ID="ID_1097042622" MODIFIED="1701488082699" TEXT="sinnvoll? jetzt??">
<icon BUILTIN="help"/>
<node CREATED="1701487765040" ID="ID_923220489" MODIFIED="1701488074852" TEXT="pro: Flexibilit&#xe4;t und Entlastung des Schedulers">
<icon BUILTIN="button_cancel"/>
<node CREATED="1701487783573" ID="ID_1648655157" MODIFIED="1701487798783" TEXT="wir m&#xfc;ssen uns noch gar nicht festlegen, was f&#xfc;r Parameter ben&#xf6;tigt werden"/>
<node CREATED="1701487799578" ID="ID_1146543607" MODIFIED="1701487808541" TEXT="der Eintrag im Scheduler wird minimal"/>
<node CREATED="1701487818132" ID="ID_131470790" MODIFIED="1701487823068" TEXT="Job-Records werden kleiner"/>
</node>
<node CREATED="1701487490580" ID="ID_1625842672" MODIFIED="1701488080660" TEXT="contra: zus&#xe4;tzlicher Translator mu&#xdf; verwaltet werden">
<icon BUILTIN="forward"/>
<node CREATED="1701487507562" ID="ID_1031276443" MODIFIED="1701487516629" TEXT="er ist an den jeweiligen Play-Prozess gebunden"/>
<node CREATED="1701487517371" ID="ID_953946343" MODIFIED="1701487530000" TEXT="er mu&#xdf; vom Play-Prozess global eingerichetet werden"/>
<node CREATED="1701487539561" ID="ID_18561883" MODIFIED="1701487546642" TEXT="das greift der Segmentierung vor"/>
<node CREATED="1701487590639" ID="ID_839764786" MODIFIED="1701487655403" TEXT="und stellt weitere Zustands-Abh&#xe4;ngigkeit her">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      denn damit w&#228;re nicht nur die Segmentation zu erhalten, sondern auch der Play-Prozess-Translator-Record &#8212; solange bis kein Job mehr &#8222;anrufen&#8220; kann
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1701487872384" ID="ID_1962954801" MODIFIED="1701488080660" TEXT="contra: die Activity-Language dient dem gleichen Zweck">
<icon BUILTIN="forward"/>
<node CREATED="1701487928425" ID="ID_285184109" MODIFIED="1701487942292" TEXT="sie wird nach Pattern f&#xfc;r den Einzelfall instantiiert"/>
<node CREATED="1701487942999" ID="ID_1482535151" MODIFIED="1701487957458" TEXT="hierf&#xfc;r ist das Lebensdauer-Problem bereits gel&#xf6;st"/>
<node CREATED="1701488048121" ID="ID_1514178646" MODIFIED="1701488057788" TEXT="Speicher daf&#xfc;r ist bereits gepoolt und sehr effizient"/>
</node>
</node>
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1701488083545" ID="ID_709873359" MODIFIED="1701488114912">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <u>Fazit</u>: nein und YAGNI
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
<node CREATED="1701488124767" ID="ID_248451009" MODIFIED="1701488140529" TEXT="zun&#xe4;chst einmal wird alles durch die bestehenden Strukturen durchgef&#xe4;delt"/>
<node CREATED="1701488141161" ID="ID_97207661" MODIFIED="1701488156591" TEXT="sollte das &#xbb;knapp&#xab; werden, dann wird die Activity-Language erweitert"/>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685802625130" ID="ID_1442656492" MODIFIED="1688601316599" TEXT="Job-Daten-Record">
<linktarget COLOR="#fe3665" DESTINATION="ID_1442656492" ENDARROW="Default" ENDINCLINATION="-1161;156;" ID="Arrow_ID_1073485120" SOURCE="ID_148642807" STARTARROW="None" STARTINCLINATION="-478;30;"/>
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685802711785" ID="ID_97201971" MODIFIED="1688601092211" TEXT="JobFunctor">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685802655901" ID="ID_570451449" MODIFIED="1685802665981" TEXT="nomineller Zeitpunkt">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685802759365" ID="ID_1501130954" MODIFIED="1685802764857" TEXT="InstanceID">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685986803653" ID="ID_1078372838" MODIFIED="1688601155076" TEXT="Functor-Argumente">
<richcontent TYPE="NOTE"><html>
  <head></head>
  <body>
    <p>
      werden vom jeweiligen Funktor flexibel interpretiert (ggfs auch als 
      void*); der wichtigste Funktor ist der f&#252;r das eigentliche Rendern &#55358;&#56370; 
      dieser speichert hier die ExitNode und das DataSink
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#3e3f9b" DESTINATION="ID_1078372838" ENDARROW="Default" ENDINCLINATION="426;-58;" ID="Arrow_ID_1700206774" SOURCE="ID_491497133" STARTARROW="None" STARTINCLINATION="311;19;"/>
<linktarget COLOR="#4b3ea5" DESTINATION="ID_1078372838" ENDARROW="Default" ENDINCLINATION="416;-39;" ID="Arrow_ID_209843242" SOURCE="ID_953619048" STARTARROW="None" STARTINCLINATION="669;36;"/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1688600921177" ID="ID_1002134574" MODIFIED="1688600925684" TEXT="size_t srcArg"/>
<node CREATED="1688600926480" ID="ID_57908906" MODIFIED="1688600930635" TEXT="size_t sinkArg"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1681425144493" ID="ID_1404753000" MODIFIED="1688601418353" TEXT="einbetten in engine::Activity">
<linktarget COLOR="#dd7f91" DESTINATION="ID_1404753000" ENDARROW="Default" ENDINCLINATION="1062;104;" ID="Arrow_ID_153253143" SOURCE="ID_1605268671" STARTARROW="None" STARTINCLINATION="779;-154;"/>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1681086210548" ID="ID_290412713" MODIFIED="1681086213533" TEXT="JobFunktor">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1681086238169" ID="ID_1303340014" MODIFIED="1681086253543" TEXT="Umbenennen: JobClosure &#x27fc; JobFunctor">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1681086255534" ID="ID_1953726127" MODIFIED="1681086266246" TEXT="Umbau: C-Struct - Layer zur&#xfc;ckbauen">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685033975249" ID="ID_1266406674" MODIFIED="1685033983018" TEXT="erweiterte F&#xe4;higkeiten">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685033984477" ID="ID_1752806906" MODIFIED="1685033993700" TEXT="kann seine Ausf&#xfc;hrungszeiten beobachten">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685033995127" ID="ID_1464401657" MODIFIED="1685034032376" TEXT="kann seine Startzeit dynamisch sch&#xe4;tzen">
<linktarget COLOR="#a56c6d" DESTINATION="ID_1464401657" ENDARROW="Default" ENDINCLINATION="-74;-579;" ID="Arrow_ID_1368232066" SOURCE="ID_1099231430" STARTARROW="None" STARTINCLINATION="933;50;"/>
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685034033363" ID="ID_1119701449" MODIFIED="1685034041276" TEXT="zu gegebener Deadline">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685034042065" ID="ID_1845073256" MODIFIED="1685034074950" TEXT="plus Kontext-Info">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685034075926" ID="ID_498185505" MODIFIED="1685034100316" TEXT="nominelle Zeit">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685034085899" ID="ID_1109099042" MODIFIED="1685034100318" TEXT="daraus folgend: Cache-Status">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1686874287112" ID="ID_637268181" MODIFIED="1686874300648" TEXT="Zusammenarbeit mit ExitNode noch unklar">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1686872190656" ID="ID_670265387" MODIFIED="1686872207758" TEXT="&#x201e;Arbeitsdaten&#x201c;">
<icon BUILTIN="flag-pink"/>
<node CREATED="1686872245768" ID="ID_1141513319" MODIFIED="1686872255066" TEXT="Arten">
<icon BUILTIN="info"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1686872215460" ID="ID_1558835210" MODIFIED="1686872231247" TEXT="Job / Functor - Parameter">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1686872232642" ID="ID_656864702" MODIFIED="1686872236953" TEXT="Output-Handles">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1686872616987" ID="ID_1351243761" MODIFIED="1686872629371" TEXT="Vorsicht mit DataSink">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
<node CREATED="1686872256462" ID="ID_120877815" MODIFIED="1686872267372" TEXT="Lebenszyklus">
<icon BUILTIN="messagebox_warning"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1686872321254" ID="ID_1857168941" MODIFIED="1686872455222" TEXT="Check-Points einf&#xfc;hren">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      wir k&#246;nnen nicht die Daten f&#252;r jeden Job einzeln nachverfolgen (dann w&#252;rden wir etwa den Level von Arbeit leisten, wie ein Garbage-Collector) &#8212; vielmehr mu&#223; es sowas wie &#187;epochs&#171; geben
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1686872343058" ID="ID_1227545358" MODIFIED="1686872608735" TEXT="Obsolete Reste beobachten k&#xf6;nnen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      In extremen Situationen kann es vorkommen, da&#223; das Checkpoint-System eine Rest-Menge identifiziert, die aus <i>anderen Gr&#252;nden</i>&#160; zuverl&#228;ssig beobachtet werden mu&#223;. Als Beispiel denke ich &#252;ber obsolete Reste einer aufwendigen Berechnungskette, die unterwegs ge&#228;ndert wurde: hier m&#252;ssen diejenigen (wenigen) Activities gefunden werden, die bereits &#8222;unterwegs&#8220; sind; erst wenn diese alle wieder zur&#252;ckgekommen sind, kann ein Clean-up-Trigger feuern
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1681086215092" ID="ID_688439359" MODIFIED="1693238589862" TEXT="Activity">
<linktarget COLOR="#f4fec9" DESTINATION="ID_688439359" ENDARROW="Default" ENDINCLINATION="-557;-136;" ID="Arrow_ID_1352278228" SOURCE="ID_1926192234" STARTARROW="None" STARTINCLINATION="1598;114;"/>
<linktarget COLOR="#daf1b4" DESTINATION="ID_688439359" ENDARROW="Default" ENDINCLINATION="-190;833;" ID="Arrow_ID_345974066" SOURCE="ID_1628186610" STARTARROW="None" STARTINCLINATION="2086;-130;"/>
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1681086269493" ID="ID_305659400" MODIFIED="1681086275809" TEXT="Entwurf : neues Konzept">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1681086278139" ID="ID_1476636286" MODIFIED="1681086349598" TEXT="Idee">
<icon BUILTIN="idea"/>
<node CREATED="1681086280251" ID="ID_110027513" MODIFIED="1681086287093" TEXT="es handelt sich um Verben"/>
<node CREATED="1681086289650" ID="ID_1565054848" MODIFIED="1681086305807" TEXT="es sind kompakt codierte algebraische Datenstrukturen"/>
<node COLOR="#5b280f" CREATED="1681086332556" ID="ID_48127986" MODIFIED="1688693629320" TEXT="immutable, mit jeweils Referenz-Parametern">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ganz im Gegenteil: hier braucht man eine trivial kopierbare und destruierbare Datenstruktur mit Standard-Layout und keinerlei Magic
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_cancel"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1681086352417" ID="ID_28342864" MODIFIED="1681086366888" TEXT="der Scheduler arbeitet nur mit Activities">
<icon BUILTIN="forward"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1680565476652" ID="ID_1599285907" MODIFIED="1684973334977" TEXT="#1298 Definition: Render Activity verbs">
<linktarget COLOR="#fe6d01" DESTINATION="ID_1599285907" ENDARROW="Default" ENDINCLINATION="-183;0;" ID="Arrow_ID_1756942771" SOURCE="ID_495348423" STARTARROW="None" STARTINCLINATION="-502;-42;"/>
<linktarget COLOR="#fde0ca" DESTINATION="ID_1599285907" ENDARROW="Default" ENDINCLINATION="-762;53;" ID="Arrow_ID_744981346" SOURCE="ID_1591114904" STARTARROW="None" STARTINCLINATION="-1043;88;"/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1684980870862" ID="ID_1051551" MODIFIED="1684980899528" TEXT="Arten">
<node CREATED="1684980900575" ID="ID_1853795602" MODIFIED="1684980920474" TEXT="invoke">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      dispatches a JobFunctor into an appropriate worker thread, based on the job definition's execution spec
    </p>
    <p>
      no further dependency checks; Activities attached to the job are re-dispatched after the job function's completion
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1684980900583" ID="ID_896772403" MODIFIED="1690736112488" TEXT="workstart">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      signal start of some processing &#8212;&#160;for the purpose of timing measurement, but also to detect crashed tasks; beyond that, also transition from <b>grooming mode</b>&#160;&#10236; <b>work mode</b>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1684980900585" ID="ID_1179349638" MODIFIED="1690736116802" TEXT="workstop">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      correspondingly signal end of some processing
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1684980900586" ID="ID_1961246380" MODIFIED="1684980944549" TEXT="notify">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      push a message to another Activity or process record
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1688513156754" ID="ID_993428178" LINK="#ID_1088341634" MODIFIED="1688513607197" TEXT="gate">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      probe a launch window from start to deadline, and additionally check a count-down latch; on success activate the next Activity, else re-schedule @self into the future
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1688644877010" ID="ID_112915141" MODIFIED="1688644891972" TEXT="feed">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      supply additional payload data for a preceding Activity
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1688603910393" ID="ID_1991714442" MODIFIED="1688693507346" TEXT="post">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      post a message providing a chain of further time-bound Activities
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1684980900588" ID="ID_1729066993" MODIFIED="1684980976835" TEXT="tick">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      internal engine &#187;heart beat&#171; -- invoke internal maintenance hook(s)
    </p>
    <p>
      &#160;
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1684980982361" ID="ID_1863198468" MODIFIED="1684980987321" TEXT="Themen">
<node CREATED="1684980991406" ID="ID_1812192430" MODIFIED="1698948793241" TEXT="Timings nachf&#xfc;hren">
<arrowlink COLOR="#705783" DESTINATION="ID_1565158605" ENDARROW="Default" ENDINCLINATION="588;-13;" ID="Arrow_ID_516157232" STARTARROW="None" STARTINCLINATION="126;24;"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1687908222714" HGAP="83" ID="ID_941383183" MODIFIED="1693694660558" TEXT="Darstellung" VSHIFT="2">
<icon BUILTIN="button_ok"/>
<node CREATED="1687908236975" ID="ID_692898121" MODIFIED="1687908476679" TEXT="eigentlich polymorph &#x2014; aber in gemeinsamen Datenrecord encodiert">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Activity-Terme sind sowohl semantsich, als auch operational polymorph; das hei&#223;t es gibt einen gemeinsamen Kontrakt und eine flexible Ausdifferenzierung im Verhalten. ABER aus Performance-Gr&#252;nden k&#246;nnen wir uns im Scheduler keine unn&#246;tigen Indirektionen und variablen Allokationen leisten; stattdessen wird die gesamte Storage per Mehrfachbelegung auf einen einzigen Datenblock abgebildet, und das Verhalten wird in ein Switch-on-Selector-Field &#252;bersetzt
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1687908607797" ID="ID_989605795" MODIFIED="1687908674373" TEXT="Implementierung des Verhaltens">
<arrowlink COLOR="#7f362f" DESTINATION="ID_1214627402" ENDARROW="Default" ENDINCLINATION="-349;-37;" ID="Arrow_ID_1834773150" STARTARROW="None" STARTINCLINATION="-686;57;"/>
<linktarget COLOR="#6a668f" DESTINATION="ID_989605795" ENDARROW="Default" ENDINCLINATION="-303;1079;" ID="Arrow_ID_180378517" SOURCE="ID_72274125" STARTARROW="None" STARTINCLINATION="-786;38;"/>
<icon BUILTIN="pencil"/>
<node CREATED="1687908684071" ID="ID_814820281" MODIFIED="1687908690152" TEXT="im Scheduler Layer-2">
<icon BUILTIN="info"/>
</node>
<node CREATED="1690490828030" ID="ID_231504634" MODIFIED="1690490873196" TEXT="falls Activity &#x27fc; externer Effekt">
<node CREATED="1690490875511" ID="ID_1949721757" MODIFIED="1690490904967" TEXT="post: Synchronisation und in die Queue stellen"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1688599645418" ID="ID_290814679" MODIFIED="1693316248116" TEXT="Repr&#xe4;sentation Argument-Daten">
<linktarget COLOR="#4766fd" DESTINATION="ID_290814679" ENDARROW="Default" ENDINCLINATION="-1095;85;" ID="Arrow_ID_1644257444" SOURCE="ID_1520469413" STARTARROW="None" STARTINCLINATION="676;32;"/>
<icon BUILTIN="forward"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1688646827878" ID="ID_683405596" MODIFIED="1688648419999" TEXT="Activity soll ein POD-artiger Daten-Record sein">
<arrowlink COLOR="#534e96" DESTINATION="ID_464419365" ENDARROW="Default" ENDINCLINATION="-729;124;" ID="Arrow_ID_1095556572" STARTARROW="None" STARTINCLINATION="-1826;106;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node CREATED="1688648423563" ID="ID_1822457812" MODIFIED="1688648431846" TEXT="tats&#xe4;chlich ist es etwas komplexer">
<icon BUILTIN="ksmiletris"/>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1688648433016" ID="ID_12211665" MODIFIED="1688648464015" TEXT="Activity mu&#xdf; trivial destruierbar sein">
<icon BUILTIN="yes"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1688648487864" ID="ID_429483541" MODIFIED="1688648500159" TEXT="au&#xdf;erdem sollte es standard-Layout sein">
<icon BUILTIN="yes"/>
</node>
<node BACKGROUND_COLOR="#c6c8db" COLOR="#435e98" CREATED="1688648552904" HGAP="18" ID="ID_1142231252" MODIFIED="1688648658935" STYLE="bubble" TEXT="&#x27f9; &#xbb;POD mit Konstruktor&#xab;" VSHIFT="12">
<edge COLOR="#5b26b8"/>
<font NAME="SansSerif" SIZE="16"/>
</node>
</node>
<node CREATED="1688599871372" ID="ID_280220141" MODIFIED="1688599874528" TEXT="ben&#xf6;tigt">
<node CREATED="1688599875731" ID="ID_1691021100" MODIFIED="1688599878178" TEXT="stets">
<node CREATED="1688599879355" ID="ID_937537110" MODIFIED="1688599893566" TEXT="next-Pointer"/>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1688599920366" ID="ID_519528587" MODIFIED="1688602346298">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <font face="Monospaced">startTime </font>
    </p>
    <p>
      <font face="Monospaced">deadline</font>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="help"/>
<node CREATED="1688602901632" HGAP="42" ID="ID_1108696445" MODIFIED="1688602935788" TEXT="k&#xf6;nnte man kontextuell bereitstellen" VSHIFT="-5">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node CREATED="1688599961752" ID="ID_1476155017" MODIFIED="1688599964244" TEXT="invoke">
<node COLOR="#435e98" CREATED="1688599981240" ID="ID_1605268671" MODIFIED="1692718372350" TEXT="Job-Daten">
<arrowlink COLOR="#dd7f91" DESTINATION="ID_1404753000" ENDARROW="Default" ENDINCLINATION="1062;104;" ID="Arrow_ID_153253143" STARTARROW="None" STARTINCLINATION="779;-154;"/>
<icon BUILTIN="info"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1688601470768" HGAP="39" ID="ID_973557978" MODIFIED="1692718363232" TEXT="leider ziemlich viel Daten" VSHIFT="17">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1688601569851" ID="ID_567583834" MODIFIED="1688601591196" TEXT="Ptr + Time + LUID + 2*size_t"/>
<node CREATED="1688601604198" ID="ID_1026682492" MODIFIED="1688601662698" TEXT="&#x27f9; 3 &#xbb;slots&#xab; + 3*64bit"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1688602957054" HGAP="59" ID="ID_1822229878" MODIFIED="1692718359872" TEXT="in mehrere Pakete aufteilen">
<icon BUILTIN="yes"/>
<node CREATED="1688693404561" ID="ID_208511888" MODIFIED="1688693412610" TEXT="INVOCATION + 2 * FEED"/>
</node>
</node>
</node>
<node CREATED="1688601865955" ID="ID_1274992770" MODIFIED="1690736031094" TEXT="workstart|stop">
<node CREATED="1688601873323" ID="ID_1142615782" MODIFIED="1688601877397" TEXT="Time"/>
<node CREATED="1688602420417" ID="ID_186416345" MODIFIED="1688602445794" TEXT="observable-ID"/>
</node>
<node CREATED="1688601937242" ID="ID_1645818816" MODIFIED="1688601939806" TEXT="notify">
<node CREATED="1688601944873" ID="ID_1656108981" MODIFIED="1688601966553" TEXT="ptr &#x27f6; target-Activity"/>
</node>
<node CREATED="1688601984418" ID="ID_1068955148" MODIFIED="1688601986335" TEXT="gate">
<node CREATED="1688601991523" ID="ID_1519691813" MODIFIED="1688602001213" TEXT="deadline"/>
<node CREATED="1688602002513" ID="ID_1687808112" MODIFIED="1688602012044" TEXT="counter"/>
</node>
<node CREATED="1690891793894" ID="ID_38417195" LINK="#ID_1359624247" MODIFIED="1690891968992" TEXT="hook">
<node COLOR="#435e98" CREATED="1690891815995" ID="ID_163409040" MODIFIED="1690896708168" TEXT="Interface activity::Hook">
<arrowlink COLOR="#6b779d" DESTINATION="ID_1359624247" ENDARROW="Default" ENDINCLINATION="683;-50;" ID="Arrow_ID_1699110020" STARTARROW="None" STARTINCLINATION="2539;289;"/>
<icon BUILTIN="info"/>
</node>
<node CREATED="1690892071722" ID="ID_1987094589" MODIFIED="1690892077037" TEXT="zus&#xe4;tzliches Payload-Feld"/>
</node>
<node CREATED="1688603899403" ID="ID_1940894045" MODIFIED="1688603926576" TEXT="post">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1688604029521" ID="ID_1078704694" MODIFIED="1688693453667" TEXT="transportiert kontextuelle Info (time window)">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1688602042892" ID="ID_603067058" MODIFIED="1688602044951" TEXT="tick"/>
</node>
<node COLOR="#435e98" CREATED="1688642849216" ID="ID_1226380123" MODIFIED="1693316227979" TEXT="Entscheidung">
<icon BUILTIN="yes"/>
<node CREATED="1688642858447" ID="ID_186671270" MODIFIED="1688642868113" TEXT="kleine Datenbl&#xf6;cke bevorzugt">
<node CREATED="1688643081577" ID="ID_1868543513" MODIFIED="1688643112138" TEXT="der Hebel f&#xfc;r unbenutzte Felder ist gro&#xdf;">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1688643122564" ID="ID_1945639655" MODIFIED="1688643136109" TEXT="das wiegt eine zus&#xe4;tzliche Activity schnell auf">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1688642872398" ID="ID_1043417945" MODIFIED="1688642947743" TEXT="Job-Argumente in eine Kette von Datenbl&#xf6;cken legen"/>
<node CREATED="1688642986094" ID="ID_1753772146" MODIFIED="1688643010373" TEXT="Zeitfenster-Angaben nach M&#xf6;glichkeit kontextuell bereitstellen"/>
<node CREATED="1690737049353" ID="ID_1475155102" MODIFIED="1690740515276" TEXT="vorerst auf 64bit-Maschinen zugeschnitten">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...wir arbeiten komplett unter dem Schutz des Typsystemts, und deshalb werden auf 32bit-Maschinen trotzdem 64bit f&#252;r die Zeitangaben bereitgestellt, zuz&#252;glich Alignment; theoretisch k&#246;nnte man ein spezielles Encoding f&#252;r den &#187;Instant&#171; definieren, das nur int32_t ben&#246;tigt; das betrachte ich allerdings als Optimierung
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#797bad" DESTINATION="ID_1475155102" ENDARROW="Default" ENDINCLINATION="-1330;67;" ID="Arrow_ID_1076799185" SOURCE="ID_554665430" STARTARROW="None" STARTINCLINATION="-437;30;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1688643151608" ID="ID_1226022994" MODIFIED="1688643202164">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <u>Richtwert</u>: <font color="#016258">2 * 64bit + next-Ptr</font>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
</node>
<node COLOR="#338800" CREATED="1688693665835" ID="ID_309449213" MODIFIED="1688693718932" TEXT="Datenablage">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1688693670338" ID="ID_181431201" MODIFIED="1688693679962" TEXT="jeweils in einer Varianten-Strukt">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1688693680832" ID="ID_1069118488" MODIFIED="1688693697363" TEXT="diese in eine Union data_ verpacken">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1688693698718" ID="ID_1063759979" MODIFIED="1688693717156" TEXT="Konstrukter-Notation f&#xfc;r alle wichigen F&#xe4;lle">
<icon BUILTIN="button_ok"/>
<node CREATED="1688693721731" ID="ID_1808750797" MODIFIED="1688693734111" TEXT="default &#x27fc; TICK"/>
<node CREATED="1688693752211" ID="ID_1989515625" MODIFIED="1688693766843" TEXT="(size_t, size_t) &#x27fc; FEED"/>
<node CREATED="1688693775399" ID="ID_1606518989" MODIFIED="1688693784470" TEXT="Activity* &#x27fc; NOTIFY"/>
<node CREATED="1688693793802" ID="ID_1262776423" MODIFIED="1688693801220" TEXT="(int, Time) &#x27fc; GATE"/>
<node CREATED="1688693813111" ID="ID_575661809" MODIFIED="1688693822899" TEXT="(Time, Activity*) &#x27fc; POST"/>
<node CREATED="1688693823725" ID="ID_1622364722" MODIFIED="1688693834464" TEXT="(Time,Time, Activity*) &#x27fc; POST"/>
<node CREATED="1688693848557" ID="ID_1801947453" MODIFIED="1688693861396" TEXT="Verb &#x27fc; leer-Initialisierung"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1688997822688" HGAP="33" ID="ID_469443507" MODIFIED="1693694551081" TEXT="ActivityTerm" VSHIFT="4">
<linktarget COLOR="#4e4671" DESTINATION="ID_469443507" ENDARROW="Default" ENDINCLINATION="-463;535;" ID="Arrow_ID_1203697100" SOURCE="ID_1506436785" STARTARROW="None" STARTINCLINATION="-890;-116;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1688997860691" ID="ID_601062393" MODIFIED="1688997898044" TEXT="Builder-Struktur &#x2014; macht einen Activity-Graphen semantisch zug&#xe4;nglich">
<icon BUILTIN="info"/>
<node CREATED="1688997906652" ID="ID_1309569324" MODIFIED="1688997918758" TEXT="wird nur in einem lokalen / transienten Kontext erzeugt"/>
<node CREATED="1688997919468" ID="ID_1319322261" MODIFIED="1688997929790" TEXT="verweist auf anderweitig allozierte Activities"/>
<node CREATED="1688997930400" ID="ID_1600642757" MODIFIED="1688997942731" TEXT="f&#xfc;gt diesen weitere Activities und Vernetzungen hinzu"/>
<node CREATED="1688997948702" ID="ID_1547410219" MODIFIED="1688997965264" TEXT="h&#xe4;lt Referenzen auf semantisch relevante Erweiterungspunkte"/>
<node CREATED="1688997979714" ID="ID_788885613" MODIFIED="1688997992154" TEXT="nach M&#xf6;glichkeit monomorph implementiert">
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1688998623675" ID="ID_1567695201" MODIFIED="1693694560177" TEXT="usage-Scenarios">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="info"/>
<node COLOR="#435e98" CREATED="1688998654071" ID="ID_923708494" MODIFIED="1693694589378" TEXT="Frame-Render-Job">
<icon BUILTIN="forward"/>
<node CREATED="1688998682403" ID="ID_647428374" MODIFIED="1688998983215" TEXT="zu erstellen (Job komplett)">
<icon BUILTIN="info"/>
<node CREATED="1688998699273" ID="ID_670845823" MODIFIED="1688998702452" TEXT="POST">
<node CREATED="1688998706075" ID="ID_1218562853" MODIFIED="1688998714035" TEXT="Zeitfenster aus Job-Planning"/>
<node CREATED="1688998714647" ID="ID_1212520042" MODIFIED="1688998724793" TEXT="fr&#xfc;hestmoglich Start-Zeit / Deadline"/>
</node>
<node CREATED="1688998737324" ID="ID_1359190642" MODIFIED="1688998829651" TEXT="GATE">
<node COLOR="#338800" CREATED="1688998831183" FOLDED="true" ID="ID_158897194" MODIFIED="1693694635612" TEXT="Inhibitor-Mechanismus mu&#xdf; zu fr&#xfc;he Freigabe verhindern">
<linktarget COLOR="#5f98b9" DESTINATION="ID_158897194" ENDARROW="Default" ENDINCLINATION="597;427;" ID="Arrow_ID_908519316" SOURCE="ID_706646924" STARTARROW="None" STARTINCLINATION="912;57;"/>
<icon BUILTIN="yes"/>
<icon BUILTIN="hourglass"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1689169379528" ID="ID_130475381" MODIFIED="1693500400879" TEXT="stellt sich die Frage nach Regel und Ausnahme">
<linktarget COLOR="#ff8c4a" DESTINATION="ID_130475381" ENDARROW="Default" ENDINCLINATION="-1002;56;" ID="Arrow_ID_501288232" SOURCE="ID_1158823061" STARTARROW="None" STARTINCLINATION="1201;66;"/>
<icon BUILTIN="yes"/>
<node CREATED="1693500445141" ID="ID_49874460" MODIFIED="1693500463973" TEXT="Inhibitor ist der Regelfall &#x27f9;">
<node CREATED="1693500501765" ID="ID_1102377205" MODIFIED="1693500532852" TEXT="dann sollte die Notification &#xfc;berhaupt keine Aktivierung (mehr) bewirken"/>
<node CREATED="1693500554621" ID="ID_1265964500" MODIFIED="1693500571590" TEXT="mit dieser &#xc4;nderung w&#xe4;re auch kein Inhibitor mehr notwendig"/>
<node CREATED="1693500572275" ID="ID_428340322" MODIFIED="1693500597467" TEXT="stattdessen re-triggert sich das Gate, bis alle Voraussetzungen gegeben sind"/>
</node>
<node CREATED="1693500491838" ID="ID_857680063" MODIFIED="1693500497833" TEXT="Event-Trigger ist der Regelfall &#x27f9;">
<node CREATED="1693500602346" ID="ID_102624837" MODIFIED="1693500662762" TEXT="dann w&#xfc;rde in der Regel sofort getriggert, sobald die Vorraussetzungen gegeben sind"/>
<node CREATED="1693500663638" ID="ID_85164137" MODIFIED="1693500682336" TEXT="und die Zeitsteuerung der Vorraussetzungen w&#xfc;rde die Koordinierung leisten"/>
<node CREATED="1693500684108" ID="ID_1942907265" MODIFIED="1693500705970" TEXT="somit w&#xe4;re eine zeitgesteuerte Aktivierung &#xfc;berhaupt nicht notwendig"/>
<node CREATED="1693500706577" ID="ID_1660915486" MODIFIED="1693500727098" TEXT="und der Haupt-Chain k&#xf6;nnte &#x201e;frei h&#xe4;ngen&#x201c;"/>
<node CREATED="1693500748179" ID="ID_520416912" MODIFIED="1693500762541" TEXT="die Notification m&#xfc;&#xdf;te dann aber auch zuverl&#xe4;ssig kommen"/>
</node>
</node>
<node CREATED="1689169457943" ID="ID_1317092933" MODIFIED="1689169572378" TEXT="man k&#xf6;nnte ein NOTIFY explizit disponieren">
<richcontent TYPE="NOTE"><html>
  <head></head>
  <body>
    <p>
      dieses w&#252;rde auch auf das GATE aufgeschaltet, welches dadurch mit einem h&#246;heren Latch startet; erst nachdem das NOTIFY eigens aktiviert wurde, k&#246;nnte das GATE grunds&#228;tzlich freigeben
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
<node COLOR="#435e98" CREATED="1693500810783" ID="ID_1401320088" MODIFIED="1693500823241" TEXT="diese L&#xf6;sung vorerst umgesetzt">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1693500823905" ID="ID_1958526971" MODIFIED="1693500843764" TEXT="derzeit allerdings nur auf Verdacht">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node COLOR="#5b280f" CREATED="1689169614354" ID="ID_969910286" MODIFIED="1690490579815" TEXT="man k&#xf6;nnte aber auch genau den gleichen Mechanismus direkt in GATE einbauen">
<richcontent TYPE="NOTE"><html>
  <head></head>
  <body>
    <p>
      dazu allerdings m&#252;&#223;te dieses unterscheiden k&#246;nnen, ob es vom Scheduler explizit aktiviert wird, oder ob es durch eine Notification freigeschaltet wurde
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_cancel"/>
<node CREATED="1690490584246" ID="ID_1021729756" MODIFIED="1690490592447" TEXT="ja... aber">
<icon BUILTIN="smiley-angry"/>
</node>
<node CREATED="1690490614050" ID="ID_1084968679" MODIFIED="1690490623783" TEXT="das w&#xe4;re un-KISS">
<icon BUILTIN="smiley-oh"/>
</node>
<node CREATED="1690490709845" ID="ID_474906095" MODIFIED="1690490739991" TEXT="w&#xfc;rde eine trickreiche Konvention einf&#xfc;hren">
<icon BUILTIN="smily_bad"/>
</node>
<node CREATED="1690490625849" ID="ID_1739284273" MODIFIED="1690490751829" TEXT="und w&#xfc;rde die Symmetrie zwischen activation und NOTIFY st&#xf6;ren">
<icon BUILTIN="stop-sign"/>
</node>
</node>
</node>
<node CREATED="1688998857100" ID="ID_875955760" MODIFIED="1688998863575" TEXT="Deadline aus POST-Deadline"/>
<node CREATED="1688998870698" ID="ID_40546286" MODIFIED="1688998883188" TEXT="Latch zun&#xe4;chst nicht gesperrt"/>
</node>
<node CREATED="1688998890863" ID="ID_425722709" MODIFIED="1690735963807" TEXT="WORKSTART">
<node CREATED="1688998900504" ID="ID_1774286611" MODIFIED="1688998907001" TEXT="das ist der Gefahren&#xfc;bergang"/>
</node>
<node CREATED="1688998913869" ID="ID_556268071" MODIFIED="1688998927398" TEXT="INVOKE"/>
<node CREATED="1689000645022" ID="ID_1088539627" MODIFIED="1689000647216" TEXT="FEED"/>
<node CREATED="1688998935319" ID="ID_321972894" MODIFIED="1690736136402" TEXT="WORKSTOP"/>
<node CREATED="1688998940449" ID="ID_773816766" MODIFIED="1688998948955" TEXT="(optional) NOTIFY"/>
</node>
<node CREATED="1689000122273" ID="ID_1422583341" MODIFIED="1689000141923" TEXT="Ankerpunkte">
<arrowlink COLOR="#598fcf" DESTINATION="ID_942300026" ENDARROW="Default" ENDINCLINATION="11;-24;" ID="Arrow_ID_1092205676" STARTARROW="None" STARTINCLINATION="-232;48;"/>
<node CREATED="1689000157534" ID="ID_1675125320" MODIFIED="1689000220860" TEXT="Gate wird nur bei Bedarf eingeschleift"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1689000188849" ID="ID_1979509352" MODIFIED="1693694608993" TEXT="dies mu&#xdf; aber vor dem Instruct() passieren">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1688998666581" ID="ID_796453137" MODIFIED="1693694589377" TEXT="Media-Decoder-Job">
<icon BUILTIN="forward"/>
<node CREATED="1688998682403" ID="ID_60823636" MODIFIED="1688998995125" TEXT="zu erstellen">
<icon BUILTIN="info"/>
<node CREATED="1688998997137" ID="ID_542318622" MODIFIED="1688999010459" TEXT="IO-Trigger">
<node CREATED="1688998699273" ID="ID_306994429" MODIFIED="1688998702452" TEXT="POST">
<node CREATED="1688998706075" ID="ID_440995456" MODIFIED="1688998714035" TEXT="Zeitfenster aus Job-Planning"/>
<node CREATED="1688998714647" ID="ID_921244873" MODIFIED="1688998724793" TEXT="fr&#xfc;hestmoglich Start-Zeit / Deadline"/>
</node>
<node CREATED="1688998737324" ID="ID_93843458" MODIFIED="1688999147130" TEXT="(optional) GATE"/>
<node CREATED="1688998890863" ID="ID_1895338828" MODIFIED="1690735988356" TEXT="WORKSTART">
<node CREATED="1688998900504" ID="ID_518096052" MODIFIED="1688998907001" TEXT="das ist der Gefahren&#xfc;bergang"/>
</node>
<node CREATED="1688998913869" ID="ID_55339592" MODIFIED="1688998927398" TEXT="INVOKE"/>
<node CREATED="1689000651643" ID="ID_1778896069" MODIFIED="1689000653167" TEXT="FEED"/>
</node>
<node CREATED="1688999011414" ID="ID_628699211" MODIFIED="1688999028770" TEXT="IO-Callback">
<node CREATED="1688999092397" ID="ID_406811025" MODIFIED="1688999110811" TEXT="(ggfs: Callback-entrance Closure)"/>
<node CREATED="1688998935319" ID="ID_1850296698" MODIFIED="1690736143495" TEXT="WORKSTOP"/>
<node CREATED="1688998940449" ID="ID_1383425943" MODIFIED="1688999051414" TEXT="NOTIFY"/>
</node>
</node>
<node CREATED="1689000122273" ID="ID_930900062" MODIFIED="1689000254611" TEXT="Ankerpunkte">
<arrowlink COLOR="#598fcf" DESTINATION="ID_942300026" ENDARROW="Default" ENDINCLINATION="10;-28;" ID="Arrow_ID_398092432" STARTARROW="None" STARTINCLINATION="-197;41;"/>
<node CREATED="1689000157534" ID="ID_1814378402" MODIFIED="1689000268524" TEXT="Gate nur bei Bedarf"/>
<node CREATED="1689000270813" ID="ID_360882448" MODIFIED="1689000284794" TEXT="Flag f&#xfc;r Asynchronen Job"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1688999761263" ID="ID_1842215336" MODIFIED="1693694589377" TEXT="Planungs-Job">
<icon BUILTIN="forward"/>
<node CREATED="1688999770170" ID="ID_1797355919" MODIFIED="1693694599008" TEXT="zu erstellen">
<icon BUILTIN="info"/>
<node COLOR="#435e98" CREATED="1688999786193" ID="ID_1441495224" MODIFIED="1693694604561" TEXT="Achtung: hier kein &#xdc;bergang in die Hintergrundverarbeitung">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Das ergibt sich unmittelbar aus den Prinzipien dieses Designs: Job-Planung l&#228;uft auf das Erstellen von Activities hinaus, und dies bedingt Speicherverwaltung &#8212; welche der grundlegenden Entscheidung gem&#228;&#223; nur im Management-Modus (single-threaded, unter GroomingToken) stattfinden darf
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1689000396493" ID="ID_886737877" MODIFIED="1689000398897" TEXT="POST"/>
<node CREATED="1689000405548" ID="ID_436497106" MODIFIED="1689000438079" TEXT="INVOKE"/>
<node CREATED="1689000655579" ID="ID_379435394" MODIFIED="1689000657094" TEXT="FEED"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689000757661" ID="ID_1172817933" MODIFIED="1689000760245" TEXT="Tick">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1689000805829" ID="ID_1260644212" MODIFIED="1689000811102" TEXT="einfache Builder-Funktion"/>
<node CREATED="1689000868150" ID="ID_993292699" MODIFIED="1689000876384" TEXT="wird nur einmal erzeugt"/>
<node CREATED="1689000876941" ID="ID_916463216" MODIFIED="1689000882431" TEXT="reproduziert sich dann selbst"/>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1688999175080" HGAP="49" ID="ID_942300026" MODIFIED="1693694262838" TEXT="Ankerpunkte" VSHIFT="34">
<linktarget COLOR="#598fcf" DESTINATION="ID_942300026" ENDARROW="Default" ENDINCLINATION="11;-24;" ID="Arrow_ID_1092205676" SOURCE="ID_1422583341" STARTARROW="None" STARTINCLINATION="-232;48;"/>
<linktarget COLOR="#598fcf" DESTINATION="ID_942300026" ENDARROW="Default" ENDINCLINATION="10;-28;" ID="Arrow_ID_398092432" SOURCE="ID_930900062" STARTARROW="None" STARTINCLINATION="-197;41;"/>
<icon BUILTIN="info"/>
<node CREATED="1688999178393" ID="ID_427652015" MODIFIED="1688999914355" TEXT="der erstellte POST"/>
<node CREATED="1688999963976" ID="ID_236229726" MODIFIED="1689000087481" TEXT="Anf&#xfc;gepunkt f&#xfc;r das GATE">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_236229726" ENDARROW="Default" ENDINCLINATION="79;6;" ID="Arrow_ID_644412602" SOURCE="ID_684188906" STARTARROW="None" STARTINCLINATION="82;7;"/>
</node>
<node CREATED="1688999981512" ID="ID_684188906" MODIFIED="1689000087481" TEXT="Gate zum Aufschalten eines NOTIFY">
<arrowlink DESTINATION="ID_236229726" ENDARROW="Default" ENDINCLINATION="79;6;" ID="Arrow_ID_644412602" STARTARROW="None" STARTINCLINATION="82;7;"/>
</node>
<node CREATED="1688999996294" ID="ID_770398242" MODIFIED="1689000292360" TEXT="Anf&#xfc;gepunkt f&#xfc;r ein abschliependes NOTIFY"/>
<node CREATED="1689000307018" ID="ID_800596419" MODIFIED="1689000317828" TEXT="Schalter synchron/asynchron"/>
<node CREATED="1689000503719" ID="ID_1847275936" MODIFIED="1689000627698" TEXT="Schalter Work/Meta"/>
<node CREATED="1689000328599" ID="ID_523939975" MODIFIED="1689000343817" TEXT="Closure / Zugangspunkt f&#xfc;r IO-Callback bereitstellen"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1688998180822" ID="ID_462121305" MODIFIED="1690068422658" TEXT="ActivityLang &#x2261; Builder-Setup">
<arrowlink COLOR="#3d344c" DESTINATION="ID_975357334" ENDARROW="Default" ENDINCLINATION="-4;-17;" ID="Arrow_ID_56581087" STARTARROW="Default" STARTINCLINATION="6;32;"/>
<linktarget COLOR="#b14f6e" DESTINATION="ID_462121305" ENDARROW="Default" ENDINCLINATION="-76;7;" ID="Arrow_ID_1396143437" SOURCE="ID_1433064275" STARTARROW="None" STARTINCLINATION="-74;-111;"/>
<icon BUILTIN="flag-yellow"/>
<node COLOR="#338800" CREATED="1688999189055" ID="ID_1477089281" MODIFIED="1693271115929" TEXT="Dependency-Injection bereitstellen">
<icon BUILTIN="button_ok"/>
<node CREATED="1693223327335" ID="ID_1106041031" MODIFIED="1693223365669" TEXT="mu&#xdf; Activities allozieren k&#xf6;nnen"/>
<node CREATED="1693223366762" ID="ID_1003919385" MODIFIED="1693223395968" TEXT="mu&#xdf; diese F&#xe4;higkeit an den Builder weiterreichen k&#xf6;nnen"/>
</node>
<node COLOR="#338800" CREATED="1688999200998" ID="ID_1334461256" MODIFIED="1693694993877" TEXT="Term konstruieren">
<icon BUILTIN="button_ok"/>
<node CREATED="1693178401960" ID="ID_1975660291" MODIFIED="1693178408828" TEXT="Fallunterscheidung zu Beginn">
<node CREATED="1693178409769" ID="ID_246745518" MODIFIED="1693178433004" TEXT="Tick &#x27f9; explizit und separat"/>
<node CREATED="1693178439042" ID="ID_1755797545" MODIFIED="1693178459860" TEXT="Basisf&#xe4;lle">
<node CREATED="1693178468199" ID="ID_1508092160" MODIFIED="1693178475496" TEXT="Meta/Work"/>
<node CREATED="1693178462064" ID="ID_1064389672" MODIFIED="1693238905553" TEXT="synchron/asynchron"/>
</node>
</node>
<node CREATED="1693178495964" ID="ID_807456413" MODIFIED="1693178500231" TEXT="Struktur-Bausteine">
<node CREATED="1693178501472" ID="ID_1503655415" MODIFIED="1693178503142" TEXT="stets">
<node COLOR="#338800" CREATED="1693178507426" ID="ID_391129339" MODIFIED="1693275201840" TEXT="Post">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1693178510554" ID="ID_530087254" MODIFIED="1693275201840" TEXT="Invoke + Feed">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1693178622450" ID="ID_702953156" MODIFIED="1693178792128" TEXT="fallbezogen">
<node COLOR="#338800" CREATED="1693178646683" ID="ID_1322750884" MODIFIED="1693327429521" TEXT="Klammer Workstart|stop">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1693178702928" ID="ID_973455223" MODIFIED="1693178762434" TEXT="Verbindung Feed&#x27f6;Workstop | Callback"/>
<node CREATED="1693178764856" ID="ID_1455997570" MODIFIED="1693178773842" TEXT="optional/mandatory">
<node COLOR="#338800" CREATED="1693178780905" ID="ID_1918846546" MODIFIED="1693327436464" TEXT="Gate">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1693178785229" ID="ID_820032876" MODIFIED="1693618312895" TEXT="Notify">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node CREATED="1693178794380" ID="ID_491437643" MODIFIED="1693178801062" TEXT="optional / on-demand">
<node COLOR="#338800" CREATED="1693178805562" ID="ID_1048207081" MODIFIED="1693686526300" TEXT="Gate falls Notify aufgeschaltet">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1693686465783" FOLDED="true" ID="ID_1698611033" MODIFIED="1693695000551" TEXT="Callback-Notify f&#xfc;r async IO">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1693687757081" ID="ID_1001875516" MODIFIED="1693690417189" TEXT="mu&#xdf; die Kette auftrennen">
<arrowlink COLOR="#4478f6" DESTINATION="ID_1373563746" ENDARROW="Default" ENDINCLINATION="9;-26;" ID="Arrow_ID_1617906021" STARTARROW="None" STARTINCLINATION="62;6;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1693687729525" ID="ID_1373563746" MODIFIED="1693690401762" TEXT="st&#xf6;rt die Orientierung der anderen Bausteine">
<linktarget COLOR="#4478f6" DESTINATION="ID_1373563746" ENDARROW="Default" ENDINCLINATION="9;-26;" ID="Arrow_ID_1617906021" SOURCE="ID_1001875516" STARTARROW="None" STARTINCLINATION="62;6;"/>
<icon BUILTIN="messagebox_warning"/>
<node COLOR="#5b280f" CREATED="1693688102643" ID="ID_1929524526" MODIFIED="1693688105779" TEXT="insertWorkBracket">
<icon BUILTIN="button_cancel"/>
<node CREATED="1693688116585" ID="ID_906848076" MODIFIED="1693688120986" TEXT="ist private"/>
<node CREATED="1693688107106" ID="ID_1519440857" MODIFIED="1693688116085" TEXT="wird nur einmal initial aufgerufen"/>
<node CREATED="1693688124872" ID="ID_957668597" MODIFIED="1693688136971" TEXT="L&#xf6;sung: erst danach trennen">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1693688160727" ID="ID_616609597" MODIFIED="1693688166200" TEXT="appendNotificationTo">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1693688167738" ID="ID_1246639847" MODIFIED="1693688187907" TEXT="problematisch da public und mehrfach aufrufbar">
<icon BUILTIN="clanbomber"/>
</node>
</node>
<node CREATED="1693688209293" ID="ID_1541325159" MODIFIED="1693688246209">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      zus&#228;tzlicher Ankerpunkt <font face="Monospaced" color="#2a09bb">callback_</font>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
<node CREATED="1693688250206" ID="ID_1004377853" MODIFIED="1693688260850" TEXT="dieser dient auch als Status-Flag f&#xfc;r &#xbb;async&#xab;"/>
<node CREATED="1693688276012" ID="ID_1816260183" MODIFIED="1693688411695" TEXT="mu&#xdf; diesen intelligent zur Orientierung verwenden">
<arrowlink COLOR="#d5e6fa" DESTINATION="ID_249669026" ENDARROW="Default" ENDINCLINATION="159;-25;" ID="Arrow_ID_836987088" STARTARROW="None" STARTINCLINATION="-312;19;"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1693688363742" ID="ID_249669026" MODIFIED="1693690422154" TEXT="severAsyncChain">
<linktarget COLOR="#d5e6fa" DESTINATION="ID_249669026" ENDARROW="Default" ENDINCLINATION="159;-25;" ID="Arrow_ID_836987088" SOURCE="ID_1816260183" STARTARROW="None" STARTINCLINATION="-312;19;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1693690433957" ID="ID_615068464" MODIFIED="1693690468454" TEXT="zun&#xe4;chst h&#xe4;ngt da also nur der WORKSTOP allein" VSHIFT="4"/>
<node CREATED="1693690451626" ID="ID_882586778" MODIFIED="1693690462989" TEXT="optional kann dann noch eine NOTIFY dahinter geh&#xe4;ngt werden"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1693690478479" ID="ID_1514992421" MODIFIED="1693690545599" TEXT="die Rest-Kette kann problemlos direkt dispatched() werden">
<icon BUILTIN="idea"/>
<node CREATED="1693690499517" ID="ID_1872824488" MODIFIED="1693690505976" TEXT="selbst aus einem ganz andern Thread"/>
<node CREATED="1693690508116" ID="ID_912430089" MODIFIED="1693690540032" TEXT="denn das Notify durchl&#xe4;uft das &#x3bb;-post">
<icon BUILTIN="info"/>
</node>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1693223697516" ID="ID_1843732510" MODIFIED="1693268995911" TEXT="Problem: Deadline bestimmen">
<icon BUILTIN="messagebox_warning"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1693223721399" ID="ID_331711778" MODIFIED="1693223737743" TEXT="das Allokations-Schema verlangt stets nach einer Deadline">
<linktarget COLOR="#bb6884" DESTINATION="ID_331711778" ENDARROW="Default" ENDINCLINATION="309;8;" ID="Arrow_ID_743236550" SOURCE="ID_1652013577" STARTARROW="None" STARTINCLINATION="180;9;"/>
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1693223892514" ID="ID_962187682" MODIFIED="1693223933104" TEXT="aber es gibt Nutzungsmuster ohne explizite Deadline &#x27f9; &#x21af;">
<icon BUILTIN="broken-line"/>
<node CREATED="1693223962241" ID="ID_1282342248" MODIFIED="1693224006967" TEXT="freewheeling">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      <i>gib mir alle Ressourcen jetzt</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1693223969447" ID="ID_710736955" MODIFIED="1693224037518" TEXT="best effort">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      <i>gib mir anderweitig nicht ben&#246;tigte freie Resourcen</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1699563384878" ID="ID_28734392" LINK="#ID_394986223" MODIFIED="1699563462111" VSHIFT="6">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p style="text-align: center">
      beide Probleme lassen sich nicht l&#246;sen &#8212;
    </p>
    <p style="text-align: center">
      <i>..aber entsch&#228;rfen..</i>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#972e26" CREATED="1693224254426" ID="ID_135086138" MODIFIED="1693224295058" TEXT="Zielkonflikt bei &#x201e;erfundenen&#x201c; Deadlines">
<icon BUILTIN="clanbomber"/>
<node CREATED="1693224304747" ID="ID_504579524" MODIFIED="1693224581002">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      zu knapp &#10233; Render <font color="#d43341"><b>korrumpiert</b></font>
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Der implizite Kontrakt sowohl f&#252;r &#187;freewheeling render&#171;, alsauch f&#252;r &#187;background render&#171; ist, da&#223; die Berechnungen vollst&#228;ndig sind &#8212; man hat ja genau daf&#252;r im Gegenzug auf die Deadline verzichtet...
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1693224389160" ID="ID_211513697" MODIFIED="1693225212358" TEXT="zu gro&#xdf;z&#xfc;gig &#x27f9; Allokator wird langsam">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Nach aktueller Einsch&#228;tzung stellt dies kein echtes Problem dar, sondern ist nur unsch&#246;n: exzessiv in die Zukunft gesetzte Deadlines bewirken das Belegen vieler dazwischen liegender <i>Slots </i>und belegen einen Teil des &#187;Allokations-Stroms&#171; mit l&#228;ngst schon obsoleten Activity-Daten; beide Effekte verl&#228;ngern die Liste der <i>aktiven Slots</i>&#160;und erh&#246;hen damit den wichtigsten Aufwands-Faktor f&#252;r die Leistung des Allokators. Allerdings ist mein aktuelles Vor-Urteil, da&#223; der Aufwand des Allokator (und des Schedulers) insgesamt vernachl&#228;ssigbar bleibt im Verh&#228;ltnis zu den aktuellen Medien-Berechnungen
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1693238857881" ID="ID_1276102583" MODIFIED="1693238992560" TEXT="Entscheidung: verlagert in Job-Planning">
<arrowlink COLOR="#743f58" DESTINATION="ID_1858134894" ENDARROW="Default" ENDINCLINATION="-547;24;" ID="Arrow_ID_313746889" STARTARROW="None" STARTINCLINATION="-1607;-121;"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#338800" CREATED="1693495502528" ID="ID_1513616803" MODIFIED="1693587705159" TEXT="Dependency-Notifications herstellen">
<linktarget COLOR="#526686" DESTINATION="ID_1513616803" ENDARROW="Default" ENDINCLINATION="910;65;" ID="Arrow_ID_1729642753" SOURCE="ID_99848990" STARTARROW="None" STARTINCLINATION="987;-87;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1693495715425" HGAP="40" ID="ID_1961334483" MODIFIED="1693495750410" TEXT="in der Planning-Pipeline ist der abh&#xe4;ngige Folge-Job als &#xbb;Parent&#xab; zug&#xe4;nglich" VSHIFT="-7">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#435e98" CREATED="1693495768326" HGAP="85" ID="ID_1696760158" MODIFIED="1695587703548" TEXT="daher &#x27f9; vom Ende zum Nachfolger schalten" VSHIFT="-1">
<arrowlink COLOR="#7a96a6" DESTINATION="ID_799408544" ENDARROW="Default" ENDINCLINATION="651;46;" ID="Arrow_ID_1767879061" STARTARROW="None" STARTINCLINATION="267;-849;"/>
<node COLOR="#338800" CREATED="1693495830346" ID="ID_1261227945" MODIFIED="1693587694778" TEXT="appendNotificationTo(targetTerm)">
<arrowlink COLOR="#786889" DESTINATION="ID_701999603" ENDARROW="Default" ENDINCLINATION="-1087;-893;" ID="Arrow_ID_893699409" STARTARROW="None" STARTINCLINATION="-687;55;"/>
<arrowlink COLOR="#4b8acc" DESTINATION="ID_1367094984" ENDARROW="Default" ENDINCLINATION="72;7;" ID="Arrow_ID_164230628" STARTARROW="None" STARTINCLINATION="119;9;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1693495853623" ID="ID_1367094984" MODIFIED="1693587696585" TEXT="expectNotification(Activity&amp;)">
<linktarget COLOR="#4b8acc" DESTINATION="ID_1367094984" ENDARROW="Default" ENDINCLINATION="72;7;" ID="Arrow_ID_164230628" SOURCE="ID_1261227945" STARTARROW="None" STARTINCLINATION="119;9;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1693496733832" ID="ID_704638049" MODIFIED="1693587697732" TEXT="requireDirectActivation()">
<icon BUILTIN="button_ok"/>
<node CREATED="1693496745497" ID="ID_1227868232" MODIFIED="1693496759948" TEXT="optionales Zusatz-Feature">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1693496761812" ID="ID_1871769449" MODIFIED="1693497758267" TEXT="stellt eine bindende Startzeit-Schwelle her">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Falls es eine zeitliche Grenze gibt, vor der die Berechnungen grunds&#228;tzlich nicht starten sollen &#8212; beispielsweise weil die Ergebnis-Daten in einen Puffer geschrieben werden, der erst ab einem bestimmten Zeitpunkt verf&#252;gbar ist; dies wird dann <i>indirekt codiert durch den Start-Zeitpunkt</i>&#160;der Haupt-Berechnung, und das Einschleifen einer Notification auf das direkt nachfolgende Gate, was dazu f&#252;hrt, da&#223; eine extern empfangene Notification von abgeschlossenen Vorg&#228;nger-Berechnungen erst <i>nach diesem Zeitpunkt</i>&#160;das Gate &#246;ffnen k&#246;nnen. Diese interne Freischaltungs-Notification wird direkt hinter dem Ankerpunkt (dem POST) eingeh&#228;ngt, verwendet aber ansonsten die vorhandenen Mechanismen (indirekte Aktivierung &#252;ber den Dispatch-hook)
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1688999216020" ID="ID_1652417442" MODIFIED="1699563479356" TEXT="Nutzungs-Zyklus">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1688999221795" ID="ID_1575286737" MODIFIED="1693327452333" TEXT="der Term selbst ist transient">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1688999245632" ID="ID_1036154230" MODIFIED="1699563218151">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      aus dem Term gehen die
    </p>
    <p>
      Scheduling-Daten hervor
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#95354f" DESTINATION="ID_61492355" ENDARROW="Default" ENDINCLINATION="-907;-55;" ID="Arrow_ID_1026469877" STARTARROW="None" STARTINCLINATION="-985;134;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1693174049090" ID="ID_21670308" MODIFIED="1693269809516" TEXT="was wird &#xfc;berhaupt ben&#xf6;tigt?">
<icon BUILTIN="help"/>
<node CREATED="1693174068255" ID="ID_324012035" MODIFIED="1693174093851">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      nur Activities, die <i>tats&#228;chlich gescheduled </i>werden m&#252;ssen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1693174135510" ID="ID_1652013577" MODIFIED="1693269047632" TEXT="f&#xfc;r diese aber stets eine Aktivierungs-Zeit &#x2259; &#xbb;Water-Level&#xab;">
<arrowlink COLOR="#bb6884" DESTINATION="ID_331711778" ENDARROW="Default" ENDINCLINATION="309;8;" ID="Arrow_ID_743236550" STARTARROW="None" STARTINCLINATION="180;9;"/>
</node>
<node CREATED="1693269074177" ID="ID_715918201" MODIFIED="1699563126557" TEXT="&#x27f9; Konsequenz: es wird eine POST-Activity erwartet">
<node CREATED="1697503384674" ID="ID_478110624" MODIFIED="1697503477075" TEXT="timeWindow.life &#x27fc; &#xbb;when&#xab;-Parameter f&#xfc;r Scheduling">
<arrowlink COLOR="#6289a0" DESTINATION="ID_1952039720" ENDARROW="Default" ENDINCLINATION="814;-69;" ID="Arrow_ID_95530766" STARTARROW="None" STARTINCLINATION="658;36;"/>
</node>
<node CREATED="1697503353470" ID="ID_1942594803" MODIFIED="1697503382998" TEXT="timeWindow.dead &#x27fc; Deadline f&#xfc;r den BlockFlow-Allocator"/>
</node>
<node COLOR="#435e98" CREATED="1699562986721" ID="ID_132607334" LINK="#ID_5485655" MODIFIED="1699563082181" TEXT="es werden weitere Informationen zur Relevanz ben&#xf6;tigt">
<icon BUILTIN="messagebox_warning"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1699563100616" ID="ID_1191499530" MODIFIED="1699563131784" TEXT="&#x27f9; l&#xe4;uft in jedem Fall auf einen Builder hinaus"/>
</node>
<node COLOR="#338800" CREATED="1699563136890" ID="ID_1816494945" MODIFIED="1699563238511" TEXT="das tats&#xe4;chliche API wird kompleter (und limitierter)">
<arrowlink COLOR="#576f6b" DESTINATION="ID_1142273023" ENDARROW="Default" ENDINCLINATION="-1210;-1187;" ID="Arrow_ID_417210596" STARTARROW="None" STARTINCLINATION="-575;30;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1688999304504" ID="ID_564520426" MODIFIED="1699545900403" TEXT="der Term bleibt auch nach dem post() valide">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1688999331796" ID="ID_1974598754" MODIFIED="1693327479852" TEXT="Builder-Operationen sind vorher g&#xfc;ltig">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1688999346517" ID="ID_124536874" MODIFIED="1693327476995">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Builder-Operationen k&#246;nnen auch nachher
    </p>
    <p>
      (in Grenzen) noch stattfinden
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
<node CREATED="1688999377072" ID="ID_1659636663" MODIFIED="1688999591757" TEXT="&#xbb;auf eigene Gefahr&#xab;">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1688999391407" ID="ID_628427899" MODIFIED="1688999597430" TEXT="&#xc4;nderungen an bereits ausgel&#xf6;sten Activities bleiben wirkunslos">
<icon BUILTIN="info"/>
</node>
<node CREATED="1688999410426" ID="ID_769912313" MODIFIED="1688999515283" TEXT="ungepr&#xfc;ft / Job-Planung mu&#xdf; f&#xfc;r Zeitpuffer sorgen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      das Job-Planning &#8222;mu&#223; wissen was es tut&#8220; &#8212; typischerweise m&#252;ssen alle Zeitfenster hinreichend weit in der Zukunft liegen
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1688999453988" ID="ID_340197441" MODIFIED="1693269899661" TEXT="Timing/concurrency-Fehler vermeiden">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1688999538849" ID="ID_446363704" MODIFIED="1688999552715" TEXT="gef&#xe4;hrlich ist das Anf&#xfc;gen von Prerequisites"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1688999553494" ID="ID_370064738" MODIFIED="1693271022228" TEXT="Analyse der Concurrency-Situation">
<arrowlink COLOR="#fe123a" DESTINATION="ID_1716270984" ENDARROW="Default" ENDINCLINATION="-2763;178;" ID="Arrow_ID_883377376" STARTARROW="None" STARTINCLINATION="657;50;"/>
<icon BUILTIN="flag-pink"/>
<node COLOR="#435e98" CREATED="1693271026513" HGAP="45" ID="ID_578093558" MODIFIED="1699567052537" VSHIFT="10">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      nach vorl&#228;ufiger Analyse: <i>harmlos</i>
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...da nun wirklich jeder Dispatch am Grooming-Token <i>&#8222;vorbei mu&#223;&#8220;&#160; &#8212; </i>theoretisch w&#228;re es sogar darstellbar, die eigentliche Job-Planung au&#223;erhalb und ohne Grooming-Token zu machen; die neuen Jobs gehen dann eben in die Instruction-Queue. Auch eine Notification (welche das Gate dekrementieren k&#246;nnte) geht durch das &#955;-post, welches direkt durch Layer2.postDispatch geht, und damit entweder versucht, das Grooming-Token zu erlangen, oder eben in die Instruct-Queue einstellt
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#3f59c9" DESTINATION="ID_504534684" ENDARROW="Default" ENDINCLINATION="405;-19;" ID="Arrow_ID_1923865634" STARTARROW="None" STARTINCLINATION="-29;133;"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1699563567271" HGAP="54" ID="ID_916265093" MODIFIED="1699563851855" TEXT="Wichtig: stets nur auf diesem Weg planen" VSHIFT="15">
<arrowlink COLOR="#579fc9" DESTINATION="ID_1878072938" ENDARROW="Default" ENDINCLINATION="344;30;" ID="Arrow_ID_29503486" STARTARROW="None" STARTINCLINATION="22;126;"/>
<linktarget COLOR="#3c55cf" DESTINATION="ID_916265093" ENDARROW="Default" ENDINCLINATION="-74;-350;" ID="Arrow_ID_1386478293" SOURCE="ID_1361396246" STARTARROW="None" STARTINCLINATION="673;31;"/>
<icon BUILTIN="clanbomber"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1693269900769" ID="ID_734843401" MODIFIED="1693269922734" TEXT="kann erst im Rahmen der Integration mit Job-Planning gekl&#xe4;rt werden">
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1688999319686" ID="ID_1484039920" MODIFIED="1693327501431" TEXT="der Term kann jederzeit ohne Seiteneffekt gel&#xf6;scht werden">
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1688999694596" ID="ID_504534684" MODIFIED="1699563529026" TEXT="Term-Build setzt GroomingToken vorraus">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      wenig Raum f&#252;r Diskussionen &#8212; und zwar wegen der Memory-Allokation
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#3f59c9" DESTINATION="ID_504534684" ENDARROW="Default" ENDINCLINATION="405;-19;" ID="Arrow_ID_1923865634" SOURCE="ID_578093558" STARTARROW="None" STARTINCLINATION="-29;133;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1699563508108" ID="ID_565152299" MODIFIED="1699563525418" TEXT="mu&#xdf; durch den Aufrufkontext sichergestellt werden">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1699563536669" ID="ID_1878072938" MODIFIED="1699563756594" TEXT="dieser ist selbst ein (Meta)Job">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      und hat damit garantiert das Grooming-Token
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#579fc9" DESTINATION="ID_1878072938" ENDARROW="Default" ENDINCLINATION="344;30;" ID="Arrow_ID_29503486" SOURCE="ID_916265093" STARTARROW="None" STARTINCLINATION="22;126;"/>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1690068219755" HGAP="133" ID="ID_1567752814" MODIFIED="1690068277660" TEXT="Ausf&#xfc;hrung von Activities" VSHIFT="20">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1690068378225" ID="ID_975357334" MODIFIED="1690068414755" TEXT="ActivityLang &#x2261; Rahmen und Laufzeitsystem">
<linktarget COLOR="#3d344c" DESTINATION="ID_975357334" ENDARROW="Default" ENDINCLINATION="-4;-17;" ID="Arrow_ID_56581087" SOURCE="ID_462121305" STARTARROW="Default" STARTINCLINATION="6;32;"/>
<icon BUILTIN="flag-yellow"/>
<node COLOR="#338800" CREATED="1690068444705" ID="ID_1936713026" MODIFIED="1699567142132" TEXT="stellt Setup bereit">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1690068450704" ID="ID_716451982" MODIFIED="1693431638406" TEXT="Dependency-Injection">
<icon BUILTIN="button_ok"/>
<node CREATED="1690068675474" ID="ID_834417186" MODIFIED="1690068685091" TEXT="reine Konstruktor-DI gen&#xfc;gt">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1690068461078" ID="ID_1000341702" MODIFIED="1693431627892" TEXT="BlockFlow">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1690068469725" ID="ID_1098945451" MODIFIED="1699567140369" TEXT="&#x3bb;-Bindings">
<icon BUILTIN="button_ok"/>
<node CREATED="1690068487379" ID="ID_967744995" MODIFIED="1690068517443" TEXT="Teile der Activity-Ausf&#xfc;hrungen aktiveren externe Funktionalit&#xe4;t"/>
<node CREATED="1690068633296" ID="ID_490552261" MODIFIED="1690068663039" TEXT="diese m&#xfc;ssen mit dem Setup bereits mit hergestellt werden"/>
<node CREATED="1690068518127" ID="ID_72274125" MODIFIED="1690068609740" TEXT="diese wird normalerweise im Scheduler Layer-2 bereitgestellt">
<arrowlink COLOR="#6a668f" DESTINATION="ID_989605795" ENDARROW="Default" ENDINCLINATION="-303;1079;" ID="Arrow_ID_180378517" STARTARROW="None" STARTINCLINATION="-786;38;"/>
</node>
<node COLOR="#338800" CREATED="1690068617946" ID="ID_270502955" MODIFIED="1692370161215" TEXT="f&#xfc;r den Test k&#xf6;nnen Stubs eingebunden werden">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1690068712621" ID="ID_663408731" MODIFIED="1699567130353" TEXT="Abstraktion: ExecutionContext">
<icon BUILTIN="button_ok"/>
<node CREATED="1690068752736" ID="ID_1532008023" MODIFIED="1690494850607" TEXT="enth&#xe4;lt die &#x3bb;-Bindings">
<arrowlink COLOR="#e3fddf" DESTINATION="ID_229335349" ENDARROW="Default" ENDINCLINATION="46;-190;" ID="Arrow_ID_382638651" STARTARROW="None" STARTINCLINATION="-301;39;"/>
<linktarget COLOR="#dae9fa" DESTINATION="ID_1532008023" ENDARROW="Default" ENDINCLINATION="-184;505;" ID="Arrow_ID_61418953" SOURCE="ID_1073489318" STARTARROW="None" STARTINCLINATION="630;34;"/>
<node CREATED="1690069222750" ID="ID_276634248" MODIFIED="1690494867733" TEXT="&#x3bb;-post">
<node CREATED="1690736737684" FOLDED="true" ID="ID_1359419273" MODIFIED="1697930193115" TEXT="(Time, Activity, ExecutionCtx)  &#x27fc; activity::Proc">
<node COLOR="#435e98" CREATED="1697929874025" ID="ID_1875907326" MODIFIED="1697930180261" TEXT="warum hier der ExecutionCtx (nochmal) als Argument?">
<linktarget COLOR="#87a6b3" DESTINATION="ID_1875907326" ENDARROW="Default" ENDINCLINATION="543;939;" ID="Arrow_ID_1742040512" SOURCE="ID_1585090015" STARTARROW="None" STARTINCLINATION="271;21;"/>
<font NAME="SansSerif" SIZE="11"/>
<icon BUILTIN="help"/>
<node CREATED="1697929919930" ID="ID_423839978" MODIFIED="1697929930037" TEXT="formal logisch ist das redundant"/>
<node CREATED="1697929930647" ID="ID_2003851" MODIFIED="1697929960173">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      weil ja &#955;-post <i>selbst im </i>ExecutionCtx sitzt
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1697929961772" ID="ID_976407311" MODIFIED="1697930098296" TEXT="die Redundanz ist aber praktisch f&#xfc;r Funktor / Stub-Implementierung">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      wenn man n&#228;mlich als Funktor oder statische Funktion implementiert, bekommt man kein &quot;this&quot; in die Hand
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1697929988337" ID="ID_1148794257" MODIFIED="1697930062682" TEXT="und sie entspricht auch dem durchg&#xe4;ngigen Aufruf-Schema"/>
<node CREATED="1697930064006" ID="ID_396076619" MODIFIED="1697930065506" TEXT="&#x3bb;-post &#x27f6; ActivityLang::dispatchChain(Activity*, ExecutionCtx)"/>
</node>
</node>
</node>
<node CREATED="1690069365933" ID="ID_1190433817" MODIFIED="1690735578970" TEXT="&#x3bb;-work">
<node CREATED="1690740582313" ID="ID_1898791811" MODIFIED="1690740723196" TEXT="(Time, quality)"/>
</node>
<node CREATED="1690069480630" ID="ID_964020744" MODIFIED="1690735605878" TEXT="&#x3bb;-done">
<node CREATED="1690740582313" ID="ID_1636252560" MODIFIED="1690740723196" TEXT="(Time, quality)"/>
</node>
<node CREATED="1690069554609" ID="ID_467087304" MODIFIED="1690069556663" TEXT="&#x3bb;-tick">
<node CREATED="1690740728730" ID="ID_1262348056" MODIFIED="1690746330626" TEXT="(Time)  &#x27fc; activity::Proc"/>
</node>
<node CREATED="1693524440345" ID="ID_657048382" MODIFIED="1693524447514" TEXT="Parameter">
<node CREATED="1693524448503" ID="ID_28054095" MODIFIED="1693524491310" TEXT="getWaitDelay"/>
<node CREATED="1693524453714" ID="ID_841712769" MODIFIED="1693524702988" TEXT="getSchedTime">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_841712769" ENDARROW="Default" ENDINCLINATION="505;0;" ID="Arrow_ID_1932637272" SOURCE="ID_1297762944" STARTARROW="None" STARTINCLINATION="115;-5;"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1690490265626" FOLDED="true" ID="ID_691752926" MODIFIED="1699567176393" TEXT="wird eingebunden als Template-Parameter">
<node COLOR="#338800" CREATED="1690490280656" ID="ID_1134844863" MODIFIED="1690490315482" TEXT="direkt in Activity selber">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1690490297125" ID="ID_1766901032" MODIFIED="1690490313350" TEXT="Vorgriff auf Concepts: Signaturen statisch pr&#xfc;fen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1697849524591" FOLDED="true" ID="ID_747589769" MODIFIED="1697927669544" TEXT="statische Pr&#xfc;fung schwierig">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1697849570913" ID="ID_155562107" MODIFIED="1697849610947" TEXT="ging gut solange ich stets Functor-Objekte verwendet hatte">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...also solange ich nur mit Unit-Tests gearbeitet habe
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1697901649263" ID="ID_1005179743" MODIFIED="1697902145753" TEXT="der Zugriff auf den Typ h&#xe4;ngt von der Art des Members ab">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <ul>
      <li>
        von einer statischen Funktion kan man direkt den Typ aufgreifen, qualifiziert durch den Scope: <font face="Monospaced" color="#1509b8">decltype( Scope::fun )</font>
      </li>
      <li>
        von einem regul&#228;ren Member-Function kann man den Typ nach einem Pseudo-Zugriff erfassen: <font face="Monospaced" color="#1509b8">decltype( std::declval&lt;Scope&gt;().fun )</font>
      </li>
      <li>
        bei einem Functor-Member geht das nicht, aber man kann hier entweder statisch qualifzieren (wie 1.Fall), oder einen Pointer nehmen: <font face="Monospaced" color="#1509b8">decltype( &amp;Scope::fun )</font>
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node CREATED="1697902156764" ID="ID_1064629278" MODIFIED="1697902191903" TEXT="die Syntax Address-of-scope-qualfied-Member w&#xe4;re f&#xfc;r alle drei F&#xe4;lle valide">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1697902217469" ID="ID_1785157426" MODIFIED="1697902255305" TEXT="...liefert aber in jedem Fall einen anders zu behandelnden Typ-Ausdruck">
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#338800" CREATED="1697905677360" ID="ID_118455784" MODIFIED="1697927641347" TEXT="Hilfsmittel ausbauen...">
<arrowlink COLOR="#6e85a1" DESTINATION="ID_717292125" ENDARROW="Default" ENDINCLINATION="-1818;113;" ID="Arrow_ID_979493428" STARTARROW="None" STARTINCLINATION="-869;-95;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1690068793535" ID="ID_1906823317" MODIFIED="1697844595733" TEXT="ist tats&#xe4;chlich implementiert durch den Scheduler selber">
<arrowlink COLOR="#e6ffa8" DESTINATION="ID_1020998473" ENDARROW="Default" ENDINCLINATION="-1456;-96;" ID="Arrow_ID_1485027520" STARTARROW="None" STARTINCLINATION="-811;38;"/>
<icon BUILTIN="idea"/>
<node CREATED="1697844218566" ID="ID_290060192" MODIFIED="1697844248833" TEXT="die entscheidenden externen Effekte"/>
<node CREATED="1697844230190" ID="ID_1228967510" MODIFIED="1697844240670" TEXT="(mal abgesehen vom JobFunctor)"/>
<node CREATED="1697844259176" ID="ID_142974884" MODIFIED="1697844537005">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      im Besonderen <b>&#955;-post</b>&#160;ist im Grunde
    </p>
    <p>
      der Scheduler-Service <i>&#252;berhaupt</i>
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...n&#228;mlich die F&#228;higkeit, einen Activity-chain zu einem geplanten Zeitpunkt oder auf Signal hin auszuf&#252;hren &#8212; und diese F&#228;higkeit mu&#223; selbstverst&#228;ndlich der Sprache selber zu Gebote stehen, damit sie komplexe Aktionsmuster flexibel ausdr&#252;cken kann
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#338800" CREATED="1692286145852" ID="ID_596906210" MODIFIED="1692370174170" TEXT="Fake-Setup f&#xfc;r Tests (ActivityDetector)">
<arrowlink COLOR="#433d62" DESTINATION="ID_902152915" ENDARROW="Default" ENDINCLINATION="656;-38;" ID="Arrow_ID_644734597" STARTARROW="None" STARTINCLINATION="1154;77;"/>
<linktarget COLOR="#7ba8d3" DESTINATION="ID_596906210" ENDARROW="Default" ENDINCLINATION="76;284;" ID="Arrow_ID_1248869383" SOURCE="ID_875825086" STARTARROW="None" STARTINCLINATION="990;-88;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1693316292138" ID="ID_1313498082" MODIFIED="1699567152802" TEXT="Ausf&#xfc;hrungs-Logik">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1693316312133" ID="ID_1707163520" MODIFIED="1699567158536" TEXT="Bedeutung des kontextuellen Zeitfensters?">
<linktarget COLOR="#7d7d95" DESTINATION="ID_1707163520" ENDARROW="Default" ENDINCLINATION="-66;1053;" ID="Arrow_ID_1162895595" SOURCE="ID_1428475873" STARTARROW="None" STARTINCLINATION="803;63;"/>
<icon BUILTIN="help"/>
<node COLOR="#435e98" CREATED="1693316323123" ID="ID_118526613" MODIFIED="1699567233998" TEXT="noch nicht recht klar...">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Zun&#228;chst hatte ich auf abstrakter Ebene festgestellt, da&#223; &#8222;zur Aktivierung stets ein Zeitfenster gegeben sein mu&#223;&#8220; &#8212; und beschlossen, dies &#8222;kontextuell&#8220; bereitzustellen. Inzwischen hat sich aber herausgebildet, da&#223; nur die allerwenigsten Activities tats&#228;chlich <i>vom Scheduler aktiviert </i>werden; es k&#246;nnte sein, da&#223; der Scheduler ausschlie&#223;lich <font face="Monospaced" color="#a86c4e">POST</font>-Activities handhabt, welche ohnehin das Zeitfenster explizit als Parameter transportieren. Allerdings wird das <b>&#955;-post</b>&#160; in verschiedenen F&#228;llen aufgerufen, und zwar mit <font face="Monospaced" color="#a86c4e">POST</font>-, <font face="Monospaced" color="#a86c4e">GATE</font>- und <font face="Monospaced" color="#a86c4e">NOTIFY</font>-Activities.
    </p>
  </body>
</html></richcontent>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1699567240161" HGAP="68" ID="ID_1589694579" MODIFIED="1699567279664" STYLE="bubble" TEXT="(inzwischen schon)" VSHIFT="-4">
<edge COLOR="#2813ae"/>
<font ITALIC="true" NAME="SansSerif" SIZE="9"/>
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1693316943383" FOLDED="true" ID="ID_816321833" MODIFIED="1699567307253" TEXT="Redundanz in den Deadline-Angaben">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Die <font color="#a86c4e" face="Monospaced">GATE</font>-Activity definiert auch noch einmal eine Deadline; welche Angabe gilt dann, und unter welchen Umst&#228;nden? Kann es hier Widerspr&#252;che geben, und damit eine Pr&#228;zedenz?
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
<node CREATED="1693317159003" ID="ID_231581526" MODIFIED="1693317168673" TEXT="Deadline f&#xfc;r den BlockFlow-Allocator"/>
<node CREATED="1693317169874" ID="ID_259509888" MODIFIED="1693317180028" TEXT="Deadline-Check im GATE"/>
<node COLOR="#5b280f" CREATED="1693317215964" ID="ID_983950185" MODIFIED="1693317373254" TEXT="redundante Deadline-Pr&#xfc;fung im Scheduler sinnvoll?">
<icon BUILTIN="button_cancel"/>
<node CREATED="1693317249959" ID="ID_1577389787" MODIFIED="1693317358661" TEXT="ja: w&#xfc;rde dann eine Notification gar nicht mehr dispatchen">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1693317272180" ID="ID_231800477" MODIFIED="1693317362485" TEXT="nein: die Notification geht auf ein GATE, das ohnehin die Deadline pr&#xfc;ft">
<icon BUILTIN="yes"/>
</node>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1693317469401" ID="ID_949454328" MODIFIED="1693317503550" TEXT="Beschlu&#xdf;: Deadlines werden nur im Gate gepr&#xfc;ft">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="forward"/>
</node>
<node CREATED="1699068752568" ID="ID_491166338" LINK="#ID_794200787" MODIFIED="1699068955141" TEXT="diese Ebenen haben sich letztlich im SchedulerService sortiert">
<node CREATED="1699068776516" ID="ID_171673689" MODIFIED="1699068810554" TEXT="die Activity-Language ist f&#xfc;r die reinen Activities zust&#xe4;ndig">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      hier spielt eine Deadline nur die Rolle einer zu pr&#252;fenden Bedingung
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1699068811596" ID="ID_1052903633" MODIFIED="1699068861165" TEXT="im Scheduler werden ActivationEvents verarbeitet">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      diese enthalten eine Activity, aber auch ein Zeitfenster sowie weitere Kontext-Parameter (ManifestationID, Flags wie isCompulsory)
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1699068862433" ID="ID_84744804" MODIFIED="1699068890174" TEXT="die abstrakte Verkn&#xfc;pfung beider Ebenen l&#xe4;uft &#xfc;ber den ExecutionContext">
<icon BUILTIN="idea"/>
<node CREATED="1699068892165" ID="ID_675338306" MODIFIED="1699068902425" TEXT="f&#xfc;r die Sprache ist dieser ein Konzept mit bestimmten Operationen"/>
<node CREATED="1699068903139" ID="ID_1436947530" MODIFIED="1699068930220" TEXT="f&#xfc;r die Scheduler-Impl ist dieser ein impliziter Daten-Vererbungs-Zusammenhang"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1697500165153" FOLDED="true" ID="ID_1967372083" MODIFIED="1699567305397" TEXT="Bedeutung des &#xbb;when&#xab;-Parameters">
<icon BUILTIN="info"/>
<node CREATED="1697501206702" ID="ID_327384351" MODIFIED="1697501307538" TEXT="POST-Activity: data_.timeWindow.life &#x27fc; &#xbb;when&#xab;-Parameter"/>
<node CREATED="1697500302194" ID="ID_454559013" MODIFIED="1697500322768" TEXT="in &#x3bb;-post | POST-Eingang">
<node CREATED="1697500328916" ID="ID_1952039720" MODIFIED="1697503477075" TEXT="der Triggerzeitpunkt">
<arrowlink COLOR="#2e4db7" DESTINATION="ID_742861391" ENDARROW="Default" ENDINCLINATION="487;23;" ID="Arrow_ID_1433029717" STARTARROW="None" STARTINCLINATION="1290;183;"/>
<linktarget COLOR="#6289a0" DESTINATION="ID_1952039720" ENDARROW="Default" ENDINCLINATION="814;-69;" ID="Arrow_ID_95530766" SOURCE="ID_478110624" STARTARROW="None" STARTINCLINATION="658;36;"/>
</node>
<node CREATED="1697500334509" ID="ID_1499869429" MODIFIED="1697500351876" TEXT="&#x27fc; waterLevel f&#xfc;r die PriQueue"/>
</node>
<node CREATED="1697500389540" ID="ID_1060348674" MODIFIED="1697501192679">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <i>wenn</i>&#160;es zur Ausf&#252;hrung kommt: when &#8801; now
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1693317527566" ID="ID_393706947" MODIFIED="1693317722746" TEXT="Fazit">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="forward"/>
<node CREATED="1693317530251" ID="ID_496219214" MODIFIED="1698972118959" TEXT="betrachte die Redundanz als Spielraum zur Beweglichkeit">
<arrowlink COLOR="#5adeb2" DESTINATION="ID_598148359" ENDARROW="Default" ENDINCLINATION="52;-139;" ID="Arrow_ID_155448561" STARTARROW="None" STARTINCLINATION="638;34;"/>
<linktarget COLOR="#cd1d68" DESTINATION="ID_496219214" ENDARROW="Default" ENDINCLINATION="1100;780;" ID="Arrow_ID_1973257942" SOURCE="ID_970794288" STARTARROW="Default" STARTINCLINATION="-1;-184;"/>
</node>
<node CREATED="1693317673355" ID="ID_258047795" MODIFIED="1693317696718" TEXT="Zeitfenster-Parameter sollten innerhalb eines Terms konstant sein">
<node CREATED="1699237096753" ID="ID_914374725" LINK="#ID_1443826232" MODIFIED="1699237251487" TEXT="und wenn nicht: dann Minimum/Maximum">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1693317617453" ID="ID_812974850" MODIFIED="1693317653450" TEXT="auf die kontextuellen Parameter kann weitgehend verzichtet werden"/>
<node CREATED="1693317661471" ID="ID_709533668" MODIFIED="1693317672145" TEXT="es wird stets der n&#xe4;chst greifbare Parameter verwendet"/>
</node>
</node>
<node COLOR="#338800" CREATED="1693345571268" ID="ID_1280713523" MODIFIED="1693431656003" TEXT="Ausf&#xfc;hrung einer Kette">
<icon BUILTIN="button_ok"/>
<node CREATED="1693345578139" ID="ID_1743236034" MODIFIED="1693345586916" TEXT="realisiert in Activity-Lang">
<icon BUILTIN="info"/>
</node>
<node CREATED="1693426529370" ID="ID_1866137109" MODIFIED="1693426556041" TEXT="einfache Schleife bis Kettenende bzw. != PASS">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1693426559375" ID="ID_728243970" MODIFIED="1693426583903" TEXT="dispatchChain() : Einstieg &#xfc;ber dispatch(), dann activateChain()"/>
</node>
<node COLOR="#338800" CREATED="1693440743987" ID="ID_1799625960" MODIFIED="1693528089871" TEXT="Ausf&#xfc;hrung der Kette braucht Zugriff auf aktuelle Scheduler-Zeit">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Ein &#955; in den Scheduler binden?
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#3e708a" DESTINATION="ID_1799625960" ENDARROW="Default" ENDINCLINATION="1052;45;" ID="Arrow_ID_1059439556" SOURCE="ID_1663710700" STARTARROW="None" STARTINCLINATION="1063;-39;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1693524510361" HGAP="24" ID="ID_1297762944" MODIFIED="1693524583175" TEXT="am Besten direkt &#xfc;ber den ExecutionContext" VSHIFT="-4">
<arrowlink DESTINATION="ID_841712769" ENDARROW="Default" ENDINCLINATION="505;0;" ID="Arrow_ID_1932637272" STARTARROW="None" STARTINCLINATION="115;-5;"/>
<icon BUILTIN="idea"/>
<node COLOR="#435e98" CREATED="1693581273774" HGAP="35" ID="ID_1827474275" MODIFIED="1693581319725" TEXT="dort als std::function abgelegt" VSHIFT="19">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1693524546947" HGAP="39" ID="ID_158655205" MODIFIED="1693581324652" TEXT="Tests k&#xf6;nnen hier eigenes &#x3bb; zuweisen" VSHIFT="1">
<font NAME="SansSerif" SIZE="10"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1693345602461" ID="ID_996451340" MODIFIED="1697929501959" TEXT="Dispatch">
<icon BUILTIN="button_ok"/>
<node CREATED="1693345606503" ID="ID_1448505632" MODIFIED="1693345622980" TEXT="realisiert im Scheduler-Commutator (Layer-2)">
<icon BUILTIN="info"/>
</node>
<node COLOR="#435e98" CREATED="1693345633335" ID="ID_184362197" MODIFIED="1697929504081">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Verwaltung des <b>GroomingToken</b>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="forward"/>
</node>
<node CREATED="1693345687956" ID="ID_885356569" MODIFIED="1693345702766" TEXT="post() &#x2261; Eingangsverzweigung">
<node COLOR="#435e98" CREATED="1693345771969" ID="ID_120381746" MODIFIED="1693431670621" TEXT="GroomingToken erlangt &#x27f9; Einstieg dispatch()"/>
<node COLOR="#435e98" CREATED="1693345805685" ID="ID_941490506" MODIFIED="1693431671714" TEXT="sonst &#x27f9; Dispatch-Queue"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1690068830605" ID="ID_330404913" MODIFIED="1693431707720" TEXT="Activation">
<icon BUILTIN="button_ok"/>
<node CREATED="1690068838900" ID="ID_1597056190" MODIFIED="1690068897095" TEXT="Argumente">
<icon BUILTIN="info"/>
<node CREATED="1690068867288" ID="ID_1499789702" MODIFIED="1690068885342" TEXT="(*this Activity)"/>
<node CREATED="1690068851434" ID="ID_196644680" MODIFIED="1690068865466" TEXT="ExecutionContext"/>
<node CREATED="1690068845131" ID="ID_488638240" MODIFIED="1690068850921" TEXT="aktuelle wall-clock-time"/>
</node>
<node CREATED="1690741904360" ID="ID_23684403" MODIFIED="1690741909940" TEXT="R&#xfc;ckgabewert">
<icon BUILTIN="info"/>
<node CREATED="1690741912719" ID="ID_1973238180" MODIFIED="1690741925084" TEXT="ein Status/Steuerflag"/>
<node CREATED="1690741926157" ID="ID_1658082854" MODIFIED="1690741927768" TEXT="F&#xe4;lle">
<node COLOR="#435e98" CREATED="1690741929054" ID="ID_1938875580" MODIFIED="1697664293261" TEXT="PASS">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      pass on the activation down the chain
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#435e98" CREATED="1690742161893" ID="ID_1861458943" MODIFIED="1697664293262" TEXT="SKIP">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      skip rest of the Activity chain for good
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#435e98" CREATED="1697664265466" ID="ID_38157517" MODIFIED="1697664293262" TEXT="WAIT">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      nothing to do; wait and re-check for work later
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1690742164165" ID="ID_1609304132" MODIFIED="1690742708723" TEXT="KILL">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      obliterate the complete Activity-Term and all its dependencies
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="help"/>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1690742167340" ID="ID_132807819" MODIFIED="1690742482151" TEXT="HALT">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      abandon this play / render process
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="help"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1690068914674" ID="ID_229335349" MODIFIED="1692634842339" TEXT="switch-on-type-selector">
<linktarget COLOR="#e3fddf" DESTINATION="ID_229335349" ENDARROW="Default" ENDINCLINATION="46;-190;" ID="Arrow_ID_382638651" SOURCE="ID_1532008023" STARTARROW="None" STARTINCLINATION="-301;39;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1688998699273" ID="ID_276240629" MODIFIED="1688998702452" TEXT="POST">
<node CREATED="1690069222750" ID="ID_817512371" MODIFIED="1690495286268" TEXT="&#x3bb;-post">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_817512371" ENDARROW="Default" ENDINCLINATION="-55;19;" ID="Arrow_ID_1228234954" SOURCE="ID_1000629107" STARTARROW="None" STARTINCLINATION="-170;11;"/>
<linktarget COLOR="#8897a9" DESTINATION="ID_817512371" ENDARROW="Default" ENDINCLINATION="-175;61;" ID="Arrow_ID_847368059" SOURCE="ID_681493814" STARTARROW="None" STARTINCLINATION="-262;0;"/>
<node CREATED="1692569081906" ID="ID_914571375" MODIFIED="1692569093021" TEXT="versucht das Grooming-Token zu erlangen"/>
<node CREATED="1692569093561" ID="ID_1575390199" MODIFIED="1692569104579" TEXT="sonst: Dispatch &#xfc;ber die Queue"/>
<node CREATED="1692569105461" ID="ID_1960608539" MODIFIED="1692722072608" TEXT="schlie&#xdf;lich Dispatch &#x27f9; Aktivierung der Chain-Activity">
<arrowlink COLOR="#46429b" DESTINATION="ID_1729670913" ENDARROW="Default" ENDINCLINATION="100;-277;" ID="Arrow_ID_1325928186" STARTARROW="None" STARTINCLINATION="-479;27;"/>
</node>
</node>
</node>
<node CREATED="1688998737324" ID="ID_1768827754" MODIFIED="1688998829651" TEXT="GATE">
<node CREATED="1690069237564" ID="ID_1663637650" MODIFIED="1690069243595" TEXT="pr&#xfc;ft die Bedingungen"/>
<node CREATED="1690069251010" ID="ID_449595126" MODIFIED="1690069692342" TEXT="bei Erfolg wird die Aktivierung weitergegeben">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_449595126" ENDARROW="Default" ENDINCLINATION="317;20;" ID="Arrow_ID_288430732" SOURCE="ID_1897470873" STARTARROW="None" STARTINCLINATION="233;-20;"/>
</node>
<node CREATED="1692544036224" ID="ID_1531555498" LINK="#ID_846298052" MODIFIED="1693499473498" TEXT="der Deadline-Zeitpunkt selbst sperrt bereits">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#435e98" CREATED="1690069297302" ID="ID_33956976" MODIFIED="1690492032363" TEXT="sonst....">
<icon BUILTIN="help"/>
<node CREATED="1690069315708" ID="ID_1571780277" MODIFIED="1690069346741" TEXT="...soll sich das Gate &#xbb;selbst in die Zukunft schieben&#xab;">
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1693499693849" ID="ID_1878976712" MODIFIED="1693501299248" TEXT="ist dieses Feature &#xfc;berhaupt notwendig?">
<linktarget COLOR="#9671cb" DESTINATION="ID_1878976712" ENDARROW="Default" ENDINCLINATION="-1051;64;" ID="Arrow_ID_1465904567" SOURCE="ID_1514365592" STARTARROW="None" STARTINCLINATION="624;46;"/>
<icon BUILTIN="help"/>
<node CREATED="1693500036651" ID="ID_891303584" MODIFIED="1693500110260" TEXT="aus generisch-logischen Gr&#xfc;nden eingef&#xfc;hrt">
<icon BUILTIN="info"/>
</node>
<node CREATED="1693500048618" ID="ID_756123423" MODIFIED="1693500318044" TEXT="&#xfc;berfl&#xfc;ssig falls externer Trigger ausschlie&#xdf;lich per Notification kommt">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ....denn die Implementierung des Notification-Dispatch erkennt, wenn eine Notification das Gate &#246;ffnet, und dispatched in diesem Fall den Chain sofort zur Ausf&#252;hrung und sperrt dann auch das Gate endg&#252;ltig; das bedeutet: wenn die Aktivierung &#252;ber diesen Mechanismus erfolgt, wird ein geplanter re-Trigger niemals zum Zug kommen (sondern dann stets ein bereits gesperrtes Gate vorfinden
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1693500320700" ID="ID_1158823061" MODIFIED="1693501668230">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      entscheidendes Kriterium: <i>was ist der Regelfall?</i>
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#ff8c4a" DESTINATION="ID_130475381" ENDARROW="Default" ENDINCLINATION="-1002;56;" ID="Arrow_ID_501288232" STARTARROW="None" STARTINCLINATION="1201;66;"/>
<arrowlink COLOR="#ff835a" DESTINATION="ID_1677810131" ENDARROW="Default" ENDINCLINATION="266;-21;" ID="Arrow_ID_1264674848" STARTARROW="None" STARTINCLINATION="-317;19;"/>
<icon BUILTIN="bell"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1690069773157" FOLDED="true" ID="ID_1756992465" MODIFIED="1693501586447" TEXT="Problem: wer bestimmt um wie viel?">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1690069811256" ID="ID_743760450" MODIFIED="1690069828122" TEXT="konstanter Step &#x27f9; spinning"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1690491378700" ID="ID_1592003148" MODIFIED="1690491504993">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p style="text-align: center">
      Hier <i>keine</i>&#160;zus&#228;tzliche Steuer-Logik einf&#252;hren!
    </p>
    <p style="text-align: center">
      die Zeitplanung mu&#223; eben <i>gut genug </i>sein!
    </p>
  </body>
</html></richcontent>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1690491347653" ID="ID_1726593706" MODIFIED="1690491374151" TEXT="die Schrittweite ist ein fester Parameter im ExecutionContext">
<icon BUILTIN="yes"/>
<node CREATED="1690491529352" ID="ID_582566403" MODIFIED="1690491977125" TEXT="Ma&#xdf;gabe: effektiv keine Wartezeiten">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      W&#228;hrend einer Wartezeit auf re-Test kann nicht erkannt werden, ob der Nachfolgejob vielleicht inzwischen schon arbeiten k&#246;nnte; somit besteht einerseits die Gefahr, Ressourcen zu verschwenden (re-Test Activities m&#252;ssen von Workern im Management-Modus (single-threaded) abgearbeitet werden), andererseits Ressourcen ungen&#252;tzt zu lassen (Worker k&#246;nnte sich schlafen legen, obwohl der wartende Nachfolge-Job bereits ausf&#252;hrbar w&#228;re und genau von diesem Worker behandelt werden k&#246;nnte. Das ist ein klassischer Zielkonflikt, und l&#228;uft auf die Forderung hinaus, nur so h&#228;ufig zu pr&#252;fen, wie die Engine im Schnitt ohnehin freie Kapazit&#228;t h&#228;tte. Ansatz: &#8709; Job-Zeit geteilt durch Zahl der Worker. Und das dann noch mal zwei oder drei, um etwas Puffer zu schaffen...
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1690491543494" ID="ID_647432692" MODIFIED="1690491573721" TEXT="die Engine wird einen charakteristischen Eigen-Rhythmus entwickeln">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1690491999652" ID="ID_1302700119" MODIFIED="1690492023832" TEXT="letzten Endes stammt damit der Stellwert aus der Engine-Steuerungs-Ebene">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1690069846556" ID="ID_1000629107" MODIFIED="1690495286268" TEXT="ansonsten ist das ein &#x3bb;-POST mit festem Delay">
<arrowlink DESTINATION="ID_817512371" ENDARROW="Default" ENDINCLINATION="-55;19;" ID="Arrow_ID_1228234954" STARTARROW="None" STARTINCLINATION="-170;11;"/>
</node>
</node>
<node CREATED="1693501591528" ID="ID_332217879" MODIFIED="1693501601917" TEXT="Steuer-Logik">
<node CREATED="1693501607721" ID="ID_182057848" MODIFIED="1693501620284" TEXT="prim&#xe4;r-Chain">
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1693501621611" ID="ID_1677810131" MODIFIED="1693501660623" TEXT="gilt als Regelfall">
<linktarget COLOR="#ff835a" DESTINATION="ID_1677810131" ENDARROW="Default" ENDINCLINATION="266;-21;" ID="Arrow_ID_1264674848" SOURCE="ID_1158823061" STARTARROW="None" STARTINCLINATION="-317;19;"/>
<icon BUILTIN="bell"/>
</node>
<node CREATED="1693501675079" ID="ID_1175823594" MODIFIED="1693501687857" TEXT="l&#xe4;uft bei offenem Gate unmittelbar durch"/>
<node CREATED="1693501693061" ID="ID_1925544668" MODIFIED="1693501698656" TEXT="bricht sonst mit SKIP ab"/>
</node>
<node CREATED="1693501703675" ID="ID_1198687710" MODIFIED="1693501710273" TEXT="Notification">
<node CREATED="1693501711283" ID="ID_1997106163" MODIFIED="1693501726005" TEXT="dekrementiert stets das Latch"/>
<node CREATED="1693501726593" ID="ID_1647318573" MODIFIED="1693501760642">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <b>nur</b>&#160;wenn <b>dadruch</b>&#160;das Latch &#10236; 0 geht
    </p>
  </body>
</html></richcontent>
<node CREATED="1693501762324" ID="ID_31439546" MODIFIED="1693501807025" TEXT="dispatch Chain">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1693501808094" ID="ID_1931167592" MODIFIED="1693501833954" TEXT="GroomingToken &#x27f9; f&#xfc;hrt effektiv sofort zur Ausf&#xfc;hrung(nested)"/>
<node CREATED="1693501834610" ID="ID_823848881" MODIFIED="1693501863067" TEXT="sonst &#x27f9; Dispatch-Queue und als n&#xe4;chste freie Aktion ausgef&#xfc;hrt"/>
</node>
<node CREATED="1693501769499" ID="ID_1059675453" MODIFIED="1693501790365" TEXT="Gate endg&#xfc;ltig sperren">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      indem die deadline &#8788; Time::MIN
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1693501874533" ID="ID_627786574" MODIFIED="1693501882023" TEXT="sonst &#x27f9; PASS und nichts weiter tun"/>
</node>
<node CREATED="1693501898442" ID="ID_873026982" MODIFIED="1693501906935" TEXT="Doppel-Aktivierungen">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1693501908584" ID="ID_1998121077" MODIFIED="1693501918471" TEXT="durch spezielle Logik ausgeschlossen">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1693501927323" ID="ID_806186642" MODIFIED="1693501950406" TEXT="Asymmetrie">
<node CREATED="1693501951564" ID="ID_565836616" MODIFIED="1693501951564" TEXT="Notification triggert nur, wenn sie selbst das Gate &#xf6;ffnet"/>
<node CREATED="1693501953170" ID="ID_613304999" MODIFIED="1693501967844" TEXT="prim&#xe4;r-Chain marschiert durch, pr&#xfc;ft aber die Deadaline"/>
</node>
</node>
</node>
</node>
<node CREATED="1688998890863" ID="ID_1091142135" MODIFIED="1690736014967" TEXT="WORKSTART">
<node CREATED="1690069365933" ID="ID_480174077" MODIFIED="1690735578970" TEXT="&#x3bb;-work"/>
</node>
<node CREATED="1688998913869" ID="ID_341032742" MODIFIED="1688998927398" TEXT="INVOKE">
<node CREATED="1690069389801" ID="ID_1255231137" MODIFIED="1690069397946" TEXT="die nachfolgenden FEED-Activities auswerten"/>
<node CREATED="1690069372858" ID="ID_1136969645" MODIFIED="1690069385742" TEXT="den eingebundenen Job-Funktor aufrufen"/>
</node>
<node CREATED="1689000645022" ID="ID_31160018" MODIFIED="1689000647216" TEXT="FEED">
<node CREATED="1690069477078" ID="ID_866190724" MODIFIED="1690069478242" TEXT="NOP"/>
</node>
<node CREATED="1688998935319" ID="ID_1602687" MODIFIED="1690736152166" TEXT="WORKSTOP">
<node CREATED="1690069480630" ID="ID_917733959" MODIFIED="1690735605878" TEXT="&#x3bb;-done"/>
</node>
<node CREATED="1688998940449" ID="ID_998055924" MODIFIED="1690069195189" TEXT="NOTIFY">
<node CREATED="1690069494444" ID="ID_913671672" MODIFIED="1690495334674">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      bewirkt <i>anderswo </i>einen Trigger
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1690495342418" ID="ID_1735708551" MODIFIED="1690495407533" TEXT="die Art der angesto&#xdf;enen Aktion h&#xe4;ngt vom Ziel ab (double-dispatch)">
<arrowlink COLOR="#72647d" DESTINATION="ID_1420540747" ENDARROW="Default" ENDINCLINATION="17;-42;" ID="Arrow_ID_1383949980" STARTARROW="None" STARTINCLINATION="-175;7;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1690495433254" ID="ID_1805822057" MODIFIED="1692569069328" TEXT="aus Konsistenz-Gr&#xfc;nden indirekter Dispatch (u.U asynchron)">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1690069846556" ID="ID_681493814" MODIFIED="1690495242907" TEXT="&#x3bb;-post">
<arrowlink COLOR="#8897a9" DESTINATION="ID_817512371" ENDARROW="Default" ENDINCLINATION="-175;61;" ID="Arrow_ID_847368059" STARTARROW="None" STARTINCLINATION="-262;0;"/>
</node>
</node>
<node CREATED="1690891900488" ID="ID_955220405" MODIFIED="1690891904780" TEXT="HOOK">
<node CREATED="1690891815995" ID="ID_642006957" MODIFIED="1692569548046" TEXT="als Erweiterungspunkt / f&#xfc;r Instrumentierung">
<arrowlink COLOR="#759db4" DESTINATION="ID_1359624247" ENDARROW="Default" ENDINCLINATION="446;-43;" ID="Arrow_ID_265182299" STARTARROW="None" STARTINCLINATION="1008;65;"/>
<linktarget COLOR="#8b8aa3" DESTINATION="ID_642006957" ENDARROW="Default" ENDINCLINATION="-141;9;" ID="Arrow_ID_1356089696" SOURCE="ID_797276026" STARTARROW="None" STARTINCLINATION="-234;-13;"/>
</node>
<node CREATED="1690892152761" ID="ID_1147906730" MODIFIED="1690892165928" TEXT="ruft den Erweiterungspunkt auf (virtual call)"/>
<node CREATED="1690892167303" ID="ID_439509474" MODIFIED="1690892177400" TEXT="&#xfc;bergibt ExecutionCtx + this"/>
</node>
<node CREATED="1690069195852" ID="ID_1205140605" MODIFIED="1690069197272" TEXT="TICK">
<node CREATED="1690069554609" ID="ID_250578152" MODIFIED="1690069556663" TEXT="&#x3bb;-tick"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1690068951061" ID="ID_1729670913" MODIFIED="1692634844170" TEXT="Dispatch">
<linktarget COLOR="#46429b" DESTINATION="ID_1729670913" ENDARROW="Default" ENDINCLINATION="100;-277;" ID="Arrow_ID_1325928186" SOURCE="ID_1960608539" STARTARROW="None" STARTINCLINATION="-479;27;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1692567620559" ID="ID_560161359" MODIFIED="1692567640105" TEXT="Notification indirekt &#xfc;ber den Scheduler">
<icon BUILTIN="info"/>
<node CREATED="1692567646787" ID="ID_1679080727" MODIFIED="1692567660965" TEXT="je nach Grooming-Token direkt(synchron) oder asynchron"/>
<node CREATED="1692567661650" ID="ID_319374048" MODIFIED="1692567674700" TEXT="falls asynchron dann durch die Dispatch-Queue"/>
<node CREATED="1692567692725" ID="ID_833972320" MODIFIED="1692567710662" TEXT="falls Post(Zeitfenster) dann auch durch die Priority-Queue"/>
</node>
<node CREATED="1690068955715" ID="ID_995732211" MODIFIED="1690068991190" TEXT="kann gegebenenfalls zu einer Invokation f&#xfc;hren">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1692627423725" ID="ID_403843310" MODIFIED="1692627432102" TEXT="abh&#xe4;ngig vom Zieltyp"/>
<node CREATED="1692627432915" ID="ID_473632250" MODIFIED="1692627443790" TEXT="und ggfs GATE-check"/>
<node CREATED="1692627449218" ID="ID_750903644" MODIFIED="1692627599339" TEXT="Problem der Sprung-Weitergabe">
<arrowlink COLOR="#9a7574" DESTINATION="ID_1757918789" ENDARROW="Default" ENDINCLINATION="197;-7;" ID="Arrow_ID_1929671741" STARTARROW="None" STARTINCLINATION="116;9;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1690069599277" ID="ID_1420540747" MODIFIED="1690495396485" TEXT="double-dispatch">
<linktarget COLOR="#72647d" DESTINATION="ID_1420540747" ENDARROW="Default" ENDINCLINATION="17;-42;" ID="Arrow_ID_1383949980" SOURCE="ID_1735708551" STARTARROW="None" STARTINCLINATION="-175;7;"/>
<icon BUILTIN="idea"/>
<node CREATED="1690069609660" ID="ID_194969059" MODIFIED="1692569203630" TEXT="NOTIFY &#x27f6; GATE">
<node CREATED="1690069633998" ID="ID_6952365" MODIFIED="1690069639563" TEXT="count-down latch"/>
<node CREATED="1690069650471" ID="ID_1897470873" MODIFIED="1692568945143" TEXT="ggfs Activation ohne else-Fall">
<arrowlink DESTINATION="ID_449595126" ENDARROW="Default" ENDINCLINATION="317;20;" ID="Arrow_ID_288430732" STARTARROW="None" STARTINCLINATION="233;-20;"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1692726935893" HGAP="37" ID="ID_171857662" MODIFIED="1692741916442" TEXT="Gefahr von Mehrfach-Aktivierungen" VSHIFT="9">
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#435e98" CREATED="1692726949758" HGAP="30" ID="ID_1811673703" MODIFIED="1692744053251" TEXT="re-dispatch nach Notification?" VSHIFT="11">
<icon BUILTIN="help"/>
<node CREATED="1692727029488" ID="ID_1839389865" MODIFIED="1692727048754" TEXT="wir wissen nicht, ob vorher bereits ein &#xbb;spin&#xab; re-scheduled wurde"/>
<node COLOR="#5b280f" CREATED="1692727049374" ID="ID_88816908" MODIFIED="1697427535613">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      wenn wir nun unmittelbar re-dispatchen,
    </p>
    <p>
      k&#246;nnte der chain zweimal aktiviert werden
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#f72a8f" DESTINATION="ID_424129996" ENDARROW="Default" ENDINCLINATION="-547;-50;" ID="Arrow_ID_1444084792" STARTARROW="None" STARTINCLINATION="-53;219;"/>
<linktarget COLOR="#a35866" DESTINATION="ID_88816908" ENDARROW="Default" ENDINCLINATION="-7;123;" ID="Arrow_ID_1622612414" SOURCE="ID_145651869" STARTARROW="None" STARTINCLINATION="487;21;"/>
<icon BUILTIN="clanbomber"/>
</node>
<node CREATED="1692741888037" HGAP="11" ID="ID_1745062272" MODIFIED="1692744062712" TEXT="ja : beherrschbar" VSHIFT="8">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
</node>
<node CREATED="1692569485796" ID="ID_1923357251" MODIFIED="1692569492311" TEXT="NOTIFY &#x27f6; HOOK">
<node CREATED="1692569497066" ID="ID_797276026" MODIFIED="1692569567132" TEXT="ruft den 2.Erweiterungspunkt auf (virtual call)">
<arrowlink COLOR="#8b8aa3" DESTINATION="ID_642006957" ENDARROW="Default" ENDINCLINATION="-141;9;" ID="Arrow_ID_1356089696" STARTARROW="None" STARTINCLINATION="-234;-13;"/>
</node>
<node CREATED="1690892167303" ID="ID_393592267" MODIFIED="1690892177400" TEXT="&#xfc;bergibt ExecutionCtx + this"/>
</node>
<node CREATED="1692569286359" ID="ID_246311340" MODIFIED="1692569354921" TEXT="POST &#x27f6; &lt;*&gt;">
<node CREATED="1692569324714" ID="ID_259602812" MODIFIED="1692569349484" TEXT="Activation auf &lt;*&gt;"/>
</node>
<node COLOR="#3c2cd7" CREATED="1690492107763" ID="ID_1237570064" MODIFIED="1690492139563" TEXT="--more-to-come-here--">
<font NAME="Monospaced" SIZE="12"/>
</node>
<node CREATED="1690069612171" ID="ID_546472363" MODIFIED="1692569272220" TEXT="sonst: Activation"/>
</node>
</node>
<node COLOR="#338800" CREATED="1692627465184" ID="ID_1777234139" MODIFIED="1692634855358" TEXT="Ausf&#xfc;hrungs-Sequenz">
<icon BUILTIN="button_ok"/>
<node CREATED="1692627475398" ID="ID_635246138" MODIFIED="1692627523707" TEXT="normalerweise Weitergabe an die next-Activity "/>
<node CREATED="1692627524719" ID="ID_1757918789" MODIFIED="1692627590963" TEXT="bei Spr&#xfc;ngen und Verzweigungen wird daf&#xfc;r POST verwendet">
<linktarget COLOR="#9a7574" DESTINATION="ID_1757918789" ENDARROW="Default" ENDINCLINATION="197;-7;" ID="Arrow_ID_1929671741" SOURCE="ID_750903644" STARTARROW="None" STARTINCLINATION="116;9;"/>
</node>
</node>
<node COLOR="#338800" CREATED="1690069961163" HGAP="-57" ID="ID_1647246120" MODIFIED="1692634828819" TEXT="brauche Diagnose-Hilfsmittel" VSHIFT="4">
<arrowlink COLOR="#794f4b" DESTINATION="ID_284088835" ENDARROW="Default" ENDINCLINATION="-751;-63;" ID="Arrow_ID_1213725911" STARTARROW="None" STARTINCLINATION="518;48;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1690070237908" HGAP="43" ID="ID_875825086" MODIFIED="1692491405654" TEXT="Test-Setup mit &#x3bb;-Stubs" VSHIFT="-3">
<arrowlink COLOR="#7ba8d3" DESTINATION="ID_596906210" ENDARROW="Default" ENDINCLINATION="76;284;" ID="Arrow_ID_1248869383" STARTARROW="None" STARTINCLINATION="990;-88;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1690070107384" HGAP="31" ID="ID_396064852" MODIFIED="1692491421971" TEXT="ActivityDetector f&#xfc;r Me&#xdf;unkte" VSHIFT="-13">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1689205105640" ID="ID_1873547897" MODIFIED="1692491417479" TEXT="Funktor-Aufruf erkennen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1689205129709" ID="ID_1799160243" MODIFIED="1692491419052" TEXT="stattgefundene Invocation erkennen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1689205423173" ID="ID_206179585" MODIFIED="1692491420712" TEXT="Gate beobachten">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1681396805942" ID="ID_1886457526" MODIFIED="1681396815850" TEXT="Architektur festlegen">
<icon BUILTIN="yes"/>
<node CREATED="1681397127019" ID="ID_683727165" MODIFIED="1681397136243" TEXT="separation of concerns">
<icon BUILTIN="yes"/>
<node CREATED="1681398162521" ID="ID_1550060591" MODIFIED="1681398225579" TEXT="CalcStream &#x2261; Dispatch repetitiv vorantreiben"/>
<node CREATED="1681397144793" ID="ID_439031406" MODIFIED="1681397236218" TEXT="Dispatch &#x2261; Festsetzen der Zeitpunkte und Beziehungen"/>
<node CREATED="1681397308511" ID="ID_1748761928" MODIFIED="1681397340043" TEXT="Planning &#x2261; Ermitteln der Vorrausetzungen und Beziehungen"/>
<node CREATED="1681398712198" ID="ID_1529988864" MODIFIED="1681398770503" TEXT="Schedule &#x2261; Priorisierung und Verteilung an die Worker"/>
<node CREATED="1681398678151" ID="ID_1921320233" MODIFIED="1681398704971" TEXT="Control &#x2261; Beobachtung und Zustands-Aktualisierung"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1699567400583" ID="ID_1805979989" MODIFIED="1699567595728" TEXT="Play-Proze&#xdf;">
<icon BUILTIN="hourglass"/>
</node>
<node COLOR="#435e98" CREATED="1699567397056" ID="ID_1111153236" MODIFIED="1699567591682" TEXT="Scheduler">
<icon BUILTIN="info"/>
<node CREATED="1699567412006" ID="ID_1349496227" MODIFIED="1699567426127" TEXT="Scheduler-API: Eingang von der Planung"/>
<node CREATED="1699567426716" ID="ID_1278770752" MODIFIED="1699567463730" TEXT="SchedulerService: Verbindungen und Kapazit&#xe4;tsplanung"/>
<node CREATED="1699567565622" ID="ID_578353407" MODIFIED="1699567584295" TEXT="LoadController: Selbstregulierung und Kapazit&#xe4;ts-Steuerung"/>
<node CREATED="1699567465549" ID="ID_354480855" MODIFIED="1699567483062" TEXT="Layer-2: Concurrency und Dispatch"/>
<node CREATED="1699567483834" ID="ID_252865294" MODIFIED="1699567496373" TEXT="Layer-1: Queue-Implementierung"/>
<node CREATED="1699567498680" ID="ID_1842900991" MODIFIED="1699567516105" TEXT="Activity-Lang: Steuerung der Ausf&#xfc;rhungs-Struktur"/>
<node CREATED="1699567516725" ID="ID_536129711" MODIFIED="1699567556603" TEXT="BlockFlow: garantierte Lebensdauer-Zeit"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1680563595176" ID="ID_773353840" MODIFIED="1680563601552" TEXT="Aufruf/Verdrahtung im Player">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1688998017511" ID="ID_562682504" MODIFIED="1688998030763" TEXT="PlayProcess erstellen">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1688998031595" ID="ID_513391469" MODIFIED="1688998036739" TEXT="CalcStream bereitstellen">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1688998038105" ID="ID_1573232892" MODIFIED="1688998051496" TEXT="Dispatcher / RenderEnvironmentClosure">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1688998058288" ID="ID_179973201" MODIFIED="1688998071494" TEXT="RenderDrive / Job-Planning-Pipeline">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1688998090299" ID="ID_1193621030" MODIFIED="1688998096268" TEXT="ActivityTerm aufbauen">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1688998158202" ID="ID_1433064275" MODIFIED="1688998601392" TEXT="ActivityLang in RenderDrive integrieren">
<arrowlink COLOR="#b14f6e" DESTINATION="ID_462121305" ENDARROW="Default" ENDINCLINATION="-76;7;" ID="Arrow_ID_1396143437" STARTARROW="None" STARTINCLINATION="-74;-111;"/>
<arrowlink COLOR="#ff3681" DESTINATION="ID_1642755650" ENDARROW="Default" ENDINCLINATION="-874;84;" ID="Arrow_ID_846448701" STARTARROW="None" STARTINCLINATION="-223;-228;"/>
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1693496024760" ID="ID_701999603" MODIFIED="1693496147428" TEXT="hierarchische Notification-Beziehungen herstellen">
<linktarget COLOR="#786889" DESTINATION="ID_701999603" ENDARROW="Default" ENDINCLINATION="-1087;-893;" ID="Arrow_ID_893699409" SOURCE="ID_1261227945" STARTARROW="None" STARTINCLINATION="-687;55;"/>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1680564304940" ID="ID_1657236591" MODIFIED="1699571818475" TEXT="Scheduler entwerfen">
<arrowlink COLOR="#93236a" DESTINATION="ID_1753880750" ENDARROW="Default" ENDINCLINATION="-499;-50;" ID="Arrow_ID_1018529334" STARTARROW="None" STARTINCLINATION="-219;1274;"/>
<linktarget COLOR="#f6e1c2" DESTINATION="ID_1657236591" ENDARROW="Default" ENDINCLINATION="-1219;87;" ID="Arrow_ID_49470357" SOURCE="ID_59027079" STARTARROW="None" STARTINCLINATION="-2189;368;"/>
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1687471254704" ID="ID_1902396309" MODIFIED="1687471266974" TEXT="Basis und Rahmen">
<icon BUILTIN="pencil"/>
<node CREATED="1687475603990" ID="ID_363400970" MODIFIED="1687475621515" TEXT="Subsystem: Engine">
<node CREATED="1687475672009" ID="ID_1124965523" MODIFIED="1687475695860" TEXT="im Vault-Layer">
<node CREATED="1687475741885" ID="ID_262067370" MODIFIED="1687475750878" TEXT="Konsequenz: alle Interfaces m&#xfc;ssen dort liegen"/>
</node>
<node CREATED="1687475755810" ID="ID_1110198652" MODIFIED="1687475768912" TEXT="Descriptor / Lifecycle"/>
<node CREATED="1687475776684" ID="ID_1947467264" MODIFIED="1687482209668" TEXT="Aktoren">
<node CREATED="1687482088480" ID="ID_151642165" MODIFIED="1687482091993" TEXT="WorkForce"/>
<node CREATED="1687484538013" ID="ID_1739107434" MODIFIED="1687484542420" TEXT="BlockFlow"/>
<node CREATED="1687484543164" ID="ID_1128972304" MODIFIED="1687484550647" TEXT="ActLang als front-End"/>
</node>
</node>
<node CREATED="1687475814605" ID="ID_339808288" MODIFIED="1687475824090" TEXT="Betriebs-Aufbau">
<node CREATED="1687484185010" ID="ID_177219896" MODIFIED="1687484190168" TEXT="ein fest verdrahtetes Setup"/>
</node>
<node CREATED="1687475807706" ID="ID_1176659376" MODIFIED="1687475811983" TEXT="Test-Aufbau">
<node CREATED="1687481605885" ID="ID_1099864057" MODIFIED="1687481621091" TEXT="jedes der Elemente kann einzeln konstruiert werden"/>
<node CREATED="1687484195107" ID="ID_247852496" MODIFIED="1687484210802" TEXT="es gibt einen impliziten Fallback-Memory-Manager (anstelle von BlockFlow)"/>
<node CREATED="1687484233310" ID="ID_97192372" MODIFIED="1687484255607" TEXT="die meisten Tests laufen single-threaded (WorkForce wird nicht verwendet)"/>
</node>
<node CREATED="1687475840950" ID="ID_131076132" MODIFIED="1687475860880" TEXT="Elemente">
<node CREATED="1687476035955" ID="ID_745059399" MODIFIED="1687480101057" TEXT="WorkForce">
<node CREATED="1687484263258" ID="ID_715579646" MODIFIED="1687484368256" TEXT="das ist der Thread-Pool, aber als aktiver Aktor">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Das w&#228;re dann eine sehr spezielle Design-Entscheidung: nicht eine passiver Threadpool, dem von einem aktiven Manager aus die Aufgaben zugewiesen werden, sondern aktive Worker, die sich selber regulieren und Arbeit holen
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1687476033151" ID="ID_1605738003" MODIFIED="1687476035463" TEXT="Scheduler">
<node CREATED="1687484375451" ID="ID_888761832" MODIFIED="1687484404856" TEXT="ein passiver Service, von dem man Activities &#x201e;pullt&#x201c;"/>
</node>
<node CREATED="1687476248645" ID="ID_1405896472" MODIFIED="1687476251782" TEXT="BlockFlow">
<node CREATED="1687484406935" ID="ID_1480465932" MODIFIED="1687484460324" TEXT="ein tiling Memory-Manager mit Lifecycle/Waterlevel-Logik"/>
</node>
<node CREATED="1687480006141" ID="ID_870147992" MODIFIED="1687556434654" TEXT="ActivityLang">
<node CREATED="1687484476295" ID="ID_542107050" MODIFIED="1687484512308" TEXT="das Spezifikations-front-End: &#x201e;wirft&#x201c; Activities ab"/>
</node>
</node>
<node CREATED="1687475864475" ID="ID_1012744696" MODIFIED="1687475867351" TEXT="Code">
<node CREATED="1687475904735" ID="ID_1072640791" MODIFIED="1687556555928" TEXT="namespaces">
<node CREATED="1687556559097" ID="ID_1268061315" LINK="#ID_144816295" MODIFIED="1687556574423" TEXT="vault::gear"/>
</node>
<node CREATED="1687475909253" ID="ID_1225611567" MODIFIED="1687475920182" TEXT="Schnittstellen">
<node CREATED="1687484610198" ID="ID_1535673641" MODIFIED="1687556627249" TEXT="activity-lang.hpp"/>
<node CREATED="1687484615702" ID="ID_1695611291" MODIFIED="1687484621919" TEXT="work-force.hpp"/>
<node CREATED="1687484622953" ID="ID_1237116260" MODIFIED="1687484628393" TEXT="block-flow.hpp"/>
<node CREATED="1687484635170" ID="ID_1036236582" MODIFIED="1687484638425" TEXT="scheduler.hpp"/>
</node>
<node CREATED="1687475927002" ID="ID_1686499468" MODIFIED="1687475972136" TEXT="Baueinheiten">
<node CREATED="1687484825582" ID="ID_940173275" MODIFIED="1687788222303" TEXT="SchedulerCommutator">
<node CREATED="1687484855082" ID="ID_1615253188" MODIFIED="1687484859590" TEXT="&#x2261; Layer-2"/>
</node>
<node CREATED="1687484832866" ID="ID_922933023" MODIFIED="1687556674341" TEXT="SchedulerInvocation">
<node CREATED="1687484837790" ID="ID_563933668" MODIFIED="1687484852947" TEXT="&#x2261; Layer-1"/>
</node>
<node CREATED="1687556757899" ID="ID_1532413492" MODIFIED="1687556761169" TEXT="scheduler.cpp"/>
<node CREATED="1687568938113" ID="ID_1621332483" MODIFIED="1687568944537" TEXT="block-flow.cpp"/>
</node>
</node>
<node COLOR="#338800" CREATED="1689204967974" FOLDED="true" ID="ID_284088835" MODIFIED="1693695157897" TEXT="Test-Aufbau: ActivityDetector">
<linktarget COLOR="#794f4b" DESTINATION="ID_284088835" ENDARROW="Default" ENDINCLINATION="-751;-63;" ID="Arrow_ID_1213725911" SOURCE="ID_1647246120" STARTARROW="None" STARTINCLINATION="518;48;"/>
<linktarget COLOR="#5f8998" DESTINATION="ID_284088835" ENDARROW="Default" ENDINCLINATION="-204;1111;" ID="Arrow_ID_1573724609" SOURCE="ID_373470992" STARTARROW="None" STARTINCLINATION="873;45;"/>
<linktarget COLOR="#7a78a4" DESTINATION="ID_284088835" ENDARROW="Default" ENDINCLINATION="-1242;118;" ID="Arrow_ID_807229137" SOURCE="ID_1294988847" STARTARROW="None" STARTINCLINATION="772;49;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1689204985122" FOLDED="true" ID="ID_1020676746" MODIFIED="1692634792327" TEXT="Rahmen schaffen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1689205014901" ID="ID_221497246" MODIFIED="1690832378644" TEXT="Instantiierung und Lebenszyklus">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1690817530037" ID="ID_497096743" MODIFIED="1690832373134" TEXT="kopierbares Objekt auf dem Stack">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1690817567303" ID="ID_258782505" MODIFIED="1690832374652" TEXT="default: this = ActivityDetector">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1690817626368" ID="ID_865927183" MODIFIED="1690832375691" TEXT="operator string() &#x27fc; join (event log)">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1689205007909" ID="ID_403603899" MODIFIED="1690832380383" TEXT="EventLog einbinden">
<icon BUILTIN="button_ok"/>
<node CREATED="1690832456039" ID="ID_314321104" MODIFIED="1690832525330">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      stabile Benennung: <font color="#1c5d6a" face="Monospaced">this = ActivityDetector(ID)</font>
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1692112779077" ID="ID_1951273297" MODIFIED="1692112792063" TEXT="Problem: Concurrency">
<icon BUILTIN="clanbomber"/>
<node CREATED="1692113039211" ID="ID_391962293" MODIFIED="1692113055969" TEXT="EventLog selber ist nicht thread-safe">
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1692113057144" ID="ID_1824651097" MODIFIED="1692113101542" TEXT="wird der ActivityDetector jemals (wirklich) concurrent eingesetzt?">
<icon BUILTIN="help"/>
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1690832398754" ID="ID_864386000" MODIFIED="1690832423318" TEXT="logging mock-&#x3bb;">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1690832539878" ID="ID_1163728085" MODIFIED="1690832566800" TEXT="Problem: brauche einen generischen Funktor mit vorgegebener Signatur">
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#435e98" CREATED="1690832634093" FOLDED="true" ID="ID_1752068820" MODIFIED="1690832811893" TEXT="Problem&#xb2;: _Fun liefert Types&lt;ARGS...&gt;">
<icon BUILTIN="messagebox_warning"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1690832673285" ID="ID_1336668998" MODIFIED="1690832758349" TEXT="daraus kann ich nicht ohne Weiteres einen Funktions-Operator gewinnen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      wieder mal das l&#228;stige Problem mit den variadischen Templates: der Argument-Pack ist selber kein Typ, sondern man kann darauf nur matchen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1690832692447" ID="ID_1143189958" MODIFIED="1690832715493" TEXT="L&#xf6;sung: generisches Argument-Pack-Rebinding">
<icon BUILTIN="idea"/>
<node CREATED="1690832761614" ID="ID_1920220300" MODIFIED="1690832775036" TEXT="Template-Template-Parameter">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1690832776060" ID="ID_135731051" MODIFIED="1690832801676" TEXT="X&lt;ARGS...&gt; &#x27fc; U&lt;ARGS...&gt;"/>
<node COLOR="#338800" CREATED="1690832821366" ID="ID_958989562" MODIFIED="1690894004134" TEXT="als generisches Util extrahieren">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1690891585410" ID="ID_1976653650" MODIFIED="1692634770438" TEXT="Action-Hook">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1690891602401" ID="ID_1359624247" MODIFIED="1690899606451" TEXT="als Primitive einf&#xfc;hren">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...auch wenn's bisher blo&#223; der Test-Unterst&#252;tzung dient, es ist in jedem Fall gerechtfertigt, einen generischen Erweiterungspunkt zu haben
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#6b779d" DESTINATION="ID_1359624247" ENDARROW="Default" ENDINCLINATION="683;-50;" ID="Arrow_ID_1699110020" SOURCE="ID_163409040" STARTARROW="None" STARTINCLINATION="2539;289;"/>
<linktarget COLOR="#759db4" DESTINATION="ID_1359624247" ENDARROW="Default" ENDINCLINATION="446;-43;" ID="Arrow_ID_265182299" SOURCE="ID_642006957" STARTARROW="None" STARTINCLINATION="1008;65;"/>
<icon BUILTIN="yes"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1690899608350" ID="ID_1677406479" MODIFIED="1690899761758" TEXT="mu&#xdf; Downcast auf konkreten Execution-context machen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      geht leider nicht anders, weil ich mich f&#252;r eine generische (concept-artige) Form des Execution-context entschieden habe; eine virtuelle Methode kann selber kein Template sein, und andererseits m&#246;chte ich den Activity-Record selber template-frei halten
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#338800" CREATED="1692489058101" ID="ID_1423312805" MODIFIED="1692634771598" TEXT="auch f&#xfc;r Notifications geeignet ber&#xfc;cksichtigen">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1689205029658" ID="ID_1144318045" MODIFIED="1692634790926" TEXT="Verifikationen">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1690899802680" ID="ID_383665548" MODIFIED="1692053471680" TEXT="Problem: zweifelsfreie Verifikation im Log">
<icon BUILTIN="messagebox_warning"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1690899845778" ID="ID_527585169" MODIFIED="1690899886750" TEXT="mu&#xdf; fehl-Matches vermeiden">
<icon BUILTIN="clanbomber"/>
</node>
<node COLOR="#435e98" CREATED="1690899868436" ID="ID_1034519064" MODIFIED="1692053475620" TEXT="Log sollte idealerweise komplett verifizierbar sein">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#435e98" CREATED="1690899789651" ID="ID_495093897" MODIFIED="1690918956649" TEXT="eine Sequenz-Nummer einf&#xfc;hren">
<icon BUILTIN="idea"/>
<node CREATED="1690899895228" ID="ID_689471700" MODIFIED="1690899900231" TEXT="an die Instanz gebunden"/>
<node CREATED="1690899900699" ID="ID_1842080361" MODIFIED="1690899905547" TEXT="damit 100% reproduzierbar"/>
<node CREATED="1690899906154" ID="ID_350339048" MODIFIED="1690899917269" TEXT="impliziert eine Aufruf-Sequenz"/>
<node COLOR="#5b280f" CREATED="1690900159528" ID="ID_689193567" MODIFIED="1692054827928" TEXT="Wrapper-Typ verwenden (keinen primitiven Typ)">
<icon BUILTIN="button_ok"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1692054834915" ID="ID_1421903109" MODIFIED="1692054857935" TEXT="gute L&#xf6;sung &#x2014; aber nicht mehr notwendig"/>
<node CREATED="1692054858501" ID="ID_1232436461" MODIFIED="1692054880032" TEXT="durch die Test-DSL stets eindeutig"/>
</node>
<node COLOR="#435e98" CREATED="1690899920322" ID="ID_67461983" MODIFIED="1692053481500" TEXT="den Einzel-Aufruf mit der Sequenz-Nummer markieren">
<arrowlink COLOR="#fddadc" DESTINATION="ID_67251959" ENDARROW="Default" ENDINCLINATION="250;-68;" ID="Arrow_ID_996698966" STARTARROW="None" STARTINCLINATION="142;7;"/>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node CREATED="1691876350208" ID="ID_105178925" MODIFIED="1692057162964" TEXT="Test-DSL">
<icon BUILTIN="info"/>
<node COLOR="#435e98" CREATED="1691876526510" FOLDED="true" ID="ID_1716550315" MODIFIED="1692053499368" TEXT="RLY?">
<icon BUILTIN="help"/>
<icon BUILTIN="yes"/>
<node CREATED="1691876547403" ID="ID_513238141" MODIFIED="1691876555015" TEXT="das hier ist ein single-use-setup">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1691876586636" ID="ID_853990940" MODIFIED="1691876687983" TEXT="aber ich w&#xfc;&#xdf;te nicht wie ich&apos;s sonst testen k&#xf6;nnte...">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      einfache L&#246;sungen wie State-Flags oder Checksummen gen&#252;gen nicht, denn es mu&#223; stets gepr&#252;ft werden, da&#223; mehrere Vorg&#228;nge insgesamt stattgefunden haben, und das in der richtigen Reihenfolge...
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1691876688987" ID="ID_1053525826" MODIFIED="1691876722777" TEXT="f&#xfc;r einen dedizierten Verifikator m&#xfc;&#xdf;te eine Struktur analog zum EventLog aufgebaut werden"/>
<node CREATED="1691876724045" ID="ID_599766465" MODIFIED="1691876757873" TEXT="insofern ist es eine &#x201e;Abk&#xfc;rzung&#x201c;, das EventLog hierf&#xfc;r einzusetzen"/>
</node>
<node COLOR="#435e98" CREATED="1691876355275" FOLDED="true" ID="ID_165347645" MODIFIED="1692634764970" TEXT="brauche komplexere verkn&#xfc;pfte Matches">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      analog zu dem Muster f&#252;r das allgemeine EventLog....
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
<node CREATED="1691876450951" ID="ID_523328696" MODIFIED="1691876470288" TEXT="Matches f&#xfc;r die Me&#xdf;punkte"/>
<node CREATED="1691876811575" ID="ID_1724222058" MODIFIED="1691876823546" TEXT="jeweils in Reihenfolge und mit Sequenznumer"/>
<node CREATED="1691876841330" ID="ID_1105562804" MODIFIED="1691877303577" TEXT="die EventLog-DSL verwendet daf&#xfc;r einen EventMatch(Builder)">
<icon BUILTIN="info"/>
</node>
<node COLOR="#435e98" CREATED="1691877252417" ID="ID_1984871622" MODIFIED="1691970627322" TEXT="diesen k&#xf6;nnte man dekorieren und erweitern">
<linktarget COLOR="#ebfec9" DESTINATION="ID_1984871622" ENDARROW="Default" ENDINCLINATION="-28;49;" ID="Arrow_ID_850495720" SOURCE="ID_761662231" STARTARROW="None" STARTINCLINATION="-304;29;"/>
<icon BUILTIN="idea"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1691970693305" ID="ID_19920544" MODIFIED="1691970777582" TEXT="nicht ganz einfach...">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...das war vom Design her nicht vorgesehen, und w&#228;re auch nicht ganz einfach zu realisieren; man m&#252;&#223;te den EventMatch per CRTP definieren (und damit m&#252;&#223;te er Header-only sein, mit den bekannten Folgen f&#252;r die Gr&#246;&#223;e des Debug-Build)
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#435e98" CREATED="1691970806346" ID="ID_1508518510" MODIFIED="1691970872329" TEXT="kann aber den R&#xfc;ckgabewert downcasten">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...denn dies hier ist ein geschlossenes &#214;kosystem; daher ist sichergestellt, da&#223; *this stets ein ActivityMatch ist
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#338800" CREATED="1691970781106" ID="ID_411948478" MODIFIED="1691970802181" TEXT="verwende abk&#xfc;rzende Notation mit Argument-Forwarding">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1691970876168" ID="ID_1869522832" MODIFIED="1691970894037" TEXT="besser: privat erben und nur die wirklich ben&#xf6;tigten Funktionen forwarden">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1692022438369" ID="ID_1637851255" MODIFIED="1692034017019" TEXT="negativ-Checks unterst&#xfc;tzen">
<icon BUILTIN="button_ok"/>
<node CREATED="1692022449108" ID="ID_1801262965" MODIFIED="1692022587083">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <font face="Monospaced" size="2" color="#35298d">CHECK (not ... )</font>&#160;f&#252;hrt zu irrelevanten Fehlermeldungen im Output
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ....weil ich seinerzeit Diagnose-Ausgaben per Seiteneffekt eingef&#252;hrt habe &#8212; sowas ist unabdingbar zur Fehlersuche, aber l&#228;stig, wenn es aus einem negierten CHECK resultiert
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1692022627772" ID="ID_13278224" MODIFIED="1692034088880" TEXT="sowas ist offensichtlich plausibel &#x2014; aber nicht trivial">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...allerdings liegt das an der Natur der logischen Negation selber, nicht an der unterst&#252;tzung im Verifkations-Framework; ein Check ist eine Existenz-Aussage, und daher m&#252;&#223;te zur Negation eine All-Aussage gepr&#252;ft werden, durch eine ersch&#246;pfende Suche aller m&#246;glichen alternativen Pr&#252;f-Ketten. Anfangs habe ich das nicht gemacht, aber 9/2018 habe ich richtiges Backtracking eingebaut; damit sollte das nun korrekt funktionieren (was ich aber nie abschlie&#223;end verifiziert habe, nur durch einzelne Testf&#228;lle gepr&#252;ft)
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1692022870883" ID="ID_1195200670" MODIFIED="1692022899343" TEXT="eigentlich einfach, nur repetitiv">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      das Schema daf&#252;r wurde im EventLog bereits geschaffen
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node CREATED="1692053606731" ID="ID_1933077437" MODIFIED="1692053612252" TEXT="Elemente">
<node CREATED="1692053562969" ID="ID_962655454" MODIFIED="1692053567405" TEXT="Einstieg">
<node CREATED="1692053568231" ID="ID_784483169" MODIFIED="1692053593488" TEXT="verify&lt;XXX&gt;"/>
<node CREATED="1692053572759" ID="ID_918717888" MODIFIED="1692053589493" TEXT="ensureNo&lt;XXX&gt;"/>
</node>
<node CREATED="1692053614738" ID="ID_906593629" MODIFIED="1692053626611" TEXT="Verkettung">
<node CREATED="1692053627648" ID="ID_1007664705" MODIFIED="1692053636288" TEXT="before&lt;XXX&gt;"/>
<node CREATED="1692053636959" ID="ID_649601465" MODIFIED="1692053644833" TEXT="after&lt;XXX&gt;"/>
</node>
<node CREATED="1692053678701" ID="ID_928530756" MODIFIED="1692053682004" TEXT="Verifikationen">
<node CREATED="1692053683256" ID="ID_1535852650" MODIFIED="1692057066275" TEXT="Invocation">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ein Funktionsaufruf (typischwerweise von einem rigged-Functor)
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#4a425e" DESTINATION="ID_70827658" ENDARROW="Default" ENDINCLINATION="-42;-73;" ID="Arrow_ID_578101667" STARTARROW="None" STARTINCLINATION="-243;46;"/>
</node>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1690899978840" ID="ID_70827658" MODIFIED="1692057153084" TEXT="einen Funktionsaufruf verifizieren">
<linktarget COLOR="#4a425e" DESTINATION="ID_70827658" ENDARROW="Default" ENDINCLINATION="-42;-73;" ID="Arrow_ID_578101667" SOURCE="ID_1535852650" STARTARROW="None" STARTINCLINATION="-243;46;"/>
<icon BUILTIN="forward"/>
<node COLOR="#338800" CREATED="1690900023906" ID="ID_1470650457" MODIFIED="1692034143231" TEXT="markSequence()">
<icon BUILTIN="button_ok"/>
<node CREATED="1691967036611" ID="ID_1281722986" MODIFIED="1691967047702" TEXT="was bedeutet das &#xfc;berhaupt?"/>
<node COLOR="#435e98" CREATED="1691967048250" ID="ID_1226565848" MODIFIED="1692034118800" TEXT="Ansatz: eine interne Sequenznummer hochsetzen">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#435e98" CREATED="1691967069495" FOLDED="true" ID="ID_67251959" MODIFIED="1692034115613" TEXT="wie/wo kann die zuverl&#xe4;ssig gepr&#xfc;ft werden?">
<linktarget COLOR="#fddadc" DESTINATION="ID_67251959" ENDARROW="Default" ENDINCLINATION="250;-68;" ID="Arrow_ID_996698966" SOURCE="ID_67461983" STARTARROW="None" STARTINCLINATION="142;7;"/>
<icon BUILTIN="help"/>
<node COLOR="#5b280f" CREATED="1691967116385" FOLDED="true" ID="ID_1378863406" MODIFIED="1692057197043" TEXT="erste Idee: zus&#xe4;tzliche Eintr&#xe4;ge im Log">
<icon BUILTIN="button_cancel"/>
<node CREATED="1691967129967" ID="ID_904829426" MODIFIED="1691967134017" TEXT="einfach umzusetzen"/>
<node CREATED="1691967134523" ID="ID_564127342" MODIFIED="1691967140537" TEXT="aber umst&#xe4;ndlich in der Handhabung"/>
<node CREATED="1691967149276" ID="ID_291271617" MODIFIED="1691967157215" TEXT="und noch schlimmer: nicht eindeutig"/>
<node CREATED="1691967141625" ID="ID_1932163820" MODIFIED="1691967147977" TEXT="und m&#xfc;llt das Log zu"/>
</node>
<node COLOR="#435e98" CREATED="1691967161499" ID="ID_368230212" MODIFIED="1692057203746" TEXT="das strukturierte EventLog nutzen">
<icon BUILTIN="idea"/>
<node COLOR="#338800" CREATED="1691967175689" FOLDED="true" ID="ID_746233199" MODIFIED="1692057208657" TEXT="Attribut &quot;Seq&quot; einf&#xfc;hren">
<icon BUILTIN="button_ok"/>
<node CREATED="1691967277027" ID="ID_1776684493" MODIFIED="1691967284636" TEXT="Problem: Logging API">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1691967309343" ID="ID_244666662" MODIFIED="1691967318610" TEXT="hat typischerweise bereits eine offene Argumentliste"/>
<node CREATED="1691967323722" ID="ID_137219277" MODIFIED="1691967342183" TEXT="man m&#xfc;&#xdf;te Erg&#xe4;nzungen oder Qualifier nutzen"/>
<node CREATED="1691967444533" ID="ID_1942563471" MODIFIED="1691967456767" TEXT="w&#xfc;rde dann auf den letzten Eintrag wirken"/>
</node>
<node CREATED="1691967345874" ID="ID_1693656780" MODIFIED="1691967361490" TEXT="Record-Typ ist eigentlich immutable">
<icon BUILTIN="messagebox_warning"/>
<node COLOR="#fe2ee7" CREATED="1691967494714" ID="ID_1135212108" MODIFIED="1691967548854" TEXT="(es g&#xe4;be eine Hintert&#xfc;r....)">
<font NAME="SansSerif" SIZE="11"/>
<icon BUILTIN="smiley-oh"/>
</node>
<node COLOR="#5b280f" CREATED="1691967521418" ID="ID_1774670461" MODIFIED="1691967534653" TEXT="was sagt uns das??">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1691967188541" ID="ID_190903532" MODIFIED="1692034109205" TEXT="dieses dann per Zusatz-Match pr&#xfc;fbar machen">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1692034126251" ID="ID_1071125044" MODIFIED="1692034134849" TEXT="Eintrag im Log hinterlassen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1692034135474" ID="ID_1900678596" MODIFIED="1692034140342" TEXT="diesen &#xfc;berpr&#xfc;fbar machen">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#5b280f" CREATED="1690900069493" FOLDED="true" ID="ID_917256156" MODIFIED="1691966998192" TEXT="verifyInvocation(fun, Seq(i), args...)">
<icon BUILTIN="button_cancel"/>
<node COLOR="#5b280f" CREATED="1691622557790" ID="ID_307528565" MODIFIED="1691966784058" TEXT="lenient arguments?">
<icon BUILTIN="help"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1691622603918" ID="ID_85657456" MODIFIED="1691622614224" TEXT="manchmal sind die Argumente egal"/>
<node CREATED="1691622615042" ID="ID_1956964914" MODIFIED="1691622630486" TEXT="oder man wei&#xdf; sie nicht einmal..."/>
<node CREATED="1691622633914" ID="ID_1240512860" MODIFIED="1691622650564" TEXT="L&#xf6;sung-1">
<node CREATED="1691622651640" ID="ID_304481372" MODIFIED="1691622675769" TEXT="leere Argument-Paremeter &#x27f9; lenient"/>
<node CREATED="1691622676564" ID="ID_874397643" MODIFIED="1691622709844" TEXT="Nachteil: man kann nicht explizit auf leere Argumentliste pr&#xfc;fen"/>
</node>
<node CREATED="1691622712487" ID="ID_1523121299" MODIFIED="1691622717827" TEXT="L&#xf6;sung-2">
<node CREATED="1691622718751" ID="ID_293626365" MODIFIED="1691622729350" TEXT="wildcard-Zeichen explizit angeben"/>
<node CREATED="1691623021008" ID="ID_397525932" MODIFIED="1691623047537" TEXT="das w&#xe4;re dann eine erst mal nicht offensichtliche spezielle Konvention">
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node CREATED="1691966737035" ID="ID_367147170" MODIFIED="1691966774672" TEXT="Nein! warum &#xfc;berhaupt diese Frage? &#x27f9; das ganze Design ist schlecht">
<icon BUILTIN="stop-sign"/>
</node>
<node COLOR="#435e98" CREATED="1691966791292" ID="ID_761662231" MODIFIED="1691966961557" TEXT="besser: Matcher verfeinern">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Der Ansatz, alles ein einen Pr&#252;f-Aufruf zu packen, ist insgeseamt ungeschickt; genau deshalb wurde doch f&#252;r das EventLog dieser komplizierte Builder / Verfeinerungs-Ansatz gemacht: dar&#252;ber kann man ganz nat&#252;rlich ausdr&#252;cken, wenn man etwas &#252;ber die Argumente speziell gepr&#252;ft haben m&#246;chte, oder eben nicht...
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#ebfec9" DESTINATION="ID_1984871622" ENDARROW="Default" ENDINCLINATION="-28;49;" ID="Arrow_ID_850495720" STARTARROW="None" STARTINCLINATION="-304;29;"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1690900069493" ID="ID_1755197034" MODIFIED="1692034147917" TEXT="verifyInvocation(fun).args(args...).seq(i)">
<icon BUILTIN="button_ok"/>
<node COLOR="#5b280f" CREATED="1692022948289" FOLDED="true" ID="ID_1815506838" MODIFIED="1692057190630" TEXT="unerwartete Konversion &#x27fc; unsigned">
<icon BUILTIN="broken-line"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1692023011767" ID="ID_1384711805" MODIFIED="1692023028638">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <font face="Monospaced" size="2" color="#241569">detector.verifyInvocation (&quot;funny&quot;).arg(-rnd)</font>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1692023048955" ID="ID_1364393445" MODIFIED="1692023323332">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Log-Ausgabe: <font color="#3d0f59" face="Monospaced" size="2">FAILED to match-arguments(</font><font color="#ed4669" face="Monospaced" size="2"><b>4294965953</b></font><font color="#3d0f59" face="Monospaced" size="2">)</font>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
<node COLOR="#338800" CREATED="1692054307541" ID="ID_1769927803" MODIFIED="1692054409990" TEXT="works as designed: rnd ist als uint definiert">
<icon BUILTIN="smiley-oh"/>
</node>
</node>
<node COLOR="#338800" CREATED="1692057091775" ID="ID_740116196" MODIFIED="1692057109965" TEXT="Verifikation der Sequenznummer direkt als Attribut">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1692057111589" ID="ID_1585757937" MODIFIED="1692057117532" TEXT="Verifikation der Argumente">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1692057121026" ID="ID_497674613" MODIFIED="1692057142215" TEXT="Verifikation mehrerer Aufrufe mit Reihenfolge und verschiedener Sequenznummer">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1692286331547" ID="ID_1648694746" MODIFIED="1693168975331" TEXT="FakeExecutionCtx bereitstellen">
<linktarget COLOR="#7d5f6b" DESTINATION="ID_1648694746" ENDARROW="Default" ENDINCLINATION="-767;677;" ID="Arrow_ID_1288986872" SOURCE="ID_902152915" STARTARROW="None" STARTINCLINATION="656;68;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1692286350353" FOLDED="true" ID="ID_592111396" MODIFIED="1692323802757" TEXT="bietet die notwendingen &#x3bb;-Bindings">
<icon BUILTIN="button_ok"/>
<node CREATED="1690069222750" ID="ID_1750846288" MODIFIED="1692293955246" TEXT="&#x3bb;-post: (Time, Activity, ExecutionCtx) activity::Proc  &#x27fc; activity::Proc"/>
<node CREATED="1690069365933" ID="ID_832098393" MODIFIED="1692286755765" TEXT="&#x3bb;-work: (Time, quality)"/>
<node CREATED="1690069480630" ID="ID_320780008" MODIFIED="1692286762564" TEXT="&#x3bb;-done: (Time, quality)"/>
<node CREATED="1690069554609" ID="ID_761100089" MODIFIED="1692286770500" TEXT="&#x3bb;-tick: (Time)  &#x27fc; activity::Proc"/>
<node CREATED="1692489219616" ID="ID_866525795" MODIFIED="1692489234875" TEXT="&#x3bb;-spin">
<node CREATED="1692489235982" ID="ID_1555747732" MODIFIED="1692489243923" TEXT="hier fest verdrahtet (ohne Logging)"/>
<node CREATED="1692489245061" ID="ID_350410985" LINK="#ID_1726593706" MODIFIED="1692489280665" TEXT="liefert re-Check-Zeit"/>
</node>
</node>
<node COLOR="#338800" CREATED="1692286383148" FOLDED="true" ID="ID_675137089" MODIFIED="1692323862104" TEXT="diese sind per Log verifizierbar">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1692300205155" ID="ID_1736862653" MODIFIED="1692323815307" TEXT="wie weit soll diese Verifikation gehen?">
<icon BUILTIN="help"/>
<node CREATED="1692300240295" ID="ID_399994306" MODIFIED="1692300254841" TEXT="Tupel-Darstellung von Activities">
<node CREATED="1692322728141" ID="ID_1004209706" MODIFIED="1692322732672" TEXT="auf jeden Fall sinnvoll"/>
<node CREATED="1692322733068" ID="ID_299448161" MODIFIED="1692322739615" TEXT="ist halt etwas switch-case..."/>
<node CREATED="1692322740973" ID="ID_821145820" MODIFIED="1692322758045" TEXT="std::string ist schon in scope &#x27f9; operator string()"/>
</node>
<node CREATED="1692300282541" ID="ID_1115737029" MODIFIED="1692300316089" TEXT="und/oder Instanz-Addresse von Activities">
<node CREATED="1692300360727" ID="ID_413225128" MODIFIED="1692300378054" TEXT="nur f&#xfc;r Test?"/>
<node CREATED="1692300378333" ID="ID_904342105" MODIFIED="1692300394969" TEXT="(oder auch mal f&#xfc;r Diagnose?)"/>
</node>
<node CREATED="1692300697825" ID="ID_769976806" MODIFIED="1692300707054" TEXT="YAGNI???">
<icon BUILTIN="smily_bad"/>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1692323817817" ID="ID_1816771009" MODIFIED="1692323834208" TEXT="definiere (vorerst) keine dedizierten Verifikationen">
<icon BUILTIN="hourglass"/>
</node>
<node CREATED="1692323834943" ID="ID_1296885415" MODIFIED="1692323857928">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      (man kann per <font face="Monospaced" color="#3027b0">verifyInvocation</font>&#160;pr&#252;fen)
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#338800" CREATED="1692286398114" ID="ID_482490572" MODIFIED="1692293638298" TEXT="pr&#xe4;parierte R&#xfc;ckgabewerte">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1692484905421" FOLDED="true" ID="ID_1052412556" MODIFIED="1692485144582" TEXT="ActivityProbe bereitstellen">
<icon BUILTIN="button_ok"/>
<node CREATED="1692484960668" ID="ID_384335556" MODIFIED="1692484972734" TEXT="verwendet den HOOK-Callback"/>
<node CREATED="1692485021414" ID="ID_1170462802" MODIFIED="1692485142973">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      kann (optional) die Aktivierung an ein <i>dekoriertes Subjekt </i>weitergeben
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      das hei&#223;t, die ActivityProbe wird dem zu beobachteten Activity-Record vorgeschaltet; man mu&#223; dann auch die Verdrahtung enstprechend anpassen, so da&#223; die Aktivierung durch diesen Dekorator hindurch erfolgt
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1692484977802" ID="ID_1632816684" MODIFIED="1692485020188" TEXT="zeichnet Zeitpunkt und ggfs Subject auf"/>
</node>
<node COLOR="#338800" CREATED="1692485180411" FOLDED="true" ID="ID_1178843988" MODIFIED="1692634691707" TEXT="&#xdc;berwachung von Notifications erm&#xf6;glichen">
<icon BUILTIN="button_ok"/>
<node CREATED="1692634693956" ID="ID_952722348" MODIFIED="1692634705286" TEXT="als Erg&#xe4;nzung in den HOOK-Callback eingebaut"/>
<node CREATED="1692634705802" ID="ID_1440095266" MODIFIED="1692634720901" TEXT="reagiert speziell wenn die notify()-Funktion aufgerufen wird"/>
<node CREATED="1692634721608" ID="ID_1461472121" MODIFIED="1692634732442" TEXT="auch hier wird die Notification dann an das Target weitergereicht"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1689205081622" ID="ID_1440811513" MODIFIED="1692634756484" TEXT="Me&#xdf;punkte">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1689205105640" FOLDED="true" ID="ID_1975472338" MODIFIED="1692120794297" TEXT="Dummy-Funktor">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1692114609799" ID="ID_742671204" MODIFIED="1692114749800" TEXT="was wird erzeugt?">
<icon BUILTIN="help"/>
<node CREATED="1692114616486" ID="ID_1022358077" MODIFIED="1692114650342" TEXT="eine (opaque) JobFunctor-Subklasse"/>
<node CREATED="1692114630221" ID="ID_827680196" MODIFIED="1692114643823" TEXT="wird vom ActivitiyDetector selber gemanaged"/>
<node CREATED="1692114652402" ID="ID_1621166525" MODIFIED="1692114714280" TEXT="&#xfc;berschreiben: invokeJobOperation (JobParameter)"/>
</node>
<node COLOR="#338800" CREATED="1692114723724" FOLDED="true" ID="ID_944641822" MODIFIED="1692120791354" TEXT="Zusatz-Verifikationen erm&#xf6;glichen">
<icon BUILTIN="button_ok"/>
<node CREATED="1692114853703" ID="ID_1214470182" MODIFIED="1692114856906" TEXT="Parameter">
<node CREATED="1692114757875" ID="ID_912452095" MODIFIED="1692114765987" TEXT="nominalTime"/>
<node CREATED="1692114766498" ID="ID_266252168" MODIFIED="1692114771333" TEXT="invocation Key"/>
</node>
<node COLOR="#435e98" CREATED="1692114860699" ID="ID_568488214" MODIFIED="1692120740957" TEXT="Problem: Daten-Transport">
<icon BUILTIN="messagebox_warning"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1692114909759" ID="ID_162471010" MODIFIED="1692120746950" TEXT="es handelt sich um erweiterte/Bin&#xe4;rdaten">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1692114932716" ID="ID_309749065" MODIFIED="1692114949959" TEXT="das EventLog speichert nur strukturierte String-Daten">
<icon BUILTIN="info"/>
</node>
<node CREATED="1692115003218" ID="ID_92426865" MODIFIED="1692115008839" TEXT="Zielkonflikt">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1692115010609" ID="ID_414253" MODIFIED="1692115037594" TEXT="einerseits m&#xf6;chte man vielleicht Details der Invocation verifizieren"/>
<node CREATED="1692115038374" ID="ID_1340918241" MODIFIED="1692115057190" TEXT="andererseits sollte das Log deterministisch (und lesbar) bleiben"/>
</node>
<node CREATED="1692115565175" ID="ID_463899224" MODIFIED="1692115568162" TEXT="Diskussion">
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1692115571524" ID="ID_1480451155" MODIFIED="1692115601676" TEXT="erst mal: nicht &#xfc;bertreiben!">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      es ist noch gar nicht klar, was f&#252;r Verifikationen wirklich ben&#246;tigt werden
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1692115619927" ID="ID_762317180" MODIFIED="1692115660252">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      m&#246;glicherweise geht es hier vornehmlich um die <i>Aktiviertung</i>&#160; (den Fakt des Aufrufs)
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1692115687686" ID="ID_1583315521" MODIFIED="1692115699528" TEXT="die durchgereichten Details geh&#xf6;ren eigentlich in einen anderen Kontext"/>
<node CREATED="1692115721920" ID="ID_708587276" MODIFIED="1692115735755" TEXT="das Call-Logging macht automatisch ein &quot;stringify&quot;"/>
<node CREATED="1692115836588" ID="ID_187385293" MODIFIED="1692115866482" TEXT="&#x27f9; erst mal nur interessante Daten &#x201e;auspacken&#x201c;">
<node CREATED="1692117979649" ID="ID_682909910" MODIFIED="1692117982662" TEXT="nominal time"/>
<node CREATED="1692117983371" ID="ID_183365467" MODIFIED="1692117995525" TEXT="&#xbb;part.a&#xab; vom Invocation Key"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1692120756085" ID="ID_1263278422" MODIFIED="1692120779850" TEXT="Qualifier: .nominalTime">
<icon BUILTIN="button_ok"/>
<node CREATED="1692122360712" ID="ID_681779390" MODIFIED="1692122368841" TEXT="erfordert Zugriff auf bestimmte Argumente"/>
<node CREATED="1692122369443" ID="ID_142985202" MODIFIED="1692122387124" TEXT="daf&#xfc;r Nachr&#xfc;sten entsprechender Match-Primitive im EventLog notwendig"/>
</node>
</node>
<node COLOR="#338800" CREATED="1693612743373" FOLDED="true" ID="ID_239996870" MODIFIED="1693613050688" TEXT="Erweiterung: eine Fake-Implementierung als &#x3bb; definieren">
<icon BUILTIN="button_ok"/>
<node CREATED="1693612775995" ID="ID_169225587" MODIFIED="1693612809110" TEXT="daf&#xfc;r immer eine std::function mitschleppen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      kann ja normalerweise leer bleiben (es ist ja nur ein Test)
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1693612810167" ID="ID_337568954" MODIFIED="1693612838027" TEXT="dann alternativ entweder den R&#xfc;ckgabewert, oder das Impl-&#x3bb; aufrufen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1693612850024" ID="ID_1639561917" MODIFIED="1693612875636" TEXT="ItemWrapper erweitern: explizite default-Initialisierung erm&#xf6;glichen">
<icon BUILTIN="button_ok"/>
<node CREATED="1693612878926" ID="ID_412926179" MODIFIED="1693612931276" TEXT="ungef&#xe4;hrlich und hier praktisch">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...weil es eine eigens aufgerufene Funktion ist, die ich auch f&#252;r alle drei Spezialisierungen sinngem&#228;&#223; anders implementieren kann
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1693612886861" ID="ID_1479625274" MODIFIED="1693613042107" TEXT="Problemf&#xe4;lle betrachte ich als Ausnahme">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Ein Problemfall w&#228;re, wenn eine Funktion einen R&#252;ckgabetyp hat, der nicht default-konstruierbar ist. Ja, sowas kommt vor &#8212; aber ich betrachte es hier nun wirklich als die Ausnahme, und es gibt immer noch den Workaround, in einem solchen Fall eben den gew&#252;nschten R&#252;ckgabewert explizit zu setzen (oder gleich die &#955;-Impl zu verwenden).
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1689205129709" FOLDED="true" ID="ID_355308944" MODIFIED="1692370294024" TEXT="Invocation-Activity">
<icon BUILTIN="hourglass"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1692370260876" ID="ID_619089820" MODIFIED="1693613194609" TEXT="fertig konfiguriertes Job-Setup">
<linktarget COLOR="#23a83d" DESTINATION="ID_619089820" ENDARROW="Default" ENDINCLINATION="155;0;" ID="Arrow_ID_1822122758" SOURCE="ID_316011174" STARTARROW="None" STARTINCLINATION="-4;-43;"/>
<icon BUILTIN="info"/>
</node>
<node COLOR="#435e98" CREATED="1692370281681" ID="ID_1343697626" MODIFIED="1693613157144" TEXT="brauchen wir das &#xfc;berhaupt?">
<icon BUILTIN="help"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1693613083762" ID="ID_138208914" MODIFIED="1693613154657" TEXT="derzeit nicht...">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      bisher gab es nur einen Testfall, und der betraf den ActivityDetector selber
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="hourglass"/>
</node>
<node COLOR="#338800" CREATED="1693613090833" ID="ID_316011174" MODIFIED="1693613207786" TEXT="aber ein nutzfertiger JobFunktor ist sehr praktisch">
<arrowlink COLOR="#23a83d" DESTINATION="ID_619089820" ENDARROW="Default" ENDINCLINATION="155;0;" ID="Arrow_ID_1822122758" STARTARROW="None" STARTINCLINATION="-4;-43;"/>
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1693613160272" ID="ID_978018832" MODIFIED="1693613169489" TEXT="YAGNI">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1689205263970" FOLDED="true" ID="ID_43321196" MODIFIED="1692459862703" TEXT="activationProbe">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1692372010821" ID="ID_607483737" MODIFIED="1692380006038" TEXT="ist zugleich CALLBACK-Activity und Adapter">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1692372106295" ID="ID_1204006498" MODIFIED="1692372277279" TEXT="wird intern vom ActivityDetector verwaltet">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1692372170118" ID="ID_1107069049" MODIFIED="1692372271039" TEXT="verschiedene Verdrahtungs-M&#xf6;glichkeiten">
<icon BUILTIN="forward"/>
<node COLOR="#338800" CREATED="1692372197889" ID="ID_1824930461" MODIFIED="1692379992948" TEXT="als reine Detector-Activity">
<icon BUILTIN="button_ok"/>
<node CREATED="1692372210456" ID="ID_1081495304" MODIFIED="1692372233546" TEXT="lediglich als Activity&amp; zu verwenden"/>
<node CREATED="1692372234342" ID="ID_1676209419" MODIFIED="1692372247496" TEXT="h&#xe4;ngt &#xfc;ber den Callback eine Log-Funktion ein"/>
<node CREATED="1692372252979" ID="ID_473155449" MODIFIED="1692372256575" TEXT="macht aber sonst nichts"/>
</node>
<node COLOR="#338800" CREATED="1692372261546" ID="ID_1271161818" MODIFIED="1692464510720" TEXT="als Detector-Adapter">
<arrowlink COLOR="#738eae" DESTINATION="ID_540297647" ENDARROW="Default" ENDINCLINATION="101;-5;" ID="Arrow_ID_1963690317" STARTARROW="None" STARTINCLINATION="5;52;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1692372400775" ID="ID_1270041890" MODIFIED="1692372420536" TEXT="wird dann dem &#xdc;berwachungsgegenstand vorgeschaltet"/>
<node CREATED="1692372433498" ID="ID_1038407160" MODIFIED="1692372443405" TEXT="&#xfc;bernimmt (doppelt) auch dessen next-Pointer"/>
<node CREATED="1692372445273" ID="ID_1169755490" MODIFIED="1692372481928" TEXT="reicht Aktivierung an die &#xfc;berwachte Activity weiter"/>
</node>
</node>
<node COLOR="#338800" CREATED="1692380008794" ID="ID_1667310608" MODIFIED="1692404518110" TEXT="diagnostic / toString">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1692380099390" ID="ID_851484000" MODIFIED="1692404522200" TEXT="soll die angegebene ID mit ausgeben">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#435e98" CREATED="1692380024576" FOLDED="true" ID="ID_1476915138" MODIFIED="1692464519801" TEXT="custom string-conv wird nicht aufgerufen">
<icon BUILTIN="broken-line"/>
<node CREATED="1692380071745" ID="ID_708893412" MODIFIED="1692404214990" TEXT="offensichtlicher Grund: es ist ein Pointer">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#435e98" CREATED="1692404216754" FOLDED="true" ID="ID_1806024569" MODIFIED="1698018109478" TEXT="util::toString sollte sich bei Pointern sinnvoll verhalten">
<icon BUILTIN="button_cancel"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#5b280f" CREATED="1692404252108" ID="ID_842776495" MODIFIED="1692404264513" TEXT="versucht und gescheitert">
<icon BUILTIN="stop-sign"/>
</node>
<node CREATED="1692404266082" ID="ID_1798178914" MODIFIED="1692404288005" TEXT="toString / StringConf ist ein fragiles Gebilde">
<icon BUILTIN="clanbomber"/>
<node CREATED="1692404302525" ID="ID_1518807306" MODIFIED="1692404316103" TEXT="StringConf hat zwei Ausbaustufen">
<node CREATED="1692404316739" ID="ID_1804131943" MODIFIED="1692404332165" TEXT="Stufe II (format-obj) hat explizite overloads"/>
<node CREATED="1692404333345" ID="ID_239552325" MODIFIED="1692404357873" TEXT="Vorraussetzung: CV / Referenzen / Pointer m&#xfc;ssen schon gestrippt sein"/>
</node>
<node CREATED="1692404362158" ID="ID_354642887" MODIFIED="1692404379103" TEXT="toString wird aus Template-Code als Funktor instantiiert">
<node CREATED="1692404383955" ID="ID_1821292277" MODIFIED="1692404392797" TEXT="das bedeutet: es mu&#xdf; stets eindeutig sein"/>
<node CREATED="1692404394113" ID="ID_6338024" MODIFIED="1692404400867" TEXT="daher darf es keinen Overload geben"/>
</node>
<node CREATED="1692404404327" ID="ID_1956071960" MODIFIED="1692404416281" TEXT="das ist auch der Grund, warum format-cout explizit definiert ist">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1692404424229" ID="ID_183530423" MODIFIED="1692404431008" TEXT="Ist auch gut so...">
<node CREATED="1692404432332" ID="ID_1781762482" MODIFIED="1692404442926" TEXT="toString soll zuverl&#xe4;ssig und minimal sein"/>
<node CREATED="1692404446027" ID="ID_108331302" MODIFIED="1692404462356" TEXT="Spezialbehandlung f&#xfc;r Pointer ist nicht immer erw&#xfc;nscht"/>
</node>
<node COLOR="#435e98" CREATED="1698018026613" ID="ID_1423551682" LINK="#ID_1691641418" MODIFIED="1698018107180" TEXT="10/2023 : hab jetzt doch eine L&#xf6;sung gefunden">
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#338800" CREATED="1692404471311" ID="ID_437668247" MODIFIED="1692404494054" TEXT="in diesem Fall einfach utill::showPtr() verwenden">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1692404501851" ID="ID_1339093549" MODIFIED="1692404517254" TEXT="custom operator string() eingebaut">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1689205295574" FOLDED="true" ID="ID_1666280196" MODIFIED="1692484840778" TEXT="activationTap">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1692459867253" ID="ID_1660140905" MODIFIED="1692464463174" TEXT="ist implementiert als activationProbe">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1692459877082" ID="ID_540297647" MODIFIED="1692464463949" TEXT="aber wird als Adapter vor eine gegebene Activity geschaltet">
<linktarget COLOR="#738eae" DESTINATION="ID_540297647" ENDARROW="Default" ENDINCLINATION="101;-5;" ID="Arrow_ID_1963690317" SOURCE="ID_1271161818" STARTARROW="None" STARTINCLINATION="5;52;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1692459890448" ID="ID_42862803" MODIFIED="1692464464796" TEXT="&#xfc;bernimmt von dieser eine default-ID und den next-Ptr">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1692464468863" ID="ID_1403493828" MODIFIED="1692484839564" TEXT="Variante: manipuliert/dekoriert direkt einen Activity-Ptr">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1689205423173" FOLDED="true" ID="ID_935068564" MODIFIED="1692634749567" TEXT="watchGate">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1692485210898" ID="ID_1284233307" MODIFIED="1692491324320" TEXT="komplexe Aufgabe">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1692485226036" ID="ID_1556332540" MODIFIED="1692485237497" TEXT="das Gate bietet eigentlich keine Erweiterungspunkte"/>
<node CREATED="1692485238133" ID="ID_904790600" MODIFIED="1692485265925" TEXT="zudem m&#xfc;ssen mehrere Ein/Ausg&#xe4;nge &#xfc;berwacht werden"/>
<node COLOR="#338800" CREATED="1692487689444" ID="ID_1980202996" MODIFIED="1692491327388" TEXT="sinnvolle IDs f&#xfc;r die Verifikation erzeugen">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1692489331442" ID="ID_1512727338" LINK="#ID_1768827754" MODIFIED="1692489388011" TEXT="siehe GATE-impl">
<icon BUILTIN="info"/>
</node>
<node COLOR="#338800" CREATED="1692485300157" ID="ID_1563739402" MODIFIED="1692487715332" TEXT="ActivityProbe vorschalten">
<icon BUILTIN="button_ok"/>
<node CREATED="1692485311859" ID="ID_1216045769" MODIFIED="1692485364424" TEXT="diese kann Aktivierung aufzeichnen">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1692485320231" ID="ID_1801884487" MODIFIED="1692634747940" TEXT="zudem M&#xf6;glichkeit schaffen, auch Notification aufzuzeichnen">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1692485417998" ID="ID_856616436" MODIFIED="1692487971912" TEXT="zudem Probe auf den next-Ptr legen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1692485434421" ID="ID_1307528934" MODIFIED="1692491362173">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      passende ID hierf&#252;r vergeben: <font face="Monospaced" color="#1f726f">afterGATE</font>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1692485443450" ID="ID_577582748" MODIFIED="1692485453069" TEXT="damit wird &#xfc;berpr&#xfc;fbar, wenn das Gate &quot;feuert&quot;"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697736405977" HGAP="-3" ID="ID_1390282587" MODIFIED="1697736482656" TEXT="Scheduler-API" VSHIFT="43">
<font NAME="SansSerif" SIZE="15"/>
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1697736413463" ID="ID_996573918" MODIFIED="1699650479669" TEXT="ein sinnvolles externes API entwickeln">
<linktarget COLOR="#3603c2" DESTINATION="ID_996573918" ENDARROW="Default" ENDINCLINATION="-817;60;" ID="Arrow_ID_226641198" SOURCE="ID_1891808134" STARTARROW="None" STARTINCLINATION="-848;-40;"/>
<icon BUILTIN="yes"/>
<node COLOR="#435e98" CREATED="1697736509591" ID="ID_1412564814" MODIFIED="1699650487058" TEXT="Ma&#xdf;gabe">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="yes"/>
<node CREATED="1697745097705" ID="ID_1262541957" MODIFIED="1697745115210" TEXT="Scheduler wird als Service per DI zugreifbar sein"/>
<node CREATED="1697745116038" ID="ID_552854146" MODIFIED="1697745125617" TEXT="Kopplung auf die Activity-Language vermeiden"/>
<node CREATED="1697745162168" ID="ID_1987710185" MODIFIED="1697745167195" TEXT="Orientierung am Use-Case"/>
<node CREATED="1697745171552" ID="ID_1226499224" MODIFIED="1697745177738" TEXT="Konzept &#xbb;Render-Job&#xab;"/>
</node>
<node COLOR="#435e98" CREATED="1697745184133" ID="ID_1741520544" MODIFIED="1699650515551" TEXT="Use-Case-Analyse">
<icon BUILTIN="info"/>
<node CREATED="1697745329298" ID="ID_1167489748" MODIFIED="1697745333980" TEXT="operational control">
<node CREATED="1697745335153" ID="ID_217274836" MODIFIED="1697745434359" TEXT="Verarbeitung terminieren"/>
<node CREATED="1697745465344" ID="ID_1966078419" MODIFIED="1697745480697" TEXT="ggfs Last reduzieren (bremsen)"/>
<node CREATED="1697745497071" ID="ID_1927106783" MODIFIED="1697745500767" TEXT="Laststatus auslesen"/>
</node>
<node CREATED="1697745521832" ID="ID_1827596870" MODIFIED="1697745542346" TEXT="neuen Calc-Stream starten">
<node CREATED="1697745548029" ID="ID_907270420" MODIFIED="1697745553152" TEXT="&#xfc;bergabe eines Seed-Job"/>
<node CREATED="1697745554596" ID="ID_597142693" MODIFIED="1697745567342" TEXT="erzeugt intern auch ein Lastsignal"/>
</node>
<node CREATED="1697745688831" ID="ID_1065082154" MODIFIED="1697745695949" TEXT="Job-Standard-Schemata">
<node CREATED="1697745717790" ID="ID_1305876993" MODIFIED="1697745735895" TEXT="reinen Calc-Job"/>
<node CREATED="1697745736508" ID="ID_28608920" MODIFIED="1697745774953" TEXT="Job mit IO-Anteil"/>
<node CREATED="1697745776478" ID="ID_404896750" MODIFIED="1697745784017" TEXT="Dependency-Verkn&#xfc;pfung">
<node CREATED="1697754789889" ID="ID_93641454" MODIFIED="1697754807466" TEXT="die Voraussetzung wird auf die Folge aufgeschaltet"/>
<node CREATED="1697754808534" ID="ID_112643467" MODIFIED="1697754838318" TEXT="&#x27f9; beide Terme m&#xfc;ssen zugleich im Speicher liegen"/>
<node CREATED="1697754877693" ID="ID_107749731" MODIFIED="1697755265544" TEXT="ist in der Job-Planning-Pipeline gew&#xe4;hrleistet">
<arrowlink COLOR="#3e9bb9" DESTINATION="ID_799408544" ENDARROW="Default" ENDINCLINATION="1223;78;" ID="Arrow_ID_184937137" STARTARROW="None" STARTINCLINATION="370;22;"/>
<icon BUILTIN="idea"/>
<node COLOR="#7350b1" CREATED="1697755288338" HGAP="29" ID="ID_612802023" MODIFIED="1697755490162" VSHIFT="11">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      weil sie sinnigerweise <i>auf dem Kopf steht</i>
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ....das hat sich allerdings schon aus der Analyse des Pull-Processing im Node-Network so ergeben, denn dort geht man von der ExitNode r&#252;ckw&#228;rts; damals konnte ich nicht vorhersehen, wie die Situation im Scheduler sich darstellen wird &#8212; m&#246;glicherweise verbirgt sich eine tiefere, strukturelle Konvergenz dahinter, da&#223; das jetzt so <i>sch&#246;n aufgeht</i>
    </p>
  </body>
</html></richcontent>
<font NAME="SansSerif" SIZE="11"/>
</node>
</node>
</node>
<node CREATED="1697745850749" ID="ID_48640613" MODIFIED="1697745867438" TEXT="Worker-Function"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1697756690787" ID="ID_87589773" MODIFIED="1699650514045" TEXT="Design: delegierende &#xe4;u&#xdf;ere H&#xfc;lle">
<icon BUILTIN="forward"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1698936372735" ID="ID_1811375699" MODIFIED="1699650531652" TEXT="Service-Access">
<icon BUILTIN="hourglass"/>
<node CREATED="1698936390960" ID="ID_31091241" MODIFIED="1698945655354" TEXT="separates Interface definieren">
<linktarget COLOR="#ec2747" DESTINATION="ID_31091241" ENDARROW="Default" ENDINCLINATION="-130;11;" ID="Arrow_ID_215197651" SOURCE="ID_685418556" STARTARROW="None" STARTINCLINATION="5;-19;"/>
<node CREATED="1698937133797" ID="ID_609493132" MODIFIED="1698937141485" TEXT="scheduler-api.hpp">
<icon BUILTIN="info"/>
</node>
<node CREATED="1698937110289" ID="ID_1837336933" MODIFIED="1698937115982" TEXT="reduziert Header-Includes"/>
<node CREATED="1698937116771" ID="ID_231850405" MODIFIED="1699573981078" TEXT="verbessert Verst&#xe4;ndlichkeit">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      <i>das</i>&#160;ist das ausschlaggebende Argument: Jemand, der erst mal nur den Scheduler-Header liest, w&#228;re sonst sofort erschlagen von technischen Details, und w&#252;rde den Wald vor lauter B&#228;umen nicht mehr sehen. Zumal Scheduler selber nochmal zerlegt wird in einen Header-Anteil und eine eigene translation-unit (scheduler.cpp)
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#e1d6c7" COLOR="#463227" CREATED="1698945910380" ID="ID_1122976270" MODIFIED="1698946107167" TEXT="Dom&#xe4;nen-Struktur zeigt sich">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...und das hatte ich <i>an der Stelle </i>gar nicht erwartet: die tats&#228;chlichen Benutzer eines &#187;Scheduler-Service&#171; gehen nach wenigen festen Schemata vor und m&#252;ssen &#252;berhaupt nichts von einer &#187;Activity-Language&#171; wissen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1698937122167" ID="ID_4829396" MODIFIED="1698937490736" TEXT="kann dort Inteface-Typen definieren">
<icon BUILTIN="yes"/>
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1699245684722" ID="ID_1883772504" MODIFIED="1699245829024" TEXT="Zusammenarbeit mit SchedulerService erm&#xf6;glichen">
<linktarget COLOR="#fedfb1" DESTINATION="ID_1883772504" ENDARROW="Default" ENDINCLINATION="-261;14;" ID="Arrow_ID_416423581" SOURCE="ID_788545423" STARTARROW="None" STARTINCLINATION="193;-33;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1699245702520" ID="ID_1053537499" MODIFIED="1699245792944" TEXT="m&#xf6;glichst wenig virtuelle Funktionen">
<linktarget COLOR="#d06592" DESTINATION="ID_1053537499" ENDARROW="Default" ENDINCLINATION="212;16;" ID="Arrow_ID_1604416829" SOURCE="ID_1282593493" STARTARROW="None" STARTINCLINATION="319;-10;"/>
<icon BUILTIN="yes"/>
<node CREATED="1699307219569" ID="ID_679299594" MODIFIED="1699307229251" TEXT="wohl nur die Lebenszyklus-Funktionen"/>
<node CREATED="1699307236767" HGAP="52" ID="ID_1191488838" MODIFIED="1699307263822" TEXT="das scheduling-API kommt mit einer static_cast-&#x201e;Hintert&#xfc;r aus&#x201c;" VSHIFT="-6"/>
</node>
</node>
</node>
<node CREATED="1698936458463" ID="ID_1013196495" MODIFIED="1698936467425" TEXT="bedeutet: virtuelle Funktionen">
<node CREATED="1698936468473" ID="ID_1724852576" MODIFIED="1698936484199" TEXT="&#x27f9; Konsequenz: nur Proze&#xdf;-Level-API"/>
<node COLOR="#5b280f" CREATED="1698936561745" ID="ID_725627912" MODIFIED="1699573624922" TEXT="auch die Activity-Lang soll verborgen bleiben">
<icon BUILTIN="button_cancel"/>
<node CREATED="1699573633992" ID="ID_1916986829" MODIFIED="1699573853826" TEXT="das l&#xe4;&#xdf;t sich in der Strenge nicht ohne Weiteres realisieren">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...und zwar wegen der Builder-Notation; wegen der M&#246;glichkeit, sp&#228;ter noch Dependencies aufzuschalten, mu&#223; der activity::Term im Builder eingebettet sein, also bei der Definition der Builder-Klasse bekannt. Einziger Ausweg w&#228;re, in die &#228;u&#223;ere Builder-Klasse einen opaque buffer zu legen, und die Implementierung in scheduler.cpp nachzutragen. Diese L&#246;sung halte ich f&#252;r unn&#246;tig komplex (wiewohl sie keinen relevanten Performance-overhead erzeugt)
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1699573648854" ID="ID_716393193" MODIFIED="1699573724694" TEXT="ist aber auch nicht wirklich notwendig">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...denn die betreffenden Header sind nicht wirklich <i>schwergewichtig</i>&#160; &#8212;<b>&#160;</b>im Besonderen da die typischen Clients des SchedulerService selber Implementierungs-Code sind
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1698936663551" ID="ID_1985217972" MODIFIED="1698937090405" TEXT="normalen Job &#xfc;ber abstrahiertes Builder-API einstellen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Letzten Endes sind das immer nur ein paar Dutzend Aufrufe, und die Zeitmessungen der letzten Tage zeigen wieder einmal mehr als deutlich, da&#223; <i>das Vermeiden virtueller Calls auf dem Level keine Rolle spielt</i>. Es sollte locker m&#246;glich sein, 20 neue Jobs in 100&#181;s an den Scheduler zu &#252;bergeben...
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#997b81" DESTINATION="ID_1985217972" ENDARROW="Default" ENDINCLINATION="863;46;" ID="Arrow_ID_1068642654" SOURCE="ID_41803972" STARTARROW="None" STARTINCLINATION="793;49;"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1699574005686" ID="ID_1637382420" MODIFIED="1699574018197" TEXT="brauche noch sinnvollen virtuellen Zugang zum Scheduler">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1699574037212" ID="ID_621021823" MODIFIED="1699574131476" TEXT="postChain w&#xe4;re ein Kandidat, ist aber zweifelhaft">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      denn dabei handelt es sich nun wirklich um eine zentrale Implementierungs-Funktion, die auch aus der Implementierung heraus aufgerufen wird. Selbst wenn der Optimizer wahrscheinlich die <i>monomorphic optimization </i>beherrscht, macht man sowas einfach nicht.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1699574329467" ID="ID_1038685203" MODIFIED="1699574971826" TEXT="zumal die anderen high-level-Funktionen auch virtual sein m&#xfc;ssen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...so ziemlich jede von denen greift in der Implementierung auf die Komponenten im Scheduler zu.
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1699650558686" ID="ID_1201899822" MODIFIED="1699651662038" TEXT="als Backend-Service bereitstellen">
<arrowlink COLOR="#ea3575" DESTINATION="ID_546523595" ENDARROW="Default" ENDINCLINATION="-1668;-127;" ID="Arrow_ID_870877078" STARTARROW="None" STARTINCLINATION="-2501;197;"/>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697756746748" ID="ID_1029141907" MODIFIED="1697757702430" TEXT="Interface bauen">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697756762145" ID="ID_685418556" MODIFIED="1698945903762" TEXT="Service und Interface trennen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...der erhebliche techische Detailierungsgrad der &#252;bergreifenden Abl&#228;ufe legt eine klare Abtrennung zu den Kollaborationsparnern nahe. Zwar bewegen sich voraussichtlich auch alle Clients im gleichen Code-Universums (so da&#223; es keine Probleme mit Dependencies gibt), aber die <i>integration im Scheduler selber, </i>erweist sich bereits als herausfordernd komplex. Zudem zeichnet sich eine deutliche Abgrenzung im Sinne einer Dom&#228;ne heraus: die tats&#228;chlichen Clients m&#252;ssen praktisch nichts vom Themenkomplex der &#187;Activity-Language&#171; wissen.
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#ec2747" DESTINATION="ID_31091241" ENDARROW="Default" ENDINCLINATION="-130;11;" ID="Arrow_ID_215197651" STARTARROW="None" STARTINCLINATION="5;-19;"/>
<icon BUILTIN="yes"/>
<icon BUILTIN="flag-yellow"/>
</node>
<node COLOR="#338800" CREATED="1697756956736" ID="ID_830267980" MODIFIED="1698945554657" TEXT="Top-level-Implementierung der Worker-Funktion">
<arrowlink COLOR="#2f9552" DESTINATION="ID_492054934" ENDARROW="Default" ENDINCLINATION="-315;-355;" ID="Arrow_ID_1566437327" STARTARROW="None" STARTINCLINATION="253;14;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1697756908166" ID="ID_1142273023" MODIFIED="1699497966267" TEXT="Wrapper-Builder um den Activity-Term legen">
<linktarget COLOR="#576f6b" DESTINATION="ID_1142273023" ENDARROW="Default" ENDINCLINATION="-1210;-1187;" ID="Arrow_ID_417210596" SOURCE="ID_1816494945" STARTARROW="None" STARTINCLINATION="-575;30;"/>
<linktarget COLOR="#33aaf4" DESTINATION="ID_1142273023" ENDARROW="Default" ENDINCLINATION="-737;663;" ID="Arrow_ID_891496003" SOURCE="ID_175313196" STARTARROW="None" STARTINCLINATION="1218;-76;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1698945250261" ID="ID_780386157" MODIFIED="1699376300350" TEXT="Zusatz-Angaben zur Relevanz">
<linktarget COLOR="#3d3aa9" DESTINATION="ID_780386157" ENDARROW="Default" ENDINCLINATION="86;143;" ID="Arrow_ID_103420327" SOURCE="ID_1778628995" STARTARROW="None" STARTINCLINATION="317;25;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1699376305031" ID="ID_65587622" MODIFIED="1699376321708" TEXT="ManifestationID"/>
<node COLOR="#435e98" CREATED="1699376312965" ID="ID_730592934" MODIFIED="1699376321709" TEXT="isCompulsory"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1698947287399" FOLDED="true" ID="ID_391005911" LINK="#ID_1426746639" MODIFIED="1699376270521" TEXT="Job-Deadline auf API verpflichtend">
<icon BUILTIN="messagebox_warning"/>
<node COLOR="#5b280f" CREATED="1699310594544" ID="ID_1072047412" MODIFIED="1699310620293" TEXT="mit dem Builder-API nicht darstellbar">
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#338800" CREATED="1699310605911" ID="ID_169718532" MODIFIED="1699372921757" TEXT="aber einen Check mit Exception kann man einbauen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Nicht am falschen Ende sparen hier! Das kostet nur ein paar Nanosekunden...
      (und ein paar Fixes in den Tests, damit die am sanityCheck vorbeikommen)
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1699373956162" ID="ID_1098257299" MODIFIED="1699376259965" TEXT="ebenso einen Check gegen Deadlines zu weit in der Zukunft">
<icon BUILTIN="button_ok"/>
<node CREATED="1699373969470" ID="ID_396517654" MODIFIED="1699373978929" TEXT="sinnvoll dimensionieren?"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1699373980509" ID="ID_1475597715" MODIFIED="1699373990484" TEXT="man k&#xf6;nnte hier auf den BlockFlow zugreifen">
<icon BUILTIN="hourglass"/>
</node>
<node CREATED="1699373991478" ID="ID_167847312" MODIFIED="1699376244923" TEXT="erst mal fest verdrahten">
<icon BUILTIN="yes"/>
<node CREATED="1699373997383" ID="ID_680337402" MODIFIED="1699374014940" TEXT="Block-Size: 500 &#x27f9; Frames pro Block"/>
<node CREATED="1699374069953" ID="ID_987216063" MODIFIED="1699374077213" TEXT="initial Framerate: 5 * 25"/>
<node CREATED="1699374241946" ID="ID_854095581" MODIFIED="1699374250957" TEXT="&#x27f9; initial Epoch-Step 0.4sec"/>
<node CREATED="1699374286828" ID="ID_1273383304" MODIFIED="1699374296403" TEXT="&#x27f9; Limit bei 6666&#xb5;s"/>
<node CREATED="1699374536778" ID="ID_1215862863" MODIFIED="1699374571890" TEXT="sizeof(Activity) = 4*64byte = 256byte"/>
<node CREATED="1699374595111" ID="ID_838506431" MODIFIED="1699374610445" TEXT="&#x27f9; ein Block: 125KiB"/>
<node CREATED="1699374690327" ID="ID_1827252278" MODIFIED="1699374702912" TEXT="bei kleinstem Spacing &#x27f9; max 3000 Bl&#xf6;cke"/>
<node CREATED="1699374703645" ID="ID_870259225" MODIFIED="1699374725707">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <b>20</b>sec &#10233; 366 MiB
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1699374714149" ID="ID_1607589409" MODIFIED="1699374716762" TEXT="das pack ma!"/>
</node>
<node CREATED="1699374728785" ID="ID_211476282" MODIFIED="1699376256811">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      also auf <b>20 Sekunden</b>&#160;in die Zukunft limitieren
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="forward"/>
</node>
</node>
<node COLOR="#338800" CREATED="1699373933315" ID="ID_501195368" MODIFIED="1699376262879" TEXT="eingebaut in Layer-2 .postDispatch()">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1699245520392" ID="ID_1677467445" MODIFIED="1699376290830" TEXT="Builder-Funktionen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1699245533215" ID="ID_1666620904" MODIFIED="1699310551449" TEXT="relative Zeitangabe">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1699246024149" ID="ID_329731071" MODIFIED="1699246029581" TEXT="absolute Zeitangabe">
<icon BUILTIN="hourglass"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1699246030839" HGAP="86" ID="ID_685534906" MODIFIED="1699246062128" TEXT="(mal warten wie die Job-Planung ausf&#xe4;llt)" VSHIFT="1">
<font ITALIC="true" NAME="SansSerif" SIZE="9"/>
</node>
</node>
<node COLOR="#338800" CREATED="1699245538409" ID="ID_1074993324" MODIFIED="1699376286627" TEXT="hier auch schon mal std::chrono mit integrieren (f&#xfc;r Tests)">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1699245552636" ID="ID_1654937511" MODIFIED="1699376287980" TEXT="relative Deadline">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1699245562635" ID="ID_1277275368" MODIFIED="1699376289016" TEXT="weitere Setter">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1699245577969" ID="ID_1964298619" MODIFIED="1699310570096" TEXT="post() ausf&#xfc;hren">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1964298619" ENDARROW="Default" ENDINCLINATION="27;865;" ID="Arrow_ID_900145073" SOURCE="ID_760916314" STARTARROW="Default" STARTINCLINATION="-554;-36;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1699325172901" FOLDED="true" ID="ID_1435123962" MODIFIED="1699372410733" TEXT="mu&#xdf; Kapazit&#xe4;t pr&#xfc;fen / Hochskalieren">
<arrowlink COLOR="#57496c" DESTINATION="ID_745204926" ENDARROW="Default" ENDINCLINATION="249;-377;" ID="Arrow_ID_55492946" STARTARROW="None" STARTINCLINATION="668;346;"/>
<linktarget COLOR="#373a76" DESTINATION="ID_1435123962" ENDARROW="Default" ENDINCLINATION="304;54;" ID="Arrow_ID_928822414" SOURCE="ID_1792556883" STARTARROW="None" STARTINCLINATION="-255;13;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1699329348003" ID="ID_396553511" MODIFIED="1699372243603" TEXT="Parameter zur WorkForce-St&#xe4;rke wird ber&#xfc;cksichtigt">
<linktarget COLOR="#45647f" DESTINATION="ID_396553511" ENDARROW="Default" ENDINCLINATION="486;26;" ID="Arrow_ID_329496296" SOURCE="ID_651840656" STARTARROW="None" STARTINCLINATION="728;32;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1699329449911" ID="ID_1960065591" MODIFIED="1699372221033" TEXT="wenn....">
<node COLOR="#435e98" CREATED="1699329454534" ID="ID_258337881" MODIFIED="1699372224340" TEXT="Scheduler l&#xe4;uft nicht &#x27f9; ignite()"/>
<node COLOR="#435e98" CREATED="1699329466069" ID="ID_1149902545" MODIFIED="1699372224340" TEXT="nicht volle St&#xe4;rke &#x27f9; step"/>
</node>
<node COLOR="#338800" CREATED="1699372253576" ID="ID_869013268" MODIFIED="1699372262575" TEXT="Implementierung in postChain eingeh&#xe4;ngt">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1699372263855" ID="ID_1329492790" MODIFIED="1699372374425" TEXT="damit stets wirksam, wenn etwas in den Scheduler geht">
<arrowlink COLOR="#5184bf" DESTINATION="ID_660894370" ENDARROW="Default" ENDINCLINATION="-622;-30;" ID="Arrow_ID_841520455" STARTARROW="None" STARTINCLINATION="1037;52;"/>
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1699372349395" ID="ID_1120366594" MODIFIED="1699372369723" TEXT="Neben-Hintert&#xfc;r f&#xfc;r den SchedulerService_test geschaffen">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1699245611846" FOLDED="true" ID="ID_788545423" MODIFIED="1699573896906" TEXT="Definitions-Struktur und Code-Anordnung kl&#xe4;ren">
<arrowlink COLOR="#fedfb1" DESTINATION="ID_1883772504" ENDARROW="Default" ENDINCLINATION="-261;14;" ID="Arrow_ID_416423581" STARTARROW="None" STARTINCLINATION="193;-33;"/>
<arrowlink COLOR="#f5dffd" DESTINATION="ID_3688190" ENDARROW="Default" ENDINCLINATION="-410;-597;" ID="Arrow_ID_1041094005" STARTARROW="None" STARTINCLINATION="-664;318;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1699245733434" ID="ID_1697507405" MODIFIED="1699245746917" TEXT="die post()-Implementierung mu&#xdf; den eigentlichen Scheduler sehen"/>
<node COLOR="#435e98" CREATED="1699245761304" ID="ID_1282593493" MODIFIED="1699307270255" TEXT="eine Indirektion ist unvermeidbar; fragt sich blo&#xdf; wo?">
<arrowlink COLOR="#d06592" DESTINATION="ID_1053537499" ENDARROW="Default" ENDINCLINATION="212;16;" ID="Arrow_ID_1604416829" STARTARROW="None" STARTINCLINATION="319;-10;"/>
<icon BUILTIN="help"/>
<node CREATED="1699307091530" ID="ID_352699804" MODIFIED="1699307117123" TEXT="es gibt nur eine Scheduler-Service-Impl">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#435e98" CREATED="1699307118519" ID="ID_784854704" MODIFIED="1699307138868" TEXT="&#x27f9; ein static_cast gen&#xfc;gt"/>
<node CREATED="1699307150242" ID="ID_986871998" MODIFIED="1699307158109" TEXT="post()-Implementierung"/>
</node>
<node COLOR="#338800" CREATED="1699305925335" ID="ID_21620888" MODIFIED="1699307078602" TEXT="Grad der Entkopplung entscheiden">
<icon BUILTIN="yes"/>
<node CREATED="1699305942607" ID="ID_1503057791" MODIFIED="1699305946811" TEXT="Alternativen">
<node COLOR="#5b280f" CREATED="1699305947963" ID="ID_52546025" MODIFIED="1699306229621" TEXT="keine Entkopplung: Client arbeitet direct auf ActivityTerm &#x2014; &#xfc;bergibt Activity-chain direkt">
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#435e98" CREATED="1699306032400" ID="ID_569323828" MODIFIED="1699306243483" TEXT="Abk&#xfc;rzung der Details: Client arbeitet auf Builder&#x2014;  welcher auf ActivityTerm delegiert">
<icon BUILTIN="forward"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1699306100048" ID="ID_980919576" MODIFIED="1699306245580" TEXT="Einkapselung: Client arbeitet auf opaquem Builder &#x2014; Delegation durch Indirektion verborgen">
<icon BUILTIN="hourglass"/>
</node>
</node>
<node CREATED="1699306254805" ID="ID_899977043" MODIFIED="1699306360295" TEXT="Entscheidung f&#xfc;r die mittlere Alternative">
<icon BUILTIN="yes"/>
<node CREATED="1699306262945" ID="ID_1840668490" MODIFIED="1699306279907" TEXT="es erscheint mir sinnvoll, die Verwendung zu standardisieren"/>
<node CREATED="1699306282719" ID="ID_810994592" MODIFIED="1699306304119" TEXT="die Activity-Language ist sehr offen und leicht falsch zu verwenden"/>
<node CREATED="1699306321344" ID="ID_1621736115" MODIFIED="1699306346818" TEXT="Verbergen inhaltlicher Komplexit&#xe4;t erleichtert den Umbang"/>
<node CREATED="1699306377042" ID="ID_625828010" MODIFIED="1699306394839" TEXT="Einkapseln der technischen Abh&#xf6;ngigkeit ist un&#xf6;tig und verursacht Kosten"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1699306395766" ID="ID_403601529" MODIFIED="1699306672393" TEXT="komplettes Einkapseln &#x2014; oder Zusammenlegen ist sp&#xe4;ter noch denkbar">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Im Moment stehe ich for der Aufgabe, einen Scheduler-Mechanismus zu bauen, dessen konkrete Einsatzszenarien derzeit bestenfalls absch&#228;tzbar sind. Daher mu&#223; ich mir vor allem Erweiterungspunkte und Flexibilit&#228;t schaffen. Wenn sp&#228;ter einmal die Verwendungen der Engine weitgehend komplett &#252;berschaubar sind (einschlie&#223;lich Hardware-Einbindung), dann w&#228;re es sehr wohl denkbar, die Builder-Syntax und ggfs. sogar Teile der Activity-Language zu konsolidieren und festzulegen in wenige, explizite Funktionen auf dem Scheduler-API...
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1699306684201" ID="ID_1950436120" MODIFIED="1699306998148" TEXT="Konsequenz: Client mu&#xdf; activity-lang.hpp includieren">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      &#10230; Iter-explorer
    </p>
    <p>
      &#10230; Format-util
    </p>
    <p>
      &#10230; meta/trait
    </p>
    <p>
      &#10233; f&#252;r Implementierungs-Code ist das nicht weiter auff&#228;llig (die halbe Code-Basis includiert indirekt diese Header)
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1699307032938" ID="ID_713637047" MODIFIED="1699307067129" TEXT="&#x27f9; Scheduler selber wird &#xfc;ber das Player-API angesprochen"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1697757025906" ID="ID_180161439" MODIFIED="1699641333620" TEXT="seedCalcStream()">
<icon BUILTIN="button_ok"/>
<node CREATED="1699568049090" ID="ID_1596574245" MODIFIED="1699568057075" TEXT="hat sehr viel limitiertere Aufgaben">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1699568058043" ID="ID_1348913314" MODIFIED="1699568067002" TEXT="daher ist hier kein expliziter Builder notwendig"/>
<node COLOR="#338800" CREATED="1699568068327" ID="ID_1707263469" MODIFIED="1699588825322" TEXT="kann direkt auf die unterliegenden APIs durchgehen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1699568097669" ID="ID_669864822" MODIFIED="1699588821465" TEXT="einige Parameter werden fest vorgegeben">
<icon BUILTIN="button_ok"/>
<node CREATED="1699568121776" ID="ID_33668425" MODIFIED="1699568155219" TEXT="die Deadline: analog zum &#xbb;Tick&#xab;">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      also sehr gro&#223;z&#252;gig
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1699568156544" ID="ID_635029922" MODIFIED="1699568164782" TEXT="es ist immer ein Meta-Job"/>
<node CREATED="1699568165537" ID="ID_788135445" MODIFIED="1699568185049">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      er ist stets <i>compulsory</i>
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#338800" CREATED="1699568192950" ID="ID_46078853" MODIFIED="1699588823469" TEXT="weitere Parameter sind nur optional">
<icon BUILTIN="button_ok"/>
<node CREATED="1699568225289" ID="ID_1953407534" MODIFIED="1699568238756" TEXT="brauche daher zwei Varianten"/>
<node CREATED="1699568239935" ID="ID_1918919265" MODIFIED="1699568264056" TEXT="Start-Offset ist per default &#xbb;now&#xab;"/>
<node CREATED="1699568273591" ID="ID_138761713" MODIFIED="1699568281494" TEXT="aber die ManifestationID wird man meist angeben">
<node CREATED="1699568288833" ID="ID_1628158423" MODIFIED="1699568304195" TEXT="denn auch eine bereits abgeschickte Planungs-Fortschreibung kann obsolet werden"/>
<node CREATED="1699568305542" ID="ID_145276801" MODIFIED="1699568314497" TEXT="sie wird ja um eine erhebliche Zeit in die Zukunft geschoben"/>
</node>
</node>
<node COLOR="#338800" CREATED="1699588828420" ID="ID_291850353" MODIFIED="1699588844769" TEXT="zus&#xe4;tzlich die ManifestationID freischalten">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1699588845747" ID="ID_75294881" MODIFIED="1699641330164" TEXT="schedule CalcStream: Kapazit&#xe4;ts-hint an den BlockFlow-Allocator weitergeben">
<arrowlink COLOR="#4cb694" DESTINATION="ID_737137964" ENDARROW="Default" ENDINCLINATION="-1137;63;" ID="Arrow_ID_1003728898" STARTARROW="None" STARTINCLINATION="-998;36;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1697757058002" ID="ID_603254465" MODIFIED="1698867045291" TEXT="terminateProcessing()">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1697757694037" ID="ID_1433751218" MODIFIED="1698867046907" TEXT="ein vorl&#xe4;ufiger Load-Indicator">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node CREATED="1680565469342" ID="ID_250843894" MODIFIED="1697664168767" TEXT="Priority-Scheduling">
<linktarget COLOR="#fec499" DESTINATION="ID_250843894" ENDARROW="Default" ENDINCLINATION="-644;84;" ID="Arrow_ID_1702721830" SOURCE="ID_12567096" STARTARROW="None" STARTINCLINATION="-233;30;"/>
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1684973294743" ID="ID_495348423" MODIFIED="1684973356775" TEXT="Strukturen und Repr&#xe4;sentation">
<arrowlink COLOR="#fe6d01" DESTINATION="ID_1599285907" ENDARROW="Default" ENDINCLINATION="-183;0;" ID="Arrow_ID_1756942771" STARTARROW="None" STARTINCLINATION="-502;-42;"/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1687653152145" ID="ID_1131516416" MODIFIED="1687733723146" TEXT="Technologie">
<icon BUILTIN="info"/>
<node CREATED="1687653184679" ID="ID_354837865" MODIFIED="1687653275259" TEXT="Priority-Queue">
<arrowlink COLOR="#7583c0" DESTINATION="ID_625176524" ENDARROW="Default" ENDINCLINATION="-651;120;" ID="Arrow_ID_1958287800" STARTARROW="None" STARTINCLINATION="-260;47;"/>
<node CREATED="1687732117240" ID="ID_580535539" MODIFIED="1687732219469" TEXT="STL container adapter">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1687732127545" ID="ID_291376393" MODIFIED="1687732213152" TEXT="using vector storage">
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1687732144741" ID="ID_1834089420" MODIFIED="1687732156107" TEXT="integrate custom allocator">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node CREATED="1687653184679" ID="ID_198688104" MODIFIED="1687653278515" TEXT="Lock-Free-Queue">
<arrowlink COLOR="#7583c0" DESTINATION="ID_424660746" ENDARROW="Default" ENDINCLINATION="-651;120;" ID="Arrow_ID_825595958" STARTARROW="None" STARTINCLINATION="-260;47;"/>
<node CREATED="1687732174107" ID="ID_1455746784" MODIFIED="1687732223133" TEXT="Boost - Lockfree">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1687732186197" ID="ID_1593826102" MODIFIED="1687732225878" TEXT="Node based (linked list)">
<icon BUILTIN="info"/>
</node>
<node CREATED="1687732193467" ID="ID_1465560345" MODIFIED="1687732229088" TEXT="Multi producer/consumer">
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1697495777693" ID="ID_178664157" MODIFIED="1697495838069" TEXT="mu&#xdf; eine initiale pre-Allokation angeben">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...f&#252;r den internen Memory-Pool. Der kann zwar wachsen (was dann aber ggfs. blockt). Und: der Pool schrumpft nie!
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1687732230868" ID="ID_1042469307" MODIFIED="1687732238086" TEXT="integrate custom allocator">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node COLOR="#338800" CREATED="1689170049231" ID="ID_1688483414" MODIFIED="1697675215197" TEXT="WorkForce (passiver Woker-Pool)">
<arrowlink COLOR="#4d82b0" DESTINATION="ID_196314311" ENDARROW="Default" ENDINCLINATION="-56;-43;" ID="Arrow_ID_814147501" STARTARROW="None" STARTINCLINATION="-440;34;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1693171997528" ID="ID_862845398" MODIFIED="1693172169618" TEXT="Komponenten aufbauen">
<arrowlink COLOR="#678999" DESTINATION="ID_1753236898" ENDARROW="Default" ENDINCLINATION="-719;-67;" ID="Arrow_ID_197736729" STARTARROW="None" STARTINCLINATION="-295;159;"/>
<linktarget COLOR="#87584c" DESTINATION="ID_862845398" ENDARROW="Default" ENDINCLINATION="-1041;0;" ID="Arrow_ID_735728098" SOURCE="ID_204159198" STARTARROW="None" STARTINCLINATION="-238;-282;"/>
<icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1693172095351" ID="ID_605062962" MODIFIED="1699498232763" TEXT="Scheduler">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1693172098402" ID="ID_671792975" MODIFIED="1699498047121" TEXT="Dependency-Injection">
<icon BUILTIN="help"/>
<node CREATED="1698019216343" ID="ID_1018117763" MODIFIED="1698019225152" TEXT="BlockFlow wird eine externe Komponente"/>
<node CREATED="1698019231611" ID="ID_1147870240" MODIFIED="1698019236491" TEXT="EngineObserver ebenso"/>
<node CREATED="1698019237891" ID="ID_323443926" MODIFIED="1698019244558" TEXT="alles andere wird Teil vom Scheduler"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f53" CREATED="1698082299413" ID="ID_1968424043" MODIFIED="1698867352167" TEXT="Problem der Verdrahtung">
<arrowlink COLOR="#6b597c" DESTINATION="ID_1036009502" ENDARROW="Default" ENDINCLINATION="-219;-13;" ID="Arrow_ID_435126264" STARTARROW="None" STARTINCLINATION="-105;193;"/>
<icon BUILTIN="messagebox_warning"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1698082309174" ID="ID_1582335311" MODIFIED="1698082335844" TEXT="dieses Problem zieht sich durch den ganzen Scheduler...">
<icon BUILTIN="smiley-oh"/>
</node>
<node CREATED="1698082341487" ID="ID_689287390" MODIFIED="1698082650781" TEXT="Situationen und m&#xf6;gliche L&#xf6;sungen liegen dicht beieinander, aber...">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...unterscheiden sich doch im Detail
    </p>
    <ul>
      <li>
        einmal ist es der Scheduler selber, dessen Funktionalit&#228;t abstrahiert als ExecutionCtx bereitzustellen ist
      </li>
      <li>
        die WorkForce hingegen ist konzeptionell selbst&#228;ndig, wird aber vom Scheduler &#252;bernommen und gezielt parametrisiert, einschlie&#223;lich der Abstraktion <font face="Monospaced" color="#8a3ae2">doWork()</font>, welche dann doch vom Scheduler selbst zustammengestellt wird
      </li>
      <li>
        nochmal anders ist die Situation beim LoadController, der so etwas wie die Steuerzentrale darstellt: <i>konzeptionell</i>&#160;ist er total vom Scheduler abh&#228;ngig, aber seine Implementierung ist <i>entkoppelt,</i>&#160; wiewohl in beide Richtungen verdrahtet mit wechselseitiger Abh&#228;ngigkeit. In diesem Fall mu&#223; also ein <b>Abh&#228;ngigkeitszyklus durchbrochen </b>werden
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1693841227130" ID="ID_1537960830" MODIFIED="1697818566052" TEXT="WorkForce einbinden">
<arrowlink COLOR="#397cb2" DESTINATION="ID_987966047" ENDARROW="Default" ENDINCLINATION="-962;-41;" ID="Arrow_ID_818972822" STARTARROW="None" STARTINCLINATION="-609;73;"/>
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1697768180196" ID="ID_1541537637" MODIFIED="1697818152259" TEXT="work::Config konstruieren">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Schwere Geburt...
    </p>
    <p>
      Irgendwie hatte sich bei mir die Idee mit den Lambdas so festgefressen &#8212; obwohl ich doch schon eingesehen hatte, da&#223; C++ in der Hinsicht (aus gutem Grund) sehr konsequent ist, und keine Hintert&#252;r bietet, um Laufzeit-Bindigns in die statische Ebene &#8222;zu schmuggeln&#8220;. Was mich dann aber auch extrem gest&#246;rt hat, waren die std::function-Felder, in die man die Lambdas speichern m&#252;&#223;te. Es w&#228;re n&#228;mlich eine andere L&#246;sung denkbar, bei der diese Function-Objekte schon in der Basis-Config f&#252;r die WorkForce enthalten sind; damit w&#228;re das Design auch komplett festgelgt (und der Test w&#252;rde sogar einfacher). Trotzdem habe ich eine Abneigung gegen diese Function-Objekte, weil sie eben komplett unn&#246;tig sind, da es sich effektiv um ein <i>statisches Binding </i>handeln sollte. Und das war dann das rettende Stichwort: dann definiert man eben diese Binding-Forwarder als statische Funktionen in einer nested Class, und macht die R&#252;ckreferenz auf den Scheduler explizit. Und mit Aggregat-Initialisierung kann man dann sogar noch die Definition des Konstruktors auslassen
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#f3fea4" DESTINATION="ID_983915877" ENDARROW="Default" ENDINCLINATION="1743;-58;" ID="Arrow_ID_529465664" STARTARROW="None" STARTINCLINATION="822;78;"/>
<icon BUILTIN="smiley-angry"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1697810722994" HGAP="47" ID="ID_720864528" MODIFIED="1697810766219" TEXT="sp&#xe4;ter wird hier eine globale Engine-Parametrisierung einflie&#xdf;en" VSHIFT="-6">
<edge COLOR="#ffdaa4"/>
<icon BUILTIN="hourglass"/>
<node CREATED="1698019350177" ID="ID_1468925350" MODIFIED="1698867270070" TEXT="IDLE_WAIT = 20ms">
<linktarget COLOR="#ffdad5" DESTINATION="ID_1468925350" ENDARROW="Default" ENDINCLINATION="-656;96;" ID="Arrow_ID_1849512128" SOURCE="ID_307944005" STARTARROW="None" STARTINCLINATION="1653;-193;"/>
</node>
<node CREATED="1698019358338" ID="ID_1036551796" MODIFIED="1698019358338" TEXT="DISMISS_CYCLES = 100"/>
<node CREATED="1698019382514" ID="ID_583714412" MODIFIED="1698019387394" TEXT="POLL_WAIT_DELAY = 1ms"/>
</node>
</node>
<node COLOR="#338800" CREATED="1697768205409" ID="ID_489957180" MODIFIED="1698867295879" TEXT="mit dem Load-Controller verbinden">
<arrowlink COLOR="#6e8699" DESTINATION="ID_334185073" ENDARROW="Default" ENDINCLINATION="-1040;-85;" ID="Arrow_ID_71466610" STARTARROW="None" STARTINCLINATION="845;63;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1697808041495" FOLDED="true" ID="ID_492054934" MODIFIED="1699498067194" TEXT="die Work-Function zusammenstellen">
<linktarget COLOR="#2f9552" DESTINATION="ID_492054934" ENDARROW="Default" ENDINCLINATION="-315;-355;" ID="Arrow_ID_1566437327" SOURCE="ID_830267980" STARTARROW="None" STARTINCLINATION="253;14;"/>
<linktarget COLOR="#7779a3" DESTINATION="ID_492054934" ENDARROW="Default" ENDINCLINATION="-814;62;" ID="Arrow_ID_817672667" SOURCE="ID_391492289" STARTARROW="None" STARTINCLINATION="1393;-112;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1698004010478" ID="ID_1609383346" MODIFIED="1698009701573" TEXT="Schritte">
<icon BUILTIN="list"/>
<node CREATED="1698004022584" ID="ID_1953987297" MODIFIED="1698009688618" TEXT="Kapazit&#xe4;t feststellen">
<icon BUILTIN="full-1"/>
</node>
<node CREATED="1698004032863" ID="ID_169532641" MODIFIED="1698009690679" TEXT="n&#xe4;chsten Task suchen">
<icon BUILTIN="full-2"/>
</node>
<node CREATED="1698004044189" ID="ID_1529366392" MODIFIED="1698009693216" TEXT="postDispatch">
<icon BUILTIN="full-3"/>
</node>
<node CREATED="1698004051651" ID="ID_1205197888" MODIFIED="1698009695809" TEXT="Kapazit&#xe4;t feststellen">
<icon BUILTIN="full-4"/>
</node>
</node>
<node COLOR="#338800" CREATED="1698004064515" FOLDED="true" ID="ID_1757760062" MODIFIED="1698459253549" TEXT="R&#xfc;ckgabewert">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1698004069585" ID="ID_1914419321" MODIFIED="1698459232588" TEXT="Reihenfolge der Quellen">
<icon BUILTIN="yes"/>
<node CREATED="1698004105859" ID="ID_755324904" MODIFIED="1698004117284" TEXT="incomingCapacity"/>
<node CREATED="1698004126047" ID="ID_1317095519" MODIFIED="1698004128011" TEXT="postDispatch">
<node CREATED="1698004165273" ID="ID_1299419336" MODIFIED="1698004170455" TEXT="ist entweder PASS"/>
<node CREATED="1698004170936" ID="ID_1553168494" MODIFIED="1698004185891" TEXT="oder SKIP transformiert &#x27fc; PASS"/>
<node CREATED="1698004189821" ID="ID_637853272" MODIFIED="1698004220843" TEXT="oder rekrusiver postDispatch">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      kann um f&#252;nf Ecken gehen; auch dispatchNotify landed irgend wann bei postDispatch
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1698004225008" ID="ID_460779820" MODIFIED="1698004240545" TEXT="&#x27f9; entweder PASS oder ernste Probleme"/>
</node>
<node CREATED="1698004128887" ID="ID_933518899" MODIFIED="1698004135501" TEXT="outgoingCapacity"/>
</node>
<node COLOR="#338800" CREATED="1698006786524" ID="ID_1037494295" MODIFIED="1698159351443" TEXT="monadische Kontrollstruktur">
<icon BUILTIN="idea"/>
<node CREATED="1698006794562" ID="ID_1254874787" MODIFIED="1698006827275" TEXT="sonst verdeckt die Behandlung des Control-flow die Entscheidungs-Logik">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1698006838477" ID="ID_247363146" MODIFIED="1698006845045" TEXT="Kapazit&#xe4;ts-Klassifikation"/>
<node CREATED="1698006846916" ID="ID_1307283652" MODIFIED="1698006863405" TEXT="Proze&#xdf;schritt-Ergebnis"/>
<node CREATED="1698006864065" ID="ID_1683660566" MODIFIED="1698006898512" TEXT="Junktor">
<node CREATED="1698006899389" ID="ID_886749855" MODIFIED="1698006904272" TEXT="Fortsetzen falls PROC"/>
<node CREATED="1698006905100" ID="ID_726868117" MODIFIED="1698006932612" TEXT="SKIP &#x27f6; Abbruch aber &#x27fc; PROC"/>
<node CREATED="1698006946326" ID="ID_165778182" MODIFIED="1698006960896" TEXT="WAIT &#x27f6; Abbruch und weitergeben"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1698159488648" ID="ID_1616253878" MODIFIED="1698459202682" TEXT="Entscheidungs-Logik realisieren">
<icon BUILTIN="button_ok"/>
<node CREATED="1698159497515" ID="ID_1173108252" MODIFIED="1698159508856" TEXT="geschieht weitgehend durch Zusammenf&#xfc;gen">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1698159517071" FOLDED="true" ID="ID_1595260615" MODIFIED="1698459193257" TEXT="Umsetzen der Kapazit&#xe4;ts-Entscheidung f&#xfc;r Worker">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1698198240438" ID="ID_1413581521" MODIFIED="1698198284881" TEXT="auf LoadController::scatteredDelayTime() aufbauen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1698198271306" ID="ID_1386652739" MODIFIED="1698459119951" TEXT="brauche GroomingToken f&#xfc;r tendNext()">
<icon BUILTIN="button_ok"/>
<node CREATED="1698198292902" ID="ID_519079747" MODIFIED="1698454256066" TEXT="das wird jetzt aber verwirrend">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      die Funktion hei&#223;t scatteredDelay() &#8212; aber sie kombiniert hier ziemlich &#252;bergreifende Funktionalit&#228;t....
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1698198357383" ID="ID_783687241" MODIFIED="1698198391403" TEXT="und zudem mu&#xdf; ich jetzt in den n&#xe4;chsten Switch-Case durchfallen">
<icon BUILTIN="smily_bad"/>
</node>
<node COLOR="#338800" CREATED="1698459126868" ID="ID_1886805829" MODIFIED="1698459145593" TEXT="besser gel&#xf6;st: in Lambdas extrahiert">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1698198418607" ID="ID_1659177227" MODIFIED="1698200551931" TEXT="kl&#xe4;ren: woher kommt die &quot;now&quot;-Time">
<icon BUILTIN="messagebox_warning"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1698199491224" ID="ID_178144601" MODIFIED="1698199521596" TEXT="sie wird am Anfang der getWork-Chain gezogen">
<icon BUILTIN="broken-line"/>
<node CREATED="1698199529431" ID="ID_1280667257" MODIFIED="1698199553675" TEXT="das erste scatteredDelay ist unproblematisch"/>
<node CREATED="1698199554479" ID="ID_1346167796" MODIFIED="1698199562682" TEXT="was aber absolut nicht offensichtlich ist"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1698199564030" ID="ID_1324973791" MODIFIED="1698199650106">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      und nach dem Dispatch w&#228;re das <font face="Monospaced" color="#ae020c">now</font>&#160;und die<font face="Monospaced" color="#ae020c">&#160;headTime</font>&#160; grob falsch
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="broken-line"/>
</node>
</node>
<node COLOR="#338800" CREATED="1698199659009" ID="ID_1093000775" MODIFIED="1698199675999" TEXT="also zumindest im 3.Zweig diese Infos nochmal neu ziehen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1698199692461" ID="ID_1324734183" MODIFIED="1698200012585" TEXT="sinnvollerweise sollte man das aber in allen drei Steps tun">
<icon BUILTIN="yes"/>
<node COLOR="#435e98" CREATED="1698199722080" ID="ID_627115745" MODIFIED="1698200010828" TEXT="Code-Qualit&#xe4;t geht vor">
<icon BUILTIN="yes"/>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1698199727033" ID="ID_452646558" MODIFIED="1698200448070">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <u>Performance</u>:
    </p>
    <p>
      wie aufwendig ist der Zugriff
    </p>
    <p>
      auf die high-resolution-Time?
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#884252" DESTINATION="ID_204964487" ENDARROW="Default" ENDINCLINATION="2012;0;" ID="Arrow_ID_665756118" STARTARROW="None" STARTINCLINATION="85;180;"/>
<icon BUILTIN="help"/>
<node CREATED="1698199820427" ID="ID_485189393" MODIFIED="1698199863678" TEXT="das ist sicher nur &#xbb;Kleinvieh&#xab;">
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1698199801350" ID="ID_493163673" MODIFIED="1698199947812" TEXT="keine Ahnung ob das eine relevante Betrachtung ist">
<icon BUILTIN="help"/>
<icon BUILTIN="help"/>
</node>
<node BACKGROUND_COLOR="#fafe99" COLOR="#fa002a" CREATED="1698199865253" ID="ID_854081130" MODIFIED="1698200504855" TEXT="schlimmer noch: der Scheduler mu&#xdf; sich erst bew&#xe4;hren">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Es ist n&#228;mlich &#252;berhaupt noch nicht klar, ob ich hier ein INTERNATIONALES oder ein NATIONALES Desaster programmiere, oder ob der Code <i>blo&#223; peinlich </i>ist
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="smily_bad"/>
</node>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1698198536389" ID="ID_864714571" MODIFIED="1698459171503" TEXT="mu&#xdf; nach Delay vorzeitig ausbrechen">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1698198602506" ID="ID_1248366700" MODIFIED="1698198624915" TEXT="geht hier mit Trick">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1698198611365" ID="ID_1334964462" MODIFIED="1698198755186" TEXT="activity::SKIP zur&#xfc;ckgeben">
<icon BUILTIN="forward"/>
</node>
<node CREATED="1698198643368" ID="ID_252447141" MODIFIED="1698198745606" TEXT="ist sogar nur ein &#x201e;halber&#x201c; Trick">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      zum einen kann das auch aus dem Activity-Dispatch kommen, und au&#223;erdem ist das genau die Bedeutung, die SKIP ausdr&#252;cken soll...
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1698200567151" FOLDED="true" ID="ID_1980030846" MODIFIED="1699236077222" TEXT="das ist problematischer Code">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1698200588924" ID="ID_1924528218" MODIFIED="1698200607982" TEXT="der Ablauf ist inzwischen ziemlich komplex geworden"/>
<node CREATED="1698200609162" ID="ID_1998499714" MODIFIED="1698200656688" TEXT="viel kontextuelle Annahmen">
<node CREATED="1698200657659" ID="ID_503492604" MODIFIED="1698200657659" TEXT="bedingt durch das Schema mit den R&#xfc;ckgabewerten"/>
<node CREATED="1698200661571" ID="ID_395889169" MODIFIED="1698200720125" TEXT="die Behandlung des Grooming-Token ist trickreich"/>
<node CREATED="1698200692558" ID="ID_554213588" MODIFIED="1698200712581" TEXT="und auch die Klassifikation der Zeit-Horizonte"/>
</node>
<node CREATED="1698200851865" ID="ID_1845940661" MODIFIED="1698200860540" TEXT="Orchestrierung und Detail-Logik vermischt sich">
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1699235860411" ID="ID_754220814" LINK="#ID_1301519166" MODIFIED="1699235980685" TEXT="entscheidende Verbesserung: Dispatch with Context">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1699235997663" ID="ID_1789788688" MODIFIED="1699236008234" TEXT="Scheduler::postChain() wird zum zentralen Zugang"/>
<node CREATED="1699236022492" ID="ID_862937182" MODIFIED="1699236037518" TEXT="Durchreichen der Detail-Logik damit in den ExecutionCtx"/>
</node>
<node BACKGROUND_COLOR="#fafe99" COLOR="#fa002a" CREATED="1698200895811" ID="ID_1962121966" MODIFIED="1698201167309" TEXT="ganz ehrlich: &#xbb;premature optimisation&#xab; ">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Ich programmiere hier unter der Annahme, da&#223; es sich um &#187;performance-relavanten&#171; Code handelt, und deshalb verwende ich nur bestimmte Konstrukte, und vermeide andere Konstrukte. Das alles bewirkt eigentlich bereits viel zu viel <i>Trickserei, die noch nicht durch Empirie gedeckt ist</i>
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#fd1658" DESTINATION="ID_840908448" ENDARROW="Default" ENDINCLINATION="-1952;-70;" ID="Arrow_ID_727019415" STARTARROW="None" STARTINCLINATION="1378;88;"/>
<icon BUILTIN="stop-sign"/>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1698201520624" HGAP="12" ID="ID_709439888" MODIFIED="1698201582701" TEXT="OK &#x2014; weitermachen sanssouci" VSHIFT="22">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1698286167843" FOLDED="true" ID="ID_3145780" MODIFIED="1698458668582" TEXT="GroomingToken richtig behandeln">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1698286228019" ID="ID_1492651640" MODIFIED="1698453144418" TEXT="acquire ist korrekt (nochmal &#xfc;berpr&#xfc;ft)">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1698286180725" ID="ID_1291141353" MODIFIED="1698519398914" TEXT="sicherstellen da&#xdf; es am Ende gedropped wurde">
<linktarget COLOR="#688d8e" DESTINATION="ID_1291141353" ENDARROW="Default" ENDINCLINATION="143;518;" ID="Arrow_ID_94494002" SOURCE="ID_271809731" STARTARROW="None" STARTINCLINATION="760;60;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1698453150435" ID="ID_63679617" MODIFIED="1698518437666" TEXT="try-catch">
<linktarget COLOR="#fdd8ba" DESTINATION="ID_63679617" ENDARROW="Default" ENDINCLINATION="323;67;" ID="Arrow_ID_1338247781" SOURCE="ID_1793076416" STARTARROW="None" STARTINCLINATION="881;61;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1698453154962" ID="ID_1484610310" MODIFIED="1698454206723" TEXT="Abk&#xfc;rzung: weiter halten wenn PASS">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...das ist ein kleiner Kniff und f&#252;hrt dazu, da&#223; ein Thread ohne weiteres in einem Schwung alle Management-Aufgaben erledigt, bis er durch eine regul&#228;re Transaktion in den Work-Modus geht, oder eben nichts mehr unmittelbar zu tun ist. F&#252;r die logische Konsistenz ist diese Ausnahme nicht notwendig, aber sie verhindert in einigen F&#228;llen eine unn&#246;tige read-write-barrier und arbeitet weiter aus dem Cache der jeweiligen Core. Cache-Effekte k&#246;nnen locker mal 50-100&#181;s kosten
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#723046" DESTINATION="ID_1484610310" ENDARROW="Default" ENDINCLINATION="769;783;" ID="Arrow_ID_144800948" SOURCE="ID_1906258738" STARTARROW="None" STARTINCLINATION="660;-142;"/>
<icon BUILTIN="idea"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1698798844975" HGAP="59" ID="ID_1193060774" MODIFIED="1698799087954" TEXT="potentiell gef&#xe4;hrlich wenn eine Kette/Activity das nicht selber richtig freigibt" VSHIFT="-1">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      siehe der quer-verlinkte Test;
    </p>
    <p>
      Normalerweise sollte das keine Gefahr darstellen, da ja <i>targeted-sleep</i>&#160; nun eben explizit das Grooming-Token droppt. Gefahr best&#252;nde nur dann, wenn eine interne Aktivit&#228;t im Management-Modus eine Arbeits-Schleife aufmachen w&#252;rde.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1698454208365" ID="ID_410477206" MODIFIED="1698455361253" TEXT="Falle! mu&#xdf; explizit droppen vor targeted-sleep">
<icon BUILTIN="broken-line"/>
<node CREATED="1698454352963" ID="ID_1446465614" LINK="#ID_1681258664" MODIFIED="1698454471274" TEXT="Hinweis auf Design-smell">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1698454732760" ID="ID_1159336693" MODIFIED="1698454753377" TEXT="direkte Konsequenz der Flexibilit&#xe4;t der Activity-Language"/>
<node CREATED="1698454756045" ID="ID_296403681" MODIFIED="1698454779174" TEXT="niemand verlangt, da&#xdf; das Token nach jedem Dispatch gedroppt wurde"/>
<node CREATED="1698454779833" ID="ID_742947700" MODIFIED="1698454794491" TEXT="tats&#xe4;chlich wei&#xdf; sogar die ActivityLang &#xfc;berhaupt nichts vom Grooming-Token"/>
<node CREATED="1698454804383" ID="ID_747980717" MODIFIED="1698454833154" TEXT="und es sind F&#xe4;lle von internem Processing denkbar, wo es gehalten wird"/>
<node CREATED="1698454838234" ID="ID_1414177644" MODIFIED="1698454849444" TEXT="aber ob das nun richtig ist, h&#xe4;ngt vom Queue-Inhalt ab"/>
<node COLOR="#435e98" CREATED="1698454850565" ID="ID_178396508" MODIFIED="1698455364612" TEXT="&#x27f9; wir m&#xfc;ssen explizit vor jedem Sleep aufpassen"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1698454870694" ID="ID_1550541513" MODIFIED="1698454924572">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      sonst k&#246;nnte der Scheduler zwischendurch
    </p>
    <p>
      &#160;f&#252;r Zeitspannen bis zu 20ms geblockt sein
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="broken-line"/>
<node CREATED="1698454926522" ID="ID_417517465" MODIFIED="1698455334934" TEXT="das w&#xe4;re ziemlich schwer festzustellen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...denn typischerweise passiert ja ein <i>targeted sleep </i>genau dann, wenn grade eben nichts zu tun ist; aber ein Teil dieser Verz&#246;gerun k&#246;nnte eben doch &#252;ber eine Zeitspanne reichen, in der Activities geplant sind (oder zwischenzeitlich eingespielt wurden)
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1698454949611" ID="ID_609944433" MODIFIED="1698454955558" TEXT="und wahrscheinlich auch sehr selben"/>
<node CREATED="1698454956218" ID="ID_249261761" MODIFIED="1698454959373" TEXT="umso gef&#xe4;hrlicher"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1698449165927" ID="ID_1758101770" MODIFIED="1698453116175" TEXT="wenn nicht zu erlangen &#x27f6; SKIP">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      passiert tats&#228;chlich in SchedulerCommutator::postDispatch()
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
<node CREATED="1698449196502" ID="ID_901891757" MODIFIED="1698449202355" TEXT="nicht WAIT"/>
<node CREATED="1698449202906" ID="ID_1519160617" MODIFIED="1698449215348" TEXT="aber auch nicht weitermachen"/>
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1698449216368" ID="ID_1023610173" MODIFIED="1698450803071" TEXT="&#x27f9; also hot polling / spinning">
<arrowlink COLOR="#7f5d5b" DESTINATION="ID_1388229244" ENDARROW="Default" ENDINCLINATION="1570;-56;" ID="Arrow_ID_1744066292" STARTARROW="None" STARTINCLINATION="1233;109;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node COLOR="#338800" CREATED="1698458707764" ID="ID_17588364" MODIFIED="1698458728498" TEXT="etwas Dokumentation &#x27f6;  scheduler.hpp">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1698458524913" ID="ID_45287969" MODIFIED="1698458664836" TEXT="Offener Punkt: Grooming-Token nach IO-callbacks">
<arrowlink COLOR="#a48aab" DESTINATION="ID_406351135" ENDARROW="Default" ENDINCLINATION="-1523;-56;" ID="Arrow_ID_1878900565" STARTARROW="None" STARTINCLINATION="702;40;"/>
<icon BUILTIN="bell"/>
</node>
</node>
<node COLOR="#338800" CREATED="1698372042164" FOLDED="true" ID="ID_1272410719" MODIFIED="1698518605438" TEXT="Clock-Implementierung">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1698372415522" ID="ID_932191846" MODIFIED="1698518065927" TEXT="steady_clock verwenden">
<icon BUILTIN="yes"/>
<node CREATED="1698509039012" ID="ID_1107882116" MODIFIED="1698509183027" TEXT="Umst&#xe4;nde zur Entscheidung">
<arrowlink COLOR="#5462be" DESTINATION="ID_644665778" ENDARROW="Default" ENDINCLINATION="-1222;187;" ID="Arrow_ID_31881734" STARTARROW="None" STARTINCLINATION="-1305;116;"/>
<icon BUILTIN="info"/>
</node>
<node COLOR="#435e98" CREATED="1698508991193" FOLDED="true" ID="ID_600537205" MODIFIED="1698518063146" TEXT="Stand(libstdc++ 8)">
<node CREATED="1698518008302" ID="ID_1141108351" MODIFIED="1698518018620" TEXT="beide int64_t"/>
<node CREATED="1698518019253" ID="ID_67183502" MODIFIED="1698518026079" TEXT="nanosekunden-Skala"/>
<node CREATED="1698518031779" ID="ID_1418941928" MODIFIED="1698518054504" TEXT="high_resolution_clock &#x2261; Alias f&#xfc;r system_clock"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1698372425329" ID="ID_291517829" MODIFIED="1698518580882" TEXT="auch gleich in vault::RealClock eingebaut">
<icon BUILTIN="idea"/>
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#1d5374" CREATED="1698518498042" ID="ID_1139060053" MODIFIED="1698518599573" TEXT="viel sauberer geworden dadurch">
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1698518510795" ID="ID_1522430325" MODIFIED="1698518576742" TEXT="und ist wohl technisch ein drop-in">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      weil beide letztlich auf den unterliegenden Systemcall gehen; die Linux-Systemclock liefert bereits Nanosekunden-Aufl&#246;sung
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1699472012351" FOLDED="true" ID="ID_1226214188" MODIFIED="1699472610417" TEXT="Bedienen der Eingangs-Queue stets sicherstellen">
<linktarget COLOR="#4bd448" DESTINATION="ID_1226214188" ENDARROW="Default" ENDINCLINATION="-543;31;" ID="Arrow_ID_1563551910" SOURCE="ID_1620543415" STARTARROW="None" STARTINCLINATION="-231;0;"/>
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#420d67" CREATED="1699472120064" ID="ID_1534221280" MODIFIED="1699472153348" TEXT="nebbich...">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="smily_bad"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1699472162491" ID="ID_903900691" MODIFIED="1699472589008" TEXT="...sonst w&#xfc;rden neue Events schlimmstenfalls bis zum n&#xe4;chsten Tick h&#xe4;ngenbleiben k&#xf6;nnen...">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      <u>Erl&#228;uterung</u>:
    </p>
    <p>
      Die gesamte Entscheidungs-Logik baut auf dem Head der Priority-Queue auf. Sofern man aber das GroomingToken nicht erlangen kann (oder will), gehen neue ActivationEvent erst einmal in die Lock-free Instruct-queue. Sie werden von dort <i>nebenbei mit weiterbef&#246;rdert,</i>&#160;und zwar immer dann, wenn jemand grade das Grooming-Token hat und sich an den Queues zu schaffen macht. Leider ist dieser Umstand nur garantiert der Fall im Scheduler-&#187;Tick&#171; &#8212; wenngleich auch im regul&#228;ren Betrieb fast immer irgendwo was &#8222;unterwegs&#8220; sein sollte, und deshalb auch das <i>nebenbei Auskehren, </i>praktisch immer funktioniert. Aufgefallen war mir das Problem nur in einem k&#252;nstlichen Test-Setup SchedulerService_test::scheduleRenderJob(), wo ich die Worker bewu&#223;t au&#223;er Gefecht gesetzt habe. Aber es gibt eben durchaus m&#246;gliche Umst&#228;nde, wo das auch passieren k&#246;nnte:
    </p>
    <ul>
      <li>
        wenn jemand ganz von Au&#223;en etwas einstellt
      </li>
      <li>
        wenn grade ein anderer Worker mit Management-Aufgaben besch&#228;ftigt ist, aber am <i>Auskehren der Eingangsqueue</i>&#160;bereits vorbei ist.
      </li>
    </ul>
    <p>
      Grade in letzterem Fall k&#246;nnte es passieren, da&#223; das dummer Weise die letzte Aktion ist, und dann eine lange Pause kommt, bis zum n&#228;chsten Tick. Man k&#246;nnte zwar so etwas leicht beim Einplanen neuer Jobs kompensieren, aber das ist genau die Art von heimt&#252;ckischer Verkoppelung, die ich um jeden Preis zu verhindern suche.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node COLOR="#338800" CREATED="1698004014170" ID="ID_359097355" MODIFIED="1699498059501" TEXT="Test">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1698203252783" ID="ID_161810851" MODIFIED="1698240150155" TEXT="was kann man hier sinnvoll testen?">
<icon BUILTIN="help"/>
<node CREATED="1698203283579" ID="ID_1136913463" MODIFIED="1698203292977" TEXT="der Code macht bereits sleep-Waits"/>
<node CREATED="1698203293530" ID="ID_507890192" MODIFIED="1698203303180" TEXT="andererseits kann man ihn noch direkt aufrufen"/>
<node CREATED="1698240055257" ID="ID_1418857353" MODIFIED="1698240100349" TEXT="&#x27f9; Queue best&#xfc;cken und aufrufen &#x2014; Zeit messen"/>
</node>
<node COLOR="#338800" CREATED="1699235788811" ID="ID_578882495" MODIFIED="1699235833758" TEXT="einzel-Activity massenweise einstellen und Scheduler laufen lassen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1699235810584" ID="ID_592656457" MODIFIED="1699235833758" TEXT="die Work-Funktion direkt aufrufen und Gr&#xf6;&#xdf;enordnung der Verz&#xf6;gerungen pr&#xfc;fen">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1699329055524" FOLDED="true" ID="ID_1177531499" MODIFIED="1699498071662" TEXT="WorkForce-Parameter: COMPUTATION_CAPACITY">
<arrowlink COLOR="#64334e" DESTINATION="ID_1000686206" ENDARROW="Default" ENDINCLINATION="-739;-25;" ID="Arrow_ID_1025143985" STARTARROW="None" STARTINCLINATION="-283;494;"/>
<linktarget COLOR="#786a97" DESTINATION="ID_1177531499" ENDARROW="Default" ENDINCLINATION="-920;53;" ID="Arrow_ID_1670167461" SOURCE="ID_1757255005" STARTARROW="None" STARTINCLINATION="61;-138;"/>
<icon BUILTIN="messagebox_warning"/>
<node COLOR="#435e98" CREATED="1699329238981" ID="ID_407782041" MODIFIED="1699329259621" TEXT="Idee: nicht alle Cores verwenden">
<icon BUILTIN="info"/>
<node CREATED="1699329261275" ID="ID_1627297150" MODIFIED="1699329269211" TEXT="k&#xf6;nnte tats&#xe4;chlich sinnvoll sein"/>
<node CREATED="1699329290856" ID="ID_387151968" MODIFIED="1699329300199" TEXT="aktuell n&#xfc;tzt es mir f&#xfc;r die Tests"/>
</node>
<node CREATED="1699368212285" ID="ID_855305118" MODIFIED="1699368213601" TEXT="wird von WorkForce und LoadController als Referenz verwendet"/>
<node COLOR="#338800" CREATED="1699329306877" ID="ID_651840656" MODIFIED="1699368342608" TEXT="dieser Parameter ist nun explizit &#xe4;nderbar (nicht mehr const)">
<arrowlink COLOR="#45647f" DESTINATION="ID_396553511" ENDARROW="Default" ENDINCLINATION="486;26;" ID="Arrow_ID_329496296" STARTARROW="None" STARTINCLINATION="728;32;"/>
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1699368246481" ID="ID_817072584" MODIFIED="1699368325222" TEXT="wird aber wie eine Konstante behandelt">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ....also kein Locking etc; allerdings greift der LoadController jetzt per Lambda darauf zu.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1699368298187" ID="ID_1401898380" MODIFIED="1699368321811" TEXT="sollte man also bei stehendem Scheduler &#xe4;ndern">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697808056565" ID="ID_10043675" MODIFIED="1697808062704" TEXT="Fehlerbehandlung bedenken">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1697808069219" ID="ID_1793076416" MODIFIED="1698518471734" TEXT="Grooming-Token garantiert freigeben">
<arrowlink COLOR="#976781" DESTINATION="ID_240227471" ENDARROW="Default" ENDINCLINATION="1819;-50;" ID="Arrow_ID_1740525983" STARTARROW="None" STARTINCLINATION="221;16;"/>
<arrowlink COLOR="#fdd8ba" DESTINATION="ID_63679617" ENDARROW="Default" ENDINCLINATION="323;67;" ID="Arrow_ID_1338247781" STARTARROW="None" STARTINCLINATION="881;61;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#6920c0" CREATED="1697808219247" ID="ID_1041283707" MODIFIED="1697808253529" TEXT="ungekl&#xe4;rt: HALT an einzelne Worker?">
<icon BUILTIN="bell"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1697675135117" ID="ID_880133050" MODIFIED="1699024471881" TEXT="ActivityLang + BlockFlow">
<icon BUILTIN="pencil"/>
<node CREATED="1697758561025" ID="ID_107853136" MODIFIED="1697758575911">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      ActivityLang geh&#246;rt sinnvollerweise <i>in den Scheduler</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1697758577471" ID="ID_805214343" MODIFIED="1697758585886" TEXT="dagegen BlockFlow ist eine externe Komponente"/>
<node COLOR="#435e98" CREATED="1697844012851" FOLDED="true" ID="ID_1020998473" MODIFIED="1698591450293" TEXT="Execution-Context tats&#xe4;chlich bereitstellen">
<linktarget COLOR="#e6ffa8" DESTINATION="ID_1020998473" ENDARROW="Default" ENDINCLINATION="-1456;-96;" ID="Arrow_ID_1485027520" SOURCE="ID_1906823317" STARTARROW="None" STARTINCLINATION="-811;38;"/>
<icon BUILTIN="forward"/>
<node CREATED="1697844618383" ID="ID_988917685" MODIFIED="1697844647556" TEXT="f&#xfc;r den Test wurde der stets nur gemockt">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      es gen&#252;gte, an diesen Stellen die Ausf&#252;hrung der abstrahierten Aktionen zu loggen
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1697844649091" ID="ID_939726274" MODIFIED="1697844696080" TEXT="als Abstraktion wurde (bewu&#xdf;t) ein Template-Parameter gew&#xe4;hlt"/>
<node COLOR="#338800" CREATED="1697844697092" ID="ID_766922475" MODIFIED="1698591435338" TEXT="konkretes Funktions-Binding">
<icon BUILTIN="button_ok"/>
<node CREATED="1697844724057" ID="ID_1038347556" MODIFIED="1697844734323" TEXT="wieder ein &#xe4;hnliches Problem wie bei der WorkForce-Config"/>
<node CREATED="1697844740488" ID="ID_1999540950" MODIFIED="1697844761716" TEXT="hier aber einfacher: es wird stets nur eine Referenz ben&#xf6;tigt">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1697844763748" ID="ID_1789360174" MODIFIED="1697845607548">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      &#10233; <i>der Scheduler selber</i>&#160;kann diese Rolle <b>generisch</b>&#160;&#252;bernehmen
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1697845608675" ID="ID_610860781" MODIFIED="1697845760326" TEXT="noch sauberer: ein Sub-Interface-Mapping">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <ul>
      <li>
        eine Subklasse, die aber <b>private</b>&#160;vom Scheduler erbt
      </li>
      <li>
        sie bietet selber eine Downcast-Accessor-Funktion
      </li>
      <li>
        eigene Datenfelder sind nicht erlaubt (Slicing)
      </li>
      <li>
        aber beliebige Member-Funktionen, die sich frei aus dem (protected)-Scope des Schedulers bedienen k&#246;nnen
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node COLOR="#338800" CREATED="1698591423354" ID="ID_1641227911" MODIFIED="1698591431981" TEXT="funktioniert tats&#xe4;chlich">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1697929209697" FOLDED="true" ID="ID_862130924" MODIFIED="1697930318294" TEXT="wozu braucht &#x3bb;-post den ExecutionCtx(parameter)?">
<icon BUILTIN="button_cancel"/>
<node CREATED="1697929254691" ID="ID_315183275" MODIFIED="1697929265630" TEXT="nebenbei aufgefallen bei der Implementierung">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1697930128320" ID="ID_1585090015" MODIFIED="1697930307837" TEXT="Antwort: ist hilfreich f&#xfc;r Tests / Mocking">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...speziell wenn man &#955;-post als Funktor implementiert, bekommt man keinen <font face="Monospaced">this*</font>
    </p>
    <p>
      ...entspricht au&#223;erdem dem generellen Schema, nach dem alle &#187;downstream&#171; ben&#246;tigten Argumente durch die ganze Kette m&#246;glichst in gleicher Reihenfolge durchgegeben werden.
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#87a6b3" DESTINATION="ID_1875907326" ENDARROW="Default" ENDINCLINATION="543;939;" ID="Arrow_ID_1742040512" STARTARROW="None" STARTINCLINATION="271;21;"/>
</node>
</node>
<node COLOR="#338800" CREATED="1698017543187" FOLDED="true" ID="ID_947237772" MODIFIED="1698018075769" TEXT="aber man kann das API harmonisieren und einen Activity* durchgeben">
<icon BUILTIN="button_ok"/>
<node CREATED="1698017576870" ID="ID_130404848" MODIFIED="1698017587979" TEXT="dadurch wird insgesamt alles symmetrischer"/>
<node CREATED="1698017588527" ID="ID_107905550" MODIFIED="1698017627358" TEXT="auch ActivityLang::dispatchChain vs ActivityLang:.activateChain"/>
<node CREATED="1698017628162" ID="ID_985088218" MODIFIED="1698017660790">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      und ich habe im Scheduler nur noch &#955;-post als<i>&#160;universellen Eingang</i>
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#c8c0b6" CREATED="1698017665997" ID="ID_1014553523" MODIFIED="1698017924884" TEXT="(leider eine Schei&#xdf; Arbeit)">
<icon BUILTIN="smiley-oh"/>
<node CREATED="1698017681299" ID="ID_1656316113" MODIFIED="1698017696205" TEXT="vor allem wegen util::stringify()"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1698017696767" ID="ID_1387271874" MODIFIED="1698017710995" TEXT="das bekannte Problem mit dem Rendern von Pointern">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1698017811570" ID="ID_529684124" MODIFIED="1698017823691" TEXT="util::toString kann nicht spezialisiert werden"/>
<node CREATED="1698017824760" ID="ID_181113602" MODIFIED="1698017847198" TEXT="und im Level darunter k&#xe4;mpft man mit ambivalenten Spezialisierungen"/>
</node>
<node CREATED="1698017714703" ID="ID_1691641418" MODIFIED="1698017789160" TEXT="L&#xf6;sung gefunden: StringConv&lt;T*&gt;">
<icon BUILTIN="idea"/>
<node CREATED="1698017730180" ID="ID_822300883" MODIFIED="1698017740207" TEXT="aber mit explizitem Ausschlu&#xdf; von C-Strings"/>
<node CREATED="1698017740884" ID="ID_202028587" MODIFIED="1698017749548" TEXT="...und von void*"/>
<node CREATED="1698017750482" ID="ID_1459125272" MODIFIED="1698017756861" TEXT="...und von const void*"/>
<node CREATED="1698017757730" ID="ID_435030620" MODIFIED="1698017763326" TEXT="oh my">
<icon BUILTIN="smiley-angry"/>
</node>
<node COLOR="#b40a9b" CREATED="1698017766341" ID="ID_546066467" MODIFIED="1698017781763" TEXT="daswennmangutgeht...">
<font NAME="SansSerif" SIZE="10"/>
</node>
</node>
<node COLOR="#338800" CREATED="1698017850948" ID="ID_1029506488" MODIFIED="1698017920437" TEXT="lasse das Rendern der Addresse hier bewu&#xdf;t weg">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <ul>
      <li>
        weil sie die Ausgabe aufbl&#228;ht
      </li>
      <li>
        weil sie i.d.R. zuf&#228;llig ist
      </li>
      <li>
        es gibt ja noch util::showPtr()
      </li>
      <li>
        und in format-cout hab ich's drinnen gelassen (da m&#246;chte man es normalerweise schon sehen)
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1699024386786" FOLDED="true" ID="ID_461028283" MODIFIED="1699498093080" TEXT="Verbindung von Schedule + Dispatch + Kontext">
<linktarget COLOR="#4c8de8" DESTINATION="ID_461028283" ENDARROW="Default" ENDINCLINATION="-786;46;" ID="Arrow_ID_1280528411" SOURCE="ID_1301519166" STARTARROW="None" STARTINCLINATION="-1155;1082;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1699024540045" ID="ID_1296957170" MODIFIED="1699024561590" TEXT="Erweiterung und Konkretisierung des Konzepts &#xbb;ExecutionCtx&#xab;"/>
<node CREATED="1699024566660" ID="ID_655395356" MODIFIED="1699024593618" TEXT="mu&#xdf; einen Aufruf-Kontext an Chain-Dispatch weitergeben"/>
<node COLOR="#338800" CREATED="1699024676051" FOLDED="true" ID="ID_103937457" MODIFIED="1699498090004" TEXT="Umbau der Layer-2-Schnittstelle">
<icon BUILTIN="button_ok"/>
<node CREATED="1699024689361" ID="ID_1793222395" MODIFIED="1699024704539" TEXT="findWork mu&#xdf; mehr Informationen liefern">
<node CREATED="1699024705767" ID="ID_71901735" MODIFIED="1699024713946" TEXT="gefunden / nichts gefunden"/>
<node CREATED="1699024714558" ID="ID_1051174018" MODIFIED="1699024723825" TEXT="die gefundene Activity"/>
<node CREATED="1699024728373" ID="ID_1937057825" MODIFIED="1699024738351" TEXT="das Zeitfenster (incl Deadline)"/>
<node CREATED="1699024739219" ID="ID_1805566958" MODIFIED="1699024744630" TEXT="die ManifestationID"/>
<node CREATED="1699024745594" ID="ID_1597255108" MODIFIED="1699024777298" TEXT="Flags : isCompulsory"/>
</node>
<node COLOR="#435e98" CREATED="1699024786300" ID="ID_952560555" MODIFIED="1699059086619" TEXT="Aufruf/Verwendung sollte m&#xf6;glichst lesbar und kompakt bleiben">
<icon BUILTIN="yes"/>
<node CREATED="1699024884486" ID="ID_523469243" MODIFIED="1699024901283" TEXT="implicit conversions"/>
<node CREATED="1699024902687" ID="ID_1166240285" MODIFIED="1699057559232" TEXT="direkt-Zugriff auf alle Informationen"/>
<node CREATED="1699024909180" ID="ID_164149087" MODIFIED="1699024922550" TEXT="Tuple-Protocol f&#xfc;r structured Bindings"/>
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1699059092850" ID="ID_572213046" MODIFIED="1699059102353" TEXT="&#x27f9; drop-in replacement"/>
</node>
<node COLOR="#338800" CREATED="1699024855635" ID="ID_1175335621" MODIFIED="1699059078219" TEXT="Ereignis-Typ in Layer-1 definiert">
<icon BUILTIN="button_ok"/>
<node CREATED="1699051463164" ID="ID_1195414225" MODIFIED="1699051581149" TEXT="und zwar den Queue-Entry selber">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...denn sonst w&#252;rde in jedem Fall der Zugriff komplizierter; zwar handelt es sich um ein Implementierungs-Detail, aber <i>im ScheudlerService selber</i>&#160;darf es durchaus Verkopplung auf die Implementierung geben
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1699051584938" ID="ID_213354892" MODIFIED="1699051595561" TEXT="diesen aus SchedulerInvocation herausziehen"/>
<node CREATED="1699058918297" ID="ID_1882852880" MODIFIED="1699058938154" TEXT="und als Ergebnis der Such/Zugriffsfunktionen"/>
<node CREATED="1699058939126" ID="ID_1931163701" MODIFIED="1699059075327" TEXT="per value und gut is">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Wir sind hier in einem &#187;inline&#171;-Universum, und die wenigen Verwendungen machen entweder direkt die bool-conversion oder speichern die Datenwerte irgendwo auf den Stack. Da is nix &#8222;schwergewichtig&#8220;
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1699059226152" FOLDED="true" ID="ID_517060181" MODIFIED="1699066627672" TEXT="ExecutionCtx neu interpretieren">
<icon BUILTIN="button_ok"/>
<node CREATED="1699059620700" ID="ID_360359127" MODIFIED="1699059642428" TEXT="wird nun zu einem eigenst&#xe4;ndigen Daten-Tupel"/>
<node CREATED="1699059642976" ID="ID_1502497255" MODIFIED="1699059660298" TEXT="enth&#xe4;lt eine Scheduler-Referenz, sowie die Kontext-Daten">
<node CREATED="1699059662146" ID="ID_397956314" MODIFIED="1699059688494" TEXT="starting"/>
<node CREATED="1699059689052" ID="ID_841331806" MODIFIED="1699059690848" TEXT="deadline"/>
<node CREATED="1699059691450" ID="ID_656170104" MODIFIED="1699059693797" TEXT="manifestation"/>
<node CREATED="1699059694322" ID="ID_1944612474" MODIFIED="1699059702249" TEXT="isCompulsory"/>
</node>
<node CREATED="1699064095814" ID="ID_1608237175" MODIFIED="1699066731683" TEXT="naheliegend: er bettet das ActivationEvent direkt ein">
<arrowlink COLOR="#2f51c8" DESTINATION="ID_594270596" ENDARROW="Default" ENDINCLINATION="149;5;" ID="Arrow_ID_969326317" STARTARROW="None" STARTINCLINATION="169;9;"/>
</node>
</node>
<node CREATED="1699064124674" ID="ID_594270596" MODIFIED="1699066733362" STYLE="fork" TEXT="damit gruppieren sich nun pl&#xf6;tzlich alle internen Scheduler-APIs um das ActivationEvent">
<linktarget COLOR="#2f51c8" DESTINATION="ID_594270596" ENDARROW="Default" ENDINCLINATION="149;5;" ID="Arrow_ID_969326317" SOURCE="ID_1608237175" STARTARROW="None" STARTINCLINATION="169;9;"/>
<font NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="idea"/>
</node>
</node>
<node BACKGROUND_COLOR="#fefc4e" COLOR="#351d75" CREATED="1699068256826" ID="ID_660894370" MODIFIED="1699068345021" VSHIFT="15">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      neuer <u>Haupt-Eingang</u>: <font face="Monospaced" color="#a20a15">postChain(ActivationEvent)</font>
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#5184bf" DESTINATION="ID_660894370" ENDARROW="Default" ENDINCLINATION="-622;-30;" ID="Arrow_ID_841520455" SOURCE="ID_1329492790" STARTARROW="None" STARTINCLINATION="1037;52;"/>
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="idea"/>
<node COLOR="#594398" CREATED="1699068463527" ID="ID_82378192" MODIFIED="1699068489999" TEXT="gef&#xfc;hlsm&#xe4;&#xdf;ig... jetzt sortiert sich das Design doch noch">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
<node CREATED="1699068495938" ID="ID_1790197795" MODIFIED="1699068527242" TEXT="das ist ein internes API &#x2014; aber die zentrale Achse"/>
</node>
<node COLOR="#435e98" CREATED="1699313803867" FOLDED="true" HGAP="-20" ID="ID_1032033223" MODIFIED="1699498116473" TEXT="Logik-Fehler: neu geplanter Job steckt fest" VSHIFT="18">
<linktarget COLOR="#1d60f9" DESTINATION="ID_1032033223" ENDARROW="Default" ENDINCLINATION="-973;63;" ID="Arrow_ID_46385590" SOURCE="ID_550874585" STARTARROW="None" STARTINCLINATION="630;-68;"/>
<icon BUILTIN="broken-line"/>
<node CREATED="1699314171601" ID="ID_911884909" MODIFIED="1699314174654" TEXT="Szenario">
<node CREATED="1699314175722" ID="ID_760916314" MODIFIED="1699314218863" TEXT="Render-Job per high-level API eingestellt">
<arrowlink DESTINATION="ID_1964298619" ENDARROW="Default" ENDINCLINATION="27;865;" ID="Arrow_ID_900145073" STARTARROW="Default" STARTINCLINATION="-554;-36;"/>
</node>
<node CREATED="1699314230211" ID="ID_468314180" MODIFIED="1699314238150" TEXT="Scheduler::getWork() aufgerufen"/>
<node CREATED="1699314250040" ID="ID_154801779" MODIFIED="1699314262819" TEXT="liefert: activity::WAIT">
<icon BUILTIN="forward"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1699314283068" ID="ID_1215190474" MODIFIED="1699498113624" TEXT="Problem-Situation">
<icon BUILTIN="info"/>
<node CREATED="1699314331405" ID="ID_601536457" MODIFIED="1699314347447" TEXT="das neue ActivationEvent sitzt noch in der Eingangs-Queue"/>
<node CREATED="1699314348751" ID="ID_786038008" MODIFIED="1699314417293" TEXT="&#x27f9; die pre-Dispatch-Kapazit&#xe4;tssteuerung &#x27fc; idle-WAIT"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1699314450362" ID="ID_1548210369" MODIFIED="1699472717737" TEXT="Problem: solange niemand das Grooming-Token hat, passiert kein feedPrioritisation()">
<icon BUILTIN="clanbomber"/>
<node CREATED="1699314936837" ID="ID_1589318425" MODIFIED="1699315051503" TEXT="die pre-Dispatch-Kapazit&#xe4;tssteuerung will das (bisher) nicht machen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...im Lastbetrieb m&#246;chte man das eigentlich auch nicht: ein ankommender Thread soll gem&#228;&#223; aktueller Situation klassifiziert werden, aber nicht erst mal um das Grooming-Token konkurrieren
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1699315054445" ID="ID_1061745270" MODIFIED="1699315073575" TEXT="diese Situation d&#xfc;rfte im Regelbetrieb nicht auftreten">
<node CREATED="1699315075175" ID="ID_1648796415" MODIFIED="1699315087836" TEXT="denn dort wird aus einem Managment-Job heraus weiter geplant"/>
<node CREATED="1699315088657" ID="ID_696658677" MODIFIED="1699315122019" TEXT="...und ein solcher Managment-Job h&#xe4;lt per Design stets das Grooming-Token"/>
<node CREATED="1699315122844" ID="ID_703845766" MODIFIED="1699315158131" TEXT="deshalb geht postDispatch sofort &#xfc;ber die Abk&#xfc;rzung &#x27f6; Priority-Queue"/>
<node CREATED="1699315163677" ID="ID_1445276544" MODIFIED="1699315495053" TEXT="sp&#xe4;testens der n&#xe4;chste &#xbb;Tick&#xab; w&#xfc;rde ebenfalls feedPrioritisation() aufrufen">
<arrowlink COLOR="#2b2ab6" DESTINATION="ID_1962711320" ENDARROW="Default" ENDINCLINATION="32;-22;" ID="Arrow_ID_747379729" STARTARROW="None" STARTINCLINATION="-224;9;"/>
</node>
<node CREATED="1699315202665" ID="ID_1173720570" MODIFIED="1699315242168" TEXT="au&#xdf;erdem w&#xfc;rde jeder aktive Dispatch das ausl&#xf6;sen"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1699314501904" ID="ID_39607284" MODIFIED="1699472722313" TEXT="das ist eine L&#xfc;cke im Konzept auf Ebene der Komponenten-Integration">
<icon BUILTIN="yes"/>
<node CREATED="1699315440090" ID="ID_1962711320" MODIFIED="1699315495053" TEXT="gem&#xe4;&#xdf; geplantem Nutzen nicht wirklich relevant">
<linktarget COLOR="#2b2ab6" DESTINATION="ID_1962711320" ENDARROW="Default" ENDINCLINATION="32;-22;" ID="Arrow_ID_747379729" SOURCE="ID_1445276544" STARTARROW="None" STARTINCLINATION="-224;9;"/>
<icon BUILTIN="idea"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1699315536045" ID="ID_933385129" MODIFIED="1699325459158" TEXT="stellt aber eine latente Gefahr dar">
<arrowlink COLOR="#751420" DESTINATION="ID_179251569" ENDARROW="Default" ENDINCLINATION="-787;-76;" ID="Arrow_ID_272593119" STARTARROW="None" STARTINCLINATION="1260;101;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#338800" CREATED="1699325057420" ID="ID_1792556883" MODIFIED="1699372417701" TEXT="Hochskalieren mu&#xdf; auch noch eingebaut werden">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ....und das w&#252;rde in dem Fall das Problem durch den ersten &#187;Tick&#171; nebenbei beheben &#8212; aber nicht, falls der Scheduler bereits l&#228;uft und leer gefallen ist
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#373a76" DESTINATION="ID_1435123962" ENDARROW="Default" ENDINCLINATION="304;54;" ID="Arrow_ID_928822414" STARTARROW="None" STARTINCLINATION="-255;13;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1699401804396" ID="ID_1620543415" MODIFIED="1699472703173" TEXT="m&#xf6;glichst unauff&#xe4;llig gefixt">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Ich finde dieses Problem ziemlich &#228;rgerlich, und w&#252;rde es am liebsten &#8222;unter den Teppich kehren&#8220;
    </p>
    <p>
      Warum?
    </p>
    <ul>
      <li>
        wie gesagt, im normalen Betrieb wird nebenbei die Eingangsqueue mit bedient
      </li>
      <li>
        wenn man den Scheduler neu startet, l&#228;uft gleich einmal der &#187;Tick&#171; und bedient ebenfalls diese Queue
      </li>
      <li>
        das Problem tritt also nur auf, wenn der Scheduler schon l&#228;uft, aber grade idle f&#228;llt
      </li>
      <li>
        und auch nur dann, wenn man neue Tasks von au&#223;en einstellt, nicht aus einem Management-Job
      </li>
    </ul>
    <p>
      Und &#8212; <i>last but not least </i>&#8212; die L&#246;sung ist h&#228;sslich und redundant; effektiv m&#252;&#223;te der Check in jedem Aufruf der Work-Function laufen, und w&#252;rde auch das Grooming-Token ben&#246;tigen....
    </p>
    <p>
      
    </p>
    <p>
      Aber letztlich:&#160;<font color="#8315ca">&#8623;</font>&#160;<b><font color="#c30665">Augen zu und durch </font></b><font color="#8315ca">&#8623; </font>! So eine Falle darf nicht in der Logik bleiben. Der Scheduler ist so komplex, da&#223; ich jetzt Wochen gebraucht habe, um alle Zusammenh&#228;nge herzustellen, und der Code ist extra mit vielen Abstraktionen so geschrieben, da&#223; man immer alles im Detail verstehen mu&#223;. Eine solche L&#252;cke w&#252;rde das untergraben. Daher baue ich jetzt den Fix unauff&#228;lig in die Kapazit&#228;ts-Behandlung mit ein. Und zwar sowohl <b>pre-Dispatch</b>, alsoauch <b>post-Dispatch</b>&#160;&#8212; denn auch bei letzterem h&#228;tten wir noch die gleiche L&#252;cke (wenn jemand pre-Dispatch das Grooming-Token nicht erlangen kann)
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#4bd448" DESTINATION="ID_1226214188" ENDARROW="Default" ENDINCLINATION="-543;31;" ID="Arrow_ID_1563551910" STARTARROW="None" STARTINCLINATION="-231;0;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1699472727759" ID="ID_675352193" MODIFIED="1699472733833" TEXT="Problem gefixt, Test l&#xe4;uft...">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1697763699242" FOLDED="true" ID="ID_272943268" MODIFIED="1699498130023" TEXT="EngineObserver-Schnittstelle">
<arrowlink COLOR="#4f3156" DESTINATION="ID_1642973256" ENDARROW="Default" ENDINCLINATION="-628;-472;" ID="Arrow_ID_1213898118" STARTARROW="None" STARTINCLINATION="-1771;162;"/>
<icon BUILTIN="hourglass"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1697763821714" ID="ID_1158248288" MODIFIED="1697763853485" TEXT="vorerst nur eine Senke f&#xfc;r die WORKSTART|STOP-Activities">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1698372056954" ID="ID_70592894" MODIFIED="1699413916193" TEXT="&#x3bb;-work einbinden">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1698372095829" ID="ID_259045952" MODIFIED="1699413919539" TEXT="&#x3bb;-done einbinden">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1698533894187" ID="ID_1515660165" MODIFIED="1698534658603" TEXT="Mediator / Listener f&#xfc;r Betriebszust&#xe4;nde">
<linktarget COLOR="#ea5540" DESTINATION="ID_1515660165" ENDARROW="Default" ENDINCLINATION="-1517;105;" ID="Arrow_ID_1696922321" SOURCE="ID_1227874220" STARTARROW="None" STARTINCLINATION="912;-77;"/>
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1698534009356" ID="ID_538756893" MODIFIED="1699402223566" TEXT="Notwendigkeit zeichnet sich nun klar ab">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Habe einige Zeit gez&#246;gert, aber nun werden die Verkn&#252;pfungen definitiv zu vielf&#228;ltig. Also stellt der EngineObserver so etwas wie einen &#187;R&#252;ck-Kanal&#171; bereit. Leider stellen sich hiermit erneut die gesamten (hinl&#228;nglich bekannten) Probleme bez&#252;glich der Dom&#228;ne eines Benachrichtigungs-Systems....
    </p>
    <ul>
      <li>
        Zu welchem Grad legt das System die Kommunikation fest?
      </li>
      <li>
        Wie offen oder verbindlich ist der Kreis der Teilnehmer?
      </li>
      <li>
        Wie stark vorherbestimmt sind die Nachrichten-Inhalte?
      </li>
      <li>
        Wieviel Payload ist notwendig?
      </li>
    </ul>
  </body>
</html></richcontent>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1698534414605" ID="ID_1231576951" MODIFIED="1698534464760" TEXT="mu&#xdf; im Besonderen die Scheduler-Emergency kommunizieren">
<icon BUILTIN="flag-yellow"/>
</node>
<node CREATED="1698544770139" ID="ID_1280127725" MODIFIED="1698544795910" TEXT="k&#xf6;nnte asynchron und demand-driven arbeiten">
<linktarget COLOR="#fefdd9" DESTINATION="ID_1280127725" ENDARROW="Default" ENDINCLINATION="-176;11;" ID="Arrow_ID_187765169" SOURCE="ID_422887207" STARTARROW="None" STARTINCLINATION="-154;-113;"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1699409794378" ID="ID_1067453951" LINK="#ID_1522099049" MODIFIED="1699409857480" TEXT="#1347 EngineObserver">
<icon BUILTIN="hourglass"/>
</node>
</node>
<node COLOR="#338800" CREATED="1699413952330" ID="ID_518717295" LINK="#ID_1307699016" MODIFIED="1699413989310" TEXT="Entwurf f&#xfc;r das Event-publish-API">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1697663918107" ID="ID_210862409" MODIFIED="1699498212543" TEXT="Load-Controller vorsehen">
<linktarget COLOR="#5898af" DESTINATION="ID_210862409" ENDARROW="Default" ENDINCLINATION="-33;645;" ID="Arrow_ID_204955453" SOURCE="ID_1110932778" STARTARROW="None" STARTINCLINATION="250;17;"/>
<linktarget COLOR="#75769b" DESTINATION="ID_210862409" ENDARROW="Default" ENDINCLINATION="-667;72;" ID="Arrow_ID_1800712901" SOURCE="ID_464175339" STARTARROW="None" STARTINCLINATION="-540;37;"/>
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1697808322602" ID="ID_1787549088" MODIFIED="1699498133669" TEXT="Entwickelt sich wohl in Richtung einer Steuerzentrale">
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#544398" CREATED="1698082672886" FOLDED="true" ID="ID_1036009502" MODIFIED="1699498186896" TEXT="bidirektional mit dem Scheduler zu verdrahten">
<linktarget COLOR="#6b597c" DESTINATION="ID_1036009502" ENDARROW="Default" ENDINCLINATION="-219;-13;" ID="Arrow_ID_435126264" SOURCE="ID_1968424043" STARTARROW="None" STARTINCLINATION="-105;193;"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1698083262975" ID="ID_1385142213" MODIFIED="1698083284540" TEXT="bidirektional &#x27f9; Abh&#xe4;ngigkeits-Zyklus aufbrechen">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1698083295483" ID="ID_1606138582" MODIFIED="1698083328186" TEXT="Annahmen f&#xfc;r den Betrieb">
<node CREATED="1698083330598" ID="ID_328457875" MODIFIED="1698083406903" TEXT="nutzlose Indirektionen vermeiden">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1698083351995" ID="ID_1452847242" MODIFIED="1698083404662" TEXT="l&#xe4;uft jedoch nicht auf h&#xf6;chster Performance-Stufe">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1698083371477" ID="ID_1967106906" MODIFIED="1698083396899" TEXT="alle Mutationen implizieren Grooming-Modus">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node COLOR="#338800" CREATED="1698083418163" FOLDED="true" ID="ID_859036076" MODIFIED="1699498183426" TEXT="L&#xf6;sung: Hilfsklasse mit Funktoren">
<icon BUILTIN="button_ok"/>
<node CREATED="1698090000881" ID="ID_713507066" MODIFIED="1698090231201">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      hier k&#246;nnte man <i>named arguments </i>gebrauchen....
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#967b86" DESTINATION="ID_29991404" ENDARROW="Default" ENDINCLINATION="-1293;117;" ID="Arrow_ID_152389560" STARTARROW="None" STARTINCLINATION="-2574;139;"/>
<icon BUILTIN="smily_bad"/>
</node>
<node CREATED="1698090246167" ID="ID_719284884" MODIFIED="1698090309744">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Parametrisierung: maxCapacity = <font face="Monospaced" color="#868686">work::Config::</font><font face="Monospaced" color="#3f2c83">COMPUTATION_CAPACITY</font>
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1698090324855" ID="ID_1784536173" MODIFIED="1698090336812" TEXT="Zugriff auf BlockFlow-Auslastung">
<icon BUILTIN="hourglass"/>
</node>
<node COLOR="#435e98" CREATED="1698090346359" ID="ID_709981296" MODIFIED="1699498179799" TEXT="wie weit treibt man das sinnvollerweise?">
<font NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="help"/>
<node CREATED="1698090381330" ID="ID_1787407613" MODIFIED="1698090452668" TEXT="Grooming-Behandlung hier&#xfc;ber integrieren?">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      schwierige Frage....
    </p>
    <ul>
      <li>
        man w&#252;rde eine subtile Falle vermeiden
      </li>
      <li>
        man w&#252;rde point-and-shot-API bekommen
      </li>
      <li>
        aber eben auch eine ganz starke Kopplung auf Implementierungsdetails
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node CREATED="1699498150275" ID="ID_1029917435" MODIFIED="1699498159661" TEXT="nein: keine Quer-Zugriffe auf die Scheduler-Layer"/>
<node CREATED="1699498160370" ID="ID_437069555" MODIFIED="1699498178187" TEXT="stattdessen, wo n&#xf6;tig, per &#x3bb;-Konfig abstrahieren"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1697808351773" ID="ID_1501083047" MODIFIED="1699498202852" TEXT="Leistungen">
<icon BUILTIN="info"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1697808357389" ID="ID_1714344789" MODIFIED="1697808392696" TEXT="Signal-fusion in gemeinsamen Load-Indikator">
<icon BUILTIN="bell"/>
<node COLOR="#338800" CREATED="1698632383220" FOLDED="true" ID="ID_716182887" MODIFIED="1698808105730" TEXT="Last-Sch&#xe4;tzung entwickeln">
<arrowlink COLOR="#4a5982" DESTINATION="ID_846411589" ENDARROW="Default" ENDINCLINATION="-55;-589;" ID="Arrow_ID_1233923536" STARTARROW="None" STARTINCLINATION="-390;272;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1698632501888" FOLDED="true" ID="ID_334185073" MODIFIED="1698715205196" TEXT="1. Idee : WorkForce::size()">
<linktarget COLOR="#6e8699" DESTINATION="ID_334185073" ENDARROW="Default" ENDINCLINATION="-1040;-85;" ID="Arrow_ID_71466610" SOURCE="ID_489957180" STARTARROW="None" STARTINCLINATION="845;63;"/>
<node CREATED="1698632520658" ID="ID_1308650674" MODIFIED="1698632625312" TEXT="funktioniert so lala">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...weil wir im Moment immer mit Vollast einsteigen und dann zwar im Idle-Fall herunterregeln; letzteres passiert typischerweise aber schnell. Also im Test sehe ich daher immer nur 1.0 oder keine Last
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="smiley-neutral"/>
</node>
<node CREATED="1698632626540" ID="ID_1025237859" MODIFIED="1698632714226" TEXT="k&#xf6;nnte trotzdem brauchbar sein">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...das kann aber erst beurteilt werden, wenn wir echte Last-Szenarien kennen. Denkbar w&#228;re, da&#223; z.B. ein real-Time Render in etwa mit 3 Cores &#252;ber die Runden kommt
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1698632716069" ID="ID_348864601" MODIFIED="1698632819292" TEXT="sollte trotzdem mit einem Situations-Faktor erg&#xe4;nzen">
<arrowlink COLOR="#ce6c70" DESTINATION="ID_167635013" ENDARROW="Default" ENDINCLINATION="14;-26;" ID="Arrow_ID_1543325365" STARTARROW="None" STARTINCLINATION="-53;3;"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1698632730462" FOLDED="true" ID="ID_167635013" MODIFIED="1698715199604" TEXT="2. Idee : den Lag auswerten">
<linktarget COLOR="#ce6c70" DESTINATION="ID_167635013" ENDARROW="Default" ENDINCLINATION="14;-26;" ID="Arrow_ID_1543325365" SOURCE="ID_348864601" STARTARROW="None" STARTINCLINATION="-53;3;"/>
<linktarget COLOR="#6175b8" DESTINATION="ID_167635013" ENDARROW="Default" ENDINCLINATION="-328;32;" ID="Arrow_ID_1089789147" SOURCE="ID_377144590" STARTARROW="None" STARTINCLINATION="33;-106;"/>
<linktarget COLOR="#7c80aa" DESTINATION="ID_167635013" ENDARROW="Default" ENDINCLINATION="-391;40;" ID="Arrow_ID_1724998789" SOURCE="ID_1555893915" STARTARROW="None" STARTINCLINATION="-411;-14;"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1698632823807" ID="ID_1604616715" MODIFIED="1698702752645" TEXT="das ist aber gar nicht so einfach">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <ul>
      <li>
        erst einmal schon kommt man an den Wert nicht ohne Weiteres ran: das verdammte Ding l&#228;uft n&#228;mlich concurrent. Und ist performance-kritischer Code
      </li>
      <li>
        und dann ist noch gar nicht klar, was dieser Wert &#252;berhaupt aussagt, abgesehen von &quot;total &#252;berlastet&quot;
      </li>
      <li>
        was ich br&#228;uchte w&#228;re auch ein D&#228;mpfungs-Faktor und ein Bezugspunkt
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#435e98" CREATED="1698632941116" FOLDED="true" ID="ID_1797377910" MODIFIED="1698633204991" TEXT="kommt man irgendwie an Werte pro Worker heran?">
<icon BUILTIN="help"/>
<node CREATED="1698632978397" ID="ID_1774631238" MODIFIED="1698632990815" TEXT="im Worker speichern scheide ich sofort aus (Architektur)"/>
<node CREATED="1698632992259" ID="ID_1128001448" MODIFIED="1698633006765" TEXT="mit Thread-Locals will ich schon gleich gar nicht anfangen"/>
<node COLOR="#5b280f" CREATED="1698633008161" ID="ID_703887522" MODIFIED="1698633035478" TEXT="elaborierte Datenstrukturen im LoadController? Nein Danke">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1698633049644" ID="ID_1254753270" MODIFIED="1698633075883" TEXT="Ha! als Statistik &#xfc;ber die Kapazit&#xe4;ts-Events deuten">
<icon BUILTIN="idea"/>
<node CREATED="1698633119346" ID="ID_1740993128" MODIFIED="1698633145978" TEXT="die incomingCapacity kann als &#xbb;Sampling&#xab; gedeutet werden"/>
<node CREATED="1698633157229" ID="ID_980744225" MODIFIED="1698633168585" TEXT="jedes &#xbb;Sample&#xab; m&#xfc;&#xdf;te die Situation einsch&#xe4;tzen"/>
<node CREATED="1698633186745" ID="ID_1822633925" MODIFIED="1698633194284" TEXT="dar&#xfc;ber dann ein moving-Average"/>
</node>
</node>
<node COLOR="#338800" CREATED="1698633206582" FOLDED="true" ID="ID_1221695664" MODIFIED="1698711102459" TEXT="moving-Average in concurrent environment">
<icon BUILTIN="button_ok"/>
<node CREATED="1698633226641" ID="ID_1247903339" MODIFIED="1698633242622" TEXT="die &#xbb;capacity events&#xab; sind wirklich zuf&#xe4;llig"/>
<node CREATED="1698633248600" ID="ID_1947820475" MODIFIED="1698633269818" TEXT="Grooming-Token kommt nicht in Frage, Locking sowiso nicht"/>
<node COLOR="#5b280f" CREATED="1698633270718" ID="ID_1128407195" MODIFIED="1698702657581" TEXT="als fortlaufendes Produkt mit einem Atomic berechnen">
<arrowlink COLOR="#ef3052" DESTINATION="ID_1504851010" ENDARROW="Default" ENDINCLINATION="-204;13;" ID="Arrow_ID_339066446" STARTARROW="None" STARTINCLINATION="81;212;"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1698633317512" ID="ID_1161198928" MODIFIED="1698633425867" TEXT="Moving-Average l&#xe4;&#xdf;t sich in Faktoren-Form bringen">
<linktarget COLOR="#757ecb" DESTINATION="ID_1161198928" ENDARROW="Default" ENDINCLINATION="1079;62;" ID="Arrow_ID_29993738" SOURCE="ID_649514706" STARTARROW="None" STARTINCLINATION="760;42;"/>
<node CREATED="1698633491729" HGAP="44" ID="ID_1503820730" MODIFIED="1698633786583" TEXT="mu&#xdf; dazu aber aktuelles MA herausdividieren" VSHIFT="-6">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      <u>&#160;Exponential MA</u>:
    </p>
    <p>
      Grundidee ist, da&#223; man nach N Schritten nicht den exakten alten Wert abzieht (wie f&#252;r lineares MA), sondern diesen durch den aktuellen MA ersetzt/absch&#228;tzt. Das hei&#223;t, wir berechnen ein gewichtetes Mittel mit (N-1) mal dem aktuellen MA, und 1/N mal dem neuen Beitrag
    </p>
    <p>
      &#160;mean &#8788; mean &#183; (N-1)/N&#160;&#160;+ newVal/N
    </p>
    <p>
      &#10233; das l&#228;&#223;t sich in einen Faktor verwandeln, wenn man den neuen Beitrag relativ zum aktuellen MA setzt
    </p>
    <p>
      &#160;mean &#8788; mean&#160;&#183; 1/N &#183; ( N-1&#160;&#160;+ newVal/mean)
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1698633459189" HGAP="44" ID="ID_465609411" MODIFIED="1698633548963" TEXT="siehe BlockFlow::markEpochUnderflow()" VSHIFT="-13"/>
</node>
<node CREATED="1698633300801" ID="ID_614548490" MODIFIED="1698633874064" TEXT="Grundidee: &#xbb;eventual consistency&#xab;">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Bei einem moving-Average interessiert es uns eigentlich nicht, <i>wann genau </i>der Wert gilt und <i>f&#252;r wen </i>er gilt. Es interessiert uns nur, was am Ende rausgekommen ist, bzw. wie der Trend im Moment so ist
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1698633875244" ID="ID_202660501" MODIFIED="1698633929103">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      wir ziehen das aktuelle MA &#187;jetzt&#171;
    </p>
    <p>
      aber wir rechnen den sich ergebenden Faktor
    </p>
    <p>
      &#187;irgendwann eventuell&#171; in das MA ein
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node COLOR="#5b280f" CREATED="1698633939212" ID="ID_1007287132" MODIFIED="1698635722966">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      und <i>das </i>l&#228;&#223;t sich mit <b>zwei </b>Atomic-Operationen realisieren
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_cancel"/>
<node CREATED="1698635724493" ID="ID_1504851010" MODIFIED="1698702651541" TEXT="Nein! es gibt keine atomare Multiplikation">
<linktarget COLOR="#ef3052" DESTINATION="ID_1504851010" ENDARROW="Default" ENDINCLINATION="-204;13;" ID="Arrow_ID_339066446" SOURCE="ID_1128407195" STARTARROW="None" STARTINCLINATION="81;212;"/>
<icon BUILTIN="stop-sign"/>
</node>
<node CREATED="1698702601241" ID="ID_987600121" MODIFIED="1698702624304" TEXT="(w&#xe4;re auch nicht wirklich sinnvoll...)">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      wenn man auch nur ansatzweise bedenkt, wie Assembly funktioniert
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1698635745173" ID="ID_509243439" MODIFIED="1698702739866" TEXT="damit mu&#xdf; ich doch die compare-exchange-Schleife machen">
<arrowlink COLOR="#4b5f99" DESTINATION="ID_995319675" ENDARROW="Default" ENDINCLINATION="311;-25;" ID="Arrow_ID_1824704831" STARTARROW="None" STARTINCLINATION="-347;17;"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1698702687206" ID="ID_995319675" MODIFIED="1698702733706" TEXT="dann optimistic-compare-exchange">
<linktarget COLOR="#4b5f99" DESTINATION="ID_995319675" ENDARROW="Default" ENDINCLINATION="311;-25;" ID="Arrow_ID_1824704831" SOURCE="ID_509243439" STARTARROW="None" STARTINCLINATION="-347;17;"/>
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#338800" CREATED="1698633984534" FOLDED="true" ID="ID_526389523" MODIFIED="1698704884755" TEXT="Prototyp-Implementierung in die markIncomingCapcity einh&#xe4;ngen">
<icon BUILTIN="button_ok"/>
<node CREATED="1698635767135" ID="ID_1284337606" MODIFIED="1698635791023" TEXT="erst einmal nur den Offset samplen und beobachten"/>
<node CREATED="1698635791606" ID="ID_1832030937" MODIFIED="1698635805382" TEXT="Berechnung per compare-and-swap"/>
<node CREATED="1698638460422" ID="ID_583392778" MODIFIED="1698638471065" TEXT="Werte sehen plausibel aus"/>
<node COLOR="#435e98" CREATED="1698638471844" FOLDED="true" ID="ID_429172374" MODIFIED="1698679552921" TEXT="wird aber extrem h&#xe4;ufig aufgerufen &#x2014; warum?">
<arrowlink COLOR="#ab2254" DESTINATION="ID_1087870120" ENDARROW="Default" ENDINCLINATION="-356;12;" ID="Arrow_ID_187678307" STARTARROW="None" STARTINCLINATION="215;13;"/>
<icon BUILTIN="broken-line"/>
<node COLOR="#5b280f" CREATED="1698638515487" ID="ID_847572680" MODIFIED="1698677275734" TEXT="sitzt in einem Poll-Zyklus?!">
<icon BUILTIN="button_cancel"/>
<node CREATED="1698677277552" ID="ID_1317926717" MODIFIED="1698677278981" TEXT="Nein"/>
<node CREATED="1698677279614" ID="ID_1709786106" MODIFIED="1698677300582" TEXT="Klassifikation mit ausgegeben; SPINTIME ist selten"/>
</node>
<node COLOR="#435e98" CREATED="1698677306748" ID="ID_866077855" MODIFIED="1698678768055" TEXT="es sind zu viele Aufrufe mit Klassifikation == DISPATCH">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1698677690883" ID="ID_351118530" MODIFIED="1698677705290" TEXT="nimmt zu bei detailierterm Output"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1698677705883" ID="ID_71450734" MODIFIED="1698678751844" TEXT="Verdacht: Lock contention">
<linktarget COLOR="#43a3ba" DESTINATION="ID_71450734" ENDARROW="Default" ENDINCLINATION="-8;32;" ID="Arrow_ID_556655771" SOURCE="ID_1104620236" STARTARROW="None" STARTINCLINATION="-1;-9;"/>
<icon BUILTIN="broken-line"/>
</node>
<node COLOR="#435e98" CREATED="1698678080681" ID="ID_1138703507" MODIFIED="1698678762618" TEXT="&#xfc;berpr&#xfc;fen(DUMP)....">
<node CREATED="1698678090842" ID="ID_221981224" MODIFIED="1698678094141" TEXT="einfacher output">
<node CREATED="1698678125933" ID="ID_1177337579" MODIFIED="1698678140448" TEXT="grooming: 361"/>
<node CREATED="1698678205643" ID="ID_1365668352" MODIFIED="1698678227494" TEXT="contended: 1720"/>
<node CREATED="1698678319162" ID="ID_980416022" MODIFIED="1698678329041" TEXT="non-grooming: 16"/>
</node>
<node CREATED="1698678459400" ID="ID_1353160812" MODIFIED="1698678463900" TEXT="komplexer output">
<node CREATED="1698678465823" ID="ID_1714537466" MODIFIED="1698678471771" TEXT="grooming: 368"/>
<node CREATED="1698678485269" ID="ID_1234538576" MODIFIED="1698678492959" TEXT="contended: 5268"/>
<node CREATED="1698678520977" ID="ID_324309059" MODIFIED="1698678558911" TEXT="non-grooming: 12"/>
</node>
</node>
<node COLOR="#338800" CREATED="1698678562723" ID="ID_1104620236" MODIFIED="1698678757099" TEXT="Verdacht best&#xe4;tigt">
<arrowlink COLOR="#43a3ba" DESTINATION="ID_71450734" ENDARROW="Default" ENDINCLINATION="-8;32;" ID="Arrow_ID_556655771" STARTARROW="None" STARTINCLINATION="-1;-9;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1698678620043" ID="ID_1446446292" MODIFIED="1698678637051" TEXT="w&#xe4;hrend der Grooming-holder mit Output besch&#xe4;ftigt ist..."/>
<node CREATED="1698678638145" ID="ID_1087870120" MODIFIED="1698679544330" TEXT="...werden andere Threads als DISPATCH klassifiziert und gehen in spinning-wait">
<linktarget COLOR="#ab2254" DESTINATION="ID_1087870120" ENDARROW="Default" ENDINCLINATION="-356;12;" ID="Arrow_ID_187678307" SOURCE="ID_429172374" STARTARROW="None" STARTINCLINATION="215;13;"/>
</node>
</node>
</node>
<node CREATED="1698679142813" ID="ID_976863690" MODIFIED="1698679152908" TEXT="auch mal direkt mitz&#xe4;hlen (atomic)">
<node CREATED="1698679154779" ID="ID_904886528" MODIFIED="1698679171128" TEXT="ohne output: 1340 Aufrufe in ~60ms">
<node CREATED="1698679469920" ID="ID_1610453198" MODIFIED="1698679474557" TEXT="erscheint OK"/>
<node CREATED="1698679475241" ID="ID_1243726905" MODIFIED="1698679486283" TEXT="~ 2.5 Aufrufe in 100&#xb5;s"/>
</node>
<node CREATED="1698679203240" ID="ID_492331251" MODIFIED="1698679431523" TEXT="mit output: 6000 - 9000 Aufrufe">
<node CREATED="1698679432351" ID="ID_1890029359" MODIFIED="1698679436216" TEXT="schwankt stark"/>
<node CREATED="1698679436734" ID="ID_1277950065" MODIFIED="1698679446975" TEXT="h&#xe4;ngt nicht von Komplexit&#xe4;t des Output ab"/>
</node>
</node>
</node>
<node CREATED="1698680053860" ID="ID_1477905589" MODIFIED="1698680311278">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <b>Microbenchmark</b>&#160;der Me&#223;-Funktion
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
<node CREATED="1698680080248" ID="ID_1604376595" MODIFIED="1698680100226" TEXT="100&apos;000 Iterationen (pro thread)"/>
<node CREATED="1698680071746" ID="ID_1915767027" MODIFIED="1698680266483" TEXT="single-threaded: 120ns"/>
<node CREATED="1698680116412" ID="ID_1012490645" MODIFIED="1698680136077" TEXT="7-threads-contending: 4.5&#xb5;s"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1698702792264" ID="ID_803243904" MODIFIED="1698702815999" TEXT="Verlauf sieht im Test sinnvoll aus">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1698702824964" FOLDED="true" ID="ID_28379545" MODIFIED="1698715179796" TEXT="Last-Sch&#xe4;tzung aus Parallel-Load und Lag">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1698702851630" ID="ID_936369816" MODIFIED="1698702859151" TEXT="vorl&#xe4;ufige Implementierung">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1698711855235" ID="ID_855137031" LINK="#ID_945067314" MODIFIED="1698711885087" TEXT="Smoothing-Faktor &#x3b1; geeignet w&#xe4;hlen">
<node CREATED="1699235598157" ID="ID_1960905627" MODIFIED="1699235625205" TEXT="alpha = LAG_SAMPLE_DAMPING / (1 + wiring_.maxCapacity)">
<font NAME="Monospaced" SIZE="12"/>
</node>
</node>
<node COLOR="#338800" CREATED="1698702859767" ID="ID_1863816756" MODIFIED="1698715174255" TEXT="Berechnung per Einzeltest abdecken">
<arrowlink COLOR="#6a9eb2" DESTINATION="ID_1985241613" ENDARROW="Default" ENDINCLINATION="1958;-153;" ID="Arrow_ID_13582151" STARTARROW="None" STARTINCLINATION="598;41;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1697808402431" ID="ID_1499932709" MODIFIED="1698715221160" TEXT="beobachtet / wei&#xdf; von der WorkForce-St&#xe4;rke">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1698715222158" ID="ID_1634688486" MODIFIED="1698715238526" TEXT="realisiert per function-binding">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1698715228810" ID="ID_404234345" MODIFIED="1698715283830" TEXT="im Scheduler verdrahtet">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      <font face="Monospaced" color="#372493">Scheduler::connectMonitoring()</font>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1698544547801" ID="ID_1011726550" MODIFIED="1698808129018" TEXT="regelm&#xe4;&#xdf;ige Integration / state fusion">
<linktarget COLOR="#9e4279" DESTINATION="ID_1011726550" ENDARROW="Default" ENDINCLINATION="235;181;" ID="Arrow_ID_1299019434" SOURCE="ID_897465919" STARTARROW="None" STARTINCLINATION="425;-47;"/>
<icon BUILTIN="hourglass"/>
<node CREATED="1698544656547" ID="ID_422887207" MODIFIED="1698544802405" TEXT="l&#xe4;uft (nur) im Tick &#x2014; k&#xf6;nnte daher Statistiken vom EngineObserver beziehen">
<arrowlink COLOR="#fefdd9" DESTINATION="ID_1280127725" ENDARROW="Default" ENDINCLINATION="-176;11;" ID="Arrow_ID_187765169" STARTARROW="None" STARTINCLINATION="-154;-113;"/>
<font NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1698524123493" HGAP="7" ID="ID_3688190" MODIFIED="1699245904190" TEXT="Code-Anordnung festlegen" VSHIFT="5">
<linktarget COLOR="#f5dffd" DESTINATION="ID_3688190" ENDARROW="Default" ENDINCLINATION="-410;-597;" ID="Arrow_ID_1041094005" SOURCE="ID_788545423" STARTARROW="None" STARTINCLINATION="-664;318;"/>
<icon BUILTIN="hourglass"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1698524143083" ID="ID_1366033191" MODIFIED="1698524154797" TEXT="Speicher-Ort f&#xfc;r eine Service-Instanz">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1698524306749" ID="ID_1799403064" MODIFIED="1698524324027" TEXT="&#xdc;berleung: wie wird der Scheduler eingebunden?">
<font NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="help"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1698524326034" ID="ID_201292772" MODIFIED="1698524354932" TEXT="ggfs free-Function f&#xfc;r start/stop des Services vorsehen">
<icon BUILTIN="idea"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1698524155785" ID="ID_1023938528" MODIFIED="1698524182958" TEXT="dem ensprechend den Implementierungs-Code festlegen">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1698524184757" ID="ID_1803872905" MODIFIED="1698524211085" TEXT="nur wenig Code mu&#xdf; wirklich im Header stehen"/>
<node CREATED="1698524211841" ID="ID_851232758" MODIFIED="1698524300237" TEXT="der Konstruktor-Aufruf emittiert den Kern-Block">
<icon BUILTIN="idea"/>
<node CREATED="1698524251268" ID="ID_327974056" MODIFIED="1698524259015" TEXT="Setup + Verdrahtung"/>
<node CREATED="1698524260075" ID="ID_782075307" MODIFIED="1698524265415" TEXT="WorkForce-Konstruktor"/>
<node CREATED="1698524270265" ID="ID_241115804" MODIFIED="1698524284940" TEXT="bindet work::Worker-Implementierung"/>
<node CREATED="1698524289134" ID="ID_624223134" MODIFIED="1698524295738" TEXT="diese inlined die Scheduler-Internals"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1699245952137" ID="ID_1391908403" MODIFIED="1699245964386" TEXT="Job-Definition (Builder) ber&#xfc;cksichtigen">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1699245966828" ID="ID_1446058222" MODIFIED="1699245979843" TEXT="der ist im API-Header definiert">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1699245983155" ID="ID_1339797501" MODIFIED="1699245999081" TEXT="braucht aber Zugang zur Implementierung">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1693172069235" ID="ID_1573845677" MODIFIED="1697675305351" TEXT="Layer-1: SchedulerInvocation"/>
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1693172074855" ID="ID_101356551" MODIFIED="1697675305350" TEXT="Layer-2: SchedulerCommutator"/>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1687737433506" ID="ID_1608121280" MODIFIED="1687737442698" TEXT="einfacher Activity-Transport">
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1697933690995" ID="ID_872890784" MODIFIED="1697933814964" TEXT="elementare Betriebssteuerung">
<linktarget COLOR="#ff4e63" DESTINATION="ID_872890784" ENDARROW="Default" ENDINCLINATION="-1829;161;" ID="Arrow_ID_1982313538" SOURCE="ID_1583501788" STARTARROW="None" STARTINCLINATION="-1150;-47;"/>
<icon BUILTIN="flag-pink"/>
<node CREATED="1697933830568" ID="ID_425307167" MODIFIED="1697933841004" TEXT="Anforderung">
<icon BUILTIN="yes"/>
<node COLOR="#435e98" CREATED="1697933847838" FOLDED="true" ID="ID_52485323" MODIFIED="1698592287031" TEXT="wenn Activities anstehen, mu&#xdf; der Scheduler laufen">
<node CREATED="1697935493785" ID="ID_1808648428" MODIFIED="1697935513050" TEXT="der initiale Z&#xfc;nd-Impuls daf&#xfc;r mu&#xdf; von au&#xdf;en kommen"/>
<node CREATED="1697935584350" ID="ID_1788226279" MODIFIED="1697935603608" TEXT="sobald er l&#xe4;uft, mu&#xdf; er auch seinen eigenen &#xbb;Tick&#xab; aktivieren"/>
</node>
<node COLOR="#435e98" CREATED="1697934020751" FOLDED="true" ID="ID_1139695361" MODIFIED="1698592302604" TEXT="wenn nichts mehr passiert, kann er sich deaktivieren">
<node COLOR="#338800" CREATED="1697935611257" ID="ID_436115424" MODIFIED="1698591797688" TEXT="zun&#xe4;chst werden die Worker schlafen geschickt">
<icon BUILTIN="button_ok"/>
<node CREATED="1697935685080" ID="ID_1125666331" MODIFIED="1698079245795" TEXT="Vorsicht: vorausschauend handeln">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1697935701613" ID="ID_601914515" MODIFIED="1697935798105" TEXT="der Schlaf-Zyklus soll relativ lang sein">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      um das System nicht unn&#246;tig zu belasten
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1697935831136" ID="ID_328104821" MODIFIED="1698591669794" TEXT="polling workers stellen aber selbst eine Belastung dar">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1697938335223" ID="ID_490005829" MODIFIED="1697938354584" TEXT="und zwar wegen Contention und generellen OS-Resourcen"/>
<node CREATED="1697938355148" ID="ID_1006912313" MODIFIED="1697938372181" TEXT="aber nicht kurzzeitig &#x2014; daf&#xfc;r sind die Worker ja da"/>
<node CREATED="1698591580181" ID="ID_1995552985" MODIFIED="1698591724502">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      bedeutet &#10233; ein <i>momentan </i>nicht ben&#246;tigter Worker <font color="#161699">darf duchaus mal 200&#181;s schlafen</font>
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#949caf" DESTINATION="ID_1878267826" ENDARROW="Default" ENDINCLINATION="27;-65;" ID="Arrow_ID_150643318" STARTARROW="None" STARTINCLINATION="-182;6;"/>
</node>
</node>
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1697935894004" ID="ID_1878267826" MODIFIED="1698591764257" TEXT="&#x27f9; kann also eine &#xbb;gezielte Verz&#xf6;gerung&#xab; einbauen">
<linktarget COLOR="#949caf" DESTINATION="ID_1878267826" ENDARROW="Default" ENDINCLINATION="27;-65;" ID="Arrow_ID_150643318" SOURCE="ID_1995552985" STARTARROW="None" STARTINCLINATION="-182;6;"/>
<node COLOR="#435e98" CREATED="1697938430466" ID="ID_1280875799" MODIFIED="1698591781723" TEXT="Stufen-Schema">
<linktarget COLOR="#7f95ab" DESTINATION="ID_1280875799" ENDARROW="Default" ENDINCLINATION="10;121;" ID="Arrow_ID_1356077365" SOURCE="ID_1342732339" STARTARROW="None" STARTINCLINATION="284;21;"/>
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="list"/>
<node CREATED="1697938486782" ID="ID_1684596361" MODIFIED="1697938500100" TEXT="kurzfristig &#x27f6; yield-wait"/>
<node CREATED="1697938912817" ID="ID_1435841099" MODIFIED="1697938952106" TEXT="zeitnah &#x27f6; gezielte Pause">
<node CREATED="1697939077160" ID="ID_1342346924" MODIFIED="1697939096276" TEXT="ein Thread-sleep in der Work-Function"/>
<node CREATED="1697939104567" ID="ID_1909227046" MODIFIED="1697939121793" TEXT="auf kurz hinter die n&#xe4;chste Activity geimed"/>
</node>
<node CREATED="1697939007756" ID="ID_1814410393" MODIFIED="1697939068200" TEXT="idle-Time &#x27f6; schlafen schicken"/>
</node>
<node CREATED="1698079285650" ID="ID_1194794962" MODIFIED="1698591930089" TEXT="freie Kapazit&#xe4;t &#x201e;flie&#xdf;t&#x201c;">
<arrowlink COLOR="#6e86a3" DESTINATION="ID_1003033592" ENDARROW="Default" ENDINCLINATION="269;-465;" ID="Arrow_ID_17847755" STARTARROW="None" STARTINCLINATION="-268;33;"/>
<node CREATED="1698079326197" ID="ID_1517718994" MODIFIED="1698079334136" TEXT="ein Teil setzt sich ab"/>
<node CREATED="1698079334681" ID="ID_1880078243" MODIFIED="1698079345414" TEXT="aber auch von den Schl&#xe4;fern gibt es einen R&#xfc;ckstrom"/>
<node CREATED="1698079346272" ID="ID_1708377480" MODIFIED="1698079371100" TEXT="Konzentration je nach Arbeitsdichte"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1697935657451" ID="ID_1200603474" MODIFIED="1698592239675" TEXT="diese beenden sich dann nach einiger Zeit von selbst">
<icon BUILTIN="button_ok"/>
<node CREATED="1697936056094" ID="ID_1569058603" MODIFIED="1697936822180" TEXT="Scheduler mu&#xdf; daf&#xfc;r sorgen, da&#xdf; das auch m&#xf6;glich wird">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Das bedeutet: bei nur vereinzelt vorhandenen Tasks d&#252;rfen diese nicht zuf&#228;llig verteilt werden (sonst bleiben alle Worker am Leben). Vielmehr mu&#223; bevorzugt derjenige den n&#228;chsten Task bekommen, der ohnehin<i>&#160; grade gearbeitet hat</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1697936111527" ID="ID_1844164309" MODIFIED="1697941569266" TEXT="&#x27f9; mu&#xdf; also einen &#xbb;Idler&#xab; anders behandeln als einen grade aktiven Worker">
<linktarget COLOR="#6463c4" DESTINATION="ID_1844164309" ENDARROW="Default" ENDINCLINATION="-359;14;" ID="Arrow_ID_1762094389" SOURCE="ID_387348315" STARTARROW="None" STARTINCLINATION="12;-45;"/>
<node CREATED="1697936891271" ID="ID_816798666" MODIFIED="1697939174942">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Idler: findet <i>direkt beim Eintritt</i>&#160;in pullWork() nichts zu tun vor
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1697936959055" ID="ID_687912678" MODIFIED="1697939181596">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Worker: findet <i>nach </i>einem Work-Zyklus nichts zu tun vor
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1697936154433" ID="ID_1597069116" MODIFIED="1698592272887" TEXT="schlie&#xdf;lich bleibt nur noch der Tick &#xfc;brig">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1697936179454" ID="ID_446529044" MODIFIED="1698592226617" TEXT="der Tick mu&#xdf; erkennen, da&#xdf; allein auf der Welt ist">
<arrowlink COLOR="#4885aa" DESTINATION="ID_191013179" ENDARROW="Default" ENDINCLINATION="-9;-192;" ID="Arrow_ID_1602192304" STARTARROW="None" STARTINCLINATION="169;410;"/>
<icon BUILTIN="yes"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1697936205251" ID="ID_131464995" MODIFIED="1698591975161" TEXT="das ist so nicht offensichtlich">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1697936244473" ID="ID_671338782" MODIFIED="1697936373448" TEXT="der Tick kann feststellen, da&#xdf; nur er selber als n&#xe4;chstes ansteht">
<arrowlink COLOR="#fffcc5" DESTINATION="ID_486995126" ENDARROW="Default" ENDINCLINATION="579;-95;" ID="Arrow_ID_1801107947" STARTARROW="None" STARTINCLINATION="292;11;"/>
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1698592246469" ID="ID_521847725" MODIFIED="1698592271417">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      wenn sich der Tick nicht mehr erneuert,
    </p>
    <p>
      ist der Scheduler stehen geblieben
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1697935467508" FOLDED="true" ID="ID_370682037" MODIFIED="1698808176629" TEXT="Reserve-Kapazit&#xe4;t bei Bedarf aktivieren">
<node CREATED="1697937331101" ID="ID_834796842" MODIFIED="1697938265914" TEXT="Scheduler mu&#xdf; (im Tick) erkennen, da&#xdf; er &#xfc;berlastet ist">
<arrowlink COLOR="#3c7bbb" DESTINATION="ID_250349956" ENDARROW="Default" ENDINCLINATION="15;-74;" ID="Arrow_ID_776284276" STARTARROW="None" STARTINCLINATION="190;10;"/>
</node>
<node CREATED="1697937401803" ID="ID_377144590" MODIFIED="1697938280621" TEXT="Ansatz: moving-Average &#xfc;ber die Schedule-Verz&#xf6;gerung">
<arrowlink COLOR="#6175b8" DESTINATION="ID_167635013" ENDARROW="Default" ENDINCLINATION="-328;32;" ID="Arrow_ID_1089789147" STARTARROW="None" STARTINCLINATION="33;-106;"/>
<node CREATED="1697937428529" ID="ID_1566747005" MODIFIED="1697937445897" TEXT="feststellbar wenn wir tats&#xe4;chlich einen Dispatch machen"/>
<node CREATED="1697937446741" ID="ID_976027856" MODIFIED="1697937461935" TEXT="um wieviel ist &quot;now&quot; hinter der geplanten Water-Level-Zeit?">
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1697937478170" ID="ID_1099620146" MODIFIED="1697937490843" TEXT="liegen diese Informationen &#xfc;berhaupt vor?">
<icon BUILTIN="help"/>
<node CREATED="1697937571163" ID="ID_1306343127" MODIFIED="1697937694750" TEXT="normalerweise nicht">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...weil der water-level ein internes Implementierungsdetail von Layer-1 ist, und der eigentliche Dispatch mit &quot;now&quot; erfolgt. M&#246;glicherweise hab' ich mich da verrant &#8212; andererseits wollte ich ganz explizit nicht &#252;berall und in jeder Activity auch noch eine Startzeit mitschleppen, sondern habe mich darauf verlegt, diese Information <i>kontextuell zu handhaben</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1697937696156" ID="ID_174871580" MODIFIED="1697937707679" TEXT="aber bei einem POST schon">
<node COLOR="#435e98" CREATED="1697937859072" ID="ID_598148359" MODIFIED="1697938012371" TEXT="redundante Startzeit-Info zahlt sich nun aus">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...und ich hatte k&#252;rzlich noch solche Zweifel ob das Design komplett entgleist, habe mich dann aber entschieden, locker zu lassen
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#5adeb2" DESTINATION="ID_598148359" ENDARROW="Default" ENDINCLINATION="52;-139;" ID="Arrow_ID_155448561" SOURCE="ID_496219214" STARTARROW="None" STARTINCLINATION="638;34;"/>
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1698715901647" ID="ID_1555893915" MODIFIED="1698716011601" TEXT="anderer Ansatz: gesampelter Lag">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...diesen beobachten wir nun ohnehin, um einen Load-Indicator zu synthetisieren. Und zwar per moving-Average; neue sample-Werte werden concurrency-safe eingearbeitet, immer wenn ein Worker nach weiterer Arbeit fragt
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#7c80aa" DESTINATION="ID_167635013" ENDARROW="Default" ENDINCLINATION="-391;40;" ID="Arrow_ID_1724998789" STARTARROW="None" STARTINCLINATION="-411;-14;"/>
<icon BUILTIN="idea"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697938044605" ID="ID_230946166" MODIFIED="1697938065691" TEXT="geeigneten Punkt f&#xfc;r diese Beobachtung finden">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node CREATED="1697938180363" ID="ID_250349956" MODIFIED="1697938258083" TEXT="Trigger/Schwellwert + freie Kapazit&#xe4;t &#x27f9; hochfahren">
<linktarget COLOR="#3c7bbb" DESTINATION="ID_250349956" ENDARROW="Default" ENDINCLINATION="15;-74;" ID="Arrow_ID_776284276" SOURCE="ID_834796842" STARTARROW="None" STARTINCLINATION="190;10;"/>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1697939318387" ID="ID_19803713" MODIFIED="1697939337745" TEXT="Gefahr: alle Worker zwar aktivert aber derzeit schlafend">
<icon BUILTIN="clanbomber"/>
<node CREATED="1697939343479" ID="ID_1211423451" MODIFIED="1697939452988" TEXT="&#x27f9; dann w&#xe4;re das System ohne Handlungsm&#xf6;glichkeit zeitweise geblockt"/>
<node CREATED="1697942238583" ID="ID_939651320" MODIFIED="1697942253202" TEXT="Abhilfe">
<icon BUILTIN="yes"/>
<node CREATED="1697942254924" ID="ID_112390329" MODIFIED="1697979569952" TEXT="Warte-Zyklen zuf&#xe4;llig verteilen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      damit im Schnitt jedes 1/Nte - Warte-Intervall sich ein Worker meldet
    </p>
  </body>
</html></richcontent>
<node CREATED="1697979636585" ID="ID_860834763" MODIFIED="1697979662307" TEXT="die Startpunkte der Idle-Zyklen auf die Idle-Periode verteilen"/>
<node CREATED="1697979662919" ID="ID_1977764043" MODIFIED="1697979714012" TEXT="aber analog auch warte-Pausen auf die zeitnah-Phase verteilen"/>
</node>
<node CREATED="1697942340409" ID="ID_483764419" MODIFIED="1697942351380" TEXT="mit hinreichend Puffer l&#xe4;ngerfristig vorplanen"/>
<node CREATED="1697942899578" ID="ID_1831185639" MODIFIED="1697942954171" TEXT="zeitnah-Phase sinnvoll bemessen">
<node CREATED="1697943207013" ID="ID_461693614" MODIFIED="1697943398859" TEXT="nur h&#xf6;chstens so lang wie man problemlos verschwenden kann">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      denn: innerhalb der zeitnah-Phase wird jeder verf&#252;gbare worker per gezieltem Schlaf auf die n&#228;chste headTime gesetzt, und damit ist er bis dahin geblockt. Also sollte es extrem unwahrscheinlich sein, da&#223; inzwischen so kurzfristig noch was dazwischen geplant wird
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1697943528922" ID="ID_1864150010" MODIFIED="1697943563874" TEXT="aber lang genug um kurzfristiges Polling, re-Scheduliing und Staffelungen abzudecken"/>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1697979975717" ID="ID_1427794703" MODIFIED="1697980022395" TEXT="falls das nicht gen&#xfc;gt &#x27f6; den idle-Wait unterbrechbar machen">
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#c8c0b6" CREATED="1698591834291" ID="ID_1003033592" MODIFIED="1698591949478" STYLE="bubble" TEXT="Freie Kapazit&#xe4;t &#xbb;flie&#xdf;t&#xab;">
<linktarget COLOR="#6e86a3" DESTINATION="ID_1003033592" ENDARROW="Default" ENDINCLINATION="269;-465;" ID="Arrow_ID_17847755" SOURCE="ID_1194794962" STARTARROW="None" STARTINCLINATION="-268;33;"/>
<font NAME="SansSerif" SIZE="16"/>
</node>
</node>
<node COLOR="#338800" CREATED="1697940307771" ID="ID_844059029" MODIFIED="1698808226960" TEXT="Regulierungs-Schema (1.Wurf)">
<icon BUILTIN="button_ok"/>
<node CREATED="1697940394533" FOLDED="true" ID="ID_785288479" MODIFIED="1698808255393" TEXT="Kriterium &#xbb;nichts zu tun&#xab;">
<node CREATED="1697940405507" ID="ID_994386789" MODIFIED="1697940450809" TEXT="hierzu den Abstand zur headTime beachten!"/>
<node COLOR="#435e98" CREATED="1697941259810" ID="ID_1031482347" MODIFIED="1698808159628" TEXT="den &#xbb;tended level&#xab; merken">
<icon BUILTIN="idea"/>
<node CREATED="1697941294460" ID="ID_203013250" MODIFIED="1697941353814" TEXT="einen working Worker auf die headTime zielen"/>
<node CREATED="1697941360345" ID="ID_91924483" MODIFIED="1697941370127" TEXT="dieser ist damit schon f&#xfc;r den n&#xe4;chsten Task vorgemerkt"/>
<node CREATED="1697941370860" ID="ID_30634920" MODIFIED="1697941385461" TEXT="dann kann der tendedLevel dorthin gesetzt werden"/>
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1697980065968" ID="ID_521731162" MODIFIED="1697980081914" TEXT="Vorsicht: setzt Grooming-Token voraus">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1697941504300" ID="ID_523971112" MODIFIED="1697941543535" TEXT="headTime == tendedLevel und &gt; zeitnah &#x27f6; nichts zu tun"/>
<node CREATED="1697941894113" ID="ID_1342732339" MODIFIED="1697941933095" TEXT="&lt; zeitnah &#x27f9; Stufen-Schema anwenden">
<arrowlink COLOR="#7f95ab" DESTINATION="ID_1280875799" ENDARROW="Default" ENDINCLINATION="10;121;" ID="Arrow_ID_1356077365" STARTARROW="None" STARTINCLINATION="284;21;"/>
</node>
</node>
<node CREATED="1697940327885" FOLDED="true" ID="ID_387348315" MODIFIED="1698808254259" TEXT="Unterscheidung working / idle">
<arrowlink COLOR="#6463c4" DESTINATION="ID_1844164309" ENDARROW="Default" ENDINCLINATION="-359;14;" ID="Arrow_ID_1762094389" STARTARROW="None" STARTINCLINATION="12;-45;"/>
<node CREATED="1697941581727" ID="ID_1655948334" MODIFIED="1697941591937" TEXT="working (=after work)">
<node CREATED="1697941593803" ID="ID_1548473253" MODIFIED="1697941694724" TEXT="headTime != tendedLevel &#x27f9; address headTime"/>
<node CREATED="1697941696039" ID="ID_1607237016" MODIFIED="1697941806125" TEXT="else: send to random delay &lt; idleTime">
<node CREATED="1697941970643" ID="ID_344346872" MODIFIED="1697941987290" TEXT="das soll f&#xfc;r gleichm&#xe4;&#xdf;ige Verteilung der Idler sorgen"/>
<node CREATED="1697941988288" ID="ID_651724736" MODIFIED="1697942020800" TEXT="wenn sie nach dem random Delay kommen und es ist nichts zu tun &#x27f9; Schlaf"/>
</node>
</node>
<node CREATED="1697941808823" ID="ID_1987890221" MODIFIED="1697941818519" TEXT="idle (= enter work)">
<node CREATED="1697941851251" ID="ID_1516348817" MODIFIED="1697941880419" TEXT="if not tendedLevel &#x27f9; address headTime"/>
<node CREATED="1697941881102" ID="ID_1281507935" MODIFIED="1697941890218" TEXT="else: switch to sleep"/>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#420117" CREATED="1698020504097" FOLDED="true" ID="ID_1156275715" MODIFIED="1698808252809" TEXT="Bedeutung der Zeit-Ordnung">
<icon BUILTIN="idea"/>
<node BACKGROUND_COLOR="#eada9f" COLOR="#990000" CREATED="1698020524734" ID="ID_1985773186" MODIFIED="1698432667093" TEXT="hier hilft eine probabilistische Betrachtung &#x27f6; Flow">
<arrowlink COLOR="#722322" DESTINATION="ID_1475863913" ENDARROW="Default" ENDINCLINATION="888;-37;" ID="Arrow_ID_1254135767" STARTARROW="None" STARTINCLINATION="741;41;"/>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1698020552307" ID="ID_124426025" MODIFIED="1698020593813" TEXT="Worker melden sich regelm&#xe4;&#xdf;ig &#x27f6; Kapazit&#xe4;t flie&#xdf;t in bestimmte Kategorien"/>
<node CREATED="1698020594533" ID="ID_56117621" MODIFIED="1698020625909" TEXT="n&#xe4;chste Activity n&#xe4;hert sich &#x27f9; Kapazit&#xe4;t wandert in die aktiveren Phasen"/>
<node CREATED="1698020660868" ID="ID_276531854" MODIFIED="1698020686861" TEXT="Verh&#xe4;ltnis-Anteil der aktiven Phase &#x2261; Mischfaktor">
<node CREATED="1698020747971" ID="ID_452695408" MODIFIED="1698020765281" TEXT="Sleep-Worker sind idealerweise gleichverteilt"/>
<node CREATED="1698020696047" ID="ID_540079176" MODIFIED="1698020717690" TEXT="man extrahiert einen gewissen Anteil der Sleep-Phase"/>
<node CREATED="1698020770133" ID="ID_1232823328" MODIFIED="1698020783240" TEXT="und verteilt sie um auf die aktiv-Phase hinter dem n&#xe4;chsten Termin"/>
<node CREATED="1698020793617" ID="ID_990894590" MODIFIED="1698020839324" TEXT="das ist eine Heuristik in Erwartung weiterer Termine nahe dahinter"/>
<node CREATED="1698020850043" ID="ID_1620028111" MODIFIED="1698020902221" TEXT="die Effizienz d&#xfc;rfte am Besten sein, wenn Termine k&#xfc;rzlich vergangen sind">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ....denn dann kommen die periodischen Worker sofort zum Zug
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#10425c" CREATED="1697979756658" ID="ID_373117026" MODIFIED="1697979894501" TEXT="Prinzipien">
<font NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1697979763457" ID="ID_921223140" MODIFIED="1697979838170" TEXT="einfach halten und empririsch vorgehen">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node CREATED="1697979793341" ID="ID_1889195922" MODIFIED="1697982185048" TEXT="keine &#xbb;Mechanismen&#xab; bauen">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1697979808075" ID="ID_95576898" MODIFIED="1697982191396" TEXT="stattdessen: generische Prinzipien">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1697979825353" ID="ID_475190835" MODIFIED="1698808190135" TEXT="Punkte f&#xfc;r Flexibilit&#xe4;t vorsehen">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1697979852789" ID="ID_925253615" MODIFIED="1697982166711" TEXT="statistische Untersuchungen">
<arrowlink COLOR="#ffd3a8" DESTINATION="ID_1502196172" ENDARROW="Default" ENDINCLINATION="-417;-573;" ID="Arrow_ID_18099677" STARTARROW="None" STARTINCLINATION="-1881;175;"/>
<icon BUILTIN="bell"/>
</node>
</node>
<node CREATED="1697982199141" ID="ID_921733297" MODIFIED="1697982257689" TEXT="tended-Next Activity">
<node CREATED="1697982264012" ID="ID_432697255" MODIFIED="1697982325736" TEXT="der n&#xe4;chst absehbaren Activity im Voraus einen Worker vormerken"/>
<node CREATED="1697982394971" ID="ID_298295774" MODIFIED="1697982411264" TEXT="die sonstige frei werdene Kapazit&#xe4;t grob kategorisieren"/>
</node>
<node CREATED="1697982413572" ID="ID_1701704976" MODIFIED="1697982424659" TEXT="Wartezyklen randomisieren"/>
</node>
<node COLOR="#338800" CREATED="1697982430798" FOLDED="true" ID="ID_858120344" MODIFIED="1699498310726" TEXT="Implementierung">
<icon BUILTIN="button_ok"/>
<icon BUILTIN="hourglass"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1697982445677" ID="ID_1503747441" MODIFIED="1698808242557" TEXT="Ankerpunkte">
<icon BUILTIN="info"/>
<node CREATED="1697982488254" ID="ID_1839282150" MODIFIED="1697982492138" TEXT="incomingCapacity"/>
<node CREATED="1697982492782" ID="ID_1050821331" MODIFIED="1697982497641" TEXT="outgoingCapacity"/>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1697982575563" ID="ID_1770606344" MODIFIED="1698078325355" TEXT="dispatchedCapacity">
<icon BUILTIN="help"/>
</node>
<node COLOR="#435e98" CREATED="1697982589257" HGAP="11" ID="ID_1783139757" MODIFIED="1698808234515" TEXT="pro-forma in den LoadController legen" VSHIFT="9">
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#338800" CREATED="1697982455236" FOLDED="true" ID="ID_645321047" MODIFIED="1698808270767" TEXT="Schemata">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1697982678423" ID="ID_77969589" MODIFIED="1698072830497" TEXT="tendNext">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1697982717584" ID="ID_267473149" MODIFIED="1698072831864" TEXT="Pr&#xfc;f-Pr&#xe4;dikat: tendedNext()">
<icon BUILTIN="button_ok"/>
<node CREATED="1697982757371" ID="ID_1084006128" MODIFIED="1697983275515" TEXT="const und non-grooming"/>
<node CREATED="1697983183366" ID="ID_1016039063" MODIFIED="1697983192701" TEXT="Zugriff auf headTime und Vergleich"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1698072777599" ID="ID_1136303368" MODIFIED="1698072828208" TEXT="Implementierung ist KISS">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1698072785109" ID="ID_110633840" MODIFIED="1698072792145" TEXT="semantisch w&#xfc;rde man sich eine Historie erwarten"/>
<node CREATED="1698072792645" ID="ID_1751412844" MODIFIED="1698072822477" TEXT="aber zusammen mit der Priority-Queue ergibt sich eine sinnvolle Heuristik"/>
</node>
</node>
<node COLOR="#338800" CREATED="1697983155214" ID="ID_1677472042" MODIFIED="1698026637409" TEXT="classifyCapacity">
<arrowlink COLOR="#378f79" DESTINATION="ID_982468485" ENDARROW="Default" ENDINCLINATION="-84;-47;" ID="Arrow_ID_902782295" STARTARROW="None" STARTINCLINATION="31;94;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1697985093803" ID="ID_1553570724" MODIFIED="1698019118162" TEXT="Enum">
<icon BUILTIN="info"/>
<node CREATED="1698019031467" ID="ID_341356297" MODIFIED="1698019058561" TEXT="DISPATCH">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      sent to work
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1698019039597" ID="ID_1951145257" MODIFIED="1698019068575" TEXT="TENDNEXT">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      reserved for next task
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1697985096625" ID="ID_1387570892" MODIFIED="1698019077986" TEXT="SPINTIME">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      awaiting imminent activities
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1697985096625" ID="ID_1218749290" MODIFIED="1698019089902" TEXT="NEARTIME">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      capacity for active processing required
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1697985096625" ID="ID_1654025176" MODIFIED="1698019099614" TEXT="WORKTIME">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      typical stable work task rhythm expected
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1697985096625" ID="ID_196379275" MODIFIED="1698195939798" TEXT="IDLEWAIT">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      time to go to sleep
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#435e98" CREATED="1698020940647" ID="ID_307944005" MODIFIED="1698026622294" TEXT="Konfig-Konstanten">
<arrowlink COLOR="#ffdad5" DESTINATION="ID_1468925350" ENDARROW="Default" ENDINCLINATION="-656;96;" ID="Arrow_ID_1849512128" STARTARROW="None" STARTINCLINATION="1653;-193;"/>
<node CREATED="1698019350177" ID="ID_1185583074" MODIFIED="1698021019755" TEXT="IDLE_WAIT = 20ms"/>
<node CREATED="1698026586117" ID="ID_115206435" MODIFIED="1698026596761" TEXT="SLEEP_HORIZON = 20ms"/>
<node CREATED="1698026600640" ID="ID_112350590" MODIFIED="1698026605947" TEXT="WORK_HORIZON = 5ms"/>
<node CREATED="1698026607392" ID="ID_1582820099" MODIFIED="1698196268926" TEXT="NEAR_HORIZON = 50&#xb5;s"/>
</node>
</node>
<node COLOR="#338800" CREATED="1697983292684" ID="ID_1923883572" MODIFIED="1698519616657" TEXT="scatteredDelay">
<icon BUILTIN="button_ok"/>
<node CREATED="1697983567535" ID="ID_567326127" MODIFIED="1697983640429" TEXT="ist eine Dispatch-Funktion">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      man schickt einen Worker in &#187;scattered delay&#171;
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
<node CREATED="1697983591252" ID="ID_777679840" MODIFIED="1697983596782" TEXT="liefert activity::PROC"/>
<node CREATED="1697983597603" ID="ID_1430310887" MODIFIED="1697983605069" TEXT="f&#xfc;hrt die Verz&#xf6;gerung unmittelbar aus"/>
</node>
<node COLOR="#338800" CREATED="1697983546449" FOLDED="true" ID="ID_1801117774" MODIFIED="1698110860930" TEXT="scatteredDelayTime()">
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1698093070813" ID="ID_940807400" MODIFIED="1698110872107" TEXT="Parameter">
<icon BUILTIN="info"/>
<node CREATED="1698093149583" ID="ID_1430906257" MODIFIED="1698093152974" TEXT="inhaltlich ben&#xf6;tigt">
<node CREATED="1698093101030" ID="ID_1059393148" MODIFIED="1698093114592" TEXT="Startpunkt"/>
<node CREATED="1698093082201" ID="ID_1834606392" MODIFIED="1698093166710" TEXT="Zeitspanne"/>
<node CREATED="1698093141241" ID="ID_1715483141" MODIFIED="1698093145868" TEXT="Bezugspunkt"/>
<node CREATED="1698093116183" ID="ID_1914540136" MODIFIED="1698093121297" TEXT="Zufalls-Quelle"/>
</node>
<node COLOR="#435e98" CREATED="1698093201025" ID="ID_511277140" MODIFIED="1698097593295" TEXT="Zeit-Datentyp?">
<icon BUILTIN="help"/>
<node CREATED="1698093265376" ID="ID_1783179603" MODIFIED="1698093269668" TEXT="Verwendungszweck">
<node CREATED="1698093270800" ID="ID_1916220892" MODIFIED="1698093280466" TEXT="this_thread::sleep_for">
<node CREATED="1698093301715" ID="ID_1918932110" MODIFIED="1698093307270" TEXT="braucht chrono::duration"/>
<node CREATED="1698093343943" ID="ID_358242861" MODIFIED="1698093348872" TEXT="Genauigkeit ist implizit"/>
</node>
<node CREATED="1698093284117" ID="ID_840363847" MODIFIED="1698093288433" TEXT="this_thread::sleep_until">
<node CREATED="1698093289757" ID="ID_1416947114" MODIFIED="1698093315397" TEXT="braucht chrono::time_point"/>
<node CREATED="1698093292997" ID="ID_727329476" MODIFIED="1698093300063" TEXT="per Typ an die unterliegende Clock gebunden"/>
</node>
</node>
<node CREATED="1698093350477" ID="ID_371292667" MODIFIED="1698093353800" TEXT="Kontext">
<node CREATED="1698093354789" ID="ID_1741496299" MODIFIED="1698093371688" TEXT="der gesamte Scheduler verwendet lumiera::Time"/>
<node CREATED="1698093376559" ID="ID_633041348" MODIFIED="1698093384628" TEXT="das sind &#xb5;-Ticks">
<icon BUILTIN="info"/>
<node CREATED="1698093411613" ID="ID_1048787060" MODIFIED="1698093507603" TEXT="Genauigkeit ist grenzwertig">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Die Zeitangaben im std::chrono-Framework reichen bis in den Nano-Bereich, und es gibt einen high-precision-Timer
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1698093418798" ID="ID_1005113032" MODIFIED="1698097058330" TEXT="aber f&#xfc;r derzeitige &#x26a0; Systeme hinreichend">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...andererseits wei&#223; ich, da&#223; man schon einfachste Scheduling-Delays ab mindestens 400ns mi&#223;t, und da&#223; das Starten eines Thread auf meinem System mindestens 100&#181;s braucht. Der aktuelle Scheduler unter Linux (CFS) verwendet keine festen Time-Slices mehr, aber man versucht definitiv die Kontext-Switches zu minimieren. Latenzen oder Scheduling-Zyklen f&#252;r normale (nicht-realtime)-Prozesse liegen im Bereich <b>von Millisekunden</b>. Andererseits arbeitet die C++-Chrono-Funktion sleep_for nachweislich <i>im Schnitt</i>&#160;bis in den zweistelligen &#181;s-Bereich genau
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1698097066647" ID="ID_486321067" MODIFIED="1698097088638" TEXT="Anwendungszweck ist Kapazit&#xe4;ts-Verteilung">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1698097112840" ID="ID_512066576" MODIFIED="1698110883121" TEXT="Fazit: bei Lumiera-Zeittypen bleiben">
<arrowlink COLOR="#8494c7" DESTINATION="ID_1504658001" ENDARROW="Default" ENDINCLINATION="-3062;-49;" ID="Arrow_ID_1741608203" STARTARROW="None" STARTINCLINATION="1460;105;"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1698097633547" HGAP="9" ID="ID_454818161" MODIFIED="1698097650675" TEXT="&#x27f9; Schlu&#xdf;folgerungen" VSHIFT="8">
<node CREATED="1698097652193" ID="ID_507081898" MODIFIED="1698097676649" TEXT="brauche an irgend einem Ende die aktuelle Zeit"/>
<node CREATED="1698097678445" ID="ID_1655075680" LINK="#ID_102946038" MODIFIED="1698097733701" TEXT="diese aktuelle Zeit sollte auch als Zufalls-Quelle dienen"/>
<node CREATED="1698097835356" ID="ID_1972633500" MODIFIED="1698097847906" TEXT="aus Performance-Gr&#xfc;nden sollte diese Zeit ein Parameter sein"/>
<node CREATED="1698097848806" ID="ID_1030706126" MODIFIED="1698097864752" TEXT="dagegen den Bezugspunkt kann man aus tended-next gewinnen"/>
<node CREATED="1698097910006" ID="ID_1800439542" MODIFIED="1698100816307">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      die Funktion liefert eine <b>Duration</b>
    </p>
  </body>
</html></richcontent>
<arrowlink DESTINATION="ID_735254473" ENDARROW="Default" ENDINCLINATION="-57;47;" ID="Arrow_ID_806787669" STARTARROW="None" STARTINCLINATION="69;10;"/>
<icon BUILTIN="forward"/>
<node CREATED="1698097935810" ID="ID_1458098203" MODIFIED="1698097945269" TEXT="in &#xb5;-Tick-Aufl&#xf6;sung"/>
<node CREATED="1698097946017" ID="ID_1013671224" MODIFIED="1698097965475" TEXT="&#x27f6; chrono::microseconds"/>
<node CREATED="1698100685330" ID="ID_735254473" MODIFIED="1698100816307" TEXT="naja... Offset geht auch...">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...und spart einen zus&#228;tzlichen clamp-Schritt und den Absolutwert (den das OS sowiso machen wird)
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#a9b4c1" DESTINATION="ID_735254473" ENDARROW="Default" ENDINCLINATION="-57;47;" ID="Arrow_ID_806787669" SOURCE="ID_1800439542" STARTARROW="None" STARTINCLINATION="69;10;"/>
<icon BUILTIN="smiley-oh"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1698101257233" ID="ID_254738750" MODIFIED="1698110850996" TEXT="Implementierung">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1698101262893" ID="ID_664525403" MODIFIED="1698110953787" TEXT="l&#xe4;uft auf eine Fallunterscheidung hinaus">
<linktarget COLOR="#6391ac" DESTINATION="ID_664525403" ENDARROW="Default" ENDINCLINATION="-10;127;" ID="Arrow_ID_225157022" SOURCE="ID_1719824145" STARTARROW="None" STARTINCLINATION="118;-6;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1698101300800" ID="ID_1888321367" MODIFIED="1698101337767" TEXT="jetzt &#x27fc; nix"/>
<node CREATED="1698101338355" ID="ID_43153407" MODIFIED="1698101370639" TEXT="TENDNEXT ist logischerweise &#x27fc; &#x394; next"/>
<node CREATED="1698101372287" ID="ID_1451931012" MODIFIED="1698101450569" TEXT="NEARTIME &#x27fc; &#x394; + scatter WORK_HORIZON"/>
<node CREATED="1698101394396" ID="ID_144988262" MODIFIED="1698101446121" TEXT="WORKTIME &#x27fc; &#x394; + scatter SLEEP_HORIZON"/>
<node CREATED="1698101413705" ID="ID_1574790196" MODIFIED="1698101438499" TEXT="IDLETIME &#x27fc; ebenso, aber ohne &#x394;"/>
</node>
<node COLOR="#338800" CREATED="1698101272892" ID="ID_826560450" MODIFIED="1698110848117" TEXT="Randomisierung per Zeit">
<icon BUILTIN="button_ok"/>
<node COLOR="#5b280f" CREATED="1698108232842" ID="ID_737192144" MODIFIED="1698108261094" TEXT="Zeit modulo HARDWARE_CONCURRENCY">
<icon BUILTIN="button_cancel"/>
<node CREATED="1698108263654" ID="ID_292936973" MODIFIED="1698108267158" TEXT="keine gute Idee"/>
<node CREATED="1698108267669" ID="ID_638201196" MODIFIED="1698108293589" TEXT="k&#xf6;nnte unebene Verteilung bekommen"/>
<node CREATED="1698108294114" ID="ID_1682704197" MODIFIED="1698108384494" TEXT="wegen Grid-Effekten des OS-Schedulings">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      es ist nicht auszuschlie&#223;en, da&#223; <i>gewisse End-Bits h&#228;ufiger auftreten</i>, weil die OS-Aufrufe / Scheduler-Aktivit&#228;ten eben doch mit einer gewissen Regelm&#228;&#223;igkeit stattfinden
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#5b280f" CREATED="1698108387445" ID="ID_446153361" MODIFIED="1698108415322" TEXT="Zeitwert einfach modulo Zeitspanne">
<icon BUILTIN="button_cancel"/>
<node CREATED="1698108417489" ID="ID_703108540" MODIFIED="1698108422892" TEXT="auch keine gute Idee"/>
<node CREATED="1698108423432" ID="ID_1152223683" MODIFIED="1698108437706" TEXT="starke Korrelation zum urspr&#xfc;nglichen Zeitwert"/>
<node CREATED="1698108438294" ID="ID_1777804515" MODIFIED="1698108470745" TEXT="Anfragen nah beinander &#x27f6; schlechte Verteilung"/>
</node>
<node COLOR="#338800" CREATED="1698108472248" ID="ID_1857586122" MODIFIED="1698108484801" TEXT="also die Zeit vorher hashen">
<icon BUILTIN="yes"/>
<node COLOR="#5b280f" CREATED="1698108593601" ID="ID_416588142" MODIFIED="1698108614561" TEXT="also std::hash&lt;gavl_time_t&gt; verwenden">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1698108491671" ID="ID_440232057" MODIFIED="1698108592155" TEXT="Ha! habe vor einiger Zeit schon eine Hashfunktion implementiert">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Im Zusammenhang mit dem JobTicket (in der Tat, da braucht man einen ordentlichen hash-Key aus beliebiger Zeit)
    </p>
    <p>
      Siehe TimeValue_test::checkTimeHash()
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1698108616823" ID="ID_1997400452" LINK="https://stackoverflow.com/a/31488147" MODIFIED="1698108660508" TEXT="baut auf einer ziemlich performanten Bit-Rotation auf, um die halbe Bitbreite">
<icon BUILTIN="info"/>
</node>
</node>
<node COLOR="#338800" CREATED="1698108669351" ID="ID_169046299" MODIFIED="1698110846788" TEXT="Test: ordentiliche Verteilung pr&#xfc;fen">
<icon BUILTIN="button_ok"/>
<node CREATED="1698110522342" ID="ID_207771533" MODIFIED="1698110534252" TEXT="eine Million Samples mitteln"/>
<node CREATED="1698110535960" ID="ID_1180348868" MODIFIED="1698110577238" TEXT="&#x2205; &#x2248; 9995">
<node CREATED="1698110588129" ID="ID_1282443355" MODIFIED="1698110605314" TEXT="SLEEP_HORIZON / 2 w&#xe4;re 10000"/>
<node CREATED="1698110607822" ID="ID_1405325608" MODIFIED="1698110641189" TEXT="4&#x2031; Fehler"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1698110646465" ID="ID_22372803" MODIFIED="1698110702714" TEXT="Abweichung ist weitgehend konstant">
<icon BUILTIN="broken-line"/>
<node CREATED="1698110713872" ID="ID_1461865381" MODIFIED="1698110743424" TEXT="das hei&#xdf;t: es gibt einen systematischen Effekt"/>
<node CREATED="1698110744132" ID="ID_556718826" MODIFIED="1698110762190" TEXT="wenngleich auch sehr klein"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1698110909230" FOLDED="true" ID="ID_1719824145" MODIFIED="1698196662708" TEXT="Ausf&#xfc;hren der Verz&#xf6;gerung gem&#xe4;&#xdf; Schema">
<arrowlink COLOR="#6391ac" DESTINATION="ID_664525403" ENDARROW="Default" ENDINCLINATION="-10;127;" ID="Arrow_ID_225157022" STARTARROW="None" STARTINCLINATION="118;-6;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1698195684615" ID="ID_491788148" MODIFIED="1698196251944" TEXT="Zuordnung der Namen erscheint etwas verwirrend">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      die WORKTIME liegt n&#228;mlich grade jenseits des WORK_HORIZON, also der NEARTIME, aber noch innerhalb des SLEEP_HORIZON. Aber <i>genau dieser Zwischenbereich</i>&#160;ist der wichtigste Bereich &#252;berhaupt, denn &#252;ber ihn wird die meiste Kapazit&#228;t umverteilt werden.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1698195992891" ID="ID_196230334" MODIFIED="1698196123806" TEXT="aber WORK_HORIZON selber ist systematisch richtig gew&#xe4;hlt">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...es ist ein Horizont, d.h. eine Grenze und eine Dimension...
    </p>
    <p>
      ...man k&#246;nnte daraus ehr schlie&#223;en, da&#223; NOW_HORIZON inkonsistent benannt ist
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="stop-sign"/>
</node>
<node COLOR="#435e98" CREATED="1698196048300" ID="ID_1753704578" MODIFIED="1698196253744" TEXT="Umbenennungen zur Angleichung">
<icon BUILTIN="yes"/>
<node CREATED="1698196056578" ID="ID_1286410545" MODIFIED="1698196169665" TEXT="NOW_HORIZON &#x27fc; NEAR_HORIZON">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      in dem Sinn, da&#223; es ein Horizont und eine Dimension ist; au&#223;erdem ist &#8222;now-horizon&#8220; sprachlich ungelenk
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1698196074920" ID="ID_1488028519" MODIFIED="1698196204519" TEXT="IDLETIME &#x27fc; IDLEWAIT">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...auch das eine Angleichung, schlie&#223;lich wird f&#252;r IDLEWAIT stets activity::WAIT signalisiert, d.h. der Worker wird schlafen gelegt
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1698196213445" ID="ID_1475241186" MODIFIED="1698196636706" TEXT="stelle fest: der IDLEWAIT-Zweig von scatteredDelayTime() wird nie verwendet">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...und zwar deshalb, weil wir auf IDLEWAIT stets mit dem activity::WAIT-Ausgang reagieren, d.h. wir machen keine zuf&#228;llige Redistribution; wenn man das so nicht wollte, m&#252;&#223;te man eine weitere Kategorie einf&#252;hren, die dann nur f&#252;r die outgoing-capacity verwendet wird &#8212; das w&#228;re denkbar, bedarf aber emprischer Untermauerung
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#945e77" DESTINATION="ID_1854864244" ENDARROW="Default" ENDINCLINATION="817;-38;" ID="Arrow_ID_199286732" STARTARROW="None" STARTINCLINATION="380;14;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1698003862646" ID="ID_402749835" MODIFIED="1699498304423" TEXT="Integration mit...">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1698003871908" FOLDED="true" ID="ID_391492289" MODIFIED="1698808274682" TEXT="work-Function">
<arrowlink COLOR="#7779a3" DESTINATION="ID_492054934" ENDARROW="Default" ENDINCLINATION="-814;62;" ID="Arrow_ID_817672667" STARTARROW="None" STARTINCLINATION="1393;-112;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1698019149574" HGAP="40" ID="ID_982468485" MODIFIED="1698078066168" TEXT="Fallunterscheidung" VSHIFT="21">
<linktarget COLOR="#378f79" DESTINATION="ID_982468485" ENDARROW="Default" ENDINCLINATION="-84;-47;" ID="Arrow_ID_902782295" SOURCE="ID_1677472042" STARTARROW="None" STARTINCLINATION="31;94;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1698019170228" ID="ID_311501577" MODIFIED="1698078071150" TEXT="outgoingCapacity">
<node CREATED="1698078074777" ID="ID_1807447539" MODIFIED="1698078181537" TEXT="Basis-Schema ">
<icon BUILTIN="info"/>
</node>
<node CREATED="1698078079896" ID="ID_608362501" MODIFIED="1698078184283" TEXT="f&#xe4;llige Termine haben Vorrang">
<icon BUILTIN="full-1"/>
</node>
<node CREATED="1698078093672" ID="ID_1701101602" MODIFIED="1698078186423" TEXT="im Nah-Intervall wird gespinnt">
<icon BUILTIN="full-2"/>
</node>
<node CREATED="1698078109744" ID="ID_865429598" MODIFIED="1698078188571" TEXT="tend-Next-Mechanismus">
<icon BUILTIN="full-3"/>
</node>
<node CREATED="1698078151042" ID="ID_558277791" MODIFIED="1698078191203" TEXT="Redistribution im Horizont">
<icon BUILTIN="full-4"/>
</node>
<node CREATED="1698078223097" ID="ID_597306541" MODIFIED="1698078227054" TEXT="Schlafen">
<icon BUILTIN="full-5"/>
<node COLOR="#435e98" CREATED="1698244765564" FOLDED="true" HGAP="50" ID="ID_28419292" MODIFIED="1698245094135" TEXT="modifiziert auf Redistribution" VSHIFT="10">
<arrowlink COLOR="#758fa6" DESTINATION="ID_1016395299" ENDARROW="Default" ENDINCLINATION="302;-22;" ID="Arrow_ID_1135387860" STARTARROW="None" STARTINCLINATION="246;369;"/>
<icon BUILTIN="yes"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1698244795607" HGAP="25" ID="ID_928488277" MODIFIED="1698244961675" VSHIFT="16">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      wichtig falls der Scheduler <i>leer f&#228;llt</i>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1698244829665" ID="ID_142654598" MODIFIED="1698244842453" TEXT="sonst k&#xf6;nnte es passieren, da&#xdf; alle Idler in einem Cluster sitzen"/>
<node CREATED="1698244843729" ID="ID_1518532327" MODIFIED="1698244910572" TEXT="und der n&#xe4;chste Termin vers&#xe4;umt w&#xfc;rde um h&#xf6;chstens [SLEEP_HORIZON - WORK_HORIZON]"/>
</node>
</node>
</node>
<node CREATED="1698019164588" ID="ID_1369255451" MODIFIED="1698019165160" TEXT="incomingCapacity">
<node CREATED="1698078198356" ID="ID_187052761" MODIFIED="1698078221980" TEXT="Schlafen hat Vorrang"/>
<node CREATED="1698078230223" ID="ID_956821068" MODIFIED="1698078245813" TEXT="aber f&#xe4;llige Temine und Nach-Intervall werden bedient"/>
<node CREATED="1698078250230" ID="ID_69285927" MODIFIED="1698078267335" TEXT="tend-Next findet nur in NEARTIME statt"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1698159441179" FOLDED="true" ID="ID_486995126" MODIFIED="1699498300894" TEXT="Scheduler-Tick">
<linktarget COLOR="#fffcc5" DESTINATION="ID_486995126" ENDARROW="Default" ENDINCLINATION="579;-95;" ID="Arrow_ID_1801107947" SOURCE="ID_671338782" STARTARROW="None" STARTINCLINATION="292;11;"/>
<linktarget COLOR="#5198bc" DESTINATION="ID_486995126" ENDARROW="Default" ENDINCLINATION="-91;14;" ID="Arrow_ID_973238030" SOURCE="ID_1391329454" STARTARROW="None" STARTINCLINATION="71;5;"/>
<linktarget COLOR="#4f89b7" DESTINATION="ID_486995126" ENDARROW="Default" ENDINCLINATION="232;35;" ID="Arrow_ID_1502519432" SOURCE="ID_1247362696" STARTARROW="None" STARTINCLINATION="108;-12;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1698523819504" HGAP="114" ID="ID_1592332331" MODIFIED="1698605640201" TEXT="Rahmen schaffen" VSHIFT="8">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1698524392305" ID="ID_1232693946" MODIFIED="1698605649969" TEXT="handleDutyCycle()">
<icon BUILTIN="info"/>
</node>
<node COLOR="#338800" CREATED="1698532933228" ID="ID_1847975334" MODIFIED="1698605594973" TEXT="Periode und Deadline f&#xfc;r Ticks">
<linktarget COLOR="#3364f0" DESTINATION="ID_1847975334" ENDARROW="Default" ENDINCLINATION="-449;34;" ID="Arrow_ID_1046093983" SOURCE="ID_233989928" STARTARROW="None" STARTINCLINATION="199;-6;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1698534503171" ID="ID_1796088889" MODIFIED="1698540893762" TEXT="wo (vor)konfiguriert?">
<icon BUILTIN="help"/>
<node CREATED="1698540895030" ID="ID_111536775" MODIFIED="1698540902950" TEXT="scheduler.hpp"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1698540904216" ID="ID_1727121091" MODIFIED="1698540910704" TEXT="Plan: Scheduler-Parameter">
<icon BUILTIN="hourglass"/>
</node>
</node>
<node BACKGROUND_COLOR="#e0d3a2" COLOR="#990000" CREATED="1698534613211" ID="ID_1189633297" MODIFIED="1698541127203" TEXT="Tick-Deadline &#x2261; globale &#xdc;berlastungs-Toleranz des Schedulers">
<arrowlink COLOR="#fd2f46" DESTINATION="ID_1153107499" ENDARROW="Default" ENDINCLINATION="524;-25;" ID="Arrow_ID_251741761" STARTARROW="None" STARTINCLINATION="420;464;"/>
<icon BUILTIN="info"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1698523868063" HGAP="124" ID="ID_26600563" MODIFIED="1699498292810" TEXT="Selbst-&#xdc;berwachung">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1698534832254" FOLDED="true" ID="ID_1414543996" MODIFIED="1698808322736" TEXT="Plan: der DutyCycle ist Status-Asessment">
<icon BUILTIN="yes"/>
<node CREATED="1698534900965" ID="ID_488282572" MODIFIED="1698534907381" TEXT="er ist idempotent"/>
<node CREATED="1698534889399" ID="ID_1021949731" MODIFIED="1698534900169" TEXT="er ist ohne Vorbedingungen stets aufsf&#xfc;hrbar">
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1698544429803" ID="ID_24248194" MODIFIED="1698544506289" TEXT="m&#xf6;gliche Falle: Load-State-Metriken auf Basis der WorkForce">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1698544455094" ID="ID_726163729" MODIFIED="1698544500012" TEXT="vorteilhaft w&#xe4;re, die WorkForce erst nach dem ersten Tick hochzufahren"/>
</node>
<node COLOR="#435e98" CREATED="1698534920078" ID="ID_1926216575" MODIFIED="1698808299010" TEXT="nach seinem Aufruf ist der Status normalisiert">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1698808300122" ID="ID_1808480702" MODIFIED="1698808313387" TEXT="(Konzept scheint aufzugehen)"/>
</node>
<node COLOR="#338800" CREATED="1698542388722" ID="ID_1120963605" MODIFIED="1698971265232" TEXT="Queue bereinigen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1698542396065" ID="ID_1705516567" MODIFIED="1698971267185" TEXT="mu&#xdf; auch gel&#xf6;schte oder verfallene Eintr&#xe4;ge beseitigen">
<arrowlink COLOR="#4d7fc3" DESTINATION="ID_768314841" ENDARROW="Default" ENDINCLINATION="362;-65;" ID="Arrow_ID_464500099" STARTARROW="None" STARTINCLINATION="213;11;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1698543132047" ID="ID_1879818036" MODIFIED="1699315955982" TEXT="kann auch gleich noch feedPrioritisation() machen">
<linktarget COLOR="#6da89c" DESTINATION="ID_1879818036" ENDARROW="Default" ENDINCLINATION="-328;17;" ID="Arrow_ID_1139875480" SOURCE="ID_428559788" STARTARROW="None" STARTINCLINATION="268;14;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1698534523065" ID="ID_1249909001" MODIFIED="1698971275293" TEXT="BlockFlow pflegen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1698534530622" ID="ID_1453816295" MODIFIED="1698544865368" TEXT="der Tick l&#xf6;st die BlockFlow-Bereinigung aus">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#5b280f" CREATED="1698534549651" ID="ID_1836032346" MODIFIED="1698544865368" TEXT="diese mu&#xdf; um einem Sicherheitspuffer verz&#xf6;gert nachfolgen">
<icon BUILTIN="button_cancel"/>
<node CREATED="1698541160966" ID="ID_904830076" MODIFIED="1698544865368" TEXT="wozu?"/>
<node CREATED="1698541168053" ID="ID_878256611" MODIFIED="1698544865368" TEXT="Deadline ist Deadline"/>
<node CREATED="1698541177524" ID="ID_199918854" MODIFIED="1698544865368" TEXT="und der Tick l&#xe4;uft im Grooming-Mode">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      d.h. was grade eben die Deadline &#8222;rei&#223;t&#8220;, kann auch von niemandem mehr gestartet werden
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1698544530128" ID="ID_897465919" MODIFIED="1698544832552" TEXT="Load-Status aktualisieren">
<arrowlink COLOR="#9e4279" DESTINATION="ID_1011726550" ENDARROW="Default" ENDINCLINATION="235;181;" ID="Arrow_ID_1299019434" STARTARROW="None" STARTINCLINATION="425;-47;"/>
<icon BUILTIN="hourglass"/>
</node>
<node COLOR="#338800" CREATED="1698592008108" ID="ID_191013179" MODIFIED="1698592226617" TEXT="bei Leerlauf: Scheduler deaktivieren">
<arrowlink COLOR="#3e9b94" DESTINATION="ID_202320750" ENDARROW="Default" ENDINCLINATION="-1156;-61;" ID="Arrow_ID_727945119" STARTARROW="None" STARTINCLINATION="61;1261;"/>
<linktarget COLOR="#4885aa" DESTINATION="ID_191013179" ENDARROW="Default" ENDINCLINATION="-9;-192;" ID="Arrow_ID_1602192304" SOURCE="ID_446529044" STARTARROW="None" STARTINCLINATION="169;410;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1698595424284" ID="ID_1679334387" MODIFIED="1698595479659">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      stelle fest: das wirkt (unbeabsichtigterweise) auch als <b>Z&#252;nd-Barriere</b>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1698595445913" ID="ID_284194667" MODIFIED="1698605519364" TEXT="man mu&#xdf; also stets schon etwas in die Queue geschickt haben, bevor man z&#xfc;ndet">
<arrowlink COLOR="#389bcf" DESTINATION="ID_1513214570" ENDARROW="Default" ENDINCLINATION="365;-28;" ID="Arrow_ID_554717849" STARTARROW="None" STARTINCLINATION="333;12;"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1698530480307" ID="ID_355476974" MODIFIED="1698541315516" TEXT="Warnung: Selbstschutz vor de-Allokation">
<arrowlink COLOR="#ff2f19" DESTINATION="ID_269636711" ENDARROW="Default" ENDINCLINATION="-577;-1106;" ID="Arrow_ID_1849442376" STARTARROW="None" STARTINCLINATION="173;762;"/>
<linktarget COLOR="#ed3471" DESTINATION="ID_355476974" ENDARROW="Default" ENDINCLINATION="-616;43;" ID="Arrow_ID_729257748" SOURCE="ID_1982008339" STARTARROW="None" STARTINCLINATION="689;49;"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1698530661134" ID="ID_345977666" MODIFIED="1698530674141" TEXT="mu&#xdf; Entgleisen der Steuermechanismen erkennen"/>
<node CREATED="1698530762981" ID="ID_1141545060" MODIFIED="1698530779783" TEXT="und dann die Verarbeitung sauber auslaufen lassen"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1698977581315" HGAP="36" ID="ID_1091029245" MODIFIED="1699315730013" TEXT="Grooming-Token korrekt handhaben" VSHIFT="8">
<linktarget COLOR="#c93834" DESTINATION="ID_1091029245" ENDARROW="Default" ENDINCLINATION="-545;39;" ID="Arrow_ID_1140675242" SOURCE="ID_179251569" STARTARROW="None" STARTINCLINATION="224;-19;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1699325295132" ID="ID_745204926" MODIFIED="1699498276370" TEXT="WorkForce hochfahren">
<linktarget COLOR="#57496c" DESTINATION="ID_745204926" ENDARROW="Default" ENDINCLINATION="249;-377;" ID="Arrow_ID_55492946" SOURCE="ID_1435123962" STARTARROW="None" STARTINCLINATION="668;346;"/>
<linktarget COLOR="#533354" DESTINATION="ID_745204926" ENDARROW="Default" ENDINCLINATION="-41;67;" ID="Arrow_ID_204394164" SOURCE="ID_1772549848" STARTARROW="None" STARTINCLINATION="-125;-5;"/>
<icon BUILTIN="yes"/>
<node CREATED="1699325589332" ID="ID_25430169" MODIFIED="1699325606390" TEXT="WorkForce regelt sich selber herunter bei Leerlauf"/>
<node CREATED="1699325607274" ID="ID_718145429" MODIFIED="1699325631062">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      daher mu&#223; f&#252;r einen neuen Job ein <i>step up</i>&#160;erfolgen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1699325634014" ID="ID_1493688459" MODIFIED="1699325647951" TEXT="bei Bedarf: ignite()"/>
</node>
</node>
<node COLOR="#338800" CREATED="1697982436029" ID="ID_288711039" MODIFIED="1698808212796" TEXT="Test">
<arrowlink COLOR="#56a5a9" DESTINATION="ID_1292738036" ENDARROW="Default" ENDINCLINATION="286;-465;" ID="Arrow_ID_367470516" STARTARROW="None" STARTINCLINATION="-752;0;"/>
<arrowlink COLOR="#56a5a9" DESTINATION="ID_488605324" ENDARROW="Default" ENDINCLINATION="457;-68;" ID="Arrow_ID_1794430254" STARTARROW="None" STARTINCLINATION="-752;0;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1698521316395" ID="ID_1194473945" MODIFIED="1698521326921" TEXT="kann im Test die Timing/Sleep-Muster zeigen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1698605671588" ID="ID_1693880533" MODIFIED="1698605786967" TEXT="konnte im Start/Stop-Test explizit das Timing/Aufruf-Muster sehen">
<arrowlink COLOR="#96abb4" DESTINATION="ID_114745098" ENDARROW="Default" ENDINCLINATION="694;-113;" ID="Arrow_ID_336093338" STARTARROW="None" STARTINCLINATION="522;22;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1698372200013" FOLDED="true" ID="ID_1863445864" MODIFIED="1698808416494" TEXT="Scheduler start/stop">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1698372207398" ID="ID_1110932778" MODIFIED="1698808364649" TEXT="braucht Integration mit LoadController">
<arrowlink COLOR="#5898af" DESTINATION="ID_210862409" ENDARROW="Default" ENDINCLINATION="-33;645;" ID="Arrow_ID_204955453" STARTARROW="None" STARTINCLINATION="250;17;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1698372288228" ID="ID_1391329454" MODIFIED="1698808377073" TEXT="richtiges Zusammenspiel mit dem Tick">
<arrowlink COLOR="#5198bc" DESTINATION="ID_486995126" ENDARROW="Default" ENDINCLINATION="-91;14;" ID="Arrow_ID_973238030" STARTARROW="None" STARTINCLINATION="71;5;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1698372366569" HGAP="31" ID="ID_581955078" MODIFIED="1698539690981" TEXT="der Tick mu&#xdf; von selber anhalten" VSHIFT="18"/>
<node CREATED="1698372384694" HGAP="25" ID="ID_1896236351" MODIFIED="1698372393274" TEXT="damit f&#xe4;llt die Queue leer"/>
</node>
<node COLOR="#435e98" CREATED="1698522290233" ID="ID_1911911283" MODIFIED="1698808389494" TEXT="Status bereits &#xfc;ber empty() / isnil() ersichtlich">
<icon BUILTIN="idea"/>
<node CREATED="1698522320375" ID="ID_1572899444" MODIFIED="1698522328008" TEXT="solange der Tick tickt, kann er nicht leer sein"/>
<node COLOR="#338800" CREATED="1698808391150" ID="ID_391218762" MODIFIED="1698808398969" TEXT="im Test verifiziert">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1698522456723" FOLDED="true" ID="ID_1793836905" MODIFIED="1698808409669" TEXT="Zustands&#xfc;berg&#xe4;nge realisieren">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1698522466298" ID="ID_1846809868" MODIFIED="1698604976684" TEXT="ignite() &#x27f6; Tick etablieren">
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1698523669922" HGAP="21" ID="ID_1926013578" MODIFIED="1698545591203" TEXT="ggfs. internen Reset?" VSHIFT="-14">
<arrowlink COLOR="#ecfdbe" DESTINATION="ID_1951108355" ENDARROW="Default" ENDINCLINATION="-66;-3;" ID="Arrow_ID_632624217" STARTARROW="None" STARTINCLINATION="16;2;"/>
<icon BUILTIN="help"/>
<node CREATED="1698545349628" ID="ID_635933117" MODIFIED="1698545369376" TEXT="betrifft vor allem den LoadController"/>
<node CREATED="1698545387305" ID="ID_1133340355" MODIFIED="1698545484215" TEXT="abgesehen davon hat der Scheduler nur Daten-bezogenen kontextuellen State"/>
<node CREATED="1698545562226" HGAP="29" ID="ID_891146084" MODIFIED="1698545583796" TEXT="er sollte mit normalen Methoden aus jedem Load-Zustand sauber anlaufen" VSHIFT="-10"/>
</node>
<node COLOR="#338800" CREATED="1698523636422" ID="ID_1247362696" MODIFIED="1698545597610" TEXT="eine Tick-Activity absetzen">
<arrowlink COLOR="#4f89b7" DESTINATION="ID_486995126" ENDARROW="Default" ENDINCLINATION="232;35;" ID="Arrow_ID_1502519432" STARTARROW="None" STARTINCLINATION="108;-12;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1698544892271" ID="ID_1951108355" MODIFIED="1698545516901" TEXT="Update und Tick-Planung durch DutyCycle-Tick selber">
<linktarget COLOR="#ecfdbe" DESTINATION="ID_1951108355" ENDARROW="Default" ENDINCLINATION="-66;-3;" ID="Arrow_ID_632624217" SOURCE="ID_1926013578" STARTARROW="None" STARTINCLINATION="16;2;"/>
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#338800" CREATED="1698523685888" ID="ID_993061444" MODIFIED="1698605364232" TEXT="die WorkForce starten">
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1698523713636" ID="ID_1082114161" MODIFIED="1698523721739" TEXT="hier k&#xf6;nnte man schrittweise vorgehen">
<icon BUILTIN="hourglass"/>
</node>
<node BACKGROUND_COLOR="#d4c1ad" COLOR="#990000" CREATED="1698523722518" ID="ID_153443695" MODIFIED="1698605359529" TEXT="vorerst aber starten wir sofort mit Maximal-Leistung">
<arrowlink COLOR="#8a8699" DESTINATION="ID_174276213" ENDARROW="Default" ENDINCLINATION="-1083;-69;" ID="Arrow_ID_1348822312" STARTARROW="None" STARTINCLINATION="617;33;"/>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1698523751770" ID="ID_903457471" MODIFIED="1698523767446" TEXT="(WorkForce wird sich selbst nach 2sec herunterregeln)"/>
</node>
</node>
<node COLOR="#338800" CREATED="1698522492081" ID="ID_1777263362" MODIFIED="1698604971384" TEXT="terminateProcessing &#xd83e;&#xdc32; Gewalt!">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1698522970735" ID="ID_728729079" MODIFIED="1698592324950" TEXT="die WorkForce kalt machen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1698522979070" ID="ID_27890829" MODIFIED="1698592326794" TEXT="der Destruktor wartet vor der T&#xfc;r...">
<icon BUILTIN="idea"/>
<node CREATED="1698523569872" ID="ID_158276586" MODIFIED="1698523584913" TEXT="die Selbstmord-Flag wurde gesetzt"/>
<node CREATED="1698523585621" ID="ID_896793694" MODIFIED="1698523606526" TEXT="Worker sterben sobald sie zur&#xfc;ckkommen"/>
<node CREATED="1698523607240" ID="ID_1186275785" MODIFIED="1698523619800" TEXT="Jedweder Kontrakt ist gebrochen">
<icon BUILTIN="clanbomber"/>
</node>
</node>
<node COLOR="#338800" CREATED="1698522985869" ID="ID_319295239" MODIFIED="1698605559677" TEXT="danach die Queue leeren">
<arrowlink COLOR="#4d8aab" DESTINATION="ID_1362227170" ENDARROW="Default" ENDINCLINATION="715;-39;" ID="Arrow_ID_940715985" STARTARROW="None" STARTINCLINATION="229;23;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1698604835846" ID="ID_581650151" MODIFIED="1698604964634" TEXT="nebenbei explizit verifiziert">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <ul>
      <li>
        hab mir den jeweiligen Quellcode angeschaut und keine Probleme gesehen
      </li>
      <li>
        auch auf Stackoverflow gibt es Hinweise, da&#223; das so gehen soll (obwohl es kein richtiges API daf&#252;r gibt)
      </li>
      <li>
        Timing-Messungen zeigen: braucht 100&#181;s
      </li>
      <li>
        danach kommt die gleiche Scheduler-Instanz wieder auf die Beine und verh&#228;lt sich unauff&#228;llig.
      </li>
      <li>
        auch ist der erneute Start nicht feststellbar langsamer; das Hochfahren der WorkForce braucht ohnehin 1ms
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
</node>
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1698523062280" ID="ID_1393673316" MODIFIED="1698523095951" TEXT="BlockFlow besser nicht anfassen">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1698523098414" ID="ID_1417067453" MODIFIED="1698523106568" TEXT="eigentlich k&#xf6;nnte man den auch leeren"/>
<node CREATED="1698523107143" ID="ID_807106136" MODIFIED="1698523114759" TEXT="aber das bricht den Epoch-Contract"/>
<node CREATED="1698523115588" ID="ID_1469556071" MODIFIED="1698523126870" TEXT="es k&#xf6;nnte blockende external notifications geben"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1698523161438" ID="ID_88143705" MODIFIED="1698523176612" TEXT="noch nicht klar wie wir das handhaben">
<icon BUILTIN="bell"/>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1698532686214" ID="ID_272237675" MODIFIED="1698532696468" TEXT="Deadlines und Selbstregulierung">
<icon BUILTIN="flag-pink"/>
<node COLOR="#338800" CREATED="1698532697859" FOLDED="true" ID="ID_1071571068" MODIFIED="1699498353393" TEXT="Deadlines in das System integrieren">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1698532716488" ID="ID_337384722" MODIFIED="1698970259804" TEXT="in die Priority-Queue">
<arrowlink COLOR="#47a6ef" DESTINATION="ID_136482882" ENDARROW="Default" ENDINCLINATION="69;-169;" ID="Arrow_ID_63115321" STARTARROW="None" STARTINCLINATION="-285;-30;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1699236864983" ID="ID_968559205" MODIFIED="1699240177131" TEXT="Deadline auch per POST">
<arrowlink COLOR="#294957" DESTINATION="ID_732375421" ENDARROW="Default" ENDINCLINATION="-356;-16;" ID="Arrow_ID_55264582" STARTARROW="None" STARTINCLINATION="404;42;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1698532728431" ID="ID_233989928" MODIFIED="1699236704436" TEXT="mit Tick und Allokation integrieren">
<arrowlink COLOR="#3364f0" DESTINATION="ID_1847975334" ENDARROW="Default" ENDINCLINATION="-449;34;" ID="Arrow_ID_1046093983" STARTARROW="None" STARTINCLINATION="199;-6;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1698532793030" ID="ID_696019318" MODIFIED="1698970294088" TEXT="verbindliche Tasks erm&#xf6;glichen">
<arrowlink COLOR="#3f3aee" DESTINATION="ID_1475771662" ENDARROW="Default" ENDINCLINATION="-1121;-88;" ID="Arrow_ID_211999245" STARTARROW="None" STARTINCLINATION="1410;120;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1698935602937" HGAP="100" ID="ID_1382222698" MODIFIED="1698935623608" TEXT="&#xbb;compulsory&#xab;" VSHIFT="2">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1699315636119" FOLDED="true" ID="ID_179251569" MODIFIED="1699498349273" TEXT="Feed und Grooming-Token">
<arrowlink COLOR="#c93834" DESTINATION="ID_1091029245" ENDARROW="Default" ENDINCLINATION="-545;39;" ID="Arrow_ID_1140675242" STARTARROW="None" STARTINCLINATION="224;-19;"/>
<linktarget COLOR="#751420" DESTINATION="ID_179251569" ENDARROW="Default" ENDINCLINATION="-787;-76;" ID="Arrow_ID_272593119" SOURCE="ID_933385129" STARTARROW="None" STARTINCLINATION="1260;101;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1699315801850" ID="ID_581012515" MODIFIED="1699498346452" TEXT="sicherstellen da&#xdf; ActivationEvents durch die Queues laufen">
<icon BUILTIN="yes"/>
<node CREATED="1699325705381" ID="ID_1180089206" MODIFIED="1699325717675" TEXT="dazu mu&#xdf; WorkForce bereitstehen"/>
<node CREATED="1699325718270" ID="ID_715250586" MODIFIED="1699325728452" TEXT="und die Eingangs-Queue mu&#xdf; bearbeitet werden"/>
<node CREATED="1699325765253" ID="ID_1589040875" MODIFIED="1699325801226" TEXT="das wiederum setzt Grooming-Token vorraus">
<linktarget COLOR="#526574" DESTINATION="ID_1589040875" ENDARROW="Default" ENDINCLINATION="-22;26;" ID="Arrow_ID_833310716" SOURCE="ID_111514031" STARTARROW="None" STARTINCLINATION="131;6;"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1699315836183" ID="ID_428559788" MODIFIED="1699498346452" TEXT="sicherstellen da&#xdf; der aktuelle Zustand bewertet wird">
<arrowlink COLOR="#6da89c" DESTINATION="ID_1879818036" ENDARROW="Default" ENDINCLINATION="-328;17;" ID="Arrow_ID_1139875480" STARTARROW="None" STARTINCLINATION="268;14;"/>
<icon BUILTIN="yes"/>
</node>
<node COLOR="#435e98" CREATED="1699315847219" ID="ID_111514031" MODIFIED="1699498327288" TEXT="von API- und Livecycle-Funktionen: Grooming-Token beachten">
<arrowlink COLOR="#526574" DESTINATION="ID_1589040875" ENDARROW="Default" ENDINCLINATION="-22;26;" ID="Arrow_ID_833310716" STARTARROW="None" STARTINCLINATION="131;6;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#338800" CREATED="1699325360487" ID="ID_1772549848" MODIFIED="1699498332971" TEXT="nach Einplanen von neuen Jobs: Kapazit&#xe4;t bereitstellen">
<arrowlink COLOR="#533354" DESTINATION="ID_745204926" ENDARROW="Default" ENDINCLINATION="-41;67;" ID="Arrow_ID_204394164" STARTARROW="None" STARTINCLINATION="-125;-5;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1698532771174" ID="ID_840040649" MODIFIED="1698532780891" TEXT="Gesundheit / Notstand">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1698533674384" ID="ID_1227874220" MODIFIED="1698534658603" TEXT="Scheduler-Emergency vorsehen">
<arrowlink COLOR="#ea5540" DESTINATION="ID_1515660165" ENDARROW="Default" ENDINCLINATION="-1517;105;" ID="Arrow_ID_1696922321" STARTARROW="None" STARTINCLINATION="912;-77;"/>
<linktarget COLOR="#2c6489" DESTINATION="ID_1227874220" ENDARROW="Default" ENDINCLINATION="133;12;" ID="Arrow_ID_967532278" SOURCE="ID_979357340" STARTARROW="None" STARTINCLINATION="241;-7;"/>
<linktarget COLOR="#544ad5" DESTINATION="ID_1227874220" ENDARROW="Default" ENDINCLINATION="-1477;121;" ID="Arrow_ID_677451247" SOURCE="ID_748059800" STARTARROW="None" STARTINCLINATION="-536;-12;"/>
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1698977581315" HGAP="36" ID="ID_1460743865" MODIFIED="1698977618208" TEXT="Grooming-Token korrekt handhaben" VSHIFT="8">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1698078367419" HGAP="-36" ID="ID_1532750540" MODIFIED="1698079050460" TEXT="offene Fragen" VSHIFT="11">
<linktarget COLOR="#713d56" DESTINATION="ID_1532750540" ENDARROW="Default" ENDINCLINATION="-2344;353;" ID="Arrow_ID_1939324405" SOURCE="ID_161990356" STARTARROW="None" STARTINCLINATION="1495;112;"/>
<icon BUILTIN="bell"/>
<node CREATED="1698078395346" ID="ID_1995310118" MODIFIED="1698078418081" TEXT="ist die probabilistische Kapazit&#xe4;tsverteilung ausreichend, um Aussetzer zu verhindern?"/>
<node CREATED="1698078423734" ID="ID_588175161" MODIFIED="1698078714099" TEXT="bringt das Spinning im Nah-Bereich &#xfc;berhaupt etwas (oder schadet es gar?)"/>
<node CREATED="1698078720726" ID="ID_690302845" MODIFIED="1698078865023" TEXT="mu&#xdf; incomingCapacity &#xfc;berhaupt am tend-Next teilnehmen?"/>
<node CREATED="1698200170774" ID="ID_433843739" MODIFIED="1698200464028" TEXT="sind derart kleine Wartezeiten &#xfc;berhaupt sinnvoll?">
<arrowlink COLOR="#69496a" DESTINATION="ID_1298210753" ENDARROW="Default" ENDINCLINATION="2071;-139;" ID="Arrow_ID_67065674" STARTARROW="None" STARTINCLINATION="733;41;"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1687738213842" ID="ID_683259902" MODIFIED="1687738250423" TEXT="Payload: ActOrder">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1687738222176" ID="ID_777939699" MODIFIED="1687738267070" TEXT="&#xbb;waterlevel&#xab; f&#xfc;r Zeit-Ordnung">
<icon BUILTIN="button_ok"/>
<node CREATED="1687738270537" ID="ID_655072800" MODIFIED="1687738313630" TEXT="soll die Start-Zeit oder nominelle Zeit sein">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1687738289111" ID="ID_1129171046" MODIFIED="1687738310678" TEXT="Priorit&#xe4;tsklassen sollen hier mit Offset abgebildet werden">
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#338800" CREATED="1697982818498" FOLDED="true" ID="ID_136482882" MODIFIED="1699235053191" TEXT="Deadline ber&#xfc;cksichtigen ">
<linktarget COLOR="#47a6ef" DESTINATION="ID_136482882" ENDARROW="Default" ENDINCLINATION="69;-169;" ID="Arrow_ID_63115321" SOURCE="ID_337384722" STARTARROW="None" STARTINCLINATION="-285;-30;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1697982844409" ID="ID_1374530988" MODIFIED="1697982854041" TEXT="im Datenrecord mitf&#xfc;hren"/>
<node COLOR="#435e98" CREATED="1697982854605" ID="ID_651171432" MODIFIED="1699234969875" TEXT="Zusicherung: kein Zugriff auf verfallene Activities">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1697982880930" ID="ID_1142296301" MODIFIED="1697982897699" TEXT="ist tragendes Element der Speicherverwaltung"/>
<node CREATED="1697982898279" ID="ID_1086820599" MODIFIED="1697982926481" TEXT="verfallene Activities d&#xfc;rfen wiederverwendet werden">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1698542519485" FOLDED="true" ID="ID_768314841" MODIFIED="1698970344746" TEXT="Bereinigung in die normale Verarbeitung integrieren">
<linktarget COLOR="#4d7fc3" DESTINATION="ID_768314841" ENDARROW="Default" ENDINCLINATION="362;-65;" ID="Arrow_ID_464500099" SOURCE="ID_1705516567" STARTARROW="None" STARTINCLINATION="213;11;"/>
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1698542534903" ID="ID_1065770396" MODIFIED="1698542579305" TEXT="Achtung: nur unter Grooming-Token">
<icon BUILTIN="clanbomber"/>
</node>
<node CREATED="1698542606597" ID="ID_1206660275" MODIFIED="1698542904185" TEXT="Ungenauigkeit hier ist nicht wirklich relevant">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      zwar h&#228;tte man aus logischer Sicht gerne, da&#223; alle Informationsfunktionen stets den aktuell g&#252;ltigen Zustand reflektieren &#8212; aber das scheitert an der Natur einer Priority-Queue (welche nicht insgeheim <i>mutable</i>&#160;sein kann). Praktisch wirkt sich eine solche Diskrepanz aber fast nicht aus, denn das Ergebnis einer Informationsfunktion kann ohne Besitzt des Grooming-Tokens stets im n&#228;chsten Moment schon obsolet sein. Man mu&#223; nur aufpassen, da&#223; im Fall einer echten Mutation die Bereinigungs-Funktion vor der Entscheidungslogik aufgerufen wird
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1698542905269" ID="ID_271558649" MODIFIED="1698970347001" TEXT="Entscheidungslogik nochmal durchpr&#xfc;fen">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1697982938058" ID="ID_1655832509" MODIFIED="1699234952979" TEXT="Problem: Deadlines f&#xfc;r non-timebound modes">
<arrowlink COLOR="#fe6147" DESTINATION="ID_917322834" ENDARROW="Default" ENDINCLINATION="631;-14;" ID="Arrow_ID_1361409427" STARTARROW="None" STARTINCLINATION="953;54;"/>
<icon BUILTIN="messagebox_warning"/>
<node COLOR="#435e98" CREATED="1698542469775" ID="ID_1223768150" LINK="#ID_394986223" MODIFIED="1699234936821" TEXT="hierf&#xfc;r: verbindliche Tasks">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1698874604558" FOLDED="true" ID="ID_5485655" MODIFIED="1699234965589">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <u>Implementierung</u>:
    </p>
    <p>
      &#187;zus&#228;tzliche Markierungen&#171;
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1698875050812" ID="ID_292105591" MODIFIED="1698963531996" TEXT="Datenfelder">
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1698877940667" FOLDED="true" ID="ID_1937246215" MODIFIED="1698963527448" TEXT="bl&#xe4;ht die Eintr&#xe4;ge auf">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1698877955722" ID="ID_18567100" MODIFIED="1698878028037" TEXT="im Besonderen die bool-Flag ist Verschwendung pur">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Habe im Vorgriff diverse Bedenken
    </p>
    <ul>
      <li>
        eine Priority-Queue vertauscht Elemente; die Kosten daf&#252;r steigen mit der Gr&#246;&#223;e
      </li>
      <li>
        Spielt es eine Rolle, wenn Allokationen nicht eine 2-er-Potenz sind?
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node CREATED="1698878088432" ID="ID_1981767309" MODIFIED="1698878109785" TEXT="wahrscheinlich k&#xf6;nnte man alles in einen einzigen 64-bit packen">
<node CREATED="1698878142337" ID="ID_1278840848" MODIFIED="1698878168641" TEXT="dann br&#xe4;uchte es aber automatische Daten-Konsolidierung"/>
</node>
<node CREATED="1698875628063" ID="ID_1439656466" LINK="https://en.cppreference.com/w/cpp/language/bit_field" MODIFIED="1698878049112" TEXT="als Bit-field definieren?">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1698932868556" ID="ID_1664988281" MODIFIED="1698932887173" TEXT="und jetzt auch noch eine Hashtable einbauen...">
<node CREATED="1698932888209" ID="ID_920421434" MODIFIED="1698932896268" TEXT="wo doch grade alles so sch&#xf6;n schlank war"/>
<node CREATED="1698932956928" ID="ID_5121566" MODIFIED="1698932970705" TEXT="geht da was mit einer raffizierten Pr&#xfc;fsumme?"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1698932981733" ID="ID_1011154947" MODIFIED="1698932998791" TEXT="in der Tat: so funktioniert n&#xe4;mlich eine Hashtable">
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node BACKGROUND_COLOR="#fafe99" COLOR="#fa002a" CREATED="1698876478558" ID="ID_1617605243" MODIFIED="1698933005729" TEXT="Alarm: premature optimisation">
<icon BUILTIN="stop-sign"/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1698933014976" ID="ID_1564483537" MODIFIED="1698933078803" TEXT="Beschlu&#xdf;: 4 &#xbb;Slots&#xab; + Hashtable und gut is">
<icon BUILTIN="yes"/>
<node CREATED="1698933082767" ID="ID_174017900" MODIFIED="1698933096370" TEXT="bisher haben wir 2 &#xbb;Slots&#xab;"/>
<node CREATED="1698933097250" ID="ID_861365620" MODIFIED="1698933107504" TEXT="+ neu nun eine Deadline (64bit)"/>
<node CREATED="1698933108396" ID="ID_1790358622" MODIFIED="1698933120750" TEXT="+ ein kombiniertes Datenfeld">
<node CREATED="1698933122026" ID="ID_440651029" MODIFIED="1698933131620" TEXT="obere 32-Byte: Flags"/>
<node CREATED="1698933132195" ID="ID_1915407787" MODIFIED="1698933162664" TEXT="untere 32-Bytes: Manifestation-ID"/>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1698876491877" ID="ID_1775078836" MODIFIED="1698933438338" TEXT="durch Messungen am Scheduler im Einsatz &#xfc;berpr&#xfc;fen">
<arrowlink COLOR="#6d6593" DESTINATION="ID_1619951589" ENDARROW="Default" ENDINCLINATION="306;-27;" ID="Arrow_ID_670346160" STARTARROW="None" STARTINCLINATION="1162;61;"/>
<icon BUILTIN="hourglass"/>
</node>
</node>
<node COLOR="#338800" CREATED="1698933483810" ID="ID_1794722262" MODIFIED="1698963519573" TEXT="Deadline in &#xb5;-Ticks">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1698933615025" ID="ID_1230994646" MODIFIED="1698963517800" TEXT="Significance">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1698933622176" ID="ID_1319756279" MODIFIED="1698963514291" TEXT="Flags (Bit-Feld)">
<node COLOR="#435e98" CREATED="1698935646594" ID="ID_1627815057" MODIFIED="1698935650825" TEXT="isCompulsory"/>
</node>
<node COLOR="#435e98" CREATED="1698933632934" ID="ID_1561119545" MODIFIED="1698963516115" TEXT="ManifestationID(32bit)">
<linktarget COLOR="#894161" DESTINATION="ID_1561119545" ENDARROW="Default" ENDINCLINATION="-572;70;" ID="Arrow_ID_1358372763" SOURCE="ID_1074827633" STARTARROW="None" STARTINCLINATION="61;-315;"/>
<node CREATED="1698937181526" ID="ID_105164565" LINK="#ID_4829396" MODIFIED="1698937195213" TEXT="Datentyp in scheduler-API"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1698874464330" ID="ID_536599334" MODIFIED="1699024358867" TEXT="Markierung Dispatch per CalcStream/Manifestation-ID">
<linktarget COLOR="#4c7b9c" DESTINATION="ID_536599334" ENDARROW="Default" ENDINCLINATION="-898;46;" ID="Arrow_ID_1336944992" SOURCE="ID_1901851782" STARTARROW="None" STARTINCLINATION="-1049;-72;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1698874552701" ID="ID_393531098" MODIFIED="1698874578329">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      &#252;bergreifendes Thema: <i>fliegende &#196;nderungen </i>in Play-Prozessen
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#338800" CREATED="1698966410658" ID="ID_1622080924" MODIFIED="1698966432887" TEXT="brauche allow-List in Layer-1">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1698966488184" ID="ID_52503620" MODIFIED="1698966526768">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      brauche generische Informationsfunktion <font face="Monospaced" color="#0d0fb9">isOutdated()</font>
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#338800" CREATED="1698970133343" ID="ID_1886746867" MODIFIED="1699653329938" TEXT="mu&#xdf; vom Scheduler high-Level-API bedient werden">
<linktarget COLOR="#7136ac" DESTINATION="ID_1886746867" ENDARROW="Default" ENDINCLINATION="224;12;" ID="Arrow_ID_759487829" SOURCE="ID_1301519166" STARTARROW="None" STARTINCLINATION="50;-182;"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#338800" CREATED="1698533220909" ID="ID_1286321982" MODIFIED="1698971499681" TEXT="Flag und Steuerung f&#xfc;r &#xbb;verbindliche Activities&#xab;">
<linktarget COLOR="#3ebbf1" DESTINATION="ID_1286321982" ENDARROW="Default" ENDINCLINATION="107;492;" ID="Arrow_ID_1399415601" SOURCE="ID_326051657" STARTARROW="None" STARTINCLINATION="922;-57;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1698533783922" ID="ID_1279644850" MODIFIED="1698970114815" TEXT="blockiert das Verwerfen nach Deadline">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1698533800719" ID="ID_979357340" MODIFIED="1698971521640" TEXT="wird dann vom Tick/DutyCycle erkannt">
<arrowlink COLOR="#2c6489" DESTINATION="ID_1227874220" ENDARROW="Default" ENDINCLINATION="133;12;" ID="Arrow_ID_967532278" STARTARROW="None" STARTINCLINATION="241;-7;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1698945154395" ID="ID_1664760512" MODIFIED="1698970165200" TEXT="erweiterte Pr&#xfc;fungen in die normale Verarbeitung integrieren">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1698945192477" FOLDED="true" ID="ID_1809715507" MODIFIED="1698970058102" TEXT="brauche nun zus&#xe4;tzliche Daten beim Einplanen">
<icon BUILTIN="button_ok"/>
<node CREATED="1698946253457" ID="ID_1811524315" MODIFIED="1698946256631" TEXT="Defaults">
<node CREATED="1698946293491" ID="ID_537001260" MODIFIED="1698946298907" TEXT="sinnvoll f&#xfc;r Tests"/>
<node CREATED="1698946300016" ID="ID_1426746639" MODIFIED="1698947331093" TEXT="Deadline auf &#xbb;Time::NEVER&#xab;">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <ul>
      <li>
        ein solcher Task w&#252;rde immer ausf&#252;hrbar bleiben und w&#228;re somit f&#252;r den Layer-1 neutral.
      </li>
      <li>
        allerdings auf dem Scheduler-API mu&#223; die Deadline verpfichtend gemacht werden, denn sonst erstickt der Memory-Allocator irgendwann
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node CREATED="1698946311193" ID="ID_1622617686" MODIFIED="1698947426886" TEXT="leere ManifestationID">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      diese spezielle Marker-ID wird implizit stets freigeschaltet, kann also sp&#228;ter nicht verworfen werden; das erscheint mir ein sinnvoller Default
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1698946321096" ID="ID_1270673617" MODIFIED="1698947474211" TEXT="not isComplusory">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      verpflichtende Activities sind ebenfalls ein Feature, das eigentlich erst auf Scheduler-Level angesiedelt ist, und hier nur den entsprechenden Support braucht
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#435e98" CREATED="1698970061962" ID="ID_1229124977" MODIFIED="1698970101779" TEXT="jeder Queue-Entry besteht nun aus 4 &#xbb;Slots&#xab;"/>
</node>
<node COLOR="#338800" CREATED="1699236841179" FOLDED="true" ID="ID_732375421" MODIFIED="1699240177131" TEXT="mit Deadline aus dem POST verbinden">
<linktarget COLOR="#294957" DESTINATION="ID_732375421" ENDARROW="Default" ENDINCLINATION="-356;-16;" ID="Arrow_ID_55264582" SOURCE="ID_968559205" STARTARROW="None" STARTINCLINATION="404;42;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1699236932318" ID="ID_1264044781" MODIFIED="1699236945125" TEXT="Angabe ist optional"/>
<node COLOR="#435e98" CREATED="1699236962662" ID="ID_1443826232" MODIFIED="1699240181943" TEXT="L&#xf6;sung: durch Max/Min (Zeit) verbinden">
<icon BUILTIN="idea"/>
<node CREATED="1699237004657" ID="ID_248984512" MODIFIED="1699237008261" TEXT="ActivationEvent-ctor"/>
<node CREATED="1699238474541" ID="ID_1064611733" MODIFIED="1699238486093" TEXT="die spezielle Rolle von POST-Activities">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="info"/>
</node>
<node CREATED="1699237008937" ID="ID_847681286" MODIFIED="1699237077849" TEXT="in &#x3bb;-post explizit injizieren">
<arrowlink COLOR="#4a4f75" DESTINATION="ID_1814368786" ENDARROW="Default" ENDINCLINATION="45;-42;" ID="Arrow_ID_463155049" STARTARROW="None" STARTINCLINATION="-46;5;"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1698945215604" FOLDED="true" ID="ID_1778628995" MODIFIED="1699653313488" TEXT="Scheduler high-level-API erweitern">
<arrowlink COLOR="#3d3aa9" DESTINATION="ID_780386157" ENDARROW="Default" ENDINCLINATION="86;143;" ID="Arrow_ID_103420327" STARTARROW="None" STARTINCLINATION="317;25;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1698971859240" HGAP="82" ID="ID_1814368786" MODIFIED="1699237073393" TEXT="Problem: &#x3bb;-post &#xfc;bermittelt nicht zwingend eine Deadline" VSHIFT="17">
<linktarget COLOR="#4a4f75" DESTINATION="ID_1814368786" ENDARROW="Default" ENDINCLINATION="45;-42;" ID="Arrow_ID_463155049" SOURCE="ID_847681286" STARTARROW="None" STARTINCLINATION="-46;5;"/>
<icon BUILTIN="messagebox_warning"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1698971900742" ID="ID_970794288" MODIFIED="1698972278874" TEXT="Problem bedingt durch die Offenheit der Activity-Language">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      das hei&#223;t, das ist latent ein Design-Problem &#8212; welches ich derzeit nicht l&#246;sen kann, da mir der Gesamt&#252;berblick noch fehlt, und ich <i>genau deshalb </i>dieses offene Design gew&#228;hlt habe
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#cd1d68" DESTINATION="ID_496219214" ENDARROW="Default" ENDINCLINATION="1100;780;" ID="Arrow_ID_1973257942" STARTARROW="Default" STARTINCLINATION="-1;-184;"/>
</node>
<node CREATED="1698972217673" ID="ID_1012249644" MODIFIED="1698972251202">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <i>kann </i>es auch gar nicht, denn die Activity selber kennt i.A. keine Deadline
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#fafe99" COLOR="#fa002a" CREATED="1698976477150" ID="ID_1307962302" MODIFIED="1699068112389" TEXT="die Bedeutungs-Ebenen schichten sich hier nicht sauber">
<arrowlink COLOR="#fef7ad" DESTINATION="ID_794200787" ENDARROW="Default" ENDINCLINATION="3;-49;" ID="Arrow_ID_1938210019" STARTARROW="None" STARTINCLINATION="13;35;"/>
<icon BUILTIN="broken-line"/>
<node CREATED="1698976502827" ID="ID_429532581" MODIFIED="1698976539535" TEXT="Manifestation und compulsory werden erst auf Scheduler-Level bedeutsam"/>
<node CREATED="1698976540742" ID="ID_1531605944" MODIFIED="1698976573680" TEXT="die Deadline gibt es auf Activity-Language-Ebene &#x2014; aber nur als Gate-Check"/>
<node CREATED="1698976601846" ID="ID_792276520" MODIFIED="1698976677711" TEXT="die Activity-Language soll aber genau von den Scheduler-Abl&#xe4;ufen abstrahieren"/>
<node CREATED="1698976678515" ID="ID_203481682" MODIFIED="1698976708963" TEXT="Sie mu&#xdf; aber durch den abstrahierten Kontext hindurch propagieren k&#xf6;nnen"/>
<node CREATED="1698976759992" ID="ID_1975784916" MODIFIED="1698976784377" TEXT="die Semantik sollte sich &#x201e;gem&#xe4;&#xdf; Kontext&#x201c; sinnvoll erweitern"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1698976787213" ID="ID_1115119952" MODIFIED="1699068014124" TEXT="die Kontext-Abstraktion mu&#xdf; dieses Problem absorbieren">
<arrowlink COLOR="#863957" DESTINATION="ID_1301519166" ENDARROW="Default" ENDINCLINATION="51;-68;" ID="Arrow_ID_552857902" STARTARROW="None" STARTINCLINATION="-187;9;"/>
<icon BUILTIN="yes"/>
<node CREATED="1699023474989" ID="ID_171697917" MODIFIED="1699023495844" TEXT="daf&#xfc;r mu&#xdf; dann allerdings der ExecutionCtx eigenst&#xe4;ndig werden"/>
<node CREATED="1699023496680" ID="ID_1467585350" MODIFIED="1699023504778" TEXT="bisher ist er nur eine verkappte Scheduler-Referenz"/>
<node CREATED="1699023516788" ID="ID_984606864" MODIFIED="1699023534470" TEXT="ist aber stets im lokalen Call-stack und massiv concurrent im Einsatz"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1699023878349" HGAP="146" ID="ID_1301519166" MODIFIED="1699068042973" VSHIFT="1">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Umbau: <b>Dispatch-mit-Kontext</b>
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#7136ac" DESTINATION="ID_1886746867" ENDARROW="Default" ENDINCLINATION="224;12;" ID="Arrow_ID_759487829" STARTARROW="None" STARTINCLINATION="50;-182;"/>
<arrowlink COLOR="#4c8de8" DESTINATION="ID_461028283" ENDARROW="Default" ENDINCLINATION="-786;46;" ID="Arrow_ID_1280528411" STARTARROW="None" STARTINCLINATION="-1155;1082;"/>
<linktarget COLOR="#863957" DESTINATION="ID_1301519166" ENDARROW="Default" ENDINCLINATION="51;-68;" ID="Arrow_ID_552857902" SOURCE="ID_1115119952" STARTARROW="None" STARTINCLINATION="-187;9;"/>
<icon BUILTIN="yes"/>
<node CREATED="1699067790118" HGAP="44" ID="ID_1620165722" MODIFIED="1699067814211" TEXT="das hatte kaskadierende Konsequenzen f&#xfc;r das Scheduler-Design" VSHIFT="17"/>
<node CREATED="1699067815133" HGAP="46" ID="ID_836622489" MODIFIED="1699067891529" VSHIFT="1">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      der Queue-Entry wurde zum <b>ActivationEvent</b>&#160;als zentrale Austausch-Einheit
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#373aa8" CREATED="1699067892381" HGAP="48" ID="ID_794200787" MODIFIED="1699068148831" TEXT="damit sortieren sich nun die Design-Ebenen logisch sauber" VSHIFT="6">
<linktarget COLOR="#fef7ad" DESTINATION="ID_794200787" ENDARROW="Default" ENDINCLINATION="3;-49;" ID="Arrow_ID_1938210019" SOURCE="ID_1307962302" STARTARROW="None" STARTINCLINATION="13;35;"/>
<icon BUILTIN="idea"/>
<node CREATED="1699067909833" ID="ID_1876838421" LINK="#ID_816321833" MODIFIED="1699068736393" TEXT="Activity-Language: behandelt Activities"/>
<node CREATED="1699067928790" ID="ID_1552671650" MODIFIED="1699067940881" TEXT="SchedulerService: behandelt Activation-Events"/>
</node>
<node CREATED="1699067982500" HGAP="61" ID="ID_627574639" MODIFIED="1699068008177" TEXT="&#x3bb;-post erzeugt nun eine Kaskade von verschachtelten Kontexten" VSHIFT="1"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1699068176202" HGAP="81" ID="ID_1943235489" MODIFIED="1699068208749" TEXT="(hoffe der Optimiser bekommt das sortiert)" VSHIFT="19">
<font NAME="SansSerif" SIZE="9"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1698946201921" ID="ID_1058086166" MODIFIED="1698963474934" TEXT="Informationsfunktionen erg&#xe4;nzen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1698946217933" FOLDED="true" ID="ID_1697537017" MODIFIED="1698970050764" TEXT="transparentes Verwerfen">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1698948806933" ID="ID_420754882" MODIFIED="1698970047714" TEXT="wo ansetzen?">
<node CREATED="1698948815117" ID="ID_736157754" MODIFIED="1698948823278" TEXT="es mu&#xdf; eine Mutations-Funktion sein"/>
<node CREATED="1698948824058" ID="ID_42556043" MODIFIED="1698948833941" TEXT="sie mu&#xdf; stets unter Grooming-Token aufgerufen werden"/>
<node COLOR="#5b280f" CREATED="1698949109228" ID="ID_765027235" MODIFIED="1698949156519" TEXT="rein logisch w&#xe4;re feedPrioritisation() gut">
<icon BUILTIN="button_cancel"/>
<node CREATED="1698949125978" ID="ID_834884096" MODIFIED="1698949131126" TEXT="aber da fehlt die Zeitangabe"/>
<node CREATED="1698949131655" ID="ID_504965242" MODIFIED="1698949139964" TEXT="und es gibt zwei Aufruf-Variangen"/>
</node>
<node COLOR="#5b280f" CREATED="1698949142520" ID="ID_1038127597" MODIFIED="1698949156519" TEXT="damit bleibt nur noch pullHead &#xfc;brig">
<icon BUILTIN="button_cancel"/>
<node CREATED="1698949159126" ID="ID_1576956355" MODIFIED="1698949180743" TEXT="das ist aber definitiv nur eine low-level-Operation"/>
<node CREATED="1698949181235" ID="ID_655555656" MODIFIED="1698949192821" TEXT="und hat auch nicht die Zeit `now`"/>
<node CREATED="1698949193697" ID="ID_1153123389" MODIFIED="1698949214930" TEXT="au&#xdf;erdem w&#xe4;re die Formulierung if (isDue) untergraben"/>
</node>
<node COLOR="#435e98" CREATED="1698949216918" ID="ID_1626105170" MODIFIED="1698970044539">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      also geh&#246;rt diese Operation in <b>Layer-2</b>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
<node CREATED="1698966624581" ID="ID_610935351" MODIFIED="1698966652638">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      damit: direkt in <b><font face="Monospaced" color="#610da9">findWork</font></b><font face="Monospaced" color="#610da9">(now)</font>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1698969992698" ID="ID_413808337" MODIFIED="1698970038839">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      pr&#252;ft explizit auf <font face="Monospaced" color="#62382f">isOutdated (now) and not isOutOfTime(now)</font>
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1698966669839" ID="ID_1859516972" MODIFIED="1698969985695" TEXT="Layer-2 baut auf den Informationsfunktionen von Layer 1 auf">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1698966699869" ID="ID_919547647" MODIFIED="1698969983997" TEXT="Layer-2 findet nur die nach allen Regeln ausf&#xfc;hrbare n&#xe4;chste Activity">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1698934459104" ID="ID_1030078999" MODIFIED="1698970200523" TEXT="Scheduler Layer-Tests erg&#xe4;nzen">
<arrowlink COLOR="#1990d6" DESTINATION="ID_774197123" ENDARROW="Default" ENDINCLINATION="589;-82;" ID="Arrow_ID_644878733" STARTARROW="None" STARTINCLINATION="-1097;92;"/>
<arrowlink COLOR="#23a89d" DESTINATION="ID_340948432" ENDARROW="Default" ENDINCLINATION="589;-82;" ID="Arrow_ID_1678021866" STARTARROW="None" STARTINCLINATION="-1097;92;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1687738237630" ID="ID_706592774" MODIFIED="1687738266530" TEXT="Pointer auf die Activity (im BlockFlow)">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1687738251598" ID="ID_1828364822" MODIFIED="1687738265443" TEXT="scheduling-Ordnungs-Operator">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1687737451105" FOLDED="true" ID="ID_925616893" MODIFIED="1699498504229" TEXT="Basis-Operationen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1687737459167" FOLDED="true" ID="ID_1982661220" MODIFIED="1697509756856" TEXT="instruct">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1687737917521" ID="ID_1306162732" MODIFIED="1697509754333" TEXT="water-level definieren">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1697497880339" ID="ID_1428475873" MODIFIED="1697509747869" TEXT="Bedeutung der Zeitangaben kl&#xe4;ren">
<arrowlink COLOR="#7d7d95" DESTINATION="ID_1707163520" ENDARROW="Default" ENDINCLINATION="-66;1053;" ID="Arrow_ID_1162895595" STARTARROW="None" STARTINCLINATION="803;63;"/>
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1697498014282" HGAP="101" ID="ID_1790216070" MODIFIED="1697509750845" TEXT="Zeitangaben sind verwirrend" VSHIFT="21">
<font NAME="SansSerif" SIZE="11"/>
<icon BUILTIN="bell"/>
<node CREATED="1697502661099" ID="ID_1427644322" MODIFIED="1697502675671" TEXT="hier geht die Bedeutung der PriQueue explizit ein"/>
<node CREATED="1697502676856" ID="ID_742861391" MODIFIED="1697503038797" TEXT="Aktiviert wird nur wenn definierte Startzeit &#x2261; Scheduler-Zeit">
<linktarget COLOR="#2e4db7" DESTINATION="ID_742861391" ENDARROW="Default" ENDINCLINATION="487;23;" ID="Arrow_ID_1433029717" SOURCE="ID_1952039720" STARTARROW="None" STARTINCLINATION="1290;183;"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1693269129210" ID="ID_1992882157" MODIFIED="1697509743431" TEXT="diese Zeit mu&#xdf; explizit als Parameter gegeben sein">
<icon BUILTIN="yes"/>
<node CREATED="1697503108192" ID="ID_1302864247" MODIFIED="1697503118285" TEXT="das ist ein Freiheitsgrad des POST-Eingangs"/>
<node CREATED="1697503124087" ID="ID_1183635639" MODIFIED="1697503267864" TEXT="ist auch gut so: keine enge Kopplung zwischen Commutator und Activity-Language">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...man k&#246;nnte ja auf die Idee kommen, da&#223; sich der Scheduler diese Zeit aus dem Activity-Record holt; das w&#228;re aber eine extrem schlechte Idee, denn es w&#252;rde die ganze Einteilung in Schichten hintertreiben.
    </p>
    <ul>
      <li>
        der Layer-1 soll nur seine low-Level Funktionalit&#228;t machen
      </li>
      <li>
        der Layer-2 soll nur seine Entscheidungen treffen
      </li>
      <li>
        die Activity-Language ist allein f&#252;r die Bedeutung der Activity-Parameter zust&#228;ndig
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1697505306938" ID="ID_1444202033" MODIFIED="1697505311892" TEXT="Datenformat">
<node CREATED="1697505316184" ID="ID_548736471" MODIFIED="1697505331986" TEXT="size_t ist Plattform-abh&#xe4;ngig">
<icon BUILTIN="clanbomber"/>
</node>
<node CREATED="1697505398490" ID="ID_330643485" MODIFIED="1697505433395" TEXT="32bit reichen nur f&#xfc;r 30min bei &#xb5;-Tick-Aufl&#xf6;sung"/>
<node CREATED="1697505448926" ID="ID_949778006" MODIFIED="1697505456585" TEXT="64bit sind nat&#xfc;rlich &#xfc;ppigst"/>
<node CREATED="1697505537920" ID="ID_1735492425" LINK="#ID_1475155102" MODIFIED="1697505580964" TEXT="habe mich schon einmal (bei den Activities) implizit auf 64bit festgelegt">
<node CREATED="1697505708923" ID="ID_983960656" MODIFIED="1697505735248" TEXT="&#x201e;implizit&#x201c; &#x27f9; meint bez&#xfc;glich Performance"/>
<node CREATED="1697505740479" ID="ID_1886185402" MODIFIED="1697505758509" TEXT="Activities und Zeitformat sind auf 64bit-Maschinen ausgelegt"/>
<node CREATED="1697505765393" ID="ID_1590658159" MODIFIED="1697505780854" TEXT="32bit-Maschinen m&#xfc;ssen doppelt so viel tun (rechnen aber auch korrekt)"/>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1697505784265" ID="ID_1082970465" MODIFIED="1697506448892" TEXT="&#x27f9; Konsequenz: waterLevel mu&#xdf; int64_t sein">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1693173903557" ID="ID_61492355" MODIFIED="1693173987893" TEXT="Einspielen von Activities aus einem Activity-Term">
<linktarget COLOR="#95354f" DESTINATION="ID_61492355" ENDARROW="Default" ENDINCLINATION="-907;-55;" ID="Arrow_ID_1026469877" SOURCE="ID_1036154230" STARTARROW="None" STARTINCLINATION="-985;134;"/>
<icon BUILTIN="hourglass"/>
</node>
</node>
<node COLOR="#5b280f" CREATED="1687737461343" ID="ID_1187886360" MODIFIED="1687825920257" TEXT="prioriseNext">
<icon BUILTIN="button_cancel"/>
<node COLOR="#5b280f" CREATED="1687825948966" ID="ID_1180959210" MODIFIED="1697553048899" TEXT="wird immerfort iteriert werden">
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#435e98" CREATED="1687825921441" ID="ID_167939453" MODIFIED="1697553056896" TEXT="stattdessen gleich die Eingangsqueue leeren">
<arrowlink COLOR="#31c960" DESTINATION="ID_254177626" ENDARROW="Default" ENDINCLINATION="169;9;" ID="Arrow_ID_1506119350" STARTARROW="None" STARTINCLINATION="-2;9;"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#338800" CREATED="1687825916348" FOLDED="true" ID="ID_254177626" MODIFIED="1687826402411" TEXT="feedPrioritisation">
<linktarget COLOR="#31c960" DESTINATION="ID_254177626" ENDARROW="Default" ENDINCLINATION="169;9;" ID="Arrow_ID_1506119350" SOURCE="ID_167939453" STARTARROW="None" STARTINCLINATION="-2;9;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1697474990041" HGAP="39" ID="ID_1899510010" MODIFIED="1697483151657" TEXT="wie wird der Bypass der Instruct-Queue realisiert?" VSHIFT="39">
<icon BUILTIN="help"/>
<node CREATED="1697475018687" ID="ID_1627247776" MODIFIED="1697475050844" TEXT="wenn wir uns in interner Verarbeitung befinden..."/>
<node CREATED="1697475051688" ID="ID_285432698" MODIFIED="1697475071594" TEXT="dann kann der POST einer Activity direkt in die Priority-Queue gehen"/>
<node COLOR="#435e98" CREATED="1697475074049" ID="ID_948956152" MODIFIED="1697483089574">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      wird das hier auf Layer-1 realisiert &#8212;
    </p>
    <p>
      oder bietet Layer-1 einen Direkt-Eingang?
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="help"/>
<node CREATED="1697483009149" ID="ID_857193449" MODIFIED="1697483086272" TEXT="Konsistenz und Balance spielen eine Rolle">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      single level of abstraction / do only one thing and do it well
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1697483030738" ID="ID_924466619" MODIFIED="1697483050956" TEXT="deshalb sollte das GroomingToken auf Layer-2 angesiedelt werden">
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1697483094233" ID="ID_410099903" MODIFIED="1697496261475" TEXT="&#x27f9; Layer-1 mu&#xdf; einen Direkteingang bereitstellen">
<arrowlink COLOR="#7280a9" DESTINATION="ID_781957236" ENDARROW="Default" ENDINCLINATION="30;-53;" ID="Arrow_ID_783538344" STARTARROW="None" STARTINCLINATION="-116;7;"/>
</node>
<node CREATED="1697483129772" ID="ID_22524648" MODIFIED="1697483148605" TEXT="die eigentliche Entscheidung ist der Kern des &#xbb;commutators&#xab;">
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#338800" CREATED="1697496207636" HGAP="102" ID="ID_781957236" MODIFIED="1697509761395" TEXT="feedPrioritisation (Activity&amp;)" VSHIFT="-10">
<linktarget COLOR="#7280a9" DESTINATION="ID_781957236" ENDARROW="Default" ENDINCLINATION="30;-53;" ID="Arrow_ID_783538344" SOURCE="ID_410099903" STARTARROW="None" STARTINCLINATION="-116;7;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1697496266988" ID="ID_1227453518" MODIFIED="1697496280877" TEXT="Name: erscheint mir logisch"/>
<node COLOR="#5b280f" CREATED="1697496282650" ID="ID_1795543272" MODIFIED="1697496411465" TEXT="gef&#xe4;hrlich? &#xd83e;&#xdc32; das ist kein Thema">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...es handelt sich offensichtlich bei Layer-1 um eine low-Level-Einrichtung und um ein internes API, das nicht gegen Mi&#223;brauch gewappnet sein mu&#223;
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
<icon BUILTIN="button_cancel"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1687737502608" FOLDED="true" ID="ID_191302870" MODIFIED="1687826469913" TEXT="pullHead">
<icon BUILTIN="button_ok"/>
<node CREATED="1687826432255" ID="ID_499644502" MODIFIED="1687826482383" TEXT="pr&#xfc;ft nur auf leere Queue">
<icon BUILTIN="info"/>
</node>
<node CREATED="1687826441291" ID="ID_1200213778" MODIFIED="1687826472723" TEXT="ansonsten Kopf ab und gut is....">
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1687826450250" ID="ID_1322915953" MODIFIED="1687826464259" TEXT="alle weiteren Entscheidungen geh&#xf6;ren in Layer-2">
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#338800" CREATED="1697664035780" ID="ID_12688296" MODIFIED="1697664105789" TEXT="Informationsfunktionen">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1697664042816" ID="ID_1946435661" MODIFIED="1697664117691" TEXT="empty()"/>
<node COLOR="#435e98" CREATED="1697664094137" ID="ID_1470365236" MODIFIED="1697664117692" TEXT="isDue(now)"/>
<node COLOR="#435e98" CREATED="1699498423811" ID="ID_406322643" MODIFIED="1699498487991" TEXT="isMissed(now)"/>
<node COLOR="#435e98" CREATED="1699498438004" ID="ID_1234585168" MODIFIED="1699498487991" TEXT="isActivated(manifestationID)"/>
<node COLOR="#435e98" CREATED="1699498455489" ID="ID_793135356" MODIFIED="1699498487991" TEXT="isOutdated(now)"/>
<node COLOR="#435e98" CREATED="1699498467713" ID="ID_1210999353" MODIFIED="1699498487992" TEXT="isOutOfTime(now)"/>
<node COLOR="#435e98" CREATED="1699498477879" ID="ID_599813314" MODIFIED="1699498487992" TEXT="hasPendingInput()"/>
<node COLOR="#435e98" CREATED="1697664050047" ID="ID_762628611" MODIFIED="1697664117692" TEXT="headTime()"/>
<node COLOR="#435e98" CREATED="1697664060613" ID="ID_980495178" MODIFIED="1697664117691" TEXT="peekHead()"/>
</node>
</node>
<node COLOR="#338800" CREATED="1687789568770" FOLDED="true" ID="ID_1189205980" MODIFIED="1697664015525" TEXT="Iterations-Schnittstelle">
<icon BUILTIN="button_ok"/>
<node CREATED="1687789602339" ID="ID_1200625458" MODIFIED="1687789718505" TEXT="Zugang zum Head"/>
<node CREATED="1687789719097" ID="ID_908739206" MODIFIED="1687789773087" TEXT="Inkrement konsumiert Head"/>
<node COLOR="#435e98" CREATED="1687790434754" ID="ID_792756614" MODIFIED="1687790579147" TEXT="sind Iteratoren nicht zu aufwendig?">
<node CREATED="1687790448568" ID="ID_1298616776" MODIFIED="1687790588655" TEXT="Antwort: man kann von voller Optimierung ausgehen">
<icon BUILTIN="forward"/>
</node>
<node CREATED="1687790477442" ID="ID_1056199596" MODIFIED="1687790501011" TEXT="das hei&#xdf;t, duplikate Aufrufe werden nur einmal get&#xe4;tigt">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Beispiel: __throw_if_empty()
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1687790502105" ID="ID_1681570091" MODIFIED="1687790521163" TEXT="aber die Checks als Solche finden statt"/>
<node CREATED="1687790522630" ID="ID_21793953" MODIFIED="1687790577625" TEXT="das ist gut so">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      und sollte nur in Frage gestellt werden, sofern daf&#252;r <b>explizit</b>&#160; ein unverh&#228;ltnism&#228;&#223;iger Overhead nachweisbar ist...
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1687821034786" ID="ID_937800494" MODIFIED="1687821061014" TEXT="Aber: Formulierung als Iterator ist unn&#xf6;tig indirekt">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1687821070069" ID="ID_1435925687" MODIFIED="1687821077039" TEXT="es wird eine State-Core konstruiert"/>
<node CREATED="1687821077531" ID="ID_1082196031" MODIFIED="1687821081494" TEXT="darum ein Iterator gewickelt"/>
<node CREATED="1687821082602" ID="ID_1775935535" MODIFIED="1687821106963" TEXT="und dann in einem Loop-Konstrukt mit end() verglichen"/>
<node CREATED="1687821108615" ID="ID_1285462887" MODIFIED="1687821127384" TEXT="wozu unn&#xf6;tigerweise eine leere State-Core konstruiert wird"/>
<node CREATED="1687821133067" ID="ID_360125612" MODIFIED="1687821148773" TEXT="wenn es gut geht optimiert der Compiler das dann alles weg"/>
</node>
<node COLOR="#338800" CREATED="1687821381309" ID="ID_172756997" MODIFIED="1687827017617" TEXT="besser direkt auf den Nutzen hin implementieren">
<icon BUILTIN="yes"/>
<node CREATED="1687821414065" ID="ID_546937431" MODIFIED="1687821452581" TEXT="das hei&#xdf;t: f&#xfc;r eine while-Loop">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1687821457099" ID="ID_1145270526" MODIFIED="1687823212479" TEXT="pr&#xfc;fen, entnehmen, weiterschalten">
<icon BUILTIN="forward"/>
<node COLOR="#338800" CREATED="1687826999365" ID="ID_924847659" MODIFIED="1687827009768" TEXT="peekHead()">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1687827002743" ID="ID_90050132" MODIFIED="1687827009768" TEXT="pullHead()">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1689170064181" FOLDED="true" HGAP="5" ID="ID_987966047" MODIFIED="1699368391115" TEXT="WorkForce zur Ausf&#xfc;hrung" VSHIFT="7">
<linktarget COLOR="#397cb2" DESTINATION="ID_987966047" ENDARROW="Default" ENDINCLINATION="-962;-41;" ID="Arrow_ID_818972822" SOURCE="ID_1537960830" STARTARROW="None" STARTINCLINATION="-609;73;"/>
<linktarget COLOR="#3974b2" DESTINATION="ID_987966047" ENDARROW="Default" ENDINCLINATION="-1039;-52;" ID="Arrow_ID_7965989" SOURCE="ID_1957090536" STARTARROW="None" STARTINCLINATION="-1231;87;"/>
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1689170081403" ID="ID_196314311" MODIFIED="1697427465994" TEXT="Technologie-Entscheidung">
<linktarget COLOR="#4d82b0" DESTINATION="ID_196314311" ENDARROW="Default" ENDINCLINATION="-56;-43;" ID="Arrow_ID_814147501" SOURCE="ID_1688483414" STARTARROW="None" STARTINCLINATION="-440;34;"/>
<linktarget COLOR="#b22e63" DESTINATION="ID_196314311" ENDARROW="Default" ENDINCLINATION="-1383;-51;" ID="Arrow_ID_134934445" SOURCE="ID_14638704" STARTARROW="None" STARTINCLINATION="-753;40;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node BACKGROUND_COLOR="#e0bfaa" COLOR="#690f14" CREATED="1693773517624" FOLDED="true" ID="ID_779344997" MODIFIED="1697427618092" TEXT="welche essentiellen M&#xf6;glichkeiten haben unsere selbst gebatuen L&#xf6;sungen?">
<font NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="help"/>
<node CREATED="1693778159526" ID="ID_86763478" MODIFIED="1693778165739" TEXT="eigener Worker-Pool">
<node CREATED="1693778172262" ID="ID_112349205" MODIFIED="1693778185072" TEXT="pr&#xe4;zise Kontrolle &#xfc;ber den Modus der Arbeitsverteilung"/>
<node CREATED="1693778186492" ID="ID_884250701" MODIFIED="1693778200216" TEXT="Anpassung an die konkrete Workload"/>
<node CREATED="1693778201612" ID="ID_134813800" MODIFIED="1693778219235" TEXT="zus&#xe4;tzliche Steuer- und Kontrollm&#xf6;glichkeiten"/>
<node CREATED="1693778245819" ID="ID_113777576" MODIFIED="1693778259397" TEXT="kann als dedizierter Service betrieben werden"/>
</node>
<node CREATED="1693787618970" ID="ID_1621791774" MODIFIED="1693787623646" TEXT="lib::Thread">
<node CREATED="1693787648687" ID="ID_1734153874" MODIFIED="1693787682238" TEXT="l&#xe4;uft fast komplett auf die Eigenschaften von std::thread hinaus"/>
<node CREATED="1693787682946" ID="ID_1584585093" MODIFIED="1693787698708" TEXT="allerdings gibt es Unsch&#xe4;rfen bei Referenz-Parametern f&#xfc;r die Funktion"/>
<node CREATED="1693787699344" ID="ID_1144215420" MODIFIED="1693787806325" TEXT="der verwendete Thread stammt aus einem automatisch verwalteten Threadpool"/>
<node CREATED="1693787815177" ID="ID_1720096544" MODIFIED="1693787844804" TEXT="join() wird erschwert / zum Spezialfall gemacht"/>
</node>
<node CREATED="1693789073665" ID="ID_1658974537" MODIFIED="1693789081779" TEXT="Mutex und ConditionVar">
<node CREATED="1693789083289" ID="ID_344539977" MODIFIED="1693789101083" TEXT="verpacken m&#xfc;hsamer zu verwendende POSIX-APIs"/>
<node CREATED="1693789106598" ID="ID_578647303" MODIFIED="1693789121791" TEXT="stellen Einheitlichkeit her, um darauf Policies aufzubauen"/>
</node>
<node CREATED="1693788920585" ID="ID_1811801110" MODIFIED="1693788927651" TEXT="der Monitor (lib::Sync)">
<node CREATED="1693788948827" ID="ID_1839763460" MODIFIED="1693788966716" TEXT="ist ein bew&#xe4;hrtes Design-Pattern mit guten Eigenschaften"/>
<node CREATED="1693788967376" ID="ID_1799182387" MODIFIED="1693788979634" TEXT="ist durch Policy konfigurierbar"/>
<node CREATED="1693788981334" ID="ID_697019077" MODIFIED="1693789010965" TEXT="bietet optional auch die wait / notify-Funktionalit&#xe4;t"/>
<node CREATED="1693789015665" ID="ID_1551495123" MODIFIED="1693789054009" TEXT="erm&#xf6;gilcht als Mix-In auch einen sehr kompakt verwendbaren Lock-Guard"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1693773573993" FOLDED="true" ID="ID_1647001961" MODIFIED="1697427440640" TEXT="Eigenschaften der Standard-L&#xf6;sungen">
<icon BUILTIN="info"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1693777557361" ID="ID_1832737213" LINK="https://stackoverflow.com/q/58774356" MODIFIED="1693777611078" TEXT="es gibt (noch) keinen standardisierten Threadpool">
<icon BUILTIN="stop-sign"/>
<node CREATED="1693777627306" ID="ID_990313927" LINK="https://duckduckgo.com/l/?uddg=https%3A%2F%2Fwww.open%2Dstd.org%2Fjtc1%2Fsc22%2Fwg21%2Fdocs%2Fpapers%2F2020%2Fp0443r12.html&amp;rut=18bac472d51ccd0d0d61ff44e67e95db26174d30580a58a460ddd659feba8179" MODIFIED="1693783619298" TEXT="&#xbb;unified executors&#xab; / Proposal still in discussion (vielleicht C++23)"/>
<node CREATED="1693777976879" ID="ID_980726893" LINK="https://web.archive.org/web/20230322194534/https://accu.org/journals/overload/29/164/teodorescu/" MODIFIED="1693777997279" TEXT="&#xbb;C++ Executors: the Good, the Bad, and Some Examples&#xab;"/>
<node CREATED="1693778375945" ID="ID_81861804" MODIFIED="1693778436222">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      &#8623; eine Standard-L&#246;sung <font color="#a61b1b">impliziert auch ein Ausf&#252;hrungs-Framework</font>
    </p>
  </body>
</html></richcontent>
<node CREATED="1693778458303" ID="ID_832214591" MODIFIED="1693778480076" TEXT="...aber wir bauen selber ein Ausf&#xfc;hrungs-Framework">
<icon BUILTIN="stop-sign"/>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1693778472069" ID="ID_1414699251" MODIFIED="1693778476487" TEXT="und zwar aus gutem Grund">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node CREATED="1693789205811" ID="ID_536058942" MODIFIED="1693789351784" TEXT="die Standard-Library bietet keinen Monitor">
<icon BUILTIN="idea"/>
<node CREATED="1693789352820" ID="ID_1126857833" MODIFIED="1693789360975" TEXT="(und wird vermutlich auch keinen bieten)"/>
<node CREATED="1693789228741" ID="ID_837192274" MODIFIED="1693789248765" TEXT="...denn das w&#xfc;rde dem Stil der STL widersprechen">
<node CREATED="1693789905354" ID="ID_835555737" MODIFIED="1693789923944" TEXT="stattdessen gibt es...">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1693789853537" ID="ID_1646017528" MODIFIED="1693789870620" TEXT="std::unique_lock&lt;MUT&gt;"/>
<node CREATED="1693789912326" ID="ID_471001146" MODIFIED="1693789920140" TEXT="std::lock_guard&lt;MUT&gt;"/>
<node CREATED="1693789948428" ID="ID_993053508" MODIFIED="1693789955848" TEXT="std::scoped_lock"/>
</node>
</node>
<node CREATED="1693787422981" ID="ID_179766855" MODIFIED="1693787426728" TEXT="std::thread">
<node CREATED="1693787431388" ID="ID_1591799675" MODIFIED="1693787439172" TEXT="startet sofort bei Konstruktion (RAII)"/>
<node CREATED="1693787440188" ID="ID_56679749" MODIFIED="1693787459455" TEXT="nimmt eine auszuf&#xfc;hrende funktion"/>
<node CREATED="1693787459992" ID="ID_1545457780" MODIFIED="1693787478426" TEXT="kopiert alle dieser Funktion gegebenen Argumente"/>
<node CREATED="1693787489228" ID="ID_572651416" MODIFIED="1693787550552" TEXT="stellt sicher, da&#xdf; die Funktion im neuen Thread beim verlassen des Konstruktors gestartet ist"/>
<node CREATED="1693787562730" ID="ID_1462251093" MODIFIED="1693787585283" TEXT="join() wird unterst&#xfc;tzt"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1693783675300" FOLDED="true" ID="ID_1818177401" MODIFIED="1697427588954" TEXT="Entscheidungen">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="forward"/>
<node COLOR="#435e98" CREATED="1693783691433" ID="ID_279372215" MODIFIED="1694352793330" TEXT="Worker-Management selber bauen">
<icon BUILTIN="yes"/>
<node CREATED="1693783766735" ID="ID_912764109" MODIFIED="1693783781449" TEXT="und zwar in C++">
<node CREATED="1693783781989" ID="ID_1709905837" MODIFIED="1693783798679" TEXT="wegen Atomics &amp; Futures"/>
<node CREATED="1693783810401" ID="ID_1691365318" MODIFIED="1693783825729" TEXT="wegen Funktoren und Typsicherheit"/>
<node CREATED="1693783799406" ID="ID_516886484" MODIFIED="1693783805118" TEXT="wegen Portabilit&#xe4;t"/>
</node>
<node COLOR="#338800" CREATED="1694352635754" ID="ID_839402509" MODIFIED="1694352907504" TEXT="als eigenst&#xe4;ndige Komponente">
<arrowlink COLOR="#69db57" DESTINATION="ID_671611566" ENDARROW="Default" ENDINCLINATION="-836;-66;" ID="Arrow_ID_633013629" STARTARROW="None" STARTINCLINATION="-728;61;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1693787750689" ID="ID_1636630763" MODIFIED="1697427382424" TEXT="vault::Thread wird aufgegeben">
<icon BUILTIN="yes"/>
<node CREATED="1693787857875" ID="ID_1964973756" MODIFIED="1693787947679">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      die Limitierungen und der Threadpool waren <i>gut gemeint</i>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1693787905997" ID="ID_1862230955" MODIFIED="1693787943205" TEXT="aber: sie verlagern Architektur-Fragen in die LIbrary-Ebene">
<icon BUILTIN="closed"/>
<node CREATED="1693788079957" ID="ID_84816913" MODIFIED="1695312147060" TEXT="das ist bestenfalls wirkungslos">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...wenn es sich ohnehin nur um eine Einrichtung innerhalb einer bestimmten Applikation handelt, dann bleibt lediglich die Frage &#252;brig, wohin der Quell/Objektcode gepackt wird &#8212; wenn man ein bestimmtes Feature braucht, kann man es implementieren (und die bestehende Lib-Implementierung kann das nicht verhindern)
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1693788121089" ID="ID_553756560" MODIFIED="1695312764615" TEXT="schafft aber m&#xf6;glicherweise ungesunde Strukturen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Da Library-Funktionen ohne Weiteres genutzt werden, verleiten solche <i>eingebaute H&#252;rden</i>&#160;ehr dazu, schmutzige Workarounds zu machen
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1693788148236" ID="ID_1859841213" MODIFIED="1695312822573" TEXT="im allgemeineren Fall sollte ein Library sich nicht als Architekt bet&#xe4;tigen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Sprachmittel sind stets aus gutem Grund da. Entweder es gibt aktuell ad&#228;quaten Nutzen, oder es gab fr&#252;her mal einen relevanten Nutzen. Daher stellt es eine Kompetenz&#252;berschreitung dar, wenn jemand rundheraus behauptet, es sei <i>falsch</i>&#160;dieses Sprachmittel zu verwenden. Wenn man einen Anf&#228;nger ohne ausreichende Kompetenzen entlasten m&#246;chte, oder wenn man unter Einschr&#228;nkung ein bestimmtes Nutmuster vorgeben m&#246;chte, dann baut man ein <b>Framework</b>, und keine Library.
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#fed5c5" DESTINATION="ID_1859841213" ENDARROW="Default" ENDINCLINATION="1276;51;" ID="Arrow_ID_1453893581" SOURCE="ID_1803056303" STARTARROW="None" STARTINCLINATION="1738;-79;"/>
<node COLOR="#ee6e3b" CREATED="1695748033606" HGAP="157" ID="ID_1181956652" MODIFIED="1695748384597" TEXT="(das geht an mich selber)" VSHIFT="13">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Um das klar zu sagen: zwar hat Christian ein Verbot von &#187;join&#171; angedacht, aber <i>grade in dieser Frage war und bin ich absolut einer Meinung mit ihm. </i>Tats&#228;chlich war Christian sogar zur&#252;ckhaltender (&#8222;man sollte es deprecaten&#8220;) &#8212; und das hat <i>mich</i>&#160; dann auf die Idee gebracht, einen separaten &#187;Joinable&#171;-Wrapper zu schreiben. Und jetzt, viele Jahre sp&#228;ter stehe <i>ich an dem Punkt, </i>da&#223; es kein absehbares Usage-Pattern gibt, und mein Design von damals ungerchtfertigt erscheint.
    </p>
  </body>
</html></richcontent>
<edge COLOR="#de7676"/>
<font NAME="SansSerif" SIZE="10"/>
</node>
</node>
</node>
<node CREATED="1693788648105" ID="ID_426109467" MODIFIED="1695312840978">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      in allen sonstigen Eigenschaften hatte unsere Library-L&#246;sung <i>genau das Design</i>&#160;gew&#228;hlt,
    </p>
    <p>
      das sich nun auch im Standard als angemessen herausgebildet hat &#8212;
    </p>
    <p>
      aber die Standard-L&#246;sung ist ausgereifter und verwendet moderne Sprachmittel (Atomics)
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1695313755664" FOLDED="true" HGAP="-12" ID="ID_1075854169" MODIFIED="1697427583008" TEXT="Umstellung der Codebasis" VSHIFT="21">
<linktarget COLOR="#2b9d99" DESTINATION="ID_1075854169" ENDARROW="Default" ENDINCLINATION="-209;19;" ID="Arrow_ID_1264128118" SOURCE="ID_714565160" STARTARROW="None" STARTINCLINATION="56;7;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1695313774171" FOLDED="true" ID="ID_1529952681" MODIFIED="1696025089421" TEXT="spezielle Abh&#xe4;ngigkeiten">
<icon BUILTIN="help"/>
<node CREATED="1695313807671" ID="ID_1031643072" MODIFIED="1695313818061" TEXT="vault::Thread vs vault::ThreadJoinable">
<node CREATED="1695335467170" ID="ID_920953501" MODIFIED="1695335514560" TEXT="das erweist sich als praktische Abk&#xfc;rzung"/>
<node CREATED="1695335516996" ID="ID_1023062994" MODIFIED="1695335550147" TEXT="der normale Thread w&#xfc;rde sich dann stets am Ende selbst detachen"/>
<node CREATED="1695335555337" ID="ID_712387888" MODIFIED="1695335682482" TEXT="damit f&#xe4;llt ein Anla&#xdf; f&#xfc;r Fl&#xfc;chtigkeitsfehler weg"/>
<node CREATED="1695335705339" ID="ID_164690747" MODIFIED="1695335719461" TEXT="pa&#xdf;t damit zusammen, da&#xdf; wir auch einen try-catch-Block einbauen"/>
<node CREATED="1695392987999" ID="ID_109089425" MODIFIED="1695393002077" TEXT="wird (derzeit und absehbar) nur f&#xfc;r Tests verwendet">
<icon BUILTIN="info"/>
<node CREATED="1695393029161" ID="ID_1726147640" MODIFIED="1695393053763" TEXT="und daf&#xfc;r ist auch die Fehler-Weitergabe sinnvoll"/>
<node COLOR="#435e98" CREATED="1695393054345" ID="ID_582803458" MODIFIED="1696015399487" TEXT="also auch dieses Zusatz-Feature erhalten">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#435e98" CREATED="1696015411959" ID="ID_399469746" MODIFIED="1696015426502" TEXT="ausgebaut: kann nun sogar Ergebniswert transportieren">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node CREATED="1695313818614" ID="ID_470584516" MODIFIED="1695313837839" TEXT="Thread::syncPoint() / sync()">
<node CREATED="1695315415143" ID="ID_1102877346" MODIFIED="1695315425412" TEXT="bisherige Verwendungen">
<icon BUILTIN="info"/>
<node CREATED="1695313896379" ID="ID_234820417" MODIFIED="1695313904622" TEXT="CallQueue_test::verify_ThreadSafety">
<node CREATED="1695313928470" ID="ID_1264620312" MODIFIED="1695313943649" TEXT="dient hier zur Versch&#xe4;rfung des Thread"/>
<node CREATED="1695313944237" ID="ID_844947606" MODIFIED="1695313978092" TEXT="da wir &quot;nur&quot; 500 Iterationen fahren"/>
<node CREATED="1695313978944" ID="ID_820170937" MODIFIED="1695314027828" TEXT="...m&#xfc;ssen alle Worker m&#xf6;glichst gleichzeitig losrennen"/>
</node>
<node CREATED="1695315143388" ID="ID_356745606" MODIFIED="1695315156254" TEXT="microbenchmark.hpp : threadBenchmark()">
<node CREATED="1695315157154" ID="ID_1607681300" MODIFIED="1695315164920" TEXT="gleiche Problematik..."/>
<node CREATED="1695315165449" ID="ID_365200218" MODIFIED="1695315179331" TEXT="die Messung soll erst beginnen, wenn alle Threads starten"/>
<node CREATED="1695315180159" ID="ID_669527704" MODIFIED="1695315191154" TEXT="(und die Threads sollen m&#xf6;glichst gleichzeitig unterwegs sein)"/>
</node>
<node CREATED="1695314335069" ID="ID_841603246" MODIFIED="1695314336372" TEXT="SubsystemRunner_test">
<node CREATED="1695314337464" ID="ID_137940927" MODIFIED="1695314376718" TEXT="auch hier: zus&#xe4;tzliche Barriere f&#xfc;r beherrschbaren Test"/>
<node CREATED="1695314377451" ID="ID_1181532265" MODIFIED="1695314403731" TEXT="der Test spielt explizit das Scheitern in verschiedenen Phasen durch"/>
<node CREATED="1695314404385" ID="ID_1452050759" MODIFIED="1695314460156" TEXT="um die F&#xe4;lle klar unterscheiden zu k&#xf6;nnen, mu&#xdf; der Sub-Thread wenigstens laufen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      sonst k&#246;nnte der Fall nicht zuverl&#228;ssig getestet werden, da&#223; der Test-Runner selber kurz nach dem Start stirbt
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1695315325887" ID="ID_625375733" MODIFIED="1695315328199" TEXT="SessionCommandFunction_test">
<node CREATED="1695315329875" ID="ID_592889751" MODIFIED="1695315363091" TEXT="Threads erst nach Initialisierung der ganzen Klasse starten"/>
<node CREATED="1695315363798" ID="ID_146882783" MODIFIED="1695315376115" TEXT="die Klasse erbt von vault::Thread"/>
<node CREATED="1695315376877" ID="ID_1462759116" MODIFIED="1695315388279" TEXT="f&#xfc;gt aber noch weitere Felder hinzu"/>
<node CREATED="1695315389155" ID="ID_1933290982" MODIFIED="1695315407516" TEXT="und die Logik setzt wohldefinierten Anfangszustand vorraus"/>
</node>
<node CREATED="1695314551763" ID="ID_482710510" MODIFIED="1695314558086" TEXT="steam::control::DispatcherLoop">
<node CREATED="1695314559226" ID="ID_1190495284" MODIFIED="1695314574980" TEXT="verwendet eine eingebettete &#xbb;Looper&#xab;-Komponente"/>
<node CREATED="1695314579779" ID="ID_643512170" MODIFIED="1695314602498" TEXT="diese mu&#xdf; initialisiert sein, bevor der Session-Thread ihre Logik verwendet"/>
</node>
</node>
<node COLOR="#338800" CREATED="1695315426871" ID="ID_1792980090" MODIFIED="1695595904577" TEXT="&#x27f9; Ersatzkonstrukt zwingend notwendig">
<node CREATED="1695334520345" ID="ID_1748880887" MODIFIED="1695334539706" TEXT="sollte dann aber eine explizite Lib-Funktionalit&#xe4;t sein"/>
<node CREATED="1695334551413" ID="ID_257643954" LINK="https://stackoverflow.com/a/24218922" MODIFIED="1695334594067" TEXT="man k&#xf6;nnte ein spinning-latch mit yield verwenden">
<icon BUILTIN="idea"/>
<node CREATED="1695334637793" ID="ID_681204225" MODIFIED="1695334721438" TEXT="spinning ohne yield w&#xe4;re gef&#xe4;hrlich im allgemeinen Fall">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ein Spinlock sollte man nur verwenden, wenn man sicher sein kann, da&#223; man (a) fast nicht warten mu&#223; und (b) die CPU f&#252;r sich hat. Andernfalls kann das schlimmstenfalls zum Verhungern des ganzen Systems f&#252;hren...
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1695334757953" ID="ID_1716551234" MODIFIED="1695334788969">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Mutex + ConditionVar ist auch <i>gar nicht so schlecht</i>&#160;<font size="2">(aber noch schwergewichtiger)</font>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1695334869074" ID="ID_938671107" MODIFIED="1695335156463" TEXT="yield() gef&#xe4;llt mir &#x2014; weil es typischerweise genau um einen Thread-Schedule-delay geht">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Der Sprachstandard garantiert bereits, da&#223; der Thread startklar ist, wenn der std::thread-Konstruktor verlassen wird. Allerdings kann es immer passieren, da&#223; dummerweise der OS-Scheduler grade Anderes mit dieser CPU vor hat &#8212; und genau dann laufen wir in die Situation, vor der diese Sync-Barriere sch&#252;tzen soll; d.h. <i>sp&#228;testens nach einer Schedule-Runde</i>&#160;sollten alle Threads einmal vorbeigekommen sein.
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#6493ca" DESTINATION="ID_1673241488" ENDARROW="Default" ENDINCLINATION="210;16;" ID="Arrow_ID_2380452" STARTARROW="None" STARTINCLINATION="10;28;"/>
</node>
</node>
<node COLOR="#338800" CREATED="1695391836532" ID="ID_373841600" MODIFIED="1695484696067" TEXT="lib::SyncBarrier implementieren">
<icon BUILTIN="button_ok"/>
<node CREATED="1695391870343" ID="ID_500508570" MODIFIED="1695392284932" TEXT="bewu&#xdf;t nur zur Einmal-Verwendung">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Wiederverwendung nach automatischem <i>Reset nach Erf&#252;llung </i>ist in manchen Situationen verdammt t&#252;ckisch; ohnehin stellt ein Latch stets eine Deadlock-Gefahr dar.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1695391893285" ID="ID_33727698" MODIFIED="1695392105718" TEXT="k&#xf6;nnte ein Vorgriff sein auf std::latch">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...darauf l&#228;uft es n&#228;mlich hinaus; wenn wir tats&#228;chlich auf C++20 sind, sollte die genaue API-Semantik und das Laufzeitverhalten bewertet werden, um zu entscheiden, ob beide L&#246;sungen &#228;quivalent sind...
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1695392297550" ID="ID_1673241488" MODIFIED="1695392410883" TEXT="Entscheidung: verwende yield-wait">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Letztlich eine Entscheidung nach Bauchgef&#252;hl und ohne konkreten Anhaltspunkt; die Entscheidung kann erst &#252;berpr&#252;ft werden, wenn es belastbare Einsatz-Szenarien gibt
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#6493ca" DESTINATION="ID_1673241488" ENDARROW="Default" ENDINCLINATION="210;16;" ID="Arrow_ID_2380452" SOURCE="ID_938671107" STARTARROW="None" STARTINCLINATION="10;28;"/>
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1695392426479" ID="ID_281891239" MODIFIED="1695484818803" TEXT="Test per Load-Test">
<arrowlink COLOR="#2b3fa9" DESTINATION="ID_1220273122" ENDARROW="Default" ENDINCLINATION="169;-7;" ID="Arrow_ID_1739726561" STARTARROW="None" STARTINCLINATION="15;204;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1695502397746" HGAP="24" ID="ID_114527057" MODIFIED="1695514186294" TEXT="nebenbei entwickelt: reduce()-Operation &#xfc;ber Pipeline" VSHIFT="5">
<arrowlink COLOR="#6a889a" DESTINATION="ID_450087248" ENDARROW="Default" ENDINCLINATION="-1969;393;" ID="Arrow_ID_1649492875" STARTARROW="None" STARTINCLINATION="632;33;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1695514195746" ID="ID_274924384" MODIFIED="1695514212501" TEXT="extrahiert &#x27f6; IterExplorer">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1695580020491" ID="ID_1772729195" MODIFIED="1695580029633" TEXT="Fazit">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="forward"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#5b3f20" CREATED="1695583819999" ID="ID_389670039" MODIFIED="1695584410343" TEXT="Yess... die klassische L&#xf6;sung ist viel aufwendiger...">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...trotzdem war ich &#252;berrascht, <i>um wie viel langsamer</i>&#160;sie ist; das kann ich mir eigentlich nur dadurch erkl&#228;ren, da&#223; die Threads <i>in einen Schlafzustand versetzt </i>werden, ggfs auch bereits schon beim Versuch, die exclusive Zone zu betreten. M&#246;glicherweise dauert es auch grunds&#228;tzlich l&#228;nger, bis ein schlafender Thread &#252;berhaupt wieder aufgeweckt wird. Die Progression scheint allerdings linear in der Zahl der Threads zu sein, w&#228;hrend die Atomic-yield-Implementierung etwas &#252;berproportional langsamer wird. Das ist jetzt aber mehr Intuition, denn jenseits von 8 Threads gibt es ja zunehmend Stau im OS-Scheduler
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1695580030937" ID="ID_634357060" MODIFIED="1695580179481" TEXT="die Performance von SyncBarrier ist ad&#xe4;quat f&#xfc;r den Einsatzzweck"/>
<node CREATED="1695580048111" ID="ID_784900194" MODIFIED="1695596554665" TEXT="es ist kein Overhead beobachtbar &#x2014; jenseits der typischen Scheduling-Unsch&#xe4;rfe">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Zum einen handelt es sich um bekannte Erfahrungswerte, zumindest f&#252;r die F&#228;lle mit wenigen Threads: da&#223; zwei zusammen gestartete Threads um bis zu 0.5&#181;s auseinanderlaufen, ist erwartbar, wesentlich mehr aber nicht ohne Weiteres. Und dann l&#228;&#223;t es sich best&#228;tigen, indem die Implementierung versuchsweise auf <b>busy-wait</b>&#160;umgestellt wird &#10233; f&#252;r kleine Anzahl Threads bleiben die Me&#223;werte nahezu unver&#228;ndert (sie sind minimal schlechter, aber das System geht auch in Vollast). Das bedeutet: die beobachteten Werte stellen bereits nahezu optimales Verhalten dar, f&#252;r kleine Anzahl Threads.
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#c6fdd1" DESTINATION="ID_1515850328" ENDARROW="Default" ENDINCLINATION="-864;-29;" ID="Arrow_ID_1385448927" STARTARROW="None" STARTINCLINATION="99;698;"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1695580207961" ID="ID_1915318856" MODIFIED="1695580215897" TEXT="auf C++20 warten....">
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
</node>
<node CREATED="1695336070266" ID="ID_1892470569" MODIFIED="1695336082188" TEXT="Thread::invokedWithinThread()">
<node CREATED="1695336097750" ID="ID_84784760" MODIFIED="1695336130714" TEXT="es gibt genau einen use-Case (in DispatcherLoop)"/>
<node CREATED="1695336140400" ID="ID_661758467" MODIFIED="1695336193541" TEXT="man k&#xf6;nnte diese Funktion mit Stdlib-Mitteln auch realisieren (std::this_thread::get_id)"/>
<node CREATED="1695336202544" ID="ID_818516761" MODIFIED="1695336271068" TEXT="daf&#xfc;r spricht, da&#xdf; dadurch eine Abstraktion geschaffen wird"/>
</node>
</node>
<node COLOR="#338800" CREATED="1695336491346" FOLDED="true" ID="ID_940191365" MODIFIED="1697427203186" TEXT="Code-Anordnung">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1695339482171" ID="ID_781380757" MODIFIED="1697409754361" TEXT="Thread-Pool deaktivieren">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1695339498617" ID="ID_1329617125" MODIFIED="1697409761254" TEXT="umgezogene Tests gebrochen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      solange sie noch auf den alten Code gehen, der den Threadpool voraussetzt (welcher aber f&#252;r Library-Tests nicht zugelinkt wird)
    </p>
  </body>
</html></richcontent>
<node CREATED="1695339558729" ID="ID_1181374984" MODIFIED="1695512067599" TEXT="SyncLocking_test">
<arrowlink COLOR="#7788a3" DESTINATION="ID_1548667731" ENDARROW="Default" ENDINCLINATION="-97;-50;" ID="Arrow_ID_1461533786" STARTARROW="None" STARTINCLINATION="-396;62;"/>
</node>
<node CREATED="1695339549851" ID="ID_1030547189" MODIFIED="1695339553543" TEXT="SyncClasslock_test"/>
<node CREATED="1695339568255" ID="ID_288867443" MODIFIED="1695339574891" TEXT="ThreadWrapper_test"/>
<node CREATED="1695339580526" ID="ID_592772431" MODIFIED="1695339584105" TEXT="ThreadWrapperJoin_test"/>
<node CREATED="1695339596332" ID="ID_164644014" MODIFIED="1695339607086" TEXT="ThreadWrapperSelfRecognition_test"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1695340324306" ID="ID_708290532" MODIFIED="1695340369662" TEXT="threadpool-init">
<icon BUILTIN="messagebox_warning"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1695340372505" ID="ID_115540630" MODIFIED="1695340397384" TEXT="war ohnehin ein Workaround, da backend-init gar nicht mehr l&#xe4;uft">
<icon BUILTIN="clanbomber"/>
</node>
<node COLOR="#338800" CREATED="1695340337153" ID="ID_1494450459" MODIFIED="1695340350326" TEXT="vorerst noch belassen, damit die Applikation selber noch startf&#xe4;hig ist">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1695340351463" ID="ID_1816356053" MODIFIED="1697409743782" TEXT="schlie&#xdf;lich zur&#xfc;ckbauen">
<icon BUILTIN="button_ok"/>
<node CREATED="1697409730713" ID="ID_1671925835" MODIFIED="1697409736116" TEXT="wird nicht mehr gelinkt"/>
<node CREATED="1697409736687" ID="ID_248286593" MODIFIED="1697409741492" TEXT="Applikation startet trotzdem"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1695336500985" ID="ID_1001374907" MODIFIED="1697427188570" TEXT="alles wieder in die Support-Library ziehen">
<icon BUILTIN="yes"/>
<node CREATED="1695336524821" ID="ID_625640883" MODIFIED="1695336587478" TEXT="Begr&#xfc;ndung: es ist kein &#xbb;Vault-Feature&#xab; mehr">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Denn wir betreiben hier nun keine System-Einrichtungen mehr, keinen Resource-Collector und keinen Threadpool. Es handelt sich lediglich um Adapter &#252;ber der Std-Lib
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1695336588389" ID="ID_1245830716" MODIFIED="1695336597664" TEXT="au&#xdf;erdem erleichtert das den Schwenk"/>
<node COLOR="#338800" CREATED="1695657155843" ID="ID_750029588" MODIFIED="1697407987648" TEXT="sub-Namespace lib::thread einf&#xfc;hren">
<linktarget COLOR="#6e85a1" DESTINATION="ID_750029588" ENDARROW="Default" ENDINCLINATION="-741;56;" ID="Arrow_ID_1885189676" SOURCE="ID_463997820" STARTARROW="None" STARTINCLINATION="-489;0;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1695657225338" ID="ID_364087685" MODIFIED="1695657235348" TEXT="dorthin die Basis-Hilfsmittel"/>
<node CREATED="1695657239296" ID="ID_1286550155" MODIFIED="1695657258969" TEXT="was sonst? die Wrapper / Adapter"/>
<node CREATED="1695657259656" ID="ID_637244893" MODIFIED="1695657265304" TEXT="aber nicht die front-Ends">
<icon BUILTIN="yes"/>
</node>
</node>
<node BACKGROUND_COLOR="#cfc0cd" COLOR="#435e98" CREATED="1695340272418" ID="ID_1240703198" MODIFIED="1697410103650" TEXT="Code aus namespace vault zur&#xfc;ckbauen">
<arrowlink COLOR="#513149" DESTINATION="ID_1900156892" ENDARROW="Default" ENDINCLINATION="388;-278;" ID="Arrow_ID_765265606" STARTARROW="None" STARTINCLINATION="261;17;"/>
<icon BUILTIN="bell"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1695606751304" ID="ID_933215857" MODIFIED="1697409136964" TEXT="TICKET #844 wird obsolet">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node CREATED="1697409015346" ID="ID_1232649070" MODIFIED="1697409029264" TEXT="hatte ich seinerzeit angelegt"/>
<node CREATED="1697409029848" ID="ID_527431019" MODIFIED="1697409072894" TEXT="...aus den TODOs in dem Threadpool-Code">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      &#160;* thread_loop: ensure no error remains pending.
    </p>
    <p>
      &#160;* trigger application shutdown in case of unrecoverable errors
    </p>
    <p>
      &#160;* lumiera_threadpool_acquire_thread: error handling (in collaboration with the resourcecollector)
    </p>
    <p>
      &#160;* lumiera_thread_sync: error handing, maybe timed mutex (using the threads heartbeat timeout, shortly before timeout)
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1697409073664" ID="ID_999004956" MODIFIED="1697409087180" TEXT="dieser ist jetzt komplett stillgelegt und wird zur&#xfc;ckgebaut"/>
<node COLOR="#435e98" CREATED="1697409095473" ID="ID_558447852" MODIFIED="1697409124492" TEXT="&#x27f6; reserviere die sch&#xf6;ne Ticket-Nummer f&#xfc;r die Zukunft"/>
</node>
</node>
<node COLOR="#338800" CREATED="1695597040159" ID="ID_215388471" MODIFIED="1695597196367" TEXT="eine Kopie der bestehenden L&#xf6;sung &#x27fc; lib/thread.hpp">
<arrowlink COLOR="#6ebe5a" DESTINATION="ID_125138411" ENDARROW="Default" ENDINCLINATION="43;-18;" ID="Arrow_ID_195305087" STARTARROW="None" STARTINCLINATION="-113;6;"/>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1695394188133" ID="ID_1229328590" MODIFIED="1697427225090" TEXT="Umbau">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1695597011139" ID="ID_125138411" MODIFIED="1696538202836" TEXT="Kopie des bestehenden Thread-Wrappers umarbeiten">
<arrowlink COLOR="#499ca8" DESTINATION="ID_956380031" ENDARROW="Default" ENDINCLINATION="-1261;104;" ID="Arrow_ID_482806479" STARTARROW="None" STARTINCLINATION="-1063;-42;"/>
<linktarget COLOR="#6ebe5a" DESTINATION="ID_125138411" ENDARROW="Default" ENDINCLINATION="43;-18;" ID="Arrow_ID_195305087" SOURCE="ID_215388471" STARTARROW="None" STARTINCLINATION="-113;6;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1695394205547" ID="ID_1719816317" MODIFIED="1697393757628" TEXT="Tests umstellen und modernisieren">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1695394270093" FOLDED="true" ID="ID_585437655" MODIFIED="1697389667338" TEXT="ThreadWrapper_test">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1695911786871" ID="ID_1371513124" MODIFIED="1695911794232" TEXT="l&#xe4;uft nach Umstellung">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1695915511991" ID="ID_1888383911" MODIFIED="1695915563604" TEXT="Erg&#xe4;nzung: Konstruktor f&#xfc;r eigene Memberfunktion">
<arrowlink COLOR="#7898aa" DESTINATION="ID_1296792416" ENDARROW="Default" ENDINCLINATION="-613;39;" ID="Arrow_ID_1122896333" STARTARROW="None" STARTINCLINATION="88;-226;"/>
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1695394288052" ID="ID_1407826381" MODIFIED="1695395666211" TEXT="Kritik: der testet nicht punktgenau">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Dieser Test ist zwar <i>pfiffig</i>&#160;geschrieben, aber er testet eigentlich den Sync/Monitor, nicht den Thread-Wrapper. In der aktuellen Form ist er sogar nahe an der Thema-Verfehlung, weil &#252;berhaupt nicht getestet wird, <i>da&#223; mehrere Threads gestartet wurden und gelaufen sind</i>
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#fedec1" DESTINATION="ID_1532807851" ENDARROW="Default" ENDINCLINATION="416;-16;" ID="Arrow_ID_1646166026" STARTARROW="None" STARTINCLINATION="479;36;"/>
</node>
<node COLOR="#338800" CREATED="1696007772427" ID="ID_1815976624" MODIFIED="1696007791627" TEXT="einfachste Verwendung zeigen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1695394519627" ID="ID_776125132" MODIFIED="1696002223375" TEXT="testen: individuelle Argument&#xfc;bergabe">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1695394418004" ID="ID_1846217863" MODIFIED="1696002269162" TEXT="testen: ein Aufruf pro Thread hat stattgefunden">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...indem man testet, da&#223; eine bestimmte Berechnung stattgefunden hat
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1696007745882" ID="ID_523093343" MODIFIED="1696007928650" TEXT="Zeitmessung &#x27f9; Beweis der Parallelisierung">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Da ich jetzt einen einfachsten Fall habe, kann der eigentliche Test doch wieder etwas komplexer sein...
    </p>
    <ul>
      <li>
        in jeden Thread ist eine zuf&#228;llige Verz&#246;gerung eingebaut (1&#181;s &lt; 1ms)
      </li>
      <li>
        mache ein Benchmark &#252;ber das Starten-warten-Pr&#252;fen
      </li>
      <li>
        die <i>durchschnittliche</i>&#160;Zeit mu&#223; kleiner sein, als die sequentielle Ausf&#252;hrung aller durchschinittlichen Wartezeiten
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1695394665822" FOLDED="true" ID="ID_881973960" MODIFIED="1696015353416" TEXT="ThreadWrapperJoin_test">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1695911786871" ID="ID_1004221223" MODIFIED="1695911801372" TEXT="l&#xe4;uft nach Umstellung">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#5b280f" CREATED="1695394703974" ID="ID_1918931115" MODIFIED="1696015368741" TEXT="erscheint bereits ad&#xe4;quat">
<icon BUILTIN="yes"/>
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#338800" CREATED="1696009922459" ID="ID_1972276036" MODIFIED="1696015355517" TEXT="modernisieren kann man ihn trotzdem">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1696009997026" ID="ID_674091759" MODIFIED="1696015360374" TEXT="&#x3bb; binden"/>
<node COLOR="#435e98" CREATED="1696010004869" ID="ID_819043932" MODIFIED="1696015360374" TEXT="warten per chrono-Angabe"/>
</node>
<node COLOR="#338800" CREATED="1696010020799" ID="ID_698469449" MODIFIED="1696015357116" TEXT="neue Funktionalit&#xe4;t abdecken">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1696010033020" ID="ID_349091998" MODIFIED="1696015360374" TEXT="R&#xfc;ckgabewert"/>
<node COLOR="#435e98" CREATED="1696010036948" ID="ID_440877573" MODIFIED="1696015360375" TEXT="Fehlerbehandlung"/>
</node>
</node>
<node COLOR="#338800" CREATED="1695394744028" FOLDED="true" ID="ID_1755648327" MODIFIED="1696025182064" TEXT="ThreadWrapperSelfRecognition_test">
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1695911804614" ID="ID_174546781" MODIFIED="1695911929623" TEXT="Scheitert mit Fehler">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      <font face="Monospaced" size="2">### Lumiera halted due to an unexpected Error ### </font>
    </p>
    <p>
      
    </p>
    <p>
      <font face="Monospaced" size="2">+++ Caught Exception LUMIERA_ERROR_INVALID:invalid input or parameters </font>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="broken-line"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1696023930450" ID="ID_1910034301" MODIFIED="1696023935701" TEXT="nicht mehr reproduzierbar"/>
<node CREATED="1696023936220" ID="ID_1057418547" MODIFIED="1696023963855" TEXT="(inzwischen diverse Fixes zum Binding)"/>
</node>
<node COLOR="#77b3ba" CREATED="1696025158721" ID="ID_299445816" MODIFIED="1696025179668" TEXT="auch diesen Test kann man jetzt viel knapper schreiben">
<icon BUILTIN="smiley-oh"/>
</node>
<node COLOR="#435e98" CREATED="1696023965128" ID="ID_300657180" MODIFIED="1696025025547" TEXT="besser explizit den bool-Wert in den Main-Thread bringen">
<icon BUILTIN="idea"/>
<node CREATED="1696023991959" ID="ID_1226872902" MODIFIED="1696024013956" TEXT="jetzt wo wir das so ganz locker k&#xf6;nnen">
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1696024808008" ID="ID_609747317" MODIFIED="1696025021431" TEXT="zirkul&#xe4;rer Bezug &#x27f9; template parameter deduction unm&#xf6;glich">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...das ist <i>interessant,</i>&#160;aber nicht kritisch; und zwar weil ich den Test jetzt umgeschrieben habe auf ein Lambda, und gar keine eigenst&#228;ndige Klasse mehr verwende &#8212; viel spannender ist, da&#223; der C++ - Compiler &#252;berhaupt schafft, solchen Code zu &#8222;knacken&#8220;
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#338800" CREATED="1696025030399" ID="ID_838223706" MODIFIED="1696025042055" TEXT="auch gepr&#xfc;ft da&#xdf; es funktioniert (mal die Logik umgedreht)">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1696538756712" ID="ID_1037865278" LINK="#ID_1688404846" MODIFIED="1697079830508" TEXT="ThreadWrapperAutonomous_test">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1696538825003" ID="ID_1146104670" LINK="#ID_1787030725" MODIFIED="1697079831677" TEXT="ThreadWrapperLifecycle_test">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1695394753483" FOLDED="true" ID="ID_1338410455" MODIFIED="1696030309964" TEXT="SyncBarrier_test">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1695394763010" ID="ID_1220273122" MODIFIED="1695484703977" TEXT="neuer Test f&#xfc;r neue (interims-) Implementierung">
<linktarget COLOR="#2b3fa9" DESTINATION="ID_1220273122" ENDARROW="Default" ENDINCLINATION="169;-7;" ID="Arrow_ID_1739726561" SOURCE="ID_281891239" STARTARROW="None" STARTINCLINATION="15;204;"/>
<icon BUILTIN="info"/>
</node>
<node COLOR="#435e98" CREATED="1695394861413" ID="ID_1334580079" MODIFIED="1695584537670" TEXT="auch gleich Performance-Test vorbereiten">
<icon BUILTIN="yes"/>
<node CREATED="1695484718567" ID="ID_1410950559" MODIFIED="1695484726450" TEXT="wird dann aber zu komplex"/>
<node CREATED="1695484727006" ID="ID_1647325641" MODIFIED="1695484735937" TEXT="Performance-Test braucht andere Zielsetzung"/>
<node CREATED="1695484752994" ID="ID_53306211" MODIFIED="1695484793336" TEXT="grunds&#xe4;tzlich aber sofort w&#xfc;nschenswert">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      nicht mutma&#223;en &#8212; messen!
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node COLOR="#435e98" CREATED="1695484736861" ID="ID_1096160672" MODIFIED="1695578008698" TEXT="als separaten Test realisieren">
<arrowlink COLOR="#5c9ed1" DESTINATION="ID_541502581" ENDARROW="Default" ENDINCLINATION="42;-52;" ID="Arrow_ID_499645960" STARTARROW="None" STARTINCLINATION="-155;12;"/>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1695520134480" FOLDED="true" ID="ID_541502581" MODIFIED="1695584521535" TEXT="SyncBarrierPerformance_test">
<linktarget COLOR="#5c9ed1" DESTINATION="ID_541502581" ENDARROW="Default" ENDINCLINATION="42;-52;" ID="Arrow_ID_499645960" SOURCE="ID_1096160672" STARTARROW="None" STARTINCLINATION="-155;12;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1695520189953" ID="ID_1322342349" MODIFIED="1695576421762" TEXT="microbenchmark.hpp &#xd83e;&#xdc46; threadBenchmark() verwenden">
<icon BUILTIN="idea"/>
<node CREATED="1695520227667" ID="ID_213769660" MODIFIED="1695520325171" TEXT="das enth&#xe4;lt bereits den gesamten Testaufbau">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1695520248759" ID="ID_546717872" MODIFIED="1695520320484" TEXT="einschlie&#xdf;lich des Startens und koordinierens von Messungen in mehreren Threads">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1695562071621" ID="ID_525502040" MODIFIED="1695562634133" TEXT="wurde bisher nur f&#xfc;r Experimente verwendet &#x2014; lediglich benchmarkTime() ist im Einsatz">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...was mich nun schon mehrfach verwundert hat; aber letzten Endes habe ich bisher noch nicht viele Performance-Tests gemacht, weil sie sozusagen <i>m&#252;hsam</i>&#160;sind: Sie kosten Laufzeit in der Suite, sind aufwendig einzurichten, und es ist schwer, eine Testbedingung zu finden, die auch in Debug-Builds zuverl&#228;ssig gepr&#252;ft werden kann. Die einzigen Tests, die bisher massiv multi-thraded testen, sind noch aus der Anfangszeit, und direkt gecodet. Insgesamt hat sich dieser Header aus anla&#223;bezogenen Testaufbauten entwickelt, und es g&#228;be noch einige weitere Stellen, wo man eine direkt gecodete Test-Loop dadurch ersetzen k&#246;nnte. Bisher war n&#228;mlich auch ein Hindernis, da&#223; Thread-bezogene Hilfsmittel erst in &#187;Core&#171; verf&#252;gbar waren, nicht in &#187;Lib&#171;
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#338800" CREATED="1695562641120" ID="ID_1963760164" MODIFIED="1695571688888" TEXT="mu&#xdf; zun&#xe4;chst auf C++17 -  Threads umgestellt werden">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Denn der neue Thread-Wrapper ist noch nicht da &#8212; daf&#252;r brauche ich ja grade die SyncBarrier, die hier zu testen w&#228;re. Und die bestehende Implementierung verwendet noch das alte POSIX-basierte Framework, was direkt an den Threadpool gekn&#252;pft war, und deshalb eigens <i>als ein Subsystem gestartet</i>&#160;werden mu&#223;; daher konnte dieser Header bisher auch nicht in Lib-Tests zum Einsatz kommen
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#3c3791" DESTINATION="ID_133306105" ENDARROW="Default" ENDINCLINATION="1998;124;" ID="Arrow_ID_1396114463" STARTARROW="None" STARTINCLINATION="1117;-1000;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1695562801107" ID="ID_1305278051" MODIFIED="1695566296760" TEXT="Umstellung">
<icon BUILTIN="button_ok"/>
<node CREATED="1695562804418" ID="ID_1601903378" MODIFIED="1695562811272" TEXT="weitgehend ein drop-in..."/>
<node CREATED="1695562811769" ID="ID_1945863174" MODIFIED="1695578921353" TEXT="Tja... Gru&#xdf; vom Ei an die Henne &#x2014; brauche die SyncBarrier...">
<icon BUILTIN="smiley-oh"/>
</node>
<node COLOR="#2d6a67" CREATED="1695562841861" ID="ID_1965453507" MODIFIED="1695566351497" TEXT="&#x201e;zum Gl&#xfc;ck&#x201c; funktioniert diese wenigstens schon...">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
<node COLOR="#435e98" CREATED="1695566299873" ID="ID_1545790418" MODIFIED="1695566327141" TEXT="wird sogar einfacher: jetzt nur noch eine einzige N+1 - Barriere">
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#338800" CREATED="1695563047316" FOLDED="true" ID="ID_1123019906" MODIFIED="1695570951334" TEXT="gleich als erstes hiermit testen">
<icon BUILTIN="button_ok"/>
<node CREATED="1695568964885" ID="ID_261237084" MODIFIED="1695568973637" TEXT="im Debug-Build beobachtet..."/>
<node CREATED="1695568952639" ID="ID_730113901" MODIFIED="1695568963273" TEXT="nur Aufrufe z&#xe4;hlen ... 20ns"/>
<node CREATED="1695569994732" ID="ID_1750944214" MODIFIED="1695570016911" TEXT="+exzessive Threads ... 5ns">
<node CREATED="1695570023744" ID="ID_626916303" MODIFIED="1695570034779" TEXT="das ist verbl&#xfc;ffend...."/>
<node CREATED="1695570035510" ID="ID_1039856614" MODIFIED="1695570124318" TEXT="bereits ab 100 Threads konvergiert der Wert &#x27f6; 5ns"/>
<node CREATED="1695570067186" ID="ID_638076677" MODIFIED="1695570090555" TEXT="5000 Threads schafft das System noch, 10000 nicht"/>
</node>
<node CREATED="1695570615265" ID="ID_942892333" MODIFIED="1695570669289" TEXT="sleep 1ms (debug) ... 1114ms"/>
<node CREATED="1695570671194" ID="ID_617684778" MODIFIED="1695570697458" TEXT="sleep 1ms (release) ... 1107ms"/>
<node CREATED="1695570744871" ID="ID_1526354122" MODIFIED="1695570847593" TEXT="sleep 1&#xb5;s (debug|release) ... 71ms"/>
<node CREATED="1695572701429" ID="ID_1543309754" MODIFIED="1695572907114" TEXT="rand() % 1000 ... 2&#xb5;s">
<node CREATED="1695572813020" ID="ID_1993732741" MODIFIED="1695572827525" TEXT="kein Unterschied debug|release feststellbar"/>
<node CREATED="1695573041485" ID="ID_103298107" MODIFIED="1695573046130" TEXT="mit 8 Threads"/>
<node CREATED="1695572829848" ID="ID_244365679" MODIFIED="1695573101478" TEXT="w&#xe4;chst stark an mit exzessiven Threads">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <ul>
      <li>
        1 Thread 100ns
      </li>
      <li>
        2 Threads = 400ns
      </li>
      <li>
        100 Threads &#10230; 20&#181;s
      </li>
      <li>
        1000 Threads &#10230; 250&#181;s
      </li>
      <li>
        2000 Threads &#10230; 500&#181;s
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1695573047260" ID="ID_1418903203" MODIFIED="1695573271716" TEXT="&#x27f9; contention in std::rand() selber">
<arrowlink COLOR="#e65386" DESTINATION="ID_356517631" ENDARROW="Default" ENDINCLINATION="343;0;" ID="Arrow_ID_1674760651" STARTARROW="None" STARTINCLINATION="109;97;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1695563216372" FOLDED="true" ID="ID_1395929746" MODIFIED="1695571677350" TEXT="sollte au&#xdf;erdem Ergebnisse einheitlich in &#xb5;-Sec angeben">
<icon BUILTIN="yes"/>
<node COLOR="#435e98" CREATED="1695563494966" ID="ID_1097455607" MODIFIED="1695564030911" TEXT="&#xb5; oder Nanos?">
<node CREATED="1695563815435" ID="ID_1599427397" MODIFIED="1695563845016">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Nanos w&#228;ren die <i>nat&#252;rliche Skala</i>&#160;f&#252;r moderne PCs
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1695563851759" ID="ID_1924352909" MODIFIED="1695564024805" TEXT="aber die Me&#xdf;technik fluktuiert um &#xb1;10ns">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1695563918078" ID="ID_1946031951" MODIFIED="1695564027813" TEXT="und Debug-Builds sind mindestens um Faktor 10 lansamer">
<icon BUILTIN="info"/>
</node>
<node CREATED="1695563975798" ID="ID_1421467296" MODIFIED="1695564018596" TEXT="in den seltensten F&#xe4;llen zielt Optimierung auf den ns-Bereich">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1695563947563" ID="ID_1808955162" MODIFIED="1695563969571" TEXT="&#x27f9; sinnvoll, die Konvention auf &#xb5;-Sek zu setzen"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1695564287093" ID="ID_1783910625" MODIFIED="1695564327547" TEXT="k&#xf6;nnte konfigurierbar sein">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      sollte das mal wirklich zum Problem werden: man k&#246;nnte den SCALE-Parameter als letztes default-Argument durchgeben
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="hourglass"/>
</node>
<node COLOR="#338800" CREATED="1695564031951" ID="ID_1065210492" MODIFIED="1695566287603" TEXT="bestehende Verwendung (BlockFlow) &#xfc;berpr&#xfc;fen">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1695566545744" FOLDED="true" ID="ID_1075251985" MODIFIED="1695571897063" TEXT="zus&#xe4;tzlich auch hier eine Checksumme konstruieren">
<arrowlink COLOR="#9da4ba" DESTINATION="ID_691644019" ENDARROW="Default" ENDINCLINATION="2059;113;" ID="Arrow_ID_613151166" STARTARROW="None" STARTINCLINATION="212;-242;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1695566556126" ID="ID_945962442" MODIFIED="1695571680824" TEXT="damit beide &#xb5;Benchmark-Varianten gleich funktionieren"/>
<node CREATED="1695571739899" ID="ID_923130398" MODIFIED="1695571886589" TEXT="auch f&#xfc;r diese Variante jeweils die Index-Nr der Schleife mitgeben">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      f&#252;r den BlockFlow-Test habe ich das definitiv gebraucht, um damit eine &#187;Zeitachse&#171; zu konstruieren; und auch f&#252;r multithreaded-Tests ist das <i>innerhalb des einzelnen Thread</i>&#160;durchaus sinnvoll (&#10233; siehe SyncBarrierPerformance_test)
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#cdfec9" DESTINATION="ID_923130398" ENDARROW="Default" ENDINCLINATION="237;10;" ID="Arrow_ID_1461218299" SOURCE="ID_1496662834" STARTARROW="None" STARTINCLINATION="442;0;"/>
</node>
<node CREATED="1695566587258" ID="ID_1050684755" MODIFIED="1695571680824" TEXT="klar: Checksumme geht mit in die Zeitmessung ein">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1695566610463" ID="ID_782576686" MODIFIED="1695571680824" TEXT="...weshalb man ohnehin stets einen Leer-Test mitlaufen l&#xe4;&#xdf;t">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1695520277301" ID="ID_1344433011" MODIFIED="1695571901674" TEXT="zu l&#xf6;sendes Problem: jede Wiederholung mu&#xdf; eigene SyncBarrier verwenden">
<arrowlink COLOR="#ea3074" DESTINATION="ID_981509025" ENDARROW="Default" ENDINCLINATION="36;-4;" ID="Arrow_ID_814241600" STARTARROW="None" STARTINCLINATION="-34;31;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node COLOR="#338800" CREATED="1695520329734" ID="ID_344199195" MODIFIED="1695576430771" TEXT="Test-Subjekt bereitstellen">
<icon BUILTIN="button_ok"/>
<node COLOR="#5b280f" CREATED="1695520406580" ID="ID_272009087" MODIFIED="1695573138783" TEXT="Schritte">
<icon BUILTIN="button_cancel"/>
<node CREATED="1695520346180" ID="ID_995725888" MODIFIED="1695520387409" TEXT="zieht Zufallszahl"/>
<node CREATED="1695520387927" ID="ID_1974336200" MODIFIED="1695520393785" TEXT="bucht diese in gemeinsame Summe ein"/>
<node CREATED="1695520394301" ID="ID_1312298087" MODIFIED="1695520403712" TEXT="-- Barriere --"/>
</node>
<node COLOR="#435e98" CREATED="1695573146447" ID="ID_94963087" MODIFIED="1695576390583" TEXT="nein: wirklich nur die Barriere selber testen">
<icon BUILTIN="yes"/>
<node CREATED="1695573162664" ID="ID_1144239068" MODIFIED="1695573174175" TEXT="das ganze Zufalszahlen-Ged&#xf6;ns erzeugt nur Overhead"/>
<node CREATED="1695573176386" ID="ID_1046039595" MODIFIED="1695573203483" TEXT="allein die Atomics in der Barriere und die Checksum aus der Schleife gen&#xfc;gen"/>
<node CREATED="1695573208319" ID="ID_356517631" MODIFIED="1695573277276" TEXT="ohnehin w&#xe4;re in std::rand() eine Contention">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      es ist ja ein einziger Zufallszahlengenerator, und es w&#228;re eine schlechte Idee, wenn die Stdlib das nicht gegen concurrency sch&#252;tzen w&#252;rde
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#e65386" DESTINATION="ID_356517631" ENDARROW="Default" ENDINCLINATION="343;0;" ID="Arrow_ID_1674760651" SOURCE="ID_1418903203" STARTARROW="None" STARTINCLINATION="109;97;"/>
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1695520417146" FOLDED="true" ID="ID_981509025" MODIFIED="1695578886843" STYLE="fork" TEXT="Barrieren sind one-time &#x27f9; jedes Mal eine frische Barriere verwenden">
<linktarget COLOR="#ea3074" DESTINATION="ID_981509025" ENDARROW="Default" ENDINCLINATION="36;-4;" ID="Arrow_ID_814241600" SOURCE="ID_1344433011" STARTARROW="None" STARTINCLINATION="-34;31;"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1695520521305" ID="ID_565934195" MODIFIED="1695576381051" TEXT="Trick: lokalen Index-Z&#xe4;hler">
<node COLOR="#5b280f" CREATED="1695520620415" ID="ID_525313862" MODIFIED="1695576381051" TEXT="im Instanz-Binding">
<icon BUILTIN="button_cancel"/>
<node CREATED="1695520624982" ID="ID_571654423" MODIFIED="1695576381051" TEXT="geht nicht &#x2014; Reihenfolge nicht derministisch">
<icon BUILTIN="broken-line"/>
</node>
<node CREATED="1695520632949" ID="ID_1576195360" MODIFIED="1695576381051" TEXT="alle Aufrufe aller Threads verwenden die gleiche Funktor-Instanz"/>
</node>
<node COLOR="#5b280f" CREATED="1695520674176" ID="ID_654794280" MODIFIED="1695576381051" TEXT="dann also thread-local!">
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#338800" CREATED="1695571697201" ID="ID_1496662834" MODIFIED="1695576401430" TEXT="oder besser: Index-Nr vom Test-Setup durchgeben">
<arrowlink COLOR="#cdfec9" DESTINATION="ID_923130398" ENDARROW="Default" ENDINCLINATION="237;10;" ID="Arrow_ID_1461218299" STARTARROW="None" STARTINCLINATION="442;0;"/>
<icon BUILTIN="forward"/>
</node>
</node>
<node CREATED="1695520704787" ID="ID_1222035908" MODIFIED="1695576381051" TEXT="Zugriff auf globales Array mit Barrieren">
<node CREATED="1695520714522" ID="ID_1262659090" MODIFIED="1695576381052" TEXT="diese sind bereits vor Start der Threads initialisiert"/>
<node CREATED="1695520734144" ID="ID_711548094" MODIFIED="1695576381052" TEXT="und gelten somit als konstant / bekannt"/>
<node CREATED="1695520753672" ID="ID_931724973" MODIFIED="1695576381052" TEXT="innerhalb der Barrieren sorgen die Atomics f&#xfc;r die Ausf&#xfc;hrungs-Ordnung"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1695520815389" ID="ID_1048729690" MODIFIED="1695576368995" TEXT="Typ der Barrieren selber soll parametrisierbar sein">
<icon BUILTIN="yes"/>
<node CREATED="1695520831787" ID="ID_896881773" MODIFIED="1695520844085" TEXT="damit wir verschiedene Implementierungen vergleichen k&#xf6;nnen">
<node CREATED="1695520844889" ID="ID_457187259" MODIFIED="1695520849969" TEXT="gar keine Barriere (Dummy)"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1695520852232" ID="ID_1708333419" MODIFIED="1695576127756" TEXT="ein Mutex-Lock?">
<icon BUILTIN="help"/>
<icon BUILTIN="hourglass"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1695520867955" ID="ID_433773974" MODIFIED="1695576130555" TEXT="ein Atomic Lock?">
<icon BUILTIN="help"/>
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1695576437401" ID="ID_1588907648" MODIFIED="1695576451399" TEXT="Messungen h&#xe4;ngen startk vom warm-up ab">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1695576452678" ID="ID_988701849" MODIFIED="1695576478511" TEXT="daher mit der System-&#xdc;berlastung starten"/>
<node CREATED="1695576485026" ID="ID_1788587697" MODIFIED="1695576504739" TEXT="damit bekomme ich viel stabilerere / konsistenterere Werte"/>
</node>
<node CREATED="1695576137073" ID="ID_1395611499" MODIFIED="1695578868352">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <b>Messungen</b>(Release-Build)
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="list"/>
<node CREATED="1695576145933" MODIFIED="1695578510383" TEXT="emptySetup             :  0.6ns"/>
<node CREATED="1695576145934" MODIFIED="1695576175936" TEXT="SyncBarrier (2 Thr)    : 280ns"/>
<node CREATED="1695576145934" MODIFIED="1695576185574" TEXT="SyncBarrier (4 Thr)    : 700ns"/>
<node CREATED="1695576145934" MODIFIED="1695576196685" TEXT="SyncBarrier (8 Thr)    : 2&#xb5;s"/>
<node CREATED="1695576145934" MODIFIED="1695576215763" TEXT="SyncBarrier (16 Thr)   : 9&#xb5;s"/>
<node CREATED="1695576145934" MODIFIED="1695576221330" TEXT="SyncBarrier (32 Thr)   : 21&#xb5;s"/>
<node CREATED="1695576145934" MODIFIED="1695576230336" TEXT="SyncBarrier (48 Thr)   : 30&#xb5;s"/>
<node CREATED="1695576145935" MODIFIED="1695576238800" TEXT="SyncBarrier (64 Thr)   : 50&#xb5;s"/>
<node CREATED="1695576145935" MODIFIED="1695576257440" TEXT="SyncBarrier (80 Thr)   : 80&#xb5;s"/>
<node CREATED="1695583795249" MODIFIED="1695583795249" TEXT="MonitorWait (2 Thr)    : 7&#xb5;s"/>
<node CREATED="1695583795249" MODIFIED="1695583795249" TEXT="MonitorWait (4 Thr)    : 12&#xb5;s"/>
<node CREATED="1695583795250" MODIFIED="1695583795250" TEXT="MonitorWait (8 Thr)    : 27&#xb5;s"/>
<node CREATED="1695583795250" MODIFIED="1695583795250" TEXT="MonitorWait (16 Thr)   : 75&#xb5;s"/>
<node CREATED="1695595955182" HGAP="8" ID="ID_1818362689" MODIFIED="1695596168103" TEXT="Erg&#xe4;nzung: busy-wait" VSHIFT="14">
<icon BUILTIN="idea"/>
<node CREATED="1695595970341" MODIFIED="1695595980004" TEXT="degeneriert brutal &gt; 8 Cores"/>
<node CREATED="1695595980802" MODIFIED="1695596009566" TEXT="ist f&#xfc;r die kleinen Zeiten minimal aufwendiger">
<node CREATED="1695596024582" MODIFIED="1695596055154" TEXT="2 Threads &#x27fc; 340ns"/>
<node CREATED="1695596055953" MODIFIED="1695596074107" TEXT="4 Threads &#x27fc; 910ns"/>
<node CREATED="1695596080358" MODIFIED="1695596122796" TEXT="8 Threads &#x27fc; 2200ns"/>
</node>
<node CREATED="1695596136607" MODIFIED="1695596156584" TEXT="&#x27f9; best&#xe4;tigt: wir messen die Scheduler-Unsch&#xe4;rfe"/>
</node>
</node>
<node CREATED="1695576264352" ID="ID_1266717950" MODIFIED="1695578848332" TEXT="Debug-Buid-Werte weichen nur wenig ab">
<icon BUILTIN="idea"/>
<node CREATED="1695576276750" ID="ID_790641814" MODIFIED="1695576285137" TEXT="au&#xdf;er nat&#xfc;rlich das emptySetup">
<node CREATED="1695578025523" ID="ID_1395173199" MODIFIED="1695578730778" TEXT="nochmal &#xfc;berpr&#xfc;ft: kann nicht wegoptimiert werden">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <ul>
      <li>
        die Werte sind zwar verd&#228;chtig klein, aber stabil.
      </li>
      <li>
        habe zum Vergleich einmal den testSubject(i)-Aufruf in der Schleife auskommentiert &#10233; Werte um &gt; Faktor 10 kleiner, und fluktuieren stark
      </li>
      <li>
        es ist wichtig, keine Konstante aus der Schleife zur&#252;ckzugeben (sondern die Index-Variable). Mit Konstante verh&#228;lt sich die Schleife wie leer!
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node CREATED="1695578041995" ID="ID_1805214429" MODIFIED="1695578839300" TEXT="auch mit Varianten wie &quot;volatile&quot; verglichen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...die f&#252;hren dann nochmal zu um den Faktor 10 gr&#246;&#223;eren Werten (was mit meiner Erfahrung konsistent ist).<br />Daher erscheint die aktuelle L&#246;sung als optimal: wir zwingen den Optimiser, die Schleife auszuf&#252;hren, weil ein Wert berechnet wird; dieser greift aber nur auf eine Variable in der Klasse zu, und mu&#223; nicht atomar, volatil oder synchronisiert sein. Mit diesem Setup kann man also auch den Einflu&#223; von Atomic-Zugriffen noch gut messen
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1695576332527" ID="ID_104833105" MODIFIED="1695576356959" TEXT="und: starke Fluktuationen ab System-Thread-Grenze "/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#470f69" CREATED="1695579745703" ID="ID_1232566237" MODIFIED="1695579787775" STYLE="fork" TEXT="Wichtige Einschr&#xe4;nkung">
<icon BUILTIN="broken-line"/>
<node CREATED="1695579789257" ID="ID_1993600687" MODIFIED="1695579997425" TEXT="was wir hier messen ist die &#x2205; Synchronisations-Verz&#xf6;gerung">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      wir messen, wie lange ein Thread im Durchschnitt baucht, bis er sich via SyncBarrier mit den anderen Partner-Threads synchronisiert hat. Dieser Wert ist nicht deterministisch, da die zeitliche Lage der Threads zueinander nicht deterministisch ist. Wir k&#246;nnen aber auch nicht anders messen, da der Thread typischerweise in der sync()-Funktion blockt.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1695579826996" ID="ID_1515850328" MODIFIED="1695580199504">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      &#10233; wir beobachten die Barriere bei ihrer <b>bestimmungsgem&#228;&#223;en Arbeit</b>
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#c6fdd1" DESTINATION="ID_1515850328" ENDARROW="Default" ENDINCLINATION="-864;-29;" ID="Arrow_ID_1385448927" SOURCE="ID_784900194" STARTARROW="None" STARTINCLINATION="99;698;"/>
</node>
<node CREATED="1695579847753" ID="ID_1248378503" MODIFIED="1695579872734">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      &#10233; wir bekommen so <b>nicht</b>&#160;den <b>Implementierungs-Overhead</b>&#160; zu fassen
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1695511970250" ID="ID_1548667731" MODIFIED="1697393752352" TEXT="SyncLocking_test ">
<linktarget COLOR="#7788a3" DESTINATION="ID_1548667731" ENDARROW="Default" ENDINCLINATION="-97;-50;" ID="Arrow_ID_1461533786" SOURCE="ID_1181374984" STARTARROW="None" STARTINCLINATION="-396;62;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1695911786871" ID="ID_1433073255" MODIFIED="1695911950387" TEXT="l&#xe4;uft nach Umstellung Thread-Wrapper">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1697393721571" ID="ID_244182919" MODIFIED="1697393730290" TEXT="l&#xe4;uft nach Umstellung Monitor">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1695511999172" ID="ID_1059124970" MODIFIED="1697393752352" TEXT="SyncClasslock_test">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1695911786871" ID="ID_915768766" MODIFIED="1695911950387" TEXT="l&#xe4;uft nach Umstellung Thread-Wrapper">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1697393721571" ID="ID_85406846" MODIFIED="1697393730290" TEXT="l&#xe4;uft nach Umstellung Monitor">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1695512017890" ID="ID_953669300" MODIFIED="1697393752352" TEXT="SyncWaiting_test">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1695911786871" ID="ID_622595151" MODIFIED="1695911950387" TEXT="l&#xe4;uft nach Umstellung Thread-Wrapper">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1697393721571" ID="ID_1065600217" MODIFIED="1697393730290" TEXT="l&#xe4;uft nach Umstellung Monitor">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1695679685747" FOLDED="true" ID="ID_1841477437" MODIFIED="1696368998612" TEXT="DiagnosticContext_test">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1695681285804" ID="ID_478666570" MODIFIED="1696369059125" TEXT="Problem: Fehler&#xfc;bergabe">
<linktarget COLOR="#b65b7a" DESTINATION="ID_478666570" ENDARROW="Default" ENDINCLINATION="41;-72;" ID="Arrow_ID_1595086726" SOURCE="ID_1998022902" STARTARROW="None" STARTINCLINATION="-427;24;"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1695681308242" ID="ID_1949309520" MODIFIED="1695681321659" TEXT="die eigentliche Verifikation mu&#xdf; im Einzelthread erfolgen"/>
<node COLOR="#5b280f" CREATED="1695681322500" ID="ID_428007765" MODIFIED="1696369052812" TEXT="Check-Ergebnis dann wohl per Flag &#xfc;bergeben">
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#435e98" CREATED="1696369004667" ID="ID_1560013621" MODIFIED="1696369056348" TEXT="nein viel besser &#x27f9; kann jetzt das ganze Ergebnis per join() &#xfc;bergeben">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1696369040716" ID="ID_964371967" MODIFIED="1696369049832" TEXT="dann passiert die Pr&#xfc;fung im Haupt-Thread"/>
</node>
<node CREATED="1695681283396" ID="ID_1116798044" MODIFIED="1695681285000" TEXT="verify_heavilyParallelUsage"/>
</node>
<node COLOR="#338800" CREATED="1695679805882" FOLDED="true" ID="ID_62892662" MODIFIED="1696458930409" TEXT="SessionCommandFunction_test">
<icon BUILTIN="button_ok"/>
<node COLOR="#5b280f" CREATED="1695681374017" ID="ID_767210660" MODIFIED="1696369156711" TEXT="man k&#xf6;nnte/sollte Fehler explizit fangen &#x2014; als Konsitenzcheck">
<icon BUILTIN="button_cancel"/>
<node CREATED="1696369157990" ID="ID_1718564394" MODIFIED="1696369162654" TEXT="besser: maybeThrow()"/>
<node CREATED="1696369163205" ID="ID_231695782" MODIFIED="1696369195434" TEXT="mehr ist dann doch nicht notwendig">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...denn die Fehler sind nicht Teil des Tests, sondern &#187;k&#246;nnten&#171; nur auftregen (wenn irgendwo in der Applikation was faul ist)
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1695680321963" ID="ID_1398377573" MODIFIED="1696369087313" TEXT="insgesamt ehr ungl&#xfc;cklich damit...">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="smily_bad"/>
</node>
<node CREATED="1696036153400" ID="ID_1572079642" MODIFIED="1696036156883" TEXT="Umstellung">
<node CREATED="1696036158076" ID="ID_429764463" MODIFIED="1696036170175" TEXT="puh... der Test ist komplex">
<icon BUILTIN="smiley-oh"/>
</node>
<node CREATED="1696036172041" ID="ID_1669094555" MODIFIED="1696036317600" TEXT="nicht klar ob ich die Barriere wirklich brauche">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Theoretisch sollte sie sehr wohl n&#246;tig sein, da wir hier einen TypedCounter initialisieren, und das bedingt globales Locking; d.h. die weitere Initialisierung im ctor eines Threads kann durch einen anderen Thread aufgehalten werden.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1696036369976" ID="ID_1754677356" MODIFIED="1696036379688" TEXT="lieber sauber...">
<node CREATED="1696036380543" ID="ID_1634940367" MODIFIED="1696036392151" TEXT="der Thread wird ein member-Feld"/>
<node CREATED="1696036392852" ID="ID_558233481" MODIFIED="1696036404375" TEXT="verwende eine gemeinsame Barriere"/>
<node CREATED="1696036405723" ID="ID_464812584" MODIFIED="1696036427052" TEXT="Threads kommen in eine deque (&#x27fc; NonCopyable)"/>
<node CREATED="1696036429232" ID="ID_1367189942" MODIFIED="1696036446410" TEXT="Threads werden explizit erzeugt und mit Barriere versorgt"/>
<node CREATED="1696036451549" ID="ID_351344035" MODIFIED="1696036465487" TEXT="der Test-Thread partizipiert an der Barriere"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1696036468258" FOLDED="true" ID="ID_604722459" MODIFIED="1696180251352" TEXT="umgestellter Code h&#xe4;ngt">
<icon BUILTIN="broken-line"/>
<node CREATED="1696036872517" ID="ID_747545275" MODIFIED="1696036880792" TEXT="Beobachtung">
<node CREATED="1696036882068" ID="ID_670148447" MODIFIED="1696036973668" TEXT="die Threads laufen"/>
<node CREATED="1696036974896" ID="ID_737751853" MODIFIED="1696036992529" TEXT="der Dispatcher-Thread schl&#xe4;ft in awaitAction()"/>
<node CREATED="1696037005899" ID="ID_1623850589" MODIFIED="1696037015918" TEXT="alle Producer stecken daher im Lock fest"/>
<node CREATED="1696037017218" ID="ID_166804637" MODIFIED="1696037028972" TEXT="main-Thread blockt im Destruktor"/>
<node CREATED="1696037163527" ID="ID_1110298475" MODIFIED="1696037175948" TEXT="ich sehe zuletzt: deactivateCommandProecssing: Session command interface closed."/>
</node>
<node CREATED="1696037187379" ID="ID_1472154127" MODIFIED="1696110527686" TEXT="Untersuchung">
<icon BUILTIN="edit"/>
<node CREATED="1696037199267" ID="ID_791125343" MODIFIED="1696037224734" TEXT="Mischzustand: der Dispatcher-Thread l&#xe4;uft auf dem alten Framework">
<icon BUILTIN="messagebox_warning"/>
<node COLOR="#338800" CREATED="1696039674199" ID="ID_1718267866" MODIFIED="1696039763561" TEXT="sicherheitshalber auch gleich umstellen">
<arrowlink COLOR="#71be6f" DESTINATION="ID_556208204" ENDARROW="Default" ENDINCLINATION="1038;-401;" ID="Arrow_ID_1257115855" STARTARROW="None" STARTINCLINATION="602;40;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#497db2" CREATED="1696039767003" ID="ID_1053399266" MODIFIED="1696039787013" TEXT="Tja.... das war&apos;s nicht">
<icon BUILTIN="smily_bad"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1696038355031" FOLDED="true" ID="ID_1193356091" MODIFIED="1696038505579" TEXT="(hatte nebenbei typed-counter FamilyMember auf Atomics umgestellt)">
<font NAME="SansSerif" SIZE="11"/>
<node CREATED="1696038385875" ID="ID_1012862043" MODIFIED="1696038434994" TEXT="w&#xe4;re aber unwahrscheinlich">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...denn das sollte sich nur w&#228;hrend der Konstruktoren auswirken, und die sind ja alle &quot;durch&quot;, gem&#228;&#223; Barriere
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1696038437552" ID="ID_1876729224" MODIFIED="1696038477225" TEXT="au&#xdf;erdem geht&apos;s da nur um Inkrementieren">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      daf&#252;r braucht man heutzutage nun wirklich kein Lock mehr
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#338800" CREATED="1696038478167" ID="ID_268185715" MODIFIED="1696038501250" TEXT="gepr&#xfc;ft: die alte Variante mit Lock h&#xe4;ngt genauso">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1696037316298" ID="ID_804937793" MODIFIED="1696119125636" TEXT="wer sollte den Dispatcher-Thread aufwecken?">
<icon BUILTIN="help"/>
<node CREATED="1696039648897" ID="ID_1751198515" MODIFIED="1696039665811" TEXT="normalerweise sollten das doch die ankommenden Commands bewirken"/>
<node CREATED="1696119047052" ID="ID_936117034" MODIFIED="1696119060820" TEXT="so ist es und das passiert auch tats&#xe4;chlich (Debugger)"/>
<node CREATED="1696119072544" ID="ID_1846378296" MODIFIED="1696119107817">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      aber hier schl&#228;ft der Dispatcher-Thrad gar nicht &#8212; sondern <b>wartet auf das Lock</b>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1696037228668" ID="ID_1851104736" MODIFIED="1696119163653" TEXT="warum sehe ich das wieder-&#xd6;ffnen des Command-Interfaces nicht?">
<font NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="help"/>
<node CREATED="1696037275093" ID="ID_1726964186" MODIFIED="1696037285735" TEXT="fliegt hier eine Exception??">
<icon BUILTIN="idea"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1696071955817" ID="ID_1414770650" MODIFIED="1696081429821" TEXT="Bingo!  ein error::Logic vom noch-leeren Result">
<arrowlink COLOR="#ea255e" DESTINATION="ID_1817962717" ENDARROW="Default" ENDINCLINATION="13;-34;" ID="Arrow_ID_1502503112" STARTARROW="None" STARTINCLINATION="-60;3;"/>
<icon BUILTIN="broken-line"/>
</node>
<node CREATED="1696081298897" ID="ID_1868082673" MODIFIED="1696081376953">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      &#10233; der Test-Controller-Thread kommt gar nicht dazu,
    </p>
    <p>
      auf das Ende der Worker zu warten
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#435e98" CREATED="1696072400009" ID="ID_1841370105" MODIFIED="1696119175236" TEXT="wo / von wem wird der ausgeworfen?">
<icon BUILTIN="help"/>
<node CREATED="1696081214992" ID="ID_1035877149" MODIFIED="1696081226551" TEXT="kommt aus Monitor::wait()">
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1696081133452" ID="ID_1817962717" MODIFIED="1696081429821">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      ein <i>verschleppter </i>Error-State
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#ea255e" DESTINATION="ID_1817962717" ENDARROW="Default" ENDINCLINATION="13;-34;" ID="Arrow_ID_1502503112" SOURCE="ID_1414770650" STARTARROW="None" STARTINCLINATION="-60;3;"/>
<icon BUILTIN="broken-line"/>
<node CREATED="1696081456787" ID="ID_1943309176" MODIFIED="1696081469917" TEXT="jeder ThreadJoinable setzt versehentlich im ctor den Error-State"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1696081471577" ID="ID_1910682637" MODIFIED="1696119881017" TEXT="hier r&#xe4;cht sich wieder das inkonsitente Error-Handling-Konzept">
<arrowlink COLOR="#734d4b" DESTINATION="ID_693954886" ENDARROW="Default" ENDINCLINATION="61;-139;" ID="Arrow_ID_921866413" STARTARROW="None" STARTINCLINATION="-390;17;"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1696081526120" ID="ID_1896518266" MODIFIED="1696081543442" TEXT="der C-Code f&#xfc;hrt thread-local sticky Error-States ein"/>
<node CREATED="1696081544119" ID="ID_588082490" MODIFIED="1696081570191" TEXT="das C++ Exception-Handling nimmt keine R&#xfc;cksicht auf C"/>
<node CREATED="1696081571283" ID="ID_970986418" MODIFIED="1696081613486" TEXT="wir haben versucht, beides miteinander zu verknoten">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...und zwar an der einzigen Stelle, an der das zuverl&#228;ssig m&#246;glich ist: im Konstruktur von Exceptions
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1696081614501" ID="ID_459919469" MODIFIED="1696081636718" TEXT="sobald man Exceptions als Datentyp konstruiert, f&#xfc;hrt das zu Problemen">
<icon BUILTIN="clanbomber"/>
</node>
<node COLOR="#713bb7" CREATED="1696110701766" ID="ID_1580901081" MODIFIED="1696110730061" TEXT="hier wird eine Entscheidung zunehmend dringend">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1696119213950" ID="ID_1474208134" MODIFIED="1696119236987" STYLE="fork" TEXT="damit w&#xe4;re die Ver&#xe4;nderung identifiziert, die den Test gebrochen hat">
<icon BUILTIN="idea"/>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1696119176376" ID="ID_1102042597" MODIFIED="1696119790825" TEXT="es sollte trotzdem nicht zum Deadlock kommen...">
<icon BUILTIN="broken-line"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1696119319135" ID="ID_252514263" MODIFIED="1696119336272" TEXT="zu erwartendes Verhalten">
<icon BUILTIN="yes"/>
<node CREATED="1696119247081" ID="ID_1738546690" MODIFIED="1696119272977" TEXT="der Test-Controller-Thread f&#xe4;llt raus"/>
<node CREATED="1696119277549" ID="ID_1653664780" MODIFIED="1696119290721" TEXT="der deque-dtor will die Threads joinen, diese laufen aber noch"/>
<node CREATED="1696119291931" ID="ID_370824920" MODIFIED="1696119314748" TEXT="da niemand mehr blockt, sollten die Threads irgendwann ihre Arbeit gemacht haben"/>
<node CREATED="1696119342372" ID="ID_717868506" MODIFIED="1696119352142" TEXT="und dann kehrt auch das join() zur&#xfc;ck"/>
</node>
<node CREATED="1696119354771" ID="ID_597533525" MODIFIED="1696119368139" TEXT="beobachtete Situation">
<icon BUILTIN="info"/>
<node CREATED="1696119371496" ID="ID_280882639" MODIFIED="1696119387379" TEXT="Test-Controller-Thread steht im Futex von Thread-join()"/>
<node CREATED="1696119388607" ID="ID_44228871" MODIFIED="1696119445874" TEXT="der Session-Thread m&#xf6;chte DispatcherLoop::awaitAction() machen &#xd83e;&#xdc32; blockt im Lock"/>
<node CREATED="1696119449493" ID="ID_1470434035" MODIFIED="1696119475208" TEXT="die Producer-Threads m&#xf6;chten DispatcherLoop::enqueue() machen &#xd83e;&#xdc32; blockt im Lock"/>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1696119485297" ID="ID_340575780" MODIFIED="1696119500059" TEXT="wer h&#xe4;lt dann das Lock?">
<icon BUILTIN="help"/>
<node CREATED="1696119504254" ID="ID_458863936" MODIFIED="1696119525043" TEXT="Detail-Debugging: das pthread-Mutex-Objekt zeigt seinen Owner">
<icon BUILTIN="idea"/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1696119526100" ID="ID_593631628" MODIFIED="1696119555643" TEXT="der Owner ist immer noch der Thread-Controller Thread">
<icon BUILTIN="broken-line"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1696119586947" ID="ID_41292943" MODIFIED="1696119624718" STYLE="fork" TEXT="aaaber ... der ist doch aus dem Scope mit dem Lock-Guard raus???">
<icon BUILTIN="smiley-angry"/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1696119627366" ID="ID_9801066" MODIFIED="1696119976164">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Debugger &#10233; Lock-Guard-<b>Destruktor wird nicht aufgerufen</b>
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#db3b65" DESTINATION="ID_893400394" ENDARROW="Default" ENDINCLINATION="214;-12;" ID="Arrow_ID_1289856285" STARTARROW="None" STARTINCLINATION="-385;17;"/>
<icon BUILTIN="broken-line"/>
</node>
<node CREATED="1696119704813" ID="ID_271843832" MODIFIED="1696119725139" TEXT="??!">
<icon BUILTIN="smiley-oh"/>
</node>
<node CREATED="1696119709771" ID="ID_870266168" MODIFIED="1696119719039" TEXT="????!!">
<icon BUILTIN="smily_bad"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1696119729864" ID="ID_1528519295" MODIFIED="1696119766685">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      die Exception fliegt ja <b>aus dem Konstruktor</b>&#160;vom Guard
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1696119796679" ID="ID_1360508343" MODIFIED="1696119834888">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      (ja dann <font size="5">KANN</font>s ja gar nicht funktionieren)
    </p>
  </body>
</html></richcontent>
<font NAME="SansSerif" SIZE="11"/>
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node CREATED="1696109856041" ID="ID_130019164" MODIFIED="1696110849648" TEXT="Fazit">
<icon BUILTIN="forward"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1696109861199" ID="ID_693954886" MODIFIED="1696119872703" TEXT="Entscheidung die Kopplung von C-Flag und Exceptions betreffend">
<arrowlink COLOR="#743762" DESTINATION="ID_1288168258" ENDARROW="Default" ENDINCLINATION="-1572;111;" ID="Arrow_ID_1929499179" STARTARROW="None" STARTINCLINATION="-1669;-68;"/>
<linktarget COLOR="#734d4b" DESTINATION="ID_693954886" ENDARROW="Default" ENDINCLINATION="61;-139;" ID="Arrow_ID_921866413" SOURCE="ID_1910682637" STARTARROW="None" STARTINCLINATION="-390;17;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node CREATED="1696109905830" ID="ID_1712639748" MODIFIED="1696110190076" TEXT="wir brauchen einen konzeptionellen Rahmen">
<arrowlink COLOR="#fdcfce" DESTINATION="ID_853481552" ENDARROW="Default" ENDINCLINATION="-959;56;" ID="Arrow_ID_275745687" STARTARROW="None" STARTINCLINATION="-1085;66;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1696110202816" ID="ID_892025569" MODIFIED="1696110324805">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      das Problem ist entstanden weil der Monitor &#8222;vorsorglich&#8220; den Error-State auswertet,
    </p>
    <p>
      dann aber nicht klar ist, wie mit einer solchen Situation umzugehen ist.
    </p>
    <p>
      Des weiteren ist nicht klar, was die Kopplung zwischen Exception und Error-State soll
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1696110353252" ID="ID_1579091753" MODIFIED="1696110384783">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      die <b>Gleichwertigkeit</b>&#160;von Error-Flag und Exception wird nun <i>in Frage gestellt</i>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1696110388984" ID="ID_1739603971" MODIFIED="1696110439910">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <u>Plan</u>: k&#252;nftig sollen Error-Flags nur noch aus C-Code stammen
    </p>
  </body>
</html></richcontent>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1696110741312" ID="ID_1412671366" MODIFIED="1696110830911" TEXT="da&#xdf; sich diese Probleme nun h&#xe4;ufen liegt an der &#xbb;Integration&#xab;">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      solange ich nur Detail-Komponenten gebaut habe, konnte ich von komplett definiertem Kontext (Unit-Test) ausgehen; damit waren Exceptions vor allem etwas, was man <i>pro forma</i>&#160;noch mit einbaut, aber letztlich nur &#8222;&#252;ber die Mauer wirft&#8220;
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="smiley-oh"/>
</node>
<node CREATED="1696119904681" ID="ID_1065151947" MODIFIED="1696119920360">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      die verschleppte Exception ist aber nur der <b>Anla&#223;</b>
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1696119921079" ID="ID_893400394" MODIFIED="1696119969475">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      der <b>Grund</b>&#160;ist ein <b>Bug</b>&#160;im Objekt-Monitor
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#db3b65" DESTINATION="ID_893400394" ENDARROW="Default" ENDINCLINATION="214;-12;" ID="Arrow_ID_1289856285" SOURCE="ID_9801066" STARTARROW="None" STARTINCLINATION="-385;17;"/>
<icon BUILTIN="broken-line"/>
<node CREATED="1696119983670" ID="ID_878293823" MODIFIED="1696120171437" TEXT="der &#xbb;convenience-shortcut&#xab; hat eine L&#xfc;cke ge&#xf6;ffnet">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1696120059139" ID="ID_1860999331" MODIFIED="1696120128327" TEXT="(sync.hpp Zeile 482) weil das mon_.acquireLock() und das wait() im ctor-Body stehen..."/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1696120129842" ID="ID_323663607" MODIFIED="1696120264827" TEXT="...untergr&#xe4;bt ein Fehler im wait() den Schutz vom acquireLock()">
<arrowlink COLOR="#682b39" DESTINATION="ID_276811059" ENDARROW="Default" ENDINCLINATION="617;-40;" ID="Arrow_ID_599709584" STARTARROW="None" STARTINCLINATION="-274;12;"/>
<icon BUILTIN="clanbomber"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1696179893084" ID="ID_174464195" MODIFIED="1696179935262" TEXT="auch noch Shutdown-Problem zu fixen...">
<arrowlink COLOR="#8dbdb4" DESTINATION="ID_1071243890" ENDARROW="Default" ENDINCLINATION="-743;-551;" ID="Arrow_ID_572192244" STARTARROW="None" STARTINCLINATION="376;26;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1696179937254" ID="ID_1888898055" MODIFIED="1696179947701" TEXT="damit l&#xe4;uft der Test wieder (endlich)">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1696451004673" FOLDED="true" ID="ID_1297218008" MODIFIED="1696458929359" TEXT="Regression">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      CHECK: session-command-function-test.cpp:425: thread_1: perform_massivelyParallel: (testCommandState - prevState == Time(expectedOffset))
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="broken-line"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1696450881793" ID="ID_1438190212" MODIFIED="1696458835083" TEXT="TypedFamilyMemberID_test scheitert ebenfalls">
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1696458786769" ID="ID_1752048760" MODIFIED="1696458837763" TEXT="Fehler bei der Umstellung auf Atomic">
<icon BUILTIN="broken-line"/>
<node CREATED="1696458839042" ID="ID_652549314" MODIFIED="1696458849941" TEXT="hab &#xfc;bersehen, da&#xdf; es vorher ein post-increment war"/>
<node CREATED="1696458850577" ID="ID_796667171" MODIFIED="1696458861035" TEXT="d.h. alten Wert zur&#xfc;ckgeben und danach inkrementieren"/>
<node CREATED="1696458897455" ID="ID_1428049647" MODIFIED="1696458913432" TEXT="Atomic.fetch_add macht genau das">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1696458920687" ID="ID_1071858265" MODIFIED="1696458927970" TEXT="und ich dachte, ich mu&#xdf; das korrigieren"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1697144004829" FOLDED="true" ID="ID_1133272068" MODIFIED="1697144107776" TEXT="WorkForece_test">
<icon BUILTIN="button_ok"/>
<node CREATED="1697144009429" ID="ID_974358387" MODIFIED="1697144020943" TEXT="hatte hier std::thread direkt verwendet"/>
<node CREATED="1697144021507" ID="ID_1880048346" MODIFIED="1697144043164" TEXT="Test ist immer noch instabil &#x2014; Timings zu knapp">
<node CREATED="1697144051767" ID="ID_169093956" MODIFIED="1697144065793" TEXT="sollte ehr 1ms geben f&#xfc;r Thread-Start"/>
<node CREATED="1697144068469" ID="ID_296969811" MODIFIED="1697144104370" TEXT="am problematischten ist der Fehler-Test">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...denn der zielt auf eine echte Laufzeit, die ben&#246;tigt wird um 500 Loop-Durchg&#228;nge zu machen
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1695394237210" ID="ID_11553358" MODIFIED="1697427213806" TEXT="Applikation umstellen">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1696029414385" ID="ID_140265798" MODIFIED="1697427175155" TEXT="weitere Tests...">
<node COLOR="#338800" CREATED="1696029465122" ID="ID_1515483274" MODIFIED="1696357491529" TEXT="SubsystemRunner_test">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1696030280182" ID="ID_244374373" MODIFIED="1696366309566" TEXT="SyncBarrier_test + Microbenchmark">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1696029465124" FOLDED="true" ID="ID_1556068052" MODIFIED="1696448961733" TEXT="TypedCounter_test">
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1696373983769" ID="ID_878886847" MODIFIED="1696448926058" TEXT="mein Eindruck: dieser Test will besonders &#x201e;wild&#x201c; sein">
<icon BUILTIN="yes"/>
<node CREATED="1696448935710" ID="ID_978675521" MODIFIED="1696448943961" TEXT="ist aber kaum zu durchschauen"/>
<node CREATED="1696448944504" ID="ID_478816398" MODIFIED="1696448953899" TEXT="und testet nicht systematisch">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1696374018070" ID="ID_1519032076" MODIFIED="1696448914411">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      w&#252;rde es nicht gen&#252;gen,
    </p>
    <p>
      einen einzigen Kontext concurrent zu testen?
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="help"/>
<node COLOR="#435e98" CREATED="1696380070324" ID="ID_136993666" MODIFIED="1696380453937" TEXT="welche contentions m&#xfc;ssen getestet werden?">
<icon BUILTIN="help"/>
<node CREATED="1696380210842" ID="ID_770181581" MODIFIED="1696430126072" TEXT="counter.inc&lt;TY&gt;()"/>
<node CREATED="1696380250356" ID="ID_173251431" MODIFIED="1696443282415" TEXT="slot&lt;X&gt;()  &#x27fb; wird aber bisher gar nicht abgedeckt">
<arrowlink COLOR="#f81c54" DESTINATION="ID_1155198254" ENDARROW="Default" ENDINCLINATION="825;-52;" ID="Arrow_ID_44123997" STARTARROW="None" STARTINCLINATION="298;16;"/>
<icon BUILTIN="broken-line"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1696380444194" ID="ID_963223127" MODIFIED="1696448919381" TEXT="das ist doch alles gar nicht so wild!">
<icon BUILTIN="idea"/>
<node CREATED="1696430390731" ID="ID_348950521" MODIFIED="1696430404173" TEXT="aggressive Zufalls-Zugriffe gen&#xfc;gen"/>
<node CREATED="1696430512599" ID="ID_1435359661" MODIFIED="1696430683355" TEXT="nicht-deterministische Reihenfolge der Zugriffe">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...das bedeutet, es wird erst zur Laufzeit bestimmt, in welcher Reihenfolge die Counter f&#252;r die Typen alloziert werden; damit kommt es zu Beginn zu einer aggressiven contention auf slot&lt;X&gt;. <u>Einschr&#228;nkung</u>: in dieser Form wirkt dieser Test nur beim ersten Lauf innerhalb einer Programm-Instanz, weil danach die Slots belegt sind. <i>In der Praxis stellt das keine Einschr&#228;nkung dar</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1696430836095" ID="ID_1146635545" MODIFIED="1696431016213" TEXT="Contention auf counter selber ist etwas schwieriger">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...denn es mu&#223; eine hohe Wahrscheinlichkeit geben, da&#223; gleichzeitig zwei Threads auf den gleichen Counter zugreifen &#10233; es mu&#223; deutlich mehr Threads geben als counter. Das ist aber schwierig, weil die Zahl der Cores beschr&#228;nkt ist. Hier hilft nur (a) sehr viel zu viele Threads verwenden und (b) diese lang laufen lassen.
    </p>
  </body>
</html></richcontent>
<node CREATED="1696431018358" ID="ID_721191123" MODIFIED="1696431023649" TEXT="10 counter"/>
<node CREATED="1696431024238" ID="ID_1773086920" MODIFIED="1696431027272" TEXT="100 Threads"/>
</node>
</node>
</node>
<node CREATED="1696374076405" ID="ID_1206073156" MODIFIED="1696374093126" TEXT="das k&#xf6;nnte man dann direkt mit dem threadedMicrobenchmark tun">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1696431038235" ID="ID_540054086" MODIFIED="1696448417094" TEXT="komplett neue Implementierung">
<icon BUILTIN="button_ok"/>
<node CREATED="1696431259538" ID="ID_1860790357" MODIFIED="1696431287600" TEXT="Typ mit Index-Template-Parameter: Dummy&lt;i&gt;"/>
<node CREATED="1696432169621" ID="ID_1235729075" MODIFIED="1696432189438" TEXT="dazu parametrisierte Zugriffs-Operatoren"/>
<node CREATED="1696437474632" ID="ID_583782137" MODIFIED="1696437653078" TEXT="ad-hoc polimorphismus nutzen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      das hei&#223;t ich mu&#223; keinen abstrakten Typ mehr konstruieren und daraus abgeleitete Dummy&lt;i&gt;, weil letzten Endes nur zwei Operationen notwendig sind: den Z&#228;hler inkrementieren und am Ende den Z&#228;hlerstand auslesen
    </p>
  </body>
</html></richcontent>
<node CREATED="1696437495125" ID="ID_1620361815" MODIFIED="1696437503616" TEXT="parametrisierte Funktion"/>
<node CREATED="1696437504604" ID="ID_745569323" MODIFIED="1696437545888" TEXT="std::index_sequence und variadic paremeter packs"/>
</node>
<node COLOR="#435e98" CREATED="1696437656351" ID="ID_1663233452" MODIFIED="1696448435697" TEXT="nur einmal inkrementieren pro Testfall &#x27f9; Pr&#xfc;fsumme mu&#xdf; Zahl der Iterationen sein">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1696438031400" ID="ID_1665607683" MODIFIED="1696448432366" TEXT="insgesamt wird der Testaufbau dadurch drastich knapper">
<icon BUILTIN="idea"/>
<node CREATED="1696438065305" ID="ID_1118255590" MODIFIED="1696438076767" TEXT="ob er klarer ist.. ich hoffe so">
<icon BUILTIN="smiley-oh"/>
</node>
<node COLOR="#338800" CREATED="1696438081968" ID="ID_1642767511" MODIFIED="1696438177738" TEXT="korrekte Funktionsweise durch pre-Tests verifiziert">
<icon BUILTIN="button_ok"/>
<node CREATED="1696438096067" ID="ID_1420275370" MODIFIED="1696438120724" TEXT="die Operatoren inkrementieren tats&#xe4;chlich den ihnen korrespondierenden Counter"/>
<node CREATED="1696438121553" ID="ID_1994306616" MODIFIED="1696438145938" TEXT="testSubject()-Aufrufe inkrementieren zuf&#xe4;llige Counter"/>
<node CREATED="1696438146526" ID="ID_1082515240" MODIFIED="1696438175732" TEXT="die Belegung der Type-IDs erfolgt tats&#xe4;chlich bei erstem Gebrauch">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      das gilt aber nur, wenn nicht bereits summAllCounters() aufgerufen wurde!
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1696443226741" ID="ID_22926820" MODIFIED="1696448412591" TEXT="Test">
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1696443235313" ID="ID_1155198254" MODIFIED="1696448784114" TEXT="Tja... ein Bug in der concurrent Slot-Belegung">
<linktarget COLOR="#f81c54" DESTINATION="ID_1155198254" ENDARROW="Default" ENDINCLINATION="825;-52;" ID="Arrow_ID_44123997" SOURCE="ID_173251431" STARTARROW="None" STARTINCLINATION="298;16;"/>
<icon BUILTIN="broken-line"/>
<node CREATED="1696443290736" HGAP="36" ID="ID_413296311" MODIFIED="1696448896455" TEXT="war wohl geblendet von der Synchronisation der Typ-IDs" VSHIFT="38"/>
<node CREATED="1696443313884" ID="ID_1612183462" MODIFIED="1696448803529" TEXT="hab einen Race &#xfc;bersehen beim Vergr&#xf6;&#xdf;ern der Storage">
<icon BUILTIN="clanbomber"/>
<node CREATED="1696443353331" ID="ID_429189452" MODIFIED="1696443363674" TEXT="die POST-Assertion hat&apos;s aufgedeckt"/>
<node CREATED="1696443364166" ID="ID_1239565047" MODIFIED="1696443383863" TEXT="d.h. die Storage wurde inzwischen schon f&#xfc;r einen anderen Thread vergr&#xf6;&#xdf;ert"/>
<node CREATED="1696448812795" ID="ID_1174382727" MODIFIED="1696448869795" TEXT="k&#xf6;nnte die Datenstruktur korrumpieren oder bereits allozierte counter wieder verwerfen"/>
<node CREATED="1696448870455" ID="ID_511794109" MODIFIED="1696448877378" TEXT=" &#x27f9; out-of-bounds access"/>
</node>
<node COLOR="#338800" CREATED="1696443386579" ID="ID_1397943659" MODIFIED="1696448504750" TEXT="L&#xf6;sung: double-checked Locking verwenden">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1397943659" ENDARROW="Default" ENDINCLINATION="198;12;" ID="Arrow_ID_1393329601" SOURCE="ID_971300" STARTARROW="None" STARTINCLINATION="231;0;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1696443412807" ID="ID_1465828744" MODIFIED="1696448782099" TEXT="ein weiterer Fehler in den genfunc/generateSymbolicID">
<icon BUILTIN="broken-line"/>
<node CREATED="1696443435736" ID="ID_410980608" MODIFIED="1696443440463" TEXT="da war ich wohl zu faul..."/>
<node CREATED="1696443440963" ID="ID_138836655" MODIFIED="1696443452778" TEXT="&#xfc;bersehen da&#xdf; die static instance pro Funktion ist"/>
<node CREATED="1696443453282" ID="ID_268210175" MODIFIED="1696443461533" TEXT="und diese Funktion hier ist getemplated!"/>
<node COLOR="#338800" CREATED="1696443462884" ID="ID_1431962479" MODIFIED="1696448402814" TEXT="L&#xf6;sung: per Meyers Singleton auf einen gemeinsamen TypedCounter zugreifen">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1696448462919" ID="ID_282777557" MODIFIED="1696448471819" TEXT="TypedCounter umstellen auf Atomics">
<icon BUILTIN="button_ok"/>
<node CREATED="1696448478627" ID="ID_427546373" MODIFIED="1696448485598" TEXT="geht nur f&#xfc;r die Counter selber"/>
<node CREATED="1696448486162" ID="ID_971300" MODIFIED="1696448508466" TEXT="die Datenstruktur mu&#xdf; per Lock gesch&#xfc;tzt werden">
<arrowlink DESTINATION="ID_1397943659" ENDARROW="Default" ENDINCLINATION="198;12;" ID="Arrow_ID_1393329601" STARTARROW="None" STARTINCLINATION="231;0;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#435e98" CREATED="1696446079844" ID="ID_1523681465" MODIFIED="1696448773836" TEXT="Benchmark">
<icon BUILTIN="list"/>
<node CREATED="1696448546634" ID="ID_1319006212" MODIFIED="1696448562108" TEXT="nur marginale Unterschiede feststellbar">
<node CREATED="1696448728818" ID="ID_294519711" MODIFIED="1696448740972" TEXT="der Mutex ist hier non-recursive"/>
<node CREATED="1696448741800" ID="ID_1141820497" MODIFIED="1696448760640" TEXT="Vermutung: es dominiert der Datenstruktur-Zugriff"/>
</node>
<node CREATED="1696448686944" ID="ID_1450093366" MODIFIED="1696448690980" TEXT="Messungen mit -O3"/>
<node CREATED="1696448564361" ID="ID_1608888848" MODIFIED="1696448582009" TEXT="im multithread-Setup dominiert die Wartezeit">
<node CREATED="1696448586951" ID="ID_797208087" MODIFIED="1696448604142" TEXT="100 Threads &#x2248; 50&#xb5;s"/>
<node CREATED="1696448606458" ID="ID_1705996862" MODIFIED="1696448652330" TEXT="8 Threads &#x2248; 3.8&#xb5;s (Lock) / 3.1&#xb5;s (Atomic)"/>
</node>
<node CREATED="1696448657779" ID="ID_1394995329" MODIFIED="1696448672325" TEXT="single-threaded: beide &#x2248; 60ns"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1696029465120" ID="ID_1705540772" MODIFIED="1696461340096" TEXT="CallQueue_test">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1696029465120" ID="ID_1782746519" MODIFIED="1696463320731" TEXT="BusTerm_test">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1696029465119" ID="ID_820648476" MODIFIED="1697427173644" TEXT="eigentliche Verwendungen">
<node COLOR="#338800" CREATED="1696029465121" FOLDED="true" ID="ID_484763089" MODIFIED="1696466563403" TEXT="dummy-tick.hpp">
<icon BUILTIN="button_ok"/>
<node CREATED="1696463651126" ID="ID_1955533577" MODIFIED="1696463784381" TEXT="engine-service-mock.cpp"/>
<node CREATED="1696029465123" ID="ID_944980561" MODIFIED="1696029607971" TEXT="tick-service.hpp">
<node CREATED="1696029465123" ID="ID_221141346" MODIFIED="1696029617413" TEXT="dummy-player-service.cpp"/>
</node>
<node CREATED="1696466332929" ID="ID_1630305720" MODIFIED="1696466402050" TEXT="eigentlich alles komplett dysfunktional">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1696466555419" ID="ID_1340518026" MODIFIED="1696466561893" TEXT="also nur compilierbar halten">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#5b280f" CREATED="1696466343247" ID="ID_1005436109" MODIFIED="1696466397309" TEXT="gleich zur&#xfc;ckbauen?">
<icon BUILTIN="button_cancel"/>
<node CREATED="1696466353622" ID="ID_1897311266" MODIFIED="1696466372551" TEXT="Nein: ist noch eine Referenz f&#xfc;r die Einbindung des Players"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1696466379805" ID="ID_1182194333" MODIFIED="1696466386121" TEXT="#1342 dismantle DummyPlayer">
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1696029465121" FOLDED="true" ID="ID_786350998" MODIFIED="1697079789466" TEXT="gtk-lumiera.cpp">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1696468041645" ID="ID_137837629" MODIFIED="1697079810297" TEXT="brauche einen Thread, den man in den Hintergrund schieben kann">
<arrowlink COLOR="#5a83aa" DESTINATION="ID_1146069423" ENDARROW="Default" ENDINCLINATION="444;909;" ID="Arrow_ID_516910789" STARTARROW="None" STARTINCLINATION="-1280;-32;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#5b280f" CREATED="1697074837137" ID="ID_1676366081" MODIFIED="1697079198786" TEXT="umstellen auf ein self-managed Thread-Objekt">
<icon BUILTIN="button_cancel"/>
<node CREATED="1697074871061" ID="ID_1947484765" MODIFIED="1697074877752" TEXT="die stateische Methode runGUI f&#xe4;llt weg"/>
<node CREATED="1697074879331" ID="ID_1600154985" MODIFIED="1697074890470" TEXT="daf&#xfc;r erbt GtkLumiera nun von ThreadHookable"/>
<node CREATED="1697074891490" ID="ID_1903908027" MODIFIED="1697074909875" TEXT="mu&#xdf; unbedingt eine Sync-Barrier einziehen">
<node CREATED="1697074911127" ID="ID_359674865" MODIFIED="1697074931129" TEXT="sonst sind die GUI-Komponenten nicht rechtzeitig fertig"/>
<node CREATED="1697074933422" ID="ID_1367938500" MODIFIED="1697074943014" TEXT="vor allem werden hier noch dynamische Libs geladen">
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#5b280f" CREATED="1697074948090" ID="ID_1670658341" MODIFIED="1697074961262" TEXT="SyncBarrier als Parameter &#xfc;bergeben">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1697074962089" ID="ID_1822899395" MODIFIED="1697074967947" TEXT="stattdessen als globale Variable"/>
</node>
<node BACKGROUND_COLOR="#d1bba1" COLOR="#990000" CREATED="1697074973343" ID="ID_1959135730" MODIFIED="1697079190318" TEXT="Probleme beim Shutdown">
<icon BUILTIN="broken-line"/>
<node CREATED="1697074982953" ID="ID_442353467" MODIFIED="1697075045858" TEXT="anscheinend werden Teile des GUI erst  nach dem Ende von Lumiera-Main abgebaut">
<icon BUILTIN="info"/>
</node>
<node CREATED="1697079081169" ID="ID_265281556" MODIFIED="1697079119273" TEXT="das hei&#xdf;t: sigTerm wurde zu fr&#xfc;h aufgerufen &#x27f9; Kontrakt gebrochen"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1697079120028" ID="ID_1679819691" MODIFIED="1697079140133">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      das ist jetzt alles <b>keine Verbesserung</b>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="stop-sign"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1697079202857" ID="ID_1873620369" MODIFIED="1697079742143" TEXT="die alte L&#xf6;sung war gar nicht so schlecht">
<icon BUILTIN="idea"/>
<node CREATED="1697079212001" ID="ID_358578864" MODIFIED="1697079225323">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      sie sieht blo&#223; &#187;umst&#228;ndlich&#171; aus
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1697079226102" ID="ID_1747368145" MODIFIED="1697079235936" TEXT="der Vorteil: die Reihenfolge ist explizit festgelegt"/>
<node CREATED="1697079242804" ID="ID_440022982" MODIFIED="1697079265220" TEXT="der Thread umschlie&#xdf;t die gesamte GUI-Funktionalit&#xe4;t"/>
</node>
<node COLOR="#338800" CREATED="1697079753844" ID="ID_1211321573" MODIFIED="1697079778251" TEXT="Umstellung: runGUI &#x27f6; in &#x3bb; packen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1697079779058" ID="ID_370018589" MODIFIED="1697079784793" TEXT="tut">
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1696468692302" ID="ID_1299573982" MODIFIED="1697079748206" TEXT="SteamDispatcher und OutputDirector brauchen das ebenso">
<arrowlink COLOR="#1f9fe7" DESTINATION="ID_871343805" ENDARROW="Default" ENDINCLINATION="173;10;" ID="Arrow_ID_1685700346" STARTARROW="None" STARTINCLINATION="-8;8;"/>
</node>
</node>
<node COLOR="#338800" CREATED="1696029465122" FOLDED="true" ID="ID_871343805" MODIFIED="1697068873667" TEXT="output-director.cpp">
<linktarget COLOR="#1f9fe7" DESTINATION="ID_871343805" ENDARROW="Default" ENDINCLINATION="173;10;" ID="Arrow_ID_1685700346" SOURCE="ID_1299573982" STARTARROW="None" STARTINCLINATION="-8;8;"/>
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1696888656242" HGAP="36" ID="ID_1500509085" MODIFIED="1696888747350" STYLE="fork" TEXT="Symptom hier: bad_alloc im Shutdown" VSHIFT="25">
<icon BUILTIN="broken-line"/>
<node CREATED="1696888694193" ID="ID_1029299240" MODIFIED="1696888746935" TEXT="dtor des Threads stellt isLife() fest"/>
<node CREATED="1696888714635" ID="ID_1361206868" MODIFIED="1696888746935" TEXT="versucht Warnung ausgzugeben"/>
<node CREATED="1696888722382" ID="ID_1232713816" MODIFIED="1696888746935" TEXT="aber der string threadID ist bereits korrumpiert"/>
</node>
<node COLOR="#338800" CREATED="1697068823544" HGAP="49" ID="ID_180983339" MODIFIED="1697068856206" TEXT="gel&#xf6;st nach Umstellung auf lib::launchDetached" VSHIFT="1">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1696029465122" FOLDED="true" ID="ID_556208204" MODIFIED="1697133495447" TEXT="steam-dispatcher.cpp">
<linktarget COLOR="#71be6f" DESTINATION="ID_556208204" ENDARROW="Default" ENDINCLINATION="1038;-401;" ID="Arrow_ID_1257115855" SOURCE="ID_1718267866" STARTARROW="None" STARTINCLINATION="602;40;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1696039703074" ID="ID_796238065" MODIFIED="1696171045349" TEXT="Refactoring wie &#xfc;blich">
<icon BUILTIN="button_ok"/>
<node CREATED="1696039723008" ID="ID_932291373" MODIFIED="1696039728651" TEXT="Thread wird ein Member-Feld"/>
<node CREATED="1696039729255" ID="ID_249325323" MODIFIED="1696039735587" TEXT="Sync-Barrier kommt hinzu"/>
</node>
<node COLOR="#435e98" CREATED="1696171047044" FOLDED="true" ID="ID_964609053" MODIFIED="1696179878653" TEXT="Problem beim Shutdown">
<icon BUILTIN="messagebox_warning"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1696171082115" ID="ID_150270315" MODIFIED="1696171100640" TEXT="Session-Thread endet nicht rechtzeitig">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      waitGracePeriod: Thread 'Lumiera_Session' failed to terminate after grace period.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
<node CREATED="1696172256844" ID="ID_352295134" MODIFIED="1696172274686" TEXT="Thread &#x2261; DispatcherLoop"/>
<node CREATED="1696172307166" ID="ID_1506975261" MODIFIED="1696172331575" TEXT="das wird bisher vom term-notification-Functor selber gel&#xf6;scht"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1696172336690" ID="ID_1797539126" MODIFIED="1696172376526" TEXT="Konsequenz &#x27f9; der noch laufende Thread ruft seinen eigenen Destuktor auf">
<icon BUILTIN="broken-line"/>
<node CREATED="1696172493551" ID="ID_1120531407" MODIFIED="1696172509808" TEXT="der Thread-Destrukor wartet kurz, und wirft dann"/>
<node CREATED="1696172517220" ID="ID_1113453961" MODIFIED="1696172534093" TEXT="w&#xfc;rde er nicht werfen, dann w&#xfc;rde sich der Thread kurz danach detachen"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1696172462964" ID="ID_876148747" MODIFIED="1696175328335">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      warum ist das so?
    </p>
    <p>
      ist das sinnvoll?
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#8c91b2" DESTINATION="ID_876148747" ENDARROW="Default" ENDINCLINATION="521;-2055;" ID="Arrow_ID_638014906" SOURCE="ID_1238132894" STARTARROW="None" STARTINCLINATION="295;9;"/>
<icon BUILTIN="help"/>
<node CREATED="1696172561670" ID="ID_620791350" MODIFIED="1696172587782" TEXT="running state &#x2259; DispatcherLoop-Objekt existiert"/>
<node COLOR="#435e98" CREATED="1696172623600" ID="ID_1471623002" MODIFIED="1696175317007" TEXT="damit wollte ich eine sichere Kopplung herstellen">
<icon BUILTIN="idea"/>
<node CREATED="1696172642005" ID="ID_921992168" MODIFIED="1696172651550" TEXT="DispatcherLoop ist ein RAII-Objekt"/>
<node CREATED="1696172681686" ID="ID_1541411027" MODIFIED="1696172692065" TEXT="dem enstpricht auch die explizite Barriere"/>
<node CREATED="1696172695380" ID="ID_1254306173" MODIFIED="1696172729082" TEXT="SteamDispatcher::start und endRunningState sind synchronisiert"/>
<node CREATED="1696172817924" ID="ID_1141803561" MODIFIED="1696172876819" TEXT="alternativ m&#xfc;&#xdf;te man die Verbindung zwischen beiden Konzepten explizit herstellen"/>
<node CREATED="1696172881485" ID="ID_1067400081" MODIFIED="1696172894911" TEXT="und br&#xe4;uchte daf&#xfc;r einen anderen Thread + Thread-&#xdc;berwachung / join()"/>
<node COLOR="#338800" CREATED="1696172907108" ID="ID_434799338" MODIFIED="1696172917688" TEXT="&#x27f9; es pa&#xdf;t also mit dem Konzept zusammen"/>
</node>
<node COLOR="#338800" CREATED="1696172925590" ID="ID_130436239" MODIFIED="1696175313092" TEXT="ist diese Kopplung sicher?">
<node CREATED="1696172988445" ID="ID_822132261" MODIFIED="1696172995959" TEXT="f&#xfc;r den Start...">
<node COLOR="#066645" CREATED="1696172997319" ID="ID_1455213267" MODIFIED="1696176686628" TEXT="ja ...">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
</node>
<node CREATED="1696172997319" ID="ID_984430515" MODIFIED="1696173486889" TEXT="mit der latenten Gefahr des Blockens">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1696173058257" ID="ID_483471033" MODIFIED="1696173083204" TEXT="nur wenn der Thread gleich beim Start scheitert"/>
<node CREATED="1696173122482" ID="ID_302416524" MODIFIED="1696173160233" TEXT="oder wenn der erzeugende Konstruktor nach dem Thread-Start scheitert"/>
<node CREATED="1696173189872" ID="ID_782472492" MODIFIED="1696173447331" TEXT="beides ist nahezu unm&#xf6;glich (und grenzt an ein unstabiles System)">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      in beiden F&#228;llen wird die Barriere als erstes aufgerufen
    </p>
    <ul>
      <li>
        im Haupt-Thread wird das Thread-Handle als Letztes konstruiert &#8212; und da gibt es die synchronizes-with - Garantie
      </li>
      <li>
        im neuen Thread passiert au&#223;erdem nur die Konstruktion eines noch leeren Fehler-Strings &#8212; alles danach ist per try-catch gesichert
      </li>
    </ul>
  </body></html></richcontent>
</node>
</node>
</node>
<node CREATED="1696173490663" ID="ID_124664616" MODIFIED="1696173497466" TEXT="f&#xfc;r den Stop">
<node COLOR="#066645" CREATED="1696173526081" ID="ID_1081334982" MODIFIED="1696176686628" TEXT="ebenfalls ...">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
</node>
<node CREATED="1696174068329" ID="ID_888374698" MODIFIED="1696174098634" TEXT="und zwar weil es nichts Zuverl&#xe4;ssigeres gibt als Selbstmord">
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1696174292902" ID="ID_866561914" MODIFIED="1696174342106" TEXT="aber vom SteamDispatcher-dtor g&#xe4;be es eine L&#xfc;cke">
<linktarget COLOR="#7c8d9d" DESTINATION="ID_866561914" ENDARROW="Default" ENDINCLINATION="-348;479;" ID="Arrow_ID_1571953987" SOURCE="ID_1682021227" STARTARROW="None" STARTINCLINATION="-215;7;"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1696174343863" ID="ID_210073839" MODIFIED="1696174470614" TEXT="ebenfalls ehr unwahrscheinlich (Singleton!)">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      SteamDispatcher ist ein Service und wird in lib::Depend gemanaged. Derartige Singletons werden zwar irgendwann in der Shutdown-Phase bereinigt, aber normalerweise treten wir erst in die Shutdown-Phase ein, nachdem allen Subsystemen zumindest ein Shutdown signalisiert wurde.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1696174472359" ID="ID_1149398789" MODIFIED="1696174497192" TEXT="von dort w&#xfc;rde der runningLoop_-SmartPtr einfach gel&#xf6;scht"/>
<node CREATED="1696174634290" ID="ID_1749494407" MODIFIED="1696174650666" TEXT="ohne den Session-Thread zum Terminieren aufzufordern">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1696174655799" ID="ID_1216532720" MODIFIED="1696174669186" TEXT="diese L&#xfc;cke ist nicht ohne Weiteres zu schlie&#xdf;en">
<icon BUILTIN="stop-sign"/>
<node CREATED="1696174702895" ID="ID_1380801993" MODIFIED="1696174725175" TEXT="das m&#xfc;&#xdf;te der DispatcherLoop-dtor machen"/>
<node CREATED="1696174725742" ID="ID_378849236" MODIFIED="1696174735656" TEXT="er m&#xfc;&#xdf;te dem Thread den Shutdown signalisieren"/>
<node CREATED="1696174736196" ID="ID_1866488488" MODIFIED="1696174747575" TEXT="leider erfordert das Sync-and-Wait"/>
<node CREATED="1696174749107" ID="ID_171253555" MODIFIED="1696174769351" TEXT="und w&#xfc;rde im Falle eines verklemmten Thread h&#xe4;ngenbleiben"/>
</node>
<node CREATED="1696174926711" ID="ID_417247305" MODIFIED="1696177074324" TEXT="insofern ist dann ein Application-Terminate die bessere L&#xf6;sung">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...man bekommt <i>das</i>&#160;nun automatisch, f&#252;r die andere L&#246;sung m&#252;&#223;te diffiziler Code geschrieben werden, der die Gefahr bringt, den Shutdown-Vorgang insgesamt zu blocken. Oder man m&#252;&#223;te ein &#187;try-lock&#171; machen mit Timeout; das ist noch gar nicht auf das API herausgef&#252;hrt, w&#228;re also noch mehr komplizierter Code. Und w&#252;rde letzten Endes doch nicht verhindern k&#246;nnen, da&#223; <i>genau in den problematischen F&#228;llen </i>der Thread nicht aufwacht/nicht reagiert und dann doch noch die Applikation terminiert wird
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#bc3e72" DESTINATION="ID_417247305" ENDARROW="Default" ENDINCLINATION="206;0;" ID="Arrow_ID_1906425600" SOURCE="ID_925946621" STARTARROW="None" STARTINCLINATION="206;0;"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1696174904566" ID="ID_745420059" MODIFIED="1696174921027" TEXT="die eigentliche Thrad-Funktion ist per try-catch gesch&#xfc;tzt">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#435e98" CREATED="1696176370511" ID="ID_1759926688" MODIFIED="1696176643937" TEXT="wie sicher ist der Selbstmord-Vorgang selber?">
<icon BUILTIN="help"/>
<node CREATED="1696176433703" ID="ID_1123914019" MODIFIED="1696176459264" TEXT="termNotification ist in der Closure gespeichert"/>
<node CREATED="1696176503014" ID="ID_1090075543" MODIFIED="1696176600301" TEXT="diese wird als Argument in die Thread-Fuktion kopiert"/>
<node COLOR="#338800" CREATED="1696176619520" ID="ID_1033213746" MODIFIED="1696177174667" TEXT="&#x27f9; geh&#xf6;rt zum garantierten Scope">
<linktarget COLOR="#87c5b7" DESTINATION="ID_1033213746" ENDARROW="Default" ENDINCLINATION="313;0;" ID="Arrow_ID_1257203311" SOURCE="ID_1904486724" STARTARROW="None" STARTINCLINATION="167;0;"/>
</node>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1696176922895" ID="ID_894080515" MODIFIED="1696176963529" TEXT="Fazit">
<icon BUILTIN="yes"/>
<node CREATED="1696176949523" ID="ID_907429283" MODIFIED="1696176950503" TEXT="sinnvoll und sicher"/>
<node CREATED="1696176957868" ID="ID_569990793" MODIFIED="1696176957868" TEXT="Thread managt sich selber"/>
</node>
</node>
<node COLOR="#5b280f" CREATED="1696176966281" ID="ID_1071243890" MODIFIED="1696539103813" TEXT="L&#xf6;sung: Thread koppelt sich selber ab">
<arrowlink COLOR="#696992" DESTINATION="ID_1472214443" ENDARROW="Default" ENDINCLINATION="-24;-75;" ID="Arrow_ID_409292846" STARTARROW="None" STARTINCLINATION="-43;3;"/>
<linktarget COLOR="#8dbdb4" DESTINATION="ID_1071243890" ENDARROW="Default" ENDINCLINATION="-743;-551;" ID="Arrow_ID_572192244" SOURCE="ID_174464195" STARTARROW="None" STARTINCLINATION="376;26;"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1696176982865" ID="ID_1686523145" MODIFIED="1696179853242" TEXT="wo genau? zwei M&#xf6;glichkeiten">
<icon BUILTIN="info"/>
<node COLOR="#5b280f" CREATED="1696176995637" ID="ID_532167398" MODIFIED="1696177004072" TEXT="im Destruktor">
<icon BUILTIN="button_cancel"/>
<node CREATED="1696177005660" ID="ID_1745890395" MODIFIED="1696177036396" TEXT="dann w&#xfc;rde das automatisch stets gelten, wenn das Objekt zerst&#xf6;rt wird"/>
<node COLOR="#932528" CREATED="1696177037104" ID="ID_925946621" MODIFIED="1696177080240" TEXT="also auch in den Grenzf&#xe4;llen, in denen der Thread nicht gestoppt werden konnte">
<arrowlink COLOR="#bc3e72" DESTINATION="ID_417247305" ENDARROW="Default" ENDINCLINATION="206;0;" ID="Arrow_ID_1906425600" STARTARROW="None" STARTINCLINATION="206;0;"/>
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node CREATED="1696177085505" ID="ID_108805274" MODIFIED="1696177094514" TEXT="explizit in der Thread-Funktion">
<icon BUILTIN="forward"/>
<node CREATED="1696177106759" ID="ID_1374675857" MODIFIED="1696177125522" TEXT="dann passiert es nur, wenn der Thread wirklich dem Ende entgegenl&#xe4;uft"/>
<node CREATED="1696177143357" ID="ID_1904486724" MODIFIED="1696177174667" TEXT="und erwiesenerma&#xdf;en nur noch Storage verwendet, die in der Thread-Funktion selber liegt">
<arrowlink COLOR="#87c5b7" DESTINATION="ID_1033213746" ENDARROW="Default" ENDINCLINATION="313;0;" ID="Arrow_ID_1257203311" STARTARROW="None" STARTINCLINATION="167;0;"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1696177190359" ID="ID_889014785" MODIFIED="1696179846631" TEXT="also in DispatcherLoop::runSessionThread">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1696177262410" ID="ID_1515122146" MODIFIED="1696179845361" TEXT="mu&#xdf; daf&#xfc;r die detach()-Funktion herausf&#xfc;hren">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1696179742816" ID="ID_1577887214" MODIFIED="1696179842760" TEXT="und gegen bereits beendete Threads absichern">
<icon BUILTIN="button_ok"/>
<node CREATED="1696179766628" ID="ID_1678833575" MODIFIED="1696179775663" TEXT="denn nun wird detach ggfs. mehrfach aufgerufen"/>
<node CREATED="1696179776747" ID="ID_1341493089" MODIFIED="1696179836199" TEXT="und einer davon wird einen Thread antreffen, der nicht mehr joinable() ist &#x27f9; &#x21af;"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1696539035824" ID="ID_1472214443" MODIFIED="1697133350320" TEXT="generische L&#xf6;sung f&#xfc;r dieses Nutz-Muster">
<linktarget COLOR="#696992" DESTINATION="ID_1472214443" ENDARROW="Default" ENDINCLINATION="-24;-75;" ID="Arrow_ID_409292846" SOURCE="ID_1071243890" STARTARROW="None" STARTINCLINATION="-43;3;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1696539114617" ID="ID_104020495" MODIFIED="1696620523042" TEXT="ThreadHookable">
<arrowlink COLOR="#898bab" DESTINATION="ID_1917558827" ENDARROW="Default" ENDINCLINATION="-1027;99;" ID="Arrow_ID_1553665185" STARTARROW="None" STARTINCLINATION="532;77;"/>
<icon BUILTIN="info"/>
<node CREATED="1696539237403" HGAP="36" ID="ID_922406521" LINK="#ID_137837629" MODIFIED="1696539267790" TEXT="vgl. auch Situation f&#xfc;r Gtk-Lumiera" VSHIFT="6">
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#338800" CREATED="1696539286066" ID="ID_53739973" MODIFIED="1697133342508" TEXT="bestehenden Code in DispatcherLoop umschreiben">
<icon BUILTIN="button_ok"/>
<node CREATED="1696539301472" ID="ID_938150628" MODIFIED="1696539312778" TEXT="sollte weitgehend ein drop-in-replacement sein"/>
<node CREATED="1696539313368" ID="ID_1530319321" MODIFIED="1697124202275" TEXT="auch die Allokation erfolgt wie bisher direkt in den unique-ptr"/>
<node COLOR="#338800" CREATED="1696539414089" ID="ID_1532143583" MODIFIED="1697133332702" TEXT="Problem mit geeigneter Wrapper-Basisklasse kl&#xe4;ren">
<icon BUILTIN="button_ok"/>
<node CREATED="1697128200944" ID="ID_1946980837" MODIFIED="1697128216272" TEXT="in diesem Fall mu&#xdf; es ein Lifecycle-Hook sein"/>
<node CREATED="1697128241409" ID="ID_383238232" MODIFIED="1697128271254">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      au&#223;erdem ist das thread-Objekt (nach dem Refactoring) nur noch <i>Member</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1697128310456" ID="ID_1682021227" MODIFIED="1697128572722">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      zudem mu&#223; <b>zwingend</b>&#160;<font face="Monospaced" color="#341189">detach()</font>&#160;aufgerufen werden &#8212; <i>hier</i>&#160; und <i>nicht</i>&#160;im Destruktor
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Und zwar addressiert das hier das subtile Problem, da&#223; der umschlie&#223;ende Kontext auch auf au&#223;ergew&#246;hnlichem Weg und vorzeitig zerst&#246;rt werden kann, obwohl der Thread noch l&#228;uft. Daher ist es w&#252;nschenswert, da&#223; der Destruktor bei noch laufendem Thread die Applikation hart terminiert
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#7c8d9d" DESTINATION="ID_866561914" ENDARROW="Default" ENDINCLINATION="-348;479;" ID="Arrow_ID_1571953987" STARTARROW="None" STARTINCLINATION="-215;7;"/>
</node>
</node>
<node COLOR="#338800" CREATED="1697128673738" ID="ID_1921134580" MODIFIED="1697133338424" TEXT="L&#xf6;sung: &#x3bb;-Kette">
<icon BUILTIN="idea"/>
<node CREATED="1697128706291" ID="ID_177194465" MODIFIED="1697128761575" TEXT="der TerminationSignal-Funktor steht dort bereit, wo auch die DispatcherLoop konstruiert wird"/>
<node CREATED="1697128762283" ID="ID_743745630" MODIFIED="1697128801666" TEXT="genau dort sollte auch ein &#x3bb; gebunden werden, das den Pointer am Ende wieder leert"/>
<node CREATED="1697129347357" ID="ID_230048402" MODIFIED="1697129378773" TEXT="aber im DispatcherLoop-Objekt wird dieses &#x3bb; in das eigentliche hook-&#x3bb; gepackt"/>
<node CREATED="1697129379529" ID="ID_1027277309" MODIFIED="1697129395410" TEXT="denn dieses nimmt eine ThreadWrapper-Instanz, um darauf detach() aufrufen zu k&#xf6;nnen"/>
<node CREATED="1697129400411" ID="ID_968891728" MODIFIED="1697129448246" TEXT="detach() habe ich bewu&#xdf;t protected gemacht &#x27fc; detach_thread_from_wrapper()">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1697135926071" FOLDED="true" ID="ID_447905558" MODIFIED="1697143981730" TEXT="work-force.hpp">
<icon BUILTIN="button_ok"/>
<node CREATED="1697135941988" ID="ID_1931283279" MODIFIED="1697135957808" TEXT="war im Vorgriff auf den Umbau zun&#xe4;chst direkt per std::thread implementiert">
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1697136061828" ID="ID_1747876427" MODIFIED="1697136128861" TEXT="Baumuster ist der Standard-Fall">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node CREATED="1697136134755" ID="ID_1167712294" MODIFIED="1697136186393" TEXT="spezielle Fehlerbehandlung hier sinnvoll">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      es ist hier sinnvoll, direkt in der Thread-Funktion eine dedizierte Fehlerbehandlung vorzusehen &#8212; auch schon im Vorgriff auf weitere Entwicklung
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1697136209177" ID="ID_1500433483" MODIFIED="1697136267281" TEXT="der CONF::finalHook geh&#xf6;rt hier zum Business-API">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      das hei&#223;t, er ist nicht zu verwechseln mit dem atExit-&#955; aus dem Thread-wrapper Framework
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1697136289876" ID="ID_610290763" MODIFIED="1697136351821" TEXT="thread.detach() ist hier einfach das normale Verhalten">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      es mu&#223; in keinster Weise noch extra per Lifecycle-Hook implementiert werden, sondern entspricht genau dem Verhalten, das die PolicyLaunchOnly ohnehin bietet
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1697136668816" ID="ID_419020878" MODIFIED="1697136713713" TEXT="das thread-API mu&#xdf; nicht sichtbar sein &#x27f9; Thread kann Member sein"/>
</node>
<node COLOR="#338800" CREATED="1697136727707" ID="ID_801893805" MODIFIED="1697139035903" TEXT="umstellen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1697136731234" ID="ID_741477101" MODIFIED="1697138708777" TEXT="Thread wird Member">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1697136828489" ID="ID_1346516939" MODIFIED="1697138711182" TEXT="Thread running-State &#x27fc; isDead()">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1697136745649" ID="ID_1842560714" MODIFIED="1697138732881" TEXT="WorkForce::size() nun auf isDead()">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1697136876287" ID="ID_1031434844" MODIFIED="1697138733761" TEXT="detach() und weitere Detail-Logik &#xd83d;&#xddd1;">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1697138744225" ID="ID_1469260267" MODIFIED="1697138756027" TEXT="ThreadID automatisch dekorieren">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1697138990557" ID="ID_1523216174" MODIFIED="1697139030736" TEXT="und: Runner &#x27fc; Worker">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ziemlich d&#228;mliche Idee, einen Worker nicht &#187;Worker&#171; zu nennen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1697133453673" FOLDED="true" ID="ID_1053950423" MODIFIED="1697427218639" TEXT="R&#xfc;ckbau alter Code">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1697139618834" ID="ID_1256502123" MODIFIED="1697139634445" TEXT="pr&#xfc;fen: std::thread nicht mehr verwendet">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1697139657093" ID="ID_242211449" MODIFIED="1697421227468" TEXT="alle Dependencies vom alten thread-wrapper verfolgen">
<arrowlink COLOR="#73acb9" DESTINATION="ID_1193196100" ENDARROW="Default" ENDINCLINATION="20;-37;" ID="Arrow_ID_1803716519" STARTARROW="None" STARTINCLINATION="80;4;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1697139635632" ID="ID_1923775684" MODIFIED="1697421161407" TEXT="vault/thread-wrapper.hpp zur&#xfc;ckbauen">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#ccddde" COLOR="#435e98" CREATED="1695340272418" FOLDED="true" ID="ID_1900156892" MODIFIED="1697427163721">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      nicht mehr verwendeter Code
    </p>
    <ul>
      <li>
        aus namespace vault
      </li>
      <li>
        Support-Library
      </li>
    </ul>
  </body>
</html></richcontent>
<linktarget COLOR="#513149" DESTINATION="ID_1900156892" ENDARROW="Default" ENDINCLINATION="388;-278;" ID="Arrow_ID_765265606" SOURCE="ID_1240703198" STARTARROW="None" STARTINCLINATION="261;17;"/>
<icon BUILTIN="forward"/>
<node COLOR="#338800" CREATED="1695340297038" ID="ID_1193196100" MODIFIED="1697421227468" TEXT="die Threadpool-Library">
<linktarget COLOR="#73acb9" DESTINATION="ID_1193196100" ENDARROW="Default" ENDINCLINATION="20;-37;" ID="Arrow_ID_1803716519" SOURCE="ID_242211449" STARTARROW="None" STARTINCLINATION="80;4;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#5b280f" CREATED="1697409273140" ID="ID_1629329202" MODIFIED="1697415171152" TEXT="threads.h">
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#5b280f" CREATED="1697410116286" ID="ID_216061335" MODIFIED="1697415171153" TEXT="threadpool.h|c">
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#5b280f" CREATED="1697425740460" ID="ID_1370095352" MODIFIED="1697425752019" TEXT="priqueue wird nun definitiv nicht mehr gebraucht">
<icon BUILTIN="button_cancel"/>
<node CREATED="1697425754178" ID="ID_310836327" MODIFIED="1697425780789">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      da <i>ich </i>jetzt den Scheduler entwickle
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1697425763705" ID="ID_669263073" MODIFIED="1697425773019" TEXT="verwende ich die C++ - Standard-Lib"/>
</node>
<node COLOR="#5b280f" CREATED="1697425942369" ID="ID_1170673691" MODIFIED="1697425966682" TEXT="slist (intrusive single linked list) ist nun ebenfalls unbenutzt">
<icon BUILTIN="button_cancel"/>
<node CREATED="1697426034473" ID="ID_1676779112" MODIFIED="1697426244898" TEXT="sie wurde in der Filehandle-Library verwendet">
<arrowlink DESTINATION="ID_1344471571" ENDARROW="Default" ENDINCLINATION="166;-12;" ID="Arrow_ID_972156914" STARTARROW="None" STARTINCLINATION="-101;0;"/>
<icon BUILTIN="info"/>
</node>
<node CREATED="1697425978004" ID="ID_160804362" MODIFIED="1697426005023" TEXT="im C++ -Code haben wir stattdessen die LinkedElements"/>
<node CREATED="1697426013351" ID="ID_1252615278" MODIFIED="1697426028353" TEXT="der C++ - Standard h&#xe4;tte auch ein STL-Template anzubieten"/>
</node>
<node COLOR="#5b280f" CREATED="1697426209853" ID="ID_1344471571" MODIFIED="1697426244898" TEXT="mrucache.h|c">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1344471571" ENDARROW="Default" ENDINCLINATION="166;-12;" ID="Arrow_ID_972156914" SOURCE="ID_1676779112" STARTARROW="None" STARTINCLINATION="-101;0;"/>
<icon BUILTIN="button_cancel"/>
</node>
</node>
<node COLOR="#338800" CREATED="1697411103645" ID="ID_1633688905" MODIFIED="1697419789683" TEXT="Teile der C-Locking-Library">
<icon BUILTIN="button_ok"/>
<node CREATED="1697411115440" ID="ID_874002710" MODIFIED="1697411132602" TEXT="und zwar alles au&#xdf;er dem Mutex/Recmutex-Support"/>
<node CREATED="1697411135331" ID="ID_672301025" MODIFIED="1697411163589" TEXT="dieser wird noch von Config und dem Plugin-Loader verwendet"/>
<node COLOR="#435e98" CREATED="1697417399487" ID="ID_1747262317" MODIFIED="1697419793012" TEXT="zur&#xfc;ckbauen">
<icon BUILTIN="yes"/>
<node COLOR="#5b280f" CREATED="1697417454157" ID="ID_278088913" MODIFIED="1697418243875" TEXT="condition.h | LUMIERA_CONDITION">
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#5b280f" CREATED="1697418185547" ID="ID_693987085" MODIFIED="1697419003372" TEXT="reccondition.h | LUMIERA_RECCONDITION">
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#5b280f" CREATED="1697419007307" ID="ID_522318046" MODIFIED="1697419692704" TEXT="rwlock.h | LUMIERA_RDLOCK | LUMIERA_WRLOCK | LUMIERA_RWLOCK">
<icon BUILTIN="button_cancel"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1697411215634" ID="ID_1247228374" MODIFIED="1697415890697" TEXT="MMap und Filehandle-Library">
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1697411224809" ID="ID_238758089" MODIFIED="1697411252718" TEXT="wirklich?">
<font NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="help"/>
<node CREATED="1697411254234" ID="ID_1939586875" MODIFIED="1697411261888" TEXT="seinerzeit war die ein Highlight"/>
<node CREATED="1697411262596" ID="ID_1075634497" MODIFIED="1697411277830" TEXT="die Idee ist sehr pfiffig"/>
<node CREATED="1697411341281" ID="ID_12386519" MODIFIED="1697411400680" TEXT="dieser Ansatz wurde bisher nicht praktisch genutzt">
<icon BUILTIN="clanbomber"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1697411375304" ID="ID_1634350126" MODIFIED="1697411404628" TEXT="der Code ist komplex und ich m&#xf6;chte ihn nicht pflegen">
<icon BUILTIN="messagebox_warning"/>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1697411278658" ID="ID_52728291" MODIFIED="1697413829769">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      die Zukunft liegt aber bei <b>IO_URING</b>
    </p>
  </body>
</html></richcontent>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node CREATED="1697411407544" ID="ID_342027570" MODIFIED="1697411422234" TEXT="Memory-Mapping ist nicht wirklich asynchron"/>
<node CREATED="1697411423030" ID="ID_1575004801" MODIFIED="1697411432801" TEXT="der LInux-Kernel entwickelt sich derzeit start weiter"/>
<node CREATED="1697411449099" ID="ID_857705061" MODIFIED="1697411462060" TEXT="ich m&#xf6;chte auf diesen Mainstream-Ansatz f&#xfc;r asynchrones IO setzen"/>
</node>
</node>
<node COLOR="#5b280f" CREATED="1697413303090" ID="ID_1804712645" MODIFIED="1697415673812" TEXT="file">
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#5b280f" CREATED="1697413305489" ID="ID_1961339679" MODIFIED="1697415606054" TEXT="filehandle">
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#5b280f" CREATED="1697413324315" ID="ID_818546076" MODIFIED="1697415548197" TEXT="filedescriptor">
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#5b280f" CREATED="1697413369977" ID="ID_1149868462" MODIFIED="1697415493591" TEXT="fileheader">
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#5b280f" CREATED="1697415284256" ID="ID_11206254" MODIFIED="1697415467144" TEXT="file-handling">
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#5b280f" CREATED="1697415300910" ID="ID_787354803" MODIFIED="1697415441364" TEXT="filehandlecache">
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#5b280f" CREATED="1697415319868" ID="ID_690513773" MODIFIED="1697415398010" TEXT="filedescriptorregistry">
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#5b280f" CREATED="1697413348929" ID="ID_1634357154" MODIFIED="1697415270946" TEXT="mmap">
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#5b280f" CREATED="1697413352255" ID="ID_90645826" MODIFIED="1697415166128" TEXT="mmappings">
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#5b280f" CREATED="1697415198539" ID="ID_1224036923" MODIFIED="1697415224791" TEXT="mmapcache">
<icon BUILTIN="button_cancel"/>
</node>
</node>
<node COLOR="#338800" CREATED="1697412884925" ID="ID_1210722823" MODIFIED="1697417330278" TEXT="aktive &#xbb;Backend&#xab;-Services">
<icon BUILTIN="button_ok"/>
<node CREATED="1697412897096" ID="ID_1493569613" MODIFIED="1697417325351" TEXT="de-facto sind und waren sie nie aktiv">
<icon BUILTIN="info"/>
</node>
<node COLOR="#5b280f" CREATED="1697412944050" ID="ID_469315963" MODIFIED="1697416605420" TEXT="lumiera_backend_init">
<icon BUILTIN="button_cancel"/>
<node CREATED="1697412949262" ID="ID_530584509" MODIFIED="1697412965220" TEXT="wird nur von einigen C-Tests aufgerufen"/>
<node CREATED="1697412965735" ID="ID_184291979" MODIFIED="1697417337593" TEXT="und alle diese werden nun zur&#xfc;ckgebaut">
<icon BUILTIN="yes"/>
<node CREATED="1697412982741" ID="ID_1127178982" MODIFIED="1697412986681" TEXT="test-filedescriptors"/>
<node CREATED="1697412989540" ID="ID_1332663335" MODIFIED="1697412993088" TEXT="test-filehandles"/>
<node CREATED="1697412996483" ID="ID_165008493" MODIFIED="1697412999359" TEXT="test-fileheader"/>
<node CREATED="1697413004562" ID="ID_763221016" MODIFIED="1697417350925" TEXT="test-filemmap">
<arrowlink COLOR="#8f899d" DESTINATION="ID_914919566" ENDARROW="Default" ENDINCLINATION="331;-45;" ID="Arrow_ID_642629726" STARTARROW="None" STARTINCLINATION="-215;43;"/>
</node>
</node>
</node>
<node COLOR="#5b280f" CREATED="1697416171861" ID="ID_1177609476" MODIFIED="1697416528083" TEXT="MPool wird auch nicht mehr verwendet">
<arrowlink COLOR="#95859a" DESTINATION="ID_1397883507" ENDARROW="Default" ENDINCLINATION="321;-35;" ID="Arrow_ID_384770496" STARTARROW="None" STARTINCLINATION="206;15;"/>
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#5b280f" CREATED="1697416609487" ID="ID_988095271" MODIFIED="1697416620383" TEXT="backend.c|h">
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#5b280f" CREATED="1697424881682" ID="ID_722751132" MODIFIED="1697425475459" TEXT="der &#xbb;Resource-Collector&#xab; ist ein hohles Konzept">
<icon BUILTIN="button_cancel"/>
<node CREATED="1697424924877" ID="ID_1764284701" MODIFIED="1697425456930" TEXT="die Idee war...">
<icon BUILTIN="info"/>
<node CREATED="1697424935952" ID="ID_677133221" MODIFIED="1697424951754" TEXT="Resourcen verschwenden um Performance zu gewinnen"/>
<node CREATED="1697424952366" ID="ID_1185122951" MODIFIED="1697424964743" TEXT="wenn Ressourcen knapp werden, dann sammelt man &#xdc;berschu&#xdf; ein"/>
<node CREATED="1697424965516" ID="ID_418086793" MODIFIED="1697425497285" TEXT="das Konzept wurde nie belastbar spezifiziert oder entwickelt">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Das Konzept escheint mit mehr wie ein &#187;das k&#246;nnte vielleicht funktionieren&#171;-Traum. Es wurde nie auch nur ansatzweise gekl&#228;rt, wie man einerseits Performance durch Ressourcen-Verschwendung gewinnen kann, dann aber im Notfall im Stande sein sollte, diese verschwendeten Resourcen wieder einzusammeln. Und nicht nur das; es wurde nie gezeigt, da&#223; ein solches Konzept zu einem stabilen Betriebszustand f&#252;hren kann &#8212; tats&#228;chlich w&#228;re zu bef&#252;rchten, da&#223; das regelm&#228;&#223;ige Einsammeln von Resourcen die Applikation sogar ausbremst. Als Beispiel f&#252;hre ich die allseits bekannten Probleme mit Garbage-Collection an; man bedenke nur, was inzwischen alles an Komplexit&#228;t in den Java-GC eingebaut wurde, um ihn auf ein gutes Performance-Niveau zu heben
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="stop-sign"/>
</node>
<node CREATED="1697424987329" ID="ID_1919440892" MODIFIED="1697425011865" TEXT="de-facto wird zwar ein Hook installiert, der aber nur die Applikation terminiert">
<icon BUILTIN="messagebox_warning"/>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1697425507275" ID="ID_1881799572" MODIFIED="1697425532746" TEXT="ich bin schockiert &#x2014; dachte immer, da steckt was dahinter">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1697425017877" ID="ID_944085936" MODIFIED="1697425043284" TEXT="einzige verbleibende Verwendung: in der &quot;Safeclib&quot;">
<icon BUILTIN="info"/>
</node>
<node COLOR="#338800" CREATED="1697425044770" ID="ID_1738203573" MODIFIED="1697425070854" TEXT="diese Verwendung durch einen direkten Aufruf die_no_mem ersetzen">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1697413844473" ID="ID_1513506011" MODIFIED="1697422380700" TEXT="auch Config-Init k&#xf6;nnte bereits abgeklemmt werden">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Tats&#228;chlich laden wir nichts aus dem geplanten Config-System (sondern aus der setup.ini).
    </p>
    <p>
      Habe grade gepr&#252;ft: selbst der Plugin-Loader hatte zwar eine Abh&#228;ngigkeit, verwendet dann aber hart gecodete Werte.
    </p>
    <p>
      <b><font color="#e73d3d">ALLERDINGS</font></b>&#160;wird lumiera_config_setdefault() verwendet, um den Wert aus der setup.ini <i>zu injizieren</i>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
<icon BUILTIN="hourglass"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1697417178371" ID="ID_1784327643" MODIFIED="1697417265347" TEXT="soll aber noch als Platzhalter im System bleiben">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<icon BUILTIN="stop-sign"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1697417201424" ID="ID_327414656" LINK="#ID_708575663" MODIFIED="1697417255903" TEXT="Diskussion / Redesign Config-System auf sp&#xe4;ter vertagt (#1224)">
<icon BUILTIN="hourglass"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1697421244345" ID="ID_1064549659" MODIFIED="1697422597490" TEXT="Applikation startet nicht mehr">
<icon BUILTIN="broken-line"/>
<node CREATED="1697421258318" ID="ID_658298806" MODIFIED="1697421265737" TEXT="SEGFAULT im Plugin-Loader">
<icon BUILTIN="info"/>
<node CREATED="1697421730975" ID="ID_1876856285" MODIFIED="1697421747084" TEXT="Fehler passiert in lumiera_tmpbuf_snprintf()"/>
<node CREATED="1697421785759" ID="ID_29849514" MODIFIED="1697421795473" TEXT="path = lumiera_config_wordlist_get_nth() scheint noch zu funktionieren"/>
<node CREATED="1697421749059" ID="ID_1514185303" MODIFIED="1697421770077" TEXT="aus dem tmpbuf kommt noch ein valider Pointer zur&#xfc;ck"/>
<node CREATED="1697421770665" ID="ID_207629250" MODIFIED="1697421847339" TEXT="aber nach dem Einsprung in lumiera_tmpbuf_snprintf() ist diese Addresse pl&#xf6;tzlich invalid"/>
</node>
<node CREATED="1697422381830" ID="ID_919674131" MODIFIED="1697422427940">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <font face="Monospaced" color="#451bbd">lumiera_config_setdefault()</font>&#160;wird weiterhin im Plugin-Loader gebraucht
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="broken-line"/>
<node CREATED="1697422430200" ID="ID_871242260" MODIFIED="1697422441810" TEXT="auch wenn das Config-System selber nicht verwendet wird"/>
<node CREATED="1697422442494" ID="ID_1936179617" MODIFIED="1697422462844" TEXT="hier&#xfc;ber &#xbb;injizieren&#xab; wir den Plugin-Suchpfad">
<icon BUILTIN="idea"/>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1697422622322" ID="ID_1478707165" MODIFIED="1697422644897" TEXT="(ich wei&#xdf; schon warum ich den C-Programmierstil nicht mag)">
<node CREATED="1697422646843" ID="ID_913881671" MODIFIED="1697422663624" TEXT="eine richtige Fehlerbehandlung w&#xe4;re schon was geiles"/>
<node CREATED="1697422664232" ID="ID_1203678837" MODIFIED="1697422671231" TEXT="aber das ist dann in C immer zu m&#xfc;hsam"/>
<node CREATED="1697422695151" ID="ID_1763800072" MODIFIED="1697422762375" TEXT="wozu auch &#x2014; ein NULL gen&#xfc;gt"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1697410139618" ID="ID_1193663177" MODIFIED="1697422781173" TEXT="zugeh&#xf6;rige Tests">
<icon BUILTIN="button_ok"/>
<node COLOR="#5b280f" CREATED="1697410179853" ID="ID_376714466" MODIFIED="1697415162481" TEXT="test-threadpool">
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#5b280f" CREATED="1697410183704" ID="ID_161726025" MODIFIED="1697415162481" TEXT="test-threads">
<icon BUILTIN="button_cancel"/>
<node CREATED="1697414407374" ID="ID_589614273" MODIFIED="1697414420912" TEXT="waren &#xfc;berhaupt nie fertig"/>
<node CREATED="1697414421459" ID="ID_1135717554" MODIFIED="1697414442252" TEXT="sind nicht in die Testsuite eingebunden"/>
</node>
<node COLOR="#5b280f" CREATED="1697425711272" ID="ID_1763213011" MODIFIED="1697425721248" TEXT="test-priqueue">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1697410187148" ID="ID_617735462" MODIFIED="1697410189592" TEXT="test-locking">
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1697411551904" ID="ID_722149559" MODIFIED="1697419816375" TEXT="partiell">
<node COLOR="#5b280f" CREATED="1697417815545" ID="ID_305428543" MODIFIED="1697417836626" TEXT="conditionops">
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#5b280f" CREATED="1697417825292" ID="ID_1068959403" MODIFIED="1697417836626" TEXT="conditionsection">
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#5b280f" CREATED="1697417833365" ID="ID_775238739" MODIFIED="1697417836625" TEXT="conditionforgotunlock">
<icon BUILTIN="button_cancel"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1697417879380" ID="ID_1650318770" MODIFIED="1697417910756" TEXT="condition signaling">
<icon BUILTIN="hourglass"/>
<icon BUILTIN="closed"/>
<node CREATED="1697417913831" HGAP="77" ID="ID_322375668" MODIFIED="1697417926428" TEXT="waren nie implementiert" VSHIFT="2">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1697417895789" ID="ID_122508560" MODIFIED="1697417910756" TEXT="condition broadcasting">
<icon BUILTIN="hourglass"/>
<icon BUILTIN="closed"/>
</node>
<node COLOR="#5b280f" CREATED="1697418314714" ID="ID_1574683826" MODIFIED="1697418882181" TEXT="recconditionops">
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#5b280f" CREATED="1697418859421" ID="ID_1599591637" MODIFIED="1697418882181" TEXT="recconditionsection">
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#5b280f" CREATED="1697418859421" ID="ID_884973729" MODIFIED="1697418882182" TEXT="recconditionforgotunlock">
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#5b280f" CREATED="1697418859421" ID="ID_132706269" MODIFIED="1697418882182" TEXT="chainedrecconditionsection">
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#5b280f" CREATED="1697418859422" ID="ID_1115100308" MODIFIED="1697418882183" TEXT="nestedrecconditionsection">
<icon BUILTIN="button_cancel"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1697418859422" ID="ID_1733993812" MODIFIED="1697418889788" TEXT="reccondition signaling (planned)">
<icon BUILTIN="hourglass"/>
<icon BUILTIN="closed"/>
<node CREATED="1697417913831" HGAP="40" ID="ID_1988252588" MODIFIED="1697418902612" TEXT="waren nie implementiert" VSHIFT="2">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1697418859422" ID="ID_1179152354" MODIFIED="1697418889787" TEXT="reccondition broadcasting (planned)">
<icon BUILTIN="hourglass"/>
<icon BUILTIN="closed"/>
</node>
<node COLOR="#5b280f" CREATED="1697419146726" ID="ID_1542929893" MODIFIED="1697419688394" TEXT="rwlocksection">
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#5b280f" CREATED="1697419186108" ID="ID_1830685295" MODIFIED="1697419688393" TEXT="rwlockforgotunlock">
<icon BUILTIN="button_cancel"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1697419249564" ID="ID_61443631" MODIFIED="1697419613711" TEXT="rwdeadlockwr">
<icon BUILTIN="broken-line"/>
<node CREATED="1697417913831" HGAP="85" ID="ID_1180362252" MODIFIED="1697419645696" TEXT="waren nie in die Test-Suite gemappt worden" VSHIFT="2">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1697419276596" ID="ID_342637961" MODIFIED="1697419288172" TEXT="rwdeadlockrw">
<icon BUILTIN="broken-line"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1697419622694" ID="ID_357778517" MODIFIED="1697419636296" TEXT="rwlockdeadlockwr">
<icon BUILTIN="hourglass"/>
<icon BUILTIN="closed"/>
<node CREATED="1697417913831" HGAP="40" ID="ID_1926490446" MODIFIED="1697418902612" TEXT="waren nie implementiert" VSHIFT="2">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1697419628880" ID="ID_90758941" MODIFIED="1697419636300" TEXT="rwlockdeadlockrw">
<icon BUILTIN="hourglass"/>
<icon BUILTIN="closed"/>
</node>
</node>
<node COLOR="#338800" CREATED="1697411554941" ID="ID_1126934598" MODIFIED="1697419809044" TEXT="Mutex/Recmutex erhalten">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1697417544752" ID="ID_59112717" MODIFIED="1697419800992" TEXT="11locking.tests reduzieren">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#5b280f" CREATED="1697424831846" ID="ID_1607711707" MODIFIED="1697424839853" TEXT="test-resourcecollector">
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#5b280f" CREATED="1697412982741" ID="ID_78343246" MODIFIED="1697415158401" TEXT="test-filedescriptors">
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#5b280f" CREATED="1697412989540" ID="ID_1988574517" MODIFIED="1697415158401" TEXT="test-filehandles">
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#5b280f" CREATED="1697412996483" ID="ID_1662590649" MODIFIED="1697415158401" TEXT="test-fileheader">
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#5b280f" CREATED="1697413004562" ID="ID_914919566" MODIFIED="1697417350925" TEXT="test-filemmap">
<linktarget COLOR="#8f899d" DESTINATION="ID_914919566" ENDARROW="Default" ENDINCLINATION="331;-45;" ID="Arrow_ID_642629726" SOURCE="ID_763221016" STARTARROW="None" STARTINCLINATION="-215;43;"/>
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#5b280f" CREATED="1697416193183" ID="ID_1397883507" MODIFIED="1697416524763" TEXT="test-mpool">
<linktarget COLOR="#95859a" DESTINATION="ID_1397883507" ENDARROW="Default" ENDINCLINATION="321;-35;" ID="Arrow_ID_384770496" SOURCE="ID_1177609476" STARTARROW="None" STARTINCLINATION="206;15;"/>
<icon BUILTIN="button_cancel"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1697427109148" ID="ID_1593342574" MODIFIED="1697427117092" TEXT="Testsuite und Applikation laufen weiterhin">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1693789156806" ID="ID_128127845" MODIFIED="1697427234364" TEXT="Monitor erhalten und umschreiben">
<icon BUILTIN="yes"/>
<node CREATED="1693789376921" ID="ID_158507519" MODIFIED="1693789398154" TEXT="ein Monitor geh&#xf6;rt typischerweise in ein Framework"/>
<node CREATED="1693789399454" ID="ID_1417502572" MODIFIED="1693789408745" TEXT="und hier haben wir ein Applicatino-Framework"/>
<node CREATED="1693789410469" ID="ID_1281994248" MODIFIED="1693789423198" TEXT="in diesem Rahmen hat er sich hervorragend bew&#xe4;hrt"/>
<node COLOR="#338800" CREATED="1695337735932" FOLDED="true" HGAP="-30" ID="ID_293636243" MODIFIED="1697393697425" TEXT="Umarbeiten der Implementierung" VSHIFT="40">
<linktarget COLOR="#53a385" DESTINATION="ID_293636243" ENDARROW="Default" ENDINCLINATION="-170;13;" ID="Arrow_ID_1228969757" SOURCE="ID_714565160" STARTARROW="None" STARTINCLINATION="56;7;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1695337750146" ID="ID_99990028" MODIFIED="1697386514303" TEXT="brauchen wir das timedWait-Feature wirklich?">
<font NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="help"/>
<node CREATED="1695337787989" ID="ID_154693007" MODIFIED="1695337808761" TEXT="ich errinnere mich, das nebenbei mit eingebaut zu haben..."/>
<node CREATED="1695337809498" ID="ID_789251448" MODIFIED="1695337825212" TEXT="inzwischen gibt es da diverse bessere M&#xf6;glichkeiten (mit Futures)"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1697386278761" ID="ID_1772404839" MODIFIED="1697386519960" TEXT="ja &#x2014; sinnvoll als eigenst&#xe4;ndiges Feature">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Es handelt sich um ein eigenst&#228;ndiges Feature, n&#228;mlich da&#223; ein wait abgebrochen wird
    </p>
    <ul>
      <li>
        wir haben daf&#252;r wenige eche use-Cases in der Codebasis (Emergency-Shutdown und Builder-Timeout im Steam-Dispatcher)
      </li>
      <li>
        f&#252;r feste Verz&#246;gerungen gibt es inzwischen std::this_thread::sleep_for
      </li>
      <li>
        Angleichen an das C++ API &#10233; eigenst&#228;ndige Funktion wait_for()
      </li>
      <li>
        R&#252;ckbau der dynamischen &#196;nderbarkeit per setTimeout()
      </li>
    </ul>
  </body>
</html></richcontent>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#338800" CREATED="1695395131329" ID="ID_1209350338" MODIFIED="1697386269378" TEXT="Umstellen der bestehenden Wrapper auf C++14">
<arrowlink COLOR="#1e9fe8" DESTINATION="ID_963020368" ENDARROW="Default" ENDINCLINATION="-1386;137;" ID="Arrow_ID_750207085" STARTARROW="None" STARTINCLINATION="-379;-555;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1695395162340" ID="ID_188901559" MODIFIED="1697386602627" TEXT="Pr&#xfc;fen auf m&#xf6;gliche Vereinfachungen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1697386548706" ID="ID_1978159990" MODIFIED="1697386566541" TEXT="Implementierung des Monitors &#x201e;geschrumpft&#x201c;">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1697386567376" ID="ID_1605999602" MODIFIED="1697386600567" TEXT="nur noch &#x3bb;">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1696120192842" ID="ID_276811059" MODIFIED="1697386048254" TEXT="Bug im wait-&#xbb;convenience-shorcut&#xab;">
<linktarget COLOR="#555dcb" DESTINATION="ID_276811059" ENDARROW="Default" ENDINCLINATION="-1328;-99;" ID="Arrow_ID_707193075" SOURCE="ID_59576653" STARTARROW="None" STARTINCLINATION="-1717;72;"/>
<linktarget COLOR="#682b39" DESTINATION="ID_276811059" ENDARROW="Default" ENDINCLINATION="617;-40;" ID="Arrow_ID_599709584" SOURCE="ID_323663607" STARTARROW="None" STARTINCLINATION="-274;12;"/>
<icon BUILTIN="broken-line"/>
<node COLOR="#5b280f" CREATED="1696120269872" ID="ID_538013070" MODIFIED="1697386018922" TEXT="denkbar w&#xe4;re stattdessen eine statische Methode">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1696120282704" ID="ID_1767472760" MODIFIED="1696120305079" TEXT="(oder man verzichtet komplett auf den &#x201e;shortcut&#x201c;)"/>
<node COLOR="#435e98" CREATED="1697386022454" ID="ID_409190764" MODIFIED="1697386045377" TEXT="beste L&#xf6;sung: &#x201e;einfach&#x201c; mal den Bug fixen">
<icon BUILTIN="idea"/>
<node CREATED="1697386085568" ID="ID_584101376" MODIFIED="1697386095475" TEXT="in dem Fall hilft ein explizites try-catch"/>
<node CREATED="1697386096254" ID="ID_953200093" MODIFIED="1697386245340" TEXT="problematisch ist ja nur das wait()">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...weil es im Konstruktor steht, w&#252;rde ein Fehler hier den Konstruktor als <i>gescheitert </i>klassifizieren; dadurch w&#252;rden zwar die Teil-Objekte abgebaut, aber der Objekt-Destruktor nicht aufgerufen. Daher
    </p>
    <ul>
      <li>
        das lock() steht ungesch&#252;tzt &#10233; wenn es scheitert mu&#223; auch kein unlock() folgen
      </li>
      <li>
        dagegen das wait() wird gesch&#252;tzt &#10233; bei Exception explizit unlock() und re-throw <font color="#239362">&#10004;</font>
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1695395186529" ID="ID_110802115" MODIFIED="1697393693278" TEXT="Tests &#xfc;berpr&#xfc;fen und modernisieren">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1695395205001" ID="ID_881035953" MODIFIED="1697393541417" TEXT="SyncLocking_test">
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1695395218517" ID="ID_1241448952" MODIFIED="1695395351970" TEXT="Kritik: ist zwar fordernd, aber nicht klar">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Der Test setzt das Locking zwar erheblich unter Druck, aber er ist so komplex, da&#223; man sich einarbeiten mu&#223;, um ihn &#252;berhaupt zu verstehen
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#435e98" CREATED="1695395397765" ID="ID_1532807851" MODIFIED="1697393488857" TEXT="Idee: stattdessen den Checker aus ThreadWrapper_test verwenden">
<linktarget COLOR="#fedec1" DESTINATION="ID_1532807851" ENDARROW="Default" ENDINCLINATION="416;-16;" ID="Arrow_ID_1646166026" SOURCE="ID_1407826381" STARTARROW="None" STARTINCLINATION="479;36;"/>
<icon BUILTIN="idea"/>
</node>
<node COLOR="#435e98" CREATED="1695395436073" ID="ID_735920726" MODIFIED="1697393504852" TEXT="mit / ohne - Test">
<icon BUILTIN="yes"/>
<node COLOR="#338800" CREATED="1695395469746" ID="ID_1750044155" MODIFIED="1697393501674" TEXT="den &#xbb;ohne&#xab;-Test so auslegen, da&#xdf; er (fast) immer scheitert">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1697393507661" ID="ID_1302265759" MODIFIED="1697393537113" TEXT="Hierzu eine Leerlauf-Policy f&#xfc;r den Monitor bereitstellen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1695395590676" ID="ID_1887210552" MODIFIED="1697393502730" TEXT="Wirksamkeit ist direkt im Test dokumentiert">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1697393547402" ID="ID_1472144340" MODIFIED="1697393583327" TEXT="SyncWaiting_test">
<icon BUILTIN="button_ok"/>
<node CREATED="1697393567047" ID="ID_692697218" MODIFIED="1697393569675" TEXT="vereinfacht"/>
<node CREATED="1697393570119" ID="ID_1268803288" MODIFIED="1697393582214" TEXT="es gibt jetzt keine verschiedenen Binding-Varianten mehr"/>
</node>
<node COLOR="#338800" CREATED="1697393612553" ID="ID_1734318945" MODIFIED="1697393689392" TEXT="SyncTimedwait_test">
<icon BUILTIN="button_ok"/>
<node CREATED="1697393676649" ID="ID_537743356" MODIFIED="1697393684098" TEXT="keinerlei concurrency"/>
<node CREATED="1697393626992" ID="ID_779548550" MODIFIED="1697393636202" TEXT="pr&#xfc;ft lediglich da&#xdf; ein Timeout passiert"/>
<node CREATED="1697393644213" ID="ID_335589798" MODIFIED="1697393687086" TEXT="ist OK, da es sich ja nun um ein Stdlib-Feature handelt">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1697427486458" ID="ID_714565160" MODIFIED="1697427585072" TEXT="Umbau/Aufr&#xe4;umen">
<arrowlink COLOR="#2b9d99" DESTINATION="ID_1075854169" ENDARROW="Default" ENDINCLINATION="-209;19;" ID="Arrow_ID_1264128118" STARTARROW="None" STARTINCLINATION="56;7;"/>
<arrowlink COLOR="#53a385" DESTINATION="ID_293636243" ENDARROW="Default" ENDINCLINATION="-170;13;" ID="Arrow_ID_1228969757" STARTARROW="None" STARTINCLINATION="56;7;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1693791978730" ID="ID_167871463" MODIFIED="1697427698886" TEXT="Spezifikation">
<icon BUILTIN="yes"/>
<node CREATED="1693792127590" ID="ID_399407420" MODIFIED="1693792149871" TEXT="St&#xe4;rke kann variiert werden">
<node CREATED="1693792157926" ID="ID_429801566" MODIFIED="1693792193345" TEXT="komplett heruntergeregelt &#x27f9; Render-Engine deaktiviert"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1693792250942" ID="ID_1000686206" MODIFIED="1699368575685" TEXT="Obergrenze &#x2259; Hardware-concurrency * Provisionierungs-Faktor">
<linktarget COLOR="#64334e" DESTINATION="ID_1000686206" ENDARROW="Default" ENDINCLINATION="-739;-25;" ID="Arrow_ID_1025143985" SOURCE="ID_1177531499" STARTARROW="None" STARTINCLINATION="-283;494;"/>
<node CREATED="1699368519890" ID="ID_541315073" MODIFIED="1699368526897" TEXT="ist (insgeheim) &#xe4;nderbar"/>
<node CREATED="1699368527449" ID="ID_881775978" MODIFIED="1699368543161" TEXT="wird initialisiert auf Hardware-Wert"/>
</node>
<node CREATED="1693792308542" ID="ID_1678880734" MODIFIED="1693792318777" TEXT="Herunterregeln erfolgt kooperativ"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1693792585515" FOLDED="true" ID="ID_464175339" MODIFIED="1697806953842" TEXT="geplant: dynamische Kapazit&#xe4;tsregelung">
<arrowlink COLOR="#75769b" DESTINATION="ID_210862409" ENDARROW="Default" ENDINCLINATION="-667;72;" ID="Arrow_ID_1800712901" STARTARROW="None" STARTINCLINATION="-540;37;"/>
<icon BUILTIN="hourglass"/>
<node CREATED="1693792629986" ID="ID_1269240792" MODIFIED="1693792648043" TEXT="nur mindest-St&#xe4;rke l&#xe4;uft"/>
<node CREATED="1693792648648" ID="ID_1347574580" MODIFIED="1693792689438" TEXT="bei Bedarf wird hochsakliert"/>
</node>
</node>
<node CREATED="1693792477807" ID="ID_5065581" MODIFIED="1693792530740" TEXT="Zyklus: pull work / check / sleep">
<node CREATED="1693792715966" ID="ID_717442289" MODIFIED="1697663859531" TEXT="die &quot;pull-work&quot;-Funkton wird vom Scheduler-Service bereitgestellt"/>
<node CREATED="1697663861416" ID="ID_558783590" MODIFIED="1697663878469" TEXT="...ist aber implementiert mit Funktionalit&#xe4;t von Layer-2"/>
<node CREATED="1693792744114" ID="ID_1037530409" MODIFIED="1693792754452" TEXT="die Schlaf-Periode ist ein (steuer)-Parameter"/>
<node COLOR="#5b280f" CREATED="1693792760213" ID="ID_1223151647" MODIFIED="1697810671367" TEXT="ggfs leicht randomisiert">
<icon BUILTIN="button_cancel"/>
<node CREATED="1693792791729" ID="ID_649360495" MODIFIED="1693792804966" TEXT="Einsch&#xe4;tzung: das gen&#xfc;gt um Contention zu vermeiden"/>
<node CREATED="1693792900758" ID="ID_1613781033" MODIFIED="1693792927222" TEXT="Vorraussetzung: Arbeitsphase &gt;&gt; Management-Phase"/>
<node CREATED="1697810446431" ID="ID_1168022862" MODIFIED="1697810667289" TEXT="sollte sogar ohne Randomisierung keine Probleme geben">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Denn jeder Aufruf des Fork-Funktors wird unterschiedlich lang dauern. Und selbst wenn alle Worker idle sind: dann gibt es bei der ersten Runde die Mega-Contention, und danach liegen die Wartezyklen aller Worker leicht gestaffelt. Contention w&#228;re nur dann ein Problem, wenn jemand, der <i>arbeiten k&#246;nnte, </i>vom Arbeiten abgehalten wird.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1697810678448" ID="ID_1023870178" MODIFIED="1697810695263" TEXT="daher ist IDLE_WAIT nun ein beim Start festgelegter Konfig-Parameter"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1693952215256" FOLDED="true" ID="ID_532083956" MODIFIED="1694304448282" TEXT="Implementierung">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1693952247831" ID="ID_1732680738" LINK="#ID_391262141" MODIFIED="1694096132122" TEXT="Work-Function m&#xf6;glichst inline aber statisch konfigurierbar">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      das bedeutet, da&#223; die Work-Function bereits auf Typ-Ebene definiert sein mu&#223;; eine M&#246;glichkeit ist, sie &#252;ber eine Config-Template-Basis einzumischen
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#338800" CREATED="1693952387244" ID="ID_713372762" MODIFIED="1694222755384" TEXT="Worker-Lebenszyklus">
<icon BUILTIN="button_ok"/>
<node CREATED="1694096144054" ID="ID_1871831859" MODIFIED="1694096180493" TEXT="Skalieren wird durch ein Bedarfs-Signal ausgel&#xf6;st"/>
<node CREATED="1694096181545" ID="ID_1507356674" MODIFIED="1694096206961" TEXT="wird beim Hochskalieren (schrittweise) erzeugt"/>
<node CREATED="1694096216352" ID="ID_1944988231" MODIFIED="1694096230206" TEXT="bekommt alle weitere Steuerung vom Work-Funktor mitgeteilt"/>
<node CREATED="1694096242144" ID="ID_1798309477" MODIFIED="1694096261145" TEXT="durchl&#xe4;uft bei Inaktivit&#xe4;t einen konfigurierten Schlaf-Zyklus"/>
<node CREATED="1694096262158" ID="ID_1697788425" MODIFIED="1694096536053" TEXT="beendet sich selbt bei l&#xe4;ngerandauernder Inaktivit&#xe4;t"/>
<node CREATED="1694096475945" ID="ID_787243685" MODIFIED="1694096502953" TEXT="ruft vor Ende zuverl&#xe4;ssig eine hook-Funktion auf"/>
<node CREATED="1694096411074" ID="ID_1767238" MODIFIED="1694096454253">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      klinkt sich vor Beenden aus: <font face="Monospaced" color="#6505c4">thread::detach()</font>
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#435e98" CREATED="1693952433774" FOLDED="true" ID="ID_1630947367" MODIFIED="1694222737565" TEXT="Steuerung">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="info"/>
<node COLOR="#435e98" CREATED="1693952446548" FOLDED="true" ID="ID_311286578" MODIFIED="1694222772583" TEXT="alle Steuerung durch die Worker selbst ausf&#xfc;hren">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Entsprechend dem Design-Prinzip f&#252;r die Scheduler-Steuerung m&#246;chte ich einen aktivenen Management-Thread und eine Zuweisung von Aktivit&#228;ten vermeiden
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
<node CREATED="1693954286153" ID="ID_426415001" MODIFIED="1693954288784" TEXT="Vorteil">
<node CREATED="1693954302936" ID="ID_1465443197" MODIFIED="1693954542773" TEXT="kein single point of failure">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Wir vermeiden Kontrollverlust durch einen Fehler im zentralen Steuer-Thread, Verklemmungen oder Split-brain
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1693954557094" ID="ID_572342768" MODIFIED="1693954578085" TEXT="Synchronisation Master &#x27f7; Worker f&#xe4;llt weg"/>
<node CREATED="1693959542377" ID="ID_1692943553" MODIFIED="1693959561266" TEXT="Steuer-Zustand im Pool wird &#xfc;berfl&#xfc;ssig"/>
</node>
<node CREATED="1693954289281" ID="ID_818498191" MODIFIED="1693954291686" TEXT="Nachteil">
<node CREATED="1693954667743" ID="ID_423453028" MODIFIED="1693954680634" TEXT="Zugriff auf Steuerdaten ist problematisch"/>
<node CREATED="1693954694578" ID="ID_955972726" MODIFIED="1693954727243" TEXT="Steuerlogik wird undurchsichtig und komplex"/>
<node CREATED="1693959588443" ID="ID_1234469964" MODIFIED="1693959679105" TEXT="man kann den Pool nicht explizit herunterfahren">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      das bedeutet auch: sein dtor mu&#223; blocken (oder laufenden Threads einfach abwerfen)
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node CREATED="1693953287501" ID="ID_745423803" MODIFIED="1693953706373" TEXT="Situationen">
<node CREATED="1693953529749" ID="ID_976479123" MODIFIED="1693953558062" TEXT="idle">
<node CREATED="1693958169975" ID="ID_871609453" MODIFIED="1693958187209" TEXT="Bedingung">
<node CREATED="1693958192262" ID="ID_620823816" MODIFIED="1693958482109" TEXT="f&#xfc;r aktuelle Zeit nichts (mehr) in der PriQueue">
<arrowlink COLOR="#4b5b6e" DESTINATION="ID_1094236956" ENDARROW="Default" ENDINCLINATION="232;0;" ID="Arrow_ID_1575351193" STARTARROW="None" STARTINCLINATION="180;12;"/>
</node>
<node CREATED="1693958273402" ID="ID_1304069363" MODIFIED="1693958501662" TEXT="mehrfach Wartezyklus durchalufen">
<arrowlink COLOR="#58367c" DESTINATION="ID_970175762" ENDARROW="Default" ENDINCLINATION="132;10;" ID="Arrow_ID_144131215" STARTARROW="None" STARTINCLINATION="145;12;"/>
<linktarget COLOR="#513d81" DESTINATION="ID_1304069363" ENDARROW="Default" ENDINCLINATION="-97;4;" ID="Arrow_ID_1405017857" SOURCE="ID_1094236956" STARTARROW="None" STARTINCLINATION="-20;5;"/>
</node>
</node>
<node CREATED="1693958242197" ID="ID_663637708" MODIFIED="1693958244665" TEXT="Reaktion">
<node CREATED="1693958248117" ID="ID_1094236956" MODIFIED="1693958482109" TEXT="Wartezyklus">
<arrowlink COLOR="#513d81" DESTINATION="ID_1304069363" ENDARROW="Default" ENDINCLINATION="-97;4;" ID="Arrow_ID_1405017857" STARTARROW="None" STARTINCLINATION="-20;5;"/>
<linktarget COLOR="#4b5b6e" DESTINATION="ID_1094236956" ENDARROW="Default" ENDINCLINATION="232;0;" ID="Arrow_ID_1575351193" SOURCE="ID_620823816" STARTARROW="None" STARTINCLINATION="180;12;"/>
</node>
<node CREATED="1693958393217" ID="ID_970175762" MODIFIED="1693958493702" TEXT="Worker klinkt sich aus und terminiert">
<linktarget COLOR="#58367c" DESTINATION="ID_970175762" ENDARROW="Default" ENDINCLINATION="132;10;" ID="Arrow_ID_144131215" SOURCE="ID_1304069363" STARTARROW="None" STARTINCLINATION="145;12;"/>
</node>
</node>
</node>
<node CREATED="1693953979682" ID="ID_517797186" MODIFIED="1693953983400" TEXT="slip">
<node CREATED="1693958684818" ID="ID_1376590474" MODIFIED="1693958726233" TEXT="Startzeit an Priqueue-Head &#xfc;berfahren">
<node CREATED="1693958735548" ID="ID_752652901" MODIFIED="1693958744646" TEXT="und zwar deutlich &#xfc;ber Wartezeit"/>
<node CREATED="1693958745946" ID="ID_1812890716" MODIFIED="1693958773012" TEXT="und zudem noch Kapazit&#xe4;tsreseve vorhanden"/>
</node>
<node CREATED="1693958775230" ID="ID_900516675" MODIFIED="1693958779193" TEXT="Reaktion">
<node CREATED="1693958843845" ID="ID_305158036" MODIFIED="1693959009635" TEXT="+1 Worker starten"/>
</node>
</node>
<node CREATED="1693954143549" ID="ID_1016637526" MODIFIED="1693954150160" TEXT="halt">
<node CREATED="1693959090314" ID="ID_1483418518" MODIFIED="1693959093230" TEXT="Bedingung">
<node CREATED="1693959094332" ID="ID_998114510" MODIFIED="1693959098151" TEXT="fataler Fehler">
<node CREATED="1693959216974" ID="ID_1732647360" MODIFIED="1693959240812" TEXT="es gen&#xfc;gt nicht, da&#xdf; nur ein Play-Prozess angehalten wurde"/>
<node CREATED="1693959201853" ID="ID_1303372468" MODIFIED="1693959257545" TEXT="Exception in Worker-Thread">
<arrowlink COLOR="#9c305e" DESTINATION="ID_1779736122" ENDARROW="Default" ENDINCLINATION="84;0;" ID="Arrow_ID_850804197" STARTARROW="None" STARTINCLINATION="83;9;"/>
</node>
</node>
<node CREATED="1693959098667" ID="ID_1779736122" MODIFIED="1693959252058" TEXT="oder externes Signal (Shutdown)">
<linktarget COLOR="#9c305e" DESTINATION="ID_1779736122" ENDARROW="Default" ENDINCLINATION="84;0;" ID="Arrow_ID_850804197" SOURCE="ID_1303372468" STARTARROW="None" STARTINCLINATION="83;9;"/>
</node>
</node>
<node CREATED="1693959294593" ID="ID_121256949" MODIFIED="1693959296594" TEXT="Reaktion">
<node CREATED="1693959298145" ID="ID_1788717235" MODIFIED="1693959307460" TEXT="Work-Funktion liefert HALT zur&#xfc;ck"/>
<node CREATED="1693959308832" ID="ID_1785662691" MODIFIED="1693959332563" TEXT="empfangender Worker klinkt sich aus und terminiert"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1693959754509" FOLDED="true" ID="ID_412205808" MODIFIED="1694222800988" TEXT="&#x27f9; Konsequenz">
<node COLOR="#435e98" CREATED="1693959760196" ID="ID_326565545" MODIFIED="1694222695440" TEXT="Steuerung erfolgt ausschlie&#xdf;lich &#xfc;ber R&#xfc;ckgabewert der WorkFun">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1693960082906" ID="ID_1717738545" MODIFIED="1693960097949" TEXT="brauche aber eine Halt-Flag">
<icon BUILTIN="messagebox_warning"/>
<node COLOR="#435e98" CREATED="1693960109254" ID="ID_344758916" MODIFIED="1694212955937" TEXT="wo anzusiedeln?">
<icon BUILTIN="help"/>
<node COLOR="#5b280f" CREATED="1693960109254" ID="ID_197196890" MODIFIED="1694131298855" TEXT="formal-logisch geh&#xf6;rt es zur WorkForce">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...man k&#246;nnte auch sagen, das ist eine Frage der Logik: die WorkForce ist allein, was den Scheduler <i>aktiv macht.</i>&#160;Deshalb sollte der dieser Status nicht woanders sein....
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#344951" CREATED="1694130437980" ID="ID_1626878133" MODIFIED="1697807837200" TEXT="die Code-Organisation spricht f&#xfc;r den Scheduler-Layer-2">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Damit ist gemeint,die Behandlung eines Belanges an einer Stelle im Code zusammenzufassen. Da die Ausf&#252;hrungs-Logik f&#252;r Activities ohnehin im Layer-2 liegt, und dort auch die R&#252;ckgabewerte generiert werden, welche letztlich die Worker steuern, w&#252;rde man dort auch ohne Weiteres eine Shutdown-Flag mit unterbringen k&#246;nnen; daf&#252;r spricht auch, da&#223; der Zugriff auf diesen Steuer-Code &#252;ber eine (verdeckte) R&#252;ck-Referenz &#252;ber die Lambdas in den einzelenn Threads erfolgen mu&#223; &#8212; und diese R&#252;ckreferenz zeigt ohnehin schon auf Scheduler-Layer-2, jeder andere Ort w&#228;re extra zu realisieren...
    </p>
  </body>
</html></richcontent>
<node BACKGROUND_COLOR="#c8c0b6" CREATED="1697807481495" ID="ID_1248086116" MODIFIED="1697807804662" TEXT="das hat sich durch die Implementierung etwas relativiert">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...wie so oft, vor allem getrieben durch die Tests: die Layer wurden zu einer Sammlung von Implementierungs-Bausteienen, welche auch aufeinander aufbauen. Aber die <i>gro&#223;e Verdrahtung </i>habe ich noch vor mir hergeschoben &#8212; sogar so weit, da&#223; Layer-2 selbst keine Referenz auf Layer-1 besitzt (sondern diese f&#252;r jede Funktion hereingereicht bekommt). Damit wird die Verdrahtung nun sternf&#246;rmig, und der Binde-Code ist das, was den &#187;Scheduler-Service&#171; ausmacht
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="licq"/>
</node>
<node CREATED="1697807495135" ID="ID_1789450412" MODIFIED="1697807816218" TEXT="Thema &#xbb;Binding und Zusammenarbeit&#xab; ist nun Sache des Scheduler-Service">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#525b6f" CREATED="1697807963209" ID="ID_301601079" MODIFIED="1697808004356" TEXT="und: WorkForce selber wird vom Scheduler betrieben und ist eng verdrahtet">
<icon BUILTIN="idea"/>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1694130760121" ID="ID_661270953" MODIFIED="1694130794493" TEXT="das Shutdown- und Destruktor-Verhalten ist aber ein Problem f&#xfc;r sich">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1694130796156" ID="ID_1003238301" MODIFIED="1694130893202" TEXT="Exceptions k&#xf6;nnen jederzeit und &#xfc;berall auftreten"/>
<node CREATED="1694130914172" ID="ID_814744890" MODIFIED="1694131086126" TEXT="das gilt im Besonderen auch f&#xfc;r die Unit-Tests (und ist dort sehr l&#xe4;stig)">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...denn ohne eine robuste Schutzma&#223;nahme bleibt nun jeder fehlerhafte Test einfach h&#228;ngen, sobald die Test-Funktion verlassen werden soll, denn der Destruktor von WorkForce mu&#223; auf die laufenden Threads joinen. Das mu&#223; er auch schon deshalb, weil die laufenden Threads noch die in den Lambdas gebundenen Resourcen brauchen.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#338800" CREATED="1694130811257" ID="ID_1321873948" MODIFIED="1694133203835" TEXT="daher mu&#xdf; ggfs der Desktuktor allein die Threads anhalten k&#xf6;nnen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...und zwar der dtor von WorkForce selber, weil jede andere L&#246;sung fragil und nicht-offensichtlich w&#228;re....
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#4e7d89" DESTINATION="ID_1321873948" ENDARROW="Default" ENDINCLINATION="527;22;" ID="Arrow_ID_1413186514" SOURCE="ID_365647480" STARTARROW="None" STARTINCLINATION="1036;0;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1694131491269" ID="ID_1077913675" MODIFIED="1694133219472" TEXT="&#x27f9; das w&#xfc;rde dann doch wieder f&#xfc;r einen expliziten Notschalter im Worker selber sprechen">
<linktarget COLOR="#7f434f" DESTINATION="ID_1077913675" ENDARROW="Default" ENDINCLINATION="-259;8;" ID="Arrow_ID_1789073668" SOURCE="ID_1365275183" STARTARROW="None" STARTINCLINATION="165;-11;"/>
</node>
</node>
</node>
<node CREATED="1693960441858" ID="ID_1893259928" MODIFIED="1694130369944" TEXT="k&#xf6;nnte auch ein watchdog sein">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...es w&#228;re denkbar, da&#223; es sich nicht um einen KILL-Switch handelt, sondern um einen Heartbeat, der z.B. aus den tick()-Aufrufen erneuert werden mu&#223;, so da&#223; im Fall einer Verklemmung sich der Scheduler selbst terminiert
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1693960760375" ID="ID_1365275183" MODIFIED="1694131724722" TEXT="der Zugriff darauf bleibt ein Problem">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <ul>
      <li>
        der Exception-Handler in einem Worker-Thread mu&#223; diese Flag setzen k&#246;nnen; dieser Handler kann jedoch jederzeit greifen (nicht nur im Managment-Mode)
      </li>
      <li>
        die Implementierung der Work-Fun im Scheduler-Commutator mu&#223; darauf zugreifen, um dann den enstprechenden R&#252;ckgabewert zu liefern, der die Worker terminiert
      </li>
    </ul>
  </body>
</html></richcontent>
<arrowlink COLOR="#7f434f" DESTINATION="ID_1077913675" ENDARROW="Default" ENDINCLINATION="-259;8;" ID="Arrow_ID_1789073668" STARTARROW="None" STARTINCLINATION="165;-11;"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1694016202299" ID="ID_199990511" MODIFIED="1694222692577" TEXT="brauche eine Thread-termination-Hook">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1694016226184" ID="ID_1179993551" MODIFIED="1694016293267" TEXT="mu&#xdf; absolut zuverl&#xe4;sseig laufen als Letztes vor Terminieren des Thread">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#5b280f" CREATED="1694016294919" ID="ID_240227471" MODIFIED="1698518232337" TEXT="konkrete Impl mu&#xdf; Grooming-Token freigeben (sonst Deadlock m&#xf6;glich)">
<arrowlink COLOR="#88617a" DESTINATION="ID_688462252" ENDARROW="Default" ENDINCLINATION="118;-18;" ID="Arrow_ID_953966962" STARTARROW="None" STARTINCLINATION="-312;13;"/>
<linktarget COLOR="#976781" DESTINATION="ID_240227471" ENDARROW="Default" ENDINCLINATION="1819;-50;" ID="Arrow_ID_1740525983" SOURCE="ID_1793076416" STARTARROW="None" STARTINCLINATION="221;16;"/>
<icon BUILTIN="button_cancel"/>
<node COLOR="#435e98" CREATED="1698518233904" HGAP="46" ID="ID_271809731" MODIFIED="1698519398914" TEXT="anderweitig im catch(...) gel&#xf6;st" VSHIFT="13">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <ul>
      <li>
        das Grooming-Token wird stets on-demand im Scheduler-Code erlangt
      </li>
      <li>
        Worker rufen diesen Code &#252;ber die work-Function auf
      </li>
      <li>
        diese hat einen maximal generischen <font face="Monospaced" color="#6a2323">catch(...)</font>- Handler
      </li>
    </ul>
  </body>
</html></richcontent>
<arrowlink COLOR="#688d8e" DESTINATION="ID_1291141353" ENDARROW="Default" ENDINCLINATION="143;518;" ID="Arrow_ID_94494002" STARTARROW="None" STARTINCLINATION="760;60;"/>
<icon BUILTIN="idea"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1694016398145" ID="ID_1137833465" MODIFIED="1694016416375" TEXT="dar&#xfc;ber k&#xf6;nnen auch fatale Fehler kommuniziert werden">
<icon BUILTIN="idea"/>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1693961049441" ID="ID_62592237" MODIFIED="1693961124383" TEXT="das Verwalten der Thread-Allokation ist nicht einfach">
<icon BUILTIN="clanbomber"/>
<node CREATED="1693961145236" ID="ID_1855996178" MODIFIED="1693961159926" TEXT="irgendjemand mu&#xdf; die Eintr&#xe4;ge wegr&#xe4;umen"/>
<node CREATED="1693961198445" ID="ID_186444339" MODIFIED="1693961216935" TEXT="solange ein Thread l&#xe4;uft, mu&#xdf; die Allokation noch gehalten werden"/>
<node CREATED="1693961276331" ID="ID_59693591" MODIFIED="1693961456720" TEXT="die Zahl der aktiven Threads ist nicht ohne Weiteres klar">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <ul>
      <li>
        entweder ein terminierende Thread l&#246;scht sich selbst aus der Storage (gef&#228;hrlich)
      </li>
      <li>
        oder es h&#228;ngen bereits terminierte Threads in der Storage, und jede Kapazit&#228;ts-Ermittlung mu&#223; O(n) &#220;berpr&#252;fungen machen
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1694016459017" ID="ID_445172345" MODIFIED="1694222678966" TEXT="Funktionalit&#xe4;t">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1694016464368" FOLDED="true" ID="ID_1059038394" MODIFIED="1694304430896" TEXT="statisch konfigurierbarer Work-Funktor">
<icon BUILTIN="button_ok"/>
<node COLOR="#5b280f" CREATED="1694095251355" ID="ID_612425707" MODIFIED="1694095281878" TEXT="geht nicht ohne Laufzeit-Initialisierung">
<icon BUILTIN="stop-sign"/>
<node CREATED="1694095283186" ID="ID_1780985861" MODIFIED="1694095313010" TEXT="C++ ist in dieser Hinsicht sehr konsequent"/>
<node CREATED="1694095347089" ID="ID_1729488090" MODIFIED="1694097381098" TEXT="auch &#x3bb;-captures k&#xf6;nnen niemals in einen statischen Kontext eindringen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      lambda in local class 'vault::gear::test::WorkForce_test::simpleUsage()::Setup' cannot capture variables from the enclosing context
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#5b280f" CREATED="1694095394803" ID="ID_1858576296" MODIFIED="1694095527155" TEXT="das einzige &#x201e;Schlupfloch&#x201c; w&#xe4;re eine statische globale Variable">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...das k&#246;nnte zwar ein statischer Service sein, der dann sogar im Lebenszyklus der Applikation irgendwo konfiguriert wird
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1694095484695" ID="ID_554742625" MODIFIED="1694095522293" TEXT="tats&#xe4;chlich k&#xf6;nnen wir aber problemlos vom Scheduler-Setup eine Initialisierung durchreichen">
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1694095531834" ID="ID_391262141" MODIFIED="1694096132120" TEXT="also: ein Config-Objekt (Template-Param)">
<node CREATED="1694095549375" ID="ID_1866942283" MODIFIED="1694095558928" TEXT="bietet damit einen frei w&#xe4;hlbaren statischen Teil"/>
<node CREATED="1694095559445" ID="ID_1320200932" MODIFIED="1694095566536" TEXT="wird aber auch als Init-Parameter durchgegeben"/>
<node CREATED="1694095567147" ID="ID_1657187178" MODIFIED="1694095579833">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      und in jeden zu startenden Thread <b>kopiert</b>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1694095580490" ID="ID_983915877" MODIFIED="1694095780984" TEXT="und das ist gut so">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      C++ zwingt uns dazu, explizit das zu tun was ohnehin getan werden mu&#223;; da jedoch der <i>Typ </i>der Config per Template-Parameter gew&#228;hlt wird, ist komplettes Inlining m&#246;glich; letztlich wird daher nur ein Pointer auf das Scheduler-Objekt in alle Threads kopiert &#8212; <i>exakt das</i>&#160;was wir brauchen
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#f3fea4" DESTINATION="ID_983915877" ENDARROW="Default" ENDINCLINATION="1743;-58;" ID="Arrow_ID_529465664" SOURCE="ID_1541537637" STARTARROW="None" STARTINCLINATION="822;78;"/>
<icon BUILTIN="ksmiletris"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1694016479206" ID="ID_365196266" MODIFIED="1694212927107" TEXT="Worker-Threads rufen diesen Work-Funktor immerfort auf">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1694016497043" FOLDED="true" ID="ID_1506723557" MODIFIED="1694218954889" TEXT="R&#xfc;ckgabewert des Work-Funktors steuert das Worker-Thread-Verhalten">
<icon BUILTIN="button_ok"/>
<node CREATED="1694016513937" ID="ID_246253866" MODIFIED="1694016826450" TEXT="PASS &#x27f9; gleich erneut weiter"/>
<node CREATED="1694016533934" ID="ID_597986426" MODIFIED="1694016555143" TEXT="WAIT &#x27f9; Idle-Sequenz"/>
<node CREATED="1694016562284" ID="ID_1026875594" MODIFIED="1694016570999" TEXT="HALT &#x27f9; Thread terminieren"/>
</node>
<node COLOR="#338800" CREATED="1694218976808" ID="ID_1525105143" MODIFIED="1694218991055" TEXT="Worker-Threads rufen zuverl&#xe4;ssig einen exit-Hook auf">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1694016646687" ID="ID_784932678" MODIFIED="1694212938476" TEXT="Speicher f&#xfc;r Worker-Threads w&#xe4;hrend deren Lebensdauer halten">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1694016584453" ID="ID_252099735" MODIFIED="1694212942640" TEXT="Hochfahren auf volle Kapazit&#xe4;t">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1694016598589" ID="ID_1104497834" MODIFIED="1694174690162" TEXT="schrittweises Erh&#xf6;hen der Kapazit&#xe4;t">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1694016719052" ID="ID_841238568" MODIFIED="1694139706516" TEXT="Feststellen der aktuellen Auslastung">
<arrowlink COLOR="#89c79b" DESTINATION="ID_227859054" ENDARROW="Default" ENDINCLINATION="-428;33;" ID="Arrow_ID_103000260" STARTARROW="None" STARTINCLINATION="296;21;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1694016740568" ID="ID_574870562" MODIFIED="1694172542279" TEXT="Speicher bereits terminierter Worker bereinigen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1694016756960" FOLDED="true" ID="ID_692281967" MODIFIED="1694222790757" TEXT="Destruktor mu&#xdf; blocken">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1694133119469" ID="ID_365647480" MODIFIED="1694133197057" TEXT="aber auch die Threads zum Terminieren auffordern">
<arrowlink COLOR="#4e7d89" DESTINATION="ID_1321873948" ENDARROW="Default" ENDINCLINATION="527;22;" ID="Arrow_ID_1413186514" STARTARROW="None" STARTINCLINATION="1036;0;"/>
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1694133131004" ID="ID_1711800389" MODIFIED="1694133165892" TEXT="sonst bleibt jedwede Exception-Behandlung h&#xe4;ngen">
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#435e98" CREATED="1694138097733" ID="ID_198925376" MODIFIED="1694172976339" TEXT="Widerspruch zum Thread-Ende per detach()">
<icon BUILTIN="broken-line"/>
<node CREATED="1694138204919" ID="ID_353705069" MODIFIED="1694138245909" TEXT="nicht beehbarer Race: joinable() &#x21af; join()">
<node CREATED="1694138280757" ID="ID_1470165686" MODIFIED="1694173014678" TEXT="Symptom: sehe zuf&#xe4;llig eine invalid-Exception">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <ul>
      <li>
        Exception wird gefangen im WorkForce-dtor
      </li>
      <li>
        mit Debugger nicht reproduzierbar
      </li>
    </ul>
    <p>
      Vermutung: zwischen joinable() &#8801; true und dem join()-Aufruf hat sich der Thread selber detached()
    </p>
  </body>
</html></richcontent>
<node CREATED="1694173014667" ID="ID_261610486" MODIFIED="1694173141052" TEXT="Hinweis: pthread_join_common.c &#x27fc; EINVAL">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      <font face="Monospaced">&#160;&#160;/* Is the thread joinable?.&#160;&#160;*/ </font>
    </p>
    <p>
      <font face="Monospaced">&#160;&#160;if (IS_DETACHED (pd)) </font>
    </p>
    <p>
      <font face="Monospaced">&#160;&#160;&#160;&#160;/* We cannot wait for the thread.&#160;&#160;*/ </font>
    </p>
    <p>
      <font face="Monospaced">&#160;&#160;&#160;&#160;return EINVAL; </font>
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1694138465164" ID="ID_1130846770" MODIFIED="1694138532410" TEXT="grunds&#xe4;tzlich aber auch ein konzeptioneller Widerspruch">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      entweder ein Thread soll gereaped werden, oder ein Thread verschwindet einfach von der Bildfl&#228;che
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#5b280f" CREATED="1694138534943" ID="ID_1131160592" MODIFIED="1694139586481" TEXT="L&#xf6;sung per join()">
<icon BUILTIN="button_cancel"/>
<node CREATED="1694138546802" ID="ID_1142646153" MODIFIED="1694138564394" TEXT="Problem: beendete Threads nicht erkennbar"/>
<node CREATED="1694138567806" ID="ID_1862534308" MODIFIED="1694138595694" TEXT="&#x27f9; nicht klar wie viele Threads noch aktiv sind"/>
<node CREATED="1694138600978" ID="ID_1698300974" MODIFIED="1694138638937" TEXT="&#x27f9; m&#xfc;&#xdf;te dann selber eine &#xbb;aktiv&#xab;-Flag einf&#xfc;hren"/>
</node>
<node CREATED="1694138649464" ID="ID_21789098" MODIFIED="1694139584363" TEXT="L&#xf6;sung per detach()">
<icon BUILTIN="forward"/>
<node CREATED="1694138670160" ID="ID_328887585" MODIFIED="1694138689001" TEXT="Problem: mu&#xdf; am Ende doch irgendwie auf die Threads warten"/>
<node CREATED="1694138769195" ID="ID_508739227" MODIFIED="1694138812818" TEXT="&#x27f9; m&#xfc;&#xdf;te dann aktiv auf joinable() &#x2261; false warten"/>
<node COLOR="#338800" CREATED="1694139634650" ID="ID_227859054" MODIFIED="1694139693900" TEXT="L&#xf6;sung: sleep-wait auf size() &#x2261; 0">
<linktarget COLOR="#89c79b" DESTINATION="ID_227859054" ENDARROW="Default" ENDINCLINATION="-428;33;" ID="Arrow_ID_103000260" SOURCE="ID_841238568" STARTARROW="None" STARTINCLINATION="296;21;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1693841488183" HGAP="-2" ID="ID_671611566" MODIFIED="1694352907504" TEXT="WorkForce_test (Komponententest)" VSHIFT="-3">
<linktarget COLOR="#69db57" DESTINATION="ID_671611566" ENDARROW="Default" ENDINCLINATION="-836;-66;" ID="Arrow_ID_633013629" SOURCE="ID_839402509" STARTARROW="None" STARTINCLINATION="-728;61;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1693864786768" FOLDED="true" ID="ID_1997885802" MODIFIED="1693864791553" TEXT="simple usage">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1693864792879" ID="ID_1957135454" MODIFIED="1693864812713" TEXT="lediglich einen Pool hochfahren">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1693864804725" ID="ID_197610779" MODIFIED="1693864812213" TEXT="verifizieren da&#xdf; &#xfc;berhaupt etwas berechnet wird">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1694098740892" FOLDED="true" ID="ID_1850596111" MODIFIED="1694222608888" TEXT="Worker-Verhalten">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1694098758090" ID="ID_1594595049" MODIFIED="1694174633952" TEXT="verify_pullWork: f&#xfc;hrt den Work-Funktor wiederholt aus">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1694098814770" ID="ID_495507864" MODIFIED="1694175245569" TEXT="verify_workerHalt: terminiert auf Anweisung">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1694098789389" ID="ID_1077314922" MODIFIED="1694212909443" TEXT="verify_workerSleep: schl&#xe4;ft auf Anweisung">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1694098829216" ID="ID_358493866" MODIFIED="1694216676875" TEXT="verify_workerDismiss: terminiert nach l&#xe4;ngerem Schlaf">
<icon BUILTIN="button_ok"/>
<node CREATED="1694212971758" ID="ID_321316770" MODIFIED="1694212980437" TEXT="brauche Konfigurierbarkeit f&#xfc;r Test"/>
<node CREATED="1694212996114" ID="ID_279149518" MODIFIED="1694213012580" TEXT="...denn im Realbetrieb wird man l&#xe4;nger warten"/>
</node>
<node COLOR="#338800" CREATED="1694098852413" ID="ID_1245257433" MODIFIED="1694218949291" TEXT="verify_finalHook">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1694098904110" ID="ID_1191232452" MODIFIED="1694222607329" TEXT="verify_detectError">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1694098957487" FOLDED="true" ID="ID_143578534" MODIFIED="1694304440676" TEXT="Pool-Verhalten">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1694099014497" ID="ID_1877110298" MODIFIED="1694174681345" TEXT="verify_default">
<icon BUILTIN="button_ok"/>
<node CREATED="1694174644528" ID="ID_1593779460" MODIFIED="1694174645476" TEXT="default macht nichts"/>
<node CREATED="1694174646160" ID="ID_1907976760" MODIFIED="1694174679928" TEXT="activate() skaliert auf Anzahl cores hoch"/>
</node>
<node COLOR="#338800" CREATED="1694099055410" ID="ID_1489311533" MODIFIED="1694304397431" TEXT="verify_scaleUp">
<icon BUILTIN="button_ok"/>
<node CREATED="1694099029004" ID="ID_910692339" MODIFIED="1694099041032" TEXT="skaliert auf genau N worker"/>
<node CREATED="1694099061344" ID="ID_758198253" MODIFIED="1694099067644" TEXT="skaliert um einen Worker hoch"/>
</node>
<node COLOR="#338800" CREATED="1694099080950" ID="ID_542625093" MODIFIED="1694176109416" TEXT="verify_countActive: ermittelt Zahl aktiver Worker">
<icon BUILTIN="button_ok"/>
<node CREATED="1694176125532" ID="ID_1861823619" MODIFIED="1694176149434" TEXT="lasse das work-&#x3bb; zweimal ein HALT zur&#xfc;ckgeben"/>
<node CREATED="1694176110582" ID="ID_129912527" MODIFIED="1694176151624" TEXT="etwas fragil, da ich genau timen mu&#xdf;">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node COLOR="#338800" CREATED="1694099160252" ID="ID_950338764" MODIFIED="1694222611148" TEXT="verify_dtor_blocks">
<icon BUILTIN="button_ok"/>
<node CREATED="1694222614099" ID="ID_699350369" MODIFIED="1694222671079" TEXT="knifflig zu testen">
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#435e98" CREATED="1694222624017" ID="ID_240770709" MODIFIED="1694222668595" TEXT="lasse den eigentlichen Test in separaten Thread laufen">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#435e98" CREATED="1694222638383" ID="ID_814658159" MODIFIED="1694222668596" TEXT="verwende work-Funktor, der kontrollierbar blockt">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1680565476652" ID="ID_1218283238" MODIFIED="1697664175912" TEXT="Dependency-Notification">
<linktarget COLOR="#fec499" DESTINATION="ID_1218283238" ENDARROW="Default" ENDINCLINATION="-678;64;" ID="Arrow_ID_443600884" SOURCE="ID_695181807" STARTARROW="None" STARTINCLINATION="-240;29;"/>
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1685029743471" ID="ID_662250285" MODIFIED="1685029748808" TEXT="Benachrichtigungen">
<node COLOR="#435e98" CREATED="1685029752445" ID="ID_1073371022" MODIFIED="1697642160212" TEXT="wohin? andere Threads &#x27f9; lock-free Messaging-Queue">
<icon BUILTIN="help"/>
<node CREATED="1687788312178" ID="ID_1597757912" MODIFIED="1687788330482">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      ja &#8212; und zwar &#252;ber <i>den Scheduler selbst</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1697642122889" ID="ID_1019049385" MODIFIED="1697642132542" TEXT="Benachrichtigungen sind dann wieder Activities"/>
<node CREATED="1697642135639" ID="ID_1400416851" MODIFIED="1697642157800" TEXT="kann auch aus Activity-activation heraus verwendet werden"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1697642165334" ID="ID_749814153" MODIFIED="1697642194176" TEXT="&#x27f9; sonstige Arten von Benachrichtigungen sind anderweitig zu implementieren">
<icon BUILTIN="hourglass"/>
</node>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1685029812065" ID="ID_930725673" MODIFIED="1685029830507" TEXT="welcher Art Nachrichten treten auf?">
<icon BUILTIN="help"/>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1685029955186" ID="ID_1190497873" MODIFIED="1685029971434" TEXT="Inhibition">
<linktarget COLOR="#fe3b32" DESTINATION="ID_1190497873" ENDARROW="Default" ENDINCLINATION="111;-9;" ID="Arrow_ID_302966285" SOURCE="ID_845619439" STARTARROW="None" STARTINCLINATION="155;-11;"/>
<icon BUILTIN="help"/>
</node>
<node CREATED="1685030153172" ID="ID_1240235053" MODIFIED="1685030161822" TEXT="Zeit-Messungen">
<icon BUILTIN="yes"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1697675093651" ID="ID_947560626" MODIFIED="1697675099905" TEXT="IO-Callbacks">
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1687909561193" FOLDED="true" ID="ID_1235436372" MODIFIED="1697585733751" TEXT="GroomingToken">
<icon BUILTIN="button_ok"/>
<node CREATED="1687909742256" ID="ID_768602373" MODIFIED="1687909749803" TEXT="implementiert per atomic CAS"/>
<node CREATED="1687909758046" ID="ID_1061447302" MODIFIED="1687909764595" TEXT="nur ein Worker kann es jeweils besitzen"/>
<node CREATED="1687909787970" ID="ID_1744353313" MODIFIED="1687909813720" TEXT="dieser bedient dann die Priority-Queue"/>
<node CREATED="1687909860136" ID="ID_1257565620" MODIFIED="1687910043028" TEXT="...und gibt es kooperativ wieder frei">
<linktarget COLOR="#af5678" DESTINATION="ID_1257565620" ENDARROW="Default" ENDINCLINATION="223;172;" ID="Arrow_ID_1390633196" SOURCE="ID_1887123630" STARTARROW="None" STARTINCLINATION="-430;56;"/>
<node CREATED="1687909898834" ID="ID_688462252" MODIFIED="1697583754517" TEXT="Deadlock-Gefahr">
<linktarget COLOR="#88617a" DESTINATION="ID_688462252" ENDARROW="Default" ENDINCLINATION="118;-18;" ID="Arrow_ID_953966962" SOURCE="ID_240227471" STARTARROW="None" STARTINCLINATION="-312;13;"/>
<linktarget COLOR="#f95182" DESTINATION="ID_688462252" ENDARROW="Default" ENDINCLINATION="-17;60;" ID="Arrow_ID_1801176056" SOURCE="ID_1725190336" STARTARROW="None" STARTINCLINATION="-186;-6;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1687909906855" ID="ID_195997630" MODIFIED="1697585707021" TEXT="Watchdog notwendig">
<linktarget COLOR="#71457a" DESTINATION="ID_195997630" ENDARROW="Default" ENDINCLINATION="-1608;190;" ID="Arrow_ID_345281595" SOURCE="ID_942157229" STARTARROW="None" STARTINCLINATION="-385;28;"/>
<icon BUILTIN="bell"/>
<node CREATED="1687909963201" ID="ID_369489190" MODIFIED="1687909968365" TEXT="realisiert per Tick"/>
<node CREATED="1687909969073" ID="ID_1256883233" MODIFIED="1687909980556" TEXT="gepr&#xfc;ft beim Zugriff auf den Scheduler"/>
<node CREATED="1687909981295" ID="ID_360021579" MODIFIED="1687909991866" TEXT="Alarm wenn letzter Tick zu lange zur&#xfc;ckliegt"/>
</node>
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#25244e" CREATED="1697629876020" HGAP="-11" ID="ID_1558265964" MODIFIED="1697630576761" STYLE="bubble" TEXT="wer/wann gibt frei?" VSHIFT="8">
<edge STYLE="linear"/>
<linktarget COLOR="#a6abc1" DESTINATION="ID_1558265964" ENDARROW="Default" ENDINCLINATION="-464;68;" ID="Arrow_ID_574579621" SOURCE="ID_867944115" STARTARROW="None" STARTINCLINATION="-351;0;"/>
<font NAME="SansSerif" SIZE="13"/>
<node CREATED="1697629959705" ID="ID_1297661015" MODIFIED="1697630511624" STYLE="bubble" TEXT="stets ein Proze&#xdf;-Schritt">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1697630210695" ID="ID_1631941642" MODIFIED="1697630511624" TEXT="grooming-Mode &#x27f6; work-Mode"/>
<node CREATED="1697630246258" ID="ID_1690734466" MODIFIED="1697630511624" TEXT="Abschlu&#xdf; des Arbeits-Zyklus"/>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1697629959705" ID="ID_1708319964" MODIFIED="1697630186618" STYLE="fork">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      per <b>Seiteneffekt</b>&#160;<i>erlangt</i>
    </p>
    <p>
      per <b>Proze&#223;</b>&#160;<i>freigegeben</i>
    </p>
  </body>
</html></richcontent>
<font NAME="SansSerif" SIZE="10"/>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1694005255592" ID="ID_66203071" MODIFIED="1697585717123" TEXT="Fragen/Probleme">
<icon BUILTIN="messagebox_warning"/>
<node COLOR="#435e98" CREATED="1694005273694" FOLDED="true" ID="ID_1381658042" MODIFIED="1697585724925" TEXT="sind dadurch die Inhalte in der Queue hinreichend synchronisiert?">
<icon BUILTIN="help"/>
<node CREATED="1694005322415" ID="ID_786045876" MODIFIED="1694005335066" TEXT="also: wie viel &#xbb;barrier&#xab; brauchen wir?"/>
<node CREATED="1694009756545" ID="ID_1522114869" LINK="https://en.cppreference.com/w/cpp/atomic/atomic_thread_fence" MODIFIED="1694009810286" TEXT="hinreichend: eine std::atomic_thread_fence(release) + ein atomic_read"/>
<node CREATED="1694014467032" ID="ID_1491390182" LINK="https://preshing.com/20130823/the-synchronizes-with-relation/" MODIFIED="1694014611179" TEXT="Lt. Blog(Pershing) gen&#xfc;gt bereits ein Check auf einen atomaren Guard">
<arrowlink COLOR="#576bb3" DESTINATION="ID_938834649" ENDARROW="Default" ENDINCLINATION="-563;20;" ID="Arrow_ID_1094658969" STARTARROW="None" STARTINCLINATION="-2552;100;"/>
<icon BUILTIN="idea"/>
<node CREATED="1694014702705" ID="ID_784019789" MODIFIED="1694014794006" TEXT="beliebige shared-Values &#xe4;ndern">
<icon BUILTIN="full-1"/>
</node>
<node CREATED="1694014723647" ID="ID_713413290" MODIFIED="1694014796182" TEXT="guard.store(XXX, memory_order_release)">
<icon BUILTIN="full-2"/>
</node>
<node CREATED="1694014752699" ID="ID_1786023626" MODIFIED="1694014799021" TEXT="if (XXX == guard.load(memory_order_acquire)">
<icon BUILTIN="full-3"/>
<node CREATED="1694014804964" ID="ID_1422022846" MODIFIED="1694014832342">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      die Verzweigung ist <b>essentiell</b>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1694014809708" ID="ID_1602635231" MODIFIED="1694014843153" TEXT="es gen&#xfc;gt nicht, nur zu lesen">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1694014851046" ID="ID_779066219" MODIFIED="1694015124815" TEXT="man mu&#xdf; aktiv sicherstellen, den neuen Guard-Wert zu haben">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      das bedeutet, der Check mu&#223; darauf hinauslaufen; es gen&#252;gt nicht, blo&#223; irgend einen Wert vom Guard gelesen zu haben, sondern man mu&#223; sicherstellen, da&#223; der gelesene Wert tats&#228;chlich aus derjenigen Operation stammen mu&#223;, welche auf der anderen Seite (beim Producer) als letztes nach der Manipulation der Speicherinhalte stattfand...
    </p>
    <p>
      
    </p>
    <ul>
      <li>
        andere Operationen-A <i>sequenced-before</i>&#160;release
      </li>
      <li>
        acquire <i>sequenced-before</i>&#160;andere Operationen-B
      </li>
      <li>
        &#10233; Operationen A&#160; <i>happens-before </i>&#160;Operationen-B
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1694014772867" ID="ID_628358915" MODIFIED="1694014801258" TEXT="then { beliebige shared-Values lesen / &#xe4;ndern)">
<icon BUILTIN="full-4"/>
</node>
</node>
<node CREATED="1694015344557" ID="ID_571276241" LINK="https://en.cppreference.com/w/cpp/atomic/memory_order#Release-Acquire_ordering" MODIFIED="1694015377170" TEXT="auch CPP-Reference ist v&#xf6;llig klar in diesem Punkt (&#xbb;Release-Acquire-Ordering&#xab;)"/>
</node>
<node COLOR="#435e98" CREATED="1697473042062" ID="ID_1462757404" MODIFIED="1697583781583" TEXT="Platz im Scheduler und Zugriff">
<icon BUILTIN="yes"/>
<node CREATED="1697583689827" ID="ID_1410024395" MODIFIED="1697583694398" TEXT="es sitzt im Layer-2"/>
<node CREATED="1697583695082" ID="ID_1723522955" MODIFIED="1697583709990" TEXT="Zugriff erfolgt implizit aus der Logik heraus"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1697583713560" ID="ID_1725190336" MODIFIED="1697583771560" TEXT="die Logik mu&#xdf; sicherstellen, da&#xdf; es freigegeben wird">
<arrowlink COLOR="#f95182" DESTINATION="ID_688462252" ENDARROW="Default" ENDINCLINATION="-17;60;" ID="Arrow_ID_1801176056" STARTARROW="None" STARTINCLINATION="-186;-6;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1697475170816" HGAP="36" ID="ID_1920465683" MODIFIED="1697642019595" TEXT="API festlegen" VSHIFT="7">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1697475184438" FOLDED="true" ID="ID_140675790" MODIFIED="1697641966678" TEXT="bisher treten zwei verschiedene Perspektiven auf">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1697475204580" ID="ID_17372466" MODIFIED="1697475216748" TEXT="Layer-2 als Ausf&#xfc;hrungs-Kette">
<node CREATED="1697482695414" ID="ID_1741555904" MODIFIED="1697482816448" TEXT="und zwar insofern stets einige Schritte strukturiert vollzogen werden m&#xfc;ssen">
<linktarget COLOR="#63707f" DESTINATION="ID_1741555904" ENDARROW="Default" ENDINCLINATION="122;4;" ID="Arrow_ID_1523984047" SOURCE="ID_1818028653" STARTARROW="None" STARTINCLINATION="149;-4;"/>
</node>
<node CREATED="1697482829701" ID="ID_1600142035" MODIFIED="1697482859597" TEXT="...welche letztlich eine Activity f&#xfc;r den Dispatch liefern">
<arrowlink COLOR="#7b8795" DESTINATION="ID_438556046" ENDARROW="Default" ENDINCLINATION="28;-22;" ID="Arrow_ID_520978128" STARTARROW="None" STARTINCLINATION="-463;26;"/>
</node>
</node>
<node CREATED="1697475217562" ID="ID_1975524605" MODIFIED="1697475237819" TEXT="Layer-2 als Execution-Environment (f&#xfc;r ActivityLang)">
<node CREATED="1697482864748" ID="ID_696380968" MODIFIED="1697482909359" TEXT="konkret m&#xfc;ssen die ExecutionCtx-&#x3bb; implementiert werden"/>
<node CREATED="1697482924537" ID="ID_1521505068" MODIFIED="1697482960792" TEXT="jeweils mit sehr spezifischer Logik hinterlegt &#x27f6; GroomingToken"/>
</node>
<node COLOR="#690f14" CREATED="1697475301927" ID="ID_538072997" MODIFIED="1697641995738" TEXT="diese Perspektiven scheinen sich zu widersprechen">
<icon BUILTIN="broken-line"/>
<node CREATED="1697482590548" ID="ID_751862810" MODIFIED="1697482639262" TEXT="die erste Betrachtungsweise ist wohl inzwischen &#xfc;berholt">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...sie ist entstanden aus den ersten Analysen, als die Bedeutung der &#187;Activity-Language&#171; noch nicht gekl&#228;rt war
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1697482670795" ID="ID_1818028653" MODIFIED="1697482816448" TEXT="sie enth&#xe4;llt jedoch einen strukturell bedeutsamen Kern">
<arrowlink COLOR="#63707f" DESTINATION="ID_1741555904" ENDARROW="Default" ENDINCLINATION="122;4;" ID="Arrow_ID_1523984047" STARTARROW="None" STARTINCLINATION="149;-4;"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1697553250983" FOLDED="true" ID="ID_438556046" MODIFIED="1697594581615" TEXT="doWork &#x27fc; findWork">
<linktarget COLOR="#7b8795" DESTINATION="ID_438556046" ENDARROW="Default" ENDINCLINATION="28;-22;" ID="Arrow_ID_520978128" SOURCE="ID_1600142035" STARTARROW="None" STARTINCLINATION="-463;26;"/>
<linktarget COLOR="#718daf" DESTINATION="ID_438556046" ENDARROW="Default" ENDINCLINATION="-261;714;" ID="Arrow_ID_1821254034" SOURCE="ID_1076701414" STARTARROW="None" STARTINCLINATION="372;24;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1697560260874" ID="ID_1507199243" MODIFIED="1697560276691" TEXT="versucht das GroomingToken zu erlangen"/>
<node CREATED="1697560224719" ID="ID_1707640697" MODIFIED="1697560260107" TEXT="macht die Queue-Updates"/>
<node CREATED="1697560285403" ID="ID_1068838996" MODIFIED="1697560290998" TEXT="braucht aktuelle Zeit als Argument"/>
<node CREATED="1697560292466" ID="ID_1745021963" MODIFIED="1697560343136" TEXT="liefert einen Activity* (nullable)">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      wir sind hier in einer performance-kritischen Zone; insofern kein std::optional&lt;Activity&amp;&gt;
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1697594585841" ID="ID_302244305" MODIFIED="1697594602321" TEXT="falls nichts gefunden..">
<node CREATED="1697594603461" ID="ID_1650388592" MODIFIED="1697594606354" TEXT="nullptr"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1697594606701" ID="ID_364246048" MODIFIED="1697594671903" TEXT="GroomingToken nicht l&#xf6;schen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      man k&#246;nnte es hier auch freigeben; das w&#252;rde dann aber im Regelfall ein weiteres mal gepr&#252;ft und freigegeben; zudem haben wir hier auf dieser Ebene auch kein try-catch
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1699498537683" ID="ID_557426209" MODIFIED="1699498547961" TEXT="maybeFeed()">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1697553556862" FOLDED="true" ID="ID_239855477" MODIFIED="1697641958566" TEXT="PostDispatch">
<icon BUILTIN="button_ok"/>
<node CREATED="1697553564965" ID="ID_280879756" MODIFIED="1697553576815" TEXT="der &#xbb;POST-Eingang&#xab;">
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1697553690189" ID="ID_937487663" MODIFIED="1697583424961" TEXT="enth&#xe4;lt die Entscheidung &#xfc;ber den Dispatch">
<arrowlink COLOR="#6d677a" DESTINATION="ID_1453351337" ENDARROW="Default" ENDINCLINATION="3;-38;" ID="Arrow_ID_1868115325" STARTARROW="None" STARTINCLINATION="-51;3;"/>
<icon BUILTIN="idea"/>
</node>
<node COLOR="#435e98" CREATED="1697553928685" ID="ID_416015404" MODIFIED="1697583437483" TEXT="Form des Dispatch?">
<icon BUILTIN="help"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1697555373532" ID="ID_323766443" MODIFIED="1697559741749" STYLE="fork" TEXT="Problem: Dependencies">
<font NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="messagebox_warning"/>
<node COLOR="#5b280f" CREATED="1697556916075" ID="ID_1747576751" MODIFIED="1697557091107" STYLE="fork" TEXT="ActivityLang (ist statisch)">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1697556962025" ID="ID_316735222" MODIFIED="1697557093394" TEXT="brauche ExecutionCtx">
<node CREATED="1697557103238" ID="ID_1107007990" MODIFIED="1697557114801" TEXT="der k&#xf6;nnte aus Layer-2 gebildet werden"/>
<node CREATED="1697557115398" ID="ID_1518529633" MODIFIED="1697557133830" TEXT="dann m&#xfc;&#xdf;te Layer-2 aber auch...">
<node CREATED="1697557134892" ID="ID_592100711" MODIFIED="1697557139580" TEXT="die aktuelle Zeit kennen"/>
<node CREATED="1697557218670" ID="ID_69525079" MODIFIED="1697557232528" TEXT="an TimingObservables benachrichtigen k&#xf6;nnen"/>
</node>
</node>
</node>
<node COLOR="#5b280f" CREATED="1697557283349" ID="ID_1953297586" MODIFIED="1697559562053" TEXT="Alternative: function&lt;ActivityProc(ExeccutionCtx&amp;)&gt;">
<icon BUILTIN="idea"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1697557360235" ID="ID_991484517" MODIFIED="1697557370658" TEXT="diese L&#xf6;sung ist offensichtlich aber nicht gut">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1697559539903" ID="ID_915862742" MODIFIED="1697559554450" TEXT="m&#xfc;hsam testbar, verwirrend f&#xfc;r den Leser"/>
</node>
<node COLOR="#435e98" CREATED="1697559582505" ID="ID_1229260245" MODIFIED="1697559661145" TEXT="ExecutionCtx k&#xf6;nnte als Argument &#xfc;bergeben werden">
<icon BUILTIN="idea"/>
<node CREATED="1697559629144" ID="ID_876377894" MODIFIED="1697559649916" TEXT="...dann w&#xe4;re das hier eben ein low-Level-API"/>
<node CREATED="1697559650480" ID="ID_1077878135" MODIFIED="1697559656551" TEXT="und obendrein sehr gut testbar">
<icon BUILTIN="ksmiletris"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1697559664030" ID="ID_406981503" MODIFIED="1697559736138" TEXT="Entscheidung">
<icon BUILTIN="yes"/>
<node CREATED="1697559679293" ID="ID_91432759" MODIFIED="1697594534424" TEXT="auch Layer-2 ist ein Funktionalit&#xe4;ts-Layer"/>
<node CREATED="1697559691347" ID="ID_622772582" MODIFIED="1697594534424" TEXT="der Service wird erst im Scheduler top-Level zusammengestellt"/>
<node CREATED="1697559712744" ID="ID_1900900735" MODIFIED="1697594534424" TEXT="dort passiert auch jedwede Dependency-Injection"/>
<node CREATED="1697629803446" ID="ID_867944115" MODIFIED="1697630595159" TEXT="Seiteneffekt: GroomingToken wird erlangt aber nicht abgegeben">
<arrowlink COLOR="#a6abc1" DESTINATION="ID_1558265964" ENDARROW="Default" ENDINCLINATION="-464;68;" ID="Arrow_ID_574579621" STARTARROW="None" STARTINCLINATION="-351;0;"/>
</node>
<node CREATED="1697634823477" ID="ID_445796279" MODIFIED="1697634986661" TEXT="R&#xfc;ckgabewert: sowohl f&#xfc;r Work-Function alsauch &#x3bb;-post">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Das bedeutet: der R&#252;ckgabewert ist ein Kompromi&#223;, und so gestaltet, da&#223; er in beiden Nutz-Szenarien <i>kein Fehlverhalten verursacht. </i>Er ist damit keine Ausf&#252;hrungs-Steuerung, aber signalisiert Fehlersituationen
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node BACKGROUND_COLOR="#c8c0b6" CREATED="1697628889224" ID="ID_1337049621" MODIFIED="1697639849001" TEXT="&#x27f9; erwartetes Verhalten">
<arrowlink COLOR="#9ca0a6" DESTINATION="ID_1032090324" ENDARROW="Default" ENDINCLINATION="-719;-92;" ID="Arrow_ID_1412557043" STARTARROW="None" STARTINCLINATION="-335;509;"/>
<node CREATED="1697628930257" ID="ID_412159967" MODIFIED="1697628991437" TEXT="Entscheidung &#xfc;ber Dispatch | Enqueue"/>
<node CREATED="1697629037716" ID="ID_661469490" MODIFIED="1697629194450" TEXT="Dispatch &#x2014;&#x27f6; activate Chain"/>
<node CREATED="1697629037716" ID="ID_1804930188" MODIFIED="1697629210016" TEXT="Enqueue &#x2014;&#x27f6;">
<node CREATED="1697629233777" ID="ID_1657805830" MODIFIED="1697629258507" TEXT="grooming &#x27f9; direct Prio"/>
<node CREATED="1697629262781" ID="ID_536475041" MODIFIED="1697629302640" TEXT="external &#x27f9; Instruct-Queue"/>
</node>
<node CREATED="1697629308535" ID="ID_642189936" MODIFIED="1697629789979" TEXT="ben&#xf6;tigt">
<icon BUILTIN="forward"/>
<node CREATED="1697629325069" ID="ID_306618614" MODIFIED="1697629354453" TEXT="Activity(chain)"/>
<node CREATED="1697629355753" ID="ID_82255923" MODIFIED="1697629361708" TEXT="startTime"/>
<node CREATED="1697629370543" ID="ID_1942518217" MODIFIED="1697629785443" TEXT="ExecutionCtx"/>
<node CREATED="1697629776697" ID="ID_1560427872" MODIFIED="1697629782700" TEXT="Layer-1"/>
</node>
<node CREATED="1697632525759" ID="ID_1296592799" MODIFIED="1697632543844" TEXT="Ergebnis-Status">
<icon BUILTIN="back"/>
<node CREATED="1697632548431" ID="ID_971632241" MODIFIED="1697632714619">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <font face="Monospaced">activity::</font><font face="Monospaced" color="#603818"><b>PASS</b></font>&#160;&#8801; alles gut &#8230; <i>weitermachen</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1697632548431" ID="ID_240131504" MODIFIED="1697633445958">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <font face="Monospaced">activity::</font><font color="#603818" face="Monospaced"><b>WAIT</b></font>&#160;&#8801;&#160;&#160;&#8230; <i>aktuell nichts mehr zu tun</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1697632548431" ID="ID_62563799" MODIFIED="1697633433426">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <font face="Monospaced">activity::</font><font color="#603818" face="Monospaced"><b>HALT</b></font>&#160;&#8801; oh weh &#8230; <i>bitte anhalten</i>
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1697553674095" FOLDED="true" ID="ID_1453351337" MODIFIED="1697594493393" TEXT="decideDispatchNow">
<linktarget COLOR="#6d677a" DESTINATION="ID_1453351337" ENDARROW="Default" ENDINCLINATION="3;-38;" ID="Arrow_ID_1868115325" SOURCE="ID_937487663" STARTARROW="None" STARTINCLINATION="-51;3;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1697579158340" ID="ID_793480355" MODIFIED="1697579176584" TEXT="Ausf&#xfc;hren ist m&#xf6;glich...">
<icon BUILTIN="info"/>
<node CREATED="1697579178708" ID="ID_787430790" MODIFIED="1697579237139" TEXT="wenn der Startzeitpunkt nicht in der Zukunft liegt"/>
<node CREATED="1697579245499" ID="ID_60360398" MODIFIED="1697579263604" TEXT="wenn der aktuelle Thread das GroomingToken erlangen kann"/>
</node>
<node CREATED="1697579298524" ID="ID_593152010" MODIFIED="1697583436601" TEXT="Kontext der Entscheidung">
<icon BUILTIN="info"/>
<node CREATED="1697579409584" ID="ID_1475629503" MODIFIED="1697579417440" TEXT="Worker sucht Arbeit">
<node CREATED="1697579435142" ID="ID_1101443095" MODIFIED="1697579457411" TEXT="dann ist das GroomingToken-Besitz bereits vorausgesetzt"/>
<node CREATED="1697579470701" ID="ID_491245332" MODIFIED="1697579493026" TEXT="den Rest der Entscheidung macht bereits Layer-1">
<node CREATED="1697579495039" ID="ID_1363159889" MODIFIED="1697579501366" TEXT="braucht dazu die aktuelle Zeit"/>
<node CREATED="1697579501929" ID="ID_1156519476" MODIFIED="1697579509826" TEXT="stellt fest, ob &#xfc;berhaupt was in der Queue ist"/>
<node CREATED="1697579510504" ID="ID_556911724" MODIFIED="1697579524746" TEXT="pr&#xfc;ft den WaterLevel am Ausgang der Queue"/>
</node>
</node>
<node CREATED="1697579541116" ID="ID_1539153693" MODIFIED="1697579559549" TEXT="&#x3bb;-post">
<node CREATED="1697579566464" ID="ID_284248868" MODIFIED="1697579575139" TEXT="kommt aus einer laufenden Ausf&#xfc;hrung"/>
<node CREATED="1697579575973" ID="ID_1493021297" MODIFIED="1697579597952" TEXT="liefert den Startzeitpunkt als Parameter"/>
<node CREATED="1697579599123" ID="ID_132991826" MODIFIED="1697579631058" TEXT="mu&#xdf; dann explizit das GroomingToken pr&#xfc;fen"/>
</node>
<node CREATED="1697579633655" ID="ID_700287234" MODIFIED="1697579642105" TEXT="von Extern neu &#xfc;bergebener Chain">
<node CREATED="1697579656164" ID="ID_1585466417" MODIFIED="1697579662208" TEXT="beginnt mit einem POST"/>
<node CREATED="1697579663228" ID="ID_1429242310" MODIFIED="1697579670951" TEXT="daraus ergibt sich der Start-Zeitpunkt"/>
<node CREATED="1697579673554" ID="ID_85549667" MODIFIED="1697579682709" TEXT="GroomingToken mu&#xdf; erlangt werden"/>
</node>
</node>
<node COLOR="#338800" CREATED="1697579748287" ID="ID_1583484788" MODIFIED="1697642087904" TEXT="&#x27f9; nur die letzten beiden F&#xe4;lle">
<node CREATED="1697579774229" ID="ID_1513919615" MODIFIED="1697583362689" TEXT="und zwar fallen sie sogar zusammen">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1697579781571" ID="ID_466935258" MODIFIED="1697579790174" TEXT="die Zeit ist explizit gegeben"/>
<node CREATED="1697579807584" ID="ID_1369153607" MODIFIED="1697579813611" TEXT="brauche zudem die aktuelle Zeit"/>
<node CREATED="1697579814431" ID="ID_184140714" MODIFIED="1697583353917">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      versuche GroomingToken zu erlangen (<b><font color="#5e3348">Seiteneffekt</font></b>)
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1697583303207" ID="ID_332099803" MODIFIED="1697583538155" TEXT="aber: kein dropGroomingToken() bei negativer Entscheidung">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...weil im normalen Control-flow direkt danach die Activity in die Queue gestellt wird &#8212; und da k&#246;nnen wir eine <i>signifikannte Beschleunigung</i>&#160;erziehlen wenn wir das GroomingToken halten und deshalb nicht durch die Instruct-Queue gehen m&#252;ssen
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1697583572667" ID="ID_1258733239" MODIFIED="1697583665481" TEXT="Konsequenz: f&#xe4;llige Activities dr&#xe4;ngen sich vor">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...und zwar, weil sie infolge der hier getroffenen Entscheidung unmittelbar in den Dispatch gehen k&#246;nnen; w&#228;re das nicht so, dann w&#252;rde u.U aus der Priority-Queue zun&#228;chst eine noch dringendere/fr&#252;here Aufgabe entnommen werden.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node COLOR="#338800" CREATED="1697559873907" FOLDED="true" ID="ID_409935766" MODIFIED="1697567713362" TEXT="acquireGoomingToken">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1697560125437" ID="ID_129201087" MODIFIED="1697567708667" TEXT="implementiert als Compare-and-Swap">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1697560134935" ID="ID_1881068122" MODIFIED="1697567711227" TEXT="R&#xfc;ckgabewert bool &#x27fc; Erfolg">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1697567715658" ID="ID_1830973768" MODIFIED="1697567728848" TEXT="Entscheidung zur Memory-order">
<icon BUILTIN="yes"/>
<node CREATED="1697567729992" ID="ID_322976038" MODIFIED="1697567738475" TEXT="acquire = memory_order_acquire"/>
<node CREATED="1697567739422" ID="ID_481777766" MODIFIED="1697567745105" TEXT="drop = memory_order_release"/>
<node CREATED="1697567746057" ID="ID_193744284" MODIFIED="1697567749561" TEXT="alles andere: relaxed"/>
</node>
</node>
<node COLOR="#338800" CREATED="1697559880222" FOLDED="true" ID="ID_1458427038" MODIFIED="1697567772880" TEXT="dropGroomingToken">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1697560157372" ID="ID_1167908140" MODIFIED="1697567753440" TEXT="Konsiistenzpr&#xfc;fung nur als Assertion">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1697560173410" ID="ID_1045304813" MODIFIED="1697567764180" TEXT="Thread-ID &lt;leer&gt; in das Token schreiben">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1697559931219" FOLDED="true" ID="ID_199319740" MODIFIED="1697567772039" TEXT="holdsGroomingToken">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1697560065912" ID="ID_1054899813" MODIFIED="1697567766331" TEXT="zur besseren Lesbarkeit: Thread-ID als Argument">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1697560079607" ID="ID_692116285" MODIFIED="1697567770557" TEXT="ist dann eine relativ leichtgewichtige Operation">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1687788623248" ID="ID_1335631068" MODIFIED="1697663767821" TEXT="Ausf&#xfc;hrungs-Struktur">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="info"/>
<icon BUILTIN="forward"/>
<node CREATED="1685029833448" ID="ID_1405359337" MODIFIED="1697663684686" TEXT="Verzweigungen">
<icon BUILTIN="edit"/>
<node COLOR="#435e98" CREATED="1685029839057" ID="ID_1926570028" MODIFIED="1697663503176" TEXT="verzweigte Ausf&#xfc;hrungs-Strukur oder nur Entscheidungs-Struktur?">
<icon BUILTIN="help"/>
<node CREATED="1687823249714" ID="ID_1864655181" MODIFIED="1687825736511">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      die <b>Ausf&#252;hrungs</b>-Struktur liegt in den Termen (nicht in der Queue)
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node COLOR="#435e98" CREATED="1687823355712" ID="ID_1307602651" MODIFIED="1697663050658" TEXT="Welche Entscheidungs-Strukturen k&#xf6;nnten in der Queue stattfinden?">
<icon BUILTIN="help"/>
<node CREATED="1687823967742" ID="ID_854344895" MODIFIED="1687823989409" TEXT="eine Pr&#xfc;fung regelm&#xe4;&#xdf;ig wiederholen"/>
<node CREATED="1687824048509" ID="ID_713697923" MODIFIED="1687824058560" TEXT="bei Erfolg einen anderen Term einf&#xfc;gen"/>
<node CREATED="1687824086888" ID="ID_1796701768" MODIFIED="1687824103613" TEXT="oder einen anderen Term deaktivieren (=l&#xf6;schen)"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1697663035748" ID="ID_587933220" MODIFIED="1697663048429" TEXT="alle diese brauchen wir im Moment nicht">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1687824184209" ID="ID_1244600209" MODIFIED="1697663170611" TEXT="Event-getriebene Entscheidungs-Strukturen...?">
<icon BUILTIN="help"/>
<node CREATED="1687824217830" ID="ID_290545800" MODIFIED="1687824234977" TEXT="nach dem Ende eines Job wird noch ein Activity-Term abgefeuert"/>
<node CREATED="1687824273791" ID="ID_143043563" MODIFIED="1687824299591" TEXT="ein Term ist mit einem externen Signal verbunden"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1687824301438" ID="ID_1540430139" MODIFIED="1697663168402" TEXT="...und das Signal f&#xfc;hrt dann zum Abfeuern eines weiteren Terms">
<icon BUILTIN="hourglass"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1697663172758" ID="ID_391965463" MODIFIED="1697663305946" TEXT="das mu&#xdf; noch implementiert werden">
<icon BUILTIN="bell"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1697663178362" ID="ID_961906452" MODIFIED="1697663472236" TEXT="h&#xe4;ngt stark von den IO-Callback-M&#xf6;glichkeiten ab">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Bisher wurde asynchrones IO nur als theoretische M&#246;glichkeit betrachtet, aber noch nicht im Detail untersucht &#8212; im Besonderen die M&#246;glichkeiten von IO_URING werden relevant sein
    </p>
    <ul>
      <li>
        wie werden dort Callbacks eingerichtet und von wem aufgerufen?
      </li>
      <li>
        welche custom-Payload kann mitgegeben werden?
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1697663253711" ID="ID_514916866" MODIFIED="1697663294035" TEXT="zu L&#xf6;sen">
<linktarget COLOR="#fe333f" DESTINATION="ID_514916866" ENDARROW="Default" ENDINCLINATION="-149;26;" ID="Arrow_ID_1894758362" SOURCE="ID_1129335327" STARTARROW="None" STARTINCLINATION="333;20;"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1697663214829" ID="ID_481503607" MODIFIED="1697663265466" TEXT="Callback mu&#xdf; an die richtige Stelle zur&#xfc;ckfinden"/>
<node CREATED="1697663266078" ID="ID_1713481807" MODIFIED="1697663288631" TEXT="Anbindung an das BlockFlow-Epochen-Gate"/>
</node>
</node>
<node CREATED="1687825665315" HGAP="22" ID="ID_402640209" MODIFIED="1697663496299" STYLE="bubble">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      wichtig f&#252;r die <b>IO-Jobs</b>
    </p>
  </body>
</html></richcontent>
<edge COLOR="#fb2d2d"/>
<icon BUILTIN="forward"/>
</node>
</node>
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#392a6e" CREATED="1697663080415" ID="ID_1219177820" MODIFIED="1697663146705" TEXT="Verdrahtungs-M&#xf6;glichkeiten der Ausf&#xfc;hrungs-Struktur gen&#xfc;gen vorerst">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1685029859862" ID="ID_60316038" MODIFIED="1697663520262" TEXT="Pr&#xe4;dikat: Auswertung im Engine-Kontext">
<icon BUILTIN="hourglass"/>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1685029878060" ID="ID_526042153" MODIFIED="1685029885075" TEXT="was hei&#xdf;t das?">
<icon BUILTIN="help"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1692370072446" ID="ID_561777955" MODIFIED="1697663528091" TEXT="vorerst wohl gar nicht notwendig">
<icon BUILTIN="hourglass"/>
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685029907272" ID="ID_1507342460" MODIFIED="1685029927215" TEXT="Folge &#x27f9; inhibit Activity">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1685029940611" ID="ID_845619439" MODIFIED="1692370051753" TEXT="m&#xf6;glicherweise Nachricht">
<arrowlink COLOR="#fe3b32" DESTINATION="ID_1190497873" ENDARROW="Default" ENDINCLINATION="111;-9;" ID="Arrow_ID_302966285" STARTARROW="None" STARTINCLINATION="155;-11;"/>
<icon BUILTIN="help"/>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1692370004045" ID="ID_852110707" MODIFIED="1692370044558" TEXT="wahrscheinlich nur das Gegenteil: ent-blocken">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#435e98" CREATED="1692727343142" ID="ID_802575724" MODIFIED="1692741859243" TEXT="Gefahr von mehrfach-Aktivierungen durch Notification">
<arrowlink COLOR="#653694" DESTINATION="ID_424129996" ENDARROW="Default" ENDINCLINATION="-196;-12;" ID="Arrow_ID_609240876" STARTARROW="None" STARTINCLINATION="367;18;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1697674985089" ID="ID_927248825" MODIFIED="1697675053015">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      derzeit gen&#252;gt der Deadline-Check von <font face="Monospaced" color="#595959">Activity::</font><font face="Monospaced" color="#753915"><b>GATE</b></font>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1697674976374" ID="ID_1822149494" MODIFIED="1697675020413" TEXT="Weiterungen noch nicht absehbar">
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
<node CREATED="1687788654684" ID="ID_1528240185" MODIFIED="1697664210343" TEXT="Activity-Terme">
<icon BUILTIN="edit"/>
<node CREATED="1687788659433" ID="ID_1507624704" MODIFIED="1687788784350" TEXT="es werden Satz-artige Terme ausgewertet">
<icon BUILTIN="yes"/>
<node CREATED="1690492542473" ID="ID_508740677" MODIFIED="1690492555436" TEXT="die Auswertung implementiert direkt die Abh&#xe4;ngigkeits-Struktur"/>
<node CREATED="1690492556024" ID="ID_1073489318" MODIFIED="1697929464087" TEXT="aber delegiert externe Effekte &#xfc;ber ein &#x3bb;-Binding">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      konkretes operationales Verhalten des Schedulers, der Concurrency- und Worker-Steuerung
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#dae9fa" DESTINATION="ID_1532008023" ENDARROW="Default" ENDINCLINATION="-184;505;" ID="Arrow_ID_61418953" STARTARROW="None" STARTINCLINATION="630;34;"/>
</node>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1687908576983" ID="ID_1214627402" MODIFIED="1692745540218" TEXT="operationale Semantik">
<cloud COLOR="#d4bba1"/>
<linktarget COLOR="#7f362f" DESTINATION="ID_1214627402" ENDARROW="Default" ENDINCLINATION="-349;-37;" ID="Arrow_ID_1834773150" SOURCE="ID_989605795" STARTARROW="None" STARTINCLINATION="-686;57;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="info"/>
<node CREATED="1687908771624" ID="ID_389533415" MODIFIED="1687908782901" TEXT="Grunds&#xe4;tzlich: verkettete Terme werden nacheinander aktiviert"/>
<node CREATED="1687908847686" ID="ID_1934270653" MODIFIED="1687908851049" TEXT="Job ausf&#xfc;hren">
<node CREATED="1687908853373" ID="ID_212238089" MODIFIED="1687994616711" TEXT="Gate-Check"/>
<node CREATED="1687908993649" ID="ID_1350770179" MODIFIED="1690736043917" TEXT="workStart">
<node CREATED="1687909447304" ID="ID_724099439" MODIFIED="1687914560990" TEXT="Nachricht an TimingObservable">
<arrowlink COLOR="#a1195c" DESTINATION="ID_225279364" ENDARROW="Default" ENDINCLINATION="279;0;" ID="Arrow_ID_802789276" STARTARROW="None" STARTINCLINATION="376;36;"/>
</node>
<node CREATED="1687909461134" ID="ID_1887123630" MODIFIED="1688337466996" TEXT="drop GroomingToken">
<arrowlink COLOR="#af5678" DESTINATION="ID_1257565620" ENDARROW="Default" ENDINCLINATION="223;172;" ID="Arrow_ID_1390633196" STARTARROW="None" STARTINCLINATION="-430;56;"/>
</node>
</node>
<node CREATED="1687910219015" ID="ID_28786353" MODIFIED="1687910221323" TEXT="invoke">
<node CREATED="1687910253555" ID="ID_373183597" MODIFIED="1687910259797" TEXT="Verweis auf einen JobFunctor"/>
<node CREATED="1687910292410" ID="ID_1172966925" MODIFIED="1687910299032" TEXT="Job-Parameter-Record">
<node COLOR="#435e98" CREATED="1687913896192" ID="ID_596101241" MODIFIED="1690491003462" TEXT="wo liegt der im Speicher?">
<icon BUILTIN="help"/>
<node CREATED="1690490972307" ID="ID_129140005" MODIFIED="1690490983821" TEXT="er wird aufgeteilt und umgepackt"/>
<node CREATED="1690490984361" ID="ID_922866757" MODIFIED="1690490999435" TEXT="in eine Kette nachfolgender FEED-Activities"/>
</node>
</node>
<node CREATED="1687913931473" ID="ID_1493272170" MODIFIED="1687913951849" TEXT="ruft JobFunctor mit Parametern auf"/>
</node>
<node CREATED="1687914466382" ID="ID_212913790" MODIFIED="1687914471505" TEXT="post-Hook">
<node CREATED="1687914473677" ID="ID_1900995461" MODIFIED="1687914486927" TEXT="stellt seine Nachfollger in die Queue"/>
<node CREATED="1687913985529" ID="ID_1403905180" MODIFIED="1690736160581" TEXT="workStop">
<node CREATED="1687909447304" ID="ID_243187423" MODIFIED="1687914554079" TEXT="an TimingObservable">
<arrowlink COLOR="#a1195c" DESTINATION="ID_225279364" ENDARROW="Default" ENDINCLINATION="231;0;" ID="Arrow_ID_940532479" STARTARROW="None" STARTINCLINATION="189;26;"/>
</node>
</node>
<node CREATED="1687914113919" ID="ID_711237666" MODIFIED="1687914123035" TEXT="notification(s)">
<node CREATED="1687914132850" ID="ID_474241176" MODIFIED="1687914135243" TEXT="optional"/>
</node>
</node>
</node>
<node CREATED="1687994762046" ID="ID_1088341634" MODIFIED="1687994767082" TEXT="Gate-Check">
<node CREATED="1692551986796" ID="ID_1825945396" MODIFIED="1692565840129" TEXT="Konsistenz durch synchrone Ausf&#xfc;hrung sichergestellt">
<linktarget COLOR="#a4345b" DESTINATION="ID_1825945396" ENDARROW="Default" ENDINCLINATION="196;9;" ID="Arrow_ID_784132365" SOURCE="ID_1681650444" STARTARROW="None" STARTINCLINATION="171;11;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1687994769427" ID="ID_490498751" MODIFIED="1688513655010" TEXT="pr&#xfc;ft countdown-Latch und Start-Zeit"/>
<node CREATED="1687994866264" ID="ID_1786817486" MODIFIED="1687994891144" TEXT="falls &gt; 0, re-schedule &#x27f6; future"/>
<node CREATED="1687995197271" ID="ID_1651228511" MODIFIED="1687995814074" TEXT="falls &#x21b7; Deadline &#x27f6; &#xd83d;&#xdc80;"/>
</node>
<node CREATED="1687996045519" ID="ID_230365460" MODIFIED="1692565489730" TEXT="Notification">
<node CREATED="1692565457395" ID="ID_41855407" MODIFIED="1692565552446">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Unterscheidung in <b>Aktivierung</b>&#160;und <b>Dispatch</b>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1692565692906" ID="ID_1749560424" MODIFIED="1692565786682" TEXT="Aktiviertung &#x27f6; &#x3bb;-post &#x27f6; Dispatch &#x27f9; Ausf&#xfc;hrung"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1687996191436" ID="ID_1681650444" MODIFIED="1692565911759" TEXT="eigentliche Ausf&#xfc;hrung stets synchron">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      d.h. wird stehts von einem Worker ausgef&#252;hrt, der aktuell das GroomingToken h&#228;lt &#10233; Race zwischen Inkrementieren und Gate-Check ausgeschlossen
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#a4345b" DESTINATION="ID_1825945396" ENDARROW="Default" ENDINCLINATION="196;9;" ID="Arrow_ID_784132365" STARTARROW="None" STARTINCLINATION="171;11;"/>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1687996497163" ID="ID_4769641" MODIFIED="1687996508267" TEXT="dekrementiert ein angeschlossenes Gate">
<node COLOR="#435e98" CREATED="1692727388608" ID="ID_260194544" MODIFIED="1692741770782" TEXT="Frage: sofort auch den Chain aktivieren?">
<icon BUILTIN="help"/>
<node COLOR="#338800" CREATED="1692727402206" ID="ID_633016000" MODIFIED="1692741756040" TEXT="Vorteil: optimale Ressourcen-Nutzung">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      wenn die Nachricht kommt, da&#223; alle Prerequisites erf&#252;llt sind, k&#246;nnte die Berechnung sofort starten (und den aktuellen Worker nutzen); wenn wir stattdessen nur dekrementieren, verz&#246;gert sich die Weiterverarbeitung, bis durch Scheduling oder re-Scheduling das Gate erneut gepr&#252;ft wird (spinning)
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="forward"/>
</node>
<node COLOR="#5b280f" CREATED="1692727511559" ID="ID_424129996" MODIFIED="1692741760893" TEXT="Nachteil: mu&#xdf; dann Mehrfach-Aktivierungen blocken">
<linktarget COLOR="#f72a8f" DESTINATION="ID_424129996" ENDARROW="Default" ENDINCLINATION="-547;-50;" ID="Arrow_ID_1444084792" SOURCE="ID_88816908" STARTARROW="None" STARTINCLINATION="-53;219;"/>
<linktarget COLOR="#653694" DESTINATION="ID_424129996" ENDARROW="Default" ENDINCLINATION="-196;-12;" ID="Arrow_ID_609240876" SOURCE="ID_802575724" STARTARROW="None" STARTINCLINATION="367;18;"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1692741724945" ID="ID_41961311" MODIFIED="1692741732215" TEXT="geht aber relativ einfach...."/>
<node CREATED="1692741732754" ID="ID_1362046660" MODIFIED="1692741742588" TEXT="gleichzeitig mit dem Aktivieren der Chain"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1692743990639" ID="ID_1986180553" MODIFIED="1692744024914" TEXT="aber nur wenn genau diese Notification triggert">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1692741786557" ID="ID_1419073378" MODIFIED="1692741840218" TEXT="falls Gate-Bedingung erf&#xfc;llt &#x27f9; einmal &#x201e;feuern&#x201c; und Gate endg&#xfc;ltig schlie&#xdf;en">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1688165968499" ID="ID_833860978" MODIFIED="1688165983122" TEXT="Thema: Async IO">
<icon BUILTIN="hourglass"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1688165984598" FOLDED="true" ID="ID_1228650948" MODIFIED="1699498684788" TEXT="zun&#xe4;chst: nur M&#xf6;glichkeiten und Strukturen kl&#xe4;ren">
<icon BUILTIN="pencil"/>
<icon BUILTIN="hourglass"/>
<node CREATED="1688166011172" ID="ID_671880878" MODIFIED="1688166143669" TEXT="Technologien">
<arrowlink COLOR="#375880" DESTINATION="ID_1200591959" ENDARROW="Default" ENDINCLINATION="-1794;532;" ID="Arrow_ID_1852326782" STARTARROW="None" STARTINCLINATION="-1625;-156;"/>
<node CREATED="1688258161312" ID="ID_1806519359" MODIFIED="1688258203414" TEXT="ASIO(portabel) unterst&#xfc;tzt es f&#xfc;r Files erst neuerdings (io_uring)"/>
<node CREATED="1688258212089" ID="ID_288966469" MODIFIED="1688258228531" TEXT="sonst keine portable L&#xf6;sung verf&#xfc;gbar"/>
<node CREATED="1688258230375" ID="ID_1659248350" MODIFIED="1688258247491" TEXT="mmap und io_uring sind Linux-only"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1693501342420" ID="ID_43618567" MODIFIED="1693502543663" TEXT="Achtung: Wechselwirkung mit Memory-Manager">
<arrowlink COLOR="#fe3e84" DESTINATION="ID_623622318" ENDARROW="Default" ENDINCLINATION="-812;50;" ID="Arrow_ID_466178619" STARTARROW="None" STARTINCLINATION="655;38;"/>
<icon BUILTIN="hourglass"/>
<icon BUILTIN="messagebox_warning"/>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1698458564719" ID="ID_406351135" MODIFIED="1698458664836" TEXT="pr&#xfc;fen: wird das Grooming-Token ben&#xf6;tigt?">
<linktarget COLOR="#a48aab" DESTINATION="ID_406351135" ENDARROW="Default" ENDINCLINATION="-1523;-56;" ID="Arrow_ID_1878900565" SOURCE="ID_45287969" STARTARROW="None" STARTINCLINATION="702;40;"/>
<icon BUILTIN="help"/>
</node>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1699498568051" ID="ID_1129335327" MODIFIED="1699498609736" TEXT="Einbinden von IO-Callbacks in das Activity-System">
<arrowlink COLOR="#fe333f" DESTINATION="ID_514916866" ENDARROW="Default" ENDINCLINATION="-149;26;" ID="Arrow_ID_1894758362" STARTARROW="None" STARTINCLINATION="333;20;"/>
<icon BUILTIN="bell"/>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1684980732965" ID="ID_1914429002" MODIFIED="1684980742528" TEXT="Thema: Timing-Updates">
<icon BUILTIN="hourglass"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1684980744406" ID="ID_1565158605" LINK="https://issues.lumiera.org/ticket/1302" MODIFIED="1698948793241" TEXT="#1302 maintain consistent job timings">
<linktarget COLOR="#705783" DESTINATION="ID_1565158605" ENDARROW="Default" ENDINCLINATION="588;-13;" ID="Arrow_ID_516157232" SOURCE="ID_1812192430" STARTARROW="None" STARTINCLINATION="126;24;"/>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1688336218233" HGAP="-55" ID="ID_323523273" MODIFIED="1688337255857" TEXT="testgetriebener Aufbau" VSHIFT="34">
<linktarget COLOR="#fe3a58" DESTINATION="ID_323523273" ENDARROW="Default" ENDINCLINATION="-167;17;" ID="Arrow_ID_589297136" SOURCE="ID_1968961000" STARTARROW="None" STARTINCLINATION="-139;-149;"/>
<icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1688336601091" FOLDED="true" ID="ID_1454374119" MODIFIED="1689993700816" TEXT="BlockFlow_test">
<linktarget COLOR="#50c146" DESTINATION="ID_1454374119" ENDARROW="Default" ENDINCLINATION="-596;80;" ID="Arrow_ID_208594716" SOURCE="ID_836380061" STARTARROW="None" STARTINCLINATION="-331;-16;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1688336974018" ID="ID_1806920884" MODIFIED="1688337018608" TEXT="&#xbb;Epoch&#xab; based memory layout">
<icon BUILTIN="info"/>
</node>
<node COLOR="#338800" CREATED="1688562176925" ID="ID_1158793893" MODIFIED="1689529124622" TEXT="simpleUsage">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1688562183720" ID="ID_112254409" MODIFIED="1688562193713" TEXT="BlockFlow erzeugen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1688562194185" ID="ID_1955464710" LINK="#ID_1846164158" MODIFIED="1689215741713" TEXT="eine tick-Activity platzieren">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1688562204824" ID="ID_101196546" MODIFIED="1689215743991" TEXT="Diagnose: Allokation erfolgte">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1688562219790" ID="ID_1157838911" LINK="#ID_455793213" MODIFIED="1689529126409" TEXT="aufr&#xe4;umen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1688562225717" ID="ID_1423239902" MODIFIED="1689215748484" TEXT="Diagnose: Allocation wech">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1688514837919" ID="ID_23367137" MODIFIED="1689529122514" TEXT="API-Operationen">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1688514860052" ID="ID_1887728481" MODIFIED="1689529113503" TEXT="Action allozieren"/>
<node COLOR="#435e98" CREATED="1688514944443" ID="ID_341749929" MODIFIED="1689529119926" TEXT="Aufr&#xe4;umen vor Zeit"/>
</node>
<node COLOR="#338800" CREATED="1688515088451" ID="ID_254117288" MODIFIED="1689529134587" TEXT="Epochen-Operationen">
<icon BUILTIN="button_ok"/>
<node CREATED="1688515094346" ID="ID_1027706144" MODIFIED="1688515110180" TEXT="Epoche finden oder erstellen"/>
<node CREATED="1688515126831" ID="ID_1528998679" MODIFIED="1688515184828" TEXT="Epoche aktiv oder obsolet"/>
<node CREATED="1689199348011" ID="ID_946314952" MODIFIED="1689199354365" TEXT="F&#xfc;llstand der Epoche"/>
<node CREATED="1689199360284" ID="ID_1490677402" MODIFIED="1689199371202" TEXT="Deadline abfragen"/>
<node CREATED="1689199372430" ID="ID_1393603020" MODIFIED="1689199377650" TEXT="EpochGate"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1689199381509" HGAP="-9" ID="ID_1151653123" MODIFIED="1689200619525" TEXT="Testf&#xe4;lle" VSHIFT="4">
<icon BUILTIN="list"/>
<node COLOR="#338800" CREATED="1689199390484" ID="ID_679990341" MODIFIED="1689529143322" TEXT="handleEpoch">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1689202254231" ID="ID_322073846" MODIFIED="1689294940657" TEXT="Eigenschaften einer neu erstellten Epoche">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1689202440952" FOLDED="true" ID="ID_1233864251" MODIFIED="1693502628111" TEXT="EpochGate-Verhalten">
<icon BUILTIN="hourglass"/>
<node CREATED="1693502578373" ID="ID_906293868" MODIFIED="1693502622932" TEXT="bisher nur halb gekl&#xe4;rt">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Es ist noch nicht klar, wie die Callbacks von async-IO aufgeschaltet werden
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1693502585994" ID="ID_215852439" MODIFIED="1693502626471" TEXT="daher auch nur minimal abgedeckt">
<icon BUILTIN="hourglass"/>
</node>
</node>
<node COLOR="#338800" CREATED="1689202329260" ID="ID_1491199644" MODIFIED="1689294946303" TEXT="Belegen eines Slot">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1689202342763" ID="ID_1522127566" MODIFIED="1689295488226" TEXT="volle Epoche erkennen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1689202395764" ID="ID_1382459579" MODIFIED="1689295734831" TEXT="Entscheidung aktiv/obsolet">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1689199616791" ID="ID_752152349" MODIFIED="1689529149220" TEXT="placeActivity">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1689202512708" ID="ID_101278669" MODIFIED="1689449425443" TEXT="in leeren BlockFlow">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1689202522354" ID="ID_523714574" MODIFIED="1689449428380" TEXT="f&#xfc;r Vergangenheit">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1689202560123" ID="ID_827332375" MODIFIED="1689449429802" TEXT="zu bestehenden Epochen">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1689303110181" ID="ID_97036563" LINK="#ID_1494295782" MODIFIED="1689449431509" TEXT="brauche Diagnostic f&#xfc;r die reale Epochen-Zuordnung">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node COLOR="#338800" CREATED="1689202576227" ID="ID_1382030737" MODIFIED="1689449434375" TEXT="in die Zukunft">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1689202597977" ID="ID_1853102157" MODIFIED="1689529147060" TEXT="Overflow zu n&#xe4;chster Epoche">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1689202609159" ID="ID_985814955" MODIFIED="1689529148297" TEXT="Overflow zuk&#xfc;nftige Epoche">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1689203745600" ID="ID_838958031" MODIFIED="1689560604418" TEXT="adjustEpochs">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1689203960637" ID="ID_1138375951" MODIFIED="1689560601147" TEXT="time averaging mechanism">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1689203990663" ID="ID_1418143690" MODIFIED="1689529153771" TEXT="Overflow reduziert Spacing">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1689204050903" ID="ID_1034064454" MODIFIED="1689560602277" TEXT="Freigabe bewertet F&#xfc;llstand">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1689199850230" ID="ID_500959752" MODIFIED="1689993386504" TEXT="storageFlow">
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1689202692911" FOLDED="true" ID="ID_906364025" MODIFIED="1689996471260" TEXT="Massentest zur Performance-Messung">
<linktarget COLOR="#3ba098" DESTINATION="ID_906364025" ENDARROW="Default" ENDINCLINATION="-1525;104;" ID="Arrow_ID_849510703" SOURCE="ID_1170043916" STARTARROW="None" STARTINCLINATION="455;-1256;"/>
<icon BUILTIN="info"/>
<node COLOR="#435e98" CREATED="1689607803699" ID="ID_620009729" MODIFIED="1689993509825" TEXT="Default-Init-Parameter">
<icon BUILTIN="info"/>
<node CREATED="1689608995574" ID="ID_1382602336" MODIFIED="1689608995574" TEXT="EPOCH_SIZ = 100"/>
<node CREATED="1689609002434" ID="ID_216937805" MODIFIED="1689609002434" TEXT="ACTIVITIES_PER_FRAME = 10"/>
<node CREATED="1689609017551" ID="ID_272032946" MODIFIED="1689609040604" TEXT="&#x27f9; FRAMES_PER_EPOCH = 10"/>
<node CREATED="1689609051050" ID="ID_1257102210" MODIFIED="1689993486041" TEXT="initial assumed Framerate: 2 *25 fps"/>
<node CREATED="1689609075143" ID="ID_344074739" MODIFIED="1689609133361" TEXT="&#x27f9; INITIAL_EPOCH_STEP = 200ms"/>
</node>
<node COLOR="#435e98" CREATED="1689993440459" ID="ID_1517441371" MODIFIED="1689993508074" TEXT="Parameter f&#xfc;r Real-Betrieb">
<icon BUILTIN="info"/>
<node CREATED="1689608995574" ID="ID_710035024" MODIFIED="1689993463534" TEXT="EPOCH_SIZ = 500"/>
<node CREATED="1689993496963" ID="ID_967241641" MODIFIED="1689993502910" TEXT="initial assumed Framerate: 5 * 25 fps "/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1689609141854" ID="ID_82493559" MODIFIED="1689610221195">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      setze aber einen h&#246;heren Durchsatz an
    </p>
    <p>
      (damit das System unter Druck kommt)
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
<node CREATED="1689610222139" ID="ID_1704167473" LINK="#ID_1804527820" MODIFIED="1689610391195" TEXT="Kategorie: Lasttest">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1689610228610" ID="ID_1383838489" MODIFIED="1689610246476" TEXT="aber auch hinreichend viel Durchsatz f&#xfc;r Laufzeitmessung"/>
</node>
<node CREATED="1689609334347" ID="ID_1456811556" MODIFIED="1689993432552" TEXT="Zielwert: 200 fps f&#xfc;r simulierte 3 Minuten mit 500ms Planungsvorlauf"/>
<node CREATED="1689609354638" ID="ID_13693062" MODIFIED="1689609360660" TEXT="erwartete Lastdaten">
<node CREATED="1689609372927" ID="ID_1978827728" MODIFIED="1689993423049" TEXT="36000 Frames"/>
<node CREATED="1689609382411" ID="ID_155883232" MODIFIED="1689993411675" TEXT="360000 Activities"/>
<node CREATED="1689610411828" ID="ID_386161916" MODIFIED="1689993570348" TEXT="2000 Activities/sec"/>
<node CREATED="1689609467874" ID="ID_1876259312" MODIFIED="1689993562902" TEXT="720 Epochen"/>
<node CREATED="1689610474674" ID="ID_1543562596" MODIFIED="1689610513127" TEXT="&#x2205; 1000 Activities im Vorlauf">
<node CREATED="1689610536148" ID="ID_1153226592" MODIFIED="1689610541467" TEXT="das sind &#x2205; 10 Epochen"/>
<node CREATED="1689610676253" ID="ID_910559745" MODIFIED="1689610685976" TEXT="verwende &#xb1;200ms Streuung im Vorlauf"/>
</node>
<node CREATED="1689611710754" ID="ID_488317579" MODIFIED="1689611720732" TEXT="alle 100ms ein clean-up"/>
</node>
</node>
<node COLOR="#338800" CREATED="1689560632798" FOLDED="true" ID="ID_1959869883" MODIFIED="1689639978410" TEXT="probabilistische F&#xfc;llung verwenden">
<icon BUILTIN="button_ok"/>
<node CREATED="1689610738613" ID="ID_981353581" MODIFIED="1689610750951" TEXT="System wird synchron Ende-zu-Ende unter Druck gesetzt"/>
<node CREATED="1689610757842" ID="ID_1665227842" MODIFIED="1689610778211" TEXT="erzeuge im Vorlauf die Zufallsdaten">
<node CREATED="1689610814059" ID="ID_887238999" MODIFIED="1689610825598" TEXT="Zufallszahl als Pr&#xfc;fsumme"/>
<node CREATED="1689610928747" ID="ID_796987353" MODIFIED="1689610975585" TEXT="Deadline-Vorlauf zuf&#xe4;llig 500ms &#xb1; 200ms"/>
</node>
<node CREATED="1689610781367" ID="ID_777278499" MODIFIED="1689610796142" TEXT="erzeuge die Activities direkt hintereinander">
<node COLOR="#338800" CREATED="1689611029321" ID="ID_262626991" MODIFIED="1689993653798" TEXT="k&#xfc;nstliche Zeitachse systematisch aus den Basisdaten aufbauen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1689993660956" ID="ID_1439463033" MODIFIED="1689993680618" TEXT="alle Zufallszahlen vor dem eigentlichen Test vorberechnen und in Vector speichern">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1689610978989" ID="ID_986448579" MODIFIED="1689993690794" TEXT="stelle die Pointer auf die erzeugten Activiteis in vorbereiteten Vector">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1689611424768" ID="ID_770500915" MODIFIED="1689993693177" TEXT="mit 1000 Steps Verz&#xf6;gerung (500ms) : Pr&#xfc;fsumme zugreifen und lesen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1689611688365" ID="ID_693753703" MODIFIED="1689993694159" TEXT="alle 200 Steps ein clean-up">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1689611733375" ID="ID_1765690809" MODIFIED="1689611754896" TEXT="brauche Abstraktion der Messung durch zwei &#x3bb;">
<node CREATED="1689611756428" ID="ID_121020011" MODIFIED="1689611763612" TEXT="&#x3bb;1 : alloc"/>
<node CREATED="1689611766050" ID="ID_1445074536" MODIFIED="1689611771519" TEXT="&#x3bb;2 : invoke"/>
</node>
</node>
<node COLOR="#338800" CREATED="1689560655505" ID="ID_341052414" MODIFIED="1689640004346" TEXT="Laufzeiten messen...">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1689560664792" ID="ID_1260345651" MODIFIED="1689640001789" TEXT="Konstruktion von Activities ohne Allokation">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1689560679550" ID="ID_791902165" MODIFIED="1689640002703" TEXT="Konstruktion mit Heap-Allokation">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1689560687229" ID="ID_1878728733" MODIFIED="1689640003483" TEXT="Allokation via BlockFlow">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1688394889309" FOLDED="true" ID="ID_1132827905" MODIFIED="1689188274739" TEXT="ExtentFamily_test">
<linktarget COLOR="#40c5eb" DESTINATION="ID_1132827905" ENDARROW="Default" ENDINCLINATION="-593;73;" ID="Arrow_ID_709934622" SOURCE="ID_504623704" STARTARROW="None" STARTINCLINATION="-214;-18;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1688394900403" ID="ID_1380392473" MODIFIED="1688394919878" TEXT="underlying sequence-of-extents">
<icon BUILTIN="info"/>
</node>
<node COLOR="#338800" CREATED="1689039624159" ID="ID_257531084" MODIFIED="1689039682802" TEXT="simpleUsage">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1689039632758" ID="ID_860446703" MODIFIED="1689039686682" TEXT="einen Extent allozieren">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1689039639893" ID="ID_911206707" MODIFIED="1689039686682" TEXT="darauf zugreifen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1689039651644" ID="ID_367791963" MODIFIED="1689039686682" TEXT="daten dort speichern">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1688434736501" ID="ID_1334906045" MODIFIED="1689039700401" TEXT="use_and_drop">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1688434743454" ID="ID_722620082" MODIFIED="1688434762609" TEXT="ExtentFamily erzeugen mit pre-Allocation">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1688862941032" ID="ID_1514279635" MODIFIED="1688960119406" TEXT="Diagnose der tats&#xe4;chlichen Speicherbelegung">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1688862915795" ID="ID_871871038" MODIFIED="1689039755286" TEXT="iteration">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1688862977234" ID="ID_1512460521" MODIFIED="1689039752912" TEXT="anfangs leer">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1689039733704" ID="ID_332511670" MODIFIED="1689039751902" TEXT="mehrere Extents allozieren">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1689039741903" ID="ID_1941955701" MODIFIED="1689039751902" TEXT="kann dar&#xfc;ber iterieren und zugreifen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1688862995665" ID="ID_469578407" MODIFIED="1689039754452" TEXT="man kann erneut &#xfc;ber Extents iterieren">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1689130091868" ID="ID_1078761905" MODIFIED="1689130098882" TEXT="reuseUnclean">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1689130101082" ID="ID_602242804" MODIFIED="1689130136363" TEXT="spezielles Testobjekt">
<icon BUILTIN="button_ok"/>
<node CREATED="1689130113232" ID="ID_1068658762" MODIFIED="1689130120747" TEXT="ctor belegt ein Feld mit Random-Werten"/>
<node CREATED="1689130121418" ID="ID_745826511" MODIFIED="1689130134369" TEXT="dtor setzt das Feld auf 0 zur&#xfc;ck"/>
</node>
<node COLOR="#338800" CREATED="1689130137965" ID="ID_856848414" MODIFIED="1689130148696" TEXT="einen gr&#xf6;&#xdf;eren Block damit f&#xfc;llen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1689130149324" ID="ID_102457936" MODIFIED="1689130158266" TEXT="Pr&#xfc;fsumme &#xfc;ber alle diese Random-Zahlen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1689130159170" ID="ID_1023088377" MODIFIED="1689130180869" TEXT="dann die aktiven Extents &#x201e;rotieren&#x201c;">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1689130236679" ID="ID_1843146082" MODIFIED="1689130275626" TEXT="der Block war zwischenzeitlich verworfen und wird nun neu belegt">
<icon BUILTIN="info"/>
</node>
<node COLOR="#338800" CREATED="1689130190886" ID="ID_1953109784" MODIFIED="1689130271958" TEXT="verifizieren (Pr&#xfc;fsummen) da&#xdf; die Daten im Block unver&#xe4;ndert sind">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1688863046274" ID="ID_121256425" MODIFIED="1689188255487" TEXT="iteration mit wrap-around">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1689182063013" ID="ID_750255233" MODIFIED="1689182092157" TEXT="Diagnose: Iterator-Stellung und allozierte Addressen pr&#xfc;fen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1689184284607" ID="ID_231887241" MODIFIED="1689184306124" TEXT="im Debugger auf Plausibilit&#xe4;t gepr&#xfc;ft">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1689184307170" ID="ID_1796856440" MODIFIED="1689184322898" TEXT="Speicherbl&#xf6;cke enthalten tats&#xe4;chlich &#xbb;M&#xfc;ll&#xab;">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1689184324601" ID="ID_1203335340" MODIFIED="1689184356437" TEXT="Speicher-Adressen in &lt;raw&gt; und als Extent&amp; sind identisch">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1689184357957" ID="ID_1395108098" MODIFIED="1689184375062" TEXT="im Snapshot-Vektor stehen tats&#xe4;chlich die Extent* (Adressen)">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1688863075348" ID="ID_619946525" MODIFIED="1689188166869" TEXT="Iteration in Normal-Stellung alloziert am Ende">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1688863063471" ID="ID_1548989724" MODIFIED="1689188170837" TEXT="Iteration belegt freigegebene Extents erneut">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1688863109043" ID="ID_1214274693" MODIFIED="1689188242156" TEXT="nach wrap-around werden zus&#xe4;tzliche Extents in der Mitte eingef&#xfc;gt">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1689188257046" ID="ID_1274659581" MODIFIED="1689188271832" TEXT="Grenzsituation wenn das Ende grade ge-wrappt ist">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1688336697451" FOLDED="true" ID="ID_360159435" MODIFIED="1693695232010" TEXT="SchedulerActivity_test">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1688337038457" ID="ID_1859527374" MODIFIED="1693695203513">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      &#187;<b>Activity Language</b>&#171; Functionality test
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
<node CREATED="1689200347787" ID="ID_927706508" MODIFIED="1689200349854" TEXT="Themen">
<node CREATED="1689200351602" ID="ID_1759162519" MODIFIED="1689200367907" TEXT="Activity-Verhalten"/>
<node CREATED="1689200370367" ID="ID_1671898028" MODIFIED="1689200383536" TEXT="Term-Builder"/>
<node CREATED="1689200449333" ID="ID_386403564" MODIFIED="1689200453433" TEXT="usage scenarios"/>
</node>
<node CREATED="1689201354393" HGAP="24" ID="ID_1250518280" MODIFIED="1689201365333" TEXT="Hilfsmittel" VSHIFT="2">
<node COLOR="#338800" CREATED="1689201660559" FOLDED="true" ID="ID_747497995" MODIFIED="1693695210666" TEXT="ActivityDetector">
<icon BUILTIN="button_ok"/>
<node CREATED="1689201667734" ID="ID_901153159" MODIFIED="1692286015665" TEXT="speziell verdrahtetes Setup">
<icon BUILTIN="info"/>
<node CREATED="1689201677836" ID="ID_166879509" MODIFIED="1689201693231" TEXT="kann ihre Aktivierung dokumentieren"/>
<node CREATED="1689201999161" ID="ID_554259263" MODIFIED="1689202008524" TEXT="kann Gate-Verhalten aufzeichnen"/>
<node CREATED="1692286019936" ID="ID_902152915" MODIFIED="1693168975331" TEXT="bietet ExecutionContext-Fake">
<arrowlink COLOR="#7d5f6b" DESTINATION="ID_1648694746" ENDARROW="Default" ENDINCLINATION="-767;677;" ID="Arrow_ID_1288986872" STARTARROW="None" STARTINCLINATION="656;68;"/>
<linktarget COLOR="#433d62" DESTINATION="ID_902152915" ENDARROW="Default" ENDINCLINATION="656;-38;" ID="Arrow_ID_644734597" SOURCE="ID_596906210" STARTARROW="None" STARTINCLINATION="1154;77;"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1689202062345" ID="ID_373470992" MODIFIED="1693169045521" TEXT="implementiert als eigenst&#xe4;ndiges Test-Hilfsmittel">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...weil ich damit auch die erweiterten Scheduler-Tests mit abdecken k&#246;nnte (concurrency)...
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#5f8998" DESTINATION="ID_284088835" ENDARROW="Default" ENDINCLINATION="-204;1111;" ID="Arrow_ID_1573724609" STARTARROW="None" STARTINCLINATION="873;45;"/>
<icon BUILTIN="yes"/>
</node>
<node COLOR="#435e98" CREATED="1689202013167" ID="ID_1086517923" MODIFIED="1692057436906" TEXT="Idee: EventLog verwenden?">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...pa&#223;t perfekt hier; mu&#223; lediglich die elementaren Verifikations-Primitive hier verpacken, um semantisch relevante Elemente direkt zu pr&#252;fen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1689199381509" HGAP="-9" ID="ID_1023579954" MODIFIED="1689200613367" TEXT="Testf&#xe4;lle" VSHIFT="4">
<icon BUILTIN="list"/>
<node COLOR="#338800" CREATED="1689199958807" ID="ID_1659400931" MODIFIED="1692718525119" TEXT="simpleUsage">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1689201241256" ID="ID_1940651320" MODIFIED="1692718523457" TEXT="Activity erstellen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1689201251263" ID="ID_629522642" MODIFIED="1692718524329" TEXT="Activity aktivieren">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1692718407577" ID="ID_500127760" MODIFIED="1692718464799" TEXT="verifyActivity_Post">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1692718467475" HGAP="25" ID="ID_1128481830" MODIFIED="1692722002808" TEXT="POST mu&#xdf; die Zeitfenster-Info transportieren" VSHIFT="5">
<icon BUILTIN="broken-line"/>
</node>
</node>
<node COLOR="#338800" CREATED="1689199390484" ID="ID_176395611" MODIFIED="1692369867056" TEXT="verifyActivity_Invoke">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1689199390484" ID="ID_1274424925" MODIFIED="1692723164509" TEXT="verifyActivity_Notify_activate">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1692718437941" ID="ID_1363192893" MODIFIED="1692723165688" TEXT="verifyActivity_Notify_dispatch">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1689199390484" FOLDED="true" ID="ID_212018049" MODIFIED="1692727125029" TEXT="verifyActivity_Gate">
<linktarget COLOR="#2c8d69" DESTINATION="ID_212018049" ENDARROW="Default" ENDINCLINATION="556;74;" ID="Arrow_ID_1693904148" SOURCE="ID_1220469732" STARTARROW="None" STARTINCLINATION="472;34;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1692723178576" ID="ID_214653366" MODIFIED="1692726894947" TEXT="pass">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1692723181232" ID="ID_1906220001" MODIFIED="1692726895935" TEXT="dead">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1692723183479" ID="ID_785522791" MODIFIED="1692726896672" TEXT="block">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1692723186655" ID="ID_343855322" MODIFIED="1692726899386" TEXT="opened">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1692726976360" ID="ID_145651869" MODIFIED="1692741941297" TEXT="aber kl&#xe4;ren: wie k&#xf6;nnen Mehrfach-Aktivierungen verhindert werden?">
<arrowlink COLOR="#a35866" DESTINATION="ID_88816908" ENDARROW="Default" ENDINCLINATION="-7;123;" ID="Arrow_ID_1622612414" STARTARROW="None" STARTINCLINATION="487;21;"/>
<icon BUILTIN="help"/>
</node>
<node COLOR="#435e98" CREATED="1692741942585" ID="ID_744010881" MODIFIED="1692741967174" TEXT="Antwort: indem man das Gate sofort und endg&#xfc;ltig schlie&#xdf;t">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1689200547247" FOLDED="true" ID="ID_1506436785" MODIFIED="1693328247993" TEXT="termBuilder">
<arrowlink COLOR="#4e4671" DESTINATION="ID_469443507" ENDARROW="Default" ENDINCLINATION="-463;535;" ID="Arrow_ID_1203697100" STARTARROW="None" STARTINCLINATION="-890;-116;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1693269179507" ID="ID_286775090" LINK="#ID_1334461256" MODIFIED="1693323260073" TEXT="einfachst m&#xf6;glichen activity::Term konstruieren">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1693269232884" ID="ID_1940626454" MODIFIED="1693269393485" TEXT="ActivityDetector stellt auch Dummy-Job bereit">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      hier ist es nicht sinnvoll, die MockJobs aus dem Dispatcher zu verwenden, und zwar aus zwei Gr&#252;nden
    </p>
    <ul>
      <li>
        Linking-Dependencies: wir sind in der Vault
      </li>
      <li>
        Verifikation per EventLog &#10231; Verifikation per internem Invocation-Record
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1693275128994" ID="ID_901919286" MODIFIED="1693275153343" TEXT="Invocation-Parameter aus Job &#x27fc; INVOKE-Activity">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1693275156129" ID="ID_1778878124" MODIFIED="1693275162493" TEXT="POST-Activity anlegen">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1693269199928" ID="ID_185134867" MODIFIED="1693327363610" TEXT="minimale Ausstattung verifizieren">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1693275251993" ID="ID_101711182" MODIFIED="1693275264459" TEXT="Ankerpunkt ist eine POST-Activity">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1693269490081" ID="ID_815043128" MODIFIED="1693323265343" TEXT="POST hat das Timing-Window &#xfc;bernommen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1693269535563" ID="ID_1083096028" MODIFIED="1693327356700" TEXT="Activities sind verlinkt">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      POST&#10230;TIMESTART&#10230;INVOKE&#10230;FEED&#10230;FEED&#10230;TIMESTOP
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1693269471291" ID="ID_212963309" MODIFIED="1693328244888" TEXT="Ausf&#xfc;hrbarkeit der Invocation">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1693269686406" ID="ID_482075327" MODIFIED="1693327322538" TEXT="BlockFlow - Zustand">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1693327323663" ID="ID_1116744378" MODIFIED="1693327349540" TEXT="7 Activities belegt">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1693327333758" ID="ID_1084060090" MODIFIED="1693327349540" TEXT="alle in einer Epoche">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1693327337525" ID="ID_913338317" MODIFIED="1693327349540" TEXT="diese Epoche endet knapp hinter der gegebenen Deadline">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1693426627134" FOLDED="true" ID="ID_468206154" MODIFIED="1693431591742" TEXT="dispatchChain">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1693426634246" ID="ID_1750182879" MODIFIED="1693426683358" TEXT="testet die Ausf&#xfc;hrungs-Funktion in ActivityLang">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1693426656634" ID="ID_965537081" MODIFIED="1693426681870" TEXT="verwendet eine k&#xfc;nstliche, direkt verdrahtete Kette">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1693426668288" ID="ID_1618574447" MODIFIED="1693431580213" TEXT="Abbruch bei SKIP">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1693431584333" ID="ID_1106229666" MODIFIED="1693431590469" TEXT="Zustellung einer Notification">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1689200553782" FOLDED="true" ID="ID_472609287" MODIFIED="1693528208553" TEXT="scenario_RenderJob">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1693323299522" ID="ID_1282022548" MODIFIED="1693323306513" TEXT="Grundstruktur verdrahten">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1693431821078" ID="ID_783748219" MODIFIED="1693440678716" TEXT="sinnvolle Instrumentierung (um Ausf&#xfc;hrungssequenz zeigen zu k&#xf6;nnen)">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1693431842683" ID="ID_713697304" MODIFIED="1693440682669">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      gesamte Kette ausf&#252;hren per <font face="Monospaced" color="#262bbb">ActivityLang::dispatchChain()</font>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1693440702928" ID="ID_1663710700" MODIFIED="1693528227409">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Zugriff auf die <i>aktuelle Scheduler-Zeit</i>&#160;verifizieren
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#3e708a" DESTINATION="ID_1799625960" ENDARROW="Default" ENDINCLINATION="1052;45;" ID="Arrow_ID_1059439556" STARTARROW="None" STARTINCLINATION="1063;-39;"/>
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#97bcc1" COLOR="#0f4469" CREATED="1693528247434" HGAP="33" ID="ID_1436446338" MODIFIED="1693581230764" TEXT="manipulierter Getter..." VSHIFT="9">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      zwar wird jetzt &#252;ber ein &#955; im ExecutionContext zugegriffen, aber da ich keinen Callback im eigentlichen Funktor habe, fehlt die M&#246;glichkeit, diesen Zeitwert auch tats&#228;chlich w&#228;hrend der Ausf&#252;hrung der Kette zu variieren &#8212; um die <b>dynamische Auswertung</b>&#160;im Test zu zeigen, kann aber der Zugriffs-Funktor so manipuliert werden, da&#223; er jedesmal die &#8222;aktuelle Zeit&#8220; inkrementiert
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1693502167005" FOLDED="true" ID="ID_13120904" MODIFIED="1693616469802" TEXT="scenario_Notification">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1693502193641" ID="ID_970318761" MODIFIED="1693528493228" TEXT="Grundstruktur wie scenario_RenderJob">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1693432027554" ID="ID_1114094454" MODIFIED="1693587751299" TEXT="alle Extras zuschalten">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1693432039914" ID="ID_99848990" MODIFIED="1693587748742" TEXT="Aufschalten einer Notification">
<arrowlink COLOR="#526686" DESTINATION="ID_1513616803" ENDARROW="Default" ENDINCLINATION="910;65;" ID="Arrow_ID_1729642753" STARTARROW="None" STARTINCLINATION="987;-87;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1693502035815" ID="ID_706646924" MODIFIED="1693587750080" TEXT="Einschleifen einer requireDirectActivation()">
<arrowlink COLOR="#5f98b9" DESTINATION="ID_158897194" ENDARROW="Default" ENDINCLINATION="597;427;" ID="Arrow_ID_908519316" STARTARROW="None" STARTINCLINATION="912;57;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1693502289659" ID="ID_1184407673" MODIFIED="1693612130867" TEXT="zwei Testf&#xe4;lle">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1693502296755" ID="ID_917643294" MODIFIED="1693612133203" TEXT="Notification &#x27f9; dekrementiert">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1693502312416" ID="ID_1139733627" MODIFIED="1693612134716" TEXT="primary-Chain &#x27f9; dispatch-Chain">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1693603368706" ID="ID_1497162884" MODIFIED="1693612136770" TEXT="komplette Aufrufkette verifizieren">
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1693603380721" ID="ID_1170059404" MODIFIED="1693603902911" TEXT="geht so nicht, wegen FakeExecutionCtx">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Im ActivityDetector sind normalerweise die ctx-&#955; als reine Logging-Funktionen implementiert; aber die nun konstruierte Ausf&#252;hrungs-Logik setzt fest darauf, da&#223; ein Aufruf von ctx.post() sofort in einen ActivityLang::dispatchChain() umgesetzt wird <i><font size="2" color="#562275">(allerdings nicht wirklich immer, sondern nur in dem Fall, da&#223; wir das GroomingToken halten und die im post() gegebene Zeit die aktuelle Zeit ist)</font></i>
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#8f4550" DESTINATION="ID_1373519941" ENDARROW="Default" ENDINCLINATION="-166;-6;" ID="Arrow_ID_1164574930" STARTARROW="None" STARTINCLINATION="191;13;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#435e98" CREATED="1693603571349" ID="ID_1256896805" MODIFIED="1693612676262" TEXT="im vorliegenden Testfall k&#xf6;nnte man eigentlich diesen Aufruf durchreichen...">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      gemeint ist: den Aufruf von &#955;-post k&#246;nnte man weitergeben an die ActivityLang-Instanz, die im Test-Kontext konstruiert wurde; damit w&#252;rde also die Pr&#252;fung/Steuerung mit dem GroomingToken ausgelassen, aber ansonsten w&#252;rde dann die Aktivierung direkt an ActivityLang::dispatchChain() weitergegeben.
    </p>
    <p>
      
    </p>
    <p>
      <b>Wichtige Einschr&#228;nkung</b>: dieses &#187;Durchreichen&#171; darf man nur machen, wenn der post f&#252;r &#8222;jetzt gleich&#8220; ist, d.h. die im post() gegebene Zeit mu&#223; man checken (sonst w&#252;rde z.B. ein geblocktes Gate, das sich in die Zukunft schedulen m&#246;chte, sofort in eine Endlosschleife laufen)
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1693603663534" ID="ID_1373519941" MODIFIED="1693603891817" TEXT="dem steht aber der feste Datentyp entgegen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      <font color="#7b4438" face="Monospaced">FakeExecutionCtx</font>&#160;bzw. die dort verwendete <font color="#7b4438" face="Monospaced">DiagnosticFun</font>, auf die man ja tats&#228;chlich zugreifen k&#246;nnen sollte (um den R&#252;ckgabewert zu manipulieren) &#8212; und das w&#228;re bei einer <font face="Monospaced" color="#2f1687">std::function</font>&#160; nicht mehr m&#246;glich...
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#8f4550" DESTINATION="ID_1373519941" ENDARROW="Default" ENDINCLINATION="-166;-6;" ID="Arrow_ID_1164574930" SOURCE="ID_1170059404" STARTARROW="None" STARTINCLINATION="191;13;"/>
<icon BUILTIN="broken-line"/>
</node>
<node COLOR="#5b280f" CREATED="1693611682695" ID="ID_1101066444" MODIFIED="1693611691516" TEXT="Spezial-L&#xf6;sung f&#xfc;r das ctx.post schaffen">
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#338800" CREATED="1693611698791" ID="ID_757301606" MODIFIED="1693611728973" TEXT="Nein! die Grundlage daf&#xfc;r geh&#xf6;rt in die DiagnosticFun">
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#338800" CREATED="1693612143280" ID="ID_1378873696" MODIFIED="1693612186089" TEXT="lokales &#x3bb; im Test &#x27fc; die Test-Instanz ActivityLang &#x27fc; dispatch()">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1693612196689" ID="ID_809138083" MODIFIED="1693612262606" TEXT="JobFunctor bereits direkt &#xfc;ber die Notification aus dem primary-Chain getriggert">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1693612272319" ID="ID_319335391" MODIFIED="1693612445592" TEXT="das vorher beobachtete Verhalten war auch korrekt">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#435e98" CREATED="1693612282669" ID="ID_1612788145" MODIFIED="1693612445592" TEXT="aber so ist der Ablauf wie intendiert">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      <u>Testfall-1</u>:
    </p>
    <p>
      notification &#10236; decr(Gate) &#10236; &#10007;
    </p>
    <p>
      <u>Testfall-2</u>:
    </p>
    <p>
      primary-chain &#10236; notify an Gate &#10236; &#955;-post &#10236; dispatch &#10236; decr(gate) &#10236; PASS &#10236; Rest der Kette
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1689200553782" FOLDED="true" ID="ID_1346681233" MODIFIED="1693694291844" TEXT="scenario_IOJob">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1693323299522" ID="ID_392906930" MODIFIED="1693694293977" TEXT="Grundstruktur verdrahten">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1693684632678" ID="ID_1092577366" LINK="#ID_1698611033" MODIFIED="1693694295190" TEXT="Zugriff auf den Callback-Trigger">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1693432167704" ID="ID_1355575152" MODIFIED="1693694296275" TEXT="Anh&#xe4;ngen einer Folge-Notification">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1689200553782" FOLDED="true" ID="ID_722630098" MODIFIED="1693618275138" TEXT="scenario_MetaJob">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1693323319980" ID="ID_1996463444" MODIFIED="1693323335269" TEXT="die minimale default-Verdrahtung gen&#xfc;gt">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1693618353666" ID="ID_1280526834" MODIFIED="1693618364282" TEXT="die kurze Kette explizit verifizieren">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1688336761542" FOLDED="true" ID="ID_145928010" MODIFIED="1698970224155" TEXT="SchedulerInvocation_test">
<icon BUILTIN="button_ok"/>
<node CREATED="1688337123318" ID="ID_1686181795" MODIFIED="1688337233916" TEXT="&#xbb;Layer-1&#xab; : Queue operation">
<icon BUILTIN="info"/>
</node>
<node COLOR="#435e98" CREATED="1697473080944" ID="ID_1787410167" MODIFIED="1697509867150" TEXT="Aufgabe: die low-Level Operationen durchspielen">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1697483171239" ID="ID_1311717572" MODIFIED="1697493792567" TEXT="scaffolding">
<icon BUILTIN="button_ok"/>
<node CREATED="1697483188828" ID="ID_1400224430" MODIFIED="1697483199834" TEXT="direkt konstruierte Activity-Records"/>
<node CREATED="1697483303661" ID="ID_1179779450" MODIFIED="1697483324629" TEXT="eingeben und query-API pr&#xfc;fen"/>
</node>
<node COLOR="#435e98" CREATED="1697493793732" ID="ID_597348426" MODIFIED="1697509849880" TEXT="F&#xe4;lle">
<node COLOR="#338800" CREATED="1697493804379" ID="ID_1199251760" MODIFIED="1697503985564" TEXT="simpleUsage">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1697495848896" ID="ID_1473786655" MODIFIED="1697495859530" TEXT="mu&#xdf; eine INITIAL_CAPACITY hinterlegen"/>
</node>
<node COLOR="#338800" CREATED="1697503875664" ID="ID_709664850" MODIFIED="1697509770695" TEXT="verify_Queuing">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1697503841856" ID="ID_1434499377" LINK="#ID_1306162732" MODIFIED="1697509772561" TEXT="verify_WaterLevel">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1698934474047" FOLDED="true" ID="ID_774197123" MODIFIED="1698970217305" TEXT="verify_Significance">
<linktarget COLOR="#1990d6" DESTINATION="ID_774197123" ENDARROW="Default" ENDINCLINATION="589;-82;" ID="Arrow_ID_644878733" SOURCE="ID_1030078999" STARTARROW="None" STARTINCLINATION="-1097;92;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1698947582439" ID="ID_622394306" MODIFIED="1698963261235" TEXT="erweiterter Zustand per API sichtbar">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1698947635568" ID="ID_1195635801" MODIFIED="1698963396987" TEXT="API zum Freischalten/Verwerfen per ManifestationID"/>
<node COLOR="#435e98" CREATED="1698947694025" ID="ID_1628108286" MODIFIED="1698963412509" TEXT="obsoletes / nicht freigeschaltes Head erkennbar"/>
<node COLOR="#435e98" CREATED="1698947733092" ID="ID_1461678295" MODIFIED="1698963425188" TEXT="pr&#xfc;fen Compulsory-Verletzung auf Queue-Head"/>
</node>
<node COLOR="#338800" CREATED="1697509780561" ID="ID_858986653" MODIFIED="1697509782527" TEXT="verify_stability">
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1697509794959" HGAP="42" ID="ID_1096817467" MODIFIED="1697509843296" TEXT="might be implementation-defined behaviour" VSHIFT="2">
<font NAME="SansSerif" SIZE="11"/>
<icon BUILTIN="clanbomber"/>
</node>
</node>
<node COLOR="#338800" CREATED="1697509788872" ID="ID_1245618573" MODIFIED="1697509790525" TEXT="verify_isDue">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1688336794355" FOLDED="true" ID="ID_1705923970" MODIFIED="1698970227851" TEXT="SchedulerCommutator_test">
<icon BUILTIN="button_ok"/>
<node CREATED="1688337141875" ID="ID_1442397948" MODIFIED="1697552361129" TEXT="&#xbb;Layer-2&#xab; :  Activity execution">
<icon BUILTIN="info"/>
</node>
<node COLOR="#435e98" CREATED="1697473097086" ID="ID_236233579" MODIFIED="1697662397960" TEXT="Aufgaben">
<icon BUILTIN="yes"/>
<node COLOR="#338800" CREATED="1697483439491" ID="ID_20743819" MODIFIED="1697643526449" TEXT="die Bestandteile des API abdecken">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1697483458376" ID="ID_1335346824" MODIFIED="1697643531581" TEXT="das GroomingToken">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1697483469919" ID="ID_1121885008" MODIFIED="1697643531582" TEXT="Logik f&#xfc;r Queue-Zugriff">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1697571773963" ID="ID_1386234233" MODIFIED="1697643531582" TEXT="Ausf&#xfc;hren eine Activity-Kette">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1697571745624" ID="ID_599597531" MODIFIED="1697643531582" TEXT="Entscheidung ob direkt ausgef&#xfc;hrt wird">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1697473111557" FOLDED="true" ID="ID_750298563" MODIFIED="1697662523001" TEXT="Bestandteile des Work-Funktors direkt verbinden">
<icon BUILTIN="button_ok"/>
<node CREATED="1697484212735" ID="ID_853921255" MODIFIED="1697484238920" TEXT="Ma&#xdf;gabe: korrekte Verschaltung der ExecCtx-&#x3bb;">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1697484623469" ID="ID_1364042662" MODIFIED="1697484634775" TEXT="hier noch kein geschlossenes Ende-zu-Ende"/>
<node CREATED="1697484240696" ID="ID_1718523921" MODIFIED="1697484965787" TEXT="also einen hinreichend komplexen Term in die Instruct-Queue stellen"/>
<node CREATED="1697484725655" ID="ID_246292556" MODIFIED="1697484730138" TEXT="das Grooming-Token erlangen"/>
<node CREATED="1697484656288" ID="ID_1076701414" MODIFIED="1697553378979" TEXT="Activity aus der findWork-Funktion herausholen">
<arrowlink COLOR="#718daf" DESTINATION="ID_438556046" ENDARROW="Default" ENDINCLINATION="-261;714;" ID="Arrow_ID_1821254034" STARTARROW="None" STARTINCLINATION="372;24;"/>
</node>
<node CREATED="1697484919260" ID="ID_256219082" MODIFIED="1697484975618" TEXT="diese in den POST-Eingang geben"/>
<node CREATED="1697485021536" ID="ID_473846960" MODIFIED="1697485038425" TEXT="&#x27f9; Kette mu&#xdf; komplett durchlaufen"/>
<node CREATED="1697485039349" ID="ID_393821740" MODIFIED="1697485047472" TEXT="&#x27f9; GroomingToken mu&#xdf; gedropped werden"/>
</node>
<node COLOR="#338800" CREATED="1697473133474" FOLDED="true" ID="ID_1452561509" MODIFIED="1697662515411" TEXT="high-level-Schnittstelle zur Planung kl&#xe4;ren">
<icon BUILTIN="button_ok"/>
<node CREATED="1697483606913" ID="ID_315948316" MODIFIED="1697483617085" TEXT="geh&#xf6;rt eigentlich nicht hierher"/>
<node CREATED="1697483617691" ID="ID_1269032096" MODIFIED="1697483624678" TEXT="es handelt sich um den POST-Eingang"/>
<node CREATED="1697484847247" ID="ID_441483633" MODIFIED="1697484871392" TEXT="zusammen mit dem (bereits konstruierten) ActivityLang-Term-Builer"/>
<node COLOR="#435e98" CREATED="1697485132481" ID="ID_1157256654" MODIFIED="1697493645751">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      offen: wie erfolgt hier der <i>&#187;Seed&#171; </i>?
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="help"/>
<node CREATED="1697485169820" ID="ID_372957466" MODIFIED="1697485263308" TEXT="wenigstens eine Activity mu&#xdf; von au&#xdf;en kommen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      typischerweise ist das eine Planungs-Activity, also ein activity::Term::META_JOB
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#435e98" CREATED="1697485275366" ID="ID_1311095701" MODIFIED="1697493562167" TEXT="spielt es &#xfc;berhaupt eine Rolle, da&#xdf; sie &#x201e;von au&#xdf;en&#x201c; kommt?">
<icon BUILTIN="help"/>
<node CREATED="1697485325431" ID="ID_9815483" MODIFIED="1697485338017" TEXT="im Extermfall k&#xf6;nnte das in Job-Ausf&#xfc;hrung m&#xfc;nden"/>
<node CREATED="1697485346020" ID="ID_657727930" MODIFIED="1697485349319" TEXT="und zwar wenn....">
<node CREATED="1697485350683" ID="ID_264150224" MODIFIED="1697485356918" TEXT="das GroomingToken erlangt werden kann"/>
<node CREATED="1697485382455" ID="ID_1769287316" MODIFIED="1697485401537" TEXT="die Job-Planung etwas f&#xfc;r &#x201e;sofort jetzt&#x201c; einplant"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1697485403636" ID="ID_762107196" MODIFIED="1697493508222" TEXT="&#x27f9; Konsequenz: stets R&#xfc;ckkehr am Ende der Kette"/>
<node CREATED="1697485465076" ID="ID_1682905763" MODIFIED="1697493655398" TEXT="ein Worker w&#xfc;rde dann halt gleich wieder auf der Matte stehen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...und w&#252;rde dadurch dann nach dem Meta-Job auch gleich noch den ersten Frame-Job ausf&#252;hren, was aber genau so auch w&#252;nschenswert ist
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1697485511390" ID="ID_1983862774" MODIFIED="1697493692458" TEXT="dagegen ein externer Aktor beim Start des Playback macht nur einen Aufruf">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...was <i>schlimmstenfalls</i>&#160;dazu f&#252;hrt, da&#223; er direkt den ersten Planungs-Chunk ausf&#252;hrt
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#8394a5" DESTINATION="ID_1990404252" ENDARROW="Default" ENDINCLINATION="291;0;" ID="Arrow_ID_1662229980" STARTARROW="None" STARTINCLINATION="-308;11;"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1697493518500" ID="ID_1312726558" MODIFIED="1697493560764" TEXT="mit dieser L&#xf6;sung sind externe Aufrufe problemlos integriert">
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1697493572685" ID="ID_600487672" MODIFIED="1697493644563" TEXT="Fazit">
<icon BUILTIN="forward"/>
<node CREATED="1697493609672" ID="ID_1260482318" MODIFIED="1697662494396" TEXT="Render-Job bauen">
<icon BUILTIN="full-1"/>
</node>
<node CREATED="1697493613575" ID="ID_1356997062" MODIFIED="1697493641246" TEXT="diesen &#xfc;ber den POST-Eingang einspielen">
<icon BUILTIN="full-2"/>
</node>
<node CREATED="1697493632244" ID="ID_1990404252" MODIFIED="1697493692458" TEXT="gl&#xfc;cklich sein">
<linktarget COLOR="#8394a5" DESTINATION="ID_1990404252" ENDARROW="Default" ENDINCLINATION="291;0;" ID="Arrow_ID_1662229980" SOURCE="ID_1983862774" STARTARROW="None" STARTINCLINATION="-308;11;"/>
<icon BUILTIN="ksmiletris"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1697493746773" ID="ID_832660674" MODIFIED="1697493767604" TEXT="der Scheduler-Service k&#xf6;nnte daf&#xfc;r ein kompakteres API bereitstellen">
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1697560612176" ID="ID_1970152549" MODIFIED="1697662384898" TEXT="F&#xe4;lle">
<node COLOR="#338800" CREATED="1697560628310" ID="ID_670606112" MODIFIED="1697674910900" TEXT="demonstrateSimpleUsage">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1697560505486" FOLDED="true" ID="ID_1321080717" LINK="#ID_409935766" MODIFIED="1697571165841" TEXT="verify_GroomingToken">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1697567790616" ID="ID_1691764279" MODIFIED="1697567807166" TEXT="API-Reaktion direkt im aktuellen Thread verifizieren">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1697567807797" ID="ID_727144222" MODIFIED="1697571095208" TEXT="Multithread-Exclusion pr&#xfc;fen">
<icon BUILTIN="button_ok"/>
<node CREATED="1697570731407" ID="ID_1686773037" MODIFIED="1697570736338" TEXT="mit / ohne Test"/>
<node CREATED="1697570737358" ID="ID_1684442461" MODIFIED="1697571093390" TEXT="microbenchmark verwenden">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1697570844041" ID="ID_744923834" MODIFIED="1697570856555" TEXT="100 Wiederholungen in 20 Threads"/>
<node CREATED="1697570748133" ID="ID_1723527988" MODIFIED="1697571093396" TEXT="Ergebnisse sind sehr deutlich">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <ul>
      <li>
        ohne Schutz braucht die Operation &#8709; 600&#181;s (bei 500&#181;s Schlafpause) und die Checksumme ist viel zu klein (~6000 statt wie erwartet 99000)
      </li>
      <li>
        mit Schutz braucht die Operation im Schnitt 10ms und die Summe 0...N-1 stimmt exakt
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="list"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1697560511607" FOLDED="true" ID="ID_764686457" LINK="#ID_1453351337" MODIFIED="1697585897682" TEXT="verify_DispatchDecision">
<icon BUILTIN="button_ok"/>
<node CREATED="1697590592976" ID="ID_404768054" MODIFIED="1697590611320" TEXT="brauche bequeme L&#xf6;sung um das GroomingToken zu blocken">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#5b280f" CREATED="1697590612637" ID="ID_1060454930" MODIFIED="1697590629155" TEXT="Manipulation einbauen">
<font NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#338800" CREATED="1697590630266" ID="ID_572620103" MODIFIED="1697590681454" TEXT="besser Hilfsfunktion die einen blocker-Thread verwaltet">
<linktarget COLOR="#90adb5" DESTINATION="ID_572620103" ENDARROW="Default" ENDINCLINATION="218;11;" ID="Arrow_ID_1616847265" SOURCE="ID_1685796091" STARTARROW="None" STARTINCLINATION="246;26;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1697560535930" FOLDED="true" ID="ID_849370574" LINK="#ID_438556046" MODIFIED="1697594486097" TEXT="verify_findWork">
<icon BUILTIN="button_ok"/>
<node CREATED="1697585964522" ID="ID_1835507068" MODIFIED="1697585970582" TEXT="Szenarien">
<icon BUILTIN="list"/>
<node COLOR="#435e98" CREATED="1697586050195" ID="ID_1746743909" MODIFIED="1697587479840" TEXT="leere Queue &#x27f9; nix"/>
<node COLOR="#435e98" CREATED="1697586511110" ID="ID_985026796" MODIFIED="1697587481399" TEXT="zuk&#xfc;nftige Activity &#x27f9; nix"/>
<node COLOR="#435e98" CREATED="1697586546716" ID="ID_2405594" MODIFIED="1697587482327" TEXT="f&#xe4;llige Activity &#x27f9; gefunden"/>
<node COLOR="#435e98" CREATED="1697586590178" ID="ID_278111200" MODIFIED="1697587484628" TEXT="Activity schon in der Queue &#x27f9; gefunden"/>
<node COLOR="#435e98" CREATED="1697586605452" ID="ID_133472987" MODIFIED="1697590583834" TEXT="mehrere Activities &#x27f9; die &#xe4;lteste gefunden"/>
<node COLOR="#435e98" CREATED="1697586652526" ID="ID_1685796091" MODIFIED="1697590686734" TEXT="kein GroomingToken &#x27f9; nix">
<arrowlink COLOR="#90adb5" DESTINATION="ID_572620103" ENDARROW="Default" ENDINCLINATION="218;11;" ID="Arrow_ID_1616847265" STARTARROW="None" STARTINCLINATION="246;26;"/>
</node>
</node>
<node COLOR="#338800" CREATED="1697594466088" ID="ID_1087439264" MODIFIED="1697594474623" TEXT="einfache Implementierung: funktioniert">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1698934474047" FOLDED="true" ID="ID_340948432" MODIFIED="1698970218992" TEXT="verify_Significance">
<linktarget COLOR="#23a89d" DESTINATION="ID_340948432" ENDARROW="Default" ENDINCLINATION="589;-82;" ID="Arrow_ID_1678021866" SOURCE="ID_1030078999" STARTARROW="None" STARTINCLINATION="-1097;92;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1698947608180" ID="ID_935784796" MODIFIED="1698947626950" TEXT="Queue-Processing verwirft abgelaufene Tasks"/>
<node CREATED="1698947694025" ID="ID_1869538175" MODIFIED="1698947727576" TEXT="nicht freigeschalte Manifestation wird unterdr&#xfc;ckt"/>
<node CREATED="1698966580969" ID="ID_1199341321" MODIFIED="1698966601172" TEXT="compulsory Activity blockt das automatische Verwerfen"/>
</node>
<node COLOR="#338800" CREATED="1697560546952" FOLDED="true" ID="ID_1326942653" MODIFIED="1697641948262" TEXT="verify_postDispatch">
<icon BUILTIN="button_ok"/>
<node CREATED="1697630618833" ID="ID_1032090324" MODIFIED="1697630748734" TEXT="Szenarien">
<linktarget COLOR="#9ca0a6" DESTINATION="ID_1032090324" ENDARROW="Default" ENDINCLINATION="-719;-92;" ID="Arrow_ID_1412557043" SOURCE="ID_1337049621" STARTARROW="None" STARTINCLINATION="-335;509;"/>
<icon BUILTIN="list"/>
<node COLOR="#435e98" CREATED="1697630760771" ID="ID_1390673717" MODIFIED="1697639813983" TEXT="keine Activity &#x27f9; kein Effekt"/>
<node COLOR="#435e98" CREATED="1697630796057" ID="ID_118687407" MODIFIED="1697639813982" TEXT="Activity in time &#x27f9; Aktivierung"/>
<node COLOR="#435e98" CREATED="1697630849573" ID="ID_508584323" MODIFIED="1697639813982" TEXT="Activity planned &#x27f9; Priority-Queue"/>
<node COLOR="#435e98" CREATED="1697630940709" ID="ID_338527854" MODIFIED="1697639813981" TEXT="kein Grooming &#x27f9; Instruct-Queue"/>
</node>
<node CREATED="1697631061046" ID="ID_1383947254" MODIFIED="1697636526674" TEXT="Instrumentierung">
<icon BUILTIN="info"/>
<node COLOR="#338800" CREATED="1697631069317" ID="ID_1294984944" MODIFIED="1697636528522" TEXT="verwende Activity-Detector">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1697631076959" ID="ID_1560926553" MODIFIED="1697636530700" TEXT="verwende ActivityProbe als Test-Activity">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1697636534920" ID="ID_148488011" MODIFIED="1697641946005" TEXT="Match auf Event-Log">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1697639822205" ID="ID_182534070" MODIFIED="1697641946781" TEXT="Queue-Zustand pr&#xfc;fen">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1697560591659" FOLDED="true" ID="ID_1581648425" MODIFIED="1697662380188" TEXT="integratedWorkCycle">
<icon BUILTIN="button_ok"/>
<node CREATED="1697643554969" ID="ID_136268123" MODIFIED="1697643896607" TEXT="Ma&#xdf;gabe">
<icon BUILTIN="yes"/>
<node CREATED="1697643566840" ID="ID_1881707348" MODIFIED="1697643573858" TEXT="Perspektive ist Layer-2"/>
<node CREATED="1697643574446" ID="ID_876825377" MODIFIED="1697643596396">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      aber <i>das ganze Geschehen </i>einmal durchspielen
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1697643597068" ID="ID_336540433" MODIFIED="1697643621773" TEXT="...vom Planen eines Jobs bis zur Ausf&#xfc;hrung"/>
</node>
<node CREATED="1697643626311" ID="ID_1649121610" MODIFIED="1697643898765" TEXT="Instrumentierung">
<icon BUILTIN="info"/>
<node CREATED="1697643634391" ID="ID_1274469319" MODIFIED="1697643648088" TEXT="BlockFlow-Allokator direkt verwenden"/>
<node CREATED="1697643658251" ID="ID_1960837678" MODIFIED="1697643676141" TEXT="das Thema &#xbb;Zeit&#xab; wird hier ausgeblendet">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1697643680641" ID="ID_158566307" MODIFIED="1697643705314" TEXT="ActivityDetektor zur Verfolgung der Abl&#xe4;ufe"/>
<node CREATED="1697643707245" ID="ID_33409746" MODIFIED="1697643729333" TEXT="aber: bereits funktionale Vertrahtung wie im Scheduler">
<node COLOR="#5b280f" CREATED="1697643768189" ID="ID_544635778" MODIFIED="1697658700066" TEXT="&#x3bb;-post &#x27f6; postDispatch()">
<icon BUILTIN="button_cancel"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1697658719661" HGAP="30" ID="ID_1080504984" MODIFIED="1697658826222" TEXT="(wird f&#xfc;r diesen Testfall gar nicht gebraucht)" VSHIFT="4">
<edge COLOR="#7c360f" STYLE="sharp_linear" WIDTH="2"/>
<font NAME="SansSerif" SIZE="10"/>
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node CREATED="1697643768189" ID="ID_1175399919" MODIFIED="1697643850309" TEXT="&#x3bb;-work &#x27f6; dropGroomingToken()">
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1697658719661" HGAP="30" ID="ID_1422948623" MODIFIED="1697658860972" TEXT="verifiziert Grooming-Token - Handhabung" VSHIFT="4">
<edge COLOR="#7c360f" STYLE="sharp_linear" WIDTH="2"/>
<font NAME="SansSerif" SIZE="10"/>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node CREATED="1697643873588" ID="ID_1914496998" MODIFIED="1697644383309">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Activity-Term pr&#228;parieren wie im <font face="Monospaced" color="#333333">SchedulerActivity_test::</font><font face="Monospaced" color="#020080"><b>scenario_RenderJob</b></font><font face="Monospaced" color="#333333">()</font>
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#338800" CREATED="1697645187303" ID="ID_225836126" MODIFIED="1697662378579" TEXT="Verifikation">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1697645198038" ID="ID_684515169" MODIFIED="1697645209458" TEXT="Szenario in Ursprungs-Form l&#xe4;uft durch wie erwartet">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1697645210335" ID="ID_1557850384" MODIFIED="1697662622362" TEXT="aktuelle Scheduler-Zeit manipulierbar machen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1697645222818" ID="ID_1215667724" MODIFIED="1697662366750" TEXT="innere Verdrahtungen im ExecutionCtx einbauen">
<icon BUILTIN="button_ok"/>
<node CREATED="1697657638874" ID="ID_1235782778" MODIFIED="1697657728816" TEXT="auch daf&#xfc;r gibts bereits ein Beispiel">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      <font color="#333333" face="Monospaced">SchedulerActivity_test::</font><font color="#020080" face="Monospaced"><b>scenario_Notification</b></font><font color="#333333" face="Monospaced">()</font>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node COLOR="#3d3c78" CREATED="1697657742722" ID="ID_1237025197" MODIFIED="1697657787311" TEXT="(bin ich froh da&#xdf; ich mir den Detector so gut ausgestattet habe)">
<font NAME="SansSerif" SIZE="9"/>
</node>
</node>
<node COLOR="#338800" CREATED="1697645245663" ID="ID_685915287" MODIFIED="1697662373341" TEXT="pr&#xfc;fen: geht erst mal in die Queue">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1697645256903" ID="ID_230126414" MODIFIED="1697662374674" TEXT="Zeit auf sp&#xe4;ter weiterschalten">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1697645265733" ID="ID_1757939624" MODIFIED="1697662375611" TEXT="pr&#xfc;fen: bekomme den gebauten Term wieder zur&#xfc;ck">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1697645289665" ID="ID_1827770478" MODIFIED="1697662376362" TEXT="pr&#xfc;fen: Ausf&#xfc;hrung l&#xe4;uft komplett durch">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1697662641710" ID="ID_150256812" MODIFIED="1697662648959" TEXT="pr&#xfc;fen: GroomingToken dropped">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1698072872306" ID="ID_488605324" MODIFIED="1699653633714" TEXT="SchedulerLoadControl_test">
<linktarget COLOR="#56a5a9" DESTINATION="ID_488605324" ENDARROW="Default" ENDINCLINATION="457;-68;" ID="Arrow_ID_1794430254" SOURCE="ID_288711039" STARTARROW="None" STARTINCLINATION="-752;0;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1698072995729" ID="ID_130445310" MODIFIED="1698073015042" TEXT="Implementierungs-Details der Load-Control-Mechanismen">
<icon BUILTIN="info"/>
</node>
<node CREATED="1698073016039" ID="ID_1742616307" MODIFIED="1698073017507" TEXT="F&#xe4;lle">
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1699653621108" ID="ID_1120118362" MODIFIED="1699653631022" TEXT="simpleUsage fehlt noch">
<icon BUILTIN="bell"/>
</node>
<node COLOR="#338800" CREATED="1698073017869" ID="ID_916925082" MODIFIED="1698243342884" TEXT="classifyHorizon">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1698073022938" ID="ID_1539653684" MODIFIED="1698073034749" TEXT="tendNextActivity">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1698243350367" ID="ID_997422004" MODIFIED="1698243362335" TEXT="classifyCapacity">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1698243357550" ID="ID_458370410" MODIFIED="1698243362335" TEXT="scatteredReCheck">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1698702871326" FOLDED="true" ID="ID_1985241613" MODIFIED="1698715174256" TEXT="indicateAverageLoad">
<linktarget COLOR="#6a9eb2" DESTINATION="ID_1985241613" ENDARROW="Default" ENDINCLINATION="1958;-153;" ID="Arrow_ID_13582151" SOURCE="ID_1863816756" STARTARROW="None" STARTINCLINATION="598;41;"/>
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1698711912906" HGAP="45" ID="ID_1431349753" MODIFIED="1698715153652" TEXT="der Test ist schwierig einzurichten" VSHIFT="-3">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Und zwar weil wir
    </p>
    <ul>
      <li>
        ein Moving-Average im Spiel haben, das es sehr schwer macht, bestimmte Werte zu erzielen
      </li>
      <li>
        das Moving-Average in einer privaten Variablen steckt (ist auch gut so, da es ein Atomic sein mu&#223; wegen concurrency)
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#435e98" CREATED="1698712060968" HGAP="29" ID="ID_16893514" MODIFIED="1698715151332" TEXT="die beiden Belange trennen">
<icon BUILTIN="yes"/>
<node COLOR="#338800" CREATED="1698712079191" ID="ID_860323615" MODIFIED="1698715158820" TEXT="f&#xfc;hre einen Setter ein f&#xfc;r den Test">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Alternative w&#228;re, den Test zum Friend zu machen. Das will ich aber m&#246;glichst nicht zur Gewohnheit werden lassen. Hier k&#246;nnte man das umgehen, da wegen der Concurrency ein Setter sogar sinnvoll ist: der w&#252;rde dann einen atomic-swap machen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1698712234889" ID="ID_1843404710" MODIFIED="1698715161154" TEXT="dann kann man den Moving-Average einmal isoliert demonstrieren">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1688336835085" ID="ID_1753236898" MODIFIED="1698808463741" TEXT="SchedulerService_test">
<linktarget COLOR="#678999" DESTINATION="ID_1753236898" ENDARROW="Default" ENDINCLINATION="-719;-67;" ID="Arrow_ID_197736729" SOURCE="ID_862845398" STARTARROW="None" STARTINCLINATION="-295;159;"/>
<icon BUILTIN="pencil"/>
<node CREATED="1688337200875" ID="ID_1269476607" MODIFIED="1697732840741" TEXT="Scheduler Component Integration End-to-End">
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697473158929" ID="ID_505069585" MODIFIED="1697493162215" TEXT="Aufgaben">
<icon BUILTIN="yes"/>
<node COLOR="#338800" CREATED="1697736343993" ID="ID_1891808134" MODIFIED="1699653661973" TEXT="das Scheduler-API abdecken">
<arrowlink COLOR="#3603c2" DESTINATION="ID_996573918" ENDARROW="Default" ENDINCLINATION="-817;60;" ID="Arrow_ID_226641198" STARTARROW="None" STARTINCLINATION="-848;-40;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1698521839789" ID="ID_1664026043" MODIFIED="1698622639880" TEXT="Lebenszyklus: start / stop"/>
<node COLOR="#435e98" CREATED="1698622641090" ID="ID_286677192" MODIFIED="1698866958527" TEXT="Load-Faktor"/>
<node COLOR="#435e98" CREATED="1698622658797" ID="ID_383756714" MODIFIED="1699498697034" TEXT="Job einstellen"/>
<node COLOR="#5b280f" CREATED="1698622685538" ID="ID_1780968695" MODIFIED="1699653643314" TEXT="Meta-Job (f&#xfc;r CalcStream)">
<icon BUILTIN="button_cancel"/>
</node>
</node>
<node COLOR="#338800" CREATED="1697484506891" FOLDED="true" ID="ID_1292738036" MODIFIED="1698448216625" TEXT="den kompletten Work-Funktor durchspielen">
<linktarget COLOR="#56a5a9" DESTINATION="ID_1292738036" ENDARROW="Default" ENDINCLINATION="286;-465;" ID="Arrow_ID_367470516" SOURCE="ID_288711039" STARTARROW="None" STARTINCLINATION="-752;0;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1698243387222" ID="ID_1151484757" MODIFIED="1698243397453" TEXT="und zwar direkten Aufruf, ohne WorkForce"/>
<node CREATED="1698243399946" ID="ID_525069730" MODIFIED="1698243412341" TEXT="es kann zu Sleeps kommen">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1698243426549" FOLDED="true" ID="ID_1975979569" MODIFIED="1698448212804" TEXT="das bedeutet: Zeitmessung">
<icon BUILTIN="clock"/>
<node CREATED="1698269582160" ID="ID_211702790" MODIFIED="1698269611010" TEXT="und Pr&#xfc;fen unscharfer Zeitabst&#xe4;nde">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1698269686974" ID="ID_586911111" MODIFIED="1698269697257" TEXT="wie viel Genauigkeit kann man da &#xfc;berhaupt erwarten?"/>
<node CREATED="1698269698148" ID="ID_220147663" MODIFIED="1698269740149" TEXT="RealClock::wasRecently  setzt 1ms an">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...und das erscheint ad&#228;quat f&#252;r moderne Maschinen
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1698269741040" ID="ID_868809913" MODIFIED="1698448202804" TEXT="verusche mal mein Gl&#xfc;ck mit ~ 500&#xb5;s">
<icon BUILTIN="bell"/>
</node>
</node>
<node CREATED="1698269618101" ID="ID_561925985" MODIFIED="1698269648550" TEXT="...das macht diesen Test ziemlich fragw&#xfc;rdig">
<icon BUILTIN="broken-line"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1698269656739" ID="ID_851832685" MODIFIED="1698448182187" TEXT="mu&#xdf; auf sehr deutliche Zeitungerschiede abzielen">
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1698243664309" ID="ID_654541946" MODIFIED="1698448102750" TEXT="was kann man sinnvollerweise pr&#xfc;fen?">
<icon BUILTIN="help"/>
<node COLOR="#435e98" CREATED="1698243697817" ID="ID_83311166" MODIFIED="1698282740280" TEXT="eine eingespiele Activity wird aufgerufen"/>
<node COLOR="#435e98" CREATED="1698243756225" ID="ID_489965107" MODIFIED="1698282742903" TEXT="was f&#xe4;llig ist, wird direkt vom post() aufgerufen"/>
<node COLOR="#435e98" CREATED="1698243756225" ID="ID_831882516" MODIFIED="1698282748223" TEXT="was f&#xe4;llig wurde, wird unverz&#xf6;gert aufgerufen"/>
<node COLOR="#435e98" CREATED="1698243927930" ID="ID_1326757783" MODIFIED="1698445119916" TEXT="die Zeit wird in etwa eingehalten"/>
<node COLOR="#435e98" CREATED="1698243794737" ID="ID_1290805695" MODIFIED="1698448111059" TEXT="das Delay-Regime">
<icon BUILTIN="forward"/>
<node COLOR="#338800" CREATED="1698243828655" ID="ID_763249245" MODIFIED="1698377479489" TEXT="Abstand davor &#x27f6; delay">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1698243897342" ID="ID_1722957398" MODIFIED="1698377481239" TEXT="Abstand danch &#x27f6; delay">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1698243973380" ID="ID_664100190" MODIFIED="1698448098679" TEXT="tendedNext &#x27f6; re-Fokussiert">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1698245002134" ID="ID_1016395299" MODIFIED="1698448116126" TEXT="nichts danach &#x27f6; re-Distribution">
<linktarget COLOR="#758fa6" DESTINATION="ID_1016395299" ENDARROW="Default" ENDINCLINATION="302;-22;" ID="Arrow_ID_1135387860" SOURCE="ID_28419292" STARTARROW="None" STARTINCLINATION="246;369;"/>
<linktarget COLOR="#76a2bf" DESTINATION="ID_1016395299" ENDARROW="Default" ENDINCLINATION="334;27;" ID="Arrow_ID_318616986" SOURCE="ID_506319711" STARTARROW="None" STARTINCLINATION="186;-10;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1698245073987" ID="ID_1953896637" MODIFIED="1698377472196" TEXT="leer &#x27f6; Schlaf">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1698245511656" ID="ID_1594716553" MODIFIED="1698521746415" TEXT="Scaffolding">
<font NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="list"/>
<node CREATED="1698245550915" ID="ID_1897821225" MODIFIED="1698245557078" TEXT="verwende ActivityDetector"/>
<node CREATED="1698245558169" ID="ID_1427917719" MODIFIED="1698245570820" TEXT="aber Problem: an die aktuelle Aufruzeit kommen"/>
<node COLOR="#5b280f" CREATED="1698245571408" FOLDED="true" ID="ID_1935211976" MODIFIED="1698245821927" TEXT="Activity::TICK und den execution-Ctx riggen">
<icon BUILTIN="button_cancel"/>
<node CREATED="1698245823278" ID="ID_1225266983" MODIFIED="1698245858822" TEXT="geht nicht ... diese Hintert&#xfc;r ist ZU">
<icon BUILTIN="stop-sign"/>
</node>
<node CREATED="1698245835997" ID="ID_43172566" MODIFIED="1698245856760" TEXT="wir haben hier einen fest auf den Scheduler verdrahteten ExecutionCtx">
<icon BUILTIN="info"/>
</node>
</node>
<node COLOR="#338800" CREATED="1698246249997" FOLDED="true" ID="ID_221908219" MODIFIED="1698269566601" TEXT="mu&#xdf; mir die now-Zeit in ActivityProbe speichern">
<icon BUILTIN="button_ok"/>
<node CREATED="1698246275186" ID="ID_389803917" MODIFIED="1698246286348" TEXT="bei jedem Aufruf im Objekt speichern"/>
<node CREATED="1698246286912" ID="ID_1611070007" MODIFIED="1698246292046" TEXT="Zugriffs-Funktion schaffen"/>
</node>
<node COLOR="#338800" CREATED="1698273941216" FOLDED="true" ID="ID_206667469" MODIFIED="1698284642804" TEXT="Kurznotation entwickeln zum Formulieren der Testf&#xe4;lle">
<icon BUILTIN="button_ok"/>
<node CREATED="1698273959952" ID="ID_1633573295" MODIFIED="1698273977867" TEXT="lokale Abk&#xfc;rzungs-&#x3bb;"/>
<node CREATED="1698273979493" ID="ID_1574422283" MODIFIED="1698273987600" TEXT="Zeitmessung fest einbauen"/>
<node CREATED="1698273988136" ID="ID_1921986548" MODIFIED="1698274003262" TEXT="Werte in immer gleiche Variable &#x201e;abwerfen&#x201c;"/>
<node COLOR="#338800" CREATED="1698284627849" ID="ID_67028891" MODIFIED="1698284640378" TEXT="Kurzzusammenfassung auf COUT">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node CREATED="1698284661806" ID="ID_1944621845" MODIFIED="1698284671052" TEXT="Beobachtungen">
<icon BUILTIN="forward"/>
<node CREATED="1698284676624" ID="ID_298507876" MODIFIED="1698284714617" TEXT="sleep_for() schl&#xe4;ft meist mindestens 100&#xb5;s l&#xe4;nger"/>
<node CREATED="1698284725963" ID="ID_1453000254" MODIFIED="1698284777544" TEXT="das h&#xe4;ngt &#xfc;berhaupt nicht mit den Laufzeiten zusammen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      also optimized vs. Debug-Build; ja man sieht diesen Unterschied im &quot;slip&quot;, weil einfach die Verarbeitung l&#228;nger dauert
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#435e98" CREATED="1698285072189" FOLDED="true" ID="ID_1552477309" MODIFIED="1698448138291" TEXT="Logik-Fehler mit tendNext">
<icon BUILTIN="broken-line"/>
<node CREATED="1698285085530" ID="ID_991445216" MODIFIED="1698285104841">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      habe generell hier den Fall der <i>leeren Queue </i>nicht bedacht
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1698285116679" ID="ID_496699258" MODIFIED="1698285143092" TEXT="Logik versucht auf Time::NEVER zu warten">
<icon BUILTIN="ksmiletris"/>
</node>
<node COLOR="#435e98" CREATED="1698285158209" ID="ID_506319711" MODIFIED="1698377451936" TEXT="korrekt w&#xe4;re: per Nach-Verz&#xf6;gerung die Schl&#xe4;fer umverteilen">
<arrowlink COLOR="#76a2bf" DESTINATION="ID_1016395299" ENDARROW="Default" ENDINCLINATION="334;27;" ID="Arrow_ID_318616986" STARTARROW="None" STARTINCLINATION="186;-10;"/>
<icon BUILTIN="forward"/>
<node COLOR="#338800" CREATED="1698377318108" ID="ID_362432031" MODIFIED="1698377343794" TEXT="tendedNext mu&#xdf; explizit die Rand-Zeiten korrekt ausschlie&#xdf;en">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1698377347648" ID="ID_1378288233" MODIFIED="1698377384255" TEXT="au&#xdf;erdem wird outgoingCapacity stets zuletzt auf WORKTIME geschickt">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1698377369141" ID="ID_918735881" MODIFIED="1698377383438" TEXT="und in scatteredDelay ein offset sinnvoll eingerechtet">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1698284783980" FOLDED="true" ID="ID_40062147" MODIFIED="1698371921286" TEXT="warum sehe ich auch in den &#xbb;leer&#xab;-F&#xe4;llen einen delay ~ 100&#xb5;s ?">
<font NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="help"/>
<node CREATED="1698284852474" ID="ID_1979114462" MODIFIED="1698284871452" TEXT="Beispiel: der Fall &#xbb;Abstand danach&#xab;"/>
<node CREATED="1698284873176" ID="ID_408802871" MODIFIED="1698284905711" TEXT="in diesen F&#xe4;llen erwarte ich keinerlei sleep-Aufruf">
<node CREATED="1698284916562" ID="ID_78118685" MODIFIED="1698284962495" TEXT="der n&#xe4;chste ist schon f&#xe4;llig &#x27fc; DISPATCH"/>
<node CREATED="1698284926059" ID="ID_1262945790" MODIFIED="1698284978965" TEXT="Dispatch &#x27fc; sollte nur ca. 25&#xb5;s kosten"/>
<node CREATED="1698284937287" ID="ID_1614190627" MODIFIED="1698284953462" TEXT="danach nix &#x27fc; WAIT"/>
</node>
<node COLOR="#435e98" CREATED="1698284989240" FOLDED="true" ID="ID_787590297" MODIFIED="1698371909726" TEXT="m&#xf6;gliche Gefahren...">
<icon BUILTIN="messagebox_warning"/>
<node COLOR="#5b280f" CREATED="1698284992319" ID="ID_837253629" MODIFIED="1698371886201" TEXT="die Logik stimmt nicht und es wird doch geschlafen">
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#5b280f" CREATED="1698285004782" ID="ID_667307245" MODIFIED="1698371886200" TEXT="die Implementierung der Kette hat ein Performance-Problem">
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#338800" CREATED="1698371894587" ID="ID_735937248" MODIFIED="1698371900723" TEXT="beide explizit widerlegt">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1698287556673" FOLDED="true" ID="ID_1372932043" MODIFIED="1698371825597" TEXT="Untersuchung: instrumentieren">
<icon BUILTIN="yes"/>
<icon BUILTIN="forward"/>
<node CREATED="1698287646293" ID="ID_1871424665" MODIFIED="1698287655991" TEXT="das scatteredDelay-Verhalten ist wie erwartet"/>
<node CREATED="1698287656675" ID="ID_320386665" MODIFIED="1698287664918" TEXT="die Zeit wird im Dispatch verbraucht">
<node CREATED="1698287748455" ID="ID_1506124813" MODIFIED="1698287762817" TEXT="sehe zwei Muster: ~50&#xb5;s und &gt; 100&#xb5;s"/>
<node CREATED="1698287764965" ID="ID_940081146" MODIFIED="1698287775063" TEXT="kein nennenswerter Unterschied mit -O3"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1698290015010" ID="ID_721827843" MODIFIED="1698368154184" TEXT="was kann das sein?">
<arrowlink COLOR="#ff5e74" DESTINATION="ID_1387737580" ENDARROW="Default" ENDINCLINATION="-124;5;" ID="Arrow_ID_1118831155" STARTARROW="None" STARTINCLINATION="-4;22;"/>
<icon BUILTIN="help"/>
<node COLOR="#5b280f" CREATED="1698290023095" ID="ID_244045665" MODIFIED="1698368206320" TEXT="die Activity-Probe? Invocation kostet 25&#xb5;s">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...und das ist so auch plausibel (interessanterweise gibt es hier keinen Unterschied debug/O3 )...&#160;&#160;hier wird ein Vector bef&#252;llt und jede Menge String-Konvertierungen gemacht, und auch ein virtual call
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#e0359d" DESTINATION="ID_244045665" ENDARROW="Default" ENDINCLINATION="634;35;" ID="Arrow_ID_555943254" SOURCE="ID_1132126993" STARTARROW="None" STARTINCLINATION="-19;-136;"/>
<icon BUILTIN="broken-line"/>
<node CREATED="1698368173278" HGAP="29" ID="ID_365964235" MODIFIED="1698368213973" TEXT="Me&#xdf;fehler..." VSHIFT="-8">
<icon BUILTIN="info"/>
<node CREATED="1698368183760" ID="ID_1846329958" MODIFIED="1698368190984" TEXT="beim ersten Mal sind es 250&#xb5;s"/>
<node CREATED="1698368191812" ID="ID_1685045655" MODIFIED="1698368200935" TEXT="die n&#xe4;chsten Aufrufe kosten 42&#xb5;s"/>
</node>
</node>
<node CREATED="1698334890581" ID="ID_1143827394" MODIFIED="1698334929969" TEXT="rein reiner scatteredDelay-Aufruf ohne Dispatch: 18&#xb5;s"/>
<node CREATED="1698334982878" ID="ID_446507952" MODIFIED="1698335179829" TEXT="in einem ~50&#xb5;s-Fall dauert es ~20&#xb5;s bis Probe-activation">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      das bedeutet: in diesem Fall liegt der &#252;berwiegende Teil des extra-Aufwands vermutlich vor der Activity-Activation (weil die bekannterma&#223;en aufwendigen Log-Operationen erst nach dem Eintritt in die activation-Funktion der ActivityProbe erfolgen). ~50&#181;s bedeutet &#10233; gut die H&#228;lfte wird au&#223;erhalb aber im Dispatch verbrannt
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1698336313556" ID="ID_1829519407" MODIFIED="1698336353089" TEXT="auch andere Testf&#xe4;lle erscheinen insgesamt plausibel: scatteredDelay kostet jeweils 20&#xb5;s"/>
<node CREATED="1698336608768" ID="ID_108542402" MODIFIED="1698336641428" TEXT="die ~50&#xb5;s-F&#xe4;lle sind weitgehen stabil, die 100er-F&#xe4;lle flukturieren, sind aber stets h&#xf6;her">
<node CREATED="1698336759920" ID="ID_78621664" MODIFIED="1698336854839" TEXT="Theorie: vor den kurzen stabilen Aufrufen erfolgte unmittelbar vorher ein sleep"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1698336354388" ID="ID_1387737580" MODIFIED="1698368224270" TEXT="bleibt also definitiv aufzukl&#xe4;ren, wo die Zeit im Dispatch verbraucht wird">
<arrowlink COLOR="#fe2672" DESTINATION="ID_1378612293" ENDARROW="Default" ENDINCLINATION="63;-82;" ID="Arrow_ID_787245495" STARTARROW="None" STARTINCLINATION="238;10;"/>
<linktarget COLOR="#ff5e74" DESTINATION="ID_1387737580" ENDARROW="Default" ENDINCLINATION="-124;5;" ID="Arrow_ID_1118831155" SOURCE="ID_721827843" STARTARROW="None" STARTINCLINATION="-4;22;"/>
<font NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#338800" CREATED="1698337369511" ID="ID_267596520" MODIFIED="1698368087753" TEXT="Untersuchung post/dispatch">
<icon BUILTIN="button_ok"/>
<node CREATED="1698337396337" ID="ID_850954916" MODIFIED="1698337536065" TEXT="GroomingToken wird bisher sofort erlangt und nicht gedropped">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...wir sind noch nicht so weit (nach Plan)
    </p>
    <ul>
      <li>
        Grooming-Token soll nur per explizitem &#220;bergang geDropped werden; beide F&#228;lle sind noch nicht implementiert (work-Function und &#955;-work)
      </li>
      <li>
        dieser Test l&#228;uft im Haupt-Thread, d.h. der erste Aufruf (in dem das post() auch direkt den Dispatch macht) erlangt das Grooming-Token
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node CREATED="1698337748324" ID="ID_24250671" MODIFIED="1698337772891" TEXT="Grooming-Token-Behandlung auskommentiert &#x27f6; kein sichtbarer Effekt">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1698338028250" ID="ID_232195006" MODIFIED="1698338045574" TEXT="layer1_.getWork() ist nicht das Problem">
<icon BUILTIN="idea"/>
<node CREATED="1698338046962" ID="ID_1234104100" MODIFIED="1698338055206" TEXT="stets &lt; 10&#xb5;s"/>
<node CREATED="1698338055747" ID="ID_1169473748" MODIFIED="1698338061342" TEXT="verh&#xe4;lt sich sehr konsistent">
<node CREATED="1698338062292" ID="ID_604721995" MODIFIED="1698338080916" TEXT="der erste Aufruf kostet ~10&#xb5;s (Allokation!)"/>
<node CREATED="1698338082423" ID="ID_324188378" MODIFIED="1698338104888" TEXT="die weiteren &lt; 5&#xb5;s, oft nur 2"/>
<node CREATED="1698338106212" ID="ID_486609208" MODIFIED="1698338123606" TEXT="das erkl&#xe4;rt auch, warum der erste &quot;stabile&quot; Dispatch stets etwas l&#xe4;nger braucht"/>
</node>
</node>
<node CREATED="1698338198486" ID="ID_574393940" MODIFIED="1698338228688" TEXT="die stabilen F&#xe4;lle brauchen 46&#xb5;s im Dispatch, die anderen flukturieren 46&#xb5;s ... &gt;100&#xb5;s"/>
<node CREATED="1698363202461" ID="ID_919677379" MODIFIED="1698363240098" TEXT="&#x27f9; Hauptzweig im Detail untersuchen">
<node CREATED="1698363241543" ID="ID_1104038412" MODIFIED="1698363265551" TEXT="decideDispatchNow .... marginal ~5&#xb5;s oder weniger"/>
<node CREATED="1698363275186" ID="ID_693865088" MODIFIED="1698363286372" TEXT="enqueue: beim ersten Mal 30&#xb5;s, dann ~10&#xb5;s"/>
<node CREATED="1698363297295" ID="ID_245887528" MODIFIED="1698363305707" TEXT="ActivityLang::dispatchChain">
<node CREATED="1698363334802" ID="ID_1899875446" MODIFIED="1698363369164" TEXT="im stabilen Fall: ~45&#xb5;s / sonst mehr"/>
<node CREATED="1698363369702" ID="ID_625338504" MODIFIED="1698363755143" TEXT="der fragw&#xfc;rdige Aufwand steckt nur hier...">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1698363756532" ID="ID_1505607665" MODIFIED="1698363887123" TEXT="in jedem Scope kommen ca. 10&#xb5;s dazu &#x2014; das erscheint plausibel">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...zumal ich jetzt alles im Debug-Mode untersuche, und auch noch COUT-Statements und Clock-Aufrufe eingebaut habe
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1698363734030" ID="ID_834239605" MODIFIED="1698363894327">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      steckt in Activity::<b>activate</b>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="forward"/>
</node>
<node CREATED="1698363734030" ID="ID_1378612293" MODIFIED="1698364693054">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      steckt in Activity::<b>callHook</b>
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#ff1c0d" DESTINATION="ID_189228492" ENDARROW="Default" ENDINCLINATION="147;-184;" ID="Arrow_ID_431919133" STARTARROW="None" STARTINCLINATION="-30;57;"/>
<linktarget COLOR="#fe2672" DESTINATION="ID_1378612293" ENDARROW="Default" ENDINCLINATION="63;-82;" ID="Arrow_ID_787245495" SOURCE="ID_1387737580" STARTARROW="None" STARTINCLINATION="238;10;"/>
<icon BUILTIN="forward"/>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1698364711100" ID="ID_108118943" MODIFIED="1698364721336" TEXT="???">
<icon BUILTIN="help"/>
<icon BUILTIN="help"/>
</node>
<node CREATED="1698364726554" ID="ID_1132126993" MODIFIED="1698364804780" TEXT="ich hatte das doch auf ca 25&#xb5;s gemessen...">
<arrowlink COLOR="#e0359d" DESTINATION="ID_244045665" ENDARROW="Default" ENDINCLINATION="634;35;" ID="Arrow_ID_555943254" STARTARROW="None" STARTINCLINATION="-19;-136;"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1698364809287" ID="ID_1459395793" MODIFIED="1698364832751" TEXT="Fehler in der Anwendung des Microbenchmark: es sind 250&#xb5;s">
<icon BUILTIN="broken-line"/>
</node>
<node CREATED="1698364840371" ID="ID_1624877749" MODIFIED="1698364852005" TEXT="aber nur beim ersten Mal ... mit d&#xe4;mmert was da los ist"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1698365664716" ID="ID_787946068" MODIFIED="1698368085571" TEXT="ActivityProbe untersuchen">
<icon BUILTIN="button_ok"/>
<node CREATED="1698365702450" ID="ID_390220364" MODIFIED="1698365715993" TEXT="der erste Aufruf kostet ~250&#xb5;s"/>
<node CREATED="1698365716733" ID="ID_62593769" MODIFIED="1698365889494" TEXT="danach ein Microbenchmark: pendelt zwischen 44&#xb5;s und 37&#xb5;s &#x27f6; &#x2205;=42&#xb5;s"/>
<node CREATED="1698365907268" ID="ID_861542439" MODIFIED="1698365933463" TEXT="aber die nachfolgenden Aufrufe zeigen stets das Muster stabil / gr&#xf6;&#xdf;er schwankend"/>
<node CREATED="1698365935877" ID="ID_553351296" MODIFIED="1698365950489" TEXT="&#x27f9; es mu&#xdf; sich um einen Cache-Effekt handeln">
<node CREATED="1698365953435" ID="ID_179845408" MODIFIED="1698365963728" TEXT="insofern war die Theorie mit dem &quot;sleep&quot; vorher korrekt"/>
<node CREATED="1698365966654" ID="ID_792601273" MODIFIED="1698365980693" TEXT="wenn kurz vorher ein gleicher Aufruf war, ist die Funktion stabil"/>
<node CREATED="1698366253166" ID="ID_1905813765" MODIFIED="1698367464173">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <font face="Monospaced">|capacity=0 </font>
    </p>
    <p>
      <font face="Monospaced">+++++++++++</font><font color="#bd0000" face="Monospaced">HO: 0&#181;s</font>
    </p>
    <p>
      <font face="Monospaced">++++++++++ACT: 4&#181;s </font>
    </p>
    <p>
      <font face="Monospaced">+++++++++Post: 10&#181;s (0|+|10:dispatch) </font>
    </p>
    <p>
      <font face="Monospaced">+++++Dispatch: 17&#181;s (2|+|15) </font>
    </p>
    <p>
      <font face="Monospaced">|capacity=5 </font>
    </p>
    <p>
      <font face="Monospaced">res:2 delay=29&#181;s </font>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="list"/>
</node>
<node CREATED="1698366000951" ID="ID_1501602744" MODIFIED="1698366013225" TEXT="eine pre-Allokation im EventLog &#xe4;ndert daran auch nichts"/>
</node>
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#a50125" CREATED="1698366197981" ID="ID_189228492" MODIFIED="1698368292199" TEXT="Event-Log auskommentiert &#x27f6; RATZ-FATZ">
<linktarget COLOR="#ff1c0d" DESTINATION="ID_189228492" ENDARROW="Default" ENDINCLINATION="147;-184;" ID="Arrow_ID_431919133" SOURCE="ID_1378612293" STARTARROW="None" STARTINCLINATION="-30;57;"/>
<icon BUILTIN="broken-line"/>
<node CREATED="1698366339269" ID="ID_680875013" MODIFIED="1698366362449" TEXT="im Micro-Benchmark(200 repetitions) &#x27f6; 3&#xb5;s"/>
</node>
<node CREATED="1698366474504" ID="ID_292495776" MODIFIED="1698366493361" TEXT="Event-Log, aber nur festen String &#x27f6; 23&#xb5;s">
<node CREATED="1698366494637" ID="ID_1958920972" MODIFIED="1698366505360" TEXT="aber die Cache-Effekte sind wieder da"/>
</node>
<node CREATED="1698366708517" ID="ID_25940092" MODIFIED="1698366714384" TEXT="zum Vergleich mit -O3">
<node CREATED="1698367325817" ID="ID_678154494" MODIFIED="1698367331712" TEXT="kein Logging: 3&#xb5;s"/>
<node CREATED="1698366725646" ID="ID_1159461342" MODIFIED="1698366731449" TEXT="fester String: 22&#xb5;s">
<node CREATED="1698366776372" ID="ID_1569743039" MODIFIED="1698366781234" TEXT="+ gleiche Cache-Effekte"/>
</node>
<node CREATED="1698367363098" ID="ID_1293990863" MODIFIED="1698367375332" TEXT="mit allem : 43&#xb5;s"/>
<node CREATED="1698367382589" ID="ID_785763328" MODIFIED="1698367453717">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      einziger Unterschied: Zeiten im Call-stack addieren sich weniger auf...
    </p>
    <p>
      
    </p>
    <p>
      <font face="Monospaced">+++++++++++HO: 45&#181;s </font>
    </p>
    <p>
      <font face="Monospaced">++++++++++ACT: 50&#181;s </font>
    </p>
    <p>
      <font face="Monospaced">+++++++++Post: 52&#181;s (0|+|52:dispatch) </font>
    </p>
    <p>
      <font face="Monospaced">+++++Dispatch: 54&#181;s (0|+|54) </font>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1698367558424" ID="ID_46488042" MODIFIED="1698367603285" TEXT="Anmerkung: ich baue aber nicht die ganze Applikation from-scratch mit -O3">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...sondern nur die wenigen Translation-Units, die ich f&#252;r relevant halte. Das k&#246;nnte dann insgesamt nochmal einen Unterschied machen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#fefc4e" COLOR="#351d75" CREATED="1698368312924" ID="ID_1043330780" MODIFIED="1698368334114" TEXT="dies ist die Test-Instrumentierung + Cache-Effekte">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="idea"/>
<node COLOR="#338800" CREATED="1698368341481" ID="ID_1301549939" MODIFIED="1698368476694" TEXT="der Callgraph wurde im Detail untersucht und verh&#xe4;lt sich plausibel">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1698368360150" ID="ID_1118033823" MODIFIED="1698368483185" TEXT="die gesamte exzessive Zeit steckt im ActicityProbe">
<icon BUILTIN="idea"/>
<node CREATED="1698368425422" ID="ID_935344383" MODIFIED="1698368432896" TEXT="im Schnitt kostet ein Aufruf 43&#xb5;s"/>
<node CREATED="1698368403104" ID="ID_1488693576" MODIFIED="1698368423793" TEXT="wenn man dort das Event-Log entfernt, reduziert sich der Rest auf 3&#xb5;s"/>
<node CREATED="1698368434649" ID="ID_136517479" MODIFIED="1698368458717" TEXT="nur ein fester String ohne Zeit-Formatieren kostet 22&#xb5;s"/>
<node CREATED="1698368460513" ID="ID_1076705660" MODIFIED="1698368471860">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Optimierung hat darauf <b>keinerlei Einflu&#223;</b>
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1698448145932" ID="ID_1467908821" MODIFIED="1698448171087" TEXT="abgesehen davon: alle Timings sind jetzt plausibel">
<icon BUILTIN="bookmark"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1698448289137" ID="ID_737541011" MODIFIED="1699498701463" TEXT="einen Render-Job (high-level) schedulen">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697473158929" ID="ID_1723058065" MODIFIED="1697484548083" TEXT="vollst&#xe4;ndiger Ende-zu-Ende Test incl. WorkForce">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node CREATED="1698245695072" ID="ID_546920051" MODIFIED="1698245698507" TEXT="Test-Setup">
<node CREATED="1698245550915" ID="ID_460908396" MODIFIED="1698245557078" TEXT="verwende ActivityDetector"/>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1698245705360" ID="ID_1236877119" MODIFIED="1698245892414" TEXT="brauche Hintereingang (f&#xfc;r direkt gegebene Activities)">
<icon BUILTIN="pencil"/>
</node>
</node>
<node BACKGROUND_COLOR="#fafe99" COLOR="#fa002a" CREATED="1698275299501" ID="ID_1052614531" MODIFIED="1698275445662" TEXT="DAS DING ZUCKT">
<arrowlink COLOR="#e9fea5" DESTINATION="ID_353022740" ENDARROW="Default" ENDINCLINATION="-90;-5;" ID="Arrow_ID_187000480" STARTARROW="None" STARTINCLINATION="51;7;"/>
<font NAME="SansSerif" SIZE="16"/>
<icon BUILTIN="launch"/>
<node COLOR="#435e98" CREATED="1698275461079" HGAP="31" ID="ID_1605227309" MODIFIED="1698275499061" TEXT="erste Timings sehen doch ganz ordentlich aus..." VSHIFT="-2">
<edge COLOR="#a8fe8d"/>
<icon BUILTIN="clock"/>
<node CREATED="1698275564705" ID="ID_181492806" MODIFIED="1698275568734" TEXT="-O3">
<node CREATED="1698275570360" ID="ID_1639263149" MODIFIED="1698275580859" TEXT="leere work-Function: 2&#xb5;s"/>
<node CREATED="1698275583014" ID="ID_1884559465" MODIFIED="1698275618806" TEXT="post() einstellen &#x27f6; Dispatch: 5&#xb5;s"/>
</node>
<node CREATED="1699241559870" ID="ID_272897929" MODIFIED="1699241563925" TEXT="-O0">
<node CREATED="1699241565249" ID="ID_290905521" MODIFIED="1699241579030" TEXT="komplett-Dispatch FEED-Activity: 5&#xb5;s"/>
<node CREATED="1699241580463" ID="ID_1046781011" MODIFIED="1699241588749" TEXT="(wenn Cache hei&#xdf;)">
<font NAME="SansSerif" SIZE="10"/>
</node>
</node>
</node>
</node>
<node CREATED="1697758391611" ID="ID_124711923" MODIFIED="1697758397083" TEXT="F&#xe4;lle">
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1697758425500" ID="ID_1450418166" MODIFIED="1698448262765" TEXT="simpleUsage">
<icon BUILTIN="hourglass"/>
<node CREATED="1697758440737" ID="ID_1211803424" MODIFIED="1697758454084" TEXT="zeigt hier vor allem was man braucht"/>
<node COLOR="#338800" CREATED="1697842432420" ID="ID_1052962927" MODIFIED="1697842447753" TEXT="Scheduler l&#xe4;&#xdf;t sich instantiieren">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1698521856803" FOLDED="true" ID="ID_1548722737" MODIFIED="1698808448838" TEXT="verify_StartStop">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1698592367530" ID="ID_1513214570" MODIFIED="1698605544097" TEXT="tats&#xe4;chlich Activities einplanen">
<linktarget COLOR="#389bcf" DESTINATION="ID_1513214570" ENDARROW="Default" ENDINCLINATION="365;-28;" ID="Arrow_ID_554717849" SOURCE="ID_284194667" STARTARROW="None" STARTINCLINATION="333;12;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1698595265649" HGAP="27" ID="ID_1194558258" MODIFIED="1698595394206" VSHIFT="6">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      ohne <i>das </i>wird n&#228;mlich gar kein Tick-Zyklus aufgemacht
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...da ich das handleDutyCycle eben auch zum &#8222;z&#252;nden&#8220; verwenden m&#246;chte, entsteht hier so etwas wie eine zus&#228;tzliche Z&#252;nd-Barriere; war nicht geplant, gef&#228;llt mir aber: man mu&#223; also auch Holz in den Ofen stecken, bevor man z&#252;ndet...
    </p>
  </body>
</html></richcontent>
<font NAME="SansSerif" SIZE="11"/>
</node>
</node>
<node COLOR="#338800" CREATED="1698521924261" ID="ID_1936048598" MODIFIED="1698596926165" TEXT="explizit in Gang setzen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1698521939608" ID="ID_501619176" MODIFIED="1698596927547" TEXT="sehen da&#xdf; er &#xbb;l&#xe4;uft&#xab;">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1698592367530" ID="ID_1362227170" MODIFIED="1698605559677" TEXT="wieder anhalten">
<linktarget COLOR="#4d8aab" DESTINATION="ID_1362227170" ENDARROW="Default" ENDINCLINATION="715;-39;" ID="Arrow_ID_940715985" SOURCE="ID_319295239" STARTARROW="None" STARTINCLINATION="229;23;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1698592552588" HGAP="25" ID="ID_533479899" MODIFIED="1698601875401" TEXT="starten und Destruktor im laufenden Zustand aufrufen" VSHIFT="5">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1698597769948" HGAP="30" ID="ID_122236829" MODIFIED="1698597786923" TEXT="Timings beobachtet" VSHIFT="6">
<icon BUILTIN="list"/>
<node CREATED="1698598469549" ID="ID_1138554689" MODIFIED="1698600198874" TEXT="Erster Aufruf / Fehlz&#xfc;ndung: 50&#xb5;s"/>
<node CREATED="1698598501393" ID="ID_74579066" MODIFIED="1698600214538">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Post+erfolgreiche Z&#252;ndung: <b>1ms</b>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1698598597804" ID="ID_469136225" MODIFIED="1698600221833">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      gewaltsam Angehalten: <b>60ms</b>
    </p>
  </body>
</html></richcontent>
<node COLOR="#435e98" CREATED="1698601411556" HGAP="71" ID="ID_1350044649" MODIFIED="1698603209784" VSHIFT="9">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <u>korrekt</u>!
    </p>
    <ul>
      <li>
        tend-next auf den Tick &#8788; 50ms
      </li>
      <li>
        WorkForce wartet beim Shutdown pauschal 20ms (IDLE_WAIT)
      </li>
    </ul>
  </body>
</html></richcontent>
<edge COLOR="#339fc5"/>
<font NAME="SansSerif" SIZE="10"/>
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1698598661062" ID="ID_1625946073" MODIFIED="1698598671206" TEXT="erneuter Post: 60&#xb5;s"/>
<node CREATED="1698598695895" ID="ID_746587515" MODIFIED="1698598708241" TEXT="noch &apos;n Post: 9&#xb5;s"/>
<node CREATED="1698598780502" ID="ID_97969711" MODIFIED="1698600227433">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      nochmal z&#252;nden: <b>1ms</b>
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#5b280f" CREATED="1698599903981" HGAP="2" ID="ID_1418129606" MODIFIED="1698600447671" TEXT="Messungen dominiert von Cache-Effekten" VSHIFT="15">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Cache-Effekte k&#246;nnen mehrere 100&#181;s ausmchen. Dennoch ist dieses Pattern mit leichten Schwankungen reproduzierbar in vielen L&#228;ufen, und zeigt auch fast keinen Unterschied, wenn mit -O3 gebaut. Man beachte im Besonderen da&#223; bei der ersten Fehlz&#252;ndung die WorkForce nicht hochskaliert wird. Da steckt also die Zeit, und das ist auch mit dem WorkForce_test konsistent.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1698601884014" HGAP="-6" ID="ID_254540476" MODIFIED="1698601930336" STYLE="bubble" VSHIFT="7">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <b>Fazit</b>: Verhalten wie erwartet
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="forward"/>
<node BACKGROUND_COLOR="#c8c0b6" CREATED="1698601933709" HGAP="25" ID="ID_114745098" MODIFIED="1698605786967" VSHIFT="2">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <ul>
      <li>
        der erste gestartete Thread macht alle Dispaches in Serie
      </li>
      <li>
        danach wird er per tendNext gezielt auf den Tick +50ms geschickt
      </li>
      <li>
        alle anderen Threads gehen in h&#246;chstens einen Wartezyklus
      </li>
      <li>
        der WorkForce-Destruktor wartet jeweils auf den tendNext-Thread
      </li>
    </ul>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Im Detail nachvollzogen durch Trace-Log der aktuellen Zeit, incl. Thread-Nummer
    </p>
    <ul>
      <li>
        man konnte jeweils deutliche Cache-Effekte beobachten
      </li>
      <li>
        abgesehen davon waren die Timings stabil
      </li>
      <li>
        die separat im Test gemessenen Zeiten passen perfekt mit den Zeiten und dem Muster aus dem Trace zusammen
      </li>
      <li>
        die Threads brauchen in der Tat eine Zeitspanne von 100-200&#181;s, bis sie aktiv werden
      </li>
      <li>
        insofern variiert es von Lauf zu Lauf erheblich, wie viele Threads &#252;berhaupt den Schlaf-Auftrag bekommen
      </li>
    </ul>
  </body>
</html></richcontent>
<linktarget COLOR="#96abb4" DESTINATION="ID_114745098" ENDARROW="Default" ENDINCLINATION="694;-113;" ID="Arrow_ID_336093338" SOURCE="ID_1693880533" STARTARROW="None" STARTINCLINATION="522;22;"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1698592173326" FOLDED="true" ID="ID_1298598152" MODIFIED="1698808453912" TEXT="verify_LoadFactor">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1698621875902" ID="ID_846411589" MODIFIED="1698807574994" TEXT="Scheduler beladen und Lastverlauf beobachten">
<linktarget COLOR="#4a5982" DESTINATION="ID_846411589" ENDARROW="Default" ENDINCLINATION="-55;-589;" ID="Arrow_ID_1233923536" SOURCE="ID_716182887" STARTARROW="None" STARTINCLINATION="-390;272;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1698622735430" ID="ID_1186149699" MODIFIED="1698807481920" TEXT="geeignetes Test-Setup">
<icon BUILTIN="help"/>
<node CREATED="1698622757560" ID="ID_50779860" MODIFIED="1698622776217" TEXT="das hier sollte noch ein low-level-Test sein"/>
<node CREATED="1698622777629" ID="ID_1888787087" MODIFIED="1698622791685" TEXT="also besser nur mit einzelne(n) Activities"/>
<node CREATED="1698622792747" ID="ID_505766155" MODIFIED="1698622861886" TEXT="&#x27f9; Last erzeugen durch Masse"/>
</node>
<node COLOR="#338800" CREATED="1698627049989" FOLDED="true" ID="ID_156522497" MODIFIED="1698808089267" TEXT="guten Belastungs-Faktor herausfinden">
<icon BUILTIN="button_ok"/>
<node COLOR="#5b280f" CREATED="1698627058057" ID="ID_732034472" MODIFIED="1698628256700" TEXT="Microbenchmark machen">
<icon BUILTIN="yes"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1698627081520" ID="ID_180475569" MODIFIED="1698627102615" TEXT="multithreaded, 1e5 mal pro thread"/>
<node CREATED="1698627068402" ID="ID_1243737540" MODIFIED="1698627079989" TEXT="ActivityLang::dispatchChain : 200ns"/>
<node CREATED="1698627399974" ID="ID_1608280091" MODIFIED="1698628172170" TEXT="ExecutionCtx::post : 1.3&#xb5;s"/>
<node COLOR="#5b280f" CREATED="1698628174302" ID="ID_127791676" MODIFIED="1698628251530" TEXT="das ist aber nicht sonderlich hilfreich">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...weil es eben ein Microbenchmark des reinen Dispatch-Aufrufs ist, und ohne das ganze Drumherum mit Grooming-Token, Queue-Verwaltung und Kapazit&#228;ts-Verteilung
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="stop-sign"/>
</node>
<node BACKGROUND_COLOR="#c8c0b6" CREATED="1698766327937" ID="ID_728621382" MODIFIED="1698766613009">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <b>Doch</b>! sp&#228;tere Messung &#10233; <b>3&#181;s</b>&#160;/ Activity <i>in einem Thread </i>beobachtet
    </p>
  </body>
</html></richcontent>
<arrowlink DESTINATION="ID_1590538129" ENDARROW="Default" ENDINCLINATION="99;0;" ID="Arrow_ID_1878932569" STARTARROW="None" STARTINCLINATION="103;4;"/>
<linktarget COLOR="#4354aa" DESTINATION="ID_728621382" ENDARROW="Default" ENDINCLINATION="668;27;" ID="Arrow_ID_1384177508" SOURCE="ID_1545939367" STARTARROW="None" STARTINCLINATION="73;-8;"/>
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1698628260187" ID="ID_415801034" MODIFIED="1698628267861" TEXT="empirisch...">
<node CREATED="1698628268871" ID="ID_747543555" MODIFIED="1698628293946" TEXT="sch&#xe4;tze ich nach meinen bisherigen Beobachtungen 30&#xb5;s in Debug-Modus"/>
<node CREATED="1698628294539" ID="ID_563001389" MODIFIED="1698628346071" TEXT="und ergibt sich aus dem Test-Lauf dann ehr ein Wert von &#x2205; 50&#xb5;s pro Activity-Dispatch"/>
<node CREATED="1698766454928" ID="ID_1590538129" MODIFIED="1698766773724" TEXT="&#xd83e;&#xdc46; empirisch kommt das gut hin &#x2014; aber aus anderem Grund (Kapazit&#xe4;ts-Verteilung)">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Aufgrund der Kapazit&#228;ts-Verteilung (genau wie implementiert) steht in einem so kurzen Peak im Schnitt nur 1/3 der Concurrency &#252;berhaupt zur Verf&#252;gung (2ms im Verh&#228;ltnis zur Verteilung auf WORK_HORIZON = 5ms). Diese wenigen Threads machen aber den Cache ordentlich hei&#223;, so da&#223; wir sogar im Debug-Modus Werte von 3&#181;s / Activity erreichen (also komplett Ende-zu-Ende mit allem Drumherum)
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1590538129" ENDARROW="Default" ENDINCLINATION="99;0;" ID="Arrow_ID_1878932569" SOURCE="ID_728621382" STARTARROW="None" STARTINCLINATION="103;4;"/>
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1590538129" ENDARROW="Default" ENDINCLINATION="339;0;" ID="Arrow_ID_1577238331" SOURCE="ID_742372602" STARTARROW="None" STARTINCLINATION="96;-127;"/>
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
</node>
</node>
<node CREATED="1698628373959" ID="ID_63871329" MODIFIED="1698628454389" TEXT="&#x27f9; kann also mit HARDWARE_CONCURRENCY - Faktor damit ca 1ms volladen"/>
<node COLOR="#5b280f" CREATED="1698628458320" ID="ID_268159812" MODIFIED="1698799716987" TEXT=" verwende mal 20&#xb5;s &#x27f9; bei mir 400 Activities">
<icon BUILTIN="button_cancel"/>
<node CREATED="1698799723651" ID="ID_1639854472" LINK="#ID_760149120" MODIFIED="1698799738323" TEXT="Falsche Annahme: wir laufen nicht multithreaded"/>
<node CREATED="1698799745718" ID="ID_1554986044" MODIFIED="1698799764512" TEXT="und es sind ehr 5&#xb5;s / komplett-Dispatch einer Activity"/>
</node>
<node COLOR="#338800" CREATED="1698799787474" ID="ID_353378905" MODIFIED="1698807437683" TEXT="Regel mit 3&#xb5;s aber nur einem Thread ansetzen">
<linktarget COLOR="#4b5ab6" DESTINATION="ID_353378905" ENDARROW="Default" ENDINCLINATION="-845;50;" ID="Arrow_ID_1142667813" SOURCE="ID_632270963" STARTARROW="None" STARTINCLINATION="-120;-9;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1698807439214" ID="ID_1214021768" MODIFIED="1698807447888" TEXT="Begr&#xfc;ndung: lieber zu viel als zu wenig"/>
<node CREATED="1698807455627" ID="ID_375927019" MODIFIED="1698807463662" TEXT="man denke an -O3 und schnellere Maschinen"/>
</node>
</node>
<node COLOR="#338800" CREATED="1698717012643" ID="ID_173734089" MODIFIED="1698807472412" TEXT="verwende 2 mal einen 2ms-Peak">
<icon BUILTIN="button_ok"/>
<node CREATED="1698717024321" ID="ID_1397476094" MODIFIED="1698717031620" TEXT="erster Peak wie erwartet"/>
<node CREATED="1698717032144" FOLDED="true" ID="ID_262693088" MODIFIED="1698800658103" TEXT="zweiter auch...">
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1698717043482" ID="ID_747236369" MODIFIED="1698797095872" TEXT="aber Load bleibt l&#xe4;nger hoch (obwohl sich Lag nicht &#xe4;ndert)">
<icon BUILTIN="broken-line"/>
<node COLOR="#435e98" CREATED="1698717071523" ID="ID_1822841922" MODIFIED="1698798474545" TEXT="wird da der Indikator nicht aktualisiert?">
<icon BUILTIN="help"/>
<node CREATED="1698797106390" ID="ID_1870438955" MODIFIED="1698797121672" TEXT="das h&#xe4;ngt davon ab, wie viele Threads tats&#xe4;chlich mitarbeiten"/>
<node CREATED="1698797127172" ID="ID_410786091" MODIFIED="1698797141003" TEXT="und wie viele davon danach outgoing weggeschickt werden"/>
<node CREATED="1698797155467" ID="ID_465510908" MODIFIED="1698798472858" TEXT="es kann dann bis zu +5ms dauern, bis sie wiederkommen"/>
<node CREATED="1698797168966" ID="ID_204435224" MODIFIED="1698797177097" TEXT="und erst dann wird schrittweise aktualisiert"/>
</node>
<node COLOR="#435e98" CREATED="1698762985007" ID="ID_593555362" MODIFIED="1698798483408" TEXT="aber warum wird er beim ersten Mal aktualisiert?">
<icon BUILTIN="help"/>
<node CREATED="1698769094664" ID="ID_306082346" MODIFIED="1698769111466" TEXT="kurz vor Ende des Peaks ist ein 3.Thread aufgewacht"/>
<node CREATED="1698769112741" ID="ID_27926751" MODIFIED="1698769158807" TEXT="ein Thread wird outgoing auf tend-Next geschickt"/>
<node CREATED="1698769159967" ID="ID_711537358" MODIFIED="1698769174753" TEXT="zwei weitere werden incoming in deep-Sleep geschickt"/>
<node CREATED="1698769232350" ID="ID_627389929" MODIFIED="1698769269860" TEXT="kurz danach kommt  ein 4.Thread aus targeted-Sleep"/>
<node CREATED="1698769270664" ID="ID_741995594" MODIFIED="1698769279139" TEXT="und wird ebenfalls in deep-Sleep geschickt"/>
</node>
<node CREATED="1698797070750" ID="ID_630788360" MODIFIED="1698797093103" TEXT="Verhalten ist zwar variabel, aber nicht in der extremen Form reproduzierbar">
<icon BUILTIN="forward"/>
</node>
</node>
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#23355d" CREATED="1698763004667" ID="ID_431116549" MODIFIED="1698800633775" TEXT="sleeps instrumentieren">
<arrowlink COLOR="#4a567e" DESTINATION="ID_1608331813" ENDARROW="Default" ENDINCLINATION="26;-45;" ID="Arrow_ID_7575484" STARTARROW="None" STARTINCLINATION="-13;120;"/>
<font NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1698767212531" FOLDED="true" ID="ID_1608331813" MODIFIED="1698800636592" TEXT="Timing-Beobachtungen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      0000000599: INFO: suite.cpp:180: thread_1: invokeTestCase: ++------------------- invoking TEST: vault::gear::test::SchedulerService_test
    </p>
    <p>
      
    </p>
    <p>
      #--&#9670;--# wuff() ? = 9&#160;&#160; &#10229;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8214; current Time relative to time-axis anchor
    </p>
    <p>
      #--&#9670;--# wuff(scheduler.layer1_.headTime()) ? = 307445013520244830&#160;&#160; &#10229;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8214; not yet in the priority queue
    </p>
    <p>
      
    </p>
    <p>
      &gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;createLoad (Offset{Time{5,0}}, fatPackage);
    </p>
    <p>
      &gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;createLoad (Offset{Time{15,0}}, fatPackage);
    </p>
    <p>
      
    </p>
    <p>
      #--&#9670;--# wuff() ? = 1697&#160;&#160; &#10229;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8214; 1.7ms
    </p>
    <p>
      
    </p>
    <p>
      &gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;scheduler.ignite();
    </p>
    <p>
      
    </p>
    <p>
      |oo|^ Sleep--&gt;1811&#160;&#160;&lt;head:1811
    </p>
    <p>
      |oo|^ Sleep--&gt;4650&#160;&#160;&lt;head:1595
    </p>
    <p>
      |oo|^ Sleep--&gt;5705&#160;&#160;&lt;head:1466
    </p>
    <p>
      |oo|^ Sleep--&gt;3820&#160;&#160;&lt;head:1469&#160;&#160; &#10229;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8214; 2.4ms behind head
    </p>
    <p>
      
    </p>
    <p>
      #--&#9670;--# wuff() ? = 3678&#160;&#160; &#10229;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8214; ignite() costs 2ms
    </p>
    <p>
      #--&#9670;--# wuff(scheduler.layer1_.headTime()) ? = 5000
    </p>
    <p>
      
    </p>
    <p>
      |oo|^ Sleep--&gt;6265&#160;&#160;&lt;head:1298
    </p>
    <p>
      3793 +++ Load: 0.274273 --- HT= 5000 -+- Lag -1141
    </p>
    <p>
      
    </p>
    <p>
      |oo|^ Sleep--&gt;1505&#160;&#160;&lt;head:1226&#160;&#160; &#10229;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8214; 279&#181;s behind head
    </p>
    <p>
      |oo|^ Sleep--&gt;3800&#160;&#160;&lt;head:1225&#160;&#160; &#10229;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8214; 2.6ms behind head
    </p>
    <p>
      |oo|^ Sleep--&gt;6175&#160;&#160;&lt;head:1200
    </p>
    <p>
      3972 +++ Load: 0.271592 --- HT= 5000 -+- Lag -1141
    </p>
    <p>
      4083 +++ Load: 0.271592 --- HT= 5000 -+- Lag -1141
    </p>
    <p>
      4194 +++ Load: 0.271592 --- HT= 5000 -+- Lag -1141
    </p>
    <p>
      4304 +++ Load: 0.271592 --- HT= 5000 -+- Lag -1141
    </p>
    <p>
      4415 +++ Load: 0.271592 --- HT= 5000 -+- Lag -1141
    </p>
    <p>
      4526 +++ Load: 0.271592 --- HT= 5000 -+- Lag -1141
    </p>
    <p>
      4636 +++ Load: 0.271592 --- HT= 5000 -+- Lag -1141
    </p>
    <p>
      4746 +++ Load: 0.271592 --- HT= 5000 -+- Lag -1141
    </p>
    <p>
      4856 +++ Load: 0.271592 --- HT= 5000 -+- Lag -1141
    </p>
    <p>
      4966 +++ Load: 0.271592 --- HT= 5000 -+- Lag -1141
    </p>
    <p>
      5076 +++ Load: 0.271592 --- HT= 5000 -+- Lag -1141
    </p>
    <p>
      5186 +++ Load: 0.271592 --- HT= 5000 -+- Lag -1141
    </p>
    <p>
      
    </p>
    <p>
      |&#8226;&#8226;|^&#160;&#160;&#160;eep&lt;--1811&#160;&#160;&lt;head:1811&#160;&#160; &#10229;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8214; this one is the next-tending Thread
    </p>
    <p>
      5297 +++ Load: 1.04 --- HT= 5014 -+- Lag 234
    </p>
    <p>
      5410 +++ Load: 1.29 --- HT= 5058 -+- Lag 347
    </p>
    <p>
      
    </p>
    <p>
      |&#8226;&#8226;|^&#160;&#160;&#160;eep&lt;--1505&#160;&#160;&lt;head:1296&#160;&#160; &#10229;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8214; this one was distributed 279&#181;s behind head
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#10229;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8214; now head is advanced by 1296-1226 = +70 entries
    </p>
    <p>
      5522 +++ Load: 1.432 --- HT= 5101 -+- Lag 418
    </p>
    <p>
      5636 +++ Load: 1.582 --- HT= 5139 -+- Lag 493
    </p>
    <p>
      5747 +++ Load: 1.73&#160;&#160;--- HT= 5178 -+- Lag 566
    </p>
    <p>
      5859 +++ Load: 1.876 --- HT= 5216 -+- Lag 640
    </p>
    <p>
      5971 +++ Load: 2.022 --- HT= 5255 -+- Lag 713
    </p>
    <p>
      6082 +++ Load: 2.17&#160;&#160;--- HT= 5293 -+- Lag 786
    </p>
    <p>
      6194 +++ Load: 2.316 --- HT= 5332 -+- Lag 859
    </p>
    <p>
      6306 +++ Load: 2.46&#160;&#160;--- HT= 5371 -+- Lag 931
    </p>
    <p>
      6417 +++ Load: 2.604 --- HT= 5409 -+- Lag 1004
    </p>
    <p>
      6528 +++ Load: 2.748 --- HT= 5448 -+- Lag 1076
    </p>
    <p>
      6640 +++ Load: 2.896 --- HT= 5488 -+- Lag 1149
    </p>
    <p>
      6752 +++ Load: 3.038 --- HT= 5527 -+- Lag 1221
    </p>
    <p>
      6863 +++ Load: 3.188 --- HT= 5566 -+- Lag 1295
    </p>
    <p>
      6975 +++ Load: 3.328 --- HT= 5605 -+- Lag 1366
    </p>
    <p>
      7047 +++ Load: 3.41&#160;&#160;--- HT= 5627 -+- Lag 1408
    </p>
    <p>
      7160 +++ Load: 3.574 --- HT= 5669 -+- Lag 1488
    </p>
    <p>
      7271 +++ Load: 3.716 --- HT= 5710 -+- Lag 1558
    </p>
    <p>
      7382 +++ Load: 3.856 --- HT= 5750 -+- Lag 1630
    </p>
    <p>
      
    </p>
    <p>
      |&#8226;&#8226;|^&#160;&#160;&#160;eep&lt;--3820&#160;&#160;&lt;head:2258&#160;&#160; &#10229;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8214; head advanced by +789 entries
    </p>
    <p>
      
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#10229;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8214; first Peak was completed here
    </p>
    <p>
      
    </p>
    <p>
      7494 +++ Load: 3.998 --- HT= 15000 -+- Lag -327
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
    </p>
    <p>
      |oo|v Sleep--&gt;7478&#160;&#160;&lt;head:7478&#160;&#160; &#10229;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8214; tend-next to t=15ms (now = 7522ms)
    </p>
    <p>
      |**|^ --------------------------------------------Deep-Sleep--&gt;&#160; &lt;head:7477
    </p>
    <p>
      |**|^ --------------------------------------------Deep-Sleep--&gt;&#160; &lt;head:7442
    </p>
    <p>
      
    </p>
    <p>
      &#160;+++ Load: 0.191644 --- HT= 15000 -+- Lag -1909
    </p>
    <p>
      
    </p>
    <p>
      |&#8226;&#8226;|^&#160;&#160;&#160;eep&lt;--3800&#160;&#160;&lt;head:11225&#160;&#160; &#10229;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8214; head now at start of 2.nd Peak at t=15ms
    </p>
    <p>
      |**|^ --------------------------------------------Deep-Sleep--&gt;&#160; &lt;head:7296
    </p>
    <p>
      
    </p>
    <p>
      7760 +++ Load: 0.131337 --- HT= 15000 -+- Lag -3107
    </p>
    <p>
      7872 +++ Load: 0.131337 --- HT= 15000 -+- Lag -3107
    </p>
    <p>
      7982 +++ Load: 0.131337 --- HT= 15000 -+- Lag -3107
    </p>
    <p>
      8091 +++ Load: 0.131337 --- HT= 15000 -+- Lag -3107
    </p>
    <p>
      
    </p>
    <p>
      |&#8226;&#8226;|^&#160;&#160;&#160;eep&lt;--4650&#160;&#160;&lt;head:11595
    </p>
    <p>
      |**|^ --------------------------------------------Deep-Sleep--&gt;&#160; &lt;head:6865
    </p>
    <p>
      
    </p>
    <p>
      8201 +++ Load: 0.107689 --- HT= 15000 -+- Lag -3943
    </p>
    <p>
      8313 +++ Load: 0.107689 --- HT= 15000 -+- Lag -3943
    </p>
    <p>
      8424 +++ Load: 0.107689 --- HT= 15000 -+- Lag -3943
    </p>
    <p>
      8534 +++ Load: 0.107689 --- HT= 15000 -+- Lag -3943
    </p>
    <p>
      8644 +++ Load: 0.107689 --- HT= 15000 -+- Lag -3943
    </p>
    <p>
      8754 +++ Load: 0.107689 --- HT= 15000 -+- Lag -3943
    </p>
    <p>
      8864 +++ Load: 0.107689 --- HT= 15000 -+- Lag -3943
    </p>
    <p>
      8974 +++ Load: 0.107689 --- HT= 15000 -+- Lag -3943
    </p>
    <p>
      9084 +++ Load: 0.107689 --- HT= 15000 -+- Lag -3943
    </p>
    <p>
      9194 +++ Load: 0.107689 --- HT= 15000 -+- Lag -3943
    </p>
    <p>
      9305 +++ Load: 0.107689 --- HT= 15000 -+- Lag -4331
    </p>
    <p>
      
    </p>
    <p>
      |&#8226;&#8226;|^&#160;&#160;&#160;eep&lt;--5705&#160;&#160;&lt;head:11466
    </p>
    <p>
      |**|^ --------------------------------------------Deep-Sleep--&gt;&#160; &lt;head:5688
    </p>
    <p>
      
    </p>
    <p>
      9425 +++ Load: 0.0993838 --- HT= 15000 -+- Lag -4331
    </p>
    <p>
      9536 +++ Load: 0.0993838 --- HT= 15000 -+- Lag -4331
    </p>
    <p>
      9646 +++ Load: 0.0993838 --- HT= 15000 -+- Lag -4331
    </p>
    <p>
      9757 +++ Load: 0.0993838 --- HT= 15000 -+- Lag -4331
    </p>
    <p>
      9867 +++ Load: 0.0993838 --- HT= 15000 -+- Lag -4331
    </p>
    <p>
      9977 +++ Load: 0.0993838 --- HT= 15000 -+- Lag -4331
    </p>
    <p>
      
    </p>
    <p>
      |&#8226;&#8226;|^&#160;&#160;&#160;eep&lt;--6265&#160;&#160;&lt;head:11298
    </p>
    <p>
      |oo|^ Sleep--&gt;7300&#160;&#160;&lt;head:4925&#160;&#160; &#10229;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8214; t=10075&#181;s targeted at 17375&#181;s (head+2.3ms)
    </p>
    <p>
      
    </p>
    <p>
      10086 +++ Load: 0.0968429 --- HT= 15000 -+- Lag -4463
    </p>
    <p>
      
    </p>
    <p>
      |&#8226;&#8226;|^&#160;&#160;&#160;eep&lt;--6175&#160;&#160;&lt;head:11200
    </p>
    <p>
      |oo|^ Sleep--&gt;8115&#160;&#160;&lt;head:4868&#160;&#160; &#10229;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8214; t=10132&#181;s targeted at 18247&#181;s (head+3.2ms)
    </p>
    <p>
      
    </p>
    <p>
      10221 +++ Load: 0.0951837 --- HT= 15000 -+- Lag -4553
    </p>
    <p>
      10332 +++ Load: 0.0951837 --- HT= 15000 -+- Lag -4553
    </p>
    <p>
      10442 +++ Load: 0.0951837 --- HT= 15000 -+- Lag -4553
    </p>
    <p>
      10552 +++ Load: 0.0951837 --- HT= 15000 -+- Lag -4553
    </p>
    <p>
      10662 +++ Load: 0.0951837 --- HT= 15000 -+- Lag -4553
    </p>
    <p>
      10772 +++ Load: 0.0951837 --- HT= 15000 -+- Lag -4553
    </p>
    <p>
      10882 +++ Load: 0.0951837 --- HT= 15000 -+- Lag -4553
    </p>
    <p>
      10991 +++ Load: 0.0951837 --- HT= 15000 -+- Lag -4553
    </p>
    <p>
      11102 +++ Load: 0.0951837 --- HT= 15000 -+- Lag -4553
    </p>
    <p>
      11212 +++ Load: 0.0951837 --- HT= 15000 -+- Lag -4553
    </p>
    <p>
      11322 +++ Load: 0.0951837 --- HT= 15000 -+- Lag -4553
    </p>
    <p>
      11432 +++ Load: 0.0951837 --- HT= 15000 -+- Lag -4553
    </p>
    <p>
      11541 +++ Load: 0.0951837 --- HT= 15000 -+- Lag -4553
    </p>
    <p>
      11651 +++ Load: 0.0951837 --- HT= 15000 -+- Lag -4553
    </p>
    <p>
      11761 +++ Load: 0.0951837 --- HT= 15000 -+- Lag -4553
    </p>
    <p>
      11883 +++ Load: 0.0951837 --- HT= 15000 -+- Lag -4553
    </p>
    <p>
      12002 +++ Load: 0.0951837 --- HT= 15000 -+- Lag -4553
    </p>
    <p>
      12120 +++ Load: 0.0951837 --- HT= 15000 -+- Lag -4553
    </p>
    <p>
      12238 +++ Load: 0.0951837 --- HT= 15000 -+- Lag -4553
    </p>
    <p>
      12356 +++ Load: 0.0951837 --- HT= 15000 -+- Lag -4553
    </p>
    <p>
      12473 +++ Load: 0.0951837 --- HT= 15000 -+- Lag -4553
    </p>
    <p>
      12591 +++ Load: 0.0951837 --- HT= 15000 -+- Lag -4553
    </p>
    <p>
      12709 +++ Load: 0.0951837 --- HT= 15000 -+- Lag -4553
    </p>
    <p>
      12826 +++ Load: 0.0951837 --- HT= 15000 -+- Lag -4553
    </p>
    <p>
      12944 +++ Load: 0.0951837 --- HT= 15000 -+- Lag -4553
    </p>
    <p>
      13062 +++ Load: 0.0951837 --- HT= 15000 -+- Lag -4553
    </p>
    <p>
      13179 +++ Load: 0.0951837 --- HT= 15000 -+- Lag -4553
    </p>
    <p>
      13297 +++ Load: 0.0951837 --- HT= 15000 -+- Lag -4553
    </p>
    <p>
      13414 +++ Load: 0.0951837 --- HT= 15000 -+- Lag -4553
    </p>
    <p>
      13532 +++ Load: 0.0951837 --- HT= 15000 -+- Lag -4553
    </p>
    <p>
      13650 +++ Load: 0.0951837 --- HT= 15000 -+- Lag -4553
    </p>
    <p>
      13768 +++ Load: 0.0951837 --- HT= 15000 -+- Lag -4553
    </p>
    <p>
      13886 +++ Load: 0.0951837 --- HT= 15000 -+- Lag -4553
    </p>
    <p>
      14004 +++ Load: 0.0951837 --- HT= 15000 -+- Lag -4553
    </p>
    <p>
      14121 +++ Load: 0.0951837 --- HT= 15000 -+- Lag -4553
    </p>
    <p>
      14239 +++ Load: 0.0951837 --- HT= 15000 -+- Lag -4553
    </p>
    <p>
      14357 +++ Load: 0.0951837 --- HT= 15000 -+- Lag -4553
    </p>
    <p>
      14474 +++ Load: 0.0951837 --- HT= 15000 -+- Lag -4553
    </p>
    <p>
      14592 +++ Load: 0.0951837 --- HT= 15000 -+- Lag -4553
    </p>
    <p>
      14709 +++ Load: 0.0951837 --- HT= 15000 -+- Lag -4553
    </p>
    <p>
      14827 +++ Load: 0.0951837 --- HT= 15000 -+- Lag -4553
    </p>
    <p>
      14945 +++ Load: 0.0951837 --- HT= 15000 -+- Lag -4553
    </p>
    <p>
      15054 +++ Load: 0.0951837 --- HT= 15000 -+- Lag -3527
    </p>
    <p>
      
    </p>
    <p>
      |&#8226;&#8226;|v&#160;&#160;&#160;eep&lt;--7478&#160;&#160;&lt;head:7478&#160;&#160; &#10229;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8214; this one is the next-tending Thread
    </p>
    <p>
      
    </p>
    <p>
      15185 +++ Load: 0.883392&#160;&#160;--- HT= 15026 -+- Lag 140
    </p>
    <p>
      15306 +++ Load: 1.078&#160;&#160;&#160;&#160;&#160;--- HT= 15051 -+- Lag 243
    </p>
    <p>
      15427 +++ Load: 1.27&#160;&#160;&#160;&#160;&#160;&#160;--- HT= 15077 -+- Lag 335
    </p>
    <p>
      15547 +++ Load: 1.456&#160;&#160;&#160;&#160;&#160;--- HT= 15103 -+- Lag 432
    </p>
    <p>
      15668 +++ Load: 1.648&#160;&#160;&#160;&#160;&#160;--- HT= 15128 -+- Lag 528
    </p>
    <p>
      15788 +++ Load: 1.836&#160;&#160;&#160;&#160;&#160;--- HT= 15154 -+- Lag 622
    </p>
    <p>
      15909 +++ Load: 2.028&#160;&#160;&#160;&#160;&#160;--- HT= 15180 -+- Lag 714
    </p>
    <p>
      16030 +++ Load: 2.22&#160;&#160;&#160;&#160;&#160;&#160;--- HT= 15206 -+- Lag 810
    </p>
    <p>
      16151 +++ Load: 2.408&#160;&#160;&#160;&#160;&#160;--- HT= 15232 -+- Lag 904
    </p>
    <p>
      16271 +++ Load: 2.596&#160;&#160;&#160;&#160;&#160;--- HT= 15257 -+- Lag 1002
    </p>
    <p>
      16391 +++ Load: 2.786&#160;&#160;&#160;&#160;&#160;--- HT= 15283 -+- Lag 1093
    </p>
    <p>
      16511 +++ Load: 2.97&#160;&#160;&#160;&#160;&#160;&#160;--- HT= 15309 -+- Lag 1189
    </p>
    <p>
      16631 +++ Load: 3.158&#160;&#160;&#160;&#160;&#160;--- HT= 15335 -+- Lag 1283
    </p>
    <p>
      16752 +++ Load: 3.348&#160;&#160;&#160;&#160;&#160;--- HT= 15361 -+- Lag 1378
    </p>
    <p>
      16872 +++ Load: 3.538&#160;&#160;&#160;&#160;&#160;--- HT= 15386 -+- Lag 1473
    </p>
    <p>
      16992 +++ Load: 3.726&#160;&#160;&#160;&#160;&#160;--- HT= 15412 -+- Lag 1567
    </p>
    <p>
      17113 +++ Load: 3.916&#160;&#160;&#160;&#160;&#160;--- HT= 15439 -+- Lag 1662
    </p>
    <p>
      17234 +++ Load: 4.102&#160;&#160;&#160;&#160;&#160;--- HT= 15465 -+- Lag 1755
    </p>
    <p>
      17354 +++ Load: 4.292&#160;&#160;&#160;&#160;&#160;--- HT= 15491 -+- Lag 1850
    </p>
    <p>
      17474 +++ Load: 4.482&#160;&#160;&#160;&#160;&#160;--- HT= 15517 -+- Lag 1945
    </p>
    <p>
      
    </p>
    <p>
      |&#8226;&#8226;|^&#160;&#160;&#160;eep&lt;--7300&#160;&#160;&lt;head:5454&#160;&#160; &#10229;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8214; (was head+2.3ms) head now at +529 (15529)
    </p>
    <p>
      
    </p>
    <p>
      17595 +++ Load: 4.686&#160;&#160;&#160;&#160;&#160;--- HT= 15543 -+- Lag 2048
    </p>
    <p>
      17717 +++ Load: 4.888&#160;&#160;&#160;&#160;&#160;--- HT= 15567 -+- Lag 2148
    </p>
    <p>
      17839 +++ Load: 5.082&#160;&#160;&#160;&#160;&#160;--- HT= 15591 -+- Lag 2244
    </p>
    <p>
      17959 +++ Load: 5.274&#160;&#160;&#160;&#160;&#160;--- HT= 15615 -+- Lag 2342
    </p>
    <p>
      18081 +++ Load: 5.468&#160;&#160;&#160;&#160;&#160;--- HT= 15639 -+- Lag 2437
    </p>
    <p>
      18202 +++ Load: 5.664&#160;&#160;&#160;&#160;&#160;--- HT= 15664 -+- Lag 2535
    </p>
    <p>
      18323 +++ Load: 5.854&#160;&#160;&#160;&#160;&#160;--- HT= 15687 -+- Lag 2633
    </p>
    <p>
      
    </p>
    <p>
      |&#8226;&#8226;|^&#160;&#160;&#160;eep&lt;--8115&#160;&#160;&lt;head:5559&#160;&#160; &#10229;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8214; (was head+3.2ms) head now at +691 (15691)
    </p>
    <p>
      
    </p>
    <p>
      18445 +++ Load: 6.058&#160;&#160;&#160;&#160;&#160;--- HT= 15711 -+- Lag 2733
    </p>
    <p>
      18568 +++ Load: 6.25&#160;&#160;&#160;&#160;&#160;&#160;--- HT= 15736 -+- Lag 2829
    </p>
    <p>
      18689 +++ Load: 6.442&#160;&#160;&#160;&#160;&#160;--- HT= 15760 -+- Lag 2927
    </p>
    <p>
      18810 +++ Load: 6.638&#160;&#160;&#160;&#160;&#160;--- HT= 15785 -+- Lag 3023
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#10229;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8214; second Peak was completed here
    </p>
    <p>
      
    </p>
    <p>
      |oo|v Sleep--&gt;32824&#160;&#160;&lt;head:32824&#160;&#160; &#10229;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8214; tend-next to t=51.706ms (now = 18.882ms)
    </p>
    <p>
      |**|^ --------------------------------------------Deep-Sleep--&gt;&#160; &lt;head:32824&#160;&#160;&#160;&#160;&#160;&#8214; note: all see the same head-time
    </p>
    <p>
      |**|^ --------------------------------------------Deep-Sleep--&gt;&#160; &lt;head:32824&#160;&#160;&#160;&#160;&#160;&#8214;
    </p>
    <p>
      
    </p>
    <p>
      18931 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      19048 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      19168 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      19286 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      19404 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      19522 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      19640 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      19758 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      19875 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      19993 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      20111 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      20234 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      20352 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      20471 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      20590 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      20707 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      20825 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      20943 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      21060 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      21178 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      21296 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      21414 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      21531 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      21649 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      21766 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      21884 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      22001 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      22119 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      22236 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      22354 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      22472 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      22589 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      22707 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      22824 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      22942 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      23055 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      23173 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      23291 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      23409 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      23526 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      23644 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      23761 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      23879 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      23997 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      24114 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      24232 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      24349 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      24467 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      24585 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      24702 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      24820 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      24937 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      25055 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      25172 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      25290 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      25407 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      25525 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      25643 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      25760 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      25878 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      25995 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      26113 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      26230 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      26347 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      26465 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      26583 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      26701 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      26818 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      26935 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      27053 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      27172 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      27290 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      27407 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      27525 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      27643 +++ Load: 0.074162&#160;&#160;--- HT= 51706 -+- Lag -6042
    </p>
    <p>
      
    </p>
    <p>
      |**|^ --------------------------------------------Deep-Sleep--&gt;&#160; &lt;head:24007
    </p>
    <p>
      |**|^ --------------------------------------------Deep-Sleep--&gt;&#160; &lt;head:23931
    </p>
    <p>
      |**|^ --------------------------------------------Deep-Sleep--&gt;&#160; &lt;head:23968
    </p>
    <p>
      27761 +++ Load: 0.0353757 --- HT= 51706 -+- Lag -13434
    </p>
    <p>
      27920 +++ Load: 0.0353757 --- HT= 51706 -+- Lag -13434
    </p>
    <p>
      28041 +++ Load: 0.0353757 --- HT= 51706 -+- Lag -13434
    </p>
    <p>
      28168 +++ Load: 0.0353757 --- HT= 51706 -+- Lag -13434
    </p>
    <p>
      
    </p>
    <p>
      |**|^ --------------------------------------------Deep-Sleep--&gt;&#160; &lt;head:23463
    </p>
    <p>
      28314 +++ Load: 0.0320636 --- HT= 51706 -+- Lag -14894
    </p>
    <p>
      28441 +++ Load: 0.0320636 --- HT= 51706 -+- Lag -14894
    </p>
    <p>
      28565 +++ Load: 0.0320636 --- HT= 51706 -+- Lag -14894
    </p>
    <p>
      28684 +++ Load: 0.0320636 --- HT= 51706 -+- Lag -14894
    </p>
    <p>
      28802 +++ Load: 0.0320636 --- HT= 51706 -+- Lag -14894
    </p>
    <p>
      28920 +++ Load: 0.0320636 --- HT= 51706 -+- Lag -14894
    </p>
    <p>
      29038 +++ Load: 0.0320636 --- HT= 51706 -+- Lag -14894
    </p>
    <p>
      29156 +++ Load: 0.0320636 --- HT= 51706 -+- Lag -14894
    </p>
    <p>
      29274 +++ Load: 0.0320636 --- HT= 51706 -+- Lag -14894
    </p>
    <p>
      29392 +++ Load: 0.0320636 --- HT= 51706 -+- Lag -14894
    </p>
    <p>
      
    </p>
    <p>
      |**|^ --------------------------------------------Deep-Sleep--&gt;&#160; &lt;head:22309
    </p>
    <p>
      29520 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      29641 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      29760 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      29878 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      29996 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      30114 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      30231 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      30349 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      30467 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      30585 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      30703 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      30821 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      30939 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      31049 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      31169 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      31286 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      31404 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      31522 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      31640 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      31758 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      31877 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      31994 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      32112 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      32230 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      32348 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      32466 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      32583 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      32701 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      32820 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      32938 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      33055 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      33173 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      33291 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      33409 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      33526 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      33644 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      33762 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      33880 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      33998 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      34116 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      34233 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      34351 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      34469 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      34587 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      34704 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      34822 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      34940 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      35053 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      35172 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      35290 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      35407 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      35525 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      35643 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      35761 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      35879 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      35997 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      36115 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      36233 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      36350 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      36468 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      36586 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      36704 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      36822 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      36939 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      37058 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      37176 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      37294 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      37412 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      37529 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      37647 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      37765 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      37883 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      38001 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      38120 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      38237 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      38355 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      38473 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      38591 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      38708 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      38826 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      38944 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      39054 +++ Load: 0.0298882 --- HT= 51706 -+- Lag -16029
    </p>
    <p>
      
    </p>
    <p>
      |**|^ --------------------------------------------Deep-Sleep--&gt;&#160; &lt;head:12672
    </p>
    <p>
      |**|^ --------------------------------------------Deep-Sleep--&gt;&#160; &lt;head:12640
    </p>
    <p>
      39201 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      39324 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      39444 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      39565 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      39685 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      39806 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      39926 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      40046 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      40166 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      40285 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      40406 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      40526 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      40647 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      40767 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      40887 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      41006 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      41124 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      41243 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      41363 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      41481 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      41601 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      41721 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      41841 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      41961 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      42080 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      42200 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      42320 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      42440 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      42560 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      42679 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      42800 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      42919 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      43055 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      43176 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      43296 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      43417 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      43537 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      43657 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      43777 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      43897 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      44016 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      44135 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      44254 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      44374 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      44495 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      44615 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      44733 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      44852 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      44971 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      45090 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      45209 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      45328 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      45447 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      45566 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      45685 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      45804 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      45922 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      46041 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      46159 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      46278 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      46397 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      46516 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      46635 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      46754 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      46873 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      46992 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      47111 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      47231 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      47350 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      47469 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      47589 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      47710 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      47828 +++ Load: 0.032476 --- HT= 51706 -+- Lag -14696
    </p>
    <p>
      
    </p>
    <p>
      |oo|^ Sleep--&gt;7711&#160;&#160;&lt;head:3832&#160;&#160; &#10229;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8214; t=47.874ms targeted at head+3.3ms
    </p>
    <p>
      |oo|^ Sleep--&gt;6071&#160;&#160;&lt;head:3824&#160;&#160; &#10229;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8214; t=47.882ms targeted at head+2.2ms
    </p>
    <p>
      
    </p>
    <p>
      47948 +++ Load: 0.051878 --- HT= 51706 -+- Lag -8938
    </p>
    <p>
      
    </p>
    <p>
      |oo|^ Sleep--&gt;5496&#160;&#160;&lt;head:3809&#160;&#160; &#10229;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8214; t=47.897ms targeted at head+1.7ms
    </p>
    <p>
      
    </p>
    <p>
      48091 +++ Load: 0.051878 --- HT= 51706 -+- Lag -8938
    </p>
    <p>
      48211 +++ Load: 0.051878 --- HT= 51706 -+- Lag -8938
    </p>
    <p>
      
    </p>
    <p>
      |oo|^ Sleep--&gt;5461&#160;&#160;&lt;head:3382&#160;&#160; &#10229;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8214; t=48.324ms targeted at head+1.6ms
    </p>
    <p>
      
    </p>
    <p>
      48330 +++ Load: 0.0594955 --- HT= 51706 -+- Lag -7704
    </p>
    <p>
      48477 +++ Load: 0.0594955 --- HT= 51706 -+- Lag -7704
    </p>
    <p>
      48597 +++ Load: 0.0594955 --- HT= 51706 -+- Lag -7704
    </p>
    <p>
      48717 +++ Load: 0.0594955 --- HT= 51706 -+- Lag -7704
    </p>
    <p>
      48837 +++ Load: 0.0594955 --- HT= 51706 -+- Lag -7704
    </p>
    <p>
      48957 +++ Load: 0.0594955 --- HT= 51706 -+- Lag -7704
    </p>
    <p>
      49079 +++ Load: 0.0594955 --- HT= 51706 -+- Lag -7704
    </p>
    <p>
      49198 +++ Load: 0.0594955 --- HT= 51706 -+- Lag -7704
    </p>
    <p>
      49317 +++ Load: 0.0594955 --- HT= 51706 -+- Lag -7704
    </p>
    <p>
      49436 +++ Load: 0.0594955 --- HT= 51706 -+- Lag -7704
    </p>
    <p>
      
    </p>
    <p>
      |oo|^ Sleep--&gt;5366&#160;&#160;&lt;head:2223&#160;&#160; &#10229;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8214; t=49.483ms targeted at head+3.1ms
    </p>
    <p>
      
    </p>
    <p>
      49558 +++ Load: 0.0695797 --- HT= 51706 -+- Lag -6486
    </p>
    <p>
      49678 +++ Load: 0.0695797 --- HT= 51706 -+- Lag -6486
    </p>
    <p>
      49796 +++ Load: 0.0695797 --- HT= 51706 -+- Lag -6486
    </p>
    <p>
      49914 +++ Load: 0.0695797 --- HT= 51706 -+- Lag -6486
    </p>
    <p>
      50032 +++ Load: 0.0695797 --- HT= 51706 -+- Lag -6486
    </p>
    <p>
      50150 +++ Load: 0.0695797 --- HT= 51706 -+- Lag -6486
    </p>
    <p>
      50268 +++ Load: 0.0695797 --- HT= 51706 -+- Lag -6486
    </p>
    <p>
      50393 +++ Load: 0.0695797 --- HT= 51706 -+- Lag -6486
    </p>
    <p>
      50511 +++ Load: 0.0695797 --- HT= 51706 -+- Lag -6486
    </p>
    <p>
      50629 +++ Load: 0.0695797 --- HT= 51706 -+- Lag -6486
    </p>
    <p>
      50747 +++ Load: 0.0695797 --- HT= 51706 -+- Lag -6486
    </p>
    <p>
      50865 +++ Load: 0.0695797 --- HT= 51706 -+- Lag -6486
    </p>
    <p>
      50983 +++ Load: 0.0695797 --- HT= 51706 -+- Lag -6486
    </p>
    <p>
      51102 +++ Load: 0.0695797 --- HT= 51706 -+- Lag -6486
    </p>
    <p>
      51220 +++ Load: 0.0695797 --- HT= 51706 -+- Lag -6486
    </p>
    <p>
      51338 +++ Load: 0.0695797 --- HT= 51706 -+- Lag -6486
    </p>
    <p>
      51456 +++ Load: 0.0695797 --- HT= 51706 -+- Lag -6486
    </p>
    <p>
      51574 +++ Load: 0.0695797 --- HT= 51706 -+- Lag -6486
    </p>
    <p>
      51693 +++ Load: 0.0695797 --- HT= 51706 -+- Lag -6486
    </p>
    <p>
      
    </p>
    <p>
      |&#8226;&#8226;|v&#160;&#160;&#160;eep&lt;--32824&#160;&#160;&lt;head:32824&#160;&#160; &#10229;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8214; was tended to the &#187;Tick&#171; (from t=18.882ms)
    </p>
    <p>
      
    </p>
    <p>
      51812 +++ Load: 0.0873668 --- HT= 307445013520244830 -+- Lag -5023
    </p>
    <p>
      
    </p>
    <p>
      |oo|v Sleep--&gt;6855&#160;&#160;&lt;head:307445013520193000&#160;&#160; &#10229;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8214; outgoing redistributed +6.9ms (before big sleep)
    </p>
    <p>
      |&#8226;&#8226;|^&#160;&#160;&#160;eep&lt;--5496&#160;&#160;&lt;head:307445013520196933
    </p>
    <p>
      |&#8226;&#8226;|^&#160;&#160;&#160;eep&lt;--5461&#160;&#160;&lt;head:307445013520196506
    </p>
    <p>
      |&#8226;&#8226;|^&#160;&#160;&#160;eep&lt;--6071&#160;&#160;&lt;head:307445013520196948
    </p>
    <p>
      |&#8226;&#8226;|^&#160;&#160;&#160;eep&lt;--5366&#160;&#160;&lt;head:307445013520195347
    </p>
    <p>
      |&#8226;&#8226;|^&#160;&#160;&#160;eep&lt;--7711&#160;&#160;&lt;head:307445013520196956
    </p>
    <p>
      |&#8226;&#8226;|v&#160;&#160;&#160;eep&lt;--6855&#160;&#160;&lt;head:307445013520193000
    </p>
    <p>
      |**|^ --------------------------------------------Deep-Sleep--&gt;&#160; &lt;head:307445013520185675
    </p>
    <p>
      
    </p>
    <p>
      ++++ WorkForce shut down by destructor ++++
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#4a567e" DESTINATION="ID_1608331813" ENDARROW="Default" ENDINCLINATION="26;-45;" ID="Arrow_ID_7575484" SOURCE="ID_431116549" STARTARROW="None" STARTINCLINATION="-13;120;"/>
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="list"/>
<node CREATED="1698763216370" ID="ID_1607536277" MODIFIED="1698763230249" TEXT="Schedule erzeugen: 1.7ms"/>
<node CREATED="1698763249637" ID="ID_293901108" MODIFIED="1698763257853" TEXT="Ignite: 2ms"/>
<node COLOR="#338800" CREATED="1698764185021" ID="ID_741270682" MODIFIED="1698765729220" TEXT="erwartete Verteilung best&#xe4;tigt">
<icon BUILTIN="button_ok"/>
<node CREATED="1698764201109" ID="ID_827190102" MODIFIED="1698764275205" TEXT="Next ab/im NEAR_HORIZON  &#x27fc; distribute bis 5ms (WORK)"/>
<node CREATED="1698764239350" ID="ID_1548040956" MODIFIED="1698764335693" TEXT="Next ab/im WORK_HORIZON  &#x27fc; distribute bis 20ms (SLEEP)"/>
</node>
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1698765643635" ID="ID_742372602" MODIFIED="1698766602955" TEXT="Verteilung">
<arrowlink DESTINATION="ID_1590538129" ENDARROW="Default" ENDINCLINATION="339;0;" ID="Arrow_ID_1577238331" STARTARROW="None" STARTINCLINATION="96;-127;"/>
<icon BUILTIN="info"/>
<node CREATED="1698765653658" ID="ID_1651893791" MODIFIED="1698765658213" TEXT="einer direkt drauf"/>
<node CREATED="1698765658719" ID="ID_467239608" MODIFIED="1698765681076" TEXT="einer kurz danach (+300&#xb5;s)"/>
<node CREATED="1698765682094" ID="ID_184458839" MODIFIED="1698791968369" TEXT="zweie 2ms danach"/>
<node CREATED="1698765686031" ID="ID_1389709323" MODIFIED="1698765693818" TEXT="die restlichen bis zu 5ms danach verteilt"/>
<node COLOR="#b97609" CREATED="1698765700027" ID="ID_1222051846" MODIFIED="1698765722882" TEXT="ein Traum">
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node CREATED="1698765983126" ID="ID_74453458" MODIFIED="1698766009771" TEXT="der tending-Thread kommt 180&#xb5;s nach Termin"/>
<node CREATED="1698766033001" ID="ID_852386302" MODIFIED="1698766062296" TEXT="der n&#xe4;chste kommt ~ 400&#xb5;s danach">
<node CREATED="1698766153296" ID="ID_642050049" MODIFIED="1698766176049" TEXT="wenn der kommt, hat der erste bereits 70 Activities abgenommen"/>
<node CREATED="1698766239116" ID="ID_1545939367" MODIFIED="1698766613008" TEXT="&#x27f9; ~3&#xb5;s pro Activity">
<arrowlink COLOR="#4354aa" DESTINATION="ID_728621382" ENDARROW="Default" ENDINCLINATION="668;27;" ID="Arrow_ID_1384177508" STARTARROW="None" STARTINCLINATION="73;-8;"/>
</node>
</node>
<node CREATED="1698766064924" ID="ID_991343715" MODIFIED="1698766074499" TEXT="die beiden machen praktisch die ganze Arbeit">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1698791971936" ID="ID_1327073836" MODIFIED="1698791999585" TEXT="einer der 2ms-Threds kommt knapp vor Ende (789 von 800 abgenommen)"/>
<node CREATED="1698792173024" ID="ID_1597815838" MODIFIED="1698792186923" TEXT="Verteilung nach dem 1.Peak">
<icon BUILTIN="forward"/>
<node CREATED="1698792573106" ID="ID_1480449196" MODIFIED="1698792587228" TEXT="bei t=7494&#xb5;s mu&#xdf; der Peak bereits abgearbeitet sein"/>
<node CREATED="1698792188421" ID="ID_673201865" MODIFIED="1698792214246" TEXT="ein Thread outgoing tend-next &#x27f6; t=15ms">
<node CREATED="1698792369750" ID="ID_412822753" MODIFIED="1698792379311" TEXT="bei t=7522&#xb5;s"/>
</node>
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1698792216141" ID="ID_725176619" MODIFIED="1698797268689" TEXT="zwei Threads incomming &#x27f6; deep-sleep">
<arrowlink DESTINATION="ID_1313364590" ENDARROW="Default" ENDINCLINATION="399;0;" ID="Arrow_ID_1314094051" STARTARROW="None" STARTINCLINATION="399;0;"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1698792610653" ID="ID_1934597711" MODIFIED="1698792652000" TEXT="bei t=7523&#xb5;s"/>
<node CREATED="1698792610653" ID="ID_513058891" MODIFIED="1698792615112" TEXT="bei t=7558&#xb5;s"/>
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#830099" CREATED="1698792247014" ID="ID_796773990" LINK="#ID_365902017" MODIFIED="1698799969367" TEXT="wa-rum?">
<icon BUILTIN="help"/>
</node>
</node>
<node CREATED="1698792681075" ID="ID_658360947" MODIFIED="1698792773450" TEXT="der ander 2ms-Thread kommt und &#x27f6; incomming deep-sleep">
<node CREATED="1698792610653" ID="ID_1013792151" MODIFIED="1698792794646" TEXT="bei t=7704&#xb5;s"/>
</node>
</node>
<node CREATED="1698793699931" ID="ID_1855696544" MODIFIED="1698793792445" TEXT="die +4.6 und +5.7-Threads &gt;5ms vor dem n&#xe4;chsten Peak incomming &#x27f6; deep-sleep"/>
<node CREATED="1698793924734" ID="ID_119143995" MODIFIED="1698794005936" TEXT="zwei weitere kommen vor -4.9 und -4.8  incomming &#x27f6; redistributed head+2.3 bzw +3.2"/>
<node CREATED="1698794029297" ID="ID_332516520" MODIFIED="1698794262127" TEXT="next-Tending (kommt ca ~100&#xb5;s nach Termin)  &#x27f6;  arbeitet an 2.Peak"/>
<node CREATED="1698795325418" ID="ID_1884438721" MODIFIED="1698795390782" TEXT="zwei weitere kommen +2.3 (+~150&#xb5;s) und +3.2 (+~100&#xb5;s)"/>
<node CREATED="1698795401561" ID="ID_547207878" MODIFIED="1698796554737" TEXT="Verteilung nach dem 2.Peak">
<icon BUILTIN="forward"/>
<node CREATED="1698795434152" ID="ID_599794715" MODIFIED="1698795472788" TEXT="zwischen t=18810 und t=18882 mu&#xdf; der Peak beended worden sein"/>
<node CREATED="1698795478752" ID="ID_425015728" MODIFIED="1698795521119" TEXT="mit gleicher sichtbarer Head-Distance (&#x27f9; gleiches `now`) werden 3 Threads weggeschickt"/>
<node CREATED="1698795526995" ID="ID_1869590684" MODIFIED="1698795591655" TEXT="einer outgoing tend-next"/>
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1698795534557" ID="ID_1581779833" MODIFIED="1698797268689" TEXT="wieder zwei incoming &#x27f6; deep-sleep">
<arrowlink DESTINATION="ID_1313364590" ENDARROW="Default" ENDINCLINATION="205;0;" ID="Arrow_ID_1740294639" STARTARROW="None" STARTINCLINATION="205;0;"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1698792610653" ID="ID_887114285" MODIFIED="1698795584712" TEXT="bei t=18.882ms"/>
</node>
</node>
<node CREATED="1698796684991" ID="ID_1122754688" MODIFIED="1698796710967" TEXT="die zwei deep-sleeps kommen dicht zusammen um 39ms"/>
<node CREATED="1698796761014" ID="ID_961580466" MODIFIED="1698796789716" TEXT="um 27ms drei sleeper, die um 47 wieder zusammen auftauchen"/>
<node CREATED="1698796802953" ID="ID_288874835" MODIFIED="1698796847029" TEXT="nun werden sie (und weitere aber hinter dem &#xbb;Tick&#xab; verteilt (1..4ms)"/>
<node CREATED="1698796887732" ID="ID_1205854372" MODIFIED="1698796904725" TEXT="nach dem Tick wird ein Thread redistributed +6.9ms"/>
</node>
<node COLOR="#435e98" CREATED="1698797183388" FOLDED="true" ID="ID_1573620591" MODIFIED="1698799351388" TEXT="Auff&#xe4;lligkeiten">
<icon BUILTIN="messagebox_warning"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1698797189100" ID="ID_1274008072" MODIFIED="1698798401099" TEXT="der averageLag wird nicht aktualisiert wenn Threads outgoing in den Schlaf geschickt werden"/>
<node BACKGROUND_COLOR="#e8dfb2" COLOR="#a50125" CREATED="1698797231341" ID="ID_1313364590" MODIFIED="1698799373623" TEXT="es werden mehrere Threads direkt nach dem Peak incoming in deep-sleep geschickt">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1313364590" ENDARROW="Default" ENDINCLINATION="399;0;" ID="Arrow_ID_1314094051" SOURCE="ID_725176619" STARTARROW="None" STARTINCLINATION="399;0;"/>
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1313364590" ENDARROW="Default" ENDINCLINATION="205;0;" ID="Arrow_ID_1740294639" SOURCE="ID_1581779833" STARTARROW="None" STARTINCLINATION="205;0;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1698798540976" ID="ID_365902017" MODIFIED="1698798566907" TEXT="nach Zustands-Logik kann das nur bedeuten: haben das Grooming-Token nicht bekommen">
<icon BUILTIN="idea"/>
</node>
<node BACKGROUND_COLOR="#e3d08f" COLOR="#83564e" CREATED="1698798569052" ID="ID_760149120" MODIFIED="1698798628994" TEXT="Ha! in diesem Test arbeitet jeweils nur ein einziger Thread">
<icon BUILTIN="broken-line"/>
<node CREATED="1698798635419" ID="ID_1060872802" MODIFIED="1698798647460" TEXT="weil ich blo&#xdf; eine einzige FEED-Activity verwendet habe"/>
<node CREATED="1698798647969" ID="ID_830674640" MODIFIED="1698798653517" TEXT="das Grooming-Token wird gehalten"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1698798654296" ID="ID_1906258738" MODIFIED="1698800165036" TEXT="und durch meine Abk&#xfc;rzung bleibt dieser eine Thread im Grooming-Modus">
<arrowlink COLOR="#723046" DESTINATION="ID_1484610310" ENDARROW="Default" ENDINCLINATION="769;783;" ID="Arrow_ID_144800948" STARTARROW="None" STARTINCLINATION="660;-142;"/>
<icon BUILTIN="clanbomber"/>
</node>
<node CREATED="1698799126489" ID="ID_907167005" MODIFIED="1698799162285" TEXT="die Zeitmessungen best&#xe4;tigen das: Konsistent 3-5&#xb5;s / Abarbeitung">
<icon BUILTIN="forward"/>
</node>
<node CREATED="1698799110379" ID="ID_961144930" MODIFIED="1698799332771" TEXT="betrachte ich aber trotzdem nur als ein Artefakt dieses Test-Setup">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Und zwar weil f&#252;r jeden targeted-Sleep und jeden R&#252;ckgabewert != PASS ja doch automatisch das Token gedropped wird. Deshalb ist nicht einmal der &#187;Tick&#171; ein Problem (ja der droppt es nicht). Nur wenn eine Interne Verarbeitung in Schleifen gehen w&#252;rde, h&#228;tten wir ein Problem. Dazu m&#252;&#223;te sie sich selbst ohne Zeitversatz wieder einplanen (bzw. die Scheduler-Zeitachse m&#252;&#223;te geflutet sein)
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1698799381303" FOLDED="true" ID="ID_1393749600" MODIFIED="1698799395610">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <b>Fazit</b>: works as designed
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="forward"/>
<node CREATED="1698799397397" ID="ID_985998010" MODIFIED="1698799415311" TEXT="dieser Test l&#xe4;&#xdf;t effektiv nur einen Thread die ganze Arbeit machen"/>
<node CREATED="1698799415850" ID="ID_967384012" MODIFIED="1698799478469" TEXT="die sich dabei ergebenden Timings sind aber recht ordentlich (Debug-Modus &lt;5&#xb5;s / Aufruf)"/>
<node CREATED="1698799483442" ID="ID_429959322" MODIFIED="1698799507186" TEXT="deshalb kann auch der Load-Indikator l&#xe4;nger oben h&#xe4;ngen bleiben"/>
<node CREATED="1698799518965" ID="ID_431143838" MODIFIED="1698799666998">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      die Kapazit&#228;ts-Verteilung wurde expizit gepr&#252;ft und <b>arbeitet sehr gut</b>
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <ul>
      <li>
        das gesamte Verhalten ist wie definiert
      </li>
      <li>
        selbst unter den hier ung&#252;nstigen Umst&#228;nden, wo Threads b&#252;ndelweise in den deep-sleep geschickt werden, erfolgt sp&#228;testens bei Ann&#228;herung an den n&#228;chsten Peak eine Umverteilung
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node CREATED="1698799674792" ID="ID_632270963" MODIFIED="1698799840904" TEXT="sollte aber die Last-Berechnung anpassen">
<arrowlink COLOR="#4b5ab6" DESTINATION="ID_353378905" ENDARROW="Default" ENDINCLINATION="-845;50;" ID="Arrow_ID_1142667813" STARTARROW="None" STARTINCLINATION="-120;-9;"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1698807529025" ID="ID_109672823" MODIFIED="1698807573123" TEXT="Anzeige">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1698807533649" ID="ID_671686548" MODIFIED="1698807571388" TEXT="lasse das Polling dauerhaft die Last und den Lag anzeigen">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1698807553430" ID="ID_496280476" MODIFIED="1698807569742" TEXT="au&#xdf;erdem eine Tabelle mit den Ergebnissen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1698807561838" ID="ID_885881383" MODIFIED="1698807567263" TEXT="erst zuletzt die Verifikationen">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1698717098815" ID="ID_1125851674" MODIFIED="1698807521682" TEXT="sinnvolle Verifikation f&#xfc;r den Load-Verlauf?">
<icon BUILTIN="help"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1698717134618" ID="ID_647920304" MODIFIED="1698807489923" TEXT="Probleme">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1698717139679" ID="ID_741586859" MODIFIED="1698717189427" TEXT="wir haben eine Offset">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      weil das Beladen und Starten des Schedulers erhebliche Zeit kostet (und nicht pr&#228;zise ist)
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1698717192099" ID="ID_981872386" MODIFIED="1698717205321" TEXT="man mu&#xdf; dann die Load-Peaks &quot;erwischen&quot;"/>
</node>
<node CREATED="1698807490718" ID="ID_1537156793" MODIFIED="1698807507860" TEXT="L&#xf6;sung: pollen und State-Machine mitlaufen lassen"/>
<node CREATED="1698807508700" ID="ID_207855735" MODIFIED="1698807520054" TEXT="Zeitpunkte Messen und grobes Raster best&#xe4;gien"/>
</node>
<node COLOR="#338800" CREATED="1698592075524" ID="ID_202320750" MODIFIED="1698807891425" TEXT="Test f&#xfc;r selbst&#xe4;ndiges Deaktivieren bei leerer Queue">
<linktarget COLOR="#3e9b94" DESTINATION="ID_202320750" ENDARROW="Default" ENDINCLINATION="-1156;-61;" ID="Arrow_ID_727945119" SOURCE="ID_191013179" STARTARROW="None" STARTINCLINATION="61;1261;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1698807894416" ID="ID_20635201" MODIFIED="1698807913644" TEXT="einfach am Ende nochmal in einer while-Schleife warten">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1698807904784" ID="ID_1752567594" MODIFIED="1698807913182" TEXT="verifizieren, da&#xdf; es mehr als 2 sec sind">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1698592582560" ID="ID_953889358" MODIFIED="1698807916661" TEXT="mu&#xdf; daf&#xfc;r ca 2sec warten">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1698592605242" ID="ID_233491478" MODIFIED="1698592613559" TEXT="auf Dauer kann man diesen Test deaktivieren"/>
<node CREATED="1698592614124" ID="ID_696418800" MODIFIED="1698592633653" TEXT="oder wir f&#xfc;hren l&#xe4;ngerfristig mal verschiedene Test-Tiefen ein"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1698807920004" ID="ID_1009945367" MODIFIED="1698807932771" TEXT="oder man akzeptiert das hier einfach mal">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1698247388556" FOLDED="true" ID="ID_1402046356" MODIFIED="1698448243571" TEXT="invokeWorkFunction">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1698247394051" ID="ID_198829622" MODIFIED="1698247420009" TEXT="kann einfachen Aufruf einer vorher eingespielten Activity belegen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1698275364348" ID="ID_353022740" MODIFIED="1698275448819" TEXT="kann direkt weitergeleitete Invocation zeigen">
<linktarget COLOR="#e9fea5" DESTINATION="ID_353022740" ENDARROW="Default" ENDINCLINATION="-90;-5;" ID="Arrow_ID_187000480" SOURCE="ID_1052614531" STARTARROW="None" STARTINCLINATION="51;7;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1698282705004" ID="ID_414397611" MODIFIED="1698282730689" TEXT="kann pullWork()-Delay und schedule-Verz&#xf6;gerung (slip) messen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1698282777051" ID="ID_1817040421" MODIFIED="1698282807346" TEXT="direkt f&#xe4;llige Aufrufe passieren mit &lt;100&#xb5;s slip">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1698284606988" ID="ID_936409120" MODIFIED="1698284613772" TEXT="delay davor">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1698284614614" ID="ID_98846661" MODIFIED="1698284618170" TEXT="delay danach">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1698448228557" ID="ID_238462097" MODIFIED="1698448239965" TEXT="re-Fokussieren der Kapazit&#xe4;t">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1699243246184" FOLDED="true" ID="ID_834498549" MODIFIED="1699498706619" TEXT="scheduleRenderJob">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1699243261338" ID="ID_266519660" MODIFIED="1699310655097" TEXT="verwendet einen Job vom ActivityDetector">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1699243350122" ID="ID_175313196" MODIFIED="1699310659416" TEXT="&#xfc;bergibt den per Builder-API an den Scheduler">
<arrowlink COLOR="#33aaf4" DESTINATION="ID_1142273023" ENDARROW="Default" ENDINCLINATION="-737;663;" ID="Arrow_ID_891496003" STARTARROW="None" STARTINCLINATION="1218;-76;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1699243361425" ID="ID_565283839" MODIFIED="1699472780291" TEXT="ruft die work-Function direkt auf">
<icon BUILTIN="button_ok"/>
<node CREATED="1699328505477" ID="ID_1796712383" MODIFIED="1699328750570" TEXT="keine WorkForce">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1699328515692" ID="ID_649427536" MODIFIED="1699328747184" TEXT="das ist problematisch">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Aus Sicht des Testaufbaues w&#228;re es sehr w&#252;nschenswert. Aber da das Scheduler-API high-Level ist, sehe ich keine einfache M&#246;glichkeit, f&#252;r einen Test dazwischen zu gehen. Ein Mocking / Austauschen des Scheduler w&#228;re hier nicht zielf&#252;hrend (weil es genau auf die Interaktion mit der integrierten Scheduler-Implementierung ankommt).
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1699328525667" ID="ID_956033802" MODIFIED="1699328535177" TEXT="WorkForce skaliert automatisch">
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#435e98" CREATED="1699328910407" FOLDED="true" ID="ID_337063855" MODIFIED="1699472777212" TEXT="Ausweg: WorkForce-St&#xe4;rke manipulieren">
<icon BUILTIN="idea"/>
<node CREATED="1699328956633" ID="ID_1757255005" MODIFIED="1699368367892" TEXT="das w&#xe4;re dann ein WorkForce-Betriebsparameter">
<arrowlink COLOR="#786a97" DESTINATION="ID_1177531499" ENDARROW="Default" ENDINCLINATION="-920;53;" ID="Arrow_ID_1670167461" STARTARROW="None" STARTINCLINATION="61;-138;"/>
</node>
<node CREATED="1699328938838" ID="ID_320672850" MODIFIED="1699328955077" TEXT="jetzt brauche ich nur noch eine gute Ausrede f&#xfc;r die Existenz"/>
<node CREATED="1699329004755" ID="ID_1129379540" MODIFIED="1699329037293" TEXT="Ausrede: &#x201e;Headroom f&#xfc;r andere Prozesse lassen&#x201c;">
<icon BUILTIN="ksmiletris"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1699243391733" ID="ID_1214068544" MODIFIED="1699472763073" TEXT="verifiziert Aufruf per Log">
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1699313612489" ID="ID_550874585" MODIFIED="1699472757847" TEXT="Fehler in der Schedule/Dispatch-Logik">
<arrowlink COLOR="#1d60f9" DESTINATION="ID_1032033223" ENDARROW="Default" ENDINCLINATION="-973;63;" ID="Arrow_ID_46385590" STARTARROW="None" STARTINCLINATION="630;-68;"/>
<icon BUILTIN="broken-line"/>
</node>
<node COLOR="#435e98" CREATED="1699472790287" ID="ID_825157701" MODIFIED="1699472819342" TEXT="Anpassung: ohne WorkForce und Layer2.maybeFeed()">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697755558855" ID="ID_278365674" MODIFIED="1697741858009" TEXT="SchedulerStress_test">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1688337200875" ID="ID_1251284763" MODIFIED="1697735887738" TEXT="Nonfunktionale Anforderungen">
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697473158929" ID="ID_555722340" MODIFIED="1697493162215" TEXT="Aufgaben">
<icon BUILTIN="yes"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697733005253" ID="ID_284566035" MODIFIED="1697735902191" TEXT="Leerlauf-Stresstest">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1697733279313" ID="ID_1511632308" MODIFIED="1697734150888" TEXT="Ziel: Feststellen des Implementierungs-Overhead">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Einen komplett leeren Job-Funktor wiederholt back-to-back (ohne Wartezeit) aufrufen; dabei das System nicht in die S&#228;ttigung treiben
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1697979852789" ID="ID_256258060" MODIFIED="1697982148553" TEXT="dient auch dem Aufbau einer Perfomance-Me&#xdf;einrichtung">
<arrowlink COLOR="#ffd3a8" DESTINATION="ID_1502196172" ENDARROW="Default" ENDINCLINATION="-417;-573;" ID="Arrow_ID_1874842097" STARTARROW="None" STARTINCLINATION="-1430;70;"/>
</node>
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1697734151893" ID="ID_674126526" MODIFIED="1697734162364" TEXT="Problem: Laststeuerung">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1697734165115" ID="ID_1491991406" MODIFIED="1697734182886" TEXT="das sonstige System darf nicht in S&#xe4;ttigung gehen"/>
<node CREATED="1697734183385" ID="ID_883287538" MODIFIED="1697734192010" TEXT="der BlockFlow-Allocator darf nicht degenerieren"/>
<node CREATED="1697734330989" ID="ID_1732860802" MODIFIED="1697734334809" TEXT="L&#xf6;sungsans&#xe4;tze">
<node CREATED="1697734356370" ID="ID_1254835839" MODIFIED="1697734436578" TEXT="WorkForce nicht ganz auf Volllast">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      z.B. 7 Cores auf meinem 8-Core-System &#8212; damit die <i>sonstigen Sytem-aktivit&#228;ten</i>&#160;nicht zu Stau-Zust&#228;nden f&#252;hren
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1697734513005" ID="ID_803781887" MODIFIED="1697734840822" TEXT="immer nur eine Epoche rechnen mit Deadline=ASAP">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      immer nur so viele Jobs einstellen, da&#223; eine Epoche nicht ganz voll wird; aber die Startzeiten extrem dicht zusammen legen, so da&#223; im alles effektiv sofort berechenbar wird; dann kann man sinnvoll messen, wenn alles abgearbeitet ist: dazu einen Zeitmesser-Job verwenden; man kann die Zeitmessung <i>vor</i>&#160;oder <i>nach</i>&#160;dem Einstellen der Jobs starten
    </p>
  </body>
</html></richcontent>
<node COLOR="#5b280f" CREATED="1699653854638" ID="ID_983038050" MODIFIED="1699653898164" TEXT="skeptisch....">
<icon BUILTIN="stop-sign"/>
</node>
<node CREATED="1699653869660" ID="ID_1500257692" MODIFIED="1699653895706" TEXT="Es ist stets die OS-Scheduler-Verz&#xf6;gerung mit dabei">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1697734845040" ID="ID_348047225" MODIFIED="1697735849618" TEXT="Last mit ged&#xe4;mpfter R&#xfc;ckkopplung geregelt hochfahren bis zur S&#xe4;ttigung">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Bei diesem Ansatz wird eine Dauerlast erzeugt, indem immer ein Planungs-Chunk eine Zahl an Jobs erzeugt, die im Verh&#228;ltnis zur Epochen-Gr&#246;&#223;e steht (dabei kann auch durchaus auf eine &#220;berlastung des BlockFlow-Allokators abgezielt werden, indem man immer das N-Fache der Block-Kapazit&#228;t einstellt). Diese Jobs werden getaktet gem&#228;&#223; der aktuellen Dichte, aber diese Dichte wird langsam gesteigert, bis ein Feedback-Signal auftritt: n&#228;mlich wenn der reale Zeitpunkt des n&#228;chsten Planungs-Chunks versp&#228;tet ist, dann elastisch zur&#252;ckregeln. Bei richtiger Abstimmung sollte sich dann ein &#187;Lockstate&#171; einstellen, von dem man einen Me&#223;wert f&#252;r die erreichbare Dichte ablesen kann
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697733137628" ID="ID_1249232397" MODIFIED="1697733148339" TEXT="Dependency-Notification-Stresstest">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1697733314115" ID="ID_537940927" MODIFIED="1697736103683" TEXT="Ziel: Overhead exzessiv vernetzter Activities">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Sollte ausgef&#252;hrt werden wie der normale Leerlauf-Stresstest, aber nun mit zus&#228;tzlichen und zunehmend exzessiven Dependencies/Notifications in der kette; beobachtet wird die Degeneration der Leerlauf-Kapazit&#228;t
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697733236455" ID="ID_698621499" MODIFIED="1697733269203" TEXT="Realtime Full-Load Test">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1697733438012" ID="ID_18653531" MODIFIED="1697733448582" TEXT="Ziel: Vollast unter Zeitbeschr&#xe4;nkung"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697736109528" ID="ID_1697493338" MODIFIED="1697736119264" TEXT="Correctness under Load">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1697736121279" ID="ID_1940006605" MODIFIED="1697736240729" TEXT="Ziel: Fehler in der Ausf&#xfc;hrungslogik ausschlie&#xdf;en">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Anders als in den Leerlauf-Tests wird hier eine &#252;berpr&#252;fbare Berechnung ausgef&#252;hrt, die aber auch Dependencies mit einschlie&#223;t. Auch unter Vollast mu&#223; die Pr&#252;fsumme korrekt sein. F&#252;r diesen Test k&#246;nnte man das System sogar kurzzeitig extrem in die S&#228;ttigung treiben (und trotzdem mu&#223; das Ergebnis stimmen)
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1695555555555" ID="ID_1032000470" MODIFIED="1697744929394" TEXT="#1344 Implement performance Tests for Scheduler">
<linktarget COLOR="#fde0ca" DESTINATION="ID_1032000470" ENDARROW="Default" ENDINCLINATION="-1678;88;" ID="Arrow_ID_552669850" SOURCE="ID_849227497" STARTARROW="None" STARTINCLINATION="-1536;97;"/>
<icon BUILTIN="flag-pink"/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1697741769556" ID="ID_1899821736" MODIFIED="1697741852506" TEXT="brauche eine reproduzierbare komplexe Last">
<arrowlink COLOR="#9b2277" DESTINATION="ID_509932054" ENDARROW="Default" ENDINCLINATION="-374;-90;" ID="Arrow_ID_1082315358" STARTARROW="None" STARTINCLINATION="-1039;60;"/>
<icon BUILTIN="flag-pink"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697732758603" ID="ID_1796420959" MODIFIED="1697741861608" TEXT="SchedulerUsage_test">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1688337200875" ID="ID_470331599" MODIFIED="1697732829679" TEXT="Scheduler Service as seen from outside">
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697473158929" ID="ID_966442877" MODIFIED="1697493162215" TEXT="Aufgaben">
<icon BUILTIN="yes"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697484506891" ID="ID_769714933" MODIFIED="1697732878690" TEXT="Verwendung des Scheduler-API">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697736275498" ID="ID_1296200966" MODIFIED="1697736334906" TEXT="Einsatz wie im Play-Process">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Es wird aber kein Play-Prozess gebaut, sondern die entsprechende Funktionalit&#228;t direkt aus dem Test aufgebaut
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1688051068000" ID="ID_555375367" MODIFIED="1689994063022" TEXT="Thema: Arbeitsspeicher">
<icon BUILTIN="bell"/>
<node CREATED="1688051147135" ID="ID_1865550842" MODIFIED="1688051346737" TEXT="aktive Steuerung zwingend erforderlich">
<icon BUILTIN="yes"/>
<node CREATED="1688051648500" ID="ID_568573885" MODIFIED="1688051651877" TEXT="concurrent"/>
<node CREATED="1688051250601" ID="ID_1958866301" MODIFIED="1688051258062" TEXT="Leerlauf begrenzen"/>
<node CREATED="1688051259016" ID="ID_216246633" MODIFIED="1688051265338" TEXT="Fragmentierung verhindern"/>
<node CREATED="1688051303633" ID="ID_837527400" MODIFIED="1688051334263" TEXT="Verweise ohne Pr&#xfc;fung erm&#xf6;glichen"/>
<node CREATED="1688051266167" ID="ID_237996247" MODIFIED="1688051279937" TEXT="Keine Einzelfall-Suche und -Verwaltung"/>
</node>
<node CREATED="1688051375174" ID="ID_1732350232" MODIFIED="1689993770143" TEXT="m&#xf6;gliche Modelle">
<icon BUILTIN="idea"/>
<node COLOR="#5b280f" CREATED="1688051443983" ID="ID_1229960682" MODIFIED="1688051687690" TEXT="einfacher Kachel-Pool">
<icon BUILTIN="button_cancel"/>
<node CREATED="1688051454370" ID="ID_227724531" MODIFIED="1688051487509" TEXT="leistet schnelle Allokation"/>
<node CREATED="1688051491134" ID="ID_977394615" MODIFIED="1688051514000" TEXT="nicht Cache-freundlich (Fragmentierung)"/>
<node CREATED="1688051514595" ID="ID_1917862188" MODIFIED="1688051532345" TEXT="keine Unterst&#xfc;tzung zur de-Allokation"/>
</node>
<node CREATED="1688051694894" ID="ID_1073939757" MODIFIED="1688051704131" TEXT="Cluster mit count-down">
<node CREATED="1688052608171" ID="ID_1055878278" MODIFIED="1688053269207" TEXT="Eigenschaften um den Faktor der Cluster-Gr&#xf6;&#xdf;e ged&#xe4;mpft">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Dieses Schema hat grunds&#228;tzlich die gleichen Charakteristiken wie ein flacher Kachel-Pool, aber die Cluster-Gr&#246;&#223;e wirkt als <i>Hebel:</i>&#160; zusammengeh&#246;rige Elemente liegen im Cluster und sind damit cache-freundlicher. Fragementierung findet zwar statt, aber auf Cluster-Ebene; deshalb braucht man auch weiterhin eine Free-List, aber auch diese wird nur einmal pro Cluster aktualisiert.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1688052644942" ID="ID_589962239" MODIFIED="1688053388040" TEXT="Pro Kette eine Notification auf ein Cluster-Gate">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Am Ende einer Kette von Activities mu&#223; eine Spezialbehandlung liegen, die die L&#228;nge der Kette wei&#223;; zus&#228;tzlich kompliziert wird es, wenn diese Kette nicht in einen Cluster pa&#223;t (dann braucht es mehrere Notifications). Im Commutator ist spezielle Logik notwendig, die die Ausf&#252;hrung dieser Freigabe-Benachrichtigungen sicherstellt, damit diese dann ein gemeinsames Cluster-Gate dekrementieren, das in der ersten Allokation des Clusters liegt (und insofern Platz verschwendet)
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1688053388889" ID="ID_1778479709" MODIFIED="1688053515642" TEXT="Vorteil: gute Speicherauslastung und wenig contention-Probleme"/>
</node>
<node COLOR="#435e98" CREATED="1688053526333" ID="ID_617675303" MODIFIED="1689993854261" TEXT="Epochen-Pools">
<linktarget COLOR="#929ace" DESTINATION="ID_617675303" ENDARROW="Default" ENDINCLINATION="-97;16;" ID="Arrow_ID_359478919" SOURCE="ID_1880692941" STARTARROW="None" STARTINCLINATION="-8;-22;"/>
<node CREATED="1688053638890" ID="ID_276255064" MODIFIED="1688053999948" TEXT="alle Activities bis zu einer Deadline sch&#xf6;pfen aus einem Pool"/>
<node CREATED="1688054012571" ID="ID_1965757784" MODIFIED="1688054041039" TEXT="Vorteil: keinerlei Einzelfallpr&#xfc;fung notwendig"/>
<node CREATED="1688054042658" ID="ID_593771141" MODIFIED="1688054900987" TEXT="Nachteil: Speicher bleibt bis zur Deadline nutzlos geblockt">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Komplexe zeitliche Struktur, die auch zwingend zu einem gewissen Leerlauf f&#252;hrt, man braucht also reichlich Speicher. Au&#223;erdem ist nicht von Vornherein klar, wie viel Speicher bis zu einer Deadline noch gebraucht wird; man steht dadurch vor der Wahl, entweder Fragmentierungin Kauf zu nehmen, oder eben &#252;bersch&#252;ssige Allokationen der n&#228;chsten Deadline zuzuschlagen, wodurch sie dann unn&#246;tig lange geblockt gehalten werden m&#252;ssen
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1688054070707" ID="ID_1810534883" LINK="#ID_962187682" MODIFIED="1693225337721" TEXT="Achtung: kann nicht mit Activities ohne Deadline umgehen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Das f&#252;hrt zu einer Komplikation, da es solche Activities geben wird (Render-to-File, background activities); es mu&#223; dann eine pseudo-Deadline eingef&#252;hrt werde, bei deren &#220;berschreitung ein re-Scheduling in einen neuen Pool erfolgt. Ebenso stellen Deadlines weit in der Zukunft ein Problem dar
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1688054956464" ID="ID_1119280437" MODIFIED="1688055235864" TEXT="Gefahr: h&#xe4;ngende oder verz&#xf6;gerte Worker">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      man mu&#223; f&#252;r jeden Worker mitverfolgen, ob er die Epoche verlassen hat; das ist so nicht ohne Weiteres m&#246;glich, da es Activities geben k&#246;nnte, die sp&#228;ter gestartet werden aber doch eine knappere Deadline haben (und damit noch in eine fr&#252;here Epoche fallen w&#252;rden) &#8212; man m&#252;&#223;te also warten, bis die Startzeitpunkte hinter der Deadline der Epoche liegen
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1688055236771" FOLDED="true" ID="ID_1880692941" MODIFIED="1689560781065" TEXT="Entscheidung f&#xfc;r ein Schema">
<arrowlink COLOR="#929ace" DESTINATION="ID_617675303" ENDARROW="Default" ENDINCLINATION="-97;16;" ID="Arrow_ID_359478919" STARTARROW="None" STARTINCLINATION="-8;-22;"/>
<icon BUILTIN="yes"/>
<node CREATED="1688055361612" ID="ID_1809618499" MODIFIED="1688057881911" TEXT="Cluster/count-down ist &#x201e;sch&#xf6;n&#x201c; &#x2014; aber leider nur auf den ersten Blick"/>
<node CREATED="1688055245099" ID="ID_1913128751" MODIFIED="1688057920440" TEXT="das Epochen-Schema...">
<icon BUILTIN="forward"/>
<node CREATED="1688055314853" ID="ID_139103719" MODIFIED="1688055323011" TEXT="w&#xe4;re sehr attraktiv"/>
<node CREATED="1688055324316" ID="ID_1821002553" MODIFIED="1688055329362" TEXT="wirft aber ungekl&#xe4;rte Probleme auf"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1688057886935" ID="ID_1953816732" MODIFIED="1688258403484" TEXT="Entscheidung: per Erweiterung l&#xf6;sen!">
<arrowlink COLOR="#6f1a2f" DESTINATION="ID_1770745874" ENDARROW="Default" ENDINCLINATION="10;-56;" ID="Arrow_ID_207766086" STARTARROW="None" STARTINCLINATION="-118;8;"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1688057922146" ID="ID_1770745874" MODIFIED="1688258403484" TEXT="Erweiterungen">
<linktarget COLOR="#6f1a2f" DESTINATION="ID_1770745874" ENDARROW="Default" ENDINCLINATION="10;-56;" ID="Arrow_ID_207766086" SOURCE="ID_1953816732" STARTARROW="None" STARTINCLINATION="-118;8;"/>
<node CREATED="1688057954745" ID="ID_1000550033" MODIFIED="1688057976503" TEXT="die Schrittweite zu belegender Epochen ist dynamisch reguliert"/>
<node CREATED="1688057988746" ID="ID_852809059" MODIFIED="1688058006097" TEXT="Epochen werden bis zu einem gewissen Limit bei Bedarf ge&#xf6;ffnet"/>
<node COLOR="#5b280f" CREATED="1688058008286" ID="ID_1395550013" MODIFIED="1688776318888" TEXT="dar&#xfc;ber hinausgehende Activities werden per &#xbb;post&#xab; dargestellt">
<icon BUILTIN="button_cancel"/>
<node CREATED="1688776325334" ID="ID_1313006156" MODIFIED="1688776352816" TEXT="Nein! das sprengt den Rahmen">
<icon BUILTIN="stop-sign"/>
</node>
<node CREATED="1688776353810" ID="ID_841571212" LINK="#ID_263429425" MODIFIED="1688776374015" TEXT="stattdessen als Exception werten">
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1688058076006" ID="ID_47142249" MODIFIED="1688337534216">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Allokationen erfolgen <b>single-threaded</b>, unter <b>GroomingToken</b>
    </p>
  </body>
</html></richcontent>
<node CREATED="1688058168929" ID="ID_1643083423" MODIFIED="1688058185536" TEXT="die meisten Allokationen stammen aus Planungs-Jobs">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1688058144285" ID="ID_116746560" MODIFIED="1688058160770" TEXT="das vereinfacht die Aufgabe dramatisch">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1688058192795" ID="ID_761011342" MODIFIED="1688058211628" TEXT="extern eingestellte Activities kommen per &#xbb;post&#xab;">
<node CREATED="1688058229693" ID="ID_423749722" MODIFIED="1688058256265" TEXT="&#xbb;post&#xab; bedeutet re-Allokation in eine Epoche gem&#xe4;&#xdf; Deadline"/>
<node CREATED="1688058271259" ID="ID_1955580898" MODIFIED="1688058284477" TEXT="ein externer &#xbb;post&#xab; wird Heap-alloziert"/>
<node CREATED="1688058307358" ID="ID_1066116422" MODIFIED="1688058331601" TEXT="eine Spezial-Flag signalisiert, da&#xdf; er nach Ausf&#xfc;hrung aktiv verworfen wird"/>
<node CREATED="1688077690455" ID="ID_1592564258" MODIFIED="1688078101913" TEXT="Komplikation:zus&#xe4;tzlicher Epochen-Check bei externen Triggern notwendig">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ein externer Trigger kann einen &#187;post&#171; ausl&#246;sen; da ein solcher Trigger auch noch versp&#228;tet auftreten kann (nach &#220;berschreiten der Deadline), mu&#223; nochmal explizit gepr&#252;ft werden, ob die Epoche &#8222;noch lebt&#8220;, bevor man in ihr eine Activity ausl&#246;st. Das bedingt aber zumindest noch <i>einen beweglichen Parameter </i>f&#252;r einen generischen Funktor, der irgendwo gespeichert werden mu&#223; (und nicht in der Storage der Epoche selber liegen kann).
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1688163354228" ID="ID_763105814" MODIFIED="1688163732289" TEXT="es gen&#xfc;gt nicht, ausgebliebene Callbacks nur zu erkennen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...vielmehr mu&#223; man den Callback <i>selber &#8222;erwischen&#8220; und unsch&#228;dlich machen, </i>bevor er bereits wiederverwendete Storage anspricht
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="stop-sign"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1688163672758" ID="ID_1234286909" MODIFIED="1688163732290" TEXT="auch die f&#xfc;r die Daten vorgehaltenen Buffer sind Teil des Problems">
<icon BUILTIN="clanbomber"/>
</node>
<node CREATED="1688163467818" ID="ID_116134089" MODIFIED="1688163480661" TEXT="entweder der Callback bietet noch ein zus&#xe4;tzliches Argument"/>
<node CREATED="1688163493526" ID="ID_10773626" MODIFIED="1688258346243" TEXT="oder man kann einen Timeout setzen">
<icon BUILTIN="button_cancel"/>
<node CREATED="1688258348550" ID="ID_1696061672" MODIFIED="1688258367827" TEXT="geht nicht">
<icon BUILTIN="closed"/>
</node>
<node CREATED="1688258352630" ID="ID_1565684116" MODIFIED="1688258373752" TEXT="widerspricht der Idee von Async-IO">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
<node CREATED="1688058581274" ID="ID_479775577" MODIFIED="1688058598373" TEXT="Epochen sind untereinander verzeigert und bilden eine Ringstruktur"/>
</node>
<node CREATED="1688258518472" ID="ID_1814030410" MODIFIED="1688258528453" TEXT="Problem: verz&#xf6;gerte Jobs">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1688258581519" ID="ID_274521183" MODIFIED="1688258587020" TEXT="unvermeidbar">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1688258543988" ID="ID_1398474376" MODIFIED="1688258589885" TEXT="mu&#xdf; dagegen eigens absichern">
<icon BUILTIN="yes"/>
<node CREATED="1688258594853" ID="ID_1346688484" MODIFIED="1688337515621" TEXT="CPU-bound Jobs kann man &#xfc;ber einen &#xbb;water-level&#xab; pro Worker absichern">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      da Jobs nach Zeit geordnet aktiviert werden, kann man f&#252;r jeden Worker eine Markierung der aktuellen Epoche erzeugen; sie w&#228;re jeweils zu aktualisieren, wenn ein Worker das GroomingToken abgibt... (und damit in einen Render-Job einsteigt) &#8212; mithin lie&#223;e sich feststellen, wenn alle Worker eine Epoche <i>verlassen haben.</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1688258639519" ID="ID_253828146" MODIFIED="1688512561410" TEXT="Async-IO dagegen braucht zwingend einen aktiv-Z&#xe4;hler">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Es handelt sich hierbei um ein <b>grunds&#228;tzliches Problem</b>. Es liegt in der Natur von IO, da&#223; eine solche Operation eine unbestimmte Zeit dauern kann; und diese Zeit kann ganz erheblich sein, wenn das IO-Subsystem &#252;berlastet wird. Es gibt keine M&#246;glichkeit, eine IO-Operation abzubrechen; vielmehr kommen <i>die Daten irgendwann an, und landen dann in dem daf&#252;r vorgesehenen Buffer. </i>Und solange das nicht passiert ist, mu&#223; der Buffer und der Callback im Speicher bereitliegen. Ich sehe keine andere M&#246;glichkeit, als f&#252;r jede Epoche einen Z&#228;hler aller schwebenden IO-Operationen mitzuf&#252;hren. Mithilfe der &#187;post&#171;, &#187;notify&#171; und &#187;gate&#171;-Activities lie&#223;e sich das jedoch single-threaded verwirklichen &#8212; Synchronisations-Effekte treten daher nur f&#252;r Threads, die grade eine IO-Operation abgeschlossen haben, sowie den Thread, der das GroomingToken h&#228;lt
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#537a8e" DESTINATION="ID_253828146" ENDARROW="Default" ENDINCLINATION="399;21;" ID="Arrow_ID_1328212863" SOURCE="ID_900655074" STARTARROW="None" STARTINCLINATION="508;-25;"/>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1689531790724" ID="ID_1704448031" MODIFIED="1689531819648" TEXT="Achtung: nachfolgende Epochen m&#xfc;ssen dann ebenfalls geblockt bleiben">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1689531829719" ID="ID_1345957501" MODIFIED="1689531834674" TEXT="t&#xfc;ckische Falle"/>
<node CREATED="1689531835390" ID="ID_624354128" MODIFIED="1689531845873" TEXT="IO k&#xf6;nnte auch dort aktivieren"/>
<node CREATED="1689531847156" ID="ID_646303576" MODIFIED="1689531890911" TEXT="Folge-Activities: sp&#xe4;tere Deadline"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1688337270626" FOLDED="true" ID="ID_1810148055" MODIFIED="1699624141630" TEXT="&#xbb;BlockFlow&#xab; : Implementation">
<linktarget COLOR="#578096" DESTINATION="ID_1810148055" ENDARROW="Default" ENDINCLINATION="-1144;102;" ID="Arrow_ID_1579502372" SOURCE="ID_1478014419" STARTARROW="None" STARTINCLINATION="549;39;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1688398675985" ID="ID_291772625" MODIFIED="1689188506325" TEXT="Basis: ExtentFamily">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1688398685028" ID="ID_1348599303" MODIFIED="1689188393371" TEXT="Anforderungen">
<icon BUILTIN="yes"/>
<node CREATED="1688398688699" ID="ID_1432998672" MODIFIED="1688398701914" TEXT="stellt eine Sequenz von &#xbb;Extents&#xab; bereit"/>
<node CREATED="1688432466445" ID="ID_1473749393" LINK="#ID_615463720" MODIFIED="1689188719424">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      ein Extent ist ein <i>uninitialisierter </i>Speicherblock
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1688398703247" ID="ID_1790971931" MODIFIED="1688398726830" TEXT="die aktiven Extents sind geordnet und iterierbar"/>
<node CREATED="1688398734470" ID="ID_1849160897" MODIFIED="1688398753155" TEXT="man kann &#x201e;einen Weiteren&#x201c; belegen"/>
<node CREATED="1688398760358" ID="ID_944914676" MODIFIED="1688398769143" TEXT="Extent kann freigegeben werden"/>
<node CREATED="1688398775540" ID="ID_1082695472" MODIFIED="1688398783382" TEXT="freie Extents wandern in einen Pool"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1688398784053" ID="ID_133566735" MODIFIED="1688398798074" TEXT="(geplant) diesen Pool dynamisch verwalten">
<icon BUILTIN="hourglass"/>
</node>
</node>
<node COLOR="#338800" CREATED="1688398813243" FOLDED="true" ID="ID_504623704" MODIFIED="1689188396059" TEXT="Aufbau testgetrieben...">
<arrowlink COLOR="#40c5eb" DESTINATION="ID_1132827905" ENDARROW="Default" ENDINCLINATION="-593;73;" ID="Arrow_ID_709934622" STARTARROW="None" STARTINCLINATION="-214;-18;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1688398884005" ID="ID_1188543253" MODIFIED="1688867997850" TEXT="Basis-Struktur">
<icon BUILTIN="button_ok"/>
<node CREATED="1688432746255" ID="ID_880122043" MODIFIED="1688432851088" TEXT="Entscheidung: die Gr&#xf6;&#xdf;e ist eine compile-time-Konstante">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Begr&#252;ndung:
    </p>
    <ul>
      <li>
        Performance...
      </li>
      <li>
        mehr Dynamik wird gar nicht ben&#246;tigt, da das BlockFlow-Schema noch die Dauer einer Epoche justieren kann
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1688435528483" ID="ID_8576020" MODIFIED="1688435554882" TEXT="Entscheidung: es wird ein Payload-Typ f&#xfc;r den Inhalt der Extents festgelegt">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1688556402446" ID="ID_811991749" MODIFIED="1688556460629" TEXT="Extent (Typ-Definition f&#xfc;r den client)">
<icon BUILTIN="button_ok"/>
<node CREATED="1688556417133" ID="ID_619844510" MODIFIED="1688556419712" TEXT="ein array&lt;T,siz&gt;"/>
<node CREATED="1688556421587" ID="ID_1207535788" MODIFIED="1688556445023">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      nested Typedef <font face="Monospaced" color="#2727b8">Payload</font>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1688556449759" ID="ID_389613064" MODIFIED="1688556458098" TEXT="rein virtuell (per cast erzeugt)"/>
</node>
<node COLOR="#338800" CREATED="1688432504244" FOLDED="true" ID="ID_1241185228" MODIFIED="1688556470257" TEXT="Storage (privat)">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1688432516234" ID="ID_615463720" MODIFIED="1688867994355" TEXT="Anfroderung: keine Initialisierung">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1688432531628" ID="ID_370870831" MODIFIED="1688432652286" TEXT="wichtig f&#xfc;r die Performance">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1688432597371" ID="ID_254731124" MODIFIED="1688432648521" TEXT="ist gew&#xe4;hrleistet f&#xfc;r alle POD und Arrays von Basistypen">
<icon BUILTIN="info"/>
</node>
<node CREATED="1688432635374" ID="ID_213229192" MODIFIED="1688432646377" TEXT="std::array ist ein POD">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1688432677832" ID="ID_409669482" MODIFIED="1688432698306" TEXT="Syntax: kein Initialiser, und ein impliziter default-ctor"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1688437935976" ID="ID_518652809" MODIFIED="1688556367223" TEXT="Entscheidung: forced-cast von char[]">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      das hei&#223;t: es findet zwar eine default-Initialisierung statt, aber f&#252;r einen Objekt-Typ mit implizitem default-ctor bedeutet das <i>default-Initialisierung der Member.</i>&#160;Nach meinem Verst&#228;ndnis hat std::array einen impliziten default-ctor und als einziges Member ein Array, und daf&#252;r wiederum erfolgt dann <i>default-Initialisierung jedes einzelnen Elements. Und da das Element ein base-value (char) ist, erfolgt &#252;berhaupt keine Initialisierung.</i>
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#535ad3" DESTINATION="ID_518652809" ENDARROW="Default" ENDINCLINATION="594;42;" ID="Arrow_ID_463215029" SOURCE="ID_1531653683" STARTARROW="None" STARTINCLINATION="897;-29;"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1688432712542" ID="ID_849183361" MODIFIED="1688556395243" TEXT="Basis std::unique_ptr&lt;char[]&gt;">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1688433893319" ID="ID_666220506" MODIFIED="1688434720661" TEXT="default-ctor macht sofort die Allokation">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1688556494841" ID="ID_293642055" MODIFIED="1688556513015" TEXT="access() &#x27f6; cast auf Extent">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1688432864248" ID="ID_1390525681" MODIFIED="1688556491574" TEXT="Extents gehalten als vector&lt;Storage&gt; (also uniqe_ptr)">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1688398888563" ID="ID_1767596073" MODIFIED="1689188349830" TEXT="Iteration">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1688437541022" FOLDED="true" ID="ID_1493417420" MODIFIED="1689188442612" TEXT="kann man &#xfc;berhaupt iterieren ohne einen TransformIterator zu verwenden?">
<icon BUILTIN="help"/>
<node CREATED="1688509701330" ID="ID_1512622255" MODIFIED="1688509710564" TEXT="ja: ganz banal">
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1688509711550" FOLDED="true" ID="ID_868274901" MODIFIED="1688509754176" TEXT="mit einem IterAdapter">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      genau f&#252;r sowas war der gedacht &#9787;
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_cancel"/>
<node CREATED="1688855104720" ID="ID_1636566408" MODIFIED="1689031065833" TEXT="Daten: (backlink, vector-iterator)"/>
<node COLOR="#5b280f" CREATED="1689026769252" ID="ID_363731350" MODIFIED="1689039350930" TEXT="Darstellung aktuelle Position">
<icon BUILTIN="info"/>
<node CREATED="1689026784432" ID="ID_1042302869" MODIFIED="1689027351109" TEXT="Pointer-to-Extent">
<icon BUILTIN="button_cancel"/>
<node CREATED="1689026814051" ID="ID_1924066976" MODIFIED="1689026837699" TEXT="l&#xe4;&#xdf;t sich nur per linearer Suche in eine Index-Pos r&#xfc;ck&#xfc;bersetzen">
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node CREATED="1689026792775" ID="ID_401175300" MODIFIED="1689027354865" TEXT="Pointer-into Vector">
<icon BUILTIN="smiley-neutral"/>
<node CREATED="1689026945439" ID="ID_1984755714" MODIFIED="1689026993610" TEXT="l&#xe4;&#xdf;t sich per Vector-Arrithmetik in einen Index &#xfc;bersetzen">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1689027014382" ID="ID_1063919929" MODIFIED="1689027099065" TEXT="Zugriff bedingt jedoch (ebenfalls) zwei Indirektionen + cast"/>
</node>
<node CREATED="1689026804112" ID="ID_46563966" MODIFIED="1689030533180" TEXT="vector-Index">
<icon BUILTIN="closed"/>
<node CREATED="1689026841988" ID="ID_767307889" MODIFIED="1689030809455" TEXT="w&#xfc;rde direkten Zugang zur Index-wrap-Logik bieten">
<arrowlink COLOR="#dbe0e6" DESTINATION="ID_1127616936" ENDARROW="Default" ENDINCLINATION="-76;-82;" ID="Arrow_ID_675619664" STARTARROW="None" STARTINCLINATION="-70;4;"/>
</node>
<node CREATED="1689026862074" ID="ID_1215574745" MODIFIED="1689027105768" TEXT="daf&#xfc;r w&#xe4;re aber jeder Zugriff eine doppelte Indirektion + cast"/>
<node CREATED="1689026901975" ID="ID_846484908" MODIFIED="1689026931785" TEXT="und man m&#xfc;&#xdf;te den &lt;leer&gt;-Wert speziell codieren"/>
<node CREATED="1689030562169" ID="ID_1734074273" MODIFIED="1689030590655" TEXT="kann eigenst&#xe4;ndig keinen opeartor*() implementieren">
<icon BUILTIN="stop-sign"/>
<node CREATED="1689030595148" ID="ID_1992627492" MODIFIED="1689030598907" TEXT="knock-out">
<icon BUILTIN="closed"/>
</node>
<node CREATED="1689030599955" ID="ID_58790531" MODIFIED="1689030607021" TEXT="zwingende Anforderung for Iter-Adapter"/>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1689027131702" ID="ID_1127616936" MODIFIED="1689039321312" TEXT="Wrapper um vector-Index">
<linktarget COLOR="#dbe0e6" DESTINATION="ID_1127616936" ENDARROW="Default" ENDINCLINATION="-76;-82;" ID="Arrow_ID_675619664" SOURCE="ID_767307889" STARTARROW="None" STARTINCLINATION="-70;4;"/>
<icon BUILTIN="idea"/>
<node CREATED="1689027160679" ID="ID_614736589" MODIFIED="1689027174644" TEXT="transportiert die korrekten ValueType-Bindings"/>
<node CREATED="1689027175765" ID="ID_925971110" MODIFIED="1689030791255" TEXT="&#xfc;berladenener operator*()"/>
<node CREATED="1689030719932" ID="ID_1685097739" MODIFIED="1689030734403" TEXT="braucht dann aber einen Back-Pointer auf den Container">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1689030740438" ID="ID_1138632813" MODIFIED="1689031056300" TEXT="das macht Iter-Adapter insgesamt redundant">
<arrowlink COLOR="#b2ecd1" DESTINATION="ID_1742317518" ENDARROW="Default" ENDINCLINATION="50;-145;" ID="Arrow_ID_403529665" STARTARROW="None" STARTINCLINATION="-100;6;"/>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1689027131702" ID="ID_1742317518" MODIFIED="1689039300547">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p style="text-align: center">
     &#x2016;&nbsp;StateCore&nbsp;&#x2016;
    </p>
    <p style="text-align: center">
      <font color="#4b0099" face="Monospaced" size="2">(Backlink, Index)</font>
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Begr&#252;ndung:
    </p>
    <ul>
      <li>
        der direkte Zugang zum Index ist nat&#252;rlich und leicht verst&#228;ndlich
      </li>
      <li>
        Performance ist gleich (nicht besonders toll aber voll OK) wie eine Pointer-L&#246;sung
      </li>
      <li>
        und mit dem Marker-Wert mu&#223; ich dann halt leben; Konstante definieren
      </li>
    </ul>
  </body>
</html></richcontent>
<linktarget COLOR="#b2ecd1" DESTINATION="ID_1742317518" ENDARROW="Default" ENDINCLINATION="50;-145;" ID="Arrow_ID_403529665" SOURCE="ID_1138632813" STARTARROW="None" STARTINCLINATION="-100;6;"/>
<icon BUILTIN="idea"/>
<node CREATED="1689027149833" ID="ID_377414010" MODIFIED="1689031006892" TEXT="ExtentFamily::IdxLink">
<node CREATED="1689027249989" ID="ID_576991261" MODIFIED="1689030906333" TEXT="default-konstruierbar mit Leer-Marker"/>
<node CREATED="1688855104720" ID="ID_1006973140" MODIFIED="1689031092768" TEXT="Daten: (backlink, index)"/>
<node CREATED="1689027297484" ID="ID_239188445" MODIFIED="1689030913562" TEXT="Gr&#xf6;&#xdf;e: 2 * size_t"/>
</node>
<node CREATED="1689031016000" ID="ID_1425180137" MODIFIED="1689031041310" TEXT="als StateCore f&#xfc;r IterStateWrapper">
<icon BUILTIN="info"/>
<node COLOR="#338800" CREATED="1689033427830" ID="ID_569709413" MODIFIED="1689033569925" TEXT="braucht operator==()">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1689033334323" ID="ID_217766059" MODIFIED="1689033578366" TEXT="checkPoint()">
<node CREATED="1689033579504" ID="ID_1555589201" MODIFIED="1689033581945" TEXT="backlink == null als Abbruchkriterium">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1689033583097" ID="ID_1997196983" MODIFIED="1689033762303" TEXT="index != after_">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Damit vermeide ich, einen speziellen Marker-Wert zu verwenden;
    </p>
    <p>
      In der Tat darf der Index f&#252;r einen aktiven und g&#252;ltigen Extent niemals after_ sein, er mu&#223; entweder davor stehen, oder start_ == after_ und der Container ist leer
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#338800" CREATED="1689033417616" ID="ID_693772805" MODIFIED="1689039303674" TEXT="yield()">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1689033420391" ID="ID_215666589" MODIFIED="1689039305089" TEXT="iterNext()">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1689027160679" ID="ID_1264158766" MODIFIED="1689039299783" TEXT="transportiert die korrekten ValueType-Bindings"/>
<node COLOR="#435e98" CREATED="1689027281735" ID="ID_1510788566" MODIFIED="1689039540675" TEXT="getIndex()">
<icon BUILTIN="idea"/>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1689039482634" HGAP="38" ID="ID_1887337658" MODIFIED="1689039494139" TEXT="ist das eine gute Idee?" VSHIFT="4">
<icon BUILTIN="help"/>
<node CREATED="1689039495217" ID="ID_805558518" MODIFIED="1689039504691" TEXT="Index-Nummern sind nicht stabil"/>
<node CREATED="1689039505457" ID="ID_1147505758" MODIFIED="1689039522417" TEXT="es gibt keinen Subscript-Operator"/>
<node CREATED="1689039529419" ID="ID_1472411724" MODIFIED="1689039536175" TEXT="&#x27f9; eigentlich nutzlos f&#xfc;r den client"/>
</node>
</node>
<node COLOR="#338800" CREATED="1689039476259" ID="ID_1771002787" MODIFIED="1689039481030" TEXT="expandAlloc()">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1688509796132" FOLDED="true" ID="ID_361634809" MODIFIED="1688853056871" TEXT="fragt sich blo&#xdf;: wird &#xfc;berhaupt ein Iterator gebraucht?">
<arrowlink COLOR="#473acf" DESTINATION="ID_836380061" ENDARROW="Default" ENDINCLINATION="47;-174;" ID="Arrow_ID_166794449" STARTARROW="None" STARTINCLINATION="-289;16;"/>
<node CREATED="1688852868967" ID="ID_1480472415" MODIFIED="1689036951117" TEXT="Antwort: ja &#x2014; und zwar um Wachstum nahtlos zu erm&#xf6;glichen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...da wir den Platz im EpochGuard bereits anderweitig komplett aussch&#246;pfen, mu&#223; die ExtentFamily auch beim Navigieren &#252;ber die Sequenz der Epochen hinweg helfen. Und im Besonderen eine Navigation &#252;ber das Ende hinaus mu&#223; <b>nahtlos eine Erweiterung der Allokation</b>&#160; erm&#246;glichen. Habe mich entschlossen, die Limitierung als Ausnahme/Exception zu definieren, so da&#223; im Regelfall die ExtentFamily einfach immer weiter wachsen soll
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="forward"/>
</node>
<node COLOR="#435e98" CREATED="1688853104969" ID="ID_1620391720" MODIFIED="1689039292684" TEXT="nach Iterations-Ende mu&#xdf; nahtlos eine Allokations-Erweiterung folgen k&#xf6;nnen">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#435e98" CREATED="1689037074376" ID="ID_732439061" MODIFIED="1689188488227" TEXT="automatisch die Allokation expandieren?">
<icon BUILTIN="help"/>
<icon BUILTIN="button_cancel"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1689037090654" ID="ID_316316225" MODIFIED="1689037110364" TEXT="Antwort: m&#xf6;glich aber keine gute Idee">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1689037113635" ID="ID_365095083" MODIFIED="1689037126924" TEXT="das w&#xfc;rde vom normalen Verhalten eines Iterators abweichen"/>
<node CREATED="1689037127777" ID="ID_1976747885" MODIFIED="1689037212763" TEXT="der Iterator k&#xf6;nnte damit nicht mehr ohne Mutation verwendet werden">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...das hei&#223;t, es k&#246;nnte kein &#187;for each&#171; mehr geben, weil die Iteration bis zum Out-of-Memory weiterliefe. K&#246;nnte man machen, sollte man aber nicht so machen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="clanbomber"/>
</node>
<node CREATED="1689037221020" ID="ID_682907224" MODIFIED="1689037297470">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      stattdessen Allokations-Erweiterung auf dem Iterator anbieten: <font face="Monospaced" color="#902ca2">expandAlloc()</font>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1689188453899" HGAP="29" ID="ID_210565250" MODIFIED="1689188475198" TEXT="folgt sauber dem zyklischen Nutzungsmuster" VSHIFT="1">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1688398893220" ID="ID_675575195" MODIFIED="1688960070966" TEXT="belegen / freigeben">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1688952897933" ID="ID_832611581" MODIFIED="1688955651916" TEXT="freie Reserve ermitteln">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1688437691137" ID="ID_292063242" MODIFIED="1688960068981" TEXT="pr&#xfc;fen auf ausreichende Reserve">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1688437762175" ID="ID_1456790340" MODIFIED="1688960067652" TEXT="sonst: Allokation erweitern">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1688437770295" ID="ID_867206595" MODIFIED="1688960066248" TEXT="falls am Ende">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1688957825760" ID="ID_376842621" MODIFIED="1689188373498" TEXT="vector::resize() gen&#xfc;gt"/>
</node>
<node COLOR="#338800" CREATED="1688437784470" ID="ID_797852741" MODIFIED="1688960065205" TEXT="falls wrap-around">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1688957839759" ID="ID_671792490" MODIFIED="1689188381525" TEXT="zus&#xe4;tzlich die neuen Elemente in die Pufferzone in der Mitte rotieren">
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#435e98" CREATED="1688957863500" ID="ID_592181743" MODIFIED="1689188364215" TEXT="std::rotate() verwenden">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...dieser tauscht per std::swap aus; und zwar rekursiv inkrementell: erst das Segment vom Ende an den Anfang und dann rekursiv wieder std::rotate f&#252;r den Rest. Komplexit&#228;t: linear
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1688958797642" ID="ID_205839494" MODIFIED="1688958807300" TEXT="&#xdc;berschu&#xdf; freigeben">
<linktarget COLOR="#c56f9f" DESTINATION="ID_205839494" ENDARROW="Default" ENDINCLINATION="137;302;" ID="Arrow_ID_556800968" SOURCE="ID_356962646" STARTARROW="None" STARTINCLINATION="1132;79;"/>
<icon BUILTIN="hourglass"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1688958808347" ID="ID_1777900061" MODIFIED="1688958867924" TEXT="Gefahr von Oszillationen &#x27f9; vorerst noch nicht implementiert">
<icon BUILTIN="messagebox_warning"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1688958965134" ID="ID_559031085" MODIFIED="1688958983164" TEXT="vorerst w&#xe4;chst die Allokation nur">
<icon BUILTIN="clanbomber"/>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1688958894805" ID="ID_1746833075" MODIFIED="1688958904528" TEXT="#1316 regulate Scheduler memory allocation">
<icon BUILTIN="hourglass"/>
<node CREATED="1688958915756" ID="ID_292339303" MODIFIED="1688958930662" TEXT="man m&#xfc;&#xdf;te einen typischen / durchschnittlichen Bedarf etablieren"/>
<node CREATED="1688958931778" ID="ID_764223223" MODIFIED="1688958942454" TEXT="und dann mit einer gewissen D&#xe4;mpfung darauf hinsteuern"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1688509829145" FOLDED="true" HGAP="36" ID="ID_836380061" MODIFIED="1689993872497" TEXT="ben&#xf6;tigte high-Level-Operationen identifizieren">
<arrowlink COLOR="#50c146" DESTINATION="ID_1454374119" ENDARROW="Default" ENDINCLINATION="-596;80;" ID="Arrow_ID_208594716" STARTARROW="None" STARTINCLINATION="-331;-16;"/>
<linktarget COLOR="#473acf" DESTINATION="ID_836380061" ENDARROW="Default" ENDINCLINATION="47;-174;" ID="Arrow_ID_166794449" SOURCE="ID_361634809" STARTARROW="None" STARTINCLINATION="-289;16;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1688510160724" ID="ID_915708936" MODIFIED="1689528992185" TEXT="Activity allozieren">
<icon BUILTIN="button_ok"/>
<node CREATED="1688510169558" ID="ID_435186748" MODIFIED="1688510256314" TEXT="werden grunds&#xe4;tzlich einzeln behandelt">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...selbst wenn es Zusammenh&#228;nge gibt &#8212; notfalls wird die Aktion in die n&#228;chst nachfolgende Epoche geschoben (welche stets l&#228;nger lebt)
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node COLOR="#435e98" CREATED="1688510299817" ID="ID_1750265058" MODIFIED="1689468744920" TEXT="ben&#xf6;tigt: Deadline-Info"/>
<node COLOR="#435e98" CREATED="1688510405600" ID="ID_974318886" MODIFIED="1689468739704" TEXT="&#x27fc; liefert: Slot f&#xfc;r Placement-New">
<node CREATED="1688511764027" ID="ID_494303010" MODIFIED="1688511780582" TEXT="den fr&#xfc;hest m&#xf6;glichen der diese Deadline unterst&#xfc;tzt"/>
<node CREATED="1688511807398" ID="ID_160731598" MODIFIED="1688511817680" TEXT="erzeugt implizit alle Epochen dazwischen"/>
<node CREATED="1688511820828" ID="ID_1443383285" MODIFIED="1688775531341" TEXT="kann scheitern wenn zu weit in der Zukunft &#x27fc; &#x21af;"/>
</node>
<node BACKGROUND_COLOR="#e7cbb5" COLOR="#ff0000" CREATED="1688559559278" ID="ID_27532065" MODIFIED="1689529093491">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Entscheidung: Allokation entgleist nur<i>&#160;ausnahmsweise</i>
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#fd1a6e" DESTINATION="ID_1315709817" ENDARROW="Default" ENDINCLINATION="21;-31;" ID="Arrow_ID_1483237280" STARTARROW="None" STARTINCLINATION="-248;12;"/>
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1688560442660" ID="ID_143148462" MODIFIED="1689215725196" TEXT="Activity placement-New">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1688599586802" ID="ID_13764637" MODIFIED="1689215684895" TEXT="Argumente weiterreichen &#x27fc; w&#xe4;hlt automatisch passendes Verb">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#435e98" CREATED="1688599613103" ID="ID_1520469413" MODIFIED="1689215718243" TEXT="was mu&#xdf; &#xfc;berhaupt in jeder Activity gespeichert werden...">
<arrowlink COLOR="#4766fd" DESTINATION="ID_290814679" ENDARROW="Default" ENDINCLINATION="-1095;85;" ID="Arrow_ID_1644257444" STARTARROW="None" STARTINCLINATION="676;32;"/>
<icon BUILTIN="info"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1688512195210" ID="ID_455793213" MODIFIED="1689528962316" TEXT="Aufr&#xe4;umen vor gegebener Zeit">
<icon BUILTIN="button_ok"/>
<node CREATED="1688775777543" ID="ID_827708076" MODIFIED="1688775793070" TEXT="wird ausgel&#xf6;st in der TICK-Activity">
<icon BUILTIN="info"/>
</node>
<node CREATED="1688512231159" ID="ID_960172052" MODIFIED="1688512246837" TEXT="gegeben: eine aktuell behandelte (Start)Zeit"/>
<node COLOR="#435e98" CREATED="1688512252777" ID="ID_831223782" MODIFIED="1689268925858">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      jede Deadline <i>vor</i>&#160;dieser Zeit ist damit <i>grunds&#228;tzlich obsolet</i>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node COLOR="#435e98" CREATED="1688512304121" ID="ID_304428860" MODIFIED="1693501118442" TEXT="die Gates aller Epochen durchpr&#xfc;fen">
<icon BUILTIN="bell"/>
<node CREATED="1688513728333" ID="ID_276339587" MODIFIED="1688513740995" TEXT="Gate sitzt im ersten Slot einer Epoche"/>
<node CREATED="1688513742667" ID="ID_849223562" LINK="#ID_1088341634" MODIFIED="1688513840525" TEXT="Gate dient in diesem Fall nur als komplexe Bedingung"/>
<node COLOR="#338800" CREATED="1689268798076" ID="ID_1723875762" MODIFIED="1689268819063" TEXT="vorl&#xe4;ufige Impl: einfach direkt die Deadline pr&#xfc;fen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1689268827023" ID="ID_1220469732" MODIFIED="1692544379876" TEXT="vollst&#xe4;ndige GATE-Activity-Impl nutzen">
<arrowlink COLOR="#2c8d69" DESTINATION="ID_212018049" ENDARROW="Default" ENDINCLINATION="556;74;" ID="Arrow_ID_1693904148" STARTARROW="None" STARTINCLINATION="472;34;"/>
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1693499693849" ID="ID_1766311350" MODIFIED="1693501314685" TEXT="sinnvolle Integration mit async-IO?">
<linktarget COLOR="#9671cb" DESTINATION="ID_1766311350" ENDARROW="Default" ENDINCLINATION="-1051;64;" ID="Arrow_ID_972754095" SOURCE="ID_131095214" STARTARROW="None" STARTINCLINATION="469;21;"/>
<icon BUILTIN="help"/>
<node CREATED="1693501200871" ID="ID_740126575" MODIFIED="1693501219657" TEXT="Thema: Zuverl&#xe4;ssigkeit der Trigger">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1693501220588" ID="ID_1460182660" MODIFIED="1693501234551" TEXT="Interface zum Aufschalten von Triggern auf betroffene Gates"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1693501236493" ID="ID_623622318" MODIFIED="1693502543663" TEXT="dies auch in das Job-Planning mit integrieren">
<linktarget COLOR="#fe3e84" DESTINATION="ID_623622318" ENDARROW="Default" ENDINCLINATION="-812;50;" ID="Arrow_ID_1026891728" SOURCE="ID_1800524836" STARTARROW="None" STARTINCLINATION="437;29;"/>
<linktarget COLOR="#fe3e84" DESTINATION="ID_623622318" ENDARROW="Default" ENDINCLINATION="-812;50;" ID="Arrow_ID_466178619" SOURCE="ID_43618567" STARTARROW="None" STARTINCLINATION="655;38;"/>
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1688513885200" ID="ID_47111804" MODIFIED="1689268918964" TEXT="auf der ersten nicht-obsoleten Epoche stehen bleiben">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1688513876713" ID="ID_1973420609" MODIFIED="1689268921099" TEXT="obsolete Epochen verwerfen">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1688775652096" ID="ID_1474151969" MODIFIED="1689560563462" TEXT="Form der Schnittstelle">
<icon BUILTIN="idea"/>
<node CREATED="1688775668422" ID="ID_767496240" MODIFIED="1688775676057" TEXT="dar&#xfc;ber sitzt ein Builder"/>
<node CREATED="1688775685500" ID="ID_773772497" MODIFIED="1688775698085" TEXT="dieser wiederum soll im Job-Planning eingebaut werden"/>
<node CREATED="1688775841388" ID="ID_1141871093" LINK="#ID_1753772146" MODIFIED="1688775893436" TEXT="Informationen zum Zeitfenster sind dort kontextuell gegeben"/>
<node CREATED="1688775908470" ID="ID_1274434865" MODIFIED="1688775921263" TEXT="&#x27f9; sinnvoll ist eine Term-Struktur">
<node COLOR="#3a5db3" CREATED="1688775957367" ID="ID_1429644643" MODIFIED="1688776009083" TEXT="blockFlow.until(deadline).create(Args...)">
<font NAME="Monospaced" SIZE="12"/>
</node>
<node CREATED="1688776029061" ID="ID_909971028" LINK="#ID_414891440" MODIFIED="1688776135974" TEXT="Builder-Objekt k&#xf6;nnte ein AllocatorHandle sein">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1688515962746" HGAP="38" ID="ID_468510160" MODIFIED="1689560775845" TEXT="Strukturen" VSHIFT="4">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1688515974697" ID="ID_1054833524" MODIFIED="1689296818673" TEXT="h&#xe4;lt eine ExtentFamily&lt;Activity,siz&gt;">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1688555107931" FOLDED="true" ID="ID_285024973" MODIFIED="1689528942853" TEXT="Datentyp: Epoch">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1688555141913" ID="ID_406773800" MODIFIED="1689296815496" TEXT="als Subtyp der Extent-Storage">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1688855335861" ID="ID_805170537" MODIFIED="1689296881046" TEXT="verwaltet ein EpochGate">
<arrowlink COLOR="#336987" DESTINATION="ID_262514506" ENDARROW="Default" ENDINCLINATION="-88;-7;" ID="Arrow_ID_1549134996" STARTARROW="None" STARTINCLINATION="57;6;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1688855508871" ID="ID_1411819334" MODIFIED="1689296800776" TEXT="verwaltet einen F&#xfc;llstand">
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1688855600025" ID="ID_250176571" MODIFIED="1688855663180" TEXT="notgedrungenerma&#xdf;en als Pointer">
<arrowlink COLOR="#5d59c8" DESTINATION="ID_1249055593" ENDARROW="Default" ENDINCLINATION="-17;-67;" ID="Arrow_ID_246272817" STARTARROW="None" STARTINCLINATION="115;9;"/>
<icon BUILTIN="smily_bad"/>
</node>
<node COLOR="#338800" CREATED="1688855675271" ID="ID_1730018277" MODIFIED="1689296797030" TEXT="wird r&#xfc;ckw&#xe4;rts laufend verwendet">
<icon BUILTIN="button_ok"/>
<node CREATED="1688855956754" ID="ID_649163779" MODIFIED="1688855974112" TEXT="initialisiert auf das letzte Element im Extent"/>
<node CREATED="1688855974789" ID="ID_842856173" MODIFIED="1688855979243" TEXT="jeweils dekrementiert"/>
</node>
<node COLOR="#435e98" CREATED="1688855917759" ID="ID_970541500" MODIFIED="1689296803550" TEXT="Abbruchbedingung: next == &amp; EpochGate">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1689246500734" FOLDED="true" ID="ID_1611070672" MODIFIED="1689528941556" TEXT="Zugriff / Navigation">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1689246852684" ID="ID_1894820075" MODIFIED="1689468776989" TEXT="Problemlage">
<icon BUILTIN="info"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1689246509452" ID="ID_1697713434" MODIFIED="1689468773371">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <b>Grundproplem</b>: downcast&#160;
      <font color="#214b76" face="Monospaced">Extent</font>
       &#160;&#160;&#10236;&#160;
      <font color="#214b76" face="Monospaced">Epoch</font>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1689246796596" ID="ID_58374999" MODIFIED="1689246832632" TEXT="Zusatz-Komplikation: sowohl Iterator, alsauch Extent&amp; treten auf">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1689247882172" ID="ID_1363520850" MODIFIED="1689265724651" TEXT="m&#xf6;gliche Ans&#xe4;tze">
<icon BUILTIN="yes"/>
<node COLOR="#5b280f" CREATED="1689247931732" FOLDED="true" ID="ID_1905005266" MODIFIED="1689248098163" TEXT="einen Epochen-Iterator zum universellen Agens ausbauen">
<icon BUILTIN="button_cancel"/>
<node CREATED="1689248019527" ID="ID_167478839" MODIFIED="1689248115737" TEXT="k&#xf6;nnte noch weitere Abk&#xfc;rzungsfunktionen tragen">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1689248045523" ID="ID_1976669785" MODIFIED="1689248115737" TEXT="k&#xf6;nnte sogar zum Cursor f&#xfc;r Suchen ausgebaut werden">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1689247950298" ID="ID_1452153328" MODIFIED="1689248108169" TEXT="f&#xfc;r viele Zwecke ein &#xfc;berfl&#xfc;ssiger back-Pointer">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1689247971249" ID="ID_518235048" MODIFIED="1689248015881" TEXT="aber der Optimizer bekommt das problemlos hin">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
     es ist alles Inline und in einer einzigen Klassenhierarchie, 
     und die Iteratoren sind hier komplett PODs
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1689248078262" ID="ID_1150588267" MODIFIED="1689248102043" TEXT="Stop! das wird jetzt unn&#xf6;tig clever">
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1689248121694" ID="ID_1139194353" MODIFIED="1689248191851" TEXT="Zugriffs-Hierarchie: Allocator::iterator &#x29d0; EpochIter &#x29d0; Epoch&amp;">
<icon BUILTIN="forward"/>
<node COLOR="#435e98" CREATED="1689248200483" ID="ID_1272289829" MODIFIED="1689265563074" TEXT="&#x27f9; Konsequenz: Extent&amp; nicht eigenst&#xe4;ndig verwenden"/>
<node COLOR="#435e98" CREATED="1689248250300" ID="ID_652125369" MODIFIED="1689528903260" TEXT="Epoch wird dann alle Abk&#xfc;rzungen und Hilfsfunktionen tragen">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#435e98" CREATED="1689248380839" ID="ID_215002237" MODIFIED="1689528937911" TEXT="BlockFlow ist nur f&#xfc;r die Darstellung als Epoch und das Epoch-Spacing zust&#xe4;ndig">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#435e98" CREATED="1689248522225" FOLDED="true" ID="ID_1824695865" MODIFIED="1689265504640" TEXT="problematisches Layering der Iteratoren">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1689248585384" ID="ID_1368624985" MODIFIED="1689248594457" TEXT="IterStateWrapper hat eine private Core"/>
<node CREATED="1689248595565" ID="ID_1453930677" MODIFIED="1689248612015" TEXT="in IterExplorer g&#xe4;be es eine Variante mit Vererbung"/>
<node CREATED="1689248617746" ID="ID_1302719464" MODIFIED="1689248918334" TEXT="die Lumiera Iterator-Adapter machen stets einen &#x27d8;-check">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...das war eine Design-Entscheidung, die im allgemeinen richtig ist (es lohnt sich nicht, auf bound-checking zu verzichten). Aber hier sind wir in einer high-Performance-Zone, und es w&#228;re gef&#228;hrlich, sich nur darauf zu verlassen, da&#223; der Compiler das per globaler Optimierung noch repariert....
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1689248943140" ID="ID_1519420651" MODIFIED="1689248965997" TEXT="je h&#xf6;her die Komplexit&#xe4;t (Metaprogramming), deso unsicherer die Optimierung">
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#435e98" CREATED="1689249180884" ID="ID_537950394" MODIFIED="1689258373692" TEXT="IterableDecorator aus IterExplorer extrahieren und verschlanken">
<arrowlink COLOR="#4b58db" DESTINATION="ID_1169599821" ENDARROW="Default" ENDINCLINATION="-1279;68;" ID="Arrow_ID_1606137974" STARTARROW="None" STARTINCLINATION="-2178;95;"/>
<icon BUILTIN="yes"/>
<node CREATED="1689249237435" ID="ID_1601819255" MODIFIED="1689249275064" TEXT="diese Klasse ist eigentlich sehr sauber geschrieben">
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1689249250387" ID="ID_1215357186" MODIFIED="1689249272079" TEXT="sie wird bisher nur &#xfc;ber einen einzigen Punkt in IterExplorer integriert (ein Trait-Template)">
<icon BUILTIN="idea"/>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1689249279721" ID="ID_643063764" MODIFIED="1689249306148" TEXT="der Name ist gut &#x2014; es handelt sich um ein eigenst&#xe4;ndiges Konzept">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1689249315278" ID="ID_511065777" MODIFIED="1689252415848" TEXT="hier bewu&#xdf;t alle Checks weglassen">
<icon BUILTIN="button_ok"/>
<node CREATED="1689249330748" ID="ID_1433877445" MODIFIED="1689249348142" TEXT="Begr&#xfc;ndung: normalierweise setzt man sowas in einer Pipeline ein"/>
<node CREATED="1689249349397" ID="ID_1634720720" MODIFIED="1689249372332" TEXT="Policy: dann m&#xfc;ssen eben im Zweifelsfall die Core-API-Funktionen defensiver sein"/>
<node COLOR="#435e98" CREATED="1689258380915" ID="ID_652271152" MODIFIED="1689258405744" TEXT="lib::CheckedCore &#x2014; dar&#xfc;ber in IterExplorer eingebunden">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1689265603545" ID="ID_791858650" MODIFIED="1689265662325" TEXT="BlockFlow stellt einen EpochIter bereit">
<icon BUILTIN="button_ok"/>
<node CREATED="1689265613521" ID="ID_1391121959" MODIFIED="1689265629139" TEXT="das ist noch einmal ein kompletter IterableDecorator"/>
<node CREATED="1689265630439" ID="ID_1230547158" MODIFIED="1689265658063" TEXT="aber setzt auf der &#xbb;state core&#xab; von ExtentFamily::iterator auf">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1689265676041" ID="ID_129160018" MODIFIED="1689265714844" TEXT="BlockFlow::AllocatorHandle wrappt nun diesen EpochIter">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1689265693878" ID="ID_391870028" MODIFIED="1689265713540" TEXT="alle weiteren Iterator-basierten Funktionen dereferenzieren damit auf Epoch&amp;">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1689265754039" ID="ID_199514628" MODIFIED="1689265769886" TEXT="Epoch::setup (rawStorageIter) extrahiert">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1689522759753" ID="ID_1883954151" MODIFIED="1689523106024" TEXT="brauche doch einen back-Link auf den BlockFlow selber">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Das ist eigentlich auch logisch-architektonisch sauber so: man bezieht sich sowohl auf den Allokator, als auch auf das Epochen-Management.
    </p><br/>
    <p>
      Durch einen Kniff lie&#223;e sich dieser Doppelbezug jedoch reduzieren, aber nur auf einen Bezug auf den BlockFlow (der dann kaskadierend auf die ExtentFamily rekurieren m&#252;&#223;te). Dazu w&#228;re es notwendig, in BlockFlow einen komplett eigenst&#228;ndigen Iterator zu implementieren; zudem m&#252;&#223;te man darauf hoffen (&#10233; &#252;berpr&#252;fen), da&#223; der Optimiser diese kaskadierenden Aufrufe <b>f&#252;r die reinie Iteration</b>&#160;komplett aufl&#246;sen kann &#8212; andernfalls h&#228;tten wir einen Performance-Nachteil beim wichtigen/h&#228;ufigen durchsuchen der Epochen nach dem passenden Slot. <i><font color="#731fc7">Daher nehme ich von dieser L&#246;sung Abstand, und bleibe bei den klaren Bez&#252;gen.</font></i>
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#46c5b0" DESTINATION="ID_1883954151" ENDARROW="Default" ENDINCLINATION="313;0;" ID="Arrow_ID_335662186" SOURCE="ID_614501813" STARTARROW="None" STARTINCLINATION="293;-12;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1689436181499" FOLDED="true" ID="ID_32560484" MODIFIED="1689439546663" TEXT="IterExplorer entgleist">
<icon BUILTIN="broken-line"/>
<node CREATED="1689436193834" ID="ID_156067579" MODIFIED="1689436224645" TEXT="als value_type wird Activity deduziert (nicht Epoch)">
<icon BUILTIN="info"/>
</node>
<node CREATED="1689436225702" ID="ID_937023531" MODIFIED="1689436231818" TEXT="passiert in CoreYield">
<node CREATED="1689436233565" ID="ID_709751117" MODIFIED="1689436248826" TEXT="CoreYield::Res ist noch korrekt (Epoch)"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1689436364852" ID="ID_1935791492" MODIFIED="1689436375515" TEXT="lib::meta::ValueTypeBinding biegt falsch ab!!!">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1689436477256" ID="ID_1404069442" MODIFIED="1689436481648" TEXT="RefTraits&lt;Yield::Res&gt;::Value ist noch Epoch"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1689436575624" ID="ID_1950477566" MODIFIED="1689436920354" TEXT="aber Epoch::value_type  -&gt; Activity">
<icon BUILTIN="clanbomber"/>
<node CREATED="1689436608012" ID="ID_745086607" MODIFIED="1689436620678" TEXT="was sogar eindeutig korrekt ist">
<icon BUILTIN="ksmiletris"/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1689436894638" ID="ID_1161969261" MODIFIED="1689436924919" TEXT="denn Activity ist selber wieder iterierbar">
<icon BUILTIN="forward"/>
</node>
</node>
<node COLOR="#5b280f" CREATED="1689436935224" ID="ID_582119395" MODIFIED="1689436963797" TEXT="es ist logich falsch, in CoreYield die ValueTypeBindings zu verwenden">
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node COLOR="#338800" CREATED="1689436974307" ID="ID_1380053330" MODIFIED="1689439543632" TEXT="CoreYield umstellen auf die reinen RefTraits">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1689469187413" ID="ID_855611178" MODIFIED="1689523118559" TEXT="Weiterschalten beim Epoch-Overflow">
<arrowlink COLOR="#34819d" DESTINATION="ID_586190414" ENDARROW="Default" ENDINCLINATION="-456;-39;" ID="Arrow_ID_1282441869" STARTARROW="None" STARTINCLINATION="-78;65;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1689469246381" ID="ID_797279135" MODIFIED="1689522750277" STYLE="fork" TEXT="zwei verschiedene Aktionen">
<font NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="idea"/>
<node COLOR="#338800" CREATED="1689469261730" ID="ID_1257907954" MODIFIED="1689522748787" TEXT="n&#xe4;chsten vorhandenen Slot pr&#xfc;fen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1689469270049" ID="ID_1411978756" MODIFIED="1689522748787" TEXT="ggfs neuen Slot aufmachen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1689469276848" ID="ID_521953438" MODIFIED="1689522748787" TEXT="Allokation auf ExtentFamily ansto&#xdf;en">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1689469291822" ID="ID_1957125180" MODIFIED="1689522748787" TEXT="neuen Slot einrichten">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1689469296726" ID="ID_767704093" MODIFIED="1689528839593" TEXT="Overflow-Signal ausl&#xf6;sen">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1689469322050" ID="ID_960239976" MODIFIED="1689523094732" TEXT="Design-Problem: Zugriff auf Services">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1689469350142" ID="ID_1553565651" MODIFIED="1689469386822" TEXT="es passiert vom AllocationHandle aus">
<icon BUILTIN="info"/>
</node>
<node COLOR="#435e98" CREATED="1689469360925" ID="ID_966350916" MODIFIED="1689523069078" TEXT="das kommt nicht direkt an den BlockFlow heran">
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#338800" CREATED="1689523070233" ID="ID_614501813" MODIFIED="1689523113487" TEXT="&#x27f9; Konsequenz: brauche einen back-Link auf den BlockFlow">
<arrowlink COLOR="#46c5b0" DESTINATION="ID_1883954151" ENDARROW="Default" ENDINCLINATION="313;0;" ID="Arrow_ID_335662186" STARTARROW="None" STARTINCLINATION="293;-12;"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1688516187452" ID="ID_843039397" MODIFIED="1689528833423" TEXT="Zusatz-Infos zu verwalten">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1688516199288" FOLDED="true" ID="ID_1824919687" MODIFIED="1689528828766" TEXT="Epochen-Deadline">
<icon BUILTIN="button_ok"/>
<node CREATED="1688516220648" ID="ID_1169377280" MODIFIED="1688516237353" TEXT="steht in einem Gate im 1.Slot"/>
<node COLOR="#435e98" CREATED="1688553471328" HGAP="24" ID="ID_262514506" MODIFIED="1689296881046" TEXT="daf&#xfc;r eigenen Sub-Typ anliegen: EpochGate" VSHIFT="7">
<linktarget COLOR="#336987" DESTINATION="ID_262514506" ENDARROW="Default" ENDINCLINATION="-88;-7;" ID="Arrow_ID_1549134996" SOURCE="ID_805170537" STARTARROW="None" STARTINCLINATION="57;6;"/>
<icon BUILTIN="yes"/>
<node CREATED="1688855534850" ID="ID_568063333" MODIFIED="1688855541413" TEXT="eine Activity vom Typ GATE"/>
<node CREATED="1688855549226" ID="ID_739862110" MODIFIED="1688855565203" TEXT="wird aber speziell vorinitialisiert"/>
<node CREATED="1688855565956" ID="ID_1537513041" MODIFIED="1688855590150" TEXT="der next-Pointer zeigt hier auf den n&#xe4;chsten freien Slot"/>
<node COLOR="#338800" CREATED="1688868023638" ID="ID_40051691" MODIFIED="1688868035961" TEXT="verwaltet verf&#xfc;gbare Slots">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1689210215933" ID="ID_1683638890" MODIFIED="1689449352740" TEXT="suche fr&#xfc;hest m&#xf6;gliche Epoch die diese Deadline unterst&#xfc;tzt">
<icon BUILTIN="button_ok"/>
<node CREATED="1689210281036" ID="ID_1680657401" MODIFIED="1689210292215" TEXT="Deadline der Epoche mu&#xdf; sp&#xe4;ter sein">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1689210421378" ID="ID_696354692" MODIFIED="1689210429867" TEXT="Fallunterscheidung">
<icon BUILTIN="info"/>
<node COLOR="#338800" CREATED="1689210431448" ID="ID_1334888981" MODIFIED="1689215569136" TEXT="leer &#x27f9; ein Epoch-Spacing dahinter">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1689210490128" ID="ID_1250262060" MODIFIED="1689446219559" TEXT="&lt;=&gt;">
<node COLOR="#338800" CREATED="1689210499415" ID="ID_786359649" MODIFIED="1689446205366" TEXT="vor erster &#x27f9; in erste">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1689210528987" ID="ID_1687889712" MODIFIED="1689446207767" TEXT="in Range &#x27f9; Suche">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1689210541041" ID="ID_1514746633" MODIFIED="1689449349543" TEXT="nach letzter &#x27f9; Grid erweitern">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1688554963598" FOLDED="true" ID="ID_708490850" MODIFIED="1689528831151" TEXT="F&#xfc;llstand der Epoche">
<icon BUILTIN="button_ok"/>
<node CREATED="1688554972581" ID="ID_278561305" MODIFIED="1688554979689" TEXT="wird auch im EpochGate abgelegt"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1688777569396" ID="ID_1723162290" MODIFIED="1689303080773" TEXT="schwierig... Platz fehlt">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1688777608247" ID="ID_459855386" MODIFIED="1688777620049" TEXT="Activities sind bewu&#xdf;t sehr knapp bemessen"/>
<node CREATED="1688777622037" ID="ID_900655074" MODIFIED="1688777808298" TEXT="die beiden Felder vom Gate werden hier definitiv ben&#xf6;tigt">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...denn speziell das Count-down-Feld ist gradezu der springende Punkt beim EpochGate (damit l&#246;sen wir das Problem, da&#223; IO-Operationen h&#228;ngenbleiben k&#246;nnen)
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#537a8e" DESTINATION="ID_253828146" ENDARROW="Default" ENDINCLINATION="399;21;" ID="Arrow_ID_1328212863" STARTARROW="None" STARTINCLINATION="508;-25;"/>
<icon BUILTIN="info"/>
</node>
<node COLOR="#435e98" CREATED="1688777811931" ID="ID_1249055593" MODIFIED="1689303078316" TEXT="bleibt nur der next-Pointer....">
<linktarget COLOR="#5d59c8" DESTINATION="ID_1249055593" ENDARROW="Default" ENDINCLINATION="-17;-67;" ID="Arrow_ID_246272817" SOURCE="ID_250176571" STARTARROW="None" STARTINCLINATION="115;9;"/>
<icon BUILTIN="idea"/>
<node COLOR="#5b280f" CREATED="1688777836110" ID="ID_526522381" MODIFIED="1688777868460" TEXT="schwierig... soll ich den jetzt &#xbb;umfunktionieren&#xab;?">
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#435e98" CREATED="1688777870348" ID="ID_573178945" MODIFIED="1689303072133" TEXT="nein: sauber ist nur ein  Pointer (auf den n&#xe4;chsten freien Slot)">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1688777914661" ID="ID_1672637364" MODIFIED="1688777925779" TEXT="das l&#xe4;uft auf sowas wie einen Iterator hinaus">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#5b280f" CREATED="1688778128929" ID="ID_717553610" MODIFIED="1688778210329" TEXT="dann ist er allerdings nicht mehr als linked-List nutzbar">
<arrowlink COLOR="#fe0d3a" DESTINATION="ID_1590074187" ENDARROW="Default" ENDINCLINATION="23;-55;" ID="Arrow_ID_708564411" STARTARROW="None" STARTINCLINATION="-39;2;"/>
<icon BUILTIN="broken-line"/>
</node>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1688555006558" FOLDED="true" ID="ID_11354677" MODIFIED="1689449393293" TEXT="Beschlu&#xdf;: KISS">
<icon BUILTIN="yes"/>
<node CREATED="1688555021190" ID="ID_1624305559" MODIFIED="1688555026714" TEXT="keine logarithmische Suche"/>
<node CREATED="1688555027213" ID="ID_1516151909" MODIFIED="1688555031529" TEXT="kein separater Index"/>
<node COLOR="#5b280f" CREATED="1688555032021" ID="ID_1157610750" MODIFIED="1689449365421" TEXT="die EpochGate als Linked-List verwenden">
<icon BUILTIN="button_cancel"/>
<node CREATED="1688778164204" ID="ID_1590074187" MODIFIED="1688778220458" TEXT="geht nicht mehr">
<linktarget COLOR="#fe0d3a" DESTINATION="ID_1590074187" ENDARROW="Default" ENDINCLINATION="23;-55;" ID="Arrow_ID_708564411" SOURCE="ID_717553610" STARTARROW="None" STARTINCLINATION="-39;2;"/>
<icon BUILTIN="closed"/>
</node>
<node CREATED="1688778276909" ID="ID_110193234" MODIFIED="1689449385009" TEXT="dann mu&#xdf; hier der Basis-Allokator helfen">
<arrowlink COLOR="#4b84c8" DESTINATION="ID_462737656" ENDARROW="Default" ENDINCLINATION="92;7;" ID="Arrow_ID_1743819163" STARTARROW="None" STARTINCLINATION="-6;48;"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#338800" CREATED="1689204144537" ID="ID_462737656" MODIFIED="1689449390148" TEXT="Epochen-Navigation per ExtentFamily">
<linktarget COLOR="#4b84c8" DESTINATION="ID_462737656" ENDARROW="Default" ENDINCLINATION="92;7;" ID="Arrow_ID_1743819163" SOURCE="ID_110193234" STARTARROW="None" STARTINCLINATION="-6;48;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1689204220486" FOLDED="true" HGAP="37" ID="ID_277319829" MODIFIED="1689994046938" TEXT="Flow-Zyklus" VSHIFT="1">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1689204233030" ID="ID_649398296" MODIFIED="1689905259947" TEXT="Frage: Parametrisierung?">
<icon BUILTIN="help"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1689357111293" ID="ID_1755712040" MODIFIED="1689357127978" TEXT="Alle Werte erst mal fest verdrahtet">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1689809470645" ID="ID_139481123" MODIFIED="1689809470645" TEXT="Entwurf-1">
<node CREATED="1689357095214" ID="ID_242896897" MODIFIED="1689357103217" TEXT="sch&#xe4;tze 10 Activities pro Frame"/>
<node CREATED="1689357080233" ID="ID_1640937150" MODIFIED="1689357080233" TEXT="Startwert ist zu&#xe4;chst an 50fps festgemacht"/>
<node CREATED="1689357131499" ID="ID_667312087" MODIFIED="1689357131499" TEXT="versuche mal mit 100 Slots pro Epoche zu arbeiten"/>
<node CREATED="1689357384865" ID="ID_979539917" MODIFIED="1689357481624" TEXT="Tick-Ferquenz: 1 Tick pro Sekunde?"/>
</node>
<node COLOR="#435e98" CREATED="1689809486731" FOLDED="true" HGAP="25" ID="ID_469668336" MODIFIED="1689905270420" TEXT="statisch konfigruierbar machen" VSHIFT="18">
<linktarget COLOR="#423ab1" DESTINATION="ID_469668336" ENDARROW="Default" ENDINCLINATION="-742;705;" ID="Arrow_ID_1498620407" SOURCE="ID_1054295274" STARTARROW="None" STARTINCLINATION="435;-802;"/>
<icon BUILTIN="yes"/>
<node CREATED="1689809517329" ID="ID_1171309030" MODIFIED="1689809536794" TEXT="Begr&#xfc;ndung: Test-Stabilit&#xe4;t, Lesbarkeit">
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1689817799352" ID="ID_404036572" MODIFIED="1689818151752" TEXT="Plan: l&#xe4;ngerfristig in eine Engine-Konfiguraiton &#xfc;berf&#xfc;hren">
<arrowlink COLOR="#8b3852" DESTINATION="ID_1102639659" ENDARROW="Default" ENDINCLINATION="-668;-47;" ID="Arrow_ID_1600823738" STARTARROW="None" STARTINCLINATION="-1058;51;"/>
<arrowlink COLOR="#8b3852" DESTINATION="ID_742845816" ENDARROW="Default" ENDINCLINATION="705;44;" ID="Arrow_ID_581878368" STARTARROW="None" STARTINCLINATION="-766;36;"/>
<icon BUILTIN="hourglass"/>
</node>
<node CREATED="1689809543398" ID="ID_961977006" MODIFIED="1689809583269" TEXT="Zusammenhang mit der ExtentFamily-Parametrisierung">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1689809584696" ID="ID_1801960603" MODIFIED="1689809593344" TEXT="bisher war alles einfach in einem anonymen Namespace"/>
<node CREATED="1689809593860" ID="ID_516321085" MODIFIED="1689809604951" TEXT="und dort war auch ein Typ &quot;Allocator&quot; definiert"/>
</node>
<node COLOR="#435e98" CREATED="1689809607614" ID="ID_236289241" MODIFIED="1689872669620" TEXT="Ansatz: policy-Mix-In">
<icon BUILTIN="idea"/>
<node COLOR="#435e98" CREATED="1689809625112" ID="ID_1243565823" MODIFIED="1689872637282" TEXT="wird in einem sub-Namespace blockFlow bereitgestellt">
<icon BUILTIN="yes"/>
<node CREATED="1689809792157" ID="ID_1564252749" MODIFIED="1689809807279" TEXT="DefaultConfig">
<node CREATED="1689809818314" ID="ID_1792198273" MODIFIED="1689809823013" TEXT="als default-Argument"/>
<node CREATED="1689809827345" ID="ID_81051745" MODIFIED="1689809834680" TEXT="wird f&#xfc;r die Tests verwendet">
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node CREATED="1689809808051" ID="ID_649095088" MODIFIED="1689809811895" TEXT="RenderConfig"/>
</node>
<node COLOR="#338800" CREATED="1689809665379" ID="ID_1833888873" MODIFIED="1689872648583" TEXT="per Template-Parameter eingemischt">
<icon BUILTIN="button_ok"/>
<node CREATED="1689810756996" ID="ID_97852927" MODIFIED="1689810767657" TEXT="soll Konfigurierbarkeit schaffen"/>
<node COLOR="#435e98" CREATED="1689810768845" ID="ID_1900574250" MODIFIED="1689872627938" TEXT="Konsequenz &#x27f9; mu&#xdf; eine Strategy abspalten">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...weil ich sonst auch die abgeleiteten Parameter jedesmal wieder neu definieren mu&#223;, anstatt f&#252;r den konkreten Fall nur das zu &#228;ndern, was wirklich abweicht; ben&#246;tigt wird hier also so etwas wie &#187;statische Vererbung&#171;
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#338800" CREATED="1689860417547" ID="ID_1858836680" MODIFIED="1689872568369" TEXT="Zugriff von dort auf die Config als Meyers Singleton">
<icon BUILTIN="button_ok"/>
<node CREATED="1689860436808" ID="ID_666663778" MODIFIED="1689863231116" TEXT="Diskussion...">
<icon BUILTIN="info"/>
<node CREATED="1689860443279" ID="ID_953236469" MODIFIED="1689861105486" TEXT="man k&#xf6;nnte auch direkt die Felder non-static einmischen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      das w&#228;re das Einfachste, auch zur Nutzung &#8212; aber es bl&#228;ht das Objekt auf (nicht gef&#228;hrlich, aber unsch&#246;n) und der Ansatz steht auf Dauer einer zentralen Engine-Konfiguration mit m&#246;glicher dynamischer Steuerung im Weg
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1689861113458" ID="ID_1726539465" MODIFIED="1689861256736" TEXT="man k&#xf6;nnte stattdessen auf statische Felder setzen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...und das ist schwieriger, wegen der Initialisierung, die dann constexpr sein m&#252;&#223;te &#8212; und das versch&#228;rft das Problem im Hinblick auf die zuk&#252;nftige Entwicklung
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1689861281535" ID="ID_616671292" MODIFIED="1689861489386" TEXT="man k&#xf6;nnte eine Referenz auf ein lokal definiertes Objekt verwenden">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Das widerspricht aber der Idee einer mehr oder weniger statischen Grundkonfiguration &#8212; zudem stellt sich dann die Frage, wie der Zugriff passiert; es besteht die Gefahr, eine tats&#228;chliche Indirektion zur Laufzeit einzuf&#252;hren (der Overhead w&#228;re vermutlich Gering im Vergleich zur Suche durch die Epochen, aber genau deshalb k&#246;nnte eine solche Ineffizienz leicht verborgen bleiben)
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1689861491507" ID="ID_1856921857" MODIFIED="1689862760159" TEXT="Fazit: Meyers Singleton als Kompromi&#xdf; mit geringem Risiko">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Die Verwendung wird etwas komplizierter, aber f&#252;r Tests kann man direkt die Instanz von der Config verwenden und in lokale Variable ziehen. Abgesehen davon gilt Meyer's Singleton als die performanteste L&#246;sung, ein Singleton threadsafe zu implementieren (ca 50% schneller als mit Atomics und double-checked locking). Falls der Konstruktor trivial ist, entfernt der Optimizer die Initialisierung komplett. Es bleibt nur das Risiko, da&#223; diese Optimierung aus irgend einem Grund nicht stattfindet, und dann bleibt der Schaden gering (viel geringer als wenn man versehentlich eine Indirektion reinbekommt)
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#338800" CREATED="1689863244607" ID="ID_824360010" MODIFIED="1689872622784" TEXT="als Getter in die Strategy-Basisklasse eingebaut">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1689863261456" ID="ID_824983335" MODIFIED="1689863270316" TEXT="damit per Typ aufl&#xf6;sbar">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1689809675666" ID="ID_899609884" MODIFIED="1689872656941" TEXT="&#x27f9; damit wird auch Epoch parametrisiert">
<node COLOR="#338800" CREATED="1689809757289" ID="ID_1758760519" MODIFIED="1689872663074" TEXT="und zwar auf den Allocator">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1689809767024" ID="ID_263502473" MODIFIED="1689872663073" TEXT="der einfache Name Epoch wandert nun in BlockFlow">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1689818224323" ID="ID_1914141471" MODIFIED="1689872666750" TEXT="Strategy baut darauf auf">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1689818168020" ID="ID_745780964" MODIFIED="1689872676809" TEXT="Parameter reorganisieren">
<icon BUILTIN="button_ok"/>
<node CREATED="1689818175388" ID="ID_1172559425" MODIFIED="1689818181757" TEXT="charakteristische Parameter"/>
<node CREATED="1689818182227" ID="ID_385651938" MODIFIED="1689818185945" TEXT="Tuning-Parameter"/>
<node CREATED="1689818186633" ID="ID_76340851" MODIFIED="1689818191732" TEXT="Kontext-Annahmen"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1689204252820" ID="ID_1727328732" MODIFIED="1689560452302" TEXT="Epoch-Spacing-Mechanismus">
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1689204292687" ID="ID_1711692712" MODIFIED="1689204301552" TEXT="vorl&#xe4;ufig einfach halten">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1689204305717" ID="ID_123055064" MODIFIED="1689204325821" TEXT="sp&#xe4;ter wird auch dieses Thema auf TimingObservable aufsetzen">
<linktarget COLOR="#8d8fd3" DESTINATION="ID_123055064" ENDARROW="Default" ENDINCLINATION="606;0;" ID="Arrow_ID_1147910894" SOURCE="ID_900092388" STARTARROW="None" STARTINCLINATION="216;0;"/>
<icon BUILTIN="yes"/>
</node>
<node COLOR="#435e98" CREATED="1689204331764" ID="ID_578018270" MODIFIED="1689555121736" TEXT="vorerst einfache ged&#xe4;mpfte Mittelung">
<linktarget COLOR="#6e7c9b" DESTINATION="ID_578018270" ENDARROW="Default" ENDINCLINATION="295;548;" ID="Arrow_ID_1545475117" SOURCE="ID_601531168" STARTARROW="None" STARTINCLINATION="1465;-194;"/>
<icon BUILTIN="yes"/>
<node CREATED="1689354964927" ID="ID_1525931195" MODIFIED="1689354982888" TEXT="mir schwebt ein exponentielles moving-average vor"/>
<node CREATED="1689355051116" ID="ID_214862798" MODIFIED="1689355076675" TEXT="Ansatz">
<node CREATED="1689355077335" ID="ID_250434643" MODIFIED="1689355094729" TEXT="lineares moving-average: den N-ten alten Wert subtrahieren"/>
<node COLOR="#338800" CREATED="1689355095725" ID="ID_917795868" MODIFIED="1689555145374" TEXT="exponentielles moving-average: ein N-tel vom gemittelten Wert subtrahieren">
<linktarget COLOR="#579ad8" DESTINATION="ID_917795868" ENDARROW="Default" ENDINCLINATION="-209;8;" ID="Arrow_ID_1287643203" SOURCE="ID_367226311" STARTARROW="None" STARTINCLINATION="292;0;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1689355137015" ID="ID_864577627" MODIFIED="1689355148010" TEXT="Konsequenz...">
<node CREATED="1689355149334" ID="ID_649514706" MODIFIED="1689355231758" TEXT="der &#xbb;alte Wert&#xab; wird jeweils mit (N-1)/N multipliziert">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <ul>
      <li>
        gewichtetes Mittel
      </li>
      <li>
        eigentlich sind es N alte Punkte, aber wir ziehen ja jedesmal einen Punkt ab &#10233; N-1 gemittelte Beitr&#228;ge
      </li>
    </ul>
  </body>
</html></richcontent>
<arrowlink COLOR="#757ecb" DESTINATION="ID_1161198928" ENDARROW="Default" ENDINCLINATION="1079;62;" ID="Arrow_ID_29993738" STARTARROW="None" STARTINCLINATION="760;42;"/>
<node CREATED="1698711155793" HGAP="37" ID="ID_945067314" MODIFIED="1698711686721" TEXT="D&#xe4;mpfungsfaktor &#x3b1;" VSHIFT="11">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      EMA(i) = &#945; &#183; value(i) + (1- &#945;) &#183; EMA(i-1)
    </p>
    <p>
      
    </p>
    <p>
      Im Grunde gibt es keine Herleitung, denn das ganze Verfahren ist pragmatisch.
    </p>
    <p>
      In meiner Rationalisierung w&#228;re dann &#945; &#8788; 1/N&#160;&#160;&#10233; 1-&#945; = (N-1)/N
    </p>
    <p>
      In der Wirtschaft (Chart-Analyse) findet man oft &#945; &#8788; damp / (N+1)&#160;&#160;und damp &#8788; 2 ist die gel&#228;ufige Wahl. Damit kommt man auf die oft zitierte Faustregel, da&#223; ein neuer Wert in einen 10-day EMA mit 18% eingeht (2/11)
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1689355234696" ID="ID_1358310078" MODIFIED="1689355261867" TEXT="Betrachtung des Einzelwerts in der k-ten Iteration">
<node CREATED="1689355265862" ID="ID_19716247" MODIFIED="1689355311124" TEXT="x&#x2096; = x/N &#xb7; ((N-1)/N)^k"/>
<node CREATED="1689355314360" ID="ID_778368723" MODIFIED="1689355327537" TEXT="das hei&#xdf;t: exponentielle D&#xe4;mpung des Beitrags"/>
<node CREATED="1689355328535" ID="ID_1580028196" MODIFIED="1689355346775" TEXT="kleines N &#x27f9; neue Werte wirken stark"/>
</node>
<node CREATED="1689355358657" ID="ID_1737373389" MODIFIED="1689355415526" TEXT="Wichtig: Anfangswert sollte nicht 0 sein, sondern ein Sch&#xe4;tzwert">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      denn sonst k&#246;nnte es relativ lang dauern, bis sich das System einreguliert, und w&#228;hrend dieser Zeit k&#246;nnte es bereits in S&#228;ttigung gehen, und Regelschwingungen produzieren
    </p>
  </body>
</html></richcontent>
<node COLOR="#435e98" CREATED="1689555157106" ID="ID_758511598" MODIFIED="1689555196669" TEXT="zun&#xe4;chst &#xfc;berniimmt INITIAL_EPOCH_STEP diese Rolle"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1689555181934" ID="ID_900092388" MODIFIED="1689555228891" TEXT="sp&#xe4;ter ein persistentes TimingObservable">
<arrowlink COLOR="#8d8fd3" DESTINATION="ID_123055064" ENDARROW="Default" ENDINCLINATION="606;0;" ID="Arrow_ID_1147910894" STARTARROW="None" STARTINCLINATION="216;0;"/>
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1689204430524" FOLDED="true" ID="ID_1525654861" MODIFIED="1689560447571" TEXT="Signale">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1689204438866" ID="ID_586190414" MODIFIED="1689528725978" TEXT="Epochen-Overflow">
<linktarget COLOR="#34819d" DESTINATION="ID_586190414" ENDARROW="Default" ENDINCLINATION="-456;-39;" ID="Arrow_ID_1282441869" SOURCE="ID_855611178" STARTARROW="None" STARTINCLINATION="-78;65;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1689355428408" ID="ID_1439608393" MODIFIED="1689355463591" TEXT="bei jedem Event um einen proprotionalen Faktor verk&#xfc;rzen"/>
<node CREATED="1689355466427" ID="ID_966913305" MODIFIED="1689355486380" TEXT="verk&#xfc;rzen &#x27f9; Slot-Dichte um den Kehrwert erh&#xf6;ht"/>
<node CREATED="1689355589282" ID="ID_840744" MODIFIED="1689528652859" TEXT="Faktor? &#x3a6; nat&#xfc;rlich">
<icon BUILTIN="button_cancel"/>
<node CREATED="1689356180333" ID="ID_71577757" MODIFIED="1689356511458" TEXT="1/&#x3a6; = &#x3a6;-1"/>
<node CREATED="1689356185098" ID="ID_1224416689" MODIFIED="1689356203787" TEXT="0,6180339887498948482"/>
<node CREATED="1689528655142" ID="ID_1594941219" MODIFIED="1689528667779" TEXT="Nein! das w&#xe4;re zu aggressiv">
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#190f69" CREATED="1689528669251" ID="ID_1236093000" MODIFIED="1689528715267" TEXT="w&#xe4;hle mal erst was Einfaches: Faktor 0.9">
<icon BUILTIN="forward"/>
</node>
</node>
<node COLOR="#338800" CREATED="1689204448250" ID="ID_688039501" MODIFIED="1689560372193" TEXT="F&#xfc;llstand beim Aufr&#xe4;umen">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1689356233875" ID="ID_1117159632" MODIFIED="1689560396485" TEXT="das wirkt mit einer gewissen Verz&#xf6;gerung">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1689356263015" ID="ID_367226311" MODIFIED="1689560390482" TEXT="hier wird exponential-MA angewendet">
<arrowlink COLOR="#579ad8" DESTINATION="ID_917795868" ENDARROW="Default" ENDINCLINATION="-209;8;" ID="Arrow_ID_1287643203" STARTARROW="None" STARTINCLINATION="292;0;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1689356572198" ID="ID_1540220100" MODIFIED="1689560380715" TEXT="&#xbb;Sollwert&#xab; &#x27f9; als Signal einspeisen">
<icon BUILTIN="button_ok"/>
<node CREATED="1689356669065" ID="ID_492493887" MODIFIED="1689356705152" TEXT="&#xbb;Sollwert&#xab; &#x2261; die Epochen-L&#xe4;nge, die gen&#xfc;gt h&#xe4;tte"/>
<node CREATED="1689356713555" ID="ID_1631540322" MODIFIED="1689356790172" TEXT="angenommen die Deadlines sind gleichverteilt &#x27f9; direkt den F&#xfc;llstand nehmen"/>
<node CREATED="1689356905327" ID="ID_1889066607" MODIFIED="1689357557781" TEXT="&#x27f9; aktuelle L&#xe4;nge / F&#xfc;llstand-Faktor"/>
<node COLOR="#435e98" CREATED="1689555058905" ID="ID_241155664" MODIFIED="1689560152014" TEXT="Problem: aktuelle L&#xe4;nge ermitteln">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1689555238439" ID="ID_1830307338" MODIFIED="1689555250023" TEXT="wir speichern nur die Deadline">
<icon BUILTIN="info"/>
</node>
<node COLOR="#435e98" CREATED="1689555251273" ID="ID_860911583" MODIFIED="1689560059909" TEXT="f&#xfc;r die erste Epoche ist der Anfangspunkt nicht bekannt">
<icon BUILTIN="broken-line"/>
<node COLOR="#338800" CREATED="1689555672062" ID="ID_887457197" MODIFIED="1689560062785" TEXT="Konsequenz: mu&#xdf; diesen in einem Feld speichern">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1689555773764" ID="ID_729321956" MODIFIED="1689560062785" TEXT="bootstrap mit dem initialen Epoch spacing">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1689560065185" ID="ID_1070808815" MODIFIED="1689560430650" TEXT="&#xdc;bersteuern der Reguliertung durch leere Bl&#xf6;cke vermeiden">
<linktarget COLOR="#2595a7" DESTINATION="ID_1070808815" ENDARROW="Default" ENDINCLINATION="-82;115;" ID="Arrow_ID_1114882280" SOURCE="ID_1075921908" STARTARROW="None" STARTINCLINATION="282;20;"/>
<icon BUILTIN="messagebox_warning"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1689560169731" ID="ID_1835953363" MODIFIED="1689560184792" TEXT="leere Bl&#xf6;cke &#x27f9; division by zero">
<icon BUILTIN="broken-line"/>
</node>
<node CREATED="1689560186554" ID="ID_897202375" MODIFIED="1689560292344" TEXT="fast leere Bl&#xf6;cke &#x27f9; f&#xfc;hren zu einem extrem gro&#xdf;en SIgnal">
<icon BUILTIN="info"/>
</node>
<node CREATED="1689560231392" ID="ID_200111856" MODIFIED="1689560287922" TEXT="Engine im Leerlauf &#x27f9; Epochen werden riesig &#x27f9; Verlust der Regelf&#xe4;higkeit">
<icon BUILTIN="clanbomber"/>
</node>
<node COLOR="#338800" CREATED="1689560294562" ID="ID_1182821086" MODIFIED="1689560368468" TEXT="L&#xf6;sung: Unterschwelle einf&#xfc;hren">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Bl&#246;cke unterhalb dieser Schwelle werden nicht mehr hochgerechnet, sondern mit ihrer aktuellen L&#228;nge eingebucht, so als w&#228;reen sie optimal; damit sollte die Regelung bei Leerfallen der Engine auf dem zuletzt eingependelten Wert stehenbleiben...
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node CREATED="1689356940427" ID="ID_1868278031" MODIFIED="1689356956670" TEXT="damit regelt dieser Mechanismus stets herunter"/>
<node CREATED="1689357043350" ID="ID_1771390424" MODIFIED="1689357058027" TEXT="aber langsamer, da er nur im Tick l&#xe4;uft"/>
<node CREATED="1689560404546" ID="ID_1075921908" MODIFIED="1689560438401" TEXT="zus&#xe4;tzliche D&#xe4;mpfung bei leeren Bl&#xf6;cken">
<arrowlink COLOR="#2595a7" DESTINATION="ID_1070808815" ENDARROW="Default" ENDINCLINATION="-82;115;" ID="Arrow_ID_1114882280" STARTARROW="None" STARTINCLINATION="282;20;"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1699588894575" FOLDED="true" ID="ID_737137964" MODIFIED="1699641321692" TEXT="BlockFlow: Hint zur Platz-Regulierung unterst&#xfc;tzen">
<linktarget COLOR="#4cb694" DESTINATION="ID_737137964" ENDARROW="Default" ENDINCLINATION="-1137;63;" ID="Arrow_ID_1003728898" SOURCE="ID_75294881" STARTARROW="None" STARTINCLINATION="-998;36;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1699588945917" ID="ID_83511183" MODIFIED="1699588974776">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Idee: Angabe in <i>&#187;zus&#228;tzlichen Frames-per-second&#171;</i>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1699588976977" ID="ID_290474610" MODIFIED="1699641236707" TEXT="dazu den FrameRate-Typ ausbauen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1699588995897" ID="ID_14216185" MODIFIED="1699589010757" TEXT="Errechnen aus count + Referenz-Zeit">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1699589011492" ID="ID_1793529885" MODIFIED="1699641194195" TEXT="Problem: &#xdc;berlauf-Gefahr der fractional-Arithmetik">
<icon BUILTIN="messagebox_warning"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1699640990559" ID="ID_361038897" MODIFIED="1699641191683" TEXT="f&#xfc;hre ein Limit ein : uint_MAX / 1024">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1699641014924" ID="ID_202539962" MODIFIED="1699641188771" TEXT="in Grenzbereichen re-Quantisieren">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      wende wieder die gleiche Technik an, die ich f&#252;r das ZoomWindow erfolgreich entwickelt hatte...
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
<node CREATED="1699641067355" ID="ID_1475176874" MODIFIED="1699641077742" TEXT="Vor-Berechnung in 64bit rational"/>
<node CREATED="1699641078485" ID="ID_1257691129" MODIFIED="1699641183383" TEXT="wenn Z&#xe4;hler nicht darstellbar &#x27f9; requantisieren">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <ol>
      <li>
        feststellen, um wie viele Stellen die Zahl zu gro&#223; ist (bin&#228;r-logarithmus)
      </li>
      <li>
        den Nenner um diese Zahl nach rechts schieben &#10233; neuer quantisierer
      </li>
      <li>
        mit diesem die Zahl re-quantisieren
      </li>
      <li>
        daraus ein boost::rationall&lt;uint&gt;
      </li>
    </ol>
  </body>
</html></richcontent>
</node>
<node CREATED="1699641102423" ID="ID_904020690" MODIFIED="1699641115409" TEXT="quantisiere auf das Limit (im Nenner)"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1699641198146" ID="ID_1058495216" MODIFIED="1699641232676" TEXT="Arithmetik schon zug&#xe4;nglich, da er von boost::rational&lt;uint&gt; erbt">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1699641219639" ID="ID_1481490655" MODIFIED="1699641229214" TEXT="TimeValue_test erg&#xe4;nzt mit Grenzf&#xe4;llen">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1699641240696" ID="ID_749156465" MODIFIED="1699641284541" TEXT="der Rest ist eine total banale Rechnung">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <ul>
      <li>
        aktuelle Framerate += zus&#228;tzliche Framerate
      </li>
      <li>
        Framerate &#10233; neue Epochen-Dauer, setzen!
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1689560454292" FOLDED="true" ID="ID_1170043916" MODIFIED="1689993985097" TEXT="Laufzeitverhalten beobachten">
<arrowlink COLOR="#3ba098" DESTINATION="ID_906364025" ENDARROW="Default" ENDINCLINATION="-1525;104;" ID="Arrow_ID_849510703" STARTARROW="None" STARTINCLINATION="455;-1256;"/>
<arrowlink COLOR="#636cb5" DESTINATION="ID_256501398" ENDARROW="Default" ENDINCLINATION="-369;-101;" ID="Arrow_ID_1474600084" STARTARROW="None" STARTINCLINATION="439;37;"/>
<linktarget COLOR="#5366b8" DESTINATION="ID_1170043916" ENDARROW="Default" ENDINCLINATION="-302;546;" ID="Arrow_ID_718336697" SOURCE="ID_558083096" STARTARROW="None" STARTINCLINATION="-1231;101;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1689607767280" ID="ID_1402491463" MODIFIED="1689993920706" TEXT="Analyse-Setup">
<icon BUILTIN="info"/>
<node COLOR="#338800" CREATED="1689560462402" ID="ID_572069226" MODIFIED="1689640015674" TEXT="verwende probabilisitsche F&#xfc;llung">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1689560474545" ID="ID_994558438" MODIFIED="1689640017220" TEXT="aber zentriert um einen erwarteten Durschnittswert">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1689560488768" ID="ID_1380075970" MODIFIED="1689898875081" TEXT="beobachte, ob sich die Blockl&#xe4;ngen-Regulierung entsprechend einpendelt">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1689560507573" ID="ID_696357967" MODIFIED="1689898876495" TEXT="au&#xdf;erdem die Laufzeiten messen">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1689607779429" ID="ID_1970538924" MODIFIED="1689720969565" TEXT="Beobachtungen-1">
<icon BUILTIN="broken-line"/>
<node COLOR="#338800" CREATED="1689640367882" ID="ID_986709872" MODIFIED="1689640380033" TEXT="alle drei Methoden laufen korrekt (gleiche Checksumme)">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1689640055285" ID="ID_197017544" MODIFIED="1689640071415" TEXT="Me&#xdf;werte KATASTROPHAL daneben">
<icon BUILTIN="smiley-oh"/>
<node CREATED="1689640076427" ID="ID_875462831" MODIFIED="1689640079093" TEXT="-O0">
<node CREATED="1689640080105" ID="ID_178761327" MODIFIED="1689640750910" TEXT="noAlloc: 54ns"/>
<node CREATED="1689640092880" ID="ID_1541861024" MODIFIED="1689640764832" TEXT="heapAlloc: 71ns"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1689640103086" ID="ID_1735978679" MODIFIED="1689640128216" TEXT="blockFlow: 81794ns">
<icon BUILTIN="broken-line"/>
</node>
</node>
<node CREATED="1689640132730" ID="ID_999730008" MODIFIED="1689640135149" TEXT="-O3">
<node CREATED="1689640449871" ID="ID_223262207" MODIFIED="1689640861367" TEXT="noAlloc: 5.86ns"/>
<node CREATED="1689640461957" ID="ID_1623175603" MODIFIED="1689640534287" TEXT="heapAlloc: 22.1ns"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1689640536569" ID="ID_1227057004" MODIFIED="1689640576831" TEXT="blockFlow: 8360ns">
<icon BUILTIN="broken-line"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1689640146728" ID="ID_1549819920" MODIFIED="1689684857285" TEXT="Probleme in der Blocksteuerung">
<icon BUILTIN="broken-line"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689640172272" ID="ID_581706192" MODIFIED="1689640208346" TEXT="Epoch-Step ist zuletzt 0">
<icon BUILTIN="broken-line"/>
</node>
<node CREATED="1689640251816" ID="ID_1949878312" MODIFIED="1689640263863" TEXT="cntEpochs = 1213"/>
<node CREATED="1689640251817" ID="ID_1511949915" MODIFIED="1689640273171" TEXT="poolSize = 1216"/>
<node CREATED="1689640284158" ID="ID_1888282469" MODIFIED="1689640309034" TEXT="allEpochs() = &quot;691ms|871ms|871ms|....&quot;"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1689641016179" ID="ID_74333541" MODIFIED="1689641028236" TEXT="Feststellungen">
<icon BUILTIN="forward"/>
<node CREATED="1689641031264" ID="ID_1238488005" MODIFIED="1689641053369" TEXT="das Verhalten von noAlloc vs Heap-Alloc ist plausibel"/>
<node CREATED="1689641054053" ID="ID_603208212" MODIFIED="1689641085816" TEXT="&#xfc;berraschend ist, da&#xdf; heapAlloc derart gut performt">
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#821c75" CREATED="1689641127111" ID="ID_1286298004" MODIFIED="1689641173147" TEXT="eine lineare Suche durch 1200 Epochen ist .... KISS">
<icon BUILTIN="smiley-oh"/>
</node>
<node COLOR="#435e98" CREATED="1689641219655" ID="ID_1749403596" MODIFIED="1689727062181" TEXT="unklar ist: warum stehen die Deadlines auf derart niedrigen Werten?">
<icon BUILTIN="help"/>
<node CREATED="1689641337033" ID="ID_1509984750" MODIFIED="1689641764772" TEXT="klar ist: bei Epoch-Step = 0 kommt er nicht mehr vom Fleck"/>
<node CREATED="1689641404076" ID="ID_194676641" MODIFIED="1689641649749" TEXT="aber sollte nicht der clean-up dann alle Epochen wegr&#xe4;umen?">
<arrowlink DESTINATION="ID_1830236844" ENDARROW="Default" ENDINCLINATION="458;0;" ID="Arrow_ID_185595114" STARTARROW="None" STARTINCLINATION="233;11;"/>
</node>
<node CREATED="1689642306772" ID="ID_1765800200" MODIFIED="1689642322971" TEXT="sollte dann nicht eine division-by-zero auftreten?"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689642371947" ID="ID_1406026816" MODIFIED="1689642405098" TEXT="insgesamt: m&#xf6;glicherweise ist das Konzept so nicht tragf&#xe4;hig">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1689642408734" ID="ID_1850569145" MODIFIED="1689642449156" TEXT="schon die Parametrisierung f&#xfc;r den Test zeigt einen viel zu kleinen Hebel"/>
<node CREATED="1689642450264" ID="ID_1125214093" MODIFIED="1689684699740" TEXT="allerdings ist klar: die beiden anderen Varianten sind nicht skalierbar">
<node CREATED="1689642540378" ID="ID_1216826442" MODIFIED="1689642547999" TEXT="wir brauchen Dauerbetrieb"/>
<node CREATED="1689642549891" ID="ID_960993571" MODIFIED="1689642558846" TEXT="Heap fragmentiert im Lauf der Zeit"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1689642582295" ID="ID_1154028289" MODIFIED="1689684715594" TEXT="wir brauchen sichere Erkennung freiggebarer Records">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1689642751072" ID="ID_1608372510" MODIFIED="1689642786257">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      aber: BlockFlow macht schon <b>verdammt viel</b>&#160;f&#252;r jede Allokation
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1689643876317" ID="ID_639218463" MODIFIED="1689643891123" TEXT="im Vergleich zu einem feelist-Pool-Allocator"/>
<node CREATED="1689643931937" ID="ID_43711490" MODIFIED="1689643963507" TEXT="die Epochen m&#xfc;ssen wohl viel gr&#xf6;&#xdf;er sein">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1689684827456" ID="ID_1251456862" MODIFIED="1689720964628" TEXT="Untersuchung">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1689688605214" ID="ID_1479889724" MODIFIED="1689688613864" TEXT="Instrumentierung per Dump-Message">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1689688665057" ID="ID_191179239" MODIFIED="1689689020435">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      die erste belegte Epoche ist <i>exterm viel zu lang</i>&#160;&#10233; sehr <b>viele Overflows</b>&#160;zu Beginn
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1689688809029" ID="ID_197704228" MODIFIED="1689689024928" TEXT="die Overflow-Skalierung ist zu aggresiv">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1689688867029" ID="ID_370596400" MODIFIED="1689688892793">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      sie wird <i>f&#252;r jedes Element </i>aktiviert!
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1689688913178" ID="ID_750544240" MODIFIED="1689688932088" TEXT="...ist aber konzeptionell auf Block-Ebene gedacht"/>
<node COLOR="#338800" CREATED="1689688962913" ID="ID_1246079128" MODIFIED="1689720958737" TEXT="abschw&#xe4;chen auf  Wurzel-Blockgr&#xf6;&#xdf;e">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689688991172" ID="ID_1205551912" MODIFIED="1689689193276" TEXT="es fehlt eine Mindestgrenze">
<icon BUILTIN="broken-line"/>
<node CREATED="1689689101381" ID="ID_1069284022" MODIFIED="1689689142544" TEXT="damit l&#xe4;uft der Wert irgendwann in die Aufl&#xf6;sungsgrenze">
<icon BUILTIN="broken-line"/>
</node>
<node CREATED="1689689121643" ID="ID_1139921351" MODIFIED="1689689145605" TEXT="zumal sehr viel h&#xe4;ufiger / aggressiver skaliert wird (als intendiert)">
<icon BUILTIN="idea"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689689147911" ID="ID_325871925" MODIFIED="1689689193276" TEXT="die generierten Deadlines vom Test sind falsch">
<icon BUILTIN="broken-line"/>
<node CREATED="1689689201144" ID="ID_1519775847" MODIFIED="1689689215381" TEXT="damit kommt das Epochen-System nicht vom Fleck"/>
<node CREATED="1689689279445" ID="ID_1830236844" MODIFIED="1689689306124">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      vermutlich findet deshalb auch <b>&#252;berhaupt kein clean-up</b>&#160;statt
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1830236844" ENDARROW="Default" ENDINCLINATION="458;0;" ID="Arrow_ID_185595114" SOURCE="ID_194676641" STARTARROW="None" STARTINCLINATION="233;11;"/>
</node>
<node CREATED="1689689307341" ID="ID_1812665874" MODIFIED="1689689327476" TEXT="weshalb dann auch die division-by-zero gar nicht getriggert wird"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1689692582553" ID="ID_291005420" MODIFIED="1689692625099" TEXT="die Bremse im MovingAverage ist kontraproduktiv">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1689692626589" ID="ID_629425172" MODIFIED="1689692652763">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      bisher werden stark unterf&#252;llte Epochen als <i>neutral </i>eingebucht
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1689692673756" ID="ID_397401907" MODIFIED="1689692700628" TEXT="das f&#xfc;hrt dazu, da&#xdf; sich eine sehr kleine Epochen-L&#xe4;nge &#x201e;festsetzt&#x201c;"/>
<node COLOR="#338800" CREATED="1689692715478" ID="ID_1884642604" MODIFIED="1689720956403" TEXT="stattdessen genau mit dem Gegenst&#xfc;ck zur Overflow-Skalierung hochfahren">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1689695509771" ID="ID_1680463612" MODIFIED="1689720957607" TEXT="besser noch: linear interpolieren zwischen diesem und dem tats&#xe4;chlichen Signal">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Grunds&#228;tzlich ist der Ansatz schon richtig: wenn wir uns weit vom Regelfokus entfernen, dann die R&#252;ckstellkraft st&#228;rker d&#228;mpfen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1689706630682" ID="ID_1207312075" MODIFIED="1689898854930" TEXT="Beobachtungen-2">
<icon BUILTIN="idea"/>
<node COLOR="#338800" CREATED="1689706647127" ID="ID_122402325" MODIFIED="1689706656742" TEXT="nach Beheben der Fehler greift die Regelung">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1689706729972" ID="ID_109351292" MODIFIED="1689707548071" TEXT="der Moving-Average mu&#xdf; vor allem die Verz&#xf6;gerung zum Me&#xdf;punkt abfangen">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1689706842221" ID="ID_46527499" MODIFIED="1689706924295">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      mu&#223; die D&#228;mpfung f&#252;r extreme Zust&#228;nde so einstellen,
    </p>
    <p>
      da&#223; sie etwa eine Gr&#246;&#223;enordnung langsamer greift,
    </p>
    <p>
      als die charakteristische Regelzeit (&#8793; Verz&#246;gerung)
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1689707069750" ID="ID_1676110559" MODIFIED="1689707543214" TEXT="die Overflow-Korrektur sollte im Schnitt etwas st&#xe4;rker wirken">
<icon BUILTIN="idea"/>
<node CREATED="1689707102105" ID="ID_1477862319" MODIFIED="1689707113227" TEXT="gilt nur im stabilen Zustand"/>
<node CREATED="1689707125990" ID="ID_86627735" MODIFIED="1689707145143" TEXT="weil dort Overflows nur punktweise auftreten"/>
<node CREATED="1689707145850" ID="ID_218220838" MODIFIED="1689707160501" TEXT="und Overflows generell die Performance beeintr&#xe4;chtigen"/>
<node CREATED="1689707223025" ID="ID_18144633" MODIFIED="1689707248873" TEXT="die zus&#xe4;tziche D&#xe4;mpfung durch den MovingAverage hat aber bereits genau diesen Effekt"/>
</node>
<node COLOR="#338800" CREATED="1689707264498" ID="ID_36545794" MODIFIED="1689707536374">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <b>Feinabstimmung</b>: den Testfall rund laufen lasssen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
<node CREATED="1689707302230" ID="ID_1843953493" MODIFIED="1689707397166" TEXT="Overflow-Kompensation vs. Vorlaufzeit f&#xfc;r MA">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Die Korrektur bei Overflows darf nur so stark sein, da&#223; die Bl&#246;cke w&#228;hrend der Vorlaufzeit etwa halbiert werden, aber nicht so stark, da&#223; wir gegen das Limit laufen
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1689707398181" ID="ID_536362200" MODIFIED="1689707492490" TEXT="bei Einsetzen der Regelung sind halb-volle Bl&#xf6;cke optimal">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <ul>
      <li>
        wenn die Bl&#246;cke noch leer sind, kommt es zu Regelschwingungen und es dauert doppelt so lange bis zum station&#228;ren Zustand
      </li>
      <li>
        weitgehend volle Bl&#246;cke dagegen verl&#228;ngern die &#220;berlastungsphase unn&#246;tig
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node CREATED="1689707495357" ID="ID_1663505203" MODIFIED="1689707522915" TEXT="&#x27f9; Default-Werte sollten initial ehr auf Unterf&#xfc;llung zielen"/>
</node>
<node COLOR="#338800" CREATED="1689721021542" ID="ID_667557051" MODIFIED="1689721066385" TEXT="zus&#xe4;tzlich zum Vergleich noch eine shared-Ptr-Variante eingef&#xfc;hrt">
<icon BUILTIN="button_ok"/>
<node CREATED="1689721069168" ID="ID_360700686" MODIFIED="1689721107550" TEXT="das w&#xe4;re einzige andere Variante, die eine sichere Freigabe gew&#xe4;hrleistet"/>
<node CREATED="1689721108195" ID="ID_430302041" MODIFIED="1689721147709" TEXT="mit diesem Testfall wird der Aufwand vermutlich untersch&#xe4;tzt...">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      man m&#252;&#223;te ja den shared_ptr direkt in die Activity-Datenstruktur einbetten
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1689721160785" ID="ID_1770314642" MODIFIED="1689721183344" TEXT="zeigt aber die vermutete Tendenz: f&#xfc;r mehr mu&#xdf; man mehr zahlen">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689708539039" ID="ID_202942682" MODIFIED="1689708960294" TEXT="Performance-Me&#xdf;werte">
<icon BUILTIN="forward"/>
<node CREATED="1689640076427" ID="ID_1645955246" MODIFIED="1689640079093" TEXT="-O0">
<node CREATED="1689640080105" ID="ID_907898987" MODIFIED="1689708908905" TEXT="noAlloc: 58ns"/>
<node CREATED="1689640092880" ID="ID_876893216" MODIFIED="1689708911485" TEXT="heapAlloc: 70ns"/>
<node CREATED="1689709346022" ID="ID_1738411414" MODIFIED="1689709385384" TEXT="refcntAlloc: 231ns"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689640103086" ID="ID_133560582" MODIFIED="1689708928480" TEXT="blockFlow: 3495ns">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1689640132730" ID="ID_1406475770" MODIFIED="1689640135149" TEXT="-O3">
<node CREATED="1689640449871" ID="ID_131816405" MODIFIED="1689708653540" TEXT="noAlloc: 6.01ns"/>
<node CREATED="1689640461957" ID="ID_1067999161" MODIFIED="1689708657739" TEXT="heapAlloc: 23.3ns"/>
<node CREATED="1689709436943" ID="ID_1822361598" MODIFIED="1689709449536" TEXT="refcntAlloc: 98.6ns"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689640536569" ID="ID_302055989" MODIFIED="1689708703173" TEXT="blockFlow: 235ns">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1689720993979" ID="ID_1629844558" MODIFIED="1689898823193" TEXT="Untersuchung / Abstimmung">
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689721194230" ID="ID_1583005105" MODIFIED="1689721217004" TEXT="n&#xe4;chstes Ziel: die Performance-Abh&#xe4;ngigkeiten ausloten">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1689721223538" ID="ID_1123795538" MODIFIED="1689898833237" TEXT="alloziere von jedem AllocationHandle zusammen 10 Activities">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1689721253582" ID="ID_1550118876" MODIFIED="1689721319248" TEXT="Allokation wird viel langsamer">
<icon BUILTIN="broken-line"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1689721271875" ID="ID_1192860842" MODIFIED="1689721319248" TEXT="Zahl der Bl&#xf6;cke w&#xe4;chst stark an">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1689721361800" ID="ID_1186693663" MODIFIED="1689721368178" TEXT="stelle fest: die Overflows gehen nicht weg"/>
</node>
<node COLOR="#338800" CREATED="1689726446121" ID="ID_1187948223" MODIFIED="1689726717847" TEXT="Schlu&#xdf;folgerung &#x27f9; brauche mehr Regelkraft">
<icon BUILTIN="button_ok"/>
<node CREATED="1689726571832" ID="ID_187384880" MODIFIED="1689726595655" TEXT="durch die Zusammenfassung kommt es logischerweise punktweise zu mehr Overflows">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1689726633143" ID="ID_353836055" MODIFIED="1689726651160" TEXT="wir bleiben dann lange Zeit im &#xdc;berlastungs-Modus h&#xe4;ngen"/>
<node COLOR="#338800" CREATED="1689726493554" ID="ID_392662269" MODIFIED="1689726660300" TEXT="darf den BOOST_FACTOR nicht so stark d&#xe4;mpfen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      das hei&#223;t, bei jedem Overflow m&#252;ssen wir doch einen Ticken st&#228;rker die Epochenl&#228;nge reduzieren... fragt sich nur, wie stark...?
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1689726663331" ID="ID_1693548894" MODIFIED="1689726714067" TEXT="auch das Moving-Average sollte in beide Richtungen regeln">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1689726686712" ID="ID_19847235" MODIFIED="1689726705550" TEXT="&#x27f9; setze einenen Ziel-F&#xfc;llfaktor von nur 90%">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1689726722347" ID="ID_1175320480" MODIFIED="1689726747326" TEXT="damit sehe ich nun bei mehr gemeinsam allozierten Activities wie erwartet einen Skalen-Effekt">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689708539039" ID="ID_1072287164" MODIFIED="1689708960294" TEXT="Performance-Me&#xdf;werte">
<icon BUILTIN="forward"/>
<node CREATED="1689640076427" ID="ID_669731737" MODIFIED="1689640079093" TEXT="-O0">
<node CREATED="1689640080105" ID="ID_1806812012" MODIFIED="1689708908905" TEXT="noAlloc: 58ns"/>
<node CREATED="1689640092880" ID="ID_1046247953" MODIFIED="1689708911485" TEXT="heapAlloc: 70ns"/>
<node CREATED="1689709346022" ID="ID_188790104" MODIFIED="1689709385384" TEXT="refcntAlloc: 231ns"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1689640103086" ID="ID_764653985" MODIFIED="1689726943341" TEXT="blockFlow: 620ns">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1689640132730" ID="ID_301818067" MODIFIED="1689640135149" TEXT="-O3">
<node CREATED="1689640449871" ID="ID_206274008" MODIFIED="1689708653540" TEXT="noAlloc: 6.01ns"/>
<node CREATED="1689640461957" ID="ID_101013453" MODIFIED="1689708657739" TEXT="heapAlloc: 23.3ns"/>
<node CREATED="1689709436943" ID="ID_1677259032" MODIFIED="1689709449536" TEXT="refcntAlloc: 98.6ns"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1689640536569" ID="ID_744641472" MODIFIED="1689726943341" TEXT="blockFlow: 46.2ns">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1689727009604" ID="ID_1628703005" MODIFIED="1689727025840" STYLE="fork" TEXT="Feststellungen">
<icon BUILTIN="forward"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1689727138842" ID="ID_1800516833" MODIFIED="1689727175687" TEXT="ich halte fest: dieses BlockFlow-Schema ist mehr als nur ein Allocator">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1689727205841" ID="ID_1634136052" MODIFIED="1689727329129" TEXT="dennoch ist mehr Feinabstimmung notwendig, um den Skalenfaktor zu realisieren">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Auch ein Tiling-Pool-Allocator mit Freelist erziehlt die beobachtbare Leistuntssteigerung vor allem durch die Amortisierung &#252;ber einen Skalenfaktor. Ich mu&#223; hier auf etwas &#228;hnliches ziehlen: m&#246;glichst viele Allokationen aus einem bereits etablierten Block, und m&#246;glichst wenig Bl&#246;cke gleichzeitig
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1689727357092" ID="ID_791417584" MODIFIED="1689727378501" TEXT="der Regulierungs-Mechanismus erweist sich als durchaus empfindlich">
<icon BUILTIN="messagebox_warning"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1689727437785" ID="ID_449175948" MODIFIED="1689727463614" TEXT="immerin bin ich nun schon in einer akzeptablen Gr&#xf6;&#xdf;enordung">
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node COLOR="#338800" CREATED="1689809341711" ID="ID_1397165998" MODIFIED="1689906024234" TEXT="weitere Abstimmung">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1689809348557" ID="ID_1415334659" MODIFIED="1689905921981" TEXT="wesentlich gr&#xf6;&#xdf;ere Epochen-Size verwenden">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1689809417524" FOLDED="true" ID="ID_1054295274" MODIFIED="1689905956554" TEXT="setzt Umbau der Parametrisierung voraus">
<arrowlink COLOR="#423ab1" DESTINATION="ID_469668336" ENDARROW="Default" ENDINCLINATION="-742;705;" ID="Arrow_ID_1498620407" STARTARROW="None" STARTINCLINATION="435;-802;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1689873255900" ID="ID_49309408" MODIFIED="1689877297171" TEXT="erst mal: Zugriff auf parametrisierbare Config">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1689877324014" ID="ID_56990623" MODIFIED="1689877344736" TEXT="aber aus dem Code nocht die hart verdrahteten Konstanten verwenden">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1689873270874" ID="ID_66965861" MODIFIED="1689873410951" TEXT="Laufzeiten">
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1689873274593" ID="ID_116423794" MODIFIED="1689873404864" TEXT="-O0 : 630ns"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1689873396056" ID="ID_1088441301" MODIFIED="1689873404865" TEXT="-O3 : 46ns">
<linktarget COLOR="#cf8785" DESTINATION="ID_1088441301" ENDARROW="Default" ENDINCLINATION="328;0;" ID="Arrow_ID_554851661" SOURCE="ID_1464012926" STARTARROW="None" STARTINCLINATION="328;0;"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1689877234671" ID="ID_749934216" MODIFIED="1689896085640" TEXT="dann Zugriff via Meyer&apos;s Singleton umstellen">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1689873426661" ID="ID_476877906" MODIFIED="1689873442030" TEXT="Parameter sollen sich im Default-Fall identisch ergeben">
<icon BUILTIN="yes"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689877347824" ID="ID_1075630232" MODIFIED="1689877362518" TEXT="Laufzeiten werden l&#xe4;nger">
<icon BUILTIN="broken-line"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1689877365121" ID="ID_1238054662" MODIFIED="1689877434197" TEXT="-O0 : 650ns"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689877374277" ID="ID_631034215" MODIFIED="1689877432052" TEXT="-O3 : 63.5"/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff00d4" CREATED="1689877469054" ID="ID_1570369935" MODIFIED="1689877489885" TEXT="wooot?">
<icon BUILTIN="smiley-angry"/>
<node CREATED="1689877934225" ID="ID_1740535802" MODIFIED="1689878139311" TEXT="in der Regulierung fast alles zur&#xfc;ckdrehen: -O3 : 54.5ns"/>
<node CREATED="1689878121695" ID="ID_111854388" MODIFIED="1689878135817" TEXT="auch noch den ctor zur&#xfc;ckdrehen: keine &#xc4;nderung"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1689878434293" ID="ID_1464012926" MODIFIED="1689878500538" TEXT="die AVERAGE_EPOCHS wieder fest auf 10 setzen: -O3 : 37ns">
<arrowlink COLOR="#cf8785" DESTINATION="ID_1088441301" ENDARROW="Default" ENDINCLINATION="328;0;" ID="Arrow_ID_554851661" STARTARROW="None" STARTINCLINATION="328;0;"/>
<icon BUILTIN="forward"/>
</node>
<node CREATED="1689878710360" ID="ID_1253008269" MODIFIED="1689878737791" TEXT="alles andere erneut auf die neue Config: -O3 : 44.5ns"/>
<node CREATED="1689879077630" ID="ID_1824582320" MODIFIED="1689879147832" TEXT="nur die markEpochOverflow() zur&#xfc;ck auf alt: -O3 : 38ns"/>
<node CREATED="1689879407073" ID="ID_1613391208" MODIFIED="1689879420435" TEXT="initialAlloc()  alt vs neu : kein Einflu&#xdf;"/>
<node CREATED="1689880079934" ID="ID_36776536" MODIFIED="1689880121831" TEXT="nur die Konstante im cutOff-Test auf neu: -O3 : 42.5ns"/>
<node CREATED="1689880267397" ID="ID_1043045678" MODIFIED="1689880297796" TEXT="zus&#xe4;tzlich auch den boostFactor Overflow auf neu : kein Effekt"/>
<node CREATED="1689880695818" ID="ID_373030666" MODIFIED="1689880701365" TEXT="cutOff...">
<node CREATED="1689880702241" ID="ID_143417020" MODIFIED="1689880716339" TEXT="im neuen Setup die alte Konstante zur&#xfc;ckgeben: 37.5ns"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1689881426309" ID="ID_765972478" MODIFIED="1689896080584" TEXT="in der Rechnung die Rationals vermeiden: 37.6ns">
<icon BUILTIN="forward"/>
</node>
</node>
</node>
<node CREATED="1689879843484" ID="ID_59184554" MODIFIED="1689879857450" TEXT="also...">
<icon BUILTIN="idea"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689879860252" ID="ID_936453466" MODIFIED="1689879898775" TEXT="f&#xfc;hrt der um einen Step l&#xe4;ngere moving-Average wohl zu einem deutlich schlechteren Verlauf">
<icon BUILTIN="flag-yellow"/>
</node>
<node CREATED="1689879899935" ID="ID_1854875840" MODIFIED="1689879919104" TEXT="hat die initiale Alloc keinen me&#xdf;baren Einflu&#xdf;"/>
<node CREATED="1689879932226" ID="ID_1846796587" MODIFIED="1689881485979" TEXT="kostet die neue Variante etwas mehr"/>
<node CREATED="1689880321639" ID="ID_286565231" MODIFIED="1689880354444" TEXT="was aber nur bei dem Zugriff in jedem Overflow auff&#xe4;llt"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1689881552070" ID="ID_446504879" MODIFIED="1689896066916" TEXT="hat der Optimizer Schwierigkeiten mit mehrfach tief verschachtelten Aufrufen">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1689895221982" ID="ID_1042752263" MODIFIED="1689895236985" TEXT="es k&#xf6;nnten die boost::rational sein"/>
<node CREATED="1689895237523" ID="ID_763535324" MODIFIED="1689895262140" TEXT="aber auch der mehrfache Zugriff auf das Meyer Singleton macht sich bemerkbar"/>
<node CREATED="1689895267679" ID="ID_1168149492" MODIFIED="1689895283498" TEXT="ja sogar wenn man hier einen gecacheten Wert in eine statische Variable legt"/>
<node CREATED="1689895284824" ID="ID_1055905174" MODIFIED="1689895305606" TEXT="am schnellsten ist es, nur TimeValue(1000) zur&#xfc;ckzugeben"/>
<node COLOR="#435e98" CREATED="1689895671617" ID="ID_1729971705" MODIFIED="1689896060514" TEXT="Caching in Member-Variable: ~10ns Gewinn (30%)">
<arrowlink COLOR="#fdf2c2" DESTINATION="ID_665560947" ENDARROW="Default" ENDINCLINATION="312;-18;" ID="Arrow_ID_1360331546" STARTARROW="None" STARTINCLINATION="-230;12;"/>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1689895945923" ID="ID_665560947" MODIFIED="1689898238837">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      mit loakelm Caching und Optimierungen: <b><font color="#370197">37</font></b><font color="#370197">ns</font>
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#fdf2c2" DESTINATION="ID_665560947" ENDARROW="Default" ENDINCLINATION="312;-18;" ID="Arrow_ID_1360331546" SOURCE="ID_1729971705" STARTARROW="None" STARTINCLINATION="-230;12;"/>
<icon BUILTIN="idea"/>
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node COLOR="#338800" CREATED="1689900072625" ID="ID_411567817" MODIFIED="1689905286265" TEXT="Parametrisierung variieren">
<icon BUILTIN="button_ok"/>
<node CREATED="1689900083280" ID="ID_1085671749" MODIFIED="1689900144291" TEXT="Epoch-Size 300 / intial-streams = 4">
<node CREATED="1689900115003" ID="ID_136478244" MODIFIED="1689900152201" TEXT="30 frames per Epoch"/>
<node CREATED="1689900188705" ID="ID_1755457186" MODIFIED="1689900207354" TEXT="6,6666.. Epochs per sec"/>
<node CREATED="1689900230058" ID="ID_469588214" MODIFIED="1689900279721" TEXT="erwarte Spacing von 150ms * 0.9 = 135ms"/>
</node>
<node CREATED="1689904993055" ID="ID_963644476" MODIFIED="1689905289262" TEXT="Epoch-Size 500 / intial-strams = 5">
<icon BUILTIN="forward"/>
<node CREATED="1689905019611" ID="ID_1940532431" MODIFIED="1689905023895" TEXT="50 frames per Epoch"/>
<node CREATED="1689905153481" ID="ID_1122106641" MODIFIED="1689905158764" TEXT="4 Epochs per sec"/>
<node CREATED="1689905159448" ID="ID_1610751214" MODIFIED="1689905178098" TEXT="erwarte Spacing von 1/4 s * 0.9 = 225ms"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1689905291335" ID="ID_819874692" MODIFIED="1689905297638" TEXT="Me&#xdf;werte">
<icon BUILTIN="messagebox_warning"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1689905301815" ID="ID_405640996" MODIFIED="1689950763361" TEXT="die Code-Optimierung ist instabil">
<icon BUILTIN="broken-line"/>
<node CREATED="1689905324122" ID="ID_792821621" MODIFIED="1689905374660" TEXT="st&#xe4;rkere Verwendung der Diagnostik-Funktionen kann ebenfalls +10ns bewirken"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689905375355" ID="ID_1645056082" MODIFIED="1689905463104" TEXT="die beobachteten besseren Werte (45ns -&gt; 35ns) beruhten auf auskommentierten Testf&#xe4;llen">
<icon BUILTIN="clanbomber"/>
</node>
<node CREATED="1689905470557" ID="ID_425021799" MODIFIED="1689905549553" TEXT="allerdings der Effekt der Cache-Variablen und der Effekt vom Meyers-Zugriff ist nachweisbar">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...allerdings f&#228;llt er nicht so stark aus, wie zuerst gedacht &#8212; der Effekt wurde vom Effekt der auskommentieren Testf&#228;lle &#252;berlagert
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1689905560194" ID="ID_795058897" MODIFIED="1689905988528">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      auch mit weiterer Variation der Parameter kommt man kaum unter <b><font color="#440e6a">30</font></b><font color="#440e6a">ns</font>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
<node CREATED="1689905634232" ID="ID_1629824938" MODIFIED="1689905659768" TEXT="zwar l&#xe4;&#xdf;t sich die Zahl der offenen Epochen deutlich dr&#xfc;cken"/>
<node CREATED="1689905660827" ID="ID_823814066" MODIFIED="1689905673031" TEXT="aber unterhalb von 8 Epochen sehe ich keinen Effekt mehr"/>
<node CREATED="1689905695256" ID="ID_614220319" MODIFIED="1689905844701" TEXT="gr&#xf6;&#xdf;ere Bl&#xf6;cken sollte &#x27f9; h&#xf6;here (eigentlich zu gro&#xdf;e) Anzahl INITIAL_STREAMS vorlegen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Begr&#252;ndung: dann ist das Block-spacing initial zu kurz und die Bl&#246;cke unterf&#252;llt &#8212; von dort kommt man leichter zu einem stabilen Arbeitspunkt
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#18185a" CREATED="1689905849475" ID="ID_1603339371" MODIFIED="1689905899674" STYLE="bubble" TEXT="damit scheint 500 / initial = 5 das Optimum zu sein">
<icon BUILTIN="forward"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689813003462" ID="ID_1047452990" MODIFIED="1689905937490" TEXT="vermutlich gibt es  eine nat&#xfc;rliche Obergrenze">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1689817320121" ID="ID_1192836427" MODIFIED="1689817333818" TEXT="und zwar bedingt durch den Moving-Average"/>
<node CREATED="1689817345303" ID="ID_609560229" MODIFIED="1689817362200" TEXT="dadurch entsteht eine Verz&#xf6;gerung, bis sich ein Gleichgewicht bildet"/>
<node CREATED="1689817546283" ID="ID_165095840" MODIFIED="1689817582250" TEXT="das System l&#xe4;uft nach Last&#xe4;nderungen zu lange mit unpassender Parametrisierung"/>
<node CREATED="1689817583069" ID="ID_1436375130" MODIFIED="1689817598879" TEXT="und hat zu lange Zeit, w&#xe4;hrenddessen komplett aus dem Ruder zu laufen"/>
</node>
<node COLOR="#338800" CREATED="1689957719174" ID="ID_803343004" MODIFIED="1689982764638" TEXT="Einstellungen unter h&#xf6;herer Last pr&#xfc;fen">
<icon BUILTIN="button_ok"/>
<node CREATED="1689957738867" ID="ID_382228850" MODIFIED="1689957747374" TEXT="verwende mal die 5-fache Last">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1689957748553" ID="ID_1266344997" MODIFIED="1689957765233" TEXT="die Reaktionszeiten bleiben stabil"/>
<node CREATED="1689957844712" ID="ID_624897576" MODIFIED="1689957881817" TEXT="das Regelverhalten sieht gesund aus">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      vor allem die 2-Schichtige Regelung, die &#220;bersteuerungen wieder einf&#228;ngt...
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1689957766031" ID="ID_604445268" MODIFIED="1689970468326" TEXT="allerdings geht das System in extreme &#xdc;berlast (&gt;40 Bl&#xf6;cke Backlog)">
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#338800" CREATED="1689957816332" ID="ID_790127688" MODIFIED="1689970390032" TEXT="&#x27f9; Mehrfach-Overflows besser doch einzeln einbuchen">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1689970392316" ID="ID_616252096" MODIFIED="1689970458561" TEXT="daraufhin Overload nach 2.5sec behoben (nur max +25 Bl&#xf6;cke Backlog)"/>
<node CREATED="1689970471668" ID="ID_1896898039" MODIFIED="1689970487731" TEXT="danach nochmal leichtes Overload (+2 Block)"/>
<node CREATED="1689970491847" ID="ID_583645348" MODIFIED="1689970503145">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      bereits nach 5 sec im <i>lock-step</i>
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1689982374730" ID="ID_1285035201" MODIFIED="1689982410622">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      unter extremer &#220;berlast gibt es einen ung&#252;nstigen <b>Mitkopplungs-Effekt</b>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="broken-line"/>
<node CREATED="1689982419508" ID="ID_349137595" MODIFIED="1689982435779" TEXT="wenn der Epoch-Step bereits bis auf das Minimum heruntergefahren wurde">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1689982436801" ID="ID_1534182741" MODIFIED="1689982672346">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      ... dann werden <b>extrem viele neue Bl&#246;cke</b>&#160;hinzugef&#252;gt
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      In diesem extremen Overload gilt: <i>jeder neue Block wandert die Kette entlang</i>&#160;und wird &#8222;hinten abgeworfen&#8220;. Dort hinten ist dann zwar das Spacing bereits klein genug, um die Last aufzufangen &#8212; aber <i>vorne besteht noch ein viel gr&#246;&#223;eres Spacing.<b>&#160;</b></i>Konsequenz: w&#228;hrend die Einf&#252;geposition vorne immer noch die gleichen alten zu langen Epochen &#252;berf&#252;llt, werden hinten permanent neue Mini-Epochen angeh&#228;ngt. Erst wenn auch die Einf&#252;ge-Position im Bereich der kleinen Bl&#246;cke angekommen ist, baut sich der R&#252;ckstau (ziemlich schnell) ab.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1689982460830" ID="ID_984735290" MODIFIED="1689982488254" TEXT="&#x27f9; das Backlog w&#xe4;chst an, bis auch die aktuelle Position nachgekommen ist"/>
</node>
<node COLOR="#338800" CREATED="1689982675969" ID="ID_1366866694" MODIFIED="1689982708144" TEXT="&#x27f9; sollte die Bl&#xf6;cke nicht zu klein werden lassen">
<icon BUILTIN="button_ok"/>
<node CREATED="1689982710492" ID="ID_1913227483" MODIFIED="1689982721832" TEXT="die &#xdc;berlast schon bei 1/4 des bisherigen Wertes kappen"/>
<node CREATED="1689982723163" ID="ID_1597778968" MODIFIED="1689982736837" TEXT="auch das ist mehr als genug">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1689982739334" ID="ID_1325440779" MODIFIED="1689982754154" TEXT="dadurch w&#xe4;chst aber das Backlog (und damit die Allokation) weniger an"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1689950328624" FOLDED="true" HGAP="-13" ID="ID_256501398" MODIFIED="1689993985081" TEXT="Fazit" VSHIFT="4">
<linktarget COLOR="#636cb5" DESTINATION="ID_256501398" ENDARROW="Default" ENDINCLINATION="-369;-101;" ID="Arrow_ID_1474600084" SOURCE="ID_1170043916" STARTARROW="None" STARTINCLINATION="439;37;"/>
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="forward"/>
<node CREATED="1689950345232" ID="ID_360564477" MODIFIED="1689950453654" TEXT="Betriebs-Parametrisierung">
<node CREATED="1689950455235" ID="ID_1151158118" MODIFIED="1689950460693" TEXT="500 Slots/Epoche"/>
<node CREATED="1689950475992" ID="ID_1049792646" MODIFIED="1689950487415" TEXT="50 Frames per Epoch"/>
<node CREATED="1689950461585" ID="ID_1621205435" MODIFIED="1689950534818" TEXT="initial 5 streams (125 fps)"/>
<node CREATED="1689950464713" ID="ID_1661388363" MODIFIED="1689950472807" TEXT="Epoch-Step 400ms"/>
</node>
<node CREATED="1689950543944" ID="ID_608988368" MODIFIED="1689950584911" TEXT="typischerweise leicht &#xfc;bertrieben und regelt sich dann langsam auf das Optimum herunter">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1689950587187" ID="ID_556296327" MODIFIED="1689950601684" TEXT="Testfall mit 200 fps">
<node CREATED="1689950603056" ID="ID_1886508729" MODIFIED="1689975501688" TEXT="geht f&#xfc;r 4 Sekunden in &#xdc;berlast"/>
<node CREATED="1689950623124" ID="ID_93627662" MODIFIED="1689954091686" TEXT="schiebt im Schnitt +1 Epoche vor sich her (max +3)"/>
<node CREATED="1689950660388" ID="ID_152417641" MODIFIED="1689975522833">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      nach weiteren 6 Sekunden ist die Regelung<i>&#160;locked&#160;to target</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1689950684224" ID="ID_1736716979" MODIFIED="1689950696097" TEXT="hat im Schnitt 6 offene Epochen"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1689989914104" ID="ID_1875944853" MODIFIED="1689989984058" TEXT="Laufzeiten -O3">
<icon BUILTIN="forward"/>
<node CREATED="1689989933355" ID="ID_845757793" MODIFIED="1689989977713" TEXT="noAlloc: 9ns"/>
<node CREATED="1689989936387" ID="ID_848944790" MODIFIED="1689989964587" TEXT="heapAlloc: 23ns"/>
<node CREATED="1689989939363" ID="ID_1418270280" MODIFIED="1689989958732" TEXT="refcntAlloc: 97ns"/>
<node CREATED="1689989943802" ID="ID_347157521" MODIFIED="1689989992692">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      blockFlow: <b>32</b>ns
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node CREATED="1689950700829" ID="ID_838109116" MODIFIED="1689950717404" TEXT="durchschnittliche Allokations-Zeit l&#xe4;&#xdf;t sich kaum unter 30ns dr&#xfc;cken"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1688559356693" HGAP="19" ID="ID_1823374976" MODIFIED="1689994043643" TEXT="Grenzf&#xe4;lle" VSHIFT="8">
<icon BUILTIN="list"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1688559379394" ID="ID_1315709817" MODIFIED="1688560429832" TEXT="zu weit in der Zukunft">
<linktarget COLOR="#fd1a6e" DESTINATION="ID_1315709817" ENDARROW="Default" ENDINCLINATION="21;-31;" ID="Arrow_ID_1483237280" SOURCE="ID_27532065" STARTARROW="None" STARTINCLINATION="-248;12;"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1688559400839" ID="ID_980233005" MODIFIED="1688559420337" TEXT="problematisch: es kann nicht wirklich alloziert werden"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1688559421309" ID="ID_498818717" MODIFIED="1688774030997">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p style="text-align: center">
      ein POST k&#246;nnte geplant werden,
    </p>
    <p style="text-align: center">
      aber die angeh&#228;ngten Activities werden
    </p>
    <p style="text-align: center">
      daf&#252;r sp&#228;ter kopiert (Addresse &#228;ndert sich)
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="clanbomber"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1688774377755" HGAP="25" ID="ID_459856850" MODIFIED="1689950794771" TEXT="Einsch&#xe4;tzung" VSHIFT="4">
<edge COLOR="#7b323c"/>
<icon BUILTIN="yes"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1688773732470" ID="ID_1175257683" MODIFIED="1688773790095" TEXT="dieser Fall pa&#xdf;t mir nicht so recht ins Konzept">
<icon BUILTIN="smily_bad"/>
</node>
<node CREATED="1688773743917" ID="ID_1124343559" MODIFIED="1688775166141" TEXT="er ist unwahrscheinlich &#x2014; man kann ihn aber nicht ausschlie&#xdf;en">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Ich gehe davon aus, da&#223; &#8222;dieser ganze Scheduler&#8220; so dimensioniert ist und sich selber derart einregelt, da&#223; er mit dem Flow der Berechnungen klarkommt. Aufgrund der dynamischen und offenen Natur dieser Konstruktion kann ich jedoch keine Garantien geben, da&#223; diese Steuerung stets funktioniert. Die Activity-Language schafft ja grade die M&#246;glichkeit, gegenw&#228;rtig noch gar nicht vorstellbare Steuerungs-Mechanismen sp&#228;ter noch realisieren zu k&#246;nnen, lediglich durch eine ver&#228;nderte Parametrisierung. Aber <i>zumindest ein Szenario des Scheiterns</i>&#160;kann aus aktueller Sicht bereits konstruiert werden: und zwar wenn durch eine &#220;berlastung des IO-Subsystems &#228;ltere Epochen noch nicht freigegeben werden k&#246;nnen, da an ihnen noch Buffer f&#252;r schwebende IO-Vorg&#228;nge h&#228;ngen. Ein laufend fortschreitender BlockFlow w&#252;rde dann sukzessive den verbleibenden Arbeitsspeicher belegen und blockieren.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1688775167028" ID="ID_906899250" MODIFIED="1688775438783" TEXT="&#x27f9; es handelt sich um einen Schutzmechanismus">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Ein im BlockFlow aktiv verwaltetes Limit f&#252;r den Allokations-Pool stellt daher eine Sicherheitsbarriere dar, damit das System nicht insgesamt in einen degenerierten und unkontrollierbaren Betriebszustand gleitet (sog. &#8222;trashing&#8220;). Dem Zufolge sollte ein Ausl&#246;sen dieser Sicherung nicht in Reparatur-Versuche m&#252;nden, sondern schnellstm&#246;glich zu einem Scheitern des Playback/Rendervorganges f&#252;hren
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1688775205671" ID="ID_263429425" MODIFIED="1689950800005" TEXT="daher per Exception abbrechen">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1688776216348" ID="ID_1377510140" MODIFIED="1689951307913" TEXT="&#xdc;berlauf einer Epoche">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1688776236442" ID="ID_1772819578" MODIFIED="1688776249385" TEXT="die Epoche ist mit einer festen Gr&#xf6;&#xdf;e vor-alloziert"/>
<node CREATED="1688776251767" ID="ID_1569050620" MODIFIED="1688776277483" TEXT="demnach kann sie zu klein sein und damit bereits vorzeitig voll"/>
<node CREATED="1688778417547" ID="ID_1014314478" MODIFIED="1688778430437" TEXT="in diesem Fall wechseln wir (vorzeitig) auf die n&#xe4;chste Epoche"/>
<node COLOR="#338800" CREATED="1688778436978" ID="ID_1329649699" MODIFIED="1689950910885" TEXT="...und justieren die Epochen-Dauer nach">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1688846534217" ID="ID_1103016582" MODIFIED="1689950908528" TEXT="nicht ganz einfach: Zeitpunkt und Grad">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Es ist klar, wenn eine Epoche &#252;berl&#228;uft, aber in dem Moment ist noch nicht klar, welcher Prozentsatz des Platztes nun noch unterzubringen ist. Umgekehrt ist nicht klar, wann eine Epoche fertig besetzt ist; Hilfsweise k&#246;nnte man beim Aufr&#228;umen pr&#252;fen, was aber erst deutlich sp&#228;ter passiert &#8212; in beide Richtungen ist also die R&#252;ckkopplung verz&#246;gert und ungenau und kann daher zu Regelschwingungen f&#252;hren.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
<node COLOR="#338800" CREATED="1688847294057" ID="ID_1401641986" MODIFIED="1689950836532" TEXT="kurzfristig: bei &#xdc;berlauf einen Zuschlag geben">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1688847321781" ID="ID_1927207477" MODIFIED="1689950837811" TEXT="gemittelt: optimalen F&#xfc;llgrad steuern">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1689950854496" ID="ID_175704045" MODIFIED="1689950905793" TEXT="ziele auf eine F&#xfc;llgrad von 90%">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      damit kann die Mittelung in beide Richtungen um den Optimalwert arbeiten
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1689951124796" ID="ID_1136496493" MODIFIED="1689951305811" TEXT="verwende eine zeitlich mehrstufige Balancierung">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <ul>
      <li>
        die &#220;berl&#228;ufe erzeugen einen sofort wirksamen Druck Richtung mehr Kapazit&#228;t
      </li>
      <li>
        aber eine exponentielle Mittelung wirkt verz&#246;gert, jedoch mit gr&#246;&#223;erer Kraft
      </li>
      <li>
        die Mittelung zielt auf 90% F&#252;llung, hat also eine kleine Regelzone, in der sie beidseitig wirkt
      </li>
      <li>
        im Extremfall jedoch wirken Overflow und Mittelwert gegensinning, wobei der Overflow direkter und schneller wirksam wird, um dem System Luft zu verschaffen
      </li>
      <li>
        die l&#228;ngerfristige Regelung jedoch bremst den Overflow mit einiger Verz&#246;gerung auch wieder aus; zwar f&#252;hrt das dazu, da&#223; die &#220;berlastung l&#228;nger besteht, daf&#252;r aber auch weicher ausgeregelt wird, wodurch das System anschlie&#223;end ohne weitere Schwingungen direkt in den lock-step &#252;bergeht
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1688846986442" ID="ID_514303739" MODIFIED="1689951110512" TEXT="k&#xf6;nnte sp&#xe4;ter als ein TimingObservable dargestellt werden">
<arrowlink COLOR="#85314b" DESTINATION="ID_1197144274" ENDARROW="Default" ENDINCLINATION="206;-20;" ID="Arrow_ID_945653766" STARTARROW="None" STARTINCLINATION="-249;11;"/>
<icon BUILTIN="idea"/>
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1689204512737" HGAP="-89" ID="ID_783591358" MODIFIED="1699651832095" TEXT="Diagnostik-Hilfsmittel" VSHIFT="17">
<icon BUILTIN="button_ok"/>
<node CREATED="1689204533558" ID="ID_377070637" MODIFIED="1689204547921" TEXT="sollen Unit- und Integrationstests unterst&#xfc;tzen">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#435e98" CREATED="1689204554739" ID="ID_1440899868" MODIFIED="1699651718593" TEXT="Beobachtungs-Ziele">
<icon BUILTIN="info"/>
<node COLOR="#338800" CREATED="1689204572129" ID="ID_658361919" MODIFIED="1689204583104" TEXT="F&#xfc;llstand des Basis-Allokators">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1689204672083" ID="ID_414229642" MODIFIED="1689204694352" STYLE="fork" TEXT="aktiv"/>
<node COLOR="#435e98" CREATED="1689204675211" ID="ID_428260433" MODIFIED="1689204694353" STYLE="fork" TEXT="Kapazit&#xe4;t"/>
<node COLOR="#435e98" CREATED="1689204681138" ID="ID_719751542" MODIFIED="1689204694353" STYLE="fork" TEXT="Index-Positionen"/>
</node>
<node COLOR="#338800" CREATED="1689204604589" ID="ID_1478405779" MODIFIED="1689994014285" TEXT="Deadlines">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1689204644343" ID="ID_1848987574" MODIFIED="1689449409248" TEXT="oldest"/>
<node COLOR="#435e98" CREATED="1689204650526" ID="ID_624484958" MODIFIED="1689449409248" TEXT="newest"/>
<node COLOR="#435e98" CREATED="1689204731722" ID="ID_1494295782" MODIFIED="1689439593921" TEXT="Allokations-Zuordnung"/>
</node>
<node COLOR="#338800" CREATED="1689204805041" ID="ID_1427200190" MODIFIED="1699651800784" TEXT="Ereignisse">
<arrowlink COLOR="#3cca7d" DESTINATION="ID_1294988847" ENDARROW="Default" ENDINCLINATION="-115;-8;" ID="Arrow_ID_628591045" STARTARROW="None" STARTINCLINATION="-132;22;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1689204818615" ID="ID_1296035133" MODIFIED="1699651715164" TEXT="Funktor-Aufruf"/>
<node COLOR="#435e98" CREATED="1689204823334" ID="ID_1131519387" MODIFIED="1699651715163" TEXT="Activity-Aktivierung"/>
<node COLOR="#435e98" CREATED="1689204840484" ID="ID_750822384" MODIFIED="1699651715163" TEXT="Signal-Wire-Tap"/>
<node COLOR="#435e98" CREATED="1689204883742" ID="ID_1433267374" MODIFIED="1699651715162" TEXT="Gate-Verhalten"/>
</node>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1689204905242" ID="ID_924464779" MODIFIED="1689204946332" TEXT="Diagnose-Kontext">
<icon BUILTIN="forward"/>
<node COLOR="#338800" CREATED="1689204913954" ID="ID_256874849" MODIFIED="1689204922646" TEXT="f&#xfc;r ExtentFamily">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1689204923473" ID="ID_756310466" MODIFIED="1699651723647" TEXT="f&#xfc;r BlockFlow">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1689439619197" ID="ID_1454011778" MODIFIED="1689439653881" TEXT="erste und letzte Epoche als Deadline">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1689439631356" ID="ID_801146515" MODIFIED="1689439653881" TEXT="Epoche finden, in die eine gegebene Activity alloziert wurde">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1699651725378" ID="ID_19675173" MODIFIED="1699651732928" TEXT="realisiert als Test-Adapter">
<icon BUILTIN="info"/>
</node>
</node>
<node COLOR="#338800" CREATED="1689204967974" ID="ID_1294988847" MODIFIED="1699651788869" TEXT="f&#xfc;r Scheduler-Integration: ActivityDetector">
<arrowlink COLOR="#7a78a4" DESTINATION="ID_284088835" ENDARROW="Default" ENDINCLINATION="-1242;118;" ID="Arrow_ID_807229137" STARTARROW="None" STARTINCLINATION="772;49;"/>
<linktarget COLOR="#3cca7d" DESTINATION="ID_1294988847" ENDARROW="Default" ENDINCLINATION="-115;-8;" ID="Arrow_ID_628591045" SOURCE="ID_1427200190" STARTARROW="None" STARTINCLINATION="-132;22;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1699651806710" HGAP="42" ID="ID_1629577504" MODIFIED="1699651820753" TEXT="weithin im Test verwendet und bew&#xe4;hrt" VSHIFT="17">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1681347244544" ID="ID_444443795" MODIFIED="1681347486789" TEXT="Basis: Operational Control">
<linktarget COLOR="#9c738a" DESTINATION="ID_444443795" ENDARROW="Default" ENDINCLINATION="-1256;-1009;" ID="Arrow_ID_1047384894" SOURCE="ID_594073373" STARTARROW="None" STARTINCLINATION="-902;35;"/>
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1684984312239" ID="ID_1397136569" MODIFIED="1684984327473" TEXT="Dependencies repr&#xe4;sentieren">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1697759022092" ID="ID_1686263066" MODIFIED="1697759031147" TEXT="Render-Nodes">
<icon BUILTIN="hourglass"/>
</node>
<node CREATED="1697759087931" ID="ID_1166391944" MODIFIED="1697759133905" TEXT="Job-Ticket: abstrahiert als Prerequisite &#x21b7; anderes Ticket"/>
<node CREATED="1697759154154" ID="ID_39776878" MODIFIED="1697759165180" TEXT="Render-Activity-Network">
<node CREATED="1697759166171" ID="ID_1324159119" MODIFIED="1697759177547" TEXT="Aufschalten einer Notification"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1698874068495" ID="ID_950780614" MODIFIED="1698933847213" TEXT="CalcStream-Identiy / Manifestation-ID">
<linktarget COLOR="#fe5753" DESTINATION="ID_950780614" ENDARROW="Default" ENDINCLINATION="766;177;" ID="Arrow_ID_1545682192" SOURCE="ID_167266149" STARTARROW="None" STARTINCLINATION="849;80;"/>
<linktarget COLOR="#d1011b" DESTINATION="ID_950780614" ENDARROW="Default" ENDINCLINATION="928;320;" ID="Arrow_ID_1675889372" SOURCE="ID_1232029805" STARTARROW="None" STARTINCLINATION="515;28;"/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1698874332947" ID="ID_1839829780" LINK="#ID_66017169" MODIFIED="1698874396380" TEXT="wird vom Job-Planning mit durchgegeben">
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1698874413225" ID="ID_1901851782" MODIFIED="1699653342293" TEXT="Serien von Schedules transparent verwerfen">
<arrowlink COLOR="#4c7b9c" DESTINATION="ID_536599334" ENDARROW="Default" ENDINCLINATION="-898;46;" ID="Arrow_ID_1336944992" STARTARROW="None" STARTINCLINATION="-1049;-72;"/>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1681347258814" ID="ID_1046752034" MODIFIED="1681347345729" TEXT="TimingObservable">
<linktarget COLOR="#a54e77" DESTINATION="ID_1046752034" ENDARROW="Default" ENDINCLINATION="-1519;212;" ID="Arrow_ID_1830118942" SOURCE="ID_1139462793" STARTARROW="None" STARTINCLINATION="836;79;"/>
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685034759152" ID="ID_1462535336" MODIFIED="1687914505078" TEXT="Zeitplanung ist &#xfc;ber die Activity-Struktur verteilt">
<linktarget COLOR="#8f29b2" DESTINATION="ID_1462535336" ENDARROW="Default" ENDINCLINATION="885;-44;" ID="Arrow_ID_1037995856" SOURCE="ID_321040814" STARTARROW="None" STARTINCLINATION="503;38;"/>
<icon BUILTIN="idea"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1687909270889" ID="ID_453814959" MODIFIED="1687909331969" TEXT="Me&#xdf;punkte">
<linktarget COLOR="#9291ae" DESTINATION="ID_453814959" ENDARROW="Default" ENDINCLINATION="-76;125;" ID="Arrow_ID_271419388" SOURCE="ID_1817482022" STARTARROW="None" STARTINCLINATION="92;-5;"/>
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1687909320050" ID="ID_1843968618" MODIFIED="1687909327679" TEXT="Speicher-Ort">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1687909334618" ID="ID_1357717086" MODIFIED="1687909339168" TEXT="Addressierung">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1687909421308" ID="ID_1195123503" MODIFIED="1687909428855" TEXT="Integration in die Activity-Struktur">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1687909353179" ID="ID_225279364" MODIFIED="1687914560990" TEXT="Aktualisierung">
<linktarget COLOR="#a1195c" DESTINATION="ID_225279364" ENDARROW="Default" ENDINCLINATION="279;0;" ID="Arrow_ID_802789276" SOURCE="ID_724099439" STARTARROW="None" STARTINCLINATION="376;36;"/>
<linktarget COLOR="#a1195c" DESTINATION="ID_225279364" ENDARROW="Default" ENDINCLINATION="231;0;" ID="Arrow_ID_940532479" SOURCE="ID_243187423" STARTARROW="None" STARTINCLINATION="189;26;"/>
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1687909361845" ID="ID_1177410843" MODIFIED="1687909381482" TEXT="aktueller Aggregatwert">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685034805714" ID="ID_601531168" MODIFIED="1685034823237" TEXT="gewichtete moving-Averages">
<arrowlink COLOR="#6e7c9b" DESTINATION="ID_578018270" ENDARROW="Default" ENDINCLINATION="295;548;" ID="Arrow_ID_1545475117" STARTARROW="None" STARTINCLINATION="1465;-194;"/>
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685034336329" ID="ID_1204987843" MODIFIED="1685034344505" TEXT="langlebige Instanzen">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685034347304" ID="ID_979587106" MODIFIED="1685034357789" TEXT="keying per Invocation-Hash-System">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1685034722333" ID="ID_1196812284" MODIFIED="1685034732152" TEXT="InvocationInstanceID"/>
<node CREATED="1685034732627" ID="ID_195305881" MODIFIED="1685034744467" TEXT="+ ID des Me&#xdf;punkts"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685034362678" ID="ID_1900695090" MODIFIED="1685034447971" TEXT="persistent aufbewahren">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685034463110" ID="ID_1741580708" MODIFIED="1685034485943" TEXT="Plattform-Modell (vgl. Yoshimi-Testsuite)">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685034490452" ID="ID_1695057398" MODIFIED="1685034513314" TEXT="Relevanz-Score mitf&#xfc;hren">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1685034527488" ID="ID_126462924" MODIFIED="1685034534813" TEXT="Nutzungsh&#xe4;ufigkeit"/>
<node CREATED="1685034536414" ID="ID_1109987049" MODIFIED="1685034545521" TEXT="Erfolg der Sch&#xe4;tzung"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685034585984" ID="ID_1264433598" MODIFIED="1685034595551" TEXT="Score hierarchisch aktualisieren">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1685034596598" ID="ID_938491535" MODIFIED="1685034602145" TEXT="in der laufenden Instanz"/>
<node CREATED="1685034602640" ID="ID_846888946" MODIFIED="1685034609355" TEXT="im aktuellen Projekt"/>
<node CREATED="1685034611687" ID="ID_8278922" MODIFIED="1685034622667" TEXT="in der lokalen Installation"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1688847198318" ID="ID_1502450935" MODIFIED="1688847204841" TEXT="Zugriff und Verwendung">
<icon BUILTIN="hourglass"/>
<node CREATED="1688847208788" ID="ID_1229178383" MODIFIED="1688847225405" TEXT="Zweck">
<icon BUILTIN="info"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1688847011314" ID="ID_1197144274" MODIFIED="1688847240923" TEXT="steuern der Epochen-L&#xe4;nge">
<linktarget COLOR="#85314b" DESTINATION="ID_1197144274" ENDARROW="Default" ENDINCLINATION="206;-20;" ID="Arrow_ID_945653766" SOURCE="ID_514303739" STARTARROW="None" STARTINCLINATION="-249;11;"/>
<icon BUILTIN="flag-yellow"/>
<node COLOR="#435e98" CREATED="1689950955808" ID="ID_539654006" MODIFIED="1689951087443" TEXT="Stand 7/23 : vollst&#xe4;ndig im BlockFlow selber implementiert">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Zun&#228;chst dachte ich, das ist <i>nur ein Provisorium...</i>
    </p>
    <p>
      Aber derzeit ist eine vollt&#228;ndige und elaborierte Regelung im BlockFlow selber implementiert, die bereits robust aussieht und auch kurzzeitige Lastspitzen gut abfedert; es erscheint zweifelhaft, ob hier noch eine externe Regelung ben&#246;tigt wird. M&#246;glicherweise k&#246;nnte das TimingObservable einen <b>2. Layer</b>&#160;bilden, der die Grundparameter des Algorithmus l&#228;ngerfristig optimiert
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1688851183024" ID="ID_371629266" MODIFIED="1688851189173" TEXT="#1317 capture Scheduler allocator behaviour">
<icon BUILTIN="hourglass"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1688851167818" ID="ID_1469698148" MODIFIED="1688851173747" TEXT="#1316 regulate Scheduler memory allocation">
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1697763685621" ID="ID_1642973256" MODIFIED="1697763887954" TEXT="EngineObserver">
<linktarget COLOR="#4f3156" DESTINATION="ID_1642973256" ENDARROW="Default" ENDINCLINATION="-628;-472;" ID="Arrow_ID_1213898118" SOURCE="ID_272943268" STARTARROW="None" STARTINCLINATION="-1771;162;"/>
<icon BUILTIN="hourglass"/>
<node CREATED="1697763889873" ID="ID_1880953372" MODIFIED="1697763896717" TEXT="Aufgaben">
<icon BUILTIN="info"/>
<node CREATED="1697763898072" ID="ID_51060127" MODIFIED="1697763919401" TEXT="empf&#xe4;ngt einzelne Zeitmessungen"/>
<node CREATED="1697763920773" ID="ID_1817482022" MODIFIED="1697763990347" TEXT="ordnet diese den Me&#xdf;punkten zu">
<arrowlink COLOR="#9291ae" DESTINATION="ID_453814959" ENDARROW="Default" ENDINCLINATION="-76;125;" ID="Arrow_ID_271419388" STARTARROW="None" STARTINCLINATION="92;-5;"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1697764000874" ID="ID_525721456" MODIFIED="1697764038363" TEXT="k&#xf6;nnte noch weitere Performance-Daten empfangen">
<icon BUILTIN="hourglass"/>
<icon BUILTIN="idea"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1697764018200" ID="ID_222314932" MODIFIED="1697764038362" TEXT="k&#xf6;nnte Notifications und Triggerschwellen verwalten">
<icon BUILTIN="hourglass"/>
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1699403193710" ID="ID_1522099049" MODIFIED="1699403198814" TEXT="Design-Skizze">
<node CREATED="1699403199826" ID="ID_1873444035" MODIFIED="1699403208767" TEXT="asyncrhones Messaging"/>
<node CREATED="1699403217120" ID="ID_120723001" MODIFIED="1699403224072" TEXT="eine Eingangs-Dispatch-Queue"/>
<node CREATED="1699403254867" ID="ID_1562054545" MODIFIED="1699403320882" TEXT="Einspeisen von Nachrichten sehr effizient">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Aufruf&#160;&#160;aus der Berechnung heraus m&#246;glich, d.h. darf h&#246;chstens ein paar &#181;s kosten
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1699403383634" ID="ID_72666374" MODIFIED="1699403396396" TEXT="Addresse ist codiert in einen size_t - Hash">
<node CREATED="1699404688180" ID="ID_1754251698" MODIFIED="1699404705526" TEXT="sie repr&#xe4;sentiert einen symbolischen, hierarchischen Endpunkt"/>
<node CREATED="1699404706420" ID="ID_1195678814" MODIFIED="1699404726595" TEXT="plus eine Instanz-Nummer"/>
</node>
<node CREATED="1699404817133" ID="ID_1983952210" MODIFIED="1699404888413" TEXT="Jeder Endpunkt steht f&#xfc;r einen Topic-Publisher">
<node CREATED="1699404897438" ID="ID_1350627589" MODIFIED="1699404910213" TEXT="der Empf&#xe4;nger registriert sich an diesem aber mit einem Funktor"/>
<node CREATED="1699404999507" ID="ID_1908588492" MODIFIED="1699405014485" TEXT="die Instanz-Nummer kann optional in Insanzen dieses Funktors umgesetzt werden"/>
<node CREATED="1699405021926" ID="ID_90980190" MODIFIED="1699405045470" TEXT="es k&#xf6;nnen sich mehrere Empf&#xe4;nger registrieren/derigistrieren (Subscriber-Pattern)"/>
</node>
<node CREATED="1699405149557" ID="ID_1423036678" MODIFIED="1699405164251">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Empfang/Zustellung laufen <b>single-Threaded</b>
    </p>
  </body>
</html></richcontent>
<node CREATED="1699405165067" ID="ID_229778014" MODIFIED="1699405192201" TEXT="k&#xf6;nnte implementiert sein als ein separater Event-Thread"/>
<node CREATED="1699405193033" ID="ID_1200939317" MODIFIED="1699405209359" TEXT="Alternativ: l&#xe4;uft unter GroomingToken im Scheduler-&#xbb;Tick&#xab;"/>
</node>
<node CREATED="1699405342581" ID="ID_1835834856" MODIFIED="1699405366988" TEXT="die Instanzen....">
<node CREATED="1699405367834" ID="ID_1953811997" MODIFIED="1699405371486" TEXT="sind beliebige Typen"/>
<node CREATED="1699405372065" ID="ID_1589785923" MODIFIED="1699405379612" TEXT="werden vom EngineObserver gemanaged"/>
<node CREATED="1699405382096" ID="ID_1080836669" MODIFIED="1699405396434" TEXT="und k&#xf6;nnen &#xfc;ber die Addressierung in eine Language-Referenz &#xfc;bersetzt werden"/>
<node CREATED="1699405405867" ID="ID_1288409697" MODIFIED="1699405457592" TEXT="Konsequenz: man kann Instanzen effizient ansprechen und dar&#xfc;ber streng typisiert aufrufen"/>
<node CREATED="1699405564607" ID="ID_561422739" MODIFIED="1699405582821" TEXT="&#x27f9; Br&#xfc;cke zwischen &#xbb;Funktor&#xab; und Member-Funktion">
<node CREATED="1699405616896" ID="ID_850366101" MODIFIED="1699405632436" TEXT="Routing via Address-Hashtable"/>
<node CREATED="1699405633054" ID="ID_1875469962" MODIFIED="1699405680754" TEXT="Registrierung mit RTTI-Match und einem indirekten Dispatch"/>
</node>
</node>
<node CREATED="1699405707070" ID="ID_1718899201" MODIFIED="1699405742710">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <u>Leitbild</u>:&#160;<font face="Monospaced">TimingObservable</font>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1699409794378" ID="ID_1622814864" MODIFIED="1699409805609" TEXT="#1347 EngineObserver">
<icon BUILTIN="hourglass"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1699414012828" ID="ID_1909389454" MODIFIED="1699414023170" TEXT="Datenstrukturen anlegen">
<icon BUILTIN="hourglass"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1699413973971" ID="ID_1307699016" MODIFIED="1699414043369">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <b>EngineEvent</b>-Basisstruktur
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
<node CREATED="1699414045739" ID="ID_3506591" MODIFIED="1699414061765" TEXT="Symbol + bin&#xe4;re opaque Payload"/>
<node CREATED="1699414063936" ID="ID_1879697605" MODIFIED="1699414079359" TEXT="f&#xfc;r Payload einen Union-cast-Mechanismus vorsehen"/>
<node CREATED="1699414084173" ID="ID_701544569" MODIFIED="1699414099911" TEXT="man definiert f&#xfc;r konkrete Events eine Subklasse">
<icon BUILTIN="idea"/>
<node CREATED="1699414102000" ID="ID_928476961" MODIFIED="1699414117317" TEXT="diese spezialisiert das Template Payload&lt;T&gt;"/>
<node CREATED="1699414118433" ID="ID_639697248" MODIFIED="1699414141250" TEXT="T ist ein Tupel / Record mit den zu publizierenden Daten"/>
<node CREATED="1699414142638" ID="ID_529883499" MODIFIED="1699414172640">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <u>Gr&#246;&#223;enbeschr&#228;nkung</u>: <b>4 &#187;Slots&#171;</b>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1689468998095" ID="ID_32989316" MODIFIED="1689469005279" TEXT="Selbstregulierung">
<icon BUILTIN="hourglass"/>
<node CREATED="1689468860552" ID="ID_1323627214" MODIFIED="1689468865077" TEXT="offene Themen">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689468886534" ID="ID_356962646" MODIFIED="1689469018486" TEXT="Freigeben &#xfc;bersch&#xfc;ssiger Allokationen">
<arrowlink COLOR="#c56f9f" DESTINATION="ID_205839494" ENDARROW="Default" ENDINCLINATION="137;302;" ID="Arrow_ID_556800968" STARTARROW="None" STARTINCLINATION="1132;79;"/>
<icon BUILTIN="bell"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1693238542895" ID="ID_917322834" MODIFIED="1693238802819" TEXT="Deadlines for &#xbb;free wheeling&#xab; and background rendering">
<arrowlink COLOR="#e7367a" DESTINATION="ID_1212740184" ENDARROW="Default" ENDINCLINATION="12;-24;" ID="Arrow_ID_1622880291" STARTARROW="None" STARTINCLINATION="104;5;"/>
<linktarget COLOR="#683034" DESTINATION="ID_917322834" ENDARROW="Default" ENDINCLINATION="445;-22;" ID="Arrow_ID_57467075" SOURCE="ID_1858134894" STARTARROW="None" STARTINCLINATION="494;26;"/>
<linktarget COLOR="#fe6147" DESTINATION="ID_917322834" ENDARROW="Default" ENDINCLINATION="631;-14;" ID="Arrow_ID_1361409427" SOURCE="ID_1655832509" STARTARROW="None" STARTINCLINATION="953;54;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689817752528" ID="ID_1102639659" MODIFIED="1689818151752" TEXT="Entwickeln einer zentralen Engine-Konfig">
<arrowlink COLOR="#7733ab" DESTINATION="ID_688833634" ENDARROW="Default" ENDINCLINATION="-549;-312;" ID="Arrow_ID_1006388919" STARTARROW="None" STARTINCLINATION="-313;359;"/>
<linktarget COLOR="#8b3852" DESTINATION="ID_1102639659" ENDARROW="Default" ENDINCLINATION="-668;-47;" ID="Arrow_ID_1600823738" SOURCE="ID_404036572" STARTARROW="None" STARTINCLINATION="-1058;51;"/>
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1693238508625" ID="ID_1960804622" MODIFIED="1693238729301" TEXT="Ermitteln der Engine-Kapazit&#xe4;t und Last">
<linktarget COLOR="#965d71" DESTINATION="ID_1960804622" ENDARROW="Default" ENDINCLINATION="286;89;" ID="Arrow_ID_494620026" SOURCE="ID_1196672113" STARTARROW="None" STARTINCLINATION="2087;110;"/>
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1693238523855" ID="ID_1212740184" MODIFIED="1693238599374" TEXT="#1325 Chained Deadlines based on capacity">
<linktarget COLOR="#e7367a" DESTINATION="ID_1212740184" ENDARROW="Default" ENDINCLINATION="12;-24;" ID="Arrow_ID_1622880291" SOURCE="ID_917322834" STARTARROW="None" STARTINCLINATION="104;5;"/>
<icon BUILTIN="hourglass"/>
</node>
<node CREATED="1694213271132" ID="ID_854291273" MODIFIED="1694213279952" TEXT="Steuern der verf&#xfc;gbaren Rechenkapazit&#xe4;t">
<node CREATED="1694213285899" ID="ID_1827552701" MODIFIED="1694213296851" TEXT="ist hoch/runterfahren des Pool sinnvoll"/>
<node CREATED="1694213297698" ID="ID_1239288134" MODIFIED="1694213309163" TEXT="wie schnell mu&#xdf; er reagieren"/>
<node CREATED="1694213169187" ID="ID_1559487253" MODIFIED="1694213319234" TEXT="WAIT-Poll-Zyklus steuern">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1559487253" ENDARROW="Default" ENDINCLINATION="797;92;" ID="Arrow_ID_1339552616" SOURCE="ID_1993794660" STARTARROW="None" STARTINCLINATION="698;-15;"/>
<node CREATED="1694213323710" HGAP="61" ID="ID_1739460267" MODIFIED="1694213914942" TEXT="Systeme mit sehr vielen Cores k&#xf6;nnten problematisch sein">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Beispiel 128 Cores: dann pollen ununterbrochen andere Threads das GroomingToken; eigentlich sollte das aber kein Problem darstellen (wenn ich recht verstehe, belastet ein &#187;acquire&#171; nur denjenigen Thread, der auf den Wert aus dem allgemeinen Speicher zugreifen m&#246;chte; dieser Thread aber wartet hier sowiso)
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1681396857183" ID="ID_1618297513" MODIFIED="1681396863069" TEXT="Test/Integration">
<icon BUILTIN="hourglass"/>
<node CREATED="1688336324305" ID="ID_1933146986" MODIFIED="1688336337035" TEXT="Aufbau">
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1688336311659" ID="ID_1968961000" MODIFIED="1688337255857" TEXT="Scheduler aufbauen">
<arrowlink COLOR="#fe3a58" DESTINATION="ID_323523273" ENDARROW="Default" ENDINCLINATION="-167;17;" ID="Arrow_ID_589297136" STARTARROW="None" STARTINCLINATION="-139;-149;"/>
<icon BUILTIN="pencil"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1688336317130" ID="ID_1362196370" MODIFIED="1688336503785" TEXT="Scheduler+Dispatcher">
<icon BUILTIN="hourglass"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1688336490682" ID="ID_1706839266" MODIFIED="1688336501746" TEXT="Node-Invocation">
<icon BUILTIN="hourglass"/>
</node>
</node>
<node CREATED="1688336338313" ID="ID_1758461421" MODIFIED="1688336340923" TEXT="Integration">
<node CREATED="1697737141910" ID="ID_1785585308" MODIFIED="1697737251106" TEXT="sinnvolle Test-Last">
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1697737421147" ID="ID_1561659970" MODIFIED="1697741708429" TEXT="M&#xf6;glichkeiten untersuchen">
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1697737450229" ID="ID_209380993" MODIFIED="1697738314019" TEXT="Rahmen">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node CREATED="1697737465179" ID="ID_1204584376" MODIFIED="1697737798383" TEXT="selber Programmieren">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      An Libraries ist nur erlaubt, was ohnehin <i>in Reichweite liegt</i>&#160;(also elementare Video-Libraries und Cairo zum Zeichnen). Der Code wird Teil des Projekts, sollte daher in C++ stehen und allen Qualit&#228;tsstandards entsprechen. Sinnvollerweise wird der Code in ein ad-hoc-Plugin gepackt, um den Umgang mit Dependencies zu erleichtern
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1697737473137" ID="ID_1145748705" MODIFIED="1697737860816" TEXT="nicht viel Zeit darauf verwenden">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      &#8222;viel&#8220; ist relativ. Es darf schon Spa&#223; machen, aber es sollte nicht in ein monatelanges Kunst-Projekt ausufern
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1697737543296" ID="ID_635918288" MODIFIED="1697738301537" TEXT="sollte gewisse Lastformen erzeugen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Der Datengenerator bewegt sich in einem gewissen Rahmen: bei hinreichend kleiner Aufl&#246;sung mu&#223; er zuverl&#228;ssig und ohne Aussetzer in Echtzeit laufen, und zwar mit 30fps. Idealerweise gibt es Parameter, um die Last stark zu erh&#246;hen, so da&#223; man ihn auch zum Test von Qualit&#228;ts-Renders heranziehen kann. Weiterhin sollte es sich im Wesentlichen um eine computational load handeln; ein gewisser Speicherbedarf ist dabei akzeptabel, externe IO nicht.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1697737491239" ID="ID_815953078" MODIFIED="1697738077728" TEXT="Ergebnis soll Stil haben">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Da das Projekt auf eine gewisse &#246;ffentliche Sichtbarkeit zusteuert, werden alle sichtbaren und leicht fa&#223;baren Elemente auf subtile Weise zu einer Visitenkarte. Dieser Playback ist so ziemlich das Erste und Einzige seit vielen Jahren, das man sehen und erfassen kann. Es sollte daher klar sein, da&#223; es in jeder Form einen Eindruck hinterl&#228;&#223;t.
    </p>
  </body>
</html></richcontent>
<node CREATED="1697737592482" ID="ID_582917015" MODIFIED="1697737597269" TEXT="der Code wird gelesen werden"/>
<node CREATED="1697737597843" ID="ID_312918314" MODIFIED="1697737604211" TEXT="das Ergebnis sehen auch Laien"/>
</node>
</node>
<node CREATED="1697738335886" ID="ID_1301961424" MODIFIED="1697738346874" TEXT="Ideen f&#xfc;r generative Graphik">
<icon BUILTIN="idea"/>
<node CREATED="1697738374212" ID="ID_1243145753" MODIFIED="1697738446795" TEXT="Spektrum">
<node CREATED="1697738383296" ID="ID_574153942" MODIFIED="1697738385097" TEXT="retro"/>
<node CREATED="1697738378505" ID="ID_1742589890" MODIFIED="1697738382084" TEXT="nerdig"/>
<node CREATED="1697738400023" ID="ID_1315204869" MODIFIED="1697738402081" TEXT="magisch"/>
<node CREATED="1697738386902" ID="ID_284499392" MODIFIED="1697738398842" TEXT="futuristisch"/>
<node CREATED="1697738406139" ID="ID_1314876040" MODIFIED="1697738411629" TEXT="wissenschaftlich"/>
</node>
<node CREATED="1697738465629" ID="ID_95162985" MODIFIED="1697738467361" TEXT="Quellen">
<node CREATED="1697738525765" ID="ID_1218093676" LINK="https://flam3.com/flame_draves.pdf" MODIFIED="1697738678279" TEXT="Scott Draves: Flame-Algo">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Beschreibt das Prinzip rekursiver fraktaler Funktionen, und stellt dann Erweiterungen vor, die in seinem &#187;Flam3&#171; implementiert sind. Auf dieser Basis hat er &#187;Electric Sheep&#171; aufgebaut, welches auch die Grafik-Definitionen selber durch einen generativen Proze&#223; weiterentwickelt.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1697739021864" ID="ID_924992668" LINK="http://www.complexification.net" MODIFIED="1697739033149" TEXT="Complexification-Net">
<node CREATED="1697739042984" ID="ID_342887840" MODIFIED="1697739052554" TEXT="Stichwort &#xbb;Substrate&#xab;"/>
</node>
<node CREATED="1697738795321" ID="ID_738530174" LINK="https://www.freecodecamp.org/news/an-introduction-to-generative-art-what-it-is-and-how-you-make-it-b0b363b50a70/" MODIFIED="1697738825319" TEXT="freeCodeCamp: An introduction to Generative Art (10/2018)"/>
<node CREATED="1697738836356" ID="ID_1866781648" LINK="https://www.generativehut.com/tutorials" MODIFIED="1697738850171" TEXT="GenerativeHut : Tutorials">
<node CREATED="1697738961811" ID="ID_257142214" LINK="https://www.generativehut.com/post/recreating-the-noise-orbit" MODIFIED="1697738988141" TEXT="Tutorial: Noise-Orbit">
<icon BUILTIN="forward"/>
</node>
</node>
</node>
<node CREATED="1697738474108" ID="ID_1262573737" MODIFIED="1697738479399" TEXT="Konkretisierung des Rahmens">
<node CREATED="1697738498130" ID="ID_921865940" MODIFIED="1697738501879" TEXT="mit Cairo zeichnen"/>
<node CREATED="1697738502632" ID="ID_474402832" MODIFIED="1697738512127" TEXT="einfach aber mit raffizierter Palette"/>
</node>
</node>
<node COLOR="#338800" CREATED="1697739167511" ID="ID_462701673" MODIFIED="1701476438150" TEXT="Last f&#xfc;r Messungen">
<icon BUILTIN="button_ok"/>
<node CREATED="1697739192956" ID="ID_1199894921" MODIFIED="1697739211725" TEXT="Korrektheit mu&#xdf; verifizierbar sein"/>
<node CREATED="1697739215921" ID="ID_880522211" MODIFIED="1697739222701" TEXT="Last-Parameter sollten steuerbar sein"/>
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1697739223592" ID="ID_1177697704" MODIFIED="1701476435378" TEXT="Naheliegend: Pr&#xfc;fsummen-Kette">
<arrowlink COLOR="#fcffac" DESTINATION="ID_509932054" ENDARROW="Default" ENDINCLINATION="44;-115;" ID="Arrow_ID_388403838" STARTARROW="None" STARTINCLINATION="-227;20;"/>
<icon BUILTIN="idea"/>
<node CREATED="1697739240230" ID="ID_1190486942" MODIFIED="1697739258607" TEXT="wie in Git oder Blockchain">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1697739420322" ID="ID_1934582663" MODIFIED="1697739433348" TEXT="Vorgabe: stabiler Berechnungs-Strom">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1697739314316" ID="ID_1389662036" MODIFIED="1697739320743" TEXT="Randomised Side-Chains">
<node CREATED="1697739585271" ID="ID_214582424" MODIFIED="1697739867461" TEXT="Zahlenfolge in eine Hash-Summe einbuchen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <ul>
      <li>
        es wird eine echte Hash-Funktion verwendet, die auch Vertauschungen erkennt
      </li>
      <li>
        eingerechnet wird in jedem Berechnungsschritt jeweils ein lokaler Zahlenwert
      </li>
      <li>
        dieser ergibt sich im einfachsten Fall aus einem laufenden Z&#228;hler
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node CREATED="1697739654662" ID="ID_200209889" MODIFIED="1697740265583" TEXT="&#x201e;zuf&#xe4;lliger&#x201c; limitierter R&#xfc;ckgriff auf &#xe4;ltere Ergebnisse">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Ein lokal berechneter Hashwert kann als pseudo-Zufallszahl verwendet werden, um eine gewisse Zahl an Neben-Zweigen zu erzeugen; diese greifen in einem limitierten Rahmen auf vorausgehende Ergebnisse zur&#252;ck. Diese werden dadurch zu Voraussetzungen.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1697739748719" ID="ID_1722048889" MODIFIED="1697740071380" TEXT="lokale Iteration um Last zu erzeugen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      die Hash-Funktion wird N-fach auf das Zwischenergebnis angewendet, f&#252;r gro&#223;es N. Damit kann CPU-Last erzeugt werden
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1697740269884" ID="ID_1006441438" MODIFIED="1697740623243" TEXT="ist deterministisch und parallelisierbar">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Wenn man nicht immer auf den unmittelbaren Vorg&#228;nger zur&#252;ckgreift, sondern auf zuf&#228;llige Vorg&#228;nger, entsteht ein chaotischer DAG, der aber aufgrund der Limitierung stets Forschritt macht. Durch die teilweise lokale Entkoppelung der Zweige wird die Berechnung parallelisierbar; da sich jede Entscheidung aber aus den Eingangsdaten ergibt, mu&#223; das Ergebnis 100% deterministisch sein.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1697740624211" ID="ID_1773119907" MODIFIED="1697740764084" TEXT="f&#xfc;r den Test wird die Verzweigungsstruktur vorgeneriert">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Das Ergebnis mu&#223; ohnehin einmal auf konventionellem Weg berechnet werden; an dieser Stelle kann man die sich ergebende Verkn&#252;pfungs-Struktur ausgeben, um daraus verkn&#252;pfte Render-Jobs zu machen
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1697740783336" ID="ID_509932054" MODIFIED="1701477303910" TEXT="TestChainLoad">
<linktarget COLOR="#9b2277" DESTINATION="ID_509932054" ENDARROW="Default" ENDINCLINATION="-374;-90;" ID="Arrow_ID_1082315358" SOURCE="ID_1899821736" STARTARROW="None" STARTINCLINATION="-1039;60;"/>
<linktarget COLOR="#fcffac" DESTINATION="ID_509932054" ENDARROW="Default" ENDINCLINATION="44;-115;" ID="Arrow_ID_388403838" SOURCE="ID_1177697704" STARTARROW="None" STARTINCLINATION="-227;20;"/>
<icon BUILTIN="pencil"/>
<node CREATED="1697740826362" ID="ID_1948434460" MODIFIED="1697740845523" TEXT="eine verifizierbare verzweigte Berechnungs-Last">
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1699657771858" FOLDED="true" ID="ID_492954771" MODIFIED="1701476473418" TEXT="Design">
<icon BUILTIN="yes"/>
<node COLOR="#435e98" CREATED="1699657791215" ID="ID_1285189810" MODIFIED="1701476453672" TEXT="Anforderungen">
<linktarget COLOR="#3f42ac" DESTINATION="ID_1285189810" ENDARROW="Default" ENDINCLINATION="-1000;-147;" ID="Arrow_ID_1839143434" SOURCE="ID_1875359700" STARTARROW="None" STARTINCLINATION="-1005;122;"/>
<icon BUILTIN="yes"/>
<node CREATED="1699657825826" ID="ID_525362265" MODIFIED="1699657835477" TEXT="stellt Jobs / Job-Functor bereit">
<node CREATED="1699657837345" ID="ID_761367578" MODIFIED="1699657843220" TEXT="einen Planungs-Funktor"/>
<node CREATED="1699657843952" ID="ID_850599164" MODIFIED="1699657847919" TEXT="einen Arbeits-Funktor"/>
</node>
<node CREATED="1699657947234" ID="ID_364611823" MODIFIED="1699657964063" TEXT="Datenstruktur zur Repr&#xe4;sentation der Abh&#xe4;ngigkeiten">
<node CREATED="1699658860202" ID="ID_1687611936" MODIFIED="1699658867597" TEXT="bidirektional verkn&#xfc;pft">
<node CREATED="1699658879840" ID="ID_767898649" MODIFIED="1699658891952" TEXT="n&#xe4;chster zu besuchender Schritt"/>
<node CREATED="1699658892469" ID="ID_1484530159" MODIFIED="1699658902615" TEXT="R&#xfc;ckverkn&#xfc;pfung zu Voraussetzungen"/>
</node>
<node CREATED="1699658946606" ID="ID_1336402506" MODIFIED="1699658949457" TEXT="einzelne Node">
<node CREATED="1699658960115" ID="ID_136030981" MODIFIED="1699658968246" TEXT="entspricht einem Rechen-Job"/>
<node CREATED="1699659307893" ID="ID_1684375007" MODIFIED="1699659327720" TEXT="bietet eine WaterLevel-Zahl (&#x27fc; Timings)"/>
<node CREATED="1699659560603" ID="ID_107957904" MODIFIED="1699660125419" TEXT="verweist auf 1..N Vorg&#xe4;nger"/>
<node CREATED="1699659856043" ID="ID_1473666030" MODIFIED="1699660114333" TEXT="hat 0..M direkte Nachfolger"/>
<node CREATED="1699659667940" ID="ID_1368216745" MODIFIED="1699659677087" TEXT="speichert ein Ergebnis"/>
<node CREATED="1699659712591" ID="ID_1629221792" MODIFIED="1699659723169" TEXT="Flag ob schon besucht / berechnet"/>
</node>
<node CREATED="1700763022058" ID="ID_1456995862" MODIFIED="1700763027243" TEXT="inh&#xe4;rent limitiert">
<node CREATED="1700763064266" ID="ID_1550325795" MODIFIED="1700763081728" TEXT="Gesamtzahl der Nodes fest vorgegeben"/>
<node CREATED="1700763028207" ID="ID_1624072190" MODIFIED="1700763062806" TEXT="auf jedem Time-Level: maximale Breite (Anzahl Nodes)"/>
</node>
</node>
<node CREATED="1700763097108" ID="ID_1103056418" MODIFIED="1700763109264" TEXT="Generierung der Verkn&#xfc;pfungs-Topologie">
<node CREATED="1700763123642" ID="ID_1013432384" MODIFIED="1700763129765" TEXT="100% reproduzierbar"/>
<node CREATED="1700763130786" ID="ID_1574603467" MODIFIED="1700763136252" TEXT="auf einem Seed aufbauend"/>
<node CREATED="1700763137456" ID="ID_1403621430" MODIFIED="1700763156226" TEXT="gesteuert durch Zufalls-Parameter"/>
<node CREATED="1700763157328" ID="ID_36351098" MODIFIED="1700763296805" TEXT="&#xbb;Zufall&#xab; durch &#xbb;ziehen&#xab; aus dem Hash-Wert der Node">
<arrowlink COLOR="#639b93" DESTINATION="ID_1225692248" ENDARROW="Default" ENDINCLINATION="-812;-40;" ID="Arrow_ID_879341368" STARTARROW="None" STARTINCLINATION="655;81;"/>
</node>
</node>
<node CREATED="1699658003347" ID="ID_728639879" MODIFIED="1699658006734" TEXT="Nutzungs-Muster">
<node CREATED="1699658019169" ID="ID_11395500" MODIFIED="1699658038530" TEXT="einen einzigen Job mit verifizierbarem Aufruf"/>
<node CREATED="1699658093543" ID="ID_1670142319" MODIFIED="1699658116942" TEXT="eine (gro&#xdf;e) Menge von Jobs mit reproduzierbarem Ergebnis"/>
<node CREATED="1699658238075" ID="ID_731772772" MODIFIED="1699658242245" TEXT="verkettete Jobs"/>
<node CREATED="1699658245163" ID="ID_408966392" MODIFIED="1699658273547" TEXT="mehrere verzweigte Ketten"/>
<node CREATED="1699658289205" ID="ID_879608485" MODIFIED="1699658305136" TEXT="w&#xe4;hlbare Rechenlast im Einzeljob"/>
</node>
<node CREATED="1699657998555" ID="ID_1781018318" MODIFIED="1699658001663" TEXT="Use-Cases">
<node CREATED="1699658336383" ID="ID_119864860" MODIFIED="1699658343042" TEXT="Ausf&#xfc;hrungs-Struktur generieren"/>
<node CREATED="1699659737116" ID="ID_1224224640" MODIFIED="1699659747550" TEXT="Struktur traversieren und initialisieren/zur&#xfc;cksetzen"/>
<node CREATED="1699658344771" ID="ID_35417722" MODIFIED="1699658409009" TEXT="Struktur traversieren und Berechnungen direkt (synchron) ausf&#xfc;hren"/>
<node CREATED="1699658491906" ID="ID_835020550" MODIFIED="1699658505644" TEXT="Struktur traversieren und Job-Schedule generieren"/>
<node CREATED="1699658551330" ID="ID_635280615" MODIFIED="1699658571078" TEXT="per Referenz eine Stelle in der Struktur anspringen und dort berechnen"/>
</node>
</node>
<node CREATED="1699660750931" ID="ID_1546880350" MODIFIED="1699660753501" TEXT="Berechnung">
<node CREATED="1699660766521" ID="ID_1011761833" MODIFIED="1699660868230" TEXT="Node bekommt Zahl von direktem Vorg&#xe4;nger">
<icon BUILTIN="full-1"/>
</node>
<node CREATED="1699660791966" ID="ID_177412704" MODIFIED="1699660870309" TEXT="Node holt sich Ergebnisse von weiteren Vorg&#xe4;ngern und kombiniert diese">
<icon BUILTIN="full-2"/>
</node>
<node CREATED="1699660832248" ID="ID_277680708" MODIFIED="1699660873161" TEXT="Node iteriert auf diesem Ergebnis">
<icon BUILTIN="full-3"/>
</node>
</node>
<node CREATED="1699660141645" ID="ID_155664837" MODIFIED="1699660148215" TEXT="Graph-Konstruktion">
<node CREATED="1699660149747" ID="ID_929712258" MODIFIED="1699660154703" TEXT="Problem der Topologie">
<node CREATED="1699660169105" ID="ID_1672239953" MODIFIED="1699660238581" TEXT="sie mu&#xdf; sich deterministisch ergeben (pure Function)"/>
<node CREATED="1699660203467" ID="ID_1633489731" MODIFIED="1699660425059" TEXT="sie mu&#xdf; jeweils einen kontrollierten Parallelit&#xe4;tsgrad haben"/>
<node CREATED="1699660622440" ID="ID_441728017" MODIFIED="1699660641534" TEXT="nebenl&#xe4;ufige Zweige sollten f&#xfc;r eine gewisse Anzahl an Schritten bestehen bleiben"/>
<node CREATED="1699660880003" ID="ID_1798983066" MODIFIED="1699660903256" TEXT="Am Anfang steht ein einziger Seed, am Ende ein einziges Ergebnis"/>
<node CREATED="1699660593344" ID="ID_308815750" MODIFIED="1699660599239" TEXT="es darf keine Sackgassen geben"/>
</node>
<node CREATED="1699739502726" ID="ID_100018274" MODIFIED="1699739600848" TEXT="Skizze Konstruktion-Mechanismus">
<node CREATED="1699739627261" ID="ID_1325395921" MODIFIED="1699739685912" TEXT="Knoten werden gem&#xe4;&#xdf; einer fortscheitenden Zeit geplant"/>
<node CREATED="1699739687071" ID="ID_1937548794" MODIFIED="1699739704062" TEXT="gleichzeitig behandelte Knoten liegen nebeneinander in einer Liste"/>
<node CREATED="1699739718296" ID="ID_403110705" MODIFIED="1699739741861" TEXT="standardm&#xe4;&#xdf;ig erzeugt jeder Knoten seinen direkten Nachfolger an gleicher Listenposition"/>
<node CREATED="1699739762606" ID="ID_833882306" MODIFIED="1699739894868" TEXT="Knoten k&#xf6;nnen (optional, zuf&#xe4;llig) verzweigen und damit mehr als einen Nachfolger haben"/>
<node CREATED="1699739790303" ID="ID_1516261126" MODIFIED="1699739869967" TEXT="abgezweigte Nachfolger werden hinten an die Liste angeh&#xe4;ngt"/>
<node CREATED="1699739912517" ID="ID_135334392" MODIFIED="1699740008956" TEXT="Knoten k&#xf6;nnen (optional, zuf&#xe4;llig) reduzieren und ihrem Nachfolger die Nachbarn zuf&#xfc;hren"/>
<node CREATED="1699740022103" ID="ID_1389601530" MODIFIED="1699740063029" TEXT="ein reduzierender Knoten sammelt seine N Nachbarn in der Liste ein"/>
<node CREATED="1699740278358" ID="ID_218036409" MODIFIED="1699740327225" TEXT="Knoten k&#xf6;nnen (optional, zuf&#xe4;llig) neue Linien s&#xe4;hen, die ohne Vorg&#xe4;nger beginnen"/>
<node CREATED="1699740463671" ID="ID_739895709" MODIFIED="1699740600826" TEXT="F&#xfc;r Anfang und Ende mu&#xdf; es eine Spezialbehandlung geben">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ....denn sonst k&#246;nnte sich diese Struktur nicht entfalten, ohne die Wahrscheinlichkeiten gezielt global zu steuern. Zu Beginn mu&#223; einmal fest verzweigt werden, und zum Abschluss m&#252;ssen einmalig alle noch offenen Knoten in einen Endknoten zusammengef&#252;hrt werden.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1699740612853" ID="ID_1348403069" MODIFIED="1699740772960" TEXT="dieser Verkn&#xfc;pfungs-Mechanismus belegt eine fest vorgegebene Menge von Knoten">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Und das legt auch nahe, die Knoten selber im Block zu allozieren. Die Struktur wird dann sukzessive durch Herstellen von Verkn&#252;pfungen aufgebaut, und jeweils neue Knoten werden fortschreitend &#8222;belegt&#8220;
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1699740841337" ID="ID_1118241544" MODIFIED="1699740847100" TEXT="Steuergr&#xf6;&#xdf;en">
<node CREATED="1699740923911" ID="ID_89015648" MODIFIED="1699740931518" TEXT="Gesamtanzahl der Knoten"/>
<node CREATED="1699740848160" ID="ID_1083737857" MODIFIED="1699740871217" TEXT="maximale Parallelit&#xe4;t als Limit (oder unlimitiert)"/>
<node CREATED="1699740872445" ID="ID_764165766" MODIFIED="1699740899462" TEXT="Wahrscheinlichkeit und Zahl der Verzweigungen, Reduktionen, und Aussaht"/>
</node>
<node CREATED="1699741707890" ID="ID_1256754656" MODIFIED="1699741710733" TEXT="Konsequenzen">
<node CREATED="1699741727888" ID="ID_1541171458" MODIFIED="1699741738034" TEXT="im Block liegen die Knoten geornet"/>
<node CREATED="1699741738862" ID="ID_1619401622" MODIFIED="1699741755526" TEXT="Nachfolger stehen stets weiter hinten"/>
<node CREATED="1699742835134" ID="ID_1616358648" MODIFIED="1699742850936" TEXT="alle Berechnungen und Traversierungen haben lineare Komplexit&#xe4;t"/>
<node CREATED="1699741773857" ID="ID_1389034436" MODIFIED="1699741790986" TEXT="der erste Strang ist ein Hauptstrang und geht bis zum letzten Knoten durch"/>
<node CREATED="1699741891657" ID="ID_665327514" MODIFIED="1699741967486" TEXT="die Balance zwischen den Wahrscheinlichkeiten bestimmt die konkrete Form"/>
<node CREATED="1699741993259" ID="ID_849845710" MODIFIED="1699742010072" TEXT="die Steuergr&#xf6;&#xdf;en sollten als Funktionen konfigurierbar gemacht werden">
<node CREATED="1699742017712" ID="ID_495841097" MODIFIED="1699742034394" TEXT="Input: aktueller Hash"/>
<node CREATED="1699742075192" ID="ID_237749934" MODIFIED="1699742108816" TEXT="Output: Steuergr&#xf6;&#xdf;e (ja/nein, Anzahl)"/>
<node CREATED="1699742121210" ID="ID_1698029431" MODIFIED="1699742134716" TEXT="Berechnung: typischerweise per Modulo und Mapping"/>
</node>
</node>
</node>
<node CREATED="1699742148860" ID="ID_1311053913" MODIFIED="1699742152869" TEXT="Einzel-Verfahren">
<node CREATED="1699742169876" ID="ID_316920664" MODIFIED="1699742177318" TEXT="Topologie-Generierung">
<node CREATED="1699742192457" ID="ID_1053661548" MODIFIED="1699742197580" TEXT="ist eine while-Schleife"/>
<node CREATED="1699742209159" ID="ID_1003117104" MODIFIED="1699742221157" TEXT="arbeitet auf einer Liste von Pointern auf die Nodes"/>
<node CREATED="1699742604779" ID="ID_853800288" MODIFIED="1699742636811" TEXT="es gibt immer alternierend die aktuelle-Liste und die Nachfolger-Liste"/>
</node>
<node CREATED="1699742858417" ID="ID_889440873" MODIFIED="1699742863350" TEXT="Traversierung">
<node CREATED="1699742864986" ID="ID_999341690" MODIFIED="1699743013462" TEXT="Traversierung gem&#xe4;&#xdf; Verkn&#xfc;pfungslogik w&#xe4;re m&#xf6;glich, ist aber nicht sinnvoll">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...und zwar da sie wegen der m&#246;glicherweise chaotischen Verkn&#252;pfungsstruktur schwierig zu programmieren und maximal aufwendig w&#228;re. Das gilt entsprechend auf das Erzeugen des Schedule
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1699743015397" ID="ID_121499445" MODIFIED="1699743053875" TEXT="Traversierung &#xfc;ber die Nodes im Block ist effizient und wird als Primitive bereitgestellt"/>
</node>
<node CREATED="1699743076352" ID="ID_1308611850" MODIFIED="1699743082136" TEXT="Kontroll-Berechnung">
<node CREATED="1699743083178" ID="ID_905616190" MODIFIED="1699743095951" TEXT="ist eine einfache Traveriserung, die die Berechnungsfunktion jeder Node aufruft"/>
<node CREATED="1699743096640" ID="ID_799638431" MODIFIED="1699743259682" TEXT="normalerweise nicht notwendig, da bereits ein Nebenergebnis der Topologie-Generierung">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...denn auch die Topologie-Generierung braucht bereits eine Zufallszahl pro Node, und daf&#252;r nimmt man sinnvollerweise den berechneten Hash f&#252;r diese Node, also ruft die Berechnungsfunktion der Node auf.
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1699743262759" ID="ID_1587309791" MODIFIED="1699743268330" TEXT="Scheduling">
<node CREATED="1699743269428" ID="ID_1800079045" MODIFIED="1699743327693" TEXT="ist im allgemeinen sehr komplex und nur in einem Gesamtlauf m&#xf6;glich"/>
<node CREATED="1699743335828" ID="ID_1767944235" MODIFIED="1699743352605" TEXT="erfordert zwingend, den Builder-Term jeder Node daselbst zu speichern"/>
<node CREATED="1699743460240" ID="ID_1289587973" MODIFIED="1699743944810" TEXT="Paketweise Berechnung in Traversierung &#xfc;ber die Nodes erfordert sinnvolles Scheduling">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Wenn man das Scheduling nicht auf einmal macht, bleiben gewisse Querverbindungen undeklariert, auch auf den Nodes, die man schon in den Schedulter &#252;bergeben hat. Da jedoch auf jeder &#187;Zeitebene&#171; f&#252;r jeden parallelen Strang jeweils eine Node sitzt, k&#246;nnen maximal die Verkn&#252;pfungen zur unmittelbar vorausgehenden Zeitebene fehlen; sofern man das n&#228;chste Paket f&#252;r's Scheduling behandelt, <i>bevor diese unmittelbar vorhergehende Zeitebene</i>&#160;tats&#228;chlich schon ihre Aktivierung erreicht hat, k&#246;nnen diese Verbindungen noch nachgetragen werden.
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1699743998447" ID="ID_1213659188" MODIFIED="1699744020039" TEXT="Ausf&#xfc;hrung im Job-Funktor">
<node CREATED="1699744023916" ID="ID_608257455" MODIFIED="1699744031292" TEXT="dieser bekommt lediglich den Pointer auf eine Node"/>
<node CREATED="1699744035387" ID="ID_1158914" MODIFIED="1699744043229" TEXT="er ruft auf dieser die Berechnungsfunktion auf"/>
<node CREATED="1699744050096" ID="ID_1428700914" MODIFIED="1699744063130" TEXT="welche wiederum auf den Hash der unmittelbaren Vorg&#xe4;nger zugreift"/>
</node>
<node CREATED="1699744066590" ID="ID_1514578963" MODIFIED="1699744080808" TEXT="Berechnungsergebnis und Reset">
<node CREATED="1699744082676" ID="ID_452347724" MODIFIED="1699744093934" TEXT="der Hash wird direkt in der Node gespeichert"/>
<node CREATED="1699744094850" ID="ID_616611323" MODIFIED="1699744117163" TEXT="sinnvollerweise l&#xf6;scht man diese Hash-Ergebnisse mit einer einfachen Traversierung"/>
<node CREATED="1699744117849" ID="ID_1282471573" MODIFIED="1699744177667" TEXT="andernfalls w&#xfc;rde man u.U. ein noch fehlendes Vorg&#xe4;nger-Ergebnis gar nicht bemerken"/>
</node>
<node CREATED="1699746556608" ID="ID_226221091" MODIFIED="1699746569941" TEXT="Darstellung der Topologie">
<node CREATED="1699746571605" ID="ID_1609174286" MODIFIED="1699746742507" TEXT="Methode-1: Traversierung und Charakterisierung pro (Zeit)Ebene"/>
<node CREATED="1699746746487" ID="ID_253753412" LINK="#ID_1019263938" MODIFIED="1699746759472" TEXT="Methode-2: Graphviz-Ausgabe der Node-Struktur"/>
</node>
</node>
<node CREATED="1699744188230" ID="ID_594014522" MODIFIED="1699744195512" TEXT="Aufbau der Komponente">
<node CREATED="1699744198940" ID="ID_1863041010" MODIFIED="1699748033571" TEXT="der maximale Fan-out/in ist ein Template-Parameter (der Node)">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Begr&#252;ndung: man m&#246;chte mit dem Ding heftigen Druck erzeugen k&#246;nnen. Daher mu&#223; es selbst performant implementiert sein; unkoordinierte Heap-Allokationen f&#252;r Predecessor/Successor-Tabellen k&#246;nnen wir uns da nicht gestatten.
    </p>
  </body>
</html></richcontent>
<node CREATED="1699747767421" ID="ID_1919787348" MODIFIED="1699747858585" TEXT="das impliziert auch eine Beschr&#xe4;nkung der Paralell-Str&#xe4;nge">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      weil per Festlegung die letzte Node alles zusammenf&#252;hren soll, und ich keinen komplizierteren Algorithmus programmieren will
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1699747802728" ID="ID_51577030" MODIFIED="1699747812490" TEXT="Argument: mu&#xdf; man halt entsprechend hochsetzen"/>
</node>
<node CREATED="1699753460661" ID="ID_385105279" MODIFIED="1699753482634" TEXT="die Node-Anzahl wird auch ein Template-Parameter">
<icon BUILTIN="yes"/>
<node CREATED="1699753485288" ID="ID_1130708229" MODIFIED="1699753511088" TEXT="ich m&#xf6;chte unbedingt eine Block-Allokation und einfache Iteration"/>
<node CREATED="1699753511761" ID="ID_344250236" MODIFIED="1699753736154" TEXT="und strebe letzlich nach weitgehend selbsterkl&#xe4;reendem Code"/>
<node CREATED="1699753737406" ID="ID_171467229" MODIFIED="1699753756648" TEXT="leider bleiben daher nicht mehr viel Alternativen">
<node CREATED="1699753758587" ID="ID_493828771" MODIFIED="1699753773589" TEXT="Vector vertr&#xe4;gt keine NonCopyable payload"/>
<node CREATED="1699753774273" ID="ID_1485627449" MODIFIED="1699753802497" TEXT="zu Fu&#xdf; ein Array in unique_ptr ist unn&#xf6;tig komplex"/>
<node CREATED="1699753804121" ID="ID_986288180" MODIFIED="1699753826262" TEXT="lib::ScopedCollection w&#xfc;rde passen, ist aber selber komplex"/>
<node CREATED="1699753828682" ID="ID_948083210" MODIFIED="1699753849171" TEXT="KISS &#x27f9; std::Array in unique_ptr"/>
</node>
</node>
<node CREATED="1699744291112" ID="ID_1829758228" MODIFIED="1699744337180" TEXT="Builder-Syntax &#x2014; aber die Node-Allokation erfolgt sofort (ctor-Parameter)"/>
<node CREATED="1699744342169" ID="ID_1522319392" MODIFIED="1699744414936" TEXT="Traversierung und darauf aufbauende Einzel-Verfahren sind &#xbb;Methoden&#xab;"/>
<node CREATED="1699744435842" ID="ID_134211269" MODIFIED="1699744459669" TEXT="&#x27f9; buildTopology() ist also der klassische Builder-Abschlu&#xdf;"/>
<node CREATED="1699745687140" ID="ID_703752888" MODIFIED="1699745716356" TEXT="es gibt eine Sammlung von Standard-Bausteinen zur Parametrisierung der Steuergr&#xf6;&#xdf;en"/>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1697740857815" ID="ID_1544079509" MODIFIED="1701477281049" TEXT="in separatem Test entwerfen">
<icon BUILTIN="pencil"/>
<node COLOR="#435e98" CREATED="1697741633966" ID="ID_787175245" MODIFIED="1701476481436" TEXT="Nutzen vorher kl&#xe4;ren">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1697741661950" ID="ID_1735458016" MODIFIED="1697741661950" TEXT="Darstellung der Abh&#xe4;ngigkeits-Struktur">
<node CREATED="1699813901659" ID="ID_1631918713" MODIFIED="1699813909295" TEXT="als verkettete Node-Records"/>
<node CREATED="1699813912394" ID="ID_708064837" MODIFIED="1699813927012" TEXT="feste Limitierung der Breite des DAG"/>
</node>
<node CREATED="1697741689551" ID="ID_1012140830" MODIFIED="1697741694906" TEXT="Art der Daten&#xfc;bergabe">
<node CREATED="1699813788379" ID="ID_746892067" MODIFIED="1699813811048" TEXT="ChainLoad kann das Scheduler-API verwenden"/>
<node CREATED="1699813872512" ID="ID_464773266" MODIFIED="1699813898416" TEXT="ChainLoad bietet einen JobFunctor, der auf einem Node-Pointer arbeitet"/>
<node CREATED="1699813845859" ID="ID_1345582113" MODIFIED="1699813864796" TEXT="der errechnete chained-Hash ist direkt abrufbar (von der End-Node)"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697743909120" ID="ID_483537733" MODIFIED="1697743924734" TEXT="#1346 reproducible computational load">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1697740877587" ID="ID_1275890321" MODIFIED="1699747567145" TEXT="TestChainLoad_test">
<icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1699747322625" ID="ID_1190216980" MODIFIED="1699804627509" TEXT="verify_Node">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1699753108010" ID="ID_1374103098" MODIFIED="1699754432064" TEXT="Default-Konstruktion">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1699753116721" ID="ID_1947111817" MODIFIED="1699803887451" TEXT="Verbindung mit anderen Nodes">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1699753131711" ID="ID_1177424615" MODIFIED="1699803889454" TEXT="Hash-Berechnung">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1699804617226" ID="ID_277685591" MODIFIED="1699804626403" TEXT="Verbindungsgrad">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1699804864545" ID="ID_73838770" MODIFIED="1700183506342" TEXT="verify_Topology">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1699805908357" ID="ID_955671536" MODIFIED="1700183502732" TEXT="einfachster Verlinkungs-Durchlauf">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1699827742164" ID="ID_1812083819" MODIFIED="1700183503902" TEXT="pr&#xfc;fen: hat lineare Kette erzeugt">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1699827751499" ID="ID_1702632260" MODIFIED="1700183505282" TEXT="pr&#xfc;fen: Hash ist reproduzierbar">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1700100288256" ID="ID_844700164" MODIFIED="1701476300102" TEXT="control Topology">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1700100290904" ID="ID_1991398605" MODIFIED="1700156439824" TEXT="brauche Hilfsmittel zur Visualisierung">
<arrowlink COLOR="#62819c" DESTINATION="ID_1464042796" ENDARROW="Default" ENDINCLINATION="21;-256;" ID="Arrow_ID_596151514" STARTARROW="None" STARTINCLINATION="787;55;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1700100356900" FOLDED="true" HGAP="45" ID="ID_216360062" LINK="#ID_764096140" MODIFIED="1700105412090" TEXT="erst mal einfaches Referenz-Skript (re)-generieren" VSHIFT="-5">
<icon BUILTIN="button_ok"/>
<node CREATED="1700100394556" ID="ID_587545230" MODIFIED="1700100416123" TEXT="die entsprechende Node-Struktur fest verdrahtet aufbauen"/>
<node CREATED="1700100416777" ID="ID_1280977723" MODIFIED="1700100426249" TEXT="Code-Schema zur Generierung daran entwickeln"/>
</node>
<node COLOR="#338800" CREATED="1700100453954" HGAP="138" ID="ID_645441127" MODIFIED="1700105287506" TEXT="auf komplexere Topologien ausweiten" VSHIFT="-12">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1700179604933" ID="ID_860192719" MODIFIED="1700179617983" TEXT="erstes Beispiel mit Expansion funktioniert">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1700183517106" FOLDED="true" ID="ID_687886895" MODIFIED="1701477273053" TEXT="elaboriertere Beispiele ausknobeln">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1700239868140" ID="ID_843406714" MODIFIED="1701226048584" TEXT="Expansion">
<icon BUILTIN="button_ok"/>
<node CREATED="1700240249941" ID="ID_716590019" MODIFIED="1700240269429" TEXT="Expansion, nicht zu stark">
<node COLOR="#435e98" CREATED="1700240273354" ID="ID_772066600" MODIFIED="1701226038861" TEXT="50% Wahrscheinlichkeit / aber nur 0..4">
<node CREATED="1700240311405" FOLDED="true" ID="ID_1906030756" MODIFIED="1700240701037" TEXT="l&#xe4;&#xdf;t sich darstellen als Cap{8, h%16, 39};">
<icon BUILTIN="idea"/>
<node CREATED="1700240363108" ID="ID_165867731" MODIFIED="1700240380072" TEXT="Zufallszahlen 0...15"/>
<node CREATED="1700240381468" ID="ID_818278803" MODIFIED="1700240503984" TEXT="davon Teilintervall [8,15]  &#x27f6; expand"/>
<node CREATED="1700240533128" ID="ID_1628643806" MODIFIED="1700240574142" TEXT="aber ein 4-faches des Wertebereichs vorgeben">
<node CREATED="1700240584329" ID="ID_486684114" MODIFIED="1700240595281" TEXT="ist: 0...8"/>
<node CREATED="1700240595944" ID="ID_802836763" MODIFIED="1700240614409" TEXT="vorgabe: 0..32"/>
<node CREATED="1700240615402" ID="ID_1115126703" MODIFIED="1700240631670" TEXT="Plus Basis-Offset = +8 -1"/>
<node CREATED="1700240637390" ID="ID_1714076433" MODIFIED="1700240660547" TEXT="(-1 wegen 0-basierten Zufallszahlen)"/>
</node>
</node>
<node CREATED="1700240339333" ID="ID_1461707170" MODIFIED="1700243316977" TEXT="oh... kann man das einfacher schreiben">
<arrowlink COLOR="#fecdd2" DESTINATION="ID_697379621" ENDARROW="Default" ENDINCLINATION="32;-123;" ID="Arrow_ID_854594463" STARTARROW="None" STARTINCLINATION="-170;12;"/>
<icon BUILTIN="smily_bad"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1700241115502" FOLDED="true" ID="ID_1642968477" MODIFIED="1700243178651" TEXT="interessantes Verhalten bei Obergrenze=63">
<arrowlink DESTINATION="ID_1912448585" ENDARROW="Default" ENDINCLINATION="-223;14;" ID="Arrow_ID_485585873" STARTARROW="None" STARTINCLINATION="212;0;"/>
<icon BUILTIN="broken-line"/>
<node CREATED="1700241156981" ID="ID_649550616" MODIFIED="1700241176360" TEXT="also Cap{8, h%16, 63}"/>
<node CREATED="1700241132128" ID="ID_749124833" MODIFIED="1700241215884" TEXT="in der Tat war das erst mal eine Fehlparametrisierung">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      hatte den Basis-Offset von 8 &#252;bersehen, der ja sofort abgezogen wird, bevor das Fenster &#252;berhaupt zum Tragen kommt
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1700241217185" ID="ID_739765930" MODIFIED="1700243154012" TEXT="Beobachtung: es wird auf Node(29) reduziert">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1700241237636" ID="ID_1113751237" MODIFIED="1700241246381" TEXT="nicht wie erwartet auf Node(30)"/>
<node CREATED="1700241356066" ID="ID_1549191779" MODIFIED="1700241595990" TEXT="N22 .. N25 bekommeno offensichtlich eine Expaosion=1"/>
<node CREATED="1700241379367" ID="ID_298199558" MODIFIED="1700241437040">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      aber nur N21,N23 und N24 k&#246;nnen die realisieren,
    </p>
    <p>
      denn dann haben wir alle bis zur vorletzen N30 verbraucht
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1700241602165" ID="ID_1145606220" MODIFIED="1700241618075" TEXT="N25 wird aber an N29 angeh&#xe4;ngt">
<node CREATED="1700241654843" ID="ID_693027416" MODIFIED="1700241661198" TEXT="es ist richtig, da&#xdf; sie angeh&#xe4;ngt wird"/>
<node CREATED="1700241661978" ID="ID_911505603" MODIFIED="1700241722652" TEXT="N25 h&#xe4;tte ja sonst keinen Nachfolger">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      das war der Fix von gestern
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#548b9d" DESTINATION="ID_859590304" ENDARROW="Default" ENDINCLINATION="197;-6;" ID="Arrow_ID_1438074607" STARTARROW="None" STARTINCLINATION="220;16;"/>
</node>
<node CREATED="1700241728601" ID="ID_943542993" MODIFIED="1700241756757" TEXT="aber ich h&#xe4;tte N30 erwartet...">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      die letze vorhandene Node
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1700241917008" ID="ID_777738126" MODIFIED="1700241926418" TEXT="Code lesen...">
<icon BUILTIN="smiley-oh"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1700241927638" ID="ID_1912448585" MODIFIED="1700243178651" TEXT="Ha! Die Nodes sind schon bei N24 ersch&#xf6;pft">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1912448585" ENDARROW="Default" ENDINCLINATION="-223;14;" ID="Arrow_ID_485585873" SOURCE="ID_1642968477" STARTARROW="None" STARTINCLINATION="212;0;"/>
<icon BUILTIN="idea"/>
<node CREATED="1700241953019" ID="ID_1204511711" MODIFIED="1700241965197" TEXT="N24 expandiert &#x27fc; N30"/>
<node CREATED="1700241965857" ID="ID_1485221676" MODIFIED="1700241981104" TEXT="N24 cann kein carry-on mehr hinzuf&#xfc;gen"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1700242198194" ID="ID_1865768170" MODIFIED="1700242399754" TEXT="nebenbei bemerkt: --toReduce macht einen wrap">
<linktarget COLOR="#ff4a66" DESTINATION="ID_1865768170" ENDARROW="Default" ENDINCLINATION="-78;2;" ID="Arrow_ID_1951470053" SOURCE="ID_1712974346" STARTARROW="None" STARTINCLINATION="-29;-29;"/>
<icon BUILTIN="clanbomber"/>
</node>
<node CREATED="1700242235623" ID="ID_418692717" MODIFIED="1700242261550" TEXT="da es aber noch ein carry-on von N23 gibt"/>
<node CREATED="1700242262422" ID="ID_950920994" MODIFIED="1700242273439" TEXT="...wird dieses weiterverwendet. Un das ist N29"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1700242288838" ID="ID_1985548183" MODIFIED="1700242483862">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      ist das <i>&#8222;gut so&#8220;</i>&#160;?
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="help"/>
<node CREATED="1700242320450" ID="ID_1071754027" MODIFIED="1700242326757" TEXT="es funktioniert fehlerfrei"/>
<node CREATED="1700242327913" ID="ID_1254256960" MODIFIED="1700242346442" TEXT="&#x201e;gut&#x201c; ist es nicht (nach meinen Wertma&#xdf;st&#xe4;ben)">
<node CREATED="1700242348094" ID="ID_1712974346" MODIFIED="1700242406322" TEXT="wir haben einen verdeckten wrap-around-Bug">
<arrowlink COLOR="#ff4a66" DESTINATION="ID_1865768170" ENDARROW="Default" ENDINCLINATION="-78;2;" ID="Arrow_ID_1951470053" STARTARROW="None" STARTINCLINATION="-29;-29;"/>
</node>
<node CREATED="1700242422820" ID="ID_328997845" MODIFIED="1700242440268">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      der resultierende Baum ist <i>grundlos</i>&#160;unregelm&#228;&#223;ig
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1700242452536" ID="ID_560899990" MODIFIED="1700242502367">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      und (bei meinem aktuellen Kentnissstand): <b>ich kann es leicht fixen</b>...
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1700242467911" ID="ID_1285960784" MODIFIED="1700242477086" TEXT="ohne den Code wesentlich aufzubl&#xe4;hen"/>
</node>
<node COLOR="#338800" CREATED="1700242683023" ID="ID_1652278959" MODIFIED="1700242851456" TEXT="gefixt &#x2014; und das Ergebnis ist &#xbb;sch&#xf6;n&#xab;">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Der Baum sieht nun sinnig aus &#8212; f&#252;r das Auge des Mathematikers (nota bene: nicht f&#252;r mein <b>subjektives</b>&#160;Auge). Und der Code ist tats&#228;chlich klarer geworden, weil in der Behandlung nicht mehr zwei getrennte Belange &#252;berlagert sind.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node CREATED="1700243208285" ID="ID_697379621" MODIFIED="1700243347094" TEXT="merke schon: brauche besseres Tooling f&#xfc;r die Regel-Definitionen...">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ich hab jetzt dreimal &#8222;draufgedroschen&#8220;, bis ich das Wahrscheinlichkeitsverhalten hatte, das ich wollte (wenngleich ich auch dabei einen Bug entdeckt habe...)
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#fef7b5" DESTINATION="ID_6655140" ENDARROW="Default" ENDINCLINATION="159;-197;" ID="Arrow_ID_1782877370" STARTARROW="None" STARTINCLINATION="-63;175;"/>
<linktarget COLOR="#fecdd2" DESTINATION="ID_697379621" ENDARROW="Default" ENDINCLINATION="32;-123;" ID="Arrow_ID_854594463" SOURCE="ID_1461707170" STARTARROW="None" STARTINCLINATION="-170;12;"/>
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1701225885518" ID="ID_974233498" MODIFIED="1701226024615" TEXT="weitere Beispiele...">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1701225904095" ID="ID_1812719593" MODIFIED="1701226036179" TEXT="40% bis +2 (3-fach Verzweigung)"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1701225941615" ID="ID_376426979" MODIFIED="1701226044685" TEXT="die 40% erreicht man praktisch nie..">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1701225954225" ID="ID_438792059" MODIFIED="1701225961836" TEXT="das liegt an der Breiten-Beschr&#xe4;nkung"/>
<node CREATED="1701225962543" ID="ID_870731215" MODIFIED="1701225971810" TEXT="es werden zus&#xe4;tzlich Join-Nodes eingef&#xfc;gt"/>
<node CREATED="1701225972542" ID="ID_453430931" MODIFIED="1701225982072" TEXT="fork + join zusammen ~ 35%"/>
</node>
<node COLOR="#435e98" CREATED="1701225985258" ID="ID_118416384" MODIFIED="1701226043077" TEXT="Variante mit shuffle">
<node CREATED="1701225992295" ID="ID_1892518513" MODIFIED="1701225999508" TEXT="man sieht sch&#xf6;n den Unterschied"/>
<node CREATED="1701226000108" ID="ID_158441930" MODIFIED="1701226009732" TEXT="Statistik-Zahlen sind aber &#xe4;hnlich"/>
</node>
</node>
<node COLOR="#338800" CREATED="1701226012201" ID="ID_127449812" MODIFIED="1701226023200" TEXT="auch mal l&#xe4;nger laufen lassen (256 Nodes)">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1700239873583" ID="ID_108514069" MODIFIED="1701313948713" TEXT="Reduction">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1701288030605" ID="ID_1831978324" MODIFIED="1701313917966" TEXT="Reduction braucht zur Wirksamkeit bereits bestehende Expansion">
<icon BUILTIN="button_ok"/>
<node CREATED="1701288078679" ID="ID_1660308998" MODIFIED="1701313940440" TEXT="das w&#xe4;re dann wohl im Gegenspiel mit einer Expansion-Rule zu sehen">
<arrowlink COLOR="#4d8b8e" DESTINATION="ID_1407690732" ENDARROW="Default" ENDINCLINATION="310;14;" ID="Arrow_ID_146807214" STARTARROW="None" STARTINCLINATION="39;150;"/>
</node>
<node COLOR="#435e98" CREATED="1701288101212" ID="ID_1431953126" MODIFIED="1701310755741" TEXT="oder man injiziert punktweise eine Verbreiterung">
<icon BUILTIN="idea"/>
<node CREATED="1701288126724" ID="ID_760448320" MODIFIED="1701288137034" TEXT="wie ganz konkret?"/>
<node COLOR="#435e98" CREATED="1701288140416" ID="ID_999842267" MODIFIED="1701309519156">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      das bedingt eine<i>&#160;dynamische Regel</i>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1701288184464" ID="ID_1197288734" MODIFIED="1701304078220" TEXT="konkret einsetzen &#x2014; ist immer noch schwierig">
<arrowlink COLOR="#dc1c4c" DESTINATION="ID_247521707" ENDARROW="Default" ENDINCLINATION="138;-456;" ID="Arrow_ID_1575949835" STARTARROW="None" STARTINCLINATION="299;17;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#338800" CREATED="1701303968882" ID="ID_245626902" MODIFIED="1701304004316">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      mit Abstrichen: <i>jetzt l&#228;ufts...</i>
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#738e9c" DESTINATION="ID_245626902" ENDARROW="Default" ENDINCLINATION="347;32;" ID="Arrow_ID_110894165" SOURCE="ID_1512181041" STARTARROW="None" STARTINCLINATION="-337;15;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1701309520050" ID="ID_333395562" MODIFIED="1701310728681" TEXT="Schreibweise vereinfachen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1701309525786" ID="ID_1501828076" MODIFIED="1701309534297" TEXT="RandomDraw::fixedValue(v)">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1701310672056" ID="ID_1255387462" MODIFIED="1701310702449" TEXT="rule_atStart(val)">
<icon BUILTIN="button_ok"/>
<node COLOR="#3835ce" CREATED="1701310695349" ID="ID_1716536616" MODIFIED="1701310725823" TEXT="isStart(n)? Rule().fixedVal(v) : Rule()">
<font NAME="Monospaced" SIZE="12"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1701313904127" ID="ID_1407690732" MODIFIED="1701313933160" TEXT="demonstriere auch gleich das Zusammenspiel mit Expansion">
<linktarget COLOR="#4d8b8e" DESTINATION="ID_1407690732" ENDARROW="Default" ENDINCLINATION="310;14;" ID="Arrow_ID_146807214" SOURCE="ID_1660308998" STARTARROW="None" STARTINCLINATION="39;150;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1700239880388" ID="ID_897183253" MODIFIED="1701374125900" TEXT="Seed">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1701372769882" ID="ID_79307735" MODIFIED="1701372789994" TEXT="nur Seeds &#x27f9; viele lineare Chains">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1701374113256" ID="ID_1082829770" MODIFIED="1701374124765" TEXT="Seeds mit Reduction kombiniert">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1701226052691" ID="ID_929780401" MODIFIED="1701401958232" TEXT="Prune">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1701401689510" ID="ID_453433047" MODIFIED="1701401733961" TEXT="Pruning allein &#x27f9; Graph zerlegt">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1701401742643" ID="ID_90185161" MODIFIED="1701401751675" TEXT="Prune + Expand &#x27f9; kleine B&#xe4;umchen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1701401765792" ID="ID_796883949" MODIFIED="1701401779784" TEXT="+ shuffle &#x27f9; Graph zerf&#xe4;llt nicht (mehr)">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1701401867273" ID="ID_1917139651" MODIFIED="1701401954627" TEXT="Seed + Prune + Reduce....">
<arrowlink COLOR="#659b9f" DESTINATION="ID_633684852" ENDARROW="Default" ENDINCLINATION="-7;-31;" ID="Arrow_ID_1330203959" STARTARROW="None" STARTINCLINATION="-67;8;"/>
</node>
</node>
<node COLOR="#338800" CREATED="1701226061434" ID="ID_1246960546" MODIFIED="1701314215907" TEXT="Gleichgewicht">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1701314218952" ID="ID_959655971" MODIFIED="1701476261194" TEXT="Expansion &#x27f5;&#x27f6; Reduction"/>
<node COLOR="#435e98" CREATED="1701401672045" ID="ID_277348330" MODIFIED="1701476261193" TEXT="Seed &#x27f5;&#x27f6; Reduction + Pruning"/>
</node>
<node COLOR="#338800" CREATED="1701226065633" ID="ID_633684852" MODIFIED="1701476276665" TEXT="Teilgraphen">
<linktarget COLOR="#659b9f" DESTINATION="ID_633684852" ENDARROW="Default" ENDINCLINATION="-7;-31;" ID="Arrow_ID_1330203959" SOURCE="ID_1917139651" STARTARROW="None" STARTINCLINATION="-67;8;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1701401801875" ID="ID_613538695" MODIFIED="1701401819064" TEXT="Seed + Prune &#x27f9; interleaved graphs">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1701401829056" ID="ID_623081988" MODIFIED="1701401856489" TEXT="Seed + Prune + Reduce &#x27f9; self similar structures">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1701401968501" ID="ID_1106827463" MODIFIED="1701476340964" TEXT="Suche nach realistischen Processing-Pattern">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1701402009239" ID="ID_1542545632" MODIFIED="1701402022723" TEXT="Complex-interleaved">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1701402015035" ID="ID_427886072" MODIFIED="1701402022724" TEXT="semi-complex stable state">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1701402024221" ID="ID_656477574" MODIFIED="1701476270958" TEXT="simple-interleaved">
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1701402036180" ID="ID_1920671782" MODIFIED="1701455893212" TEXT="will mir nicht recht gelingen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Es <i>ist schwierig </i>&#8212; und ich wei&#223; warum: es ist keine direkte <i>Arbeit &#160;am Berechnungs-Strom</i>&#160;m&#246;glich; das w&#228;re das mir vorschwebende Ideal (siehe Projekt Replantor). Stattdessen kann ich nur Wahrscheinlichkeiten nach Plausibilit&#228;t w&#228;hlen und dann per minimaler Variation nach Zufallstreffern suchen. Und sofern ein Solcher gefunden ist, gibt es kaum M&#246;glichkeiten, ihn noch in einer gewissen Richtung auszugestalten, denn das Verhalten <i>biegt nicht, es bricht.</i>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#435e98" CREATED="1701455569121" ID="ID_1067486798" MODIFIED="1701455888971" TEXT="try harder!">
<icon BUILTIN="yes"/>
<node CREATED="1701455769059" ID="ID_873975109" MODIFIED="1701455781525" TEXT="immer wieder erneut ein plausibles Setup verwenden"/>
<node CREATED="1701455782657" ID="ID_492367973" MODIFIED="1701455790980" TEXT="nicht zu lange an einem Ansatz experimentieren"/>
<node CREATED="1701455803415" ID="ID_1152619098" MODIFIED="1701455811353" TEXT="systematisch die Seeds auf Einflu&#xdf; absuchen"/>
<node CREATED="1701455812181" ID="ID_340539521" MODIFIED="1701455827415" TEXT="ein &#xfc;bersteuertes Setup ransomisieren"/>
</node>
<node COLOR="#435e98" CREATED="1701455836826" ID="ID_1795668390" MODIFIED="1701476335445">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      das hat letztlich einige <b>brauchbare Muster</b>&#160;hervorgebracht
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#5563ae" DESTINATION="ID_1708959596" ENDARROW="Default" ENDINCLINATION="228;-102;" ID="Arrow_ID_832800942" STARTARROW="None" STARTINCLINATION="-556;25;"/>
<icon BUILTIN="back"/>
</node>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1701476295020" ID="ID_911358507" MODIFIED="1701476298922" TEXT="showcase_StablePattern">
<icon BUILTIN="button_ok"/>
<node CREATED="1701476301444" ID="ID_1708959596" MODIFIED="1701476350118" TEXT="ein &#xbb;Muster-Katalog&#xab;">
<linktarget COLOR="#5563ae" DESTINATION="ID_1708959596" ENDARROW="Default" ENDINCLINATION="228;-102;" ID="Arrow_ID_832800942" SOURCE="ID_1795668390" STARTARROW="None" STARTINCLINATION="-556;25;"/>
<icon BUILTIN="list"/>
</node>
<node CREATED="1701476355765" ID="ID_345249818" MODIFIED="1701476368794" TEXT="alle hier gezeigten Muster sind relevant f&#xfc;r Scheduler-Tests">
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#338800" CREATED="1701374229504" ID="ID_1338953492" MODIFIED="1701374413822" TEXT="reseed_recalculate">
<linktarget COLOR="#51c3bc" DESTINATION="ID_1338953492" ENDARROW="Default" ENDINCLINATION="-572;68;" ID="Arrow_ID_1159113647" SOURCE="ID_193483520" STARTARROW="None" STARTINCLINATION="-272;-345;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1701374263065" ID="ID_1404643305" MODIFIED="1701374312422" TEXT="sollte hier (wenigstens einmal) direkt in den Nodes-State hineinschauen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1701374281831" ID="ID_904900064" MODIFIED="1701374300361" TEXT="vereinfachen durch expliziten Bezug auf die repetitive Gruppen-Struktur">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1701374314266" ID="ID_118927083" MODIFIED="1701374358124" TEXT="pr&#xfc;fen: ein neuer Seed wird auch auf innere Seed-Nodes &#xfc;bertragen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1701374359524" ID="ID_173491994" MODIFIED="1701374378241" TEXT="pr&#xfc;fen: es wird tats&#xe4;chlich neu berechnet (und das Ergebnis ist identisch)">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1701661921354" ID="ID_1422491771" MODIFIED="1701662010544" TEXT="verify_scheduling_setup">
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1701661961030" ID="ID_1398320014" MODIFIED="1701661985334" TEXT="Zweck: die Bauelemente verifzieren (nicht das Scheduling)">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1701661987502" ID="ID_1253231042" MODIFIED="1701662008665" TEXT="einige Nodes direkt definieren und aufrufen; hash pr&#xfc;fen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1701661924827" ID="ID_483928960" MODIFIED="1701662007131" TEXT="Aufruf der gleichen Nodes durch den RandomChainCalcFunctor">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1701017861080" ID="ID_797249846" MODIFIED="1701017874112" TEXT="nur begrenzte Verifikation">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node CREATED="1701017876854" ID="ID_1348039679" MODIFIED="1701018011736" TEXT="man k&#xf6;nnte sehr viel Zeit mit einer strikten Verifikation verbringen">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1701017891876" ID="ID_849462036" MODIFIED="1701017942137" TEXT="aber es geht nur darum, da&#xdf; das Scheduler-Test-Tool verl&#xe4;sslich nutzbar ist"/>
<node CREATED="1701017948018" ID="ID_1354899472" MODIFIED="1701017976555" TEXT="es gen&#xfc;gt, wenn ich seblber genug Vertrauen gewinne"/>
<node CREATED="1701017994288" ID="ID_1312682056" MODIFIED="1701018004852" TEXT="und da&#xdf; ich sp&#xe4;ter die Mittel habe, Fehler zu finden"/>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1699746799143" ID="ID_1824939661" MODIFIED="1699746805576" TEXT="Implementierung">
<icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1699746806718" ID="ID_1563586426" MODIFIED="1701476504781" TEXT="Grundstrukturen anlegen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1699746880572" ID="ID_1016750692" MODIFIED="1701225759355" TEXT="Rahmen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1699805761305" ID="ID_185771075" MODIFIED="1699805795004" TEXT="move-only  wegen builder syntax">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1699805783017" ID="ID_1511899969" MODIFIED="1699805795875" TEXT="alloziert sofort einen Block mit allen Nodes">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1699746814207" ID="ID_1830964354" MODIFIED="1700183583735" TEXT="Node">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1700183552429" ID="ID_1163563775" MODIFIED="1700183582825" TEXT="predecessor / successor tables">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1700183574687" ID="ID_860112465" MODIFIED="1700183581827" TEXT="Storage structure">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1699746817756" ID="ID_490992503" MODIFIED="1701476502045" TEXT="Generator">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1699805813117" ID="ID_593874916" MODIFIED="1701225762502" TEXT="buildTopology: Grundstruktur">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1701013424438" ID="ID_111752985" MODIFIED="1701013455120" TEXT="&#xe4;u&#xdf;ere Schleife &#xfc;ber alle Nodes">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1701013433964" ID="ID_655963117" MODIFIED="1701013453940" TEXT="innere Schleife &#xfc;ber alle Vorg&#xe4;nger">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1701013445667" ID="ID_478612436" MODIFIED="1701013452515" TEXT="RandomDraw-Parameter eingef&#xfc;hrt">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1701013458796" ID="ID_382069196" MODIFIED="1701122403206" TEXT="Umbau Erzeugung Start-Node">
<arrowlink COLOR="#606b75" DESTINATION="ID_1577021137" ENDARROW="Default" ENDINCLINATION="294;-251;" ID="Arrow_ID_342682284" STARTARROW="None" STARTINCLINATION="476;43;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1700163498328" FOLDED="true" ID="ID_14989689" MODIFIED="1701476873714" TEXT="CtrlRules + Infrastruktur">
<icon BUILTIN="button_ok"/>
<node COLOR="#5b280f" CREATED="1700163679808" FOLDED="true" ID="ID_310818837" MODIFIED="1700502158099" TEXT="Hilfsmittel: Cap(lower, value, upper)">
<linktarget COLOR="#fdedce" DESTINATION="ID_310818837" ENDARROW="Default" ENDINCLINATION="174;13;" ID="Arrow_ID_184825307" SOURCE="ID_1054737506" STARTARROW="None" STARTINCLINATION="247;-214;"/>
<icon BUILTIN="button_ok"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1700163740200" ID="ID_499899287" MODIFIED="1700163769112" TEXT="greift ein beliebiges Intervall heraus"/>
<node CREATED="1700163771644" ID="ID_1990055220" MODIFIED="1700163816450" TEXT="transformiert per double-Arrithmetik"/>
<node CREATED="1700163817537" ID="ID_1890257970" MODIFIED="1700163833752" TEXT="kappt dann auf [0 ... maxFan]"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1700502061217" ID="ID_1574405399" MODIFIED="1700502142753" TEXT="ist immer noch zu kniffelig in der Anwendung">
<arrowlink COLOR="#972c20" DESTINATION="ID_1137289762" ENDARROW="Default" ENDINCLINATION="233;-247;" ID="Arrow_ID_497697036" STARTARROW="None" STARTINCLINATION="1042;63;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1700240155314" ID="ID_6655140" MODIFIED="1700969828908" TEXT="Hilfsmittel: Regel-Builder">
<linktarget COLOR="#fef7b5" DESTINATION="ID_6655140" ENDARROW="Default" ENDINCLINATION="159;-197;" ID="Arrow_ID_1782877370" SOURCE="ID_697379621" STARTARROW="None" STARTINCLINATION="-63;175;"/>
<icon BUILTIN="yes"/>
<node COLOR="#338800" CREATED="1700264860430" ID="ID_911248195" MODIFIED="1700713935881" TEXT="nochmal umst&#xfc;lpen....">
<icon BUILTIN="button_ok"/>
<node CREATED="1700264870441" ID="ID_1812170860" MODIFIED="1700491182299">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <u>Ausgangspunkt</u>: Cap &#10230; Ergebnis-Typ <font color="#410ec3" face="Monospaced"><b>Draw</b></font>
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...dabei ist Cap die bereits geschaffene Hilfs-Komponente, die einen Zahlenwert mit einer Klammer von Iber/Untergrenze speichert und ihn in in diesen Rahmen hinein konditionieren kann. Das war ein relativ leichtgewichtiger erster Schritt, reicht aber nicht aus, um die techniche Komplexit&#228;t aus dem Nutzkontext zu entfernen
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#6e6080" DESTINATION="ID_1331338727" ENDARROW="Default" ENDINCLINATION="-87;-56;" ID="Arrow_ID_572043531" STARTARROW="None" STARTINCLINATION="99;6;"/>
<linktarget COLOR="#564965" DESTINATION="ID_1812170860" ENDARROW="Default" ENDINCLINATION="-607;44;" ID="Arrow_ID_107668670" SOURCE="ID_1249462296" STARTARROW="None" STARTINCLINATION="-77;0;"/>
</node>
<node COLOR="#435e98" CREATED="1700264918159" ID="ID_334644013" MODIFIED="1700491041706" TEXT="diesen aber zugleich als Regel-Builder nutzbar machen">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#435e98" CREATED="1700264938245" ID="ID_2732200" MODIFIED="1700491041705" TEXT="und zwar durch eine DSL die darauf als Manipulator-Funktion aufsetzt">
<icon BUILTIN="yes"/>
</node>
<node BACKGROUND_COLOR="#dfdd97" COLOR="#435e98" CREATED="1700264961367" FOLDED="true" ID="ID_788328130" MODIFIED="1700491028449" TEXT="Einstieg: ein Funktor-Adaptor (wie neulich f&#xfc;r microbenchmark)">
<font NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="idea"/>
<node CREATED="1700265008950" ID="ID_751701905" MODIFIED="1700265018898" TEXT="der Funktor liefert am Ende ein Draw"/>
<node COLOR="#5b280f" CREATED="1700265019715" ID="ID_624547616" MODIFIED="1700345650023" TEXT="aber auf Wunsch kann man auch ein Draw in die Hand bekommen">
<linktarget COLOR="#ad253c" DESTINATION="ID_624547616" ENDARROW="Default" ENDINCLINATION="679;28;" ID="Arrow_ID_124457360" SOURCE="ID_790826770" STARTARROW="None" STARTINCLINATION="-215;-7;"/>
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1700331717687" ID="ID_503595857" MODIFIED="1700331791642" TEXT="&#x27f9; Draw mu&#xdf; eine Doppel-Natur haben: es ist sowohl das Cap, alsauch ein Funktor">
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#338800" CREATED="1700331799351" FOLDED="true" ID="ID_619819862" MODIFIED="1700490710418" TEXT="Baumuster untersuchen (try.cpp)...">
<icon BUILTIN="button_ok"/>
<node CREATED="1700342161236" FOLDED="true" ID="ID_1281138479" MODIFIED="1700490730479" TEXT="1.Enwurf: Funktions-Komposition">
<node CREATED="1700342178718" ID="ID_1331338727" MODIFIED="1700342198924" TEXT="die Cap-Funktionalit&#xe4;t als eigener Funktor">
<linktarget COLOR="#6e6080" DESTINATION="ID_1331338727" ENDARROW="Default" ENDINCLINATION="-87;-56;" ID="Arrow_ID_572043531" SOURCE="ID_1812170860" STARTARROW="None" STARTINCLINATION="99;6;"/>
</node>
<node CREATED="1700342199523" ID="ID_1963684995" MODIFIED="1700342217408" TEXT="vorgeschaltet dann die Erzeugung des Zufallswertes"/>
<node CREATED="1700342243501" ID="ID_1390319632" MODIFIED="1700342253999" TEXT="damit w&#xe4;ren wir aber einerm reinen Funktor-Builder"/>
<node CREATED="1700342254915" ID="ID_834526555" MODIFIED="1700342262877" TEXT="w&#xfc;rde gehen, war aber nicht das was mir vorschwebte">
<arrowlink COLOR="#77759c" DESTINATION="ID_1467611806" ENDARROW="Default" ENDINCLINATION="-447;-93;" ID="Arrow_ID_584557934" STARTARROW="None" STARTINCLINATION="-195;11;"/>
</node>
</node>
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1700342264818" ID="ID_330199412" MODIFIED="1700490702462" TEXT="was will ich denn &#xfc;berhaupt?">
<font NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="help"/>
<node CREATED="1700342274840" ID="ID_1272510180" MODIFIED="1700342289356" TEXT="wahrscheinlich alles und nix Bestimmtes...">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="smiley-angry"/>
</node>
<node CREATED="1700342294128" ID="ID_537212981" MODIFIED="1700342303208" TEXT="F&#xe4;lle">
<node CREATED="1700342304484" ID="ID_1886340875" MODIFIED="1700342308511" TEXT="Fix und Null"/>
<node CREATED="1700342309883" ID="ID_1696099413" MODIFIED="1700342328894" TEXT="parametrisierbarer Baukasten">
<node CREATED="1700342331280" ID="ID_1439525551" MODIFIED="1700342337658" TEXT="x% Wahrscheinlichkeit"/>
<node CREATED="1700342338270" ID="ID_1408546997" MODIFIED="1700342345570" TEXT="Werbereich von...bis"/>
<node CREATED="1700342346989" ID="ID_630827273" MODIFIED="1700342351304" TEXT="und Variationen"/>
</node>
<node CREATED="1700342356676" ID="ID_176542907" MODIFIED="1700342397416" TEXT="Eingangswerte">
<node CREATED="1700342399687" ID="ID_1347906808" MODIFIED="1700342422577" TEXT="einfach nur den Hash &#x27fc; Zufallszahl"/>
<node CREATED="1700342423591" ID="ID_844665669" MODIFIED="1700342438660" TEXT="noch einfacher: Node&amp; und anwenden"/>
<node CREATED="1700342447000" ID="ID_1636759044" MODIFIED="1700342462080" TEXT="das Verhalten &#xfc;ber Neben-Parameter steuern"/>
<node CREATED="1700342492226" ID="ID_208563751" MODIFIED="1700342502708" TEXT="daf&#xfc;r einen 2.Parameter (H&#xf6;he)"/>
<node CREATED="1700342503270" ID="ID_548215053" MODIFIED="1700342537704" TEXT="Hintert&#xfc;r: Node (Connectivity nutzen)"/>
</node>
</node>
<node CREATED="1700342637639" ID="ID_260749595" MODIFIED="1700342644798" TEXT="zwei verschiedene Richtungen">
<node CREATED="1700342652133" ID="ID_78523329" MODIFIED="1700342662640" TEXT="nur einen Draw parametrisieren"/>
<node CREATED="1700342681993" ID="ID_668990384" MODIFIED="1700342693987" TEXT="direkt in die Wertermittlung eingreifen"/>
</node>
<node CREATED="1700344550213" ID="ID_1861811705" MODIFIED="1700344559095" TEXT="im Grunde widersprechen sich beide Richtungen">
<node CREATED="1700344560444" ID="ID_1461905222" MODIFIED="1700344875948">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      will sagen: es ist nicht hilftreich,
    </p>
    <p>
      das&#160;kombinieren zu wollen...
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ....aber irgendwie scheint mir genau <i>das </i>vorzuschweben...
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1700344878022" ID="ID_522918254" MODIFIED="1700344952685" TEXT="leider hat Beides seine Berechtigung">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...zumindest der M&#246;glichkeit nach
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1700344955499" ID="ID_39017715" MODIFIED="1700345043525" TEXT="Gefahr: den Rahmen hier sprengen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      hab das Gef&#252;hl da&#223; ich schon wieder mal viel zu weit ausgreife, f&#252;r ein St&#252;ck Infrastruktur, das einem einzigen Zweck dient (noch dazu lediglich f&#252;r Tests) und dann wahrscheinlich nur noch rumliegt und zuf&#228;llig vorbeikommende Leser verwirrt
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1700345060957" ID="ID_1137289762" MODIFIED="1700346709861" TEXT="die DSL soll die Verwirrung f&#xfc;r die Leser reduzieren">
<arrowlink COLOR="#7b3855" DESTINATION="ID_80420737" ENDARROW="Default" ENDINCLINATION="5;-52;" ID="Arrow_ID_505910155" STARTARROW="None" STARTINCLINATION="-132;7;"/>
<linktarget COLOR="#972c20" DESTINATION="ID_1137289762" ENDARROW="Default" ENDINCLINATION="233;-247;" ID="Arrow_ID_497697036" SOURCE="ID_1574405399" STARTARROW="None" STARTINCLINATION="1042;63;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node CREATED="1700345164765" ID="ID_21014183" MODIFIED="1700345183315" TEXT="das w&#xfc;rde f&#xfc;r ausdrucksstarke Builder-Terme sprechen"/>
<node CREATED="1700345191716" ID="ID_604174615" MODIFIED="1700345282458" TEXT="selbst die direkte Verwendung von Cap ist vermutlich bereits verwirrend"/>
<node CREATED="1700345502707" ID="ID_1858490263" MODIFIED="1700345574935" TEXT="...und auch mit den Node-Internals sollte ich vorsichtig sein">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      <i>mir </i>sind die <i>im Moment </i>ganz klar, dagegen beim Leser kann man nur so etwas wie eine generelle Idee von einem DAG voraussetzen
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#5b280f" CREATED="1700345585658" ID="ID_790826770" MODIFIED="1700345657721" TEXT="&#x27f9; die Idee, den Builder per Parameter reinzugeben, gebe ich hiermit auf">
<arrowlink COLOR="#ad253c" DESTINATION="ID_624547616" ENDARROW="Default" ENDINCLINATION="679;28;" ID="Arrow_ID_124457360" STARTARROW="None" STARTINCLINATION="-215;-7;"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1700345704906" ID="ID_1841557041" MODIFIED="1700345722687">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      aber <i>Kaskadieren </i>der Auswertung bleibt eine M&#246;glichkeit
    </p>
  </body>
</html></richcontent>
<node CREATED="1700345732596" ID="ID_671293266" MODIFIED="1700345753720" TEXT="auch alle F&#xe4;lle mit unvollst&#xe4;ndigen Ketten und Adaption fallen darunter"/>
<node CREATED="1700345861423" ID="ID_1043929335" MODIFIED="1700345882162" TEXT="Anpassen der Parametrisierung auf Einzelfall-Basis ebenfalls"/>
</node>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1700346594064" ID="ID_80420737" MODIFIED="1700346703430">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      konsequenterweise sollte die ganze Freiheit
    </p>
    <p>
      und Offenheit f&#252;r beliebige Rechenregeln
    </p>
    <p>
      nun komplett aufgegeben werden
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#7b3855" DESTINATION="ID_80420737" ENDARROW="Default" ENDINCLINATION="5;-52;" ID="Arrow_ID_505910155" SOURCE="ID_1137289762" STARTARROW="None" STARTINCLINATION="-132;7;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node CREATED="1700346721182" ID="ID_960938727" MODIFIED="1700346854239" TEXT="anfangs schwebte mir eine Experimentier-L&#xf6;sung vor"/>
<node CREATED="1700346758569" ID="ID_1639593656" MODIFIED="1700346771531" TEXT="aber im ersten Gebrauch merke ich, da&#xdf; diese zu m&#xfc;hsam ist"/>
<node CREATED="1700346773757" ID="ID_920832027" MODIFIED="1700346820305">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      und gem&#228;&#223; <b>YAGNI</b>&#160;werde ich nur <font color="#c42b2b">10% der M&#246;glichkeiten</font>&#160; wirklich brauchen
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node CREATED="1700345892467" FOLDED="true" ID="ID_920427348" MODIFIED="1700490969134" TEXT="2.Entwurf: Funktor-Builder + auto-Adaption">
<node CREATED="1700345916752" ID="ID_267595647" MODIFIED="1700345920980" TEXT="Grunds&#xe4;tzlich">
<node CREATED="1700345943261" ID="ID_388408150" MODIFIED="1700345956998" TEXT="Draw und Spec (Bereichseinteilung) werden verschmolzen"/>
<node CREATED="1700345922921" ID="ID_1268721778" MODIFIED="1700345942500" TEXT="Ergebnis ist immer ein Draw (und damit eine Spec)"/>
<node CREATED="1700345962170" ID="ID_403316998" MODIFIED="1700345997738" TEXT="die Anpassung auf den aktuellen Wertebereich passiert erst im Aufrufkontext">
<node CREATED="1700346005353" ID="ID_189359340" MODIFIED="1700346017255" TEXT="und zwar &#xfc;ber eine impliziter Konversionsfunktion"/>
<node CREATED="1700346017781" ID="ID_993364774" MODIFIED="1700346038252" TEXT="damit kann ich den Typ-Parameter (max) aus Draw heraushalten"/>
<node CREATED="1700346113092" ID="ID_967212835" MODIFIED="1700346145242" TEXT="&#x27f9; sollte damit explizit alles auf double 0..1 umstellen"/>
<node CREATED="1700346196557" ID="ID_692975538" MODIFIED="1700346266485" TEXT="aber einen Builder maxVal(uint) kann man trotzdem bieten">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...der m&#252;&#223;te dann aber absolut gelten, und Teil der Spec werden. Ja warum nicht
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1700346890510" ID="ID_910775175" MODIFIED="1700346908192" TEXT="gespeichert werden (entsprechend Spec) nun aber die intentionalen Parameter"/>
<node CREATED="1700346912731" ID="ID_1211946237" MODIFIED="1700346939323" TEXT="die Zufalls-Erzeugung wird zum komplett fixierten internen Detail"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1700347027726" ID="ID_1401418986" MODIFIED="1700347064092" TEXT="Draw wird zu einer externen Hilfsklasse und unabh&#xe4;ngig von TestChainLog">
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1700346948591" ID="ID_1467611806" MODIFIED="1700346954769" TEXT="Nutz-Varianten">
<linktarget COLOR="#77759c" DESTINATION="ID_1467611806" ENDARROW="Default" ENDINCLINATION="-447;-93;" ID="Arrow_ID_584557934" SOURCE="ID_834526555" STARTARROW="None" STARTINCLINATION="-195;11;"/>
<node CREATED="1700346959359" ID="ID_1645518847" MODIFIED="1700346976614" TEXT="default-Initialisiert &#x2261; deaktiviert"/>
<node CREATED="1700347086640" ID="ID_1826929764" MODIFIED="1700347098373" TEXT="Draw()&#x27f6;Builder">
<node CREATED="1700347103249" ID="ID_296844288" MODIFIED="1700347118842" TEXT="probability(d)"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1700347329202" ID="ID_211528936" MODIFIED="1700347374197" TEXT="drawRange(d,d) &#x27f6; Alternative zu probability(d)">
<icon BUILTIN="hourglass"/>
<node CREATED="1700347376236" ID="ID_557693039" MODIFIED="1700347406591" TEXT="Festlegung wo aus [0..1[ gezogen wird"/>
<node CREATED="1700347408438" ID="ID_813288863" MODIFIED="1700347508095" TEXT="damit kann man mehrere Regeln koordiniert zusammenarbeiten lassen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...da sich alle auf den gleichen Hash beziehen, und daher auch korreliert ziehen werden
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1700347540795" ID="ID_1467236280" MODIFIED="1700347578153" TEXT="shuffle(i) &#x27f6; zus&#xe4;tzliche Randomisierung"/>
<node CREATED="1700347175727" ID="ID_598523987" MODIFIED="1700347227164" TEXT="mayVal(u) &#x27f6; fester H&#xf6;chstwert(incl)"/>
<node CREATED="1700347230896" ID="ID_474385396" MODIFIED="1700347245097" TEXT="maxVal(d) &#x27f6; relative Angabe zum Limited-Range"/>
<node CREATED="1700347601126" ID="ID_182532316" MODIFIED="1700347655506" TEXT="valRange(u,u) &#x27f6; Ergebnis liegt zwischen Grenzen (incl)"/>
</node>
<node CREATED="1700348584016" ID="ID_1964046335" MODIFIED="1700348587715" TEXT="Adaptierung">
<node CREATED="1700348594938" ID="ID_1324160554" MODIFIED="1700348600842" TEXT="Funktion als Argument"/>
<node CREATED="1700348629770" ID="ID_1768016710" MODIFIED="1700348638309" TEXT="Res (Ergebniswert)">
<node CREATED="1700348639648" ID="ID_848159984" MODIFIED="1700348681510" TEXT="Draw : das resultierende Draw wird ausgewertet"/>
<node CREATED="1700348687146" ID="ID_983092134" MODIFIED="1700348726478" TEXT="size_t : Zufalls-Generierung mit diesem Hash"/>
<node CREATED="1700348745921" ID="ID_399739426" MODIFIED="1700348761884" TEXT="double : wird modulo 1.0 als Zufallszahl genommen"/>
</node>
<node CREATED="1700348801743" ID="ID_431735724" MODIFIED="1700348803862" TEXT="Argumente">
<node CREATED="1700348805681" ID="ID_1826620691" MODIFIED="1700348909909" TEXT="size_t : wird aus der Zufalls-Quelle(Hash) versorgt"/>
<node CREATED="1700348877400" ID="ID_800573442" MODIFIED="1700348940451" TEXT="size_t, double : Zufalls-Quelle, relative Zeitpos (0...1...)"/>
<node CREATED="1700348957981" ID="ID_362451989" MODIFIED="1700348973999" TEXT="Node&amp; : Direktzugriff"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1700349122079" ID="ID_419191002" MODIFIED="1700490683746" TEXT="Problem mit der Adaptierung">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1700349130966" ID="ID_831772652" MODIFIED="1700349160702" TEXT="verhindert Herausl&#xf6;sen als Library-Klasse (und ist komplex)"/>
<node COLOR="#435e98" CREATED="1700358795138" ID="ID_1657442729" MODIFIED="1700490963019" TEXT="Analyse der F&#xe4;lle">
<icon BUILTIN="forward"/>
<node CREATED="1700358808651" ID="ID_1831518834" MODIFIED="1700358840560" TEXT="RES:Draw">
<node CREATED="1700358871480" ID="ID_67347765" MODIFIED="1700358938939" TEXT="invoke this one instead of the host-Draw"/>
<node CREATED="1700358920993" ID="ID_1393200431" MODIFIED="1700358941509" TEXT="warning: other fields on host-Draw ignored">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1700358946654" ID="ID_1303202325" MODIFIED="1700358951961" TEXT="RES:size_t">
<node CREATED="1700359106793" ID="ID_1838154416" MODIFIED="1700359130043" TEXT="drive the random-generation from there"/>
<node CREATED="1700359139666" ID="ID_1136647874" MODIFIED="1700359163797" TEXT="feed the result(random-number) into value-Mapping"/>
</node>
<node CREATED="1700359133177" ID="ID_975096506" MODIFIED="1700359136289" TEXT="RES:double">
<node CREATED="1700359178515" ID="ID_1731430992" MODIFIED="1700359195241" TEXT="feed this directly into value-Mapping"/>
</node>
<node CREATED="1700359198907" ID="ID_497062117" MODIFIED="1700359205384" TEXT="ARG:size_t">
<node CREATED="1700359238759" ID="ID_532741018" MODIFIED="1700359266969" TEXT="invoke Adapter Node&amp; &#x27fc; size_t"/>
<node CREATED="1700359267757" ID="ID_382070125" MODIFIED="1700359278659" TEXT="feed result into given function"/>
</node>
<node CREATED="1700359289671" ID="ID_1629349126" MODIFIED="1700359296666" TEXT="ARG:size_t,double">
<node CREATED="1700359238759" ID="ID_775508120" MODIFIED="1700359266969" TEXT="invoke Adapter Node&amp; &#x27fc; size_t"/>
<node CREATED="1700359238759" ID="ID_1643202887" MODIFIED="1700359325976" TEXT="invoke Adapter Node&amp; &#x27fc; time-pos(=double)"/>
<node CREATED="1700359329661" ID="ID_1273277245" MODIFIED="1700359341798" TEXT="feed these into the given function"/>
</node>
<node CREATED="1700359347345" ID="ID_819042732" MODIFIED="1700359353472" TEXT="ARG:Node&amp;">
<node CREATED="1700359365230" ID="ID_421033716" MODIFIED="1700359373977" TEXT="directly invoke the given function"/>
</node>
</node>
<node CREATED="1700359509971" ID="ID_1483199036" MODIFIED="1700359524565" TEXT="ben&#xf6;tigt wird: ein Function-chain-builder"/>
<node COLOR="#435e98" CREATED="1700359612504" FOLDED="true" ID="ID_988711396" MODIFIED="1700490963022" TEXT="Design-Stufe-1: dediziert">
<node CREATED="1700359625649" ID="ID_364635181" MODIFIED="1700490618340" TEXT="Adapter">
<linktarget COLOR="#6493ca" DESTINATION="ID_364635181" ENDARROW="Default" ENDINCLINATION="-498;131;" ID="Arrow_ID_493746329" SOURCE="ID_1671789981" STARTARROW="None" STARTINCLINATION="469;19;"/>
<node CREATED="1700361162606" ID="ID_1345527183" MODIFIED="1700361176208" TEXT="adaptOut(&#x3bb;)">
<node CREATED="1700359640066" ID="ID_918713248" MODIFIED="1700359766325" TEXT="&#x3bb;-RES:Draw">
<node CREATED="1700359783118" ID="ID_1603023899" MODIFIED="1700360709335" TEXT="&#x3bb;&#x2081; = adaptIn(&#x3bb;)"/>
<node CREATED="1700359915157" ID="ID_187166759" MODIFIED="1700360702864" TEXT="&#x3bb;&#x2082; = getHash&lt;Node&amp;&gt;"/>
<node CREATED="1700359964462" ID="ID_1947237493" MODIFIED="1700360219245" TEXT="&#x3bb;&apos; = [&amp;](Node&amp; n) { Draw=&#x3bb;&#x2081;(n); return Draw(&#x3bb;&#x2082;(n)); }"/>
</node>
<node CREATED="1700360242595" ID="ID_1250110463" MODIFIED="1700360256210" TEXT="&#x3bb;-RES:size_t">
<node CREATED="1700360317479" ID="ID_398185887" MODIFIED="1700360719118" TEXT="&#x3bb;&#x2081; = adaptIn(&#x3bb;)"/>
<node CREATED="1700360320159" ID="ID_1150072758" MODIFIED="1700360489678" TEXT="&#x3bb;&apos; = valMap &#x2218; rand &#x2218; &#x3bb;&#x2081;"/>
</node>
<node CREATED="1700360242595" ID="ID_1221101753" MODIFIED="1700360539181" TEXT="&#x3bb;-RES:double">
<node CREATED="1700360317479" ID="ID_976526249" MODIFIED="1700360723405" TEXT="&#x3bb;&#x2081; = adaptIn(&#x3bb;)"/>
<node CREATED="1700360320159" ID="ID_750329067" MODIFIED="1700360549067" TEXT="&#x3bb;&apos; = valMap &#x2218; &#x3bb;&#x2081;"/>
</node>
</node>
<node CREATED="1700360728877" ID="ID_102147233" MODIFIED="1700360730373" TEXT="adaptIn(&#x3bb;)">
<node CREATED="1700360577645" ID="ID_1755081012" MODIFIED="1700360583480" TEXT="&#x3bb;-ARG:size_t">
<node CREATED="1700359915157" ID="ID_376940900" MODIFIED="1700360702864" TEXT="&#x3bb;&#x2082; = getHash&lt;Node&amp;&gt;"/>
<node CREATED="1700360788960" ID="ID_810511927" MODIFIED="1700360816464" TEXT="&#x3bb;&apos; = &#x3bb; &#x2218; &#x3bb;&#x2082;"/>
</node>
<node CREATED="1700360863774" ID="ID_1744430958" MODIFIED="1700360869681" TEXT="&#x3bb;-ARG:size_t,double">
<node CREATED="1700360896684" ID="ID_288650615" MODIFIED="1700360897733" TEXT="&#x3bb;&#x2082; = getHash&lt;Node&amp;&gt;"/>
<node CREATED="1700360900474" ID="ID_421368401" MODIFIED="1700360934536" TEXT="&#x3bb;&#x2083; = getTimePos&lt;Node&amp;&gt;"/>
<node CREATED="1700360962265" ID="ID_1511929029" MODIFIED="1700360988442" TEXT="&#x3bb;&apos; = &#x3bb; (&#x3bb;&#x2082;(n), &#x3bb;&#x2083;(n))"/>
</node>
<node CREATED="1700361010315" ID="ID_180811750" MODIFIED="1700361032876" TEXT="&#x3bb;-ARG:Node&amp; &#x2261; id"/>
</node>
</node>
<node CREATED="1700361130035" ID="ID_1688775055" MODIFIED="1700361138008" TEXT="Struktur wird erkennbar....">
<icon BUILTIN="idea"/>
<node CREATED="1700361187795" ID="ID_620483169" MODIFIED="1700361189310" TEXT="adaptOut(&#x3bb;)">
<node CREATED="1700361190298" ID="ID_1980457426" MODIFIED="1700361194806" TEXT="wird stets ben&#xf6;tigt"/>
<node CREATED="1700361202553" ID="ID_1117913470" MODIFIED="1700361326820" TEXT="liefert stets einen Funktor mit RES:Spec"/>
</node>
<node CREATED="1700361383585" ID="ID_1767430341" MODIFIED="1700361384580" TEXT="adaptIn(&#x3bb;)">
<node CREATED="1700361385576" ID="ID_176675363" MODIFIED="1700361390875" TEXT="ist optional / flexibel"/>
<node CREATED="1700361391736" ID="ID_1064796631" MODIFIED="1700361486767" TEXT="wird in jedem Zweig von adaptOut(&#x3bb;) ben&#xf6;tigt"/>
</node>
</node>
<node COLOR="#5b280f" CREATED="1700361501097" ID="ID_401015563" MODIFIED="1700490572245" TEXT="noch unklar: was ist der Ergebnis-Typ?">
<icon BUILTIN="help"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1700361526878" ID="ID_981729861" MODIFIED="1700361562965" TEXT="damit implizierte Frage: ist Draw sinnvollerweise std::function ?"/>
<node CREATED="1700361585230" ID="ID_1897786487" MODIFIED="1700361617245" TEXT="wenn ja: dann w&#xe4;re der Ergebnistyp Draw&amp;">
<node CREATED="1700361662236" ID="ID_430183904" MODIFIED="1700361674294" TEXT="m&#xfc;&#xdf;te auf sich selber referenzieren"/>
<node CREATED="1700361695735" ID="ID_1277775461" MODIFIED="1700361713576" TEXT="sonst w&#xfc;rde ja der Builder-Ansatz nicht mehr funktionieren"/>
<node CREATED="1700361734947" ID="ID_1547996439" MODIFIED="1700361766613" TEXT="damit ist dann aber &#x3bb;-RES:Draw unm&#xf6;glich">
<icon BUILTIN="stop-sign"/>
<node CREATED="1700361779036" ID="ID_35323612" MODIFIED="1700361782723" TEXT="dangling reference"/>
</node>
</node>
<node CREATED="1700361800384" ID="ID_1496434440" MODIFIED="1700361807492" TEXT="alternativ: Ergebnistyp Spec">
<node CREATED="1700361809672" ID="ID_797207468" MODIFIED="1700361818203" TEXT="dann m&#xfc;&#xdf;ten wir den jedes Mal konstruieren"/>
</node>
<node CREATED="1700361859497" ID="ID_1388286109" MODIFIED="1700361872195" TEXT="oder : Ergebnistyp Limited">
<node CREATED="1700361873265" ID="ID_971481403" MODIFIED="1700361878704" TEXT="nicht mehr per Konversions-Operator"/>
<node CREATED="1700361879302" ID="ID_947380994" MODIFIED="1700361904631" TEXT="man m&#xfc;&#xdf;te dann jeweils einen Ausgangs-Adapter installieren"/>
</node>
<node CREATED="1700361955468" ID="ID_171432809" MODIFIED="1700361964999" TEXT="oder : Draw ist keine Fuktion">
<node CREATED="1700361966107" ID="ID_440284003" MODIFIED="1700361977187" TEXT="der operator() hat einen Seiteneffekt"/>
<node CREATED="1700361977817" ID="ID_527836444" MODIFIED="1700361991395" TEXT="anschlie&#xdf;end hold man sich das Ergebnis per Konversions-Operator"/>
</node>
<node CREATED="1700490523806" ID="ID_518227121" MODIFIED="1700490585296" TEXT="Schlu&#xdf;folgerung: f&#xfc;r eine rein zweckgebundene L&#xf6;sung problematisch...">
<arrowlink DESTINATION="ID_556380585" ENDARROW="Default" ENDINCLINATION="-1;-177;" ID="Arrow_ID_1611327128" STARTARROW="None" STARTINCLINATION="-377;0;"/>
<icon BUILTIN="forward"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1700365769348" FOLDED="true" ID="ID_556380585" MODIFIED="1700490963023" TEXT="Design-stufe-2: generisch">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_556380585" ENDARROW="Default" ENDINCLINATION="-1;-177;" ID="Arrow_ID_1611327128" SOURCE="ID_518227121" STARTARROW="None" STARTINCLINATION="-377;0;"/>
<icon BUILTIN="forward"/>
<node CREATED="1700365860944" ID="ID_1336006745" MODIFIED="1700365909109" TEXT="es handelt sich dann insgesamt um eine Funktion: Q &#x27fc; Limited&lt;T, T max&gt;">
<node CREATED="1700365917573" ID="ID_1497905227" MODIFIED="1700365934014" TEXT="es sollte eine einzige Funktion sein aus Gr&#xfc;nden der Klarheit"/>
<node CREATED="1700365936094" ID="ID_1933404992" MODIFIED="1700365960831" TEXT="der Zieltyp Limited ist essentieller Bestandteil des Rechenschmas"/>
<node CREATED="1700365983480" ID="ID_1777594236" MODIFIED="1700366003647" TEXT="aber der Ziel-Basistyp T ist weitgehend frei (er mu&#xdf; &quot;numerisch&quot; sein)"/>
</node>
<node CREATED="1700395292886" ID="ID_1011783962" MODIFIED="1700395297765" TEXT="Konfiguration der Adapter">
<node CREATED="1700395325464" ID="ID_175362456" MODIFIED="1700395357689" TEXT="eingangsseitige Adapter m&#xfc;ssen im Nutzkontext konfiguriert werden">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1700395964241" ID="ID_92451979" MODIFIED="1700396026386" TEXT="adaptIn(&#x3bb;) wird zuerst ben&#xf6;tigt &#x27f6; liefert ein &#x3bb;(Q)"/>
<node CREATED="1700396597111" ID="ID_405049807" MODIFIED="1700396605160" TEXT="Form des Adapters">
<node CREATED="1700396608085" ID="ID_1182305946" MODIFIED="1700396703981" TEXT="mu&#xdf; konkrete Signatur des Funktors feststellen"/>
<node CREATED="1700396714119" ID="ID_1154980053" MODIFIED="1700396737880" TEXT="verwendet partielle Template-Spezialisierung auf Basis der Signatur"/>
<node CREATED="1700396891353" ID="ID_1391747733" MODIFIED="1700396901301" TEXT="&#x27f9; Doppel-H&#xfc;lle">
<node CREATED="1700396903770" ID="ID_422430772" MODIFIED="1700397010293" TEXT="&#xe4;u&#xdf;ere Klasse um Scope f&#xfc;r partielle Spezialisierungen zu schaffen"/>
<node CREATED="1700397011683" ID="ID_644908811" MODIFIED="1700397044983" TEXT="darin eine Familie von Templates mit konkreten partiellen oder totalen Spezialisierungen"/>
</node>
<node CREATED="1700397048917" ID="ID_157848143" MODIFIED="1700397051145" TEXT="Varianten">
<node CREATED="1700397052416" ID="ID_857588012" MODIFIED="1700397068674" TEXT="&#xe4;u&#xdf;ere Klasse ist selbst Template">
<node CREATED="1700397069906" ID="ID_604183530" MODIFIED="1700397078349" TEXT="Parameter ist der zu adaptierende Funktor"/>
<node CREATED="1700397079295" ID="ID_1463110151" MODIFIED="1700397173506" TEXT="es wird dann instantiiert per ctor mit konkreter Funktor-Instanz (C++17)">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...diese Variante ist erst mit C++17 m&#246;glich, da nun der Template-Parameter inferiert werden kann
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1700397181252" ID="ID_623260560" MODIFIED="1700397224117" TEXT="es enth&#xe4;lt eine std::function mit fester Signatur als Member"/>
<node CREATED="1700397224870" ID="ID_1797839843" MODIFIED="1700397240608" TEXT="Ergebnis wird per automatischer Konversion abgeholt"/>
<node CREATED="1700397244662" ID="ID_122524878" MODIFIED="1700397254575" TEXT="nur m&#xf6;glich wenn...">
<node CREATED="1700397255722" ID="ID_1600526198" MODIFIED="1700397266309" TEXT="std::function akzeptabel ist"/>
<node CREATED="1700397267484" ID="ID_960639723" MODIFIED="1700397276548" TEXT="die Signatur komplett festliegt"/>
<node CREATED="1700397345738" ID="ID_1619656561" MODIFIED="1700399318338" TEXT="&#xe4;u&#xdf;ere Klasse dient nur als H&#xfc;lle">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1619656561" ENDARROW="Default" ENDINCLINATION="-154;13;" ID="Arrow_ID_252746284" SOURCE="ID_144021391" STARTARROW="None" STARTINCLINATION="95;-44;"/>
<node CREATED="1700397369684" ID="ID_87447722" MODIFIED="1700397387365" TEXT="enth&#xe4;lt eine statische Adapter-Funktion(Template)"/>
<node CREATED="1700397389017" ID="ID_791189999" MODIFIED="1700397409263" TEXT="diese ermittelt in ihrem Block-Scope die Funktor-Signatur"/>
<node CREATED="1700397410087" ID="ID_1849610690" MODIFIED="1700397488657" TEXT="und instantiiert dann den eigentlichen Adapter"/>
<node CREATED="1700397490005" ID="ID_285297036" MODIFIED="1700397512206" TEXT="wobei auch in diesem eine statische Funktion mit auto-Returntyp aufgerufen wird"/>
</node>
</node>
</node>
<node CREATED="1700397559764" ID="ID_582172020" MODIFIED="1700397574430" TEXT="es wird nur eine Adapter-Funktion(Template) &#xfc;bergeben">
<node CREATED="1700397578050" ID="ID_1702442322" MODIFIED="1700397599766" TEXT="diese verwendet Adapter-Templates im umgebenden class/namespace"/>
<node CREATED="1700398333857" ID="ID_574373381" MODIFIED="1700398364328" TEXT="Vorteil: kompakt und flexibel (kann in den umgebenden Kontext binden)"/>
<node CREATED="1700398366364" ID="ID_323294914" MODIFIED="1700398388757" TEXT="Nachteil: &#xdc;bergabe eines Funktions-Template ist schwierig">
<node CREATED="1700398403823" ID="ID_166562351" MODIFIED="1700398419413" TEXT="umgebendes Konfigurations/Trait-Template"/>
<node CREATED="1700398464409" ID="ID_569449309" MODIFIED="1700398474624" TEXT="Builder-Funktion(Template) auf einem Kollaborationspartner"/>
</node>
</node>
</node>
<node CREATED="1700398617512" ID="ID_985893923" MODIFIED="1700398646776" TEXT="&#x27f9; &#xdc;bergabe von Templates ist hier die praktische H&#xfc;rde">
<node CREATED="1700398774795" ID="ID_288481211" MODIFIED="1700398782662" TEXT="templtate-template-Paramter">
<node CREATED="1700398796693" ID="ID_648918481" MODIFIED="1700398835455" TEXT="sind schwer lesbar Definitions-Ort"/>
<node CREATED="1700398846233" ID="ID_269736776" MODIFIED="1700398871441" TEXT="erfordern Festlegung der Template-Parameter"/>
<node CREATED="1700398802991" ID="ID_119546823" MODIFIED="1700398876633" TEXT="Problem ist stets die Dokumentation f&#xfc;r den Nutzer"/>
</node>
<node CREATED="1700398893875" ID="ID_568728168" MODIFIED="1700399292920" TEXT="Konfigurationsklasse / Trait-Template">
<arrowlink DESTINATION="ID_144021391" ENDARROW="Default" ENDINCLINATION="151;-46;" ID="Arrow_ID_1749412477" STARTARROW="None" STARTINCLINATION="-189;14;"/>
<node CREATED="1700398907786" ID="ID_255722018" MODIFIED="1700398916895" TEXT="darauf l&#xe4;uft es praktisch immer hinaus"/>
<node CREATED="1700399009524" ID="ID_1222684688" MODIFIED="1700399023461" TEXT="entweder durch Zugriff im umgebenden Namespace"/>
<node CREATED="1700399024310" ID="ID_1466090440" MODIFIED="1700399100563" TEXT="oder als einfacher Template-Parameter"/>
<node CREATED="1700399101511" ID="ID_1070113470" MODIFIED="1700399123640" TEXT="oder Instanz durch Aufruf eines extension-Point (ADL)"/>
</node>
</node>
</node>
<node CREATED="1700399151659" ID="ID_144021391" MODIFIED="1700490660062" TEXT="Hier erscheint ein Config-Typ sinnvoll">
<arrowlink COLOR="#a9b4c1" DESTINATION="ID_1619656561" ENDARROW="Default" ENDINCLINATION="-154;13;" ID="Arrow_ID_252746284" STARTARROW="None" STARTINCLINATION="95;-44;"/>
<linktarget COLOR="#a9b4c1" DESTINATION="ID_144021391" ENDARROW="Default" ENDINCLINATION="151;-46;" ID="Arrow_ID_1749412477" SOURCE="ID_568728168" STARTARROW="None" STARTINCLINATION="-189;14;"/>
<linktarget COLOR="#64929e" DESTINATION="ID_144021391" ENDARROW="Default" ENDINCLINATION="-136;11;" ID="Arrow_ID_646571312" SOURCE="ID_39517550" STARTARROW="None" STARTINCLINATION="208;8;"/>
<node CREATED="1700399198368" ID="ID_1781925975" MODIFIED="1700399205813" TEXT="&#xfc;bergeben als Template Paramter"/>
<node CREATED="1700399206449" ID="ID_1309572183" MODIFIED="1700399222443" TEXT="aber mit einem Default &#x27f9; dient als copy-n-paste-Vorlage"/>
<node CREATED="1700399243756" ID="ID_510267956" MODIFIED="1700399258246" TEXT="das Konverter-Funktions-Temlate kann darin direkt enthalten sein"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1700359719367" ID="ID_1254612041" MODIFIED="1700490912197" TEXT="damit verbundenes Problem: was ist die Signatur der Draw-Funktion?">
<icon BUILTIN="help"/>
<node CREATED="1700490792506" ID="ID_1607287838" MODIFIED="1700490807908" TEXT="letzten Endes mu&#xdf; sie den Quell- und Zieltyp kennen"/>
<node CREATED="1700490809073" ID="ID_1049199825" MODIFIED="1700490828217" TEXT="und alle Teile m&#xfc;ssen im Draw selber gespeichert werden"/>
<node COLOR="#435e98" CREATED="1700490829158" ID="ID_1235648316" MODIFIED="1700490910411" TEXT="&#x27f9; Draw effectively is-a function source &#x27fc; target"/>
<node COLOR="#435e98" CREATED="1700490897308" ID="ID_1407106079" MODIFIED="1700490906366" TEXT="hinzu kommt Builder-Funktionalit&#xe4;t"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1700444194601" ID="ID_1576940362" MODIFIED="1700490083378" TEXT="Funktionalit&#xe4;t dediziert ohne Quell-Typ prototypisch implementieren">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1700490121573" ID="ID_1457864775" MODIFIED="1700490496554">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Fazit <b>Design-Analyse</b>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="forward"/>
<node CREATED="1700490144136" ID="ID_248814374" MODIFIED="1700490174056" TEXT="der Adapter-Ansatz f&#xfc;hrt zu einer Funktion Ende-zu-Ende"/>
<node CREATED="1700490427387" ID="ID_1671789981" MODIFIED="1700490624419" TEXT="diese wird in zwei Schritten aufgebaut: Adapter am Eingang und Ausgang">
<arrowlink COLOR="#6493ca" DESTINATION="ID_364635181" ENDARROW="Default" ENDINCLINATION="-498;131;" ID="Arrow_ID_493746329" STARTARROW="None" STARTINCLINATION="469;19;"/>
</node>
<node CREATED="1700490175196" ID="ID_1557807559" MODIFIED="1700490345221" TEXT="damit wird eine solche L&#xf6;sung zwangsl&#xe4;ufig generisch (und eine Library-Komponente)">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      warum? eine zweckgebundene L&#246;sung mit diesem Komplexit&#228;tsgrad w&#228;re nicht zu rechtfertigen; man w&#252;rde dann nach einer einfacheren Alternative suchen. Konkret komme ich allerdings von dieser einfacheren Alternative her, weil sie immer noch nicht einfach und klar genug war. Insofern bin ich froh, &#252;berhaupt eine L&#246;sung zu haben, die im R&#252;ckblick sinnvoll darstellbar ist
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1700490355020" ID="ID_442374644" MODIFIED="1700490390211" TEXT="die Basis-Komponente ist damit parametrisiert in Quell- und Zieltyp"/>
<node CREATED="1700490391087" ID="ID_39517550" MODIFIED="1700490669142" TEXT="es erscheint sinnvoll, dies in ein Konfigurations-Template zusammenzufassen">
<arrowlink COLOR="#64929e" DESTINATION="ID_144021391" ENDARROW="Default" ENDINCLINATION="-136;11;" ID="Arrow_ID_646571312" STARTARROW="None" STARTINCLINATION="208;8;"/>
</node>
<node CREATED="1700490465981" ID="ID_95937370" MODIFIED="1700490485279" TEXT="der Nutzer bekommt eine builder-DSL auf dem resultierenden, spezialisierten Typ"/>
</node>
</node>
<node COLOR="#11660e" CREATED="1700491763307" FOLDED="true" ID="ID_1225692248" MODIFIED="1701297183498">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Library-Komponente extrahieren: <b>RandomDraw</b>
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#719f60" DESTINATION="ID_1225692248" ENDARROW="Default" ENDINCLINATION="1568;-1210;" ID="Arrow_ID_298662468" SOURCE="ID_1582937575" STARTARROW="None" STARTINCLINATION="2265;134;"/>
<linktarget COLOR="#639b93" DESTINATION="ID_1225692248" ENDARROW="Default" ENDINCLINATION="-812;-40;" ID="Arrow_ID_879341368" SOURCE="ID_36351098" STARTARROW="None" STARTINCLINATION="655;81;"/>
<linktarget COLOR="#719f60" DESTINATION="ID_1225692248" ENDARROW="Default" ENDINCLINATION="-466;214;" ID="Arrow_ID_834549033" SOURCE="ID_557518427" STARTARROW="None" STARTINCLINATION="241;10;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1700491815546" ID="ID_1942150407" MODIFIED="1700713887314" TEXT="bestehenden Prototyp konsolidieren">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1700491829216" ID="ID_1294373641" MODIFIED="1700502015751" TEXT="den Spec-Subtyp in RandomDraw integrieren">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1700491953800" ID="ID_75649548" MODIFIED="1700623416307" TEXT="Policy-Template einf&#xfc;hren">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1700513461881" ID="ID_1696400503" MODIFIED="1700513889095" TEXT="definiert den Basis-Funktionstyp"/>
<node COLOR="#435e98" CREATED="1700513505882" ID="ID_1225658406" MODIFIED="1700513889096" TEXT="definiert dar&#xfc;ber auch implizit den Ergebnistyp"/>
<node COLOR="#435e98" CREATED="1700513474582" ID="ID_1399385360" MODIFIED="1700513889096" TEXT="liefert spezielle Adapter f&#xfc;r alle unterst&#xfc;tzten Eingangs-Typen"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1700513891593" ID="ID_1527819070" MODIFIED="1700577854558" TEXT="unklar: default-Eingang">
<icon BUILTIN="messagebox_warning"/>
<node COLOR="#435e98" CREATED="1700515452147" ID="ID_1797461825" MODIFIED="1700577912934" TEXT="mu&#xdf; ich irgendwo einen Standard-Eingangstyp annehmen?">
<icon BUILTIN="help"/>
<node CREATED="1700577876306" ID="ID_1799486545" MODIFIED="1700577891756" TEXT="&#xfc;berraschenderweise nirgends im Implementierungs-Code"/>
<node CREATED="1700577892392" ID="ID_269852112" MODIFIED="1700577911162" TEXT="es gen&#xfc;gt die implizite Definition durch die Signatur der Policy"/>
</node>
<node CREATED="1700515476582" ID="ID_474690726" MODIFIED="1700515499125" TEXT="im Grunde w&#xfc;rde das gesamte Schema mit beliebigen Eingangs-Signaturen funktionieren">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#435e98" CREATED="1700515519514" ID="ID_1957414628" MODIFIED="1700577869042" TEXT="&#x27f9; dann mu&#xdf; aber die Policy einen Default-Eingang liefern..."/>
<node COLOR="#338800" CREATED="1700515561328" FOLDED="true" ID="ID_408143188" MODIFIED="1700577929389" TEXT="brauche Funktions-Komposition">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1700515591564" ID="ID_9942626" MODIFIED="1700536064914" TEXT="&#xbb;beliebige Funktion&#xab; kann nicht einfach so als Lambda geschrieben werden">
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#435e98" CREATED="1700515624424" ID="ID_124826134" MODIFIED="1700535846007" TEXT="hatte ich da nicht schon mal was...?">
<icon BUILTIN="help"/>
<node CREATED="1700535702492" ID="ID_1908131428" MODIFIED="1700535708739" TEXT="function-composition.hpp"/>
<node CREATED="1700535710200" ID="ID_1837337426" MODIFIED="1700535728417" TEXT="ja mei... da hab ich mich damals aber geplagt..."/>
<node CREATED="1700535729775" ID="ID_1473128844" MODIFIED="1700535747481" TEXT="und obendrein wird da &#xfc;berall noch unterwegs kopiert"/>
<node CREATED="1700535573341" ID="ID_853243392" MODIFIED="1700536001123">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      geht heutzutage <i>relativ kompakt </i>mit generischen Lambdas
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...ich hab nicht &#8222;lesbar&#8220; gesagt...
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#7d8ebd" DESTINATION="ID_1908683822" ENDARROW="Default" ENDINCLINATION="-700;170;" ID="Arrow_ID_268440367" STARTARROW="None" STARTINCLINATION="-2105;102;"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#520f69" CREATED="1700535778319" ID="ID_1551608043" MODIFIED="1700535833317" TEXT="(...wenn man&apos;s denn auch richtig macht..)">
<font NAME="SansSerif" SIZE="11"/>
<icon BUILTIN="smiley-angry"/>
<node COLOR="#435e98" CREATED="1700535872361" ID="ID_1665961777" MODIFIED="1700535896456" TEXT="ich sage blo&#xdf;: Referenzen als R&#xfc;ckgabewert...">
<font NAME="SansSerif" SIZE="8"/>
</node>
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1700535872361" ID="ID_1926879979" MODIFIED="1700535933707" TEXT="...und das RECHTFERTIGT eine Library-Funktion">
<font NAME="SansSerif" SIZE="9"/>
</node>
</node>
<node COLOR="#338800" CREATED="1700535940171" ID="ID_80963960" MODIFIED="1700535962800" TEXT="lib::meta::func::chained() modernisiert">
<arrowlink COLOR="#20b763" DESTINATION="ID_1323418254" ENDARROW="Default" ENDINCLINATION="1071;87;" ID="Arrow_ID_636352614" STARTARROW="None" STARTINCLINATION="-916;62;"/>
<linktarget COLOR="#1de11c" DESTINATION="ID_80963960" ENDARROW="Default" ENDINCLINATION="1061;74;" ID="Arrow_ID_868943709" SOURCE="ID_146361421" STARTARROW="None" STARTINCLINATION="-252;-591;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1700542206019" ID="ID_1976162819" MODIFIED="1700542219117" TEXT="damit adaptOut umformulieren">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1700542247014" ID="ID_185624626" MODIFIED="1700542286224" TEXT="die &#xbb;gesamt-Kette&#xab; als drawLimited() &#x2261; limited (asRand (hash));">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1700542287784" ID="ID_438421800" MODIFIED="1700542320316" TEXT="der &#xbb;parametrised Draw&#xab; ist komplex">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1700542321812" ID="ID_1608379732" MODIFIED="1700542336725">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      mu&#223; die Funktionsargumente <b>kopieren</b>
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#338800" CREATED="1700542337681" ID="ID_1192170625" MODIFIED="1700542352927" TEXT="also in dem Fall dann doch ausschreiben">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1700542362630" ID="ID_730331755" MODIFIED="1700623412095" TEXT="mit speziellem Test ausleuchten...">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1700542382819" ID="ID_1832228113" MODIFIED="1700574242519" TEXT="eine Policy die zwei Eingangs-Argumente nimmt">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1700574245126" ID="ID_1720583823" MODIFIED="1700623413497" TEXT="Adaption von Manipulator-Funktionen">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1700577987947" ID="ID_1072243558" MODIFIED="1700615772415" TEXT="Result-Mapping fertigstellen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1700578049835" ID="ID_1039524348" MODIFIED="1700591554997" TEXT="(optional) Minimal-Wert beachten">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1700578067566" ID="ID_1673296895" MODIFIED="1700615768199" TEXT="(optional) neutralen Wert definieren">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1700578338693" ID="ID_1746695653" MODIFIED="1700591392565" TEXT="Wunsch: neutralen Wert mitten im Wertebereich">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Beispiel: -2 .. 0 ..+2&#160;&#160;&#10233; Wahrscheinlichkeit definiert f&#252;r Werte &#8800; 0
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1700578688806" ID="ID_1002441906" MODIFIED="1700591389020" TEXT="brauche anderes Mapping-Layout">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1700578703420" ID="ID_1936439930" MODIFIED="1700591281596" TEXT="erst mal als Fallunterscheidung realisieren">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#435e98" CREATED="1700578747462" ID="ID_1744331355" MODIFIED="1700591285475" TEXT="Idee: [0....0[1...max|min...-1]">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1700591296817" ID="ID_1493490706" MODIFIED="1700591311585" TEXT="mu&#xdf; mit floor() runden">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1700591321621" ID="ID_786179594" MODIFIED="1700591330740" TEXT="sonst Symmetrie-Probleme"/>
<node CREATED="1700591331493" ID="ID_851466258" MODIFIED="1700591378869">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      nat&#252;rliche Rundung <i>is towards zero</i>
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...und das ist obendrein <i>implementation defined...</i>
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1700610508815" FOLDED="true" ID="ID_1769349161" MODIFIED="1700610564967" TEXT="neutraler Wert k&#xf6;nnte sogar konfigurierbar sein">
<icon BUILTIN="hourglass"/>
<icon BUILTIN="stop-sign"/>
<node CREATED="1700610523003" ID="ID_1030452299" MODIFIED="1700610531650" TEXT="k&#xf6;nnte... ja warum?"/>
<node CREATED="1700610535713" ID="ID_1907433050" MODIFIED="1700610562747" TEXT="YAGNI">
<icon BUILTIN="closed"/>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1700610689481" FOLDED="true" ID="ID_1952215621" MODIFIED="1700613329351" TEXT="neutraler Wert kann au&#xdf;erhalb des Wertebereichs liegen">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1700610701943" ID="ID_1911303152" MODIFIED="1700610712229" TEXT="ja...nein..oh">
<icon BUILTIN="ksmiletris"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f48" CREATED="1700610722028" ID="ID_1729000980" MODIFIED="1700610777018" TEXT="ich sage: ja!">
<icon BUILTIN="yes"/>
<node CREATED="1700610737674" ID="ID_910999312" MODIFIED="1700610741605" TEXT="macht Sinnn"/>
<node CREATED="1700610742033" ID="ID_1941477701" MODIFIED="1700610759355" TEXT="...da der &#xbb;neutrale Wert&#xab; spezielle Semantik tr&#xe4;gt"/>
</node>
<node COLOR="#435e98" CREATED="1700610847439" ID="ID_1923479598" MODIFIED="1700613348354" TEXT="&#x27f9; erfordert spezielle Mechanik">
<linktarget COLOR="#81c09c" DESTINATION="ID_1923479598" ENDARROW="Default" ENDINCLINATION="-376;33;" ID="Arrow_ID_920221846" SOURCE="ID_491799030" STARTARROW="None" STARTINCLINATION="267;-354;"/>
<node CREATED="1700610871608" ID="ID_884876966" MODIFIED="1700612629620" TEXT="k&#xf6;nnte man subsumieren"/>
<node CREATED="1700610876983" ID="ID_218611890" MODIFIED="1700610892378">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      und zwar unter den <i>einfachen Fall</i>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
<node CREATED="1700610894141" ID="ID_1438709417" MODIFIED="1700610906898" TEXT="weil daf&#xfc;r der neutrale Wert bereits randst&#xe4;ndig ist"/>
<node CREATED="1700610912931" ID="ID_838858780" MODIFIED="1700610929772" TEXT="weil dort bereits mit einem k&#xfc;nstlichen Origin gearbeitet wird"/>
<node COLOR="#5b280f" CREATED="1700612637963" ID="ID_388842503" MODIFIED="1700612655329" TEXT="die Eingangsbedingung pa&#xdf;t aber nicht">
<font NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="button_cancel"/>
</node>
</node>
<node COLOR="#338800" CREATED="1700610954037" ID="ID_1082494599" MODIFIED="1700613156961">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <u>Konsequenz</u>: <i>speziellen Fall </i>schaffen...
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
<node CREATED="1700612681153" ID="ID_1008138940" MODIFIED="1700612681153">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      explizit org &#8788; minResult_
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1700612742665" ID="ID_187755742" MODIFIED="1700612779461" TEXT="kein +1 - Offset (da minResult in diesem Fall nicht ausgeschlossen werden mu&#xdf;)"/>
<node CREATED="1700612684943" ID="ID_690347204" MODIFIED="1700612702951" TEXT="Intervall weiter aufspreizen, so da&#xdf; alle Werte erreicht werden"/>
<node CREATED="1700612703571" ID="ID_77046954" MODIFIED="1700612738805">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      dabei beachten: val &#8801; 1.0 liegt am Rand und wird <i>genau nicht mehr erreicht</i>
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1700613164473" ID="ID_1204196082" MODIFIED="1700613301089">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      der Fall, da&#223; der neutrale Wert am oberen Rand liegt,
    </p>
    <p>
      wird mehr zuf&#228;lligerweise vom innenliegenden Fall
    </p>
    <p>
      korrekt mit behandelt, indem die 1.H&#228;lfte wegf&#228;llt
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1701023784746" ID="ID_388325956" MODIFIED="1701024148324" TEXT="(optional) stateful randomisation (shuffle)">
<linktarget COLOR="#5a9fb2" DESTINATION="ID_388325956" ENDARROW="Default" ENDINCLINATION="-986;64;" ID="Arrow_ID_815524029" SOURCE="ID_1177607744" STARTARROW="None" STARTINCLINATION="840;39;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1701023803112" ID="ID_271255726" MODIFIED="1701023861230" TEXT="mu&#xdf; dazu einen inneren Zustand mitf&#xfc;hren">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#435e98" CREATED="1701023817893" ID="ID_301939157" MODIFIED="1701023866172" TEXT="Ergebnis h&#xe4;ngt dann nicht mehr allein vom Input ab">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#435e98" CREATED="1701023835283" ID="ID_225138406" MODIFIED="1701023866172" TEXT="aber bei gleicher Aufruf-Reihenfolge sind die Ergebnisse reproduzierbar">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1701023852393" ID="ID_540511393" MODIFIED="1701023857085" TEXT="im Test verifiziert">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1700579867534" FOLDED="true" ID="ID_1525251156" MODIFIED="1700615765359" TEXT="Quantisierung verbessern">
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1700579884119" ID="ID_805978365" MODIFIED="1700615732006" TEXT="Probleme mit der Wahrscheinlichkeitsverteilung">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1700580065522" ID="ID_1293962654" MODIFIED="1700580090733" TEXT="f&#xfc;r Zuf&#xe4;lligkeit w&#xe4;re quant &#x2259; card ideal"/>
<node CREATED="1700580100458" ID="ID_508177019" MODIFIED="1700580112917" TEXT="f&#xfc;r Gleichverteilung mu&#xdf; quant eine 2-er-Potenz sein"/>
<node CREATED="1700580270404" ID="ID_1058992457" MODIFIED="1700580289113" TEXT="Problem sind kleine Wahrscheinlichkeiten">
<node CREATED="1700580327644" ID="ID_163898715" MODIFIED="1700580337478" TEXT="der verbleibende Rest leuchtet nicht mehr alle Werte aus"/>
</node>
<node CREATED="1700580296744" ID="ID_1912245268" MODIFIED="1700580306635" TEXT="auch unebene Teil-Wertbereiche sind problematisch"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1700615737693" ID="ID_711912636" MODIFIED="1700615760685" TEXT="&#xd83e;&#xdc46; mit dem gew&#xe4;hlten Quantiser ~ 3% Fehler"/>
</node>
<node COLOR="#338800" CREATED="1700579942375" ID="ID_1570826487" MODIFIED="1700591481064" TEXT="Quantiser auf 2-log der Kardinalit&#xe4;t aufbauen">
<icon BUILTIN="button_ok"/>
<node CREATED="1700580399003" ID="ID_1712768640" MODIFIED="1700591474474" TEXT="statische L&#xf6;sung">
<icon BUILTIN="forward"/>
<node CREATED="1700580403024" ID="ID_340644857" MODIFIED="1700580414388" TEXT="kann dann nur auf max(Template-Param) aufsetzen"/>
<node CREATED="1700580415496" ID="ID_241609475" MODIFIED="1700591431909" TEXT="mu&#xdf; mit zus&#xe4;tzlichem Headroom arbeiten">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_241609475" ENDARROW="Default" ENDINCLINATION="-131;9;" ID="Arrow_ID_404249054" SOURCE="ID_708309999" STARTARROW="None" STARTINCLINATION="77;5;"/>
</node>
<node COLOR="#338800" CREATED="1700591450189" ID="ID_1244482845" MODIFIED="1700591469597" TEXT="mein ilog2 kann constexpr sein">
<icon BUILTIN="idea"/>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1700580428485" ID="ID_209321513" MODIFIED="1700591476960" TEXT="dynamische L&#xf6;sung">
<icon BUILTIN="hourglass"/>
<node CREATED="1700580432790" ID="ID_1779483070" MODIFIED="1700580440161" TEXT="w&#xe4;re ein zus&#xe4;tzliches Objektfeld"/>
<node CREATED="1700580440749" ID="ID_1688731462" MODIFIED="1700580454914" TEXT="m&#xfc;&#xdf;te von jedem Param-Setter mit bedient werden"/>
<node CREATED="1700580455526" ID="ID_1568213898" MODIFIED="1700580468829" TEXT="w&#xfc;rde den (schnellen) ilogb verwenden"/>
<node CREATED="1700580486714" ID="ID_1999552035" MODIFIED="1700580606017" TEXT="aber auch hier brauchen wir Headroom">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      grade wenn die Maximalgrenze nahe an einer Zweierpotenz liegt (Beispiel 10 Werte) dann werden einige Werte deutlich wahrscheinlicher
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1700591398164" ID="ID_708309999" MODIFIED="1700591436198" TEXT="Entscheidung: einfache statische L&#xf6;sung">
<arrowlink DESTINATION="ID_241609475" ENDARROW="Default" ENDINCLINATION="-131;9;" ID="Arrow_ID_404249054" STARTARROW="None" STARTINCLINATION="77;5;"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#338800" CREATED="1700591494047" ID="ID_367849222" MODIFIED="1700615641406" TEXT="Verteilung empirisch untersuchen">
<arrowlink COLOR="#33b2c7" DESTINATION="ID_1583745392" ENDARROW="Default" ENDINCLINATION="66;-218;" ID="Arrow_ID_1227385946" STARTARROW="None" STARTINCLINATION="-136;0;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#438b98" CREATED="1700615644760" ID="ID_1143715475" MODIFIED="1700615681457" TEXT="jede Menge Fehler gefunden...">
<icon BUILTIN="ksmiletris"/>
</node>
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#438b98" CREATED="1700615657197" ID="ID_1227454632" MODIFIED="1700615703424" TEXT="hab nun komplette Fall+Pfadabdeckung">
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#338800" CREATED="1700591521028" ID="ID_1363297386" MODIFIED="1700615724507" TEXT="DSL-Setter m&#xfc;ssen nun stets konsistente Gesamteinstellung erzeugen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1700578085130" ID="ID_1160195104" MODIFIED="1700578334393" TEXT="Konsistenz der Definitionen pr&#xfc;fen (statisch)">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1700491985219" ID="ID_460437503" MODIFIED="1700623393034" TEXT="Adaptierung restrukturieren">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1700703950832" ID="ID_1969215603" MODIFIED="1700771307508" TEXT="adaptIn behandelt auch Standard-F&#xe4;lle">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1700703965086" ID="ID_1155590863" MODIFIED="1700771310273" TEXT="default Args">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1700703995258" ID="ID_96569993" MODIFIED="1700771311187" TEXT="Manipulator-Function">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#75287f" CREATED="1700667013700" ID="ID_1737653728" MODIFIED="1700704194326" TEXT="RandomDraw &#x25c1; NonCopyable">
<linktarget COLOR="#b1054b" DESTINATION="ID_1737653728" ENDARROW="Default" ENDINCLINATION="512;-31;" ID="Arrow_ID_685625009" SOURCE="ID_1118038273" STARTARROW="None" STARTINCLINATION="-660;37;"/>
<icon BUILTIN="yes"/>
<node COLOR="#5b280f" CREATED="1700704003148" HGAP="25" ID="ID_1702969215" MODIFIED="1700704096383" TEXT="so nicht umsetzbar" VSHIFT="32">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...w&#252;rde den DSL-Gebrauch stark einschr&#228;nken. Das h&#228;ufigste Idiom d&#252;rfte sein: auto draw = Draw().probaility(###);
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#ffcdd1" DESTINATION="ID_1702969215" ENDARROW="Default" ENDINCLINATION="-620;68;" ID="Arrow_ID_1851761641" SOURCE="ID_79615506" STARTARROW="None" STARTINCLINATION="296;14;"/>
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1700704013432" HGAP="24" ID="ID_1448952163" MODIFIED="1700771385423" TEXT="movable until locked">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      verwende stattdessen eine Sperre, die &#187;eintrastet&#171;, sobald eine custom-defined-function installiert wurde. Ab dem Punkt k&#246;nnte sonst jeder Aufruf zum SEGFAULT f&#252;hren
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1700771344602" HGAP="29" ID="ID_1040954114" MODIFIED="1700771381264" TEXT="(l&#xf6;st nicht das Prolem)">
<font NAME="SansSerif" SIZE="10"/>
<icon BUILTIN="closed"/>
</node>
</node>
<node COLOR="#338800" CREATED="1700771397323" ID="ID_1508566872" MODIFIED="1700957145439" TEXT="brauche re-Konfigurierung">
<icon BUILTIN="button_ok"/>
<node CREATED="1700771446815" ID="ID_488462675" MODIFIED="1700771465246" TEXT="im DSL-Gebrauch ist es ein value-Objekt"/>
<node CREATED="1700771518723" ID="ID_1481914135" MODIFIED="1700771536304">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      zur Anwendung m&#252;ssen Funktoren <i>gebunden </i>sein
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1700772446358" ID="ID_1414778740" MODIFIED="1700772523740" TEXT="man k&#xf6;nnte die Roh-Funktion irgendwo aufbewahren"/>
<node CREATED="1700772494639" ID="ID_1137027795" MODIFIED="1700772550820" TEXT="besser: on-demand / lazy initialisieren">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1700772585219" FOLDED="true" ID="ID_1288514282" MODIFIED="1700957181486" TEXT="Implementierung">
<icon BUILTIN="button_ok"/>
<node CREATED="1700772595434" ID="ID_167076178" MODIFIED="1700772600402" TEXT="Idee">
<icon BUILTIN="idea"/>
<node CREATED="1700772622548" ID="ID_1267008084" MODIFIED="1700772805353" TEXT="Funk-Trojaner">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      In die eigentliche Auswertungsfunktion kann man eine &#187;trojanische Funktion&#171; installieren, die etwas v&#246;llig anderes macht, n&#228;mlich die Initialisierung. Danach &#252;berschreibt sie sich selbst mit der fertig gebundenen Funktion
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1700772657793" ID="ID_577281261" MODIFIED="1700772670690" TEXT="init-Hook dort ablegen"/>
<node CREATED="1700772679653" ID="ID_345439582" MODIFIED="1700772699597" TEXT="ersetzt sich selbst"/>
</node>
<node COLOR="#435e98" CREATED="1700772812268" ID="ID_1143957846" MODIFIED="1700870804301" TEXT="Aufbewahren belieiger Funktionen">
<icon BUILTIN="info"/>
<node CREATED="1700773163605" ID="ID_1780777902" MODIFIED="1700773325986" TEXT="grunds&#xe4;tztlich ist std::function bereits ein Container">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...mit einem gewissen Grad an Type Erasure; sie haben eine bekannte, feste Gr&#246;&#223;e, egal was man reinpackt, ggfs. aber verwalten sie Heap-Storage transparent
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1700773082172" ID="ID_482286185" MODIFIED="1700773092962" TEXT="man k&#xf6;nnte sie in einen OpaqueHolder packen"/>
<node CREATED="1700773093950" ID="ID_1695195928" MODIFIED="1700773136964" TEXT="oder einen InPlaceAnyHolder">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      das ist praktisch das Gleiche, beide haben eine VTable, aber der OpaqueHolder baut darauf auf und unterst&#252;tzt auch Zugriff &#252;ber das Basis-Interface
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1700773328463" ID="ID_1872463297" MODIFIED="1700773338841" TEXT="oder einfach Heap-Storage verwenden">
<node CREATED="1700773344429" ID="ID_297664297" MODIFIED="1700773351404" TEXT="es lebe der shared_ptr">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1700773358783" ID="ID_1846897416" MODIFIED="1700773378052" TEXT="den kann man in eine &#x3bb;-Closure packen"/>
</node>
</node>
<node CREATED="1700773390266" ID="ID_1886551153" MODIFIED="1700773400633" TEXT="Struktur">
<node CREATED="1700773401885" ID="ID_1582245049" MODIFIED="1700773410488" TEXT="als Base-Template einmischen">
<node CREATED="1700773412355" ID="ID_1464118372" MODIFIED="1700773419346" TEXT="dann kann man das ganze Thema wegpacken"/>
<node CREATED="1700773419935" ID="ID_1817074035" MODIFIED="1700773434229" TEXT="auch die Copy-Konstruktoren und Assignment-Operatoren sind dort"/>
<node CREATED="1700773435601" ID="ID_9733601" MODIFIED="1700773452450" TEXT="denn der Rest von RandomDraw ist ja nun wirklich voll ein Value-Objekt"/>
</node>
<node CREATED="1700773537595" ID="ID_1432609215" MODIFIED="1700773543190" TEXT="Lebenszyklus">
<node CREATED="1700773566103" ID="ID_916457666" MODIFIED="1700773569780" TEXT="prepareInit">
<node CREATED="1700773578373" ID="ID_717299946" MODIFIED="1700773589040" TEXT="bekommt die (sp&#xe4;ter zu adaptierende) Funktion"/>
<node CREATED="1700773666697" ID="ID_366122838" MODIFIED="1700773674164" TEXT="bekommt einen Initialiser">
<node CREATED="1700773675776" ID="ID_1981466667" MODIFIED="1700773816985" TEXT="dieser ist lediglich eine delayed Continuation"/>
<node CREATED="1700773817813" ID="ID_1896161271" MODIFIED="1700778636520" TEXT="mu&#xdf; sp&#xe4;ter mit der konkreten Instanz aufgerufen werden"/>
<node CREATED="1700773845235" ID="ID_1862822629" MODIFIED="1700773872409">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      init(this) &#10233; this wird <i>fertig gemacht</i>
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1700773954759" ID="ID_288410352" MODIFIED="1700773972621" TEXT="installiert die Trap-Door in den Funktor"/>
</node>
<node CREATED="1700773986279" ID="ID_445146544" MODIFIED="1700773993234" TEXT="trap &#x27f6; init">
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1700774014699" FOLDED="true" ID="ID_877534987" MODIFIED="1700954254084" TEXT="Kernproblem: *this erlangen">
<icon BUILTIN="messagebox_warning"/>
<node COLOR="#5b280f" CREATED="1700774132659" ID="ID_1314038863" MODIFIED="1700774158621" TEXT="nicht m&#xf6;glich ohne &#xbb;Trick&#xab;">
<icon BUILTIN="broken-line"/>
<node CREATED="1700774237148" ID="ID_160995692" MODIFIED="1700774245598" TEXT="ein Funktor wei&#xdf; nichts &#xfc;ber seine Umgebung"/>
<node CREATED="1700774247047" ID="ID_608977668" MODIFIED="1700774267213" TEXT="Referenz-Bindings helfen uns hier genau garnicht"/>
<node CREATED="1700776063690" ID="ID_1342942555" MODIFIED="1700776090893" TEXT="wenn man w&#xfc;&#xdf;te da&#xdf; man in der Function sitzt..."/>
<node CREATED="1700776091598" ID="ID_1479396852" MODIFIED="1700776108424" TEXT="...dann k&#xf6;nnte man ein Loch graben"/>
<node CREATED="1700778116488" ID="ID_159565165" LINK="https://stackoverflow.com/a/77202545/444796" MODIFIED="1700778140742" TEXT="Stichwort: small-object optimisation">
<node CREATED="1700778148404" ID="ID_1785863837" MODIFIED="1700778179089" TEXT="der Standard garantiert nur inline-Storage f&#xfc;r Funktion-pointer"/>
<node CREATED="1700778185671" ID="ID_1789341304" MODIFIED="1700778223890" TEXT="aber alle bekannten Implementierungen speichern kleine Funktorein inline"/>
<node CREATED="1700778224858" ID="ID_984729061" MODIFIED="1700778243311" TEXT="die Grenze variiert aber stark; libstdc++ ist ehr restriktiv"/>
<node CREATED="1700778290585" ID="ID_665841886" MODIFIED="1700778307814">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <u>Erfahrungswert</u>: ein &#187;Slot&#171; geht immer
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1700778314342" ID="ID_193975153" MODIFIED="1700778601433" TEXT="auf Trickserei einlassen?">
<icon BUILTIN="help"/>
<node CREATED="1700778331164" ID="ID_656522056" MODIFIED="1700778336903" TEXT="boooooo"/>
<node CREATED="1700778338201" ID="ID_1607404612" MODIFIED="1700778387125" TEXT="die Alternative ist ehr absto&#xdf;end">
<node CREATED="1700778388717" ID="ID_163265227" MODIFIED="1700778409395" TEXT="...dann m&#xfc;&#xdf;te n&#xe4;mlich der User von RandomDraw den Lifecycle sicherstellen"/>
<node CREATED="1700778410233" ID="ID_1666557118" MODIFIED="1700778442059" TEXT="konkret k&#xf6;nnte man das in die Setter einbauen, oder in den Start der Toplologie-Generierung..."/>
<node CREATED="1700778461977" ID="ID_943446060" MODIFIED="1700778483796" TEXT="aber es untergr&#xe4;bt die Idee einer Komponente">
<node CREATED="1700778504077" ID="ID_1478918380" MODIFIED="1700778515192" TEXT="im Grunde bin ich da schon an der Grenze"/>
<node CREATED="1700778515813" ID="ID_537559627" MODIFIED="1700778527816" TEXT="man mu&#xdf; hier eine Menge von der Implementierung verstanden haben"/>
<node CREATED="1700778528694" ID="ID_785919557" MODIFIED="1700778552178" TEXT="und um genau das zu verbessern, wollte ich RandomDraw einf&#xfc;hren"/>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1700778564373" ID="ID_1532831328" MODIFIED="1700778598692" TEXT="selber einkapseln; und per Assertion + Test absichern">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#435e98" CREATED="1700954234395" ID="ID_1474474663" MODIFIED="1700954251337" TEXT="(funktioniert bisher v&#xf6;llig astrein)">
<font NAME="SansSerif" SIZE="11"/>
</node>
</node>
</node>
<node CREATED="1700778699563" ID="ID_1530959927" MODIFIED="1700778715437" TEXT="den Initialiser aufrufen"/>
<node CREATED="1700778727919" ID="ID_1658914287" MODIFIED="1700778742161" TEXT="zus&#xe4;tzlich ein &quot;engage&quot; oder &quot;lock&quot; aktivieren"/>
<node CREATED="1700778854255" ID="ID_1784136751" MODIFIED="1700778862977" TEXT="die initialisierte Funktion zuweisen"/>
<node CREATED="1700778863725" ID="ID_531022608" MODIFIED="1700778875743" TEXT="und schlie&#xdf;lich aufrufen, um das tats&#xe4;chliche Ergebnis zu produzieren">
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1700778929573" ID="ID_346937119" MODIFIED="1700778948786" TEXT="das ist ebenfalls grenzwertig">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1700778980340" ID="ID_1513073706" MODIFIED="1700779203466" TEXT="weil die Zuweisung sehr wahrscheinlich dem laufenden Code die Daten de-alloziert">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      die Trap-Door mu&#223; irgendwo auf den Initialiser zugreifen, und dieser mu&#223; wiederum die vorl&#228;ufige Funktion speichern. Alle diese Allokationen m&#252;ssen direkt am Trap selber &#187;aufgeh&#228;ngt&#171; werden; wenn wir also den Trap verwerfen (durch Neuzuweisung), s&#228;gen wir den Ast ab, auf dem wir sitzen. Kann man machen, wenn man Fl&#252;gel hat, oder sowieso schon auf dem Sprung ist
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1700778952199" ID="ID_1113376718" MODIFIED="1700778979121" TEXT="sollte aber grade noch gehen, wenn nur noch der Tail-Call der Funktion folgt"/>
</node>
</node>
</node>
<node CREATED="1700778751948" ID="ID_306020657" MODIFIED="1700778847979" TEXT="Prinzip: Detail-Wissen &#xfc;ber die Funktion soll im Initialiser eingekapselt bleiben"/>
</node>
<node COLOR="#435e98" CREATED="1700779211570" ID="ID_181212829" MODIFIED="1700870784728" TEXT="sauber als Hilfskomponente aufsetzen">
<icon BUILTIN="yes"/>
<node CREATED="1700779233186" ID="ID_155856101" MODIFIED="1700779259708" TEXT="Begr&#xfc;ndung: wird schon wieder Komplex und hat ein paar vergrabene Hunde..."/>
<node COLOR="#338800" CREATED="1700779263072" ID="ID_1457586572" MODIFIED="1700957081594" TEXT="lib/lazy-init.hpp">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1700779275391" ID="ID_1990626821" MODIFIED="1700957083399" TEXT="LazyInit_test.cpp">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1700875396864" ID="ID_1861612135" MODIFIED="1700875416597" TEXT="verify_trojanLambda">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1700875396864" FOLDED="true" ID="ID_1355973273" MODIFIED="1700875456048" TEXT="verify_inlineStorage">
<icon BUILTIN="button_ok"/>
<node CREATED="1700875427276" ID="ID_403717073" MODIFIED="1700875442853" TEXT="Untersuchungen zum Verhalten von std::function (libStc++8)"/>
<node CREATED="1700875443865" ID="ID_1990486288" MODIFIED="1700875455003" TEXT="entwickle ein Pr&#xe4;dikat um Heap-Storage zu erkennen"/>
</node>
<node COLOR="#338800" CREATED="1700875396865" FOLDED="true" ID="ID_1084080047" MODIFIED="1700875514743" TEXT="verify_TargetRelocation">
<icon BUILTIN="button_ok"/>
<node CREATED="1700875464620" ID="ID_758182999" MODIFIED="1700875483607" TEXT="spiele die grauenhafte Pointer-Arrithmetik mal im Labor durch"/>
<node CREATED="1700875484403" ID="ID_52550971" MODIFIED="1700875504989" TEXT="verwende bewu&#xdf;t Beispiel mit normalen Structs, um Offsets jenseits der Slots zu bekommen"/>
<node CREATED="1700875505873" ID="ID_1289960190" MODIFIED="1700875513435" TEXT="funktioniert, auch mit einem halb-Offset"/>
</node>
<node COLOR="#338800" CREATED="1700875396865" FOLDED="true" ID="ID_1339757746" MODIFIED="1700875579772" TEXT="verify_triggerMechanism">
<icon BUILTIN="button_ok"/>
<node CREATED="1700875518455" ID="ID_1980265417" MODIFIED="1700875542195" TEXT="baue f&#xfc;r mein eigenes Verst&#xe4;ndnis nochmal den Trigger-Mechanismus zu fu&#xdf; nach"/>
<node CREATED="1700875543520" ID="ID_92771542" MODIFIED="1700875550945" TEXT="k&#xf6;nnte auch zur Dokumentation hilfreich sein"/>
<node CREATED="1700875554730" ID="ID_1759963840" MODIFIED="1700875577811" TEXT="(an den eigentlichen Trigger kommt man nicht ran, da der zu fest mit LazyInit verkopelt ist)"/>
</node>
<node COLOR="#338800" CREATED="1700875396865" FOLDED="true" ID="ID_407572310" MODIFIED="1700875618722" TEXT="verify_lazyInitialisation">
<icon BUILTIN="button_ok"/>
<node CREATED="1700875581782" ID="ID_902572155" MODIFIED="1700875588657" TEXT="spiele ein bewu&#xdf;t einfaches Beispiel durch"/>
<node CREATED="1700875589219" ID="ID_831881033" MODIFIED="1700875597848" TEXT="LazyInit direkt als top-level-Klasse"/>
<node CREATED="1700875598444" ID="ID_373137353" MODIFIED="1700875604078" TEXT="erbt direkt von einer function"/>
<node CREATED="1700875605831" ID="ID_422784862" MODIFIED="1700875617830" TEXT="pr&#xfc;fe, da&#xdf; der Initialiser nur einmal l&#xe4;uft"/>
</node>
<node COLOR="#338800" CREATED="1700875396866" FOLDED="true" ID="ID_1176534247" MODIFIED="1700957085796" TEXT="verify_complexUsageWithCopy">
<icon BUILTIN="button_ok"/>
<node CREATED="1700875626785" ID="ID_1403498874" MODIFIED="1700875642770" TEXT="baue bewu&#xdf;t ein m&#xf6;glichst verschlungenes (realisitisches) Beispiel"/>
<node CREATED="1700875643550" ID="ID_1209015029" MODIFIED="1700875657152" TEXT="macht eine nicht-triviale Verknp&#xfc;fung, d.h. adaptiert die gegebene Funktion noch"/>
<node CREATED="1700875658155" ID="ID_278966157" MODIFIED="1700875690711">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      die Funktion ist dieses Mal <b>ein Feld</b>&#160;<i>im </i>abgeleiteten Objekt (yess!)
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1700875716980" ID="ID_649768460" MODIFIED="1700875737214" TEXT="default-ctor installiert fallback-Funkction"/>
<node CREATED="1700875738346" ID="ID_1264877418" MODIFIED="1700875746853" TEXT="ein ctor mit explizit gegebener Function"/>
<node COLOR="#338800" CREATED="1700875748355" ID="ID_103299394" MODIFIED="1700954036849" TEXT="Testf&#xe4;lle">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1700875754418" FOLDED="true" ID="ID_660767780" MODIFIED="1700954033543" TEXT="default-Objekt">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1700875764710" FOLDED="true" ID="ID_695451647" MODIFIED="1700954031912" TEXT="Zustand nach Konstruktion">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1700875806915" ID="ID_1651702944" MODIFIED="1700878163584" TEXT="Function-Feld ist nicht initialisiert">
<icon BUILTIN="broken-line"/>
<node CREATED="1700875834493" ID="ID_1564551745" MODIFIED="1700875839823" TEXT="not d1.fun"/>
<node CREATED="1700875841150" ID="ID_88050393" MODIFIED="1700875849677" TEXT="throws invalid_function_call"/>
<node COLOR="#435e98" CREATED="1700875853129" ID="ID_502226878" MODIFIED="1700878147483" TEXT="Analyse(debugger)">
<icon BUILTIN="list"/>
<node CREATED="1700876345072" ID="ID_1248014496" MODIFIED="1700876355643" TEXT="Ha! Feld wird nach Basisklasse initialisiert"/>
<node CREATED="1700876356351" ID="ID_1118675302" MODIFIED="1700876372841" TEXT="d.h. der bereits platzierte Trojaner wird &#xfc;berschrieben"/>
<node CREATED="1700876373789" ID="ID_1710398995" MODIFIED="1700876376930" TEXT="oh wie schade"/>
</node>
<node COLOR="#435e98" CREATED="1700876399272" ID="ID_96046426" MODIFIED="1700878150904" TEXT="&#x27f9; brauche">
<node CREATED="1700876408887" ID="ID_1752186900" MODIFIED="1700876416771" TEXT="Leer-Initialisierung von LazyInit"/>
<node CREATED="1700876426498" ID="ID_437510896" MODIFIED="1700876503102" TEXT="Setter f&#xfc;r sp&#xe4;teres Installieren">
<arrowlink COLOR="#4d5b96" DESTINATION="ID_932710079" ENDARROW="Default" ENDINCLINATION="776;-58;" ID="Arrow_ID_1938279623" STARTARROW="None" STARTINCLINATION="-349;33;"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1700878155031" ID="ID_980233097" MODIFIED="1700878157482" TEXT="tut">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1700875772636" ID="ID_1469062137" MODIFIED="1700878173636" TEXT="aufrufen : default-Function l&#xe4;uft">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1700875784147" ID="ID_542765389" MODIFIED="1700878175169" TEXT="Zustand danach">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1700875788327" ID="ID_1387936235" MODIFIED="1700878176498" TEXT="weise ein Objekt mit explizit gebundener Funktion zu">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1700878177787" ID="ID_707719092" MODIFIED="1700878185308" TEXT="engaged / reject copy">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1700930546516" FOLDED="true" ID="ID_1564171170" MODIFIED="1700954019711" TEXT="chained / repeated init">
<linktarget COLOR="#3fb0c8" DESTINATION="ID_1564171170" ENDARROW="Default" ENDINCLINATION="-852;94;" ID="Arrow_ID_474620988" SOURCE="ID_582127020" STARTARROW="None" STARTINCLINATION="353;26;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1700930691509" ID="ID_1932503456" MODIFIED="1700954017994" TEXT="nach Erweiterung auf chained-Init">
<icon BUILTIN="info"/>
</node>
<node COLOR="#338800" CREATED="1700930772985" FOLDED="true" ID="ID_437187802" MODIFIED="1700953905576" TEXT="Fall-1 schrittweise &#x27f9; 2.Funktion wird direkt angewendet">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1700930810316" FOLDED="true" ID="ID_1951631206" MODIFIED="1700953901716" 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&#xe4;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 &#x27f6; Fehler verschwindet">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      //&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;CHECK (1 == invoked);
    </p>
    <p>
      //&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;CHECK (init);
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1700932454870" ID="ID_1214658102" MODIFIED="1700932500906" TEXT="nur die letzte Zeile auskommetiert &#x27f6; bad_function_call expcption (manchmal SEGFAULT)"/>
</node>
<node CREATED="1700932559871" ID="ID_291091970" MODIFIED="1700932592585">
<richcontent TYPE="NODE"><html>
  <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&#xfc;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-&#x3bb;"/>
<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/>
  <body>
    <p>
      previousInit
    </p>
    <p>
      Details:&lt;error reading variable: Cannot access memory at address 0x3000000030&gt;
    </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="&#x27f9; Problem steckt im erweiterten Memory-Management f&#xfc;r chained-initialiser"/>
<node BACKGROUND_COLOR="#d5bb9b" COLOR="#fa002a" CREATED="1700932787977" ID="ID_1177559316" MODIFIED="1700953280256">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      gedankenloser Schmuh :
    </p>
    <p>
      &#160;move (pendingInit_) .....
    </p>
    <p>
      &#160;und nachher pendingInit_.reset()
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#f23836" DESTINATION="ID_1177559316" ENDARROW="Default" ENDINCLINATION="-444;622;" ID="Arrow_ID_291683444" SOURCE="ID_173554336" STARTARROW="Default" STARTINCLINATION="852;0;"/>
<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/>
  <body>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;__shared_ptr(__shared_ptr&amp;&amp; __r) noexcept
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;: _M_ptr(__r._M_ptr), _M_refcount()
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;{
    </p>
    <p>
      _M_refcount._M_swap(__r._M_refcount);
    </p>
    <p>
      __r._M_ptr = 0;
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;}
    </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 &#x3bb;"/>
<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 COLOR="#338800" CREATED="1700953800190" ID="ID_1286591280" LINK="#ID_1264532109" MODIFIED="1700953891597" TEXT="sp&#xe4;ter zeict sich: das ist hier tats&#xe4;chlich Schmuh &#xd83e;&#xdc46; ein 2. Bug"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1700934610437" ID="ID_859515833" MODIFIED="1700934638430" TEXT="ein ganz banaler Programmierfehler">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ... kein Problem mit der Logik
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1700941824310" ID="ID_594264747" MODIFIED="1700941827869" TEXT="gefixt... tut">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1700941831718" ID="ID_1778726043" MODIFIED="1700944413355" TEXT="Fall-2 auf einmal &#x27f9; kaskadierte Aurfure im Lazy-Init">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1700944444321" FOLDED="true" ID="ID_1888635944" MODIFIED="1700954021865" TEXT="copy/move during init">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1700950281812" ID="ID_182597722" MODIFIED="1700954004491" TEXT="insgesamt vier Instanzen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1700950291738" ID="ID_1014782121" MODIFIED="1700954003493" TEXT="wirr kopiert, verschoben und vertauscht">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1700950302192" ID="ID_1141440341" MODIFIED="1700954002443" TEXT="dabei mit bis zu 3 Funktionen verkettet">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1700950311851" ID="ID_843032083" MODIFIED="1700954001203" TEXT="alle Berechnungen sind plausibel">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1700950347418" FOLDED="true" ID="ID_1458898624" LINK="#ID_700182781" MODIFIED="1700954006675" TEXT="Speicherverhlaten beobachtet">
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1700953910789" ID="ID_174734454" MODIFIED="1700953964360" TEXT="Irregularit&#xe4;t beobachtet">
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#435e98" CREATED="1700953922570" ID="ID_1253492564" LINK="#ID_523796059" MODIFIED="1700953967039" TEXT="dahinter verbarg sich ein Memory-corruption-Bug vom Feinsten"/>
<node COLOR="#338800" CREATED="1700953972062" ID="ID_1218264036" MODIFIED="1700953997339" TEXT="damit nach kursorischer &#xdc;berpr&#xfc;fung saubern">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1700786308827" ID="ID_627670298" MODIFIED="1700865645701" TEXT="der Trojanische-Funktor">
<icon BUILTIN="button_ok"/>
<node COLOR="#5b280f" CREATED="1700786329960" ID="ID_579721558" MODIFIED="1700829943723" TEXT="bettet einen shared_ptr ein">
<linktarget COLOR="#e64156" DESTINATION="ID_579721558" ENDARROW="Default" ENDINCLINATION="581;-41;" ID="Arrow_ID_1803799256" SOURCE="ID_1318522029" STARTARROW="None" STARTINCLINATION="-98;-231;"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1700829899760" HGAP="32" ID="ID_1908682930" MODIFIED="1700829932102" TEXT="liegt wohl am nicht-trivialen copy-ctor" VSHIFT="6">
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#338800" CREATED="1700829151354" ID="ID_1017319920" MODIFIED="1700829172371" TEXT="kann nur einen einfachen Pointer auf das Delegate halten">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1700786341382" ID="ID_1622424867" MODIFIED="1700792030724" TEXT="delegiert &#xfc;ber diesen um Funktor(Referenz) zu bekommen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1700786363539" ID="ID_1467357967" MODIFIED="1700792032414" TEXT="ruft &#xfc;ber diese Referenz den tats&#xe4;chlichen Funktor">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1700786402490" ID="ID_846455233" MODIFIED="1700870769671" TEXT="Trick-Mechanismus zur this-Ermittlung">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1700786427859" ID="ID_569731992" MODIFIED="1700865640264" TEXT="mu&#xdf; zu Beginn &#xbb;proben&#xab;">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1700786446976" ID="ID_646471757" MODIFIED="1700865636679" TEXT="Zusatz-Problem: das &#x3bb; sieht nur seine capture">
<icon BUILTIN="button_ok"/>
<node CREATED="1700786476589" ID="ID_1376774629" MODIFIED="1700786490117" TEXT="&#x27f6; also mehrstufig vorgehen"/>
<node CREATED="1700786494226" ID="ID_990128277" MODIFIED="1700786508492" TEXT="generisch das Verh&#xe4;ltnis zur std::function ermitteln"/>
<node CREATED="1700786514967" ID="ID_1504854205" MODIFIED="1700786531452" TEXT="ebenso das Verh&#xe4;ltnis von der std::function zu *this"/>
</node>
<node COLOR="#338800" CREATED="1700794680114" ID="ID_1167943729" MODIFIED="1700870764522" TEXT="Vorraussetzung: Inline-Storage in std::function">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1700794692834" ID="ID_1004006687" MODIFIED="1700794700255" TEXT="Experiment (im Unit-Test)">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1700794763222" ID="ID_122093052" MODIFIED="1700794788339" TEXT="best&#xe4;tigt: &#x3bb;-Addresse == Addresse des capture im Lambda">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#e9ecac" COLOR="#ad0163" CREATED="1700794701860" ID="ID_1782883387" MODIFIED="1700829809186">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <u>Ergebnis</u>: funktioniert <b>nicht</b>&#160;mit shared_ptr
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="broken-line"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1700794792578" ID="ID_1451884191" MODIFIED="1700829893535" TEXT="wenn Lambda einfachen ptr captured &#x27fc; Stack-Addresse">
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1700794830533" ID="ID_871196012" MODIFIED="1700829893535" TEXT="wenn Lambda shared_ptr captured &#x27fc; Heap-Addresse">
<icon BUILTIN="info"/>
</node>
<node CREATED="1700829830508" ID="ID_1902079754" MODIFIED="1700829882897" TEXT="wenn Lambda char[16] captured &#x27fc; Stack-Addresse ">
<icon BUILTIN="info"/>
</node>
<node CREATED="1700829855310" ID="ID_697686576" MODIFIED="1700829882896" TEXT="wenn Lambda char[24] captured &#x27fc; Heap-Addresse ">
<icon BUILTIN="info"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1700794933479" ID="ID_1065100472" MODIFIED="1700856412689" TEXT="&#x27f9; Redesign">
<node COLOR="#338800" CREATED="1700795056795" ID="ID_957544868" MODIFIED="1700836667274" TEXT="der Trojaner kann lediglich das Delegate aufrufen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1700794955820" ID="ID_1318522029" MODIFIED="1700856407262" TEXT="Storage-Management mu&#xdf; separat erfolgen">
<arrowlink COLOR="#e64156" DESTINATION="ID_579721558" ENDARROW="Default" ENDINCLINATION="581;-41;" ID="Arrow_ID_1803799256" STARTARROW="None" STARTINCLINATION="-98;-231;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1700795105608" ID="ID_1474010761" MODIFIED="1700870759558" TEXT="bleibt nur der LazyInit-Mix-in selber">
<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="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">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1700795238903" ID="ID_762094742" MODIFIED="1700856350950" TEXT="man k&#xf6;nnte h&#xf6;chstens nach Init abkoppeln">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1700795252717" ID="ID_323775761" MODIFIED="1700856352519" TEXT="und den shared_ptr auch als Init-Flag mi&#xdf;brauchen">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1700846052905" ID="ID_540455340" MODIFIED="1700954263631" TEXT="Initialiser bauen">
<icon BUILTIN="button_ok"/>
<node CREATED="1700846059161" ID="ID_1706977768" MODIFIED="1700846067230" TEXT="puh... das wird komplex">
<icon BUILTIN="smiley-angry"/>
<node CREATED="1700846071031" ID="ID_1148836740" MODIFIED="1700846284270" TEXT="und zwar weil LazyInit strenggenommen den genauen Functor-Typ nicht kennen sollte">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      In der Tat mache ich mir da grade selber das Leben schwer, aber die <i>billige L&#246;sung</i>&#160;w&#252;rde zu Verkopplung der Belange beim Client f&#252;hren, insofern der Funktor-Typ Bestandteil der Signatur von LazyInit werden m&#252;&#223;te. Das bedeutet, da es ein mix-In ist, m&#252;&#223;te man diesen Typ vor Instatiierung bereits kennen oder sp&#228;testens im Zuge der Instantiierung irgendwie (per Metaprogramming) ermitteln. Obwohl dies komplett unn&#246;tig w&#228;re &#8212; denn f&#252;r die gew&#252;nsche Funktionalit&#228;t gen&#252;gt es v&#246;llig, wenn man den target-Functor (und damit die Signatur) erst in dem Moment erf&#228;hrt, in dem tats&#228;chlich ein Initialiser vorzubereiten ist.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1700846290266" ID="ID_1685278359" MODIFIED="1700846318281" TEXT="Also bleibt nur: LazyInit packt den eigentlichen Initialiser in einen opaque container"/>
</node>
<node COLOR="#435e98" CREATED="1700856150252" ID="ID_1283688015" MODIFIED="1700865608154" TEXT="Address-Relocation">
<icon BUILTIN="messagebox_warning"/>
<node BACKGROUND_COLOR="#fafe99" COLOR="#fa002a" CREATED="1700856167326" ID="ID_903304450" MODIFIED="1700856175977" TEXT="der Compiler weint und winselt">
<icon BUILTIN="broken-line"/>
</node>
<node CREATED="1700856179344" ID="ID_375408809" MODIFIED="1700856569080" TEXT="was ich hier mache, ist gef&#xe4;hrlich und ohne Sicherheitsnetz">
<icon BUILTIN="smiley-oh"/>
</node>
<node CREATED="1700856273967" ID="ID_1509015603" MODIFIED="1700856291461" TEXT="die Annahme ist: Objekt-Layout bleibt relativ gleich, auch wenn man kopiert"/>
<node CREATED="1700856292447" ID="ID_1136758042" MODIFIED="1700856308091" TEXT="unter dieser Annahme &#x27f9; ausschlie&#xdf;lich mit char* rechnen"/>
<node COLOR="#338800" CREATED="1700856442805" ID="ID_1428218459" MODIFIED="1700856461862" TEXT="Safeguard bzgl small-object-Optimisation">
<icon BUILTIN="button_ok"/>
<node CREATED="1700856464866" ID="ID_1584490547" MODIFIED="1700856483371" TEXT="mache einen Probelauf in static-init"/>
<node CREATED="1700856483983" ID="ID_1329241193" MODIFIED="1700856515410" TEXT="sollte eine Runtime hierf&#xfc;r einen Heap-Allokation in std::function machen..."/>
<node CREATED="1700856516043" ID="ID_1981525905" MODIFIED="1700856531711" TEXT="...dann bricht das Programm mit Exception (und std::terminate()) ab."/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1700856538050" ID="ID_30859769" MODIFIED="1700856555062" TEXT="aber die Layout-Annahme selber kann ich leider nicht pr&#xfc;fen">
<icon BUILTIN="clanbomber"/>
</node>
<node COLOR="#338800" CREATED="1700865572986" ID="ID_819138430" MODIFIED="1700865582889" TEXT="zumindest im Test nachgestellt und funktioniert">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1700865668069" ID="ID_96300659" MODIFIED="1700954174939" TEXT="Speicherverwaltung">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1700865679180" ID="ID_3672857" MODIFIED="1700869506867">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      InPlaceBuffer<i>&#160;mi&#223;braucht</i>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
<node CREATED="1700865718074" ID="ID_46417679" MODIFIED="1700865732256" TEXT="er setzt eigentlich gemeinsame Basisklasse vorraus"/>
<node CREATED="1700865733257" ID="ID_19147628" MODIFIED="1700865768147" TEXT="InPlaceAnyHolder w&#xfc;rde den Fall unterst&#xfc;tzen, ist aber zu schwergewichtig (VTable)"/>
<node CREATED="1700865775966" ID="ID_1852703821" MODIFIED="1700865806222" TEXT="ist hier grade noch so machbar, da wir das Objekt nach Erstellung nur noch verwalten"/>
</node>
<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&#xfc;r Verkettung jeweils in das Delegate verschieben">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1700954157294" ID="ID_1046438647" LINK="#ID_1097307622" MODIFIED="1700954173869" TEXT="Speicherverhalten mit EventLog beobachtet">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1700865861639" ID="ID_409549839" MODIFIED="1700865919942" TEXT="gegebenes Init-&#x3bb; adaptieren">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1700865886375" ID="ID_594517704" MODIFIED="1700865897328" TEXT="self-Offset capture">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1700865898011" ID="ID_831512370" MODIFIED="1700865904118" TEXT="self-Offset restore">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1700865906981" ID="ID_1800834277" MODIFIED="1700865917596" TEXT="am Ende Referenz auf target-Functor liefern">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1700871032790" ID="ID_1056099589" MODIFIED="1700878109349" TEXT="bereits installierten Initialiser ersetzen">
<icon BUILTIN="button_ok"/>
<node CREATED="1700871049276" ID="ID_932710079" MODIFIED="1700876495342" TEXT="in der Tat ... das kann vorkommen">
<linktarget COLOR="#4d5b96" DESTINATION="ID_932710079" ENDARROW="Default" ENDINCLINATION="776;-58;" ID="Arrow_ID_1938279623" SOURCE="ID_437510896" STARTARROW="None" STARTINCLINATION="-349;33;"/>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1700871060514" ID="ID_600057244" MODIFIED="1700871092594" TEXT="sollte der realisierte Mechanismus auch k&#xf6;nnen...">
<node CREATED="1700871098989" ID="ID_700052304" MODIFIED="1700871109959" TEXT="und zwar macht hier shared_ptr die ganze Magie"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1700871113915" ID="ID_1741357094" MODIFIED="1700871131876" TEXT="die Initialisierungen k&#xf6;nnen sich durchaus verzweigen">
<icon BUILTIN="messagebox_warning"/>
</node>
</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">
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#435e98" CREATED="1700878086446" ID="ID_1368715362" MODIFIED="1700883011557" TEXT="l&#xf6;sen durch ein MarkDisabled() - Tag">
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#338800" CREATED="1700871143583" ID="ID_1088454070" MODIFIED="1700934358632" TEXT="mu&#xdf; dann aber eine Setter-Funktion public machen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1700934235151" ID="ID_988517206" MODIFIED="1700954145894" TEXT="Installieren des Initialisers nun stets &#xfc;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="button_ok"/>
<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="#e0ceaa" COLOR="#690f14" CREATED="1700871279919" ID="ID_1126055663" MODIFIED="1700954112820">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      hier besteht ein latentes semantsiches Problem:
    </p>
    <p>
      lazyInit &#10233; Objekt ist erst mal <i>noch nicht ganz</i>&#160;initialisiert
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#a11470" DESTINATION="ID_615420321" ENDARROW="Default" ENDINCLINATION="-38;-156;" ID="Arrow_ID_1147775137" STARTARROW="None" STARTINCLINATION="-409;35;"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1700883132460" ID="ID_1624384536" MODIFIED="1700883156773" TEXT="des Genaueren: der &#xbb;Trojaner&#xab; sieht wir ein valider Funktor aus"/>
<node CREATED="1700883162688" ID="ID_1541865350" MODIFIED="1700883212555" TEXT="sofern sich Initialisierung den bestehenden Funktor aufgreift..."/>
<node CREATED="1700883213489" ID="ID_1802613840" MODIFIED="1700883224039" TEXT="...besteht zumindest die Gefahr f&#xfc;r Endlosschleifen">
<icon BUILTIN="broken-line"/>
</node>
<node COLOR="#435e98" CREATED="1700883266746" FOLDED="true" ID="ID_541587975" MODIFIED="1700954140305" TEXT="dieses Problem k&#xf6;nnte nur durch LazyInit selber addressiert werden">
<icon BUILTIN="yes"/>
<node CREATED="1700883302425" ID="ID_601939875" MODIFIED="1700883331621" TEXT="isInit()"/>
<node CREATED="1700883367516" ID="ID_358220582" MODIFIED="1700883381190" TEXT="hilft nicht bei kaskadierten Aufrufen"/>
<node CREATED="1700883887222" ID="ID_1972271604" LINK="#ID_1052362467" MODIFIED="1700954133743" TEXT="Nur der Installations-Mechanismus h&#xe4;tte eine Chance"/>
</node>
</node>
</node>
</node>
<node COLOR="#c1019e" CREATED="1700856585458" ID="ID_373199802" MODIFIED="1700856611800" TEXT="ich f&#xfc;hl mich schei&#xdf;e">
<font NAME="SansSerif" SIZE="16"/>
<icon BUILTIN="smily_bad"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1700871359629" FOLDED="true" ID="ID_615420321" MODIFIED="1700957193306" TEXT="kann nicht alle Usage-Pattern abdecken">
<linktarget COLOR="#a11470" DESTINATION="ID_615420321" ENDARROW="Default" ENDINCLINATION="-38;-156;" ID="Arrow_ID_1147775137" SOURCE="ID_1126055663" STARTARROW="None" STARTINCLINATION="-409;35;"/>
<icon BUILTIN="broken-line"/>
<node CREATED="1700871415082" ID="ID_1938566813" MODIFIED="1700871510648" TEXT="es geht allerdings um ein ehr fortgeschrittenes Szenario">
<icon BUILTIN="info"/>
<node CREATED="1700871453605" ID="ID_1763209918" MODIFIED="1700871474745" TEXT="Installieren einer dynamischen Manipulation &#xfc;ber ein bestehendes Mapping">
<icon BUILTIN="forward"/>
</node>
<node CREATED="1700871479242" ID="ID_269811751" MODIFIED="1700871501010" TEXT="es funktioniert, sofern man die erste Konfiguration tats&#xe4;chlich einmal aktiviert">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1700871434600" ID="ID_211010484" MODIFIED="1700871446348" TEXT="im Test hab ich das, aber ob es jemals gebraucht wird?"/>
</node>
<node CREATED="1700871595595" ID="ID_370281479" MODIFIED="1700871614083" TEXT="es lie&#xdf;e sich allerdings durchaus realisieren">
<icon BUILTIN="smiley-neutral"/>
<node CREATED="1700871621703" ID="ID_350569158" MODIFIED="1700871630435" TEXT="und zwar, indem man Initialisierer verkettet"/>
<node CREATED="1700871631338" ID="ID_382997669" MODIFIED="1700878229737" TEXT="iz werds aba wuid">
<icon BUILTIN="smiley-angry"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1700871688167" ID="ID_393112560" MODIFIED="1700871731833" TEXT="warum sehe ich immer sofort noch eine L&#xf6;sung??">
<icon BUILTIN="smiley-oh"/>
<icon BUILTIN="smily_bad"/>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1700871698421" ID="ID_856751270" MODIFIED="1700871709596" TEXT="warum gebe ich mich nicht l&#xe4;ngst geschlagen???">
<icon BUILTIN="help"/>
<node CREATED="1700871745466" ID="ID_143069674" MODIFIED="1700871754102" TEXT="die Lektion ist inwsichen sowas von klar"/>
<node CREATED="1700871754718" ID="ID_845938579" MODIFIED="1700871770128">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      dieses Design ist <b>MIST</b>
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1700883451009" FOLDED="true" 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() &#x27fc; true(leer) + kein Funktor"/>
<node CREATED="1700883537958" ID="ID_1244902831" MODIFIED="1700883549760" TEXT="isInit() &#x27fc; false + Trap"/>
<node CREATED="1700883563354" ID="ID_406459173" MODIFIED="1700883580135" TEXT="Trap &#x27f6; neuer Funktor"/>
</node>
<node CREATED="1700883585031" ID="ID_785231222" MODIFIED="1700883819027" TEXT="Fall-2">
<node CREATED="1700883478738" ID="ID_839435401" MODIFIED="1700883503483" TEXT="isInit() &#x27fc; true + echter Funktor"/>
<node CREATED="1700883537958" ID="ID_1512311774" MODIFIED="1700883549760" TEXT="isInit() &#x27fc; false + Trap"/>
<node CREATED="1700883563354" ID="ID_8356372" MODIFIED="1700883580135" TEXT="Trap &#x27f6; neuer Funktor"/>
</node>
<node CREATED="1700883590811" ID="ID_1518533927" MODIFIED="1700883821132" TEXT="Fall-3">
<node CREATED="1700883537958" ID="ID_204292878" MODIFIED="1700883549760" TEXT="isInit() &#x27fc; false + Trap"/>
<node CREATED="1700883638446" ID="ID_1317225183" MODIFIED="1700883669832" TEXT="+ neues Delegate + Trap"/>
<node CREATED="1700883653890" ID="ID_1572351022" MODIFIED="1700883656190" TEXT="+ ..."/>
<node CREATED="1700883563354" ID="ID_536028687" MODIFIED="1700883580135" TEXT="Trap &#x27f6; neuer Funktor"/>
</node>
</node>
<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 &#x27f9; Fall-1"/>
<node CREATED="1700884059833" ID="ID_1932722762" MODIFIED="1700884071728" TEXT="not pendingInit + Funktor &#x27f9; Fall-2">
<node CREATED="1700884197594" ID="ID_1851874040" MODIFIED="1700884208296" TEXT="dieser Funktor w&#xe4;re ein Vorl&#xe4;ufer"/>
</node>
<node CREATED="1700884095741" ID="ID_1167670160" MODIFIED="1700884112957" TEXT="pendingInit + Funktor &#x27f9; Fall-3">
<node CREATED="1700884240680" ID="ID_1327583430" MODIFIED="1700884265507" TEXT="pendingInit zuerst anwenden &#x27fc; &#xdc;bergang in Fall-2"/>
</node>
<node CREATED="1700884114752" ID="ID_364127230" MODIFIED="1700884129803" TEXT="pendingInit + kein Funktor &#x27f9; LogicBroken"/>
</node>
<node COLOR="#338800" CREATED="1700884471281" ID="ID_944993217" MODIFIED="1700930497292" TEXT="L&#xf6;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 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">
<linktarget COLOR="#df4480" DESTINATION="ID_1100836382" ENDARROW="Default" ENDINCLINATION="91;0;" ID="Arrow_ID_902131970" SOURCE="ID_1845471747" STARTARROW="None" STARTINCLINATION="91;0;"/>
</node>
<node CREATED="1700884662223" ID="ID_600393324" MODIFIED="1700884669922" TEXT="damit liegt ein valider Funktor vor"/>
<node CREATED="1700884670570" ID="ID_603115571" MODIFIED="1700884678473" TEXT="der aktuelle Initialiser kann diesen verwenden"/>
<node CREATED="1700884707938" ID="ID_1487565427" MODIFIED="1700884794311" TEXT="Rekursion">
<linktarget COLOR="#b530c5" DESTINATION="ID_1487565427" ENDARROW="Default" ENDINCLINATION="9;34;" ID="Arrow_ID_1425846605" SOURCE="ID_1845471747" STARTARROW="None" STARTINCLINATION="-123;63;"/>
<node CREATED="1700884712862" ID="ID_1270371043" MODIFIED="1700884740601" TEXT="einen bestehenden pendingInit in die den adaptierten Initializer"/>
<node CREATED="1700884753993" ID="ID_1845471747" MODIFIED="1700884805374" TEXT="dort wird er zuerst aurgerufen">
<arrowlink COLOR="#df4480" DESTINATION="ID_1100836382" ENDARROW="Default" ENDINCLINATION="91;0;" ID="Arrow_ID_902131970" STARTARROW="None" STARTINCLINATION="91;0;"/>
<arrowlink COLOR="#b530c5" DESTINATION="ID_1487565427" ENDARROW="Default" ENDINCLINATION="9;34;" ID="Arrow_ID_1425846605" STARTARROW="None" STARTINCLINATION="-123;63;"/>
</node>
</node>
</node>
<node CREATED="1700884833301" ID="ID_1023052501" MODIFIED="1700884835988" TEXT="Fall-2">
<node CREATED="1700884837024" ID="ID_502217686" MODIFIED="1700884841120" TEXT="der Fall ist speziell"/>
<node CREATED="1700884841856" ID="ID_1654607159" MODIFIED="1700884865645" TEXT="das Objekt ist &#xbb;engaged&#xab;, d.h. darf nicht mehr bewegt werden"/>
<node CREATED="1700884866732" ID="ID_1005926094" MODIFIED="1700884910994" TEXT="unter diesen Umst&#xe4;nden ist gar keine lazy-Init notwendig"/>
</node>
<node COLOR="#435e98" CREATED="1700885072177" ID="ID_1660971679" MODIFIED="1700930490340" TEXT="Antwort: ist ohne gro&#xdf;en Aufwand machbar">
<icon BUILTIN="yes"/>
</node>
</node>
<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">
<arrowlink COLOR="#517184" DESTINATION="ID_1059814147" ENDARROW="Default" ENDINCLINATION="15;-20;" ID="Arrow_ID_1161089832" STARTARROW="None" STARTINCLINATION="-149;0;"/>
<arrowlink COLOR="#5e5a98" DESTINATION="ID_1439092323" ENDARROW="Default" ENDINCLINATION="93;-8;" ID="Arrow_ID_1648939093" STARTARROW="None" STARTINCLINATION="86;0;"/>
</node>
<node CREATED="1700885175427" ID="ID_1439092323" MODIFIED="1700885335623" TEXT="je nach Fall den Adapter konfigurieren">
<linktarget COLOR="#5e5a98" DESTINATION="ID_1439092323" ENDARROW="Default" ENDINCLINATION="93;-8;" ID="Arrow_ID_1648939093" SOURCE="ID_933835878" STARTARROW="None" STARTINCLINATION="86;0;"/>
<node CREATED="1700885192462" ID="ID_271012983" MODIFIED="1700885202371" TEXT="Fall-1 : nur Trap entfernen"/>
<node CREATED="1700885205327" ID="ID_1557648916" MODIFIED="1700885220502" TEXT="Fall-3 : Trap entfernen + Vorl&#xe4;ufer aufrufen"/>
</node>
</node>
<node CREATED="1700885226922" ID="ID_1059814147" MODIFIED="1700885318282" TEXT="Fall-2">
<linktarget COLOR="#517184" DESTINATION="ID_1059814147" ENDARROW="Default" ENDINCLINATION="15;-20;" ID="Arrow_ID_1161089832" SOURCE="ID_933835878" STARTARROW="None" STARTINCLINATION="-149;0;"/>
<node CREATED="1700885257048" ID="ID_759696290" MODIFIED="1700885270297" TEXT="es liegt bereits ein echter Funktor vor"/>
<node CREATED="1700885270910" ID="ID_845153085" MODIFIED="1700885283866" TEXT="den Init-Funktor mit (this) direkt aufrufen"/>
<node CREATED="1700885284844" ID="ID_1493413821" MODIFIED="1700925478010" TEXT="keinen pendingInit zur&#xfc;ckgeben (Objekt bleibt gesperrt)"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1700885399157" ID="ID_1052362467" MODIFIED="1700930526102" TEXT="Erg&#xe4;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 COLOR="#338800" CREATED="1700885455310" ID="ID_75201701" MODIFIED="1700930517963" TEXT="zus&#xe4;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/>
  <body>
    <p>
      <i>darauf </i>kommt es jetzt auch nicht mehr an
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1700885514470" ID="ID_1944104952" MODIFIED="1700885786804" TEXT="Hinweis/Warnung: die pending-Functors sind shared">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Funktor ist Funktor!
    </p>
    <p>
      Deshalb sind sie ja stateless (und m&#252;ssen auch so bleiben, also nicht mutable). F&#252;r jeweils <i>eine Instanz</i>&#160;wird ein Funktor einfach &#187;verbrannt&#171;, indem man ihn aufruft und danach das pendingInit leert. Und zwar auf <b>*self</b>&#160;&#160;&#8212; der Funktor als Solcher bleibt stateless. Wenn ihn noch jemand anders referenziert, dann sch&#246;n....
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1700885787889" ID="ID_532859014" MODIFIED="1700885850873">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Beim Umkonfigurieren wird der pendingInit <i>verschoben</i>
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      und zwar aus dem LazyInit-Objekt in den Adapter hinein. Der use-count bleibt dadurch gleich.
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#338800" CREATED="1700885870078" ID="ID_1085520028" MODIFIED="1700930525033" TEXT="wenn es einen pendingInit gibt (&#x27f9;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&#xdf; 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 COLOR="#338800" CREATED="1700953516124" ID="ID_1258802311" MODIFIED="1700954099248" TEXT="Anpassung: Memory-Management an die jeweilige (rekursive) Initializer-Instanz binden">
<arrowlink COLOR="#37b613" DESTINATION="ID_1264532109" ENDARROW="Default" ENDINCLINATION="-193;0;" ID="Arrow_ID_753230844" STARTARROW="None" STARTINCLINATION="172;156;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1700930708239" ID="ID_582127020" MODIFIED="1700954096733" TEXT="Test: verify_complexUsageWithCopy">
<arrowlink COLOR="#3fb0c8" DESTINATION="ID_1564171170" ENDARROW="Default" ENDINCLINATION="-852;94;" ID="Arrow_ID_474620988" STARTARROW="None" STARTINCLINATION="353;26;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1700941790083" HGAP="25" ID="ID_1792069131" MODIFIED="1700941812331" TEXT="mal im einzelnen beobachtet" VSHIFT="18">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1700941796973" FOLDED="true" ID="ID_1097307622" MODIFIED="1700954173868" TEXT="Allokationen verifiziert">
<icon BUILTIN="button_ok"/>
<node CREATED="1700950320909" ID="ID_700182781" MODIFIED="1700950401023" TEXT="Memory-Verhalten mit lib::test::Tracker + EventLog beobachtet">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;using lib::test::Tracker;
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;auto&amp; log = Tracker::log;
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;log.clear (this);
    </p>
    <p>
      
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;auto f1 = [t=Tracker{11}](int i){return i+1; };
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;auto f2 = [t=Tracker{22}](int i){return i/2; };
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;auto f3 = [t=Tracker{33}](int i){return i-1; };
    </p>
    <p>
      ...
    </p>
    <p>
      ...
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;cout &lt;&lt; &quot;____Tracker-Log_______________\n&quot;
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&lt;&lt; util::join(Tracker::log,&#160;&#160;&#160;&#160;&#160;&#160;&quot;\n&quot;)
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&lt;&lt; &quot;\n&#9472;&#9472;&#9472;&#9596;&#9473;&#9473;&#9473;&#9473;&#9473;&#9473;&#9473;&#9473;&#9473;&#9473;&#9473;&#9598;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&quot;&lt;&lt;endl;
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1700950417857" ID="ID_1410694943" MODIFIED="1700950428315" TEXT="damit sehe ich zumindest, wo Lambdas kopiert werden"/>
<node CREATED="1700950429279" ID="ID_1051322974" MODIFIED="1700950448107" TEXT="grob betrachtet erscheinen die Aufrufe plausibel"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1700950449348" ID="ID_523796059" MODIFIED="1700953751733" TEXT="mir f&#xe4;llt auf, da&#xdf; ein defunktes Objekt copy-konstruiert wird">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1700950494703" ID="ID_1272305442" MODIFIED="1700950512896" TEXT="und zwar beim Aufruf der 2.Funktion"/>
<node CREATED="1700950513540" ID="ID_1095683406" MODIFIED="1700950531582" TEXT="ansonsten ist das Pattern komplett identisch zum 1.Funktionsaufruf"/>
<node CREATED="1700951269423" ID="ID_551692794" MODIFIED="1700951279481" TEXT="der Initialiser wird shared verwendet">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1700951280726" ID="ID_685973813" MODIFIED="1700951313477" TEXT="&#x27f9; der erste Aufruf moved das Objekt in die innere Closure"/>
<node CREATED="1700951314364" ID="ID_1250605414" MODIFIED="1700951332687" TEXT="&#x27f9; der n&#xe4;chste Aufruf findet in der &#xe4;u&#xdf;eren Closure ein kaputtes Objekt"/>
<node COLOR="#338800" CREATED="1700951339206" ID="ID_1908700484" MODIFIED="1700951348709" TEXT="hier das move(newFun) entfernt">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1700951350605" ID="ID_930693693" MODIFIED="1700953749341" TEXT="jetzt steht an der Stelle im Log ein DEAD-Objekt">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1700952106837" ID="ID_334037532" MODIFIED="1700952116015" TEXT="nein: es ist kein DEAD-Marker"/>
<node CREATED="1700952116630" ID="ID_687777194" MODIFIED="1700952138171">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      sondern <b>irgend ein</b>&#160;Speicherinhalt
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#a9b4c1" DESTINATION="ID_687777194" ENDARROW="Default" ENDINCLINATION="68;0;" ID="Arrow_ID_419694341" SOURCE="ID_1894077075" STARTARROW="None" STARTINCLINATION="68;0;"/>
</node>
</node>
<node CREATED="1700951430090" ID="ID_1853549426" MODIFIED="1700951443628" TEXT="es passiert immer nur auf &#xe4;u&#xdf;erstem Level der verschachtelten Funktionen"/>
<node CREATED="1700951444996" ID="ID_1085072035" MODIFIED="1700951466881" TEXT="hiflt nix &#xd83e;&#xdc46; Debugger!">
<icon BUILTIN="yes"/>
<node CREATED="1700952070245" ID="ID_1894077075" MODIFIED="1700952138172" TEXT="beim 2.Aufruf liegt in der Initializer-Closure in theFun ein defekter Wert">
<arrowlink DESTINATION="ID_687777194" ENDARROW="Default" ENDINCLINATION="68;0;" ID="Arrow_ID_419694341" STARTARROW="None" STARTINCLINATION="68;0;"/>
</node>
<node CREATED="1700952311980" ID="ID_1810763546" MODIFIED="1700952324719" TEXT="wann wurde der zerst&#xf6;rt?">
<node CREATED="1700952384035" ID="ID_362847058" MODIFIED="1700952405119" TEXT="auff&#xe4;llig: nur der letzte im Chain hat dieses 2*move-Pattern"/>
<node CREATED="1700953007575" ID="ID_1015631778" MODIFIED="1700953045102" TEXT="da er in der Closure sitzt &#x27f6; das Delegate-&#x3bb;"/>
</node>
</node>
<node CREATED="1700952981057" ID="ID_212435146" MODIFIED="1700952986421" TEXT="nachdenken....">
<icon BUILTIN="yes"/>
<node CREATED="1700953049634" ID="ID_1291679604" MODIFIED="1700953288212" TEXT="wann wird das Delegate-&#x3bb; zerst&#xf6;rt ....?"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1700953069431" ID="ID_173554336" MODIFIED="1700953280256" TEXT="HA! die Zeile die mir schon vorhin beim 1.Bug als &#xbb;Schmuh&#xab; auffiel">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...und zwar deshalb, weil ich wu&#223;te, da&#223; ich <i>&#252;ber diese Zeile beim Umbau nicht nachgedacht habe...</i>
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#f23836" DESTINATION="ID_1177559316" ENDARROW="Default" ENDINCLINATION="-444;622;" ID="Arrow_ID_291683444" STARTARROW="Default" STARTINCLINATION="852;0;"/>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1700953289290" ID="ID_1496406816" MODIFIED="1700953315282" TEXT="die Idee war mal anfangs: &#x201e;der letzte der rausghet macht das Licht aus&#x201c;"/>
<node CREATED="1700953316699" ID="ID_1789172210" MODIFIED="1700953343627" TEXT="und dann bin ich auf die glorreiche Idee gekommen, &#x201e;das Licht&#x201c; rekursiv zu verwenden">
<icon BUILTIN="smiley-oh"/>
</node>
<node CREATED="1700953352026" ID="ID_883746186" MODIFIED="1700953360205" TEXT="also der Reihe nach...">
<node CREATED="1700953361008" ID="ID_13158316" MODIFIED="1700953427653" TEXT="es gibt nun mehrere Instanzen vom Initializer gleichzeitig im Speicher">
<icon BUILTIN="full-1"/>
</node>
<node CREATED="1700953384030" ID="ID_1163845443" MODIFIED="1700953430020" TEXT="wir rufen die letzte instanz auf...">
<icon BUILTIN="full-2"/>
</node>
<node CREATED="1700953398987" ID="ID_1111013847" MODIFIED="1700953432392" TEXT="und von dieser rekursiv bis in die erste Instanz">
<icon BUILTIN="full-3"/>
</node>
<node CREATED="1700953408557" ID="ID_309903824" MODIFIED="1700953434812" TEXT="diese erste Instanz macht beim rausgehen das Licht aus">
<icon BUILTIN="full-4"/>
</node>
<node CREATED="1700953418245" ID="ID_861253869" MODIFIED="1700953448882" TEXT="FINSTERNIS">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="full-0"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1700953476481" ID="ID_116333256" MODIFIED="1700953544274" TEXT="L&#xf6;sung / Bugfix: Lebensdauer an den Stack-Frame binden">
<icon BUILTIN="button_ok"/>
<node CREATED="1700953547615" ID="ID_183071421" MODIFIED="1700953558994" TEXT="statt self-&gt;pendingInit_.reset()"/>
<node CREATED="1700953559891" ID="ID_1264532109" MODIFIED="1700954099248" TEXT="zu Beginn move(self-&gt;pendingInit) in den lokalen Stack-Frame">
<linktarget COLOR="#37b613" DESTINATION="ID_1264532109" ENDARROW="Default" ENDINCLINATION="-193;0;" ID="Arrow_ID_753230844" SOURCE="ID_1258802311" STARTARROW="None" STARTINCLINATION="172;156;"/>
</node>
<node CREATED="1700953580407" ID="ID_1299146649" MODIFIED="1700953589318" TEXT="dann wird sie automatisch am Ende wegger&#xe4;umt"/>
<node CREATED="1700953589998" ID="ID_728234937" MODIFIED="1700953639278" TEXT="und zwar wirklich erst, wenn beim letzten der Refcount auf Null geht">
<arrowlink DESTINATION="ID_1153703009" ENDARROW="Default" ENDINCLINATION="-12;116;" ID="Arrow_ID_1672051795" STARTARROW="None" STARTINCLINATION="-68;108;"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1700953616134" ID="ID_1153703009" MODIFIED="1700953639278" TEXT="Damit sieht das Event-Log komplett sauber aus">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1153703009" ENDARROW="Default" ENDINCLINATION="-12;116;" ID="Arrow_ID_1672051795" SOURCE="ID_728234937" STARTARROW="None" STARTINCLINATION="-68;108;"/>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1701298245500" FOLDED="true" ID="ID_1820632939" MODIFIED="1701303761341" TEXT="konfigurieren &#x27f7; anwenden &#x27f7; manipulieren">
<linktarget COLOR="#fd331b" DESTINATION="ID_1820632939" ENDARROW="Default" ENDINCLINATION="-47;355;" ID="Arrow_ID_884616087" SOURCE="ID_424443394" STARTARROW="None" STARTINCLINATION="-66;-1;"/>
<linktarget COLOR="#fd1694" DESTINATION="ID_1820632939" ENDARROW="Default" ENDINCLINATION="-121;412;" ID="Arrow_ID_1621910960" SOURCE="ID_130492324" STARTARROW="None" STARTINCLINATION="345;-30;"/>
<icon BUILTIN="broken-line"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1701299338958" ID="ID_1360469633" MODIFIED="1701299360186" TEXT="in vollem Umfang ist das mit diesem Design unm&#xf6;glich">
<icon BUILTIN="yes"/>
<node CREATED="1701299382506" ID="ID_1145407722" MODIFIED="1701299394276">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      es ist zu <i>&#187;funktional&#171;</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1701299395182" ID="ID_1791740031" MODIFIED="1701299414728" TEXT="man m&#xfc;&#xdf;te einen semantischen Marker erhalten"/>
<node CREATED="1701299435649" ID="ID_798812447" MODIFIED="1701299452689" TEXT="also eine Trennung von Spec, Initialisierung und fertigem Funktor">
<icon BUILTIN="idea"/>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1701299454295" ID="ID_1369025351" MODIFIED="1701299468014" TEXT="das sollte ich mir als &#xbb;lessons learned&#xab; f&#xfc;r die Zukunft merken">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1701299646685" ID="ID_1765757565" MODIFIED="1701303745018">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <u>konkret hilft mir</u>:
    </p>
    <p>
      die &#187;Manipulation&#171; kann <i>per Definitionem</i>
    </p>
    <p>
      auf einem leeren Objekt statfinden...
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      vom konkreten use-Case her gedacht, ist es typischerweise gar nicht hilfreich, wenn das zu manipulierende Objekt schon &#187;Zustand&#171; hat; man schafft viel klarere Verh&#228;ltnisse, wenn es <b>per Definition</b>&#160;ein default-konstruiertes Objekt ist
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1700577811739" ID="ID_1356052727" MODIFIED="1700623391805" TEXT="Konfigurations-DSL aufbauen">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1700615802219" ID="ID_1202526627" MODIFIED="1700615816505" TEXT="probability"/>
<node COLOR="#435e98" CREATED="1700615805467" ID="ID_1780693023" MODIFIED="1700615816505" TEXT="maxVal"/>
<node COLOR="#435e98" CREATED="1700615809354" ID="ID_664060947" MODIFIED="1700615816506" TEXT="minVal"/>
<node COLOR="#435e98" CREATED="1700615812738" ID="ID_1089110674" MODIFIED="1700623389853" TEXT="mapping"/>
</node>
<node COLOR="#338800" CREATED="1700666517058" ID="ID_1164549835" MODIFIED="1700713861188" TEXT="dynamische Parametrisierung erm&#xf6;glichen">
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1700666528821" ID="ID_1733767299" MODIFIED="1700666725778">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <i>das </i>ist f&#252;r den <i>aktuellen </i>Use-case unabdingbar
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...im Gegensatz zu dem ganzen weiteren Schlonz, den ich die letzten Tage eingebaut habe, &#8222;weils grad gang&#8220;; ich brauche irgende einen Mechanismus, &#252;ber den ein sp&#228;ter hinzukonfigurierter Funktor <i>in Abh&#228;ngigkeit von aktuellen Parameter-Daten</i>&#160;an der Parametrisierung des RandomDraw &quot;drehen&quot; kann...
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#435e98" CREATED="1700666732810" ID="ID_275616933" MODIFIED="1700713863719" TEXT="Konstruktions-Problem: wie kommt der Funktor an die aktuelle Instanz?">
<icon BUILTIN="messagebox_warning"/>
<node COLOR="#435e98" CREATED="1700666796282" ID="ID_400868539" MODIFIED="1701301129800" TEXT="L&#xf6;sung-1: gar nicht. Er baut eine neue Instanz">
<icon BUILTIN="button_cancel"/>
<icon BUILTIN="forward"/>
<node CREATED="1700666822918" ID="ID_1578832431" MODIFIED="1700666830593" TEXT="auf die L&#xf6;sung bin ich zun&#xe4;chst verfallen"/>
<node CREATED="1700666831243" ID="ID_273291815" MODIFIED="1700666840360" TEXT="sie ist zwar etwas komisch zu verdrahten"/>
<node CREATED="1700666841204" ID="ID_1310803138" MODIFIED="1700666848911" TEXT="aber geht schon mal durch den Compiler"/>
<node CREATED="1700666849995" ID="ID_252787073" MODIFIED="1700666893728">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <i><font color="#f22e6c">dangling Reference</font></i>&#160;&#10233; CRASH
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="stop-sign"/>
<node CREATED="1700666909779" ID="ID_1903074332" MODIFIED="1700666917400" TEXT="wa-rum?">
<icon BUILTIN="smily_bad"/>
</node>
<node CREATED="1700666919681" ID="ID_1841792558" MODIFIED="1700666945613" TEXT="weil die huckepack-Funktion in RandomDraw auf *this bindet">
<icon BUILTIN="clanbomber"/>
</node>
<node CREATED="1700666957387" ID="ID_1118038273" MODIFIED="1700667065677" TEXT="Konsequenz: RandomDraw mu&#xdf; NonCopyable sein">
<arrowlink COLOR="#b1054b" DESTINATION="ID_1737653728" ENDARROW="Default" ENDINCLINATION="512;-31;" ID="Arrow_ID_685625009" STARTARROW="None" STARTINCLINATION="-660;37;"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1701301093185" ID="ID_586926454" MODIFIED="1701301254164" TEXT="nach &#xdc;berarbeitung (LazyInit) &#x27f9; das ist doch die beste L&#xf6;sung">
<linktarget COLOR="#4a61b9" DESTINATION="ID_586926454" ENDARROW="Default" ENDINCLINATION="-232;10;" ID="Arrow_ID_1046391060" SOURCE="ID_830016552" STARTARROW="None" STARTINCLINATION="140;8;"/>
<icon BUILTIN="yes"/>
<node CREATED="1701301143698" ID="ID_1026219449" MODIFIED="1701301177541" TEXT="mit einem neuen Dreh: darf noch nicht &#xbb;engaged&#xab; sein"/>
<node CREATED="1701301199310" ID="ID_1057614214" MODIFIED="1701301210694" TEXT="also default-konstruiert"/>
</node>
</node>
<node CREATED="1700667123763" FOLDED="true" ID="ID_360972195" MODIFIED="1700713850120">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      L&#246;sung-2: er bindet <i>irgendwie </i>eine Referenz darauf
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="hourglass"/>
<node CREATED="1700667152325" ID="ID_291951431" MODIFIED="1700667161608" TEXT="ja ... m&#xe4;hh">
<icon BUILTIN="smiley-neutral"/>
</node>
<node CREATED="1700667168921" ID="ID_277893933" MODIFIED="1700667204912" TEXT="...also entweder der User mu&#xdf; das beim Setup machen (&#x27f9; setzt bestehende Instanz voraus)"/>
<node CREATED="1700667209643" ID="ID_497670078" MODIFIED="1700667262488" TEXT="...oder man bietet ein spezielles Builder-Setup &#x27f6; Funktor 2.Ordnung">
<node CREATED="1700667287164" ID="ID_9300229" MODIFIED="1700667301028" TEXT="w&#xe4;re durchaus machbar &#x2014; aber nicht leicht zu vestehen">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1700667564352" ID="ID_662111218" MODIFIED="1700667663542" TEXT="in drei Schritten">
<node CREATED="1700667568604" ID="ID_1050199497" MODIFIED="1700667666028" TEXT="Builder-&#x3bb; : bekommt RandomDraw&amp; &#x27fc; liefert Manipulator-&#x3bb;">
<icon BUILTIN="full-1"/>
</node>
<node CREATED="1700667618957" ID="ID_162376172" MODIFIED="1700667668131" TEXT="Manipulator-&#x3bb;: bekommt Input, manipuliert RandomDraw&amp;">
<icon BUILTIN="full-2"/>
</node>
<node CREATED="1700667642374" ID="ID_629040008" MODIFIED="1700667670894" TEXT="Invocation: RandomDraw selber auf die Argumente anwenden">
<icon BUILTIN="full-3"/>
</node>
</node>
<node CREATED="1700667685604" ID="ID_462101752" MODIFIED="1700667704470" TEXT="Muuuh!">
<icon BUILTIN="smiley-angry"/>
</node>
</node>
<node CREATED="1700667315966" ID="ID_336303173" MODIFIED="1700667341006" TEXT="&#x27f9; der letztlich operierende Funktor h&#xe4;tte Res-type void (Seiteneffekt)"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1700667728894" ID="ID_1647643633" MODIFIED="1700667762597" TEXT="Plan-B">
<font BOLD="true" NAME="SansSerif" SIZE="13"/>
<icon BUILTIN="yes"/>
<icon BUILTIN="hourglass"/>
</node>
</node>
<node COLOR="#5b280f" CREATED="1700667358039" FOLDED="true" ID="ID_1159388516" MODIFIED="1701301315106" TEXT="L&#xf6;sung-3: er nimmt diese als Ref-Argument">
<icon BUILTIN="forward"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1700667395811" ID="ID_1168097310" MODIFIED="1700667512459">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      das w&#228;re sch&#246;n sauber &#8212; <font size="6">ABER</font>&#160;...
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="smiley-oh"/>
<node CREATED="1700667426327" ID="ID_1988791757" MODIFIED="1700667443550" TEXT="woher bekommt er dann den Input f&#xfc;r die Parametrisierung?"/>
<node CREATED="1700667444188" ID="ID_495817814" MODIFIED="1700667455851" TEXT="weitere Argumente? welche?"/>
<node CREATED="1700667456602" ID="ID_1963198981" MODIFIED="1700667463789" TEXT="und wie bindet man das??"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1700667812723" ID="ID_1483170838" MODIFIED="1700713790017" TEXT="Variadic-Args + rekursiver Aufruf">
<icon BUILTIN="idea"/>
<node CREATED="1700668497744" ID="ID_1487967876" MODIFIED="1700668593578" TEXT="das mu&#xdf; der adaptIn(fun)-Schritt aufl&#xf6;sen">
<node CREATED="1700668538836" ID="ID_1747416563" MODIFIED="1700668552053" TEXT="er mu&#xdf; dazu aber irgendwie die restlichen Argumente zu Greifen bekommen"/>
<node CREATED="1700668553545" ID="ID_1272264893" MODIFIED="1700668561180" TEXT="...und diese rekursiv an sich selber &#xfc;bergeben"/>
</node>
<node CREATED="1700669255396" FOLDED="true" ID="ID_1754735258" MODIFIED="1700713841251">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      l&#228;uft auf eine <b>partielle Anwendung</b>&#160;der Funktion hinaus
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
<node CREATED="1700669349834" ID="ID_1795148710" MODIFIED="1700669452457" TEXT="auch daf&#xfc;r gabs bereits eine LIbrary-L&#xf6;sung">
<node CREATED="1700669462313" ID="ID_146361421" MODIFIED="1700669512820" TEXT="genau die Geliche, die ich vor ein paar Tagen schon modernisiert habe...">
<arrowlink COLOR="#1de11c" DESTINATION="ID_80963960" ENDARROW="Default" ENDINCLINATION="1061;74;" ID="Arrow_ID_868943709" STARTARROW="None" STARTINCLINATION="-252;-591;"/>
</node>
<node CREATED="1700670079863" ID="ID_931371524" MODIFIED="1700670102061" TEXT="im Grunde ist auch das heutzutage leicht als generisches Lambda zu schreiben"/>
<node COLOR="#435e98" CREATED="1700670049963" ID="ID_67786691" MODIFIED="1700686592758" TEXT="kann man die partielle-Anwendung auch modernisieren? (und dann verwenden)">
<arrowlink COLOR="#994a7b" DESTINATION="ID_1114511607" ENDARROW="Default" ENDINCLINATION="1203;76;" ID="Arrow_ID_448010949" STARTARROW="None" STARTINCLINATION="615;22;"/>
<icon BUILTIN="help"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1700672717763" HGAP="32" ID="ID_1710135688" MODIFIED="1700672756403" TEXT="nicht ganz so einfach wie bei der Funktions-Komposition" VSHIFT="9">
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#435e98" CREATED="1700672739896" HGAP="26" ID="ID_1441194651" MODIFIED="1700686571025" TEXT="ein Teilschritt w&#xe4;re denkbar" VSHIFT="1">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1700686572329" HGAP="43" ID="ID_1067874422" MODIFIED="1700686591140" TEXT="(ges&#xe4;gt, getan)" VSHIFT="1">
<font NAME="SansSerif" SIZE="11"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1700686650589" ID="ID_1320986357" MODIFIED="1700713801523" TEXT="adaptIn">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1700686611506" ID="ID_1055056344" MODIFIED="1700689287526" TEXT="partielle Anwendung anwenden">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1700686662293" ID="ID_473080725" MODIFIED="1700713797009" TEXT="sich selbst damit rekursiv aufrufen">
<icon BUILTIN="button_ok"/>
<node CREATED="1700693151634" ID="ID_543764264" MODIFIED="1700693171222" TEXT="alle Adapter m&#xfc;ssen nun mutable sein...">
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#435e98" CREATED="1700693175075" ID="ID_1513609596" MODIFIED="1700713799209" TEXT="wie ist es dazu gekommen?">
<icon BUILTIN="help"/>
<node CREATED="1700693202666" ID="ID_814650434" MODIFIED="1700693213189" TEXT="hatte das f&#xfc;r die partial-Application eingef&#xfc;hrt"/>
<node CREATED="1700693214680" ID="ID_985740260" MODIFIED="1700693228403" TEXT="es gab Probleme beim Binden eines Referenz-Arguments"/>
<node CREATED="1700693240581" ID="ID_575005517" MODIFIED="1700693260979" TEXT="das habe ich weggeb&#xfc;gelt, indem ich den neuen Functor mutable deklarierte"/>
<node CREATED="1700694721366" ID="ID_1994967318" MODIFIED="1700694747094">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      genausogut kann man hier einen <b>const_cast</b>&#160;machen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node BACKGROUND_COLOR="#fafe99" COLOR="#fa002a" CREATED="1700694751259" ID="ID_1002912269" MODIFIED="1700695192940" TEXT="Hinweis auf ein latentes Problem">
<arrowlink COLOR="#fe160e" DESTINATION="ID_500305347" ENDARROW="Default" ENDINCLINATION="261;671;" ID="Arrow_ID_1976339789" STARTARROW="None" STARTINCLINATION="787;-1438;"/>
<icon BUILTIN="broken-line"/>
<node CREATED="1700694781350" ID="ID_645736459" MODIFIED="1700694879013" TEXT="wenn man einen ownership-managing-type bindet"/>
<node CREATED="1700694839797" ID="ID_1945180667" MODIFIED="1700694852545" TEXT="...dann wird der durch den ersten Aufruf &#xbb;verbraucht&#xab;"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1700694881309" ID="ID_1453318147" MODIFIED="1700695068528" TEXT="weitere Aufrufe bekommen dann ein defektes Objekt">
<icon BUILTIN="clanbomber"/>
</node>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1700686675275" ID="ID_1836010727" MODIFIED="1700713803599" TEXT="adaptOut">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1700686680324" ID="ID_1784901789" MODIFIED="1700713804987" TEXT="neuer Zweig f&#xfc;r void-Funktionen">
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1700693081579" ID="ID_1255600194" MODIFIED="1700693088337" TEXT="Endlos-Schleife">
<icon BUILTIN="broken-line"/>
</node>
<node COLOR="#338800" CREATED="1700693091977" ID="ID_1659118434" MODIFIED="1700693195468" TEXT="mu&#xdf; die vorher bestehende proc-Function kopieren">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1700693108791" ID="ID_1579958101" MODIFIED="1700693196796" TEXT="...und in die neue &#x3bb;-closure speichern">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1700686695792" ID="ID_1003013120" MODIFIED="1700713807880" TEXT="beide integriert">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1700686712454" ID="ID_194082456" MODIFIED="1700713811135" TEXT="im Test verifizieren">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1700693276905" ID="ID_925123517" MODIFIED="1700693285048" TEXT="erster Testfall sieht plausibel aus">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1700713812622" ID="ID_731342470" MODIFIED="1700713827800" TEXT="Testfall mit kaskadierten mapping-functions">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#5b280f" CREATED="1701301019815" ID="ID_805863162" MODIFIED="1701301045953" TEXT="funktioniert gut &#x2014; ist aber nicht praktikabel">
<icon BUILTIN="closed"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1701297752921" FOLDED="true" ID="ID_859980593" MODIFIED="1701303780926">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      dynamische Manipulation<i>&#160;versaut <font face="Monospaced" color="#820cbf">this</font></i>
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#925370" DESTINATION="ID_859980593" ENDARROW="Default" ENDINCLINATION="-722;53;" ID="Arrow_ID_508102553" SOURCE="ID_1970553199" STARTARROW="None" STARTINCLINATION="342;-486;"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1701297919739" ID="ID_1344551860" MODIFIED="1701297952473" TEXT="der zus&#xe4;tzliche 1.Parameter wird per Referenz an *this gebunden"/>
<node CREATED="1701297953759" ID="ID_986118532" MODIFIED="1701297984590" TEXT="wir m&#xfc;ssen aber das manipulierte *this zur Ergebnis-Ermittlung aufrufen"/>
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1701297986010" ID="ID_1806764026" MODIFIED="1701298005576" TEXT="dieser Aufruf darf nicht erneut in die dynamische selbst-Manipulation laufen">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1701298008255" ID="ID_1603437465" MODIFIED="1701298031784" TEXT="sonst Stackoverflow-TOD"/>
<node CREATED="1701302314721" ID="ID_588221563" MODIFIED="1701302324524" TEXT="ich hab nur ein Funktions-Interface vorgesehen"/>
<node CREATED="1701302325463" ID="ID_425170421" MODIFIED="1701302375268" TEXT="und dies kann nur Eines machen: entweder manipulieren, oder Rechnen"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1701298048418" ID="ID_195441633" MODIFIED="1701298131579" TEXT="das hei&#xdf;t: irgend eine Instanz mu&#xdf; kopiert werden">
<icon BUILTIN="clanbomber"/>
<node CREATED="1701298474511" ID="ID_1270719930" MODIFIED="1701298563428" TEXT="Instanz &#x27fc; innere Kopie zur Anwendung">
<icon BUILTIN="full-1"/>
<node CREATED="1701298506437" ID="ID_1149471063" MODIFIED="1701298576807" TEXT="innere Kopie manipulieren">
<icon BUILTIN="full-3"/>
</node>
<node CREATED="1701298514992" ID="ID_1935475450" MODIFIED="1701298579279" TEXT="auf innerer Kopie die Anwendung ausf&#xfc;hren">
<icon BUILTIN="full-4"/>
</node>
<node CREATED="1701298606503" ID="ID_461232980" MODIFIED="1701302415432" TEXT="Ergebnis nach au&#xdf;en durchreichen">
<arrowlink COLOR="#88fe21" DESTINATION="ID_1514969621" ENDARROW="Default" ENDINCLINATION="82;5;" ID="Arrow_ID_1957797667" STARTARROW="None" STARTINCLINATION="-11;70;"/>
<icon BUILTIN="full-5"/>
</node>
</node>
<node CREATED="1701298533974" ID="ID_390102291" MODIFIED="1701298573321" TEXT="Instanz an Manipulationsfunktion binden">
<icon BUILTIN="full-2"/>
</node>
<node CREATED="1701298590273" ID="ID_1514969621" MODIFIED="1701302415432" TEXT="Manipulationsfunktion mu&#xdf; Ergebnis liefern">
<linktarget COLOR="#88fe21" DESTINATION="ID_1514969621" ENDARROW="Default" ENDINCLINATION="82;5;" ID="Arrow_ID_1957797667" SOURCE="ID_461232980" STARTARROW="None" STARTINCLINATION="-11;70;"/>
<icon BUILTIN="full-5"/>
</node>
<node BACKGROUND_COLOR="#efe9a7" COLOR="#c80b2b" CREATED="1701298132446" ID="ID_424443394" MODIFIED="1701300933488" TEXT="(&#x27f6; back to square one)">
<arrowlink COLOR="#fd331b" DESTINATION="ID_1820632939" ENDARROW="Default" ENDINCLINATION="-47;355;" ID="Arrow_ID_884616087" STARTARROW="None" STARTINCLINATION="-66;-1;"/>
<arrowlink COLOR="#fd331b" DESTINATION="ID_130492324" ENDARROW="Default" ENDINCLINATION="380;-27;" ID="Arrow_ID_1549798992" STARTARROW="None" STARTINCLINATION="-178;18;"/>
<icon BUILTIN="broken-line"/>
<node CREATED="1701298903567" HGAP="32" ID="ID_751425030" MODIFIED="1701299794687" TEXT="kann nichst zuverl&#xe4;ssig kopieren (wenn bereits &#xbb;engaged&#xab;)" VSHIFT="18"/>
<node BACKGROUND_COLOR="#fefc4e" COLOR="#351d75" CREATED="1701299771781" ID="ID_522345672" MODIFIED="1701300893893" TEXT="einziger Freiheitsgrad: die Innnere Kopie kann &#xbb;pristine&#xab; sein">
<font NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1701300953519" ID="ID_1483996205" MODIFIED="1701303643004" TEXT="&#xfc;berarbeitetetes Schema f&#xfc;r Manipulation">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1701301225512" ID="ID_830016552" MODIFIED="1701303640076" TEXT="l&#xe4;uft jetzt auf eine Variante von L&#xf6;sung-1 hinaus...">
<arrowlink COLOR="#4a61b9" DESTINATION="ID_586926454" ENDARROW="Default" ENDINCLINATION="-232;10;" ID="Arrow_ID_1046391060" STARTARROW="None" STARTINCLINATION="140;8;"/>
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1701302425302" ID="ID_1784095576" MODIFIED="1701302459030" TEXT="damit f&#xe4;llt die M&#xf6;glichkeit f&#xfc;r kaskadierte Mappings weg">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1701302851616" ID="ID_705421029" MODIFIED="1701303636565" TEXT="Code wird deutlich einfacher">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1701303614369" ID="ID_1891401017" MODIFIED="1701303628905" TEXT="verh&#xe4;lt sich korrekt">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1700491877926" ID="ID_1958310493" MODIFIED="1700713877340" TEXT="Test zur Dokumentation">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1700491902622" ID="ID_523469259" MODIFIED="1700623361146" TEXT="soll auch das Vorgehen zur Spezialisierung demonstrieren">
<icon BUILTIN="button_ok"/>
<node CREATED="1700623368176" ID="ID_1117750034" MODIFIED="1700623381554" TEXT="demonstriert Kontext-Parameter und Adapter"/>
<node CREATED="1700615879735" ID="ID_1206033672" MODIFIED="1700615946925" TEXT="verwende schon mal spezielle Ergebniswerte">
<arrowlink COLOR="#382e90" DESTINATION="ID_1803348383" ENDARROW="Default" ENDINCLINATION="131;-8;" ID="Arrow_ID_1166708502" STARTARROW="None" STARTINCLINATION="-7;7;"/>
</node>
</node>
<node COLOR="#338800" CREATED="1700491930155" ID="ID_1583745392" MODIFIED="1700615634983" TEXT="numerische Grenzen beleuchten">
<linktarget COLOR="#33b2c7" DESTINATION="ID_1583745392" ENDARROW="Default" ENDINCLINATION="66;-218;" ID="Arrow_ID_1227385946" SOURCE="ID_367849222" STARTARROW="None" STARTINCLINATION="-136;0;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1700600684146" ID="ID_1803348383" MODIFIED="1700615937015" TEXT="Limited -2 .. 0 .. +2">
<linktarget COLOR="#382e90" DESTINATION="ID_1803348383" ENDARROW="Default" ENDINCLINATION="131;-8;" ID="Arrow_ID_1166708502" SOURCE="ID_1206033672" STARTARROW="None" STARTINCLINATION="-7;7;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1700600547646" ID="ID_1733363168" MODIFIED="1700600560846" TEXT="verify some relevant stepping points directly">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1700600388220" ID="ID_945634364" MODIFIED="1700600491406" TEXT="watch aggregated values">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1700600403005" ID="ID_1556575630" MODIFIED="1700600518915" TEXT="Loop 0...127">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1700600409352" ID="ID_659357781" MODIFIED="1700600513897" TEXT="incidences and stepping points">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1700600501948" ID="ID_242437462" MODIFIED="1700600533036" TEXT="generate and verify human readable report">
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#338800" CREATED="1700600445406" ID="ID_664166647" MODIFIED="1700600490102" TEXT="various probabilities (0, 1, 0.99, ... 0.10)">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1700604864932" ID="ID_1979925834" MODIFIED="1700607874137" TEXT="maxVal = 1">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1700604931512" ID="ID_1694493549" MODIFIED="1700607872005" TEXT="probability = 0.5">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1700604938450" ID="ID_1143473642" MODIFIED="1700607873288" TEXT="probability = 1.0">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1700604956767" ID="ID_892833284" MODIFIED="1700608385397" TEXT="maxVal = 0">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1700604963920" ID="ID_1628587988" MODIFIED="1700613393796" TEXT="probability = 0.5">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1628587988" ENDARROW="Default" ENDINCLINATION="109;0;" ID="Arrow_ID_1125759765" SOURCE="ID_1049841145" STARTARROW="None" STARTINCLINATION="6;-34;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1700604938450" ID="ID_853219608" MODIFIED="1700608387316" TEXT="probability = 1.0">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1700604977212" ID="ID_491799030" MODIFIED="1700613358705" TEXT="maxVal = -1">
<arrowlink COLOR="#81c09c" DESTINATION="ID_1923479598" ENDARROW="Default" ENDINCLINATION="-376;33;" ID="Arrow_ID_920221846" STARTARROW="None" STARTINCLINATION="267;-354;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1700604982692" ID="ID_1931542094" MODIFIED="1700613397255" TEXT="probability = 0.5">
<icon BUILTIN="button_ok"/>
<node CREATED="1700613380683" ID="ID_1049841145" MODIFIED="1700613399811" TEXT="verhalten sich zuf&#xe4;llig identisch">
<arrowlink DESTINATION="ID_1628587988" ENDARROW="Default" ENDINCLINATION="109;0;" ID="Arrow_ID_1125759765" STARTARROW="None" STARTINCLINATION="6;-34;"/>
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#338800" CREATED="1700604938450" ID="ID_80447174" MODIFIED="1700613320326" TEXT="probability = 1.0">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1700605189408" ID="ID_757773023" MODIFIED="1700615603606" TEXT="maxVal = 2, minVal=+1">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1700604982692" ID="ID_405389043" MODIFIED="1700615609458" TEXT="probability = 0.5">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1700604938450" ID="ID_351263684" MODIFIED="1700615608914" TEXT="probability = 1.0">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1700606021617" ID="ID_1964921327" MODIFIED="1700615605518" TEXT="maxVal = 0">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1700606035232" ID="ID_1325704418" MODIFIED="1700615606608" TEXT="f&#xfc;hrt zur Korrektur">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1700606041014" ID="ID_1282747236" MODIFIED="1700615607179" TEXT="probability = 0.5">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1700501979956" ID="ID_571312425" MODIFIED="1700617387689" TEXT="Wirkung des Builder-API dokumentieren">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1700501993218" ID="ID_271630234" MODIFIED="1700713875988" TEXT="dynamische Parametrisierung demonstrieren">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1700713941245" ID="ID_1647717999" MODIFIED="1700969800622" TEXT="die neue Lib-Komponente einbauen">
<icon BUILTIN="button_ok"/>
<node CREATED="1700763561056" ID="ID_1249462296" MODIFIED="1700764033885" TEXT="Bisherige L&#xf6;sung mit Hilfsklasse Cap f&#xe4;llt weg">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      das war ja gradezu der Keim, aus dem sich RandomDraw entwickelt hat
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#564965" DESTINATION="ID_1812170860" ENDARROW="Default" ENDINCLINATION="-607;44;" ID="Arrow_ID_107668670" STARTARROW="None" STARTINCLINATION="-77;0;"/>
</node>
<node COLOR="#338800" CREATED="1700763417779" ID="ID_1109287945" MODIFIED="1700769052796" TEXT="Policy-Template intern in TestChainLoad aufbauen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1700763442493" ID="ID_1428433327" MODIFIED="1700770867117" TEXT="Typedefinition &#x27ff; bezieht non-type-Template param ein">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      TestChainLoad selber is parametrisiert auf die Maximalwerte der Topologie &#10233; alle Parameter haben typischerweise die Breiten-Limitierung als Obergrenze
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#338800" CREATED="1700769068457" ID="ID_476049536" MODIFIED="1700770746672" TEXT="Typ f&#xfc;r &#xbb;config-rules&#xab; auf RandomDraw aufbauen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1700969876652" ID="ID_1123165498" MODIFIED="1700969885748" TEXT="Tests laufen wieder wie zuvor">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1700240183293" ID="ID_1092101612" MODIFIED="1701476497402" TEXT="Regel-Baukasten">
<linktarget COLOR="#5a509e" DESTINATION="ID_1092101612" ENDARROW="Default" ENDINCLINATION="8;265;" ID="Arrow_ID_362060244" SOURCE="ID_1931960006" STARTARROW="None" STARTINCLINATION="415;-28;"/>
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1700770889303" FOLDED="true" ID="ID_1475798694" MODIFIED="1701304070735" TEXT="Non-copyable Rules &#x2014; problematisch f&#xfc;r DSL">
<icon BUILTIN="messagebox_warning"/>
<node COLOR="#5b280f" CREATED="1700770943791" ID="ID_1199767820" MODIFIED="1700770980394" TEXT="sie m&#xfc;ssen non-copyable sein wegen internem Function-binding">
<icon BUILTIN="broken-line"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1700770992624" ID="ID_79615506" MODIFIED="1700957452873" TEXT="das verhindert aber genau den fluenden Umgang damit">
<arrowlink COLOR="#ffcdd1" DESTINATION="ID_1702969215" ENDARROW="Default" ENDINCLINATION="-620;68;" ID="Arrow_ID_1851761641" STARTARROW="None" STARTINCLINATION="296;14;"/>
<icon BUILTIN="stop-sign"/>
</node>
<node COLOR="#5b280f" CREATED="1700771023973" FOLDED="true" ID="ID_712277297" MODIFIED="1700771154556" TEXT="Workaround: spezielle Setter schaffen">
<icon BUILTIN="button_cancel"/>
<node CREATED="1700771082253" ID="ID_1566020225" MODIFIED="1700771090144" TEXT="RandomDraw m&#xfc;&#xdf;te das unterst&#xfc;tzen"/>
<node CREATED="1700771090804" ID="ID_370137599" MODIFIED="1700771098955" TEXT="Setter m&#xfc;&#xdf;te unterscheiden k&#xf6;nnen"/>
<node CREATED="1700771100003" ID="ID_510680184" MODIFIED="1700771114004" TEXT="Funktionen m&#xfc;&#xdf;ten zu einer Neu-Konstruktion f&#xfc;hren"/>
<node COLOR="#5b280f" CREATED="1700771116536" ID="ID_401453770" MODIFIED="1700771148753" TEXT="das DSL-Verb &#xbb;mapping&#xab; w&#xfc;rde trotzdem nicht nutzbar sein">
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node COLOR="#338800" CREATED="1700771156458" ID="ID_1157037029" LINK="#ID_1508566872" MODIFIED="1700957441004" TEXT="RandomDraw re-konfigurierbar machen">
<icon BUILTIN="idea"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#437298" CREATED="1700969491009" FOLDED="true" ID="ID_1984571390" MODIFIED="1701304068011">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      l&#246;st das Problem <i>fast...</i>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="smiley-oh"/>
<node CREATED="1700969510140" ID="ID_1447787379" MODIFIED="1700969626628">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      nachdem man n&#228;mlich <font face="Monospaced">buildTopology()</font>&#160;aufgerufen hat,
    </p>
    <p>
      explodiert TestChainLoad am Ende der DSL-Methode.
    </p>
    <p>
      Denn da steht ganz vertr&#228;umt...
    </p>
    <p>
      <font face="Monospaced" color="#a33434">return move(*this)</font>
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#e6d5a6" COLOR="#fa002a" CREATED="1700969637165" ID="ID_899591341" MODIFIED="1700969754144" TEXT="irgendwie wollen die Windm&#xfc;hlen nicht recht sterben...">
<icon BUILTIN="broken-line"/>
</node>
<node CREATED="1700969657586" ID="ID_347427762" MODIFIED="1700969694884">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      nun gut: dann verwendet buildTopology() eben <b>lokale Kopien</b>
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...da RandomDraw jetzt so wunderbar elegant kopierbar ist...
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#4575ad" DESTINATION="ID_508651287" ENDARROW="Default" ENDINCLINATION="24;-48;" ID="Arrow_ID_1906631092" STARTARROW="None" STARTINCLINATION="-135;6;"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1701287975965" FOLDED="true" ID="ID_1183256451" MODIFIED="1701304055910" TEXT="...leider ist damit das Problem nur verschoben">
<icon BUILTIN="messagebox_warning"/>
<node BACKGROUND_COLOR="#fafe99" COLOR="#fa002a" CREATED="1701287997534" ID="ID_247521707" MODIFIED="1701288227256" TEXT="...und zwar ist jetzt die M&#xf6;glichkeit dynamischer Modifikation abgeschnitten">
<linktarget COLOR="#dc1c4c" DESTINATION="ID_247521707" ENDARROW="Default" ENDINCLINATION="138;-456;" ID="Arrow_ID_1575949835" SOURCE="ID_1197288734" STARTARROW="None" STARTINCLINATION="299;17;"/>
<icon BUILTIN="broken-line"/>
</node>
<node CREATED="1701289062860" ID="ID_1839120736" MODIFIED="1701289218722" TEXT="dynamische Manipulationen haben einen verschleppten Seiteneffekt, wirken aber nicht">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...w&#228;hrend der Berechnung der Topologie (und das ist die einzige tats&#228;chliche Verwendung der Regeln) arbeiten wir auf lokalen Kopien; eine dynamische &#196;nderung aus der Berechnung heraus hinterl&#228;&#223;t Spuren in der <i>&#187;schwebenden&#171; </i>globalen Regelkonfiguration &#8212; dringt aber grade <i>nicht in die aktivierte Regel-Konfiguration durch.</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1701289396695" FOLDED="true" ID="ID_1788063535" MODIFIED="1701303956839" TEXT="sollte es vielleicht genau anders herum sein??">
<icon BUILTIN="idea"/>
<node CREATED="1701289434395" ID="ID_542027357" MODIFIED="1701289452996" TEXT="also wirken &#x2014; aber keine Seiteneffekte hinterlassen?"/>
<node CREATED="1701289485284" ID="ID_1285884711" MODIFIED="1701289501070" TEXT="demnach m&#xfc;&#xdf;ten transient die Rollen vertauscht werden"/>
<node CREATED="1701290070366" ID="ID_1282551984" MODIFIED="1701290080201" TEXT="daf&#xfc;r geeigneter Mechanismus?">
<node CREATED="1701290081821" ID="ID_930381290" MODIFIED="1701290089063" TEXT="klar: es mu&#xdf; ein smart-Handle sein"/>
<node CREATED="1701290089595" ID="ID_1315264416" MODIFIED="1701290102243" TEXT="neulich habe ich das TRANSIENTLY gebaut">
<icon BUILTIN="idea"/>
<node CREATED="1701290121303" ID="ID_250102555" MODIFIED="1701290149289">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      das macht <i>fast genau </i>das hier Ben&#246;tigte
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1701290152867" ID="ID_339962379" MODIFIED="1701290159673" TEXT="ist aber als Test-Tool aufgestellt">
<node CREATED="1701290284560" ID="ID_542573347" MODIFIED="1701290294028" TEXT="sitzt im test-Namespace"/>
<node CREATED="1701290294737" ID="ID_1328070168" MODIFIED="1701290300445" TEXT="definiert ein Makro"/>
<node CREATED="1701290710129" ID="ID_1040357614" MODIFIED="1701290816112" TEXT="(das sind aber alles keine wirklichen Einw&#xe4;nde)">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...zum einen ist TestChainLoad selbst ein Test-Tool
    </p>
    <p>
      ...und au&#223;erdem ist der lib::test - Namespace weder verboten noch gef&#228;hrlich
    </p>
    <p>
      ...und schlie&#223;lich steht der Makro-Name TRANSIENTLY nicht wirklich in Konkurrenz zu irgendwas
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1701290160826" ID="ID_1301869275" MODIFIED="1701290170877" TEXT="und bietet kein genau passendes API">
<node CREATED="1701290172913" ID="ID_1474344535" MODIFIED="1701290187065" TEXT="entweder man mu&#xdf; zuweisen (machen wir hier nicht)"/>
<node CREATED="1701290188406" ID="ID_651295950" MODIFIED="1701290202498" TEXT="oder man braucht zwei Closures"/>
<node CREATED="1701290226451" ID="ID_1258729842" MODIFIED="1701290235892" TEXT="wir br&#xe4;uchten eine tempor&#xe4;re neben-Storage"/>
<node CREATED="1701290824210" ID="ID_1930989663" MODIFIED="1701290841825" TEXT="das w&#xe4;re eigentlich der Basis-Fall"/>
<node CREATED="1701291085927" ID="ID_941298216" MODIFIED="1701291097644" TEXT="der zieht bereits im ctor die Kopie"/>
<node CREATED="1701291099693" ID="ID_1106394033" MODIFIED="1701291107064" TEXT="und diese liegt im Stack-frame"/>
<node CREATED="1701291107626" ID="ID_723690306" MODIFIED="1701291114150" TEXT="&#x27f9; pa&#xdf;t doch alles"/>
</node>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1701290886620" ID="ID_1327262504" MODIFIED="1701297358727" TEXT="Transiently anpassen und verwenden">
<icon BUILTIN="yes"/>
<node CREATED="1701290910198" ID="ID_996452311" MODIFIED="1701290919610" TEXT="move-Assignment bei der Wiederherstellung"/>
<node CREATED="1701291122231" ID="ID_1055950919" MODIFIED="1701291128444" TEXT="direkt verwenden ohne Makro"/>
<node CREATED="1701303840060" ID="ID_155844306" MODIFIED="1701303948270" TEXT="war nicht das Problem">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...sondern nur eine Verbesserung in der Code-Struktur (deshalb belasse ich es jetzt auch dabei)....
    </p>
    <p>
      Das eigentliche Problem zeigte sich erst einen Schritt weiter: es ist eben nicht m&#246;glich, eine bereits gebundene Mapping-Funktion nochmal zu &#8222;entbinden&#8220; und separat aufzurufen..
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1701297731915" ID="ID_1970553199" MODIFIED="1701303828166" TEXT="und das n&#xe4;chste Problem folgt sogleich...">
<arrowlink COLOR="#925370" DESTINATION="ID_859980593" ENDARROW="Default" ENDINCLINATION="-722;53;" ID="Arrow_ID_508102553" STARTARROW="None" STARTINCLINATION="342;-486;"/>
<icon BUILTIN="smiley-oh"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1701298245500" ID="ID_130492324" MODIFIED="1701302699365" TEXT="konfigurieren &#x27f7; anwenden &#x27f7; manipulieren">
<arrowlink COLOR="#fd1694" DESTINATION="ID_1820632939" ENDARROW="Default" ENDINCLINATION="-121;412;" ID="Arrow_ID_1621910960" STARTARROW="None" STARTINCLINATION="345;-30;"/>
<linktarget COLOR="#fd331b" DESTINATION="ID_130492324" ENDARROW="Default" ENDINCLINATION="380;-27;" ID="Arrow_ID_1549798992" SOURCE="ID_424443394" STARTARROW="None" STARTINCLINATION="-178;18;"/>
</node>
<node COLOR="#91264c" CREATED="1701299615582" ID="ID_1443941840" LINK="#ID_1369025351" MODIFIED="1701302755234" TEXT="das zeigt: Grenzen des Design sind ausgereizt"/>
<node COLOR="#338800" CREATED="1701302703364" ID="ID_1803877992" LINK="#ID_522345672" MODIFIED="1701302736489" TEXT="kaskadierende Mappings aufgegeben">
<icon BUILTIN="yes"/>
<node COLOR="#227094" CREATED="1701302784681" ID="ID_129815553" MODIFIED="1701302838592" TEXT="das ist schade">
<icon BUILTIN="smily_bad"/>
</node>
<node COLOR="#435e98" CREATED="1701302805815" ID="ID_1512181041" MODIFIED="1701304014700" TEXT="aber im praktischen Gebrauch spielen sie (bisher) keine Rolle">
<arrowlink COLOR="#738e9c" DESTINATION="ID_1332958988" ENDARROW="Default" ENDINCLINATION="347;32;" ID="Arrow_ID_1468697365" STARTARROW="None" STARTINCLINATION="-337;15;"/>
<arrowlink COLOR="#738e9c" DESTINATION="ID_245626902" ENDARROW="Default" ENDINCLINATION="347;32;" ID="Arrow_ID_110894165" STARTARROW="None" STARTINCLINATION="-337;15;"/>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1701303968882" ID="ID_1332958988" MODIFIED="1701304004316">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      mit Abstrichen: <i>jetzt l&#228;ufts...</i>
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#738e9c" DESTINATION="ID_1332958988" ENDARROW="Default" ENDINCLINATION="347;32;" ID="Arrow_ID_1468697365" SOURCE="ID_1512181041" STARTARROW="None" STARTINCLINATION="-337;15;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node CREATED="1701012412539" ID="ID_757448445" MODIFIED="1701012416971" TEXT="Regel-Instanzen">
<node CREATED="1701012419704" ID="ID_508651287" MODIFIED="1701012634497" TEXT="Workaround f&#xfc;r das fixed-Location-Problem: stets Kopieren zur Anwendung">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Ab dem Zeitpunkt der ersten Anwendung m&#252;ssen Regeln an einer festen Stelle im Speicher sitzen, da sie Referenzen intern binden. Deshalb macht buildTopology() sich nun jeweils eine lokale Kopie
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#4575ad" DESTINATION="ID_508651287" ENDARROW="Default" ENDINCLINATION="24;-48;" ID="Arrow_ID_1906631092" SOURCE="ID_347427762" STARTARROW="None" STARTINCLINATION="-135;6;"/>
</node>
<node CREATED="1701012635503" ID="ID_1854694715" MODIFIED="1701012669391" TEXT="damit sind die Instanzen in der Konfiguration von TestChainLoad zu &#xbb;Templates&#xab; geworden"/>
<node CREATED="1701012698015" ID="ID_45448504" MODIFIED="1701012717450" TEXT="diese k&#xf6;nnten nun via perfect-Forwarding von anderen Instanzen initialisiert werden"/>
<node CREATED="1701012761918" ID="ID_985295794" MODIFIED="1701012786631" TEXT="der Einfachheit halber k&#xf6;nnen die Setter aber einfach eine Val-Arg nehmen"/>
</node>
<node COLOR="#338800" CREATED="1701023702390" ID="ID_1177607744" MODIFIED="1701024148324" TEXT="brauche: shuffle &#x2259; stateful yet reproducible randomness">
<arrowlink COLOR="#5a9fb2" DESTINATION="ID_388325956" ENDARROW="Default" ENDINCLINATION="-986;64;" ID="Arrow_ID_815524029" STARTARROW="None" STARTINCLINATION="840;39;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1701314067041" ID="ID_431420996" MODIFIED="1701314084426" TEXT="habe jetzt die Basis zum einfachen Definieren von Bausteinen">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1699746891934" ID="ID_1003055056" MODIFIED="1699803875494" TEXT="Node">
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1699746898954" ID="ID_1174327209" MODIFIED="1699803865847" TEXT="Datenstruktur">
<icon BUILTIN="pencil"/>
<node COLOR="#435e98" CREATED="1699746902068" ID="ID_1045369485" MODIFIED="1699754419615" TEXT="maxFan ist ein Template-Param">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1699746922151" ID="ID_292908322" MODIFIED="1699803838767" TEXT="verwende std::Array">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1699747392222" ID="ID_85247310" MODIFIED="1699803842297" TEXT="pred / succ">
<node COLOR="#338800" CREATED="1699747398919" ID="ID_458723840" MODIFIED="1699803834171" TEXT="Anzahl">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1699747406121" ID="ID_1825332114" MODIFIED="1699803835812" TEXT="Iteration">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1699803850765" ID="ID_1046832305" MODIFIED="1699813995892" TEXT="weitere Payload">
<linktarget COLOR="#16a827" DESTINATION="ID_1046832305" ENDARROW="Default" ENDINCLINATION="72;59;" ID="Arrow_ID_1961863856" SOURCE="ID_944363802" STARTARROW="None" STARTINCLINATION="-128;-105;"/>
<icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1699803858055" ID="ID_598864815" MODIFIED="1699803859975" TEXT="hash">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1699813952833" ID="ID_1674807101" MODIFIED="1699813955421" TEXT="level">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1699747423371" ID="ID_1818811688" MODIFIED="1699803681498" TEXT="Berechnung">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1699747433986" ID="ID_1557543092" MODIFIED="1699803673235" TEXT="setzt Berechnung aller Prefecessors vorraus">
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#338800" CREATED="1699747511840" ID="ID_96811527" MODIFIED="1699803777983" TEXT="speichert das Ergebnis per Seiteneffekt">
<linktarget COLOR="#621ebb" DESTINATION="ID_96811527" ENDARROW="Default" ENDINCLINATION="374;25;" ID="Arrow_ID_1925771236" SOURCE="ID_1681365504" STARTARROW="None" STARTINCLINATION="135;10;"/>
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1699747521150" ID="ID_356376425" MODIFIED="1699747533637" TEXT="kann durch Repetitionen aufwendig gemacht werden">
<icon BUILTIN="flag-yellow"/>
<node COLOR="#338800" CREATED="1699813962931" ID="ID_944363802" MODIFIED="1699814010982" TEXT="repetition-Count in der Node speichern">
<arrowlink COLOR="#16a827" DESTINATION="ID_1046832305" ENDARROW="Default" ENDINCLINATION="72;59;" ID="Arrow_ID_1961863856" STARTARROW="None" STARTINCLINATION="-128;-105;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1699756460900" ID="ID_1877216077" MODIFIED="1699758391567" TEXT="Implementierung per boost-Hash">
<icon BUILTIN="yes"/>
<node CREATED="1699756475850" ID="ID_1420065302" MODIFIED="1699756491156" TEXT="wie &#xfc;blich: weil wesentlich einfacher zu benutzen"/>
<node CREATED="1699756491632" ID="ID_1814709620" MODIFIED="1699803797157" TEXT="und: Boost bietet bereits hash_combine">
<arrowlink COLOR="#ae2a85" DESTINATION="ID_1681365504" ENDARROW="Default" ENDINCLINATION="57;1;" ID="Arrow_ID_167902510" STARTARROW="None" STARTINCLINATION="71;5;"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1699758395938" ID="ID_1681365504" MODIFIED="1699803799476">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Konsequenz &#10233; <b>nicht</b>&#160;idempotent
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#621ebb" DESTINATION="ID_96811527" ENDARROW="Default" ENDINCLINATION="374;25;" ID="Arrow_ID_1925771236" STARTARROW="None" STARTINCLINATION="135;10;"/>
<linktarget COLOR="#ae2a85" DESTINATION="ID_1681365504" ENDARROW="Default" ENDINCLINATION="57;1;" ID="Arrow_ID_167902510" SOURCE="ID_1814709620" STARTARROW="None" STARTINCLINATION="71;5;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1699758530360" ID="ID_1331344948" MODIFIED="1700183601409" TEXT="Verlinkung">
<icon BUILTIN="button_ok"/>
<node COLOR="#5b280f" CREATED="1699758540245" ID="ID_1948581542" MODIFIED="1699803614293" TEXT="Zahl der Verbindungen implizit codiert">
<icon BUILTIN="help"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1699758599662" ID="ID_475795635" MODIFIED="1699803638799" TEXT="ist erst mal naheliegend (und bequem)">
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1699758626410" ID="ID_254710650" MODIFIED="1699803643433" TEXT="aber nat&#xfc;rlich quadratisch">
<icon BUILTIN="smiley-oh"/>
</node>
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1699802151220" FOLDED="true" ID="ID_1133520353" MODIFIED="1699827942359" TEXT="eine spezialisierte Klasse w&#xe4;re besser">
<arrowlink COLOR="#486792" DESTINATION="ID_1197014419" ENDARROW="Default" ENDINCLINATION="25;-24;" ID="Arrow_ID_1439179407" STARTARROW="None" STARTINCLINATION="-55;4;"/>
<icon BUILTIN="yes"/>
<node CREATED="1699802174727" ID="ID_1489941015" MODIFIED="1699802178642" TEXT="baut auf std::array auf"/>
<node CREATED="1699802179159" ID="ID_1822324287" MODIFIED="1699802196552" TEXT="speichert zus&#xe4;tzlich den Endpunkt-Iterator"/>
<node CREATED="1699802484022" ID="ID_1587433523" MODIFIED="1699802495258" TEXT="ansonsten so offen wie std::array selber"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1699827809544" ID="ID_1197014419" MODIFIED="1699827949532">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <font face="Monospaced" color="#1f13ae"><b>NodeTab</b></font>&#160;: f&#252;r Verlinkungen und f&#252;r die Topologie-Erstellung
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#486792" DESTINATION="ID_1197014419" ENDARROW="Default" ENDINCLINATION="25;-24;" ID="Arrow_ID_1439179407" SOURCE="ID_1133520353" STARTARROW="None" STARTINCLINATION="-55;4;"/>
</node>
<node COLOR="#338800" CREATED="1699758650056" ID="ID_232473697" MODIFIED="1699758655959" TEXT="Backlinks einf&#xfc;gen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1699758656642" ID="ID_1868827896" MODIFIED="1699758667474" TEXT="Limit der Verlinkung pr&#xfc;fen">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1699805829000" ID="ID_270316664" MODIFIED="1701477253681" TEXT="Topologie">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1699805833671" ID="ID_580627690" MODIFIED="1701476579498" TEXT="Verlinkungs-Algorithmus">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1699805853717" ID="ID_1156505101" MODIFIED="1699821192765" TEXT="Schleifenrahmen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1699805863906" ID="ID_857574027" MODIFIED="1699827724930" TEXT="Steuergr&#xf6;&#xdf;en einf&#xfc;hren">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1699821225351" ID="ID_1826969287" MODIFIED="1699827726975" TEXT="Verzweigen und Reduzieren">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1701013104992" FOLDED="true" ID="ID_1384585617" MODIFIED="1701476577608" TEXT="vorzeitiges Kappen (Pruning)">
<icon BUILTIN="button_ok"/>
<node CREATED="1701013119678" ID="ID_514160905" MODIFIED="1701013248977" TEXT="sinnvoll f&#xfc;r den geplanten Einsatz">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Man m&#246;chte n&#228;mlich auch <i>ganz normale Rendervorg&#228;nge</i>&#160; simulieren, nicht blo&#223; extravagant komplexe Graphen. Denn im Normalfall ist der Abh&#228;ngigkeitsgraph sehr klein, daf&#252;r aber werden immerfort neue Str&#228;nge begonnen. Wir brauchen also einen Mechanismus, der regelm&#228;&#223;ig Str&#228;nge mitten im Graphen beendet.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
<node CREATED="1701013265691" ID="ID_1808531102" MODIFIED="1701013288207" TEXT="nimmt zuf&#xe4;llig einen Knoten aus der Weiterverkn&#xfc;pfung heraus">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#435e98" CREATED="1701013295279" ID="ID_1577021137" MODIFIED="1701028436821" TEXT="verhindern da&#xdf; die Generierung steckenbleibt">
<linktarget COLOR="#606b75" DESTINATION="ID_1577021137" ENDARROW="Default" ENDINCLINATION="294;-251;" ID="Arrow_ID_342682284" SOURCE="ID_382069196" STARTARROW="None" STARTINCLINATION="476;43;"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1701013320019" ID="ID_1117191097" MODIFIED="1701013347739" TEXT="bisher wird nur die initiale Start-Node explizit erzeugt"/>
<node CREATED="1701013349488" ID="ID_1770244833" MODIFIED="1701013370227" TEXT="durch Pruning k&#xf6;nnten alle Vorg&#xe4;nger verschwinden; die Schleife dreht dann leer">
<icon BUILTIN="broken-line"/>
</node>
<node CREATED="1701013373590" ID="ID_1960309734" MODIFIED="1701013393842" TEXT="L&#xf6;sung: falls das passiert &#x27f6; neue Start-Node">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1701013395009" ID="ID_532861011" MODIFIED="1701013411163" TEXT="&#x27f9; Corrolar: die erste Start-Node entsteht dann von selbst"/>
<node COLOR="#338800" CREATED="1701029194543" ID="ID_428563573" MODIFIED="1701029206980" TEXT="Seed aus erster Seed-Node entnehmen">
<icon BUILTIN="button_ok"/>
<node CREATED="1701029211699" ID="ID_1504750686" MODIFIED="1701029216727" TEXT="Programmiertrick.."/>
<node CREATED="1701029217650" ID="ID_820767620" MODIFIED="1701029224237" TEXT="wenn es die erste Node ist..."/>
<node CREATED="1701029224849" ID="ID_178091052" MODIFIED="1701029238572" TEXT="dann verstecken wir den aktuellen Seed im Aufrufparameter"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1699805890752" FOLDED="true" ID="ID_604823204" MODIFIED="1701476576187" TEXT="Limitierungen einhalten">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1700163524509" ID="ID_1054737506" MODIFIED="1701314149767" TEXT="Auswertung der CtrlRules sicher handhaben">
<arrowlink COLOR="#fdedce" DESTINATION="ID_310818837" ENDARROW="Default" ENDINCLINATION="174;13;" ID="Arrow_ID_184825307" STARTARROW="None" STARTINCLINATION="247;-214;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1700163554337" ID="ID_467387724" MODIFIED="1700163567392" TEXT="diverse Fallen hier">
<icon BUILTIN="clanbomber"/>
</node>
<node COLOR="#435e98" CREATED="1700163568492" ID="ID_1902020306" MODIFIED="1700179577804" TEXT="unsigned-wrap-around"/>
<node COLOR="#435e98" CREATED="1700163611881" ID="ID_1655584485" MODIFIED="1700179577805" TEXT="numerische Probleme"/>
<node COLOR="#338800" CREATED="1701314125417" ID="ID_1070473602" LINK="#ID_1225692248" MODIFIED="1701314146089" TEXT="letztlich komplett in die RandomDraw-Komponente verlagert">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#a50125" CREATED="1700172965245" ID="ID_1212905228" MODIFIED="1700177181718" TEXT="Logik in Randbereichen">
<icon BUILTIN="messagebox_warning"/>
<node COLOR="#435e98" CREATED="1700172979632" ID="ID_780020781" MODIFIED="1700173019703" TEXT="die feste Anzahl Nodes kann mitten in der Schleife ersch&#xf6;pft sein">
<icon BUILTIN="broken-line"/>
<node COLOR="#338800" CREATED="1700173024390" ID="ID_784357504" MODIFIED="1700173075760" TEXT="L&#xf6;sung: spaceLeft() mu&#xdf; das mit testen">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1700173050842" ID="ID_1128008614" MODIFIED="1700173073277" TEXT="dann k&#xf6;nnen aber nun unklare Misch-F&#xe4;lle auftreten">
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#338800" CREATED="1700173091565" ID="ID_1572239820" MODIFIED="1700173116055" TEXT="Initialisierung der r-Node (f&#xfc;r Reductions) sicherstellen">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1700173141044" ID="ID_396563545" MODIFIED="1700177166094">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      kein Platz f&#252;r eine r-Node &#10233;
    </p>
    <p>
      ein Vorg&#228;nger k&#246;nnte mit allen Nachfolgern verbunden sein
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="broken-line"/>
<node CREATED="1700173209742" ID="ID_721852208" MODIFIED="1700173228363" TEXT="und dann w&#xfc;rde weitere Verbindung die Limits sprengen"/>
<node CREATED="1700173228921" ID="ID_1973572322" MODIFIED="1700173236942" TEXT="und sie w&#xe4;re obendrein redundant"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1700173279684" ID="ID_773786407" MODIFIED="1700173291514" TEXT="jetzt wird&apos;s aber ekelhaft...">
<icon BUILTIN="smiley-oh"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1700174343134" ID="ID_100264276" MODIFIED="1700177172151">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      die Situtation ist nur so lange logisch konsistent,
    </p>
    <p>
      wie ich die carry-on-Node einf&#252;gen kann
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
<node COLOR="#435e98" CREATED="1700174436520" ID="ID_1750473587" MODIFIED="1700177175685" TEXT="wenn ich das nicht kann  &#x27f9; nur Schadensbegrenzung">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1700174519184" ID="ID_731321630" MODIFIED="1700174795390" TEXT="einziger Problemfall: wenn Vorg&#xe4;nger noch gar keine Verbindung hat">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...denn dann w&#252;rden wir eine Kette unterbrechen, und das darf keinesfalls passieren (es sei denn, das ist per Ctrl-Rule so vorgegeben worden)
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1700174872566" ID="ID_521905277" MODIFIED="1700175178082" TEXT="Nachfolger haben stets noch mindestens einen freien Vorg&#xe4;nger-Slot">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...das liegt an der Grundstrukture der Topologie-Generierung: wir iterieren ja &#252;ber die Vorg&#228;nger. Solange wir einen Vorg&#228;nger in der Hand haben, kann dieser noch nicht per Reduction oder Carry-on an irgend einen Nachh&#228;nger verschaltet worden sein (aber der Vorg&#228;nger kann sehr wohl per Expansion mit allen Nachfolgern verbunden sein)
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#338800" CREATED="1700175235408" ID="ID_859590304" MODIFIED="1700241715805" TEXT="Also L&#xf6;sung: nur unverbundene Vorg&#xe4;nger an den letzten Nachfolger anh&#xe4;ngen">
<linktarget COLOR="#548b9d" DESTINATION="ID_859590304" ENDARROW="Default" ENDINCLINATION="197;-6;" ID="Arrow_ID_1438074607" SOURCE="ID_911505603" STARTARROW="None" STARTINCLINATION="220;16;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1701028280487" ID="ID_1952856877" MODIFIED="1701028303257" TEXT="alle Nodes pruned am Ende der Schleife">
<icon BUILTIN="broken-line"/>
<node CREATED="1701028309847" ID="ID_1340553518" MODIFIED="1701028328246" TEXT="L&#xf6;sung: verschiebe das Einf&#xfc;gen der Seed-Node ans Schleifenende">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1701028333800" ID="ID_905367282" MODIFIED="1701028423482" TEXT="dann gilt: pruned &#x27f9; keine Node hinzugef&#xfc;gt">
<icon BUILTIN="forward"/>
<node CREATED="1701028376986" ID="ID_1051611962" MODIFIED="1701028395924" TEXT="also isnil(next) &#x27f9; es mu&#xdf; noch Platz f&#xfc;r eine Node sein"/>
</node>
<node CREATED="1701028403599" ID="ID_821906479" MODIFIED="1701028414427" TEXT="sinnvollerweise dann auch ++level am Ende der Schleife">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1701476518799" ID="ID_1469951174" MODIFIED="1701476557001" TEXT="informell durch umfangreiche Experimente validiert">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      es gab dann keinen einzigen Crash mehr und auch das Verhalten war stets nach Sicht konstistent
    </p>
  </body>
</html></richcontent>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1700240197629" ID="ID_1277367256" MODIFIED="1701476587501" TEXT="Form steuern">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1700240219001" ID="ID_531532352" MODIFIED="1701476588892" TEXT="Hilfsmittel zur Regel-Definition">
<icon BUILTIN="button_ok"/>
<node COLOR="#11660e" CREATED="1700761069915" ID="ID_557518427" MODIFIED="1700761165588" TEXT="Basis: &#xbb;ziehen&#xab; von Zufallszahlen aus dem Hash &#x27f6; lib::RandomDraw">
<arrowlink COLOR="#719f60" DESTINATION="ID_1225692248" ENDARROW="Default" ENDINCLINATION="-466;214;" ID="Arrow_ID_834549033" STARTARROW="None" STARTINCLINATION="241;10;"/>
</node>
<node COLOR="#338800" CREATED="1701012898916" ID="ID_1931960006" MODIFIED="1701476590458" TEXT="Regel-Baukasten aufbauen">
<arrowlink COLOR="#5a509e" DESTINATION="ID_1092101612" ENDARROW="Default" ENDINCLINATION="8;265;" ID="Arrow_ID_362060244" STARTARROW="None" STARTINCLINATION="415;-28;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1701313975373" HGAP="49" ID="ID_1693658322" MODIFIED="1701314186518" TEXT="Bausteine" VSHIFT="14">
<icon BUILTIN="info"/>
<node COLOR="#338800" CREATED="1701313986968" ID="ID_332576900" MODIFIED="1701314035258" TEXT="rule_atStart">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      stattet jede seed-Node sofort mit einem festen Branch-Faktor aus
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#338800" CREATED="1701476608171" ID="ID_72390524" MODIFIED="1701476618647" TEXT="rule_atJoin">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1701476614658" ID="ID_31724104" MODIFIED="1701476719505" TEXT="rule_atLink">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      diese ist speziell, und spielt eine gro&#223;e Rolle, um kontrolliert Seeds einzuspielen. Daf&#252;r mu&#223; sie an die Situation im Generierungs-Algorighmus angepa&#223;t werden, denn dort sind zum Abfrage-Zeitpunkt die Nachfolger noch gar nicht etabliert. Daher kann auch ein Link und ein Exit nicht wirklich unterschieden werden.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#338800" CREATED="1701476719500" ID="ID_339932663" MODIFIED="1701476858539" TEXT="rule_atJoin_else">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Das ist eine if-else-Regel; man kann damit auf einen Join anders reagieren als auf sonstige Knoten. Letzten Endes hat mich diese Regel aber nicht weitergebracht, denn f&#252;r gute Strukturen kommt es <b>aussschlie&#223;lich</b>&#160;auf das feinf&#252;hlige Balancieren der Kr&#228;fte an &#8212; das ist eine grunds&#228;tzliche Einschr&#228;nkung des Ansatzes, die es unm&#246;glich macht, auf Struktur-Muster direkt zu reagieren
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1701225831100" ID="ID_502326802" MODIFIED="1701225843337" TEXT="seed und shufle zur Auswahl von Varianten">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1699971822836" ID="ID_1118263931" MODIFIED="1701477248441" TEXT="Diagnostik">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1699972014017" FOLDED="true" ID="ID_1464042796" MODIFIED="1700159727325" TEXT="Topologie sichtbar machen">
<linktarget COLOR="#62819c" DESTINATION="ID_1464042796" ENDARROW="Default" ENDINCLINATION="21;-256;" ID="Arrow_ID_596151514" SOURCE="ID_1991398605" STARTARROW="None" STARTINCLINATION="787;55;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1699972026007" ID="ID_551004748" MODIFIED="1700105381375" TEXT="Idee: DOT generieren (Graphviz)">
<arrowlink COLOR="#435fb4" DESTINATION="ID_1402372766" ENDARROW="Default" ENDINCLINATION="-1358;124;" ID="Arrow_ID_1189460163" STARTARROW="None" STARTINCLINATION="-1697;146;"/>
<icon BUILTIN="idea"/>
<node CREATED="1699982887957" ID="ID_1019263938" MODIFIED="1699983239443" TEXT="sollte mit einfachsten DOT-Features m&#xf6;glich sein">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <ul>
      <li>
        einfache default-Kn&#246;del
      </li>
      <li>
        den Graphen von unten nach oben anordnen (rankdir=&quot;BT&quot;)
      </li>
      <li>
        die Nodes der Zeit-Ebenen jeweils in einen Subgraphen mit rank=same
      </li>
      <li>
        Seed-Nodes geeignet auszeichnen, die Endnode ebenso
      </li>
      <li>
        Kurzform des Hash als Node-Label
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node COLOR="#338800" CREATED="1699983274744" FOLDED="true" ID="ID_1122794529" MODIFIED="1700105386483" TEXT="Darstellungsfeatures bereitstellen">
<icon BUILTIN="button_ok"/>
<node CREATED="1699984555015" ID="ID_1692130388" MODIFIED="1699984558895" TEXT="von unten nach oben"/>
<node CREATED="1699984543111" ID="ID_219083359" MODIFIED="1699984554042" TEXT="Zeitebene : horizontal auf einem Level"/>
<node CREATED="1699984727751" ID="ID_1646991690" MODIFIED="1699984735954" TEXT="Seed-Nodes: circle"/>
<node CREATED="1699984736518" ID="ID_1084319856" MODIFIED="1699984743302" TEXT="Start-Node : double circle"/>
<node CREATED="1699984757420" ID="ID_1701093793" MODIFIED="1699984761494" TEXT="End-Node : bold"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1699985086607" ID="ID_764096140" MODIFIED="1699989914820" STYLE="bubble">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <u>Grundstruktur </u>
    </p>
    <p>
      
    </p>
    <p>
      <font face="Monospaced" size="2">digraph { </font>
    </p>
    <p>
      <font face="Monospaced" size="2">&#160;&#160;// Nodes </font>
    </p>
    <p>
      <font face="Monospaced" size="2">&#160;&#160;N1[label=1, shape=doublecircle] </font>
    </p>
    <p>
      <font face="Monospaced" size="2">&#160;&#160;N2[label=2] </font>
    </p>
    <p>
      <font face="Monospaced" size="2">&#160;&#160;N3[label=3] </font>
    </p>
    <p>
      <font face="Monospaced" size="2">&#160;&#160;N4[label=4] </font>
    </p>
    <p>
      <font face="Monospaced" size="2">&#160;&#160;N5[label=5, shape=circle] </font>
    </p>
    <p>
      <font face="Monospaced" size="2">&#160;&#160;N6[label=6] </font>
    </p>
    <p>
      <font face="Monospaced" size="2">&#160;&#160;N7[label=7, shape=box, style=rounded] </font>
    </p>
    <p>
      
    </p>
    <p>
      <font face="Monospaced" size="2">&#160;&#160;//Layers </font>
    </p>
    <p>
      <font face="Monospaced" size="2">&#160;&#160;{ /*0*/ rank=min&#160;&#160;N1 } </font>
    </p>
    <p>
      <font face="Monospaced" size="2">&#160;&#160;{ /*1*/ rank=same N2 N3 } </font>
    </p>
    <p>
      <font face="Monospaced" size="2">&#160;&#160;{ /*2*/ rank=same N4 N5 N6 } </font>
    </p>
    <p>
      <font face="Monospaced" size="2">&#160;&#160;{ /*3*/ rank=same N7 } </font>
    </p>
    <p>
      
    </p>
    <p>
      <font face="Monospaced" size="2">&#160;&#160;// Topology </font>
    </p>
    <p>
      <font face="Monospaced" size="2">&#160;&#160;N1 -&gt; {N2,N3} </font>
    </p>
    <p>
      <font face="Monospaced" size="2">&#160;&#160;N2 -&gt; {N4,N6} </font>
    </p>
    <p>
      <font face="Monospaced" size="2">&#160;&#160;N3 -&gt; {N4} </font>
    </p>
    <p>
      <font face="Monospaced" size="2">&#160;&#160;N4 -&gt; {N7} </font>
    </p>
    <p>
      <font face="Monospaced" size="2">&#160;&#160;N5 -&gt; {N7} </font>
    </p>
    <p>
      <font face="Monospaced" size="2">&#160;&#160;N6 -&gt; {N7} </font>
    </p>
    <p>
      <font face="Monospaced" size="2">} </font>
    </p>
  </body>
</html></richcontent>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1699989949319" FOLDED="true" ID="ID_1160779868" MODIFIED="1700105389973" STYLE="fork" TEXT="wichtig">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1699989975909" ID="ID_1742749035" MODIFIED="1699990064728">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <font face="Monospaced"><b>rank</b></font>&#160;mu&#223; explizit in jedem Layer definiert sein
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1699990010639" ID="ID_701982398" MODIFIED="1699990037868" TEXT="Reihenfolge der Node-Definition aufsteigend"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1699990086867" ID="ID_390644422" MODIFIED="1699990147855" TEXT="vertr&#xe4;gt keine non-breaking-Spaces">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...und das zeigt sich in schwer verst&#228;ndlichem Fehlverhalten; er macht dann Nodes mehrfach...
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="clanbomber"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1699983287679" ID="ID_1236079516" MODIFIED="1700156324205" TEXT="Ausgabestruktur erzeugen">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1699983387905" FOLDED="true" ID="ID_1906181979" MODIFIED="1700105376397" TEXT="mu&#xdf; Klammern und Gruppen erzeugen">
<icon BUILTIN="messagebox_warning"/>
<icon BUILTIN="hourglass"/>
<node COLOR="#435e98" CREATED="1699995923504" ID="ID_685647464" MODIFIED="1700105364799" TEXT="brauche eine DSL mit builder-Notation">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1699998536090" ID="ID_1929608086" MODIFIED="1699998999619" TEXT="mu&#xdf; Subexpressions in der DSL abgrenzen">
<edge COLOR="#82603d" STYLE="linear"/>
<node CREATED="1699998574428" ID="ID_1088049425" MODIFIED="1699998608692" TEXT="M&#xf6;glichkeit-1 : end-Function">
<node CREATED="1699998748525" ID="ID_844254314" MODIFIED="1699999022465" STYLE="bubble">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <font color="#622b1e" face="Monospaced" size="2">DSL().group(1) </font>
    </p>
    <p>
      <font color="#622b1e" face="Monospaced" size="2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;.term(&quot;a&quot;) </font>
    </p>
    <p>
      <font color="#622b1e" face="Monospaced" size="2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;.term(&quot;b&quot;) </font>
    </p>
    <p>
      <font color="#622b1e" face="Monospaced" size="2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;.group(11) </font>
    </p>
    <p>
      <font color="#622b1e" face="Monospaced" size="2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;.term(&quot;x&quot; </font>
    </p>
    <p>
      <font color="#622b1e" face="Monospaced" size="2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;.end() </font>
    </p>
    <p>
      <font color="#622b1e" face="Monospaced" size="2">&#160;&#160;&#160;&#160;&#160;.end();</font>
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1699998672279" ID="ID_991942735" MODIFIED="1699998684313" TEXT="M&#xf6;glichkeit-2 : freie Funktionen">
<node CREATED="1699998748525" ID="ID_1808331011" MODIFIED="1699999498364" STYLE="bubble">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <font color="#622b1e" face="Monospaced" size="2">dsl( </font>
    </p>
    <p>
      <font color="#622b1e" face="Monospaced" size="2">&#160;&#160;group(1,</font>
    </p>
    <p>
      <font color="#622b1e" face="Monospaced" size="2">&#160;&#160;&#160;&#160;term(&quot;a&quot;),</font>
    </p>
    <p>
      <font color="#622b1e" face="Monospaced" size="2">&#160;&#160;&#160;&#160;term(&quot;b&quot;), </font>
    </p>
    <p>
      <font color="#622b1e" face="Monospaced" size="2">&#160;&#160;&#160;&#160;group(11, </font>
    </p>
    <p>
      <font color="#622b1e" face="Monospaced" size="2">&#160;&#160;&#160;&#160;&#160;&#160;term(&quot;x&quot;))))</font>
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1699998685710" ID="ID_682930244" MODIFIED="1699998710074" TEXT="M&#xf6;glichkeit-3 : Member-Funktionen">
<node CREATED="1699998748525" ID="ID_1141445226" MODIFIED="1699999570489" STYLE="bubble">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <font color="#622b1e" face="Monospaced" size="2">DSL dsl;</font>
    </p>
    <p>
      <font color="#622b1e" face="Monospaced" size="2">&#160;&#160;dsl.group(1,</font>
    </p>
    <p>
      <font color="#622b1e" face="Monospaced" size="2">&#160;&#160;&#160;&#160;dsl.term(&quot;a&quot;),</font>
    </p>
    <p>
      <font color="#622b1e" face="Monospaced" size="2">&#160;&#160;&#160;&#160;dsl.term(&quot;b&quot;), </font>
    </p>
    <p>
      <font color="#622b1e" face="Monospaced" size="2">&#160;&#160;&#160;&#160;dsl.group(11, </font>
    </p>
    <p>
      <font color="#622b1e" face="Monospaced" size="2">&#160;&#160;&#160;&#160;&#160;&#160;dsl.term(&quot;x&quot;))))</font>
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1699998710994" ID="ID_59980294" MODIFIED="1699998742082" TEXT="M&#xf6;glichkeit-3b : DSL in Subklasse definieren">
<node CREATED="1699998748525" ID="ID_279445539" MODIFIED="1700000422272" STYLE="bubble">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <font color="#622b1e" face="Monospaced" size="2">struct Special : DSL </font>
    </p>
    <p>
      <font color="#622b1e" face="Monospaced" size="2">&#160;&#160;{ </font>
    </p>
    <p>
      <font color="#622b1e" face="Monospaced" size="2">&#160;&#160;&#160;&#160;Special(Context ctx) </font>
    </p>
    <p>
      <font color="#622b1e" face="Monospaced" size="2">&#160;&#160;&#160;&#160;&#160;&#160;{ </font>
    </p>
    <p>
      <font color="#622b1e" face="Monospaced" size="2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;group(1, </font>
    </p>
    <p>
      <font color="#622b1e" face="Monospaced" size="2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;term(&quot;a&quot;),</font>
    </p>
    <p>
      <font color="#622b1e" face="Monospaced" size="2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;term(&quot;b&quot;), </font>
    </p>
    <p>
      <font color="#622b1e" face="Monospaced" size="2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;group(11, </font>
    </p>
    <p>
      <font color="#622b1e" face="Monospaced" size="2">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;term(&quot;x&quot;)));</font>
    </p>
    <p>
      <font color="#622b1e" face="Monospaced" size="2">&#160;&#160;&#160;&#160;&#160;&#160;} </font>
    </p>
    <p>
      <font color="#622b1e" face="Monospaced" size="2">&#160;&#160;} </font>
    </p>
    <p>
      <font color="#622b1e" face="Monospaced" size="2">&#160;&#160;process; </font>
    </p>
    <p>
      <font color="#622b1e" face="Monospaced" size="2">&#160;&#160;process(myContext);</font>
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1700006097450" ID="ID_1104460387" MODIFIED="1700100092035" TEXT="die freien Funktionen kommmen dem Ideal am n&#xe4;chsten">
<icon BUILTIN="yes"/>
<node CREATED="1700006117615" ID="ID_612462517" MODIFIED="1700006130721" TEXT="wenn nicht das Probem mit der Namespace-Verschmutzung w&#xe4;re"/>
<node COLOR="#435e98" CREATED="1700006318148" ID="ID_1612245200" MODIFIED="1700100086660" TEXT="using namespace dot_builder;">
<icon BUILTIN="idea"/>
<node CREATED="1700100036667" ID="ID_599996089" MODIFIED="1700100053045" TEXT="nach einiger &#xdc;berlegung &#x27f9; das ist die saubere L&#xf6;sung"/>
<node CREATED="1700100053622" ID="ID_679228415" MODIFIED="1700100077788" TEXT="und anscheinend der Ansatz, der am besten zu C++ pa&#xdf;t"/>
</node>
<node CREATED="1700006706624" ID="ID_1393063108" MODIFIED="1700006721154" TEXT="allerdings m&#xfc;ssen wir iterativ verarbeiten">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1700006754675" ID="ID_551551018" MODIFIED="1700006766092" TEXT="und zwar flexibel, im Nutz-Kontext"/>
<node CREATED="1700007186503" ID="ID_183574797" MODIFIED="1700007195954" TEXT="also zu einem Objekt etwas hinzuf&#xfc;gen"/>
<node CREATED="1700007202829" ID="ID_1882812619" MODIFIED="1700007214173" TEXT="oder ein sukzessives Strom-Mapping"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1700100099643" ID="ID_574030129" MODIFIED="1700100156066" TEXT="und das Thema &#xbb;Code-Baukasten&#xab; ist jetzt erst mal vertagt">
<arrowlink COLOR="#7e76c6" DESTINATION="ID_194005144" ENDARROW="Default" ENDINCLINATION="182;0;" ID="Arrow_ID_1165713806" STARTARROW="None" STARTINCLINATION="391;18;"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1700008334295" ID="ID_1960936169" MODIFIED="1700008755885" TEXT="Abw&#xe4;gung: was pa&#xdf;t hier">
<arrowlink COLOR="#4085ad" DESTINATION="ID_1742063716" ENDARROW="Default" ENDINCLINATION="-293;23;" ID="Arrow_ID_1472521519" STARTARROW="None" STARTINCLINATION="13;20;"/>
<icon BUILTIN="help"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1700008346347" ID="ID_528871053" MODIFIED="1700008718625" TEXT="high-performance : sofort in einen gemeinsamen Buffer schreiben">
<icon BUILTIN="idea"/>
<icon BUILTIN="hourglass"/>
<node CREATED="1700008369280" ID="ID_984038399" MODIFIED="1700008375780" TEXT="mu&#xdf; Indentation zu Beginn wissen"/>
<node CREATED="1700008376983" ID="ID_811047744" MODIFIED="1700008392905" TEXT="unterst&#xfc;tzt nur einen einzigen Pass"/>
</node>
<node COLOR="#5b280f" CREATED="1700008424297" ID="ID_1461915201" MODIFIED="1700008686910" TEXT="jede Gruppe hat ihren eigenen Buffer">
<icon BUILTIN="button_cancel"/>
<node CREATED="1700008439582" ID="ID_755105300" MODIFIED="1700008464983" TEXT="ist so ein Zwischending bzgl. Performance"/>
<node CREATED="1700008472754" ID="ID_1579531931" MODIFIED="1700008495283" TEXT="man mu&#xdf; dann am Ende jeden nested-Buffer nochmal kopieren"/>
</node>
<node CREATED="1700008513363" ID="ID_205696612" MODIFIED="1700008754001" TEXT="Baustein ist Zeilen-Liste">
<icon BUILTIN="forward"/>
<node CREATED="1700008544256" ID="ID_569683159" MODIFIED="1700008575368" TEXT="am Ende wird ein render()-call rekursiv durchgegeben"/>
<node CREATED="1700008590675" ID="ID_1566542235" MODIFIED="1700008604252" TEXT="Indentation wird dabei on-the-fly hinzugef&#xfc;gt"/>
<node CREATED="1700008635452" ID="ID_555907768" MODIFIED="1700008648828">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      nur <i>bodenst&#228;ndige </i>Performance....
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1700008657602" ID="ID_1742063716" MODIFIED="1700008740876" TEXT="KISS + YAGNI &#x27f9; da geht&apos;s lang">
<linktarget COLOR="#4085ad" DESTINATION="ID_1742063716" ENDARROW="Default" ENDINCLINATION="-293;23;" ID="Arrow_ID_1472521519" SOURCE="ID_1960936169" STARTARROW="None" STARTINCLINATION="13;20;"/>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1699983402423" ID="ID_1029913754" MODIFIED="1700099128783" TEXT="brauche also mehrere tempor&#xe4;re Akkumulatoren">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1699983437699" ID="ID_343470388" MODIFIED="1700099130024" TEXT="hierf&#xfc;r ist std::vector angemessen">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#5b280f" CREATED="1699983559651" ID="ID_1201642524" MODIFIED="1700099114581" TEXT="sinnvollerweise lediglich die Node* aufsammeln">
<icon BUILTIN="button_cancel"/>
</node>
<node COLOR="#435e98" CREATED="1700099088803" ID="ID_1519009073" MODIFIED="1700099117814" TEXT="oder besser: direkt in den Abschnitten vom generierten DOT-Skript aufsammeln">
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#338800" CREATED="1699983576099" ID="ID_1099057461" MODIFIED="1700105296039" TEXT="einfachen Basis-Renderer f&#xfc;r DOT anlegen (ausbauf&#xe4;hig)">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1699984818923" ID="ID_1140148647" MODIFIED="1700099172943" TEXT="Generator-Funktionen f&#xfc;r Standard-Codebausteine">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1699984825249" FOLDED="true" ID="ID_956768902" MODIFIED="1700100162397" TEXT="Funktionen f&#xfc;r verschachtelte Strukturen">
<icon BUILTIN="stop-sign"/>
<icon BUILTIN="hourglass"/>
<node CREATED="1700099196455" ID="ID_822136804" MODIFIED="1700099203136" TEXT="ja... eigentlich will ich da hin"/>
<node CREATED="1700099203747" ID="ID_1336926297" MODIFIED="1700099213863">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      ...aber sage erst mal <b>YAGNI</b>
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1700099220184" ID="ID_98826849" MODIFIED="1700099995491" TEXT="das w&#xe4;re n&#xe4;mlich nicht trivial in C++">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1700099714957" ID="ID_506786149" MODIFIED="1700099730400" TEXT="ich br&#xe4;uchte daf&#xfc;r Polymorphismus in den Code-Bausteinen"/>
<node CREATED="1700099738665" ID="ID_1962131725" MODIFIED="1700099754847" TEXT="und das widerspricht der einfachen Value-Semantik der Kombinator-Notation"/>
<node CREATED="1700099786789" ID="ID_194005144" MODIFIED="1700100137987" TEXT="&#x201e;im Prinzip ja...&#x201c;">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...man k&#246;nnte z.B. meinen PolymorphicValue verwenden (wenn ich mich nur 
      nicht so f&#252;r den verworrenen Implementierungs-Code sch&#228;men m&#252;&#223;te... &#55358;&#56370; 
      Ticket #<b>1197</b>)
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#7e76c6" DESTINATION="ID_194005144" ENDARROW="Default" ENDINCLINATION="182;0;" ID="Arrow_ID_1165713806" SOURCE="ID_574030129" STARTARROW="None" STARTINCLINATION="391;18;"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1700099246157" ID="ID_1900601354" MODIFIED="1700099274850" TEXT="besser: nur Kurznotation f&#xfc;r zeilenweise Code-Generierung">
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#338800" CREATED="1699983654942" ID="ID_1968810638" MODIFIED="1700156322919" TEXT="DSL verwenden zur Visualisierung">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1700105305528" ID="ID_1899482943" MODIFIED="1700105320553" TEXT="testweise direkt im verify_Topology() aufgebaut">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1700105322133" ID="ID_1080416201" MODIFIED="1700105347114" TEXT="einfache For-Schleife mit &#xbb;schleppendem&#xab; time-Level">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1700156293989" ID="ID_1727407041" MODIFIED="1700156304913" TEXT="Node-ID direkt aus Speicher-Offset ableiten">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1700156308658" ID="ID_646954295" MODIFIED="1700156321018" TEXT="Hash gek&#xfc;rzt darstellen (1byte)">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1700156287032" ID="ID_1166019368" MODIFIED="1700156292918" TEXT="Formate vorbelegen">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1700147510434" ID="ID_1659345454" MODIFIED="1700156327130" TEXT="Extrahieren und reorganisieren">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1700147703792" ID="ID_1662535458" MODIFIED="1700151155878" TEXT="separater Header: lib/dot-gen.hpp">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1700151162860" ID="ID_479859970" MODIFIED="1700156416376" TEXT="Graph-generierungs-Code in eigenen Operator extrahieren">
<arrowlink COLOR="#42b360" DESTINATION="ID_1175949615" ENDARROW="Default" ENDINCLINATION="334;0;" ID="Arrow_ID_357935660" STARTARROW="None" STARTINCLINATION="-103;5;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1700156329113" ID="ID_1238209773" MODIFIED="1700156340930" TEXT="alternativ direkt nach SDOUT schreiben">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1701014034892" FOLDED="true" ID="ID_866240930" MODIFIED="1701477245272" TEXT="Topologie-Kennzahlen">
<icon BUILTIN="button_ok"/>
<node CREATED="1701014048994" ID="ID_1678541468" MODIFIED="1701014062212" TEXT="globale Statistik">
<node CREATED="1701014092123" ID="ID_97178406" MODIFIED="1701014096623" TEXT="Anzahl...">
<node CREATED="1701014366015" ID="ID_94760001" MODIFIED="1701014369211" TEXT="Levels"/>
<node CREATED="1701014373886" ID="ID_1494013511" MODIFIED="1701014375569" TEXT="Nodes"/>
<node CREATED="1701014110513" ID="ID_883717238" MODIFIED="1701014372296" TEXT="inner Nodes"/>
<node CREATED="1701014097851" ID="ID_165643382" MODIFIED="1701014103255" TEXT="Seed-Nodes"/>
<node CREATED="1701014103986" ID="ID_53295910" MODIFIED="1701014108086" TEXT="Exit-Nodes"/>
<node CREATED="1701014150515" ID="ID_518423204" MODIFIED="1701014266135" TEXT="Forks">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Node mit mehr als einem Nachfolger
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1701014158011" ID="ID_864773478" MODIFIED="1701014276582" TEXT="Joins">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Node mit mehr als einem Vorl&#228;ufer
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1701014235017" ID="ID_722933063" MODIFIED="1701016481952" TEXT="Links">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Fortsetzung einer Kette mit genau einem Vorl&#228;ufer und einem Nachfolger
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1701014318366" ID="ID_986125599" MODIFIED="1701014342306" TEXT="Knots">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Node mit mehr als einem Vorl&#228;ufer <i>und</i>&#160;mehr als einem Nachfolger
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1701016507804" ID="ID_1599719137" MODIFIED="1701016768302" TEXT="Spread">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      die Zahl der ausgehenden Verbindungen minus der eingehenden Verbindungen;&#160;&#160;&#8721;spread &#8793; 0 (Konsistenz der Connectivity)
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1701014411294" ID="ID_156727535" MODIFIED="1701014453423" TEXT="&#x2205; Level : f&#xfc;r alle diese...">
<node CREATED="1701015385538" HGAP="177" ID="ID_1646330288" MODIFIED="1701015748897" TEXT="empirische Rate" VSHIFT="2">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      f&#252;r einfache Topologien sollte das den konfigurierten Wahrscheinlichkeiten entsprechen; bei komplexeren Topologien beschreibt es das Gleichgewicht, und ist daher eine wesentliche Kennzahl
    </p>
  </body>
</html></richcontent>
<edge COLOR="#296a72" STYLE="sharp_linear" WIDTH="2"/>
<font NAME="SansSerif" SIZE="10"/>
</node>
</node>
<node CREATED="1701015327833" ID="ID_1250341173" MODIFIED="1701015522945" TEXT="&#x2205; Level / Breite : f&#xfc;r die Geometrie">
<node CREATED="1701015385538" HGAP="111" ID="ID_1031922946" MODIFIED="1701015908437" TEXT="Aktivit&#xe4;ts-Dichte" VSHIFT="2">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      da in einem breiteren Graph die viel mehr Nodes pro Level konzentriert sind, wachsen alle Gemmetrie-Kenndaten auch mit der Breite, was die Beurteilung des Verlaufs erschwert; daher ist es sinnvoll, eine Variante der lokalen Kennzahlen zu erstellen, die auf die Einheitsbreite normiert ist; erst dadurch wird ein zeitlicher Tredn im Gleichgewicht sichtbar
    </p>
  </body>
</html></richcontent>
<edge COLOR="#296a72" STYLE="sharp_linear" WIDTH="2"/>
<font NAME="SansSerif" SIZE="10"/>
</node>
</node>
<node CREATED="1701015198394" ID="ID_711058115" MODIFIED="1701015638420" TEXT="&#x2205; &#x3b3; Level : gewichteter Level f&#xfc;r diese">
<node CREATED="1701015385538" HGAP="90" ID="ID_1626397963" MODIFIED="1701016073457" TEXT="Schwerpukt der Aktivit&#xe4;t" VSHIFT="2">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      man berechnet hierf&#252;r ein gewichtetes Mittel &#252;ber die Level, gewichtet durch die jweilige Kennzahl; dadurch ergibt sich, wo die betr. Kennzahl schwerpunktm&#228;&#223;ig aktiv ist. Das ist f&#252;r alle Kennzahlen sinnvoll, selbst die Nodes (wo sind die meisten Nodes?). Die Standardabweichung k&#246;nnte man dann auch gleich noch dazu berechnen (um die Breite der Verteilung zu kennzeichnen)
    </p>
  </body>
</html></richcontent>
<edge COLOR="#296a72" STYLE="sharp_linear" WIDTH="2"/>
<font NAME="SansSerif" SIZE="10"/>
</node>
</node>
<node CREATED="1701015615530" ID="ID_1006500268" MODIFIED="1701015636161" TEXT="&#x2205; &#x3b3; Level / Breite : gewichteter Level">
<node CREATED="1701015385538" HGAP="100" ID="ID_622462617" MODIFIED="1701016442682" TEXT="Schwerpunkt Aktivit&#xe4;ts-Dichte" VSHIFT="3">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      analog zum einfachen gewichteten Level, nur da&#223; hier die auf die Breite normierten Geometrie-Daten betrachtet werden; dadurch werden tats&#228;chlich zeitliche Verl&#228;ufe sichtbar
    </p>
  </body>
</html></richcontent>
<edge COLOR="#296a72" STYLE="sharp_linear" WIDTH="2"/>
<font NAME="SansSerif" SIZE="10"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1701014700627" ID="ID_486759315" MODIFIED="1701014706596" TEXT="nice-to-have">
<icon BUILTIN="hourglass"/>
<node CREATED="1701014725672" ID="ID_1385369844" MODIFIED="1701014815616" TEXT="Verlauf : Kennzahlen pro Level"/>
<node CREATED="1701014846672" ID="ID_1126849458" MODIFIED="1701015090770" TEXT="linearer Trend dieser Verl&#xe4;ufe"/>
<node CREATED="1701014816940" ID="ID_918181422" MODIFIED="1701014845325" TEXT="moving-average dieser Verl&#xe4;ufe"/>
<node CREATED="1701014906601" ID="ID_162075664" MODIFIED="1701015017014" TEXT="Trend &#xfc;ber den moving-Average"/>
<node CREATED="1701015039119" ID="ID_1142392150" MODIFIED="1701015065135" TEXT="Trend-indicator">
<node CREATED="1701015067619" ID="ID_648924723" MODIFIED="1701015072037" TEXT="% grow"/>
<node CREATED="1701015072763" ID="ID_1521958486" MODIFIED="1701015076534" TEXT="% constant"/>
<node CREATED="1701015077434" ID="ID_22691328" MODIFIED="1701015081226" TEXT="% decline"/>
<node CREATED="1701015081865" ID="ID_1426934946" MODIFIED="1701015088816" TEXT="average"/>
</node>
</node>
<node COLOR="#338800" CREATED="1701016789541" ID="ID_677587050" MODIFIED="1701207663094" TEXT="Berechnung">
<icon BUILTIN="button_ok"/>
<node CREATED="1701016800527" ID="ID_465492261" MODIFIED="1701125333044" TEXT="auf Erweiterbarkeit abzielen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Ziemlich sicher werden wir zu Begin nur einen Bruchteil der m&#246;glichen Statisktiken berechnen, und es ist &#252;berhaupt nicht klar, ob wir jemals mehr brauchen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1701125376983" ID="ID_1738324890" MODIFIED="1701207665699" TEXT="Daten-Record">
<icon BUILTIN="button_ok"/>
<node CREATED="1701125441964" ID="ID_418000988" MODIFIED="1701125470010" TEXT="feste Datenfelder als uint und double"/>
<node CREATED="1701125474136" ID="ID_774880220" MODIFIED="1701125477483" TEXT="Benennungs-Schema">
<node CREATED="1701126033651" ID="ID_1862774018" MODIFIED="1701126080812" TEXT="forks[lev]">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Vector mit Z&#228;hldaten indiziert nach Level
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1701125550995" ID="ID_1031639785" MODIFIED="1701126098550" TEXT="forks_cnt">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Gesamt-Anzahl der Forks
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1701125560924" ID="ID_669092405" MODIFIED="1701126154803" TEXT="forks_pL">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Forks per Level &#8709;
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1701125579683" ID="ID_1639658129" MODIFIED="1701126169319" TEXT="forks_pLW">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Forks per Level-Width &#8709;
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1701125941621" ID="ID_402557156" MODIFIED="1701126253934" TEXT="forks_cL">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Forks Level-&#947;-Schwerpunkt (centre)
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1701125948023" ID="ID_5366972" MODIFIED="1701126246633" TEXT="forks_cLW">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Forks Level-Width-&#947; -Schwerpunkt (centre)
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1701126282617" ID="ID_283726913" MODIFIED="1701126375947" TEXT="forks_pL_trend">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      lineare Regression der forks_pL &#252;ber den Level
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1701126387036" ID="ID_691366138" MODIFIED="1701126595772" TEXT="forks_ma">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      forks moving average &#252;ber den Level
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1701126601654" ID="ID_1465309970" MODIFIED="1701126630322" TEXT="forks_pW_ma">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      forks per width moving average (&#252;ber den Level)
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1701127574637" ID="ID_923332375" MODIFIED="1701127579225" TEXT="Struktur">
<node CREATED="1701129033182" ID="ID_480359437" MODIFIED="1701129047234" TEXT="als eigenst&#xe4;ndiger Typ im Namespace"/>
<node CREATED="1701127580038" ID="ID_856358485" MODIFIED="1701127646988" TEXT="globals">
<node CREATED="1701127588184" ID="ID_1819109646" MODIFIED="1701127599814" TEXT="Node-Z&#xe4;hler"/>
<node CREATED="1701127600974" ID="ID_173189022" MODIFIED="1701127612041" TEXT="Vector der Level-Breiten"/>
<node CREATED="1701207671619" ID="ID_914162600" MODIFIED="1701207679469" TEXT="Vector der Sublevel-Nr"/>
</node>
<node CREATED="1701127623579" ID="ID_300642202" MODIFIED="1701127644053" TEXT="indicators">
<node CREATED="1701127648856" ID="ID_1223520264" MODIFIED="1701207689997" TEXT="das Array mit den Kennzahl-Subobjekten"/>
<node CREATED="1701128902290" ID="ID_380186539" MODIFIED="1701128917823" TEXT="String-Keys als Konstanten im Header"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1701126784469" FOLDED="true" ID="ID_1887920945" MODIFIED="1701207712508" TEXT="Rechenweg">
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1701126789108" ID="ID_1733334637" MODIFIED="1701126799986" TEXT="das wird verdammt repetitiv">
<icon BUILTIN="stop-sign"/>
</node>
<node COLOR="#435e98" CREATED="1701126885253" ID="ID_988227984" MODIFIED="1701140161284" TEXT="Sub-Objekte einf&#xfc;hren">
<icon BUILTIN="yes"/>
<node CREATED="1701126896342" ID="ID_628957116" MODIFIED="1701126910351" TEXT="da der Rechenweg stets gleich ist"/>
<node COLOR="#435e98" CREATED="1701126911196" ID="ID_609498555" MODIFIED="1701127120136" TEXT="Frage: Ablage und Zugriff?">
<icon BUILTIN="help"/>
<node CREATED="1701126927102" ID="ID_1692039562" MODIFIED="1701127026960" TEXT="Map mit String-Key"/>
<node CREATED="1701127027572" ID="ID_554934189" MODIFIED="1701127035511" TEXT="Vector mit ENUM-index"/>
<node CREATED="1701127055028" ID="ID_544320843" MODIFIED="1701127068922" TEXT="Sub-Objekte mit member-ptr"/>
<node COLOR="#5b280f" CREATED="1701127099690" ID="ID_1150088226" MODIFIED="1701181195395" TEXT="ist im Grunde egal &#x27f9; Map mit String-Key">
<icon BUILTIN="button_cancel"/>
<node COLOR="#5b280f" CREATED="1701181099023" ID="ID_655755151" MODIFIED="1701181120346" TEXT="immer noch zu komplisiert">
<icon BUILTIN="stop-sign"/>
</node>
<node COLOR="#435e98" CREATED="1701181139849" ID="ID_138263114" MODIFIED="1701181151504" TEXT="geht noch KISSiger">
<font NAME="SansSerif" SIZE="11"/>
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node CREATED="1701181154476" ID="ID_1678400125" MODIFIED="1701181190273" TEXT="feste Index-Folge und alles in std::array">
<icon BUILTIN="yes"/>
<node CREATED="1701181210002" ID="ID_1679700560" MODIFIED="1701181218067" TEXT="und zwar als im Header definierte Konstanten"/>
<node CREATED="1701181262856" ID="ID_793524141" MODIFIED="1701181284833" TEXT="STAT_* : Kategorie-Bezeichner (human-readable)"/>
<node CREATED="1701181225838" ID="ID_704708703" MODIFIED="1701181290625" TEXT="KEYS : ein array mit den Kategorie-Bezeichnern"/>
<node CREATED="1701181298668" ID="ID_1143111821" MODIFIED="1701181305790" TEXT="CAT = KEYS.size()"/>
<node CREATED="1701181311114" ID="ID_1052500553" MODIFIED="1701181371657" TEXT="evaluations: ein array mit Klassifikations-&#x3bb;"/>
<node CREATED="1701181338943" ID="ID_1835182207" MODIFIED="1701181366087" TEXT="Statistic::indicators : ein array mit den Indicator-records f&#xfc;r jede Kategorie"/>
</node>
</node>
<node CREATED="1701127237104" ID="ID_627445638" MODIFIED="1701127280398" TEXT="Sub-Objekt...">
<node CREATED="1701127280727" ID="ID_211987609" MODIFIED="1701127280727" TEXT="enth&#xe4;lt einen data-Vector"/>
<node CREATED="1701127286949" ID="ID_113578279" MODIFIED="1701127312993" TEXT="ggfs sp&#xe4;ter weitere Tabellen (MA, lokaler Trend)"/>
<node CREATED="1701127339746" ID="ID_552079211" MODIFIED="1701127349436" TEXT="sowie feste Datenfelder f&#xfc;r die Kennzahlen"/>
<node COLOR="#338800" CREATED="1701127401298" ID="ID_1356798063" MODIFIED="1701184821866" TEXT="Berechnung-1">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1701127405705" ID="ID_1717640247" MODIFIED="1701140156044" TEXT="ein Datenpunkt + Breite">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1701127445812" ID="ID_1308319193" MODIFIED="1701140157348" TEXT="legt Daten ab und akkumuliert Integrale">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1701127520281" ID="ID_327297411" MODIFIED="1701140158553" TEXT="Abschlu&#xdf;: Gesamtzahl &#x27fc; &#x2205;">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1701184912655" ID="ID_283973311" MODIFIED="1701207554433" TEXT="Zerlegung in Teilgraphen ber&#xfc;cksichtigen">
<linktarget COLOR="#2775b4" DESTINATION="ID_283973311" ENDARROW="Default" ENDINCLINATION="-138;8;" ID="Arrow_ID_468448911" SOURCE="ID_1190320888" STARTARROW="None" STARTINCLINATION="99;9;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1701198175838" ID="ID_921347773" MODIFIED="1701207533844" TEXT="brauche dazu den Level im Subgraphen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1701198195110" ID="ID_297257670" MODIFIED="1701207537364" TEXT="den kann man an einzeln stehenden Seed-Nodes erkennen">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#435e98" CREATED="1701198624560" ID="ID_475628380" MODIFIED="1701207539518" TEXT="nicht ganz einfach in der bestehenden Auswertung">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1701207483556" ID="ID_212583475" MODIFIED="1701207490753" TEXT="Ansatz: r&#xfc;ckwirkend korrigieren"/>
<node CREATED="1701207491828" ID="ID_1756897120" MODIFIED="1701207498291" TEXT="mu&#xdf; besonders am Ende aufpassen"/>
<node CREATED="1701207499835" ID="ID_1014380318" MODIFIED="1701207513173" TEXT="dann auch Maximal-H&#xf6;he der Teilgraphen mit berechnen"/>
</node>
<node CREATED="1701207438659" ID="ID_216213386" MODIFIED="1701207461929" TEXT="(aua... da waren auch noch Logik-Fehler in der Level-Behandlung)">
<font NAME="SansSerif" SIZE="11"/>
<icon BUILTIN="smiley-oh"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1701127540653" ID="ID_838754026" MODIFIED="1701207655660" TEXT="Berechnung-2">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_838754026" ENDARROW="Default" ENDINCLINATION="-182;27;" ID="Arrow_ID_115599837" SOURCE="ID_1769689128" STARTARROW="None" STARTINCLINATION="96;-106;"/>
<icon BUILTIN="hourglass"/>
<node CREATED="1701127545038" ID="ID_1659639199" MODIFIED="1701127560980" TEXT="(abgeleitete Berechungen h&#xf6;herer Ordnung)">
<font NAME="SansSerif" SIZE="11"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1701140164859" ID="ID_1147492015" MODIFIED="1701140208443" TEXT="&#xfc;ber alle Nodes mit &#xbb;schleppendem Level&#xab;">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1701140177177" ID="ID_1196764346" MODIFIED="1701140205823" TEXT="Array mit Auswertungs-Pr&#xe4;dikaten">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1701140186704" ID="ID_1137018850" MODIFIED="1701140205824" TEXT="daraus Partikular-Statistiken">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1701140196422" ID="ID_183954619" MODIFIED="1701140205824" TEXT="in Statistic-Record einbuchen">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1701016792372" ID="ID_1251453714" MODIFIED="1701207658065" TEXT="Darstellung">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1701125319870" FOLDED="true" ID="ID_1457245227" MODIFIED="1701207738012" TEXT="Statistik-Report bereitstellen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1701184854447" ID="ID_1823077805" MODIFIED="1701184862006" TEXT="Auswertungen pro Kategorie">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1701184862856" ID="ID_85653289" MODIFIED="1701198088372" TEXT="Gesamtsummen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1701198095024" ID="ID_1116378678" MODIFIED="1701198105373" TEXT="Schwerpunkt auf Level normieren">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1701184867453" ID="ID_1190320888" MODIFIED="1701207554433" TEXT="Teilgraphen ber&#xfc;cksichtigen">
<arrowlink COLOR="#2775b4" DESTINATION="ID_283973311" ENDARROW="Default" ENDINCLINATION="-138;8;" ID="Arrow_ID_468448911" STARTARROW="None" STARTINCLINATION="99;9;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1701207569778" ID="ID_1769689128" MODIFIED="1701207655659" TEXT="das sollte erstmal reichen....">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...grunds&#228;tzlich w&#228;ren die wichtigsten Zeitreihen im Statistik-Report da, so da&#223; man auch noch weitreichendere Auswertungen machen k&#246;nnte &#8212; sofern das hier mal f&#252;r mehr als f&#252;r einige Lasttests verwendet wird...
    </p>
  </body>
</html></richcontent>
<arrowlink DESTINATION="ID_838754026" ENDARROW="Default" ENDINCLINATION="-182;27;" ID="Arrow_ID_115599837" STARTARROW="None" STARTINCLINATION="96;-106;"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#338800" CREATED="1701207740691" ID="ID_1314408023" MODIFIED="1701476917010" TEXT="im Test auf Plausibilit&#xe4;t pr&#xfc;fen">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#f8d9cb" COLOR="#a50125" CREATED="1701476896345" HGAP="7" ID="ID_812119565" MODIFIED="1701477238261" TEXT="Einschr&#xe4;nkung: Teil-Graphen" VSHIFT="6">
<icon BUILTIN="messagebox_warning"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1701476924489" ID="ID_6946734" MODIFIED="1701476997450" TEXT="das geht nicht so billig nebenbei">
<icon BUILTIN="stop-sign"/>
</node>
<node CREATED="1701476939935" ID="ID_425871006" MODIFIED="1701476965695" TEXT="es w&#xfc;rde kein Weg an einer Connectivity-Analyse vorbeif&#xfc;hren"/>
<node CREATED="1701477000686" ID="ID_221374695" MODIFIED="1701477018461" TEXT="daher sind meine Statistiken &#xbb;pro Segment&#xab; im Grunde Mist"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1700105473288" ID="ID_363744899" MODIFIED="1700105544295" TEXT="Operatoren">
<icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1700105477363" ID="ID_1347431300" MODIFIED="1700105485349" TEXT="Iteration &#xfc;ber alle Nodes">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1700105486643" ID="ID_305524836" MODIFIED="1700105501783" TEXT="exponiere direkt lib::IterExplorer()">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#435e98" CREATED="1700105502189" ID="ID_1284175277" MODIFIED="1700105541879" TEXT="alle weiteren Operatoren lassen sich dann leicht darauf aufbauen"/>
<node COLOR="#338800" CREATED="1700105521395" ID="ID_5876464" MODIFIED="1700105535812" TEXT="Umgang mit const Nodes erm&#xf6;glichen">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1700156375137" ID="ID_1175949615" MODIFIED="1700156408543" TEXT="Topologie-Visualisierung">
<linktarget COLOR="#42b360" DESTINATION="ID_1175949615" ENDARROW="Default" ENDINCLINATION="334;0;" ID="Arrow_ID_357935660" SOURCE="ID_479859970" STARTARROW="None" STARTINCLINATION="-103;5;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1700105549294" ID="ID_1778641158" MODIFIED="1701117645291" TEXT="Neuberechnung">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1701033351833" ID="ID_133315306" MODIFIED="1701033556660" TEXT="clearNodeHashes()">
<node CREATED="1701033364791" ID="ID_442706492" MODIFIED="1701033368037" TEXT="besucht alle Nodes"/>
<node CREATED="1701033368583" ID="ID_244375144" MODIFIED="1701033384649" TEXT="&#xfc;bertr&#xe4;gt den seed-Hash in die &#xbb;startNodes&#xab;"/>
<node CREATED="1701033387653" ID="ID_1025656772" MODIFIED="1701033395879" TEXT="alle anderen Hashes werden auf 0 gesetzt"/>
</node>
<node COLOR="#435e98" CREATED="1701033359408" ID="ID_1025063671" MODIFIED="1701033556660" STYLE="fork" TEXT="recalculate()">
<node CREATED="1701033439613" ID="ID_1016987047" MODIFIED="1701033554697" TEXT="gleiches Schema"/>
<node CREATED="1701033450252" ID="ID_1730538159" MODIFIED="1701033554697" TEXT="st&#xf6;&#xdf;t aber zudem die Berechnung der Nodes an"/>
<node COLOR="#435e98" CREATED="1701033564378" ID="ID_1444681023" MODIFIED="1701033638235" TEXT="Warum L&#xf6;schen der Hashes?">
<node CREATED="1701033583314" ID="ID_571057687" MODIFIED="1701033594728" TEXT="weil die Hash-Berechnung nicht idempotent ist"/>
<node CREATED="1701033595585" ID="ID_1443626199" MODIFIED="1701033611274" TEXT="das liegt an der Aufrufstruktur von boost::hash"/>
<node CREATED="1701033623128" ID="ID_1915341389" MODIFIED="1701033635439" TEXT="durch das L&#xf6;schen wird ein sehr naheliegender Fehler vermieden"/>
</node>
</node>
<node COLOR="#338800" CREATED="1701033495195" ID="ID_193483520" MODIFIED="1701374413822" TEXT="Ergebnisse im Test verifizieren">
<arrowlink COLOR="#51c3bc" DESTINATION="ID_1338953492" ENDARROW="Default" ENDINCLINATION="-572;68;" ID="Arrow_ID_1159113647" STARTARROW="None" STARTINCLINATION="-272;-345;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1701033509532" ID="ID_1793560814" MODIFIED="1701033521653" TEXT="Filter-Pr&#xe4;gdikate: isStart und isExit">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1701033523034" ID="ID_1580648658" MODIFIED="1701117602855" TEXT="irgendwie geschickt auf die Nodes zugreifen und pr&#xfc;fen">
<icon BUILTIN="button_ok"/>
<node CREATED="1701058823384" ID="ID_1832007636" MODIFIED="1701058836698" TEXT="die Teilb&#xe4;ume sind fast alle gleich"/>
<node COLOR="#435e98" CREATED="1701058838854" ID="ID_1499838566" MODIFIED="1701059035860" TEXT="Idee: die Nodes gruppieren">
<icon BUILTIN="idea"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1701058863851" ID="ID_560691111" MODIFIED="1701059030270" TEXT="sowas w&#xe4;re eine gute Erg&#xe4;nzung f&#xfc;r den IterExplorer">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
<node COLOR="#435e98" CREATED="1701058881832" ID="ID_348005830" MODIFIED="1701059018446">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      sollte <i>vergleichsweise </i>einfach zu implementieren sein
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...will sagen, ich mu&#223; da nicht lang &#252;berlegen und kann es mehr oder weniger runterschreiben (auch wenn's ein paar Stunden braucht)
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#435e98" CREATED="1701058923620" ID="ID_1761514428" MODIFIED="1701059020156" TEXT="gleiches Bauschema wie beim Filter-Iter (pull one group eagerly)">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1701058974044" ID="ID_621330728" MODIFIED="1701058979307" TEXT="eingebaut und getestet">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1701117355642" ID="ID_778739432" MODIFIED="1701117369148" TEXT="mu&#xdf; dann aber &#xfc;ber Node* iterieren">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1701117373814" ID="ID_340694208" MODIFIED="1701117498363" TEXT="weil Node als move-only deklariert ist (inhaltlich sinnvoll)">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...es w&#228;re zwar nicht notwendig, da in der Node-struct lauter pointer und einfache Werte gespeichert werden; aber eine Node-Kopie w&#228;re ein hochgradig inkonsistentes Gebilde, da dann die R&#252;ck-Referenzen nicht mehr stimmen w&#252;rden.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1701117396795" ID="ID_887215905" MODIFIED="1701117581653" TEXT="und der grouped()-Mechanismus aber values speichern mu&#xdf;">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...das folgt aus dem Design von IterExplorer insgesamt. Es w&#228;re hochgradig gef&#228;hrlich, wenn man in der Gruppe Referenzen speichern w&#252;rde. Wenn &#252;berhaupt, dann mu&#223; das explizit so angefordert werden, indem man in der Pipeline mit Pointern arbeitet.
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1701117656420" ID="ID_1549878593" MODIFIED="1701117683318" TEXT="repeat-Funktion hier mit abdecken">
<icon BUILTIN="bell"/>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1701117618701" ID="ID_1109241766" MODIFIED="1701117636221" TEXT="so ein Test ist nur einmal sinnvoll, um die Berechnung abzudecken">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1700105555476" ID="ID_587761135" MODIFIED="1700105558876" TEXT="Scheduling">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1701488317653" ID="ID_502099140" MODIFIED="1701488325489" TEXT="Art der Integration festlegen">
<icon BUILTIN="flag-yellow"/>
<node COLOR="#338800" CREATED="1701488246119" ID="ID_518382795" LINK="#ID_53693227" MODIFIED="1701488287933" TEXT="Bezug zur &#xbb;Encodierung von Job-Argumenten&#xab;">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1701490186822" ID="ID_658348473" MODIFIED="1701490206342" TEXT="#1295 job invocation parameter representation">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1701490209941" ID="ID_231328088" MODIFIED="1701490257231">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <u>Stand</u>: noch nicht vollt&#228;ndig umgesetzt
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1701490218212" ID="ID_1089368654" MODIFIED="1701490230246" TEXT="nur der Invocation-Key ist durchgeschleift"/>
<node COLOR="#5b280f" CREATED="1701490295354" ID="ID_1201168729" MODIFIED="1701490335283" TEXT="das JobFunctor-Interface akzeptiert keine zus&#xe4;tzlichen Argumente">
<icon BUILTIN="stop-sign"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1701490276188" ID="ID_1180825392" MODIFIED="1701490340494" TEXT="die 2.Feed-Activity ist derzeit leer">
<icon BUILTIN="hourglass"/>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1701490637565" ID="ID_96958310" MODIFIED="1701490654507" TEXT="jetzt implementieren &#x2014; oder weiter durchmogeln?">
<icon BUILTIN="help"/>
<node CREATED="1701490659833" ID="ID_148739202" MODIFIED="1701490679838" TEXT="erwarte, da&#xdf; sich das Thema r&#xfc;ckw&#xe4;rts von der &#xbb;Node-Invocation&#xab; her kl&#xe4;rt">
<icon BUILTIN="info"/>
</node>
<node CREATED="1701490692653" ID="ID_67997206" MODIFIED="1701490757553" TEXT="alle bisherigen Tests packen die Verifikations-Payload in die InvocationInstanceID">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
<node CREATED="1701488366430" ID="ID_1676473919" MODIFIED="1701488373146" TEXT="Steuerung des Zugriffs">
<node CREATED="1701488374014" ID="ID_923328966" MODIFIED="1701488576222">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      f&#252;r den eigentlichen Aufruf gen&#252;gt ein <font face="Monospaced" color="#5c0e8a">Node*</font>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1701488555309" ID="ID_251594057" MODIFIED="1701488573238" TEXT="der Funktor braucht aber eine typisierte Closure">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1701488579450" ID="ID_635811261" MODIFIED="1701488668523" TEXT="er mu&#xdf; n&#xe4;mlich das Mem-Layout von &#xbb;Node&#xab; kennen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ....und das h&#228;ngt vom Template-Parameter der TestChainLoad ab (<font face="Monospaced" color="#6c2f31">size_t maxFan</font>)
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1701490404883" ID="ID_16635541" MODIFIED="1701491037626" TEXT="L&#xf6;sung-1 : Funktor wird vom Template instantiiert">
<icon BUILTIN="forward"/>
<node CREATED="1701490482569" ID="ID_1203111511" MODIFIED="1701490505573" TEXT="leicht umzusetzen"/>
<node COLOR="#435e98" CREATED="1701491027233" ID="ID_673787747" MODIFIED="1701491031709" TEXT="KISS">
<icon BUILTIN="yes"/>
</node>
</node>
<node COLOR="#5b280f" CREATED="1701490421209" ID="ID_1638819074" MODIFIED="1701491039410" TEXT="L&#xf6;sung-2 : Funktor bekommt vom Template einen Dispatcher">
<icon BUILTIN="button_cancel"/>
<node COLOR="#5b280f" CREATED="1701490491080" ID="ID_1785819549" MODIFIED="1701491024562" TEXT="enstpricht mehr der Realit&#xe4;t">
<icon BUILTIN="button_cancel"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1701490990894" ID="ID_1939179952" MODIFIED="1701491019860" TEXT="welcher Realit&#xe4;t??">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      wei&#223; ja noch nicht, wie das f&#252;r ProcNode implementiert wird
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1701490522375" ID="ID_661863679" MODIFIED="1701490537754" TEXT="es gibt keinen offensichtlichen Zeit-Bezug">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1701490556823" ID="ID_1224574723" MODIFIED="1701490575134" TEXT="die Nodes sollten nach Layer-Ordnung behandelt werden"/>
<node CREATED="1701490603497" ID="ID_1528195432" MODIFIED="1701490623330" TEXT="&#x27f9; bedeutet: aus der Zeit l&#xe4;&#xdf;t sich nicht die Node rekonstruieren"/>
<node CREATED="1701490811846" ID="ID_1106508882" MODIFIED="1701490839795">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      formal-Logisch entspr&#228;che der Node-Index dem <b><font face="Monospaced">srcRef</font></b>-Parameter
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1701491082441" ID="ID_1432085773" MODIFIED="1701491087154" TEXT="Beschlu&#xdf;">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="yes"/>
<node CREATED="1701491091978" ID="ID_1343223831" MODIFIED="1701491104906" TEXT="der Funktor wird vom Template &#xbb;abgeworfen&#xab;"/>
<node CREATED="1701491138047" ID="ID_477283179" MODIFIED="1701491146374" TEXT="(der mu&#xdf; dann irgendwo residieren, z.B. im Stack-Frame)"/>
<node CREATED="1701491105567" ID="ID_2955492" MODIFIED="1701491137114" TEXT="man &#xfc;bergibt direkt einen Pointer darauf"/>
<node CREATED="1701491172165" ID="ID_1453790989" MODIFIED="1701491203414" TEXT="die Level-Nummer wird direkt in die nominelle Zeit codiert">
<node CREATED="1701491207249" ID="ID_227520102" MODIFIED="1701491214620" TEXT="wie ist im Grunde egal">
<node CREATED="1701644765955" ID="ID_207437696" MODIFIED="1701661834624" TEXT="verwende eine FixedFrameQuantiser">
<arrowlink COLOR="#74bda6" DESTINATION="ID_561235182" ENDARROW="Default" ENDINCLINATION="1286;0;" ID="Arrow_ID_794806390" STARTARROW="None" STARTINCLINATION="403;33;"/>
</node>
<node CREATED="1701644775597" ID="ID_1517631819" MODIFIED="1701644789319" TEXT="mit einer Frame-Rate &#x2254; 1"/>
<node CREATED="1701644790211" ID="ID_859085781" MODIFIED="1701644813586" TEXT="komplett per Helper-Funktionen verbergen"/>
</node>
<node CREATED="1701491215288" ID="ID_1770681095" MODIFIED="1701491225971" TEXT="beim Aufruf wird mit der Level-Nr der Node verglichen"/>
<node CREATED="1701491226535" ID="ID_42032084" MODIFIED="1701491234169" TEXT="Exception oder abort wenn das nicht pa&#xdf;t"/>
<node CREATED="1701491238819" ID="ID_1658586813" MODIFIED="1701491248533" TEXT="ansonsten wird diese Info nicht weiter ausgewertet"/>
</node>
<node CREATED="1701491256794" ID="ID_228896368" MODIFIED="1701491275468" TEXT="den Node-Index verstecken wir in der InvocationInstanceID">
<node CREATED="1701491280767" ID="ID_1555411889" MODIFIED="1701491286834" TEXT="das ist eine tempor&#xe4;re L&#xf6;sung"/>
<node CREATED="1701491287412" ID="ID_1202131618" MODIFIED="1701491299894" TEXT="sp&#xe4;ter zieht diese Info in den srcRef-Parameter um"/>
</node>
<node CREATED="1701644821415" ID="ID_819606175" MODIFIED="1701644833217" TEXT="die &#xdc;bersetzung wird komplett in Helper-Funktionen verborgen"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1701492130949" ID="ID_675763294" MODIFIED="1701493055702" TEXT="Abl&#xe4;ufe zum Aufruf">
<icon BUILTIN="info"/>
<node CREATED="1701492140931" ID="ID_1320296040" MODIFIED="1701492145760" TEXT="Szenario vorbereiten">
<node CREATED="1701492296608" ID="ID_704886543" MODIFIED="1701492301635" TEXT="Topologie generieren"/>
<node CREATED="1701492304278" ID="ID_822112283" MODIFIED="1701492623100" TEXT="Lastparameter festlegen">
<arrowlink COLOR="#46417d" DESTINATION="ID_600666367" ENDARROW="Default" ENDINCLINATION="-77;5;" ID="Arrow_ID_1576743155" STARTARROW="None" STARTINCLINATION="79;9;"/>
</node>
<node CREATED="1701492317525" ID="ID_1881487168" MODIFIED="1701492327879" TEXT="Job-Funktoren generieren">
<node CREATED="1701492328779" ID="ID_1288799048" MODIFIED="1701492334727" TEXT="Meta-Job">
<node CREATED="1701492400282" ID="ID_1328828871" MODIFIED="1701492406517" TEXT="kennt den Dispatcher-Job"/>
<node CREATED="1701492408312" ID="ID_7980137" MODIFIED="1701492432032" TEXT="wei&#xdf; die Zahl zu erzeugender Level"/>
<node CREATED="1701492498750" ID="ID_600666367" MODIFIED="1701492616979" TEXT="kennt ein Mapping Level-Nr &#x27fc; dispatch-Zeit">
<linktarget COLOR="#46417d" DESTINATION="ID_600666367" ENDARROW="Default" ENDINCLINATION="-77;5;" ID="Arrow_ID_1576743155" SOURCE="ID_822112283" STARTARROW="None" STARTINCLINATION="79;9;"/>
<node CREATED="1701492530640" ID="ID_189764840" MODIFIED="1701492537823" TEXT="beachte: nur Dispatch-Zeit"/>
<node CREATED="1701492538439" ID="ID_1396963090" MODIFIED="1701492582067" TEXT="hier geht es nicht um eine &#xbb;Gesamt-Simulation&#xab;">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      also nicht um den gesamten Playback-Proze&#223;. Es m&#252;ssen keinerlei Deadline-Planungen gemacht werden; das kommt alles Fix per Test-Setup
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1701492433029" ID="ID_1524195763" MODIFIED="1701492496433" TEXT="geht per Level oder per Job-Nummer vor...">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      das k&#246;nnten Varianten des Test-Setup sein; wei&#223; noch nicht was hier gebraucht wird. Rein intuitiv w&#252;rde ich erst mal nur nach dem Level vorgehen
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1701492666350" ID="ID_1408515925" MODIFIED="1701492703698" TEXT="bekommt demnach die Level-Nr als einziges Job-Argument">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      das pa&#223;t doch hervorragend; LevelNr &#8801; nominal time
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1701492335301" ID="ID_761185060" MODIFIED="1701492340856" TEXT="Dispatcher-Job">
<node CREATED="1701492358918" ID="ID_1718078211" MODIFIED="1701492373658" TEXT="dieser enth&#xe4;lt einen direkten Backpointer zum TestChainLoad"/>
<node CREATED="1701492384572" ID="ID_1043264129" MODIFIED="1701492395574" TEXT="der Rest kommt &#xfc;ber die Job-Argumente"/>
</node>
</node>
</node>
<node CREATED="1701492148715" ID="ID_351519805" MODIFIED="1701492176651" TEXT="Meta-Job absetzen">
<node CREATED="1701492233368" ID="ID_1590497556" MODIFIED="1701492262376" TEXT="dieser verwendet die TestChainLoad, um zu dispatchen"/>
<node CREATED="1701492263484" ID="ID_907709182" MODIFIED="1701492290404" TEXT="hier geeignete Continuation-Closure vorsehen"/>
</node>
<node CREATED="1701492216738" ID="ID_70908232" MODIFIED="1701492227198" TEXT="auf Vollzugs-Notification warten">
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1701492802252" ID="ID_462409370" MODIFIED="1701492809108" TEXT="woher kommt die? wer macht die?">
<icon BUILTIN="help"/>
<node CREATED="1701492811689" ID="ID_1542455064" MODIFIED="1701492825844" TEXT="wir starten hier keine Threads">
<icon BUILTIN="stop-sign"/>
</node>
<node CREATED="1701492828257" ID="ID_1372403993" MODIFIED="1701492835845" TEXT="also kann es nur aus dem Meta-Job kommen"/>
<node CREATED="1701492899063" ID="ID_261543502" MODIFIED="1701492907570" TEXT="der k&#xf6;nnte eine Closure ausf&#xfc;hren oder eine Flag setzen"/>
</node>
<node CREATED="1701492932866" ID="ID_331874903" MODIFIED="1701548899190" TEXT="man k&#xf6;nnte hier fest ein wait()-notify() codieren">
<node CREATED="1701492951352" ID="ID_599266710" MODIFIED="1701492962514" TEXT="d.h. der Schedule()-Aufruf..."/>
<node CREATED="1701492963126" ID="ID_1362334556" MODIFIED="1701492969265" TEXT="w&#xfc;rde den Meta-Job absetzen"/>
<node CREATED="1701492969853" ID="ID_354060729" MODIFIED="1701492985848" TEXT="und danach in ein thread:;wait() gehen"/>
<node CREATED="1701492990299" ID="ID_999473580" MODIFIED="1701492995350" TEXT="ggfs sogar mit Timeout()!"/>
<node CREATED="1701493003512" ID="ID_436816851" MODIFIED="1701493015501" TEXT="die Closure aus dem Meta-Job weckt uns dann wieder auf"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1701488306399" ID="ID_437847189" MODIFIED="1701488325489" TEXT="Schinttstelle bestimmen">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1701493065993" ID="ID_1474617887" MODIFIED="1701493070377" TEXT="Implementierung">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1701548966576" ID="ID_1078499413" MODIFIED="1701548984371" TEXT="Basis und Rahmen">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1701549002234" ID="ID_1561610431" MODIFIED="1701550109050" TEXT="Design-Fragen zu kl&#xe4;ren">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1701550180973" ID="ID_809373895" MODIFIED="1701630273510" TEXT="wie verarbeiten wir Prerequisites?">
<icon BUILTIN="help"/>
<node CREATED="1701550315571" ID="ID_1778692014" MODIFIED="1701550322317" TEXT="Activity-Term-API">
<node CREATED="1701550323615" ID="ID_7308108" MODIFIED="1701550333725" TEXT="wir brauchen f&#xfc;r beide einen ActivityTerm"/>
<node CREATED="1701550335856" ID="ID_264099658" MODIFIED="1701550359743" TEXT="wir gehen von der Prerequisite und h&#xe4;ngen sie an den Nachfolger"/>
</node>
<node CREATED="1701550473011" ID="ID_1870816803" MODIFIED="1701550487721" TEXT="SchedulerSpec">
<node CREATED="1701550488596" ID="ID_1839210683" MODIFIED="1701550497481" TEXT="packt den ActivityTerm ein"/>
<node CREATED="1701550497932" ID="ID_1574659542" MODIFIED="1701550504262" TEXT="Scheduler gibt uns nur diese"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1701550504897" ID="ID_1986125239" MODIFIED="1701550524073" TEXT="dort ein API zum Anh&#xe4;ngen von Prerequisites schaffen">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node CREATED="1701550571574" ID="ID_903982829" MODIFIED="1701550580028" TEXT="Nodes verweisen per direktem Pointer aufeinander">
<node CREATED="1701550583145" ID="ID_1111982200" MODIFIED="1701550593585" TEXT="damit hat man nur eine andere Node in der Hand"/>
<node CREATED="1701550594381" ID="ID_1100224733" MODIFIED="1701550628201" TEXT="brauche Hilfe vom TestChainLoad &#x27fc; NodeID herausfinden"/>
<node CREATED="1701550669625" ID="ID_318100058" MODIFIED="1701550690108" TEXT="&#x27f9; SchedulerSpec m&#xfc;ssen auch in einem Array liegen"/>
</node>
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1701550796338" ID="ID_10603052" MODIFIED="1701550944298" TEXT="SchedulerSpec (und ActivityTerm) passen nicht gut in dieses Arbeitsschema">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1701550947518" ID="ID_844132583" MODIFIED="1701550954585" TEXT="die waren als Builder gedacht"/>
<node CREATED="1701630020156" ID="ID_1451722632" MODIFIED="1701630029914" TEXT="und damit auf eine Einzelfall-Anwendung zugeschnitten"/>
<node CREATED="1701630030692" ID="ID_1766960147" MODIFIED="1701630048493" TEXT="nun haben wir es mit schematischer Massen-Verarbeitung zu tun"/>
<node CREATED="1701574628934" ID="ID_12588074" MODIFIED="1701574720900" TEXT="mit einem UninitialisedStorage-Array k&#xf6;nnte es besser gehen">
<arrowlink COLOR="#5b92bc" DESTINATION="ID_1331044905" ENDARROW="Default" ENDINCLINATION="-1107;79;" ID="Arrow_ID_1234105866" STARTARROW="None" STARTINCLINATION="-2546;116;"/>
</node>
</node>
<node CREATED="1701630108121" ID="ID_466850642" MODIFIED="1701630276535" TEXT="Vorteil (nur) hier: Prerequisites liegen stetes genau einen Level tiefer">
<icon BUILTIN="idea"/>
<node CREATED="1701630162426" ID="ID_1752012941" MODIFIED="1701630171933" TEXT="systematischer Verarbeitung Level f&#xfc;r Level"/>
<node CREATED="1701630172579" ID="ID_665479593" MODIFIED="1701630209464" TEXT="die Vorg&#xe4;nger-Terme liegen lassen"/>
<node CREATED="1701630235800" ID="ID_112345737" MODIFIED="1701630388553" TEXT="Test-Setup kann man ausn&#xfc;tzen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      wir wissen, da&#223; es keine concurrent Aufrufe geben wird, und auch Allokation stellt kein Problem dar; wir k&#246;nnen einfach State im &#187;Test-Rahmen&#171; liegen lassen
    </p>
  </body>
</html></richcontent>
<font NAME="SansSerif" SIZE="12"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1701550085813" ID="ID_1532623231" MODIFIED="1701630291290" TEXT="wie greift der Meta-Job auf den Schedulerer zu?">
<icon BUILTIN="help"/>
<node CREATED="1701630398320" ID="ID_519354189" MODIFIED="1701630417244" TEXT="der reale Meta-Planer-Job wird &#xfc;ber einen Scheduler-Service (DI) gehen"/>
<node CREATED="1701630418928" ID="ID_456698721" MODIFIED="1701630480580" TEXT="das w&#xfc;rde aber das Test-Setup verkomplizieren und behindern"/>
</node>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1701630880013" ID="ID_1011967668" MODIFIED="1701630892763" TEXT="es ist ein kontrolliertes Test-Setup">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node CREATED="1701630907866" ID="ID_1372628167" MODIFIED="1701630912378" TEXT="Platz spielt keine Rolle"/>
<node CREATED="1701630913014" ID="ID_1412800501" MODIFIED="1701630921358" TEXT="es l&#xe4;uft nicht concurrent"/>
<node CREATED="1701630922141" ID="ID_887329209" MODIFIED="1701630929224" TEXT="explizitie Vorbereitung m&#xf6;glich"/>
<node CREATED="1701634155541" ID="ID_237095519" MODIFIED="1701634175327" TEXT="daf&#xfc;r m&#xf6;glichst generisch und klar"/>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1701653204166" ID="ID_1263178085" MODIFIED="1701661760657" TEXT="Typen einrichten">
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1701653208718" FOLDED="true" ID="ID_1927337889" MODIFIED="1701659244968" TEXT="Problem: TestChainLoad hat zu viele Template-Parameter">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1701653222644" ID="ID_1426060278" MODIFIED="1701653291333">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      die Node-Anzahl ist <i>inhaltlich </i>keine Typ-Eigenschaft
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...sie ist rein aus Bequemlichkeit der Implementierung zum Template-Parameter geworden: ich hab n&#228;mlich ein std::array genommen
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1701658710162" ID="ID_115644353" MODIFIED="1701658733389" TEXT="wir w&#xfc;rden unterschiedliche Funktor-Typen bekommen, blo&#xdf; auf Basis der Testl&#xe4;nge">
<icon BUILTIN="stop-sign"/>
</node>
<node COLOR="#5b280f" CREATED="1701653296594" FOLDED="true" ID="ID_216676285" MODIFIED="1701653397209" TEXT="den Node-Typ herausziehen">
<icon BUILTIN="button_cancel"/>
<node CREATED="1701653303954" ID="ID_515859186" MODIFIED="1701653312324" TEXT="w&#xe4;re zwar einerseits logisch"/>
<node COLOR="#5b280f" CREATED="1701653312905" ID="ID_564726139" MODIFIED="1701653394066">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      aber dann <b>mu&#223;</b>&#160;er unter zwei Namen auftreten
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...und zwar, weil ich <i>im Klassen-Scope einen Template-Namen nicht verdecken darf. </i>Leider verteilt sich der Node-bezogene Code zu ziemlich gleichen Teilen auf die Node-Klasse selber, und den umschlie&#223;enen Scope
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node COLOR="#5b280f" CREATED="1701653406153" FOLDED="true" ID="ID_1819494760" MODIFIED="1701653432621" TEXT="die Nodes in einen Vector legen">
<icon BUILTIN="button_cancel"/>
<node CREATED="1701653415010" ID="ID_1638546860" MODIFIED="1701653419303" TEXT="w&#xe4;re ganz einfach"/>
<node COLOR="#5b280f" CREATED="1701653419793" ID="ID_32386834" MODIFIED="1701653431033" TEXT="aber Node ist move-only">
<icon BUILTIN="closed"/>
</node>
</node>
<node CREATED="1701653479662" FOLDED="true" ID="ID_179446102" MODIFIED="1701653549369" TEXT="ScopedCollection verwenden">
<node CREATED="1701653486328" ID="ID_1702357808" MODIFIED="1701653546868" TEXT="jaaaa... w&#xfc;rde gehen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      hier ist zwar die maxCapacity festgelegt, aber nur zur Erstellungs-Zeit. Das w&#228;re ja genau, was hier gebraucht wird
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1701653490771" ID="ID_562781144" MODIFIED="1701653503210" TEXT="m&#xe4;&#xe4; muh">
<icon BUILTIN="smiley-neutral"/>
</node>
</node>
<node COLOR="#338800" CREATED="1701653550488" ID="ID_284692074" MODIFIED="1701656564473" TEXT="gleich direkt ein Heap-alloziertes Array halten">
<icon BUILTIN="button_ok"/>
<node CREATED="1701653586564" ID="ID_590006795" MODIFIED="1701656560759" TEXT="wenn schon, dann einfach">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#435e98" CREATED="1701653639596" ID="ID_542818108" MODIFIED="1701656557569" TEXT="ich arbeite nur mit dem front/back-Pointer">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#435e98" CREATED="1701653597657" ID="ID_1094212301" MODIFIED="1701656555445" TEXT="einziger Knackpunkt: die Iteratoren">
<node COLOR="#435e98" CREATED="1701653661417" ID="ID_1125020411" MODIFIED="1701656551659" TEXT="was &#x201e;kann&#x201c; hier IterExplorer leisten?">
<icon BUILTIN="help"/>
<node CREATED="1701653890152" ID="ID_1910212062" MODIFIED="1701654036714" TEXT="also automatisch geht&apos;s nicht">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      weil wir aufbauen auf can_STL_ForEach.
    </p>
    <ul>
      <li>
        hat nested-type &quot;iterator&quot;
      </li>
      <li>
        hat member-Funktionen begin() und end()
      </li>
    </ul>
    <p>
      ....au&#223;erdem wird dann das Hilfs-Template
      <font face="Monospaced">StlRange</font> auch noch 
      initialisiert mit<br/>
      <font face="Monospaced">RangeIter{begin(con), end(con}</font>
      .... &#55357;&#56481;
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="stop-sign"/>
</node>
<node CREATED="1701654043979" ID="ID_131432892" MODIFIED="1701654078221" TEXT="der Explorer wird immer vom TestChainLoad selber erstellt"/>
<node CREATED="1701654086003" ID="ID_338229663" MODIFIED="1701654327837" TEXT="dann k&#xf6;nnten wir selber einen RangeIter bauen">
<arrowlink COLOR="#fef7b9" DESTINATION="ID_1583207415" ENDARROW="Default" ENDINCLINATION="26;-35;" ID="Arrow_ID_231010486" STARTARROW="None" STARTINCLINATION="-128;7;"/>
<icon BUILTIN="idea"/>
<node CREATED="1701654102685" ID="ID_783145721" MODIFIED="1701654110596" TEXT="theoretisch sollte der mir Pointern funktionieren"/>
<node CREATED="1701654228092" ID="ID_692165706" MODIFIED="1701654283225" TEXT="hab ich offensichtlich schon mal gemacht...">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...darauf deuten die Komentare zur Typ-Inferenz hin:
    </p>
    <p>
      &quot;when IT is just a pointer, we use the pointee as value type&quot;
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1701654299367" ID="ID_1583207415" MODIFIED="1701656549906" TEXT="also mal versuchen....">
<linktarget COLOR="#fef7b9" DESTINATION="ID_1583207415" ENDARROW="Default" ENDINCLINATION="26;-35;" ID="Arrow_ID_231010486" SOURCE="ID_338229663" STARTARROW="None" STARTINCLINATION="-128;7;"/>
<icon BUILTIN="idea"/>
<node CREATED="1701656355221" ID="ID_1823110831" MODIFIED="1701656465490" TEXT="mu&#xdf; dann Pointer auf letzte Node speichern"/>
<node CREATED="1701656467134" ID="ID_1024074409" MODIFIED="1701656488304" TEXT="oder gleich die Anzahl Elemente &#x27f5; so ist&apos;s besser"/>
<node CREATED="1701656489059" ID="ID_1964562292" MODIFIED="1701656505932" TEXT="interne Accessor-Funktionen schaffen">
<node CREATED="1701656507931" ID="ID_687847216" MODIFIED="1701656511812" TEXT="frontNode()"/>
<node CREATED="1701656512064" ID="ID_1780513797" MODIFIED="1701656514405" TEXT="backNode()"/>
</node>
<node CREATED="1701656516688" ID="ID_1749309074" MODIFIED="1701656530608" TEXT="Code wird einfacher &#x27f9; Bingo"/>
</node>
<node COLOR="#338800" CREATED="1701656537411" ID="ID_1058830446" MODIFIED="1701656545530" TEXT="Test l&#xe4;uft ohne Zicken">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1701657551162" ID="ID_949690271" MODIFIED="1701658686663">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Template-Parameter <u><font face="Monospaced" color="#7f242e">numNodes</font></u>&#160;zur&#252;ckbauen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1701657586999" ID="ID_1354690592" MODIFIED="1701658665277" TEXT="Tja... ein Problem gibt es...">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1701657628910" ID="ID_599327691" MODIFIED="1701657649441" TEXT="guessHeight im RandomDraw-Binding">
<icon BUILTIN="info"/>
<node CREATED="1701657653244" ID="ID_697962718" MODIFIED="1701657664177" TEXT="konnte bisher auf den Template-Parmeter zur&#xfc;ckgreifen"/>
<node CREATED="1701657665525" ID="ID_1071535106" MODIFIED="1701657696097">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      wird in den Adaptoren verwendet &#8212; und die sind <b>statisch</b>
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1701657753449" ID="ID_711600424" MODIFIED="1701657781337" TEXT="Regeln auf Basis der Graph-H&#xf6;he..">
<node CREATED="1701657782398" ID="ID_763891693" MODIFIED="1701657800274">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      das war mal eine <i>offensichtlich einfache Idee</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1701657811493" ID="ID_592917769" MODIFIED="1701657835898" TEXT="stattdessen habe ich jetzt immer die rule_atStart verwendet"/>
<node COLOR="#435e98" CREATED="1701658096011" ID="ID_1533549547" MODIFIED="1701658658632" TEXT="ganz wegwerfen?">
<arrowlink COLOR="#fdedba" DESTINATION="ID_1190215348" ENDARROW="Default" ENDINCLINATION="-107;7;" ID="Arrow_ID_847243636" STARTARROW="None" STARTINCLINATION="-3;34;"/>
<icon BUILTIN="help"/>
<node CREATED="1701658153692" ID="ID_1991604019" MODIFIED="1701658164279" TEXT="Sinnhaftigkeit ist fraglich"/>
<node CREATED="1701658164915" ID="ID_1416043345" MODIFIED="1701658174341" TEXT="die Zahl ist nur eine Sch&#xe4;tzung"/>
<node CREATED="1701658188415" ID="ID_1233591043" MODIFIED="1701658190546" TEXT="tats&#xe4;chlich h&#xe4;ngt das von der Node-Dichte ab"/>
<node CREATED="1701658193224" ID="ID_1734089022" MODIFIED="1701658204817" TEXT="aber ein generisches Ma&#xdf; w&#xe4;re schon n&#xfc;tzlich"/>
<node CREATED="1701658208645" ID="ID_107836529" MODIFIED="1701658237677" TEXT="hab ja noch keine wirklichen Lasttests gemacht..."/>
<node CREATED="1701658243312" ID="ID_1190215348" MODIFIED="1701658651273">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      man k&#246;nnte das <i>anders interpretieren</i>
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#fdedba" DESTINATION="ID_1190215348" ENDARROW="Default" ENDINCLINATION="-107;7;" ID="Arrow_ID_847243636" SOURCE="ID_1533549547" STARTARROW="None" STARTINCLINATION="-3;34;"/>
<icon BUILTIN="idea"/>
<node CREATED="1701658257400" ID="ID_1461207497" MODIFIED="1701658265633" TEXT="es ist n&#xe4;mlich so: es gibt eine Start-Phase"/>
<node CREATED="1701658266461" ID="ID_299146396" MODIFIED="1701658275460" TEXT="und irgendwann ist man im station&#xe4;ren Zustand"/>
<node CREATED="1701658282683" ID="ID_109433705" MODIFIED="1701658326281" TEXT="&#x27f9; Heuristik 1.0 &#x2259; 2&#xb7;nodeFan"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1701658667991" ID="ID_1891737219" MODIFIED="1701658685029" TEXT="ansonsten ging das problemlos">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1701661755565" ID="ID_91855144" MODIFIED="1701661758314" TEXT="RandomChainCalcFunctor">
<icon BUILTIN="button_ok"/>
<node CREATED="1701692351228" ID="ID_971527823" MODIFIED="1701692368970" TEXT="TPar: maxFan &#x27f6; Node-Layout"/>
<node CREATED="1701692370541" ID="ID_1427040653" MODIFIED="1701692389312" TEXT="Node-Array &#x27f9; raw pointer arrithmetics"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1701662028749" ID="ID_1982023018" MODIFIED="1701662069143" TEXT="RandomChainPlanFunctor">
<arrowlink COLOR="#546bbc" DESTINATION="ID_114421309" ENDARROW="Default" ENDINCLINATION="-34;-130;" ID="Arrow_ID_234763232" STARTARROW="None" STARTINCLINATION="-98;10;"/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1701692393563" ID="ID_1979090741" MODIFIED="1701702795082" TEXT="parametirisert mit 3 Funktoren">
<node CREATED="1701702805338" ID="ID_598071439" MODIFIED="1701702815217" TEXT="halte damit das Scheduler-API noch raus"/>
<node CREATED="1701702816068" ID="ID_1652334733" MODIFIED="1701702833077" TEXT="hoffe, so die Schleifen-Logik testen zu k&#xf6;nnen"/>
</node>
<node CREATED="1701692404354" ID="ID_410999909" MODIFIED="1701692419283" TEXT="damit rein f&#xfc;r die Schleifen-Logik zust&#xe4;ndig"/>
</node>
<node CREATED="1701693653847" ID="ID_735944505" MODIFIED="1701693663905" TEXT="gemeinsame Basisklasse">
<node CREATED="1701693665213" ID="ID_874266292" MODIFIED="1701693686411" TEXT="ChainFunctor (abstrakt)"/>
<node CREATED="1701693696854" ID="ID_1473365249" MODIFIED="1701693708309" TEXT="Handhabung der InvocationInstanceID"/>
<node CREATED="1701693708846" ID="ID_1233561389" MODIFIED="1701693713042" TEXT="Parameter encode/decode"/>
<node CREATED="1701693716219" ID="ID_935448923" MODIFIED="1701693724668" TEXT="gemeinsames Frame-Grid"/>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1701699491154" ID="ID_689678610" LINK="#ID_1690934543" MODIFIED="1701699590214" TEXT="wieder das Wirrwarr mit den Hash-Implementierungen &#xd83e;&#xdc46; #722">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1701699592274" ID="ID_1063618089" MODIFIED="1701699610879" TEXT="vorerst: verwende Boost!">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1701493082582" ID="ID_1894179968" MODIFIED="1701661794782" TEXT="Dispatcher-Job implementieren">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1701661796628" ID="ID_561235182" MODIFIED="1701661828350" TEXT="verwendet einen FixedFrameQuantiser (Meyer&apos;s Singleton)">
<linktarget COLOR="#74bda6" DESTINATION="ID_561235182" ENDARROW="Default" ENDINCLINATION="1286;0;" ID="Arrow_ID_794806390" SOURCE="ID_207437696" STARTARROW="None" STARTINCLINATION="403;33;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1701661843606" ID="ID_1165776090" MODIFIED="1701661867438" TEXT="encode/decode der Parameter">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1701661851117" ID="ID_1957261792" MODIFIED="1701661868488" TEXT="Node per brachialer Pointer-Arrithmetik finden">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1701661869122" ID="ID_1870540819" MODIFIED="1701661888529" TEXT="Verifikation: Level-Nummer mu&#xdf; matchen">
<icon BUILTIN="button_ok"/>
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#338800" CREATED="1701661893229" ID="ID_1152296001" LINK="#ID_483928960" MODIFIED="1701661942707" TEXT="Aufruf funktioniert im Test">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1701493075903" ID="ID_114421309" MODIFIED="1701702784104" TEXT="Meta-Job implementieren">
<linktarget COLOR="#546bbc" DESTINATION="ID_114421309" ENDARROW="Default" ENDINCLINATION="-34;-130;" ID="Arrow_ID_234763232" SOURCE="ID_1982023018" STARTARROW="None" STARTINCLINATION="-98;10;"/>
<icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1701692565258" ID="ID_706254089" MODIFIED="1701702780297" TEXT="nun doch die Operationen als &#x3bb;">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1701702725087" ID="ID_27314773" MODIFIED="1701702780298" TEXT="braucht ebenfalls Zugang zum Node-Array und damit den Node-Formfaktor(template-Param)">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1701702694691" ID="ID_425732900" MODIFIED="1701702780298" TEXT="Schleifenlogik: currIdx, maxCnt">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1701702751249" ID="ID_473909242" MODIFIED="1701702780299" TEXT="targetLevel wird per Argument vorgegeben">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1701702762388" ID="ID_1493951597" MODIFIED="1701702780299" TEXT="ruft eine Continuation auf und signalisiert in-bound">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1701702840464" ID="ID_211506547" MODIFIED="1701702848927" TEXT="reine Schleifen-Logik testen">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1701493107387" ID="ID_1826192324" MODIFIED="1701493117170" TEXT="Aufruf-front-End">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1697737304920" ID="ID_1305412516" MODIFIED="1697737436489" TEXT="DemoVideoGenerator">
<arrowlink COLOR="#6f587c" DESTINATION="ID_460039330" ENDARROW="Default" ENDINCLINATION="-263;-171;" ID="Arrow_ID_48943827" STARTARROW="None" STARTINCLINATION="-695;79;"/>
<icon BUILTIN="hourglass"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697980200719" ID="ID_1502196172" MODIFIED="1697982166711" TEXT="Lastverhalten empirisch feststellen">
<linktarget COLOR="#ffd3a8" DESTINATION="ID_1502196172" ENDARROW="Default" ENDINCLINATION="-417;-573;" ID="Arrow_ID_18099677" SOURCE="ID_925253615" STARTARROW="None" STARTINCLINATION="-1881;175;"/>
<linktarget COLOR="#ffd3a8" DESTINATION="ID_1502196172" ENDARROW="Default" ENDINCLINATION="-417;-573;" ID="Arrow_ID_1874842097" SOURCE="ID_256258060" STARTARROW="None" STARTINCLINATION="-1430;70;"/>
<icon BUILTIN="bell"/>
<node CREATED="1697980233510" ID="ID_1582480940" MODIFIED="1697980238366" TEXT="Lastmuster">
<icon BUILTIN="info"/>
<node CREATED="1697980239834" ID="ID_541871417" MODIFIED="1697980244005" TEXT="Leerlauf"/>
<node CREATED="1697980280900" ID="ID_1253634670" MODIFIED="1697980373404" TEXT="unabh&#xe4;ngige Vollast"/>
<node CREATED="1697980419057" ID="ID_629834995" MODIFIED="1697980432523" TEXT="leichtverkettete Vollast"/>
<node CREATED="1697980433190" ID="ID_1880666855" MODIFIED="1697980437947" TEXT="hochverkettete Vollast"/>
<node CREATED="1697980460764" ID="ID_642586467" MODIFIED="1697980462399" TEXT="&#xdc;berlast"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697981112565" ID="ID_736511181" MODIFIED="1697981121972" TEXT="Me&#xdf;einrichtung aufbauen">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1697981124868" ID="ID_1995486807" MODIFIED="1697981139410" TEXT="Meta-Test: Zusatz-Last durch Me&#xdf;einrichtung feststellen">
<icon BUILTIN="flag-pink"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697981140392" ID="ID_830208203" MODIFIED="1697981434151" TEXT="Erfassungspunkte und zu erfassende Daten festlegen">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1697981442202" ID="ID_1994085081" MODIFIED="1697981536989" TEXT="Ma&#xdf;gabe: statistische Auswertungen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      &#10233; bedeutet f&#252;r jedes Ereignis auch eine Kategorisierung zu erfassen, so da&#223; dann in der Auswertung sp&#228;ter proportionale Anteile beobachtbar werden
    </p>
  </body>
</html></richcontent>
<node CREATED="1697981581895" ID="ID_1199294273" MODIFIED="1697981641259" TEXT="wieviel Wartezeit verbringt ein aktiver Worker?"/>
<node CREATED="1697981666612" ID="ID_769519844" MODIFIED="1697981680252" TEXT="in welchen Phasen verbringt er diese Zeit?"/>
<node CREATED="1697981689097" ID="ID_16365365" MODIFIED="1697981718933" TEXT="was ist das &#x2205; Pr&#xfc;fintervall eines schlafenden Workers"/>
<node CREATED="1697981742690" ID="ID_1056869673" MODIFIED="1697981774561" TEXT="welcher Anteil der Schl&#xe4;fer wird schlie&#xdf;lich terminiert?"/>
<node CREATED="1697981788044" ID="ID_1133300561" MODIFIED="1697981842992" TEXT="wie lange ist die kumuliere Schlafzeit &#x2205; f&#xfc;r terminierte / wiedererweckte Schl&#xe4;fer?"/>
<node CREATED="1697981923290" ID="ID_1333367151" MODIFIED="1697981932364" TEXT="wann / wie lange war das System in Vollast?"/>
<node CREATED="1697981980202" ID="ID_162807330" MODIFIED="1697982002392" TEXT="waiting-due time &#x2205; der Activities im Scheduler"/>
<node CREATED="1697982054792" ID="ID_712555328" MODIFIED="1697982065291" TEXT="wieviele Activities werden von Schl&#xe4;fern &#xfc;bernommen"/>
<node CREATED="1697982086540" ID="ID_1123632550" MODIFIED="1697982105925" TEXT="waiting-due time speziell wenn von Schl&#xe4;fer &#xfc;bernommen"/>
<node CREATED="1698450006319" ID="ID_1389677902" MODIFIED="1698450366289" TEXT="wieviel Zeit verbringt das System im Grooming-Mode?">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...das k&#246;nnte tats&#228;chlich schwierig herauszufinden sein, weil wir <b>definitiv nicht</b>&#160;jede Handhabung des Grooming-Tokens irgendwo als Event loggen wollen; zudem besteht die Schwierigkeit, da&#223; wir das Grooming-Token nach Aufrufen der work-Funktion oft wieder droppen
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#9198a2" DESTINATION="ID_1389677902" ENDARROW="Default" ENDINCLINATION="-297;15;" ID="Arrow_ID_16649799" SOURCE="ID_118653070" STARTARROW="None" STARTINCLINATION="209;9;"/>
</node>
<node CREATED="1698936996449" ID="ID_1112572068" MODIFIED="1698937052690" TEXT="wie aufwendig ist die kontinuierliche Job-Erzeugung?">
<linktarget COLOR="#9098b3" DESTINATION="ID_1112572068" ENDARROW="Default" ENDINCLINATION="-298;17;" ID="Arrow_ID_292608667" SOURCE="ID_41803972" STARTARROW="None" STARTINCLINATION="506;32;"/>
</node>
</node>
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1698200300379" ID="ID_919358146" MODIFIED="1698200324271" TEXT="zus&#xe4;tzliche Detail-Fragen kl&#xe4;ren">
<icon BUILTIN="bell"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1698097719743" ID="ID_102946038" MODIFIED="1698097741666" TEXT="G&#xfc;te der Randomisierung per Systemzeit pr&#xfc;fen">
<icon BUILTIN="messagebox_warning"/>
<node COLOR="#435e98" CREATED="1698110801074" ID="ID_1268941360" LINK="#ID_22372803" MODIFIED="1698110840303" TEXT="im SchedulerLoadControl_test nachgemessen">
<icon BUILTIN="idea"/>
</node>
</node>
<node BACKGROUND_COLOR="#cfac97" COLOR="#990033" CREATED="1698196529195" ID="ID_1854864244" MODIFIED="1698196636706" TEXT="ist die IDLEWAIT-Behandlung f&#xfc;r outgoing-Capacity sinnvoll?">
<linktarget COLOR="#945e77" DESTINATION="ID_1854864244" ENDARROW="Default" ENDINCLINATION="817;-38;" ID="Arrow_ID_199286732" SOURCE="ID_1475241186" STARTARROW="None" STARTINCLINATION="380;14;"/>
<icon BUILTIN="help"/>
</node>
<node BACKGROUND_COLOR="#cfac97" COLOR="#990033" CREATED="1698200035646" ID="ID_204964487" MODIFIED="1698200404738" TEXT="Zugriff auf high-resolution-Time?">
<linktarget COLOR="#884252" DESTINATION="ID_204964487" ENDARROW="Default" ENDINCLINATION="2012;0;" ID="Arrow_ID_665756118" SOURCE="ID_452646558" STARTARROW="None" STARTINCLINATION="85;180;"/>
<icon BUILTIN="help"/>
</node>
<node BACKGROUND_COLOR="#cfac97" COLOR="#990033" CREATED="1698200219686" ID="ID_1298210753" MODIFIED="1698200428684" TEXT="minimal sinnvolle Thread-Wartezeit?">
<linktarget COLOR="#69496a" DESTINATION="ID_1298210753" ENDARROW="Default" ENDINCLINATION="2071;-139;" ID="Arrow_ID_67065674" SOURCE="ID_433843739" STARTARROW="None" STARTINCLINATION="733;41;"/>
<icon BUILTIN="help"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697981156144" ID="ID_190534528" MODIFIED="1697981425435" TEXT="Datenerfassung &#xfc;ber EngineObserver realisieren">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1698201289083" HGAP="-4" ID="ID_1232202622" MODIFIED="1698201475987" TEXT="Diskussion" VSHIFT="35">
<icon BUILTIN="bell"/>
<node CREATED="1698201308316" ID="ID_1997836780" MODIFIED="1698201311488" TEXT="Zweifel">
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1698201081723" ID="ID_840908448" MODIFIED="1698201503528" TEXT="Sinnhaftigkeit des gew&#xe4;hlten Programmierstils ist zu hinterfragen">
<linktarget COLOR="#fd1658" DESTINATION="ID_840908448" ENDARROW="Default" ENDINCLINATION="-1952;-70;" ID="Arrow_ID_727019415" SOURCE="ID_1962121966" STARTARROW="None" STARTINCLINATION="1378;88;"/>
<icon BUILTIN="yes"/>
<node CREATED="1698201321138" ID="ID_154708046" MODIFIED="1698201341300" TEXT="die Annahme: &#x201e;performance-relevanter Code&#x201c;"/>
<node CREATED="1698201366557" ID="ID_627077813" MODIFIED="1698201388021" TEXT="kombiniert mit Anforderungs-getriebenem top-down-Ansatz"/>
<node CREATED="1698201429620" ID="ID_1635005942" MODIFIED="1698201443678" TEXT="und dem Vermeiden vorgreifender Festlegungen"/>
</node>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1699571704643" ID="ID_1753880750" MODIFIED="1699571808810" TEXT="offengebliebene Fragen...?">
<linktarget COLOR="#93236a" DESTINATION="ID_1753880750" ENDARROW="Default" ENDINCLINATION="-499;-50;" ID="Arrow_ID_1018529334" SOURCE="ID_1657236591" STARTARROW="None" STARTINCLINATION="-219;1274;"/>
<icon BUILTIN="help"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1699571826546" FOLDED="true" ID="ID_841781324" MODIFIED="1699571977489" TEXT="brauchen wir &#xfc;berhaupt ein POST-Verb?">
<icon BUILTIN="hourglass"/>
<node CREATED="1699571849031" ID="ID_162465543" MODIFIED="1699571881135" TEXT="es wurde eingef&#xfc;hrt, um ein (start,deadline)-Fenster &#x201e;kontextuell&#x201c; bereitzustellen"/>
<node CREATED="1699571882718" ID="ID_306783739" MODIFIED="1699571918305" TEXT="au&#xdf;erdem f&#xfc;hrt die Aktivierung via &#x3bb;-post wieder in den Dispatch"/>
<node CREATED="1699571920304" ID="ID_645005092" MODIFIED="1699571938972">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      allerdings haben wir jetzt praktisch immer einen<i>&#160;direkten Eingang</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1699571939723" ID="ID_308661587" MODIFIED="1699571957595" TEXT="und dabei werden (start, deadline) jeweils nochmal explizit gegeben"/>
</node>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1698449820247" ID="ID_759735068" MODIFIED="1698449830478" TEXT="Fragen f&#xfc;r sp&#xe4;ter...">
<icon BUILTIN="help"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1698449617586" ID="ID_1388229244" MODIFIED="1698450803071" TEXT="hot-polling on Grooming-Token?">
<linktarget COLOR="#7f5d5b" DESTINATION="ID_1388229244" ENDARROW="Default" ENDINCLINATION="1570;-56;" ID="Arrow_ID_1744066292" SOURCE="ID_1023610173" STARTARROW="None" STARTINCLINATION="1233;109;"/>
<icon BUILTIN="hourglass"/>
<node CREATED="1698449890835" HGAP="30" ID="ID_913093042" MODIFIED="1698450576260" TEXT="das scheint eine ehr akademische Frage" VSHIFT="28">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...denn der Contender hat in dem Moment ohnehin nix anderes zu tun und ist auch von der Kapazit&#228;t her definitiv f&#252;r das Rendering belegt. Zudem bel&#228;stigen wir durch aktives Polling niemanden sonst (abgesehen von dem produzierten CO&#8322;); und der Fall sollte selten sein und idealerweise auch nur kurz dauern
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1698449940984" HGAP="50" ID="ID_118653070" MODIFIED="1698450762218" TEXT="und auch nur durch ein Absch&#xe4;tzungs-Argument zu beantworten" VSHIFT="-7">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Eine Wirkung k&#246;nnen wir n&#228;mlich nicht messen &#10233; es l&#228;uft darauf hinaus, ob dieses Vorgehen verh&#228;ltnism&#228;&#223;ig ist, und das ist identisch mit der Frage, ob Contentions wirklich so extrem selten sind, wie vom Konzept her vermutet. Der wichtigste Ansatzpunkt w&#228;re daher, nach zeitlichen Koinzidenzen zu suchen, was allerdings ohne weitere Instrumentierung auch nicht m&#246;glich sein d&#252;rfte
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#9198a2" DESTINATION="ID_1389677902" ENDARROW="Default" ENDINCLINATION="-297;15;" ID="Arrow_ID_16649799" STARTARROW="None" STARTINCLINATION="209;9;"/>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1698454549032" ID="ID_1970723448" MODIFIED="1698454589468" TEXT="Activity-Lang: processing setzt auf einem Proc-State auf">
<icon BUILTIN="hourglass"/>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1698454408819" ID="ID_1681258664" MODIFIED="1698454466874" TEXT="targeted-sleeps passieren im Scheduler. Sinnvoll?">
<icon BUILTIN="help"/>
<node CREATED="1698454595586" ID="ID_1526136231" MODIFIED="1698454700723" TEXT="das ist direkte Konsequenz von activity::PROC">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...da wir nur einen Status-Code haben, aber nicht sagen k&#246;nnen <i>was und wie genau weiter verfahren werden soll</i>. Dadurch ist zwar die Kopplung oberfl&#228;chlich lose und explizit, tats&#228;chlich aber f&#252;hrt es zu sehr komplexen Kollaborationen
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1698454491296" ID="ID_1287561281" LINK="#ID_410477206" MODIFIED="1698454517684" TEXT="macht Code complex, z.B. Grooming-Token-Behandlung"/>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1698605224248" ID="ID_1700976561" MODIFIED="1698605230805" TEXT="Auslegung der Laststeuerung">
<icon BUILTIN="hourglass"/>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1698605001334" ID="ID_174276213" MODIFIED="1698605242320" TEXT="ist weicheres Anfahren der WorkFoce sinnvoll?">
<linktarget COLOR="#8a8699" DESTINATION="ID_174276213" ENDARROW="Default" ENDINCLINATION="-1083;-69;" ID="Arrow_ID_1348822312" SOURCE="ID_153443695" STARTARROW="None" STARTINCLINATION="617;33;"/>
<icon BUILTIN="help"/>
<node CREATED="1698605282416" ID="ID_778966135" MODIFIED="1698605308782" TEXT="man k&#xf6;nnte sich schrittweise rantasten &#x2014; m&#xfc;&#xdf;te dann aber auch bei Bedarf hochskalieren">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1698605255428" ID="ID_185275385" MODIFIED="1698605272798" TEXT="derzeit wird einfach mal die komplette WorkForce gestartet"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1698605273458" ID="ID_232164751" MODIFIED="1698605317281" TEXT="auf meinem 8-Kerner braucht das 1ms">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1698933255623" ID="ID_926010770" MODIFIED="1698933271790" TEXT="ist die Auslegung der &#xbb;horizons&#xab; sinnvoll?">
<icon BUILTIN="help"/>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1698933282432" ID="ID_918993851" MODIFIED="1698933288745" TEXT="Bedeutung der Queue-Performance">
<icon BUILTIN="hourglass"/>
<node CREATED="1698933302762" ID="ID_111280447" MODIFIED="1698933310264" TEXT="ist die &#xfc;berhaupt feststellbar (und wann)?"/>
<node CREATED="1698933324271" ID="ID_1619951589" MODIFIED="1698933438338" TEXT="Bedeutung des Storage-Formats">
<linktarget COLOR="#6d6593" DESTINATION="ID_1619951589" ENDARROW="Default" ENDINCLINATION="306;-27;" ID="Arrow_ID_670346160" SOURCE="ID_1775078836" STARTARROW="None" STARTINCLINATION="1162;61;"/>
</node>
<node CREATED="1698933330862" ID="ID_1708359489" MODIFIED="1698933339489" TEXT="Bedeutung der Zugriffsfunktionen"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1698936950769" ID="ID_499900060" MODIFIED="1698936959061" TEXT="Einordnen der Gesamtperformance">
<icon BUILTIN="hourglass"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1698936822873" ID="ID_41803972" MODIFIED="1698937090405" TEXT="Performance f&#xfc;r Job-Erstellung &#xfc;berpr&#xfc;fen">
<arrowlink COLOR="#997b81" DESTINATION="ID_1985217972" ENDARROW="Default" ENDINCLINATION="863;46;" ID="Arrow_ID_1068642654" STARTARROW="None" STARTINCLINATION="793;49;"/>
<arrowlink COLOR="#9098b3" DESTINATION="ID_1112572068" ENDARROW="Default" ENDINCLINATION="-298;17;" ID="Arrow_ID_292608667" STARTARROW="None" STARTINCLINATION="506;32;"/>
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1685399667668" ID="ID_463573092" MODIFIED="1685399687234" TEXT="Begriffe">
<node CREATED="1685399688969" ID="ID_334635354" MODIFIED="1685399823941" TEXT="Arten von Zeiten">
<linktarget COLOR="#3048bc" DESTINATION="ID_334635354" ENDARROW="Default" ENDINCLINATION="-699;-102;" ID="Arrow_ID_1276385023" SOURCE="ID_639678188" STARTARROW="None" STARTINCLINATION="-673;45;"/>
<icon BUILTIN="info"/>
<node CREATED="1685396490909" ID="ID_1811324240" MODIFIED="1685396514990" TEXT="Frame-Zeit &#x2261; &#xbb;nominal time&#xab;"/>
<node CREATED="1685398161904" ID="ID_1260221239" MODIFIED="1685398489680" TEXT="&#xbb;absolute&#xab; &#x27f6; auf die jeweilige Timeline bezogen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...ein eigenartiger Widerspruch, den ich nicht aufl&#246;sen kann...
    </p>
    <p>
      Absolut &#10233; nicht relativ &#10233; nicht explizit auf etwas bezogen &#10233; also implizit auf &#8222;den Nullpunkt&#8220; bezogen &#10233; also relativ zur jeweiligen Timeline
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1685398491390" ID="ID_880596225" MODIFIED="1685398609729" TEXT="&#xbb;realTime&#xab; &#x2261; &#x201e;wall clock time&#x201c; &#x2261; &#xbb;Instant&#xab;"/>
<node CREATED="1685398581508" ID="ID_999222806" MODIFIED="1685398604780">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      &#187;Deadline&#171; ist immer in <i>realTime</i>
    </p>
  </body>
</html></richcontent>
<node CREATED="1685398620907" ID="ID_454350455" MODIFIED="1685398749007" TEXT="&#xbb;Frame Deadline&#xab; &#x2261; absolute Deadline of delivery"/>
<node CREATED="1685398663573" ID="ID_135003232" MODIFIED="1692542664588" TEXT="&#xbb;Job Deadline&#xab; &#x2261;  Job must be started before this time point"/>
<node CREATED="1685398713881" ID="ID_1091261870" MODIFIED="1692542702567" TEXT="&#xbb;Plan Deadline&#xab; &#x2261; calculation plan must be dispatched prior"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1692542712329" ID="ID_846298052" MODIFIED="1692542791056">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      (Deadlines sind <i>danach </i>und wirken daher <i>exclusiv</i>)
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
</node>
<node CREATED="1680563506475" ID="ID_53985081" MODIFIED="1680563509211" TEXT="Interface">
<node CREATED="1681341888374" ID="ID_1288070081" MODIFIED="1681341890674" TEXT="Konzepte">
<node CREATED="1681341891551" ID="ID_1494961491" MODIFIED="1681341894065" TEXT="CalcStream">
<node CREATED="1681341919130" ID="ID_979269608" MODIFIED="1681341943300">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <b>symbolische Repr&#228;sentation</b>&#160;eines dynamisch laufenden Berechnungsprozesses
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1681341944072" ID="ID_126625217" MODIFIED="1681342028220" TEXT="selber ein opaques Value-Objekt">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      es enth&#228;lt keine relevanten Informationen und dient auch nicht dem Tracking; vielmehr ist es ein Schl&#252;ssel, mit dessen Hilfe der PlayProcess sp&#228;ter mit der Render-Engine reden kann
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1681342047137" ID="ID_629527239" MODIFIED="1681342196215" TEXT="Aber: enth&#xe4;lt die Implementierung des &#xbb;Render-Start&#xab; Setups">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Es ist im Entwurf von 2011 noch nicht festgelegt, ob diese Implementierung konkret ist (d.h. direkt Elemente aus dem Play-Service verbindet), oder nur abstrakt, durch Aufruf der RenderEnvironmentClosure. Letzteres w&#228;re ad&#228;quat im sinne von <i>Inversion of Control</i>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1681685256388" ID="ID_845968912" MODIFIED="1681685407179" TEXT="besitzt/verwaltet den RenderDrive">
<arrowlink COLOR="#ffe4c9" DESTINATION="ID_1928295133" ENDARROW="Default" ENDINCLINATION="-724;353;" ID="Arrow_ID_1773297165" STARTARROW="None" STARTINCLINATION="-257;23;"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1681685287808" ID="ID_439004499" MODIFIED="1681685335962" TEXT="TODO: non-copyable?">
<arrowlink COLOR="#e0804f" DESTINATION="ID_1313231227" ENDARROW="Default" ENDINCLINATION="2513;164;" ID="Arrow_ID_861540006" STARTARROW="None" STARTINCLINATION="686;-75;"/>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
<node CREATED="1681341894866" ID="ID_94172116" MODIFIED="1681341900624" TEXT="RenderEnvironmentClosure">
<node CREATED="1681341905668" ID="ID_432577558" MODIFIED="1681341915150" TEXT="das ist die &#xbb;abstrahierte Render-Engine&#xab;"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1698872769092" HGAP="24" ID="ID_167266149" MODIFIED="1698933847212" TEXT="CalcStream-Manifestation" VSHIFT="8">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      erm&#246;glicht, einen CalcStream inkompatibel zu ver&#228;ndern und die Reste der damit obsoleten Manifestation fliegend zu verwerfen
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#943456" DESTINATION="ID_1232029805" ENDARROW="Default" ENDINCLINATION="-284;-16;" ID="Arrow_ID_173708448" STARTARROW="None" STARTINCLINATION="155;234;"/>
<arrowlink COLOR="#fe5753" DESTINATION="ID_950780614" ENDARROW="Default" ENDINCLINATION="766;177;" ID="Arrow_ID_1545682192" STARTARROW="None" STARTINCLINATION="849;80;"/>
<linktarget COLOR="#9b4276" DESTINATION="ID_167266149" ENDARROW="Default" ENDINCLINATION="-856;-92;" ID="Arrow_ID_1049575123" SOURCE="ID_643800031" STARTARROW="None" STARTINCLINATION="-524;32;"/>
<linktarget COLOR="#8c689b" DESTINATION="ID_167266149" ENDARROW="Default" ENDINCLINATION="-954;-136;" ID="Arrow_ID_412782099" SOURCE="ID_155141069" STARTARROW="None" STARTINCLINATION="-289;354;"/>
<linktarget COLOR="#d8566f" DESTINATION="ID_167266149" ENDARROW="Default" ENDINCLINATION="-891;-508;" ID="Arrow_ID_1627844312" SOURCE="ID_51768091" STARTARROW="None" STARTINCLINATION="-585;31;"/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1698933857481" ID="ID_322928108" MODIFIED="1698933867891" TEXT="mu&#xdf; dem Scheduler mitgegeben werden">
<node CREATED="1698933931127" ID="ID_1466531443" MODIFIED="1698933938806" TEXT="im Sinne einer Positiv-Liste">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1698933643525" ID="ID_1074827633" MODIFIED="1698934013070" TEXT="technisch beschr&#xe4;nkt auf 32bit">
<arrowlink COLOR="#894161" DESTINATION="ID_1561119545" ENDARROW="Default" ENDINCLINATION="-572;70;" ID="Arrow_ID_1358372763" STARTARROW="None" STARTINCLINATION="61;-315;"/>
<linktarget COLOR="#a09098" DESTINATION="ID_1074827633" ENDARROW="Default" ENDINCLINATION="-127;552;" ID="Arrow_ID_176768608" SOURCE="ID_1467361134" STARTARROW="None" STARTINCLINATION="833;44;"/>
</node>
</node>
<node CREATED="1698937393136" ID="ID_1851204511" LINK="#ID_4829396" MODIFIED="1698937416151" TEXT="opaque implementiert"/>
</node>
<node CREATED="1681594252245" ID="ID_1719102613" MODIFIED="1681594256245" TEXT="InvocationInstanceID">
<linktarget COLOR="#677097" DESTINATION="ID_1719102613" ENDARROW="Default" ENDINCLINATION="20;85;" ID="Arrow_ID_470615287" SOURCE="ID_465090802" STARTARROW="None" STARTINCLINATION="-148;-14;"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1681594257143" ID="ID_689625560" MODIFIED="1681594270271" TEXT="Bedeutung kl&#xe4;ren">
<icon BUILTIN="bell"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1682039643804" ID="ID_1788184151" MODIFIED="1682040050470" TEXT="2012&#x2026;2023+ ist das lediglich ein Platzhalter">
<icon BUILTIN="hourglass"/>
<node CREATED="1682040059096" ID="ID_1654338206" MODIFIED="1682040070726" TEXT="wartet auf einen real nutzbaren Render-Graphen"/>
<node CREATED="1682040071416" ID="ID_137672818" MODIFIED="1682040086633" TEXT="und auf eine Basis-Implementierung des Frame-Cache"/>
</node>
<node CREATED="1682039675903" ID="ID_1413652743" MODIFIED="1682039709619" TEXT="Geplant: reproduzierbare Hash-Verkettung des Berechnungsweges">
<icon BUILTIN="idea"/>
<node CREATED="1682039718122" ID="ID_1143247890" MODIFIED="1682039877063">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      soll genau dann reproduzierbar sein,
    </p>
    <p>
      wenn das Resultat ebenfalls quasi-reproduzierbar(*) ist
    </p>
    <p>
      
    </p>
    <p>
      <font size="1" color="#393297">(*) bedeutet </font>
    </p>
    <ul>
      <li>
        <font size="1" color="#393297">effektiv gleiche Wirkung </font>
      </li>
      <li>
        <font size="1" color="#393297">bis auf Rechenfehler identisch</font>
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1682039901233" ID="ID_373686563" MODIFIED="1682039956586" TEXT="Hash-Verkettung Merkle-Tree oder &#xe4;hnlich">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      &#196;nderung auch nur eines Teils des Render-Graphen: Hash &#228;ndert sich &#10233; Cache invalidiert
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1682039960965" ID="ID_205623629" MODIFIED="1682039976626" TEXT="Problem: mu&#xdf; Parameter-Automation mit erfassen">
<icon BUILTIN="messagebox_warning"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1682047799390" ID="ID_1327852689" MODIFIED="1682047826186" TEXT="#1293 job invocation identity">
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1681594271596" ID="ID_963803611" MODIFIED="1681594283643" TEXT="in welchem Scope ist sie eindeutig?">
<icon BUILTIN="help"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1682885727188" ID="ID_444576509" MODIFIED="1682885734939" TEXT="vorl&#xe4;ufige Impl">
<icon BUILTIN="forward"/>
<node CREATED="1682885740362" ID="ID_362133279" MODIFIED="1682885761537" TEXT="untere H&#xe4;lfte: Seed bzw. zuf&#xe4;llig"/>
<node CREATED="1682885762190" ID="ID_1713133015" MODIFIED="1682885777729" TEXT="obere H&#xe4;lfte: Hash aus der nominellen Zeit"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1682941259374" ID="ID_1987226609" MODIFIED="1682941345993" TEXT="auf C++ umstellen (#1295 bzw. #1287)">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node CREATED="1682039636789" ID="ID_986989156" MODIFIED="1682039638216" TEXT="Job">
<node CREATED="1682040113581" ID="ID_226959477" MODIFIED="1682040120147" TEXT="Bestandteile">
<node CREATED="1682040128483" ID="ID_1479051411" MODIFIED="1682040135022" TEXT="Job-Deskriptor"/>
<node CREATED="1682040135826" ID="ID_1456180976" MODIFIED="1682040139389" TEXT="Job-Parameter">
<node CREATED="1682040150126" ID="ID_1607794832" MODIFIED="1682040158098" TEXT="nomineller Zeitpunt"/>
<node CREATED="1682040159275" ID="ID_465090802" MODIFIED="1682040208269" TEXT="InvocationInstanceID">
<arrowlink COLOR="#677097" DESTINATION="ID_1719102613" ENDARROW="Default" ENDINCLINATION="20;85;" ID="Arrow_ID_470615287" STARTARROW="None" STARTINCLINATION="-148;-14;"/>
</node>
</node>
<node CREATED="1682040140026" ID="ID_606595034" MODIFIED="1682040142533" TEXT="Job-Funktor">
<node CREATED="1682040662634" ID="ID_1775269495" MODIFIED="1682040670827" TEXT="definiert die eigentliche Nutzfunktion"/>
<node CREATED="1682040649447" ID="ID_1318983077" MODIFIED="1682040753078">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      hier ist <i>mindestens eine </i>Indirektion notwendig
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      aktuell passieren sogar zwei Indirektionen
    </p>
    <ul>
      <li>
        Job-Deskriptor &#10236; JobFunctor-Objekt
      </li>
      <li>
        JobFunctor vtable &#10236; Nutzfunktion
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node CREATED="1682040770119" ID="ID_840369063" MODIFIED="1682041006808" TEXT="JobFunktor selber ist generisch und wird m&#xf6;glichst weithin geteilt">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      wie generisch, ist eine offene Frage, die eing damit zusammenh&#228;ngt, was tats&#228;chlich durch die PriorityQueue l&#228;uft: Wenn n&#228;mlich auch schon der Job-Parameter in separater Storage liegt, dann k&#246;nnte bereits dieser eine Vorstufe zum Funktor sein, und bsp. auch den Einsprung f&#252;r die passende ProcNode transportieren; in diesem Fall g&#228;be es dann nur noch ganz wenige, prototypische Basis-Funktoren (Render aufrufen, Daten laden, Netzkommunikation, Verwaltungsaufgaben), und der konkrete Aufrufkontext w&#252;rde im Parameter stecken &#8212; wir h&#228;tten dann wieder zwei Indirektionen (Job&#10236;Parameter und Parameter&#10236;Nutzfunktion)
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1682892551985" ID="ID_479084448" MODIFIED="1682892564322" TEXT="Interface">
<icon BUILTIN="bell"/>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1682892569091" ID="ID_506216512" MODIFIED="1682892588596">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      welcher Teil mu&#223; wirklich<i>&#160;flexibel</i>&#160;sein?
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="help"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1682892594378" ID="ID_470552795" MODIFIED="1682892605477" TEXT="fragw&#xfc;rdig">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1682892640709" ID="ID_587647024" MODIFIED="1682892640709" TEXT="HashVal hashOfInstance(InvocationInstanceID)"/>
<node CREATED="1682892668386" ID="ID_893041429" MODIFIED="1682892668386" TEXT="bool verify (Time, InvocationInstanceID)">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1682892726514" ID="ID_231285908" MODIFIED="1682892847128" TEXT="f&#xfc;hrt das nicht zu einer gef&#xe4;hlichen zyklischen Verkopplung?">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...denn von den grunds&#228;tzlichen Abh&#228;ngigkeiten her wei&#223; nicht einmal ein JobTicket, in welchem Segment es h&#228;ngt; auch ProcNodes k&#246;nnten theoretisch sogar in mehreren Segmenten h&#228;ngen &#10233; es schreint mehr als fragw&#252;rdig, ob ein JobFunktor &#252;berhaupt im Stande ist, eine inhaltlich sinnvolle verifikation zu machen (&#252;ber das Pr&#252;fen auf null-Pointer hinaus)
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1682892700196" ID="ID_113377758" MODIFIED="1692108233616" TEXT="void signalFailure (JobParameter,JobFailureReason)">
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1682892704686" ID="ID_1226594521" MODIFIED="1682892718331" TEXT="macht das nicht beser Layer-2 im Scheduler?">
<arrowlink COLOR="#c18992" DESTINATION="ID_1827409996" ENDARROW="Default" ENDINCLINATION="460;-40;" ID="Arrow_ID_269986431" STARTARROW="None" STARTINCLINATION="-174;11;"/>
<icon BUILTIN="help"/>
<node CREATED="1692108241573" ID="ID_18582343" MODIFIED="1692108302189" TEXT="Prinzip: ganz oder gar nicht">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1692108310379" ID="ID_114242462" MODIFIED="1692108455901" TEXT="Problem: R&#xfc;ck-Kanal erforderlich">
<arrowlink COLOR="#8d385a" DESTINATION="ID_1557327160" ENDARROW="Default" ENDINCLINATION="-382;-787;" ID="Arrow_ID_1536727958" STARTARROW="None" STARTINCLINATION="-595;52;"/>
</node>
</node>
</node>
</node>
<node CREATED="1682892868892" ID="ID_1825787555" MODIFIED="1682892871994" TEXT="void invokeJobOperation (JobParameter parameter)">
<icon BUILTIN="forward"/>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1682892874899" ID="ID_1605821761" MODIFIED="1682892883021" TEXT="k&#xf6;nnte man die generisch implementieren?">
<icon BUILTIN="help"/>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1682892899276" ID="ID_1612087262" MODIFIED="1682892909242" TEXT="JobKind getJobKind()">
<icon BUILTIN="hourglass"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1682892925095" ID="ID_1576147260" MODIFIED="1682892975170" TEXT="InvocationInstanceID buildInstanceID(HashVal)">
<arrowlink COLOR="#4d4eb0" DESTINATION="ID_1493396541" ENDARROW="Default" ENDINCLINATION="-46;-58;" ID="Arrow_ID_1838720811" STARTARROW="None" STARTINCLINATION="148;9;"/>
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1682040531781" ID="ID_913436563" MODIFIED="1682040539889" TEXT="offene Fragen">
<icon BUILTIN="help"/>
<node CREATED="1682040544603" ID="ID_1221736313" MODIFIED="1682040594240" TEXT="was steht tats&#xe4;chlich in der PriQueue? Job-Deskriptor oder nur eine Activity?"/>
<node CREATED="1682040603211" ID="ID_1088917301" MODIFIED="1682040621149" TEXT="wenn nicht in der Queue, wo werden Jobs dann gespeichert? und wieder freigegeben?"/>
<node CREATED="1682808411785" ID="ID_1713196934" MODIFIED="1682808633170" TEXT="welche Parameter m&#xfc;ssen einer Invocation im allgemeinen mitgegeben werden">
<linktarget COLOR="#b75269" DESTINATION="ID_1713196934" ENDARROW="Default" ENDINCLINATION="-871;-27;" ID="Arrow_ID_865176706" SOURCE="ID_782813898" STARTARROW="None" STARTINCLINATION="-1263;70;"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1682810738487" ID="ID_1493396541" MODIFIED="1682810875535" TEXT="#1295 draft job invocation parameter representation">
<linktarget COLOR="#4d4eb0" DESTINATION="ID_1493396541" ENDARROW="Default" ENDINCLINATION="-46;-58;" ID="Arrow_ID_1838720811" SOURCE="ID_1576147260" STARTARROW="None" STARTINCLINATION="148;9;"/>
<linktarget COLOR="#b22e63" DESTINATION="ID_1493396541" ENDARROW="Default" ENDINCLINATION="-1383;-51;" ID="Arrow_ID_847435526" SOURCE="ID_48632766" STARTARROW="None" STARTINCLINATION="-753;40;"/>
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1693684904305" ID="ID_887857937" MODIFIED="1693684935612" TEXT="Entscheidung: nominal time oder explizite Framenummer">
<icon BUILTIN="yes"/>
<icon BUILTIN="hourglass"/>
<node CREATED="1693684958202" ID="ID_1211986246" MODIFIED="1693685119943" TEXT="Framenummer w&#xe4;re die offensichtliche L&#xf6;sung">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      und zwar &#187;point and shot&#171; &#8212; es mu&#223; genau die Implementierungs-Framenummer sein, die dann f&#252;r die Verarbeitung wirklich gebraucht wird (und welche ist das?? ... wer wei&#223; das???)
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="smiley-oh"/>
</node>
<node CREATED="1693684939893" ID="ID_1837303645" MODIFIED="1693685363183" TEXT="mein Bauchgef&#xfc;hl sagt: Zeit ist generischer">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      da hinter der Invocation stets ein JobFunctor steht, der &#252;ber eine Closure Zugriff auf konkrete Kontext-Informationen hat &#8212; das einzige Prinzip in der f&#252;r Lumiera entwickelten offenen Daten-Architektur ist, da&#223; alles zu Berechnende <i>zeitlich eingeordnet werden kann. </i>Damit sollte jedwede Aktivit&#228;t anhand der Zeitangabe im Stande sein, ihre konkrete Parametrisierung abzuleiten. Das Wichtige dabei: <b>diese Ableitung bleibt ein lokales Detail</b>. Der Planungs-Proze&#223; mu&#223; es &#252;berhaupt nicht wissen
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1693685364237" ID="ID_186112523" MODIFIED="1693685388978" TEXT="letztlich erst mit wachsender Praxis zu entscheiden">
<icon BUILTIN="yes"/>
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1692108072539" ID="ID_1827409996" MODIFIED="1692108369187" TEXT="Umgang mit Fehlern">
<arrowlink COLOR="#6f6ea7" DESTINATION="ID_774705986" ENDARROW="Default" ENDINCLINATION="-559;-416;" ID="Arrow_ID_1863875541" STARTARROW="None" STARTINCLINATION="-199;23;"/>
<linktarget COLOR="#c18992" DESTINATION="ID_1827409996" ENDARROW="Default" ENDINCLINATION="460;-40;" ID="Arrow_ID_269986431" SOURCE="ID_1226594521" STARTARROW="None" STARTINCLINATION="-174;11;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1682040285134" ID="ID_1653553289" MODIFIED="1682040299541" TEXT="Performance-Belange">
<icon BUILTIN="hourglass"/>
<node CREATED="1682040301305" ID="ID_1810860564" MODIFIED="1682040325124" TEXT="der Job-Descriptor wird ggfs durch die Priority-Queue geschoben"/>
<node CREATED="1682040325953" ID="ID_1613526709" MODIFIED="1682040363310" TEXT="Jobs k&#xf6;nnen einen permanenten Allokations-Druck erzeugen">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1682040431970" ID="ID_895676940" MODIFIED="1682040530953" TEXT="Gefahr der contention und multi-Core-Synchronisation">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      da Jobs massiv &#252;ber mehrere Threads hinweg gereicht werden, k&#246;nnte der blo&#223;e Umstand einer Datenaktualisierung bereits zu Cache-Coherency-Overheads f&#252;hren
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node CREATED="1689000989238" ID="ID_1795801593" MODIFIED="1689001000556" TEXT="Activity-Language">
<node CREATED="1689001006316" ID="ID_279615661" MODIFIED="1689001019758" TEXT="stellt das Interface und das Arbeits-Agens dar">
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1689001233653" ID="ID_1628186610" MODIFIED="1693238589862" TEXT="Entwurf (&#xbb;Playback Vertical Slice&#xab;)">
<arrowlink COLOR="#daf1b4" DESTINATION="ID_688439359" ENDARROW="Default" ENDINCLINATION="-190;833;" ID="Arrow_ID_345974066" STARTARROW="None" STARTINCLINATION="2086;-130;"/>
<icon BUILTIN="pencil"/>
</node>
</node>
</node>
</node>
<node CREATED="1685313728009" ID="ID_1684013116" MODIFIED="1685313732179" TEXT="Architektur">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685313733156" ID="ID_1514384511" MODIFIED="1685313753858" TEXT="Diskussion">
<icon BUILTIN="bell"/>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1685313772507" ID="ID_1507492066" MODIFIED="1685313796574" TEXT="ist time-bound Scheduling &#xfc;berhaupt der richtige Ansatz?">
<icon BUILTIN="help"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685313801106" ID="ID_669174882" MODIFIED="1685313820436" TEXT="Gegenargumente">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1685313827404" ID="ID_428447328" MODIFIED="1685313838734" TEXT="zeitliche Planung ist nur ein Spezialfall">
<node CREATED="1685313893707" ID="ID_268317431" MODIFIED="1685313904766" TEXT="sie gilt nur f&#xfc;r normales Standard-Playback"/>
<node CREATED="1685313905448" ID="ID_1165029374" MODIFIED="1685313930314" TEXT="dynamische &#xc4;nderungen invalidieren den Plan"/>
<node CREATED="1685313932542" ID="ID_1194636220" MODIFIED="1685313974123" TEXT="Umstands-bedingte Verz&#xf6;gerungen k&#xf6;nnen nur mit Puffer aufgefangen werden"/>
<node CREATED="1685313975342" ID="ID_1745669681" MODIFIED="1685313987526" TEXT="finales Rendern ist nicht zeitgebungen"/>
<node CREATED="1685313993958" ID="ID_1955944092" MODIFIED="1685314018982" TEXT="Pufferzeiten gehen auf Kosten der Gesamtleistung"/>
<node CREATED="1685314035535" ID="ID_1997454756" MODIFIED="1685314110039" TEXT="Hintergrund-Aktivit&#xe4;ten orientieren sich an Kapazit&#xe4;t, nicht Zeit"/>
</node>
<node CREATED="1685313842284" ID="ID_184778142" MODIFIED="1685313882542" TEXT="zeitliche Planung ist starr und aufwendig in der Anpassung">
<node CREATED="1685314214380" ID="ID_30132170" MODIFIED="1685316717679" TEXT="Zeitsteuerung dient der maximalen Ressourcen-Nutzung">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Zeitsteuerung funktioniert am Besten bei eigentlich entkoppelten Aktivit&#228;ten, welche ohne weitere Pr&#252;fungen und Synchronisationen starten und enden k&#246;nnen
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#8c4d64" DESTINATION="ID_1447380879" ENDARROW="Default" ENDINCLINATION="-8;-5;" ID="Arrow_ID_435946798" STARTARROW="None" STARTINCLINATION="-79;0;"/>
</node>
<node CREATED="1685314344399" ID="ID_1217096258" MODIFIED="1685314716242" TEXT="Reaktion auf externe Ereignisse ist der absolute Gegenpol einer Zeitsteuerung">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Event &#10230; <b>push</b>
    </p>
    <p>
      Zeit &#10229; <b>pull</b>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1685314380386" ID="ID_558692946" MODIFIED="1685314749243" TEXT="jede Kontext-Abh&#xe4;ngigkeit &#xfc;bersetzt sich in zus&#xe4;tzliche Latenz">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      weil au&#223;er dem zeitgetriggerten Start...
    </p>
    <ul>
      <li>
        noch zus&#228;tzlich etwas Externes gepr&#252;ft werden mu&#223;, was Varianz einf&#252;hrt
      </li>
      <li>
        deshalb zwischen Pr&#252;fung und eigentlicher Aktion ein k&#252;nstlicher Sicherheitspuffer liegen mu&#223;
      </li>
      <li>
        au&#223;erdem noch eine Kommunikation stattfinden mu&#223;, schlimmstenfalls &#252;ber Thread-Grenzen hinweg
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node CREATED="1685314776038" ID="ID_100581546" MODIFIED="1685314801303" TEXT="so gesehen &#x2014; wir haben ein Problem">
<icon BUILTIN="broken-line"/>
<node CREATED="1685315067847" ID="ID_1447380879" MODIFIED="1685316717679" TEXT="wo Ressourcen-Nutzung am Wichtigsten w&#xe4;re, ist Zeitsteuerung grade nicht optimal">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...n&#228;mlich beim <b>finalen Rendern</b>! Lumiera ist <i>darauf ausgelegt, und grade nicht als Auff&#252;hrungs-System</i>&#160;konzipiert. Und auf der anderen Seite, wenn es um zeitgebundene Wiedergabe geht, fordern wir ohnehin, den Aufwand so sehr zu reduzieren (Proxyies), da&#223; das System weit von Vollauslastung entfernt l&#228;uft
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#8c4d64" DESTINATION="ID_1447380879" ENDARROW="Default" ENDINCLINATION="-8;-5;" ID="Arrow_ID_435946798" SOURCE="ID_30132170" STARTARROW="None" STARTINCLINATION="-79;0;"/>
</node>
<node CREATED="1685315368175" ID="ID_212885906" MODIFIED="1685315397463" TEXT="wir haben komplett kontr&#xe4;re Anforderungen gleicherma&#xdf;en zu befriedigen">
<node CREATED="1685315468539" ID="ID_640947563" MODIFIED="1685315806051" TEXT="Playback ist h&#xe4;ufig, w&#xe4;re aber viel billiger auch zu haben">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Denn stabiler Playback erfordert zwingend zus&#228;tzliche Leistungspuffer (sofern auch nur ein kleiner Teil der Pipeline zuf&#228;llig streut). Daher steht und f&#228;llt die M&#246;glichkeit f&#252;r fl&#252;ssigen Playback damit, den Aufwand garantiert erheblich unter das Limit zu dr&#252;cken. Unter diesen Umst&#228;nden w&#252;rde meist auch Batching plus Vorlauf mit Datenpuffer gen&#252;gen
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1685315807940" ID="ID_425768150" MODIFIED="1685315984774" TEXT="zwar hilft Parllelisierung von I/O, aber genau dies (Events) pa&#xdf;t schlecht auf Zeitsteuerung">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...mehr noch, da letzten Endes die amortisierte Lade-Zeit pro Frame deutlich kleiner sein mu&#223; als die Framerate, brauchen wir ehr einen ausreichenden Vorlauf und einfache Datenpuffer &#8212; zumal fl&#252;ssiger Playback ohnehin nur mit kleinen Frames funktioniert, denn die I/O-Bandbreite ist bei Weitem nicht so angewachsen, wie die Rechenleistung
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1685315996971" ID="ID_1708683391" MODIFIED="1685316323440" TEXT="Und der seltene Fall des finalen Renders verlangt eigentlich nach (parallelem) Pipelining">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      In diesem Fall verschlechtert Zeitsteuerung eigentlich die ben&#246;tigte Gesamtzeit; die optimale L&#246;sung w&#228;re hier, jeweils parallel mehrere I/O-Pipelines, und dann einige Worker nach <i>best serve</i>-Verteilung laufen zu lassen
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1685316383184" ID="ID_774329089" MODIFIED="1685316548627" TEXT="Widerspruch zwischen Events und Lastkoordination betrifft alle F&#xe4;lle">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      praktisch alle Video-Verarbeitung involviert I/O in irgendeiner Form, und mu&#223; deshalb auf Events reagieren, dann aber einen nachfolgenden festen Arbeitsaufwand gleichm&#228;&#223;ig disponieren
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1685316553665" ID="ID_1469791" MODIFIED="1685316844661" TEXT="eigentlich m&#xfc;&#xdf;ten zwei oder drei verschiedene Prozess-Arten programmiert werden">
<arrowlink COLOR="#ffeac4" DESTINATION="ID_779629114" ENDARROW="Default" ENDINCLINATION="13;-20;" ID="Arrow_ID_1083704754" STARTARROW="None" STARTINCLINATION="-69;0;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1685316762484" ID="ID_779629114" MODIFIED="1685316844661" TEXT="wir nutzen Zeitsteuerung als integrierendes Agens" VSHIFT="18">
<arrowlink COLOR="#f9ffd5" DESTINATION="ID_503599380" ENDARROW="Default" ENDINCLINATION="-127;-352;" ID="Arrow_ID_215108045" STARTARROW="None" STARTINCLINATION="-107;177;"/>
<linktarget COLOR="#ffeac4" DESTINATION="ID_779629114" ENDARROW="Default" ENDINCLINATION="13;-20;" ID="Arrow_ID_1083704754" SOURCE="ID_1469791" STARTARROW="None" STARTINCLINATION="-69;0;"/>
<icon BUILTIN="idea"/>
<node CREATED="1685317008821" ID="ID_75624396" MODIFIED="1685317551995" TEXT="den zus&#xe4;tzlichen Overhead m&#xfc;ssen wir durch Parallelisierungs-Gewinn aufwiegen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      die wirklich recht komplexe Steuerung ist einzig und allein dadurch gerechtfertigt, da&#223; so lange laufende und schwer vorhersehbare Sequenzen &#252;berlappend verschachtelt werden k&#246;nnen, was bei einem strikten Pipelining oder rein Event-getriebener Verarbeitung nicht m&#246;glich w&#228;re; letztere Ans&#228;tze funktionieren nur gut bei sehr kleinen Arbeitspaketen oder bei extremer horizontaler Skalierung
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1685317084627" ID="ID_1577438401" MODIFIED="1685317709414" TEXT="es handelt sich mehr um priorisiertes Messaging, denn um Abarbeiten eines Plans">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      das hei&#223;t, die Priority-<b>Queue</b>&#160;ist das Entscheidende; das Ordnungsma&#223; darf gar nicht prim&#228;r als ein Zeitplan verstanden werden, sondern als ein Ma&#223; an aktueller Dringlichkeit
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1685317217257" ID="ID_646611844" MODIFIED="1685317967864" TEXT="eine breitere zeitliche Streuung entzerrt die Parallelisierung">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Bei einem reinen Pipelining kann es zur Stau und Lastspitzen kommen, und genau dann auch zu Lock-contention. Wir sollten also die zur Integration der widerspr&#252;chlichen Anforderungen notwendigen Pufferzeiten als eine zuf&#228;llige Streuung deuten, die Lastspitzen durch Verteilung entzerrt; sofern nicht in kurzer Zeit Aktionen an <i>mehrere Threads zugleich</i>&#160; weitergegeben werden m&#252;ssen, treten auch weniger Behinderungen durch Synchronisation auf
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1685317341273" ID="ID_229695512" MODIFIED="1685318290392" TEXT="das Lesen aus der Queue soll sich nach Durchsatz steuern">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Die Implementierung sollte sich von den exakten Zeiten l&#246;sen &#8212; besser sollte stets mit reichlich Puffer gearbeitet werden, daf&#252;r aber auch eine Activity in einer gewissen Toleranzzone um den definierten Zeitpunkt herum gestartet werden k&#246;nnen. Daf&#252;r sollte im Gegenzug die Menge der jeweils aus der Queue entommenen Activities dynamisch geregelt werden, und stets nur so viel wie gut m&#246;glich getan werden. Die concurrency-Struktur sollte zum Leitma&#223; erhoben werden; idealerweise sollte stets nur <i>ein Thread abnehmen, </i>und auch das <i>nur so lange,</i>&#160; bis er wieder auf eine gr&#246;&#223;ere Aufgabe geschickt wird.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1685319061644" ID="ID_1128872414" MODIFIED="1685320637044" TEXT="Experimente mit der Thread-Zuteilung zulassen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      <b>Keinesfalls</b>&#160;sollte a priori eine bestimmte Thread-Struktur festgelegt werden! Im Besonderen auch nicht die Annahme, da&#223; es einen &#187;Scheduler-Thread&#171; gibt, welcher Aufgaben verteilt. Denn letztlich h&#228;ngen alle Leistungs-Eigenschaften an der Cache-Locality, und diese l&#228;&#223;t sich nur empirisch optimieren, denn es ist klar, da&#223; unser Daten-Durchsatz die Cache-Kapazit&#228;t insgesamt &#252;bersteigt &#8212; inwiefern sich eine einzelne CPU f&#252;r bestimmte Aufgaben &#252;berhaupt &#8222;warm laufen&#8220; kann, mu&#223; sich in der Praxis zeigen; gut m&#246;glich, da&#223; I/O-Limitierungen jedweden Cache-Efekt &#252;berdecken. Grunds&#228;tzlich sollte die M&#246;glichkeit vorgesehen werden, da&#223; <b>jeder Thread die Queue bedienen kann </b>&#8212; sowohl eingangsseitig alsauch ausgangsseitig. Nat&#252;rlich darf es stets nur ein Thread sein, der die Queue bedient; andere unt&#228;tige Threads legen sich schlafen.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node CREATED="1687652249218" ID="ID_1174002353" MODIFIED="1698097252826" TEXT="Laststeuerung und Priorit&#xe4;ts-Klassen">
<node CREATED="1687652267839" ID="ID_739691729" LINK="https://en.wikipedia.org/wiki/Earliest_deadline_first_scheduling" MODIFIED="1687652334909" TEXT="was wir hier machen ist analog EDS">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      <b http-equiv="content-type" content="text/html; charset=utf-8">Earliest deadline first</b>&#160;(<b>EDF</b>) or <b>least time to go</b>&#160;is a dynamic priority <a href="https://en.wikipedia.org/wiki/Scheduling_algorithm" class="mw-redirect" title="Scheduling algorithm">scheduling algorithm</a>&#160;used in <a href="https://en.wikipedia.org/wiki/Real-time_operating_system" title="Real-time operating system">real-time operating systems</a>&#160;to place processes in a <a href="https://en.wikipedia.org/wiki/Priority_queue" title="Priority queue">priority queue</a>. Whenever a scheduling event occurs (task finishes, new task released, etc.) the queue will be searched for the process closest to its deadline. This process is the next to be scheduled for execution.
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#435e98" CREATED="1687652356899" ID="ID_1155443486" MODIFIED="1698433460035" TEXT="K&#xf6;nnen Priorit&#xe4;ts-Klassen &#xfc;berhaupt dargestellt werden?">
<icon BUILTIN="help"/>
<node CREATED="1687652377638" ID="ID_927055665" MODIFIED="1687652408889" TEXT="z.B. Realtime vs. Background"/>
<node CREATED="1687652466615" ID="ID_98119896" MODIFIED="1698432345620" TEXT="Problem: der Background-Task k&#xf6;nnte eine fr&#xfc;here Deadline haben....">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...und w&#252;rde dann strikt nach zeit-Ordnung zuerst bedient, und damit dem Realtime-Task die Ressourcen wegnehmen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node BACKGROUND_COLOR="#e8e78a" COLOR="#a34037" CREATED="1698431962633" ID="ID_1475863913" MODIFIED="1698433650097" TEXT="Heureka! mit dem probabilstischen Ansatz verbinden">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Gru&#223; vom Vollmond in Pullach (noch nicht ganz voll, morgen ist Mondfinsternis), der geht das Tal entlang mit
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#f5fd9d" DESTINATION="ID_323819142" ENDARROW="Default" ENDINCLINATION="44;-68;" ID="Arrow_ID_116183984" STARTARROW="None" STARTINCLINATION="-157;7;"/>
<linktarget COLOR="#722322" DESTINATION="ID_1475863913" ENDARROW="Default" ENDINCLINATION="888;-37;" ID="Arrow_ID_1254135767" SOURCE="ID_1985773186" STARTARROW="None" STARTINCLINATION="741;41;"/>
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="idea"/>
<node CREATED="1698433179997" HGAP="46" ID="ID_477130123" MODIFIED="1698433421017" TEXT="Kapazit&#xe4;ts- und Laststeuerung geh&#xf6;rt eigentlich auf eine h&#xf6;here Ebene" VSHIFT="41">
<icon BUILTIN="full-1"/>
</node>
<node CREATED="1698433228231" HGAP="32" ID="ID_1931146744" MODIFIED="1698433423425" TEXT="denn wenn ein Task mal im Scheuler ist &#x2014; hat er Chancen, Kapazit&#xe4;t zu erlangen" VSHIFT="-1">
<icon BUILTIN="full-2"/>
</node>
<node CREATED="1698433311382" HGAP="24" ID="ID_788626614" MODIFIED="1698433453837" TEXT="allerdings erforder Kapazit&#xe4;ts-Steuerung eine Priorisierung &#x2014; und zwar segmentweise">
<icon BUILTIN="full-3"/>
</node>
<node CREATED="1698433349337" ID="ID_773792225" MODIFIED="1698433434845" TEXT="also kann man mit Tasks auch segmentweise &#x201e;schraffieren&#x201c;">
<icon BUILTIN="full-4"/>
</node>
<node CREATED="1698433382797" ID="ID_856572541" MODIFIED="1698433400374" TEXT="&#xd83e;&#xdc32; das ist die &#xd83d;&#xdca1; L&#xf6;sung"/>
</node>
</node>
<node CREATED="1698433489965" ID="ID_323819142" MODIFIED="1698433626101">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <font size="4"><u>Priorit&#228;t</u></font>&#160;bestimmt die <b>Wahrscheinlichkeit</b>,
    </p>
    <p>
      Kapazit&#228;t zuf&#228;llig zu erlangen
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#f5fd9d" DESTINATION="ID_323819142" ENDARROW="Default" ENDINCLINATION="44;-68;" ID="Arrow_ID_116183984" SOURCE="ID_1475863913" STARTARROW="None" STARTINCLINATION="-157;7;"/>
<icon BUILTIN="forward"/>
<node CREATED="1698433687865" HGAP="17" ID="ID_1856291258" MODIFIED="1698436739705" TEXT="ein Render-Proze&#xdf; setzt Kapazit&#xe4;t voraus" VSHIFT="16">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Grunds&#228;tzlich darf ein Render-Proze&#223; nur bei vorhandener Kapazit&#228;t zugelassen werden. Aber die Anwendung dieses Prinzips hat Abstufungen, die sich aus der Art des Prozesses bestimmen.
    </p>
    <ul>
      <li>
        ein <i>whatever it takes</i>&#160;- Render bekommt die gesamte Kapazit&#228;t. Punkt. (alles andere w&#252;rde ihm schaden)
      </li>
      <li>
        ein realtime-Playback mu&#223; im Stande sein, seine Termine zu halten; unter dieser Ma&#223;gabe mu&#223; er Vorfahrt bekommen, kann aber durchaus noch Raum freilassen, wenn er nicht au&#223;erdem auch noch die Leistungsf&#228;higkeit des Systems komplett aussch&#246;pft
      </li>
      <li>
        demgegen&#252;ber kann man Background-Prozesse dem Wettbewerb &#252;berlassen, und dabei sogar noch verschiedene Level definieren. Es sind nur zwei Bedingungen einzuhalten:
      </li>
      <ul>
        <li>
          Activities m&#252;ssen feingranular sein, damit sie wirklich nur die Reste verbrauchen
        </li>
        <li>
          es mu&#223; daf&#252;r gesorgt werden, da&#223; der Proze&#223; tats&#228;chlich fortschreitet
        </li>
      </ul>
    </ul>
  </body>
</html></richcontent>
</node>
<node CREATED="1698434259630" ID="ID_1030217927" MODIFIED="1698434360871" TEXT="ein geSchedulter Task hat einen Wahrscheinlichkeitsquerschnitt">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      die aktuelle Situation bestimmt dar&#252;ber, wie Kapazit&#228;t zugef&#252;hrt wird; aber der Querschnitt bestimmt, wie gute Chancen ein konkreter Task hat, davon etwas abzubekommen
    </p>
  </body>
</html></richcontent>
<node CREATED="1698434362407" ID="ID_1045531877" MODIFIED="1698434532770" TEXT="solange etwas davor steht, ist er verdeckt">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Ein <i>frei stehender</i>&#160;Task bekommt durch den tend-Next-Mechanismus auch schon sehr viel fr&#252;her die n&#228;chste frei werdende Kapazit&#228;t zugeordnet; solange aber in der einfachen zeitlichen Ordnung noch etwas vor ihm steht (selbst wenn &#252;berf&#228;llig), dann zieht dieses die Priorit&#228;t auf sich
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1698434413940" ID="ID_1412965140" MODIFIED="1698434678138">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      sobald er aber frei steht, bestimmt seine <b>L&#228;nge</b>&#160;die Priorit&#228;t
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Und zwar durch das Ende (die Deadline), nach deren &#220;berstreichen der Task effektiv unwirksam ist und im Vorr&#252;bergehen entnommen und verworfen wird. Wenn nun verschiedene Tasks jeweils in der L&#228;nge beschr&#228;nkt sind, dann f&#228;llt ihnen diejenige Kapazit&#228;t zu, die zuf&#228;llig in ihrem Wirkradius <i>&#8222;landet&#8220;</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1698434700812" ID="ID_1790239617" MODIFIED="1698434978201" TEXT="weitere Faktoren modulieren dieses Schema">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Da sind zun&#228;chst die Gates von Relevanz. Ein noch geschlossenes Gate kann einen Task nach hinten schieben und damit andere Tasks aufdecken. Ein getriggertes und endg&#252;ltig geschlossenes Gate nimmt den Task aus der Konkurrenz komplett heraus. Und au&#223;erdem werden Tasks auch noch &#252;ber eine Proze&#223;/Kontext-ID gekennzeichnet, wodurch eine Revision und Aktualisierung eines gesamten Planungsvorgangs m&#246;glich wird.
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1698434985257" ID="ID_1456084825" MODIFIED="1698435345311" TEXT="man kann die gleiche Chain mehrfach schedulen &#x2014; sofern sie ein Gate-Enablement hat">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...das bedeutet, wenn wir einmal durch das Gate gegangen sind, ist es endg&#252;ltig geschlossen. Deshalb k&#246;nnen gewisserma&#223;en mehrere &#187;Instanzen&#171; eingeplant werden, denn das Wegr&#228;umen von M&#252;ll ist in einer Priority-Queue relativ effizient, O(log&#8345;), und l&#228;uft bei uns im einstelligen &#181;s-Bereich pro Einzelschritt
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#411d16" CREATED="1698435413188" HGAP="18" ID="ID_988639193" MODIFIED="1698436797466" STYLE="bubble" TEXT="&#x27f9; Wir definieren ein Schema, nach dem Tasks in Zeitfenster gesetzt werden" VSHIFT="4">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Ein Task der nur Restkapazit&#228;t bekommen soll, darf niemals am Anfang des Fensters stehen, und auch m&#246;glichst nicht ganz am Ende. Je k&#252;rzer und je mehr in der Mitte, desto geringer seine Chancen. Ein Task der in jedem Fall Kapazit&#228;t bekommen soll, mu&#223; nur hinreichend weit nach hinten reichen (aber unter der Einschr&#228;nkung, unseren Epochen-basierten BlockFlow nicht zu &#252;berlasten). Oder er mu&#223; hinreichend oft wiederholt werden. Es wird also ein generelles Segment-Schema etabliert, und in diesem gibt es vorgefertigte &#187;Slots&#171;. Gem&#228;&#223; &#252;bergeordnete Kapazit&#228;tsplanung werden diese Slots in Anspruch genommen. Wenn wir beispielsweise eine Restkapazit&#228;t 10-fach &#252;berprovisionieren, dann bedeutet das, jeden einzelnen Task (ggfs. mit Zeitabstand) 10+x-mal einzuplanen, wobei x einen empirisch bestimmten safety-margin darstellt, um die tats&#228;chlichen Fluktuationen der Kapazit&#228;t abzufedern...
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1698436618074" HGAP="23" ID="ID_145123835" MODIFIED="1698436752191" VSHIFT="5">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p style="text-align: center">
      dadurch &#252;bersetzen wir multidimensionale Zusammenh&#228;nge
    </p>
    <p style="text-align: center">
      von der &#252;bergeordneten Planungsebene
    </p>
    <p style="text-align: center">
      in ein low-Level-Ausf&#252;hrungsschema
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
</node>
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1698526315968" ID="ID_394986223" MODIFIED="1698872510316" TEXT="Verbindliche Aktivit&#xe4;ten">
<linktarget COLOR="#feffb0" DESTINATION="ID_394986223" ENDARROW="Default" ENDINCLINATION="-162;-764;" ID="Arrow_ID_1487204658" SOURCE="ID_769948602" STARTARROW="None" STARTINCLINATION="-1824;75;"/>
<icon BUILTIN="messagebox_warning"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1698526344156" ID="ID_1605243708" MODIFIED="1698526373772" TEXT="noch ein ungekl&#xe4;rtes Problem &#x2014; sieht nach innerem Widerspruch aus">
<icon BUILTIN="clanbomber"/>
</node>
<node CREATED="1698526392894" ID="ID_1798534041" MODIFIED="1698526620878" TEXT="der Scheduler k&#xf6;nnte ohne Deadline leben, aber der BlockFlow erzwingt sie">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      F&#252;r die Implementierung des Schedulers sind Deadlines technisch irrelevant &#8212; deshalb habe ich aktuell auch die ganze Implementierung gecodet, und noch keine Deadline-Behandlung eingebaut. Aber sowohl logisch, als auch im Hinblick auf die Allokationen <b>mu&#223;</b>&#160;jede Activity eine Deadline haben. Eine Activity ohne Deadline w&#228;re ultimativ verbindlich: <i>irgendwann nach </i>ihrem Startzeitpunkt <i>mu&#223; sie aktiviert werden, </i>und jede sp&#228;tere Activity ist durch sie verdeckt
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#435e98" CREATED="1698533069058" ID="ID_1475771662" MODIFIED="1698971466447" TEXT="klares Trennkriterium einf&#xfc;hren">
<linktarget COLOR="#3f3aee" DESTINATION="ID_1475771662" ENDARROW="Default" ENDINCLINATION="-1121;-88;" ID="Arrow_ID_211999245" SOURCE="ID_696019318" STARTARROW="None" STARTINCLINATION="1410;120;"/>
<icon BUILTIN="yes"/>
<node COLOR="#338800" CREATED="1698533152440" ID="ID_326051657" MODIFIED="1698971485135" TEXT="Flag f&#xfc;r verbindlichen Task in den Scheduler einbauen">
<arrowlink COLOR="#3ebbf1" DESTINATION="ID_1286321982" ENDARROW="Default" ENDINCLINATION="107;492;" ID="Arrow_ID_1399415601" STARTARROW="None" STARTINCLINATION="922;-57;"/>
<linktarget COLOR="#35b0df" DESTINATION="ID_326051657" ENDARROW="Default" ENDINCLINATION="482;26;" ID="Arrow_ID_550869434" SOURCE="ID_1704365524" STARTARROW="None" STARTINCLINATION="423;25;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1698526632870" ID="ID_1680559422" MODIFIED="1698526704177">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Problem: wenn R&#252;ckstau im Scheduler entsteht,
    </p>
    <p>
      wird jede Deadline irgendwann &#252;berfahren
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="broken-line"/>
<node CREATED="1698526724569" HGAP="36" ID="ID_68181204" MODIFIED="1698528287374" TEXT="und dann..." VSHIFT="30">
<icon BUILTIN="smiley-oh"/>
<node CREATED="1698526731373" ID="ID_78222945" MODIFIED="1698526743146" TEXT="hat ein finaler Render fehlende Frames"/>
<node CREATED="1698526743879" ID="ID_136373710" MODIFIED="1698526753121" TEXT="kann eine Dependency-Kette geblockt werden"/>
<node CREATED="1698526753997" ID="ID_810112487" MODIFIED="1698526781789" TEXT="rei&#xdf;t die Sequenz der Scheduler-Ticks ab"/>
</node>
<node CREATED="1698528278314" HGAP="56" ID="ID_906006078" MODIFIED="1698528284150" TEXT="Dilemma" VSHIFT="13">
<node CREATED="1698528304615" ID="ID_402115905" MODIFIED="1698528981338" TEXT="Epochen k&#xf6;nnen nicht beliebig lange blockiert sein">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...es gibt zwar einen Block-Mechanismus (das Epoch-Gate), doch damit l&#228;&#223;t man den Block-Pool anwachsen und die lineare Suche durch die Bl&#246;cke macht sich bald bemerkbar
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1698528350522" ID="ID_1884380820" MODIFIED="1698528623316" TEXT="Epochen k&#xf6;nnen nicht beliebig gro&#xdf; werden">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...weil dann der &#220;berlauf-Mechanismus zu weit in die Zukunft ausgreift, und sich die Steuerung in absehbarer Zeit<i>&#160;nicht mehr f&#228;ngt.</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1698528368302" ID="ID_516251987" MODIFIED="1698528683619" TEXT="bei normaler Gr&#xf6;&#xdf;e sind keine beliebig weiten Zeitschritte m&#xf6;glich">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Daher ist es nicht m&#246;glich, eben sehr gro&#223;e/lange Tasks vorzuplanen; man erzeugt eine Flut leerer Bl&#246;cke dazwischen, und die Suchzeiten degenerieren
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1698528414600" ID="ID_842501295" MODIFIED="1698528848581" TEXT="darf nach &#xfc;berschrittener Deadline die Activity nicht (mehr) dereferenzieren">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Damit scheiden die naheliegenden <i>Reparatur-Ans&#228;tze</i>&#160;weitgehend aus: es ist nicht m&#246;glich, eine &#8222;&#252;berfahrene&#8220; Activity <i>in die Zukunft </i>zu kopieren, denn wenn die Deadline verstrichen ist, kann sie auch bereits verworfen worden sein, und es ist nicht mehr feststellbar, um was es sich handelte
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#fafe99" COLOR="#fa002a" CREATED="1698529013384" ID="ID_1792474649" MODIFIED="1698529614442" STYLE="bubble" TEXT="&#x27f9; nur Abbruch m&#xf6;glich">
<edge COLOR="#cd5252"/>
<node CREATED="1698529046859" ID="ID_919383454" MODIFIED="1698529593507" STYLE="fork" TEXT="die gew&#xe4;hlte Scheduler-Struktur hat ihre Grenzen"/>
<node CREATED="1698529093245" ID="ID_553293254" MODIFIED="1698529593507" STYLE="fork" TEXT="man kann zwar puffern und abregulieren"/>
<node CREATED="1698529118154" ID="ID_1695541151" MODIFIED="1698529593507" STYLE="fork" TEXT="mu&#xdf; dann aber explizit abbrechen"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1698529182459" HGAP="2" ID="ID_1279861540" MODIFIED="1698529626166" STYLE="fork" TEXT="dieser Grenzfall liegt gar nicht so fern" VSHIFT="31">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1698529431864" ID="ID_18246325" MODIFIED="1698529633206" TEXT="geblocktes Netzwerk-IO"/>
<node CREATED="1698529210006" ID="ID_848256978" MODIFIED="1698529657110" TEXT="30 Sekunden pro Frame"/>
<node CREATED="1698529456173" ID="ID_876230665" MODIFIED="1698529593507" TEXT="System anderweitig &#xfc;berlastet &#x27f9; Tick kommt nicht zum Zug"/>
</node>
</node>
</node>
</node>
<node CREATED="1698529789384" ID="ID_1112168192" MODIFIED="1698529802617" TEXT="Begrenzung und &#xdc;berwachung">
<node CREATED="1698529808478" ID="ID_199837288" MODIFIED="1698529823647" TEXT="die Gesundheit mu&#xdf; &#xfc;berwacht werden">
<node CREATED="1698529824596" ID="ID_763081932" MODIFIED="1698529829108" TEXT="von innen und von au&#xdf;en">
<node CREATED="1698530385776" ID="ID_365804773" MODIFIED="1698530398452" TEXT="Innen-&#xdc;berwachung: der Tick">
<node CREATED="1698533322431" ID="ID_1153107499" MODIFIED="1698534741599">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      der Tick selber ist eine <b>verbindliche Aktivit&#228;t</b>
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#fd2f46" DESTINATION="ID_1153107499" ENDARROW="Default" ENDINCLINATION="524;-25;" ID="Arrow_ID_251741761" SOURCE="ID_1189633297" STARTARROW="None" STARTINCLINATION="420;464;"/>
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1698533344228" ID="ID_1704365524" MODIFIED="1698971421581" TEXT="der Tick aktualisiert jeweils den Queue-Head">
<arrowlink COLOR="#35b0df" DESTINATION="ID_326051657" ENDARROW="Default" ENDINCLINATION="482;26;" ID="Arrow_ID_550869434" STARTARROW="None" STARTINCLINATION="423;25;"/>
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1698533408036" ID="ID_748059800" MODIFIED="1698971458273" TEXT="wenn eine verbindliche Aktivit&#xe4;t &#xfc;berfahren wird &#xd83e;&#xdc32; Scheduler-Emergency">
<arrowlink COLOR="#b44670" DESTINATION="ID_269636711" ENDARROW="Default" ENDINCLINATION="204;-1082;" ID="Arrow_ID_1625681464" STARTARROW="None" STARTINCLINATION="-1259;48;"/>
<arrowlink COLOR="#544ad5" DESTINATION="ID_1227874220" ENDARROW="Default" ENDINCLINATION="-1477;121;" ID="Arrow_ID_677451247" STARTARROW="None" STARTINCLINATION="-536;-12;"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1698530399254" ID="ID_1046746147" MODIFIED="1698530408833" TEXT="Au&#xdf;en-&#xdc;berwachung...">
<node CREATED="1698530409796" ID="ID_324754876" MODIFIED="1698530428896" TEXT="k&#xf6;nnte ein sanity-Check beim Zugriff sein"/>
<node CREATED="1698530429514" ID="ID_1167241428" MODIFIED="1698530435977" TEXT="oder ein W&#xe4;chter-Thread"/>
</node>
</node>
<node CREATED="1698529832978" ID="ID_1789989240" MODIFIED="1698529853331" TEXT="Selbst-Diagnose per Warnschwelle notwendig">
<node CREATED="1698530454718" ID="ID_1982008339" MODIFIED="1698530612783" TEXT="mu&#xdf; vor dem BlockFlow-Clean-up sitzen">
<arrowlink COLOR="#ed3471" DESTINATION="ID_355476974" ENDARROW="Default" ENDINCLINATION="-616;43;" ID="Arrow_ID_729257748" STARTARROW="None" STARTINCLINATION="689;49;"/>
</node>
<node CREATED="1698971338638" ID="ID_1616058266" MODIFIED="1698971382127" TEXT="Warnschwelle == Deadline der periodischen &#xbb;Tick&#xab;-Activity">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      derzeit eingestellt auf 50ms
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node CREATED="1698529860655" ID="ID_315208147" MODIFIED="1698529868790" TEXT="es mu&#xdf; einen sauberen Abbruch geben">
<node CREATED="1698529876100" ID="ID_1032670149" MODIFIED="1698530090626" TEXT="pausieren der Render-Prozesse">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      sollte automatisch passieren, wenn die internen Gesundheits-Checks scheitern
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1698529893418" ID="ID_945666348" MODIFIED="1698529916172" TEXT="gestartete Berechnungen laufen weiter"/>
<node CREATED="1698529917111" ID="ID_138084659" MODIFIED="1698529933793" TEXT="das &#xfc;brige System mu&#xdf; gesund bleiben"/>
<node CREATED="1698529943153" ID="ID_1379758104" MODIFIED="1698530377336" TEXT="Notfall-Shutdown wird dann problematisch">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...wenn wir noch einen Worker-Pool haben, der mit langlaufenden berechnungen geblockt ist, dann wird jeder regul&#228;re emergency-Shutdown im Destruktor h&#228;ngen bleiben.Wenn es erst mal so weit gekommen ist, kann man nicht einmal mehr den User richtig benachrichtigen; ein hartes <font face="Monospaced">exit()</font>&#160; dagegen w&#252;rde die bereits geleistete Arbeit einfach verwerfen.
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1698529979672" ID="ID_1042828147" MODIFIED="1698529998709" TEXT="Alternative bieten">
<icon BUILTIN="yes"/>
<node CREATED="1698529985397" ID="ID_582805818" MODIFIED="1698535734795" TEXT="einen Batch-Prozessor">
<arrowlink COLOR="#632988" DESTINATION="ID_1722365863" ENDARROW="Default" ENDINCLINATION="-523;-416;" ID="Arrow_ID_65227993" STARTARROW="None" STARTINCLINATION="-598;65;"/>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1698530010130" ID="ID_1644937663" MODIFIED="1698530021855" TEXT="sollte m&#xf6;glichst das gleiche Ausf&#xfc;hrungs-Framework verwenden"/>
</node>
</node>
<node CREATED="1698097270027" ID="ID_1129105536" MODIFIED="1698097290884" TEXT="Timing-Genauigkeit">
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1698097298079" ID="ID_578937577" MODIFIED="1698097305903" TEXT="was brauchen wir wirklich?">
<icon BUILTIN="help"/>
</node>
<node CREATED="1698097312895" ID="ID_1679874959" MODIFIED="1698097325877" TEXT="System-Gegebenheiten">
<icon BUILTIN="info"/>
<node CREATED="1698097328174" ID="ID_80995931" MODIFIED="1698097345126" TEXT="die std::chrono - Implementierungen schlagen sich ganz ordentlich"/>
<node CREATED="1698097345681" ID="ID_1504658001" MODIFIED="1698097575285" TEXT="aber ohne weitere Ma&#xdf;nahmen kann man keine Genauigkeiten unter 1ms erwarten">
<linktarget COLOR="#8494c7" DESTINATION="ID_1504658001" ENDARROW="Default" ENDINCLINATION="-3062;-49;" ID="Arrow_ID_1741608203" SOURCE="ID_512066576" STARTARROW="None" STARTINCLINATION="1460;105;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1698097389049" ID="ID_600802835" MODIFIED="1698097410164" TEXT="es gibt high-resolution time sources im Kernel und die chrono::high_resolution_clock">
<node CREATED="1698097412552" ID="ID_35271353" MODIFIED="1698097417835" TEXT="damit kann man Spinnen"/>
<node CREATED="1698097418447" ID="ID_589008501" MODIFIED="1698097427939" TEXT="ob man das soll ist eine andere Frage">
<icon BUILTIN="smiley-oh"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1693499887783" ID="ID_1870927644" MODIFIED="1693499914940" TEXT="f&#xfc;r sp&#xe4;ter...">
<icon BUILTIN="hourglass"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1693499916691" ID="ID_1453759334" MODIFIED="1693499934621" TEXT="zu &#xfc;berpr&#xfc;fen">
<icon BUILTIN="stop"/>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1693499718350" ID="ID_1514365592" MODIFIED="1693501314685" TEXT="mu&#xdf; sich das Gate selbst re-triggern?">
<arrowlink COLOR="#9671cb" DESTINATION="ID_1878976712" ENDARROW="Default" ENDINCLINATION="-1051;64;" ID="Arrow_ID_1465904567" STARTARROW="None" STARTINCLINATION="624;46;"/>
<icon BUILTIN="help"/>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1693499718350" ID="ID_131095214" MODIFIED="1693501311725" TEXT="Integration von async-IO, Memory-Manager und Job-Planning">
<arrowlink COLOR="#9671cb" DESTINATION="ID_1766311350" ENDARROW="Default" ENDINCLINATION="-1051;64;" ID="Arrow_ID_972754095" STARTARROW="None" STARTINCLINATION="469;21;"/>
<icon BUILTIN="help"/>
</node>
</node>
</node>
</node>
<node CREATED="1685320663808" ID="ID_503599380" MODIFIED="1685320675723" TEXT="Struktur-Elemente">
<linktarget COLOR="#f9ffd5" DESTINATION="ID_503599380" ENDARROW="Default" ENDINCLINATION="-127;-352;" ID="Arrow_ID_215108045" SOURCE="ID_779629114" STARTARROW="None" STARTINCLINATION="-107;177;"/>
<node CREATED="1685320702161" ID="ID_1864388669" MODIFIED="1685320717483">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <b>zwei</b>&#160;Queues
    </p>
  </body>
</html></richcontent>
<node CREATED="1685320745481" ID="ID_466578017" MODIFIED="1685320767258" TEXT="eine N-zu-M lock-free Notification-Queue"/>
<node CREATED="1685320767988" ID="ID_721193609" MODIFIED="1685320791012" TEXT="eine Priority-Queue (not threadsafe)"/>
</node>
<node CREATED="1685320802441" ID="ID_55556868" MODIFIED="1685320814574" TEXT="ein passiver Thread-Pool">
<node CREATED="1685320820564" ID="ID_1807600749" MODIFIED="1685320829082" TEXT="keine aktive Zuteilung von Aufgaben"/>
<node CREATED="1685320830000" ID="ID_4129277" MODIFIED="1685320869284" TEXT="vielmehr konkurrieren die Threads um neue Aufgaben..."/>
<node CREATED="1685320845491" ID="ID_765952143" MODIFIED="1685320859102" TEXT="legen sich aber bei Mi&#xdf;erfolg schlafen"/>
</node>
<node CREATED="1685320923317" ID="ID_1902483191" MODIFIED="1685320942314" TEXT="die Proze&#xdf;steuerung liegt jeweils bei einem Thread">
<node CREATED="1685320945310" ID="ID_1090515306" MODIFIED="1685321041735" TEXT="und zwar wer zuf&#xe4;llig als Erster ankommt">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      reguliert &#252;ber ein konventionelles Lock, oder (besser) &#252;ber ein Atomic-Token mit CaS
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1685320957468" ID="ID_1385375288" MODIFIED="1685321071585" TEXT="dieser entnimmt einen Chunk an Management-Aufgaben"/>
<node CREATED="1685321072245" ID="ID_1939345018" MODIFIED="1685321083032" TEXT="entweder bis keine dringende Aufgabe mehr anliegt"/>
<node CREATED="1685321086555" ID="ID_515210134" MODIFIED="1685321101687" TEXT="oder bis eine der Aufgaben ihn l&#xe4;ngerfristig besch&#xe4;ftigt"/>
<node CREATED="1685321102626" ID="ID_1134627598" MODIFIED="1685321118300" TEXT="oder bis er ein internes Chunk-Limit aussch&#xf6;pft"/>
</node>
<node CREATED="1685321260632" ID="ID_1245306549" MODIFIED="1685321278840">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      zu den Steuerungs-Aufgaben geh&#246;rt <i>gleicherma&#223;en</i>
    </p>
  </body>
</html></richcontent>
<node CREATED="1685321279620" ID="ID_1359467423" MODIFIED="1685321303575" TEXT="Prio-1 : aus der Notification-Queue neue Activities entnehmen"/>
<node CREATED="1685321306206" ID="ID_109301359" MODIFIED="1685321359515" TEXT="Prio-2 : diese Activities in die Priority-Queue einstellen"/>
<node CREATED="1685321368627" ID="ID_335558978" MODIFIED="1685321394736" TEXT="Prio-3 : von der Spitze der Priority-Queue aktuell dringende Activities abnehmen"/>
</node>
<node CREATED="1685321415479" ID="ID_1947189271" MODIFIED="1685321424565" TEXT="die Notification-Queue ist der Eingang zum System">
<node CREATED="1685321426804" ID="ID_746352881" MODIFIED="1685321444736" TEXT="hier werden grunds&#xe4;tzlich neue Activities auf den Weg geschickt"/>
<node CREATED="1685321445292" ID="ID_79914114" MODIFIED="1685321462397" TEXT="aber auch Activities rekursiv re-priorisiert"/>
</node>
<node CREATED="1685321483574" ID="ID_1477143023" MODIFIED="1689001040267" TEXT="Epoch-based Activity Storage">
<node COLOR="#5b280f" CREATED="1685321607585" FOLDED="true" ID="ID_1565711693" MODIFIED="1687733705351">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Activities werden in/aus der Notification-Queue <b>verschoben</b>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_cancel"/>
<node COLOR="#435e98" CREATED="1685321654984" ID="ID_1291294754" MODIFIED="1687733565888" TEXT="geht das direkt?">
<icon BUILTIN="help"/>
<node CREATED="1687733555787" ID="ID_885750637" MODIFIED="1687733563308" TEXT="m&#xe4;h"/>
<node CREATED="1687733550692" ID="ID_700678765" MODIFIED="1687733593245" TEXT="im Prinzip ja">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      is ja eine linked List
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1685321679399" ID="ID_1492241069" MODIFIED="1685321797340" TEXT="Grund: lock-contention auf Memory-Management vermeiden">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Die Koordination von Memory-Management ist ein gef&#228;hrlicher Verz&#246;gerungs-Faktor (weil sie zu einem globalen flush der Cache-Hierarchie f&#252;hren kann).
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
<node CREATED="1685321805315" ID="ID_1461293102" MODIFIED="1685321813542" TEXT="die Laufzeit f&#xfc;r Notifications ist kurz"/>
<node CREATED="1685321814058" ID="ID_1167518732" MODIFIED="1685321822805" TEXT="aber Notifications k&#xf6;nnen aus allen Threads kommen"/>
<node CREATED="1685321823825" ID="ID_135604936" MODIFIED="1687466146764" TEXT="das Konsumieren der Notifications dagegen passiert mit der Proze&#xdf;steuerung"/>
<node CREATED="1685321848944" ID="ID_1429281514" MODIFIED="1685321863381" TEXT="und diese wird chunk-wise single-threaded ausgef&#xfc;hrt"/>
<node CREATED="1685321874220" ID="ID_1713195430" MODIFIED="1685321882281" TEXT="ab diesem Punkt sind Activities langlebig"/>
</node>
<node CREATED="1687733598318" ID="ID_294366771" MODIFIED="1687733640177" TEXT="das bringt gar nix; dann ist die contention im Allocator der lock-free-Queue">
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node CREATED="1687733658309" ID="ID_878694774" MODIFIED="1687733688708" TEXT="Activities werden aus Pools-pro-Thread gesch&#xf6;pft"/>
<node CREATED="1685321970159" ID="ID_1733911974" MODIFIED="1685321991606" TEXT="Activities m&#xfc;ssen bis zu ihrer Abarbeitung erhalten bleiben"/>
<node CREATED="1685322001687" ID="ID_1323039724" MODIFIED="1685322028521" TEXT="da sie sich benachrichtigen k&#xf6;nnen, brauchen sie stabile Adressen">
<node CREATED="1685322042500" ID="ID_150807049" MODIFIED="1685322061645" TEXT="Vorsicht: das widerspricht dem Verschieben durch die Eingangsqueue"/>
<node CREATED="1685322088414" ID="ID_1024187625" MODIFIED="1685322105261" TEXT="es sei denn, man verwendet zun&#xe4;cht symbolische Referenzen"/>
</node>
</node>
</node>
</node>
<node CREATED="1689817700558" ID="ID_570063703" MODIFIED="1689817707073" TEXT="Steuerung und Abstimmung">
<node CREATED="1689817983091" ID="ID_688833634" MODIFIED="1689818118592" TEXT="Engine-Konfiguration">
<linktarget COLOR="#7733ab" DESTINATION="ID_688833634" ENDARROW="Default" ENDINCLINATION="-549;-312;" ID="Arrow_ID_1006388919" SOURCE="ID_1102639659" STARTARROW="None" STARTINCLINATION="-313;359;"/>
<node CREATED="1689817727802" ID="ID_14875686" MODIFIED="1689817733893" TEXT="Parametrisierung f&#xfc;r Performance">
<node CREATED="1689817734885" ID="ID_1402786089" MODIFIED="1689817736452" TEXT="Scheduler"/>
<node CREATED="1689817737184" ID="ID_755795499" MODIFIED="1689817742692" TEXT="Memory-Managment">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1689817752528" ID="ID_742845816" MODIFIED="1689818106839" TEXT="BlockFlow braucht sehr spezifische Parameter">
<linktarget COLOR="#8b3852" DESTINATION="ID_742845816" ENDARROW="Default" ENDINCLINATION="705;44;" ID="Arrow_ID_581878368" SOURCE="ID_404036572" STARTARROW="None" STARTINCLINATION="-766;36;"/>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node CREATED="1694213073452" ID="ID_1745873731" MODIFIED="1694213077219" TEXT="WorkForce">
<node CREATED="1694213081031" ID="ID_242207206" MODIFIED="1694213116566" TEXT="IDLE_WAIT">
<node CREATED="1694213151562" ID="ID_1993794660" MODIFIED="1694213319234" TEXT="k&#xf6;nnte ggfs dynamisch werden">
<arrowlink COLOR="#a9b4c1" DESTINATION="ID_1559487253" ENDARROW="Default" ENDINCLINATION="797;92;" ID="Arrow_ID_1339552616" STARTARROW="None" STARTINCLINATION="698;-15;"/>
</node>
</node>
<node CREATED="1694213091549" ID="ID_1805305656" MODIFIED="1694213126092" TEXT="DISMISS_CYCLES"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1692106070635" ID="ID_774705986" MODIFIED="1692108424314" TEXT="Umgang mit Fehlern">
<linktarget COLOR="#6f6ea7" DESTINATION="ID_774705986" ENDARROW="Default" ENDINCLINATION="-559;-416;" ID="Arrow_ID_1863875541" SOURCE="ID_1827409996" STARTARROW="None" STARTINCLINATION="-199;23;"/>
<icon BUILTIN="hourglass"/>
<node CREATED="1692106078955" ID="ID_765119942" MODIFIED="1692106086249" TEXT="Arten von Fehlern">
<icon BUILTIN="info"/>
<node CREATED="1692106118368" ID="ID_1027109210" MODIFIED="1692106361481" TEXT="Render-Absicht nicht realisierbar">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Ein Render-Vorgang wurde in die Wege geleitet, aber beim Bereitstellen der Mittel zeigt sich, da&#223; das beabsichtigte Ziel grunds&#228;tzlich oder akzidenteller Weise gar nicht erreichbar ist
    </p>
  </body>
</html></richcontent>
<node CREATED="1692106983907" ID="ID_994742026" MODIFIED="1692106997629" TEXT="mu&#xdf; vor Beginn ausgeschlossen werden"/>
<node CREATED="1692106998753" ID="ID_111463742" MODIFIED="1692107009516" TEXT="Render-Vorgang darf &#xfc;berhaupt nicht erst beginnen"/>
</node>
<node CREATED="1692106135973" ID="ID_968435650" MODIFIED="1692106457557" TEXT="Vorraussetzungen nicht gew&#xe4;hrleistet">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Ein gruns&#228;tzlich bereits komplett vorgeplanter Render-Vorgang stellt wider erwarten fest, da&#223; eine Pr&#252;fung oder Annahme falsch war und eine Vorbedingung nicht erf&#252;llt werden kann bzw. ein Arbeitsmittel doch nicht verf&#252;gbar ist
    </p>
  </body>
</html></richcontent>
<node CREATED="1692107178938" ID="ID_1998523203" MODIFIED="1692107186427" TEXT="wird grunds&#xe4;tzlich nicht toleriert"/>
<node CREATED="1692107117410" ID="ID_1473230382" MODIFIED="1692107460794" TEXT="der komplette Play-Prozess wird sofort angehalten (pausiert, deaktiviert)">
<linktarget COLOR="#8a5264" DESTINATION="ID_1473230382" ENDARROW="Default" ENDINCLINATION="-245;10;" ID="Arrow_ID_97368068" SOURCE="ID_1085931202" STARTARROW="None" STARTINCLINATION="-108;-6;"/>
</node>
</node>
<node CREATED="1692106172152" ID="ID_1148722986" MODIFIED="1692106538248" TEXT="Timeout / Zeitrahmen &#xfc;berschritten">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Obwohl die Render-Aktivit&#228;ten komplett wie geplant ablaufen, ist zum aktuellen Zeitpunkt der vorgeplante Zeitrahmen verlassen, so da&#223; Termine absehbar nicht mehr gehalten werden k&#246;nnen
    </p>
  </body>
</html></richcontent>
<node CREATED="1692107188529" ID="ID_1469280145" MODIFIED="1692107195908" TEXT="soll m&#xf6;glichst fr&#xfc;hzeitig erkannt werden"/>
<node CREATED="1692107196496" ID="ID_1701852314" MODIFIED="1692107256427" TEXT="der aktuelle Aktivit&#xe4;ts-Term (i.d.R ein Frame) wird sofort aufgegeben"/>
<node CREATED="1692107264255" ID="ID_518882099" MODIFIED="1692107287047" TEXT="das jeweilige Ausgabe-Protokoll mu&#xdf; auf solche Ausf&#xe4;lle tolerant reagieren k&#xf6;nnen"/>
</node>
<node CREATED="1692106216738" ID="ID_440912262" MODIFIED="1692106644685" TEXT="Berechnung entgleist">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Ein unerwartetes Ereignis mitten in der Berechnung f&#252;hrt zum Kontrollverlust oder korumpiert die bereitgestellten Daten
    </p>
  </body>
</html></richcontent>
<node CREATED="1692107332414" ID="ID_833410414" MODIFIED="1692107341089" TEXT="wird grunds&#xe4;tzlich nicht toleriert"/>
<node CREATED="1692107342172" ID="ID_1085931202" MODIFIED="1692107476836" TEXT="wie verletzte Vorausetzungen zu behandeln">
<arrowlink COLOR="#8a5264" DESTINATION="ID_1473230382" ENDARROW="Default" ENDINCLINATION="-245;10;" ID="Arrow_ID_97368068" STARTARROW="None" STARTINCLINATION="-108;-6;"/>
</node>
<node CREATED="1692107362263" ID="ID_700158341" MODIFIED="1692107381676" TEXT="Play-Prozess bleibt stehen (deaktiviert)"/>
</node>
<node CREATED="1692106266636" ID="ID_1332585145" MODIFIED="1692107089603" TEXT="Degradierung">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Im Rahmen normaler Verarbeitung wird ein nebenbei beobachteter Schwellwert verletzt, so da&#223; das Ergebnis &#8212; wiewohl formal korrekt &#8212; nicht mehr den urspr&#252;nglichen Erwartungen gen&#252;gt; es handelt sich hierbei um ein Ereignis, welches bekannterma&#223;en mit einer gewissen Wahrscheinlichkeit eintreten kann, beispielsweise um die Verz&#246;gerung oder &#220;bertragungsst&#246;rung eines Remote-Feed, oder um eine limitierte Resource, die in geringerem Ma&#223; oder erst sp&#228;ter als erwartet zur Verf&#252;gung steht
    </p>
  </body>
</html></richcontent>
<node CREATED="1692107501527" ID="ID_387100608" MODIFIED="1692107514273" TEXT="hierzu m&#xfc;&#xdf;te ein dedizierter Mechanismus vorgesehen werden"/>
<node CREATED="1692107514944" ID="ID_494673907" MODIFIED="1692107529791" TEXT="es g&#xe4;be dann einen Schwellwert"/>
<node CREATED="1692107530547" ID="ID_548035075" MODIFIED="1692107537534" TEXT="und mehrere Reaktionsmuster">
<node CREATED="1692107596435" ID="ID_1952815240" MODIFIED="1692107645168" TEXT="beispielsweise warten (Hintergrundverarbeitung)"/>
<node CREATED="1692107609548" ID="ID_422624506" MODIFIED="1692107626194" TEXT="oder eine Weiche im Processing-Chain umstellen"/>
</node>
<node CREATED="1692107575413" ID="ID_1589653594" MODIFIED="1692107587532" TEXT="diese Regulierung liegt au&#xdf;erhalb des Schedulers">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node CREATED="1692108332315" ID="ID_1557327160" MODIFIED="1692108455901" TEXT="Problem des R&#xfc;ckwirkungs-Kanals">
<linktarget COLOR="#8d385a" DESTINATION="ID_1557327160" ENDARROW="Default" ENDINCLINATION="-382;-787;" ID="Arrow_ID_1536727958" SOURCE="ID_114242462" STARTARROW="None" STARTINCLINATION="-595;52;"/>
<node CREATED="1692108491595" ID="ID_1176302529" MODIFIED="1692108510668" TEXT="ein Signalisierungs-Interface mu&#xdf; weithin zug&#xe4;nglich sein"/>
<node CREATED="1692108511352" ID="ID_316055460" MODIFIED="1692108529978" TEXT="aber Ausnahme-Situationen sind an einen sehr spezifischen Kontext gebunden"/>
<node CREATED="1692108530641" ID="ID_991521612" MODIFIED="1692108564761" TEXT="die Stelle, die die Ausnahme erkennt, kennt i.d.R. diesen (=ihren eigenen) Kontext nicht"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1697583823705" ID="ID_942157229" MODIFIED="1697585649174" TEXT="#1343 Watchdog f&#xfc;r GroomingToken">
<arrowlink COLOR="#71457a" DESTINATION="ID_195997630" ENDARROW="Default" ENDINCLINATION="-1608;190;" ID="Arrow_ID_345281595" STARTARROW="None" STARTINCLINATION="-385;28;"/>
<icon BUILTIN="hourglass"/>
</node>
<node CREATED="1698933756831" ID="ID_430989241" MODIFIED="1698933760450" TEXT="operationale Grenzen">
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1698933663450" ID="ID_1467361134" MODIFIED="1698933921570" TEXT="Beschr&#xe4;nkung der Manifestation-ID ber&#xfc;cksichtigen">
<arrowlink COLOR="#a09098" DESTINATION="ID_1074827633" ENDARROW="Default" ENDINCLINATION="-127;552;" ID="Arrow_ID_176768608" STARTARROW="None" STARTINCLINATION="833;44;"/>
<icon BUILTIN="messagebox_warning"/>
<icon BUILTIN="hourglass"/>
</node>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1698530812711" HGAP="12" ID="ID_269636711" MODIFIED="1698541315516" TEXT="Scheduler-Emergency" VSHIFT="20">
<linktarget COLOR="#ff2f19" DESTINATION="ID_269636711" ENDARROW="Default" ENDINCLINATION="-577;-1106;" ID="Arrow_ID_1849442376" SOURCE="ID_355476974" STARTARROW="None" STARTINCLINATION="173;762;"/>
<linktarget COLOR="#b44670" DESTINATION="ID_269636711" ENDARROW="Default" ENDINCLINATION="204;-1082;" ID="Arrow_ID_1625681464" SOURCE="ID_748059800" STARTARROW="None" STARTINCLINATION="-1259;48;"/>
<icon BUILTIN="flag-pink"/>
<node BACKGROUND_COLOR="#c8c0b6" CREATED="1698530968938" ID="ID_187393453" MODIFIED="1698531103087" STYLE="bubble">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p style="text-align: center">
      Der Scheduler arbeitet nur in einem begrenzten Bereich
    </p>
    <p style="text-align: center">
      Dieser kann durch allt&#228;gliche Umst&#228;nde verletzt werden
    </p>
    <p style="text-align: center">
      Dann ist ein spezielle Notzustand zu aktivieren
    </p>
  </body>
</html></richcontent>
<edge COLOR="#930246"/>
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1698531755989" ID="ID_1664977737" MODIFIED="1698531803578" TEXT="Auspr&#xe4;gung des Notzustands">
<icon BUILTIN="help"/>
<node CREATED="1698531769111" ID="ID_935202336" MODIFIED="1698531782849" TEXT="auf Engine / Play-Prozess-Level">
<node CREATED="1698531881781" ID="ID_297033617" MODIFIED="1698531892074" TEXT="alle Play-Prozesse auf Pause stellen"/>
</node>
<node CREATED="1698531783445" ID="ID_1028561125" MODIFIED="1698531790816" TEXT="auf Scheduler-Level">
<node CREATED="1698531847100" ID="ID_67188486" MODIFIED="1698531854879" TEXT="keine de-Allokationen mehr"/>
<node CREATED="1698531857619" ID="ID_1423744776" MODIFIED="1698531863140" TEXT="alle Worker terminieren"/>
<node CREATED="1698531875525" ID="ID_1843097564" MODIFIED="1698531879431" TEXT="Tick nicht erneuern"/>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1698531826447" ID="ID_1031213188" MODIFIED="1698531840094" TEXT="Mechanismus zum Wiederanlauf schaffen">
<icon BUILTIN="hourglass"/>
<node CREATED="1698532052993" ID="ID_503858341" MODIFIED="1698532312084" TEXT="Problem: Berechnunsstand feststellen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...der gesamte Entwurf bisher beruht auf Ereignis-Verkn&#252;pfung und sieht keine generische Erfassung aller tats&#228;chlich berechneten Schritte vor. Wenn also die Scheduler-Emergency ausgel&#246;st wird, ist ein zuf&#228;llig verteiltes Muster an Einzel-Jobs abgeschlossen, und der Rest fehlt. Wollte man hier einen generischen Ansatz f&#252;r das Wiederanlaufen schaffen, so m&#252;&#223;te man alle Berechnungsprozesse unter eine einzige Abstraktion subsummieren k&#246;nnen. Das halte ich f&#252;r gef&#228;hrlich...
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1698532335022" ID="ID_849438801" MODIFIED="1698532356066" TEXT="Konsequenz &#x27f9; Player-Clients brauchen Recovery-Mechanismus">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1698532360192" ID="ID_357614396" MODIFIED="1698532377398" TEXT="gutm&#xfc;tiger Fall">
<icon BUILTIN="idea"/>
<node CREATED="1698532382547" ID="ID_219475859" MODIFIED="1698532412159" TEXT="man pausiert (Play-Prozesse und Scheduler)"/>
<node CREATED="1698532422552" ID="ID_1643252721" MODIFIED="1698532434002" TEXT="nachdem die aktuellen Worker terminiert sind..."/>
<node CREATED="1698532439904" ID="ID_56439604" MODIFIED="1698532451840" TEXT="...gibt es einen geeigneten Trigger..."/>
<node CREATED="1698532485911" ID="ID_1935981451" MODIFIED="1698532499118" TEXT="man entnimmt und aktualisiert die Zeitachse"/>
<node CREATED="1698532456848" ID="ID_559992837" MODIFIED="1698532465100" TEXT="und die WorkForce wird erneut hochgefahren"/>
<node CREATED="1698532511132" ID="ID_1488024271" MODIFIED="1698532528375" TEXT="(hoffentlich) l&#xe4;uft dann die Berechnung nahtlos weiter">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1698873918890" ID="ID_1232029805" MODIFIED="1699024145982" TEXT="Steuerung: fliegender Wechsel per Manifestation-ID">
<arrowlink COLOR="#d1011b" DESTINATION="ID_950780614" ENDARROW="Default" ENDINCLINATION="928;320;" ID="Arrow_ID_1675889372" STARTARROW="None" STARTINCLINATION="515;28;"/>
<linktarget COLOR="#943456" DESTINATION="ID_1232029805" ENDARROW="Default" ENDINCLINATION="-284;-16;" ID="Arrow_ID_173708448" SOURCE="ID_167266149" STARTARROW="None" STARTINCLINATION="155;234;"/>
<icon BUILTIN="flag-yellow"/>
</node>
<node CREATED="1697933502816" ID="ID_1155890066" MODIFIED="1697933560271" TEXT="Laststeuerung">
<linktarget COLOR="#7d55a6" DESTINATION="ID_1155890066" ENDARROW="Default" ENDINCLINATION="-78;310;" ID="Arrow_ID_1724375377" SOURCE="ID_338601496" STARTARROW="None" STARTINCLINATION="-372;-24;"/>
<node CREATED="1697933512163" ID="ID_394926401" MODIFIED="1697933535592" TEXT="Zeitgesteuertes Rendern">
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1697933639127" ID="ID_1583501788" MODIFIED="1697933814964" TEXT="(vorl&#xe4;ufig) einfache Scheduler-Steuerung">
<arrowlink COLOR="#ff4e63" DESTINATION="ID_872890784" ENDARROW="Default" ENDINCLINATION="-1829;161;" ID="Arrow_ID_1982313538" STARTARROW="None" STARTINCLINATION="-1150;-47;"/>
<icon BUILTIN="pencil"/>
</node>
</node>
<node CREATED="1693238644990" ID="ID_1196672113" MODIFIED="1693238729300" TEXT="Laststeuerung f&#xfc;r &#xbb;free-wheeling&#xab; / background render">
<arrowlink COLOR="#965d71" DESTINATION="ID_1960804622" ENDARROW="Default" ENDINCLINATION="286;89;" ID="Arrow_ID_494620026" STARTARROW="None" STARTINCLINATION="2087;110;"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1693840934074" ID="ID_571516538" MODIFIED="1693840995972" TEXT="Render-Engie Lebenszyklus: start / stop">
<linktarget COLOR="#d87cae" DESTINATION="ID_571516538" ENDARROW="Default" ENDINCLINATION="-569;36;" ID="Arrow_ID_490264910" SOURCE="ID_1011982391" STARTARROW="None" STARTINCLINATION="-116;14;"/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1693841031260" ID="ID_204159198" MODIFIED="1693841088122" TEXT="Komponenten / DI">
<arrowlink COLOR="#87584c" DESTINATION="ID_862845398" ENDARROW="Default" ENDINCLINATION="-1041;0;" ID="Arrow_ID_735728098" STARTARROW="None" STARTINCLINATION="-238;-282;"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1693841347210" ID="ID_187251325" MODIFIED="1693841387431" TEXT="mu&#xdf; dann WorkForce hochskalieren">
<arrowlink COLOR="#7e4d5e" DESTINATION="ID_951861985" ENDARROW="Default" ENDINCLINATION="-213;-26;" ID="Arrow_ID_301980510" STARTARROW="None" STARTINCLINATION="186;14;"/>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1680563509728" ID="ID_1883500842" MODIFIED="1684869810400" TEXT="Scheduler">
<icon BUILTIN="stop"/>
<node CREATED="1688438164169" ID="ID_1339299906" MODIFIED="1688438167334" TEXT="Funktionalit&#xe4;t">
<node CREATED="1680563512563" ID="ID_960191744" LINK="#ID_1218283238" MODIFIED="1699651252147" TEXT="Layer-2">
<node CREATED="1692566489639" ID="ID_1996598339" MODIFIED="1692566493766" TEXT="Steuer-Funktionen">
<node CREATED="1692566497553" ID="ID_1690265718" MODIFIED="1692566507183" TEXT="post &#x27f6; Dispatch"/>
<node CREATED="1699650768870" ID="ID_419238263" MODIFIED="1699650770973" TEXT="findWork"/>
</node>
<node CREATED="1699650773349" ID="ID_1043737602" MODIFIED="1699650792687" TEXT="Parallelit&#xe4;ts-Steuerung: Grooming-Token"/>
</node>
<node CREATED="1680563517255" ID="ID_1104189783" LINK="#ID_250843894" MODIFIED="1699651271277" TEXT="Layer-1">
<node CREATED="1692566313239" ID="ID_1808059473" MODIFIED="1692566321794" TEXT="zwei Queues">
<node CREATED="1692566323494" ID="ID_613099653" MODIFIED="1692566329257" TEXT="Dispatch (Eingang)"/>
<node CREATED="1692566330437" ID="ID_678232879" MODIFIED="1692566338568" TEXT="Priority (Zeitordnung)"/>
</node>
</node>
<node CREATED="1699650694688" ID="ID_1997806552" MODIFIED="1699650697603" TEXT="Integration">
<node CREATED="1692566362369" ID="ID_1816994355" LINK="#ID_975357334" MODIFIED="1699651179635" TEXT="Activity-Language">
<node CREATED="1692566369648" ID="ID_294018156" LINK="#ID_1334461256" MODIFIED="1699651119759" TEXT="Builder"/>
<node CREATED="1692566375567" ID="ID_10896035" LINK="#ID_1020998473" MODIFIED="1699651212129" TEXT="Execution-Context">
<arrowlink COLOR="#3e2835" DESTINATION="ID_1046477455" ENDARROW="Default" ENDINCLINATION="14;-37;" ID="Arrow_ID_1124233052" STARTARROW="None" STARTINCLINATION="-39;5;"/>
</node>
</node>
<node CREATED="1692566387373" ID="ID_1046477455" MODIFIED="1699651212129" TEXT="&#x3bb;-Eing&#xe4;nge">
<linktarget COLOR="#3e2835" DESTINATION="ID_1046477455" ENDARROW="Default" ENDINCLINATION="14;-37;" ID="Arrow_ID_1124233052" SOURCE="ID_10896035" STARTARROW="None" STARTINCLINATION="-39;5;"/>
<node CREATED="1692566398897" ID="ID_389964436" MODIFIED="1692566403127" TEXT="post"/>
<node CREATED="1692566404235" ID="ID_881438768" MODIFIED="1692566410798" TEXT="work"/>
<node CREATED="1692566411650" ID="ID_177539975" MODIFIED="1692566413482" TEXT="done"/>
<node CREATED="1692566414305" ID="ID_1178933917" MODIFIED="1692566416203" TEXT="tick"/>
</node>
<node CREATED="1699650823943" ID="ID_1545325852" MODIFIED="1699650831145" TEXT="high-level API">
<node CREATED="1699650846197" ID="ID_373839625" LINK="#ID_1863445864" MODIFIED="1699650986807" TEXT="ignite()"/>
<node CREATED="1699650854103" ID="ID_273451870" LINK="#ID_1714344789" MODIFIED="1699651003205" TEXT="getLoadIndicator()"/>
<node CREATED="1699650863841" ID="ID_1201923738" LINK="#ID_180161439" MODIFIED="1699651012517" TEXT="seedCalcStream()"/>
<node CREATED="1699650871488" ID="ID_1131231003" LINK="#ID_1142273023" MODIFIED="1699651025363" TEXT="defineSchedule(Job)"/>
<node CREATED="1699650897725" ID="ID_1904469767" LINK="#ID_492054934" MODIFIED="1699651037186" TEXT="getWork()"/>
</node>
</node>
</node>
<node CREATED="1688438172401" ID="ID_1302126473" MODIFIED="1688438176429" TEXT="Memory-Manager">
<node COLOR="#338800" CREATED="1693840789997" ID="ID_1478014419" MODIFIED="1693840887589" TEXT="BlockFlow (custom allocation scheme)">
<arrowlink COLOR="#578096" DESTINATION="ID_1810148055" ENDARROW="Default" ENDINCLINATION="-1144;102;" ID="Arrow_ID_1579502372" STARTARROW="None" STARTINCLINATION="549;39;"/>
<icon BUILTIN="forward"/>
</node>
</node>
<node CREATED="1688438177472" ID="ID_854658770" MODIFIED="1688438183516" TEXT="Weiterentwicklung">
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1688438184671" ID="ID_1971690047" MODIFIED="1688438194457" TEXT="Pr&#xfc;fen / messen">
<icon BUILTIN="bell"/>
<node COLOR="#435e98" CREATED="1688438197846" ID="ID_1531653683" MODIFIED="1689188696667" TEXT="findet f&#xfc;r POD tats&#xe4;chlich keine value-Initialisierung der Storage statt?">
<arrowlink COLOR="#535ad3" DESTINATION="ID_518652809" ENDARROW="Default" ENDINCLINATION="594;42;" ID="Arrow_ID_463215029" STARTARROW="None" STARTINCLINATION="897;-29;"/>
<icon BUILTIN="help"/>
<node COLOR="#338800" CREATED="1689188627004" HGAP="35" ID="ID_1696284581" MODIFIED="1689188685265" VSHIFT="8">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      tats&#228;chlich ... wenn die Datenfelder <i>base values </i>sind
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1689188529497" ID="ID_595569173" LINK="#ID_1796856440" MODIFIED="1689188565632" TEXT="verifiziert im Rahmen von ExtentFamily_test">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node CREATED="1698079023246" ID="ID_1404968698" MODIFIED="1698079027257" TEXT="Diskussion und Fragen">
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1698078896511" ID="ID_161990356" MODIFIED="1698079050460" TEXT="Fragen zum Scheduler Load-Control">
<arrowlink COLOR="#713d56" DESTINATION="ID_1532750540" ENDARROW="Default" ENDINCLINATION="-2344;353;" ID="Arrow_ID_1939324405" STARTARROW="None" STARTINCLINATION="1495;112;"/>
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1698535401066" ID="ID_1722365863" MODIFIED="1698535734795" TEXT="Batch-Prozessor">
<linktarget COLOR="#632988" DESTINATION="ID_1722365863" ENDARROW="Default" ENDINCLINATION="-523;-416;" ID="Arrow_ID_65227993" SOURCE="ID_582805818" STARTARROW="None" STARTINCLINATION="-598;65;"/>
<icon BUILTIN="stop"/>
<node CREATED="1698535499350" ID="ID_291544921" MODIFIED="1698535510293" TEXT="Komplementiert den Scheduler">
<icon BUILTIN="info"/>
<node CREATED="1698535547327" ID="ID_1921664973" MODIFIED="1698535562301" TEXT="deckt die Randbereiche im Betriebsmuster ab">
<node CREATED="1698535641170" ID="ID_623035212" MODIFIED="1698535714220" TEXT="soll als Plan-B f&#xfc;r Grenzf&#xe4;lle dienen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Beispiel: ein &#187;final Render&#171; bei dem pro Frame mehr als 30 Sekunden Rechenzeit notwendig sind; dies w&#252;rde die Auslegung des Schedulers sprengen
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1698535623469" ID="ID_1256815125" MODIFIED="1698535635467" TEXT="erm&#xf6;glicht Performance-Optimierung des Schedulers"/>
</node>
<node CREATED="1698535563497" ID="ID_973443699" MODIFIED="1698535576327" TEXT="verwendet die gleiche Ausf&#xfc;hrugs-Technologie wie der Scheduler">
<node CREATED="1698535579258" ID="ID_307388593" MODIFIED="1698535584281" TEXT="Activity-Language"/>
<node CREATED="1698535603810" ID="ID_884782032" MODIFIED="1698535611944" TEXT="Render-Jobs"/>
<node CREATED="1698535590417" ID="ID_813958811" MODIFIED="1698535593292" TEXT="WorkForce"/>
</node>
</node>
</node>
</node>
<node CREATED="1512923629577" ID="ID_617347424" MODIFIED="1557498707237" TEXT="Backend">
<node CREATED="1680565608115" ID="ID_1114884704" MODIFIED="1680565612050" TEXT="Hilfsmittel">
<node CREATED="1680565613038" ID="ID_1202060017" MODIFIED="1680565616857" TEXT="Content-Generator">
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1680565626147" ID="ID_460039330" MODIFIED="1697737436489" TEXT="Test-Content f&#xfc;r Playback">
<linktarget COLOR="#6f587c" DESTINATION="ID_460039330" ENDARROW="Default" ENDINCLINATION="-263;-171;" ID="Arrow_ID_48943827" SOURCE="ID_1305412516" STARTARROW="None" STARTINCLINATION="-695;79;"/>
<linktarget COLOR="#fec499" DESTINATION="ID_460039330" ENDARROW="Default" ENDINCLINATION="-632;68;" ID="Arrow_ID_1437229627" SOURCE="ID_988488968" STARTARROW="None" STARTINCLINATION="-241;31;"/>
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
<node CREATED="1693840103305" ID="ID_1712403454" MODIFIED="1693840108876" TEXT="Subsystem / Lebenszyklus">
<node CREATED="1693840123854" ID="ID_1137026251" MODIFIED="1693840139943" TEXT="EngineFacade">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1693840141571" ID="ID_675459196" MODIFIED="1693840151277" TEXT="EngineSubsyDescriptor">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1693840154226" ID="ID_1739899141" MODIFIED="1693840187853" TEXT="&#xd83d;&#xdc80; bisher nur ein Skelett"/>
<node CREATED="1693840205259" ID="ID_906117225" MODIFIED="1693840220900" TEXT="Services">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1693840225944" ID="ID_546523595" MODIFIED="1699651662038" TEXT="der Scheduler-Service">
<linktarget COLOR="#ea3575" DESTINATION="ID_546523595" ENDARROW="Default" ENDINCLINATION="-1668;-127;" ID="Arrow_ID_870877078" SOURCE="ID_1201899822" STARTARROW="None" STARTINCLINATION="-2501;197;"/>
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1693841227130" ID="ID_1957090536" MODIFIED="1693841404088" TEXT="WorkForce-Komponente bereitstellen">
<arrowlink COLOR="#3974b2" DESTINATION="ID_987966047" ENDARROW="Default" ENDINCLINATION="-1039;-52;" ID="Arrow_ID_7965989" STARTARROW="None" STARTINCLINATION="-1231;87;"/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1693841364032" ID="ID_951861985" MODIFIED="1693841380195" TEXT="regulieren/skalieren">
<linktarget COLOR="#7e4d5e" DESTINATION="ID_951861985" ENDARROW="Default" ENDINCLINATION="-213;-26;" ID="Arrow_ID_301980510" SOURCE="ID_187251325" STARTARROW="None" STARTINCLINATION="186;14;"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1697933441324" ID="ID_338601496" MODIFIED="1697933566854" TEXT="geh&#xf6;rt zur Scheduler-Laststeuerung">
<arrowlink COLOR="#7d55a6" DESTINATION="ID_1155890066" ENDARROW="Default" ENDINCLINATION="-78;310;" ID="Arrow_ID_1724375377" STARTARROW="None" STARTINCLINATION="-372;-24;"/>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1693840260723" FOLDED="true" ID="ID_1171496185" MODIFIED="1699654670267" TEXT="lumiera_backend_init?">
<icon BUILTIN="help"/>
<node CREATED="1693840334713" ID="ID_904946730" MODIFIED="1693840352179" TEXT="wird bisher nur von C-Tests benutzt">
<icon BUILTIN="smiley-oh"/>
</node>
<node CREATED="1693840384866" ID="ID_1054659625" MODIFIED="1693840397133" TEXT="&#xd6;kosystem von C-Services">
<icon BUILTIN="info"/>
<node CREATED="1693840404680" ID="ID_1171974069" MODIFIED="1693840406556" TEXT="mpool"/>
<node CREATED="1693840420342" ID="ID_1716830295" MODIFIED="1693840423786" TEXT="resourcecollector"/>
<node CREATED="1693840438347" ID="ID_1911524559" MODIFIED="1693840446279" TEXT="safeclib (f&#xfc;r C-Strings)"/>
<node CREATED="1693840450337" ID="ID_1275294302" MODIFIED="1693840452934" TEXT="threadpool">
<node CREATED="1693840578969" ID="ID_868605937" MODIFIED="1693840593587" TEXT="wird separat von threadpool-init.cpp aufgerufen"/>
<node CREATED="1693840693336" ID="ID_861831989" MODIFIED="1693840715651" TEXT="LifecycleHook: ON_GLOBAL_INIT,   &amp;initialise_Threadpool"/>
<node CREATED="1693840594607" ID="ID_58671517" MODIFIED="1693840623216" TEXT="&#x27f9; dies ist(war) der einzige tats&#xe4;chlich benutzte Servic">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1693840461057" ID="ID_932302464" MODIFIED="1693840466924" TEXT="filedescriptor-registry"/>
<node CREATED="1693840485318" ID="ID_1336910692" MODIFIED="1693840488755" TEXT="filehandle-cache"/>
<node CREATED="1693840510520" ID="ID_753991544" MODIFIED="1693840513131" TEXT="mmap-cache"/>
<node CREATED="1693840474319" ID="ID_472099840" MODIFIED="1693840477378" TEXT="config-system"/>
</node>
<node COLOR="#5b280f" CREATED="1699654627879" ID="ID_309006941" MODIFIED="1699654650865" TEXT="inzwischen tot gemacht ... werden absehbar in dieser Form nicht gebraucht">
<icon BUILTIN="closed"/>
</node>
</node>
</node>
<node CREATED="1693840242198" ID="ID_1011982391" MODIFIED="1693840985506" TEXT="hoch / runterfahren">
<arrowlink COLOR="#d87cae" DESTINATION="ID_571516538" ENDARROW="Default" ENDINCLINATION="-569;36;" ID="Arrow_ID_490264910" STARTARROW="None" STARTINCLINATION="-116;14;"/>
</node>
</node>
<node CREATED="1693840231223" ID="ID_765939651" MODIFIED="1693840234691" TEXT="Lebenszyklus"/>
</node>
</node>
<node CREATED="1681085780230" ID="ID_667166448" MODIFIED="1681085784377" TEXT="Render Toolkit">
<node CREATED="1681085789797" ID="ID_435519695" MODIFIED="1681085821901" TEXT="Abstraktionsschicht &#xfc;ber Low-Level-Funktionalit&#xe4;t"/>
<node CREATED="1681085863204" ID="ID_136936235" MODIFIED="1681085881132" TEXT="isoliert system-Level Services und externe Library-Erweiterungen"/>
</node>
</node>
<node CREATED="1512923647255" ID="ID_1800845122" MODIFIED="1557498707237" TEXT="Plug-in"/>
</node>
<node COLOR="#435e98" CREATED="1670599468591" HGAP="175" ID="ID_1144378342" MODIFIED="1670599561156" POSITION="left" TEXT="Methoden" VSHIFT="-32">
<edge COLOR="#6164d8" STYLE="linear"/>
<font NAME="SansSerif" SIZE="16"/>
<node CREATED="1670599621757" ID="ID_404731500" MODIFIED="1670599633186" TEXT="Numerik">
<font NAME="SansSerif" SIZE="13"/>
<node COLOR="#435e98" CREATED="1648160002022" ID="ID_1617011877" MODIFIED="1670599684006" TEXT="Newton-Raphson">
<linktarget COLOR="#758da1" DESTINATION="ID_1617011877" ENDARROW="Default" ENDINCLINATION="-1787;200;" ID="Arrow_ID_1389754977" SOURCE="ID_215061275" STARTARROW="None" STARTINCLINATION="-5051;242;"/>
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="info"/>
<node CREATED="1648160042105" ID="ID_681739014" MODIFIED="1648160050003" TEXT="finde Nullstelle einer Funktion"/>
<node CREATED="1648160051303" ID="ID_1883017382" MODIFIED="1648160167185" TEXT="x&#x2099; &#x2254; x&#x2099; - f(x&#x2099;)/f&apos;(x&#x2099;)"/>
<node CREATED="1648160182198" ID="ID_286076492" MODIFIED="1648160199375" TEXT="oft gen&#xfc;gt guter Startwert + ein/zwei Iterationen"/>
<node CREATED="1670599038025" ID="ID_1741473977" MODIFIED="1670599307446" TEXT="Konvergenz nur gut f&#xfc;r Startwert nahe an der L&#xf6;sung">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Die Methode steht und f&#228;llt damit, da&#223; die Tangente n&#228;her zur L&#246;sung zeigt, als der aktuelle (Start)Wert. Sonst kann die Iteration in weite Oszillationen m&#252;nden und sich ggfs sogar in einem neben-Minimum festbei&#223;en. Die Newton-Methode spielt daher ihr Potential einer senationell schnellen Konvergenz nur aus, wenn man <i>anderweitig schon eine sehr gute N&#228;herung als Startwert hat.</i>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#c9d1da" COLOR="#2d2198" CREATED="1439664045448" HGAP="240" ID="ID_21531707" MODIFIED="1557498707237" POSITION="left" TEXT="Info" VSHIFT="-500">
<edge COLOR="#b4a9e3"/>
<font NAME="SansSerif" SIZE="16"/>
<node CREATED="1439664217489" FOLDED="true" ID="ID_104059794" MODIFIED="1557498707237" TEXT="GTK-3">
<node CREATED="1439664230168" FOLDED="true" ID="ID_235548644" LINK="https://wiki.gnome.org/Projects/GTK%2B/Inspector" MODIFIED="1557498707237" TEXT="GTK+ Inspector">
<icon BUILTIN="idea"/>
<node CREATED="1439664318604" ID="ID_1327496126" MODIFIED="1557498707237" TEXT="keyboard shortcut">
<node CREATED="1439664330354" ID="ID_257893375" MODIFIED="1557498707237" TEXT="SHIFT-Ctrl I"/>
<node CREATED="1439664339353" ID="ID_559550607" MODIFIED="1557498707237" TEXT="aktivieren via dconf">
<node CREATED="1538693388521" ID="ID_1129767870" MODIFIED="1557498707237" TEXT="per Editor">
<node CREATED="1439664358287" ID="ID_1044303564" MODIFIED="1557498707237" TEXT="apt-get install dconf-editor"/>
<node CREATED="1439664574202" ID="ID_1254903463" MODIFIED="1557498707237" TEXT="org &gt; gtk &gt; settings &gt; debug"/>
</node>
<node CREATED="1538693397856" ID="ID_469176877" MODIFIED="1557498707237" TEXT="Kommandozeile">
<node CREATED="1538693413542" ID="ID_1265168543" MODIFIED="1557498707237" TEXT="gsettings set org.gtk.Settings.Debug enable-inspector-keybinding true"/>
</node>
</node>
</node>
<node CREATED="1538693418285" ID="ID_1301334145" MODIFIED="1557498707237" TEXT="direkt mit Applikation starten">
<node CREATED="1538693436099" ID="ID_1197910975" MODIFIED="1557498707237" TEXT="GTK_DEBUG=interactive target/lumiera"/>
</node>
<node CREATED="1538693451665" ID="ID_599439426" MODIFIED="1557498707237" TEXT="seit GTK+ 3.14 in der Standard-Distro">
<icon BUILTIN="info"/>
</node>
<node CREATED="1439664638857" ID="ID_1095180651" MODIFIED="1557498707237">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <i>saugeil</i>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1534634232557" HGAP="31" ID="ID_1467351006" MODIFIED="1557498707237" TEXT="Konzepte" VSHIFT="-22">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="info"/>
<node CREATED="1534635219848" FOLDED="true" ID="ID_1769333890" MODIFIED="1557498707237" TEXT="show / hide">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1534635236910" ID="ID_1635567005" MODIFIED="1557498707237" TEXT="das zentrale Konzept in GTK">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1534635271809" ID="ID_545450309" MODIFIED="1557498707237" TEXT="GTK == Event-Framework">
<node CREATED="1534635363429" ID="ID_1102578851" MODIFIED="1557498707237" TEXT="GTK interessiert sich nur indirekt f&#xfc;r den Lebenszyklus"/>
<node CREATED="1534635380794" ID="ID_121089426" MODIFIED="1557498707237" TEXT="...insofern Callbacks nicht in toten Speicher zeigen d&#xfc;rfen"/>
<node CREATED="1534635400479" ID="ID_1808051725" MODIFIED="1557498707237" TEXT="was aber sonst mit den &quot;Objekten&quot; passiert, ist GTK egal"/>
<node CREATED="1534635412070" ID="ID_1070513169" MODIFIED="1557498707237" TEXT="am Ende gehen alle Refcounts ohnehin auf Null"/>
<node CREATED="1534635426684" ID="ID_995597401" MODIFIED="1557498707237" TEXT="und wenn nicht, drof jeschissen"/>
</node>
<node CREATED="1534635260267" ID="ID_287252267" MODIFIED="1557498707237" TEXT="was verborgen ist, bekommt keine Events">
<icon BUILTIN="back"/>
</node>
<node CREATED="1534635309500" ID="ID_717136118" MODIFIED="1557498707237" TEXT="Container">
<node CREATED="1534635317179" ID="ID_921739364" MODIFIED="1557498707237" TEXT="verbergen rekursiv"/>
<node CREATED="1534635322938" ID="ID_1532459469" MODIFIED="1557498707237" TEXT="show_all zeigt rekursiv an"/>
</node>
</node>
<node CREATED="1534634259498" FOLDED="true" ID="ID_1900017952" MODIFIED="1561827466203" TEXT="&quot;Schlie&#xdf;en&quot;">
<linktarget COLOR="#6f7ab9" DESTINATION="ID_1900017952" ENDARROW="Default" ENDINCLINATION="-2264;0;" ID="Arrow_ID_1220603071" SOURCE="ID_146943890" STARTARROW="None" STARTINCLINATION="-6278;0;"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1534634292477" ID="ID_1867321008" MODIFIED="1534634310281">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      das Konzept <b>gibts nicht</b>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1534634334767" ID="ID_1445477599" MODIFIED="1534634373419">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      GTK-Widget: <b>hide</b>()
    </p>
  </body>
</html></richcontent>
<node CREATED="1534634379762" ID="ID_83493459" MODIFIED="1534634386116" TEXT="es wird unmapped">
<node CREATED="1534634403766" ID="ID_1515267212" MODIFIED="1534634426295" TEXT="keine Screen-Space-Zuordnung mehr"/>
<node CREATED="1534634426883" ID="ID_586184038" MODIFIED="1534634431582" TEXT="es wird nicht mehr gezeichnet"/>
</node>
<node CREATED="1534634386704" ID="ID_131269615" MODIFIED="1534634394739" TEXT="es wird aus dem Event-Processing herausgenommen"/>
</node>
<node CREATED="1534634453703" ID="ID_289385917" MODIFIED="1534634468974">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      GObject: <b>unref</b>()
    </p>
  </body>
</html></richcontent>
<node CREATED="1534634472325" ID="ID_180385322" MODIFIED="1534634490430" TEXT="Glib hat ein refcounting Memory-Management"/>
<node CREATED="1534634502817" ID="ID_1557422702" MODIFIED="1534634512131" TEXT="das betrifft nur das Memory-Managment"/>
<node CREATED="1534634512864" ID="ID_952501435" MODIFIED="1534634524762" TEXT="jeder Client ist verantwortlich, seine Referenzen freizugeben"/>
</node>
<node CREATED="1534635126901" ID="ID_868113400" MODIFIED="1534635131976" TEXT="gtk_widget_destroy">
<node CREATED="1534635139155" ID="ID_1958818389" MODIFIED="1534635155125" TEXT="l&#xf6;st ein DESTROY-Signal aus"/>
<node CREATED="1534635156137" ID="ID_1010364630" MODIFIED="1534635215323" TEXT="macht sonst nur Refcount-Zeugs"/>
<node CREATED="1534635167295" ID="ID_418523562" MODIFIED="1576282357959" TEXT="keinerlei Auswirkung auf die Sichtbarkeit">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...in der Praxis aber entsteht indirekt eine Auswirkung,
    </p>
    <p>
      insofern Container auf das DESTROY-Signal ihrer Kinder reagieren
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node CREATED="1535629105141" ID="ID_387236763" MODIFIED="1557498707238" TEXT="Layout">
<font NAME="SansSerif" SIZE="14"/>
<node CREATED="1535629144783" ID="ID_603397185" MODIFIED="1557498707238" TEXT="Phasen">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1535629172787" ID="ID_1666976097" MODIFIED="1557498707238" TEXT="mapped">
<icon BUILTIN="help"/>
<node CREATED="1537577522482" ID="ID_629476344" MODIFIED="1557498707238" TEXT="einem GDK-Fenster mit Koordinaten zugeordnet"/>
<node CREATED="1540645314073" ID="ID_1765305895" MODIFIED="1557498707238" TEXT="ausgel&#xf6;st durch show/hide"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1535629169164" ID="ID_1301809885" MODIFIED="1557498707238" TEXT="realized">
<icon BUILTIN="help"/>
<node CREATED="1537577511892" ID="ID_194223971" MODIFIED="1557498707238" TEXT="wird sichtbar"/>
<node CREATED="1540645329431" ID="ID_919909299" MODIFIED="1557498707238" TEXT="initial bei Fenster-Allokation; sp&#xe4;ter als Folge von mapped"/>
</node>
</node>
<node CREATED="1535629240762" FOLDED="true" ID="ID_860094095" MODIFIED="1537576497171" STYLE="fork" TEXT="Platzierung">
<edge COLOR="#b4a9e3" STYLE="bezier" WIDTH="thin"/>
<linktarget COLOR="#6277b2" DESTINATION="ID_860094095" ENDARROW="Default" ENDINCLINATION="-1778;-100;" ID="Arrow_ID_761942436" SOURCE="ID_228360739" STARTARROW="None" STARTINCLINATION="-6486;0;"/>
<font NAME="SansSerif" SIZE="12"/>
<node CREATED="1535629255856" ID="ID_66989854" MODIFIED="1535630246025" TEXT="size_request">
<node CREATED="1535629316512" ID="ID_82343540" MODIFIED="1535630246025" TEXT="minimale oder nat&#xfc;rliche Gr&#xf6;&#xdf;e"/>
<node CREATED="1535629328246" ID="ID_1797361390" MODIFIED="1535630246025" TEXT="Widget wird niemals kleiner gemacht"/>
<node CREATED="1540647597892" ID="ID_699204853" MODIFIED="1540647691526" TEXT="Widget::queue_resize">
<arrowlink DESTINATION="ID_1615887419" ENDARROW="Default" ENDINCLINATION="401;-36;" ID="Arrow_ID_1278323856" STARTARROW="None" STARTINCLINATION="1411;0;"/>
</node>
</node>
<node CREATED="1542308892655" ID="ID_1949284500" MODIFIED="1542308896395" TEXT="Allocation">
<node CREATED="1542308900630" ID="ID_1615499339" MODIFIED="1560693186079" TEXT="Container ruft gtk_widget_size_allocate()">
<arrowlink COLOR="#7573ab" DESTINATION="ID_1103556230" ENDARROW="Default" ENDINCLINATION="763;-59;" ID="Arrow_ID_1309280117" STARTARROW="None" STARTINCLINATION="537;121;"/>
<icon BUILTIN="full-1"/>
<node CREATED="1542309002344" ID="ID_779294890" MODIFIED="1542309017723" TEXT="maximal zugewiesener Platz f&#xfc;r dieses Widget"/>
<node CREATED="1542309018222" ID="ID_1596717915" MODIFIED="1542309025592" TEXT="einschlie&#xdf;lich aller Dekoraktion und Margins"/>
<node CREATED="1542309064955" ID="ID_1797123207" MODIFIED="1542309079391" TEXT="dieser Ausgangs-Wert wird nicht gespeichert">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1542308951807" ID="ID_1662312599" MODIFIED="1542308985044">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Widget berechnet <i>adjusted allocation</i>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="full-2"/>
<node CREATED="1542308982045" ID="ID_657933396" MODIFIED="1542308982045" TEXT="gtk_widget_get_allocation"/>
<node CREATED="1542309030741" ID="ID_1042993819" MODIFIED="1576282357959" TEXT="tats&#xe4;chlich f&#xfc;r das Widget selber verf&#xfc;gbarer Platz">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...also <i>abz&#252;glich</i>&#160;Dekoration und Margin
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1542308990570" ID="ID_1371068296" MODIFIED="1542309000371" TEXT="stets komplett in der zugewiesenen Allocation enthalten"/>
</node>
</node>
<node CREATED="1535629360298" ID="ID_872009465" MODIFIED="1535630246025" TEXT="Widget::property_expand()">
<node CREATED="1535629434440" ID="ID_384811116" MODIFIED="1535630246025" TEXT="bool">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
<node CREATED="1535629385583" ID="ID_147722143" MODIFIED="1576282357958" TEXT="nur wenn es zus&#xe4;tzlichen Platz gibt">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...was der Fall sein kann in einer Box oder einem Grid,
    </p>
    <p>
      sofern das Widget mit entsprechendem Modus eingef&#252;gt wurde
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1535629439847" ID="ID_1925784750" MODIFIED="1535630246025" TEXT="Widget dehnt sich aus, um verf&#xfc;gbaren Platz einzunehmen">
<icon BUILTIN="info"/>
</node>
<node CREATED="1535630122372" ID="ID_1833778868" MODIFIED="1535630246025" TEXT="hat keinen Getter / Setter"/>
<node CREATED="1535629472923" ID="ID_927038398" MODIFIED="1535630246025" TEXT="es gibt vexpand und hexpand">
<node CREATED="1535630137082" ID="ID_793513557" MODIFIED="1535630246025" TEXT="nur f&#xfc;r eine Richtung"/>
<node CREATED="1535630147960" ID="ID_701726630" MODIFIED="1535630246025" TEXT="diese haben Getter/Setter"/>
</node>
</node>
</node>
<node CREATED="1619106728852" FOLDED="true" ID="ID_206049495" MODIFIED="1619106836504" TEXT="Thema: Koordinaten">
<linktarget COLOR="#6084b9" DESTINATION="ID_206049495" ENDARROW="Default" ENDINCLINATION="-1698;230;" ID="Arrow_ID_1554039358" SOURCE="ID_1862152665" STARTARROW="None" STARTINCLINATION="-5611;254;"/>
<node CREATED="1619106846804" ID="ID_1212718074" MODIFIED="1619106850872" TEXT="Frameworks">
<node CREATED="1619106864558" ID="ID_939967817" MODIFIED="1619106876785" TEXT="Xlib bzw Wayland"/>
<node CREATED="1619106851723" ID="ID_255903990" MODIFIED="1619106862766" TEXT="GDK (low-level-screen handling)"/>
<node CREATED="1619106880439" ID="ID_1910905372" MODIFIED="1619106889322" TEXT="Cairo (Vektor-Grafik)"/>
<node CREATED="1619106890429" ID="ID_248432300" MODIFIED="1619106903137" TEXT="Gnome Application-Framwork"/>
</node>
<node CREATED="1619106913492" ID="ID_1464583836" MODIFIED="1619106920910" TEXT="wo spielen Koordinaten eine Rolle?">
<node CREATED="1619106921874" ID="ID_1221635906" MODIFIED="1619106926267" TEXT="Ma&#xdf;e in CSS"/>
<node CREATED="1619106926922" ID="ID_405918613" MODIFIED="1619106940067" TEXT="direkte Layout-Properties in GTK-Widgets"/>
<node CREATED="1619106941065" ID="ID_1727127052" MODIFIED="1619106952490" TEXT="das GTK Canvas-Control (Gtk::Layout)"/>
<node CREATED="1619106954997" ID="ID_1964121895" MODIFIED="1619106961377" TEXT="Cairo drawing-context"/>
<node CREATED="1619106962340" ID="ID_453051214" MODIFIED="1619106972463" TEXT="der Gnome-Canvas"/>
</node>
<node CREATED="1619107449907" ID="ID_1457702957" MODIFIED="1619107458558" TEXT="Doku / Infos / Tutorials">
<node CREATED="1619107459690" ID="ID_1000844260" LINK="https://www.linuxtopia.org/online_books/gui_toolkit_guides/gtk+_gnome_application_development/z174_1.html" MODIFIED="1619107497044" TEXT="Linuxtopia: Coordinates (Kontext: Gnome-canvas)"/>
</node>
</node>
</node>
<node CREATED="1537575934664" ID="ID_849901633" MODIFIED="1557498707238" TEXT="Style">
<font NAME="SansSerif" SIZE="13"/>
<node CREATED="1538706283719" FOLDED="true" ID="ID_311272365" MODIFIED="1557498707238" TEXT="CSS">
<icon BUILTIN="info"/>
<node CREATED="1561742970171" ID="ID_1527227622" LINK="https://developer.gnome.org/gtk3/stable/chap-css-overview.html" MODIFIED="1561742986234" TEXT="Overview: CSS in Gtk">
<icon BUILTIN="info"/>
</node>
<node CREATED="1538706287605" ID="ID_811190435" LINK="https://developer.gnome.org/gtk3/stable/chap-css-properties.html" MODIFIED="1557498707238" TEXT="unterst&#xfc;tzte properties">
<icon BUILTIN="info"/>
<node CREATED="1563035652060" ID="ID_1461845755" MODIFIED="1563035657162" TEXT="State / Pseudo-Klassen">
<node CREATED="1563035659642" ID="ID_1776634695" MODIFIED="1563035663793" TEXT=":backdrop">
<node CREATED="1563035576188" ID="ID_422408673" LINK="https://developer.gnome.org/gtk3/stable/gtk3-Standard-Enumerations.html#GtkStateFlags" MODIFIED="1576282357958" TEXT="GtkStateFlags::GTK_STATE_FLAG_BACKDROP">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      &quot;Widget is in a background toplevel window&quot;
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#8aafdb" DESTINATION="ID_422408673" ENDARROW="Default" ENDINCLINATION="-430;209;" ID="Arrow_ID_384398411" SOURCE="ID_1747578312" STARTARROW="None" STARTINCLINATION="-1700;-117;"/>
</node>
</node>
</node>
</node>
<node CREATED="1679146582785" ID="ID_62393759" LINK="https://docs.gtk.org/gtk3/css-overview.html#colors" MODIFIED="1679146753812" TEXT="Farben">
<icon BUILTIN="info"/>
<node CREATED="1679146772278" ID="ID_93147070" MODIFIED="1679146786718" TEXT="regul&#xe4;re CSS-Angaben">
<node CREATED="1679146852459" ID="ID_893843079" MODIFIED="1679146855190" TEXT="#hex"/>
<node CREATED="1679146856131" ID="ID_661866874" MODIFIED="1679146858935" TEXT="rgb()">
<node CREATED="1679146881816" ID="ID_590080260" MODIFIED="1679146905864" TEXT="Zahl (0..255)"/>
<node CREATED="1679146906452" ID="ID_1648565700" MODIFIED="1679146919750" TEXT="Prozentzahl 0%..100%"/>
</node>
<node CREATED="1679146859528" ID="ID_1780347020" MODIFIED="1679146862390" TEXT="rgba()">
<node CREATED="1679146920978" ID="ID_593670937" MODIFIED="1679146931669" TEXT="zus&#xe4;tzlich Alpha 0.0 .. 1.0"/>
</node>
<node CREATED="1679146945760" ID="ID_1337294797" MODIFIED="1679146952186" TEXT="standard color name">
<node CREATED="1679147071758" ID="ID_1977091316" LINK="https://www.w3schools.com/colors/colors_names.asp" MODIFIED="1679147080648" TEXT="die bekannten HTML-Farben"/>
<node CREATED="1679147109899" ID="ID_434533083" LINK="https://www.w3.org/TR/css-color-3/#svg-color" MODIFIED="1679147119718" TEXT="formale Spec(w3c)"/>
</node>
<node CREATED="1679146863199" ID="ID_658577497" MODIFIED="1679146870941" TEXT="currentColor"/>
<node CREATED="1679146871649" ID="ID_224240207" MODIFIED="1679146873653" TEXT="transparent"/>
</node>
<node CREATED="1679147135733" FOLDED="true" ID="ID_254968681" MODIFIED="1679147146400" TEXT="GTK-extended-spec">
<node CREATED="1679147159139" ID="ID_1704222116" MODIFIED="1679147162102" TEXT="color expression">
<node CREATED="1679147200986" ID="ID_85459751" MODIFIED="1679147206624" TEXT="lighter(color)"/>
<node CREATED="1679147207259" ID="ID_1837545759" MODIFIED="1679147210199" TEXT="darker(color)"/>
<node CREATED="1679147211053" ID="ID_1973625685" MODIFIED="1679147234195" TEXT="shade(color, degree)">
<node CREATED="1679147235421" ID="ID_138843695" MODIFIED="1679147265504" TEXT="degree &#x2254;0.0 &#x27f9; black"/>
<node CREATED="1679147235421" ID="ID_1081933251" MODIFIED="1679147278062" TEXT="degree &#x2254;1.0 &#x27f9; color"/>
<node CREATED="1679147235421" ID="ID_1278348110" MODIFIED="1679147285213" TEXT="degree &#x2254;2.0 &#x27f9; white"/>
</node>
<node CREATED="1679147297672" ID="ID_801922011" MODIFIED="1679147332825" TEXT="alpha(color, opacity)">
<node CREATED="1679147235421" ID="ID_1252329160" MODIFIED="1679147352292" TEXT="opacity &#x2254;0.0 &#x27f9; transparent"/>
<node CREATED="1679147235421" ID="ID_245757625" MODIFIED="1679147364543" TEXT="opacity &#x2254;1.0 &#x27f9; opaque"/>
</node>
<node CREATED="1679147374558" ID="ID_620059171" MODIFIED="1679147385248" TEXT="mix(color1, color2, fade)"/>
</node>
<node CREATED="1679147153411" ID="ID_1245707107" MODIFIED="1679147392492" TEXT="symbolic color">
<node CREATED="1679147419260" ID="ID_431721011" MODIFIED="1679147420560" TEXT="@define-color &#x2329;name&#x232a; &#x2329;color&#x232a;"/>
<node CREATED="1679147423037" ID="ID_1801725279" MODIFIED="1679147432737" TEXT="use: @colorname"/>
<node CREATED="1679147401874" ID="ID_609120791" MODIFIED="1679147442412" TEXT="defined in the theme">
<node CREATED="1679147447011" ID="ID_1878670506" LINK="https://gitlab.gnome.org/GNOME/gtk/-/tree/d930c4a4d12e730a2d1711f865754315006506ff/gtk/theme/Adwaita" MODIFIED="1679147554401" TEXT="in Adwaitha">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Adwaita ist leider direkt in GTK integriert und ist ein aufgebl&#228;hter Wust an SCSS-generierten Regeln, die dann aus &#187;performance-Gr&#252;nden&#171; (d.h. aus Dummheit und Arroganz) bin&#228;r compiliert und eingebettet werden m&#252;ssen.
    </p>
  </body>
</html></richcontent>
<node CREATED="1679147881250" ID="ID_365618706" MODIFIED="1679148018580" TEXT="definitionen sichtbar via _colors-public.scss"/>
<node CREATED="1679147918675" ID="ID_10101800" MODIFIED="1679147928687" TEXT="Farbwerte definiert in colors.scss">
<node CREATED="1679147938898" ID="ID_1015338145" MODIFIED="1679147948757" TEXT="Achtung: Switch light/dark"/>
</node>
<node CREATED="1679147982325" ID="ID_943402704" MODIFIED="1679148013300" TEXT="eingebunden via gtk-contained.scss"/>
</node>
<node CREATED="1679147578310" ID="ID_602384838" LINK="https://stackoverflow.com/a/64613523" MODIFIED="1679147798973">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      gel&#228;ufiges<br />Farbschema
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Es war und ist immer noch &#252;blich, da&#223; jedes <i>Theme</i>&#160;einen Satz von Basis-Farben definiert. Auch Adwaita macht das aktuell so (wenngleich es den Gnome-Leuten l&#228;stig ist, und sie immer wieder darauf hinweisen, da&#223; das alles &quot;difficult&quot; und &quot;challenging&quot; ist. Sprich, man will raus aus der Nummer, aber der Widerstand der Nutzer ist zu stark)
    </p>
  </body>
</html></richcontent>
<node CREATED="1679148565999" ID="ID_303603967" MODIFIED="1679148582976" TEXT="Layout">
<node CREATED="1679148586102" ID="ID_745102737" MODIFIED="1679148602308" TEXT="theme_fg_color">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      widget text/foreground color
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1679148586103" ID="ID_408960995" MODIFIED="1679148614603" TEXT="theme_text_color">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      text color for entries, views and content in general
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1679148586103" ID="ID_555799552" MODIFIED="1679148628299" TEXT="theme_bg_color">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      widget base background color
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1679148586104" ID="ID_1295740691" MODIFIED="1679148642821" TEXT="theme_base_color">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      text widgets and the like base background color
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1679148586104" ID="ID_1732797987" MODIFIED="1679148655331" TEXT="theme_selected_bg_color">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      base background color of selections
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1679148586105" ID="ID_1199469015" MODIFIED="1679148665685" TEXT="theme_selected_fg_color">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      text/foreground color of selections
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1679148586106" ID="ID_999836079" MODIFIED="1679148677841" TEXT="insensitive_bg_color">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      base background color of insensitive widgets
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1679148586106" ID="ID_416797432" MODIFIED="1679148686769" TEXT="insensitive_fg_color">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      text foreground color of insensitive widgets
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1679148586107" ID="ID_1094511289" MODIFIED="1679148704615" TEXT="insensitive_base_color">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      insensitive text widgets and the like base background color
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1679148586107" ID="ID_705496778" MODIFIED="1679148713000" TEXT="theme_unfocused_fg_color">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      widget text/foreground color on backdrop windows
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1679148586108" ID="ID_1355753292" MODIFIED="1679148722532" TEXT="theme_unfocused_text_color">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      text color for entries, views and content in general on backdrop windows
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1679148586108" ID="ID_461157644" MODIFIED="1679148732329" TEXT="theme_unfocused_bg_color">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      widget base background color on backdrop windows
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1679148586109" ID="ID_49882093" MODIFIED="1679148742267" TEXT="theme_unfocused_base_color">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      text widgets and the like base background color on backdrop windows
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1679148586110" ID="ID_349036672" MODIFIED="1679148751759" TEXT="theme_unfocused_selected_bg_color">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      base background color of selections on backdrop windows
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1679148586110" ID="ID_626976605" MODIFIED="1679148764268" TEXT="theme_unfocused_selected_fg_color">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      text/foreground color of selections on backdrop windows
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1679148586111" ID="ID_537990754" MODIFIED="1679148776699" TEXT="unfocused_insensitive_color">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      insensitive color on backdrop windows
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1679148586111" ID="ID_1700746299" MODIFIED="1679148785292" TEXT="borders">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      widgets main borders color
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1679148586111" ID="ID_1698242897" MODIFIED="1679148794104" TEXT="unfocused_borders">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      widgets main borders color on backdrop windows
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1679148569038" ID="ID_1622259143" MODIFIED="1679148580505" TEXT="Status">
<node CREATED="1679148586111" ID="ID_1392247646" MODIFIED="1679148586111" TEXT="warning_color"/>
<node CREATED="1679148586111" ID="ID_1621214244" MODIFIED="1679148586111" TEXT="error_color"/>
<node CREATED="1679148586111" ID="ID_619365964" MODIFIED="1679148586111" TEXT="success_color"/>
</node>
<node CREATED="1679148572758" ID="ID_1709733815" MODIFIED="1679148850295" TEXT="Window">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      these colors are exported for the window manager and shouldn't be used in applications,
    </p>
    <p>
      read if you used those and something break with a version upgrade you're on your own...
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="stop-sign"/>
<node CREATED="1679148881944" MODIFIED="1679148881944" TEXT="wm_title"/>
<node CREATED="1679148881945" MODIFIED="1679148881945" TEXT="wm_unfocused_title"/>
<node CREATED="1679148881945" MODIFIED="1679148881945" TEXT="wm_highlight"/>
<node CREATED="1679148881945" MODIFIED="1679148881945" TEXT="wm_borders_edge"/>
<node CREATED="1679148881946" MODIFIED="1679148881946" TEXT="wm_bg_a"/>
<node CREATED="1679148881946" MODIFIED="1679148881946" TEXT="wm_bg_b"/>
<node CREATED="1679148881946" MODIFIED="1679148881946" TEXT="wm_shadow"/>
<node CREATED="1679148881946" MODIFIED="1679148881946" TEXT="wm_border"/>
<node CREATED="1679148881947" MODIFIED="1679148881947" TEXT="wm_button_hover_color_a"/>
<node CREATED="1679148881947" MODIFIED="1679148881947" TEXT="wm_button_hover_color_b"/>
<node CREATED="1679148881947" MODIFIED="1679148881947" TEXT="wm_button_active_color_a"/>
<node CREATED="1679148881948" MODIFIED="1679148881948" TEXT="wm_button_active_color_b"/>
<node CREATED="1679148881948" MODIFIED="1679148881948" TEXT="wm_button_active_color_c"/>
</node>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1563557082887" FOLDED="true" ID="ID_1375283498" MODIFIED="1563557089708" TEXT="CSS node Namen">
<node CREATED="1563557091053" ID="ID_1694938996" MODIFIED="1563557119660" TEXT="werden explizit in der XXX_class_init()-Funktion gesetzt"/>
<node CREATED="1563557121848" ID="ID_920321676" MODIFIED="1563557129943" TEXT="sind in der API-Dok dokumentiert">
<node CREATED="1563557131952" ID="ID_286084554" MODIFIED="1563557140589" TEXT="manche Widgets konstruieren einen ganzen Baum"/>
</node>
<node CREATED="1563557146126" ID="ID_541393362" MODIFIED="1563557156289" TEXT="Fallback: Name des GType">
<node CREATED="1563557158442" ID="ID_1858830455" MODIFIED="1563557164659" TEXT="Unterschiedlich f&#xfc;r C und C++"/>
<node CREATED="1563557179170" ID="ID_245445009" MODIFIED="1563557183623" TEXT="Gtk::Frame::get_type()">
<node CREATED="1563557202959" ID="ID_171572665" MODIFIED="1563557207820" TEXT="liefert gtkmm__GtkFrame"/>
</node>
<node CREATED="1563557217956" ID="ID_1703813951" MODIFIED="1563557221296" TEXT="gtk_frame_get_type()">
<node CREATED="1563557232764" ID="ID_1095076986" MODIFIED="1563557233612" TEXT="GtkFrame"/>
</node>
<node CREATED="1563557235763" ID="ID_149384360" MODIFIED="1563557243823" TEXT="korrekt ist aber &quot;frame&quot;">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1563557245954" ID="ID_1216219394" MODIFIED="1576282357957" TEXT="CSS Node-Namen will man normalerweise nicht &#xe4;ndern">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Warum?
    </p>
    <p>
      Weil man normalerweise das bestehende Styling vom System-Theme abgreifen m&#246;chte,
    </p>
    <p>
      und das baut auf den bekannten Node-Namen auf, wie z.B &quot;fame&quot;, &quot;box&quot;, &quot;notebook&quot;
    </p>
    <p>
      
    </p>
    <p>
      Und das erkl&#228;rt wohl auch, warum man diesen CSS-Node-Namen nur direkt in C &#228;ndern kann,
    </p>
    <p>
      indem man eine eigene XXX_class_init() - Funktion schreibt
    </p>
  </body>
</html></richcontent>
<arrowlink DESTINATION="ID_1245820640" ENDARROW="Default" ENDINCLINATION="-18;-274;" ID="Arrow_ID_1242464259" STARTARROW="None" STARTINCLINATION="309;8;"/>
<icon BUILTIN="stop-sign"/>
</node>
<node CREATED="1563557421449" ID="ID_1549555929" MODIFIED="1576282357957" TEXT="es gibt (wohl) kein API, um diesen Namen zu erhalten">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      in den F&#228;llen, die ich mir angeschaut habe, steht dieser String hart codiert in der XXXX_class_init()-Funktion
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1563631851881" FOLDED="true" ID="ID_1732615721" MODIFIED="1563631854580" TEXT="Erfahrungen">
<node CREATED="1563631855781" ID="ID_1599365177" MODIFIED="1563631858795" TEXT="Frames">
<node CREATED="1563631859864" ID="ID_1388716276" MODIFIED="1576282357956" TEXT="werden nach innen gezeichnet">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      d.h. die angegebenen Abmessungen entsprechen der bounding box
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1563631918721" ID="ID_545245141" MODIFIED="1576282357956" TEXT="partielle / Gesamt-Definitionen sind jeweils komplett incl Farbe">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      es geht also nicht, da&#223; man sagt
    </p>
    <p>
      border: solid yellow;
    </p>
    <p>
      border-left: 2px
    </p>
    <p>
      
    </p>
    <p>
      in diesem Falle w&#252;rde die linke Border mit der geerben Farbe gezeichnet, und nicht gelb
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1564926426614" ID="ID_240623877" MODIFIED="1564926740793" TEXT="box-shadow">
<linktarget COLOR="#405ecf" DESTINATION="ID_240623877" ENDARROW="Default" ENDINCLINATION="-838;0;" ID="Arrow_ID_1124667032" SOURCE="ID_1488276378" STARTARROW="None" STARTINCLINATION="-522;0;"/>
<node CREATED="1564926431517" ID="ID_1620722736" LINK="https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Background_and_Borders/Box-shadow_generator" MODIFIED="1564926458324" TEXT="interaktives box-shadow-Tool bei Mozilla">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1564926468217" ID="ID_1021621147" MODIFIED="1564926476805" TEXT="ein CSS3-Effekt"/>
<node CREATED="1564926773320" ID="ID_1461042373" LINK="https://developer.mozilla.org/en-US/docs/Web/CSS/box-shadow" MODIFIED="1576282357955" TEXT="CSS-Syntax">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      &lt;offX&gt; &lt;offY&gt; [&lt;blur&gt; [&lt;spread&gt;]] &lt;colour&gt;
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1564926477387" ID="ID_1307917529" MODIFIED="1564926492175" TEXT="wird zus&#xe4;tzlich zum Element in Z-Order gerendert">
<node CREATED="1564926496242" ID="ID_1998030818" MODIFIED="1564929104275" TEXT="backdrop: below and outside background frame"/>
<node CREATED="1564926502241" ID="ID_1213868388" MODIFIED="1564929115263" TEXT="inset: on top of backround and inside the border"/>
<node CREATED="1564929121202" ID="ID_321264842" MODIFIED="1564932279130" TEXT="Note">
<linktarget COLOR="#9a85e1" DESTINATION="ID_321264842" ENDARROW="Default" ENDINCLINATION="-618;56;" ID="Arrow_ID_852851809" SOURCE="ID_1904122891" STARTARROW="None" STARTINCLINATION="-805;0;"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1564929129077" ID="ID_1739609367" MODIFIED="1564929143403" TEXT="effect spreads over other content outside the bounding box"/>
<node CREATED="1564929150870" ID="ID_237587547" MODIFIED="1564929178639" TEXT="what other drawing it precisely covers is implementation-defined"/>
<node CREATED="1564929179711" ID="ID_74068953" MODIFIED="1564929197683" TEXT="inset box-shadow does not affect the border"/>
<node CREATED="1564929235683" ID="ID_792222700" MODIFIED="1564929255468" TEXT="effects not rendered on top of content"/>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1537575947102" FOLDED="true" ID="ID_161652920" LINK="https://developer.gnome.org/gtk3/stable/GtkStyleContext.html" MODIFIED="1561741931982" TEXT="StyleContext">
<linktarget COLOR="#3d73d3" DESTINATION="ID_161652920" ENDARROW="Default" ENDINCLINATION="-1637;0;" ID="Arrow_ID_990523511" SOURCE="ID_73927449" STARTARROW="None" STARTINCLINATION="-2361;0;"/>
<node CREATED="1562843919255" ID="ID_1423435210" MODIFIED="1562843925624" TEXT="widget-&gt;get_style_context();">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1537575960276" ID="ID_376188043" MODIFIED="1557498707238" TEXT="enth&#xe4;lt mehrere StyleProvider"/>
<node CREATED="1562855059084" ID="ID_49781798" MODIFIED="1576282357955" TEXT="Gtk::StyleContext wird per ref_ptr weitergegeben">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      d.h. wir haben Referenz-Semantik
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1562855174618" ID="ID_687255786" MODIFIED="1562855190810" TEXT="statische Factory-Funktion: StyleContext::create">
<icon BUILTIN="back"/>
</node>
<node CREATED="1562855132568" ID="ID_936625427" MODIFIED="1562855138585" TEXT="kann nicht kopiert werden">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1564838378949" ID="ID_680016998" MODIFIED="1564838383463" TEXT="Zeichenfunktionen">
<node CREATED="1564838405138" ID="ID_366839977" MODIFIED="1564838405138" TEXT="render_background"/>
<node CREATED="1564838414079" ID="ID_1075533829" MODIFIED="1564838414079" TEXT="render_frame">
<node CREATED="1564838433119" ID="ID_803718694" MODIFIED="1564838440607" TEXT="Parameter definieren die Bounding-Box"/>
<node CREATED="1564838441724" ID="ID_924305582" MODIFIED="1576282357954" TEXT="gezeichnet wird mit der effektiven border-width">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...die sich aus den CSS-Selektoren ergibt, gem&#228;&#223; dem StylePath f&#252;r diesen StyleContext,
    </p>
    <p>
      <i>plus zuz&#252;glich</i>&#160;den lokal, explizit hinzugef&#252;gten Classes und Modifiers, welche auch
    </p>
    <p>
      automatisch eine h&#246;here Priorit&#228;t haben, als das, was sich aus den Path-match ergibt
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1564838554448" ID="ID_1827131254" MODIFIED="1576282357954" TEXT="M&#xfc;ll, wenn die gegebene Bounding-Box zu klein ist">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Bounding-Box meint ja, den effektiven &#228;u&#223;eren Umfang.
    </p>
    <p>
      GTK zeichnet also von diesem ausgehend nach Innen.
    </p>
    <p>
      Wenn die Bounding-Box kleiner ist als die effektiven border-width, und zwar jeweils zweimal pro Richtung
    </p>
    <p>
      (oben+unten == H&#246;he..), dann zeichnet GTK ggfs &#252;ber die BoundingBox hinaus,
    </p>
    <p>
      typischerweise nach Oben. Und nat&#252;rlich sieht das Ganze dann auch nicht mehr wie ein frame aus.
    </p>
    <p>
      
    </p>
    <p>
      Man mu&#223; also gen&#252;gend Platz allozieren f&#252;r border-top-width + border-bottom-width + gew&#252;nschter Content!
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
</node>
<node CREATED="1537575973946" ID="ID_1131360657" MODIFIED="1557498707238" TEXT="StyleProvider">
<node CREATED="1537575987001" ID="ID_1223531940" MODIFIED="1557498707238" TEXT="GtkCssStyleProvider">
<node CREATED="1537576001423" ID="ID_707384345" MODIFIED="1557498707238" TEXT="interpretiert ein CSS-Stylesheet"/>
</node>
</node>
<node CREATED="1662049423914" ID="ID_1951916067" MODIFIED="1662049426710" TEXT="Icons">
<node CREATED="1662049427769" ID="ID_957383659" MODIFIED="1662049451890">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <font color="#bd035f" face="Monospaced">@deprecated </font>fr&#252;her gab es die Stock-IDs
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1662049454454" ID="ID_1598985625" MODIFIED="1662049465776" TEXT="man soll &#xbb;standard Icon-Names&#xab; verwenden">
<node CREATED="1662049467172" ID="ID_124375371" LINK="https://specifications.freedesktop.org/icon-naming-spec/icon-naming-spec-latest.html" MODIFIED="1662049489405" TEXT="icon-naming-spec FreeDesktop"/>
</node>
</node>
<node CREATED="1537576031611" FOLDED="true" ID="ID_1494464724" MODIFIED="1557498707238" TEXT="Widgets">
<node CREATED="1537576035498" ID="ID_1813123190" MODIFIED="1557498707238" TEXT="definieren jeweils die Styles, die sie verwenden">
<node CREATED="1537577874195" ID="ID_385552696" MODIFIED="1557498707238" TEXT="style-context zum Widget beziehen"/>
<node CREATED="1537577885042" ID="ID_9820896" MODIFIED="1557498707238" TEXT="diesem Context die spezielle Klasse hinzuf&#xfc;gen"/>
<node CREATED="1537577901032" ID="ID_1836919045" MODIFIED="1557498707238" TEXT="diese Klasse kann nun im CSS-Selektor verwendet werden"/>
<node CREATED="1537577914422" ID="ID_1220237808" MODIFIED="1576282357953" TEXT="geht einfach per GTKmm">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Glib::RefPtr&lt;StyleContext&gt; context = widget-&gt;get_style_context();
    </p>
    <p>
      context-&gt;add_class(&quot;ohMy&quot;);
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
<node CREATED="1537577929540" ID="ID_644837001" MODIFIED="1557498707238" TEXT="fr&#xfc;her ging das nur direkt in C">
<icon BUILTIN="ksmiletris"/>
</node>
<node COLOR="#803457" CREATED="1537577957752" ID="ID_36168340" LINK="https://stackoverflow.com/questions/37609381/how-to-set-a-specific-css-class-to-a-widget-in-gtk3-c" MODIFIED="1557498707238" TEXT="C-Beispiel auf Stackoverflow"/>
<node COLOR="#803457" CREATED="1537577957752" ID="ID_1015117751" LINK="https://stackoverflow.com/questions/37609381/how-to-set-a-specific-css-class-to-a-widget-in-gtk3-c" MODIFIED="1557498707238" TEXT="C++-L&#xf6;sung auf Stackoverflow">
<linktarget COLOR="#c1a9a9" DESTINATION="ID_1015117751" ENDARROW="Default" ENDINCLINATION="56;152;" ID="Arrow_ID_1206355372" SOURCE="ID_903275997" STARTARROW="None" STARTINCLINATION="68;8;"/>
</node>
</node>
</node>
<node CREATED="1537576059351" ID="ID_1816365537" MODIFIED="1557498707238" TEXT="k&#xf6;nnen spezielle &quot;Regions&quot; haben">
<node CREATED="1537576068734" ID="ID_1594476628" MODIFIED="1557498707238" TEXT="was ist das">
<icon BUILTIN="help"/>
</node>
<node CREATED="1537658489614" ID="ID_1012337146" MODIFIED="1557498707238" TEXT="Doku gibt einen Baum an: &quot;CSS nodes&quot;"/>
<node CREATED="1537658542249" ID="ID_956543325" MODIFIED="1557498707238" TEXT="das ist die tats&#xe4;chliche Widget-Struktur"/>
</node>
<node CREATED="1535629240762" FOLDED="true" ID="ID_1174884362" MODIFIED="1537576577055" STYLE="fork" TEXT="CustomWidgets">
<edge COLOR="#b4a9e3" STYLE="bezier" WIDTH="thin"/>
<linktarget COLOR="#6277b2" DESTINATION="ID_1174884362" ENDARROW="Default" ENDINCLINATION="-2315;-45;" ID="Arrow_ID_380937946" SOURCE="ID_1432671260" STARTARROW="None" STARTINCLINATION="-7413;0;"/>
<font NAME="SansSerif" SIZE="12"/>
<node CREATED="1537576079756" HGAP="32" ID="ID_111059124" MODIFIED="1537658672181" TEXT="siehe Tutorial" VSHIFT="-6">
<arrowlink DESTINATION="ID_334736261" ENDARROW="Default" ENDINCLINATION="228;-492;" ID="Arrow_ID_84377619" STARTARROW="None" STARTINCLINATION="930;-42;"/>
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1562843267371" ID="ID_132122055" MODIFIED="1562843271022" TEXT="Text-Tags">
<node COLOR="#990000" CREATED="1537658616952" HGAP="24" ID="ID_940676428" LINK="https://stackoverflow.com/questions/52452878/can-tags-in-gtktextbuffer-be-styled-with-css" MODIFIED="1562843313720" TEXT="habe selber auf Stackoverflow gefragt..." VSHIFT="-8">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
<node CREATED="1562843284008" ID="ID_1053320603" MODIFIED="1562843307987" TEXT="Antwort Nein; nur dirketes Styling, nicht per CSS">
<icon BUILTIN="button_cancel"/>
</node>
</node>
<node CREATED="1537658818388" ID="ID_1554071957" MODIFIED="1537658827087" TEXT="M&#xf6;glichkeiten">
<node CREATED="1537577389028" ID="ID_1690083237" MODIFIED="1576282357952" TEXT="k&#xf6;nnen einen eigenen Widget-Namen setzen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      this-&gt;set_name(&quot;my-widget&quot;)
    </p>
  </body>
</html></richcontent>
<node CREATED="1563038427512" ID="ID_887791641" MODIFIED="1563038432987" TEXT="Vorsicht: das ist die #id"/>
<node CREATED="1563038460235" ID="ID_1245820640" MODIFIED="1576282357952" TEXT="GTKmm-definierte custom-Widgets k&#xf6;nnen nicht ihren CSS-node-Namen &#xe4;ndern">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      (2019 / Debian-Stretch)
    </p>
    <p>
      Das schlie&#223;e ich aus einem Kommentar im GTKmm-Tutorial
    </p>
    <p>
      &#160;&#160;// Set the widget name to use in the CSS file.
    </p>
    <p>
      &#160;&#160;set_name(&quot;my-widget&quot;);
    </p>
    <p>
      
    </p>
    <p>
      &#160;&#160;// If you make a custom widget in C code, based on gtk+'s GtkWidget, there is
    </p>
    <p>
      &#160;&#160;// an alternative to gtk_widget_set_name(): Set a CSS name for your custom
    </p>
    <p>
      &#160;&#160;// class (instead of the widget instance) with gtk_widget_class_set_css_name()
    </p>
    <p>
      &#160;&#160;// (new in gtk+ 3.19.1). That's not possible for custom widgets defined in gtkmm.
    </p>
    <p>
      &#160;&#160;// gtk_widget_class_set_css_name() must be called in the class init function,
    </p>
    <p>
      &#160;&#160;// which can't be customized, when the widget is based on gtkmm's Gtk::Widget.
    </p>
    <p>
      &#160;&#160;//
    </p>
    <p>
      &#160;&#160;// Another alternative: The custom widget inherits the CSS name &quot;widget&quot; from
    </p>
    <p>
      &#160;&#160;// GtkWidget. That name can be used in the CSS file. This is not a very good
    </p>
    <p>
      &#160;&#160;// alternative. GtkWidget's CSS name is not documented. It can probably be
    </p>
    <p>
      &#160;&#160;// changed or removed in the future.
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#bc86a6" DESTINATION="ID_1245820640" ENDARROW="Default" ENDINCLINATION="-1901;31;" ID="Arrow_ID_1120129058" SOURCE="ID_994687888" STARTARROW="None" STARTINCLINATION="-2128;-72;"/>
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1245820640" ENDARROW="Default" ENDINCLINATION="-18;-274;" ID="Arrow_ID_1242464259" SOURCE="ID_1216219394" STARTARROW="None" STARTINCLINATION="309;8;"/>
<node CREATED="1563042271596" ID="ID_60542269" MODIFIED="1576282357951" TEXT="man kann zwar aufrufen...">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      gtk_widget_class_set_css_name (GTK_WIDGET_GET_CLASS(gobj()), &quot;body&quot;);
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1563042287071" ID="ID_1579813090" MODIFIED="1563042298109" TEXT="aber das kommt zu sp&#xe4;t und bleibt wirkungslos f&#xfc;r das CSS"/>
</node>
<node COLOR="#435e98" CREATED="1665955382455" ID="ID_1117299084" MODIFIED="1665956972844" TEXT="man kann aber den Glib::ObjectBase-ctor explizit aufrufen">
<icon BUILTIN="stop-sign"/>
<node CREATED="1665955404437" ID="ID_865788176" MODIFIED="1665955416055" TEXT="das mu&#xdf; dann vor allen Vaterklassen-Konstruktoren passieren"/>
<node CREATED="1665955418797" ID="ID_157490279" MODIFIED="1665957004676" TEXT="damit kann man den Namen in der Klassenhierarchie &#xe4;ndern"/>
<node CREATED="1665955450339" ID="ID_1763041463" MODIFIED="1665955488686" TEXT="Glib::ObjectBase(&quot;body&quot;)    &#x27f9; CSS properties (on &apos;gtkmm__CustomObject_body&apos;)">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1665955490424" ID="ID_1309061874" MODIFIED="1665955496915" TEXT="Beispiel: BodyCanvasWidget">
<node COLOR="#523db7" CREATED="1665955761332" ID="ID_1043823112" MODIFIED="1665955780159" TEXT="verifiziert: funktioniert in der Tat">
<font ITALIC="true" NAME="SansSerif" SIZE="10"/>
</node>
</node>
<node CREATED="1665957010202" ID="ID_230342068" MODIFIED="1665957038452">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      aber der Tag-Name f&#252;r den CSS-Selector wird dadurch <b>nicht</b>&#160; ge&#228;ndert
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="stop-sign"/>
</node>
</node>
</node>
<node CREATED="1537577364840" ID="ID_927285198" MODIFIED="1537577379929" TEXT="k&#xf6;nnen custom-Properties haben">
<node CREATED="1537577410065" ID="ID_1611025546" MODIFIED="1537577422244" TEXT="das ist ein Proxy-Member"/>
<node CREATED="1537577424000" ID="ID_742914876" MODIFIED="1537577434658" TEXT="onRealize kann der Wert abgeholt werden"/>
</node>
<node CREATED="1537658737815" ID="ID_1865147889" MODIFIED="1537658764823" TEXT="k&#xf6;nnen Basis-Widgets mit Klasse auszeichnen">
<node CREATED="1537658770555" ID="ID_920908371" MODIFIED="1537658777916" TEXT="nicht klar, ob das in C++ geht">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1537658785336" ID="ID_903275997" MODIFIED="1538609485588" TEXT="Beispiel">
<arrowlink COLOR="#c1a9a9" DESTINATION="ID_1015117751" ENDARROW="Default" ENDINCLINATION="56;152;" ID="Arrow_ID_1206355372" STARTARROW="None" STARTINCLINATION="68;8;"/>
</node>
</node>
</node>
</node>
<node CREATED="1563042875607" ID="ID_1514342953" MODIFIED="1563042880140" TEXT="Interna">
<node CREATED="1563042881862" ID="ID_96389801" MODIFIED="1563042882948" TEXT="GtkWidgetClass">
<node CREATED="1563042885675" ID="ID_1605857107" MODIFIED="1563042893560" TEXT="ziemlich obskures internes Detail">
<icon BUILTIN="smily_bad"/>
</node>
<node CREATED="1563042941749" ID="ID_1890840480" MODIFIED="1563042972361" TEXT="wohl eine GLib &quot;subklasse&quot; der Widget-&quot;klasse&quot;"/>
<node CREATED="1563042901556" ID="ID_252353292" MODIFIED="1563043017352" TEXT="man bekommt sie so: GTK_WIDGET_GET_CLASS(gobj())">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1563042990783" ID="ID_987465821" MODIFIED="1563043007260" TEXT="Verh&#xe4;ltnis zur C++ Widget_Class?">
<icon BUILTIN="help"/>
<node CREATED="1563043008460" ID="ID_30159127" MODIFIED="1563043013198" TEXT="ist mir nicht klar">
<icon BUILTIN="smily_bad"/>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1535633140424" FOLDED="true" ID="ID_293762905" MODIFIED="1563630924934" TEXT="WidgetPath">
<linktarget COLOR="#3766bc" DESTINATION="ID_293762905" ENDARROW="Default" ENDINCLINATION="-654;0;" ID="Arrow_ID_711737555" SOURCE="ID_1145993487" STARTARROW="None" STARTINCLINATION="-2487;0;"/>
<linktarget COLOR="#76a5de" DESTINATION="ID_293762905" ENDARROW="Default" ENDINCLINATION="109;127;" ID="Arrow_ID_1149853107" SOURCE="ID_222380322" STARTARROW="None" STARTINCLINATION="-391;0;"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1535633147295" ID="ID_14373153" MODIFIED="1576282357951" TEXT="Konzept ist mir nicht klar">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      8/2018:
    </p>
    <p>
      ist das eine Sequenz von konkreten Objekten, die ineinander verschachtelt sind?
    </p>
    <p>
      oder ist es eine Vererbungs-Hierarchie, wie sie f&#252;r das CSS-Styling ben&#246;tigt wird?
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="help"/>
</node>
<node CREATED="1535633221189" ID="ID_623946936" MODIFIED="1557498707238" TEXT="beachte: hier werden Typen (GType) gespeichert">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
<node CREATED="1535633267727" ID="ID_168272548" MODIFIED="1557498707238" TEXT="Gtk::Widget::get_path()">
<icon BUILTIN="idea"/>
<node CREATED="1562846022964" ID="ID_209760707" LINK="https://developer.gnome.org/gtkmm/3.20/classGtk_1_1WidgetPath.html" MODIFIED="1562846030046" TEXT="Gtk::WidgetPath"/>
<node CREATED="1562846100532" ID="ID_1504183934" MODIFIED="1562846529835" TEXT="GTK(C)">
<node CREATED="1562846131709" ID="ID_59749138" LINK="https://developer.gnome.org/gtk3/stable/GtkWidget.html#gtk-widget-get-path" MODIFIED="1562846137501" TEXT="gtk-widget-get-path"/>
<node CREATED="1562846107520" ID="ID_538645074" LINK="https://developer.gnome.org/gtk3/stable/GtkWidget.html#gtk-widget-path" MODIFIED="1562846406105" TEXT="gtk-widget-path()">
<icon BUILTIN="stop-sign"/>
<node CREATED="1562846188789" ID="ID_452719406" MODIFIED="1562846191768" TEXT="@deprecated"/>
<node CREATED="1562846317916" ID="ID_611735201" MODIFIED="1576282357950" TEXT="aber die Doku ist gut">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      gtk_widget_path ()
    </p>
    <p>
      
    </p>
    <p>
      void
    </p>
    <p>
      gtk_widget_path (GtkWidget *widget,
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;guint *path_length,
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;gchar **path,
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;gchar **path_reversed);
    </p>
    <p>
      
    </p>
    <p>
      gtk_widget_path has been deprecated since version 3.0 and should not be used in newly-written code.
    </p>
    <p>
      Use gtk_widget_get_path() instead
    </p>
    <p>
      
    </p>
    <p>
      Obtains the full path to widget.
    </p>
    <p>
      The path is simply the name of a widget and all its parents in the container hierarchy,
    </p>
    <p>
      separated by periods. The name of a widget comes from gtk_widget_get_name().
    </p>
    <p>
      Paths are used to apply styles to a widget in gtkrc configuration files.
    </p>
    <p>
      Widget names are the type of the widget by default (e.g. &#8220;GtkButton&#8221;)
    </p>
    <p>
      or can be set to an application-specific value with gtk_widget_set_name().
    </p>
    <p>
      By setting the name of a widget, you allow users or theme authors to
    </p>
    <p>
      apply styles to that specific widget their gtkrc file.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1562846519978" ID="ID_696163537" LINK="https://developer.gnome.org/gtk3/stable/gtk3-GtkWidgetPath.html#GtkWidgetPath" MODIFIED="1562846664732" TEXT="GtkWidgetPath">
<icon BUILTIN="back"/>
<node CREATED="1562846666478" ID="ID_1250433736" MODIFIED="1562846671293" TEXT="ergiebige Doku">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1562847246347" ID="ID_1254636291" MODIFIED="1562847254881" TEXT="man kann Teile von einem Widget kopiert bekommen">
<node CREATED="1562847271831" ID="ID_1624054416" LINK="https://developer.gnome.org/gtk3/stable/gtk3-GtkWidgetPath.html#gtk-widget-path-append-for-widget" MODIFIED="1562847280845" TEXT="gtk-widget-path-append-for-widget"/>
</node>
</node>
</node>
</node>
<node CREATED="1562854903538" ID="ID_944355214" MODIFIED="1562854907642" TEXT="Gtk::WidgetPath">
<node CREATED="1562854908778" ID="ID_1256092544" MODIFIED="1576282357949" TEXT="ist ein boxed GTK-Objekt">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      d.h. nur ein Pointer auf ein GObj
    </p>
    <p>
      mit automatischem Refcounting
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1562854931311" ID="ID_1401731034" MODIFIED="1562854940509" TEXT="kann mit dem default-Ctor leer erzeugt werden"/>
<node CREATED="1562854942971" ID="ID_395952844" MODIFIED="1562854961042" TEXT="wenn man es vom Widget explizit bezieht, wird der Pfad kopiert">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1562847187991" ID="ID_1894889012" MODIFIED="1562847225031" TEXT="anwenden....">
<node CREATED="1562847193914" ID="ID_1978755105" MODIFIED="1576282357949" TEXT="gtk_style_context_set_path ()">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      As a consequence, the style will be regenerated to match the new given path.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1562847303783" ID="ID_803278574" LINK="https://stackoverflow.com/a/56415144/444796" MODIFIED="1562847334090" TEXT="man Kann WidetPath &quot;frei stehend&quot; verwenden (SO)">
<icon BUILTIN="back"/>
</node>
</node>
</node>
</node>
<node CREATED="1535632661385" FOLDED="true" ID="ID_1021079796" MODIFIED="1557498707238" TEXT="Hierarchie">
<node CREATED="1535632673655" ID="ID_849385989" MODIFIED="1557498707238" TEXT="Gdk::Window">
<node CREATED="1535632686045" ID="ID_20909674" MODIFIED="1557498707238">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      ein Widget <i>kann</i>&#160;einem G<b>D</b>K-Window zugeordnet sein
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1535632728343" ID="ID_1087443097" MODIFIED="1557498707238" TEXT="dieses repr&#xe4;sentiert den low-level Screen-Space"/>
<node CREATED="1535632754900" ID="ID_1804383493" MODIFIED="1557498707238" TEXT="diese Zuordnung hei&#xdf;t &quot;mapping&quot;"/>
<node CREATED="1535632903512" ID="ID_653149380" MODIFIED="1557498707238" TEXT="Gtk::Widget::get_parent_window ()">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1535632766298" ID="ID_651213437" MODIFIED="1557498707238" TEXT="Container">
<node CREATED="1535632771490" ID="ID_54072996" MODIFIED="1557498707238" TEXT="machen sich beim Hinzuf&#xfc;gen den Kindern bekannt"/>
<node CREATED="1535632789207" ID="ID_1814287136" MODIFIED="1557498707238" TEXT="Gtk::Widget::get_parent ()">
<node CREATED="1535632854135" ID="ID_1093554517" MODIFIED="1557498707238" TEXT="Gtk::Container *"/>
<node CREATED="1535632860126" ID="ID_710254808" MODIFIED="1557498707238" TEXT="kann NULL sein"/>
</node>
<node CREATED="1535633353996" ID="ID_1722614856" MODIFIED="1557498707238" TEXT="Gtk::Widget::get_toplevel ()"/>
<node CREATED="1535633447375" ID="ID_1390203707" LINK="https://developer.gnome.org/gtkmm/3.22/classGtk_1_1Widget.html#ad65bedf64acfd0401abbe489312fba8e" MODIFIED="1557498707238" TEXT="Widget *  Gtk::Widget::get_ancestor(GType widget_type)"/>
</node>
<node CREATED="1563630894868" ID="ID_222380322" MODIFIED="1563630929426" TEXT="WidgeqPath: die Sequenz von Top zum konkreten Widget">
<arrowlink COLOR="#76a5de" DESTINATION="ID_293762905" ENDARROW="Default" ENDINCLINATION="109;127;" ID="Arrow_ID_1149853107" STARTARROW="None" STARTINCLINATION="-391;0;"/>
</node>
</node>
<node CREATED="1477523681978" HGAP="14" ID="ID_400257229" MODIFIED="1557498707238" TEXT="Richtlinien" VSHIFT="11">
<node CREATED="1477523701544" ID="ID_1802991794" MODIFIED="1557498707238" TEXT="empfohlen">
<node CREATED="1477523709342" ID="ID_781118281" MODIFIED="1557498707238" TEXT="Box">
<node CREATED="1477524273619" ID="ID_216152004" MODIFIED="1557498707238" TEXT="pack_start() / pack_end()"/>
<node COLOR="#ca1b00" CREATED="1477524282122" ID="ID_1542686719" LINK="https://developer.gnome.org/gtkmm-tutorial/stable/sec-multi-item-containers.html.en#per-child-packing-options" MODIFIED="1557498707238" TEXT="packing options">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1477523710854" ID="ID_1520577996" MODIFIED="1557498707238" TEXT="Grid"/>
</node>
<node CREATED="1477523714526" ID="ID_654535915" MODIFIED="1576282357948" TEXT="Application verwenden">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...nicht mehr das <i>klassische</i>&#160;gtk::Main
    </p>
    <p>
      
    </p>
    <p>
      Wozu das?
    </p>
    <ul>
      <li>
        Design: Main war ein Singleton; aber sein dtor hat auch Plattform-Aufr&#228;um-Arbeiten gemacht
      </li>
      <li>
        Framework: anscheinend ist hier eine Tendenz in Richtung auf ein integriertes Framework im Gange; im Besonderen will man &quot;Aktionen&quot; direkt aus dem Desktop aufrufen k&#246;nnen<br />
      </li>
    </ul>
  </body>
</html></richcontent>
<arrowlink COLOR="#627292" DESTINATION="ID_185528211" ENDARROW="Default" ENDINCLINATION="22;-122;" ID="Arrow_ID_390519319" STARTARROW="None" STARTINCLINATION="-31;42;"/>
</node>
</node>
</node>
<node CREATED="1495221220040" HGAP="43" ID="ID_782313223" MODIFIED="1557498707238" TEXT="Framework" VSHIFT="-20">
<linktarget COLOR="#677ab7" DESTINATION="ID_782313223" ENDARROW="Default" ENDINCLINATION="-981;-106;" ID="Arrow_ID_1912776282" SOURCE="ID_1636078216" STARTARROW="None" STARTINCLINATION="-2111;0;"/>
<linktarget COLOR="#677ab7" DESTINATION="ID_782313223" ENDARROW="Default" ENDINCLINATION="-1088;-39;" ID="Arrow_ID_234165792" SOURCE="ID_433225506" STARTARROW="None" STARTINCLINATION="-2111;0;"/>
<linktarget COLOR="#677ab7" DESTINATION="ID_782313223" ENDARROW="Default" ENDINCLINATION="-652;20;" ID="Arrow_ID_315633048" SOURCE="ID_1894791438" STARTARROW="None" STARTINCLINATION="-2111;0;"/>
<node CREATED="1533388030963" FOLDED="true" ID="ID_1973994334" MODIFIED="1563630809180" TEXT="main context">
<node CREATED="1533388053839" ID="ID_970610402" MODIFIED="1533388063674" TEXT="abstrahierte &quot;main loop&quot;">
<node CREATED="1533388065237" ID="ID_1853196275" MODIFIED="1533388071944" TEXT="es gibt einen default_main_context"/>
<node CREATED="1533388072628" ID="ID_1382049092" MODIFIED="1533388077743" TEXT="dieser wird on demand erzeugt"/>
<node CREATED="1533388078595" ID="ID_1456212114" MODIFIED="1533388091037" TEXT="dieser wird von den run()-Funktionen &quot;gepullt&quot;"/>
</node>
<node CREATED="1533388113350" ID="ID_1546795729" MODIFIED="1561827466205" TEXT="Glib::signal_idle()">
<node CREATED="1533388147720" ID="ID_1897188155" MODIFIED="1533388158218" TEXT="&#xfc;bergebene Closure l&#xe4;uft erst in der Event-Loop"/>
<node CREATED="1533388162662" ID="ID_1573817854" MODIFIED="1533388168352" TEXT="kann aber schon vorher hinzugef&#xfc;gt werden"/>
<node CREATED="1533388185290" ID="ID_1158890484" MODIFIED="1533388238450" TEXT="verwendet main_context_default">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...und erzeugt diesen on demand auch neu
    </p>
  </body>
</html></richcontent>
<node CREATED="1533388264550" ID="ID_32738634" MODIFIED="1533388282104" TEXT="gmain.c : g_source_attach"/>
<node CREATED="1533388282692" ID="ID_1259525027" MODIFIED="1533388301765" TEXT="gmain.c : g_main_context_default"/>
</node>
<node CREATED="1533388309295" ID="ID_775603522" MODIFIED="1533388317610" TEXT="man kann connect_once() macne"/>
</node>
<node CREATED="1533388128579" ID="ID_580405745" MODIFIED="1561827466205" TEXT="Glib::signal_timeout()">
<linktarget COLOR="#5568a6" DESTINATION="ID_580405745" ENDARROW="Default" ENDINCLINATION="-472;0;" ID="Arrow_ID_244184105" SOURCE="ID_1586631508" STARTARROW="None" STARTINCLINATION="-2132;-72;"/>
<node CREATED="1533388319102" ID="ID_1118350475" MODIFIED="1533388324553" TEXT="analog wie signal_idle()"/>
<node CREATED="1533388325053" ID="ID_1341702889" MODIFIED="1533388334672" TEXT="Timeout in Millisekunden"/>
<node CREATED="1533388335188" ID="ID_980760340" MODIFIED="1533388343815" TEXT="bedeutet Delay, nicht pr&#xe4;zises Timing">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
<node CREATED="1495221242285" FOLDED="true" ID="ID_185528211" MODIFIED="1563630800179" TEXT="Applikation">
<linktarget COLOR="#627292" DESTINATION="ID_185528211" ENDARROW="Default" ENDINCLINATION="22;-122;" ID="Arrow_ID_390519319" SOURCE="ID_654535915" STARTARROW="None" STARTINCLINATION="-31;42;"/>
<node CREATED="1495221272545" ID="ID_624250153" MODIFIED="1561827466206" TEXT="Gtk::Application">
<node CREATED="1495222327564" ID="ID_175461027" MODIFIED="1518487921099" TEXT="initialisiert Gio::Application"/>
<node CREATED="1495222337235" ID="ID_348472460" MODIFIED="1518487921099" TEXT="setzt ggfs. die Applikations-ID"/>
<node CREATED="1495223436241" ID="ID_1015366549" MODIFIED="1518487921099" TEXT="Application::run">
<node CREATED="1495223445527" ID="ID_1531454773" MODIFIED="1518487921099" TEXT="optional mit Window">
<node CREATED="1495223506111" ID="ID_992095337" MODIFIED="1518487921099" TEXT="macht aber nur window-&gt;show"/>
<node CREATED="1495223513438" ID="ID_1178606368" MODIFIED="1541088154146" TEXT="allerdings im activate-Callback">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      warum?
    </p>
    <p>
      nur wegen ApplictationWindow!
    </p>
    <p>
      Denn dieses setzte eine &quot;Registrierung&quot; voraus.
    </p>
    <p>
      Alles in ein Framework zwingen. Alternativlos, capisce?
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node CREATED="1495223451598" ID="ID_1042773331" MODIFIED="1518487921099" TEXT="startet Gio::Application::run"/>
</node>
</node>
<node CREATED="1495221280336" ID="ID_1925569425" MODIFIED="1561827466211" TEXT="Gio::Application">
<node COLOR="#435e98" CREATED="1533309749035" HGAP="-6" ID="ID_274394313" MODIFIED="1533309768489" TEXT="entspricht GApplication in C" VSHIFT="-20">
<icon BUILTIN="info"/>
</node>
<node CREATED="1495221530614" ID="ID_1085605910" MODIFIED="1533306146656" TEXT="initialisiert das Framework">
<arrowlink DESTINATION="ID_1615155508" ENDARROW="Default" ENDINCLINATION="-27;-158;" ID="Arrow_ID_152226640" STARTARROW="None" STARTINCLINATION="-209;0;"/>
</node>
<node CREATED="1495221537366" ID="ID_381245884" MODIFIED="1518487921099" TEXT="stellt eine dBus-Verbindung bereit"/>
<node CREATED="1495221546252" ID="ID_771692992" MODIFIED="1518487921099" TEXT="erbt von Gio::ActionGroup und ActionMap"/>
<node CREATED="1533307013028" HGAP="32" ID="ID_1511454400" MODIFIED="1533608414135" TEXT="on activation" VSHIFT="16">
<node CREATED="1533307054478" ID="ID_1200897297" MODIFIED="1533307059929" TEXT="g_application_activate">
<node CREATED="1533307252691" ID="ID_11609503" MODIFIED="1533307276116" TEXT="gapplication.c (ca line 2220)"/>
<node CREATED="1533307297630" ID="ID_312502406" MODIFIED="1533307298225" TEXT="g_signal_emit (application, g_application_signals[SIGNAL_ACTIVATE], 0)"/>
</node>
<node CREATED="1533307413701" ID="ID_1516098159" MODIFIED="1533307416809" TEXT="aufgerufen von">
<node CREATED="1533307417845" ID="ID_1665005953" MODIFIED="1533307423040" TEXT="Gio::Application"/>
<node CREATED="1533307444641" ID="ID_1571069781" MODIFIED="1533307445757" TEXT="g_application_real_local_command_line">
<node CREATED="1533307489459" ID="ID_849008375" MODIFIED="1533307492846" TEXT="das ist class-&gt;local_command_line"/>
<node CREATED="1533307886653" ID="ID_322984790" MODIFIED="1541088154184" TEXT="wird auch von Gtkmm so erhalten">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...allerdings eingepackt in eine vfunc,
    </p>
    <p>
      welche ggfs C++ - Exceptions f&#228;ngt
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1533307599332" ID="ID_1228966939" MODIFIED="1533307626966" TEXT="aufgerufen von g_application_run">
<arrowlink DESTINATION="ID_1602611708" ENDARROW="Default" ENDINCLINATION="262;0;" ID="Arrow_ID_1688106140" STARTARROW="None" STARTINCLINATION="-50;95;"/>
</node>
</node>
</node>
<node CREATED="1533309080840" ID="ID_1911292426" MODIFIED="1533309083211" TEXT="verwendet">
<node CREATED="1533309084015" ID="ID_103827073" MODIFIED="1533309275410" TEXT="vom Framework...">
<linktarget COLOR="#6280a2" DESTINATION="ID_103827073" ENDARROW="Default" ENDINCLINATION="-1131;-99;" ID="Arrow_ID_138401663" SOURCE="ID_574887736" STARTARROW="None" STARTINCLINATION="1028;-75;"/>
<node CREATED="1533309088679" ID="ID_603142056" MODIFIED="1533309096553" TEXT="um ein Fenster nach start darzustellen"/>
<node CREATED="1533309142479" ID="ID_1556321232" MODIFIED="1533309146650" TEXT="Gtk::Application::run(Window&amp;)"/>
</node>
<node CREATED="1533311444004" ID="ID_1806268533" MODIFIED="1541088154201" TEXT="notwendig weil....">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...nur wegen dem ganzen Registrierungs-Glump.
    </p>
    <p>
      Ein &quot;GTK-Application-Window&quot; ist auch irgendwie registriert und h&#228;ngt am Bus.
    </p>
    <p>
      Frag mich nicht wie. Jedenfalls kann man das nicht im Konstruktor von Gtk::Application machen.
    </p>
    <p>
      <i>Nur</i>&#160;das ist der Grund. Es <i>geht gar nicht</i>&#160;um die Event-Loop
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#949fb4" DESTINATION="ID_1806268533" ENDARROW="Default" ENDINCLINATION="-1845;-608;" ID="Arrow_ID_1146394851" SOURCE="ID_1211339520" STARTARROW="None" STARTINCLINATION="-474;0;"/>
<icon BUILTIN="idea"/>
</node>
<node COLOR="#435e98" CREATED="1533309280940" ID="ID_1482488845" MODIFIED="1541088154207" TEXT="Stand 8/2018 keine anderen Treffer">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      suche (case insensitive) nach application_activate
    </p>
    <ul>
      <li>
        treffer auf APPLICATION_ACTIVATE in g_application_activate()
      </li>
      <li>
        die Treffer in Gtk::Application
      </li>
      <li>
        diverse false positives mit anderen &quot;Activation&quot;-Signalen, z.B. in Aktionen oder Buttons
      </li>
    </ul>
  </body>
</html></richcontent>
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="info"/>
</node>
<node CREATED="1533309516556" ID="ID_459213298" MODIFIED="1541088154213">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      nicht durch <b>gtk_main</b>
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      wichtige Einsicht:
    </p>
    <ul>
      <li>
        gtk_main ist Toolit ohne Framework
      </li>
      <li>
        bietet keine solchen Lebenszyklus-Signale
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
<node CREATED="1495223467588" HGAP="27" ID="ID_666842762" MODIFIED="1533608414137" TEXT="run" VSHIFT="12">
<icon BUILTIN="back"/>
<node CREATED="1533306448070" ID="ID_1602611708" MODIFIED="1533307626966" TEXT="g_application_run(gobj(), argc, argv)">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1602611708" ENDARROW="Default" ENDINCLINATION="262;0;" ID="Arrow_ID_1688106140" SOURCE="ID_1228966939" STARTARROW="None" STARTINCLINATION="-50;95;"/>
<icon BUILTIN="info"/>
</node>
<node CREATED="1495223902619" ID="ID_11620264" MODIFIED="1518487921099" TEXT="behandelt Argumente"/>
<node CREATED="1495223912401" ID="ID_1575164060" MODIFIED="1518487921099" TEXT="falls Service: wartet auf Nachricht vom dBus"/>
<node CREATED="1533307972881" ID="ID_1094265011" MODIFIED="1533308000083">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      beachte: <b>ruft nicht gtk_main</b>&#160;sondern macht das &#196;quivalent
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1495224012668" ID="ID_566886010" MODIFIED="1518487921099" TEXT="Event-Loop">
<node CREATED="1495224031057" ID="ID_1352224458" MODIFIED="1518487921099" TEXT="use-count"/>
<node CREATED="1495224034585" ID="ID_1852291898" MODIFIED="1518487921099" TEXT="bestimmt, ob die Loop weiter l&#xe4;uft"/>
<node CREATED="1495224111895" ID="ID_1808871678" MODIFIED="1518487921099" TEXT="g_main_context_iteration">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
</node>
<node CREATED="1495224682595" HGAP="35" ID="ID_1221113124" MODIFIED="1518487921099" TEXT="g_main_context_iterate" VSHIFT="7">
<linktarget COLOR="#4da894" DESTINATION="ID_1221113124" ENDARROW="Default" ENDINCLINATION="-37;92;" ID="Arrow_ID_603815905" SOURCE="ID_355427981" STARTARROW="None" STARTINCLINATION="17;-42;"/>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1495224577105" FOLDED="true" HGAP="33" ID="ID_1924897671" MODIFIED="1563630803380" TEXT="Gtk::Main" VSHIFT="10">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1495224595638" ID="ID_1774384379" MODIFIED="1518487921099" TEXT="@deprecated">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1495224609188" ID="ID_1615155508" MODIFIED="1533608414139">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      initialisiert das
    </p>
    <p>
      Framework
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1615155508" ENDARROW="Default" ENDINCLINATION="-27;-158;" ID="Arrow_ID_152226640" SOURCE="ID_1085605910" STARTARROW="None" STARTINCLINATION="-209;0;"/>
<node CREATED="1495224862227" ID="ID_762530588" MODIFIED="1518487921099" TEXT="init_gtkmm_internals"/>
<node CREATED="1495224890119" ID="ID_137730290" MODIFIED="1518487921099" TEXT="statische funktion"/>
<node CREATED="1532795620784" ID="ID_1850885017" MODIFIED="1533608414140" TEXT="gtk_init">
<linktarget COLOR="#87a8bf" DESTINATION="ID_1850885017" ENDARROW="Default" ENDINCLINATION="-195;-45;" ID="Arrow_ID_960670945" SOURCE="ID_377749143" STARTARROW="None" STARTINCLINATION="416;0;"/>
<icon BUILTIN="back"/>
<node CREATED="1532796724776" ID="ID_685469322" MODIFIED="1532796729971" TEXT="bleibt weiterhin bestehen"/>
<node CREATED="1532796730560" ID="ID_727373355" MODIFIED="1532796741082" TEXT="wird von jeder Applikations-Klasse aufgerufen"/>
<node CREATED="1533305525992" ID="ID_1048078112" MODIFIED="1533305987413" TEXT="stellt elementare Initialisierung sicher">
<node CREATED="1533305546669" ID="ID_717378410" MODIFIED="1541088154260" TEXT="gtk_init_check">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      gboolean
    </p>
    <p>
      gtk_init_check (int&#160;&#160;&#160;&#160;*argc,
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;char ***argv)
    </p>
    <p>
      {
    </p>
    <p>
      &#160;&#160;gboolean ret;
    </p>
    <p>
      
    </p>
    <p>
      &#160;&#160;if (!gtk_parse_args (argc, argv))
    </p>
    <p>
      &#160;&#160;&#160;&#160;return FALSE;
    </p>
    <p>
      
    </p>
    <p>
      &#160;&#160;ret = GDK_PRIVATE_CALL (gdk_display_open_default) () != NULL;
    </p>
    <p>
      
    </p>
    <p>
      &#160;&#160;if (gtk_get_debug_flags () &amp; GTK_DEBUG_INTERACTIVE)
    </p>
    <p>
      &#160;&#160;&#160;&#160;gtk_window_set_interactive_debugging (TRUE);
    </p>
    <p>
      
    </p>
    <p>
      &#160;&#160;return ret;
    </p>
    <p>
      }
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
<node CREATED="1533305661254" ID="ID_1064217503" MODIFIED="1533305671871" TEXT="parse commandline">
<node CREATED="1533305895966" ID="ID_1828704033" MODIFIED="1533305900774" TEXT="init gettext"/>
<node CREATED="1533305890638" ID="ID_1711757539" MODIFIED="1533305894930" TEXT="keine weitere Magie"/>
</node>
<node CREATED="1533305672436" ID="ID_1662141734" MODIFIED="1533305683502" TEXT="open/attach to windowing system"/>
<node CREATED="1533305684102" ID="ID_41618780" MODIFIED="1533305691437" TEXT="enable interactive debugging"/>
</node>
</node>
<node CREATED="1533305534919" ID="ID_1905259387" MODIFIED="1533305545069" TEXT="terminiert ohne Windowing-System">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1532795594468" ID="ID_681479502" MODIFIED="1541088154286" TEXT="Main::init_gtkmm_internals">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      void Main::init_gtkmm_internals()
    </p>
    <p>
      {
    </p>
    <p>
      &#160;&#160;static bool init_done = false;
    </p>
    <p>
      
    </p>
    <p>
      &#160;&#160;if(!init_done)
    </p>
    <p>
      &#160;&#160;{
    </p>
    <p>
      &#160;&#160;&#160;&#160;Glib::init();
    </p>
    <p>
      &#160;&#160;&#160;&#160;Gio::init();
    </p>
    <p>
      
    </p>
    <p>
      &#160;&#160;&#160;&#160;// Populate the map of GTypes to C++ wrap_new() functions.
    </p>
    <p>
      &#160;&#160;&#160;&#160;Pango::wrap_init();
    </p>
    <p>
      #ifdef GTKMM_ATKMM_ENABLED
    </p>
    <p>
      &#160;&#160;&#160;&#160;Atk::wrap_init();
    </p>
    <p>
      #endif //GTKMM_ATKMM_ENABLED
    </p>
    <p>
      &#160;&#160;&#160;&#160;Gdk::wrap_init();
    </p>
    <p>
      &#160;&#160;&#160;&#160;Gtk::wrap_init();
    </p>
    <p>
      
    </p>
    <p>
      &#160;&#160;&#160;&#160;init_done = true;
    </p>
    <p>
      &#160;&#160;}
    </p>
    <p>
      }
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#679cc6" DESTINATION="ID_681479502" ENDARROW="Default" ENDINCLINATION="-182;-16;" ID="Arrow_ID_1451320473" SOURCE="ID_1106606369" STARTARROW="None" STARTINCLINATION="273;0;"/>
<icon BUILTIN="info"/>
<node CREATED="1532794577245" ID="ID_1061673956" MODIFIED="1532794580305" TEXT="was macht das?">
<node CREATED="1532796682566" ID="ID_1741006267" MODIFIED="1532796691801" TEXT="Glib, Gio und Pango initialisieren"/>
<node CREATED="1532796692445" ID="ID_1058977996" MODIFIED="1532796706398" TEXT="Wrapper-Mechanismus f&#xfc;r Gtk+-&quot;Objekte&quot; initialisieren"/>
<node COLOR="#435e98" CREATED="1533303515053" ID="ID_806534769" MODIFIED="1533303521236" TEXT="im Detail....">
<icon BUILTIN="info"/>
<node CREATED="1533302528747" ID="ID_436589291" MODIFIED="1533302531718" TEXT="Glib::init"/>
<node CREATED="1533302532330" ID="ID_1077746701" MODIFIED="1533302534862" TEXT="Gio::init">
<node CREATED="1533302535642" ID="ID_669104938" MODIFIED="1533302538965" TEXT="Glib::init">
<node CREATED="1533302837329" ID="ID_1446415127" MODIFIED="1533302841899" TEXT="wiederum...">
<node CREATED="1533302842944" ID="ID_974899245" MODIFIED="1533302853323" TEXT="Gio::wrap_init()"/>
<node CREATED="1533302853959" ID="ID_872170516" MODIFIED="1533302861305" TEXT="Gio::wrap_register_init()"/>
</node>
</node>
<node CREATED="1533302544745" ID="ID_358165246" MODIFIED="1533302550260" TEXT="Gio::wrap_init()">
<node CREATED="1533302581788" ID="ID_1825151057" MODIFIED="1533302612899" TEXT="viele Aufrufe Glib::wrap_register(...)"/>
<node CREATED="1533302590130" ID="ID_815735282" MODIFIED="1533302604205" TEXT="richtet C++-Bindings ein"/>
<node CREATED="1533302617511" ID="ID_1544414198" MODIFIED="1533302640740" TEXT="sonst keine Funktionalit&#xe4;t ersichtlich">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1532794561968" ID="ID_1365959028" MODIFIED="1532796658012" TEXT="ist das zukunfts-fest?">
<icon BUILTIN="button_ok"/>
<node CREATED="1532796634853" ID="ID_1398685017" MODIFIED="1532796646840" TEXT="in application.cc gibts die gleiche Funktion">
<icon BUILTIN="idea"/>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1532796648307" ID="ID_8715855" MODIFIED="1532796654824" TEXT="kein Grund zur Sorge">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node CREATED="1495224625466" ID="ID_668309036" MODIFIED="1533325422859" TEXT="run">
<node CREATED="1495224647071" ID="ID_660577000" MODIFIED="1533608414143" TEXT="gtk_main">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1495224649943" ID="ID_1753452940" MODIFIED="1518487921099" TEXT="g_main_loop_run">
<node CREATED="1495224690714" ID="ID_355427981" MODIFIED="1518487921099" TEXT="g_main_context_iterate">
<arrowlink COLOR="#4da894" DESTINATION="ID_1221113124" ENDARROW="Default" ENDINCLINATION="-37;92;" ID="Arrow_ID_603815905" STARTARROW="None" STARTINCLINATION="17;-42;"/>
</node>
</node>
<node CREATED="1533308108853" ID="ID_650869075" MODIFIED="1533308136078" TEXT="entspricht (im Kern) g_application_run">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1533309576891" ID="ID_1533505296" MODIFIED="1533309583947" TEXT="ohne Lebenzyklus-Management">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
</node>
</node>
</node>
<node CREATED="1495224989674" FOLDED="true" HGAP="18" ID="ID_381583771" MODIFIED="1557498707238" TEXT="Verh&#xe4;ltnis beider" VSHIFT="9">
<icon BUILTIN="idea"/>
<node CREATED="1495225019502" ID="ID_1829681403" MODIFIED="1557498707238" TEXT="beide machen in etwas das Gleiche"/>
<node CREATED="1495225006920" ID="ID_1631847350" MODIFIED="1557498707238" TEXT="Application ist generischer"/>
<node CREATED="1495226503104" ID="ID_1991720691" MODIFIED="1557498707238" TEXT="es geht dabei um Desktop-Integration"/>
<node CREATED="1533308053493" ID="ID_281791270" MODIFIED="1576282357948" TEXT="Gio::Application ruft g_application_run">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...und das ist <i>nicht</i>&#160;gtk_main,
    </p>
    <p>
      aber macht in etwa die gleichen Operationen
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1495225050138" ID="ID_1077152710" MODIFIED="1576282357947" TEXT="gtk_main beruht heute auf Gio">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...das hei&#223;t, es wurde &quot;retrofitted&quot;.
    </p>
    <p>
      die Lib Gio bietet ein generisches &quot;Main-Loop-Framework&quot;,
    </p>
    <p>
      in dem ein Main-Context gepollt wird, solange, bis ein use-count auf Null geht.
    </p>
    <p>
      Gtk-Main verwendet inzwischen den gleichen Mechanismus
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node CREATED="1501848602610" FOLDED="true" ID="ID_1830965770" MODIFIED="1561827466220" TEXT="Threading">
<icon BUILTIN="info"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1501848605874" ID="ID_420183704" MODIFIED="1518487921099" TEXT="nur ein GUI-Thread">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1501848662730" ID="ID_699612019" MODIFIED="1518487921099" TEXT="absichtlich nicht treadsafe">
<icon BUILTIN="idea"/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1501848672921" ID="ID_1641235315" MODIFIED="1518487921099" TEXT="SigC++ nicht Threadsafe">
<icon BUILTIN="clanbomber"/>
<node CREATED="1501848716179" ID="ID_969916851" MODIFIED="1518487921099" TEXT="alle Signals + Slots nur im GUI-Thread"/>
<node CREATED="1501848914377" ID="ID_1614034013" MODIFIED="1576282357947" TEXT="Vorsicht: Desktuktoren">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      der springende Punkt mit sigc::trackable ist,
    </p>
    <p>
      da&#223; Desktuktoren automatisch die Signale abkoppeln.
    </p>
    <p>
      Dieser Vorgang ist <b>nicht threadsafe</b>. Folglich m&#252;ssen
    </p>
    <p>
      auch die <b>Destruktoen</b>&#160;im GUI-Thread laufen.
    </p>
    <p>
      Das ist eine subtile Falle.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1501848728354" ID="ID_1420494100" MODIFIED="1518487921099">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      alles was von sigc::<b>trackable</b>&#160;erbt
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node CREATED="1501848774883" ID="ID_1801418640" MODIFIED="1518487921099" TEXT="Glib::Dispatcher">
<icon BUILTIN="idea"/>
<node CREATED="1501848781850" ID="ID_356349390" MODIFIED="1576282357946">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      f&#252;r <b>alles</b>&#160;aus GTKmm zu verwenden
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...gemeint ist:
    </p>
    <p>
      alles das nicht aus dem GUI-Thread heraus geschieht
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1501848836523" ID="ID_649355856" MODIFIED="1518487921099" TEXT="Dispatcher im GUI-Thread erzeugen">
<icon BUILTIN="clanbomber"/>
<node CREATED="1501861717318" ID="ID_852290990" MODIFIED="1518487921099" TEXT="braucht einen Glib::MainContext"/>
<node CREATED="1501861732604" ID="ID_958721843" MODIFIED="1518487921100" TEXT="und den gibts, wenn gtk_init gelaufen ist"/>
</node>
<node CREATED="1501848867535" ID="ID_1897804143" MODIFIED="1518487921100" TEXT="emit -&gt; Event-Loop"/>
</node>
<node CREATED="1501849055902" ID="ID_569777034" MODIFIED="1518487921100" TEXT="Policy">
<icon BUILTIN="yes"/>
<node CREATED="1501849060757" ID="ID_1858198840" MODIFIED="1518487921100" TEXT="Mutterklasse statt Singletons"/>
<node CREATED="1501849075795" ID="ID_374275577" MODIFIED="1518487921100" TEXT="alle Aufrufe via Facade"/>
</node>
</node>
<node CREATED="1477785704584" ID="ID_528329491" MODIFIED="1557498707238" TEXT="event handling">
<node CREATED="1477785727469" ID="ID_129787833" LINK="https://developer.gnome.org/gtkmm-tutorial/stable/chapter-signals.html.en" MODIFIED="1557498707238" TEXT="Guide: Kapitel &quot;Signals&quot;"/>
<node CREATED="1477785747138" ID="ID_4618201" LINK="https://developer.gnome.org/gtkmm-tutorial/stable/sec-xeventsignals.html.en" MODIFIED="1557498707238" TEXT="speziell Details zu event Handlern: X event signals">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1617889469414" ID="ID_1224226747" LINK="https://developer.gnome.org/gtk3/stable/chap-input-handling.html" MODIFIED="1617889488739" TEXT="The GTK Event handling model">
<icon BUILTIN="info"/>
</node>
<node CREATED="1477785807338" ID="ID_80062368" MODIFIED="1557498707238" TEXT="wie">
<icon BUILTIN="info"/>
<node CREATED="1477785809930" ID="ID_596393977" MODIFIED="1557498707238" TEXT="signal connect()"/>
<node COLOR="#ca1b00" CREATED="1477785830295" ID="ID_94782325" MODIFIED="1557498707238" TEXT="-- oder --"/>
<node CREATED="1477785818920" ID="ID_1600280983" MODIFIED="1557498707238" TEXT="on_xxx() &#xfc;berschreiben">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1600280983" ENDARROW="Default" ENDINCLINATION="893;0;" ID="Arrow_ID_1707544457" SOURCE="ID_111966354" STARTARROW="None" STARTINCLINATION="893;0;"/>
</node>
</node>
<node CREATED="1477785856731" ID="ID_63204089" MODIFIED="1557498707238" TEXT="R&#xfc;ckgabewert: true == fertig behandelt"/>
<node CREATED="1614466718256" FOLDED="true" ID="ID_1861948898" LINK="https://developer.gnome.org/libsigc++-tutorial/stable/" MODIFIED="1614467271110" TEXT="beruht auf Lib SigC++">
<node CREATED="1614466752396" ID="ID_741341742" MODIFIED="1614466766212" TEXT="diese unterst&#xfc;tzt inzwischen voll C++11 (incl Lambdas)"/>
<node CREATED="1614466921957" ID="ID_427930105" MODIFIED="1614467268405" TEXT="Thema: track and detach slots">
<icon BUILTIN="info"/>
<node CREATED="1614466956096" ID="ID_1002681236" MODIFIED="1614466978183" TEXT="Signal k&#xf6;nnte Slot auf einem bereits toten Objekt aufrufen">
<icon BUILTIN="clanbomber"/>
</node>
<node CREATED="1614466978880" ID="ID_1226117301" MODIFIED="1614467017795" TEXT="sigc::trackable : Basisklasse f&#xfc;r Objekte, die Slots automatisch deaktivieren"/>
<node CREATED="1614467041725" ID="ID_1616467014" MODIFIED="1614467059518" TEXT="slot(mem_fun(stigc::trackable, ....)">
<node CREATED="1614467070937" ID="ID_651462037" MODIFIED="1614467085686" TEXT="dieser wird nicht mehr aufgerufen nach dem das Trackable tot ist"/>
<node CREATED="1614467086284" ID="ID_1708957515" MODIFIED="1614467105649" TEXT="analog f&#xfc;r alle Verbindungen via &lt;signal&gt;.connect()"/>
</node>
<node CREATED="1614467221680" ID="ID_1190660197" MODIFIED="1614467233958" TEXT="alternativ kann man lambdas direkt anschlie&#xdf;en">
<node CREATED="1614467235118" ID="ID_1908157491" MODIFIED="1614467242637" TEXT="dann gibt es aber kein Tracking"/>
<node CREATED="1614467243390" ID="ID_162571863" MODIFIED="1614467252868" TEXT="se sei denn, man verwendet sigc::track_obj"/>
<node CREATED="1614467253912" ID="ID_230224690" LINK="https://developer.gnome.org/libsigc++/stable/group__track__obj.html" MODIFIED="1617458023813" TEXT="siehe Beispiel in der Doku">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <div http-equiv="content-type" content="text/html; charset=utf-8" class="fragment">
      <div class="line">
        struct bar : public&#160;<a class="code" href="https://developer.gnome.org/libsigc++/stable/structsigc_1_1trackable.html">sigc::trackable</a>&#160;{};
      </div>
      <div class="line">
        sigc::signal&lt;void()&gt; some_signal;
      </div>
      <div class="line">
        void&#160;foo(bar&amp;);
      </div>
      <div class="line">
        {
      </div>
      <div class="line">
        bar some_bar;
      </div>
      <div class="line">
        some_signal.connect([&amp;some_bar](){ foo(some_bar); });
      </div>
      <div class="line">
        // NOT disconnected automatically when some_bar goes out of scope
      </div>
      <div class="line">
        some_signal.connect(<a class="code" href="https://developer.gnome.org/libsigc++/stable/group__track__obj.html#ga7986f33675aec143d9afbfe968f1c7ba">sigc::track_obj</a>([&amp;some_bar](){ foo(some_bar); }, some_bar);
      </div>
      <div class="line">
        // disconnected automatically when some_bar goes out of scope
      </div>
      <div class="line">
        }
      </div>
    </div>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
<node CREATED="1617571049865" FOLDED="true" ID="ID_1775827325" MODIFIED="1617571061764" TEXT="Low-Level-Events (GDK)">
<node CREATED="1617571081549" ID="ID_758420897" LINK="https://developer.gnome.org/gtkmm-tutorial/stable/sec-xeventsignals.html.en" MODIFIED="1617571132608" TEXT="Tutorial"/>
<node CREATED="1617578520434" ID="ID_1901070467" MODIFIED="1617578522333" TEXT="Quellen">
<node CREATED="1617578526137" ID="ID_1073829112" MODIFIED="1617578530459" TEXT="gdkevents.h"/>
</node>
<node CREATED="1666314102389" ID="ID_775914278" MODIFIED="1666314192593" TEXT="Empfang von Events einrichten">
<linktarget COLOR="#7788e0" DESTINATION="ID_775914278" ENDARROW="Default" ENDINCLINATION="-1021;-87;" ID="Arrow_ID_632223489" SOURCE="ID_2075291" STARTARROW="None" STARTINCLINATION="-1049;77;"/>
<node CREATED="1666313931612" ID="ID_1877761104" LINK="https://developer-old.gnome.org/gtkmm/3.20/classGtk_1_1Widget.html#adeb38a3d5988a0e31055bbd2edb2e954" MODIFIED="1666314244599" TEXT="siehe Beschreibung zu Gtk::Widget::set_events(Gdk::EventMask)">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    The event mask determines which events a widget will receive. Keep in mind that different widgets have different default event masks, and by changing the event mask you may disrupt a widget&#8217;s functionality, so be careful. This function must be called while a widget is unrealized. Consider

    <p>
      <a http-equiv="content-type" content="text/html; charset=utf-8" class="el" href="https://developer-old.gnome.org/gtkmm/3.20/classGtk_1_1Widget.html#a1af589cb1d8764be5abf5579ffb69bec" title="Adds the events in the bitfield events to the event mask for widget. ">add_events()</a>&#160;for widgets that are already realized, or if you want to preserve the existing event mask. This function can&#8217;t be used with widgets that have no window. (See <a class="el" href="https://developer-old.gnome.org/gtkmm/3.20/classGtk_1_1Widget.html#a00d5da71916c20935fa7b9d856b248c2" title="Determines whether widget has a Gdk::Window of its own. ">get_has_window()</a>). To get events on those widgets, place them inside a <a class="el" href="https://developer-old.gnome.org/gtkmm/3.20/classGtk_1_1EventBox.html" title="Event capturing box. ">Gtk::EventBox</a>&#160;and receive events on the event box.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1666314867550" ID="ID_1764116146" MODIFIED="1666314878146" TEXT="Voraussetzung: Widget mu&#xdf; ein GdkWindow haben">
<node CREATED="1666315602187" ID="ID_1896183986" MODIFIED="1666315703501" TEXT="nur einige Widgets haben ein Window">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1666315623272" ID="ID_1662006698" MODIFIED="1666315697281" TEXT="das sind auch diejenigen, die spezivische Event-Funktionalit&#xe4;t bieten">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Beispiel:
    </p>
    <ul>
      <li>
        Button hat ein Window, denn er m&#246;chte button_pressed-Events empfangen
      </li>
      <li>
        Frame dagegen hat kein Window, Icon auch nicht
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node CREATED="1666315712676" ID="ID_702286995" MODIFIED="1666315725520" TEXT="Tip: get_has_window() zur Diagnose">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1666314914943" ID="ID_264147295" MODIFIED="1666314936815" TEXT="Gtk::EventBox : Container zum Empfangen von Events">
<node CREATED="1666315152544" ID="ID_658878845" MODIFIED="1666315166554" TEXT="visible_window">
<node CREATED="1666315167614" ID="ID_247667753" MODIFIED="1666315176186" TEXT="ja: Hintergrund-Fenster"/>
<node CREATED="1666315176870" ID="ID_736709885" MODIFIED="1666315182856" TEXT="nein: reiner Event-F&#xe4;nger">
<node CREATED="1666315189291" ID="ID_1252686683" MODIFIED="1666315277488" TEXT="vorsicht Falle">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      wenn ein Kind-Widget sein eigenes Fenster aufmacht, dann ist ein unsichtbares EventBox-GdkWindow <i>nicht ein Parent-Window</i>&#160;von dem Kind-Widget-Window. Das kann das Propagieren von Events verhindern
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
<node CREATED="1666315289541" ID="ID_1282030961" MODIFIED="1666315295520" TEXT="above/below child">
<node CREATED="1666315298266" ID="ID_968292588" MODIFIED="1666315309926" TEXT="wer empf&#xe4;ngt die Events zuerst?"/>
<node CREATED="1666315310777" ID="ID_1344206532" MODIFIED="1666315324021" TEXT="above: EventBox &#xfc;berdeckt und greift alle Events ab"/>
<node CREATED="1666315325549" ID="ID_1209236546" MODIFIED="1666315333027" TEXT="below: erst das Kind, dann Propagation"/>
</node>
</node>
</node>
<node CREATED="1617576420772" ID="ID_1731089051" MODIFIED="1617578512853" TEXT="F&#xe4;lle">
<node CREATED="1617578538614" ID="ID_312257050" MODIFIED="1617578538614" TEXT="_GdkEventMotion"/>
<node CREATED="1617578546055" MODIFIED="1617578546055" TEXT="_GdkEventButton"/>
</node>
</node>
<node CREATED="1617889018573" FOLDED="true" ID="ID_366430158" MODIFIED="1617889193688" TEXT="&quot;grab&quot; (some) events">
<linktarget COLOR="#3f56d9" DESTINATION="ID_366430158" ENDARROW="Default" ENDINCLINATION="-1512;175;" ID="Arrow_ID_1894977369" SOURCE="ID_1217512191" STARTARROW="None" STARTINCLINATION="-5374;669;"/>
<node CREATED="1617889216544" ID="ID_758949629" MODIFIED="1617889221522" TEXT="Doku/Beschreibungen">
<node CREATED="1617889225238" ID="ID_1356113723" LINK="https://www.linuxtopia.org/online_books/gui_toolkit_guides/gtk+_gnome_application_development/sec-gdkcursor_1.html" MODIFIED="1617889237503" TEXT="Linuxtopia: grabbing the pointer"/>
<node CREATED="1617912074084" ID="ID_1495099926" LINK="https://developer.gnome.org/gtk3/stable/chap-input-handling.html#id-1.2.7.3.7" MODIFIED="1617912084177" TEXT="Definition: implicit and explicit grabs"/>
</node>
<node CREATED="1617889737497" ID="ID_1734077476" MODIFIED="1617889751715" TEXT="auf GDK-Ebene f&#xfc;r das Display(X) insgesamt">
<node CREATED="1617891813242" ID="ID_573627567" MODIFIED="1617891819801" TEXT="gilt f&#xfc;r alle Applikationen"/>
<node CREATED="1617891820437" ID="ID_159394462" MODIFIED="1617891886412" TEXT="aber nur f&#xfc;r die low-level-Maus-Events">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      jedoch indirekt dann auch f&#252;r darauf aufbauende Events, z.B. GTK-Events, weil eben nur noch das zum grabbed window geh&#246;rige Widgets diese Events &#252;berhaupt sieht
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1617891887779" ID="ID_659611722" MODIFIED="1617891903519" TEXT="zuverl&#xe4;ssig beenden, sonst friert das gesamte Display ein">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1617889752694" ID="ID_1346101076" MODIFIED="1617889805828" TEXT="GTK+ bietet zus&#xe4;tzlich ein &quot;grabbing widget&quot; (z.B. modale Dialogbox)">
<linktarget COLOR="#6578a3" DESTINATION="ID_1346101076" ENDARROW="Default" ENDINCLINATION="-2521;108;" ID="Arrow_ID_1579913575" SOURCE="ID_1338391945" STARTARROW="None" STARTINCLINATION="-4417;512;"/>
<node CREATED="1617889845780" ID="ID_786899199" LINK="https://www.linuxtopia.org/online_books/gui_toolkit_guides/gtk+_gnome_application_development/sec-gdkevent_2.html#SEC-GRABS" MODIFIED="1617889861555" TEXT="Linuxtopia: receiving GDK events in GTK+"/>
<node CREATED="1617891663427" ID="ID_548825317" LINK="https://developer.gnome.org/gtk3/stable/gtk3-General.html#gtk-grab-add" MODIFIED="1617891680797" TEXT="gtk_grab_add(widget)"/>
<node CREATED="1617891683600" ID="ID_546679257" MODIFIED="1617891717399" TEXT="das ist ein ziemlich starker Eingriff">
<node CREATED="1617891718627" ID="ID_498617078" MODIFIED="1617891750043" TEXT="ein &quot;grabed widget&quot; empf&#xe4;ngt alle Maus- und Tastatur-Events"/>
<node CREATED="1617891750628" ID="ID_1890756438" MODIFIED="1617891763768" TEXT="der Rest des GUI ist weitgehend deaktiviert"/>
<node CREATED="1617891777971" ID="ID_919159260" MODIFIED="1617891803969" TEXT="man mu&#xdf; es zuverl&#xe4;ssig beenden, sonst ist das UI praktisch tot">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
</node>
<node CREATED="1618067891301" ID="ID_1730673667" MODIFIED="1618067900500" TEXT="Gestures in GTK">
<node CREATED="1618067902248" ID="ID_713192110" MODIFIED="1618067922572" TEXT="relatetd topic: Shortcuts">
<node CREATED="1618067923908" ID="ID_989712509" MODIFIED="1618067928769" TEXT="GtkShortcutController">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
<node CREATED="1663946250024" ID="ID_1142643633" MODIFIED="1663946255308" TEXT="Layout management">
<node CREATED="1663946256977" FOLDED="true" ID="ID_1464608958" MODIFIED="1672843870753" TEXT="Thema: Size-Handling">
<arrowlink COLOR="#7584a4" DESTINATION="ID_464303848" ENDARROW="Default" ENDINCLINATION="115;-178;" ID="Arrow_ID_1938018383" STARTARROW="None" STARTINCLINATION="328;-32;"/>
<linktarget COLOR="#536cc0" DESTINATION="ID_1464608958" ENDARROW="Default" ENDINCLINATION="-1020;1248;" ID="Arrow_ID_1013900284" SOURCE="ID_1969670799" STARTARROW="None" STARTINCLINATION="-2004;139;"/>
<node COLOR="#435e98" CREATED="1612527499386" FOLDED="true" HGAP="34" ID="ID_615948747" MODIFIED="1664401278771" TEXT="Untersuchung: size_request &#x2014; 2/21 + 9/22 f&#xfc;r Clip-Display" VSHIFT="-49">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ....bin damals mit size_request eingestiegen &#8212; aber von dort bald auf <font face="Monospaced" size="3" color="#f72929">gtk_widget_size_allocate_with_baseline </font>gesto&#223;en; letzteres ist die eigentliche zentrale Funktion
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#364ec7" DESTINATION="ID_615948747" ENDARROW="Default" ENDINCLINATION="-1440;0;" ID="Arrow_ID_866144981" SOURCE="ID_643882250" STARTARROW="None" STARTINCLINATION="-1942;189;"/>
<linktarget COLOR="#4b67b0" DESTINATION="ID_615948747" ENDARROW="Default" ENDINCLINATION="-1100;0;" ID="Arrow_ID_1297405131" SOURCE="ID_1143769023" STARTARROW="None" STARTINCLINATION="-2000;141;"/>
<icon BUILTIN="info"/>
<node CREATED="1612530135923" ID="ID_597723725" MODIFIED="1612530155607" TEXT="gtkwidget.c Zeile 5960ff">
<icon BUILTIN="info"/>
</node>
<node COLOR="#990000" CREATED="1664400907408" HGAP="25" ID="ID_1036425614" MODIFIED="1664401150443" TEXT="Vorsicht Sackgasse" VSHIFT="1">
<icon BUILTIN="stop-sign"/>
<node CREATED="1612532127121" FOLDED="true" ID="ID_1698900734" MODIFIED="1664474635424" TEXT="gtk_widget_set_size_request">
<icon BUILTIN="idea"/>
<icon BUILTIN="stop-sign"/>
<node CREATED="1663948672795" ID="ID_1935344830" MODIFIED="1663948681710" TEXT=" gtkwidget.c 11186"/>
<node CREATED="1663949014421" ID="ID_761292468" MODIFIED="1663949024301" TEXT="definiert die Mindes-Anforderung dieses Widgets"/>
<node CREATED="1663949035261" ID="ID_1775424216" MODIFIED="1663949054174" TEXT="kann undefiniert sein (-1) &#x27f9; dann natural request"/>
<node CREATED="1612532223794" ID="ID_1417902323" MODIFIED="1612532224951" TEXT="gtk_widget_set_usize_internal">
<node CREATED="1612532273671" ID="ID_1466904431" MODIFIED="1612532285991" TEXT="&#xfc;bernimmt die Werte in den internen PImpl"/>
<node CREATED="1612532301521" ID="ID_1985717542" MODIFIED="1663954418865">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      setzt bei Bedarf ein <b>queue_resize</b>&#160;ab
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
<node CREATED="1663948849724" ID="ID_592500885" MODIFIED="1663948855049" TEXT="wenn widget sichtbar ist"/>
<node CREATED="1663948855574" ID="ID_1581313527" MODIFIED="1663948882381" TEXT="und H&#xf6;he oder Breite wirklich ge&#xe4;ndert sind"/>
</node>
<node CREATED="1663954499071" ID="ID_1959081786" MODIFIED="1663955501010">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <u>danach</u>: priv-&gt;resize_needed = TRUE
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#852376" DESTINATION="ID_563938836" ENDARROW="Default" ENDINCLINATION="18;-93;" ID="Arrow_ID_1194665328" STARTARROW="None" STARTINCLINATION="-211;17;"/>
</node>
</node>
<node CREATED="1612532323107" ID="ID_194122765" MODIFIED="1612532337848" TEXT="d.h. danach sind priv-&gt;height bzw priv-&gt;width gesetzt"/>
<node CREATED="1663949727304" ID="ID_1165234670" MODIFIED="1663949735266" TEXT="setzt gtk_widget_set_alloc_needed">
<node CREATED="1663949745454" ID="ID_313723300" MODIFIED="1663951388123" TEXT="Flag priv-&gt;alloc_needed">
<arrowlink COLOR="#b51c69" DESTINATION="ID_1132981577" ENDARROW="Default" ENDINCLINATION="34;-19;" ID="Arrow_ID_684196469" STARTARROW="None" STARTINCLINATION="-49;6;"/>
</node>
</node>
</node>
<node CREATED="1664400929963" ID="ID_1240876072" MODIFIED="1664400943998" TEXT="size_request sieht ganz stark nach einem obsoleten Konzept aus">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1664400954960" ID="ID_776024263" MODIFIED="1664400966888" TEXT="er wirkt sich eigentlich nur auf die min-size aus"/>
<node CREATED="1664400967726" ID="ID_1498608883" MODIFIED="1664465602240" TEXT="und diese wird oft nur f&#xfc;r Konsistenzchecks verwendet"/>
<node CREATED="1664465681826" ID="ID_1467702205" MODIFIED="1664465820561" TEXT="nicht klar wann die min-size verwendet wird">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <ul>
      <li>
        Container-Widgets haben so etwas wie ein generisches Layout-Muster &#10233; <b>gtk_widget_size_allocate_with_baseline</b>
      </li>
      <li>
        ABER es gibt anscheinend viele Widgets, die das direkt machen (und vom Container-Konzept bewegt sich GTK weg, zu Gunsten des Konzepts &quot;CSS Gadget&quot;); konkret habe ich bei einem <b>GtkFrame</b>&#160;durchaus beobachtet, da&#223; dem Widget nur seine geforderte min-size zugeteilt wurde
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1664474172428" ID="ID_982750434" MODIFIED="1664474183159" TEXT="normaler Container-Code ignoriert sie"/>
<node CREATED="1664474184106" ID="ID_1675446189" MODIFIED="1664474193374" TEXT="flow-Layout beachtet sie als Anschlag"/>
<node CREATED="1664474193962" ID="ID_1768206919" MODIFIED="1664486187383" TEXT="GtkLayout(Canvas) verwendet sie als Basis">
<arrowlink COLOR="#a9b4c1" DESTINATION="ID_1788566311" ENDARROW="Default" ENDINCLINATION="-47;-177;" ID="Arrow_ID_590130036" STARTARROW="None" STARTINCLINATION="287;18;"/>
<linktarget COLOR="#bed1fd" DESTINATION="ID_1768206919" ENDARROW="Default" ENDINCLINATION="-2510;160;" ID="Arrow_ID_1173769741" SOURCE="ID_1038149541" STARTARROW="None" STARTINCLINATION="-2083;106;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1664467386286" ID="ID_175060844" MODIFIED="1664474394992" TEXT="widget_class-&gt;size_allocate">
<font NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="back"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1664467416306" ID="ID_111898596" MODIFIED="1664474697760" STYLE="bubble">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <u>Einstiegspunkt</u>&#160;aus vielen Widgets
    </p>
  </body>
</html></richcontent>
<edge COLOR="#5247dc"/>
<font NAME="SansSerif" SIZE="14"/>
</node>
<node CREATED="1664474418764" ID="ID_602033868" MODIFIED="1664474496100" TEXT="wer ruft das auf?">
<linktarget COLOR="#655e7d" DESTINATION="ID_602033868" ENDARROW="Default" ENDINCLINATION="-419;67;" ID="Arrow_ID_1884820801" SOURCE="ID_165291290" STARTARROW="None" STARTINCLINATION="-846;67;"/>
<node CREATED="1664471955447" ID="ID_748019971" MODIFIED="1664474513890" TEXT="Aufruf via widget_class!"/>
<node CREATED="1664471995913" ID="ID_486609942" MODIFIED="1664472003787" TEXT="h&#xe4;ngt vom Widget ab">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1664472301300" ID="ID_1282453232" MODIFIED="1664472485480" TEXT="nur wenige Aufrufe">
<node CREATED="1664472486343" ID="ID_12332143" MODIFIED="1664472489155" TEXT="top-level">
<node CREATED="1664472498670" ID="ID_928074515" MODIFIED="1664472506937" TEXT="gtk_application_window_real_size_allocate"/>
<node CREATED="1664472541528" ID="ID_1301393892" MODIFIED="1664472545202" TEXT="einige Dialogboxen"/>
<node CREATED="1664472707992" ID="ID_1435876974" MODIFIED="1664474945399">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <b>gtk_widget_size_allocate_with_baseline</b>
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#692b5b" DESTINATION="ID_563938836" ENDARROW="Default" ENDINCLINATION="668;-205;" ID="Arrow_ID_378269338" STARTARROW="None" STARTINCLINATION="-279;578;"/>
</node>
</node>
<node CREATED="1664472574035" ID="ID_535631528" MODIFIED="1664472582542" TEXT="gtk_label_size_allocate"/>
<node CREATED="1664474775284" ID="ID_1855152369" MODIFIED="1664474877769" TEXT="gtk_layout_size_allocate">
<arrowlink COLOR="#d8764f" DESTINATION="ID_159142787" ENDARROW="Default" ENDINCLINATION="53;-60;" ID="Arrow_ID_1501616113" STARTARROW="None" STARTINCLINATION="217;26;"/>
</node>
<node CREATED="1664472596690" ID="ID_1526836824" MODIFIED="1664472603892" TEXT="gtk_level_bar_size_allocate"/>
<node CREATED="1664472629652" ID="ID_844975218" MODIFIED="1664472635736" TEXT="gtk_overlay_size_allocate"/>
<node CREATED="1664472651913" ID="ID_1391420718" MODIFIED="1664472657652" TEXT="gtk_scale_size_allocate"/>
</node>
</node>
<node CREATED="1664473954962" ID="ID_1808329181" MODIFIED="1664474389674" TEXT="">
<node CREATED="1664473992889" ID="ID_1943066029" MODIFIED="1664474570171" TEXT="Normalerweise">
<node CREATED="1664474571526" ID="ID_1267258985" MODIFIED="1664474577490" TEXT="fragt das Kind-Widget"/>
<node CREATED="1664474578174" ID="ID_1361243851" MODIFIED="1664474587235" TEXT="ermittelt daraus den Platzbedarf"/>
</node>
<node CREATED="1664474033815" ID="ID_559670461" MODIFIED="1664474077090">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <b>aber</b>: spezielle Widgets/Container
    </p>
    <p>
      behandeln hier die Child-Widgets
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
<node CREATED="1664472707992" ID="ID_1917960846" MODIFIED="1664474093490">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <b>gtk_widget_size_allocate_with_baseline</b>
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#692b5b" DESTINATION="ID_563938836" ENDARROW="Default" ENDINCLINATION="621;-190;" ID="Arrow_ID_152388281" STARTARROW="None" STARTINCLINATION="-357;417;"/>
</node>
<node CREATED="1664474775284" ID="ID_256729062" MODIFIED="1664474808855" TEXT="gtk_layout_size_allocate">
<node CREATED="1664474099975" ID="ID_159142787" MODIFIED="1664474867466" TEXT="Canvas-Widget: GtkLayout">
<linktarget COLOR="#d8764f" DESTINATION="ID_159142787" ENDARROW="Default" ENDINCLINATION="53;-60;" ID="Arrow_ID_1501616113" SOURCE="ID_1855152369" STARTARROW="None" STARTINCLINATION="217;26;"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1664474832124" ID="ID_489352324" MODIFIED="1664474842148" TEXT="gtk_layout_allocate_child"/>
<node CREATED="1664474124347" ID="ID_304352916" MODIFIED="1664474846281" TEXT="ist speziell">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1664474128731" ID="ID_1788566311" MODIFIED="1664474227120" TEXT="geht bei der Zuteilung vom min-Size aus">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1788566311" ENDARROW="Default" ENDINCLINATION="-47;-177;" ID="Arrow_ID_590130036" SOURCE="ID_1768206919" STARTARROW="None" STARTINCLINATION="287;18;"/>
</node>
<node CREATED="1664474142145" ID="ID_1619579487" MODIFIED="1664474155419" TEXT="dann weiter height-for-width oder umgekehrt"/>
</node>
</node>
</node>
</node>
<node CREATED="1664467426400" ID="ID_323560628" MODIFIED="1664467636855">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Beachte: <font face="Monospaced" size="3">_GtkCssGadgetClass-&gt;<b>allocate</b></font>
    </p>
  </body>
</html></richcontent>
<node CREATED="1664467481890" ID="ID_1905806062" MODIFIED="1664467488412" TEXT="bekommt eine &quot;allocate_func&quot;"/>
<node CREATED="1664467720488" ID="ID_994987639" MODIFIED="1664467794848">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <u><i>typischerweise</i>(via GadgetClass)</u>: <font face="Monospaced">gtk_css_gadget_real_allocate</font>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1664467644459" ID="ID_45450826" MODIFIED="1664467662907" TEXT="CSS-Gadgets werden in Zukunft wichtiger">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1664468000858" ID="ID_1650947202" MODIFIED="1664468006117" TEXT="gadget_class-&gt;allocate">
<node CREATED="1664468030167" ID="ID_1269527361" MODIFIED="1664468035642" TEXT="von: gtk_css_custom_gadget_allocate"/>
<node CREATED="1664468049900" ID="ID_1444284149" MODIFIED="1664468072369" TEXT="von: gtk_css_gadget_allocate">
<icon BUILTIN="back"/>
</node>
</node>
<node CREATED="1664468221301" ID="ID_815029757" MODIFIED="1664468225639" TEXT="Beispiel GtkFrame">
<node CREATED="1664468568742" ID="ID_276645627" MODIFIED="1664468573479" TEXT="Aufruf kommt von gtk_css_custom_gadget_allocate">
<node CREATED="1664468592906" ID="ID_240073713" MODIFIED="1664468602629" TEXT="effektiv von gadget_class-&gt;allocate"/>
<node CREATED="1664468725965" ID="ID_1819801827" MODIFIED="1664468747176">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      und damit wieder von <b><font face="Monospaced">gtk_css_gadget_allocate</font></b>
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#3865cd" DESTINATION="ID_1819801827" ENDARROW="Default" ENDINCLINATION="99;109;" ID="Arrow_ID_1378453284" SOURCE="ID_588778933" STARTARROW="None" STARTINCLINATION="390;0;"/>
</node>
<node CREATED="1664469502600" ID="ID_611893108" MODIFIED="1664469518960">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      allerdings dann vom <u>umschlie&#223;enden Widget</u>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1664469528852" ID="ID_1753828620" MODIFIED="1664469548960">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Implementierung: <b><font face="Monospaced">gtk_frame_allocate</font></b>
    </p>
  </body>
</html></richcontent>
<node CREATED="1664469632391" ID="ID_1730366357" MODIFIED="1664469639668" TEXT="ignoriert die &#xfc;bergebene Allocation"/>
<node CREATED="1664469640285" ID="ID_1706931088" MODIFIED="1664469888214" TEXT="Ausgabe-Parameter ist: out_clip">
<linktarget COLOR="#35d4cd" DESTINATION="ID_1706931088" ENDARROW="Default" ENDINCLINATION="-220;-17;" ID="Arrow_ID_1835745476" SOURCE="ID_1957306429" STARTARROW="None" STARTINCLINATION="74;-5;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1664469669402" ID="ID_925561460" MODIFIED="1664469736117" TEXT="berechnet from scratch eine child_allocation">
<arrowlink COLOR="#4483c1" DESTINATION="ID_24474469" ENDARROW="Default" ENDINCLINATION="75;-66;" ID="Arrow_ID_839164355" STARTARROW="None" STARTINCLINATION="-113;9;"/>
</node>
<node CREATED="1664468238896" ID="ID_1603959960" MODIFIED="1664468245349" TEXT="justiert die um die Frame-Dekoration"/>
<node CREATED="1664469756095" ID="ID_1426249821" MODIFIED="1664469802527" TEXT="und gibt das an das eigene Gadget weiter">
<arrowlink COLOR="#49a9e2" DESTINATION="ID_588778933" ENDARROW="Default" ENDINCLINATION="17;-13;" ID="Arrow_ID_1888006033" STARTARROW="None" STARTINCLINATION="-114;8;"/>
</node>
</node>
<node CREATED="1664468227932" ID="ID_24474469" MODIFIED="1664469730107" TEXT="gtk_frame_compute_child_allocation">
<linktarget COLOR="#4483c1" DESTINATION="ID_24474469" ENDARROW="Default" ENDINCLINATION="75;-66;" ID="Arrow_ID_839164355" SOURCE="ID_925561460" STARTARROW="None" STARTINCLINATION="-113;9;"/>
<node CREATED="1664468348482" ID="ID_1161990345" MODIFIED="1664468349364" TEXT="gtk_frame_real_compute_child_allocation"/>
<node CREATED="1664468414498" ID="ID_1237799901" MODIFIED="1664468418149" TEXT="diese ruft auf: gtk_css_gadget_get_content_allocation">
<node CREATED="1664470070987" ID="ID_1498695149" MODIFIED="1664470117430">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      dieses baut auf auf: <b><font face="Monospaced">gtk_css_gadget_allocate</font></b>
    </p>
  </body>
</html></richcontent>
<node CREATED="1664471526800" ID="ID_346003014" MODIFIED="1664471579040" TEXT="es verwendet n&#xe4;mlich den vorhandenen priv-&gt;allocated_size"/>
<node CREATED="1664471678866" ID="ID_1301393710" MODIFIED="1664471693326" TEXT="und der wird nur von gtk_css_gadget_allocate gesetzt"/>
<node CREATED="1664471696617" ID="ID_165291290" MODIFIED="1664474496099" TEXT="Preisfrage: wer ruft letzteres auf?">
<arrowlink COLOR="#655e7d" DESTINATION="ID_602033868" ENDARROW="Default" ENDINCLINATION="-419;67;" ID="Arrow_ID_1884820801" STARTARROW="None" STARTINCLINATION="-846;67;"/>
<icon BUILTIN="help"/>
<node CREATED="1664472004680" ID="ID_1104307328" MODIFIED="1664473489163">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      (konkret im Beispiel): <b><font face="Monospaced">gtk_frame_size_allocate</font></b>
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1664473514122" ID="ID_1482686732" MODIFIED="1664473548372" TEXT="Fazit: die Basis-Allokation stammt aus der bekannten Berechnungs-Routine">
<icon BUILTIN="back"/>
</node>
</node>
<node CREATED="1664470127589" ID="ID_737926476" MODIFIED="1664470137023" TEXT="dekoriert und erweitert gem&#xe4;&#xdf; CSS"/>
<node CREATED="1664470140690" ID="ID_155338555" MODIFIED="1664470151199" TEXT="setzt damit die Werte im Ausgabe-parameter"/>
</node>
</node>
<node CREATED="1664468245849" ID="ID_588778933" MODIFIED="1664469796939">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      ruft damit <b><font face="Monospaced">gtk_css_gadget_allocate</font></b>
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#3865cd" DESTINATION="ID_1819801827" ENDARROW="Default" ENDINCLINATION="99;109;" ID="Arrow_ID_1378453284" STARTARROW="None" STARTINCLINATION="390;0;"/>
<linktarget COLOR="#49a9e2" DESTINATION="ID_588778933" ENDARROW="Default" ENDINCLINATION="17;-13;" ID="Arrow_ID_1888006033" SOURCE="ID_1426249821" STARTARROW="None" STARTINCLINATION="-114;8;"/>
</node>
<node CREATED="1664469820733" ID="ID_1957306429" MODIFIED="1664469888214" TEXT="Resultat: out-clip (incl shaddow)">
<arrowlink COLOR="#35d4cd" DESTINATION="ID_1706931088" ENDARROW="Default" ENDINCLINATION="-220;-17;" ID="Arrow_ID_1835745476" STARTARROW="None" STARTINCLINATION="74;-5;"/>
</node>
</node>
</node>
</node>
<node CREATED="1663954860585" ID="ID_1293292924" MODIFIED="1663954864003" TEXT="resize_needed">
<node CREATED="1663954865611" ID="ID_1181046845" MODIFIED="1663954871465" TEXT="interne Flag im widget"/>
<node CREATED="1663954879636" ID="ID_1910791425" MODIFIED="1663954884163" TEXT="Verwendungen">
<node CREATED="1663954901013" MODIFIED="1663954901013" TEXT="gtk_widget_needs_allocate"/>
<node CREATED="1663954909806" ID="ID_1374760334" MODIFIED="1663954909806" TEXT="gtk_widget_ensure_resize">
<node CREATED="1663954912759" ID="ID_600146300" MODIFIED="1663954920356" TEXT="implementiert durch L&#xf6;schen eines Cache*"/>
<node CREATED="1663954925510" ID="ID_1181014721" MODIFIED="1663954926481" TEXT="_gtk_size_request_cache_clear"/>
<node CREATED="1663954927597" ID="ID_871436829" MODIFIED="1663954950237" TEXT="Vermutung: dort wird gespeichert, was nicht resized werden mu&#xdf;">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1663954959625" ID="ID_758176211" MODIFIED="1663954960741" TEXT="gtk_widget_get_resize_needed"/>
</node>
</node>
<node CREATED="1612535679525" HGAP="30" ID="ID_563938836" MODIFIED="1663955495496" VSHIFT="26">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      alle F&#228;den laufen zusammen bei....
    </p>
    <p>
      <b>gtk_widget_size_allocate_with_baseline</b>
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#4c96df" DESTINATION="ID_619170334" ENDARROW="Default" ENDINCLINATION="22;-288;" ID="Arrow_ID_1241133759" STARTARROW="None" STARTINCLINATION="-30;150;"/>
<linktarget COLOR="#852376" DESTINATION="ID_563938836" ENDARROW="Default" ENDINCLINATION="18;-93;" ID="Arrow_ID_1194665328" SOURCE="ID_1959081786" STARTARROW="None" STARTINCLINATION="-211;17;"/>
<linktarget COLOR="#692b5b" DESTINATION="ID_563938836" ENDARROW="Default" ENDINCLINATION="668;-205;" ID="Arrow_ID_378269338" SOURCE="ID_1435876974" STARTARROW="None" STARTINCLINATION="-279;578;"/>
<linktarget COLOR="#692b5b" DESTINATION="ID_563938836" ENDARROW="Default" ENDINCLINATION="621;-190;" ID="Arrow_ID_152388281" SOURCE="ID_1917960846" STARTARROW="None" STARTINCLINATION="-357;417;"/>
<icon BUILTIN="idea"/>
<node CREATED="1663955121019" ID="ID_1249298775" MODIFIED="1663955138898" TEXT="wird direkt anscheinend nur von Init aus aktiviert"/>
<node CREATED="1663955139409" ID="ID_857432800" MODIFIED="1663955255321" TEXT="aber die Call-Graphen sind schwer durchschaubar">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...da Funktionen irgendwo dann an Funktionspointer zugewiesen werden f&#252;r &quot;virtuelle Funktionen&quot;
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1663955335710" ID="ID_1881953589" MODIFIED="1663955347072" TEXT="Einstieg: gtk_widget_ensure_allocate">
<node CREATED="1663955359715" ID="ID_627182614" MODIFIED="1663955359715" TEXT="gtk_container_real_check_resize"/>
<node CREATED="1663955369802" ID="ID_929212584" MODIFIED="1663955415140" TEXT="das ist die  class-&gt;check_resize   VFunk">
<arrowlink COLOR="#627791" DESTINATION="ID_1244279782" ENDARROW="Default" ENDINCLINATION="226;-55;" ID="Arrow_ID_1806488152" STARTARROW="None" STARTINCLINATION="400;28;"/>
</node>
</node>
</node>
<node CREATED="1612534268245" ID="ID_1296614142" MODIFIED="1663947680137" TEXT="gtk_widget_ensure_allocate">
<icon BUILTIN="back"/>
<node CREATED="1612534275444" ID="ID_1132981577" MODIFIED="1663951388124" TEXT="pr&#xfc;ft Flag ob Allokation notwendig ist">
<linktarget COLOR="#b51c69" DESTINATION="ID_1132981577" ENDARROW="Default" ENDINCLINATION="34;-19;" ID="Arrow_ID_684196469" SOURCE="ID_313723300" STARTARROW="None" STARTINCLINATION="-49;6;"/>
<node CREATED="1612534410570" ID="ID_620587901" MODIFIED="1612534423818" TEXT="Anscheined geht die initiale Allokation &#xfc;ber einen anderen Weg">
<icon BUILTIN="help"/>
</node>
<node CREATED="1612534429503" ID="ID_567668302" MODIFIED="1612534445049" TEXT="hier wird vorausgesezt, da&#xdf; bereits eine valide Allokation besteht"/>
</node>
<node CREATED="1663949865622" ID="ID_758836772" MODIFIED="1663949872083" TEXT="aufgerufen von...">
<node CREATED="1663949997924" ID="ID_1496580283" MODIFIED="1663950003095" TEXT="nach Container-Init"/>
<node CREATED="1663950003563" ID="ID_59538652" MODIFIED="1663950006646" TEXT="rekursiv von ">
<node CREATED="1663950018185" ID="ID_238633492" MODIFIED="1663950018877" TEXT="gtk_widget_size_allocate_with_baseline"/>
<node CREATED="1663950027784" ID="ID_1937200960" MODIFIED="1663950030291" TEXT="f&#xfc;r Kinder"/>
</node>
</node>
<node CREATED="1612534325037" ID="ID_947651551" MODIFIED="1612534327833" TEXT="ruft auf">
<node CREATED="1612534329157" ID="ID_682604518" MODIFIED="1612534330137" TEXT="gtk_widget_get_allocated_size"/>
<node CREATED="1612534338443" ID="ID_585162600" MODIFIED="1612534339967" TEXT="gtk_widget_size_allocate_with_baseline"/>
</node>
<node CREATED="1612534361857" ID="ID_1011780997" MODIFIED="1612534383361" TEXT="Container: ruft rekursiv auf jedem Kind gtk_widget_ensure_allocate"/>
<node CREATED="1663953791941" HGAP="65" ID="ID_1244279782" MODIFIED="1663955453989" TEXT="f&#xfc;hrt weiter zu check_resize" VSHIFT="43">
<linktarget COLOR="#627791" DESTINATION="ID_1244279782" ENDARROW="Default" ENDINCLINATION="226;-55;" ID="Arrow_ID_1806488152" SOURCE="ID_929212584" STARTARROW="None" STARTINCLINATION="400;28;"/>
<node CREATED="1663953805363" ID="ID_1587549150" MODIFIED="1663953812528" TEXT="wieder eine virtuelle Funktion"/>
<node CREATED="1663953813403" ID="ID_656209552" MODIFIED="1663953825583" TEXT="wird offensichtlich von der Initialisierung aus aufgerufen"/>
<node CREATED="1663953843699" ID="ID_1950479692" MODIFIED="1663953845946" TEXT="gtk_window_check_resize">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
</node>
<node CREATED="1663953826319" ID="ID_1109844083" MODIFIED="1663953841300" TEXT="weitere Aufrufe verlieren sich im Nebel">
<icon BUILTIN="smiley-angry"/>
</node>
</node>
</node>
<node CREATED="1663951703391" ID="ID_427278328" MODIFIED="1663951706793" TEXT="widget_class-&gt;size_allocate">
<icon BUILTIN="back"/>
<node CREATED="1663951707842" ID="ID_315178651" MODIFIED="1663951753639" TEXT="virtuelle Funktion">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      wird im class-init mit der jeweiligen konkreten Implementierung belegt, z.b. gtk_button_size_allocate
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1663954200285" ID="ID_398055899" MODIFIED="1663954210495" TEXT="au&#xdf;erdem kann ein Handler / Signal angeschlossen sein">
<node CREATED="1663954234237" ID="ID_1380094030" MODIFIED="1663954234909" TEXT="widget_signals[SIZE_ALLOCATE]"/>
</node>
<node CREATED="1663954295573" ID="ID_1498770016" MODIFIED="1663954312087" TEXT="aufgerufen von gtk_widget_size_allocate_with_baseline">
<arrowlink DESTINATION="ID_1762849787" ENDARROW="Default" ENDINCLINATION="38;-96;" ID="Arrow_ID_1571144985" STARTARROW="None" STARTINCLINATION="476;0;"/>
<node CREATED="1663954335100" HGAP="39" ID="ID_1824384222" MODIFIED="1663954342338" TEXT="letztlich von init" VSHIFT="18"/>
</node>
</node>
<node CREATED="1612535382254" ID="ID_1555274499" MODIFIED="1612535383977" TEXT="gtk_button_size_allocate">
<node CREATED="1612535679525" HGAP="30" ID="ID_462243081" MODIFIED="1663948420227" TEXT="ruft f&#xfc;r sich selber gtk_widget_size_allocate" VSHIFT="26">
<arrowlink COLOR="#4c96df" DESTINATION="ID_619170334" ENDARROW="Default" ENDINCLINATION="22;-288;" ID="Arrow_ID_89255297" STARTARROW="None" STARTINCLINATION="-30;150;"/>
</node>
<node CREATED="1612535398051" ID="ID_565262993" MODIFIED="1612535410704" TEXT="dann: gtk_css_gadget_allocate">
<node CREATED="1612535412121" ID="ID_950467979" MODIFIED="1612535417956" TEXT="f&#xfc;r den Inhalt des Buttons"/>
<node CREATED="1612535418784" ID="ID_1076896202" MODIFIED="1612535429635" TEXT="ensprechend um Margin + Padding reduziert"/>
<node CREATED="1612535549422" ID="ID_1526326867" MODIFIED="1612535563481" TEXT="gadget-&gt;allocate   (virtuelle Funktion)">
<node CREATED="1612535615766" ID="ID_261273731" MODIFIED="1612535656704" TEXT="z.B. gtk_box_gadget_allocate">
<arrowlink DESTINATION="ID_526990189" ENDARROW="Default" ENDINCLINATION="24;0;" ID="Arrow_ID_1005009779" STARTARROW="None" STARTINCLINATION="24;0;"/>
</node>
<node CREATED="1612535648889" ID="ID_526990189" MODIFIED="1612535656704" TEXT="gtk_box_gadget_allocate_child">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_526990189" ENDARROW="Default" ENDINCLINATION="24;0;" ID="Arrow_ID_1005009779" SOURCE="ID_261273731" STARTARROW="None" STARTINCLINATION="24;0;"/>
<node CREATED="1612535679525" HGAP="30" ID="ID_1762849787" MODIFIED="1663956468314" TEXT="ruft dann gtk_widget_size_allocate_with_baseline" VSHIFT="26">
<arrowlink COLOR="#4c96df" DESTINATION="ID_619170334" ENDARROW="Default" ENDINCLINATION="22;-288;" ID="Arrow_ID_1708313707" STARTARROW="None" STARTINCLINATION="-77;137;"/>
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1762849787" ENDARROW="Default" ENDINCLINATION="38;-96;" ID="Arrow_ID_1571144985" SOURCE="ID_1498770016" STARTARROW="None" STARTINCLINATION="476;0;"/>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1612527537150" ID="ID_619170334" MODIFIED="1663967533656" TEXT="gtk_widget_size_allocate">
<arrowlink COLOR="#5c5a78" DESTINATION="ID_1103556230" ENDARROW="Default" ENDINCLINATION="-618;-30;" ID="Arrow_ID_1785324866" STARTARROW="Default" STARTINCLINATION="-4;247;"/>
<linktarget COLOR="#4c96df" DESTINATION="ID_619170334" ENDARROW="Default" ENDINCLINATION="22;-288;" ID="Arrow_ID_1241133759" SOURCE="ID_563938836" STARTARROW="None" STARTINCLINATION="-30;150;"/>
<linktarget COLOR="#4c96df" DESTINATION="ID_619170334" ENDARROW="Default" ENDINCLINATION="22;-288;" ID="Arrow_ID_89255297" SOURCE="ID_462243081" STARTARROW="None" STARTINCLINATION="-30;150;"/>
<linktarget COLOR="#4c96df" DESTINATION="ID_619170334" ENDARROW="Default" ENDINCLINATION="22;-288;" ID="Arrow_ID_1708313707" SOURCE="ID_1762849787" STARTARROW="None" STARTINCLINATION="-77;137;"/>
<node CREATED="1612528130053" ID="ID_1806340634" MODIFIED="1612528177893" TEXT="macht nur etwas f&#xfc;r &quot;toplevel&quot;-Widgets">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      das ist eine Flag in der privaten Widget-Struktur. Keine Ahnung was das bedeutet.<br />Und &#252;brigens: sichtbar mu&#223; das Widget auch noch sein...
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1612529820222" HGAP="22" ID="ID_1943944289" MODIFIED="1663956475522" TEXT="unterscheidet dann" VSHIFT="12">
<node CREATED="1663956186778" HGAP="117" ID="ID_834898748" MODIFIED="1663956450989" TEXT="gtk_widget_get_request_mode()" VSHIFT="37">
<node CREATED="1663956207368" ID="ID_18553128" MODIFIED="1663956217421" TEXT="gtksizerequest.c 450"/>
<node CREATED="1663956419563" ID="ID_1026472626" MODIFIED="1663956420751" TEXT="GTK_WIDGET_GET_CLASS (widget)-&gt;get_request_mode (widget)"/>
<node CREATED="1663956425698" ID="ID_225463858" MODIFIED="1663956441088" TEXT="Doku">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      &#160;* Gets whether the widget prefers a height-for-width layout
    </p>
    <p>
      &#160;* or a width-for-height layout.
    </p>
    <p>
      &#160;*
    </p>
    <p>
      &#160;* #GtkBin widgets generally propagate the preference of
    </p>
    <p>
      &#160;* their child, container widgets need to request something either in
    </p>
    <p>
      &#160;* context of their children or in context of their allocation
    </p>
    <p>
      &#160;* capabilities.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
</node>
<node CREATED="1612529852915" HGAP="22" ID="ID_1335328932" MODIFIED="1663956457164" TEXT="GTK_SIZE_REQUEST_HEIGHT_FOR_WIDTH" VSHIFT="-25">
<node CREATED="1612531874357" ID="ID_321040886" MODIFIED="1663955991363" TEXT="gtk_widget_get_preferred_width">
<linktarget COLOR="#77afb6" DESTINATION="ID_321040886" ENDARROW="Default" ENDINCLINATION="-3752;338;" ID="Arrow_ID_765236235" SOURCE="ID_571017696" STARTARROW="None" STARTINCLINATION="-3454;-1310;"/>
<node CREATED="1612613898889" ID="ID_1906328896" MODIFIED="1612613898889" TEXT="gtk_widget_real_get_width"/>
<node CREATED="1612614169294" ID="ID_1044574457" MODIFIED="1612614182044" TEXT="default-Impl (widget) liefert einfach 0"/>
<node CREATED="1612614424711" ID="ID_876925671" MODIFIED="1612614453769" TEXT="Button: delegiert an gtk_css_gadget_get_preferred_size"/>
</node>
<node CREATED="1612531881837" ID="ID_503088638" MODIFIED="1612531883430" TEXT="gtk_widget_get_preferred_height_for_width">
<node CREATED="1612613911103" ID="ID_1759726068" MODIFIED="1612613912600" TEXT="gtk_widget_real_get_height_for_width"/>
<node CREATED="1612614183776" ID="ID_1283663519" MODIFIED="1612614233786" TEXT="default-Impl (widget) delegiert an get_preferred_heigt">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      also stellt eigentlich grade nicht die versprochene Logik bereit
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1612614424711" ID="ID_407129358" MODIFIED="1612614528239" TEXT="Button: delegiert an gtk_css_gadget_get_preferred_size (ORIENTATION_VERTICAL und &quot;forSize&quot;)"/>
</node>
</node>
<node CREATED="1612529854679" ID="ID_620839789" MODIFIED="1612529865489" TEXT="sonst == default">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1612531908423" ID="ID_981765041" MODIFIED="1612531909730" TEXT="gtk_widget_get_preferred_height"/>
<node CREATED="1612531918893" ID="ID_1720836756" MODIFIED="1612531919753" TEXT="gtk_widget_get_preferred_width_for_height"/>
</node>
<node CREATED="1612529867091" ID="ID_1467925874" MODIFIED="1612531897569" TEXT="d.h. es gibt zwei, nicht drei Alternativen">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1612529887521" ID="ID_761185703" MODIFIED="1612529894551" TEXT="danach liegt vor">
<node CREATED="1612529924676" ID="ID_677442017" MODIFIED="1612529929887" TEXT="min_width"/>
<node CREATED="1612529930763" ID="ID_540378683" MODIFIED="1612529935382" TEXT="natural_width"/>
<node CREATED="1612529935882" ID="ID_574785014" MODIFIED="1612529938438" TEXT="min_height"/>
<node CREATED="1612529939218" ID="ID_226125510" MODIFIED="1612529942181" TEXT="natural_heigt"/>
</node>
<node CREATED="1612529944548" ID="ID_1276575353" MODIFIED="1612529951405" TEXT="nun wird justiert">
<node CREATED="1612530023488" ID="ID_716347716" MODIFIED="1612530028518" TEXT="(widget)-&gt;adjust_size_allocation">
<icon BUILTIN="info"/>
</node>
<node CREATED="1612530030341" ID="ID_1722501910" MODIFIED="1612530038256" TEXT="stets zweimal aufgerufen">
<node CREATED="1612529954784" ID="ID_1163322850" MODIFIED="1612529961136" TEXT="zuerst in horizontaler Dimension"/>
<node CREATED="1612529961751" ID="ID_1659658095" MODIFIED="1612529966442" TEXT="dann in vertikaler Dimension"/>
</node>
<node CREATED="1612530387661" ID="ID_1677551972" MODIFIED="1612530414969">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      danach noch die <i>adjust_baseline_allocation</i>
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1612530059555" ID="ID_1426144413" MODIFIED="1612534894781" TEXT="Signal: SIZE_ALLOCATE">
<arrowlink COLOR="#3156c0" DESTINATION="ID_800205161" ENDARROW="Default" ENDINCLINATION="-5;-110;" ID="Arrow_ID_1513246240" STARTARROW="None" STARTINCLINATION="-67;9;"/>
</node>
<node CREATED="1612530091126" ID="ID_1651628600" MODIFIED="1612530097016" TEXT="ggfs ein Redraw ausgel&#xf6;st"/>
</node>
<node CREATED="1612534851565" ID="ID_800205161" MODIFIED="1612534894781" TEXT="widget-&gt;size_allocate">
<linktarget COLOR="#3156c0" DESTINATION="ID_800205161" ENDARROW="Default" ENDINCLINATION="-5;-110;" ID="Arrow_ID_1513246240" SOURCE="ID_1426144413" STARTARROW="None" STARTINCLINATION="-67;9;"/>
<node CREATED="1612534944266" ID="ID_1372642184" MODIFIED="1612534985979" TEXT="gtk_widget_real_size_allocate">
<arrowlink COLOR="#6f6096" DESTINATION="ID_384051197" ENDARROW="Default" ENDINCLINATION="189;0;" ID="Arrow_ID_31086336" STARTARROW="None" STARTINCLINATION="161;15;"/>
<node CREATED="1612535006062" ID="ID_1456025781" MODIFIED="1612535014459" TEXT="pa&#xdf;t dann auch noch das GDK-Window an"/>
</node>
</node>
<node CREATED="1612534965805" ID="ID_384051197" MODIFIED="1612534981305" TEXT="gtk_widget_set_allocation">
<linktarget COLOR="#6f6096" DESTINATION="ID_384051197" ENDARROW="Default" ENDINCLINATION="189;0;" ID="Arrow_ID_31086336" SOURCE="ID_1372642184" STARTARROW="None" STARTINCLINATION="161;15;"/>
<node CREATED="1612535196135" HGAP="24" ID="ID_293434969" MODIFIED="1612535244957" TEXT="weist einfach die Allokation zu" VSHIFT="12"/>
<node CREATED="1612535204550" ID="ID_1965689659" MODIFIED="1612535224055" TEXT="setzt au&#xdf;erdem auch noch die ClipArea auf genau diese Allokation"/>
</node>
<node CREATED="1612530262998" ID="ID_300054220" MODIFIED="1612530266178" TEXT="Einsichten">
<node CREATED="1612530267006" ID="ID_1055756887" MODIFIED="1612530295140" TEXT="man hat grunds&#xe4;tzlich nur die Wahl &quot;height for width&quot; oder anders herum?"/>
<node CREATED="1612530297000" ID="ID_786276329" MODIFIED="1612530314209" TEXT="die minimal_width|heigt wird nur f&#xfc;r einen Konsistenzcheck verwendet">
<node CREATED="1612530584619" ID="ID_51694809" MODIFIED="1612530601140" TEXT="in der weiteren Verarbeitung steht an der Stelle eine Variable &quot;dummy&quot;"/>
</node>
<node CREATED="1612530343387" ID="ID_750045618" MODIFIED="1612530358270" TEXT="jedoch die natural_width|height wird weiterverarbeitet"/>
<node CREATED="1612530419105" ID="ID_1290168160" MODIFIED="1612530523191" TEXT="und zwar &#xfc;ber die Indirektion">
<node CREATED="1612530440941" ID="ID_894448937" MODIFIED="1612530446521" TEXT="widget-&gt;adjust_size_allocation"/>
<node CREATED="1612530498191" ID="ID_117553121" MODIFIED="1612530503860" TEXT="gtk_widget_real_adjust_size_allocation()"/>
<node CREATED="1612530640491" ID="ID_1645471050" MODIFIED="1612530666958" TEXT="ruft auf (entsprechend Orientierung)">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      also entweder in horizontaler, oder in vertikaler Richtung
    </p>
  </body>
</html></richcontent>
<node CREATED="1612530653137" ID="ID_1843450417" MODIFIED="1612530654181" TEXT="adjust_for_margin"/>
<node CREATED="1612530676214" ID="ID_277814433" MODIFIED="1612530677407" TEXT="adjust_for_align"/>
</node>
</node>
</node>
</node>
<node CREATED="1672842964141" ID="ID_215582571" MODIFIED="1672842976471" TEXT="relevante Gr&#xf6;&#xdf;en">
<node CREATED="1672842978065" ID="ID_1344762228" MODIFIED="1672842981558" TEXT="size-request">
<node CREATED="1672842982532" ID="ID_1586516076" MODIFIED="1672842995869" TEXT="das ist die nat&#xfc;rliche Minimal-Gr&#xf6;&#xdf;e des Widget"/>
<node CREATED="1672842996488" ID="ID_1718515236" MODIFIED="1672843011334" TEXT="sie wird von GTK stets honoriert"/>
<node CREATED="1672843017362" ID="ID_816898465" MODIFIED="1672843030912" TEXT="es gilt das &quot;natural*&quot;-Setting"/>
<node CREATED="1672843033169" ID="ID_796485263" MODIFIED="1672843052405" TEXT="die &quot;minimal*&quot;-Werte werden aktuell (3.20) nicht verwendet"/>
<node CREATED="1672843060904" ID="ID_1337685462" MODIFIED="1672843082281" TEXT="es gibt die zwei Varianten: hight-for-width | width-for-height"/>
</node>
<node CREATED="1672843085573" ID="ID_1497640739" MODIFIED="1672843330530" TEXT="size-allocation">
<linktarget COLOR="#7995ad" DESTINATION="ID_1497640739" ENDARROW="Default" ENDINCLINATION="-562;363;" ID="Arrow_ID_1967894607" SOURCE="ID_1504859134" STARTARROW="None" STARTINCLINATION="346;-29;"/>
<node CREATED="1672843091588" ID="ID_1908929596" MODIFIED="1672843108318" TEXT="die tats&#xe4;chlich von GTK zugeteilte Ausdehnung"/>
<node CREATED="1672843109026" ID="ID_448128589" MODIFIED="1672843117060" TEXT="ist stets gr&#xf6;&#xdf;er als der size-request"/>
<node CREATED="1672843122045" ID="ID_1297618005" MODIFIED="1672843134122" TEXT="wird vom Widget sofort um Dekoration reduziert"/>
<node CREATED="1672843134710" ID="ID_1879903789" MODIFIED="1672843144008" TEXT="nur der reduzierte Wert wird gespeichert">
<node CREATED="1672843145045" ID="ID_751859168" MODIFIED="1672843150136" TEXT="in der private-Struktur im Widget"/>
<node CREATED="1672843167666" ID="ID_551602758" MODIFIED="1672843169069" TEXT="priv-&gt;allocation"/>
<node CREATED="1672843251318" ID="ID_17591220" MODIFIED="1672843254290" TEXT="Getter: gtk_widget_get_allocation"/>
</node>
<node CREATED="1672843172626" ID="ID_1142235582" MODIFIED="1672843180449" TEXT="modifizierbar durch Alignment etc.">
<node CREATED="1672843181936" ID="ID_139335819" MODIFIED="1672843188827" TEXT="ebenfalls in der private-Struktur"/>
<node CREATED="1672843198774" ID="ID_1645020005" MODIFIED="1672843199936" TEXT="priv-&gt;allocated_size"/>
<node CREATED="1672843208916" ID="ID_43084891" MODIFIED="1672843210008" TEXT="priv-&gt;allocated_size_baseline"/>
<node CREATED="1672843223747" ID="ID_1074349241" MODIFIED="1672843229014" TEXT="Getter: gtk_widget_get_allocated_size"/>
</node>
</node>
</node>
</node>
<node CREATED="1663975843179" ID="ID_1935747548" MODIFIED="1663976133002" TEXT="was ist ein CSS Gadget?">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      /*
    </p>
    <p>
      &#160;* Gadgets are 'next-generation widgets' - they combine a CSS node
    </p>
    <p>
      &#160;* for style matching with geometry management and drawing. Each gadget
    </p>
    <p>
      &#160;* corresponds to 'CSS box'. Compared to traditional widgets, they are more
    </p>
    <p>
      &#160;* like building blocks - a typical GTK+ widget will have multiple gadgets,
    </p>
    <p>
      &#160;* for example a check button has its main gadget, and sub-gadgets for
    </p>
    <p>
      &#160;* the checkmark and the text.
    </p>
    <p>
      &#160;*
    </p>
    <p>
      &#160;* Gadgets are not themselves hierarchically organized, but it is common
    </p>
    <p>
      &#160;* to have a 'main' gadget, which gets used by the widgets size_allocate,
    </p>
    <p>
      &#160;* get_preferred_width, etc. and draw callbacks, and which in turn calls out
    </p>
    <p>
      &#160;* to the sub-gadgets. This call tree might extend further if there are
    </p>
    <p>
      &#160;* sub-sub-gadgets that a allocated relative to sub-gadgets. In typical
    </p>
    <p>
      &#160;* situations, the callback chain will reflect the tree structure of the
    </p>
    <p>
      &#160;* gadgets CSS nodes.
    </p>
    <p>
      &#160;*
    </p>
    <p>
      &#160;* Geometry management - Gadgets implement much of the CSS box model for you:
    </p>
    <p>
      &#160;* margins, border, padding, shadows, min-width/height are all applied automatically.
    </p>
    <p>
      &#160;*
    </p>
    <p>
      &#160;* Drawing - Gadgets implement standardized CSS drawing for you: background,
    </p>
    <p>
      &#160;* shadows and border are drawn before any custom drawing, and the focus outline
    </p>
    <p>
      &#160;* is (optionally) drawn afterwards.
    </p>
    <p>
      &#160;*
    </p>
    <p>
      &#160;* Invalidation - Gadgets sit 'between' widgets and CSS nodes, and connect
    </p>
    <p>
      &#160;* to the nodes ::style-changed signal and trigger appropriate invalidations
    </p>
    <p>
      &#160;* on the widget side.
    </p>
    <p>
      &#160;*/
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#56719e" DESTINATION="ID_1935747548" ENDARROW="Default" ENDINCLINATION="-1149;116;" ID="Arrow_ID_875944733" SOURCE="ID_1277756929" STARTARROW="None" STARTINCLINATION="-702;39;"/>
<icon BUILTIN="info"/>
</node>
</node>
<node CREATED="1504215708147" FOLDED="true" ID="ID_975007807" MODIFIED="1557498707238" TEXT="Widget">
<node CREATED="1535630469053" ID="ID_608304313" MODIFIED="1557498707238" TEXT="konkret...">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1535630478836" ID="ID_51688888" MODIFIED="1557498707238" TEXT="Container">
<node CREATED="1535629240762" FOLDED="true" ID="ID_1889724128" MODIFIED="1561827466221" STYLE="fork">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Gtk::<b>Expander</b>
    </p>
  </body>
</html></richcontent>
<edge COLOR="#b4a9e3" STYLE="bezier" WIDTH="thin"/>
<linktarget COLOR="#4561ae" DESTINATION="ID_1889724128" ENDARROW="Default" ENDINCLINATION="-1778;-100;" ID="Arrow_ID_219393455" SOURCE="ID_1047933726" STARTARROW="None" STARTINCLINATION="-6486;0;"/>
<font NAME="SansSerif" SIZE="12"/>
<node CREATED="1535630679569" ID="ID_1488556262" MODIFIED="1535630685068" TEXT="ein Kind-Widget"/>
<node CREATED="1535630685712" ID="ID_848335172" MODIFIED="1535630699099" TEXT="ein/ausklapp-Handle">
<node CREATED="1535630699999" ID="ID_895008056" MODIFIED="1535630702610" TEXT="immer sichtbar"/>
<node CREATED="1535630703150" ID="ID_1252755884" MODIFIED="1535630710185" TEXT="animierter Pfeil-Button"/>
<node CREATED="1535630710781" ID="ID_194514515" MODIFIED="1535630724687" TEXT="Label-Text als ctor-Param"/>
</node>
<node CREATED="1535630745440" ID="ID_1732954181" MODIFIED="1535630748668" TEXT="Verhalten">
<node CREATED="1535557122205" ID="ID_523553375" MODIFIED="1576282357945" TEXT="resize_toplevel (=true by default)">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...ob beim Expand/Collapse das umschlie&#223;ende Widget resized werden soll
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1535631187965" ID="ID_586010488" MODIFIED="1576282357945" TEXT="expanded (=false by default)">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ob eingeklappt oder ausgeklappt
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1535631368701" ID="ID_1441730618" MODIFIED="1535631388301" TEXT="platziert Kind-Widget as-is">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1535631390194" ID="ID_356344952" MODIFIED="1535631402732" TEXT="in dessen nat&#xfc;rlicher Gr&#xf6;&#xdf;e"/>
<node CREATED="1535631403576" ID="ID_518089172" MODIFIED="1576282357944" TEXT="verh&#xe4;lt sich anders als Frame">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ein Frame setzt beim Kind property_expand() = true,
    </p>
    <p>
      was dazu f&#252;hrt, da&#223; das Kind stets allen verf&#252;gbaren Platz nimmt
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
<node CREATED="1541455966429" FOLDED="true" ID="ID_973601831" MODIFIED="1557498707238">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Gtk::<b>Grid</b>
    </p>
  </body>
</html></richcontent>
<node COLOR="#435e98" CREATED="1541455995128" ID="ID_275278278" MODIFIED="1557498707238" TEXT="(ersetzt Gtk::Table @deprecated)">
<font NAME="SansSerif" SIZE="10"/>
</node>
<node CREATED="1541456025225" ID="ID_1914314588" MODIFIED="1557498707238" TEXT="expand und Fill wie bei Gtk::Box"/>
</node>
</node>
<node CREATED="1538583396203" FOLDED="true" ID="ID_243616989" MODIFIED="1561827466226" TEXT="TextView">
<linktarget COLOR="#3251a9" DESTINATION="ID_243616989" ENDARROW="Default" ENDINCLINATION="-2060;-1360;" ID="Arrow_ID_794678010" SOURCE="ID_1836686899" STARTARROW="None" STARTINCLINATION="-3506;-148;"/>
<node CREATED="1538583408897" ID="ID_1222725022" MODIFIED="1538583418805" TEXT="das Editor-Widget">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1538583420272" ID="ID_438604441" MODIFIED="1538583449944" TEXT="Model == Buffer">
<node CREATED="1538583478040" ID="ID_511541932" MODIFIED="1538583483915" TEXT="kann getauscht werden"/>
<node CREATED="1538583484647" ID="ID_457973011" MODIFIED="1538583504768" TEXT="Buffer gemeinsam verwenden"/>
</node>
<node CREATED="1538583507988" HGAP="72" ID="ID_1806257929" MODIFIED="1538583518616" TEXT="TextBuffer" VSHIFT="18">
<node CREATED="1538583533033" ID="ID_964637986" MODIFIED="1538583734951" TEXT="Konzepte">
<icon BUILTIN="info"/>
<node CREATED="1538583627852" ID="ID_1431409524" MODIFIED="1538583630676" TEXT="Position">
<node CREATED="1538583632075" ID="ID_1308223917" MODIFIED="1538583654421">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      stets <i>zwischen </i>den Zeichen
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1538583655744" ID="ID_415292974" MODIFIED="1538583682595">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <b>Danke</b>! endlich bekommt das mal jemand korrekt hin
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node CREATED="1538583535896" ID="ID_81892828" MODIFIED="1538583539908" TEXT="TextIterator">
<node CREATED="1538583541231" ID="ID_1777219378" MODIFIED="1538583544571" TEXT="fl&#xfc;chtig"/>
<node CREATED="1538583546679" ID="ID_1182183621" MODIFIED="1538583555801" TEXT="kann intelligent navigieren">
<node CREATED="1538583567436" ID="ID_750990432" MODIFIED="1538583573647" TEXT="Zeichen"/>
<node CREATED="1538583573995" ID="ID_881520087" MODIFIED="1538583579166" TEXT="n&#xe4;chstes Wort"/>
<node CREATED="1538583579754" ID="ID_198678641" MODIFIED="1538583582742" TEXT="n&#xe4;chste Zeile"/>
</node>
<node CREATED="1538583556374" ID="ID_661377638" MODIFIED="1538583562128" TEXT="wei&#xdf; viel &#xfc;ber seine Position"/>
</node>
<node CREATED="1538583588689" ID="ID_1850195952" MODIFIED="1538583593741" TEXT="TextMark">
<node CREATED="1538583596768" ID="ID_281650917" MODIFIED="1538583612602" TEXT="dauerhafte Positionsmarke"/>
<node CREATED="1538583613326" ID="ID_1642730307" MODIFIED="1538583618193" TEXT="wandert mit"/>
<node CREATED="1538583618989" ID="ID_870667973" MODIFIED="1538583624848" TEXT="left/right gravity"/>
</node>
<node CREATED="1538583722679" ID="ID_80198934" MODIFIED="1538583725898" TEXT="TextTag">
<node CREATED="1538583726990" ID="ID_679389681" MODIFIED="1538583730874" TEXT="Formatierung / Markup"/>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1540643603185" ID="ID_1214860125" MODIFIED="1557498707238" TEXT="allgemein">
<node CREATED="1540643609173" ID="ID_1927927594" MODIFIED="1557498707238" TEXT="Lebenszyklus">
<node CREATED="1540645438704" ID="ID_1754311679" MODIFIED="1557498707238" TEXT="erzeugen"/>
<node CREATED="1540645441115" ID="ID_1343924195" MODIFIED="1557498707238" TEXT="verdrahten"/>
<node CREATED="1540645446023" ID="ID_1278449395" MODIFIED="1557498707238" TEXT="map"/>
<node CREATED="1540645449535" ID="ID_751713031" MODIFIED="1557498707238" TEXT="realize"/>
<node CREATED="1540645512438" ID="ID_1832277082" MODIFIED="1557498707238" TEXT="draw"/>
<node CREATED="1540645490897" ID="ID_1262425717" MODIFIED="1557498707238" TEXT="unrealize"/>
<node CREATED="1540645493913" ID="ID_1545070072" MODIFIED="1557498707238" TEXT="unmap"/>
<node CREATED="1540645497224" ID="ID_715226869" MODIFIED="1560692445648" TEXT="destroy">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_715226869" ENDARROW="Default" ENDINCLINATION="402;0;" ID="Arrow_ID_183919560" SOURCE="ID_1625378917" STARTARROW="None" STARTINCLINATION="107;0;"/>
</node>
</node>
<node CREATED="1540643613003" ID="ID_404660547" MODIFIED="1557498707239" TEXT="virtuelle Methoden">
<node CREATED="1540643621458" ID="ID_893370871" MODIFIED="1557498707239" TEXT="Widget hat eine Art VTable"/>
<node CREATED="1540643627593" ID="ID_1653985182" MODIFIED="1557498707239" TEXT="diese Methoden bilden den Lebenszyklus ab"/>
<node COLOR="#435e98" CREATED="1540643649134" ID="ID_863932581" LINK="https://developer.gnome.org/gtk3/stable/GtkWidget.html#GtkWidgetClass" MODIFIED="1557498707239" TEXT="Doku">
<font BOLD="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1540647187314" ID="ID_1715030005" MODIFIED="1557498707239" TEXT="C++">
<node CREATED="1540647217067" ID="ID_470384964" MODIFIED="1576282357944" TEXT="signal_size_allocate()">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      This function is only used by Gtk::Container subclasses, to assign a size, position and (optionally) baseline to their child widgets.
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#1d47b3" DESTINATION="ID_1813983433" ENDARROW="Default" ENDINCLINATION="124;0;" ID="Arrow_ID_416269388" STARTARROW="None" STARTINCLINATION="58;0;"/>
</node>
<node CREATED="1540647190676" ID="ID_1813983433" MODIFIED="1557498707239" TEXT="on_size_allocate (Allocation&amp;)">
<linktarget COLOR="#1d47b3" DESTINATION="ID_1813983433" ENDARROW="Default" ENDINCLINATION="124;0;" ID="Arrow_ID_416269388" SOURCE="ID_470384964" STARTARROW="None" STARTINCLINATION="58;0;"/>
</node>
</node>
</node>
<node CREATED="1560692406129" FOLDED="true" ID="ID_1572155079" MODIFIED="1560694543203" TEXT="clean-up / destroy">
<edge COLOR="#cb8ebe"/>
<node CREATED="1560692872977" ID="ID_1999141976" MODIFIED="1560692879412" TEXT="Gtkmm (C++)">
<node CREATED="1560692891204" ID="ID_84706816" MODIFIED="1560692891204" TEXT="~Widget()">
<node CREATED="1560692901242" ID="ID_2893458" MODIFIED="1560692912872">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      &quot;Destroys the widget.
    </p>
    <p>
      The widget will be automatically removed from the parent container.&quot;
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1560693033030" ID="ID_259444052" MODIFIED="1560693033030" TEXT="Object::~Object()">
<node CREATED="1560693036387" ID="ID_1415907472" MODIFIED="1576282357943" TEXT="interessannter Kommentar...">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      &#160;&#160;//This has probably been called already from Gtk::Object::destroy_(), which is called from derived destructors.
    </p>
    <p>
      &#160;&#160;_release_c_instance();
    </p>
  </body>
</html></richcontent>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1560693141395" ID="ID_1813407838" MODIFIED="1560693157246" TEXT="z.B. Gtk::Container::~Container()">
<node CREATED="1560693172456" ID="ID_181470727" MODIFIED="1560693192578" TEXT="ruft Object::destroy_()">
<arrowlink DESTINATION="ID_168298159" ENDARROW="Default" ENDINCLINATION="144;-4;" ID="Arrow_ID_676938939" STARTARROW="None" STARTINCLINATION="-71;40;"/>
</node>
</node>
</node>
<node CREATED="1560693179120" ID="ID_168298159" MODIFIED="1560693192578" TEXT="Object::destroy_()">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_168298159" ENDARROW="Default" ENDINCLINATION="144;-4;" ID="Arrow_ID_676938939" SOURCE="ID_181470727" STARTARROW="None" STARTINCLINATION="-71;40;"/>
<node CREATED="1560693217354" HGAP="21" ID="ID_894873832" MODIFIED="1560693330345" TEXT="ruft _release_c_instance()" VSHIFT="14">
<icon BUILTIN="idea"/>
<node CREATED="1560693308275" ID="ID_1045837066" MODIFIED="1560693308275" TEXT="g_object_unref(object)"/>
<node CREATED="1560693317989" ID="ID_1074811808" MODIFIED="1560693317989" TEXT="g_object_run_dispose(object)"/>
<node CREATED="1560693328241" ID="ID_249714177" MODIFIED="1560693328241" TEXT="disconnect_cpp_wrapper()"/>
</node>
</node>
</node>
<node CREATED="1560692856059" ID="ID_917778138" MODIFIED="1560692862956" TEXT="plain-C (GTK+)">
<node CREATED="1560692413831" ID="ID_1625378917" MODIFIED="1560692445648" TEXT="Aufruf der virtuellen Methode, incl aller geerbten Impls">
<arrowlink DESTINATION="ID_715226869" ENDARROW="Default" ENDINCLINATION="402;0;" ID="Arrow_ID_183919560" STARTARROW="None" STARTINCLINATION="107;0;"/>
</node>
<node CREATED="1560692466024" ID="ID_1630409355" MODIFIED="1560692484413" TEXT="z.B. gtk_container_destroy">
<node CREATED="1560692486510" ID="ID_725416306" MODIFIED="1560692494744" TEXT="zerst&#xf6;rt alle enthaltenen Sub-Widgets"/>
</node>
<node CREATED="1560692458990" ID="ID_665923634" MODIFIED="1560692462637" TEXT="gtk_widget_real_destroy()">
<node CREATED="1560692545083" ID="ID_276770388" MODIFIED="1560692552432" TEXT="deregistriert diverse features"/>
<node CREATED="1560692552860" ID="ID_214266884" MODIFIED="1560692561767" TEXT="accessability, focus, keybindings"/>
<node CREATED="1560692594486" ID="ID_1484203193" MODIFIED="1560692609864" TEXT="zerst&#xf6;rt und nullifiziert direkte Sub-Objekte"/>
</node>
<node CREATED="1560692690489" ID="ID_1769004872" MODIFIED="1560692695621" TEXT="gtk_widget_finalize()">
<node CREATED="1560692700112" ID="ID_1859728067" MODIFIED="1560692714562" TEXT="zerst&#xf6;rt diverse Reg-Nodes, CSS-Paths"/>
<node CREATED="1560692715134" ID="ID_1366309847" MODIFIED="1560692723711" TEXT="dekrementiert Ref-Counts"/>
<node CREATED="1560692724197" ID="ID_50899806" MODIFIED="1560692741359" TEXT="GObject verwendet ein Ref-Count-System">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node CREATED="1560694168408" ID="ID_341202851" MODIFIED="1560694177238" TEXT="siehe auch: Gtk::manage">
<icon BUILTIN="idea"/>
<node CREATED="1560694178543" ID="ID_1257305143" MODIFIED="1576282357943" TEXT="&#xfc;bernimmt Ownership an einem Pointer">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      d.h. zerst&#246;rt auch die Heap-Allokation,
    </p>
    <p>
      wenn das managende Widget zerst&#246;rt wird
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1560694188637" ID="ID_1570996543" MODIFIED="1560694215336">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      ein normaler Widget/Container tut das <b>nicht</b>
    </p>
  </body>
</html></richcontent>
<node CREATED="1560694418290" ID="ID_1731595388" MODIFIED="1560694418290" TEXT="gtk_container_add"/>
<node CREATED="1560694422229" ID="ID_1702995262" MODIFIED="1560694431295" TEXT="setzt den &quot;parent&quot; des Widget"/>
<node CREATED="1560694472764" ID="ID_700849767" MODIFIED="1560694478618" TEXT="erh&#xf6;ht den Ref-Count"/>
<node CREATED="1560694439373" ID="ID_831370392" MODIFIED="1560694444751" TEXT="emittiert onAdd-Signal"/>
</node>
</node>
</node>
<node CREATED="1540645789033" FOLDED="true" ID="ID_1271246005" MODIFIED="1557498707239" TEXT="Framework-Verbindung">
<node CREATED="1540645818461" ID="ID_217892151" MODIFIED="1557498707239" TEXT="weitgehend automatisch"/>
<node CREATED="1540645822628" ID="ID_1316474474" MODIFIED="1576282357942" TEXT="alle Property-&#xc4;nderungen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...f&#252;hren automatisch dazu, da&#223; das Widget
    </p>
    <p>
      ggfs. neu gemapped und invalidiert wird, woraufhin es neu gezeichnet wird
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1540645864503" ID="ID_1092751510" MODIFIED="1557498707239" TEXT="Gtk::Widget::queue_draw_region">
<node CREATED="1540645872375" ID="ID_925460502" MODIFIED="1557498707239" TEXT="hiermit kann man explizit Neuzeichnen anfordern"/>
<node CREATED="1540645882388" ID="ID_1140702189" MODIFIED="1557498707239" TEXT="nur n&#xf6;tig bei custom-Draw">
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1540645903497" ID="ID_1615887419" MODIFIED="1557498707239" TEXT="Gtk::Widget::queue_resize">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1615887419" ENDARROW="Default" ENDINCLINATION="401;-36;" ID="Arrow_ID_1278323856" SOURCE="ID_699204853" STARTARROW="None" STARTINCLINATION="1411;0;"/>
<node CREATED="1540645905746" ID="ID_1768274251" MODIFIED="1557498707239" TEXT="wenn das Widget einen ge&#xe4;nderten Size-Request hat"/>
<node CREATED="1540645971349" ID="ID_1857749199" MODIFIED="1557498707239" TEXT="expliziter Aufruf normalerweise nie notwendig">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
</node>
<node CREATED="1540646156591" ID="ID_1103556230" MODIFIED="1560693186079" TEXT="Gtk::Widget::size_allocate(Allocation const&amp;) ">
<linktarget COLOR="#59699c" DESTINATION="ID_1103556230" ENDARROW="Default" ENDINCLINATION="-876;0;" ID="Arrow_ID_72712594" SOURCE="ID_841316619" STARTARROW="None" STARTINCLINATION="-1659;0;"/>
<linktarget COLOR="#7573ab" DESTINATION="ID_1103556230" ENDARROW="Default" ENDINCLINATION="763;-59;" ID="Arrow_ID_1309280117" SOURCE="ID_1615499339" STARTARROW="None" STARTINCLINATION="537;121;"/>
<linktarget COLOR="#5c5a78" DESTINATION="ID_1103556230" ENDARROW="Default" ENDINCLINATION="-618;-30;" ID="Arrow_ID_1785324866" SOURCE="ID_619170334" STARTARROW="Default" STARTINCLINATION="-4;247;"/>
<node CREATED="1540646197649" ID="ID_1973894224" MODIFIED="1557498707239" TEXT="kann ein Container auf einem Kind-Widget aufrufen"/>
<node CREATED="1540646207146" ID="ID_781482261" MODIFIED="1557498707239" TEXT="Folge: Framework adjustiert die Allocation (f&#xfc;r Margins)"/>
<node CREATED="1540646220099" ID="ID_219594395" MODIFIED="1557498707239" TEXT="und ruft die virtuelle Funktion adjust_size_allocation"/>
<node CREATED="1540646275479" ID="ID_1278063707" MODIFIED="1557498707239" TEXT="und invalideiert -&gt; redraw">
<arrowlink COLOR="#6396d3" DESTINATION="ID_1112354648" ENDARROW="Default" ENDINCLINATION="332;0;" ID="Arrow_ID_322983898" STARTARROW="None" STARTINCLINATION="130;7;"/>
</node>
</node>
<node CREATED="1676044302875" ID="ID_464303848" MODIFIED="1676044946926" TEXT="Bedeutung der Size-Getter">
<linktarget COLOR="#727fbb" DESTINATION="ID_464303848" ENDARROW="Default" ENDINCLINATION="-1975;186;" ID="Arrow_ID_1946781864" SOURCE="ID_1978068021" STARTARROW="None" STARTINCLINATION="-1869;99;"/>
<linktarget COLOR="#7584a4" DESTINATION="ID_464303848" ENDARROW="Default" ENDINCLINATION="115;-178;" ID="Arrow_ID_1938018383" SOURCE="ID_1464608958" STARTARROW="None" STARTINCLINATION="328;-32;"/>
<icon BUILTIN="idea"/>
<node CREATED="1676044329100" ID="ID_1232423582" MODIFIED="1676044983946" TEXT="Widget::get_allocation|width|height (aktuell g&#xfc;ltiger Wert incl Alignment/Modifikationen)"/>
<node CREATED="1672843927836" ID="ID_477932212" MODIFIED="1672844195140" TEXT="Widget::get_allocated_size  (was gesetzt wurde, aber bereits ohne Dekoration)"/>
</node>
</node>
<node CREATED="1672842863450" FOLDED="true" ID="ID_1781957682" MODIFIED="1672842867742" TEXT="mapping">
<node CREATED="1672842868697" ID="ID_871975923" MODIFIED="1672842877133" TEXT="Widget wird einem GDK-Window zugeordnet"/>
<node CREATED="1672842878351" ID="ID_1331083783" MODIFIED="1672842893254" TEXT="Widget wird nach seinem size_request gefragt"/>
<node CREATED="1672842897112" ID="ID_1504859134" MODIFIED="1672843330529" TEXT="Widget bekommt size-Allocation">
<arrowlink COLOR="#7995ad" DESTINATION="ID_1497640739" ENDARROW="Default" ENDINCLINATION="-562;363;" ID="Arrow_ID_1967894607" STARTARROW="None" STARTINCLINATION="346;-29;"/>
<node CREATED="1672842907889" ID="ID_1244611946" MODIFIED="1672842923846" TEXT="diese wird sofort im Widget noch um Margin und Dekorationen reduziert"/>
<node CREATED="1672842924490" ID="ID_1270863386" MODIFIED="1672842931688" TEXT="nur der effektive Wert wird gespeichert"/>
</node>
<node CREATED="1672842936499" ID="ID_493624501" MODIFIED="1672842951923" TEXT="Alignment und Fill-Layout kann das noch modifizieren"/>
</node>
</node>
<node CREATED="1477526858307" ID="ID_676269117" MODIFIED="1557498707239" TEXT="custom widget">
<node COLOR="#ca1b00" CREATED="1477526864162" ID="ID_1385929770" LINK="https://developer.gnome.org/gtkmm-tutorial/stable/sec-custom-widgets.html.en" MODIFIED="1557498707239" TEXT="Beispiel">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1385929770" ENDARROW="Default" ENDINCLINATION="1055;0;" ID="Arrow_ID_1314305180" SOURCE="ID_426069181" STARTARROW="None" STARTINCLINATION="1055;0;"/>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1477527104426" ID="ID_334736261" MODIFIED="1576282357942" TEXT="custom style properties">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...k&#246;nnen vom CSS-Stylesheet aus gesetzt werden.
    </p>
    <p>
      Siehe Beschreibung im Beispiel/Tutorial
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#a9b4c1" DESTINATION="ID_334736261" ENDARROW="Default" ENDINCLINATION="228;-492;" ID="Arrow_ID_84377619" SOURCE="ID_111059124" STARTARROW="None" STARTINCLINATION="930;-42;"/>
<icon BUILTIN="info"/>
</node>
<node CREATED="1540645596907" ID="ID_783586168" MODIFIED="1557498707239" TEXT="virtuelle Funktionen &#xfc;berlagern">
<node CREATED="1540645608249" ID="ID_1150066023" MODIFIED="1557498707239" TEXT="on_draw">
<node CREATED="1540645612137" ID="ID_1200550229" MODIFIED="1557498707239" TEXT="f&#xfc;r custom drawing"/>
</node>
</node>
<node CREATED="1540647442009" ID="ID_303011961" MODIFIED="1576282357941" TEXT="oder: an Signale anh&#xe4;ngen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ist of einfacher und der bevorzugete Weg.
    </p>
    <p>
      Im Besonderen kann man sich an Signale <i>anderer Widgets</i>&#160;anh&#228;ngen
    </p>
  </body>
</html></richcontent>
<node CREATED="1540647521382" ID="ID_1112354648" LINK="https://developer.gnome.org/gtk3/stable/GtkWidget.html#GtkWidget-draw" MODIFIED="1557498707239" TEXT="signal_draw()">
<linktarget COLOR="#6396d3" DESTINATION="ID_1112354648" ENDARROW="Default" ENDINCLINATION="332;0;" ID="Arrow_ID_322983898" SOURCE="ID_1278063707" STARTARROW="None" STARTINCLINATION="130;7;"/>
<node CREATED="1540647528517" ID="ID_1601064030" MODIFIED="1557498707239" TEXT="man kann den gegebenen Cairo-Kontext &#xe4;ndern">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1540647547755" ID="ID_577859258" MODIFIED="1557498707239" TEXT="die Clip-Region ist auf den tats&#xe4;chlich zu zeichnenden Bereich gesetzt">
<linktarget COLOR="#5e86ca" DESTINATION="ID_577859258" ENDARROW="Default" ENDINCLINATION="-1494;46;" ID="Arrow_ID_1966515866" SOURCE="ID_1534655843" STARTARROW="None" STARTINCLINATION="-1797;81;"/>
</node>
<node CREATED="1554476229422" ID="ID_1814758951" MODIFIED="1557498707239" TEXT="dirty-region des Widget">
<node CREATED="1554476290649" ID="ID_1743268737" MODIFIED="1557498707239" TEXT="der Bereich welcher tats&#xe4;chlich neu gezeichnet werden mu&#xdf;">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1554476255621" ID="ID_752995095" LINK="https://developer.gnome.org/gdk3/stable/gdk3-Cairo-Interaction.html#gdk-cairo-get-clip-rectangle" MODIFIED="1557498707239" TEXT="gdk-cairo-get-clip-rectangle()"/>
<node CREATED="1554476262846" ID="ID_712481438" LINK="https://developer.gnome.org/cairo/stable/cairo-cairo-t.html#cairo-copy-clip-rectangle-list" MODIFIED="1557498707239" TEXT="cairo-copy-clip-rectangle-list()">
<node CREATED="1554476717302" ID="ID_1025440579" LINK="https://developer.gnome.org/cairo/stable/cairo-cairo-t.html#cairo-clip-extents" MODIFIED="1557498707239" TEXT="Cairo: cairo-clip-extents()"/>
<node CREATED="1554477039164" ID="ID_1129826506" LINK="https://www.cairographics.org/documentation/cairomm/reference/classCairo_1_1Context.html#a7211a6110201b959ee46c47aa173b12a" MODIFIED="1557498707239" TEXT="CairoContext::get_clip_extents()"/>
</node>
</node>
</node>
</node>
<node CREATED="1554476592342" ID="ID_21219709" MODIFIED="1619107416274" TEXT="siehe Zeichnen im Cairo-Context">
<arrowlink COLOR="#4e97d4" DESTINATION="ID_1236197922" ENDARROW="Default" ENDINCLINATION="-654;81;" ID="Arrow_ID_1110216219" STARTARROW="None" STARTINCLINATION="-308;527;"/>
<icon BUILTIN="info"/>
</node>
<node CREATED="1612468919379" FOLDED="true" ID="ID_1508852681" MODIFIED="1612471386536" TEXT="Problem: explizite Gr&#xf6;&#xdf;e">
<linktarget COLOR="#a09aae" DESTINATION="ID_1508852681" ENDARROW="Default" ENDINCLINATION="-2048;204;" ID="Arrow_ID_1446927054" SOURCE="ID_544296566" STARTARROW="None" STARTINCLINATION="-3602;0;"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1612468930840" ID="ID_340039660" MODIFIED="1612468940602" TEXT="das ist von GTK nicht vorgesehen"/>
<node CREATED="1612468941622" ID="ID_1584501445" MODIFIED="1612468951097" TEXT="wegen Layout, Themes, Schriftarten"/>
<node COLOR="#435e98" CREATED="1612620409921" ID="ID_1143769023" MODIFIED="1663946886390" TEXT="explizite Gr&#xf6;&#xdf;e vs automatische Gr&#xf6;&#xdf;e">
<arrowlink COLOR="#4b67b0" DESTINATION="ID_615948747" ENDARROW="Default" ENDINCLINATION="-1100;0;" ID="Arrow_ID_1297405131" STARTARROW="None" STARTINCLINATION="-2000;141;"/>
<linktarget COLOR="#796ba9" DESTINATION="ID_1143769023" ENDARROW="Default" ENDINCLINATION="-733;-40;" ID="Arrow_ID_1215170372" SOURCE="ID_740164704" STARTARROW="None" STARTINCLINATION="-1892;158;"/>
<icon BUILTIN="idea"/>
<node CREATED="1663955547906" ID="ID_1016430790" MODIFIED="1663955571483" TEXT="Widget kann nur an zwei Stellen mitbestimmen">
<node CREATED="1663955572854" ID="ID_1528456404" MODIFIED="1663955585704" TEXT="size_request == Minimalanforderung"/>
<node CREATED="1663955586196" ID="ID_16918762" MODIFIED="1663955605462" TEXT="get_width_for_height | get_height_for_width"/>
</node>
<node CREATED="1663967697587" ID="ID_502729133" MODIFIED="1663967701287" TEXT="Platz-Zuteilung">
<node CREATED="1663967702275" ID="ID_1441338062" MODIFIED="1663967710309" TEXT="macht normalerweise das Framework(GTK)"/>
<node CREATED="1663967711002" FOLDED="true" ID="ID_1524127663" MODIFIED="1663967716503" TEXT="Container machen das f&#xfc;r ihre Kinder">
<icon BUILTIN="info"/>
<node CREATED="1663967756387" ID="ID_1440467863" MODIFIED="1663967792184" TEXT="Einstieg: Gtk::Widget::size_allocate | ggfs. incl &#xbb;Baseline&#xab;">
<node CREATED="1663967838832" ID="ID_930797784" MODIFIED="1663967902777" TEXT="void gtk_widget_size_allocate (GtkWidget *widget, GtkAllocation *allocation)">
<font NAME="Monospaced" SIZE="12"/>
</node>
<node COLOR="#3f1d5e" CREATED="1663967838832" ID="ID_952771766" MODIFIED="1663968099720" TEXT="void gtk_widget_size_allocate_with_baseline (GtkWidget*, GtkAllocation*, baseline) ">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Hier steckt die Implementierung, und zwar die Kernimplementierung der Platzzuteilungs-Logik von GTK
    </p>
  </body>
</html></richcontent>
<font BOLD="true" NAME="Monospaced" SIZE="12"/>
<icon BUILTIN="back"/>
</node>
</node>
<node CREATED="1663968217230" ID="ID_189000213" MODIFIED="1663968243111" TEXT="das ermittelt Pr&#xe4;ferenz und width-for-height | vis versa">
<node CREATED="1663973733068" ID="ID_419342062" MODIFIED="1663973735583" TEXT="delegiert an">
<node CREATED="1663973741555" ID="ID_49363701" MODIFIED="1663973742215" TEXT="gtk_widget_compute_size_for_orientation">
<node CREATED="1663973794195" ID="ID_639016320" MODIFIED="1663973821275" TEXT="for_size : Vorgabe oder -1 (=preferred)"/>
</node>
<node CREATED="1663974052296" ID="ID_1989206706" MODIFIED="1663974059035" TEXT="delegiert weiter...">
<node CREATED="1663974060249" ID="ID_186068184" MODIFIED="1663974060249" TEXT="gtk_widget_query_size_for_orientation"/>
<node CREATED="1663974135813" ID="ID_1305072943" MODIFIED="1663974144367" TEXT="dies ruft dann je nach orientation..."/>
<node CREATED="1663974315044" ID="ID_137296585" MODIFIED="1663974409384" TEXT="Warnung: hier wird ein Cache verwendet">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1663974144931" ID="ID_566577800" MODIFIED="1663976168903" TEXT="widget_class-&gt;get_preferred_width | height">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_566577800" ENDARROW="Default" ENDINCLINATION="236;14;" ID="Arrow_ID_129364884" SOURCE="ID_1912357851" STARTARROW="None" STARTINCLINATION="224;0;"/>
<node CREATED="1663975550843" ID="ID_650217219" MODIFIED="1663975618095" TEXT="gtk_widget_real_get_width">
<node CREATED="1663975562545" ID="ID_1821813272" MODIFIED="1663975567220" TEXT="basis: setzt auf 0"/>
</node>
<node CREATED="1663975607443" HGAP="62" ID="ID_1509275843" MODIFIED="1663975616192" TEXT="gtk_button_get_preferred_width" VSHIFT="-18">
<node CREATED="1663975632692" ID="ID_151194506" MODIFIED="1663975639133" TEXT="delegiert an den Content"/>
<node CREATED="1663976074208" ID="ID_1192731327" MODIFIED="1663976171045" TEXT="gtk_css_gadget_get_preferred_size">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1192731327" ENDARROW="Default" ENDINCLINATION="-210;-13;" ID="Arrow_ID_1198291141" SOURCE="ID_774587702" STARTARROW="None" STARTINCLINATION="-209;-13;"/>
</node>
<node CREATED="1663975629109" ID="ID_1277756929" MODIFIED="1663976133002" TEXT="CSS Gadget als strukturierte Layout-Repr&#xe4;sentation">
<arrowlink COLOR="#56719e" DESTINATION="ID_1935747548" ENDARROW="Default" ENDINCLINATION="-1149;116;" ID="Arrow_ID_875944733" STARTARROW="None" STARTINCLINATION="-702;39;"/>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1663976709823" ID="ID_1269320643" MODIFIED="1663976752139">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <font face="Monospaced" size="2">min_size = get_number (style, GTK_CSS_PROPERTY_MIN_WIDTH); </font>
    </p>
    <p>
      <font face="Monospaced" size="2">min_for_size = get_number (style, GTK_CSS_PROPERTY_MIN_HEIGHT);&#160;</font>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="back"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1663976761113" HGAP="22" ID="ID_1693421261" MODIFIED="1663976876203" TEXT="&#x27f9; hier wird die CSS-Maschinerie verwendet" VSHIFT="-24">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      basierend auf der Widget-Struktur, welche in Widget-Paths &#252;bersetzt wurde
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1663975664139" HGAP="92" ID="ID_1592877551" MODIFIED="1663976850634" TEXT="gtk_frame_get_preferred_width" VSHIFT="-93">
<node CREATED="1663975671490" ID="ID_774587702" MODIFIED="1663976171045" TEXT="macht das Gleiche">
<arrowlink DESTINATION="ID_1192731327" ENDARROW="Default" ENDINCLINATION="-210;-13;" ID="Arrow_ID_1198291141" STARTARROW="None" STARTINCLINATION="-209;-13;"/>
</node>
</node>
</node>
<node CREATED="1663974411518" ID="ID_174035361" MODIFIED="1663974421271" TEXT="widget_class-&gt;get_preferred_width_for_height | vv"/>
<node CREATED="1663974161185" ID="ID_92203435" MODIFIED="1663974166116" TEXT="C++-Impl">
<node CREATED="1663974247357" ID="ID_848538209" MODIFIED="1663974553681" TEXT="get_preferred_width_vfunc_callback">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_848538209" ENDARROW="Default" ENDINCLINATION="-494;38;" ID="Arrow_ID_1696341233" SOURCE="ID_802152831" STARTARROW="None" STARTINCLINATION="516;0;"/>
</node>
<node CREATED="1663974480522" ID="ID_247416623" MODIFIED="1663974480522" TEXT="get_preferred_height_for_width_vfunc_callback"/>
<node CREATED="1663974483852" ID="ID_1328435851" MODIFIED="1663974485496" TEXT="..."/>
<node CREATED="1663975266562" ID="ID_193702026" MODIFIED="1663975273676" TEXT="derzeit nur wenig &#xfc;berschrieben">
<node CREATED="1663975287575" ID="ID_1399216426" MODIFIED="1663975290066" TEXT="cellarea"/>
<node CREATED="1663975290518" ID="ID_10312011" MODIFIED="1663975293146" TEXT="cellrenderer"/>
</node>
<node CREATED="1663975306932" ID="ID_591034887" MODIFIED="1663975310679" TEXT="default-Impl">
<node CREATED="1663975347758" ID="ID_1211531094" MODIFIED="1663975348658" TEXT="obj-&gt;get_preferred_width_vfunc"/>
<node CREATED="1663975459159" ID="ID_1719040764" MODIFIED="1663975464370" TEXT="default: forward to C"/>
<node CREATED="1663975481644" ID="ID_1912357851" MODIFIED="1663976168903" TEXT="class-&gt;get_preferred_width()">
<arrowlink DESTINATION="ID_566577800" ENDARROW="Default" ENDINCLINATION="236;14;" ID="Arrow_ID_129364884" STARTARROW="None" STARTINCLINATION="224;0;"/>
</node>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1663968248218" ID="ID_488172276" MODIFIED="1663968271389" TEXT="anschlie&#xdf;end: Setzen der definitiven Allokation">
<node CREATED="1663968280678" ID="ID_1563364759" MODIFIED="1663973460119" TEXT="GTK_WIDGET_GET_CLASS (widget)-&gt;adjust_size_allocation (widget, ...">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1563364759" ENDARROW="Default" ENDINCLINATION="-180;327;" ID="Arrow_ID_1165457983" SOURCE="ID_1930369741" STARTARROW="None" STARTINCLINATION="95;0;"/>
<node CREATED="1663969331505" ID="ID_860014929" MODIFIED="1663969332124" TEXT="GTK_ORIENTATION_HORIZONTAL"/>
<node CREATED="1663969338016" ID="ID_1868599605" MODIFIED="1663969338876" TEXT="GTK_ORIENTATION_VERTICAL"/>
</node>
<node CREATED="1663969724108" ID="ID_67142013" MODIFIED="1663969726858" TEXT="..."/>
<node CREATED="1663972196609" ID="ID_913451433" MODIFIED="1663972209869" TEXT="konkrete Impl darf Alokation (nur) verkleinern!"/>
<node CREATED="1663969727523" ID="ID_550077604" MODIFIED="1663971827915" TEXT="danach WidgetClass(widget)-&gt;size_allocate  (VFunk)">
<linktarget COLOR="#506199" DESTINATION="ID_550077604" ENDARROW="Default" ENDINCLINATION="-162;174;" ID="Arrow_ID_1680419356" SOURCE="ID_1979640179" STARTARROW="None" STARTINCLINATION="-159;129;"/>
<node CREATED="1663969785664" ID="ID_1143121525" MODIFIED="1663969791918" TEXT="das ruft die konkrete Impl"/>
<node CREATED="1663969803900" ID="ID_1949557883" MODIFIED="1663969806396" TEXT="z.B. gtk_button_size_allocate"/>
<node CREATED="1663969820251" ID="ID_952077630" MODIFIED="1663969826890" TEXT="und das ruft schlie&#xdf;lich...">
<node CREATED="1663969828135" ID="ID_1626874931" MODIFIED="1663969828135" TEXT="gtk_widget_set_allocation"/>
<node CREATED="1663969842691" ID="ID_919978139" MODIFIED="1663969855134" TEXT="(speichert die konkrete Allokation)"/>
</node>
</node>
<node CREATED="1663971550770" ID="ID_1511210757" MODIFIED="1663971557365" TEXT="C++ - Implementierung">
<node CREATED="1663971558346" ID="ID_637074498" MODIFIED="1663971558346" TEXT="Widget_Class::size_allocate_callback"/>
<node CREATED="1663971666578" ID="ID_1071539118" MODIFIED="1663971709675" TEXT="forward to derived">
<node CREATED="1663971689747" ID="ID_499744986" MODIFIED="1663973438074" TEXT="Gtk::Widget::on_size_allocate(Allocation&amp;)">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_499744986" ENDARROW="Default" ENDINCLINATION="-267;18;" ID="Arrow_ID_1734773493" SOURCE="ID_864492298" STARTARROW="None" STARTINCLINATION="419;0;"/>
</node>
<node CREATED="1663972038503" ID="ID_1044601758" MODIFIED="1663972051960" TEXT="(anscheinend nirgends &#xfc;berschrieben)">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
</node>
<node CREATED="1663971747679" ID="ID_525494669" MODIFIED="1663971763793" TEXT="default-Impl delegiert via C-VFunk">
<node CREATED="1663971794704" ID="ID_1979640179" MODIFIED="1663971833811" TEXT="base-&gt;size_allocate">
<arrowlink COLOR="#506199" DESTINATION="ID_550077604" ENDARROW="Default" ENDINCLINATION="-162;174;" ID="Arrow_ID_1680419356" STARTARROW="None" STARTINCLINATION="-159;129;"/>
</node>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1663973268539" ID="ID_1503005110" MODIFIED="1663977346992" TEXT="m&#xf6;gliche Eingriffspunkte">
<linktarget COLOR="#6b229a" DESTINATION="ID_1503005110" ENDARROW="Default" ENDINCLINATION="-1806;-166;" ID="Arrow_ID_1347071203" SOURCE="ID_1507590849" STARTARROW="None" STARTINCLINATION="-2004;582;"/>
<node CREATED="1663973286144" ID="ID_933960506" MODIFIED="1663973296163" TEXT="size_request auf absolutes Minimum"/>
<node CREATED="1663973298002" ID="ID_802152831" MODIFIED="1663974553681" TEXT="gtk_widget_get_preferred_width">
<arrowlink DESTINATION="ID_848538209" ENDARROW="Default" ENDINCLINATION="-494;38;" ID="Arrow_ID_1696341233" STARTARROW="None" STARTINCLINATION="516;0;"/>
</node>
<node CREATED="1663973353379" ID="ID_309346877" MODIFIED="1663974513324" TEXT="gtk_widget_get_preferred_height_for_width"/>
<node CREATED="1663973369308" ID="ID_1930369741" MODIFIED="1663974669350" TEXT="man k&#xf6;nnte die C-VFunk adjust_size_allocation &#xfc;berlagern">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Keine gute Idee: diese Funtktion wird verwendet, um die Dekoration zu entfernen, und Stil-Anpassungen zu machen; sie sollte daher besser als <i>pure function </i>betrachtet werden
    </p>
  </body>
</html></richcontent>
<arrowlink DESTINATION="ID_1563364759" ENDARROW="Default" ENDINCLINATION="-180;327;" ID="Arrow_ID_1165457983" STARTARROW="None" STARTINCLINATION="95;0;"/>
<icon BUILTIN="stop-sign"/>
</node>
<node CREATED="1663973396270" ID="ID_864492298" MODIFIED="1663973438074" TEXT="rein informativ: Widget::on_size_allocate()">
<arrowlink DESTINATION="ID_499744986" ENDARROW="Default" ENDINCLINATION="-267;18;" ID="Arrow_ID_1734773493" STARTARROW="None" STARTINCLINATION="419;0;"/>
</node>
</node>
</node>
<node CREATED="1612468955668" ID="ID_719115150" MODIFIED="1612468971046" TEXT="Workaround">
<node CREATED="1612468972770" ID="ID_54239834" MODIFIED="1612468994420" TEXT="set_size_request">
<node CREATED="1612468999397" ID="ID_766492418" MODIFIED="1612469008793" TEXT="das legt aber nur die minimal-Ausdehnung fest"/>
<node CREATED="1612469009709" ID="ID_378480430" MODIFIED="1612469044092" TEXT="Umgebung: Canvas oder Box mit pack_shrink"/>
<node CREATED="1612469193268" ID="ID_881317091" MODIFIED="1612469202517" TEXT="danach: queue_resize()">
<icon BUILTIN="back"/>
</node>
</node>
<node CREATED="1612469049536" ID="ID_382411942" MODIFIED="1612469057208" TEXT="size_allocate">
<node CREATED="1612469059390" ID="ID_545938622" MODIFIED="1612469079936" TEXT="man tut so, als w&#xe4;re man der Container / das Framework"/>
<node CREATED="1612469081850" ID="ID_138109291" MODIFIED="1612469185623" TEXT="Problem: braucht beide Dimensionen incl Dekoration">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      in dem Widget, das diesen Aufruf empf&#228;ngt, wird der Margin abgezogen, und nur dieser reduzierte Wert wird im Widget selber als Allocation gespeichert
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
<node CREATED="1672764993934" ID="ID_123234016" MODIFIED="1672765455562" TEXT="Erfahrungen: custom Layout-Management">
<arrowlink COLOR="#6575b0" DESTINATION="ID_327539453" ENDARROW="Default" ENDINCLINATION="-654;33;" ID="Arrow_ID_47233640" STARTARROW="None" STARTINCLINATION="-417;28;"/>
<node CREATED="1672765077242" ID="ID_925455980" MODIFIED="1672765379771" TEXT="stehen in Konkurrenz zu GTK&apos;s eigenen Management-Operationen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...per Design von GTK sind nur wenig Eingriffsm&#246;glichkeiten vorgesehen; stattdessen soll man die Layout-Manager nutzen, die das Layout-reflow automatisch erledigen. Was man definitiv tun kann ist, aus den get_preferred_*()-VFunks dynamisch angepa&#223;te Werte zu liefern
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1672765109492" ID="ID_1611765335" MODIFIED="1672765254689">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      man kann sich nur <i>dazwischen schalten</i>&#160;und auf Stabilisierung hoffen
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...wenn man in der Phase der Layout-Steuerung eingreift, und einzelne Elemente ver&#228;ndert, mu&#223; man durch <i>&quot;invalidation&quot; </i>daf&#252;r sorgen, da&#223; GTK die Layout-Berechnung sp&#228;ter nochmal macht, und dann hoffen, da&#223; sich in diesem zweiten (oder N-ten) Durchgang keine &#196;nderung mehr ergibt.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1672765394824" ID="ID_1136392333" MODIFIED="1672765423034">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      sofern in dieser Phase ein Widget <i>visible </i>ist, stimmen auch seine Layout-Antworten
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node CREATED="1476375676818" FOLDED="true" ID="ID_1029920942" MODIFIED="1557498707239" TEXT="Canvas">
<node CREATED="1476375696215" ID="ID_1397403295" MODIFIED="1557498707239" TEXT="GtkDrawingArea">
<node CREATED="1476375709157" ID="ID_981405457" MODIFIED="1557498707239" TEXT="custom drawing"/>
</node>
<node CREATED="1476375702166" ID="ID_290806424" MODIFIED="1557498707239" TEXT="GtkLayout">
<icon BUILTIN="idea"/>
<node CREATED="1476375715644" ID="ID_1233704735" MODIFIED="1557498707239" TEXT="scrollable"/>
<node CREATED="1476375723915" ID="ID_72518723" MODIFIED="1557498707239" TEXT="can place sub-widgets"/>
<node CREATED="1476375733298" ID="ID_1024321268" MODIFIED="1557498707239" TEXT="allows custom drawing"/>
<node CREATED="1476468254712" HGAP="64" ID="ID_1424353399" MODIFIED="1564926360754" TEXT="Eigenschaften" VSHIFT="45">
<icon BUILTIN="info"/>
<node COLOR="#338800" CREATED="1476468265399" FOLDED="true" HGAP="2" ID="ID_257790579" MODIFIED="1612018172610" TEXT="Test-Setup schaffen" VSHIFT="-15">
<icon BUILTIN="button_ok"/>
<node CREATED="1476468390830" ID="ID_1922633406" MODIFIED="1557498707239" TEXT="soll">
<icon BUILTIN="yes"/>
<node CREATED="1476468393174" ID="ID_412857359" MODIFIED="1557498707239" TEXT="schnell gehen"/>
<node CREATED="1476468395941" ID="ID_1419405883" MODIFIED="1557498707239" TEXT="nicht das UI kaputtmachen"/>
<node CREATED="1476468402085" ID="ID_1171941848" MODIFIED="1557498707239" TEXT="realistisch sein"/>
</node>
</node>
<node COLOR="#338800" CREATED="1476468272510" FOLDED="true" ID="ID_150722005" MODIFIED="1564926351238" TEXT="Untersuchung">
<icon BUILTIN="button_ok"/>
<node CREATED="1477595404814" HGAP="37" ID="ID_1078486680" MODIFIED="1518487921100" TEXT="Goals" VSHIFT="-12">
<icon BUILTIN="yes"/>
<node CREATED="1476468292804" ID="ID_283291482" MODIFIED="1518487921100" TEXT="overlapping widgets"/>
<node CREATED="1476468292805" ID="ID_140846763" MODIFIED="1518487921100" TEXT="resizing of widgets"/>
<node CREATED="1476468292805" ID="ID_1075320324" MODIFIED="1541088154684" TEXT="partially covered widgets">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ....how does the event dispatching deal with partially covered widgets
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1476468292805" ID="ID_1670607748" MODIFIED="1541088154692" TEXT="tabbing / focus order">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...for embedded widgets
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1476468292805" ID="ID_472068538" MODIFIED="1518487921100" TEXT="custom drawing and widget drawing"/>
</node>
<node CREATED="1477595408918" ID="ID_387371672" MODIFIED="1518487921100" TEXT="Tasks">
<node CREATED="1477595418669" ID="ID_1316314985" MODIFIED="1518487921100" TEXT="# place some simple widgets (Buttons)">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="full-1"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1477601706168" ID="ID_130395672" MODIFIED="1518487921100" TEXT="Kind-Klasse anlegen"/>
<node CREATED="1477601712063" ID="ID_1720776876" MODIFIED="1518487921100" TEXT="Kinder managen"/>
</node>
<node CREATED="1477595418669" ID="ID_517122292" MODIFIED="1518487921100" TEXT="# learn how to draw">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="full-2"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1477788816168" ID="ID_904860978" MODIFIED="1518487921100" TEXT="documentation">
<icon BUILTIN="info"/>
<node CREATED="1477788823751" ID="ID_111966354" LINK="https://developer.gnome.org/gtkmm-tutorial/stable/chapter-drawingarea.html.en" MODIFIED="1614467022336" TEXT="read the custom drawing chapter">
<arrowlink DESTINATION="ID_1600280983" ENDARROW="Default" ENDINCLINATION="893;0;" ID="Arrow_ID_1707544457" STARTARROW="None" STARTINCLINATION="893;0;"/>
</node>
<node CREATED="1477788855234" ID="ID_426069181" LINK="https://developer.gnome.org/gtkmm-tutorial/stable/sec-custom-widgets.html.en" MODIFIED="1518487921100" TEXT="read the example code of a custom widget">
<arrowlink COLOR="#a9b4c1" DESTINATION="ID_1385929770" ENDARROW="Default" ENDINCLINATION="1055;0;" ID="Arrow_ID_1314305180" STARTARROW="None" STARTINCLINATION="1055;0;"/>
</node>
<node CREATED="1477789514451" ID="ID_84890591" LINK="https://www.cairographics.org/documentation/cairomm/reference/" MODIFIED="1518487921100" TEXT="Cairomm API-doc"/>
</node>
<node CREATED="1477784938038" ID="ID_93104177" MODIFIED="1518487921100" TEXT="how-to...">
<icon BUILTIN="button_ok"/>
<node CREATED="1477788718965" ID="ID_1354942176" MODIFIED="1518487921100" TEXT="derived class"/>
<node CREATED="1477788722228" ID="ID_720985572" MODIFIED="1518487921100" TEXT="override on_draw()"/>
<node CREATED="1477788731163" ID="ID_421749777" MODIFIED="1518487921100" TEXT="invoke inherited on_draw()">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1477788749289" ID="ID_1466181075" MODIFIED="1541088154747" TEXT="returns false">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...meaning, &quot;this event is not yet fully processed&quot;,
    </p>
    <p>
      i.e. the enclosing parent widget also gets a chance to redraw itself
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1477791881630" HGAP="37" ID="ID_1823256674" MODIFIED="1518487921100" TEXT="coordinates" VSHIFT="11">
<icon BUILTIN="button_ok"/>
<node CREATED="1477791885614" ID="ID_380369648" MODIFIED="1518487921100">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <font color="#bd0053">Warning</font>: allocation is the <i>visible</i>&#160;area
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1477791921953" ID="ID_555455740" MODIFIED="1518487921100" TEXT="...not the extension of the canvas!"/>
<node CREATED="1477841655353" ID="ID_1533125137" MODIFIED="1518487921100" TEXT="adjust to compensate">
<icon BUILTIN="idea"/>
<node CREATED="1477841600713" ID="ID_1319450558" LINK="http://stackoverflow.com/questions/40325668/scrollable-drawing-in-gtklayout" MODIFIED="1541088154768" TEXT="Question: can the framework adjust for us">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      asked on stackoverflow...
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="help"/>
</node>
<node CREATED="1477841687997" ID="ID_1267996486" MODIFIED="1533608414144" TEXT="explicitly by code">
<node CREATED="1477841706107" ID="ID_1685967940" MODIFIED="1518487921100" TEXT="use get_value() from adjustment"/>
<node CREATED="1477841728496" ID="ID_935017463" MODIFIED="1518487921100" TEXT="because this represents coord. of visible viewport"/>
<node CREATED="1477841753180" ID="ID_501431504" MODIFIED="1541088154781" TEXT="max(value) + viewport-size == canvas size">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...as can be observed
    </p>
    <p>
      by printing values from the on_draw() callback
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1477841809741" ID="ID_1400891730" MODIFIED="1561827466236" TEXT="context-&gt;translate">
<node CREATED="1477841816516" ID="ID_642580279" MODIFIED="1518487921100" TEXT="by -value"/>
<node CREATED="1477841842512" ID="ID_1549119493" MODIFIED="1518487921100" TEXT="allows us to use absolute coords."/>
<node CREATED="1477841854807" ID="ID_1202368941" MODIFIED="1518487921100" TEXT="clipping happens automatically"/>
<node CREATED="1477841860278" ID="ID_208350074" MODIFIED="1518487921100" TEXT="need to ctx-&gt;save() and ctx-&gt;restore()">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...otherwise adjustment values will cummulate,
    </p>
    <p>
      causing us to adjust too much
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
<node CREATED="1477843534095" ID="ID_1261380784" MODIFIED="1518487921100" TEXT="Problem: widget extension">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1477843543126" ID="ID_1096450231" MODIFIED="1518487921100" TEXT="seems to be defined only after drawing it"/>
<node CREATED="1478032584364" ID="ID_1961636905" MODIFIED="1518487921100" TEXT="need to find the right signal">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1478032598165" ID="ID_275509060" MODIFIED="1533608414145" TEXT="need to get foreach working">
<icon BUILTIN="yes"/>
<node CREATED="1478032633704" ID="ID_1067159761" MODIFIED="1518487921101" TEXT="Hint: show_all_children"/>
<node CREATED="1478032642310" ID="ID_246127915" LINK="https://developer.gnome.org/gtkmm-tutorial/stable/sec-custom-containers.html.en" MODIFIED="1518487921101" TEXT="Tutorial: custom container"/>
<node CREATED="1478037794935" HGAP="41" ID="ID_614099643" MODIFIED="1561827466236" TEXT="geht doch" VSHIFT="38">
<icon BUILTIN="ksmiletris"/>
<node CREATED="1478037802776" ID="ID_1706111079" MODIFIED="1518487921101" TEXT="keine Ahnung warums neulich einen SEGFAULT gab"/>
<node CREATED="1478037818037" ID="ID_1257597772" MODIFIED="1518487921101" TEXT="wichtig: Funktor inline bestehen lassen"/>
<node CREATED="1478037849449" ID="ID_171841689" MODIFIED="1518487921101" TEXT="habe diesmal sogar ein Lambda verwendet">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node CREATED="1478037888539" ID="ID_1261247197" MODIFIED="1533608414146" TEXT="wie">
<icon BUILTIN="idea"/>
<node CREATED="1478037893658" ID="ID_1711061664" MODIFIED="1518487921101" TEXT="trigger-Variable"/>
<node CREATED="1478037899458" ID="ID_132096735" MODIFIED="1561827466238" TEXT="im on_draw()-Callback">
<node CREATED="1478037908465" ID="ID_1414994452" MODIFIED="1518487921101" TEXT="erst hier sind die Allokationen gesetzt"/>
<node CREATED="1478037916303" ID="ID_1781865207" MODIFIED="1518487921101" TEXT="konnte keine anderen sinnvollen callbacks finden">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...die anderen, die noch in Frage kommen w&#252;rden,
    </p>
    <p>
      sind nur f&#252;r den Fall, da&#223; ein Widget neu instantiiert wird
    </p>
    <p>
      oder neu in das Window-System gemappt wird.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1478037986046" ID="ID_1293899679" MODIFIED="1518487921101">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      on_check_resize() wird nicht aufgerufen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="smily_bad"/>
</node>
</node>
<node CREATED="1478038003892" ID="ID_477362495" MODIFIED="1518487921101" TEXT="rufe foreach mit inline-Lambda auf"/>
<node CREATED="1478038011427" ID="ID_399044896" MODIFIED="1518487921101" TEXT="melde per max in die lokalen Variablen zur&#xfc;ck"/>
<node CREATED="1478038020338" ID="ID_541293489" MODIFIED="1518487921101" TEXT="Layout-&gt;set_size()"/>
</node>
</node>
</node>
<node CREATED="1477784943797" ID="ID_298493039" MODIFIED="1518487921101" TEXT="layering">
<icon BUILTIN="button_ok"/>
<node CREATED="1477791842091" ID="ID_671463871" MODIFIED="1518487921101" TEXT="depends on order of parent call"/>
<node CREATED="1477791849578" ID="ID_96793101" MODIFIED="1518487921101" TEXT="and on order of cairo draw operations">
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node CREATED="1477784949533" ID="ID_1496795315" MODIFIED="1518487921101" TEXT="custom styling"/>
</node>
<node CREATED="1477595418670" ID="ID_770195423" MODIFIED="1518487921101" TEXT="# place a huge number of widgets, to scrutinise scrolling and performance">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="full-3"/>
</node>
<node CREATED="1477595418670" ID="ID_423514526" MODIFIED="1518487921101" TEXT="# place widgets overlapping / irregularily">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="full-4"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1477668663507" ID="ID_1576657272" MODIFIED="1518487921101" TEXT="order: later on top">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1477668674577" ID="ID_431152757" MODIFIED="1518487921101" TEXT="place widgets out of sight">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1477694911349" ID="ID_93004070" MODIFIED="1518487921101" TEXT="widgets beyond the scrollable area">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1477595418670" ID="ID_1370967982" MODIFIED="1518487921101" TEXT="# bind signals to those widgets, to verify event dispatching">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="full-5"/>
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1477595418670" ID="ID_1603374862" MODIFIED="1518487921101" TEXT="# bind some further signal(s) to the GtkLayout container">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="full-6"/>
</node>
<node CREATED="1477595418670" ID="ID_496085779" MODIFIED="1518487921101" TEXT="# hide and re-show a partially and a totally overlapped widget">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="full-7"/>
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1477595418670" ID="ID_1516591439" MODIFIED="1518487921101" TEXT="# move and delete widgets">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="full-8"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1477703725690" ID="ID_554135449" MODIFIED="1518487921101" TEXT="move">
<icon BUILTIN="button_ok"/>
<node CREATED="1477703730073" ID="ID_1070867956" MODIFIED="1518487921101" TEXT="foreach doesn&apos;t work">
<icon BUILTIN="smiley-angry"/>
</node>
<node CREATED="1479424603959" ID="ID_194428894" MODIFIED="1541088154846" TEXT="works on second attempt">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...keine Ahnung, was ich beim ersten Mal falsch gemacht habe.
    </p>
    <p>
      jedenfalls hab ich da sofort beim ersten Aufruf der Closure einen SEGFAULT bekommen.
    </p>
    <p>
      
    </p>
    <p>
      Auch im zweiten Anlauf habe ich ein Lambda verwendet.
    </p>
    <p>
      M&#246;glicherweise ist der einzige Unterschied, da&#223; ich es nun aus dem draw-callback
    </p>
    <p>
      aufrufe, und da&#223; demgegen&#252;ber bei der ersten Verwendung die Allocation des jeweiligen
    </p>
    <p>
      Kind-Widgets noch gar nicht festgelegt war (denn das passiert erst beim draw).
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1477703741232" ID="ID_942790225" MODIFIED="1518487921101" TEXT="get_children returns copy">
<icon BUILTIN="smiley-oh"/>
</node>
</node>
<node CREATED="1477748350140" ID="ID_1672717051" MODIFIED="1518487921101" TEXT="align all in a row">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1477749635577" ID="ID_592134506" MODIFIED="1518487921101" TEXT="delete arbitrary children">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1477595418670" ID="ID_1275908576" MODIFIED="1518487921101" TEXT="# expand an existing widget (text change)">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="full-9"/>
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1477595418670" ID="ID_700977265" MODIFIED="1564926307003" TEXT="# build a custom &quot;&apos;&apos;clip&apos;&apos;&quot; widget">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="full-1"/>
<icon BUILTIN="full-0"/>
<icon BUILTIN="stop-sign"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1564926319100" ID="ID_1730630443" MODIFIED="1564926336261" TEXT="unn&#xf6;tig! gleich im richtigen UI bauen!">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1477595418670" ID="ID_1708640864" MODIFIED="1564926313799" TEXT="# retrofit all preceding tests to use this &quot;&apos;&apos;clip&apos;&apos;&quot; widget">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="full-1"/>
<icon BUILTIN="full-1"/>
<icon BUILTIN="stop-sign"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1564926367453" ID="ID_943270007" MODIFIED="1564926396554" TEXT="research/gtk-canvas-experiment">
<icon BUILTIN="back"/>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1504215729848" ID="ID_518260540" MODIFIED="1557498707239" TEXT="howto">
<node CREATED="1446515847047" FOLDED="true" ID="ID_290915762" MODIFIED="1557498707239" TEXT="GtkCssProvider">
<node CREATED="1446515865029" ID="ID_1503616150" MODIFIED="1557498707239" TEXT="parsing errors"/>
<node CREATED="1477784584821" ID="ID_1810760662" LINK="https://developer.gnome.org/gtkmm-tutorial/stable/sec-custom-widgets.html.en" MODIFIED="1576282357941" TEXT="Beispiel im GTKmm-Guide (custom widget)">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      in der Implementierung, mywidget.cc
    </p>
    <p>
      ist eine komplette Sequenz, wie man einen CSS-StyleProvider setzt
    </p>
    <p>
      und auch ein Signal f&#252;r Parse-Fehler anschlie&#223;t
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1810760662" ENDARROW="Default" ENDINCLINATION="1600;-25;" ID="Arrow_ID_1610122569" SOURCE="ID_1164942946" STARTARROW="None" STARTINCLINATION="-840;95;"/>
<icon BUILTIN="info"/>
</node>
</node>
<node CREATED="1504215750653" FOLDED="true" ID="ID_110831069" MODIFIED="1557498707239" TEXT="Textanzeige">
<node CREATED="1504215755484" ID="ID_1858414199" MODIFIED="1557498707239" TEXT="TextView widget"/>
<node CREATED="1504215761547" ID="ID_925639969" LINK="https://developer.gnome.org/gtkmm-tutorial/stable/sec-textview-examples.html.en" MODIFIED="1557498707239">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Beispiel im <font color="#d4020a">Guide</font>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1504215825762" ID="ID_429138159" MODIFIED="1557498707239" TEXT="zur letzten Zeile scrollen">
<linktarget COLOR="#9bbabd" DESTINATION="ID_429138159" ENDARROW="Default" ENDINCLINATION="-1413;0;" ID="Arrow_ID_1025095859" SOURCE="ID_653669269" STARTARROW="None" STARTINCLINATION="-1151;202;"/>
<node CREATED="1504220167228" ID="ID_622474093" MODIFIED="1557498707239" TEXT="scroll_to(iterator) ist ungenau">
<icon BUILTIN="broken-line"/>
</node>
<node CREATED="1504215849336" ID="ID_832996389" MODIFIED="1557498707239" TEXT="Marker setzen">
<icon BUILTIN="idea"/>
<node CREATED="1504220053691" ID="ID_905781900" MODIFIED="1557498707239" TEXT="benannt oder anonym"/>
<node CREATED="1504220061178" ID="ID_474843943" MODIFIED="1576282357940" TEXT="&quot;Gravity&quot; beachten">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <ul>
      <li>
        left gravity: Marker bleibt beim Einf&#252;gen an dieser Stelle links von der Einf&#252;gung stehen
      </li>
      <li>
        right gravity: Marker wird durch Einf&#252;gen an dieser Stelle nach rechts geschoben
      </li>
    </ul>
    <p>
      Beachte: der Text-Cursor (Marker &quot;insert&quot;) hat right gravity
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1504215832746" ID="ID_751207346" LINK="https://developer.gnome.org/gtkmm-tutorial/stable/sec-multithread-example.html.en" MODIFIED="1557498707239">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Multithreded-Beispiel
    </p>
    <p>
      im Guide demonstriert das
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1504219929260" ID="ID_1037649590" MODIFIED="1557498707239" TEXT="Trick: Cursor ist ein Marker namens &quot;insert&quot;">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1534511566130" FOLDED="true" HGAP="93" ID="ID_833641481" MODIFIED="1557498707239" TEXT="libGDL" VSHIFT="-58">
<linktarget COLOR="#39478f" DESTINATION="ID_833641481" ENDARROW="Default" ENDINCLINATION="-1307;0;" ID="Arrow_ID_214595057" SOURCE="ID_358403014" STARTARROW="None" STARTINCLINATION="-2073;0;"/>
<node CREATED="1534511647623" ID="ID_586745535" MODIFIED="1557498707239" TEXT="&quot;Gnome Docking Library&quot;">
<node CREATED="1534511675819" ID="ID_458805224" MODIFIED="1557498707239" TEXT="wird auch von Anjuta genutzt"/>
<node CREATED="1534511663333" ID="ID_1116756676" MODIFIED="1557498707239" TEXT="historisch: Gnome Design Library"/>
</node>
<node CREATED="1534511978427" ID="ID_409550752" MODIFIED="1557498707240" TEXT="Dokumentation">
<node CREATED="1534511984706" ID="ID_463901760" MODIFIED="1557498707240" TEXT="kaum online zu fnden">
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#435e98" CREATED="1534511992737" ID="ID_555023917" LINK="file:///Werk/devel/a/gdlmm3-3.7.3/doc/reference/html/inherits.html" MODIFIED="1557498707240" TEXT="GDLmm Doxygen im Quellbaum">
<font NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="info"/>
</node>
<node COLOR="#435e98" CREATED="1534512202029" ID="ID_1785775758" LINK="file:///Werk/devel/a/gdl-3.28.0/docs/reference/html/index.html" MODIFIED="1557498707240" TEXT="die GDL-Doxygen ist etwas ergiebiger">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1534511695553" ID="ID_1631118283" MODIFIED="1557498707240" TEXT="Begriffe">
<node CREATED="1534512435774" HGAP="58" ID="ID_560032324" MODIFIED="1557498707240" TEXT="Widgets...." VSHIFT="-12">
<node CREATED="1534512446077" ID="ID_1284930136" MODIFIED="1557498707240" TEXT="gdl::Dock">
<arrowlink DESTINATION="ID_657079851" ENDARROW="Default" ENDINCLINATION="118;-10;" ID="Arrow_ID_1904059368" STARTARROW="None" STARTINCLINATION="118;-10;"/>
</node>
<node CREATED="1534512456307" ID="ID_1461586214" MODIFIED="1557498707240" TEXT="gdl::DockNotebook">
<node COLOR="#84292b" CREATED="1534512627860" ID="ID_1972742181" MODIFIED="1557498707240" TEXT=" nicht GDLmm">
<icon BUILTIN="help"/>
</node>
</node>
<node CREATED="1534512470265" ID="ID_1122516503" MODIFIED="1557498707240" TEXT="gdl::DockPaned">
<node COLOR="#84292b" CREATED="1534512627860" ID="ID_570071709" MODIFIED="1557498707240" TEXT=" nicht GDLmm">
<icon BUILTIN="help"/>
</node>
</node>
<node CREATED="1534512476873" ID="ID_405367338" MODIFIED="1557498707240" TEXT="gdl::DockItem">
<arrowlink DESTINATION="ID_1059219569" ENDARROW="Default" ENDINCLINATION="125;-6;" ID="Arrow_ID_315465766" STARTARROW="None" STARTINCLINATION="107;-19;"/>
</node>
<node CREATED="1534512482992" ID="ID_615241196" MODIFIED="1557498707240" TEXT="gdl::DockBar"/>
</node>
<node CREATED="1534511737131" ID="ID_1114860371" MODIFIED="1557498707240" TEXT="DockObject">
<node CREATED="1534512301864" ID="ID_949111740" MODIFIED="1557498707240" TEXT="abstrakte Basisklasse">
<node CREATED="1534512313238" ID="ID_614492337" MODIFIED="1557498707240" TEXT="&quot;for all docking widgets&quot;"/>
<node CREATED="1534512329540" ID="ID_661309088" MODIFIED="1557498707240" TEXT="implementiert GtkBuildable"/>
</node>
<node CREATED="1534512053505" ID="ID_1534912911" MODIFIED="1557498707240" TEXT="Subklassen">
<node CREATED="1534512059048" ID="ID_657079851" MODIFIED="1557498707240" TEXT="gdl::Dock">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_657079851" ENDARROW="Default" ENDINCLINATION="118;-10;" ID="Arrow_ID_1904059368" SOURCE="ID_1284930136" STARTARROW="None" STARTINCLINATION="118;-10;"/>
<node CREATED="1534512361544" ID="ID_172039334" MODIFIED="1557498707240" TEXT="docking area"/>
</node>
<node CREATED="1534512065896" ID="ID_1059219569" MODIFIED="1557498707240" TEXT="gdl::DockItem">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1059219569" ENDARROW="Default" ENDINCLINATION="125;-6;" ID="Arrow_ID_315465766" SOURCE="ID_405367338" STARTARROW="None" STARTINCLINATION="107;-19;"/>
<node CREATED="1534512387109" ID="ID_173562614" MODIFIED="1576282357940" TEXT="Adds docking capability to its child widget">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      A dock item is a container widget that can be docked at different place.
    </p>
    <p>
      It accepts a single child and adds a grip allowing the user to click on it
    </p>
    <p>
      to drag and drop the widget.
    </p>
    <p>
      
    </p>
    <p>
      The grip is implemented as a GdlDockItemGrip
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1534512072391" ID="ID_1008938926" MODIFIED="1557498707240" TEXT="gdl::DockPlaceholder">
<node CREATED="1534512416601" ID="ID_1452643437" MODIFIED="1557498707240" TEXT="A widget marking a docking place"/>
</node>
</node>
</node>
<node CREATED="1534511742274" ID="ID_11568474" MODIFIED="1557498707240" TEXT="DockMaster"/>
<node CREATED="1534512085021" ID="ID_269318967" MODIFIED="1557498707240" TEXT="DockLayout"/>
<node CREATED="1534512093148" ID="ID_767756183" MODIFIED="1557498707240" TEXT="DockBar">
<node CREATED="1534512097459" ID="ID_1126576292" MODIFIED="1557498707240" TEXT="h&#xe4;lt minimierte Docks als Icons">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node CREATED="1534511699368" ID="ID_243375657" MODIFIED="1557498707240" TEXT="C++ Bindings"/>
</node>
<node CREATED="1619107069744" FOLDED="true" HGAP="69" ID="ID_132670678" MODIFIED="1619107100691" TEXT="Cairo (Vektorgraphik-Lib)" VSHIFT="13">
<font NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="info"/>
<node CREATED="1619107266947" ID="ID_1506011612" MODIFIED="1619107277974" TEXT="Doku und Konzepte">
<node CREATED="1554476592342" ID="ID_1236197922" LINK="https://developer.gnome.org/cairo/stable/cairo-cairo-t.html" MODIFIED="1619107409051" TEXT="Zeichnen: Cairo-Context">
<linktarget COLOR="#4e97d4" DESTINATION="ID_1236197922" ENDARROW="Default" ENDINCLINATION="-654;81;" ID="Arrow_ID_1110216219" SOURCE="ID_21219709" STARTARROW="None" STARTINCLINATION="-308;527;"/>
<icon BUILTIN="info"/>
<node CREATED="1554476799366" ID="ID_977796922" LINK="https://www.cairographics.org/documentation/cairomm/reference/" MODIFIED="1557498707239" TEXT="Cairomm"/>
<node CREATED="1554476906923" ID="ID_437420072" MODIFIED="1557498707239" TEXT="Cairo-Doku(allgemein)"/>
<node CREATED="1554476956084" ID="ID_541824716" LINK="https://www.cairographics.org/documentation/cairomm/reference/classCairo_1_1Context.html" MODIFIED="1557498707239" TEXT="CairoContext(C++)"/>
</node>
<node CREATED="1561412911257" ID="ID_1173541827" LINK="https://www.cairographics.org/tutorial/" MODIFIED="1677771875029" TEXT="Zusammenfassung: Cairo-Konzepte">
<linktarget COLOR="#6460c9" DESTINATION="ID_1173541827" ENDARROW="Default" ENDINCLINATION="-1791;132;" ID="Arrow_ID_1651743539" SOURCE="ID_711895669" STARTARROW="None" STARTINCLINATION="-2602;211;"/>
<linktarget COLOR="#5579dd" DESTINATION="ID_1173541827" ENDARROW="Default" ENDINCLINATION="-2465;188;" ID="Arrow_ID_1216025940" SOURCE="ID_1322665426" STARTARROW="None" STARTINCLINATION="-2437;323;"/>
<node CREATED="1561412945044" FOLDED="true" ID="ID_1336013492" MODIFIED="1677772243199" TEXT="&#xbb;Source&#xab;">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      der Druck-Metapher gem&#228;&#223; ist das die &#8222;Farbwalze&#8220; oder das &#8222;Stempelkissen&#8220;
    </p>
  </body>
</html></richcontent>
<node CREATED="1561412970112" ID="ID_358371042" MODIFIED="1561412984826" TEXT="Colour"/>
<node CREATED="1561412985423" ID="ID_761624981" MODIFIED="1561412991540" TEXT="Gradient"/>
<node CREATED="1561412992114" ID="ID_457063785" MODIFIED="1561412994561" TEXT="Image"/>
<node CREATED="1677770744973" ID="ID_987770773" MODIFIED="1677770772509" TEXT="andere Cairo-Surface mit bereits bestehender Zeichnung"/>
</node>
<node CREATED="1677418174529" FOLDED="true" ID="ID_546569349" MODIFIED="1677772244319" TEXT="&#xbb;Path&#xab; ">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      wird mit jeder stroke() oder fill()-Operation geleert. Ist Teil des Context, und weitere Zeichen-Operationen f&#252;gen zu dem Pfad hinzu
    </p>
  </body>
</html></richcontent>
<node CREATED="1677771112172" ID="ID_1976690582" MODIFIED="1677771113744" TEXT="die aktive Kontur, welche die Maske definiert"/>
<node CREATED="1677771139011" ID="ID_1072620989" MODIFIED="1677771161856" TEXT="wird durch die Zeichen-Operationen sukzessive aufgebaut"/>
<node CREATED="1677771165277" ID="ID_166622924" MODIFIED="1677771182455" TEXT="kann aus offenen, geschlossenen und mehreren Pfaden bestehen, auch &#xfc;berlappend"/>
<node CREATED="1677771190338" ID="ID_1049161431" MODIFIED="1677771299425" TEXT="Beim F&#xfc;llen bestimmt die Fill-Rule, wie mit Verschachtelung umgegangen wird">
<arrowlink DESTINATION="ID_1306302451" ENDARROW="Default" ENDINCLINATION="218;-202;" ID="Arrow_ID_128834298" STARTARROW="None" STARTINCLINATION="216;8;"/>
</node>
<node CREATED="1677419117535" ID="ID_1895718071" MODIFIED="1677419158897" TEXT="close_path() : schlie&#xdf;t den Pfad durch eine Linie zum Startpunkt zur&#xfc;ck"/>
</node>
<node CREATED="1561412948428" FOLDED="true" ID="ID_66649578" MODIFIED="1677772245551" TEXT="&#xbb;Mask&#xab;">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      die Source wird durch die Mask hindurch &#8222;gestempelt&#8220;
    </p>
  </body>
</html></richcontent>
<node CREATED="1561412996428" ID="ID_621110720" MODIFIED="1561413006567" TEXT="stroke, fill, text, set_mask()"/>
<node CREATED="1561413034863" ID="ID_1207183549" MODIFIED="1677770935312" TEXT="je nach Druck-Operation wird die Maske genutzt als Kontur oder Inhaltsfl&#xe4;che"/>
</node>
<node CREATED="1561412961226" FOLDED="true" ID="ID_670962008" MODIFIED="1677772246591" TEXT="&#xbb;Surface&#xab; ">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <ul>
      <li>
        Kann angezeigt werden
      </li>
      <li>
        Kann in ein Bitmap gerendered werden
      </li>
      <li>
        Kann als &#187;source&#171; f&#252;r weitere Zeichenvorg&#228;nge dienen
      </li>
    </ul>
  </body>
</html></richcontent>
<node CREATED="1561413010338" ID="ID_773980893" MODIFIED="1677770961844" TEXT="Ausgabeformat / Destination"/>
<node CREATED="1677771008070" ID="ID_538046316" MODIFIED="1677771016717" TEXT="die Zeichenfl&#xe4;che, auf der Cairo arbeitet."/>
<node CREATED="1561413017945" ID="ID_362589945" MODIFIED="1677771022698" TEXT="...auf diese wird &quot;gestempelt&quot;"/>
</node>
<node CREATED="1677417850939" FOLDED="true" ID="ID_1653836867" MODIFIED="1677772254958" TEXT="Druck-Operationen">
<icon BUILTIN="back"/>
<node CREATED="1677417629676" ID="ID_1746207798" MODIFIED="1677417638096" TEXT="stroke() : Kontur zeichnen"/>
<node CREATED="1677417639087" ID="ID_1449245923" MODIFIED="1677417654897" TEXT="fill() : Masken-Inneres f&#xfc;llen">
<node CREATED="1677419615244" ID="ID_1306302451" MODIFIED="1677771301129" TEXT="Fill-Rule">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1306302451" ENDARROW="Default" ENDINCLINATION="218;-202;" ID="Arrow_ID_128834298" SOURCE="ID_1049161431" STARTARROW="None" STARTINCLINATION="216;8;"/>
<node CREATED="1677420366268" ID="ID_1749745867" LINK="https://www.cairographics.org/manual/cairo-cairo-t.html#cairo-set-fill-rule" MODIFIED="1677420398715" TEXT="cairo_set_fill_rule"/>
<node CREATED="1677420412998" ID="ID_1655853556" LINK="https://www.cairographics.org/manual/cairo-cairo-t.html#cairo-fill-rule-t" MODIFIED="1677420423252" TEXT="cairo_fill_rule_t">
<node CREATED="1677420567785" ID="ID_1786405165" MODIFIED="1677420597785" TEXT="WINDING : Drehsinn der Begrenzung z&#xe4;hlt"/>
<node CREATED="1677420598805" ID="ID_709687384" MODIFIED="1677420627615" TEXT="EVENODD: Begrenzungen nach Au&#xdf;en werden gez&#xe4;hlt"/>
</node>
</node>
</node>
<node CREATED="1677417818031" ID="ID_469249374" MODIFIED="1677417837746" TEXT="paint() : &#xfc;bertr&#xe4;gt Quelle ohne Maske auf die Zeichenfl&#xe4;che"/>
<node CREATED="1677772081020" ID="ID_866086233" MODIFIED="1677772135873" TEXT="siehe auch save() / restore()">
<arrowlink DESTINATION="ID_242254806" ENDARROW="Default" ENDINCLINATION="-114;-3;" ID="Arrow_ID_184125692" STARTARROW="None" STARTINCLINATION="-159;16;"/>
</node>
</node>
<node CREATED="1677419358419" FOLDED="true" ID="ID_414920706" LINK="https://www.cairographics.org/manual/cairo-Transformations.html#cairo-translate" MODIFIED="1677772258018" TEXT="Koordinaten-Transformation">
<node CREATED="1677419162869" ID="ID_305831750" MODIFIED="1677419232544" TEXT="translate(dx,dy)) : verschiebt den Ursprung der &#xbb;user space coordinates&#xab; um (dx,dy)"/>
<node CREATED="1677419197776" ID="ID_1423561245" MODIFIED="1677419226680" TEXT="scale(sx,xy) : skaliert die aktuellen Achen der &#xbb;user space coordinates&#xab;"/>
<node CREATED="1677419275529" ID="ID_572343688" MODIFIED="1677419324939" TEXT="rotate(rad) : dreht die Achsen der &#xbb;user space coordinates&#xab; um rad Radians"/>
<node CREATED="1677771358116" HGAP="10" ID="ID_1729875163" MODIFIED="1677772189246" TEXT="Hinweise" VSHIFT="14">
<edge COLOR="#4f4d8b" STYLE="linear"/>
<icon BUILTIN="idea"/>
<node CREATED="1677771402302" ID="ID_1290869611" MODIFIED="1677771639221">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <b>current transformation matrix</b>&#160;(CTM) : User-Space &#10236; Device-Space
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1677419509304" ID="ID_1727557351" MODIFIED="1677419543819" TEXT="Transformationen k&#xf6;nnen jederzeit gesetzt werden; auch zwischen Zeichnen und stroke()">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1677771427923" ID="ID_1957253312" MODIFIED="1677771629176">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Transformations-Definition wird <i>eingangsseitig vor</i>&#160;die aktuelle CTM <b>vorgeschaltet</b>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
<node CREATED="1677771499633" ID="ID_1610038161" MODIFIED="1677771625408" TEXT="&#x27f9; Transformations-Definitionen mu&#xdf; man r&#xfc;ckw&#xe4;rts lesen">
<icon BUILTIN="idea"/>
<node CREATED="1677771522070" ID="ID_420870935" MODIFIED="1677771622365">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Beispiel:
    </p>
    <p>
      <code http-equiv="content-type" content="text/html; charset=utf-8"><font color="#4c3acb">&#160;&#160;&#160;cairo_scale (cr, 100, 100); </font></code>
    </p>
    <p>
      <code http-equiv="content-type" content="text/html; charset=utf-8"><font color="#4c3acb">&#160;&#160;&#160;cairo_translate (cr, 0.1, 0.1);</font></code>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
<node CREATED="1677771582158" ID="ID_1556298030" MODIFIED="1677771598223" TEXT="zuerst den Origin verschieben nach (0.1, 0.1)"/>
<node CREATED="1677771599488" ID="ID_678482027" MODIFIED="1677771618101" TEXT="dann um diesen Origin homogen skalieren mit Faktor 100"/>
</node>
</node>
</node>
<node CREATED="1677771926848" HGAP="-16" ID="ID_242254806" MODIFIED="1677772189251" TEXT="save() / restore() : ein Stack f&#xfc;r aktuelle Zeichen/Druckeinstellungen" VSHIFT="4">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...die aktuellen Transformations-Einstellungen (current transformation matrix CTM)
    </p>
    <p>
      ...und nicht nur das, auch die Source-Einstellungen wie Linienst&#228;rke und Zeichenfarben
    </p>
  </body>
</html></richcontent>
<edge COLOR="#4f4d8b" STYLE="linear"/>
<linktarget COLOR="#a9b4c1" DESTINATION="ID_242254806" ENDARROW="Default" ENDINCLINATION="-114;-3;" ID="Arrow_ID_184125692" SOURCE="ID_866086233" STARTARROW="None" STARTINCLINATION="-159;16;"/>
</node>
</node>
</node>
</node>
<node CREATED="1624113528316" ID="ID_727104900" MODIFIED="1624113773596" TEXT="Zeichnen in Cairo">
<linktarget COLOR="#6980d1" DESTINATION="ID_727104900" ENDARROW="Default" ENDINCLINATION="-1870;290;" ID="Arrow_ID_1515795020" SOURCE="ID_705175220" STARTARROW="None" STARTINCLINATION="-2646;354;"/>
<icon BUILTIN="idea"/>
<node CREATED="1624113640224" ID="ID_1539514230" MODIFIED="1624113662485" TEXT="&#xbb;turtle graphic&#xab;">
<node CREATED="1624113669428" ID="ID_18866635" MODIFIED="1624113679143" TEXT="man zeichnet eine Linien/Bogen-Folge"/>
<node CREATED="1624113680636" ID="ID_453379928" MODIFIED="1624113690528" TEXT="stets implizit von der aktuellen Position weg"/>
<node CREATED="1624113691812" ID="ID_1163351000" MODIFIED="1624113728401" TEXT="f&#xfc;r eine abgetrennte Form mu&#xdf; man den Startpunkt explizit per move_to(x,y) setzen">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
</node>
<node CREATED="1677191161908" HGAP="69" ID="ID_1598706179" MODIFIED="1677191736708" TEXT="Umgang mit SVG" VSHIFT="29">
<linktarget COLOR="#4660c4" DESTINATION="ID_1598706179" ENDARROW="Default" ENDINCLINATION="-1583;-200;" ID="Arrow_ID_1296361422" SOURCE="ID_1618186555" STARTARROW="Default" STARTINCLINATION="-2177;271;"/>
<node CREATED="1677191174685" ID="ID_1839405957" MODIFIED="1677191200069" TEXT="Basiswissen">
<node CREATED="1677191211677" ID="ID_897956475" MODIFIED="1677191216323" TEXT="es ist ein XML-Standard"/>
</node>
<node CREATED="1677191231654" FOLDED="true" ID="ID_1597077699" MODIFIED="1677191933161" TEXT="Koordinaten und Transformationen">
<linktarget COLOR="#6f90b6" DESTINATION="ID_1597077699" ENDARROW="Default" ENDINCLINATION="-895;71;" ID="Arrow_ID_1698154465" SOURCE="ID_1613786140" STARTARROW="None" STARTINCLINATION="-1020;86;"/>
<node CREATED="1677191243092" ID="ID_1422042718" MODIFIED="1677191246287" TEXT="Bezugssystem">
<node CREATED="1677191248717" ID="ID_1388848012" MODIFIED="1677198334322" TEXT="Ursprung: obere linke Ecke des Dokuments"/>
<node CREATED="1677191272112" ID="ID_1654409714" MODIFIED="1677198338441" TEXT="positive Werte nach rechts und unten"/>
<node CREATED="1677198686263" ID="ID_1665325090" MODIFIED="1677198773687" TEXT="UI-Anzeige: Lineal und Transformationen von unten nach oben">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      anscheinend gibt es eine Konvention, welche die im UI sichtbaren Koordinaten in vertikaler Richtung spiegelt; auch ist der auf dem Lineal angezeigte Ursprung unten links
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1677191323713" ID="ID_1754370087" MODIFIED="1677191337403" TEXT="Gruppen werden gemeinsam transformiert">
<node CREATED="1677191339255" ID="ID_836434984" MODIFIED="1677191361440" TEXT="alle Gruppen aufl&#xf6;sen &#x27f9; Transformationen im Element angewendet"/>
<node CREATED="1677191395503" ID="ID_890070784" MODIFIED="1677191443488">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Koordinaten<i>&#160;&#187;vers&#228;ubern&#171;</i>
    </p>
  </body>
</html></richcontent>
<node CREATED="1677191449424" ID="ID_732340507" MODIFIED="1677191541569" TEXT="Objekte in einer (flachen) Gruppe">
<icon BUILTIN="full-1"/>
</node>
<node CREATED="1677191477803" ID="ID_731083583" MODIFIED="1677191544059" TEXT="logischer Bezugspunkt &#x27fc; Dokument-Ursprung">
<icon BUILTIN="full-2"/>
</node>
<node CREATED="1677191507606" ID="ID_509272377" MODIFIED="1677191546655" TEXT="Gruppierung aufl&#xf6;sen (&#x27f9; anwenden)">
<icon BUILTIN="full-3"/>
</node>
<node CREATED="1677191525514" ID="ID_1625442685" MODIFIED="1677191549352" TEXT="erneut gruppieren und beliebig transformieren">
<icon BUILTIN="full-4"/>
</node>
</node>
</node>
</node>
<node CREATED="1677373645637" FOLDED="true" ID="ID_484697692" MODIFIED="1677373653724" TEXT="Element-Specs">
<node CREATED="1677373442909" ID="ID_1744669640" MODIFIED="1677373454279" TEXT="Format f&#xfc;r Bogensegment">
<node CREATED="1677373673789" ID="ID_1603437139" MODIFIED="1677373683997" TEXT="Kenndaten des Bogens als Attribute">
<node CREATED="1677373686724" ID="ID_410559852" MODIFIED="1677373711793" TEXT="cx,cy : Centre"/>
<node CREATED="1677373699871" ID="ID_231844287" MODIFIED="1677373709661" TEXT="rx,ry : Radien"/>
<node CREATED="1677373723327" ID="ID_776243075" MODIFIED="1677373772988" TEXT="start : Startwinkel in Radians"/>
<node CREATED="1677373777535" ID="ID_1410316571" MODIFIED="1677373784603" TEXT="end : Endwinkel in Radians"/>
<node CREATED="1677373774108" ID="ID_1395506738" MODIFIED="1677373775422" TEXT="(&#x21bb; Uhrzeigersinn, Start 3 Uhr)"/>
</node>
<node CREATED="1677373491955" ID="ID_1533321869" MODIFIED="1677373499451" TEXT="&quot;M&quot; : move to"/>
<node CREATED="1677373500462" ID="ID_170499055" MODIFIED="1677373508487" TEXT="Koordinaten des Startpunktes"/>
<node CREATED="1677373509715" ID="ID_1696160837" MODIFIED="1677373513727" TEXT="&quot;A&quot; : arc"/>
<node CREATED="1677373537578" ID="ID_1997577833" MODIFIED="1677373557177" TEXT="Radius-x , Radius-y"/>
<node CREATED="1677373558173" ID="ID_1990371384" MODIFIED="1677373562240" TEXT="einige Flags"/>
<node CREATED="1677373564420" ID="ID_1371186362" MODIFIED="1677373572211" TEXT="&quot;L&quot; "/>
<node CREATED="1677373597315" ID="ID_935281905" MODIFIED="1677373603048" TEXT="Koordinaten des Endpunktes"/>
</node>
</node>
<node CREATED="1677193200445" FOLDED="true" ID="ID_992404239" MODIFIED="1677193225288" TEXT="Konventionen: sauber f&#xfc;r Git">
<node CREATED="1665801312049" ID="ID_987434179" MODIFIED="1677193745466" TEXT="Tip: Styles vereinfachen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...und Inkscape wird das erhalten, solange man die betr. Features nicht wieder aktiviert. Im Besonderen kann man
    </p>
    <ul>
      <li>
        alle &quot;Stroke&quot;-Features entfernen, wenn der Stroke deaktiviert ist
      </li>
      <li>
        opacity:1 weglassen
      </li>
      <li>
        die Defaults &quot;color:#000000;display:inline;overflow:visible;visibility:visible;&quot;&#160;&#160;kann man meist weglassen
      </li>
      <li>
        diverse Vector-Filter und display-styles weglassen (wenn sie auf dem default-Wert stehen)
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
<node CREATED="1677193557813" ID="ID_1283963549" MODIFIED="1677193576432" TEXT="Beispiel-1">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      style=&quot;fill:black;fill-opacity:0.5;stroke:#5a8fb2;stroke-opacity:1;stroke-width:0.1&quot;
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1677193578234" ID="ID_1553838226" MODIFIED="1677193626515" TEXT="Beispiel-2">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      style=&quot;fill:#ffffff;fill-opacity:0.75;stroke:none;stroke-width:0.05&quot;
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1677197293221" ID="ID_119422640" MODIFIED="1677197370570" TEXT="Verhalten stark konfigurierbar">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      aber leider nur als globales Verhalten der Inkscape-Installation
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1677197311790" ID="ID_680061629" MODIFIED="1677197317737" TEXT="Grad der XML-Vereinfachung"/>
<node CREATED="1677197318326" ID="ID_237170915" MODIFIED="1677197322760" TEXT="numerische Pr&#xe4;zesion"/>
<node CREATED="1677197324300" ID="ID_807721887" MODIFIED="1677197330719" TEXT="automatisches Reduzieren von Styles"/>
<node CREATED="1677197342730" ID="ID_452445462" MODIFIED="1677197424732" TEXT="ob Transformationen angewendet werden">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Behaviour &gt; Transforms &gt; store optimised
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1677197426650" ID="ID_1370427344" MODIFIED="1677197447842" TEXT="ob Gradienten und Pattern transformiert werden"/>
</node>
</node>
</node>
<node CREATED="1482365415326" HGAP="71" ID="ID_886002365" MODIFIED="1557498707240" TEXT="Standard C++" VSHIFT="-25">
<node CREATED="1688646174430" ID="ID_1246578113" MODIFIED="1688646186652" TEXT="base language knowledge">
<icon BUILTIN="info"/>
<node CREATED="1688646188508" FOLDED="true" ID="ID_464419365" MODIFIED="1688648419999" TEXT="POD and unions">
<linktarget COLOR="#534e96" DESTINATION="ID_464419365" ENDARROW="Default" ENDINCLINATION="-729;124;" ID="Arrow_ID_1095556572" SOURCE="ID_683405596" STARTARROW="None" STARTINCLINATION="-1826;106;"/>
<node CREATED="1688646230670" ID="ID_1200807820" MODIFIED="1688646259534" TEXT="POD &#x27fa; &#x201e;no compiler magic happens&#x201c;">
<node CREATED="1688646260810" ID="ID_1731163706" LINK="https://stackoverflow.com/a/146589" MODIFIED="1688646437208" TEXT="basic built-in types and aggretates thereof"/>
<node CREATED="1688646300048" ID="ID_1520004791" LINK="https://stackoverflow.com/a/7189821" MODIFIED="1688646422060" TEXT="in C strikter als in C++ / private Funktionen und ptr-to-member sind erlaubt"/>
</node>
<node CREATED="1688646442954" ID="ID_1586820596" MODIFIED="1688646451700" TEXT="unions can be POD or non-POD">
<node CREATED="1688646471639" ID="ID_904815410" MODIFIED="1688646481455" TEXT="rekursive Definition">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1688646482526" ID="ID_269065631" MODIFIED="1688646518786" TEXT="nichttriviale Logik &#x27f9; kann kein POD mehr sein"/>
<node CREATED="1688646519679" ID="ID_30562198" MODIFIED="1688646596687">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      wenn ein Member eine nichttriviale Funktion hat,
    </p>
    <p>
      dann mu&#223; die gleiche Funktion f&#252;r die unition explizit geschrieben werden
    </p>
    <ul>
      <li>
        ctor (auch default)
      </li>
      <li>
        copy-ctor
      </li>
      <li>
        assignment
      </li>
      <li>
        dtor
      </li>
      <li>
        vtable
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1688646774405" ID="ID_1671950490" MODIFIED="1688646809035">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      im Zweifelsfall: <font face="Monospaced" color="#4a3ecd">std::is_pod&lt;TY&gt;()</font>&#160;fragen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1688647296784" ID="ID_710545394" MODIFIED="1688647352432">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <u><font color="#b80225">Achtung</font></u>: der Begriff &#187;POD&#171; is <font face="Monospaced" color="#9c5709">@deprecated</font>
    </p>
  </body>
</html></richcontent>
<node CREATED="1688647397946" ID="ID_1763884111" LINK="https://en.cppreference.com/w/cpp/named_req/StandardLayoutType" MODIFIED="1688647548910" TEXT="std::is_standard_layout">
<node CREATED="1688648333494" ID="ID_1238201043" MODIFIED="1688648339305" TEXT="rekursiv definiert">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1688648375312" ID="ID_378721631" MODIFIED="1688648389446" TEXT="Objekt besteht aus nichts au&#xdf;er den Datenelementen">
<icon BUILTIN="info"/>
</node>
<node CREATED="1688648359798" ID="ID_386098441" MODIFIED="1688648362570" TEXT="keine VTable"/>
<node CREATED="1688648340428" ID="ID_1831676232" MODIFIED="1688648358845" TEXT="kein Padding findet statt"/>
<node CREATED="1688648363841" ID="ID_864980607" MODIFIED="1688648369812" TEXT="offsetof() kann verwendet werden"/>
</node>
<node CREATED="1688647404527" ID="ID_1112859987" LINK="https://en.cppreference.com/w/cpp/named_req/TrivialType" MODIFIED="1688647454010" TEXT="std::is_trivial">
<node CREATED="1688648206419" ID="ID_1701153211" MODIFIED="1688648241387">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      &#8222;trivial&#8220; &#10233; der Compiler mu&#223; <i>nix Spezielles</i>&#160; machen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1688647905286" ID="ID_740091299" MODIFIED="1688647912297" TEXT="trivially_copyable">
<node CREATED="1688647922148" ID="ID_1365927097" MODIFIED="1688647939032" TEXT="copy, move, assignment und dtor sind trivial"/>
<node CREATED="1688648190416" ID="ID_1986330338" MODIFIED="1688648294481" TEXT="das hei&#xdf;t: kann stattdessen std::memove verwenden">
<icon BUILTIN="info"/>
</node>
<node CREATED="1688648300441" ID="ID_924956250" MODIFIED="1688648325010" TEXT="trivial dtor: es passiert gar nichts (au&#xdf;er de-Allocation)"/>
</node>
<node CREATED="1688647912797" ID="ID_1339407010" MODIFIED="1688647918511" TEXT="hat einen trivial default-ctor">
<node CREATED="1688648248344" ID="ID_1793228843" MODIFIED="1688648284218" TEXT="es findet keinerlei explizitie Initialisierung statt">
<icon BUILTIN="info"/>
</node>
<node CREATED="1688648266062" ID="ID_1386655083" MODIFIED="1688648279595" TEXT="Vorsicht: kein Member darf einen default-Initialiser haben">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1689635395135" ID="ID_1740151872" MODIFIED="1689635403952" TEXT="Lmbda mutable capture">
<node CREATED="1689635411410" ID="ID_1645232120" MODIFIED="1689635427836" TEXT="mu&#xdf; als Specifier angegeben werden"/>
<node CREATED="1689635435623" ID="ID_543320478" MODIFIED="1689635448191" TEXT="normalerweise sind by-value captures read-only">
<icon BUILTIN="info"/>
</node>
<node COLOR="#2a2f72" CREATED="1689635451445" ID="ID_1371714413" MODIFIED="1689635519780" TEXT="[x](Arg arg) mutable { /* body */ }">
<font NAME="Monospaced" SIZE="12"/>
</node>
</node>
</node>
<node CREATED="1482365430484" ID="ID_1414724077" MODIFIED="1557498707240" TEXT="chrono">
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1482365434203" ID="ID_1026694670" MODIFIED="1698513237617" TEXT="lernen">
<icon BUILTIN="pencil"/>
</node>
<node COLOR="#435e98" CREATED="1698509149755" FOLDED="true" ID="ID_1398776971" MODIFIED="1698517953935" TEXT="Typen">
<icon BUILTIN="info"/>
<node CREATED="1698509762610" ID="ID_1986628839" MODIFIED="1698509766858" TEXT="chrono::duration">
<node CREATED="1698509770558" ID="ID_878634117" MODIFIED="1698509782485" TEXT="der Basis-Typ von Chono: ein Zeitintervall"/>
<node CREATED="1698509785071" ID="ID_367023996" MODIFIED="1698509794436" TEXT="ist stets eine Template-Instanz">
<node CREATED="1698509796445" ID="ID_1990722417" MODIFIED="1698509799977" TEXT="das ist etwas l&#xe4;stig"/>
<node CREATED="1698509800661" ID="ID_228113154" MODIFIED="1698509815551" TEXT="weil damit alle Funktionen jeweils zwei Template-Parameter bekommen"/>
</node>
<node CREATED="1698509856581" ID="ID_322748492" MODIFIED="1698509899658">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <div http-equiv="content-type" content="text/html; charset=utf-8">
      <font face="Monospaced" size="2">template&lt;<br face="Monospaced" size="2" /></font>

      <p>
        <font face="Monospaced" size="2">&#160;&#160;&#160; class&#160;Rep,<br face="Monospaced" size="2" />&#160;&#160;&#160; class&#160;Period =&#160; <a href="http://en.cppreference.com/w/cpp/numeric/ratio/ratio">std::ratio</a>&lt;1&gt;<br face="Monospaced" size="2" /></font>
      </p>
      <font face="Monospaced" size="2">&gt;&#160;</font><font face="Monospaced" size="2" color="#391163">class&#160;<b>duration</b></font><font face="Monospaced" size="2">; </font>
    </div>
  </body>
</html></richcontent>
<node CREATED="1698509911262" ID="ID_820008742" MODIFIED="1698509966828" TEXT="Rep: Implementierungs-Typ">
<node CREATED="1698509921213" ID="ID_417702617" MODIFIED="1698509930368" TEXT="nur dieser Datenwert wird gespeichert"/>
<node CREATED="1698509931010" ID="ID_1755589004" MODIFIED="1698509941486" TEXT="ist ein Integer oder floating-point typ"/>
<node CREATED="1698509942730" ID="ID_651563014" MODIFIED="1698509949205" TEXT="....also letztlich &quot;numerisch&quot;"/>
</node>
<node CREATED="1698509954194" ID="ID_1878098401" MODIFIED="1698509988720" TEXT="Period: Periode">
<node CREATED="1698509990731" ID="ID_328352685" MODIFIED="1698509997087" TEXT="Ma&#xdf;einheit: Sekunden"/>
<node CREATED="1698509997554" ID="ID_1236632774" MODIFIED="1698512441560" TEXT="dargestellt als compile-Time std::ratio"/>
</node>
<node CREATED="1698511408926" ID="ID_1552020609" MODIFIED="1698511411890" TEXT="count()">
<node CREATED="1698511412838" ID="ID_1376578033" MODIFIED="1698511452668" TEXT="liefert die Darstellung als Typ Rep"/>
</node>
</node>
</node>
<node CREATED="1698512614901" ID="ID_876001560" MODIFIED="1698512619448" TEXT="time_point">
<node CREATED="1698512624972" ID="ID_512068076" MODIFIED="1698512637765" TEXT="verpackte Duration bezogen auf eine Clock-Epoch">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1698512789253" ID="ID_1996685993" MODIFIED="1698513276369" TEXT="time_since_epoch()">
<node CREATED="1698512793429" ID="ID_1961113873" MODIFIED="1698512801768" TEXT="liefert eine Duration"/>
<node CREATED="1698512778071" ID="ID_718175118" MODIFIED="1698513284295" TEXT="Zugriff auf &#xbb;Wert&#xab;"/>
</node>
<node CREATED="1698512645726" ID="ID_1612837076" MODIFIED="1698513354696" TEXT="Zugang per Umwandlungs-Funktionen">
<arrowlink COLOR="#677d8a" DESTINATION="ID_252535572" ENDARROW="Default" ENDINCLINATION="-90;-144;" ID="Arrow_ID_1740457437" STARTARROW="None" STARTINCLINATION="-164;13;"/>
</node>
</node>
<node CREATED="1698509081104" HGAP="98" ID="ID_644665778" MODIFIED="1698509183027" TEXT="Chrono: Clocks" VSHIFT="-19">
<linktarget COLOR="#5462be" DESTINATION="ID_644665778" ENDARROW="Default" ENDINCLINATION="-1222;187;" ID="Arrow_ID_31881734" SOURCE="ID_1107882116" STARTARROW="None" STARTINCLINATION="-1305;116;"/>
<icon BUILTIN="clock"/>
<node CREATED="1698509490470" ID="ID_1166354595" MODIFIED="1698509492294" TEXT="API">
<node CREATED="1698509493269" ID="ID_277517516" MODIFIED="1698509496777" TEXT="statisch: now()"/>
<node CREATED="1698511651646" ID="ID_729262634" MODIFIED="1698512331821" TEXT="constexpr static: is_steady"/>
<node CREATED="1698509497896" ID="ID_448445295" MODIFIED="1698509501488" TEXT="Typedefs">
<node CREATED="1698509507057" ID="ID_1427572973" MODIFIED="1698509510351" TEXT="chrono::duration"/>
<node CREATED="1698509544709" ID="ID_258287310" MODIFIED="1698509560210" TEXT="rep : der Implementierungs-Typ"/>
<node CREATED="1698509560812" ID="ID_590462425" MODIFIED="1698512427154" TEXT="Period als compile-Time std::ratio of 1"/>
<node CREATED="1698509614721" ID="ID_891145455" MODIFIED="1698509618696" TEXT="time_point">
<node CREATED="1698509619509" ID="ID_216113768" MODIFIED="1698509628660" TEXT="per Template-Arg an die Clock gebunden"/>
<node CREATED="1698509643003" ID="ID_555660236" MODIFIED="1698509747546">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p style="text-align: right">
      <u>Beispiel steady_clock</u>
    </p>
    <p>
      <font color="#382a6e" face="Monospaced" size="2">using time_point =&#160;chrono::time_point&lt;steady_clock, steady_clock::duration&gt;</font>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
<node CREATED="1698509191197" ID="ID_1356397278" MODIFIED="1698509201128" TEXT="System-Clock">
<node CREATED="1698509319928" ID="ID_44478916" MODIFIED="1698509324928" TEXT="hat zus&#xe4;tzliche Funktionen">
<node CREATED="1698509341937" ID="ID_1046747441" MODIFIED="1698509351084" TEXT="Zeit Formatieren / IO"/>
<node CREATED="1698509353439" ID="ID_1183159748" MODIFIED="1698509365770" TEXT="Konv. zu time_t (f&#xfc;r C APIs)"/>
</node>
<node CREATED="1698509441280" ID="ID_217512931" MODIFIED="1698509451740" TEXT="kann Spr&#xfc;nge machen bei NTP-Adjustments"/>
<node CREATED="1698509453299" ID="ID_550403574" MODIFIED="1698509474932" TEXT="typischerweise: Nanosec since &#xbb;Unix-Epoch&#xab; (1.1.1970)"/>
</node>
<node CREATED="1698509202212" ID="ID_790803121" MODIFIED="1698509207431" TEXT="Steady-Clock">
<node CREATED="1698509208331" ID="ID_591620752" MODIFIED="1698509217401" TEXT="ist garantiert monoton wachsend"/>
<node CREATED="1698509218162" ID="ID_596220520" MODIFIED="1698509233539" TEXT="keinerlei Angaben zum Zeitnullpunkt"/>
<node CREATED="1698509274790" ID="ID_429550366" MODIFIED="1698509311899" TEXT="kann z.B. Ticks seit letztem Boot sein"/>
</node>
<node CREATED="1698511615579" ID="ID_1031342236" MODIFIED="1698511622222" TEXT="High-Resolution-Clock">
<node CREATED="1698511623066" ID="ID_943634419" MODIFIED="1698511631172" TEXT="ist etwas fragw&#xfc;rdig"/>
<node CREATED="1698511631628" ID="ID_565001872" MODIFIED="1698511644794" TEXT="da keine Festlegung, ob monotonic"/>
</node>
<node CREATED="1698508991193" ID="ID_36572696" MODIFIED="1698511601168" TEXT="Stand(libstdc++ 8)">
<icon BUILTIN="back"/>
<node CREATED="1698509386500" ID="ID_543938648" MODIFIED="1698509396728" TEXT="alle Clocks haben Nano-Ticks"/>
<node CREATED="1698509397570" ID="ID_697985650" MODIFIED="1698509405605" TEXT="rep = int64_t"/>
<node CREATED="1698509409721" ID="ID_1625495674" MODIFIED="1698509436425" TEXT="high_resolution_clock ist alias &#x27f6; System-Clock"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1698512950960" FOLDED="true" ID="ID_389621636" MODIFIED="1698517957017" TEXT="Umwandlungen">
<icon BUILTIN="info"/>
<node CREATED="1698513121905" ID="ID_1567041783" MODIFIED="1698513133305" TEXT="duration-Konstruktor">
<node CREATED="1698513135055" ID="ID_540706165" MODIFIED="1698513150985" TEXT="m&#xf6;glich wenn Basis-Typen direkt kompatibel"/>
<node CREATED="1698513151348" ID="ID_1794770890" MODIFIED="1698513179245" TEXT="und ganzzahliges Divisionsverh&#xe4;ltnis"/>
</node>
<node CREATED="1698513112016" ID="ID_1108519346" MODIFIED="1698513120179" TEXT="duration_cast&lt;ToDuration&gt;">
<node CREATED="1698516509446" ID="ID_1945968798" MODIFIED="1698516515393" TEXT="macht einen floor()"/>
</node>
<node CREATED="1698512955343" ID="ID_1223227649" MODIFIED="1698512969362" TEXT="timepoint_cast&lt;ToDuration&gt;"/>
<node CREATED="1698513313391" ID="ID_252535572" MODIFIED="1698513346664" TEXT="Rundungs-Umwandlungen">
<linktarget COLOR="#677d8a" DESTINATION="ID_252535572" ENDARROW="Default" ENDINCLINATION="-90;-144;" ID="Arrow_ID_1740457437" SOURCE="ID_1612837076" STARTARROW="None" STARTINCLINATION="-164;13;"/>
<node CREATED="1698512656551" ID="ID_1370779068" MODIFIED="1698516529207" TEXT="floor()"/>
<node CREATED="1698512665366" ID="ID_472310839" MODIFIED="1698516533023" TEXT="ceil()"/>
<node CREATED="1698512673517" ID="ID_117446943" MODIFIED="1698516538022" TEXT="round()"/>
<node CREATED="1698516539145" ID="ID_206449756" MODIFIED="1698516550270" TEXT="arbeitet auf duration und time_point">
<node CREATED="1698512850622" ID="ID_510318894" MODIFIED="1698516618484" TEXT="liefert dann Duration oder Time-point mit einer anderen Period / Rep"/>
</node>
<node CREATED="1698512818089" ID="ID_1130528368" MODIFIED="1698512832972" TEXT="1. Template-Parameter mandatory: ToDuration"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1698511477688" FOLDED="true" HGAP="32" ID="ID_1964801588" MODIFIED="1698517960542" TEXT="vordefinierte Skalen und Konstanten">
<icon BUILTIN="info"/>
<node CREATED="1698511502393" ID="ID_636370937" MODIFIED="1698511512348" TEXT="vordefinierte Durations">
<node CREATED="1698511513128" ID="ID_1453047706" MODIFIED="1698511515028" TEXT="seconds"/>
<node CREATED="1698511515573" ID="ID_422667456" MODIFIED="1698511518723" TEXT="milliseconds"/>
<node CREATED="1698511519215" ID="ID_1395948719" MODIFIED="1698511522880" TEXT="microseconds"/>
<node CREATED="1698511523319" ID="ID_1025078381" MODIFIED="1698511524907" TEXT="...."/>
</node>
<node CREATED="1698511529358" ID="ID_1905315767" MODIFIED="1698511545616" TEXT="vordefinierte Literal-Operatoren">
<node CREATED="1698511546844" ID="ID_810245100" MODIFIED="1698511551854" TEXT="std::chrono_literals"/>
<node CREATED="1698511552452" ID="ID_980003726" MODIFIED="1698511559006" TEXT="Literal-Schreibweise">
<node CREATED="1698511559795" ID="ID_208097384" MODIFIED="1698511561099" TEXT="10s"/>
<node CREATED="1698511561634" ID="ID_595245063" MODIFIED="1698511566629" TEXT="120ms"/>
<node CREATED="1698511567177" ID="ID_697515798" MODIFIED="1698511568124" TEXT="..."/>
</node>
</node>
</node>
<node CREATED="1482365448257" ID="ID_1648116305" MODIFIED="1557498707240">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Ticket <font color="#ba0c3f">#886</font>
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1620405445951" ID="ID_1127258714" MODIFIED="1620405460977" TEXT="&#xbb;perfect forwarding&#xab;">
<node CREATED="1620405462300" ID="ID_1712821553" MODIFIED="1620405478341" TEXT="hatte nun mehrfach Probleme in Kombination mit Variadic-Templates"/>
<node CREATED="1620405479689" ID="ID_53418276" MODIFIED="1620405514581" TEXT="std::forward&lt;ARGS&gt;(args) ...  ">
<node CREATED="1620405515532" ID="ID_89296387" MODIFIED="1620405524655" TEXT="wenn man damit einen ctor aufruft..."/>
<node CREATED="1620405525238" ID="ID_728173351" MODIFIED="1620405542709" TEXT="dann w&#xe4;hlt das den copy-ctor, nicht den move-ctor"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1620405545856" ID="ID_766649583" MODIFIED="1620405565420" TEXT="mehrfach untersucht, bisher nicht verstanden">
<icon BUILTIN="stop-sign"/>
<node CREATED="1620405577484" ID="ID_1691540337" MODIFIED="1620405876689" TEXT="a57799d0186">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; text-indent: 0px">
      09.05.19 17:10
    </p>
    <p style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; text-indent: 0px">
      <font face="Bitstream Vera Sans Mono">Library: further narrowing down the tuple-forwarding problem</font>
    </p>
    <pre style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; text-indent: 0px"><font face="Bitstream Vera Sans Mono">    </font></pre>
    <pre style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; text-indent: 0px"><font face="Bitstream Vera Sans Mono">    ...yet still not successful.</font></pre>
    <pre style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; text-indent: 0px"><font face="Bitstream Vera Sans Mono">    </font></pre>
    <pre style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; text-indent: 0px"><font face="Bitstream Vera Sans Mono">    The mechanism used for std::apply(tuple&amp;) works fine when applied directly to the target function,</font></pre>
    <pre style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; text-indent: 0px"><font face="Bitstream Vera Sans Mono">    but fails to select the proper overload when passed to a std::forward-call for</font></pre>
    <pre style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; text-indent: 0px"><font face="Bitstream Vera Sans Mono">    &quot;perfect forwarding&quot;. I tried again to re-build the situation of std::forward</font></pre>
    <pre style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; text-indent: 0px"><font face="Bitstream Vera Sans Mono">    with an explicitly coded function, but failed in the end to supply a type parameter</font></pre>
    <pre style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; text-indent: 0px"><font face="Bitstream Vera Sans Mono">    to std::forward suitably for all possible cases</font></pre>
  </body>
</html></richcontent>
<linktarget COLOR="#a98ca6" DESTINATION="ID_1691540337" ENDARROW="Default" ENDINCLINATION="2957;477;" ID="Arrow_ID_1272525320" SOURCE="ID_1773619805" STARTARROW="None" STARTINCLINATION="-1064;82;"/>
</node>
<node CREATED="1620405634252" ID="ID_1554664514" MODIFIED="1620406559164" TEXT="7.5.2021">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      OpaqueUncheckedBuffer_test f&#252;r InPlaceBuffer
    </p>
    <p>
      Wieder das Gleiche: die create&lt;ARGS....&gt; - Funktion delegiert an den copy-ctor, selbst wenn dieser deleted ist
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#9a74a0" DESTINATION="ID_1554664514" ENDARROW="Default" ENDINCLINATION="1930;405;" ID="Arrow_ID_1066770776" SOURCE="ID_154149353" STARTARROW="None" STARTINCLINATION="-6776;285;"/>
<node CREATED="1620409111535" HGAP="73" ID="ID_1792287707" MODIFIED="1620409151241" VSHIFT="27">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      vielleicht doch
    </p>
    <p>
      etwas Anderes
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      das Problem sind implizit definierte Konstruktoren in der Vererbuns-Hierarchie
    </p>
    <p>
      sobald ich alle Move-Konstruktoren explizit definiere, funktionieren alle F&#228;lle
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="help"/>
</node>
</node>
</node>
</node>
<node CREATED="1695776592132" FOLDED="true" ID="ID_1103669600" LINK="https://en.cppreference.com/w/cpp/language/class_template_argument_deduction#Deduction_for_class_templates" MODIFIED="1695779285785" TEXT="via Class Template Argument Deduction (CTAD)">
<linktarget COLOR="#7c86a6" DESTINATION="ID_1103669600" ENDARROW="Default" ENDINCLINATION="-1340;79;" ID="Arrow_ID_344305057" SOURCE="ID_505417061" STARTARROW="None" STARTINCLINATION="-2530;150;"/>
<linktarget COLOR="#7c86a6" DESTINATION="ID_1103669600" ENDARROW="Default" ENDINCLINATION="-1340;79;" ID="Arrow_ID_171962477" SOURCE="ID_313781081" STARTARROW="None" STARTINCLINATION="-729;83;"/>
<node CREATED="1695776635546" ID="ID_536392621" MODIFIED="1695776837788" TEXT="geht normalerweise nicht &#x2014; da keine &#xbb;universelle Referenz&#xab;">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Wenn man eine Klasse C&lt;T&gt; hat, und einen Konstruktur definiert, der ein T&amp;&amp; - Argument nimmt, dann ist das T bereits durch den Klassen-Templateparameter <i>festgelegt; </i>es kommt in diesem Fall nicht zu einem <i>reference collapsing, </i>sondern es handelt sich einfach um eine rvalue-Referenz T&amp;&amp;. Symptom &quot;can not bind rvalue reference to lvalue&quot;
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1695776839723" ID="ID_304077427" MODIFIED="1695776912034" TEXT="Ein Konstruktor mit separatem Template-Parameter kann nicht deduziert werden">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...denn in diesem Fall w&#252;rde es sich zwar um eine &#187;universelle Referenz&#171; handeln, aber der Zusammenhang zum Klassen-Template-Parameter ist nicht klar
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1695776913649" ID="ID_247930242" MODIFIED="1695777249133" TEXT="Abhilfe: expliziten deduction guide schreiben">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <ul>
      <li>
        steht im enclosing scope <i>nach</i>&#160;der Template-Definition
      </li>
      <li>
        syntaktisch eine frei stehende Funktions-Deklaration mit einem <i>trailing return type</i>, welcher die resultierende Template-Spezialisierung konstruieren mu&#223; (kann beliebig komplexe Typ-Ausdr&#252;cke enthalten)
      </li>
    </ul>
    <p>
      
    </p>
    <p>
      <u>Beispiel </u>
    </p>
    <p>
      <font face="Monospaced">&#160;&#160;/** deduction guard: allow _perfect forwarding_ of a any result into the ctor call. */ </font>
    </p>
    <p>
      <font face="Monospaced">&#160;&#160;template&lt;typename VAL&gt; </font>
    </p>
    <p>
      <font face="Monospaced">&#160;&#160;Result (VAL&amp;&amp;) -&gt; Result&lt;VAL&gt;; </font>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1695777446740" ID="ID_1737574962" MODIFIED="1695778365679" TEXT="mit ist nicht klar, warum das dann funktioniert gem&#xe4;&#xdf; Standard">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Wenn ich die Beschreibung in CPPReference.com richtig verstehe, dann w&#252;rde ohne expliziten deduction guide folgender guide automatisch generiert:
    </p>
    <p>
      
    </p>
    <p>
      template&lt;class X&gt;
    </p>
    <p>
      class C {
    </p>
    <p>
      &#160;&#160;C(X&amp;&amp; val);
    </p>
    <p>
      };
    </p>
    <p>
      
    </p>
    <p>
      <u>Auto-Guides</u>:
    </p>
    <p>
      
    </p>
    <p>
      template&lt;class X&gt;
    </p>
    <p>
      C&lt;X&gt; g1(X&amp;&amp; val)
    </p>
    <p>
      
    </p>
    <p>
      template&lt;class X&gt;
    </p>
    <p>
      C&lt;X&gt; g2(C&lt;X&gt;)
    </p>
    <p>
      
    </p>
    <p>
      <u>Hilfs-Deduction+Resolution...</u>
    </p>
    <p>
      
    </p>
    <p>
      struct S {
    </p>
    <p>
      &#160;&#160;template&lt;class X&gt;
    </p>
    <p>
      &#160;&#160;S(X&amp;&amp;);
    </p>
    <p>
      &#160;&#160;template&lt;class X&gt;
    </p>
    <p>
      &#160;&#160;S(C&lt;X&gt;);
    </p>
    <p>
      };
    </p>
    <p>
      
    </p>
    <p>
      S = &lt;initializer&gt;
    </p>
    <p>
      
    </p>
    <p>
      
    </p>
    <p>
      <font color="#8b2626"><b>Was ich nicht verstehe</b></font>: der gem&#228;&#223; Regeln auto-generierte Guide sieht <i>exakt genauso aus, </i>wie der Guide, den man manuell definieren mu&#223;, damit es funktioniert. Warum wird dann hier ein anderer Typ deduziert? Ich habe Experimente gemacht: ohne den manuellen deduction Guide ergibt sich f&#252;r einen &lt;initializer&gt; &#8788; int&amp;&#160;&#160;&#10236; ein deduzierter Parameter X = int&#160;&#160;(was dann nat&#252;rlich scheitert)
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="help"/>
</node>
</node>
</node>
<node CREATED="1700523608170" ID="ID_1908683822" MODIFIED="1700535684359" TEXT="auch m&#xf6;glich mit generischen &#x3bb;">
<linktarget COLOR="#7d8ebd" DESTINATION="ID_1908683822" ENDARROW="Default" ENDINCLINATION="-700;170;" ID="Arrow_ID_268440367" SOURCE="ID_853243392" STARTARROW="None" STARTINCLINATION="-2105;102;"/>
<icon BUILTIN="idea"/>
<node CREATED="1700523633130" ID="ID_139668487" MODIFIED="1700523644209" TEXT="decltype mit pack-expansion kombinieren"/>
<node CREATED="1700534903724" ID="ID_1622776918" MODIFIED="1700535389459">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      [](auto&amp;&amp; ...<font color="#6e2237">args</font><font color="#000000">) -&gt; RetType </font>{ return fun (forward&lt;<font color="#5d19b8"><b>decltype(</b></font><font color="#6e2237">args</font><font color="#5d19b8"><b>)</b></font>&gt; (<font color="#6e2237">args</font>) <b><font color="#c50101">...</font></b>); }
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1700535233362" ID="ID_767885543" MODIFIED="1700535264581" TEXT="Warnung: bei solchen &#x3bb; mu&#xdf; man oft den Return-Typ explizit deklarieren">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1700535294817" ID="ID_1372454543" MODIFIED="1700535550594">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      weil bei normaler Typinferenz ein <i>decay </i>stattfindet
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      &#8222;zum Beispiel...&#8220; wenn die im Lamba verwendete Funktion eine Referenz zur&#252;ckliefert, dann passiert ein decay auf den unterliegenden Objekttyp, d.h. man erzeugt eine schwebende Kopie....
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1700535322845" ID="ID_1105790015" MODIFIED="1700535376993" TEXT="kann ziemlich heimt&#xfc;ckisch sein...">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      hab mich grad geschnitten und 5 Stunden nach der Ursache gesucht
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="smiley-oh"/>
</node>
</node>
</node>
</node>
<node CREATED="1622386272743" ID="ID_1645901699" MODIFIED="1622386277362" TEXT="I/O">
<node CREATED="1622386278646" ID="ID_359102162" MODIFIED="1622386285472" TEXT="sehr gro&#xdf;e Dateien">
<node CREATED="1622386212262" ID="ID_1502979331" LINK="https://stackoverflow.com/a/11564931" MODIFIED="1622386241238" TEXT="Stackoverflow: schreiben einer sehr gro&#xdf;en Datei (C++14)"/>
</node>
</node>
<node CREATED="1617648902994" ID="ID_276316646" MODIFIED="1617648906362" TEXT="C++20">
<node CREATED="1617648907316" FOLDED="true" ID="ID_899199723" MODIFIED="1617650703506" TEXT="Coroutine">
<node COLOR="#435e98" CREATED="1617648912609" ID="ID_996261679" LINK="https://lewissbaker.github.io/2017/09/25/coroutine-theory" MODIFIED="1617648936772" TEXT="Theorie und Definitionen">
<icon BUILTIN="info"/>
</node>
<node CREATED="1617650510224" ID="ID_537278734" MODIFIED="1617650515623" TEXT="Einsichten">
<node CREATED="1617650518471" ID="ID_1004580056" MODIFIED="1617650549015" TEXT="Coroutinen schaffen einen lokalen Scope losgel&#xf6;st vom klassischen Stack(Frame)"/>
<node CREATED="1617650550016" ID="ID_1391380626" MODIFIED="1617650576747">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Coroutinen sind nicht <i>per se asynchron</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1617650606227" ID="ID_416722817" MODIFIED="1617650622874" TEXT="Coroutinen in C++20 sind ein low-level-Framework">
<node CREATED="1617650631616" ID="ID_139816499" MODIFIED="1617650648065" TEXT="auf dieser Basis werden high-level Primitive geschaffen"/>
<node CREATED="1617650648518" ID="ID_817552618" MODIFIED="1617650728738" TEXT="z.B. ein Generator (&quot;yield value&quot;)"/>
<node CREATED="1617650655741" ID="ID_1425746097" MODIFIED="1617650665884" TEXT="oder eine asynchrone Continuation"/>
<node CREATED="1617653847900" ID="ID_921128772" MODIFIED="1617654081995" TEXT="oder leichtgewichtige Synchronisations-Primitive">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      welche dann jedoch stets aus einer Coroutine heraus per co_await aktiviert werden. Beispiel: ein lock-free mutex
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1617650754576" ID="ID_716091070" MODIFIED="1617650874465">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Kontroll&#252;berg&#228;nge erfolgen ausschlie&#223;lich an den <b>suspend points</b>&#160;in der Coroutine selber
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Das untermauert nochmal, da&#223; Coroutinen inh&#228;rent synchron und deterministisch sind. Man kann allerdings das low-level-Framework nutzen, um an einem bestimmten suspend-point den &quot;eingefrorenen&quot; Zustand der Coroutine asynchron an einen anderen Thread zu &#252;bertragen
    </p>
  </body>
</html></richcontent>
<node CREATED="1617650891093" ID="ID_437757373" MODIFIED="1617650895248" TEXT="co_await"/>
<node CREATED="1617650895909" ID="ID_1237269411" MODIFIED="1617650899008" TEXT="co_yield"/>
<node CREATED="1617650899843" ID="ID_1357448847" MODIFIED="1617650902190" TEXT="co_return"/>
</node>
</node>
<node CREATED="1617653924444" ID="ID_1196316784" MODIFIED="1617653933147" TEXT="Konfiguration des konkreten Verhaltens">
<node CREATED="1617653934065" ID="ID_141023118" MODIFIED="1617653953451" TEXT="wird per Trait aus dem deklarierten R&#xfc;ckgabewert der Coroutine gewonnen">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1617653960317" ID="ID_137807168" MODIFIED="1617653980002" TEXT="dieser ist typischerweise ein RAII-handle f&#xfc;r die Coroutine selber"/>
<node CREATED="1617653981935" ID="ID_1379306731" MODIFIED="1617654010674" TEXT="...und implementiert geeignet die Interfaces Promise und Awaiter/Awaitable"/>
<node CREATED="1617654011852" ID="ID_1777400524" MODIFIED="1617654029031" TEXT="dar&#xfc;ber wird das tats&#xe4;chliche Verhalten gesteuert">
<icon BUILTIN="back"/>
</node>
</node>
<node CREATED="1617654109856" ID="ID_232615938" MODIFIED="1617654116092" TEXT="high-level-Libraries">
<node CREATED="1617654117016" ID="ID_1078296581" LINK="https://github.com/lewissbaker/cppcoro" MODIFIED="1617654125575" TEXT="Cppcoro"/>
</node>
</node>
<node CREATED="1686439783608" ID="ID_25677654" MODIFIED="1686439786528" TEXT="Concepts">
<node CREATED="1686438949795" ID="ID_197491932" LINK="https://stackoverflow.com/a/68238680" MODIFIED="1686439911618" TEXT="Concepts f&#xfc;r Templates">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...also f&#252;r template templtate parameter;
    </p>
    <p>
      f&#252;r diese mu&#223; man allerdings stets die umst&#228;ndlichere <i>requires</i>-Syntax verwenden
    </p>
    <p>
      
    </p>
    <pre http-equiv="content-type" content="text/html; charset=utf-8" class="lang-cpp s-code-block"><code class="hljs language-cpp"><font color="#1f237b">template &lt;template &lt;typename...&gt; class ALO&gt;
concept Allocator = true; // actual constraint here

template&#160;&lt;template&#160;&lt;typename...&gt; class&#160;ALO&gt;
 &#160;requires&#160;Allocator&lt;ALO&gt;
class Something
{ };</font></code></pre>
    <p>
      
    </p>
    <p>
      ...man kann aber auch ein Concept als Kombination weiterer definieren
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#415ab4" DESTINATION="ID_197491932" ENDARROW="Default" ENDINCLINATION="-1574;159;" ID="Arrow_ID_1382804093" SOURCE="ID_1579820839" STARTARROW="None" STARTINCLINATION="-2029;0;"/>
<icon BUILTIN="info"/>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1698089401358" FOLDED="true" ID="ID_29991404" MODIFIED="1698090231201" TEXT="&#xd83d;&#xdec7; Wunsch: named Arguments">
<linktarget COLOR="#967b86" DESTINATION="ID_29991404" ENDARROW="Default" ENDINCLINATION="-1293;117;" ID="Arrow_ID_152389560" SOURCE="ID_713507066" STARTARROW="None" STARTINCLINATION="-2574;139;"/>
<icon BUILTIN="hourglass"/>
<node CREATED="1698089412372" ID="ID_1935249167" MODIFIED="1698089457778" TEXT="hat C++ nicht">
<node CREATED="1698089458669" ID="ID_1363045776" MODIFIED="1698089470760" TEXT="weil des dem Plattform-Konzept/ABI widerspricht"/>
<node CREATED="1698089471354" ID="ID_1708742685" MODIFIED="1698089505338" TEXT="weil es bisher nicht gelungen ist, eine unproblematische L&#xf6;sung zu schaffen">
<node COLOR="#5b280f" CREATED="1698089623891" ID="ID_851236025" LINK="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4172.htm" MODIFIED="1698089635023" TEXT=" N4172: Named arguments (gescheitert)">
<icon BUILTIN="button_cancel"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1698089648556" ID="ID_1884819642" LINK="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1229r0.html" MODIFIED="1698089664123" TEXT="P1229: Labelled Parameters (in Diskussion/Spezifikation)">
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
<node CREATED="1698089508382" ID="ID_77108316" LINK="https://pdimov.github.io/blog/2020/09/07/named-parameters-in-c20/" MODIFIED="1698089771312" TEXT="Workaround(seit C++20): die &#xbb;designated initializers&#xab; aus C99 nutzen"/>
<node CREATED="1698089910225" ID="ID_1931488391" LINK="https://www.fluentcpp.com/2018/12/14/named-arguments-cpp/" MODIFIED="1698089942787" TEXT="Typsystem + variadic Templates: &#xbb;strong Types&#xab;"/>
<node CREATED="1698089963610" ID="ID_1710977423" MODIFIED="1698089968637" TEXT="Builder"/>
</node>
</node>
<node CREATED="1687648927947" ID="ID_1380476359" MODIFIED="1687648930939" TEXT="Library">
<node CREATED="1687648934225" ID="ID_614037719" MODIFIED="1687648936717" TEXT="Container">
<node CREATED="1687648937664" ID="ID_625176524" MODIFIED="1687653278515" TEXT="Priority-Queue">
<linktarget COLOR="#7583c0" DESTINATION="ID_625176524" ENDARROW="Default" ENDINCLINATION="-651;120;" ID="Arrow_ID_1958287800" SOURCE="ID_354837865" STARTARROW="None" STARTINCLINATION="-260;47;"/>
<node CREATED="1687648947496" ID="ID_703993096" MODIFIED="1693173573774" TEXT="in der STL realisiert als Container-Adapter">
<node CREATED="1687648960777" ID="ID_361076856" MODIFIED="1693173806792" TEXT="per Default verwendet er einen Vektor als Storage">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      verbl&#252;ffenderweise ist das im Schnitt die effizienteste L&#246;sung, aufgrund der guten Cache-Lokalit&#228;t des Vektors
    </p>
    <ul>
      <li>
        da die Heap-Algorithmen stets die Elemente <i>paarweise vertauschen</i>, werden niemals Einf&#252;ge/L&#246;schoperationen des unterliegenden Containers ben&#246;tigt
      </li>
      <li>
        da der Heap eine <i>raum-organisierende Datenstruktur</i>&#160;ist, werden niemals direkte Zeiger auf andere Elemente ben&#246;tigt, sonder der Zugriff erfolgt stets per (logarithmisch) errechnetem Index
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node CREATED="1687649037324" ID="ID_1052972991" MODIFIED="1687649084817" TEXT="und verwendet die Heap-Funktionen aus der Algorithms Library"/>
</node>
<node CREATED="1687649199093" ID="ID_1238297485" MODIFIED="1693173554576" TEXT="Top = front() | Hinzuf&#xfc;gen/L&#xf6;schen auf back()">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Eine <i>St&#246;rstelle</i>&#160;in der Heap-Struktur wird durch &#8222;lokales bubble&#8220; korrigiert. Ein am Ende hinzugef&#252;gtes Element bubbled hoch, bis es gr&#246;&#223;er ist als beide Kinder. F&#252;r ein entferntes gr&#246;&#223;tes Element rutscht das gr&#246;&#223;ere Kind hoch. F&#252;r ein entferntes inneres Element wird zun&#228;chst das letzte Element an diese Stelle gesetzt&#160;&#160;(weil dadurch dann die letzte Position frei wird); die dadurch entstehende St&#246;rstelle wird dann nach oben/unten korrigiert: ist das Element gr&#246;&#223;er als der Vater, tauscht es mit diesem, ist es kleiner als das gr&#246;&#223;ere seiner Kinder, tauscht es mit diesem.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1687649003288" ID="ID_897627121" MODIFIED="1687649023977" TEXT="Heap-Struktur wird per Vertauschen aufrechterhalten"/>
</node>
<node CREATED="1687648937664" ID="ID_424660746" MODIFIED="1687653275260" TEXT="Lock-Free-Queue">
<linktarget COLOR="#7583c0" DESTINATION="ID_424660746" ENDARROW="Default" ENDINCLINATION="-651;120;" ID="Arrow_ID_825595958" SOURCE="ID_198688104" STARTARROW="None" STARTINCLINATION="-260;47;"/>
<node CREATED="1687653343430" ID="ID_129816705" LINK="https://www.boost.org/doc/libs/1_67_0/doc/html/lockfree.html" MODIFIED="1687653358153" TEXT="Boost.Lockfree">
<node CREATED="1687653372315" ID="ID_822778764" MODIFIED="1687653830624" TEXT="Diskussion Boost vs. etwas anderes">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...hatte ich vor einigen Jahren schon durchgef&#252;hrt. Die Boost-Impl wird weithin empfohlen, sie kommt einer Standard-Lib am n&#228;chsten. F&#252;r Ringbuffer gibt es diverse Alternativen, aber f&#252;r Multi-Producer / Multi-Consumer-Queue habe ich ansonsten nur Einzelfall-Implementierungen gefunden
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1687653830614" ID="ID_1870061916" LINK="https://www.boost.org/doc/libs/1_67_0/doc/html/lockfree/rationale.html#lockfree.rationale.data_structures" MODIFIED="1687653842707" TEXT="Rationale: gew&#xe4;hlte Algos mit Quellangabe">
<icon BUILTIN="info"/>
</node>
<node CREATED="1687653915052" ID="ID_1274176286" MODIFIED="1687653922352" TEXT="Impl-Hinweise">
<node CREATED="1687653923297" ID="ID_891449088" MODIFIED="1687653940315" TEXT="Queue und Stack sind Node-based (Linked Lists)"/>
<node CREATED="1687653941495" ID="ID_206927451" MODIFIED="1687653950522" TEXT="Memory-Management verwendet Pooling mit Free-List"/>
</node>
</node>
<node CREATED="1687654335015" ID="ID_1304201442" LINK="https://www.boost.org/doc/libs/1_67_0/doc/html/boost/lockfree/queue.html" MODIFIED="1687654349447" TEXT="Lockfree Queue(Boost)">
<node CREATED="1687654475929" ID="ID_1328092870" MODIFIED="1687654481634" TEXT="Anforderungen Payload">
<node CREATED="1687654482640" ID="ID_1083159425" MODIFIED="1687654491804" TEXT="erfordert Copy-Konstruktor"/>
<node CREATED="1687654492258" ID="ID_737130580" MODIFIED="1687654499908" TEXT="trivial assign und Destruktor"/>
</node>
<node CREATED="1687654812074" ID="ID_74917801" MODIFIED="1687654839565" TEXT="man kann Alloaktions-Pool initial belegen">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1636143147825" ID="ID_224980157" MODIFIED="1636143159589" TEXT="Assembly">
<node CREATED="1636143161969" ID="ID_1119605136" MODIFIED="1636143179445" TEXT="r?x : 64-Bit-Register"/>
<node CREATED="1636143180154" ID="ID_858272401" MODIFIED="1636143194684" TEXT="e?x : 32-Bit-Sicht auf die gleichen Register">
<node CREATED="1636143276893" ID="ID_594751359" MODIFIED="1636143297151" TEXT="Zuweisungen/Laden f&#xfc;llt die oberen 32bit mit Nullen"/>
</node>
<node CREATED="1636143195465" ID="ID_1616965661" MODIFIED="1636143201882" TEXT="AT&amp;T-Syntax">
<node CREATED="1636143203026" ID="ID_933207767" MODIFIED="1636143220340" TEXT="% vor den Registern"/>
<node CREATED="1636143221216" ID="ID_641364971" MODIFIED="1636143234231" TEXT="runde Klammer f&#xfc;r Dereferenzierung"/>
<node CREATED="1636143235054" ID="ID_1739317797" MODIFIED="1636143243374" TEXT="Zuweisung (mov) von links nach rechts"/>
</node>
<node CREATED="1636143494277" ID="ID_1080108853" MODIFIED="1636143500226" TEXT="Anweisungen">
<node CREATED="1636143501180" ID="ID_1211472193" MODIFIED="1636143506273" TEXT="mov : Zuweisung"/>
<node CREATED="1636143506942" ID="ID_1875495168" MODIFIED="1636143548281" TEXT="lea : Adresse laden">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      &quot;load effective address&quot;<br />Es entspricht also dem &amp;-Operator in C
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node CREATED="1512178947582" ID="ID_1778761323" MODIFIED="1557498707240">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Lessons
    </p>
    <p>
      learned
    </p>
  </body>
</html></richcontent>
<node CREATED="1512178960281" ID="ID_1847018554" MODIFIED="1557498707240" TEXT="SFINAE">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1512178984189" ID="ID_226963358" MODIFIED="1557498707240" TEXT="Fehler im Check scheitern stillschweigend">
<icon BUILTIN="clanbomber"/>
</node>
<node CREATED="1512179012761" FOLDED="true" ID="ID_1425607905" MODIFIED="1557498707240">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      auf <i>incomplete type</i>&#160;achten
    </p>
  </body>
</html></richcontent>
<node CREATED="1512179030982" ID="ID_895612426" MODIFIED="1557498707240" TEXT="sizeof()"/>
<node CREATED="1512179035013" ID="ID_1663591306" MODIFIED="1557498707240" TEXT="member-pointer"/>
<node CREATED="1512179039109" ID="ID_746391928" MODIFIED="1557498707240">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Vorsicht bei
    </p>
    <p>
      mutually dependent templates
    </p>
  </body>
</html></richcontent>
<node CREATED="1512179063250" ID="ID_933791979" MODIFIED="1576282357939" TEXT="w&#xe4;hrend der Instantiierung....">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      kann eines der Templates im Zyklus vorr&#252;bergehend als &quot;incomplete&quot; gelten.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1512179134400" ID="ID_1738202679" MODIFIED="1576282357939" TEXT="....kann die Metafunktion scheitern">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...wenn man dummerweise auf verschlungenen Pfaden
    </p>
    <p>
      genau in dieser Phase die Metafunktion anfragt,
    </p>
    <p>
      kann der betreffende Check stillschweigend scheitern.
    </p>
    <p>
      
    </p>
    <p>
      Konsequenz: man w&#228;hlt dann z.B. eine subtil falsche Spezialisierung.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1512179201831" ID="ID_1577563892" MODIFIED="1557498707240" TEXT="t&#xfc;ckischer Fehler">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
</node>
<node CREATED="1576410376184" FOLDED="true" ID="ID_1999847041" MODIFIED="1576413594967" TEXT="C++: Regeln f&#xfc;r implizite Ctor">
<linktarget COLOR="#4963d8" DESTINATION="ID_1999847041" ENDARROW="Default" ENDINCLINATION="-4316;0;" ID="Arrow_ID_809724531" SOURCE="ID_1010651919" STARTARROW="None" STARTINCLINATION="-6312;349;"/>
<node COLOR="#435e98" CREATED="1576411524771" ID="ID_1113045308" LINK="https://stackoverflow.com/a/13345578" MODIFIED="1576411545061" TEXT="Stackoverflow">
<icon BUILTIN="info"/>
</node>
<node CREATED="1576410536554" ID="ID_283720267" MODIFIED="1576410686060">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      werden u.U sillschweigend <b>nicht</b>&#160;generiert
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Wenn bestimmte Vorraussetzungen <i>nicht erf&#252;llt</i>&#160;sind, dann unterbleibt das automatische Injizieren eines generierten Konstruktors. Die Klasse verh&#228;lt sich dann so, als w&#228;re die btr. Definition nicht gegeben...
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1576410705370" ID="ID_1306160146" MODIFIED="1576410795799" TEXT="t&#xfc;ckisch: ggfs erwartetes implizites Verhalten findet nicht statt">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      d.h. Member-Init kann unterbleiben (bei elementaren Typen, wenn die Klasse damit ein POD wird).
    </p>
    <p>
      Und noch h&#228;ufiger: wir schwenken von Move-Konstruktion auf Copy-Konstruktion um
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1576410798222" ID="ID_589275948" MODIFIED="1576410813888" TEXT="Abhilfe: was wichtig ist, stets explizit definieren"/>
<node CREATED="1576412962086" ID="ID_714316723" MODIFIED="1576412969679" TEXT="Tip: Fehler provozieren">
<icon BUILTIN="idea"/>
<node CREATED="1576412971076" ID="ID_310988477" MODIFIED="1576412980494" TEXT="indem man explizit mal aufruft, was man erwartet"/>
<node CREATED="1576412981491" ID="ID_1451048709" MODIFIED="1576413215568" TEXT="Template-Traces lesen lernen....">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      error: use of deleted function Derived::Derived(const Derived &amp;)
    </p>
    <p>
      note: Derived::Derived(const Derived &amp;)&#160;is implicitly deleted because the default definition would be ill-formed:
    </p>
    <p>
      ...und dann kommt der Fehler, der passieren <b>w&#252;rde</b>....
    </p>
    <p>
      error: use of deleted function Base::Base(const Base&amp;)
    </p>
    <p>
      note: Base::Base(const Base&amp;)&#160;&#160;is implicitly deleted because the default definition would be ill-formed:
    </p>
    <p>
      error: use of deleted function SomeMember::SomeMember(const SomeMember &amp;)
    </p>
    <p>
      
    </p>
    <p>
      ...
    </p>
    <p>
      ...
    </p>
    <p>
      ...
    </p>
    <p>
      ...
    </p>
    <p>
      ...
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="ksmiletris"/>
<node CREATED="1576413219987" ID="ID_601627408" MODIFIED="1576413226208" TEXT="der Compiler ist Dein Froind"/>
</node>
</node>
</node>
<node CREATED="1576411548659" ID="ID_1088124413" MODIFIED="1576411553075" TEXT="default-ctor">
<node CREATED="1576411555738" ID="ID_810441855" MODIFIED="1576411577563" TEXT="nicht wenn irgend ein Member inline initialisiert wird!"/>
</node>
<node CREATED="1576411594053" ID="ID_181876076" MODIFIED="1576411598691" TEXT="copy/move">
<node CREATED="1576411599805" ID="ID_492402771" MODIFIED="1576411615709" TEXT="nicht wenn auch nur einer der &quot;big five&quot; definiert ist"/>
<node CREATED="1576411616722" ID="ID_38658612" MODIFIED="1576411634218" TEXT="Achtung: im Besonderen der dtor schaltet damit Auto-Generierun ab"/>
</node>
<node CREATED="1576411685336" ID="ID_168955305" MODIFIED="1576411687363" TEXT="move">
<node CREATED="1576411688040" ID="ID_430174340" MODIFIED="1576411707490" TEXT="wenn der generierte move-Code irgendwo einen Fehler produzieren w&#xfc;rde"/>
<node CREATED="1576411708150" ID="ID_728246628" MODIFIED="1576411719224" TEXT="das kann mehrere Ebenen tief rekursiv der Fall sein"/>
<node CREATED="1576411733367" ID="ID_1365339586" MODIFIED="1576411734752" TEXT="Tips">
<node CREATED="1576411735874" ID="ID_240070307" MODIFIED="1576411738544" TEXT="Referenzen"/>
<node CREATED="1576411739241" ID="ID_1459661901" MODIFIED="1576411778582" TEXT="Member/Basisklassen bei denen ebenfalls die implizite Generierung unterbleibt"/>
<node CREATED="1576411779540" ID="ID_816697044" MODIFIED="1576411801603" TEXT="ein nicht verf&#xfc;gbarer/aufrufbarer dtor (wegen move!)"/>
<node CREATED="1576411803728" ID="ID_1798497956" MODIFIED="1576411812841" TEXT="Variant-Typen (unions)"/>
</node>
</node>
</node>
<node CREATED="1625963909013" FOLDED="true" ID="ID_772999255" MODIFIED="1625963914852" TEXT="std::initializer_list">
<node CREATED="1625963919421" ID="ID_898662178" MODIFIED="1625963952504">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      die <i>uniform initialisation</i>&#160;ist leider unrund geraten
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="smily_bad"/>
</node>
<node CREATED="1625963954723" ID="ID_867098334" MODIFIED="1625963998275" TEXT="ein eigens definierter initializer_list-Ctor setzt praktisch alle anderen Ctors &quot;au&#xdf;er Gefecht&quot;">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1625964012581" ID="ID_725341195" LINK="https://akrzemi1.wordpress.com/2016/07/07/the-cost-of-stdinitializer_list" MODIFIED="1625964083266">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      die Werte in der initializer_list sind Values und werden <b>per copy-Konstruktion erstellt</b>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
</node>
<node CREATED="1450488895106" ID="ID_1586185818" MODIFIED="1557498707240" TEXT="Threading">
<node CREATED="1450488902049" ID="ID_1126260262" MODIFIED="1557498707240" TEXT="static init">
<linktarget COLOR="#9a97b5" DESTINATION="ID_1126260262" ENDARROW="Default" ENDINCLINATION="-1465;211;" ID="Arrow_ID_372705466" SOURCE="ID_1086493226" STARTARROW="None" STARTINCLINATION="-1025;0;"/>
<linktarget COLOR="#9e9bae" DESTINATION="ID_1126260262" ENDARROW="Default" ENDINCLINATION="-1485;213;" ID="Arrow_ID_1269745634" SOURCE="ID_1921668956" STARTARROW="None" STARTINCLINATION="-1534;0;"/>
<node CREATED="1450489361187" ID="ID_1013681859" LINK="http://stackoverflow.com/a/17803616/444796" MODIFIED="1557498707240" TEXT="Zusammenfassung (SO)">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1525123890877" ID="ID_558698687" LINK="http://en.cppreference.com/w/cpp/language/initialization#Non-local_variables" MODIFIED="1557498707240" TEXT="ausf&#xfc;hrlich in der CPPreference">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1525130640512" ID="ID_856205786" LINK="https://stackoverflow.com/a/1825872/444796" MODIFIED="1557498707240" TEXT="wichtig: Triggern der statischen Instanz (SO)">
<icon BUILTIN="idea"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1525191808145" FOLDED="true" ID="ID_228531407" MODIFIED="1557498707240" TEXT="ungekl&#xe4;rtes Problem mit Initialisierungs-Reihenfolge">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1525191859371" ID="ID_1136158199" MODIFIED="1576282357938" TEXT="tritt auf in statischem init-Kontext">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      wenn ein Template ein statisches member-Feld hat,
    </p>
    <p>
      dann ist zus&#228;tzlich eine getemplatete <i>Definition</i>&#160;dieses Feldes notwendig.
    </p>
    <p>
      Diese wird erst generiert, wenn der erste <b>odr-use</b>&#160;des statischen Member-Feldes passiert.
    </p>
    <p>
      Dieser odr-use kann nun z.B. aus einer Funktion des Template heraus erfolgen
    </p>
    <p>
      Allerdings beobachte ich, da&#223; dann der ctor-Aufruf zur Initialisierung erst <i>nach dem Zugriff</i>&#160;auf
    </p>
    <p>
      das member-Feld passiert, sofern der Aufruf und damit die Instanz des umschlie&#223;enden Template
    </p>
    <p>
      selber aus einem statischen Initialisierungs-Kontext heraus erfolgt.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1525192054281" ID="ID_414612523" MODIFIED="1557498707240" TEXT="#1142 initialisation of static template members">
<icon BUILTIN="flag-yellow"/>
</node>
<node CREATED="1525192237928" ID="ID_1523643615" MODIFIED="1576282357937" TEXT="Demo-Beispiel: g++ --std=gnu++14 blei.cpp -o blei">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      
    </p>
    <p>
      #include &lt;iostream&gt;
    </p>
    <p>
      
    </p>
    <p>
      using std::cout;
    </p>
    <p>
      using std::endl;
    </p>
    <p>
      
    </p>
    <p>
      template&lt;typename T&gt;
    </p>
    <p>
      class Factory
    </p>
    <p>
      &#160;&#160;{
    </p>
    <p>
      &#160;&#160;public:
    </p>
    <p>
      &#160;&#160;&#160;&#160;T val;
    </p>
    <p>
      &#160;&#160;&#160;
    </p>
    <p>
      &#160;&#160;&#160;&#160;Factory()
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;: val{}
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;{
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;cout &lt;&lt; &quot;Factory-ctor&#160;&#160;val=&quot;&lt;&lt;val&lt;&lt;endl;
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;}
    </p>
    <p>
      &#160;&#160;};
    </p>
    <p>
      
    </p>
    <p>
      
    </p>
    <p>
      template&lt;typename T&gt;
    </p>
    <p>
      class Front
    </p>
    <p>
      &#160;&#160;{
    </p>
    <p>
      &#160;&#160;public:
    </p>
    <p>
      &#160;&#160;&#160;&#160;static Factory&lt;T&gt; fac;
    </p>
    <p>
      &#160;&#160;&#160;
    </p>
    <p>
      &#160;&#160;&#160;&#160;Front()
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;{
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;cout &lt;&lt; &quot;Front-ctor&#160;&#160;&#160;&#160;val=&quot;&lt;&lt;fac.val&lt;&lt;endl;
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;fac.val += 100;
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;}
    </p>
    <p>
      &#160;&#160;&#160;
    </p>
    <p>
      &#160;&#160;&#160;&#160;T&amp;
    </p>
    <p>
      &#160;&#160;&#160;&#160;operate ()
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;{
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;cout &lt;&lt; &quot;Front-operate val=&quot;&lt;&lt;fac.val&lt;&lt;endl;
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;++ fac.val;
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;return fac.val;
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;}
    </p>
    <p>
      &#160;&#160;};
    </p>
    <p>
      
    </p>
    <p>
      template&lt;typename T&gt;
    </p>
    <p>
      Factory&lt;T&gt; Front&lt;T&gt;::fac;
    </p>
    <p>
      
    </p>
    <p>
      
    </p>
    <p>
      namespace {
    </p>
    <p>
      &#160;&#160;Front&lt;int&gt; front;
    </p>
    <p>
      &#160;&#160;int global_int = front.operate();
    </p>
    <p>
      }
    </p>
    <p>
      
    </p>
    <p>
      
    </p>
    <p>
      
    </p>
    <p>
      int
    </p>
    <p>
      main (int, char**)
    </p>
    <p>
      &#160;&#160;{
    </p>
    <p>
      &#160;&#160;&#160;&#160;Front&lt;int&gt; fint;
    </p>
    <p>
      &#160;&#160;&#160;
    </p>
    <p>
      &#160;&#160;&#160;&#160;int&amp; i = fint.operate();
    </p>
    <p>
      &#160;&#160;&#160;&#160;cout &lt;&lt; &quot;main:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;val=&quot;&lt;&lt;i&lt;&lt;endl;
    </p>
    <p>
      &#160;&#160;&#160;&#160;cout &lt;&lt; &quot;global_int.......=&quot;&lt;&lt;global_int&lt;&lt;endl;
    </p>
    <p>
      &#160;&#160;&#160;
    </p>
    <p>
      &#160;&#160;&#160;&#160;return 0;
    </p>
    <p>
      &#160;&#160;}
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1450489388912" ID="ID_1935538293" MODIFIED="1557498707240" TEXT="function-static">
<icon BUILTIN="info"/>
<node CREATED="1450489395711" ID="ID_1661542298" MODIFIED="1557498707240" TEXT="when ctrl flow enters first"/>
<node CREATED="1450489412364" ID="ID_965405072" LINK="http://stackoverflow.com/a/8102145/444796" MODIFIED="1557498707240" TEXT="threadsafe since C++11"/>
<node CREATED="1450489421795" ID="ID_12247357" MODIFIED="1557498707240" TEXT="lives until the end of the program"/>
</node>
</node>
<node CREATED="1521779331036" FOLDED="true" ID="ID_1416813337" MODIFIED="1694010019286" TEXT="memory access ordering">
<linktarget COLOR="#5a6caa" DESTINATION="ID_1416813337" ENDARROW="Default" ENDINCLINATION="-1755;162;" ID="Arrow_ID_751165448" SOURCE="ID_1772115642" STARTARROW="None" STARTINCLINATION="-4287;-237;"/>
<node CREATED="1521779387708" ID="ID_663855061" MODIFIED="1521779394271" TEXT="C++ memory model"/>
<node CREATED="1521779395219" ID="ID_1890752917" MODIFIED="1521779403446" TEXT="C++11 Atomic library"/>
<node CREATED="1521783284922" ID="ID_970193431" MODIFIED="1521783295429" TEXT="Quellen &amp; Erl&#xe4;uterungen">
<icon BUILTIN="info"/>
<node CREATED="1521783300728" ID="ID_789225244" LINK="http://preshing.com/20120913/acquire-and-release-semantics/" MODIFIED="1521783329728" TEXT="Blog: Preshing on Programming"/>
<node CREATED="1521783335195" ID="ID_722067069" LINK="http://en.cppreference.com/w/cpp/atomic/memory_order" MODIFIED="1521783351104" TEXT="CPP-Reference"/>
</node>
<node CREATED="1521779409601" FOLDED="true" ID="ID_1607777448" MODIFIED="1694013814721" TEXT="fences vs. barriers vs ordering constraints">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      das sind verschiedene Blickwinkel auf das gleiche Thema
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
<node CREATED="1521779467554" ID="ID_257299836" MODIFIED="1521779468925" TEXT="fence">
<node CREATED="1521779469969" ID="ID_178160333" MODIFIED="1521779473476" TEXT="total-global"/>
<node CREATED="1521779489966" ID="ID_113452488" MODIFIED="1521779500040" TEXT="das ganze System sieht alle &#xc4;nderungen"/>
<node CREATED="1521779502213" ID="ID_503013735" MODIFIED="1521779525101" TEXT="Keine Umordnung durch Compiler oder CPU"/>
</node>
<node CREATED="1521779532728" ID="ID_263784335" MODIFIED="1521779534459" TEXT="barrier">
<node CREATED="1521779535264" ID="ID_1004323525" MODIFIED="1521779541691" TEXT="bestimmte Umordnungen werden verboten"/>
<node CREATED="1521779542351" ID="ID_219555790" MODIFIED="1576282357936" TEXT="vier Typen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Bedeutung dieser Schreibweise:
    </p>
    <ul>
      <li>
        der erste Zugriff liegt vor der Barriere, der zweite danach
      </li>
      <li>
        die Barriere garantiert jeweils nur, da&#223; der zweitgenannte Zugriff nicht vor den erstgenannten verschoben werden kann
      </li>
    </ul>
  </body>
</html></richcontent>
<node CREATED="1521779549150" ID="ID_754401646" MODIFIED="1521779560424" TEXT="ReadRead"/>
<node CREATED="1521779561540" ID="ID_177816200" MODIFIED="1521779564336" TEXT="ReadWrite"/>
<node CREATED="1521779565188" ID="ID_1059751946" MODIFIED="1521779570999" TEXT="WriteWrite"/>
<node CREATED="1521779572470" ID="ID_853931655" MODIFIED="1521779576702" TEXT="WriteRead"/>
</node>
<node CREATED="1521779611813" ID="ID_1803991638" MODIFIED="1521779620277" TEXT="Vorsicht">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1521779621764" ID="ID_818642871" MODIFIED="1521779630422" TEXT="garantiert keine Atomizit&#xe4;t"/>
<node CREATED="1521779631386" ID="ID_548078416" MODIFIED="1521779642021" TEXT="garantiert keine data-dependency consistency"/>
</node>
</node>
<node CREATED="1521779647000" ID="ID_641325372" MODIFIED="1521779651836" TEXT="constraints">
<node CREATED="1521779654007" ID="ID_1897577946" MODIFIED="1521779668209" TEXT="werden an eine (meist atomare) Guard-Variable gebunden">
<node CREATED="1694014390628" ID="ID_610365477" MODIFIED="1694014405528" TEXT="der Zugriff (schreiben / lesen) auf den Guard ist mit dem constraint belegt"/>
<node CREATED="1694013830245" ID="ID_938834649" MODIFIED="1694014597818">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      zus&#228;tzlich gib es eine <i>daran gebundene</i>&#160;Payload aus nicht-atomaren Werten
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <ul>
      <li>
        diese nicht-atomaren Werte sind ganz normale Speicherinhalte, die <i>potentiell</i>&#160;von verschiedenen Threads aus zugreifbar w&#228;ren
      </li>
      <li>
        sie <b>m&#252;ssen</b>&#160;aber <b>an den Guard gebunden</b>&#160;sein, und zwar durch einen conditional-Check auf den vom Guard gelesenen Wert
      </li>
    </ul>
    <p>
      Dieser Zusammenhang fu&#223;t auf den exakten Definitionen der <i>release</i>&#160; und <i>acquire</i>-semantics und einer damit verbundenen <i>synchronizes-with</i>&#160; Zusicherung. Das hat <i>nichts mit data-dependency zu tun!</i>&#160;Es ist egal, wie auf die &quot;anderen&quot; Werte vor/nach der Synchronisierung zugegriffen wird (pointer, argument, globale Variable). Sondern entscheidend ist, da&#223; <b>dazwischen liegend</b>&#160;auf eine bestimmte Eigenschaft/Wert im Guard gepr&#252;ft wird; diese Eigenschaft mu&#223; sicherstellen, da&#223; das synchronizes-with stattgefunden hat. Zugriffe ohne diese Pr&#252;fung sind undefiniert (d.h. sie k&#246;nnen oder k&#246;nnen nicht einen Mix von ver&#228;nderten Werten sehen).
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#576bb3" DESTINATION="ID_938834649" ENDARROW="Default" ENDINCLINATION="-563;20;" ID="Arrow_ID_1094658969" SOURCE="ID_1491390182" STARTARROW="None" STARTINCLINATION="-2552;100;"/>
</node>
</node>
<node CREATED="1521779776975" ID="ID_594964930" MODIFIED="1521779831563" TEXT="erzeugen Relation f&#xfc;r Zugriffe auf Payload">
<node CREATED="1521779923346" ID="ID_725815164" MODIFIED="1521779936380" TEXT="geregelt wird Sichtbarkeit von &#xc4;nderungen"/>
<node CREATED="1521779943743" ID="ID_433064665" MODIFIED="1521779963241" TEXT="Payload == bestimmte nicht-atomare Variablen"/>
<node CREATED="1521779978451" ID="ID_459766743" MODIFIED="1521779988549" TEXT="welche?">
<node CREATED="1521779990345" ID="ID_6762933" MODIFIED="1521779995036" TEXT="normalerweise &quot;alle&quot;"/>
<node CREATED="1521779996480" ID="ID_1211879916" MODIFIED="1521780022216" TEXT="f&#xfc;r &quot;consume&quot;-Semantik aber nur solche mit data-dependency"/>
</node>
<node CREATED="1521780026668" ID="ID_1047639499" MODIFIED="1521780044109" TEXT="Zusammenhang wird durch Nutzungspattern hergestellt">
<node CREATED="1521780047969" ID="ID_1812009696" MODIFIED="1521780057251" TEXT="Zugriff/Mutation nur..."/>
<node CREATED="1521780057775" ID="ID_216370648" MODIFIED="1521780074977" TEXT="wenn Signaliisierung via Guard sichtbar wird"/>
<node CREATED="1521780076253" ID="ID_708835482" MODIFIED="1521780116390">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      eine <i>Solche</i>&#160;konstituiert die synchronizes-with-Beziehuung
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node CREATED="1521779841462" ID="ID_1131913901" MODIFIED="1521779896124">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <b>Grundbeziehung</b>: synchronizes-with
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node CREATED="1521780332842" ID="ID_968730029" MODIFIED="1521780339536" TEXT="Mutex">
<icon BUILTIN="idea"/>
<node CREATED="1521780355015" ID="ID_1565927718" MODIFIED="1521780366841" TEXT="erzeugt einen vollen Fence auf beiden Seiten"/>
<node CREATED="1521780375364" ID="ID_816580184" MODIFIED="1521780391453" TEXT="d.h. am Eingang und Ausgang gelten alle vier barriers"/>
<node CREATED="1521780411423" ID="ID_1904243826" MODIFIED="1521780423585" TEXT="das impliziert auch Atomizit&#xe4;t"/>
<node CREATED="1521780424149" ID="ID_1787016583" MODIFIED="1521780430670" TEXT="aber">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1521780432156" ID="ID_583365135" MODIFIED="1521780487933">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      das gilt nur im Rahmen der <b>synchronizes-with</b>-Beziehung
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1521780488708" ID="ID_945270217" MODIFIED="1521780517520">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      das hei&#223;t, nur f&#252;r einen <b>vom gleichen Mutex gesch&#252;tzen</b>&#160; Bereich!
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1521782262223" HGAP="30" ID="ID_1323377815" MODIFIED="1576282357935" TEXT="Typisches Gegenbeispiel: Double Checked Locking" VSHIFT="18">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      In der <i>naiven Implementierung</i>&#160;greift der pr&#252;fende Thread auf die instance-Variable
    </p>
    <p>
      <i>ohne jedwede Beziehung</i>&#160;zum anderen Thread zu; er verwendet keinen Mutex und keinen Atomic.
    </p>
    <p>
      Und genau deshalb kann er das Setzen des Instanz-Pointers sehen, ohne da&#223; eine
    </p>
    <p>
      Ordnungsbeziehung zur der restlichen Initialisierung oder lazy computation besteht.
    </p>
    <p>
      
    </p>
    <p>
      Fix: die Beziehung herstellen. Das ist verursacht stets zus&#228;tzliche Kosten.
    </p>
    <p>
      
    </p>
    <p>
      Allerdings nicht auf einer Plattform, die ohnehin sequentiell-konsistent ist. Wie &quot;zum Beispiel&quot; x86/64
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node CREATED="1521791354104" HGAP="-1" ID="ID_287671137" MODIFIED="1521791364604" TEXT="grunds&#xe4;tzlich...." VSHIFT="7">
<node CREATED="1521791365590" ID="ID_1571110438" MODIFIED="1521791379580">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      ...haben wir es hier mit einem <b>Pattern</b>&#160;zu tun
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1521791417311" ID="ID_668833788" MODIFIED="1521791528549">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      ich nenne es &quot;<b>synchronised visibility cones</b>&quot;
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1521791441996" ID="ID_656786136" MODIFIED="1521791513129">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Dieses errichtet die Fiktion,
    </p>
    <p>
      als w&#252;rden wir nur auf einer gemeinsamen (shared) Instanz arbeiten.
    </p>
    <p>
      In Realit&#228;t arbeiten mehrere Threads/Cores mit mehreren Entit&#228;ten
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1521791567491" ID="ID_328701027" MODIFIED="1576282357934" TEXT="Code mu&#xdf; das Bestehen der Beziehung aktiv pr&#xfc;fen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...und andernfalls &#252;berhaupt vermeiden,
    </p>
    <p>
      die shared zone anzufassen!
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
<node CREATED="1688166034962" ID="ID_1200591959" MODIFIED="1688166143670" TEXT="Async IO">
<linktarget COLOR="#375880" DESTINATION="ID_1200591959" ENDARROW="Default" ENDINCLINATION="-1794;532;" ID="Arrow_ID_1852326782" SOURCE="ID_671880878" STARTARROW="None" STARTINCLINATION="-1625;-156;"/>
<node CREATED="1688166157380" ID="ID_1071906059" LINK="https://www.boost.org/doc/libs/1_67_0/doc/html/boost_asio/" MODIFIED="1688166275705" TEXT="Boost ASIO">
<node CREATED="1688166215185" ID="ID_66502022" MODIFIED="1688166240475" TEXT="portable + weithin empfohlen und verwendet">
<icon BUILTIN="idea"/>
<node CREATED="1688166501411" ID="ID_924614417" MODIFIED="1688166519305" TEXT="generische IO-Library (network, terminal, file)"/>
<node CREATED="1688166520176" ID="ID_1563680284" MODIFIED="1688166544792" TEXT="unterst&#xfc;tzt synchron, asyncrhon, timer, thread-Handling"/>
</node>
<node CREATED="1688170226497" ID="ID_125244924" MODIFIED="1688170240618" TEXT="verwendet das &#xbb;Proactor-Pattern&#xab;">
<node CREATED="1688258008164" ID="ID_95955382" MODIFIED="1688258088027">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      man ruft explizit eine Service-Loop-Funktion auf&#160;&#8212;&#160;<font face="Monospaced" color="#3c4bc8">io_context::run()</font>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1688258090145" ID="ID_108030465" MODIFIED="1688258117010" TEXT="diese blockt, solange es schwebende Async-IO-Callbacks gibt"/>
</node>
<node CREATED="1688228541290" ID="ID_472716750" MODIFIED="1688228558262" TEXT="alternativ: &#xbb;Reactor&#xab;-Interface">
<node CREATED="1688248251719" ID="ID_1898012569" MODIFIED="1688248277713" TEXT="Callback wenn ein Socket oder Handle lesbar wird"/>
</node>
</node>
<node CREATED="1688166164576" ID="ID_808355578" MODIFIED="1688166174345" TEXT="C++20 : Coroutinen"/>
<node CREATED="1688166175191" ID="ID_162341966" MODIFIED="1688166179554" TEXT="Memory Mapping">
<node CREATED="1688166184079" ID="ID_522935066" MODIFIED="1688166193730" TEXT="nicht portabel / Linux only">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1688166384467" ID="ID_427077514" MODIFIED="1688166400444">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Teil der Vision / <i>wir wollen das</i>
    </p>
  </body>
</html></richcontent>
<node CREATED="1688166405176" ID="ID_222460964" MODIFIED="1688166457370" TEXT="es gibt bereits eine Lib-Implementierung von Christian">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      <font face="Monospaced" size="2" color="#673b23">/** @file mmap.h </font>
    </p>
    <p>
      <font face="Monospaced" size="2" color="#673b23">&#160;** MMap objects cover a memory mapped range in a file. </font>
    </p>
    <p>
      <font face="Monospaced" size="2" color="#673b23">&#160;** They are managed through a global mmap registry/cache. </font>
    </p>
    <p>
      <font face="Monospaced" size="2" color="#673b23">&#160;*/ </font>
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node CREATED="1688253673445" ID="ID_1628355171" MODIFIED="1688253682407" TEXT="Linux: io_uring">
<node CREATED="1688253684275" ID="ID_1292759752" LINK="https://stackoverflow.com/a/57451551" MODIFIED="1688253712980" TEXT="war &quot;neu&quot; in 2020 (SO Answer)">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node CREATED="1689862993673" ID="ID_1940960367" MODIFIED="1689862993673" TEXT="Performance-Erfahrungen">
<node CREATED="1689863001188" ID="ID_44534465" MODIFIED="1689863001188" TEXT="C++ Basis-Konstrukte">
<node CREATED="1521970435888" ID="ID_1133945278" MODIFIED="1689863001188" TEXT="Zugriff auf existierenden lokalen Datenwert: ~ 0.3ns"/>
<node CREATED="1521970435888" ID="ID_1685135312" MODIFIED="1689863001188" TEXT="Zugriff darauf via double-checked-Locking mit Atomics: ~1ns"/>
<node CREATED="1689863001188" ID="ID_1071106483" MODIFIED="1689863001188" TEXT="Heap-Allokation/de-Allokation: ~25ns"/>
<node CREATED="1689863117891" ID="ID_967097286" MODIFIED="1689863117891" TEXT="shared-ptr alloc/clean-up: ~80ns"/>
</node>
</node>
<node CREATED="1491098340549" ID="ID_938211341" MODIFIED="1557498707240" TEXT="Toolchain">
<node CREATED="1491098346053" ID="ID_1333373693" MODIFIED="1557498707240" TEXT="Doxygen">
<node CREATED="1491098370281" ID="ID_1904535196" MODIFIED="1557498707240" TEXT="Konfig"/>
<node CREATED="1491098373816" ID="ID_1022990703" MODIFIED="1557498707240" TEXT="Fallen">
<node CREATED="1491099064125" ID="ID_651937703" MODIFIED="1557498707240" TEXT="Dateien ohne @file werden nicht dokumentiert"/>
<node CREATED="1491099088362" ID="ID_1507484869" MODIFIED="1576282357934" TEXT="Template-Parameter in Klassennamen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      wenn eine getemplatete Klasse zum Qualifizieren eines Feldes verwendet wird,
    </p>
    <p>
      dann m&#252;ssen die formalen Template-Parameter in spitzen Klammern mit angegeben werden.
    </p>
    <p>
      D.h. Doxygen ist hier genauso penibel wie C++ selber
    </p>
    <p>
      
    </p>
    <p>
      Beispiel
    </p>
    <p>
      Query&lt;RES&gt;::resolveBy
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1491099311253" ID="ID_307124479" MODIFIED="1576282357933">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      @param hat <b>stets</b>&#160;einen Parameternamen als Argument
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...der ist <i>nicht</i>&#160;optional
    </p>
    <p>
      vielmehr wird blindlings immer das erste Wort genommen.
    </p>
    <p>
      Wenn der Parameter selber nicht benannt ist (z.B. pure virtual function),
    </p>
    <p>
      kann man ersatzweise einfach einen Typnamen angeben.
    </p>
    <p>
      Sofern alle Parameter dokumentiert sind, klappt das.
    </p>
    <p>
      sonst kommt Doxygen durcheinander
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1611414331032" ID="ID_772377087" MODIFIED="1611414385896" TEXT="Dokumentations-Kommentar mu&#xdf; mit &quot;/**&quot; beginnen (exakt zwei Sterne!)">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      also keine &quot;Banner&quot; aus Sternen.<br />Abhilfe: /*********************//**
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1491098382888" FOLDED="true" ID="ID_1568153886" MODIFIED="1557498707240" TEXT="Probleme">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1491098385823" ID="ID_801230289" MODIFIED="1557498707240" TEXT="Auto-Links">
<node CREATED="1491098393405" ID="ID_1408589913" MODIFIED="1557498707240" TEXT="funktionieren in vielen F&#xe4;llen nicht"/>
<node CREATED="1491098402197" ID="ID_1572559975" MODIFIED="1557498707240" TEXT="Verdacht: mu&#xdf; Namespaces qualifizieren?"/>
<node CREATED="1491098427785" ID="ID_719835617" MODIFIED="1576282357933" TEXT="Beispiel: alle Unit-Tests">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ....haben in ihrem @file-Kommentar
    </p>
    <p>
      einen Verweis \ref DieserUnit_test
    </p>
    <p>
      Und obwohl das der exakte Klassennahme ist,
    </p>
    <p>
      und obwohl genau diese Klasse im Klassenindex zu finden ist
    </p>
    <p>
      wird hier kein Link erzeugt
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1611412636691" ID="ID_972826576" MODIFIED="1611412651452" TEXT="Fehlersuche">
<icon BUILTIN="back"/>
<node CREATED="1611412673543" ID="ID_1658996929" MODIFIED="1611412691750" TEXT="versuchshalber explizit einen Link per \ref erzweingen"/>
<node CREATED="1611412652657" ID="ID_1149640138" MODIFIED="1611412667586" TEXT="doxygen-warning.txt durchsuchen"/>
<node CREATED="1611412694100" ID="ID_1782021607" MODIFIED="1611412711705" TEXT="sicherstellen da&#xdf;...">
<node CREATED="1611412712385" ID="ID_1286698190" LINK="https://stackoverflow.com/a/46895346" MODIFIED="1611416096145" TEXT="der umschlie&#xdf;ende Namespace dokumentiert ist">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1611412720896" ID="ID_1416946834" MODIFIED="1611412732531" TEXT="das definierende File einen @file-Kommentar hat"/>
</node>
</node>
</node>
<node CREATED="1611414193640" ID="ID_1495280173" MODIFIED="1611414203972" TEXT="Markdown">
<node CREATED="1611414205207" ID="ID_1304449575" MODIFIED="1611414215413" TEXT="funktioniert generell recht zuverl&#xe4;ssig"/>
<node CREATED="1611414215893" ID="ID_1250665044" MODIFIED="1611414235234" TEXT="Header-Hierarchie mu&#xdf; konsistent sein">
<icon BUILTIN="clanbomber"/>
<node CREATED="1611414254368" ID="ID_1103685826" MODIFIED="1611414275946" TEXT="d.h. die erste Zwischen&#xfc;berschrift auf Level-1 (Pr&#xe4;fix &quot;#&quot;)"/>
<node CREATED="1611414236218" ID="ID_1711467407" MODIFIED="1611414253828" TEXT="sonst werden die btrf. &#xdc;berschriften komplett unterdr&#xfc;ckt"/>
</node>
</node>
<node CREATED="1491098487889" ID="ID_1401713015" MODIFIED="1611412586548" TEXT="Sqlite-Support">
<icon BUILTIN="button_cancel"/>
<node CREATED="1491098494497" ID="ID_1565133197" MODIFIED="1557498707241" TEXT="ist wohl noch sehr vorl&#xe4;ufig"/>
<node CREATED="1491098499712" ID="ID_1643743799" MODIFIED="1557498707241" TEXT="wenn eine Sqlite-DB gefunden wird...."/>
<node CREATED="1491098515845" ID="ID_1313255620" MODIFIED="1557498707241" TEXT="produziert er jede Menge Constraint-Verletzungen"/>
<node CREATED="1491098525396" ID="ID_1962242264" MODIFIED="1557498707241" TEXT="Tip: Sqlite-DB wegl&#xf6;schen!!!"/>
<node CREATED="1611412589929" ID="ID_1865414656" MODIFIED="1611412626461" TEXT="Doxygen 1.8.13 generiert jetzt per default kein Sqlite mehr"/>
</node>
</node>
</node>
<node CREATED="1538838573613" ID="ID_1610361741" MODIFIED="1557498707241" TEXT="Graphic">
<node CREATED="1538838576956" ID="ID_1174319279" MODIFIED="1665346614450" TEXT="SVG-Icons">
<linktarget COLOR="#668497" DESTINATION="ID_1174319279" ENDARROW="Default" ENDINCLINATION="-533;-310;" ID="Arrow_ID_1274211300" SOURCE="ID_465159869" STARTARROW="None" STARTINCLINATION="-2393;215;"/>
<node CREATED="1504201038435" ID="ID_1569870904" MODIFIED="1557498707241" TEXT="Anleitung">
<linktarget COLOR="#8697d2" DESTINATION="ID_1569870904" ENDARROW="Default" ENDINCLINATION="-935;-133;" ID="Arrow_ID_421953450" SOURCE="ID_1898190659" STARTARROW="None" STARTINCLINATION="-861;94;"/>
<node CREATED="1504201044122" ID="ID_612955500" MODIFIED="1557498707241" TEXT="SVG in data/icons/svg"/>
<node CREATED="1504201192870" ID="ID_823572488" MODIFIED="1576282357932" TEXT="Dokument-Gr&#xf6;&#xdf;e anscheinend egal">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...wird zwar vom Skript ausgelesen,
    </p>
    <p>
      aber nicht weiterverwendet.
    </p>
    <p>
      Die Icon-Gr&#246;&#223;en ergeben sich aus den Boxes auf 'plate'
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1504201055449" ID="ID_1652674635" MODIFIED="1557498707241" TEXT="braucht &apos;artwork:&apos;-Layer"/>
<node CREATED="1504201074566" ID="ID_1803123712" MODIFIED="1557498707241" TEXT="braucht Sub-Layer &apos;plate&apos;">
<node CREATED="1504201085348" ID="ID_971103885" MODIFIED="1557498707241" TEXT="dort bounding-boxes"/>
<node CREATED="1504201089491" ID="ID_1411697919" MODIFIED="1557498707241" TEXT="deren Gr&#xf6;&#xdf;e in PX ist die Icon-Gr&#xf6;&#xdf;e"/>
<node CREATED="1504201101314" ID="ID_813225733" MODIFIED="1557498707241" TEXT="brauche 16, 22, 32"/>
</node>
</node>
</node>
<node CREATED="1699972103508" ID="ID_1402372766" MODIFIED="1699972200037" TEXT="Graphviz: generated diagrams">
<linktarget COLOR="#435fb4" DESTINATION="ID_1402372766" ENDARROW="Default" ENDINCLINATION="-1358;124;" ID="Arrow_ID_1189460163" SOURCE="ID_551004748" STARTARROW="None" STARTINCLINATION="-1697;146;"/>
<node CREATED="1699973368997" ID="ID_1070258863" LINK="https://graphviz.org/documentation/" MODIFIED="1699973377453" TEXT="offizielle Dokumentation">
<icon BUILTIN="info"/>
<node CREATED="1699974108602" ID="ID_643800537" LINK="https://renenyffenegger.ch/notes/tools/Graphviz/examples/index" MODIFIED="1699974117596" TEXT="Graphviz examples">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1699972475164" ID="ID_962457818" MODIFIED="1699972484262" TEXT="bietet verschiedene Layout-Engines">
<node CREATED="1699972487215" ID="ID_1614958739" LINK="https://graphviz.org/docs/layouts/dot/" MODIFIED="1699972622780" TEXT="DOT">
<node CREATED="1699972554018" ID="ID_637789892" LINK="https://en.wikipedia.org/wiki/Layered_graph_drawing" MODIFIED="1699972614155" TEXT="hierarchical or layered drawings of directed graphs"/>
</node>
<node CREATED="1699972713393" ID="ID_1438613022" LINK="https://graphviz.org/docs/layouts/neato/" MODIFIED="1699972732236" TEXT="neato">
<node CREATED="1699972713393" ID="ID_1807981997" LINK="https://en.wikipedia.org/wiki/Spring_system" MODIFIED="1699972744179" TEXT="spring model layouts"/>
</node>
<node CREATED="1699972713394" ID="ID_1252242539" LINK="https://graphviz.org/docs/layouts/fdp/" MODIFIED="1699972758054" TEXT="fdp">
<node CREATED="1699972713394" ID="ID_626819228" LINK="https://en.wikipedia.org/wiki/Force-directed_graph_drawing" MODIFIED="1699972791264" TEXT="Force-Directed Placement"/>
</node>
<node CREATED="1699972713395" ID="ID_240895682" LINK="https://graphviz.org/docs/layouts/sfdp/" MODIFIED="1699972805148" TEXT="sfdp">
<node CREATED="1699972713395" ID="ID_428485132" MODIFIED="1699972819953" TEXT="Scalable variant of FDP"/>
</node>
<node CREATED="1699972713395" ID="ID_1158694985" LINK="https://graphviz.org/docs/layouts/circo/" MODIFIED="1699972835610" TEXT="circo">
<node CREATED="1699972713396" ID="ID_4394949" LINK="https://en.wikipedia.org/wiki/Circular_layout" MODIFIED="1699972846325" TEXT="circular layout"/>
</node>
<node CREATED="1699972713396" ID="ID_91306095" LINK="https://graphviz.org/docs/layouts/twopi/" MODIFIED="1699972857536" TEXT="twopi">
<node CREATED="1699972713396" ID="ID_1648637503" MODIFIED="1699972859308" TEXT="radial layout"/>
</node>
<node CREATED="1699972713398" ID="ID_1166267544" LINK="https://graphviz.org/docs/layouts/osage/" MODIFIED="1699972877918" TEXT="osage">
<node CREATED="1699972713398" ID="ID_1144158510" MODIFIED="1699972879634" TEXT="draws clustered graphs"/>
</node>
<node CREATED="1699972713399" ID="ID_1342935767" LINK="https://graphviz.org/docs/layouts/patchwork/" MODIFIED="1699972892860" TEXT="patchwork">
<node CREATED="1699972713399" ID="ID_884816342" LINK="https://en.wikipedia.org/wiki/Treemapping" MODIFIED="1699972901935" TEXT="draws map of clustered graph using a squarified treemap layout"/>
</node>
</node>
<node CREATED="1699973111943" ID="ID_1097666748" LINK="https://graphviz.org/doc/info/lang.html" MODIFIED="1699973117662" TEXT="DOT-Language"/>
<node CREATED="1699976098441" ID="ID_1057351149" MODIFIED="1699976101682" TEXT="Erfahrungen">
<node CREATED="1699976102585" ID="ID_1073237235" MODIFIED="1699976111291" TEXT="einfachste Anzeige-Pipeline">
<node CREATED="1699976113196" ID="ID_1235163792" MODIFIED="1699976116226" TEXT="echo &apos;digraph { boo -&gt; moo }&apos; | dot -Tpng | display">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1699976583079" ID="ID_740532563" MODIFIED="1699976586095" TEXT="Layout steuern">
<node CREATED="1699976588670" ID="ID_1830511442" LINK="https://stackoverflow.com/a/49226577" MODIFIED="1699976662711">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p style="text-align: center">
      Pfeile r&#252;ckw&#228;rts / aufw&#228;rts
    </p>
    <p style="text-align: center">
      <i>bottom to top</i>
    </p>
  </body>
</html></richcontent>
<node CREATED="1699976617314" ID="ID_323734404" MODIFIED="1699976636197" TEXT="Graph-Attribut: rankdir=&quot;BT&quot;"/>
<node CREATED="1699976833605" ID="ID_794413824" MODIFIED="1699976878627" TEXT="einzelne Pfeile umdrehen: A -&gt; B[ dir = back ]"/>
<node CREATED="1699976880510" ID="ID_501888592" MODIFIED="1699976955506" TEXT="oder im scope: { edge[dir = back] A-&gt;B C-&gt;D }"/>
</node>
<node CREATED="1699982488384" ID="ID_1024104088" MODIFIED="1699982499285" TEXT="Nodes in gemeinsame Ebenen ordnen">
<node CREATED="1699982502057" ID="ID_272163166" LINK="https://graphviz.org/docs/attrs/rank/" MODIFIED="1699982539091" TEXT="Subgraph mit { rank=same N1 N2 N3 }"/>
<node CREATED="1699982818038" ID="ID_1378905974" LINK="https://stackoverflow.com/a/6155783/3416774" MODIFIED="1699982831219" TEXT="weitere Erkl&#xe4;rung auf SO"/>
</node>
<node CREATED="1699978451189" ID="ID_241824425" MODIFIED="1699978454721" TEXT="Farben">
<node CREATED="1699978455846" ID="ID_1785164908" MODIFIED="1699978460807" TEXT="bgcolor : Canvas"/>
<node CREATED="1699978461307" ID="ID_1957589954" MODIFIED="1699978480653" TEXT="color : outline / edges"/>
<node CREATED="1699978481466" ID="ID_1236422711" MODIFIED="1699978503602" TEXT="fillcolor &#x2014; setzt style=filled vorraus"/>
</node>
<node CREATED="1700105113377" ID="ID_1656490787" LINK="https://graphviz.org/faq/#FaqLarger" MODIFIED="1700105197251" TEXT="Gr&#xf6;&#xdf;en">
<node CREATED="1700105117995" ID="ID_1615340120" LINK="https://graphviz.org/docs/attrs/size/" MODIFIED="1700105130514" TEXT="size">
<node CREATED="1700105132262" ID="ID_343226797" MODIFIED="1700105138969" TEXT="maximalgr&#xe4;&#xdf;e in Inches"/>
<node CREATED="1700105139702" ID="ID_1994987569" MODIFIED="1700105152857" TEXT="size! : dann verbindliche Gr&#xf6;&#xdf;e"/>
<node CREATED="1700105153462" ID="ID_1167641306" MODIFIED="1700105161830" TEXT="Wechselwirkung mit ratio"/>
</node>
<node CREATED="1700105163468" ID="ID_514140217" LINK="https://graphviz.org/docs/attrs/ratio/" MODIFIED="1700105172944" TEXT="ratio">
<node CREATED="1700105202533" ID="ID_133109322" MODIFIED="1700105215303" TEXT="entweder numerisches Seitenverh&#xe4;ltnis"/>
<node CREATED="1700105215851" ID="ID_948086315" MODIFIED="1700105219623" TEXT="oder Strategie">
<node CREATED="1700105253878" ID="ID_1875666186" MODIFIED="1700105266504" TEXT="fill / compress / expand / auto"/>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1437693678626" HGAP="117" ID="ID_1536988357" MODIFIED="1557498707241" POSITION="left" TEXT="Doku" VSHIFT="-47">
<node CREATED="1437693687650" ID="ID_1484874437" MODIFIED="1557498707241" TEXT="Sound-Systeme">
<node CREATED="1437693693617" ID="ID_955932218" LINK="https://wiki.debian.org/Sound" MODIFIED="1576282357932" TEXT="siehe die Debian-&#xdc;bersichtsseite">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...im Besonderen die guten Diagramme f&#252;r Pulse, ALSA und Jack
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1522933281517" HGAP="79" ID="ID_1743316782" MODIFIED="1557498707241" POSITION="left" TEXT="Entwicklung" VSHIFT="-6">
<edge COLOR="#9e7171" STYLE="linear"/>
<font NAME="SansSerif" SIZE="16"/>
<node CREATED="1522933436743" ID="ID_669941386" MODIFIED="1557498707241" TEXT="Architektur">
<node CREATED="1522933471266" ID="ID_1652255203" MODIFIED="1557498707241" TEXT="GUI">
<node COLOR="#435e98" CREATED="1522933474914" FOLDED="true" ID="ID_1612113311" MODIFIED="1561238415968" TEXT="Backbone">
<linktarget COLOR="#6278c0" DESTINATION="ID_1612113311" ENDARROW="Default" ENDINCLINATION="94;100;" ID="Arrow_ID_879038794" SOURCE="ID_1835644126" STARTARROW="None" STARTINCLINATION="-3;-77;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1522934000737" ID="ID_1881825617" MODIFIED="1557498707241" TEXT="brauche top-Level">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1561238405397" ID="ID_1386160088" MODIFIED="1561238413453" TEXT="verbesserte Dependency-Injection">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1522934018175" ID="ID_463339540" MODIFIED="1561238164819" TEXT="mu&#xdf; Komponente allozieren k&#xf6;nnen">
<linktarget COLOR="#34a79a" DESTINATION="ID_463339540" ENDARROW="Default" ENDINCLINATION="355;0;" ID="Arrow_ID_636625875" SOURCE="ID_34008801" STARTARROW="None" STARTINCLINATION="55;1;"/>
<icon BUILTIN="hourglass"/>
<node COLOR="#435e98" CREATED="1561238166116" ID="ID_1440602260" MODIFIED="1561238254089" TEXT="neues m&#xe4;chtiges Framework hierf&#xfc;r angelegt">
<node COLOR="#338800" CREATED="1561238195872" ID="ID_403413272" MODIFIED="1561238208076" TEXT="UI-Koordinaten">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1561238199759" ID="ID_1160624360" MODIFIED="1561238207378" TEXT="ein Resolver-Mechanismus">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1561238209064" ID="ID_470273768" MODIFIED="1561238232000" TEXT="TODO: Implementierung auf real-existierendem GUI">
<icon BUILTIN="hourglass"/>
<node CREATED="1561238233366" ID="ID_947719044" MODIFIED="1561238242701" TEXT="es existiert noch nicht real">
<icon BUILTIN="smily_bad"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1561238181398" ID="ID_796742878" MODIFIED="1561238255857" TEXT="vorl&#xe4;ufige Abk&#xfc;rzungs-L&#xf6;sung bereitgestellt">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#642842" CREATED="1522933478066" FOLDED="true" ID="ID_533257050" MODIFIED="1679082529294" TEXT="Timeline">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="back"/>
<node COLOR="#8e0099" CREATED="1522934041940" ID="ID_706725110" MODIFIED="1561238284015" TEXT="ist kamputt">
<icon BUILTIN="smiley-angry"/>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1522934923858" ID="ID_369497864" MODIFIED="1561238291010" TEXT="braucht bessere Architektur">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1561238293019" FOLDED="true" ID="ID_567481580" MODIFIED="1679080850947" TEXT="Komplette Reimplementierung auf den Weg gebracht">
<linktarget COLOR="#6971ce" DESTINATION="ID_567481580" ENDARROW="Default" ENDINCLINATION="450;38;" ID="Arrow_ID_1010232773" SOURCE="ID_1016002524" STARTARROW="None" STARTINCLINATION="124;16;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1561238424279" HGAP="63" ID="ID_705841731" MODIFIED="1679082496688" TEXT="offene Enden" VSHIFT="-23">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      auf diese Stellen konzentrierte sich f&#252;r l&#228;ngere Zeit die Aktivit&#228;t, und keines dieser Themen konnte ich wirklich abschlie&#223;en, denn es sind noch zu viele strategische Fragen ungekl&#228;rt &#8212; mit 2022 ist immerhin jedes dieser Themen auf einen l&#228;ngerfristig tragf&#228;higen Grund gestellt
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#a9b4c1" DESTINATION="ID_705841731" ENDARROW="Default" ENDINCLINATION="41;43;" ID="Arrow_ID_628057734" SOURCE="ID_52008403" STARTARROW="None" STARTINCLINATION="120;5;"/>
<font NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="info"/>
<node BACKGROUND_COLOR="#e2ce95" COLOR="#ec6b17" CREATED="1654441361325" ID="ID_1875608147" MODIFIED="1679084657085" STYLE="bubble" TEXT="ElementBox-Widget">
<arrowlink COLOR="#f6e1c2" DESTINATION="ID_1863177537" ENDARROW="Default" ENDINCLINATION="-366;30;" ID="Arrow_ID_1412423566" STARTARROW="None" STARTINCLINATION="-2400;-277;"/>
</node>
<node BACKGROUND_COLOR="#e2ce95" COLOR="#ec6b17" CREATED="1654441361325" ID="ID_430878592" MODIFIED="1679084618404" STYLE="bubble" TEXT="Layout-Steuerung">
<arrowlink COLOR="#f6e1c2" DESTINATION="ID_82409060" ENDARROW="Default" ENDINCLINATION="-1352;202;" ID="Arrow_ID_1110289108" STARTARROW="None" STARTINCLINATION="-2400;-277;"/>
<arrowlink COLOR="#f6e1c2" DESTINATION="ID_35592741" ENDARROW="Default" ENDINCLINATION="-366;30;" ID="Arrow_ID_949004312" STARTARROW="None" STARTINCLINATION="-2163;252;"/>
<arrowlink COLOR="#f6e1c2" DESTINATION="ID_1600275521" ENDARROW="Default" ENDINCLINATION="-506;31;" ID="Arrow_ID_694017211" STARTARROW="None" STARTINCLINATION="-2163;252;"/>
</node>
</node>
<node COLOR="#eb1854" CREATED="1611035931543" HGAP="329" ID="ID_1578788883" MODIFIED="1654441303329" STYLE="bubble" TEXT="&#x231b; Stand 2020-4  &#x2050;  2022-6" VSHIFT="5">
<edge COLOR="#eb1854" STYLE="sharp_linear" WIDTH="4"/>
<arrowlink COLOR="#faeab8" DESTINATION="ID_1392905607" ENDARROW="Default" ENDINCLINATION="-1498;-119;" ID="Arrow_ID_871958604" STARTARROW="None" STARTINCLINATION="-2110;202;"/>
<font NAME="SansSerif" SIZE="14"/>
<node COLOR="#435e98" CREATED="1611036115693" ID="ID_797238968" MODIFIED="1611036457975" TEXT="Design f&#xfc;r Canvas-Attachment gel&#xf6;st">
<font NAME="SansSerif" SIZE="10"/>
</node>
<node COLOR="#435e98" CREATED="1611036133179" ID="ID_129940687" MODIFIED="1611036440243" TEXT="Grundlage der der Clip-Anzeige gelegt">
<font NAME="SansSerif" SIZE="10"/>
</node>
<node COLOR="#435e98" CREATED="1611036133179" ID="ID_1591008815" MODIFIED="1654441292474" TEXT="Grundlage f&#xfc;r Gesten-controller gelegt">
<font NAME="SansSerif" SIZE="10"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1611036133179" ID="ID_1763333735" MODIFIED="1611036535606" TEXT="Nahziel: einfachste &#xbb;abridged&#xab;-Anzeige">
<font NAME="SansSerif" SIZE="10"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1679082437934" ID="ID_52008403" MODIFIED="1679082496688" TEXT="viele offene Enden warten auf eine weiter ausgearbeitete Applikation">
<arrowlink DESTINATION="ID_705841731" ENDARROW="Default" ENDINCLINATION="41;43;" ID="Arrow_ID_628057734" STARTARROW="None" STARTINCLINATION="120;5;"/>
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
<node CREATED="1522933489912" ID="ID_909250916" MODIFIED="1557498707241" TEXT="Session">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1522934151421" ID="ID_580296278" MODIFIED="1557498707241" TEXT="Element-Erzeugung implementieren">
<icon BUILTIN="broken-line"/>
</node>
<node CREATED="1522934106715" ID="ID_1908249834" MODIFIED="1557498707241" TEXT="Placement-Logik implementieren">
<icon BUILTIN="hourglass"/>
</node>
</node>
<node CREATED="1522933496807" ID="ID_30713901" MODIFIED="1557498707241" TEXT="Builder">
<node CREATED="1522934179425" ID="ID_1599594477" MODIFIED="1557498707241" TEXT="keine Ahnung was der machen soll">
<icon BUILTIN="smily_bad"/>
</node>
</node>
<node CREATED="1522933500430" ID="ID_1555205420" MODIFIED="1557498707241" TEXT="Player">
<node CREATED="1522934197478" ID="ID_237029868" MODIFIED="1557498707241" TEXT="wartet auf Scheduler">
<icon BUILTIN="hourglass"/>
</node>
</node>
<node CREATED="1522933505078" ID="ID_1376308250" MODIFIED="1557498707241" TEXT="Engine">
<node CREATED="1522934210324" ID="ID_254801901" MODIFIED="1557498707241" TEXT="wartet auf Fixture/Backbone">
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
<node CREATED="1664058018889" HGAP="70" ID="ID_1933523990" MODIFIED="1664058038958" TEXT="Leit-Aufgaben" VSHIFT="13">
<font NAME="SansSerif" SIZE="14"/>
<node CREATED="1664058052677" ID="ID_671587918" MODIFIED="1664058055024" TEXT="aktiv">
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1664059317203" ID="ID_995858352" MODIFIED="1679784026877" TEXT="#1221 Playback Vertical Slice">
<icon BUILTIN="back"/>
<node BACKGROUND_COLOR="#fefc4e" COLOR="#351d75" CREATED="1679082378934" HGAP="90" ID="ID_1513396947" MODIFIED="1679082411019" TEXT="hier spielt die Musik" VSHIFT="-28">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="knotify"/>
<node BACKGROUND_COLOR="#e2ce95" COLOR="#ec6b17" CREATED="1654441361325" ID="ID_596408518" MODIFIED="1679084719279" STYLE="bubble" TEXT="ElementBox-Content-Renderer">
<arrowlink COLOR="#f6e1c2" DESTINATION="ID_1938112956" ENDARROW="Default" ENDINCLINATION="-1219;85;" ID="Arrow_ID_1826503668" STARTARROW="None" STARTINCLINATION="-2360;-214;"/>
</node>
<node BACKGROUND_COLOR="#e2ce95" COLOR="#ec6b17" CREATED="1654441361325" ID="ID_1435039515" MODIFIED="1680567145813" STYLE="bubble" TEXT="GUI: Video Viewer">
<arrowlink COLOR="#f6e1c2" DESTINATION="ID_7752918" ENDARROW="Default" ENDINCLINATION="-612;79;" ID="Arrow_ID_1986887171" STARTARROW="None" STARTINCLINATION="-2008;-180;"/>
</node>
<node BACKGROUND_COLOR="#e2ce95" COLOR="#ec6b17" CREATED="1654441361325" ID="ID_1704865245" MODIFIED="1680565151548" STYLE="bubble" TEXT="Fixture-Backbone">
<arrowlink COLOR="#f6e1c2" DESTINATION="ID_1180632123" ENDARROW="Default" ENDINCLINATION="-985;-61;" ID="Arrow_ID_1052251062" STARTARROW="None" STARTINCLINATION="-2243;270;"/>
</node>
<node BACKGROUND_COLOR="#e2ce95" COLOR="#ec6b17" CREATED="1654441361325" ID="ID_59027079" MODIFIED="1680565125463" STYLE="bubble" TEXT="Scheduler">
<arrowlink COLOR="#f6e1c2" DESTINATION="ID_1657236591" ENDARROW="Default" ENDINCLINATION="-1219;87;" ID="Arrow_ID_49470357" STARTARROW="None" STARTINCLINATION="-2189;368;"/>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1679783158745" HGAP="36" ID="ID_25937632" MODIFIED="1679783197261" TEXT="Definition" VSHIFT="11">
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1679783214377" ID="ID_749983123" MODIFIED="1679783224010" TEXT="Leitbild">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node CREATED="1679783225727" ID="ID_539130765" MODIFIED="1679783303320" TEXT="die Engine l&#xe4;uft und liefert"/>
<node CREATED="1679783250652" ID="ID_1689653343" MODIFIED="1679783285911" TEXT="Laufende Wiedergabe im GUI"/>
<node CREATED="1679783329217" ID="ID_435773138" MODIFIED="1679783336173" TEXT="Interaktivit&#xe4;t: Start/Stop"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#a31e84" CREATED="1679783338080" ID="ID_413822351" MODIFIED="1679783359057" TEXT="nicht eingeschlossen">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="yes"/>
<node CREATED="1679783372811" ID="ID_176708253" MODIFIED="1679783377199" TEXT="beliebige Medien"/>
<node CREATED="1679783377787" ID="ID_409466607" MODIFIED="1679783383022" TEXT="Effekt-Berechnung"/>
<node CREATED="1679783460711" ID="ID_829148645" MODIFIED="1679783508686" TEXT="spezielle Wiedergabe-Modi">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      kein Vorw&#228;rts/R&#252;ckw&#228;rts spulen, kein Springen, kein Looping, keine variable Geschwindigkeit
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1679783404111" ID="ID_683032118" MODIFIED="1679783410154" TEXT="Editieren der Session"/>
<node CREATED="1679783416477" ID="ID_42041000" MODIFIED="1679783430320" TEXT="keinerlei Persistenz"/>
</node>
</node>
<node CREATED="1679783620138" HGAP="84" ID="ID_670198616" MODIFIED="1679924451225" TEXT="Themen" VSHIFT="4">
<icon BUILTIN="info"/>
<node CREATED="1679783781677" ID="ID_1639721271" MODIFIED="1679783785761" TEXT="Video-Widergabe"/>
<node CREATED="1679783808329" ID="ID_1106262034" MODIFIED="1679783853111" TEXT="Timings und Zeitma&#xdf;e"/>
<node CREATED="1679783813232" ID="ID_1304310724" MODIFIED="1679783838969" TEXT="asynchrone Steuerung"/>
<node CREATED="1679784101725" ID="ID_460682594" MODIFIED="1679784117473" TEXT="Komponenten-Verdrahtung"/>
<node CREATED="1679783876975" ID="ID_925510369" MODIFIED="1679783885196" TEXT="iterativ-rekursive Planung"/>
<node CREATED="1679783903431" ID="ID_1108872846" MODIFIED="1679783909684" TEXT="Processing-Pipeline"/>
<node CREATED="1679783913523" ID="ID_547371323" MODIFIED="1679783916474" TEXT="Buffer-Handling"/>
<node CREATED="1679869882217" ID="ID_174091758" MODIFIED="1679869884609" TEXT="Scheduling"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1679783728675" HGAP="44" ID="ID_1018746279" MODIFIED="1679924444960" TEXT="Probleme" VSHIFT="-2">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1679784197692" ID="ID_985663123" MODIFIED="1679784238682" TEXT="Abgrenzung: Event &#x2194; Command &#x2194; Signal">
<node CREATED="1679924510213" ID="ID_1130144074" MODIFIED="1679924512729" TEXT="Fragen">
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1679924515877" ID="ID_1035252569" MODIFIED="1679924552673" TEXT="Was ist kein Event?">
<font NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="help"/>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1679924571653" ID="ID_372899682" MODIFIED="1679924593451" TEXT="sind direkte Signale sinnvoll/nachteilig?">
<icon BUILTIN="help"/>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1679924622686" ID="ID_305707096" MODIFIED="1679924634055" TEXT="Rolle des persistenten UI-State? ">
<icon BUILTIN="help"/>
</node>
</node>
</node>
<node CREATED="1679787873721" ID="ID_1605476827" MODIFIED="1679787888964" TEXT="Konzept der &#xbb;ViewConnection&#xab; kl&#xe4;ren">
<node CREATED="1679925014948" ID="ID_456112267" MODIFIED="1679925034602" TEXT="Bez&#xfc;ge">
<icon BUILTIN="info"/>
<node CREATED="1679925037278" ID="ID_905293925" MODIFIED="1679963467821" TEXT="es gibt einen alten Entwurf ~2011"/>
<node CREATED="1679925063849" ID="ID_1319708934" MODIFIED="1679925074861" TEXT="h&#xe4;ngt stark mit dem OutputManagement zusammen"/>
<node CREATED="1679925075665" ID="ID_559486706" MODIFIED="1679925094037">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      involviert Problem des <i>Output Network</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1679925104405" ID="ID_1189292722" MODIFIED="1679925111124" TEXT="wird als persistent verstanden"/>
<node CREATED="1679925122459" ID="ID_1652087608" MODIFIED="1679925135682" TEXT="Abgrenzung zum UI-State notwendig">
<icon BUILTIN="messagebox_warning"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1679963672551" ID="ID_1017171402" MODIFIED="1679963682838" TEXT="Verh&#xe4;ltnis zur Timeline zu kl&#xe4;ren">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1679963688093" ID="ID_173898614" MODIFIED="1679963694758" TEXT="fest steht">
<node CREATED="1679963695915" ID="ID_1244552807" MODIFIED="1679963703686" TEXT="die Timeline ist selber nur eine Facade"/>
<node CREATED="1679963704322" ID="ID_1295833791" MODIFIED="1679963710038" TEXT="dahinter steht ein Binding"/>
<node CREATED="1679963710674" ID="ID_793156306" MODIFIED="1679963727259" TEXT="es stellt die Verbindung her zu Globalen Pipes"/>
<node CREATED="1679963736854" ID="ID_1450985814" MODIFIED="1679963770909" TEXT="aber eine ViewConnection ist essentiell das Gleiche">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      nur eben dahinter geschaltet, und flexibler
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1679925023776" ID="ID_1511633470" MODIFIED="1679925030816" TEXT="Konzept">
<icon BUILTIN="hourglass"/>
<node CREATED="1679963537217" ID="ID_817658978" MODIFIED="1679963543971" TEXT="beteiligte Entit&#xe4;ten"/>
<node CREATED="1679963562358" ID="ID_1884557779" MODIFIED="1679963566721" TEXT="Eigenschaften"/>
</node>
</node>
<node CREATED="1679788319094" ID="ID_1132613527" MODIFIED="1679788340040" TEXT="wo kann die Fixture geFAKEd werden?">
<node CREATED="1679924699883" ID="ID_769718712" MODIFIED="1679924704744" TEXT="Wechselwirkungen">
<node CREATED="1679924721585" ID="ID_218030921" MODIFIED="1679924760967" TEXT="braucht Setup-Operatoin im Player"/>
<node CREATED="1679924766987" ID="ID_549141712" MODIFIED="1679924776557" TEXT="kann Weiterentwicklung behindern"/>
<node CREATED="1679924804534" ID="ID_412706766" MODIFIED="1679924817096" TEXT="Fixture mu&#xdf; tats&#xe4;chlich nutzbar sein"/>
<node CREATED="1679924820196" ID="ID_1070429445" MODIFIED="1679924930483" TEXT="braucht (ggfs) minimale Steuerbarkeit durch das UI">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <ul>
      <li>
        zumindest die Clip-ID mu&#223; irgendwie auf high-level-Ebene repr&#228;sentiert werden
      </li>
      <li>
        <i>sofern die Timeline involviert ist:<b>&#160;</b></i>es k&#246;nnte &#196;nderungen der Start/Stopzeit geben
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1679924931277" ID="ID_488176513" MODIFIED="1679924942537">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Entscheidung: im <b>Builder</b>
    </p>
  </body>
</html></richcontent>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node CREATED="1679924946698" ID="ID_39408058" MODIFIED="1679924960325" TEXT="dort eine magische Abzweigung schaffen"/>
<node CREATED="1679924961345" ID="ID_1283747458" MODIFIED="1679924988809" TEXT="kann damit ersten Entwurf der Fixture-Konstruktion implementieren"/>
</node>
</node>
<node CREATED="1679924399181" ID="ID_1247355489" MODIFIED="1679924407085" TEXT="minimale high-level-Repr&#xe4;sentation">
<node CREATED="1679945280469" ID="ID_1179888739" MODIFIED="1679945299793" TEXT="Problematik: high-level-Modell ist noch unreif">
<icon BUILTIN="clanbomber"/>
</node>
<node CREATED="1679945481691" ID="ID_1023272842" MODIFIED="1679945493995" TEXT="Repr&#xe4;sentation von Assets?"/>
<node CREATED="1679945449876" ID="ID_159098137" MODIFIED="1679945458718" TEXT="ID-Management ungekl&#xe4;rt"/>
</node>
<node CREATED="1679924423491" ID="ID_1610214036" MODIFIED="1679924428565" TEXT="Datenquelle f&#xfc;r die Frames">
<node CREATED="1679925151984" ID="ID_1439861274" MODIFIED="1679925153595" TEXT="Belange">
<node CREATED="1679925154520" ID="ID_1163621279" MODIFIED="1679925180679" TEXT="bedingt Abh&#xe4;ngigkeit auf Medien-Library"/>
<node CREATED="1679925181243" ID="ID_8108243" MODIFIED="1679925197333" TEXT="involviert das Plugin-System (unreif)"/>
<node CREATED="1679925213967" ID="ID_1795291263" MODIFIED="1679925224985" TEXT="Stream-Type-Repr&#xe4;sentation"/>
<node CREATED="1679925236433" ID="ID_315993169" MODIFIED="1679925251724" TEXT="Auslieferung (Storage)">
<node CREATED="1679925263816" ID="ID_757916379" MODIFIED="1679925275741" TEXT="Keine Mediendaten im Git"/>
<node CREATED="1679925276494" ID="ID_133458520" MODIFIED="1679925290712" TEXT="ben&#xf6;tigt zus&#xe4;tzliche Infrastruktur"/>
</node>
</node>
<node CREATED="1679925300587" ID="ID_415001259" MODIFIED="1679925303534" TEXT="L&#xf6;sungen">
<node CREATED="1679925304930" ID="ID_57552007" MODIFIED="1679925377305" TEXT="FFMpeg vorl&#xe4;ufig integrieren">
<icon BUILTIN="stop-sign"/>
</node>
<node CREATED="1679925323303" ID="ID_510463166" MODIFIED="1679925379903" TEXT="RGB8-Raw-Video verwenden">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1679925355633" ID="ID_1778236782" MODIFIED="1679925382868" TEXT="Video-Generator implementieren">
<icon BUILTIN="back"/>
</node>
</node>
</node>
<node CREATED="1680396222047" ID="ID_1641749969" MODIFIED="1680396278980">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p style="text-align: center">
      Baum-Monaden-Framework f&#252;r Job-Planung<br /><font size="4" color="#cc1342">fragw&#252;rdiges Design</font>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1680396285443" ID="ID_285930244" MODIFIED="1680396457815" TEXT="der Code ist (selbst f&#xfc;r mich) nahezu unverst&#xe4;ndlich">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      habe das wohl schon damals gemerkt... der Quelltext ist voller &quot;entschuldigender Kommentare&quot;
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="smiley-angry"/>
</node>
<node CREATED="1680396300209" ID="ID_1838580113" MODIFIED="1680396410375" TEXT="das best&#xe4;tigt alle meine Zweifel am Monaden-Konzept aus der funktionalen Programmierung">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      das prim&#228;re Problem ist hier nicht C++, oder eine ungeschickte Implementierung meinerseits, sondern das brennende Problem ist, da&#223; die Monaden-Struktur nichts zum Verst&#228;ndnis der Verwendung beitr&#228;gt, sondern diese durch eine <i>rein-mathematische</i>&#160;Symmetrie <b>verstellt und verschleiert</b>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1680396464104" ID="ID_216719314" MODIFIED="1680396585105" TEXT="Beschlu&#xdf;: weg damit">
<arrowlink COLOR="#963345" DESTINATION="ID_1805461369" ENDARROW="Default" ENDINCLINATION="367;0;" ID="Arrow_ID_271837208" STARTARROW="None" STARTINCLINATION="175;160;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node COLOR="#435e98" CREATED="1680396470946" ID="ID_970682100" MODIFIED="1687456404436" TEXT="Aufgabe: noch ein letztes Mal verstehen, was das sollte">
<icon BUILTIN="yes"/>
</node>
<node COLOR="#338800" CREATED="1680396490895" ID="ID_1991292419" MODIFIED="1687456406048" TEXT="Umbauen auf das Pipeline / TreeExplorer-Framework">
<icon BUILTIN="button_ok"/>
<node CREATED="1680396521021" ID="ID_1520286749" MODIFIED="1680396527735" TEXT="das hat sich inzwischen viel besser bew&#xe4;hrt"/>
<node CREATED="1680396528171" ID="ID_1369183009" MODIFIED="1680396546921">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      und bietet monadische-Expansion als <i>Spezialfall</i>
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1679783751608" ID="ID_1207767119" MODIFIED="1679924460221" TEXT="Struktur">
<icon BUILTIN="pencil"/>
<node CREATED="1679788541561" ID="ID_246646204" MODIFIED="1679788547296" TEXT="Setup im GUI bereitstellen"/>
<node CREATED="1679784183070" ID="ID_392713581" MODIFIED="1679784192104" TEXT="Player-Steuerung"/>
<node CREATED="1679788559094" ID="ID_1138489245" MODIFIED="1679788569544" TEXT="Play-Process erzeugen"/>
<node CREATED="1679788574372" ID="ID_1504364531" MODIFIED="1679788584308" TEXT="Dispatcher fertigstellen"/>
<node CREATED="1679788589727" ID="ID_1461146166" MODIFIED="1679788603056" TEXT="Scheduler">
<node CREATED="1679788604226" ID="ID_671337380" MODIFIED="1679788608411" TEXT="Basis-Implementierung"/>
<node CREATED="1679788608984" ID="ID_1995627934" MODIFIED="1679788618138" TEXT="Grundlagen Dependency-Management"/>
</node>
<node CREATED="1679788636636" ID="ID_1242125154" MODIFIED="1679788644742" TEXT="Technologie: Video-Ausgabe im GUI"/>
<node CREATED="1679788655473" ID="ID_1037767417" MODIFIED="1679788661748" TEXT="running Time-display"/>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1679783177087" HGAP="29" ID="ID_1020455743" MODIFIED="1679783192799" TEXT="vorantreiben" VSHIFT="3">
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1679783641511" ID="ID_212214057" MODIFIED="1689171338665" TEXT="Tickets">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="list"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1680141126520" ID="ID_1147697662" LINK="https://issues.lumiera.org/ticket/1273" MODIFIED="1680141154614" TEXT="#1273 Viewer-Connection Concept">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1680141166647" ID="ID_1634794257" MODIFIED="1680141390579" TEXT="Das Wiring-Konzept von 2015 ist in dieser Hinsicht noch nicht fertig">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Es ist zwar schon klar, da&#223; ein separates Output-Network gebaut werden mu&#223;, um die generierten Frames f&#252;r den konkreten Viewer in der GUI aufzubereiten. Aber es ist noch nicht wirklich gekl&#228;rt, wie dieses in das generelle Design mit High-Level-Model, Builder und Low-Level-Model zu integrieren ist. Bisher hatte ich immer nur den Begriff &quot;ViewConnection&quot; verwendet (Siehe TiddlyWiki) und dazu festgehalten, da&#223; es sich um ein &#187;Binding&#171; handeln soll. Unklar ist aber die genaue Verh&#228;ltnisbestimmung zu dem Binding, das f&#252;r Timeline und VirtualClip zum Tragen kommen wird.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1680195770073" ID="ID_1611142501" LINK="https://issues.lumiera.org/ticket/1274" MODIFIED="1680219860901" TEXT="#1274 rigged setup for clip playback">
<linktarget COLOR="#5297c3" DESTINATION="ID_1611142501" ENDARROW="Default" ENDINCLINATION="51;3;" ID="Arrow_ID_1273706751" SOURCE="ID_1946005498" STARTARROW="None" STARTINCLINATION="62;-3;"/>
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1680193604370" ID="ID_1946005498" LINK="https://issues.lumiera.org/ticket/1231" MODIFIED="1680219871020" TEXT="#1231 trigger clip playback on the GUI">
<arrowlink COLOR="#5297c3" DESTINATION="ID_1611142501" ENDARROW="Default" ENDINCLINATION="51;3;" ID="Arrow_ID_1273706751" STARTARROW="None" STARTINCLINATION="62;-3;"/>
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1680193640309" ID="ID_1108084572" LINK="https://issues.lumiera.org/ticket/1232" MODIFIED="1680193652395" TEXT=" #1232 Process request for playback command in SteamDispatcher ">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1680193667730" ID="ID_1957971901" LINK="https://issues.lumiera.org/ticket/1233" MODIFIED="1680193682441" TEXT="#1233 Activate playback mode on a Player instance ">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1680193712051" ID="ID_409993593" LINK="https://issues.lumiera.org/ticket/1243" MODIFIED="1680222976872" TEXT="#1243 Build low-level model from high-level model (mocked) of a clip">
<linktarget COLOR="#5fa6c1" DESTINATION="ID_409993593" ENDARROW="Default" ENDINCLINATION="199;8;" ID="Arrow_ID_222915618" SOURCE="ID_699634936" STARTARROW="None" STARTINCLINATION="167;-10;"/>
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1680195883938" ID="ID_699634936" LINK="https://issues.lumiera.org/ticket/1275" MODIFIED="1680562039055" TEXT="#1275 dispatch simple calculation stream">
<arrowlink COLOR="#5fa6c1" DESTINATION="ID_409993593" ENDARROW="Default" ENDINCLINATION="199;8;" ID="Arrow_ID_222915618" STARTARROW="None" STARTINCLINATION="167;-10;"/>
<arrowlink COLOR="#6a92a9" DESTINATION="ID_1805461369" ENDARROW="Default" ENDINCLINATION="190;-8;" ID="Arrow_ID_1209058185" STARTARROW="None" STARTINCLINATION="61;-2;"/>
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1684967502141" HGAP="32" ID="ID_656533593" LINK="https://issues.lumiera.org/ticket/920" MODIFIED="1684975125151" TEXT="#920 planning-chunk" VSHIFT="9">
<arrowlink COLOR="#942e62" DESTINATION="ID_611062440" ENDARROW="Default" ENDINCLINATION="-1068;115;" ID="Arrow_ID_590164748" STARTARROW="None" STARTINCLINATION="-1389;145;"/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1684967561516" ID="ID_758948708" MODIFIED="1684967566943" TEXT="sehr altes Ticket"/>
<node CREATED="1684967567676" ID="ID_1413649871" MODIFIED="1684967580677" TEXT="ist praktisch der Dispatcher-Implementierungs-Kern"/>
<node CREATED="1684967582842" ID="ID_305633266" MODIFIED="1684975176753" TEXT="hier k&#xf6;nnte man den Umbau auf RenderDrive ansetzen">
<arrowlink COLOR="#fa2575" DESTINATION="ID_1293956051" ENDARROW="Default" ENDINCLINATION="47;4;" ID="Arrow_ID_652930263" STARTARROW="None" STARTINCLINATION="-8;28;"/>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1680305211903" ID="ID_1805461369" LINK="https://issues.lumiera.org/ticket/1276" MODIFIED="1687456413800" TEXT="#1276 reassess design of render job deadline planning">
<arrowlink COLOR="#3598d7" DESTINATION="ID_896127270" ENDARROW="Default" ENDINCLINATION="-1096;-80;" ID="Arrow_ID_1764912075" STARTARROW="None" STARTINCLINATION="-511;24;"/>
<linktarget COLOR="#963345" DESTINATION="ID_1805461369" ENDARROW="Default" ENDINCLINATION="367;0;" ID="Arrow_ID_271837208" SOURCE="ID_216719314" STARTARROW="None" STARTINCLINATION="175;160;"/>
<linktarget COLOR="#6a92a9" DESTINATION="ID_1805461369" ENDARROW="Default" ENDINCLINATION="190;-8;" ID="Arrow_ID_1209058185" SOURCE="ID_699634936" STARTARROW="None" STARTINCLINATION="61;-2;"/>
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1684967502141" HGAP="32" ID="ID_1293956051" LINK="https://issues.lumiera.org/ticket/920" MODIFIED="1684975150795" TEXT="#1301 Render-Drive refactoring" VSHIFT="9">
<arrowlink COLOR="#942e62" DESTINATION="ID_470129345" ENDARROW="Default" ENDINCLINATION="-1340;103;" ID="Arrow_ID_1563903339" STARTARROW="None" STARTINCLINATION="-1408;109;"/>
<linktarget COLOR="#fa2575" DESTINATION="ID_1293956051" ENDARROW="Default" ENDINCLINATION="47;4;" ID="Arrow_ID_652930263" SOURCE="ID_305633266" STARTARROW="None" STARTINCLINATION="-8;28;"/>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1680316647510" ID="ID_1793327086" LINK="https://issues.lumiera.org/ticket/1277" MODIFIED="1680316670021" TEXT="#1277 implement Timings descriptor for simple playback">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1680316684910" ID="ID_908207982" MODIFIED="1680316774339" TEXT="woot: aus dem Code wird nicht ganz klar was ein Timings descriptor leistet">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...dieser Monaden-Code ist undurchdringlich (selbst f&#252;r micht, und ich kann mich noch gut daran erinnern, was er leisten soll)
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="clanbomber"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1680195925069" ID="ID_1715377601" LINK="https://issues.lumiera.org/ticket/1278" MODIFIED="1680317916818" TEXT="#1278 Schedule simple sequence of render jobs">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1680380228657" ID="ID_14638704" LINK="https://issues.lumiera.org/ticket/1279" MODIFIED="1680382013522" TEXT="#1279 provide technology for worker threads">
<arrowlink COLOR="#b22e63" DESTINATION="ID_196314311" ENDARROW="Default" ENDINCLINATION="-1383;-51;" ID="Arrow_ID_134934445" STARTARROW="None" STARTINCLINATION="-753;40;"/>
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1680381903590" ID="ID_833824994" LINK="https://issues.lumiera.org/ticket/1280" MODIFIED="1680382032313" TEXT="#1280 build Scheduler implementation">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1680383011232" ID="ID_1091550126" LINK="https://issues.lumiera.org/ticket/1281" MODIFIED="1680383105154" TEXT="#1281 build deadline-bound scheduler for worker pool">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1680384502979" ID="ID_1328538589" LINK="https://issues.lumiera.org/ticket/1282" MODIFIED="1680384525394" TEXT="#1282 build dependency tracking and notification framework for jobs">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1680387404540" ID="ID_1470255504" LINK="https://issues.lumiera.org/ticket/1283" MODIFIED="1680387428043" TEXT="#1283 draft observation of calculation times">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1680389032371" ID="ID_663979640" LINK="https://issues.lumiera.org/ticket/1285" MODIFIED="1680389054385" TEXT="#1285 draft integration of asynchronous IO with rendering">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1680561901447" ID="ID_1591114904" LINK="https://issues.lumiera.org/ticket/1298" MODIFIED="1694354328390" TEXT="#1298 Render Activity verbs">
<arrowlink COLOR="#fde0ca" DESTINATION="ID_1599285907" ENDARROW="Default" ENDINCLINATION="-762;53;" ID="Arrow_ID_744981346" STARTARROW="None" STARTINCLINATION="-1043;88;"/>
<icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1694354381837" ID="ID_663246616" MODIFIED="1694354395299" TEXT="#1319 define Activity-Term and invoke render Activities">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1695555555555" ID="ID_849227497" MODIFIED="1697744929393" TEXT="#1344 Scheduler performance tests">
<arrowlink COLOR="#fde0ca" DESTINATION="ID_1032000470" ENDARROW="Default" ENDINCLINATION="-1678;88;" ID="Arrow_ID_552669850" STARTARROW="None" STARTINCLINATION="-1536;97;"/>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1680388296693" ID="ID_283603911" LINK="https://issues.lumiera.org/ticket/1284" MODIFIED="1680388318115" TEXT="#1284 Render Engine operational control">
<icon BUILTIN="hourglass"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1680389959705" ID="ID_1139462793" LINK="https://issues.lumiera.org/ticket/1286" MODIFIED="1680389986151" TEXT="#1286 Timing Observable">
<arrowlink COLOR="#a54e77" DESTINATION="ID_1046752034" ENDARROW="Default" ENDINCLINATION="-1519;212;" ID="Arrow_ID_1830118942" STARTARROW="None" STARTINCLINATION="836;79;"/>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1680196018888" ID="ID_874815999" LINK="https://issues.lumiera.org/ticket/1287" MODIFIED="1680391903482" TEXT="#1287 invoke simple render job">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1682810738487" ID="ID_48632766" MODIFIED="1682810875535" TEXT="#1295 draft job invocation parameter representation">
<arrowlink COLOR="#b22e63" DESTINATION="ID_1493396541" ENDARROW="Default" ENDINCLINATION="-1383;-51;" ID="Arrow_ID_847435526" STARTARROW="None" STARTINCLINATION="-753;40;"/>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1680196129567" ID="ID_988036389" LINK="https://issues.lumiera.org/ticket/1288" MODIFIED="1680392639594" TEXT="#1288 simple video display widget">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1680394326847" ID="ID_1990423949" LINK="https://issues.lumiera.org/ticket/950" MODIFIED="1680394346975" TEXT="#950 GTK-3: Video display in the GUI">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1680196149518" ID="ID_525567081" LINK="https://issues.lumiera.org/ticket/1289" MODIFIED="1680393497536" TEXT="#1289 output manager for GUI video display">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1680196059211" ID="ID_672047126" LINK="https://issues.lumiera.org/ticket/1290" MODIFIED="1680394137011" TEXT="#1290 exchange buffers between GUI and Engine">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node CREATED="1679783648215" ID="ID_1843221543" MODIFIED="1680561728507" TEXT="Diskussion/Entscheidungen">
<node CREATED="1680561739893" ID="ID_1277050322" MODIFIED="1680561744515" TEXT="Technologie">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1680561745270" ID="ID_264248978" MODIFIED="1680561760037" TEXT="Video-Display-UI">
<icon BUILTIN="flag-yellow"/>
</node>
<node COLOR="#338800" CREATED="1680561751261" ID="ID_1799759884" MODIFIED="1694354420599" TEXT="Worker-Thradpool">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1689171353019" ID="ID_1923378280" MODIFIED="1689171356858" TEXT="Architektur">
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1689171357870" ID="ID_427389282" MODIFIED="1689171374221" TEXT="Scheduler ist ein Service">
<icon BUILTIN="yes"/>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1689171388218" ID="ID_222695872" MODIFIED="1689171407366" TEXT="Extent/Epoc-based memory allocation">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node CREATED="1679783675979" ID="ID_312162112" MODIFIED="1679783688045" TEXT="neu bauen">
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1680561793925" ID="ID_961883511" MODIFIED="1680567189685" TEXT="Video-Widget">
<arrowlink COLOR="#fec499" DESTINATION="ID_1636806116" ENDARROW="Default" ENDINCLINATION="-757;117;" ID="Arrow_ID_820803219" STARTARROW="None" STARTINCLINATION="-239;41;"/>
<icon BUILTIN="hourglass"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1680561798377" ID="ID_962521952" MODIFIED="1680567194869" TEXT="GUI-OutputManager">
<arrowlink COLOR="#fec499" DESTINATION="ID_754563967" ENDARROW="Default" ENDINCLINATION="-691;58;" ID="Arrow_ID_1893379752" STARTARROW="None" STARTINCLINATION="-230;29;"/>
<icon BUILTIN="hourglass"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1680561843520" ID="ID_51005656" MODIFIED="1680566910795" TEXT="Fixture">
<arrowlink COLOR="#fec499" DESTINATION="ID_176106926" ENDARROW="Default" ENDINCLINATION="-584;114;" ID="Arrow_ID_1229368159" STARTARROW="None" STARTINCLINATION="-150;36;"/>
<icon BUILTIN="hourglass"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1680561847832" ID="ID_988488968" MODIFIED="1680566930976" TEXT="Content/Generator">
<arrowlink COLOR="#fec499" DESTINATION="ID_460039330" ENDARROW="Default" ENDINCLINATION="-632;68;" ID="Arrow_ID_1437229627" STARTARROW="None" STARTINCLINATION="-241;31;"/>
<icon BUILTIN="hourglass"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1680561888985" ID="ID_1736473881" MODIFIED="1680563326133" TEXT="Scheduler">
<icon BUILTIN="hourglass"/>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1680561892270" ID="ID_12567096" MODIFIED="1689170140108" TEXT="Layer-1 : PriQueue">
<arrowlink COLOR="#fec499" DESTINATION="ID_250843894" ENDARROW="Default" ENDINCLINATION="-644;84;" ID="Arrow_ID_1702721830" STARTARROW="None" STARTINCLINATION="-233;30;"/>
<icon BUILTIN="pencil"/>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1680561901447" ID="ID_695181807" MODIFIED="1689170140108" TEXT="Layer-2 : Notification">
<arrowlink COLOR="#fec499" DESTINATION="ID_1218283238" ENDARROW="Default" ENDINCLINATION="-678;64;" ID="Arrow_ID_443600884" STARTARROW="None" STARTINCLINATION="-240;29;"/>
<icon BUILTIN="pencil"/>
</node>
</node>
</node>
<node CREATED="1679783678682" ID="ID_136895805" MODIFIED="1679783681526" TEXT="integrieren">
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1680562222631" ID="ID_1661673229" MODIFIED="1680563316834" TEXT="GUI &#x27f7; Player">
<icon BUILTIN="hourglass"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1680562222631" ID="ID_573821275" MODIFIED="1680562222631" TEXT="Mock &#x27f7; Builder &#x2023;&#x2023; Fixture">
<arrowlink COLOR="#fec499" DESTINATION="ID_804147257" ENDARROW="Default" ENDINCLINATION="-696;77;" ID="Arrow_ID_521000760" STARTARROW="None" STARTINCLINATION="-206;21;"/>
<icon BUILTIN="hourglass"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1680562222631" ID="ID_1899779347" MODIFIED="1680563316835" TEXT="Node-Invocation &#x27f7; Generator">
<icon BUILTIN="hourglass"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1680562698618" ID="ID_722733788" MODIFIED="1680563316836" TEXT="Buffer-Management">
<icon BUILTIN="hourglass"/>
</node>
</node>
<node CREATED="1679783694673" ID="ID_455505067" MODIFIED="1679783698044" TEXT="dokumentieren">
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#5c4d6e" CREATED="1695555555555" FOLDED="true" HGAP="100" ID="ID_1867742420" MODIFIED="1695555555555" TEXT="#1111 Placehoder" VSHIFT="86">
<arrowlink COLOR="#fde0ca" DESTINATION="ID_1436808339" ENDARROW="Default" ENDINCLINATION="-1090;99;" ID="Arrow_ID_449422905" STARTARROW="None" STARTINCLINATION="-1258;160;"/>
<icon BUILTIN="bell"/>
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#990000" CREATED="1695555555555" ID="ID_1436808339" MODIFIED="1695555555555" TEXT="#1111 Implement: Placehoder">
<linktarget COLOR="#fde0ca" DESTINATION="ID_1436808339" ENDARROW="Default" ENDINCLINATION="-1090;99;" ID="Arrow_ID_449422905" SOURCE="ID_1867742420" STARTARROW="None" STARTINCLINATION="-1258;160;"/>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1664058062651" ID="ID_1510416990" MODIFIED="1664058067537" TEXT="abgeschlossen">
<node CREATED="1679081386692" ID="ID_1835644126" MODIFIED="1679081423483" TEXT="GUI-Backbone gr&#xfc;nden">
<arrowlink COLOR="#6278c0" DESTINATION="ID_1612113311" ENDARROW="Default" ENDINCLINATION="94;100;" ID="Arrow_ID_879038794" STARTARROW="None" STARTINCLINATION="-3;-77;"/>
</node>
</node>
</node>
<node CREATED="1664630921300" FOLDED="true" HGAP="183" ID="ID_1033335255" MODIFIED="1698184443300" TEXT="Dokumentation" VSHIFT="40">
<edge COLOR="#815b70"/>
<cloud COLOR="#d7c3a8"/>
<font NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="list"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1664630997672" FOLDED="true" ID="ID_237099051" MODIFIED="1698184439278" STYLE="bubble" TEXT="mitf&#xfc;hren">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      <u>Leitlinie</u>: so viel tun, da&#223; uns das Thema nicht &#252;ber den Kopf w&#228;chst
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="back"/>
<node CREATED="1664631055889" ID="ID_1519064192" MODIFIED="1664631546287" STYLE="fork" TEXT="TiddlyWiki">
<node COLOR="#338800" CREATED="1664631069343" ID="ID_905113359" LINK="file:///Lager/heim/devel/lumi/wiki/renderengine.html#GuiTopLevel%20GuiTimelineView%20TimelineDisplayManager%20TrackPresenter%20ClipPresenter%20GuiTimelineDraw%20GuiClipWidget%20GuiElementBoxWidget" MODIFIED="1680371742398" TEXT="Themenkomplex: GuiConnection">
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#19166e" CREATED="1611035931543" HGAP="54" ID="ID_936662203" MODIFIED="1698170758923" STYLE="bubble" TEXT="2023-3 abgeschlossen" VSHIFT="-4">
<edge COLOR="#3596a7" STYLE="sharp_linear" WIDTH="2"/>
<font ITALIC="true" NAME="SansSerif" SIZE="11"/>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1698169966766" ID="ID_285781159" LINK="file:///Lager/heim/devel/lumi/wiki/renderengine.html#PlaybackVerticalSlice%20RenderEngine%20Scheduler%20SchedulerWorker%20SchedulerMemory%20RenderActivity%20Player%20FrameDispatcher%20JobPlanningPipeline%20PlayProcess%20Rendering%20ProcNode%20NodeOperationProtocol" MODIFIED="1698170020932" TEXT="Themenkomples: Render-Engine">
<icon BUILTIN="pencil"/>
<node COLOR="#5b166e" CREATED="1611035555555" HGAP="81" ID="ID_152517956" MODIFIED="1611035586584" STYLE="bubble" TEXT="2023-10 aktiv" VSHIFT="28">
<edge COLOR="#eb1854" STYLE="sharp_linear" WIDTH="2"/>
<font ITALIC="true" NAME="SansSerif" SIZE="11"/>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1664631256231" ID="ID_967028256" MODIFIED="1664631546288" TEXT="Session: aktualisieren!">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      hier stammt die Darstellung im Wesentlichen aus den ersten Jahren, ist aber mit dem teilweisen Re-Design verflochten &#10233; verwirrende Mix aus &#252;berholten Ansichten und Konzepten f&#252;r die <i>ferne Zukunft</i>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="hourglass"/>
</node>
</node>
<node CREATED="1664631363943" ID="ID_879637950" MODIFIED="1664631546287" STYLE="fork" TEXT="Doxygen">
<node CREATED="1664631381728" ID="ID_479695439" MODIFIED="1664631546287" TEXT="&#xdc;bersichten"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1698171927842" FOLDED="true" HGAP="31" ID="ID_198610920" MODIFIED="1698184363431" TEXT="Design-Process" VSHIFT="6">
<edge COLOR="#605376"/>
<icon BUILTIN="hourglass"/>
<node CREATED="1698171979378" ID="ID_796194362" MODIFIED="1698172058077" STYLE="fork" TEXT="Stand">
<icon BUILTIN="info"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1698172064496" ID="ID_806570820" MODIFIED="1698172243263" TEXT="grunds&#xe4;tzlich g&#xfc;lig &#x2014; aber nicht weitergef&#xfc;hrt">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Ich betrachte den Inhalt der RfC grunds&#228;tzlich als g&#252;ltig und bindend. Aber seitdem ich alleine am Projekt arbeite, ist dieses Format nicht mehr sinnvoll, denn ich diskutiere nun <i>pro forma</i>&#160;mit mir selber, daf&#252;r aber in einer viel gr&#246;&#223;eren Tiefe
    </p>
  </body>
</html></richcontent>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1698172250767" ID="ID_1281403924" MODIFIED="1698172264756" TEXT="einige Entscheidungen haben sich &#xfc;berholt">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1698171979378" ID="ID_48382170" MODIFIED="1698172023477" STYLE="fork" TEXT="Aufgaben">
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1698172278156" ID="ID_1995120982" MODIFIED="1698184355670" TEXT="obsolete und irref&#xfc;hrende Entscheidungen widerrufen">
<icon BUILTIN="bell"/>
<node COLOR="#338800" CREATED="1698172333812" ID="ID_1019479183" MODIFIED="1698172336941" TEXT="Lua">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1698172352697" ID="ID_1644963280" MODIFIED="1698184315004" TEXT="C-Interfaces">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1698172345323" ID="ID_571636963" MODIFIED="1698184317754" TEXT="Data Backend">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1698172411954" ID="ID_1558596731" MODIFIED="1698172528830" TEXT="fragw&#xfc;rdige Entscheidungen kennzeichnen">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1698172656660" ID="ID_1707252412" MODIFIED="1698172656660" TEXT="Distributed Development Framework"/>
<node CREATED="1698173627465" ID="ID_510133323" MODIFIED="1698173636930" TEXT="Config System Draft"/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1698172530866" ID="ID_1104963418" MODIFIED="1698172543633" TEXT="zus&#xe4;tzliche Kategorie: &#xbb;obsolete&#xab;">
<icon BUILTIN="flag-pink"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1698172315878" ID="ID_411928990" MODIFIED="1698172323414" TEXT="neue Organisationsstruktur &#xfc;berlegen">
<icon BUILTIN="hourglass"/>
</node>
</node>
<node CREATED="1698171979378" ID="ID_957531177" MODIFIED="1698172030504" STYLE="fork" TEXT="Diskussion"/>
</node>
<node CREATED="1664631398891" ID="ID_1010017470" MODIFIED="1664631559120" STYLE="fork" TEXT="LumiDok">
<edge COLOR="#8e6074" STYLE="linear" WIDTH="thin"/>
<node CREATED="1664631418128" HGAP="13" ID="ID_1118945815" MODIFIED="1698171900334" TEXT="Stand" VSHIFT="-4">
<font NAME="SansSerif" SIZE="15"/>
<icon BUILTIN="info"/>
<node COLOR="#435e98" CREATED="1664632273717" ID="ID_546161915" MODIFIED="1681004578460" TEXT="10/22: master/online deutlich zur&#xfc;ckgefallen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Aber es gibt auch stellenweise &#220;berarbeitungen (von Benny) auf der offizielen Linie
    </p>
    <p>
      Im Zuge der laufenden Entwicklung wurden...
    </p>
    <ul>
      <li>
        Seiten umbenannt
      </li>
      <li>
        neue Bereiche begonnen
      </li>
    </ul>
    <p>
      <i><font color="#4a025e">alles dies ist noch nicht auf dem offiziellen &quot;dok&quot;-Branch und deshalb noch nicht publiziert! </font></i>
    </p>
    <p>
      <font color="#b81d10" size="2">&#10233; lokal/gui auschecken und Dok-Site auf localhost verwenden</font>
    </p>
  </body>
</html></richcontent>
<font NAME="SansSerif" SIZE="11"/>
<icon BUILTIN="messagebox_warning"/>
<node COLOR="#338800" CREATED="1681004586743" ID="ID_1584303708" MODIFIED="1681006360117" TEXT="Merge 4.4.23 (automatisch)">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...ging v&#246;llig problemlos, und das Resultat/Changeset sieht plausibel aus...
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1681006362667" ID="ID_1972975901" MODIFIED="1681006379321" TEXT="nochmal pr&#xfc;fen ob es &#xc4;nderungen von Benny gab...?">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1664632408539" ID="ID_5303509" MODIFIED="1664632540359" TEXT="Link-Generator notwendig">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <ul>
      <li>
        das ist das gr&#246;&#223;te Impediment, weshalb Informationen nicht aus dem TidlyWiki migrieren k&#246;nnen
      </li>
      <li>
        wir hatten das vor Jahren bereits besprochen, und Christian hat eine &#187;Link-Farm&#171; vorgeschlagen
      </li>
      <li>
        Benny wollte sich darum k&#252;mmern, hat das aber<i>&#160;&#160;vergessen/verdr&#228;ngt</i>
      </li>
      <li>
        ich selber k&#246;nnte das in ca. 4 Tagen auf die Beine stellen
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="hourglass"/>
</node>
</node>
<node CREATED="1664631424771" ID="ID_30685930" MODIFIED="1664631559117" TEXT="User"/>
<node CREATED="1664631468424" ID="ID_206416201" MODIFIED="1664631559117" TEXT="Design">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1698170208238" ID="ID_966155424" MODIFIED="1698170215726" TEXT="Engine">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1698170224708" ID="ID_484068209" MODIFIED="1698170248746" TEXT="das inzwischen entwickelte Design dokumentieren">
<icon BUILTIN="bell"/>
</node>
</node>
</node>
<node CREATED="1664631471329" ID="ID_1395212182" MODIFIED="1664631559117" TEXT="Technical">
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1698170277259" FOLDED="true" ID="ID_800254076" MODIFIED="1698184383476" TEXT="Vault">
<icon BUILTIN="bell"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1698170303291" ID="ID_1001821609" MODIFIED="1698170316232" TEXT="Scheduler">
<icon BUILTIN="clanbomber"/>
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1698170319519" ID="ID_1106925794" MODIFIED="1698170341404" TEXT="hier stehen noch uralte &#xbb;implementation ideas&#xab;">
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#338800" CREATED="1698170383474" ID="ID_1329793697" MODIFIED="1698184325482" TEXT="wenigstens schon mal den neuen Fokus anzeigen">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1698173836465" ID="ID_1042892141" MODIFIED="1698173844663" TEXT="Config Loader">
<icon BUILTIN="stop-sign"/>
<node CREATED="1698173846842" ID="ID_164165293" MODIFIED="1698173857352" TEXT="das ist ein &#xbb;draft&#xab;"/>
<node CREATED="1698173858072" ID="ID_9681986" MODIFIED="1698173867195" TEXT="er wurde nie weitergef&#xfc;hrt"/>
<node CREATED="1698173867807" ID="ID_205034475" MODIFIED="1698173874138" TEXT="ich m&#xf6;chte in eine andere Richtung gehen"/>
<node COLOR="#338800" CREATED="1698173877046" ID="ID_111961244" MODIFIED="1698184333391" TEXT="Beschlu&#xdf;: in RfC umwandeln">
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node CREATED="1698170542481" ID="ID_417122450" MODIFIED="1698170545532" TEXT="Lowlevel">
<node COLOR="#338800" CREATED="1698170546569" FOLDED="true" ID="ID_1509961741" MODIFIED="1698184426790" TEXT="&#xfc;bersch&#xfc;ssig: Scheduler">
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1698170565262" ID="ID_1059255666" MODIFIED="1698184395634" TEXT="da ist noch eine Seite angelegt">
<icon BUILTIN="messagebox_warning"/>
</node>
<node COLOR="#5b280f" CREATED="1698170598506" ID="ID_694594892" MODIFIED="1698170711735" TEXT="Scheduler als reiner Backend-Service">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Das ist eine Sichtweise auf die Architektur, die ich inzwischen &#252;berwunden habe
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="stop-sign"/>
</node>
<node COLOR="#338800" CREATED="1698184396962" ID="ID_188360452" MODIFIED="1698184421620" TEXT="Seite ersatzlos entfernt">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1698184414015" ID="ID_853555332" MODIFIED="1698184421199" TEXT="Backend-Text gek&#xfc;rzt">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node CREATED="1664631954289" HGAP="36" ID="ID_20498937" MODIFIED="1698170299487" TEXT="GTK" VSHIFT="1">
<node CREATED="1664631960544" ID="ID_366289631" MODIFIED="1664631964860" TEXT="Layout"/>
<node CREATED="1664631965465" ID="ID_417783849" LINK="http://localhost:8888/documentation/technical/stage/style/index.html" MODIFIED="1664658971571" TEXT="Styling">
<linktarget COLOR="#684e97" DESTINATION="ID_417783849" ENDARROW="Default" ENDINCLINATION="-182;50;" ID="Arrow_ID_321858822" SOURCE="ID_782976986" STARTARROW="None" STARTINCLINATION="143;23;"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1664664177964" ID="ID_1856995238" LINK="http://localhost:8888/documentation/technical/stage/style/Navigation.html" MODIFIED="1664664211512" TEXT="Navigation">
<icon BUILTIN="hourglass"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#2f37ba" CREATED="1664664350429" ID="ID_24552371" MODIFIED="1664664420238" TEXT="(wartet auf Implementierung)">
<font NAME="SansSerif" SIZE="10"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#2f37ba" CREATED="1664664350429" ID="ID_1684238945" MODIFIED="1664664439785" TEXT="(und ausgearbeitetes Konzept)">
<font NAME="SansSerif" SIZE="10"/>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1664664188674" ID="ID_1825141058" LINK="http://localhost:8888/documentation/technical/stage/style/PropEditor.html" MODIFIED="1664664220307" TEXT="Property Edit">
<icon BUILTIN="hourglass"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#2f37ba" CREATED="1664664350429" ID="ID_1138451370" MODIFIED="1664664381842" TEXT="(wartet auf Konzept)">
<font NAME="SansSerif" SIZE="10"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1664664224732" ID="ID_1724606978" LINK="http://localhost:8888/documentation/technical/stage/style/Timeline.html" MODIFIED="1664664245948" TEXT="Timeline">
<icon BUILTIN="bell"/>
<node COLOR="#338800" CREATED="1664664261120" ID="ID_1963212373" MODIFIED="1679088751661" TEXT="synthetische Elemente dokumentieren">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1664664271055" ID="ID_1800483629" MODIFIED="1679088753286">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Beispiele zur Verwendung
    </p>
    <p>
      der Styles dokumentieren
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#690f14" CREATED="1664664482451" ID="ID_1140150901" MODIFIED="1664664499990" TEXT="allgemein">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
<node CREATED="1664664505903" ID="ID_998661397" MODIFIED="1664664592880" TEXT="Info zu &quot;binary Themes&quot; woanders hin">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Diese Info hatte ich vor l&#228;ngerer Zeit mal &quot;aufgegabelt&quot; und sie wer der erste Content auf dieser Styling-Doku-Seite. Inzwischen hat sich der Scope verschoben, und sowas geh&#246;rt ehr in die CodeBase-Sektion
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1664664649375" ID="ID_1486988234" MODIFIED="1664664658299" TEXT="Details zum ElementBoxWidget">
<icon BUILTIN="pencil"/>
</node>
</node>
</node>
</node>
<node CREATED="1664664602615" HGAP="51" ID="ID_1014621671" MODIFIED="1664664615430" TEXT="Code Base" VSHIFT="7"/>
</node>
</node>
</node>
<node CREATED="1664631634178" ID="ID_679126801" MODIFIED="1664631636964" TEXT="Themen">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1664631986708" ID="ID_1854898414" MODIFIED="1664632010768" TEXT="coding news">
<icon BUILTIN="bell"/>
</node>
<node CREATED="1664632012297" ID="ID_241631213" MODIFIED="1664632016491" TEXT="Interaction Design"/>
<node CREATED="1664632040517" ID="ID_143213655" MODIFIED="1664632043864" TEXT="Interface Layout">
<node CREATED="1664632066418" ID="ID_782976986" MODIFIED="1664632244719" TEXT="style scheme">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      TODO: dokumentieren, wie das Lumiera-Interface ausgelegt und angeordnet wird, bis hinab zu den Details der Widget-Anordnung, damit ein Au&#223;enstehender im Stande ist, am Styling mitzuarbeiten...
    </p>
  </body>
</html></richcontent>
<arrowlink COLOR="#684e97" DESTINATION="ID_417783849" ENDARROW="Default" ENDINCLINATION="-182;50;" ID="Arrow_ID_321858822" STARTARROW="None" STARTINCLINATION="143;23;"/>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1681004448374" FOLDED="true" HGAP="14" ID="ID_1536537244" MODIFIED="1681004503408" TEXT="Theorie / allgemein" VSHIFT="5">
<edge COLOR="#5e537f"/>
<icon BUILTIN="bell"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1681004288570" ID="ID_641232618" MODIFIED="1681004362635">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Darstellung: <i>about Monads</i>
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Dezember 2017 ausgearbeitet und im TiddlyWiki vergraben.
    </p>
    <p>
      <i>bin baff... das hatte ich v&#246;llig vergessen</i>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
</node>
<node CREATED="1694377578353" HGAP="-45" ID="ID_1404856663" MODIFIED="1694377611360" TEXT=" Projekt-Navigation" VSHIFT="26">
<font NAME="SansSerif" SIZE="16"/>
<node CREATED="1694378331399" ID="ID_281226841" MODIFIED="1694378333684" TEXT="Themen">
<node CREATED="1522933444542" ID="ID_1027224176" MODIFIED="1694378339582" TEXT="aktiv">
<node CREATED="1522933577884" ID="ID_1298252635" MODIFIED="1694378889900" TEXT="Frame-Dispatch">
<icon BUILTIN="hourglass"/>
</node>
<node CREATED="1522933565157" ID="ID_651020600" MODIFIED="1694378892653" TEXT="Engine/Scheduler">
<icon BUILTIN="full-1"/>
</node>
<node CREATED="1522933604296" ID="ID_596148799" MODIFIED="1694378895861" TEXT="Node-Invocation">
<icon BUILTIN="full-2"/>
</node>
<node CREATED="1694378902482" ID="ID_31178603" MODIFIED="1694378907877" TEXT="Buffer/Output">
<icon BUILTIN="full-3"/>
</node>
<node CREATED="1522933545616" ID="ID_193999125" MODIFIED="1694378911464" TEXT="Fixture">
<icon BUILTIN="full-4"/>
</node>
</node>
<node COLOR="#2b719d" CREATED="1694378566113" ID="ID_793311152" MODIFIED="1694380068559" TEXT="abgelegt">
<icon BUILTIN="bookmark"/>
<node COLOR="#338800" CREATED="1522933640027" FOLDED="true" ID="ID_191198072" MODIFIED="1694378771954" TEXT="UI-Connection">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1522933746716" ID="ID_504819861" MODIFIED="1694378749220" TEXT="Dummy-Content">
<node COLOR="#338800" CREATED="1522933752939" FOLDED="true" ID="ID_58888775" MODIFIED="1561238386898" TEXT="DemoGuiRoundtrip">
<icon BUILTIN="button_ok"/>
<node CREATED="1522933935346" ID="ID_1197314745" MODIFIED="1557498707241" TEXT="Knopf sendet Signale"/>
<node CREATED="1522933947737" ID="ID_59789786" MODIFIED="1557498707241" TEXT="diese werden zu Commands"/>
<node CREATED="1522933955463" ID="ID_212135952" MODIFIED="1557498707241" TEXT="diese werden in Proc ausgef&#xfc;hrt"/>
<node CREATED="1522933964302" ID="ID_504912590" MODIFIED="1557498707241" TEXT="und senden Meldungen zur&#xfc;ck"/>
<node CREATED="1522933973965" ID="ID_34008801" MODIFIED="1561238382143" TEXT="...in das Benachrichtigungsfenster">
<arrowlink COLOR="#34a79a" DESTINATION="ID_463339540" ENDARROW="Default" ENDINCLINATION="355;0;" ID="Arrow_ID_636625875" STARTARROW="None" STARTINCLINATION="55;1;"/>
</node>
</node>
<node COLOR="#338800" CREATED="1522933859797" ID="ID_1381384508" MODIFIED="1694378732509" TEXT="Dummy-Population">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1522933880242" ID="ID_1851602883" MODIFIED="1561238124538" TEXT="automatisch beim Start">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1522933886401" ID="ID_1546164262" MODIFIED="1561238122259" TEXT="Pseudo-Session-Inhalte erfinden">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1522933899951" ID="ID_1191671954" MODIFIED="1561238123293" TEXT="in das UI hochschieben">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node CREATED="1522933913837" FOLDED="true" ID="ID_1879142349" MODIFIED="1557498707241" TEXT="Ziel: man sieht was">
<icon BUILTIN="ksmiletris"/>
<node CREATED="1561238128126" ID="ID_1016002524" MODIFIED="1679081150741" TEXT="wir arbeiten daran">
<arrowlink COLOR="#6971ce" DESTINATION="ID_567481580" ENDARROW="Default" ENDINCLINATION="450;38;" ID="Arrow_ID_1010232773" STARTARROW="None" STARTINCLINATION="124;16;"/>
<icon BUILTIN="smiley-oh"/>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1561238485225" ID="ID_1044507535" MODIFIED="1679081150741" TEXT="treibt die Entwicklung voran">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1522933624861" FOLDED="true" ID="ID_1008186406" MODIFIED="1694378934294" TEXT="Timeline-Widget">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1661448478272" ID="ID_235141959" MODIFIED="1661448487541" TEXT="Track-Body-Anzeige">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1661448488695" ID="ID_974534798" MODIFIED="1679081188802" TEXT="Track-Head-Anzeige">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1661448495494" ID="ID_1252888028" MODIFIED="1679081190899" STYLE="fork" TEXT="brauche ElementBox-Widget">
<font NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1679081210995" ID="ID_1146310558" MODIFIED="1694378785935" TEXT="Clip-Content-Anzeige">
<icon BUILTIN="hourglass"/>
<node CREATED="1679081221526" ID="ID_660855565" MODIFIED="1679081311771" TEXT="brauche Content-Renderer im ElementBoxWidget"/>
</node>
</node>
<node COLOR="#174f60" CREATED="1664058057316" FOLDED="true" ID="ID_1582660555" MODIFIED="1694378556588" TEXT="vergessen">
<icon BUILTIN="licq"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1679088360136" ID="ID_602432496" LINK="#ID_613160281" MODIFIED="1679088563026" TEXT="relatives Positionieren auf die &#xbb;Ruler&#xab; verallgemeinern">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      das ViewHook / CanvasHook-Konzept hat sich hervorragend bew&#228;hrt, und durch das zoom-metric-Mix-in gibt es auch bereits eine sehr elaborierte und robuste Implementierung f&#252;r alle Belange der temporalen Ausdehnung (horizontal). Allerdings funktionieren alle diese Basis-Implementierungen bisher nur f&#252;r den <i>eigentlichen Content </i>in der Timeline &#8212; ganz einfach weil ich noch nicht so recht wei&#223;, was es mit den &#187;Rulern&#171; so auf sich hat ....&#160;&#160;&#8987;
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="hourglass"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1664058236108" ID="ID_616634560" LINK="#ID_633007604" MODIFIED="1664058551602" TEXT="Design um den Display-Frame im Timeline-Layout">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Das Thema &#187;Layout-Steuerung in der Timeline&#171; lief aus dem Ruder (wie erwartet &#8212; warum soll's mir besser gehen, als Joel Holdsworth?). Ich habe dahinter aber ein Architektur-Problem identifiziert, n&#228;mlich da&#223; hier eine selbs-&#228;hnliche rekursive Struktur notwendig ist, welche aber mehrere separate Kontexte &#252;berspannt. Daf&#252;r habe ich die Entit&#228;t <font face="Monospaced" size="3">DisplayFrame</font>&#160; erfunden, und die Idee war, diesen als Kristallisationskern zu verwenden, um die gesamte Struktur um das Timeline-Layout zu reinigen. Leider konnte ich das aber (Stand 9/2022) nicht weiterf&#252;hren, weil ich nun das GUI wieder verlassen mu&#223;, um an der RenderEngine weiterzuarbeiten...
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="hourglass"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1664058723731" ID="ID_14178897" LINK="#ID_838803024" MODIFIED="1664058890277" TEXT="generisches Konzept zur Zoom/View-Steuerung">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ....dieses Thema sollte generisch gel&#246;st werden, und dann weiter entwickelt in Richtung &#187;Interaction Design&#171; &#8212; also mit einem aktuellen Fokus verbunden, und mit jeweils eigener Historie pro Fokus, so da&#223; man in die verschiedenen Fokus-Zonen &#252;ber gut etablierte &quot;Leitern&quot; wieder einsteigen k&#246;nnte. Leider mu&#223; ich (Stand 9/2022) das GUI nun wieder verlassen, und es ist ganz und gar ungekl&#228;rt, unter welchen Umst&#228;nden dieses zentrale Thema wieder aufgenommen werden kann...
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="hourglass"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1679086888811" ID="ID_1529439049" LINK="#ID_226245696" MODIFIED="1679087074074" TEXT="GUI-Start ist noch nicht ganz &#x201e;sauber&#x201c;">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Es gibt immer noch Zweifel ob gewisser Race-Conditions....
    </p>
    <p>
      Diese h&#228;ngen jedoch eng mit dem Design des Subsystem-Runners zusammen, welches zwar grunds&#228;tzlich in Ordnung ist, aber alles in allem &#8222;etwas zu knapp gehalten&#8220;: man sollte hier explizit und fein differenziert die Lebenszyklus-Phasen ausformulieren, denn dann ist man nicht mehr von Subtilit&#228;ten der Implementierungs-Reihenfolge abh&#228;ngig
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="hourglass"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1664059040648" ID="ID_335528916" LINK="#ID_1734927969" MODIFIED="1664059164915" TEXT="GTK+GIO : Interna dokumentieren">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...beim Herausl&#246;sen aus dem Gnome-Application / GIO-Framework habe ich detailiert die Strukturen um die Main-Loop untersucht und verstanden. Leider stehen diese Infos bisher (Stand 9/2022) nur in meiner Mindmap; ich sollte eine eigene Kategorie in der Webseite/Dokumentation schaffen, in der solche Einsichten aufgezeichnet werden k&#246;nnen...
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="hourglass"/>
</node>
</node>
<node CREATED="1694378465084" ID="ID_1594499392" MODIFIED="1694379005067" TEXT="richtungweisend">
<font NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="back"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1694383674246" ID="ID_1591874652" LINK="https://issues.lumiera.org/ticket/220" MODIFIED="1694476857845" TEXT="#220 UI-Navigation">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1694380094308" ID="ID_1068060245" LINK="https://issues.lumiera.org/ticket/1163" MODIFIED="1694476845999" TEXT="#1163 Property-Grid-UI">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1694440595685" ID="ID_841799467" LINK="https://issues.lumiera.org/ticket/1110" MODIFIED="1694476835034" TEXT="#1110 Editing essentials">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1694380286098" ID="ID_1748072159" LINK="https://issues.lumiera.org/ticket/569" MODIFIED="1694614891153" TEXT="#569 persisted Session contents">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1694559545723" ID="ID_629586694" LINK="https://issues.lumiera.org/ticket/540" MODIFIED="1694559560640" TEXT="#540 Session mutation handling">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1694381430002" ID="ID_1593944332" LINK="https://issues.lumiera.org/ticket/332" MODIFIED="1694569509484" TEXT="#332 Properties of Placement">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1694538941432" ID="ID_1176744578" MODIFIED="1694538966264" TEXT="Ein Knotenpunkt f&#xfc;r die weitere Navigation"/>
<node CREATED="1694538967995" ID="ID_1316978116" MODIFIED="1694539224965" TEXT="grundlegende Entscheidungen stehen aus">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <ul>
      <li>
        was wollen wir mit den Placements und wie weit soll das reichen?
      </li>
      <li>
        wie wird mit den &#187;Dimensionen&#171; im Placement umgegangen? (&#10230; siehe Replantor-Konzept)
      </li>
      <li>
        k&#246;nnen wir den Weg zu CQRS / Event-Sourcing gehen?
      </li>
    </ul>
  </body>
</html></richcontent>
</node>
<node CREATED="1694538987113" ID="ID_1939898671" MODIFIED="1694539084448" TEXT="Ticket liegt sinnvoll in der Gesamtstruktur">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Habe mir lange die vielen Tickets von damals angeschaut:
    </p>
    <ul>
      <li>
        in der Tat, dieses Ticket steht an einer Schl&#252;sselstelle, und ist korrekt mit anderen Themen verdrahtet
      </li>
      <li>
        es besteht eine Wechselbeziehung zu der Frage, <b>wie das Modell &#252;berhaupt manipuliert wird</b>
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="yes"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1694380315526" ID="ID_1356301575" LINK="https://issues.lumiera.org/ticket/1234" MODIFIED="1694626426115" TEXT="#1234 Event-Log Undo and Replay">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1694383812004" ID="ID_1587871308" LINK="https://issues.lumiera.org/ticket/1327" MODIFIED="1694786912781" TEXT="#1327 Event and Diff-Emanation">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1694381118468" ID="ID_708575663" LINK="https://issues.lumiera.org/ticket/1224" MODIFIED="1694786921016" TEXT="#1224 Layered Configuration">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1694382811290" ID="ID_1356465047" LINK="https://issues.lumiera.org/ticket/1328" MODIFIED="1694786939453" TEXT="#1328 Layered Automation">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1694385302821" ID="ID_77053195" LINK="https://issues.lumiera.org/ticket/1329" MODIFIED="1694789360186" TEXT="#1329 Model Versioning">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1694383951714" ID="ID_454169523" LINK="https://issues.lumiera.org/ticket/1330" MODIFIED="1694789405272" TEXT="#1330 Stream-Type mappinng">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1694384039478" ID="ID_233873714" LINK="https://issues.lumiera.org/ticket/1332" MODIFIED="1694790385237" TEXT="#1332 Render-Path building">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1694384205992" ID="ID_1661138287" LINK="https://issues.lumiera.org/ticket/1334" MODIFIED="1694790431628" TEXT="#1334 Masking / Overlaying">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1694385070130" ID="ID_1688849669" LINK="https://issues.lumiera.org/ticket/1335" MODIFIED="1694791940153" TEXT="#1335 Decision knowledge">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1694385418499" ID="ID_1434051296" LINK="https://issues.lumiera.org/ticket/1336" MODIFIED="1694791976582" TEXT="#1336 Rules binding">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1694386708097" ID="ID_1746587131" LINK="https://issues.lumiera.org/ticket/1212" MODIFIED="1694792001500" TEXT="#1212 Extension Concept">
<icon BUILTIN="flag-yellow"/>
<icon BUILTIN="clanbomber"/>
</node>
</node>
<node CREATED="1694385500289" ID="ID_1044423025" MODIFIED="1694385503694" TEXT="weiterzuf&#xfc;hren">
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1694385527724" ID="ID_256793275" MODIFIED="1694795175429" TEXT="#1081 UI-State persistence">
<icon BUILTIN="hourglass"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1694385587919" ID="ID_703531382" MODIFIED="1694795221010" TEXT="#503 Asset-Management">
<icon BUILTIN="hourglass"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1694386535160" ID="ID_784102441" MODIFIED="1694795393211" TEXT="#1016 GUI Timeline Layout-Structure">
<icon BUILTIN="hourglass"/>
<node CREATED="1694795395057" ID="ID_1835025444" MODIFIED="1694795396478" TEXT="Track-Head UI"/>
<node CREATED="1694795401834" ID="ID_1693797726" MODIFIED="1694795408588" TEXT="Overview Rulers"/>
<node CREATED="1694795411496" ID="ID_560488135" MODIFIED="1694795415392" TEXT="Expanding / Collapsing"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1696109921291" ID="ID_853481552" LINK="https://issues.lumiera.org/ticket/1341" MODIFIED="1696110190077" TEXT="#110 und #1341 Clarify Error handling scheme">
<linktarget COLOR="#fdcfce" DESTINATION="ID_853481552" ENDARROW="Default" ENDINCLINATION="-959;56;" ID="Arrow_ID_1749710199" SOURCE="ID_1320347721" STARTARROW="None" STARTINCLINATION="-1130;86;"/>
<linktarget COLOR="#fdcfce" DESTINATION="ID_853481552" ENDARROW="Default" ENDINCLINATION="-959;56;" ID="Arrow_ID_275745687" SOURCE="ID_1712639748" STARTARROW="None" STARTINCLINATION="-1085;66;"/>
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1694440562933" ID="ID_1529688085" LINK="https://issues.lumiera.org/ticket/1338" MODIFIED="1694795034628" TEXT="#1338 Non-standard Play-processing">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1694386540703" ID="ID_1995627499" MODIFIED="1696110147305" TEXT="#1188 Placement-GUI">
<icon BUILTIN="hourglass"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1694386944106" ID="ID_1974621116" MODIFIED="1694792485209" TEXT="#1237 GUI content outlining">
<icon BUILTIN="hourglass"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1694386573379" ID="ID_1965169593" MODIFIED="1694792591891" TEXT="#12 Time / Timecode-Framework">
<icon BUILTIN="hourglass"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1694386621381" ID="ID_58669033" MODIFIED="1694792366648" TEXT="#968 Pipeline / Iterator-Framework + Concepts">
<icon BUILTIN="hourglass"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1694386639133" ID="ID_1029685243" MODIFIED="1694792112011" TEXT="#1248 Switch to C++ Module System">
<icon BUILTIN="hourglass"/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1694386905223" ID="ID_1890460672" MODIFIED="1694792544531" TEXT="#667 Packaging / CI / CD">
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
<node CREATED="1694379030632" ID="ID_516134923" MODIFIED="1694379033099" TEXT="Fokus">
<node CREATED="1694379034207" ID="ID_1212821837" MODIFIED="1694379055033" TEXT="lauff&#xe4;hige Engine"/>
<node CREATED="1694379057193" ID="ID_1016509908" MODIFIED="1694379067555" TEXT="minimale Integration"/>
</node>
<node CREATED="1694379093656" ID="ID_1996353692" MODIFIED="1694379098256" TEXT="langfristig...">
<node CREATED="1694379583808" ID="ID_2903411" MODIFIED="1694379586365" TEXT="essentiell"/>
<node CREATED="1694379587146" ID="ID_576350272" MODIFIED="1694379589419" TEXT="anzubahnen"/>
</node>
</node>
</node>
<node CREATED="1439176872457" HGAP="15" ID="ID_355008543" MODIFIED="1557498707241" POSITION="left" TEXT="Plattform" VSHIFT="41">
<icon BUILTIN="go"/>
<node CREATED="1561736857971" ID="ID_662811521" MODIFIED="1561736871424" TEXT="Dependencies">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1561736649007" FOLDED="true" ID="ID_1295139073" MODIFIED="1583523610926" TEXT="GTK in Debian">
<linktarget COLOR="#355ad5" DESTINATION="ID_1295139073" ENDARROW="Default" ENDINCLINATION="-816;0;" ID="Arrow_ID_1376879556" SOURCE="ID_1920301340" STARTARROW="None" STARTINCLINATION="-753;0;"/>
<icon BUILTIN="info"/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1561733634234" ID="ID_283837231" MODIFIED="1561734827667" TEXT="libcairomm-1.0-dev">
<node CREATED="1561734539908" ID="ID_1171069121" MODIFIED="1561734577386" TEXT="Stretch(stable): 1.12.0-1+b1"/>
<node CREATED="1561734579119" ID="ID_261683999" MODIFIED="1561734596480" TEXT="Buster(testing): 1.12.2-4"/>
<node CREATED="1561734793676" ID="ID_124869066" MODIFIED="1561734804673" TEXT="Abh&#xe4;ngigkeiten identisch: libcairo2-dev (&gt;= 1.10.0), libsigc++-2.0-dev (&gt;= 2.5.1)"/>
</node>
<node CREATED="1561734821281" ID="ID_1548932504" MODIFIED="1561734822892" TEXT="libcairo2-dev">
<node CREATED="1561736106556" ID="ID_447781913" MODIFIED="1561736112145" TEXT="Stretch(stable): 1.14.8-1"/>
<node CREATED="1561736119157" ID="ID_223457676" MODIFIED="1561736124491" TEXT="Buster(testing): 1.16.0-4"/>
</node>
<node CREATED="1561736244241" ID="ID_21972769" MODIFIED="1561736247507" TEXT="libgtkmm-3.0-dev">
<node CREATED="1561736106556" ID="ID_1654459671" MODIFIED="1561736267242" TEXT="Stretch(stable): 3.22.0-1"/>
<node CREATED="1561736119157" ID="ID_302515222" MODIFIED="1561736292712" TEXT="Buster(testing): 3.24.0-2"/>
<node CREATED="1561736364329" ID="ID_604772455" MODIFIED="1561736371506" TEXT="Abh&#xe4;ngigkeiten nahezu identisch">
<node CREATED="1561736372871" ID="ID_1255591782" MODIFIED="1561736389392" TEXT="GTK: libgtk-3-dev (&gt;= 3.22.0)"/>
<node CREATED="1561736412505" ID="ID_1655385358" MODIFIED="1561736418460" TEXT="GLib">
<node CREATED="1561736494237" ID="ID_932039111" MODIFIED="1561736613896" TEXT="libglibmm-2.4-dev (&gt;= 2.54.0) -- Buster: 2.58.0-2"/>
<node CREATED="1561736533682" ID="ID_1029564694" MODIFIED="1561736602657" TEXT="libglibmm-2.4-dev (&gt;= 2.49.1) -- Stretch: 2.50.0-1"/>
</node>
<node CREATED="1561736419592" ID="ID_1821608630" MODIFIED="1561736436441" TEXT="Cairo: libcairomm-1.0-dev (&gt;= 1.12.0)"/>
<node CREATED="1561736440629" ID="ID_851030197" MODIFIED="1561736454086" TEXT="Pango: libpangomm-1.4-dev (&gt;= 2.38.2)"/>
</node>
</node>
<node CREATED="1561736766454" ID="ID_1746397592" MODIFIED="1561736768899" TEXT="libgtk-3-dev">
<node CREATED="1561736106556" ID="ID_957399714" MODIFIED="1561736786976" TEXT="Stretch(stable): 3.22.11-1"/>
<node CREATED="1561736119157" ID="ID_1252132002" MODIFIED="1561736803582" TEXT="Buster(testing): 3.24.5-1"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1583523613062" ID="ID_601841679" MODIFIED="1583523726831" TEXT="f&#xfc;r Debian/Buster pr&#xfc;fen und aktualisieren">
<linktarget COLOR="#c35b60" DESTINATION="ID_601841679" ENDARROW="Default" ENDINCLINATION="53;0;" ID="Arrow_ID_198244235" SOURCE="ID_1032664307" STARTARROW="None" STARTINCLINATION="53;0;"/>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node CREATED="1583523694636" HGAP="56" ID="ID_446319704" MODIFIED="1583523704860" TEXT="Build-Umgabung" VSHIFT="6">
<node COLOR="#338800" CREATED="1583523705722" ID="ID_1278670650" MODIFIED="1583523709609" TEXT="Eclipse-Projekt">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1583523710795" ID="ID_1032664307" MODIFIED="1583523732513" TEXT="wichtige Abh&#xe4;ngigkeiten im Quellcode">
<arrowlink COLOR="#c35b60" DESTINATION="ID_601841679" ENDARROW="Default" ENDINCLINATION="53;0;" ID="Arrow_ID_198244235" STARTARROW="None" STARTINCLINATION="53;0;"/>
<icon BUILTIN="flag-yellow"/>
</node>
<node CREATED="1689294635406" FOLDED="true" HGAP="23" ID="ID_1624761863" MODIFIED="1696182854609" TEXT="Test/Debug" VSHIFT="35">
<cloud COLOR="#e4d4ac"/>
<icon BUILTIN="info"/>
<node CREATED="1696182724524" ID="ID_1871189508" MODIFIED="1696182799932" TEXT="Test-parameter">
<node CREATED="1696182751233" ID="ID_1536557329" MODIFIED="1696182765784" TEXT="target/test-suite &lt;TestKlasse&gt;"/>
<node CREATED="1696182767484" ID="ID_776777098" MODIFIED="1696182788837" TEXT="scons check TESTSUITES=&lt;substring-match&gt;"/>
<node CREATED="1696182802127" ID="ID_746155609" MODIFIED="1696182846274" TEXT="Resource-limits &#xd83e;&#xdc32; test.conf">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1689294864822" ID="ID_1556429085" MODIFIED="1689294870249" TEXT="NoBug">
<node CREATED="1689294871597" ID="ID_1116343087" MODIFIED="1689294877880" TEXT="Logging-Tracing">
<node CREATED="1689294901089" ID="ID_249859430" MODIFIED="1689294914759" TEXT="export NOBUG_LOG=debugging:WARN,logging:INFO,test:TRACE,diff:TRACE,command:TRACE">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node CREATED="1689951616772" FOLDED="true" ID="ID_1731970825" MODIFIED="1689951678536" TEXT="Diagnose-Patches">
<icon BUILTIN="list"/>
<node CREATED="1689951371503" ID="ID_558083096" MODIFIED="1689951667311" TEXT="Diagnose BlockFlow-Verhalten">
<arrowlink COLOR="#5366b8" DESTINATION="ID_1170043916" ENDARROW="Default" ENDINCLINATION="-302;546;" ID="Arrow_ID_718336697" STARTARROW="None" STARTINCLINATION="-1231;101;"/>
<icon BUILTIN="info"/>
<node CREATED="1689951419600" ID="ID_738226800" MODIFIED="1689951473750">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <u>Bezug</u>: Changeset <font face="Monospaced" color="#704ea7">bf35ae0</font>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1689951480271" ID="ID_718912155" MODIFIED="1689951540442">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      als Patch <font size="1">(Tag)</font>&#160;<b>dump.blockFlow</b>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1689951551670" ID="ID_1562067193" MODIFIED="1689951565361" TEXT="BlockFlow_test damit ausf&#xfc;hren">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1439176875682" HGAP="47" ID="ID_1487331591" MODIFIED="1582315396874" TEXT="Referenzplattform" VSHIFT="60">
<icon BUILTIN="prepare"/>
<node COLOR="#435e98" CREATED="1439176875682" FOLDED="true" ID="ID_263510975" MODIFIED="1581813331909" TEXT="Debian/Jessie">
<edge COLOR="#648f70" STYLE="linear"/>
<icon BUILTIN="licq"/>
<node CREATED="1439176890840" FOLDED="true" ID="ID_99751679" MODIFIED="1561237091609" TEXT="Probleme">
<icon BUILTIN="button_ok"/>
<node CREATED="1439176900293" ID="ID_972499182" MODIFIED="1557498707241" TEXT="Linker rpath $ORIGIN">
<icon BUILTIN="button_ok"/>
<node CREATED="1439593020264" ID="ID_1565713533" LINK="https://sourceware.org/bugzilla/show_bug.cgi?id=16936" MODIFIED="1557498707241">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      bekannter Bug <b>binutils</b>&#160;<font color="#c72011">#16936</font>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1439593578558" ID="ID_808711591" LINK="http://issues.lumiera.org/ticket/965" MODIFIED="1557498707241">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Lumiera-Ticket <font color="#90011d">#965</font>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1439593646645" ID="ID_633732119" MODIFIED="1557498707241">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      gel&#246;st in&#160;<font color="#4c1383">4e8e63ebe</font>
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...man &quot;hilft&quot; dem Linker mit
    </p>
    <p style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; text-indent: 0px">
      &quot;-Wl,-rpath-link=target/modules&quot;
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#338800" CREATED="1439176912636" ID="ID_1261107088" MODIFIED="1561237078734" TEXT="failed tests">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      laufen wieder alle
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
<node CREATED="1439176982698" HGAP="59" ID="ID_1313800263" MODIFIED="1557498707241" TEXT="Beobachtung: Meldungen im journal" VSHIFT="2"/>
<node CREATED="1439176948063" HGAP="54" ID="ID_885669922" MODIFIED="1557498707241" TEXT="5 Thread/Parallel" VSHIFT="1">
<node CREATED="1439566266701" ID="ID_525193086" MODIFIED="1557498707241" TEXT="h&#xe4;ngt mit ulimit zusammen">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1439566274091" ID="ID_589175513" MODIFIED="1557498707241" TEXT="ohne ulimit gehts">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      test.sh Zeile 138
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1439566868460" ID="ID_1483801405" MODIFIED="1557498707241" TEXT="Untersuchung">
<node CREATED="1439566872203" ID="ID_1412884783" MODIFIED="1557498707241" TEXT="ulimit -T funktioniert nicht">
<node CREATED="1439566882418" ID="ID_267430691" MODIFIED="1557498707241" TEXT="bekanntes Problem"/>
<node CREATED="1439566886513" ID="ID_439373884" LINK="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=724461" MODIFIED="1557498707241">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Debian-Bug <font color="#9b0226">#724461</font>
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1439588367804" ID="ID_369587621" MODIFIED="1557498707241">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      nebenbei <i>ohweh:</i>
    </p>
    <p>
      ulimit -t 1 ist wirkungslos
    </p>
  </body>
</html></richcontent>
<node CREATED="1439592731687" ID="ID_404027904" MODIFIED="1557498707241">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Christian:&#160;&#160;bash -c &quot;ulimit -t 1; while :; do :; done&quot;
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1439592774041" ID="ID_1425557829" MODIFIED="1557498707242" TEXT="ist reine CPU-Zeit">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      und wir verbringen unsere Zeit mit contention
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
</node>
<node CREATED="1439176927657" ID="ID_145666096" MODIFIED="1557498707242" TEXT="EntryID">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ist klar, hab ich gebrochen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
<node CREATED="1439608908133" ID="ID_1142031172" MODIFIED="1557498707242" TEXT="Problem mit der Hash-Funktion"/>
<node CREATED="1439609043316" ID="ID_523440203" MODIFIED="1557498707242" TEXT="hatte ich schon mal untersucht"/>
<node CREATED="1439608917061" ID="ID_1747491586" LINK="http://issues.lumiera.org/ticket/587" MODIFIED="1557498707242">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      siehe Ticket <font color="#991130">#587</font>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1439609055443" ID="ID_794021326" MODIFIED="1557498707242" TEXT="Problem hat sich versch&#xe4;rft">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Kollisionen jetzt bereits nach 4000 lfd. Nummern
    </p>
    <p>
      Vorher hatte ich erste Kollisionen nach 25000 Nummern
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1439609098853" ID="ID_1375367812" MODIFIED="1557498707242">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      erinnere mich an den
    </p>
    <p>
      guten alten &quot;Knuth-Trick&quot;
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1439609127137" ID="ID_46539031" MODIFIED="1557498707242">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      wow: es gen&#252;gt,
    </p>
    <p>
      die letzten beiden Zeichen mit der Knuth-Konstante zu spreizen,
    </p>
    <p>
      und ich komme locker auf 100000 Nummern ohne Kollision
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1439176963604" ID="ID_1448738464" MODIFIED="1561237061397" TEXT="test-lib nicht zu debuggern">
<icon BUILTIN="button_ok"/>
<node CREATED="1439177141197" FOLDED="true" ID="ID_1753441069" MODIFIED="1561237041546" TEXT="Segfault in GDB">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Aug 10 04:51:39 flaucher kernel: gdb[8234]: segfault at 7ffe3fa79f50 ip 0000000000718b95 sp 00007ffe3fa79f40 error 6 in gdb[400000+574000]
    </p>
    <p>
      Aug 10 04:51:39 flaucher kernel: traps: test-suite[8249] trap int3 ip:7ffff7deb241 sp:7fffffffe5c8 error:0
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1439477348298" ID="ID_1127859836" MODIFIED="1557498707242" TEXT="heruntergedampft auf einen Aufruf">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1439491824537" ID="ID_822305366" MODIFIED="1557498707242">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      function gebunden an ein lambda
    </p>
    <p>
      wobei ein Argument-Typ als vom Template-Argument
    </p>
    <p>
      der umschlie&#223;enden Funktion aufgegriffen wird
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1439492258423" ID="ID_1184070545" MODIFIED="1557498707242" TEXT="Plan">
<node CREATED="1439492266470" ID="ID_343206049" MODIFIED="1557498707242" TEXT="reproduzieren auf einer sauberen VM">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1439492277444" ID="ID_351705498" LINK="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=795445" MODIFIED="1557498707242">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Bugreport f&#252;r Debian/Jessie <font color="#e02f0a">#795445</font>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1439492285635" ID="ID_1216081677" MODIFIED="1557498707242" TEXT="gdb-Version untersuchen">
<node CREATED="1439516472396" ID="ID_1130713450" MODIFIED="1557498707242" TEXT="backports">
<node CREATED="1439516512684" ID="ID_1963171277" MODIFIED="1557498707242">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Git: debBild/<b>Gdb_DEB.git</b>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1439516477008" ID="ID_956982844" MODIFIED="1557498707242" TEXT="Ver 7.8.2">
<icon BUILTIN="button_ok"/>
<node CREATED="1439516495534" ID="ID_228349393" MODIFIED="1557498707242" TEXT="Bau-Abh&#xe4;ngigkeiten">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      bison dejagnu flex gobjc libncurses5-dev libreadline-dev liblzma-dev libbabeltrace-dev libbabeltrace-ctf-dev python3-dev
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="flag-yellow"/>
</node>
<node CREATED="1439519150614" ID="ID_690017930" MODIFIED="1557498707242">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <i>dutzende</i>&#160;Tests scheitern
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="smily_bad"/>
</node>
<node CREATED="1439519171155" ID="ID_1728409463" MODIFIED="1557498707242" TEXT="das scheint nicht ungew&#xf6;hnlich zu sein">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      verr&#228;terrischer Code im debian/rules
    </p>
    <p>
      check-stamp:
    </p>
    <p>
      ifeq ($(run_tests),yes)
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$(MAKE) $(NJOBS) -C $(DEB_BUILDDIR)/gdb check \
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;|| echo &quot;**Tests failed, of course.**&quot;
    </p>
    <p>
      endif
    </p>
    <p>
      &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;touch $@
    </p>
    <p>
      
    </p>
    <p>
      <b>au weia</b>&#160;LEUTE!
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#f7f2b7" CREATED="1439521655505" ID="ID_388085317" MODIFIED="1561237018921" TEXT="funktioniert, kein Segfault mehr">
<linktarget COLOR="#64c53d" DESTINATION="ID_388085317" ENDARROW="Default" ENDINCLINATION="-80;156;" ID="Arrow_ID_173819250" SOURCE="ID_569521888" STARTARROW="None" STARTINCLINATION="404;0;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node CREATED="1439492295754" ID="ID_1511393529" MODIFIED="1557498707242" TEXT="ggfs. upstream reporten"/>
<node CREATED="1439492301698" ID="ID_717647683" MODIFIED="1557498707242" TEXT="workaround">
<node CREATED="1439492309920" ID="ID_1813059120" MODIFIED="1557498707242" TEXT="andere gdb-version">
<icon BUILTIN="help"/>
</node>
<node CREATED="1439492315080" ID="ID_334485884" MODIFIED="1557498707242" TEXT="clang verwenden">
<icon BUILTIN="help"/>
</node>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1561237001239" ID="ID_569521888" MODIFIED="1561237037464" TEXT="gel&#xf6;st mit gdb &gt;= 7.8.2">
<arrowlink COLOR="#64c53d" DESTINATION="ID_388085317" ENDARROW="Default" ENDINCLINATION="-80;156;" ID="Arrow_ID_173819250" STARTARROW="None" STARTINCLINATION="404;0;"/>
</node>
</node>
<node CREATED="1439177191998" ID="ID_1918895194" MODIFIED="1557498707242" TEXT="Syslog nicht mehr STDOUT">
<icon BUILTIN="help"/>
</node>
</node>
<node CREATED="1439655684119" ID="ID_852404111" MODIFIED="1557498707242" TEXT="Warnungen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      speziell: unused-function bei dem Trick mit dem std::hash macht mir Sorgen.
    </p>
    <p>
      
    </p>
    <p>
      und tats&#228;chlich: das <i>ist</i>&#160;daneben, GCC hat Recht!
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1439644339480" ID="ID_954549190" MODIFIED="1557498707242" TEXT="Lumiera DEB">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      aktualisieren und neu bauen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1439644368572" ID="ID_107825553" MODIFIED="1557498707242" TEXT="Doku: Referenz-System">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1439176875682" ID="ID_1546966992" MODIFIED="1582315392127" TEXT="Debian/Buster">
<edge COLOR="#956a6a" STYLE="linear"/>
<icon BUILTIN="pencil"/>
<node CREATED="1581813838219" ID="ID_292810279" MODIFIED="1581813843787" TEXT="Aufgaben">
<node COLOR="#338800" CREATED="1581813846914" ID="ID_1924268278" MODIFIED="1582315382771" TEXT="C++17">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1439176890840" ID="ID_1573907176" MODIFIED="1581813253348" TEXT="Probleme"/>
<node CREATED="1439655684119" ID="ID_448576273" MODIFIED="1581813253348" TEXT="Warnungen">
<node COLOR="#338800" CREATED="1581813910737" FOLDED="true" ID="ID_760008259" MODIFIED="1581815088793" TEXT="invalid function signature">
<icon BUILTIN="button_ok"/>
<node CREATED="1581813924247" ID="ID_1396033299" MODIFIED="1581813932477" TEXT="in Christians MUTEX-Macros"/>
<node CREATED="1581814268376" ID="ID_1146072064" MODIFIED="1581814285793" TEXT="lumiera_sectionlock_unlock_fn hat R&#xfc;ckgabetyp int"/>
<node CREATED="1581814286382" ID="ID_1070334895" MODIFIED="1581814362629" TEXT="&#xfc;berfl&#xfc;ssig...">
<icon BUILTIN="yes"/>
<node CREATED="1581814293205" ID="ID_1473686899" MODIFIED="1581814302847" TEXT="wird nur in den magischen MACROS genutzt"/>
<node CREATED="1581814303324" ID="ID_947550011" MODIFIED="1581814323655" TEXT="dort KANN man gar nichts mit einem Fehler-Wert machen"/>
<node CREATED="1581814324097" ID="ID_1238690607" MODIFIED="1581814359836" TEXT="alle real existierenden Implementierungen: LUMIERA_DIE (LOCK_RELEASE);">
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node CREATED="1581814366704" ID="ID_68752359" MODIFIED="1581814371078" TEXT="gef&#xe4;hrlich...">
<node CREATED="1581814371794" ID="ID_1259356965" MODIFIED="1581814384324" TEXT="hatte grade eben in Cinelerra eine Tonne von Segfaults gefixt"/>
<node CREATED="1581814384745" ID="ID_1154039482" MODIFIED="1581814458257" TEXT="GCC-8 ist nicht mehr gutm&#xfc;tig bei fehlenden Return_Statements">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      fr&#252;her war das so eine typische &quot;n&#246;rgel&quot;-Warnung, die man unter den Teppich kehren konnte: 'ey, der Compiler bekommt es ja trotzdem richtig hin.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="clanbomber"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1582315830960" ID="ID_284872523" MODIFIED="1582315840434" TEXT="Testsuite GR&#xdc;N">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1439644339480" ID="ID_1582631934" MODIFIED="1581813253348" TEXT="Lumiera DEB">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <ul>
      <li>
        sinnvollen Zustand erreichen: zumindest das neue GUI sollte wieder starten
      </li>
      <li>
        dann Paket aktualisieren und neu bauen
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="bell"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1439644368572" ID="ID_688656048" MODIFIED="1581813253348" TEXT="Doku: Referenz-System">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node CREATED="1439176875682" FOLDED="true" ID="ID_1482098521" MODIFIED="1581813429187" TEXT="Debian/Bullseye">
<edge COLOR="#cead77" STYLE="linear"/>
<icon BUILTIN="hourglass"/>
<node CREATED="1439176890840" ID="ID_535116778" MODIFIED="1581813253348" TEXT="Probleme"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1439644368572" ID="ID_1667125104" MODIFIED="1581813253348" TEXT="Doku: Referenz-System">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
<node CREATED="1446505444775" FOLDED="true" HGAP="106" ID="ID_721807850" MODIFIED="1561311686974" TEXT="Buildsystem" VSHIFT="-5">
<icon BUILTIN="go"/>
<node CREATED="1446505367113" ID="ID_335245102" LINK="http://issues.lumiera.org/ticket/971" MODIFIED="1557498707242">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      standard hardening-flags setzen <font color="#ba015b">#971</font>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1446509415481" ID="ID_180589749" MODIFIED="1557498707242" TEXT="Versionen hochsetzen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      w&#228;hle Kompatibilt&#228;t genau so, da&#223; Ubuntu-Trusty noch unterst&#252;tzt wird.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
<node CREATED="1446509422423" ID="ID_1328716100" MODIFIED="1557498707242" TEXT="gtkmm-3.0 3.10">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1446509430758" ID="ID_371171235" MODIFIED="1557498707242" TEXT="glibmm-2.4 2.39">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1446509601271" ID="ID_1477664506" MODIFIED="1557498707242" TEXT="libglib2.0 2.40">
<icon BUILTIN="button_ok"/>
<node CREATED="1446510347931" ID="ID_559552800" MODIFIED="1557498707242" TEXT="direkten Check hierf&#xfc;r"/>
<node CREATED="1446510354914" ID="ID_1787485177" MODIFIED="1557498707242" TEXT="check f&#xfc;r gthread fraglich"/>
</node>
<node CREATED="1446509752707" ID="ID_1392554051" MODIFIED="1557498707242" TEXT="libgdl-3-dev 3.12">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1446509983556" ID="ID_366391443" MODIFIED="1557498707242" TEXT="libcairomm-1.0-dev 1.10">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1446510475202" ID="ID_514495017" MODIFIED="1557498707242" TEXT="librsvg2-dev 2.30">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1446511275302" ID="ID_359693763" MODIFIED="1557498707242" TEXT="libgavl-dev 1.4">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1446510776857" ID="ID_674774779" MODIFIED="1557498707242" TEXT="Kommentar: librt geh&#xf6;rt zu libc 6">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1446511125266" ID="ID_1198662071" MODIFIED="1557498707242" TEXT="Kommentar zu xv, x11 und xext : TODO videodisplayer obsolet?">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1544239177727" FOLDED="true" HGAP="90" ID="ID_1414932362" MODIFIED="1561827466250" TEXT="Probleme..." VSHIFT="3">
<icon BUILTIN="go"/>
<node COLOR="#338800" CREATED="1544239202589" ID="ID_1398808684" MODIFIED="1544310874478" TEXT="an neue Layer-Struktur anpassen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1544239214321" FOLDED="true" ID="ID_953169553" MODIFIED="1561827466253" TEXT="CSS wird in &apos;stage&apos;-Ordner installiert">
<icon BUILTIN="button_ok"/>
<node CREATED="1544239226829" ID="ID_82474485" MODIFIED="1544239233820" TEXT="ist eigentlich logisch"/>
<node CREATED="1544239234333" ID="ID_1530961275" MODIFIED="1544239247659" TEXT="eine Folge meiner Inkonsequenz">
<node CREATED="1544239248527" ID="ID_1536715197" MODIFIED="1544239262200" TEXT="ich wollte den &apos;gui&apos; Ordner in target beibehalten"/>
<node CREATED="1544239262932" ID="ID_1612950753" MODIFIED="1576282357924" TEXT="aber GuiResource installiert src -&gt; target">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      env.GuiResource(f) for f in env.Glob('stage/*.css')
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#338800" CREATED="1544239314129" ID="ID_1316699242" MODIFIED="1544310685527" TEXT="L&#xf6;sungen...">
<icon BUILTIN="button_ok"/>
<node CREATED="1544239328169" ID="ID_1734838035" MODIFIED="1544310744532" TEXT="CSS in data-Ordner umziehen">
<icon BUILTIN="button_cancel"/>
<node CREATED="1544310696005" ID="ID_1736290153" MODIFIED="1576282357923" TEXT="bliebe l&#xe4;ngerfristig eine Option">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      wenn ich doch mal noch komplexere B&#228;ume transportieren mu&#223;
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1544310717868" ID="ID_1020173356" MODIFIED="1576282357923" TEXT="gef&#xe4;llt mir aber nicht">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ich mag code-nahe Resourcen lieber beim Code selber
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="smiley-neutral"/>
</node>
</node>
<node CREATED="1544288541443" ID="ID_729362244" MODIFIED="1544310825247" TEXT="root der GUI-Ressourcen einen level tiefer legen">
<icon BUILTIN="button_cancel"/>
<node CREATED="1544288579625" ID="ID_1342094420" MODIFIED="1544288601884" TEXT="d.h., wir behandeln nun GUI-Resourcen explizit"/>
<node CREATED="1544288602331" ID="ID_293063721" MODIFIED="1544288615109" TEXT="bisher war das Konzept &quot;Resource&quot; Applikations-global">
<node CREATED="1544310441186" ID="ID_1121330542" MODIFIED="1544310446333" TEXT="naja.... nicht wirklich"/>
<node CREATED="1544310446895" ID="ID_1245766637" MODIFIED="1544310531289" TEXT="das war nur die Absicht gewesen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      aber bei der Implementierung hab' ich dann Pragmatismus walten lassen
    </p>
    <ul>
      <li>
        &#160;Stichwort: getDirname()
      </li>
      <li>
        effektiv ist das nur eine Ebene tief gestaffelt
      </li>
      <li>
        alles darunter w&#228;re in ein Verzeichnis gekippt worden
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node CREATED="1544310749304" ID="ID_1607480762" MODIFIED="1544310785609" TEXT="geht auch nicht ohne weiteres....">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      
    </p>
    <p>
      weil dann die Builder-Funktion die Quelle nicht mehr findet :-P
    </p>
    <p>
      Dann
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1544310787003" ID="ID_775636634" MODIFIED="1544310821317" TEXT="l&#xe4;uft schlie&#xdf;lich darauf hinaus, die Builder-Funktion selber anzupassen">
<arrowlink COLOR="#386599" DESTINATION="ID_910836334" ENDARROW="Default" ENDINCLINATION="156;0;" ID="Arrow_ID_1032149588" STARTARROW="None" STARTINCLINATION="89;0;"/>
</node>
</node>
<node CREATED="1544310537285" ID="ID_799797239" MODIFIED="1544310831740" TEXT="GuiResourcen aufsammeln und in ein Verzeichnis kippen">
<icon BUILTIN="back"/>
<node CREATED="1544310560595" ID="ID_910836334" MODIFIED="1544310816900" TEXT="tats&#xe4;chlich wird die Funktion env.GuiResource() genau einmal verwendet">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      n&#228;mlich im src/SConscript, wenn es um das GUI geht
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#386599" DESTINATION="ID_910836334" ENDARROW="Default" ENDINCLINATION="156;0;" ID="Arrow_ID_1032149588" SOURCE="ID_775636634" STARTARROW="None" STARTINCLINATION="89;0;"/>
</node>
<node CREATED="1544310594077" ID="ID_1194673968" MODIFIED="1544310628882">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      und sie war ohnehin schon so geschrieben worden, da&#223; das Endresultat <i>irgendwie pa&#223;t</i>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="smiley-oh"/>
</node>
<node CREATED="1544310632504" ID="ID_1500688292" MODIFIED="1544310638741" TEXT="Fazit">
<node CREATED="1544310639631" ID="ID_1925161772" MODIFIED="1544310651177" TEXT="den Tanz mit dem root-Verzeichnis einfach weglassen"/>
<node CREATED="1544310651574" ID="ID_666502203" MODIFIED="1544310655937" TEXT="kein getDirname() mehr"/>
<node CREATED="1544310656429" ID="ID_1773784100" MODIFIED="1544310667072" TEXT="und stattdessen das Ziel direkt in Setup.py auscoden"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1544239360927" ID="ID_1906746912" MODIFIED="1544239423084" TEXT="deckt Folgeproblem im GUI auf">
<arrowlink COLOR="#7f244b" DESTINATION="ID_626803835" ENDARROW="Default" ENDINCLINATION="193;-461;" ID="Arrow_ID_65546348" STARTARROW="None" STARTINCLINATION="421;19;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
<node CREATED="1447566875500" HGAP="35" ID="ID_773580451" MODIFIED="1557498707242" TEXT="w&#xfc;nschenswert..." VSHIFT="16">
<icon BUILTIN="bell"/>
<node CREATED="1447566892252" ID="ID_649638170" MODIFIED="1557498707242" TEXT="generische Compiler-Schalter zur Diagnose loggen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...damit man auch im Paketbau-Build-Output wenigstens einmal <i>alle</i>&#160; generischen Platform-Schalter sieht
    </p>
    <p>
      Ich meine also: zu Beginn vom Build sollte das Buildsystem einmal eine Infozeile ausgeben
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1447566892253" ID="ID_64485556" MODIFIED="1557498707242" TEXT="clean soll .sconf_temp und *.pyc mit wegr&#xe4;umen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...denn die st&#246;ren jeweils beim erzeugen eines Hotfix/Patch im Paketbau per dpkg --commit
    </p>
  </body>
</html></richcontent>
</node>
</node>
</node>
<node CREATED="1447978374453" HGAP="140" ID="ID_156552320" MODIFIED="1582315374832" TEXT="Compiler" VSHIFT="-10">
<icon BUILTIN="go"/>
<node CREATED="1447978472591" ID="ID_281213456" MODIFIED="1581813532154" TEXT="GCC-4.9">
<icon BUILTIN="licq"/>
</node>
<node CREATED="1447978381986" FOLDED="true" ID="ID_378439500" MODIFIED="1581813532154" TEXT="GCC-5">
<icon BUILTIN="licq"/>
<node CREATED="1447983098958" ID="ID_291439119" MODIFIED="1557498707243">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      deprecated: <b>auto_ptr</b>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1447990971420" ID="ID_1499023407" MODIFIED="1557498707243">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Tests mit TypeIDs <font color="#ed0b08">scheitern</font>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="clanbomber"/>
</node>
<node CREATED="1447983008594" ID="ID_8361302" MODIFIED="1561237521960" TEXT="L&#xf6;sung f&#xfc;r std::hash finden"/>
<node COLOR="#338800" CREATED="1561237626971" ID="ID_172542353" MODIFIED="1561237649112" TEXT="August 2018">
<icon BUILTIN="button_ok"/>
<node CREATED="1561237650841" ID="ID_749683072" MODIFIED="1561237661542" TEXT="Anpassungen und Umstellung"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1561237662047" ID="ID_998640781" MODIFIED="1561237692524" TEXT="Achtung: std::string wird gr&#xf6;&#xdf;er">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Grund ist die Umstellung auf inline-Storage
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1561237693445" ID="ID_795236381" MODIFIED="1561237730770" TEXT="noch offen: Umstellung auf lib::Symbol in EntryID">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      w&#228;re theoretisch jetzt m&#246;glich,
    </p>
    <p>
      da wir nun eine vollwertige String-Tabelle haben
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
<node CREATED="1561237793933" ID="ID_938708757" MODIFIED="1581813532155" TEXT="GCC-6">
<icon BUILTIN="licq"/>
<node CREATED="1561237816056" ID="ID_584388122" MODIFIED="1561237823947" TEXT="Debian/Stretch">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
</node>
<node CREATED="1561237804916" ID="ID_392420321" MODIFIED="1561237815456" TEXT="gegenw&#xe4;rtig (2019) der Referenz-Compiler"/>
</node>
<node CREATED="1561237739453" ID="ID_894802950" MODIFIED="1561237784571" TEXT="GCC-7">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1561237754266" ID="ID_646410828" MODIFIED="1561237789149" TEXT="Herbst 2018">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      waren nur minimale Anpassungen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1561237831168" ID="ID_1760455064" MODIFIED="1561311488940" TEXT="Juni 2019">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1561237841287" ID="ID_1588960225" MODIFIED="1561311497905" TEXT="Probleme mit libboost 1.65">
<arrowlink COLOR="#37aea5" DESTINATION="ID_584004962" ENDARROW="Default" ENDINCLINATION="295;-171;" ID="Arrow_ID_1368108105" STARTARROW="None" STARTINCLINATION="247;0;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node CREATED="1581813455951" ID="ID_1821559366" MODIFIED="1582315344844" TEXT="GCC-8">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1581813466582" ID="ID_1727015963" MODIFIED="1583523550183" TEXT="Februar 2020">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1581740476035" FOLDED="true" ID="ID_1259527140" MODIFIED="1583523540875" TEXT="Build-Fixes (analog Paketbau)">
<icon BUILTIN="button_ok"/>
<node CREATED="1581740511638" ID="ID_673829980" MODIFIED="1581812450753" TEXT="die FSecs-Problematik">
<icon BUILTIN="button_cancel"/>
<node CREATED="1581812473146" ID="ID_1228189647" MODIFIED="1581812478016" TEXT="betroffen...">
<node CREATED="1581740610730" ID="ID_696004750" MODIFIED="1581740610730" TEXT="src/lib/time/timevalue.hpp"/>
<node CREATED="1581740623344" ID="ID_1853788907" MODIFIED="1581740623344" TEXT="src/lib/time/time.cpp"/>
<node CREATED="1581740661389" ID="ID_1959026707" MODIFIED="1581740661389" TEXT="tests/core/proc/asset/meta/time-grid-basics-test.cpp"/>
</node>
<node CREATED="1581812452760" ID="ID_284310017" MODIFIED="1581812543320" TEXT="inzwischen l&#xe4;ngst schon sauberer gel&#xf6;st">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      das Problem wurde vom GCC beim Bauen des alten Lumiera-Paketes angemahnt; tats&#228;chlich aber hatte ich das Problem inzwischen l&#228;ngst schon anderweitig bemerkt und an der Wurzel gel&#246;st, anstatt nur Symptome zu behandeln
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#338800" CREATED="1581740733368" FOLDED="true" ID="ID_1726260734" MODIFIED="1581906950545" TEXT="TICKET #939 : should better use 64bit base type for FSecs?">
<icon BUILTIN="button_ok"/>
<node CREATED="1581740750350" ID="ID_1497724243" MODIFIED="1581819702167" TEXT="macht sich als 32bit vs 64bit-Problematik bemerkbar">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      als &quot;workaround&quot; hatte ich boost::rational&lt;long&gt; genommen
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1581819704923" ID="ID_1047068236" MODIFIED="1581819708983" TEXT="was ist die Gefahr?">
<node CREATED="1581819714050" ID="ID_314031332" MODIFIED="1581819747785" TEXT="wenn FSecs == rational&lt;int64_t&gt;"/>
<node CREATED="1581819818091" ID="ID_135964502" MODIFIED="1581819829735" TEXT="k&#xf6;nnte dann...">
<node CREATED="1581819830610" ID="ID_1892644470" MODIFIED="1581819869673" TEXT="ein gavl_time_t als FSecs reinrutschen?"/>
<node CREATED="1581819875124" ID="ID_1881211496" MODIFIED="1581819926345" TEXT="ein FrameCnt (==int64_t) als FSecs reinrutschen"/>
</node>
<node CREATED="1581830913676" ID="ID_1851233163" MODIFIED="1581831276538" TEXT="m&#xf6;glicherweise">
<icon BUILTIN="smiley-neutral"/>
<node CREATED="1581830921543" ID="ID_1634734053" MODIFIED="1581830932821" TEXT="FixedFramesQuantiser-ctor">
<node CREATED="1581830948928" ID="ID_1558541350" MODIFIED="1581831146865" TEXT="Framerate">
<node CREATED="1581831157480" ID="ID_425744081" MODIFIED="1581831161915" TEXT="via uint fps">
<node CREATED="1581833787784" ID="ID_208241204" MODIFIED="1581833800782" TEXT="hat Vorfahrt bei einfachen Zahlen">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1581831174129" ID="ID_283797015" MODIFIED="1581831181172" TEXT="via rational&lt;uint&gt;"/>
</node>
<node CREATED="1581830970509" ID="ID_892094269" MODIFIED="1581831262411" TEXT="via Duration">
<icon BUILTIN="button_cancel"/>
<node CREATED="1581831241536" ID="ID_1150857436" MODIFIED="1581831259798" TEXT="keine Gefahr"/>
<node CREATED="1581831244519" ID="ID_270912881" MODIFIED="1581833828374" TEXT="ctor via FSecs ist explicit"/>
</node>
</node>
<node CREATED="1581831295432" ID="ID_897252634" MODIFIED="1581831298540" TEXT="Grid::timeOf">
<node CREATED="1581831305831" ID="ID_775298577" MODIFIED="1581831317561" TEXT="FrameCnt gridPoint"/>
<node CREATED="1581831336819" ID="ID_742904480" MODIFIED="1581831547730" TEXT="FSecs [, offset]">
<icon BUILTIN="button_cancel"/>
<node CREATED="1581831549990" ID="ID_1767803348" MODIFIED="1581831553618" TEXT="keine Gefahr"/>
<node CREATED="1581831554078" ID="ID_292991581" MODIFIED="1581831588989" TEXT="da stets der direkte Match auf FrameCnt bevorzugt wird"/>
</node>
</node>
<node CREATED="1581833987508" ID="ID_1945258109" MODIFIED="1581834001127" TEXT="die sonstiten TimeValues sind bereits &quot;wasserdicht&quot;">
<node CREATED="1581834003850" ID="ID_1726640094" MODIFIED="1581834011693" TEXT="alle gef&#xe4;hrlichen ctor sind explicit"/>
</node>
</node>
</node>
<node CREATED="1581834016097" ID="ID_943401392" MODIFIED="1581834026595" TEXT="L&#xf6;sungs-Alternativen">
<node COLOR="#338800" CREATED="1581834028399" ID="ID_1290001374" MODIFIED="1581905054869" TEXT="FSecs := rational&lt;int64_t&gt;">
<icon BUILTIN="back"/>
<node CREATED="1581834219506" ID="ID_1492786906" MODIFIED="1581834235727" TEXT="erlaubt Einstieg mit maximal gro&#xdf;en Sekundenbetr&#xe4;gen"/>
<node CREATED="1581904944430" ID="ID_95309143" MODIFIED="1581905174089">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      und wir brauchen die <b>definitiv</b>&#160;zum sinnvollen Rechenen mit Zeiten auf micro-Scala
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Der kritsche Fall ist n&#228;mlich, wenn wir mit FSecs anfangen, und dann irgendwo in der Rechnung mal Time::SCALE multiplizieren, um auf die &#181;-Skala zu wechseln. Am Ende der Rechnung w&#252;rde dann typischerweise ein rational_cast stehen. Damit das funktioniert, mu&#223; vor allem der Z&#228;hler des Bruches die volle Zeitskala unterst&#252;tzen. Daher sind <b>64bit zwingend</b>
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#265a98" DESTINATION="ID_95309143" ENDARROW="Default" ENDINCLINATION="389;0;" ID="Arrow_ID_1170592297" SOURCE="ID_38565900" STARTARROW="None" STARTINCLINATION="670;0;"/>
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1581834047228" ID="ID_622470274" MODIFIED="1581905031525" TEXT="FSecs := rational&lt;int&gt;">
<icon BUILTIN="button_cancel"/>
<node CREATED="1581834077245" ID="ID_897585288" MODIFIED="1581834173627" TEXT="h&#xe4;tte den Charme, da&#xdf; weder ein FrameCnt, noch eine gavl-Time direkt reinrutschen kann">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      weil 64bit -&gt; 32bit eine <i>narrowing conversion</i>&#160;ist, die zumindest eine Warnung erzeugt
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#338800" CREATED="1581834174595" ID="ID_1571757083" MODIFIED="1581902077277" TEXT="TODO: ist dieses Argument stichhaltig?">
<icon BUILTIN="button_ok"/>
<node CREATED="1581902078156" ID="ID_1759780689" MODIFIED="1581902089742" TEXT="ja... durch Experiment gepr&#xfc;ft"/>
<node CREATED="1581902090474" ID="ID_355415579" MODIFIED="1581902102205" TEXT="aber ohnehin ist lib::Time schon sehr gut abgedichtet"/>
</node>
<node CREATED="1581905033868" ID="ID_1903781960" MODIFIED="1581905047679" TEXT="aber die Genauigkeit reicht nicht">
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node CREATED="1581834243675" ID="ID_1426215906" MODIFIED="1581902070280" TEXT="FSecs-ctor explicit machen">
<icon BUILTIN="button_cancel"/>
<node CREATED="1581834266215" ID="ID_221160071" MODIFIED="1581834285216" TEXT="man w&#xfc;rde damit ein &quot;Schlupfloch&quot; schlie&#xdf;en"/>
<node CREATED="1581834285684" ID="ID_1178771813" MODIFIED="1581834312204" TEXT="im Moment kann man schreiben Time(12L) (und bekommt 12 Sekunden)"/>
<node CREATED="1581834377896" ID="ID_897382203" MODIFIED="1581834390340" TEXT="geplant: Integration mit std::chrono">
<icon BUILTIN="idea"/>
<node CREATED="1581834393889" ID="ID_220525990" MODIFIED="1581834410119" TEXT="das w&#xfc;rde wieder eine bequeme Notation bieten"/>
<node CREATED="1581834411251" ID="ID_509607126" MODIFIED="1581834424225" TEXT="wobei, &quot;FSecs(12)&quot; ist jetzt nicht sooo schlecht"/>
<node CREATED="1581834424753" ID="ID_1621101278" MODIFIED="1581834434707" TEXT="und au&#xdf;erdem mache ich es in der Praxis ohnehin so"/>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1581834553800" ID="ID_1858355977" MODIFIED="1581834582609" TEXT="erscheint mir als die sauberste Variante">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1581902038450" ID="ID_676891454" MODIFIED="1667336289185" TEXT="nicht einfach realisierbar">
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1667336290112" ID="ID_166419409" LINK="https://issues.lumiera.org/ticket/1055#comment:3" MODIFIED="1667336380910" TEXT="siehe Kommentar zu #1055">
<icon BUILTIN="idea"/>
<node CREATED="1667336386235" ID="ID_1595778098" MODIFIED="1667336411267" TEXT="Vorsicht: soll nicht zur Denkfaulheit verleiten">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1667336412887" ID="ID_1127777473" MODIFIED="1667336438440" TEXT="std::chrono::duration vs Time als Zeit-Punkt"/>
</node>
</node>
<node CREATED="1581834456924" ID="ID_515357939" MODIFIED="1581834461008" TEXT="Typ-Fragen">
<node CREATED="1581834461832" ID="ID_1605358591" MODIFIED="1581834471551" TEXT="warum ist der FrameCnt ein signed integer?">
<node CREATED="1581883352929" ID="ID_1846298026" MODIFIED="1581883367592" TEXT="FrameCnt kann ein spezieller Timecode sein"/>
<node CREATED="1581883325779" ID="ID_573587391" MODIFIED="1581883342672" TEXT="weil es sich um eine Koordinate handelt"/>
<node CREATED="1581883343219" ID="ID_613888469" MODIFIED="1581883351652" TEXT="FrameCnt ist bisweilen negativ"/>
<node COLOR="#338800" CREATED="1581883360863" ID="ID_1550240767" MODIFIED="1581883366505" TEXT="also OK">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1581834473819" ID="ID_38565900" MODIFIED="1581905067507" TEXT="brauchen / wollen wir 64bit f&#xfc;r die FSecs?">
<arrowlink COLOR="#265a98" DESTINATION="ID_95309143" ENDARROW="Default" ENDINCLINATION="389;0;" ID="Arrow_ID_1170592297" STARTARROW="None" STARTINCLINATION="670;0;"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1581813859601" FOLDED="true" ID="ID_728753164" MODIFIED="1582315336837" TEXT="auf C++17 heben">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1581991434932" ID="ID_104376570" MODIFIED="1582312758108" TEXT="Schalter setzen in Setup.py">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1581991444571" FOLDED="true" ID="ID_351533384" MODIFIED="1582312758109" TEXT="Problemcode vorerst auskommentiert">
<icon BUILTIN="licq"/>
<node CREATED="1581992755658" ID="ID_1595558796" MODIFIED="1581992775966" TEXT="util-coll.hpp">
<node CREATED="1581991489253" ID="ID_821303087" MODIFIED="1581992404462" TEXT=" and_all ">
<node CREATED="1581991517974" ID="ID_1722922510" MODIFIED="1581991517974" TEXT="can_STL_ForEach&lt;Container&gt;,"/>
<node CREATED="1581992406361" ID="ID_1457450258" MODIFIED="1581992409589" TEXT="von asset.cpp"/>
<node CREATED="1581992410249" ID="ID_845644128" MODIFIED="1581992429202" TEXT="von play-service.cpp : ProcessTable::isActive"/>
<node CREATED="1581992496443" ID="ID_1556779228" MODIFIED="1581992504496" TEXT="SubsystemRunner::triggerStartup"/>
<node CREATED="1581993273716" ID="ID_187313835" MODIFIED="1581993284470" TEXT="von util-foreach-test.cpp">
<icon BUILTIN="back"/>
</node>
</node>
<node CREATED="1581995065708" ID="ID_167787591" MODIFIED="1581995069528" TEXT="has_any">
<node CREATED="1581995072059" ID="ID_266292535" MODIFIED="1581995075974" TEXT="von dock-area.cpp:153">
<node CREATED="1581995087331" ID="ID_1008790341" MODIFIED="1581995091844" TEXT="hier &#xfc;ber std::list"/>
</node>
<node CREATED="1581995173317" ID="ID_1482525339" MODIFIED="1581995175625" TEXT="von panel-manager.cpp:146"/>
</node>
<node CREATED="1581992780940" ID="ID_846156960" MODIFIED="1581992784682" TEXT="last">
<node CREATED="1581992786719" ID="ID_868210635" MODIFIED="1581992786719" TEXT="enable_if&lt; treat_as_LumieraIterator&lt;IT&gt;"/>
<node CREATED="1581992844006" ID="ID_1452486285" MODIFIED="1581992844915" TEXT="enable_if&lt;util::{anonymous}::can_direct_access_Last&lt;COLL&gt;"/>
<node CREATED="1581992817306" ID="ID_1958248231" MODIFIED="1582226909217" TEXT="von dispatcher-interface-test.cpp">
<arrowlink COLOR="#1b487d" DESTINATION="ID_1278435250" ENDARROW="Default" ENDINCLINATION="531;0;" ID="Arrow_ID_1907491946" STARTARROW="Default" STARTINCLINATION="436;0;"/>
</node>
<node CREATED="1581994136969" ID="ID_1071697988" MODIFIED="1581994140342" TEXT="util-collection-test.cpp">
<icon BUILTIN="back"/>
<node CREATED="1581994205823" ID="ID_548485755" MODIFIED="1581994218847" TEXT="sehr interessant: der Iterator-Fall funktioniert n&#xe4;mlich">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
<node CREATED="1581993060793" ID="ID_1110262639" MODIFIED="1581993091688" TEXT="TreeExplorer _DecoratorTraits : kann Collection-Fall nicht entscheiden">
<node CREATED="1581993101618" ID="ID_367690402" MODIFIED="1581993115453" TEXT="Verdarcht: wieder Lumiera Iter vs Collection enable-If"/>
<node CREATED="1581993133055" ID="ID_7676282" MODIFIED="1581993136234" TEXT="von iter-chain-search-test.cpp"/>
<node CREATED="1581993437094" ID="ID_553794215" MODIFIED="1581993437978" TEXT="verb-visitor-dispatch-test.cpp:203"/>
<node CREATED="1581993764266" ID="ID_1301200739" MODIFIED="1581993765334" TEXT="iter-tree-explorer-test.cpp:343"/>
</node>
<node CREATED="1581992139781" ID="ID_1486869166" MODIFIED="1581992148980" TEXT="util::join &#xfc;ber einen transformIter">
<node CREATED="1581992186951" ID="ID_510132051" MODIFIED="1581992235886" TEXT="transformIter kan Ret-Type nicht abgreifen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      src/lib/itertools.hpp:805
    </p>
    <p>
      error: no type named 'Ret' in 'struct lib::meta::_Fun&lt;std::__cxx11::basic_string&lt;char&gt; (*)(const std::__cxx11::basic_string&lt;char&gt;&amp;) noexcept, void&gt;'
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1581992163401" ID="ID_1538196186" MODIFIED="1581993587078" TEXT="src/lib/variant.hpp:549:3:   required from here"/>
<node CREATED="1581994935333" ID="ID_1128036242" MODIFIED="1581994936473" TEXT="test-nexus.cpp:50"/>
<node CREATED="1581993620189" ID="ID_868294584" MODIFIED="1581994635577" TEXT="ebenfalls via stringify()">
<node CREATED="1581993588898" ID="ID_1089387725" MODIFIED="1581994651213" TEXT="format-helper-test.cpp:142"/>
<node CREATED="1581994623271" ID="ID_628781534" MODIFIED="1581994658943" TEXT="tree-mutator-binding-test.cpp 420"/>
</node>
</node>
<node CREATED="1581994485434" ID="ID_942628679" MODIFIED="1581994495082" TEXT="MutationMessage">
<node CREATED="1581994497448" ID="ID_635292284" MODIFIED="1581994499252" TEXT="von mutation-message-test.cpp">
<node CREATED="1581994524698" ID="ID_582179423" MODIFIED="1581994535359" TEXT="kann nicht MutaionMessage-ctor ausw&#xe4;hlen"/>
</node>
</node>
<node CREATED="1581993910615" ID="ID_439067077" MODIFIED="1581993928904" TEXT="meta::_Fun Type-Deduction">
<node CREATED="1581993931924" ID="ID_1676073018" MODIFIED="1581993936207" TEXT="von item-wrapper-test.cpp:315">
<node CREATED="1581993971527" ID="ID_1616033054" MODIFIED="1581993977618" TEXT="ruft wrapper.hpp FunctionResult"/>
<node CREATED="1581994006526" ID="ID_1829879519" MODIFIED="1581994013677" TEXT="function-closure.hpp: _chain"/>
</node>
<node CREATED="1581994029929" ID="ID_20368460" MODIFIED="1581994030643" TEXT="no type named &apos;Args&apos; in &apos;struct lib::meta::_Fun&lt;int (*)() noexcept, void&gt;&apos;"/>
</node>
<node CREATED="1582226720811" ID="ID_1404034997" MODIFIED="1582226979278" TEXT="job.h : InvocationInstanceID ctor unclear">
<linktarget COLOR="#ca99b1" DESTINATION="ID_1404034997" ENDARROW="Default" ENDINCLINATION="-5;81;" ID="Arrow_ID_402256801" SOURCE="ID_520524824" STARTARROW="None" STARTINCLINATION="235;22;"/>
<node CREATED="1582226760132" ID="ID_1708527048" MODIFIED="1582226852847" TEXT="bis jetzt hat der Compiler einen &quot;pa&#xdf;t scho&quot;-ctor synthetisiert">
<icon BUILTIN="smiley-neutral"/>
</node>
<node CREATED="1582226854666" ID="ID_1829839467" MODIFIED="1582226871843" TEXT="sieht aber nach unvollst&#xe4;ndigem oder schlampigem Design aus">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1581992817306" ID="ID_1278435250" MODIFIED="1582226909217" TEXT="ebenfalls von dispatcher-interface-test.cpp">
<linktarget COLOR="#1b487d" DESTINATION="ID_1278435250" ENDARROW="Default" ENDINCLINATION="531;0;" ID="Arrow_ID_1907491946" SOURCE="ID_1958248231" STARTARROW="Default" STARTINCLINATION="436;0;"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1581995421239" ID="ID_1730281364" MODIFIED="1582312758109" TEXT="mutma&#xdf;liche Probleme">
<icon BUILTIN="info"/>
<node COLOR="#435e98" CREATED="1581995443649" FOLDED="true" ID="ID_986769823" MODIFIED="1582312758109" TEXT="STL collection duck detector greift nicht mehr">
<icon BUILTIN="button_ok"/>
<node CREATED="1582073183681" ID="ID_652495805" MODIFIED="1582073205034" TEXT="erkl&#xe4;rt Defekt">
<node CREATED="1582073420161" ID="ID_1988954672" MODIFIED="1582073427721" TEXT="util-foreach-Pr&#xe4;dikate"/>
<node CREATED="1581995510176" ID="ID_1166388129" MODIFIED="1581995518450" TEXT="util-coll-Pr&#xe4;dikate"/>
<node CREATED="1581995535628" ID="ID_829639067" MODIFIED="1581995540536" TEXT="TreeExplorer"/>
</node>
<node COLOR="#338800" CREATED="1582073220260" ID="ID_140955956" MODIFIED="1582233559353" TEXT="Untersuchung">
<icon BUILTIN="button_ok"/>
<node CREATED="1582073223795" ID="ID_596161629" MODIFIED="1582073232715" TEXT="DuckDetector_test PASS">
<icon BUILTIN="idea"/>
<node CREATED="1582073234062" ID="ID_1909467497" MODIFIED="1582073239279" TEXT="also kein elementares Problem"/>
</node>
<node CREATED="1582075935580" ID="ID_27838904" MODIFIED="1582075956597" TEXT="begin() / end() sind jetzt noexcept"/>
<node CREATED="1582075957329" ID="ID_1720366662" MODIFIED="1582075973818" TEXT="das hat wohl Einflu&#xdf; auf die type deduction"/>
<node CREATED="1582233029258" ID="ID_1301588264" MODIFIED="1582233055488" TEXT="Duck-Detector (in try.cpp) nachgebaut...">
<icon BUILTIN="idea"/>
<node CREATED="1582233058772" ID="ID_1586059095" MODIFIED="1582233088483">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      die <b>&#252;berladene const</b>-Variante ist der Grund
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1582233338068" ID="ID_982873335" MODIFIED="1582233352296" TEXT="eine einzeln stehende Funktion w&#xfc;rde implizit konvertiert"/>
<node CREATED="1582233362797" ID="ID_833938257" MODIFIED="1582233401713" TEXT="aber er kann nicht entscheiden func const">
<node CREATED="1582233402761" ID="ID_712697643" MODIFIED="1582233402761" TEXT="-&gt; func noexcept"/>
<node CREATED="1582233405153" ID="ID_248777238" MODIFIED="1582233417751" TEXT="-&gt; func const noexcept"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1582233448999" ID="ID_1418345816" MODIFIED="1582233462949" TEXT="Fazit">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="back"/>
<node CREATED="1582233464208" ID="ID_1766502973" MODIFIED="1582233477724" TEXT="wenn wir beide Varianten &quot;greifen&quot; wollen...."/>
<node CREATED="1582233478442" ID="ID_173149831" MODIFIED="1582306757303" TEXT="dann brauchen wir zwei &quot;Greifer&quot;!!!">
<arrowlink COLOR="#0eaf68" DESTINATION="ID_374929365" ENDARROW="Default" ENDINCLINATION="143;-60;" ID="Arrow_ID_325541082" STARTARROW="None" STARTINCLINATION="279;23;"/>
</node>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1581995458449" FOLDED="true" ID="ID_524595490" MODIFIED="1582312758109" TEXT="meta::_Fun Type-Deduction greift nicht mehr">
<icon BUILTIN="button_ok"/>
<node CREATED="1582073209005" ID="ID_1128456119" MODIFIED="1582073212094" TEXT="erkl&#xe4;rt Defekt">
<node CREATED="1581995542307" ID="ID_1935687224" MODIFIED="1581995545415" TEXT="transformIterator"/>
<node CREATED="1581995546475" ID="ID_1004262725" MODIFIED="1581995552782" TEXT="stringify"/>
<node CREATED="1581995553206" ID="ID_984495822" MODIFIED="1581995556030" TEXT="util::join"/>
</node>
<node CREATED="1582312412651" ID="ID_1422313569" MODIFIED="1582312440377" TEXT="ebenfalls durch Spezialisierung auf noexcept l&#xf6;sbar">
<arrowlink COLOR="#8dbd97" DESTINATION="ID_698919272" ENDARROW="Default" ENDINCLINATION="551;0;" ID="Arrow_ID_1462827757" STARTARROW="None" STARTINCLINATION="551;0;"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1582226930039" ID="ID_520524824" MODIFIED="1582312758109" TEXT="Union-Initialisierung on-the-fly">
<arrowlink COLOR="#ca99b1" DESTINATION="ID_1404034997" ENDARROW="Default" ENDINCLINATION="-5;81;" ID="Arrow_ID_402256801" STARTARROW="None" STARTINCLINATION="235;22;"/>
<icon BUILTIN="hourglass"/>
</node>
</node>
<node CREATED="1582233568711" ID="ID_1046617766" MODIFIED="1582312758109" TEXT="L&#xf6;sungen">
<icon BUILTIN="idea"/>
<node COLOR="#338800" CREATED="1582233577705" ID="ID_1368671019" MODIFIED="1582312758109" TEXT="STL-Iterierbarkeit">
<icon BUILTIN="button_ok"/>
<node CREATED="1582233592571" ID="ID_409234723" MODIFIED="1582312758109">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Frage: wollen wir auf <i>noexcept</i>&#160;einschr&#228;nken?
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="help"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1582233691150" ID="ID_860044262" MODIFIED="1582312758109" TEXT="NEIN">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1582233699511" ID="ID_287790035" MODIFIED="1582312758109" TEXT="das ist nicht Teil des Konzepts &#xbb;Iterierbarkeit&#xab;">
<node CREATED="1582233730337" ID="ID_1576759110" MODIFIED="1582312758109" TEXT="hier ganz klar &quot;im weitesten Sinne&quot; gemeint"/>
<node CREATED="1582233816125" ID="ID_1024965560" MODIFIED="1582312758109" TEXT="Beweis: &lt;bits/range_access.h&gt;">
<node CREATED="1582233844361" ID="ID_697050029" MODIFIED="1582312758109" TEXT="Funktion std::begin(X) ist ohne noexcept definiert"/>
<node CREATED="1582233871134" ID="ID_439487192" MODIFIED="1582312758109" TEXT="macht auch inhaltlich Sinn so"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1582233905345" ID="ID_374929365" MODIFIED="1582312758109" TEXT="L&#xf6;sungsansatz-1: beide Varianten explizit pr&#xfc;fen">
<linktarget COLOR="#0eaf68" DESTINATION="ID_374929365" ENDARROW="Default" ENDINCLINATION="143;-60;" ID="Arrow_ID_325541082" SOURCE="ID_173149831" STARTARROW="None" STARTINCLINATION="279;23;"/>
<icon BUILTIN="back"/>
<node CREATED="1582237126809" ID="ID_885223940" MODIFIED="1582312758109" TEXT="das w&#xfc;rde den Status-quo einfach reparieren"/>
<node CREATED="1582237135080" ID="ID_247923480" MODIFIED="1582312758109" TEXT="dieser ist aber selbst einigerma&#xdf;en &quot;pragmatisch&quot; und verworren">
<node CREATED="1582237183692" ID="ID_898840580" MODIFIED="1582312758109" TEXT="siehe z.B. lib/meta/trait-special.hpp">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <ul>
      <li>
        als schneller Fix implementiert
      </li>
      <li>
        und tats&#228;chlich nur einmal, f&#252;r einen Test verwendet
      </li>
      <li>
        eigentlich wird damit das Problem &quot;unter den Teppich gekehrt&quot;
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="smily_bad"/>
</node>
</node>
<node CREATED="1582237153893" ID="ID_1734163342" MODIFIED="1582312758109" TEXT="...und ich wei&#xdf;, da&#xdf; das Thema f&#xfc;r C++20 angegangen und aufger&#xe4;umt werden mu&#xdf;"/>
<node COLOR="#435e98" CREATED="1582305423630" ID="ID_406561498" MODIFIED="1582312758109" TEXT="ist die einzige zur Zeit sinnvoll umsetzbare L&#xf6;sung">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      &quot;sinnvoll&quot; hei&#223;t
    </p>
    <ul>
      <li>
        stabil
      </li>
      <li>
        lesbar
      </li>
    </ul>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1582233920415" ID="ID_1234146956" MODIFIED="1582312758109" TEXT="L&#xf6;sungsansatz-2: umstellen auf RangeTS-Iterierbarkeit">
<icon BUILTIN="closed"/>
<node CREATED="1582236780720" ID="ID_617011073" MODIFIED="1582312758109" TEXT="welchen Zweck erf&#xfc;llt dieser Trait?">
<node CREATED="1582236798072" ID="ID_626851812" MODIFIED="1582312758110" TEXT="geht es um &#xbb;Iterierbarket&#xab;?"/>
<node CREATED="1582236809676" ID="ID_1014412331" MODIFIED="1582312758110" TEXT="oder geht es um STL-Container?"/>
</node>
<node CREATED="1582237912798" ID="ID_1995184792" MODIFIED="1582312758110" TEXT="alle bisherigen Verwendungen....">
<node CREATED="1582237974967" ID="ID_1205441472" MODIFIED="1582312758110" TEXT="...dienen dazu, Lumiera-Itarator und STL-Container einheitlich &#xbb;iterierbar&#xab; zu adaptieren"/>
<node CREATED="1582237960985" ID="ID_1470506535" MODIFIED="1582312758110" TEXT="...es gibt gar nicht so viele Verwendungen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      warum...?
    </p>
    <p>
      ..vermutlich, weil ich ab einem gewissen Punkt damit angefangen habe, auch die Lumiera-Iteratoren als &quot;foreach-iterierbar&quot; zu dekorieren (indem sie freie begin(iter) und end(iter)-Funktionen bieten).
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1582305384364" ID="ID_238579581" MODIFIED="1582312758110" TEXT="ist nicht das was wir hier wollen">
<icon BUILTIN="button_cancel"/>
</node>
</node>
<node CREATED="1582237046588" ID="ID_400180049" MODIFIED="1582312758110" TEXT="L&#xf6;sunsansatz-3: ein ma&#xdf;geschneidertes Concept bauen">
<icon BUILTIN="button_cancel"/>
<node CREATED="1582237081319" ID="ID_1673821136" MODIFIED="1582312758110" TEXT="bereits im Vorgriff auf C++20 implementiert"/>
<node CREATED="1582237094158" ID="ID_206423592" MODIFIED="1582312758110">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      es sollte genau die Eigenschaften abdecken, die wir <b>tats&#228;chlich brauchen</b>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1582305280750" ID="ID_1737226688" MODIFIED="1582312758110" TEXT="hab&apos;s versucht">
<icon BUILTIN="stop-sign"/>
<node CREATED="1582305294632" ID="ID_1508436965" LINK="https://stackoverflow.com/a/16316640/444796" MODIFIED="1582312758110" TEXT="in Anlehnung an (SO)"/>
<node CREATED="1582305317917" ID="ID_63672565" MODIFIED="1582312758110" TEXT="wird aber sehr komplex im Detail"/>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1582305327187" ID="ID_393824782" MODIFIED="1582312758110" TEXT="Abbruch">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node CREATED="1582305338154" ID="ID_529828571" MODIFIED="1582312758110" TEXT="L&#xf6;sung ist nicht lesbar"/>
<node CREATED="1582305348153" ID="ID_1318841418" MODIFIED="1582312758110" TEXT="in 2 Jahren nutzen wir Concepts">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1582312227006" ID="ID_1679109428" MODIFIED="1582312758110" TEXT="Funktions-Detektor">
<icon BUILTIN="button_ok"/>
<node CREATED="1582312235632" ID="ID_1383769424" MODIFIED="1582312758110" TEXT="es ist ebenfalls noexcept">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1582312256096" ID="ID_698919272" MODIFIED="1582312758110" TEXT="l&#xe4;&#xdf;t sich mit forwarding-specialisation wegstrippen">
<linktarget COLOR="#8dbd97" DESTINATION="ID_698919272" ENDARROW="Default" ENDINCLINATION="551;0;" ID="Arrow_ID_1462827757" SOURCE="ID_1422313569" STARTARROW="None" STARTINCLINATION="551;0;"/>
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1582312269622" ID="ID_1014206981" LINK="https://stackoverflow.com/a/55701361/444796" MODIFIED="1582312758110" TEXT="Gefahr der kombinatorischen Explosion">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      mit const und volatile...
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1447978388930" ID="ID_78828927" MODIFIED="1582315355090" TEXT="Clang 3.5">
<icon BUILTIN="licq"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1582315356166" ID="ID_568554401" MODIFIED="1582315369107" TEXT="Clang-7">
<icon BUILTIN="bell"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1446480582168" FOLDED="true" HGAP="46" ID="ID_554745278" MODIFIED="1581813780309" TEXT="Release" VSHIFT="-5">
<icon BUILTIN="hourglass"/>
<node CREATED="1446480601381" ID="ID_1870415321" MODIFIED="1581813706345" TEXT="release prep: clean-up obsolete information">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Doku durchk&#228;mmen nach M&#252;ll
    </p>
  </body>
</html></richcontent>
<font NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="full-1"/>
<node CREATED="1446482192807" ID="ID_852733328" MODIFIED="1576282357919" TEXT="Debian">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      hier nach offensichtlich obsoleter Info checken
    </p>
    <p>
      <font color="#d40222">WICHTIG</font>: keine vorgreifende Infos publizieren!!!!!
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1446482445325" ID="ID_1134936512" MODIFIED="1576282357918" TEXT="Build-Tutorial">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      die explizit angegebenen Paketnamen schon mal vorchecken
    </p>
    <p>
      die Abschnitte zu den LIbraries pr&#252;fen / umschreiben
    </p>
    <p>
      insgesamt sorgf&#228;ltig durchlesen
    </p>
  </body>
</html></richcontent>
<node CREATED="1446489425420" ID="ID_1155768637" MODIFIED="1518487921104" TEXT="building from source"/>
<node CREATED="1446489431443" ID="ID_1672115205" MODIFIED="1518487921104" TEXT="building the debian way"/>
<node CREATED="1446489436395" ID="ID_52990160" MODIFIED="1518487921104" TEXT="contributing"/>
</node>
<node CREATED="1446482485648" ID="ID_718218074" MODIFIED="1518487921104" TEXT="technical/build/Dependencies"/>
</node>
<node CREATED="1446480725508" ID="ID_789754974" MODIFIED="1576282357917" TEXT="release prep: bump version number">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      knappe Kennzeichnung des Releases in den Kommentar
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="full-2"/>
<node CREATED="1446480787391" ID="ID_1824008353" MODIFIED="1518487921104" TEXT="admin/scons/Setup.py"/>
<node CREATED="1446480787392" ID="ID_1638555946" MODIFIED="1518487921104" TEXT="data/config/setup.ini"/>
<node CREATED="1446480787392" ID="ID_619067196" MODIFIED="1518487921104" TEXT="doc/devel/Doxyfile"/>
<node CREATED="1446480787392" ID="ID_193733835" MODIFIED="1518487921104" TEXT="doc/devel/Doxyfile.browse"/>
</node>
<node CREATED="1446481181543" ID="ID_1995398229" MODIFIED="1576282357917" TEXT="R&#xfc;ck-Merge vom Release-Zweig">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      hier geht es darum, Konsistenz im Git herzustellen.
    </p>
    <p>
      Wenn alles korrekt gemacht wurde, d&#252;rfte es hier keinen R&#252;ckflu&#223; von &#196;nderungen geben.
    </p>
    <p>
      Bitte auch daran denken, zuerst den DEB-Zweig zu pr&#252;fen. Diesen aber nicht zur&#252;ckmergen,
    </p>
    <p>
      denn wir wollen keine DEB-Info im Master haben!
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="full-3"/>
<node CREATED="1446481302159" ID="ID_1330024662" MODIFIED="1518487921104" TEXT="Release-Zweig"/>
<node CREATED="1446481305102" ID="ID_1191774545" MODIFIED="1518487921104" TEXT="lfd Fixes von den DEBs"/>
<node CREATED="1446481314669" ID="ID_477388235" MODIFIED="1518487921104" TEXT="Plattform-Abh&#xe4;ngigkeiten checken"/>
</node>
<node CREATED="1446480963028" ID="ID_83763074" MODIFIED="1581813706345" TEXT="Release-commit: Pre-release 0.pre.04">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      einzeilige Kennzeichnung wiederholen
    </p>
    <p>
      die unmittelbaren Release-Dokumente durchgehen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="full-4"/>
<node CREATED="1446481123991" ID="ID_1319204482" MODIFIED="1518487921104" TEXT="README"/>
<node CREATED="1446481126974" ID="ID_537666758" MODIFIED="1518487921104" TEXT="AUTHORS">
<node CREATED="1446481146548" ID="ID_1310945179" MODIFIED="1518487921104" TEXT="GTK-UI">
<icon BUILTIN="help"/>
</node>
<node CREATED="1446481155762" ID="ID_290411770" MODIFIED="1518487921104" TEXT="setup.ini">
<icon BUILTIN="help"/>
</node>
</node>
<node CREATED="1446481129206" ID="ID_799927356" MODIFIED="1518487921104" TEXT="LICENSE"/>
</node>
<node CREATED="1446481516578" ID="ID_552450474" MODIFIED="1581813706345" TEXT="Release-Zweig: upgrade current release to 0.pre.04">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Merge-commit auf den Release-Zweig.
    </p>
    <p>
      Sollte konfliktfrei sein
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="full-5"/>
</node>
<node CREATED="1446481591568" ID="ID_1120064498" MODIFIED="1518487921104" TEXT="Paketieren">
<icon BUILTIN="full-6"/>
<node CREATED="1446481606134" ID="ID_212330450" MODIFIED="1518487921104" TEXT="Merge release -&gt; deb"/>
<node CREATED="1446481618196" ID="ID_1882691551" MODIFIED="1518487921104" TEXT="Paket-Beschreibung"/>
<node CREATED="1446481637738" ID="ID_1002196753" MODIFIED="1518487921104" TEXT="Manpages">
<icon BUILTIN="bell"/>
</node>
<node CREATED="1446481646057" ID="ID_262549512" MODIFIED="1518487921104" TEXT="control"/>
<node CREATED="1446481655743" ID="ID_269337100" MODIFIED="1581813706344" TEXT="rules"/>
</node>
<node CREATED="1446481713984" ID="ID_1112453089" MODIFIED="1576282357915" TEXT="ausliefern">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...das hei&#223;t bauen und hochladen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="full-7"/>
<node CREATED="1447566826434" HGAP="0" ID="ID_808634666" MODIFIED="1518487921104" TEXT="Bugfix-Release 0.pre.03-2" VSHIFT="-1">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1447566826434" HGAP="4" ID="ID_1582615496" MODIFIED="1518487921104" TEXT="Bugfix-Release 0.pre.03-3" VSHIFT="-14">
<icon BUILTIN="idea"/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1446482059174" ID="ID_1294670881" MODIFIED="1581813751238">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      <b>Referenz</b>: Debian/Jessie (stable) : i386 and x86_64
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="bell"/>
<node CREATED="1447566711958" ID="ID_450859594" MODIFIED="1518487921105" TEXT="alte version war broken"/>
<node CREATED="1447566721616" ID="ID_520179523" MODIFIED="1518487921105" TEXT="32 / 64bit Probleme"/>
<node CREATED="1447566743461" ID="ID_1754275668" LINK="http://issues.lumiera.org/ticket/973" MODIFIED="1518487921105">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Probleme mit der Compile-Reihenfolge&#160; <font color="#d41807">#973</font>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1447566806556" ID="ID_708047854" MODIFIED="1518487921105" TEXT="neues Bugfix-Release">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1446482059174" ID="ID_1693967692" MODIFIED="1581813738594" TEXT="Ubuntu/Trusty (14.LTS) : i386 and x86_64">
<icon BUILTIN="licq"/>
<node CREATED="1446509774664" ID="ID_458867123" MODIFIED="1518487921105" TEXT="Ausnahmen f&#xfc;r libgdl-3-dev 3.8"/>
<node CREATED="1447567139480" ID="ID_183954019" MODIFIED="1518487921105" TEXT="-&gt; diese Ausnahmen in Paketdefinition &#xfc;bernommen">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1447971961407" ID="ID_1876285814" MODIFIED="1518487921105" TEXT="habe dann aber doch gdl 3.16 gebackported">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1447971982360" ID="ID_1118580069" MODIFIED="1518487921105" TEXT="Beobachtung: Paket l&#xe4;&#xdf;t sich nicht installieren">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1447971995582" ID="ID_1170070076" MODIFIED="1518487921105" TEXT="Doku-Registrierung scheitert">
<icon BUILTIN="clanbomber"/>
</node>
<node CREATED="1447972005940" ID="ID_876035298" MODIFIED="1541088155781" TEXT="doc-base Definition">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...f&#252;hrt sowohl eine README, alsauch ein Verzeichnis /usr/share/doc/lumiera/html auf, das (noch) nicht existiert
    </p>
    <p>
      unter Debian/Jessie wird das ignoriert
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1447972547396" ID="ID_1950291699" MODIFIED="1541088155790">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      stelle fest: Fehler auf Trusty,
    </p>
    <p>
      nur Warnung auf Mint
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      das hei&#223;t, da&#223; ich versuchen kann, das Problem erst mal &quot;unter den Teppich zu kehren&quot;
    </p>
    <p>
      Die Wahrscheinlichkeit, da&#223; <i>irgend jemand</i>&#160;Lumiera unter Ubuntu/Trusty <i>installieren </i>m&#246;chte, erscheint mir akademisch
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="bell"/>
</node>
</node>
</node>
<node CREATED="1446482059174" ID="ID_1906801117" MODIFIED="1581813769708" TEXT="Ubuntu/Vivid (15.04) : i386">
<icon BUILTIN="closed"/>
</node>
<node CREATED="1446482059175" ID="ID_1107419581" MODIFIED="1518487921105" TEXT="Ubuntu/Wily (15.10) : x86_64">
<icon BUILTIN="button_cancel"/>
<node CREATED="1447978249148" ID="ID_218315533" MODIFIED="1518487921105">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      bauen mit gcc-5 <b><font color="#d90d06">scheitert</font></b>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1447978292199" ID="ID_1160042901" MODIFIED="1518487921105" TEXT="ein Problem mit std::hash - Spezialisierung">
<icon BUILTIN="info"/>
</node>
<node CREATED="1447983052852" ID="ID_1130315053" MODIFIED="1576282357913" TEXT="liegt nur an fehlendem #include &lt;utility&gt;">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      in lib/hash-standard.hpp
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1447990722939" ID="ID_1163368707" MODIFIED="1518487921105">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      mit gcc-5 gebaute Tests <b><font color="#d40262">scheitern</font></b>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1447990760017" ID="ID_413820913" MODIFIED="1541088155831">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      bauen mit gcc-4.9 <i>nicht m&#246;glich</i>
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      es gibt Probleme beim Linken mit den Boost-Libraries, die auf Ubuntu/wily mit gcc-5 gebaut sind.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="smily_bad"/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#990000" CREATED="1447990802803" ID="ID_1667893677" MODIFIED="1518487921105" TEXT="ABBRUCH"/>
</node>
<node CREATED="1446482059175" ID="ID_904094860" MODIFIED="1581813769707" TEXT="Mint/Rafaela (17.2.LTS) : x86_64">
<icon BUILTIN="closed"/>
</node>
<node CREATED="1446482249336" ID="ID_1088469455" MODIFIED="1576282357912" TEXT="Web/Doku aktualisieren">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Wichtig: hier nur was wirklich gebaut ist und funktioniert!
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1446589479832" ID="ID_1851762530" MODIFIED="1581813706344" TEXT="alte Repos wegwerfen">
<node CREATED="1446589487798" ID="ID_1080472422" MODIFIED="1581813706344" TEXT="Lumi-Depot: Wheezy"/>
<node CREATED="1446589495445" ID="ID_1083044545" MODIFIED="1581813706344" TEXT="VBox Wheezy"/>
<node CREATED="1446589502132" ID="ID_271504207" MODIFIED="1581813706344" TEXT="VBox Mint Quiana"/>
</node>
<node CREATED="1446481892624" ID="ID_1020531472" MODIFIED="1581813706342" TEXT="Ticket schlie&#xdf;en">
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
</node>
</node>
</node>
<node CREATED="1439842359711" ID="ID_1982964862" MODIFIED="1581813505207" TEXT="Paket">
<icon BUILTIN="stop"/>
<node COLOR="#6a1928" CREATED="1561237113163" ID="ID_1613245846" MODIFIED="1561237134536" TEXT="zu kl&#xe4;ren">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1439842379420" ID="ID_1336697213" MODIFIED="1557498707243" TEXT="gtk-Abh&#xe4;ngigkeiten"/>
<node CREATED="1446486970358" ID="ID_1758732894" MODIFIED="1561237137893" TEXT="was ist mit libXV">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      eigentlich war die nur notwendig f&#252;r das Video-Viewer Widget,
    </p>
    <p>
      was nun leider tot ist. Wir haben noch keinen Ersatz. Deshalb lasse ich die Abh&#228;ngigkeit
    </p>
    <p>
      bestehen, aber irgendwann m&#252;ssen wir das schon glattziehen
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="help"/>
</node>
<node CREATED="1446505367113" ID="ID_1119934206" LINK="http://issues.lumiera.org/ticket/971" MODIFIED="1557498707243">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      hardening-flags! <font color="#ba015b">#971</font>
    </p>
  </body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1478387336953" ID="ID_1320541285" MODIFIED="1557498707243" TEXT="debian/copyright">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1478387345624" ID="ID_666713431" MODIFIED="1557498707243" TEXT="sollte alle Copyright-statements korrekt zusammenfassen"/>
<node CREATED="1478387362709" ID="ID_1001009846" MODIFIED="1557498707243" TEXT="siehe Debian-Policy"/>
</node>
</node>
<node CREATED="1561237144633" HGAP="-10" ID="ID_1418254608" MODIFIED="1561237468222" TEXT="Docker-build" VSHIFT="30">
<edge COLOR="#2b265a" STYLE="linear"/>
<icon BUILTIN="prepare"/>
<node CREATED="1561237304621" ID="ID_1883389197" MODIFIED="1561237307268" TEXT="Automatisierung">
<node COLOR="#338800" CREATED="1561237242818" ID="ID_1327662353" MODIFIED="1561237253977" TEXT="automatisiert Build-Umgebung herstellen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1561237261247" ID="ID_1198806785" MODIFIED="1561237298214" TEXT="Docker-Container starten und Build-Umgebung herstellen">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1561237338252" ID="ID_1527757716" MODIFIED="1561237341096" TEXT="Container">
<node CREATED="1561237342391" ID="ID_1602439603" MODIFIED="1561237349547" TEXT="laufend">
<icon BUILTIN="back"/>
<node CREATED="1561237350859" ID="ID_1545894719" MODIFIED="1561237360470" TEXT="ubuntu:bionic">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1561237389597" FOLDED="true" ID="ID_1282777808" MODIFIED="1561237482474" STYLE="fork" TEXT="Release">
<icon BUILTIN="stop"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1561237395516" ID="ID_629494336" MODIFIED="1561237478731" TEXT="nixda">
<icon BUILTIN="flag-pink"/>
</node>
<node CREATED="1561237408778" ID="ID_410283986" MODIFIED="1561237478731" TEXT="Plan">
<icon BUILTIN="idea"/>
<node CREATED="1561237420008" ID="ID_1274423839" MODIFIED="1561237478731" TEXT="vorbereitete saubere Umgebungen"/>
<node CREATED="1561237428807" ID="ID_662721931" MODIFIED="1561237478731" TEXT="per automatischer Routine erstellen"/>
<node CREATED="1561237439894" ID="ID_16174802" MODIFIED="1561237478731" TEXT="diese jeweils zum Release per DockerHub ver&#xf6;ffentlichen"/>
</node>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1446356359992" HGAP="9" ID="ID_1850896628" MODIFIED="1557498707243" POSITION="left" TEXT="QA" VSHIFT="69">
<icon BUILTIN="prepare"/>
<node CREATED="1447985496639" ID="ID_1191711297" MODIFIED="1561311638128" TEXT="untersuchen">
<icon BUILTIN="yes"/>
<node CREATED="1447985501798" ID="ID_732609615" MODIFIED="1557498707243" TEXT="std::hash-Spezialisierung">
<node CREATED="1447985531602" ID="ID_515281257" LINK="http://issues.lumiera.org/ticket/722" MODIFIED="1557498707243">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Ticket <font color="#d40230">#722</font>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1447985552663" ID="ID_1932953869" MODIFIED="1557498707243" TEXT="Hack ist inzwischen obsolet">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      seit gcc-4.8 ist kein static_assert mehr in der STDlib
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1447985591922" ID="ID_800130211" MODIFIED="1557498707243" TEXT="Frage: wie kann ich ein SFINAE-Br&#xfc;cke bauen"/>
<node CREATED="1447985637132" ID="ID_1680970111" MODIFIED="1557498707243" TEXT="Problem: wir haben nur einen Typparameter"/>
</node>
</node>
<node CREATED="1570812024592" ID="ID_1371102521" MODIFIED="1570812029189" TEXT="immerwieder...">
<icon BUILTIN="bell"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1570815474222" ID="ID_678448874" MODIFIED="1570815485479" TEXT="#1204 Alignment issues">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1570817474883" FOLDED="true" ID="ID_1779912405" MODIFIED="1570817537392" TEXT="#1205 Advice data possibly misaligned">
<linktarget COLOR="#cd4467" DESTINATION="ID_1779912405" ENDARROW="Default" ENDINCLINATION="296;20;" ID="Arrow_ID_1125835000" SOURCE="ID_711013238" STARTARROW="None" STARTINCLINATION="462;0;"/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1570817544291" ID="ID_1212317534" MODIFIED="1570817544291" TEXT="try { return new char[siz]; }"/>
<node CREATED="1570817565257" ID="ID_872374381" MODIFIED="1570817571504" TEXT="auf x86 harmlos"/>
<node CREATED="1570817572097" ID="ID_942342414" MODIFIED="1570817577917" TEXT="aber nicht portabel"/>
</node>
<node CREATED="1570812031118" FOLDED="true" ID="ID_1018321072" MODIFIED="1701555783331" TEXT="Alignment bei placement-new">
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1570812038974" ID="ID_716754107" MODIFIED="1570812068335" TEXT="der Buffer mu&#xdf; passendes Alignment f&#xfc;r das Target aufweisen">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1570812070369" ID="ID_490799733" MODIFIED="1570812089910" TEXT="der Compiler kann das (meist/immer) nicht verifizieren">
<icon BUILTIN="clanbomber"/>
</node>
<node CREATED="1570812097734" ID="ID_649573793" MODIFIED="1570812117119" TEXT="da man die Storage oft weit durchreicht, ist das eine potentielle Falle"/>
</node>
<node CREATED="1570812123998" FOLDED="true" ID="ID_1852853548" MODIFIED="1570812393065" TEXT="2019-10 Codebasis durchgepr&#xfc;ft">
<node CREATED="1570812138224" ID="ID_499341259" MODIFIED="1570812146355" TEXT="alle Placement-New-Aufrufe"/>
<node CREATED="1570812148917" ID="ID_1136640650" MODIFIED="1570812152826" TEXT="einzeln abgekl&#xe4;rt"/>
<node CREATED="1570812156154" ID="ID_1286349242" MODIFIED="1570812160201" TEXT="potentiell gef&#xe4;hrlich">
<node CREATED="1570812168060" ID="ID_572329221" MODIFIED="1570812347609" TEXT="buffhandle.hpp">
<linktarget COLOR="#6997ce" DESTINATION="ID_572329221" ENDARROW="Default" ENDINCLINATION="-312;0;" ID="Arrow_ID_558667540" SOURCE="ID_587624101" STARTARROW="None" STARTINCLINATION="241;-25;"/>
<icon BUILTIN="bell"/>
<node CREATED="1570812177483" ID="ID_684960114" MODIFIED="1570812180566" TEXT="im Moment sauber">
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1570812266492" ID="ID_156871602" MODIFIED="1570812291142">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Aber Vorsicht: es <b>wird noch gar nicht verwendet</b>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="bell"/>
</node>
</node>
<node CREATED="1570812221861" ID="ID_1839888193" MODIFIED="1570812227638" TEXT="siehe: usages of BufferProvider::buildHandle">
<node CREATED="1570812246800" ID="ID_447651236" MODIFIED="1570812246800" TEXT="TrackingHeapBlockProvider::provideLockedBuffer(HashVal typeID)">
<node CREATED="1570812260534" ID="ID_101354449" MODIFIED="1570812260534" TEXT="diagn::Block&amp; newBlock = blocks.createBlock()"/>
</node>
</node>
</node>
<node CREATED="1570812625135" ID="ID_688046161" MODIFIED="1570815492913" TEXT="typed-allocation-manager.hpp">
<linktarget COLOR="#ec5b9a" DESTINATION="ID_688046161" ENDARROW="Default" ENDINCLINATION="-281;28;" ID="Arrow_ID_789772576" SOURCE="ID_126301727" STARTARROW="None" STARTINCLINATION="117;-5;"/>
<icon BUILTIN="broken-line"/>
<node CREATED="1570812637077" ID="ID_1674717962" MODIFIED="1570812642972" TEXT="nicht fertig implementiert"/>
<node CREATED="1570812643428" ID="ID_1631975143" MODIFIED="1576282357910" TEXT="die gegenw&#xe4;rtige dummy-Implementierung ist nicht korrekt">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      typed-allocation-manager.hpp 217
    </p>
    <p>
      dumme Heap-Allokation eines char[]
    </p>
    <p>
      !!!!!11!!
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1701555943105" ID="ID_55328417" MODIFIED="1701559664023" TEXT="char[] durch aligned raw storage abl&#xf6;sen">
<icon BUILTIN="bell"/>
<node CREATED="1701555969695" ID="ID_1535597438" MODIFIED="1701556221036" TEXT="&#x201e;char is calling for trouble&#x201c;">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Da alignof(char) &#8801; 1, ist es gradezu eine &#187;Steilvorlage&#171; f&#252;r Probleme, wenn man einen Allocation-Buffer per char[] deklariert. GCC macht das nicht (er f&#228;ngt Allokationen immer an 64bit-Grenzen an), aber grunds&#228;tzlich d&#252;rfte ein Compiler ein char[] anfangen, wo er grad' lustig ist. Besonders gef&#228;hrlich, wenn das Array <i>in ein anderes Objekt eingebettet</i>&#160;wird. Nur den zuletzt genannten Fall habe ich 2019 abgekl&#228;rt; gegen alle sonstigen <i>Schnaps-Ideen </i>gibt es keinen Schutz &#8212; es sei denn, man h&#228;lt sich an die Sprachmittel
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1701556228394" ID="ID_1444144444" LINK="https://en.cppreference.com/w/cpp/types/aligned_storage" MODIFIED="1701559705550" TEXT="es g&#xe4;be daf&#xfc;r ein Sprachmittel: std::aligned_storage">
<node CREATED="1701556795662" ID="ID_1263844060" LINK="https://stackoverflow.com/a/71828512" MODIFIED="1701556817727" TEXT="wenngleich auch deprecated f&#xfc;r C++23"/>
<node CREATED="1701559709278" ID="ID_78471984" MODIFIED="1701559737569" TEXT="direkt durch ein std::byte[] ersetzen mit alignas(T)">
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#338800" CREATED="1701556464842" ID="ID_1873202439" MODIFIED="1701559743611" TEXT="versuchsweise: vault::mem::ExtentFamily umgestellt">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1701559745027" ID="ID_1331044905" MODIFIED="1701574720900" TEXT="lib::UninitialisedStorage bereitstellen">
<linktarget COLOR="#5b92bc" DESTINATION="ID_1331044905" ENDARROW="Default" ENDINCLINATION="-1107;79;" ID="Arrow_ID_1234105866" SOURCE="ID_12588074" STARTARROW="None" STARTINCLINATION="-2546;116;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1701561920506" ID="ID_889775258" MODIFIED="1701561928182" TEXT="&#x27f6; und f&#xfc;r ExtentFamilty verwenden">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1690740456817" FOLDED="true" ID="ID_1080126518" MODIFIED="1690740564054" TEXT="#853 Portabilit&#xe4;t">
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1690740288384" ID="ID_554665430" MODIFIED="1690740515276" TEXT="#1320 consider 32bit time in Scheduler">
<arrowlink COLOR="#797bad" DESTINATION="ID_1475155102" ENDARROW="Default" ENDINCLINATION="-1330;67;" ID="Arrow_ID_1076799185" STARTARROW="None" STARTINCLINATION="-437;30;"/>
<icon BUILTIN="hourglass"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1696859902445" ID="ID_428140801" MODIFIED="1696859968378" TEXT="Beobachtungen...">
<icon BUILTIN="help"/>
<node CREATED="1696859972822" FOLDED="true" ID="ID_1229021778" MODIFIED="1697299049366" TEXT="sporadisch gescheiterte Tests">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1696859985804" ID="ID_798414043" MODIFIED="1696860302374" TEXT="23-10-09: JobPlanning_test">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Einmal-Event beim Ausf&#252;hren der Testsuite nach Compile.
    </p>
    <p>
      <font face="Monospaced">TEST Render job planning calculation: JobPlanning_test .. FAILED </font>
    </p>
    <p>
      <font face="Monospaced">unexpected data on stdout </font>
    </p>
    <p>
      <font face="Monospaced">'total latency&#160;&#160;&#160;&#160;: &#8826;11ms&#8827;':1 </font>
    </p>
    <p>
      <font face="Monospaced">does not match </font>
    </p>
    <p>
      <font face="Monospaced">literal: total latency&#160;&#160;&#160;&#160;: &#8826;30ms&#8827;:1 </font>
    </p>
    <p>
      Bemerkenswert:
    </p>
    <ul>
      <li>
        der Test selber scheitert nicht, weil die Berechnung wie erwartet abl&#228;uft
      </li>
      <li>
        aber die berichtete Latency ist 11ms statt 30ms wie erwartet
      </li>
      <li>
        das bedeutet: das JobTicket -&gt; isEmpty() [weil dann fallback auf JOB_MINIMUM_RUNTIME in JobTicket::getExpectedRuntime ]
      </li>
      <li>
        ohne das nun im Detail zu analysieren: ich bin beunruhigt, wie KANN das JobTicket empty sein -- es wird doch hier im Test explizit aus der MockFixture erstellt
      </li>
    </ul>
    <p>
      Kontext: bin grade am Umbauen des Thread-Frameworks...
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#5b280f" CREATED="1697243084759" FOLDED="true" ID="ID_1455547060" MODIFIED="1697299048521" TEXT="23-10-14: DiagnosticContext_test // ThreadJoinable">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      Zuf&#228;llig aber durchaus regelm&#228;&#223;ig wieder auftretendes Fehlverhalten
    </p>
    <ul>
      <li>
        der Test erzeugt 75 ThreadJoinable, welche jeweils eine rekursive Berechnung mit thread_lokal storage und sleep machen
      </li>
      <li>
        danach explizit alle Threads join()
      </li>
      <li>
        &#10233; aus den aufgesammelten lib::Result wird manchmal die Platzhalter-Exception ausgeworfen, mit der in der Policy zu Beginn der std::exception_ptr vorbelegt wurde (&quot;No result yet, thread still running; need to join() first.&quot;).
      </li>
    </ul>
    <p>
      <u>Theoretische Analyse</u>: in der Doku (Cppreference) hei&#223;t es, join() synchornizes-with dem Ende des Thread. Eigentlich w&#252;rde ich daraus schlu&#223;folgern, da&#223; wir auch eine release-acquire-Barriere haben. Das k&#246;nnte aber <b>eine zu starke Schlu&#223;folgerung</b>&#160;sein. Wir erzeugen ja im Thread ein neues lib::Result und weisen das per move-assign zu; wenn der Effekt der Zuweisung auf den eingebetteten std::exception_ptr im Haupt-Thread noch nicht sichtbar ist, w&#252;rde das beobachtete Verhalten resultieren.
    </p>
    <p>
      Aber ich sehe auch noch eine <b>zweite Theorie</b>: gestern hatte ich an den Anfang der ThreadLifecycle::invokeThreadFunction() einen Guard eingef&#252;gt, zum Schutz gegen eine Exception aus dem Konstruktor einer abgeleiteten Klasse; d.h. wenn es den Wrapper gar nicht(mehr) gibt, soll die Thread-Funktion ebenfalls ganz ger&#228;uschlos verschwinden. K&#246;nnte es sein, da&#223; die Bedingung Policy::isLive() zu Beginn des Thread nicht zuverl&#228;ssig anspricht? Falls das passiert, w&#252;rde dann auch das eingebettete lib::Result nicht zugewiesen, der Thread w&#228;re aber im Mater-Thread sp&#228;ter als Joinable markiert, und das beobachtete Verhalten w&#228;re die Folge.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_cancel"/>
<node COLOR="#435e98" CREATED="1697298338695" ID="ID_141412141" MODIFIED="1697299041831" TEXT="aufgekl&#xe4;rt: der Guard am Anfang der Thread-Funktion verursacht das...">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1697299012571" ID="ID_1800026408" MODIFIED="1697299046813" TEXT="es ist also die 2.Theorie (das ist zwar auch beunruhigend, aber weniger als die 1.Theorie)">
<icon BUILTIN="smiley-neutral"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1689610305547" ID="ID_1569437785" MODIFIED="1689610311743" TEXT="QA-testing">
<icon BUILTIN="hourglass"/>
<node CREATED="1689610320586" ID="ID_1544042895" MODIFIED="1689610323417" TEXT="Acceptance"/>
<node CREATED="1689610323870" ID="ID_1042323172" MODIFIED="1689610326409" TEXT="Performance">
<node CREATED="1689610327819" ID="ID_1930713525" MODIFIED="1689610330232" TEXT="Kategorien">
<node CREATED="1689610331212" ID="ID_1804527820" MODIFIED="1689610343679" TEXT="Load-Test: typische Belastung"/>
<node CREATED="1689610344482" ID="ID_1870176832" MODIFIED="1689610351589" TEXT="Stress-Test: Systemgrenzen"/>
</node>
</node>
</node>
<node CREATED="1570812308345" FOLDED="true" ID="ID_595212266" MODIFIED="1582333970566" TEXT="Review">
<icon BUILTIN="bell"/>
<node CREATED="1570812319615" ID="ID_587624101" MODIFIED="1570812352560" TEXT="buffhandle.hpp">
<arrowlink COLOR="#6997ce" DESTINATION="ID_572329221" ENDARROW="Default" ENDINCLINATION="-312;0;" ID="Arrow_ID_558667540" STARTARROW="None" STARTINCLINATION="241;-25;"/>
<node CREATED="1570812358786" ID="ID_1531404447" MODIFIED="1570812369421" TEXT="2019-10">
<node CREATED="1570812369993" ID="ID_1647231897" MODIFIED="1570812373524" TEXT="noch nicht verwendet"/>
<node CREATED="1570812373920" ID="ID_1210803090" MODIFIED="1570812385603" TEXT="Testcode (TrackingHeapBlockProvider) sauber"/>
</node>
</node>
<node CREATED="1570812625135" ID="ID_126301727" MODIFIED="1570815492913" TEXT="typed-allocation-manager.hpp">
<arrowlink COLOR="#ec5b9a" DESTINATION="ID_688046161" ENDARROW="Default" ENDINCLINATION="-281;28;" ID="Arrow_ID_789772576" STARTARROW="None" STARTINCLINATION="117;-5;"/>
<icon BUILTIN="broken-line"/>
<node CREATED="1570812925966" ID="ID_1900314792" MODIFIED="1570812931345" TEXT="2019-10">
<node CREATED="1570812637077" ID="ID_971741566" MODIFIED="1570812642972" TEXT="nicht fertig implementiert"/>
</node>
</node>
<node CREATED="1447567193361" FOLDED="true" ID="ID_661445245" MODIFIED="1561311629097" TEXT="premature optimization">
<icon BUILTIN="ksmiletris"/>
<node CREATED="1447566743461" ID="ID_1971297499" LINK="http://issues.lumiera.org/ticket/973" MODIFIED="1557498707243">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Probleme mit der Compile-Reihenfolge&#160; <font color="#d41807">#973</font>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node CREATED="1477665256799" FOLDED="true" ID="ID_685276209" MODIFIED="1557498707243" TEXT="&#xc4;rger">
<icon BUILTIN="smily_bad"/>
<node CREATED="1477665276421" ID="ID_714740974" MODIFIED="1557498707243" TEXT="dlclose #1034">
<node CREATED="1477665304137" ID="ID_65862146" MODIFIED="1557498707243" TEXT="Assertion, da Library nicht entladen werden kann">
<icon BUILTIN="info"/>
</node>
<node CREATED="1477665320934" ID="ID_1841226938" MODIFIED="1557498707243" TEXT="LD_DEBUG=all NOBUG_LOG=pluginloader_dbg:TRACE  2&gt;&amp;1 target/lumiera | c++filt &gt;weia">
<node CREATED="1477665330317" ID="ID_1760958407" MODIFIED="1557498707243" TEXT="weitere Untersuchung notwendig....">
<icon BUILTIN="bell"/>
</node>
</node>
</node>
</node>
</node>
<node CREATED="1521963965164" FOLDED="true" ID="ID_1027875371" MODIFIED="1561238596029" TEXT="komplexe Probleme">
<icon BUILTIN="go"/>
<node COLOR="#435e98" CREATED="1522025948980" ID="ID_295336770" MODIFIED="1557498707243" TEXT="3/2018">
<node COLOR="#338800" CREATED="1521964015114" FOLDED="true" ID="ID_1116388701" MODIFIED="1561238584135" TEXT="CallQueue_test">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      TEST Dispatch functors into other threads: CallQueue_test .. FAILED
    </p>
    <p>
      unexpected return value 134, expected 0
    </p>
    <p>
      stderr was:
    </p>
    <p>
      0000000459: INFO: suite.cpp:180: thread_1: invokeTestCase: ++------------------- invoking TEST: CallQueue_test
    </p>
    <p>
      0000003117: CHECK: call-queue-test.cpp:251: thread_1: verify_ThreadSafety: (globalProducerSum == globalConsumerSum)
    </p>
    <p>
      0000003127: BACKTRACE: call-queue-test.cpp:251: thread_1: verify_ThreadSafety: /Werk/devel/lumi/target/modules/libtest-basics.so(_ZN3lib4test14CallQueue_test19verify_ThreadSafetyEv+0x24a) [0x7fdfce328a20]
    </p>
    <p>
      0000003128: BACKTRACE: call-queue-test.cpp:251: thread_1: verify_ThreadSafety: /Werk/devel/lumi/target/modules/libtest-basics.so(_ZN3lib4test14CallQueue_test3runERSt6vectorISsSaISsEE+0x34) [0x7fdfce32764e]
    </p>
    <p>
      0000003129: BACKTRACE: call-queue-test.cpp:251: thread_1: verify_ThreadSafety: /Werk/devel/lumi/target/modules/liblumierasupport.so(+0x1d7cb0) [0x7fdfcb7dfcb0]
    </p>
    <p>
      0000003130: BACKTRACE: call-queue-test.cpp:251: thread_1: verify_ThreadSafety: /Werk/devel/lumi/target/modules/liblumierasupport.so(_ZN4test5Suite3runERSt6vectorISsSaISsEE+0x38f) [0x7fdfcb7e0249]
    </p>
    <p>
      0000003131: BACKTRACE: call-queue-test.cpp:251: thread_1: verify_ThreadSafety: ./test-suite() [0x40625e]
    </p>
    <p>
      0000003132: BACKTRACE: call-queue-test.cpp:251: thread_1: verify_ThreadSafety: /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5) [0x7fdfc9029b45]
    </p>
    <p>
      0000003133: BACKTRACE: call-queue-test.cpp:251: thread_1: verify_ThreadSafety: ./test-suite() [0x4060a9]
    </p>
    <p>
      END
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
<node CREATED="1522025982759" ID="ID_1830638050" MODIFIED="1522025987194" TEXT="reproduzierbar....">
<node CREATED="1522025990246" ID="ID_261366619" MODIFIED="1544310845450" TEXT="Auf mehreren Terminals x-mal starten">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      for I in `seq 1 50`; do target/test-suite CallQueue_test; done
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1522026027993" ID="ID_25191931" MODIFIED="1522026034036" TEXT="Anhaltspunkte">
<node CREATED="1522026034720" ID="ID_584589060" MODIFIED="1544310845469" TEXT="erstmals beobachtet unter starker System-Last">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      habe gleichzeitig erst die Testsuite gebaut mit -j 36 und dann laufen lassen.
    </p>
    <p>
      Gleichzeitig aber auch noch das ./build-website-Skript
    </p>
    <p>
      und eine Doxygen-Seite im Browser geladen
    </p>
  </body>
</html></richcontent>
</node>
<node COLOR="#990000" CREATED="1521963972811" ID="ID_1942164320" MODIFIED="1522029864550" TEXT="hab ich da was mit dem ThreadWrapper kaputt gemacht?">
<icon BUILTIN="stop-sign"/>
<node CREATED="1522026114725" ID="ID_288423678" MODIFIED="1522026122240" TEXT="hatte kurz vorher den ThreadWrapper modernisiert"/>
<node CREATED="1522026122756" ID="ID_1246030370" MODIFIED="1522026127927" TEXT="und gebe nun ein Lambda durch"/>
<node CREATED="1522026128467" ID="ID_387844871" MODIFIED="1522026139087" TEXT="verwende dabei aber perfect-forwarding-Tricks">
<icon BUILTIN="clanbomber"/>
</node>
<node COLOR="#338800" CREATED="1522029869047" ID="ID_221734956" MODIFIED="1522029880963" TEXT="Anwort: vermutlich NEIN">
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node COLOR="#338800" CREATED="1522026152280" ID="ID_156370463" MODIFIED="1522030023168" TEXT="anderer Verdacht: Objekt-Initialisierung">
<icon BUILTIN="back"/>
<node CREATED="1522026166734" ID="ID_731765048" MODIFIED="1522030021122" TEXT="das bekannte Problem"/>
<node CREATED="1522026170781" ID="ID_1581699734" MODIFIED="1522030021122" TEXT="der Thread l&#xe4;uft schon"/>
<node CREATED="1522026178860" ID="ID_917574124" MODIFIED="1522030021122" TEXT="aber das abgeleitete Objekt ist noch nicht so weit"/>
<node CREATED="1522029908986" ID="ID_1350487644" MODIFIED="1522030029028" TEXT="Jupp. Dat warsz">
<icon BUILTIN="idea"/>
<node CREATED="1522029922592" ID="ID_301766693" MODIFIED="1522030021122" TEXT="Barriere eingebaut"/>
<node CREATED="1522029928983" ID="ID_761637509" MODIFIED="1544310845562" TEXT="ist auch sinnvoll vom Testdesgin her">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      weil sich die Threads gegenseitig ihre Counter inkrementieren.
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1522029979544" ID="ID_1820534569" MODIFIED="1522030021122" TEXT="Stre&#xdf;test wiederholt, sogar mit 500 Thrads"/>
<node COLOR="#338800" CREATED="1522029995205" ID="ID_556688250" MODIFIED="1522030021122" TEXT="jetzt reproduzierbar alles sauber">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1522030032424" ID="ID_1791738866" MODIFIED="1522030091201" TEXT="Problem war fehlende Barriere nach Objekt-Initialisierung">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1522030047375" ID="ID_1979180035" MODIFIED="1544310845583" TEXT="alle anderen multithreaded-Tests durchgepr&#xfc;ft">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      alle anderen (mit Ausnahme von BusTerm_test)
    </p>
    <p>
      verwenden globale Variable oder &#252;berhaupt keine Objektfelder
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1664730709910" FOLDED="true" ID="ID_532850171" MODIFIED="1687191026011" TEXT="Performance">
<icon BUILTIN="hourglass"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1664730715885" ID="ID_1774914566" MODIFIED="1664731036535" TEXT="GUI">
<arrowlink COLOR="#6e6b89" DESTINATION="ID_580266574" ENDARROW="Default" ENDINCLINATION="-1072;126;" ID="Arrow_ID_1760515184" STARTARROW="None" STARTINCLINATION="-1832;638;"/>
<icon BUILTIN="hourglass"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1664728069849" ID="ID_499807590" MODIFIED="1664730778937" TEXT="#1240 evaluate performance of ElementBoxWidget">
<arrowlink COLOR="#652a49" DESTINATION="ID_1113493685" ENDARROW="Default" ENDINCLINATION="-1026;116;" ID="Arrow_ID_1663742451" STARTARROW="None" STARTINCLINATION="-985;55;"/>
<icon BUILTIN="bell"/>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1664730718511" ID="ID_1773381955" MODIFIED="1664730727367" TEXT="Engine">
<icon BUILTIN="hourglass"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1687190990795" ID="ID_503672803" MODIFIED="1687191103504" TEXT="#1310 investigate job-planning and scheduling overhead">
<arrowlink COLOR="#955173" DESTINATION="ID_419509522" ENDARROW="Default" ENDINCLINATION="-1499;205;" ID="Arrow_ID_1313834873" STARTARROW="None" STARTINCLINATION="-455;22;"/>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1664730722868" ID="ID_1536097796" MODIFIED="1664730727368" TEXT="Session">
<icon BUILTIN="hourglass"/>
</node>
</node>
<node CREATED="1561238618311" ID="ID_1197206022" MODIFIED="1561311521089" TEXT="Plattform-Evolution">
<icon BUILTIN="go"/>
<node COLOR="#435e98" CREATED="1561238627847" ID="ID_776424925" MODIFIED="1561311477641" TEXT="Juni 2019">
<node COLOR="#338800" CREATED="1561238635358" FOLDED="true" ID="ID_584004962" MODIFIED="1561311515592" TEXT="Ubuntu/Bionic - libboost 1.65">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      angeregt durch Gabriel;
    </p>
    <p>
      er wollte &quot;versuchen, Lumiera zu bauen&quot;
    </p>
  </body>
</html></richcontent>
<linktarget COLOR="#37aea5" DESTINATION="ID_584004962" ENDARROW="Default" ENDINCLINATION="295;-171;" ID="Arrow_ID_1368108105" SOURCE="ID_1588960225" STARTARROW="None" STARTINCLINATION="247;0;"/>
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1561237854717" FOLDED="true" ID="ID_682831433" MODIFIED="1561237893434" TEXT="boost::rational">
<icon BUILTIN="button_ok"/>
<node CREATED="1561237861421" ID="ID_575082452" MODIFIED="1561237891854" TEXT="erlaubt keine implizite signed/unsigned-conversion mehr">
<icon BUILTIN="info"/>
</node>
<node COLOR="#435e98" CREATED="1561237876778" ID="ID_1489512347" MODIFIED="1561237888193" TEXT="gefixt bzw. eignen Operator f&#xfc;r 1/fps definiert"/>
</node>
<node COLOR="#990000" CREATED="1561237894664" ID="ID_1271023428" MODIFIED="1561303718736" TEXT="CommandEquality_test scheitert">
<icon BUILTIN="button_cancel"/>
<node CREATED="1561237929923" ID="ID_1722173317" MODIFIED="1561237932732" TEXT="command-equality-test.cpp:169: thread_1: verifyMutationEquality: (mut_u0 != umu) ">
<icon BUILTIN="info"/>
</node>
<node CREATED="1561237934707" ID="ID_103532516" MODIFIED="1561238024555" TEXT="waren bisher ungleich wegen empty vs undef">
<node CREATED="1561238043825" ID="ID_1552996851" MODIFIED="1561238050167" TEXT="umo -&gt; empty operation function"/>
<node CREATED="1561238050854" ID="ID_1689917500" MODIFIED="1561238066157" TEXT="mut_u0 -&gt; empty UNDO function"/>
</node>
<node COLOR="#435e98" CREATED="1561238068215" ID="ID_506567611" MODIFIED="1561293990008" TEXT="war das bisherige Verhalten korrekt?">
<icon BUILTIN="help"/>
<node CREATED="1561293701116" ID="ID_755823260" MODIFIED="1561293974672">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      wann sind Funktoren <i>&#228;quivalent</i>&#160;??
    </p>
  </body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      <u>mathematisch gilt</u>:
    </p>
    <p>
      sie sind gleich, wenn sie f&#252;r alle gleichen Argumente das gleiche Resultat liefern.
    </p>
    <p>
      
    </p>
    <p>
      <i>sei die Dose offen...</i>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1561293746047" ID="ID_1685820592" MODIFIED="1561293763727" TEXT="ich hatte da einen Hack im Einsatz">
<icon BUILTIN="clanbomber"/>
</node>
<node CREATED="1561293766313" ID="ID_503430163" MODIFIED="1561293901354" TEXT="std::function hat das Thema letztlich abgebogen">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      in tr1::functional war ein equality-Operator spezifiziert
    </p>
    <p>
      boost::function hat sich geweigert diesen zu implementieren,
    </p>
    <p>
      weil es keine vern&#252;nftige und konsistente Implementierung gibt.
    </p>
    <p>
      
    </p>
    <p>
      F&#252;r den C++11 - Standard hat man dann einen Kompromi&#223; geschlossen,
    </p>
    <p>
      demnach der Vergleich mit einem NULLPTR sinnvoll (und implementierbar) ist,
    </p>
    <p>
      aber ansonsten alle <i>validen definierten</i>&#160;Funktionen untereinander verschieden sind.
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="smiley-oh"/>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1561293905972" ID="ID_1691379411" MODIFIED="1561294054085" TEXT="Fazit: std::function ist nur partiell geordnet">
<arrowlink COLOR="#3044e4" DESTINATION="ID_1015641085" ENDARROW="Default" ENDINCLINATION="51;-54;" ID="Arrow_ID_44253813" STARTARROW="None" STARTINCLINATION="-282;0;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1561294009342" ID="ID_1015641085" MODIFIED="1561311468701" TEXT="#294 re-evaluate command equality comparisons">
<linktarget COLOR="#3044e4" DESTINATION="ID_1015641085" ENDARROW="Default" ENDINCLINATION="51;-54;" ID="Arrow_ID_44253813" SOURCE="ID_1691379411" STARTARROW="None" STARTINCLINATION="-282;0;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1561294074429" ID="ID_1155061172" MODIFIED="1561294082271" TEXT="sinnvoller use-case?">
<node CREATED="1561294111368" ID="ID_550692627" MODIFIED="1561294116011" TEXT="bisher nur isValid()">
<node CREATED="1561294121390" ID="ID_1554085271" MODIFIED="1561294146172" TEXT="&#xbb;ist aktiviert und beruht auf dem &quot;gleichen&quot; backend&#xab;">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
<node CREATED="1561294154669" ID="ID_1700157755" MODIFIED="1561294165145" TEXT="und das backend wurde bisher...">
<node CREATED="1561294165894" ID="ID_504595200" MODIFIED="1561294171982" TEXT="auf gleiche Storage-Location"/>
<node CREATED="1561294172366" ID="ID_1176454147" MODIFIED="1561294188932">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      sonst auf <i>&#196;quivalenz</i>&#160;getestet
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1561294190088" ID="ID_1198524028" MODIFIED="1561294221209">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      und genau das Letztere ist nicht <b>garantiert korrekt</b>&#160;implementierbar
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node CREATED="1561294330073" ID="ID_608542803" MODIFIED="1561294340821" TEXT="Commands haben Referenz-Symantik">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1561294342041" ID="ID_260507058" MODIFIED="1561294357179" TEXT="und der &#xc4;quivalenz-Begriff geh&#xf6;rt ehr zur Wert-Semantik"/>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1561294361678" ID="ID_979058533" MODIFIED="1561294387317" TEXT="&#xc4;quivalenz von Commands erscheint verzichtbar">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node CREATED="1561294395962" ID="ID_100338820" MODIFIED="1561294403572" TEXT="in der Praxis arbeitet man mit Command-IDs."/>
<node CREATED="1561294404352" ID="ID_499417243" MODIFIED="1561294455506">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      Selbst verschiedene Closures haben selbst die noch eine eindeutige <b>Identit&#228;t</b>
    </p>
  </body>
</html></richcontent>
</node>
</node>
<node COLOR="#338800" CREATED="1561294470021" FOLDED="true" ID="ID_1846241113" MODIFIED="1561311466135" TEXT="totmachen">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1561295990811" ID="ID_224001495" MODIFIED="1561296000279" TEXT="&#xc4;quivalenz-Check abklemmen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#435e98" CREATED="1561296000882" ID="ID_1788095213" MODIFIED="1561303690659" TEXT="2 Tests scheitern">
<node COLOR="#338800" CREATED="1561296072919" ID="ID_1173741195" MODIFIED="1561302966818" TEXT="CommandRegistry_test">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1561296078403" ID="ID_15228506" MODIFIED="1561303686355" TEXT="CommandUse1_test">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1561305344531" ID="ID_1797228597" MODIFIED="1561308173677" TEXT="Funktion hash_value aufgeben">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1561305360584" ID="ID_503655811" MODIFIED="1561308153571" TEXT="TypeHandler f&#xfc;r BufferMetadata">
<node CREATED="1561305394029" ID="ID_1225221352" MODIFIED="1561305409873" TEXT="definiert eine Art Buffer-Typ"/>
<node CREATED="1561305410256" ID="ID_1164668948" MODIFIED="1561305416889" TEXT="basiert bisher auf dem konkreten Handler"/>
<node CREATED="1561305428408" ID="ID_1356896886" MODIFIED="1561305452650" TEXT="kann man hier auch das Identit&#xe4;gs-Argument anwenden?">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      d.h. wir brauchen keine &#196;quivalenz?
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1561305463577" ID="ID_1519337489" MODIFIED="1561305477381" TEXT="folglich w&#xe4;re jeder TypeHandler ein Unikat"/>
</node>
<node COLOR="#338800" CREATED="1561308051917" ID="ID_914530129" MODIFIED="1561308171779" TEXT="pragmatische L&#xf6;sung: Type-ID">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1561308061204" ID="ID_1554244425" MODIFIED="1561308168325" TEXT="verwende die typeid(TY) der Funktoren">
<icon BUILTIN="idea"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1561308078902" ID="ID_430150773" MODIFIED="1561308091311" TEXT="kann in&apos;s Auge gehn">
<icon BUILTIN="clanbomber"/>
<node CREATED="1561308093797" ID="ID_553457078" MODIFIED="1561308135247" TEXT="wenn jemand eine std::function&lt;void(void)&gt; direkt speichert">
<icon BUILTIN="messagebox_warning"/>
</node>
<node CREATED="1561308115205" ID="ID_1743532708" MODIFIED="1561308132530" TEXT="Regel ist aber TypeHandler::create&lt;TY&gt;()">
<icon BUILTIN="back"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1561296009625" ID="ID_617134183" MODIFIED="1561311456970" TEXT="alle Vergleichs-Operatoren auf Command-Funktor-Ebene zur&#xfc;ckbauen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1561296029622" ID="ID_696325144" MODIFIED="1561311458435" TEXT="die rawComparison zur&#xfc;ckbauen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1561296041852" ID="ID_1450999034" MODIFIED="1561311460017" TEXT="Doku aktualisieren">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#990000" CREATED="1446356368070" HGAP="-38" ID="ID_768449868" MODIFIED="1582333957320" TEXT="Au Au" VSHIFT="196">
<edge COLOR="#c14b4b" STYLE="sharp_bezier"/>
<icon BUILTIN="broken-line"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1544239377061" FOLDED="true" ID="ID_1224449803" MODIFIED="1582494287885" TEXT="GUI-Start not yet failsafe">
<icon BUILTIN="broken-line"/>
<node COLOR="#435e98" CREATED="1544239394777" ID="ID_626803835" MODIFIED="1557498707243" TEXT="aufgedeckt durch fehlende UI-Resourcen">
<linktarget COLOR="#7f244b" DESTINATION="ID_626803835" ENDARROW="Default" ENDINCLINATION="193;-461;" ID="Arrow_ID_65546348" SOURCE="ID_1906746912" STARTARROW="None" STARTINCLINATION="421;19;"/>
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1544239428238" ID="ID_1011459246" MODIFIED="1557498707243" TEXT="wie konnte das passieren....?">
<icon BUILTIN="smily_bad"/>
</node>
<node CREATED="1544239443516" ID="ID_1433396809" MODIFIED="1557498707243" TEXT="ich hatte doch die ganze Sequenz gepr&#xfc;ft?!"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1544239461493" ID="ID_138383314" MODIFIED="1557498707243" TEXT="catch-Block sitzt nicht richtig">
<arrowlink COLOR="#e02825" DESTINATION="ID_478753729" ENDARROW="Default" ENDINCLINATION="-3550;0;" ID="Arrow_ID_390741072" STARTARROW="None" STARTINCLINATION="-1804;756;"/>
<icon BUILTIN="clanbomber"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1544240822252" ID="ID_110235945" MODIFIED="1582493900730" TEXT="#1192 Lumiera hangs on failed GUI start">
<arrowlink COLOR="#e5221e" DESTINATION="ID_1795051800" ENDARROW="Default" ENDINCLINATION="-1916;0;" ID="Arrow_ID_127697886" STARTARROW="None" STARTINCLINATION="-716;43;"/>
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1582493761032" ID="ID_1071108928" LINK="https://issues.lumiera.org/ticket/1177" MODIFIED="1582493774585" TEXT=" #1177 Subsytem-Runner design rework ">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1544310988414" FOLDED="true" ID="ID_134908056" MODIFIED="1557498707243" TEXT="ProcDispatcher macht idle-Loop">
<arrowlink COLOR="#ce3649" DESTINATION="ID_71855569" ENDARROW="Default" ENDINCLINATION="105;0;" ID="Arrow_ID_1871191743" STARTARROW="None" STARTINCLINATION="181;0;"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1544311004661" ID="ID_1064987345" MODIFIED="1544311012720" TEXT="Symptom: CPU-Last im Ruhezustand"/>
<node CREATED="1544311014140" ID="ID_392351205" MODIFIED="1544320819468" TEXT="Grund: f&#xe4;llt sofort wieder aus timed wait">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1544311029042" ID="ID_15647077" MODIFIED="1544320803272" TEXT="Ursache: Sync.hpp -- Timeout-Struct nicht korrekt initialisiert">
<icon BUILTIN="button_ok"/>
<node CREATED="1544311051503" ID="ID_1872128038" MODIFIED="1544311082817" TEXT="bool-Operator vergleicht auf 0">
<icon BUILTIN="info"/>
</node>
<node CREATED="1544311064725" ID="ID_1179966941" MODIFIED="1544311079804" TEXT="finde aber im Debugger irgendwelche Werte.">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1544320706921" ID="ID_50250235" MODIFIED="1544320717897" TEXT="genauer: Werte werden nicht aufger&#xe4;umt">
<node CREATED="1544320719053" ID="ID_1185228058" MODIFIED="1544320755043" TEXT="Konvention ist: sekunden == 0  ==&gt; kein Timeout">
<icon BUILTIN="info"/>
</node>
<node CREATED="1544320761671" ID="ID_1421942136" MODIFIED="1544320772577" TEXT="pthread findet timeout in der Vergangenheit"/>
<node CREATED="1544320773286" ID="ID_256879540" MODIFIED="1544320782737" TEXT="...und kehr damit sofort zur&#xfc;ck aus dem wait">
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node COLOR="#338800" CREATED="1544320791339" ID="ID_536822312" MODIFIED="1544320800480" TEXT="Fix: else-Zweig, reset()">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#435e98" CREATED="1544328974221" FOLDED="true" ID="ID_71855569" MODIFIED="1557498707243" TEXT="ProcDispatcher bleibt h&#xe4;ngen">
<linktarget COLOR="#ce3649" DESTINATION="ID_71855569" ENDARROW="Default" ENDINCLINATION="105;0;" ID="Arrow_ID_1871191743" SOURCE="ID_134908056" STARTARROW="None" STARTINCLINATION="181;0;"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1544329099419" ID="ID_1105978437" MODIFIED="1544329164023" TEXT="SessionCommandFunction_test">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      sporadich, nicht bei jedem Lauf, aber reproduzierbar.
    </p>
    <p>
      Bleibt h&#228;ngen an der Stelle, wo der Test den Dispatcher vor&#252;bergehend deaktiviert,
    </p>
    <p>
      und dann auf den Deaktiviert-Zustand <b>wartet</b>
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="info"/>
</node>
<node CREATED="1544329167436" ID="ID_739717124" MODIFIED="1544329363509" TEXT="Problem mit der Zustands-Logik">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1544329192703" ID="ID_1013421079" MODIFIED="1544329202330" TEXT="deaktivert bedeutet requireAction() == false"/>
<node CREATED="1544329202903" ID="ID_1019916123" MODIFIED="1544329356857" TEXT="und dadurch warten wir ohne Timeout">
<icon BUILTIN="broken-line"/>
<node CREATED="1544329280619" ID="ID_1784122176" MODIFIED="1544329348875" TEXT="und durch den Bug in lib::Sync wurde das nicht wirksam">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...weil der Objekt-Monitor nicht mehr bedingungslos gewartet hat,
    </p>
    <p>
      nachdem <i>einmal</i>&#160;ein wait mit Timeout verwendet worden war
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node CREATED="1544329216228" ID="ID_422426535" MODIFIED="1544329234043">
<richcontent TYPE="NODE"><html>
  <head/>
  <body>
    <p>
      aber <b>inChange</b>&#160;bleibt <b>true</b>
    </p>
  </body>
</html></richcontent>
</node>
<node CREATED="1544329235934" ID="ID_605336452" MODIFIED="1544329273933" TEXT="...und darauf wartet die &#xe4;u&#xdf;ere H&#xfc;lle">
<icon BUILTIN="idea"/>
</node>
</node>
<node COLOR="#338800" CREATED="1544329367261" ID="ID_50498392" MODIFIED="1544386159034" TEXT="L&#xf6;sungen" VGAP="15">
<icon BUILTIN="button_ok"/>
<node CREATED="1544329727165" FOLDED="true" ID="ID_1043095728" MODIFIED="1544386423962" TEXT="requireAction() == true auch wenn disabled">
<icon BUILTIN="button_cancel"/>
<node CREATED="1544329753698" ID="ID_1588685067" MODIFIED="1544329760502" TEXT="geht nicht.">
<icon BUILTIN="stop-sign"/>
</node>
<node CREATED="1544329764640" ID="ID_706638200" MODIFIED="1544329781788" TEXT="denn dann kommen wir nicht mehr in den wait-state">
<icon BUILTIN="info"/>
</node>
<node CREATED="1544329793943" ID="ID_1668546000" MODIFIED="1544329822612" TEXT="requireAction wird ja als Condition f&#xfc;r den Wait verwendet">
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1544329372318" FOLDED="true" ID="ID_88425113" MODIFIED="1544386423070" TEXT="inChange nur setzen wenn requireAction() == true">
<icon BUILTIN="button_cancel"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1544329663574" ID="ID_565123980" MODIFIED="1544332799520" TEXT="Verdacht: kann dann trotzdem per Timeout aufwachen">
<icon BUILTIN="clanbomber"/>
</node>
<node CREATED="1544329684707" ID="ID_651175391" MODIFIED="1544329708068" TEXT="und dann w&#xe4;re inChange == false, obwohl wir arbeiten (Builder l&#xe4;uft)"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1544332821150" ID="ID_484338481" MODIFIED="1544332874097" TEXT="fatale Konsequenzen....">
<richcontent TYPE="NOTE"><html>
  <head/>
  <body>
    <p>
      ...es k&#246;nnte dann n&#228;mlich die Session geschlossen und freigegeben werden,
    </p>
    <p>
      obwohl noch der Builder l&#228;uft
    </p>
  </body>
</html></richcontent>
<icon BUILTIN="broken-line"/>
</node>
<node CREATED="1544332907967" ID="ID_760793562" MODIFIED="1544332932033" TEXT="Analyse: kann das passieren?">
<icon BUILTIN="help"/>
<node CREATED="1544332934619" ID="ID_558823055" MODIFIED="1544333038537" TEXT="Fall: disabled-setzen w&#xe4;hrend dem Timeout">
<node CREATED="1544333050044" ID="ID_318735401" MODIFIED="1544333066940" TEXT="Timeout eingetreten ==&gt; requireAction war false"/>
<node CREATED="1544333069881" ID="ID_555896336" MODIFIED="1544333084882" TEXT="nach ge&#xe4;nderter Logik w&#xe4;re dann auch inChange == false"/>
<node CREATED="1544333087958" ID="ID_1209619554" MODIFIED="1544333108407" TEXT="Folglich wird f&#xe4;lschlicherweise nicht gewartet"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1544333135104" ID="ID_549018822" MODIFIED="1544333155423" TEXT="Antwort: ja das kann passieren">
<icon BUILTIN="back"/>
</node>
</node>
<node CREATED="1544333313167" ID="ID_1694353778" MODIFIED="1544333323414" TEXT="damit ist diese L&#xf6;sung hinf&#xe4;llig">
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node CREATED="1544333328341" FOLDED="true" ID="ID_349762653" MODIFIED="1544386421940" TEXT="inChange unabh&#xe4;ngig von requireAction() machen">
<icon BUILTIN="button_cancel"/>
<node CREATED="1544333344379" ID="ID_1647118494" MODIFIED="1544333369026" TEXT="eigene Methode, die aufgerufen wird, wenn wir aus dem wait() rauskommen"/>
<node CREATED="1544333456987" ID="ID_585691817" MODIFIED="1544333897248" TEXT="k&#xf6;nnte gehen, erscheint mir aber gef&#xe4;hrlich">
<icon BUILTIN="help"/>
<icon BUILTIN="yes"/>
<node CREATED="1544333510982" ID="ID_1431407168" MODIFIED="1544333516439" TEXT="was ist wenn....">
<node CREATED="1544333517379" ID="ID_689738064" MODIFIED="1544333533684" TEXT="disabled gesetzt wird, w&#xe4;hrend wir im wait() sind?">
<node CREATED="1544333550151" ID="ID_100143787" MODIFIED="1544333556410" TEXT="dann ist inChange == false"/>
<node CREATED="1544333610495" ID="ID_942332687" MODIFIED="1544333626888" TEXT="aber deactivateCommandProecssing() -&gt; notifyAll()"/>
<node CREATED="1544333630018" ID="ID_1936407440" MODIFIED="1544333636367" TEXT="noch w&#xe4;hrend er das Lock hat"/>
<node CREATED="1544333723957" ID="ID_1134715607" MODIFIED="1544333742040" TEXT="sobald er das Lock aufgibt, wacht der Loop-Thread auf"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1544333778756" ID="ID_705117923" MODIFIED="1544333804986" TEXT="gibt dann aber auch das Lock auf, bevor er inChange setzen kann">
<icon BUILTIN="broken-line"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1544333809035" ID="ID_1284134914" MODIFIED="1544333881455" TEXT="m&#xf6;glicher Race">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1284134914" ENDARROW="Default" ENDINCLINATION="-26;57;" ID="Arrow_ID_662106184" SOURCE="ID_151622227" STARTARROW="None" STARTINCLINATION="159;0;"/>
<icon BUILTIN="clanbomber"/>
</node>
</node>
</node>
<node CREATED="1544333819034" ID="ID_151622227" MODIFIED="1544333881455" TEXT="L&#xf6;sung hinf&#xe4;llig, wegen potentiellem Race">
<arrowlink DESTINATION="ID_1284134914" ENDARROW="Default" ENDINCLINATION="-26;57;" ID="Arrow_ID_662106184" STARTARROW="None" STARTINCLINATION="159;0;"/>
<icon BUILTIN="stop-sign"/>
</node>
</node>
<node CREATED="1544333909701" ID="ID_328876957" MODIFIED="1544386156765" STYLE="fork" TEXT="inChange in requireAction() setzen, aber logisch pr&#xe4;zise">
<icon BUILTIN="button_ok"/>
<node CREATED="1544333933346" ID="ID_593273191" MODIFIED="1544386155027" TEXT="d.h. nur wenn nicht warten und kein Timeout"/>
<node CREATED="1544381554267" ID="ID_193163875" MODIFIED="1544386155027" TEXT="Zustand nur einmal in die Flags &#xfc;bernhmen, zu Beginn"/>
<node CREATED="1544382733514" ID="ID_1386275063" MODIFIED="1544386155027" TEXT="Trick mit dem Countdown auf isDirty_ zur&#xfc;ckbauen"/>
</node>
</node>
<node CREATED="1544386177470" ID="ID_1764197819" MODIFIED="1544386413663" TEXT="erst jetzt sehe ich das erwartete Builder-Verhalten">
<icon BUILTIN="idea"/>
</node>
<node CREATED="1544386386938" ID="ID_1316391277" MODIFIED="1544386416510" TEXT="und der SessionCommandFunction_test bleibt nicht mehr h&#xe4;ngen">
<icon BUILTIN="idea"/>
</node>
<node COLOR="#338800" CREATED="1544386406767" ID="ID_789739914" MODIFIED="1544386410583" TEXT="problem solved">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1570817474883" ID="ID_711013238" MODIFIED="1570817537392" TEXT="#1205 Advice data possibly misaligned">
<arrowlink COLOR="#cd4467" DESTINATION="ID_1779912405" ENDARROW="Default" ENDINCLINATION="296;20;" ID="Arrow_ID_1125835000" STARTARROW="None" STARTINCLINATION="462;0;"/>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
</node>
</map>
